diff --git a/MobBookUpdate/MonsterBook.img.xml b/MobBookUpdate/MonsterBook.img.xml new file mode 100644 index 0000000000..e28065c889 --- /dev/null +++ b/MobBookUpdate/MonsterBook.img.xml @@ -0,0 +1,14804 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MobBookUpdate/build.xml b/MobBookUpdate/build.xml new file mode 100644 index 0000000000..4f7e009b92 --- /dev/null +++ b/MobBookUpdate/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project MobBookUpdate. + + + diff --git a/MobBookUpdate/build/built-jar.properties b/MobBookUpdate/build/built-jar.properties new file mode 100644 index 0000000000..973b512f4c --- /dev/null +++ b/MobBookUpdate/build/built-jar.properties @@ -0,0 +1,4 @@ +#Sun, 09 Aug 2015 19:24:52 -0300 + + +C\:\\Nexon\\MapleSolaxia\\MobBookUpdate= diff --git a/MobBookUpdate/build/classes/.netbeans_automatic_build b/MobBookUpdate/build/classes/.netbeans_automatic_build new file mode 100644 index 0000000000..e69de29bb2 diff --git a/MobBookUpdate/build/classes/.netbeans_update_resources b/MobBookUpdate/build/classes/.netbeans_update_resources new file mode 100644 index 0000000000..e69de29bb2 diff --git a/MobBookUpdate/build/classes/mobbookupdate/MobBookUpdate.class b/MobBookUpdate/build/classes/mobbookupdate/MobBookUpdate.class new file mode 100644 index 0000000000..5025f8e8cd Binary files /dev/null and b/MobBookUpdate/build/classes/mobbookupdate/MobBookUpdate.class differ diff --git a/MobBookUpdate/dist/MobBookUpdate.jar b/MobBookUpdate/dist/MobBookUpdate.jar new file mode 100644 index 0000000000..147466127e Binary files /dev/null and b/MobBookUpdate/dist/MobBookUpdate.jar differ diff --git a/MobBookUpdate/dist/README.TXT b/MobBookUpdate/dist/README.TXT new file mode 100644 index 0000000000..93484282f6 --- /dev/null +++ b/MobBookUpdate/dist/README.TXT @@ -0,0 +1,32 @@ +======================== +BUILD OUTPUT DESCRIPTION +======================== + +When you build an Java application project that has a main class, the IDE +automatically copies all of the JAR +files on the projects classpath to your projects dist/lib folder. The IDE +also adds each of the JAR files to the Class-Path element in the application +JAR files manifest file (MANIFEST.MF). + +To run the project from the command line, go to the dist folder and +type the following: + +java -jar "MobBookUpdate.jar" + +To distribute this project, zip up the dist folder (including the lib folder) +and distribute the ZIP file. + +Notes: + +* If two JAR files on the project classpath have the same name, only the first +JAR file is copied to the lib folder. +* Only JAR files are copied to the lib folder. +If the classpath contains other types of files or folders, these files (folders) +are not copied. +* If a library on the projects classpath also has a Class-Path element +specified in the manifest,the content of the Class-Path element has to be on +the projects runtime path. +* To set a main class in a standard Java project, right-click the project node +in the Projects window and choose Properties. Then click Run and enter the +class name in the Main Class field. Alternatively, you can manually type the +class name in the manifest Main-Class element. diff --git a/MobBookUpdate/dist/lib/mysql-connector-java-bin.jar b/MobBookUpdate/dist/lib/mysql-connector-java-bin.jar new file mode 100644 index 0000000000..0539039f71 Binary files /dev/null and b/MobBookUpdate/dist/lib/mysql-connector-java-bin.jar differ diff --git a/MobBookUpdate/lib/MonsterBook.img.xml b/MobBookUpdate/lib/MonsterBook.img.xml new file mode 100644 index 0000000000..60a79cafaa --- /dev/null +++ b/MobBookUpdate/lib/MonsterBook.img.xml @@ -0,0 +1,12882 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MobBookUpdate/lib/mysql-connector-java-bin.jar b/MobBookUpdate/lib/mysql-connector-java-bin.jar new file mode 100644 index 0000000000..0539039f71 Binary files /dev/null and b/MobBookUpdate/lib/mysql-connector-java-bin.jar differ diff --git a/MobBookUpdate/manifest.mf b/MobBookUpdate/manifest.mf new file mode 100644 index 0000000000..328e8e5bc3 --- /dev/null +++ b/MobBookUpdate/manifest.mf @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +X-COMMENT: Main-Class will be added automatically by build + diff --git a/MobBookUpdate/nbproject/build-impl.xml b/MobBookUpdate/nbproject/build-impl.xml new file mode 100644 index 0000000000..6a199b730f --- /dev/null +++ b/MobBookUpdate/nbproject/build-impl.xml @@ -0,0 +1,1413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MobBookUpdate/nbproject/genfiles.properties b/MobBookUpdate/nbproject/genfiles.properties new file mode 100644 index 0000000000..ef22739e09 --- /dev/null +++ b/MobBookUpdate/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=b9587e85 +build.xml.script.CRC32=5814d12b +build.xml.stylesheet.CRC32=8064a381@1.75.2.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=b9587e85 +nbproject/build-impl.xml.script.CRC32=02a57723 +nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.75.2.48 diff --git a/MobBookUpdate/nbproject/private/config.properties b/MobBookUpdate/nbproject/private/config.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/MobBookUpdate/nbproject/private/private.properties b/MobBookUpdate/nbproject/private/private.properties new file mode 100644 index 0000000000..67c9c27960 --- /dev/null +++ b/MobBookUpdate/nbproject/private/private.properties @@ -0,0 +1,6 @@ +compile.on.save=true +do.depend=false +do.jar=true +javac.debug=true +javadoc.preview=true +user.properties.file=C:\\Users\\RonanLana\\AppData\\Roaming\\NetBeans\\8.0.2\\build.properties diff --git a/MobBookUpdate/nbproject/private/private.xml b/MobBookUpdate/nbproject/private/private.xml new file mode 100644 index 0000000000..5083cfa57d --- /dev/null +++ b/MobBookUpdate/nbproject/private/private.xml @@ -0,0 +1,9 @@ + + + + + + file:/C:/Users/RonanLana/Documents/NetBeansProjects/MobBookUpdate/src/mobbookupdate/MobBookUpdate.java + + + diff --git a/MobBookUpdate/nbproject/project.properties b/MobBookUpdate/nbproject/project.properties new file mode 100644 index 0000000000..9c086f70e1 --- /dev/null +++ b/MobBookUpdate/nbproject/project.properties @@ -0,0 +1,83 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=false +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=MobBookUpdate +application.vendor=RonanLana +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/MobBookUpdate.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +file.reference.MobBookUpdate-lib=lib +file.reference.mysql-connector-java-bin.jar=lib/mysql-connector-java-bin.jar +includes=** +jar.compress=false +javac.classpath=\ + ${file.reference.MobBookUpdate-lib}:\ + ${file.reference.mysql-connector-java-bin.jar} +# Space-separated list of extra javac options +javac.compilerargs= +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath}:\ + ${file.reference.mysql-connector-java-bin.jar} +javac.source=1.7 +javac.target=1.7 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${file.reference.mysql-connector-java-bin.jar} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +main.class=mobbookupdate.MobBookUpdate +manifest.file=manifest.mf +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=false +platform.active=default_platform +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir}:\ + ${file.reference.mysql-connector-java-bin.jar} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir}:\ + ${file.reference.mysql-connector-java-bin.jar} +source.encoding=UTF-8 +src.dir=src +test.src.dir=test diff --git a/MobBookUpdate/nbproject/project.xml b/MobBookUpdate/nbproject/project.xml new file mode 100644 index 0000000000..95c26031b2 --- /dev/null +++ b/MobBookUpdate/nbproject/project.xml @@ -0,0 +1,15 @@ + + + org.netbeans.modules.java.j2seproject + + + MobBookUpdate + + + + + + + + + diff --git a/MobBookUpdate/src/mobbookupdate/MobBookUpdate.java b/MobBookUpdate/src/mobbookupdate/MobBookUpdate.java new file mode 100644 index 0000000000..28070e34b2 --- /dev/null +++ b/MobBookUpdate/src/mobbookupdate/MobBookUpdate.java @@ -0,0 +1,208 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package mobbookupdate; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import java.io.*; +import java.sql.PreparedStatement; +import java.sql.ResultSet; + +/** + * @author RonanLana + * + * This application updates the Monster Book drop data with the actual underlying drop data from + * the Maplestory database specified by the URL below. + * + * The original file "MonsterBook.img.xml" from String.wz must be copied to the directory of this application and only then + * executed. This program will generate another file that must replace the original server file to make the effects take place + * to on your server. + * + * After replacing on server, this XML must be updated on the client via WZ Editor (HaRepack for instance). Once inside the repack, + * remove the property 'MonsterBook.img' inside 'string.wz' and choose to import the xml generated with this software. + * + */ +public class MobBookUpdate { + static String host = "jdbc:mysql://localhost:3306/maplesolaxia"; + static String driver = "com.mysql.jdbc.Driver"; + static String username = "root"; + static String password = ""; + + static String fileName = "MonsterBook.img.xml"; + static String newFile = "MonsterBook_updated.img.xml"; + + static Connection con = null; + static PrintWriter printWriter = null; + static FileReader fileReader = null; + static BufferedReader bufferedReader = null; + static byte status = 0; + static int mobId = -1; + static int mobCount = 0; + + private static String getName(String token) { + int i, j; + char[] dest; + String d; + + i = token.lastIndexOf("name"); + i = token.indexOf("\"", i) + 1; //lower bound of the string + j = token.indexOf("\"", i); //upper bound + + if(j - i < 7) dest = new char[6]; + else dest = new char[7]; + token.getChars(i, j, dest, 0); + + d = new String(dest); + return(d); + } + + private static void forwardCursor(int st) { + String line = null; + + try { + while(status >= st && (line = bufferedReader.readLine()) != null) { + simpleToken(line); + } + if(line != null) printWriter.println(line); + } + catch(Exception e) { + e.printStackTrace(); + } + } + + private static void simpleToken(String token) { + if(token.contains("/imgdir")) { + status -= 1; + } + else if(token.contains("imgdir")) { + status += 1; + } + } + + private static void loadDropsFromMob() { + //System.out.println("Loading mob id " + mobId); + mobCount++; + + try { + String toPrint; + int itemId, cont = 0; + + PreparedStatement ps = con.prepareStatement("SELECT itemid FROM drop_data WHERE (dropperid = ? AND itemid > 0) GROUP BY itemid;"); + ps.setInt(1, mobId); + ResultSet rs = ps.executeQuery(); + + while(rs.next()) { + toPrint = ""; + for(int k = 0; k <= status; k++) toPrint += " "; + + toPrint += ""; + + printWriter.println(toPrint); + cont++; + } + } + catch(SQLException e) { + e.printStackTrace(); + } + } + + private static void translateToken(String token) { + String d; + int temp; + + printWriter.println(token); + + if(token.contains("/imgdir")) { + status -= 1; + } + else if(token.contains("imgdir")) { + if(status == 1) { //getting MobId + d = getName(token); + mobId = Integer.parseInt(d); + } + else if(status == 2) { + d = getName(token); + + if(d.contains("reward")) { + temp = status; + + loadDropsFromMob(); + forwardCursor(temp); + } + } + + status += 1; + } + + } + + private static void UpdateFromDropData() { + // This will reference one line at a time + String line = null; + + try { + Class.forName(driver).newInstance(); + con = DriverManager.getConnection(host, username, password); + + printWriter = new PrintWriter(newFile, "UTF-8"); + fileReader = new FileReader(fileName); + bufferedReader = new BufferedReader(fileReader); + + while((line = bufferedReader.readLine()) != null) { + translateToken(line); + } + + printWriter.close(); + bufferedReader.close(); + fileReader.close(); + + con.close(); + System.out.println("Loaded drop data from " + mobCount + " mobs."); + } + + catch(FileNotFoundException ex) { + System.out.println("Unable to open file '" + fileName + "'"); + } + catch(IOException ex) { + System.out.println("Error reading file '" + fileName + "'"); + } + + catch(SQLException e) { + System.out.println("Warning: Could not establish connection to database to change card chance rate."); + System.out.println(e.getMessage()); + } + + catch(ClassNotFoundException e) { + System.out.println("Error: could not find class"); + System.out.println(e.getMessage()); + } + + catch(InstantiationException e) { + System.out.println("Error: instantiation failure"); + System.out.println(e.getMessage()); + } + + catch(Exception e) { + e.printStackTrace(); + } + } + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + UpdateFromDropData(); + } + +} diff --git a/dist/MapleSolaxia.jar b/dist/MapleSolaxia.jar new file mode 100644 index 0000000000..ace3358cf9 Binary files /dev/null and b/dist/MapleSolaxia.jar differ diff --git a/dist/README.TXT b/dist/README.TXT new file mode 100644 index 0000000000..06d133b0cb --- /dev/null +++ b/dist/README.TXT @@ -0,0 +1,32 @@ +======================== +BUILD OUTPUT DESCRIPTION +======================== + +When you build an Java application project that has a main class, the IDE +automatically copies all of the JAR +files on the projects classpath to your projects dist/lib folder. The IDE +also adds each of the JAR files to the Class-Path element in the application +JAR files manifest file (MANIFEST.MF). + +To run the project from the command line, go to the dist folder and +type the following: + +java -jar "MapleSolaxia.jar" + +To distribute this project, zip up the dist folder (including the lib folder) +and distribute the ZIP file. + +Notes: + +* If two JAR files on the project classpath have the same name, only the first +JAR file is copied to the lib folder. +* Only JAR files are copied to the lib folder. +If the classpath contains other types of files or folders, these files (folders) +are not copied. +* If a library on the projects classpath also has a Class-Path element +specified in the manifest,the content of the Class-Path element has to be on +the projects runtime path. +* To set a main class in a standard Java project, right-click the project node +in the Projects window and choose Properties. Then click Run and enter the +class name in the Main Class field. Alternatively, you can manually type the +class name in the manifest Main-Class element. diff --git a/dist/lib/mina-core-2.0.7.jar b/dist/lib/mina-core-2.0.7.jar new file mode 100644 index 0000000000..c5f384c2c6 Binary files /dev/null and b/dist/lib/mina-core-2.0.7.jar differ diff --git a/dist/lib/mysql-connector-java-bin.jar b/dist/lib/mysql-connector-java-bin.jar new file mode 100644 index 0000000000..0539039f71 Binary files /dev/null and b/dist/lib/mysql-connector-java-bin.jar differ diff --git a/dist/lib/slf4j-api-1.6.6.jar b/dist/lib/slf4j-api-1.6.6.jar new file mode 100644 index 0000000000..4c03fa6bb2 Binary files /dev/null and b/dist/lib/slf4j-api-1.6.6.jar differ diff --git a/dist/lib/slf4j-jdk14-1.7.5.jar b/dist/lib/slf4j-jdk14-1.7.5.jar new file mode 100644 index 0000000000..184c8c4109 Binary files /dev/null and b/dist/lib/slf4j-jdk14-1.7.5.jar differ diff --git a/handbook/Cash.txt b/handbook/Cash.txt new file mode 100644 index 0000000000..841958639e --- /dev/null +++ b/handbook/Cash.txt @@ -0,0 +1,489 @@ +5010000 - Sunny Day - A special effect in which you'll see a brightly smiling sun floating over you. On the KeyConfig, configure this on a button of your choice to turn the effect on/off. +5010001 - Moon & the Stars - A special effect in which you'll see a brightly smiling moon floating around in a sea of stars over you. On the KeyConfig, configure this on a button of your choice to turn the effect on/off. +5010002 - Colorful Rainbow - A special effect in which you'll see a rainbow in its full 7 colors floating next to you. Designate a HotKey to turn the effect on/off. +5010003 - Little Devil - A special effect in which you'll see Lilly the cute little devil floating around next to you. Designate a HotKey to turn the effect on/off. +5010004 - Underwater - A special effect that shows a submarine under the water. Designate a HotKey to turn the effect on/off. +5010005 - Looking for Love - A special effect that displays the longing to be with someone special. Designate a HotKey to turn the effect on/off. +5010006 - Baby Angel - A lovely effect that shows a baby angel floating around as your protector. Designate a HotKey to turn the effect on/off. +5010007 - Fugitive - A special effect that puts a poster in front of your face as if you're being wanted around the world. Designate a HotKey to turn the effect on/off. +5010008 - Mr. Jackpot - A special effect used to increase the chance of winning with Slot Machine by 2x. Designate a HotKey to turn the effect on/off. +5010009 - Martial Effect - A special effect that appears Chinese Falg. Designate a HotKey to turn the effect on/off. +5010010 - Play with Me - A special effect in which you'll see two babies floating on the cloud as a sign of friendship. Designate a HotKey to turn the effect on/off. +5010011 - Loner - A special effect that displays that the owner would like to be left alone. Designate a HotKey to turn the effect on/off. +5010012 - Equalizer - A special equalizer effect that is given as a prize at the Maple Member Shop. Designate a HotKey to turn the effect on/off. +5010013 - Fireworks - A special effect of the fireworks that is given as a prize at the Maple Member Shop. Designate a HotKey to turn the effect on/off. +5010014 - Stormy Cloud - A special effect that displays the stormy cloud with rain and lightning hovering around the owner's head. Designate a HotKey to turn the effect on/off. +5010015 - 777 Effect - A special effect used to increase the number of balls obtained from winning with Slot Machine by 2x. Designate a HotKey to turn the effect on/off. +5010016 - Siren - A siren effect that can be used under emergencies. Designate a HotKey to turn the effect ON/OFF. +5010017 - Twinkling Star - A special star effect for a special day. Designate a HotKey to turn the effect ON/OFF. +5010018 - Smile - A smile effect best used when you're in a great mood! Designate a a HotKey to turn the effect ON/OFF. +5010019 - Heart - A heart effect you can use to show your love to the others. Designate a HotKey to turn the effect ON/OFF. +5010020 - Go! Korea! - A special effect that follows your character for the supporting of Korea's victory. Designate a HotKey to turn the effect ON/OFF. +5010021 - Skeleton of Horror - This skull was found somewhere around the remains, and it'll be with you until you wish for otherwise. Double-click on the item or on the Key Config, configure this on a button of your choice to turn the effect on/off. +5010022 - Twinkling Star - A number of twinkling stars surrounds the character in this special effect. +5010023 - Pumping Heart - A special effect that captures the feeling of wanting to express the feeling of love to someone special. Double-click on the item or on the Key Config, configure this on a button of your choice to turn the effect on/off. +5010024 - The Flocking Ducks - A family of toy ducks follow around the character. Double-click on the item or on the Key Config, configure this on a button of your choice to turn the effect on/off. +5010025 - Silent Spectre - A special effect in which you'll see a spooky ghost appirate behind you and scare the daylights out of everyone nearby! On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010026 - Indigo Dracula - A special effect in which you'll see a horde of Dracula's finest bats appear and surround your character with alluring nocturne ambience. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010027 - Hot Head - A special effect that perfectly represents the feeling of anger. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010028 - Indigo Flames - This is an effect item that exudes an aura around the character. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010029 - Demonfyre - This is an effect item that exudes an aura around the character. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010030 - Nuclear Fire - This is an effect item that exudes an aura around the character. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010031 - My Boyfriend - Show the world how much you adore your boyfriend with this attractive marker! On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010032 - My Girlfriend - Show the world how much you adore your girlfriend with this attractive marker! On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010033 - Sheer Fear - A special effect perfect for instances where you were caught off-guard. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010034 - Christmas Tree - If you ever felt like becoming a Christmas Tree, here's your chance! On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010035 - Snowman - On a cold, snowy day, this effect will enable you to become a snowman. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010038 - Shower Power - A special effect that pours massive amount of water on top of the head. Double-click on the icon or designate a HotKey to turn the effect on/off. +5010039 - Spotlight - A special effect that features a spotlight above the head of the character. Double-click on the icon or designate a HotKey to turn the effect on/off. +5010041 - Super Symphony - A special effect that follows the character around which can be used to express the feeling of happiness and joy. Double-click on the icon or designate a HotKey to turn the effect on/off. +5010042 - Busy Bee - A very busy bee that's never distracted from following you. Keeps one focused on the task at hand. +5010043 - Eyelighter - A special effect that features a blinding glow on the character's eyes. Double-click on the icon or designate a HotKey to turn the effect on/off. +5010044 - Shadow Style - Traces of the character remains while the character moves, creating multiple images of the character in the process. Double-click on the icon, or designate a HotKey to turn the effect on/off. +5010045 - Struck by Lightning - A special effect that displays the lightning striking on the character's head. Double-click on the icon or designate a HotKey to turn the effect on/off. +5010046 - Maple Champion - A special effect that puts a poster in front of your face as if you're being Maple Champion around the world. Designate a HotKey to turn the effect on/off. +5010048 - Maple Champion - A special effect that puts a poster in front of your face as if you're being Maple Champion around the world. Designate a HotKey to turn the effect on/off. +5010049 - Maple Champion - A special effect that puts a poster in front of your face as if you're being Maple Champion around the world. Designate a HotKey to turn the effect on/off. +5010051 - O Maplemas Tree - Celebrate your holiday cheer with this effect! Designate a HotKey to turn the effect ON/OFF. +5010052 - Santa Sled - Give Santa a lift with this hilarious effect! Designate a HotKey to turn the effect ON/OFF. +5010053 - Mistletoe - Create the perfect excuse for a holiday kiss! Designate a HotKey to turn the effect ON/OFF. +5010054 - Jingling Santa - A special effect that displays Santa and his two trusty reindeers breaking down to the beat, hovering around the owner's head. Designate a HotKey to turn the effect on/off. +5010055 - UFO - A special effect that features a UFO and a number of colorful aliens accompanying the owner of the item. Designate a HotKey to turn the effect on/off. +5010056 - Garden Trail - A special effect that features a trail of flowers and grass left behind by the owner of the item. Designate a HotKey to turn the effect on/off. +5010057 - Flower Fairy - A special effect that shows a cute fairy sprinkling flowers. On the Key Config, configure this on a button of your choice to turn the effect on/off. +5010999 - Changing to a Monster - Not sold in Cash Shop. An effect shown while changing into a monster. +5021000 - Water Balloon - A cool blue water balloon. Thrown with a #cthrowing star# to have the water balloon effect. Item cannot be removed. +5021001 - Paper Plane - A nicely-folded paper plane. Thrown with a #cthrowing star# to have the paper plane effect. Item cannot be removed. +5021002 - Energy Ball - A ball of concentrated energy. Thrown with a #cthrowing star# to have the energy effect. Item cannot be removed. +5021003 - Super Star - A red starfish that can be seen at the beach. Can be equipped with a #cthrowing star# to have the starfish effect.\n\nThis item cannot be removed. +5021004 - Winged Baseball - A baseball with small wings attached to it. Can be equipped with a #cthrowing star# to have the winged baseball effect.\n\nThis item cannot be destroyed. +5021005 - Football - The official football of the MapleBowl. When held in your inventory, #cthrowing stars# will appear as a thrown football. +5021006 - Chalkboard Eraser - A chalkboard eraser commonly found in classrooms. Thrown with a #cthrowing star# to have the eraser effect. Item cannot be removed. +5021007 - Shooting Hearts - A small pink heart of love that explodes on contact. Thrown with a #cthrowing star# to have the heart effect. \n\nItem cannot be removed. +5021008 - Throwing Teddy - An adorable brown teddy bear that explodes on contact. Thrown with a #cthrowing star# to have the teddy bear effect. \n\nItem cannot be removed. +5021009 - Throwing Pepe - Never in Pepe's wildest dreams did it think it'd be chucked down the field in place of the throwing star. Thrown with a throwing star to have the Pepe effect. Item cannot be removed. +5021010 - Mr. Puff Throwing Star - A throwing star make to look like Mr. Puff, with its huffy puffy cheeks resembling that of a tasty-looking steamed bun. Thrown with a #cthrowing star# to have the Mr. Puff effect.\n\nItem cannot be removed. +5021011 - Skull Striker - An enchanted skull straight from the Headless Horseman. Thrown with a throwing star to have the skull striker effect. Item cannot be removed. +5021012 - Pumpkin Bomb - Harmless pie? Think again. Thrown with a throwing star to have the pumpkin bomb effect. +5021013 - Pirate Bomb - An explosive bomb used by the legendary pirates. Thrown with a #cthrowing star# to have the explosive bomb effect.\n\nItem cannot be removed. +5021014 - Poo Stars - That nasty poop can be detected from afar. Thrown with a #cthrowing star# to have the nasty poop effect.\n\nItem cannot be removed. +5021015 - Egg Throwing Star - A white egg thrown in place of the throwing star, and that explodes on contact. Thrown with a #cthrowing star# to have the Chick effect. \n\nItem cannot be removed. +5021016 - Devilball - A mischievous ball that has gained sentience, and now lives to be thrown for massive damage. Tremendous striking power! Equips over #cThrowing Stars#! +5021025 - Charm of the Undead - Equips over #cThrowing Stars#! +5021017 - Dragon Disc - An explosive throwing star used by the Dragon. Thrown with a #cthrowing star# to have the explosive bomb effect.\n\nItem cannot be removed. +5021019 - Shooting Star Medal - Beautiful shooting star. Mask over #cThrowing Star#.\n\nItem cannot be removed. +5021020 - Throwing Boomers - Explosive throwing stars from New Leaf City. They're the Bomb! This item equips over #cThrowing Stars#! +5021021 - Exploding Sheep - A cute and cuddly sheep. Don't let it fool you--it's lethal. This item equips over #cThrowing Stars#! +5030000 - Mushroom House Elf - Set up this special store on the Free Market, and this Elf, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030001 - Mushroom House Elf - Set up this special store on the Free Market, and this Elf, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030002 - Cashier: Teddy Bear Clerk - Set up this special store on the Free Market, and this Teddy Bear, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030003 - Cashier: Teddy Bear Clerk - Set up this special store on the Free Market, and this Teddy Bear, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030004 - The Robot Stand - Set up this special store on the Free Market, and this Robot, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030005 - The Robot Stand - Set up this special store on the Free Market, and this Robot, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030006 - Mushroom House Elf - Set up this special store on the Free Market, and this Elf, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030008 - Homely Coffeehouse - Set up this special store on the Free Market, and this Coffeehouse, doubling as the Hired Merchant, will be a place that sells the items for the owner, even if the owner does not log on to the game. #cIf an item is sold, the owner will be notified through the chat window.# +5030009 - Homely Coffeehouse - Set up this special store on the Free Market, and this Coffeehouse, doubling as the Hired Merchant, will be a place that sells the items for the owner, even if the owner does not log on to the game. #cIf an item is sold, the owner will be notified through the chat window.# +5030010 - Granny's Food Stand - Set up this special store on the Free Market, and this Granny, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030011 - Granny's Food Stand - Set up this special store on the Free Market, and this Granny, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5030012 - Tiki Torch Store - Set up this special store on the Free Market, and this Granny, working as the Hired Merchant, will sell the items for the owner, even if the owner does not log on to the game. +5040000 - The Teleport Rock - Remembers 5 maps of your choice. This rock will enable you to #cteleport to the map you remembered#. It can even allow you to #cmove to the map where a certain character is#, provided that the person is in the same channel at the same world. This item cannot be used to teleport in between continents. +5040001 - Teleport Coke - By drinking sweet refreshing #cCoca-Cola#, it ables you to #cteleport to one of the remembered maps#. You can also #cteleport to the map where specific character is located# in the same channel. Unable the teleport to the maps where teleport is limited. +5041000 - VIP Teleport Rock - This Teleport Rock enables one to #cteleport between continents#. It also enables the user to teleport to a specific character from the same channel. Up to #c10# maps, excluding the maps that cannot be reached through teleport, can be registered for this. +5050000 - AP Reset - This is the #cscroll that allows you to reset 1 AP from the ability stat#. Choose one AP from HP, MP, STR, DEX, INT, or LUK , and allocate it to the desired category. The lowest an AP level can reach on any category is 4. +5050001 - SP Reset (1st job) - This scroll allows you to #creset 1 SP from a 1st-job skill#. The SP that's been reset may NOT be applied to 2nd or 3rd job skills. +5050002 - SP Reset (2nd job) - This scroll allows you to #creset 1 SP from a 2nd-level skill#. The 1st job SP raised AFTER the 2nd job adv. can also be reset and applied to a 2nd job skill. The SP that's been reset may NOT be applied to 1st or 3rd job skills. +5050003 - SP Reset (3rd job) - This scroll allows you to #creset 1 SP from a 3rd-level skill#. The 1st & 2nd job SP raised AFTER the 3rd job adv. can also be reset and applied to a 3rd job skill. The SP that's been reset may NOT be applied to 1st or 2nd job skills. +5050004 - SP Reset (4th job) - This scroll allows you to #creset 1 SP from a 4th-level skill#. The 1st, 2nd, and 3rd job SP raised AFTER the 4th job adv. can also be reset and applied to a 3rd job skill. The SP that's been reset may NOT be applied to 1st, 2nd or 3rd job skills. +5060000 - Item Tag - This will enable the owner of the weapon to engrave his/her name on an equipment item once. Click on the item, and drag the item #con top of the equipment of choice# to engrave your character name on it. +5060001 - Item Guard - A lock that seals away any equipment items and throwing stars, excluding the quest items. By sealing the item away, the item will be #cdisabled from selling, trading, or throwing away#. Double-click on the lock to seal an item. +5060002 - Incubator - An equipment needed to open the #ceggs from pigme#. Pigme eggs canve incubated by double clicking the incubator. +5061000 - Item Guard : 7 Days - A guard for sealing an equip item and/or throwing star to prevent #cselling, trading or dropping# of the item. Double-click on the guard, then seal the item into the window that appears. #cThis Item Guard is active for 7 days, after which the item will be automatically released from the seal.# +5061001 - Item Guard : 30 Days - A guard for sealing an equip item and/or throwing star to prevent #cselling, trading or dropping# of the item. Double-click on the guard, then seal the item into the window that appears. #cThis Item Guard is active for 30 days, after which the item will be automatically released from the seal.# +5061002 - Item Guard : 90 days - A guard for sealing an equip item and/or throwing star to prevent #cselling, trading or dropping# of the item. Double-click on the guard, then seal the item into the window that appears. #cThis Item Guard is active for 90 days, after which the item will be automatically released from the seal.# +5070000 - Cheap Megaphone - Shout to everyone in the map your character is on with this megaphone. +5071000 - Megaphone - Shout to everyone in the map your character is on with this megaphone. Only available for characters that are over Level 10. +5072000 - Super Megaphone - Shout to everyone in the world your character is on with this megaphone. Only available for characters that are over Level 10. +5073000 - Heart Megaphone - Shout to everyone in the world your character is on with this megaphone. (Heart accents) +5074000 - Skull Megaphone - Shout to everyone in the world your character is on with this megaphone. (Skull accents) +5075000 - MapleTV Messenger - Show your avatar on Maple TV with messages.\nIn case of dedication messages, character you have designated will also appear on the screen throughout the entire world. The message will last appx. 15 seconds. +5075001 - MapleTV Star Messenger - Beautifully designed TV with star effects. \nThis allows you to type in longer messages with longer period of time, 30 seconds. Only announcement type of message is available with this item. The message will last for 30 seconds. +5075002 - MapleTV Heart Messenger - Beautifully designed TV with Heart effect.\nPropose in style on the TV. This item only allows dedication type of message where designated user also appears on the TV. The message will last for 1 minute. +5075003 - Megassenger - Show your message on the chatting window as well as Maple TV at the same time. +5075004 - Star Megassenger - Show your message on the chatting window as well as Maple TV at the same time. This comes with star effect on the Maple TV. +5075005 - Heart Megassenger - Show your message on the chatting window as well as Maple TV at the same time. This comes with heart effect on the Maple TV. +5076000 - Item Megaphone - Use this megaphone to broadcast to everyone your World about an item that may be for sale. +5080000 - Korean Kite - A kite that you can float around the skies at will. Enter your own message. +5080001 - Heart Balloon - A balloon full of love you can float around. Enter your own message. +5080002 - Graduation Banner - A graduation banner you can float around. Enter your own message. +5080003 - Admission Banner - A banner celebrating the admission to a school. Enter your own message. +5090000 - Note - Double-click to send a note to an offline character. The receiver will be able to see the note at the next login. +5100000 - Congratulatory Song - Play a congratulatory song on the map you're in. +5110000 - Heart-Shaped Chocolate - A sweet chocolate in a heart-shaped box. When in possession, a heart will appear above the head of the person that gave the present. +5120000 - Snowy Snow - Sprinkles snow on the map where your character is for 30 seconds. Enter a message of your choice. +5120001 - Sprinkled Flowers - Sprinkles flower on the map where your character is for 30 seconds. Enter a message of your choice. +5120002 - Soap Bubbles - Sprinkles bubbles on the map where your character is for 30 seconds. Enter a message of your choice. +5120003 - Snowflakes - Sprinkles icy snow on the map where your character is for 30 seconds. Enter a message of your choice. +5120004 - Sprinkled Presents - Sprinkles presents on the map where your character is for 30 seconds. Enter a message of your choice. +5120005 - Sprinkled Chocolate - Sprinkles chocolate on the map where your character is for 30 seconds. Enter a message of your choice. +5120006 - Sprinkled Flower Petals - Sprinkle flower petals on the map where your character is for 30 seconds. Enter a message of your choice. +5120007 - Sprinkled Candy - Sprinkles candies on the map where your character is for 30 seconds. Enter a message of your choice. +5120008 - Sprinkled Maple Leaves - Sprinkles maple leaves on the map where your character is for 30 sec. Enter a message of your choice. +5120009 - Fireworks - Ignites fireworks on the map where your character is for 30 sec. Enter a message of your choice. +5120010 - Sprinkled Coke - Sprinkles #cCoca-Cola# on the map where your character is for 30 seconds. Enter a message of your choice. +5120011 - Spirit Haunt - Ghosts on the map where your character is for 30 sec. Enter a message of your choice. +5120012 - Holiday Sock - Sprinkles holiday socks on the map where your character is for 30 seconds. Enter a message of your choice. +5120014 - Christmas Socks - Sprinkles Christmas Socks on the map where your character is for 30 seconds. Enter a message of your choice. +5120015 - Chinese Lantern Firecrackers - Greet the Lunar New Year with the fireworks that fills up the screen. +5121000 - Fighting Spirit - You can enter the message of your choice. +5121001 - Korean Soccer Chant - You can enter the message of your choice. +5121002 - Soccer Fever - Increases Speed +20, Jump +10 for 10 minutes to everyone in the map. Enter a message of your choice. +5121003 - Chicken Soup - You can enter the message of your choice. +5121004 - Song Pyun - You can enter the message of your choice. +5121005 - Han Gwa - You can enter the message of your choice. +5121006 - Flock of Witches - A special effect that displays a flock of witches flying around the area in their spanking-new flying brooms. +5121007 - Tree Decor - Buffs everyone in the map for 15 minutes with weapon attack +20 and magic attack +30. Enter a message of your choice. +5121008 - Happy Birthday - You can enter the message of your choice. +5121009 - Petite Rose - Increases Weapon Attack +20, Magic Attack +30 for 15 minutes to everyone in the map. Enter a message of your choice. +5121010 - Floral Fest - Increases Weapon Attack +20, Magic Attack +30 for 15 minutes to everyone in the map. Enter a message of your choice. +5121014 - Snowing Fishbread - You can enter the message of your choice. +5121015 - Snowy Snowman - When this weather effect is on, everyone in the map is buffed with weapon attack +20 and magic attack +30 for 15 minutes. Enter a message of your choice before spreading this holiday joy to everyone. +5121016 - Heart-shaped Chocolate Box - You can enter the message of your choice. +5121017 - Water Splash - You can enter the message of your choice. +5122000 - Hearty Party Bear - You can enter the message of your choice. +5130000 - Safety Charm - It does not let the user lose EXP points after death, as long as it's in possession. 30% of your HP and MP will be recovered when you are revived. +5140000 - Regular Store Permit - Open a regular store. Can open anywhere of choice in the free market. Can sell up to 16 items at once. +5140001 - Summer Store Permit(SE) - A special-edition coupon that opens a sky blue tree store. Can open anywhere of choice in the free market and sell up to 24 items at once. Available for a limited time only. +5140002 - Pink VIP Store Permit - Open a pink tree store. Can open anywhere of choice in the free market. Can sell up to 24 items at once. +5140003 - Fall Store Permit(SE) - A special-edition coupon that opens a orange tree store. Can open anywhere of choice in the free market and sell up to 24 items at once. Available for a limited time only. +5140004 - Spring Store Permit (SE) - A special-edition coupon that opens a green tree store. Can open anywhere of choice in the free market and sell up to 24 items at once. Available for a limited time only. +5140006 - Holiday Store Permit - A special-edition permit that opens Christmas store. Can open anywhere of choice in the free market and sell up to 24 items at once. Available for a limited time only +5150000 - Henesys Hair Style Coupon (REG) - Use it at #cHenesys Hair Salon# to change your hair style #crandomly#. (one-time use) +5150001 - Henesys Hair Style Coupon (VIP) - Use it at #cHenesys Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150002 - Kerning City Hair Style Coupon (REG) - Use it at #cKerning City Hair Salon# to change your hair style #crandomly#. (one-time use) +5150003 - Kerning City Hair Style Coupon (VIP) - Use it at #cKerning City Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150004 - Orbis Hair Style Coupon (REG) - Use it at #cOrbis Hair Salon# to change your hair style #crandomly#. (one-time use) +5150005 - Orbis Hair Style Coupon (VIP) - Use it at #cOrbis Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150006 - Ludibrium Hair Style Coupon (REG) - Use it at #cLudibrium Hair Salon# to change your hair style #crandomly#. (one-time use) +5150007 - Ludibrium Hair Style Coupon (VIP) - Use it at #cLudibrium Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150008 - Showa Hair Style Coupon (REG) - Use it at #cShowa Hair Salon# to change your hair style #crandomly#. (one-time use) +5150009 - Showa Hair Style Coupon (VIP) - Use it at #cShowa Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150010 - Henesys Hair Style Coupon (EXP) - Use it at #cHenesys Hair Salon# to #crandomly# change your hair style with a chance to obtain a new experimental style. (one-time use) +5150011 - Kerning City Hair Style Coupon (EXP) - Use it at #cKerning City Hair Salon# to #crandomly# change your hair style with a chance to obtain a new experimental style. (one-time use) +5150012 - Ludibrium Hair Style Coupon (EXP) - Use it at #cLudibrium Hair Salon# to #crandomly# change your hair style, with a chance to obtain a new experimental style. (one-time use) +5150013 - Orbis Hair Style Coupon (EXP) - Use it at #cOrbis Hair Salon# to #crandomly# change your hair style, with a chance to obtain a new experimental style. (one-time use) +5150019 - Amoria Hairstyle Coupon (EXP) - Use it at #cAmoria Hair Salon# to #crandomly# change your hair style with a chance to obtain a new experimental style. (one-time use) +5150020 - Amoria Hairstyle Coupon (VIP) - Use it at #cAmoria Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150021 - Night Market Hair Style Coupon (EXP) - Use it at #cNight Market Hair Salon# to #crandomly# change your hair style with a chance to obtain a new experimental style. (one-time use) +5150022 - Night Market Hair Style Coupon (VIP) - Use it at #cNight Market Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150024 - Mu Lung Hair Style Coupon (EXP) - Use it at #cMu Lung Hair Salon# to #crandomly# change your hair style with a chance to obtain a new experimental style. (one-time use) +5150025 - Mu Lung Hair Style Coupon (VIP) - Use it at #cMu Lung Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150026 - Ariant Hair Style Coupon (REG) - Use it on #cAriant Hair Salon# to change your hair style #crandomly#. (one-time use) +5150027 - Ariant Hair Style Coupon (VIP) - Use it on #cAriant Hair Salon# to change your hair style of #cyour choice#. (one-time use) +5150030 - NLC Hairstyle Coupon (EXP) - Use it at #cNLC Hair Salon# to #crandomly# change your hair style with a chance to obtain a new experimental style. (one-time use) +5150031 - NLC Hairstyle Coupon (VIP) - Use it at #cNLC Hair Salon# to change your hair to a style of #cyour choice#. (one-time use) +5150038 - Matinee Idol Hair Coupon - Use this coupon to change the hairstyle to a #cMatinee Idol# hairstyle. (one-time use) +5150040 - Royal Hair Coupon - If you take this to #cBig Headward of Henesys Hair Shop#, your hair style will change to #cone of several Royal options.# +5151000 - Henesys Hair Color Coupon (REG) - Use it at #cHenesys Hair Salon# to change your hair color #crandomly#. (one-time use) +5151001 - Henesys Hair Color Coupon (VIP) - Use it on #cHenesys Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151002 - Kerning City Hair Color Coupon (REG) - Use it at #cKerning City Hair Salon# to change your hair color #crandomly#. (one-time use) +5151003 - Kerning City Hair Color Coupon (VIP) - Use it at #cKerning City Hair Salon# to change your hair color of #cyour choice#. (one-time use) +5151004 - Orbis Hair Color Coupon (REG) - Use it at #cOrbis Hair Salon# to change your hair color #crandomly#. (one-time use) +5151005 - Orbis Hair Color Coupon (VIP) - Use it on #cOrbis Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151006 - Ludibrium Hair Color Coupon (REG) - Use it at #cLudbrium Hair Salon# to change your hair color #crandomly#. (one-time use) +5151007 - Ludibrium Hair Color Coupon (VIP) - Use it on #cLudibrium Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151008 - Showa Hair Color Coupon (REG) - Use it at #cShowa Hair Salon# to change your hair color #crandomly#. (one-time use) +5151009 - Showa Hair Color Coupon (VIP) - Use it at #cShowa Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151014 - Night Market Hair Color Coupon (REG) - Use it at #cNight Market Hair Salon# to change your hair color #crandomly#. (one-time use) +5151015 - Night Market Hair Color Coupon (VIP) - Use it on #cNight Market Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151016 - Amoria Hair Color Coupon (REG) - Use it at #cAmoria Hair Salon# to change your hair color #crandomly#. (one-time use) +5151017 - Amoria Hair Color Coupon (VIP) - Use it on #cAmoria Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151019 - Mu Lung Hair Color Coupon (REG) - Use it at #cMu Lung Hair Salon# to change your hair color #crandomly#. (one-time use) +5151020 - Mu Lung Hair Color Coupon (VIP) - Use it at #cMu Lung Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5151021 - Ariant Hair Color Coupon (REG) - Use it on #cAriant Hair Salon# to change your hair color #crandomly# (one-time use) +5151022 - Ariant Hair Color Coupon (VIP) - Use it on #cAriant Hair Salon# to change your hair to a a color of #cyour choice# (one-time use) +5151025 - NLC Hair Color Coupon (REG) - Use it at #cNLC Hair Salon# to change your hair color #crandomly#. (one-time use) +5151026 - NLC Hair Color Coupon (VIP) - Use it at #cNLC Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5152000 - Henesys Face Coupon (REG) - Use it at #cHenesys Plastic Surgery# to change your face #crandomly#. (one-time use) +5152001 - Henesys Face Coupon (VIP) - Use it at #cHenesys Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152002 - Kerning City Face Coupon (REG) - Use it at #cKerning City Plastic Surgery# to change your face #crandomly#. (one-time use) +5152003 - Kerning City Face Coupon (VIP) - Use it at #cKerning City Plastic Surgery# to change your face to a style of your #cchoice#. (one-time use) +5152004 - Orbis Face Coupon (REG) - Use it at #cOrbis Plastic Surgery# to change your face #crandomly#. (one-time use) +5152005 - Orbis Face Coupon (VIP) - Use it at #cOrbis Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152006 - Ludibrium Face Coupon (REG) - Use it at #cLudibrium Plastic Surgery# to change your face #crandomly#. (one-time use) +5152007 - Ludibrium Face Coupon (VIP) - Use it at #cLudibrium Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152008 - Showa Face Coupon (REG) - Use it at #cShowa Plastic Surgery# to change your face #crandomly#. (one-time use) +5152009 - Showa Face Coupon (VIP) - Use it at #cShowa Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152010 - Henesys Cosmetic Lens Coupon (REG) - Use it at #cHenesys Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152011 - Orbis Cosmetic Lens Coupon (REG) - Use it at #cOrbis Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152012 - Ludibrium Cosmetic Lens Coupon (REG) - Use it at #cLudibrium Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152013 - Henesys Cosmetic Lens Coupon (VIP) - Use it at #cHenesys Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152014 - Orbis Cosmetic Lens Coupon (VIP) - Use it at #cOrbis Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152015 - Ludibrium Cosmetic Lens Coupon (VIP) - Use it at #cLudibrium Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152021 - Amoria Face Coupon (REG) - Use it at #cAmoria Plastic Surgery# to change your face #crandomly#. (one-time use) +5152022 - Amoria Face Coupon (VIP) - Use it at #cAmoria Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152023 - Night Market Face Coupon (REG) - Use it at #cNight Market Plastic Surgery# to change your face #crandomly#. (one-time use) +5152024 - Night Market Face Coupon (VIP) - Use it at #cNight Market Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152025 - Amoria Cosmetic Lens Coupon (REG) - Use it at #cAmoria Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152026 - Amoria Cosmetic Lens Coupon (VIP) - Use it at #cAmoria Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152027 - Mu Lung Plastic Surgery Coupon (REG) - Use it at #cMu Lung Plastic Surgery# to change your face #crandomly#. (one-time use) +5152028 - Mu Lung Plastic Surgery Coupon (VIP) - Use it at #cMu Lung Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152029 - Ariant Face Coupon (REG) - Use it at #cAriant Plastic Surgery# to change your face #crandomly# (one-time use) +5152030 - Ariant Face Coupon (VIP) - Use it at #cAriant Plastic Surgery# to change your face to a style of #cyour choice# (one-time use) +5152033 - NLC Face Coupon (REG) - Use it at #cNLC Plastic Surgery# to change your face #crandomly#. (one-time use) +5152034 - NLC Face Coupon (VIP) - Use it at #cNLC Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152035 - NLC Cosmetic Lens Coupon (REG) - Use it at #cNLC Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152036 - NLC Cosmetic Lens Coupon (VIP) - Use it at #cNLC Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152041 - Mu Lung Cosmetic Lens Coupon (VIP) - Use it at #cMu Lung Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152042 - Mu Lung Cosmetic Lens Coupon (REG) - Use it at #cMu Lung Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152045 - Showa Cosmetic Lens Coupon (VIP) - Use it at #cShowa Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152046 - Showa Cosmetic Lens Coupon (REG) - Use it at #cShowa Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152047 - Ariant Cosmetic Lens Coupon (VIP) - Use it at #cAriant Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5152048 - Ariant Cosmetic Lens Coupon (REG) - Use it at #cAriant Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152100 - One-Time Cosmetic Lens (Black) - Use it once to change the color of your eyes to #cBlack#. (one-time use) +5152101 - One-Time Cosmetic Lens (Blue) - Use it once to change the color of your eyes to #cBlue#. (one-time use) +5152102 - One-Time Cosmetic Lens (Red) - Use it once to change the color of your eyes to #cRed#. (one-time use) +5152103 - One-Time Cosmetic Lens (Green) - Use it once to change the color of your eyes to #cGreen#. (one-time use) +5152104 - One-Time Cosmetic Lens (Brown) - Use it once to change the color of your eyes to #cBrown#. (one-time use) +5152105 - One-Time Cosmetic Lens (Emerald) - Use it once to change the color of your eyes to #cEmerald#. (one-time use) +5152106 - One-Time Cosmetic Lens (Purple) - Use it once to change the color of your eyes to #cPurple#. (one-time use) +5152107 - One-Time Cosmetic Lens (Amethyst) - Use it once to change the color of your eyes to #cAmethyst#. (one-time use) +5153000 - Henesys Skin Coupon - Use it at #cHenesys Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5153001 - Orbis Skin Coupon - Use it at #cOrbis Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5153002 - Ludibrium Skin Coupon - Use it at #cLudibrium Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5153005 - Night Market Skin Coupon - Use it at #cNight Market Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5153006 - Mu Lung Skin Care Coupon - Use it at #cMu Lung Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5153007 - Ariant Skin Care Coupon - Use it at #cAriant Skin Care Shop# to change your skin to a color of #cyour choice# (one-time use) +5153009 - NLC Skin Coupon - Use it at #cNLC Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5154000 - Orbis Dirty Hair Coupon - Use it at the #cOrbis Hair Salon# once for the disheveled look. +5160000 - Queasy - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display the throwing up motion. +5160001 - Panicky - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display panicking face. +5160002 - Sweetness - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display the happy face. +5160003 - Smoochies - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display kissing face. +5160004 - Wink - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display lovely wink. +5160005 - Ouch - On the KeyConfig, configure it on a button of your choice, and the character will make the face of pain and sorrow. +5160006 - Sparkling Eyes - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display sparkling eyes. +5160007 - Flaming - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display the look of rage. +5160008 - Ray - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display beaming eyes. +5160009 - Goo Goo - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display the look of awesome!!! +5160010 - Whoa Whoa - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display the look of being flustered. +5160011 - Constant Sigh - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character display the thinking look. +5160012 - Drool - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character act like falling asleep. +5160013 - Dragon Breath - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character act very surprised. +5160014 - Bleh - On the KeyConfig, configure this expression on a button of your choice. Press the button and watch your character act very surprised. +5170000 - Pet Name Tag - Use this item to name your pet. Call its name before making an order, and the pet responds much better to your command. \n ex) Lucky, sit! +5180000 - Water of Life - A mysterious water gathered from the deepest valleys of Ellinia. Double click the Water of Life to reawaken your pet, which has turned into a doll. +5190000 - Item Pick-up Skill - Adds the item pick-up skill to a pet. \n#cAvailable to pets that can only pick up Mesos.# +5190001 - HP Charge Skill - Adds to automatic potion-feeding skill to the pet. \n#cAvailable to all pets that do not have this option.# +5190002 - Expand Range Skill - Use this scroll to expand the pet's moving range by 3 times. \n#cOnly available to pets that have automatic pick-up skills, cannot be used on top of each other.# +5190003 - Automatic Pick-Up Skill - A skill that enables pets to pick up items and mesos within the area without the character having to move. \n#cAvailable to pets with Mesos pick-up, item pick-up skills.# +5190004 - (+) Pick up Leftover Item & Meso Skills - Adds the skill that enables pets to pick up mesos and items that have been dropped for more than 30 seconds, thus rendering it as leftovers.\n#cAvailable to pets that have Meso pick-up skills as well as item pick-up skills.# +5190005 - Unpickable item skill - The skill that makes pet not picking up any selected item. \n#s only pet mounted meso or item collecting function can use the skill.# +5190006 - MP potion recharge skill - The skill that automatically recharges one's MP provided you have set the option up in the system option. \n#c The skill applies to all pet that does not have the skillt#. +5191000 - (-) Delete Item Pick-Up - Use this scroll to disable the pet from picking up items. +5191001 - (-) Delete HP Charge - Use this scroll to disable the pet from automatically feeding the character when the HP reaches critical stage. +5191002 - (-)Delete Expand Range - Use this scroll to return the range of pet's movement back to normal. +5191003 - (-) Delete Automatic Pick-Up - Use this scroll to disable the pet from picking up items and mesos. +5191004 - (-) Delete Pick up Leftover Item & Meso - Use this scroll to disable pets from picking up leftover items and mesos, the ones that have been dropped for more than 30 seconds. +5200000 - Bronze Sack of Mesos - Contains quite a bit of mesos. User must be above level 15 to purchase sacks. +5200001 - Silver Sack of Mesos - Contains a lot of mesos. User must be above level 15 to purchase sacks. +5200002 - Gold Sack of Mesos - Contains lots and lots of mesos. User must be above level 15 to purchase sacks. +5201000 - Box of Metal Balls - 200 balls in the box. +5201001 - Box of Metal Balls - 500 balls in the box. +5210000 - Pro-Adult Ticket - When in possession, temporarily doubles the EXP gained. +5210001 - Pro-Adult Ticket - When in possession during a specific time period, all EXP gained will be double. +5210002 - Pro-Adult Ticket - When in possession during a specific time period, all EXP gained will be double. +5210003 - Pro-Adult Ticket - When in possession during a specific time period, all EXP gained will be double. +5210004 - Pro-Adult Ticket - When in possession during a specific time period, all EXP gained will be double. +5210005 - Pro-Adult Ticket - When in possession during a specific time period, all EXP gained will be double. +5211000 - 2x EXP Card - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 6pm ~ 8pm (Pacific time) for #c7 days#. +5211001 - From NEXON - Please refrain from breaking Maplestory client apart. +5211002 - Special Coupon - 5 days - Hold on to this coupon to #cearn 2x EXP from all monsters#. This coupon is valid for 5 days after the initial possession, and please be aware that if the character has multiple coupons of the same kind, they will all kick in at once. +5211003 - one-time 2x EXP coupon - This coupon allows users to earn #c2x Exp (double experience)# for xx minutes after the purchaser activate the coupon. +5211004 - 2x EXP Card Type 1 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 07 am to 11 am (Pacific time) #cweekdays#. +5211005 - 2x EXP Card Type 2 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 10 am to 02 pm (Pacific time) #cweekdays#. +5211006 - 2x EXP Card Type 3 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 01 pm to 05 pm (Pacific time) #cweekdays#. +5211007 - 2x EXP Card Type 4 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 04 pm to 08 pm (Pacific time) #cweekdays#. +5211008 - 2x EXP Card Type 5 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 07 pm to 11 pm (Pacific time) #cweekdays#. +5211009 - 2x EXP Card Type 1 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 07 am to 11 am (Pacific time) #cweekends#. +5211010 - 2x EXP Card Type 2 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 10 am to 02 pm (Pacific time) #cweekends#. +5211011 - 2x EXP Card Type 3 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 01 pm to 05 pm (Pacific time) #cweekends#. +5211012 - 2x EXP Card Type 4 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 04 pm to 08 pm (Pacific time) #cweekends#. +5211013 - 2x EXP Card Type 5 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 07 pm to 11 pm (Pacific time) #cweekends#. +5211014 - 2x EXP Card Type 1 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 07 am to 11 am (Pacific time) #ceveryday#. +5211015 - 2x EXP Card Type 2 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 10 am to 02 pm (Pacific time) #ceveryday#. +5211016 - 2x EXP Card Type 3 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 01 pm to 05 pm (Pacific time) #ceveryday#. +5211017 - 2x EXP Card Type 4 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 04 pm to 08 pm (Pacific time) #ceveryday#. +5211018 - 2x EXP Card Type 5 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 07 pm to 11 pm (Pacific time) #ceveryday#. +5211037 - 2x EXP Card Type 6 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 12 am to 04 am (Pacific time) #cweekdays#. +5211038 - 2x EXP Card Type 6 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 12 am to 04 am (Pacific time) #cweekends#. +5211039 - 2x EXP Card Type 6 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 12 am to 04 am (Pacific time) #ceveryday#. +5211040 - 2x EXP Card Type 7 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 03 am to 07 am (Pacific time) #cweekdays#. +5211041 - 2x EXP Card Type 7 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 03 am to 07 am (Pacific time) #cweekends#. +5211042 - 2x EXP Card Type 7 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 03 am to 07 am (Pacific time) #ceveryday#. +5211043 - 2x EXP Card Type 8 - Weekdays - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 06 am to 10 am (Pacific time) #cweekdays#. +5211044 - 2x EXP Card Type 8 - Weekends - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 06 am to 10 am (Pacific time) #cweekends#. +5211045 - 2x EXP Card Type 8 - Everyday - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available from 06 am to 10 am (Pacific time) #ceveryday#. +5211046 - 1day 2x EXP Special Coupon - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available for 24 hours upon purchase. +5211047 - 2x EXP 3 Hours Special Coupon - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available for 3 hours upon purchase. +5211048 - 4 hour 2 x EXP special coupon - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available for 4 hour upon purchase. +5220000 - Gachapon Ticket - This ticket will enable you to use Gachapon and obtain various items. +5220001 - Event Ticket - A ticket needed to enter the event map. +5220010 - Gachapon for slot machines - (no description) +5220020 - Gachapon for Net Cafe - (no description) +5221000 - Free Ticket - This ticket allows you to shop certain items in the cash shop regardless of price. +5230000 - The Owl of Minerva - #cThe Owl of Minerva#, which represents wisdom, can be used to search for items sold at the Free Market. #cDisappears right after showing the results of the item search#. +5240000 - Monkey Banana - Tasty-looking monkey banana. Only edible for the pet Monkey. \nRecovers entire Fullness. \nIncrease 100 Closeness. +5240001 - Micro-Chips - A fresh set of batteries. Only usable with the pet Robot.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240002 - Dog Bone - A neatly-packaged dog bone. Only edible for the pet Puppy and Husky.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240003 - Bamboo - Bamboo harvested from Ellinia forests. Only edible for the pet Panda.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240004 - Porgy - Just caught at Lith Harbor. Only edible for the pet Kitty, Black Pig and Penguin.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240005 - Clover - A freshly-plucked clover. Only edible for the pet Bunny, Black Pig, and Rudolph.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240006 - Red Meat - Fresh red meat bought from the market. Only edible for the pet Dino, Mini Kargo, Black Pig, Orange Tiger and White Tiger.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240007 - Frozen Fruits - A frozen fruit that can only be eaten by #cMini Yeti and Black Pig#. Restores fullness and #cincreases closeness by 100#. +5240008 - Turkey Feed - Nicely packed Turkey Feed. Only eligible for the pet Turkey. +5240009 - Purple Heart Pudding - A large piece of Purple Heart Meat Pudding that can only be eaten by #cJr. Balrog#. Recovers "fullness" completely and #cincreases closeness by 100#. +5240010 - Golden Coin Chocolate - Delicious chocolate covered with Golden cover. Only edible for the pet Golden Pig.\nRecovers entire Fullness. \nIncrease 100 Closeness. +5240011 - Cotton Candy - A pet food designated for Pet Sun Wu Kong. Fullness 100% & Closeness +100 +5240012 - Dragon Marble Candy - A pet food designated for Dragons. Fullness 100% & Closeness +100 +5240013 - Caramel Beetle - A large piece of Caramel Beetle that can only be eaten by #cJr. Reaper#. Recovers "fullness" completely and #cincreases closeness by 100#. +5240015 - Garlic Salt Chips - Crispy-Salty looking bag of Chips. Only edible for the pet Porcupine. \nRecovers entire Fullness. \nIncrease 100 Closeness. +5240016 - Caramel Beetle - A caramel beetle plucked right from a myserious tree. Only the #cJr. Reaper# appreciates such delicacy. Restores Fullness and #cincreases 100 Closeness#. +5240017 - Snowflake - A tasty icicle that can only be consumed by #cSnowman and Crystal Rudolph#. Recovers entire Fullness and #cincreases 100 Closeness#. +5240018 - Sprout - A nutritious food only available for #cKino#. Restores Fullness and #cincreases 100 Closeness#.. +5240019 - Hedgehog Food Is this supposed to be for the Porcupine? - A nutritious blend of formulas only for #cHedgehogs#. Restores Fullness and #cincreases 100 Closeness#.. +5240020 - Caviar - Only eligible for the pet Skunk. \nIncrease 100 Closeness. +5251000 - Wedding Ticket (Cathedral) - Ticket to have a wedding at the Cathedral w/ invitations +5251001 - Wedding Ticket (Chapel) - Ticket to have a wedding at the Vegas Chapel w/ invitations +5251002 - Premium Wedding Ticket (Chapel) - Chapel wedding ticket that includes invitations and a special wedding event. +5251003 - Premium Wedding Ticket (Cathedral) - Cathedral wedding ticket that includes invitations and a special wedding event. +5251004 - Simple Wedding Ticket - A ticket that allows for a simple wedding. #cThe bride and groom may each invite 5 well-wishers and receive a 1 Carat Wedding Ring.# +5251005 - Sweet Wedding Ticket - A ticket that allows for a sweet wedding. #cThe bride and groom may each invite 15 well-wishers, take a Wedding Photo, and receive a 2 Carat Wedding Ring.# +5251006 - Premium Wedding Ticket - A ticket that allows for a lavish, premier wedding. #cThe bride and groom may each invite 30 well-wishers, take a Wedding Photo, and receive a 3 Carat Wedding Ring.# +5251100 - Wedding Invitation Ticket - Ticket that lets you make additional invitation cards.(one-time use) +5281000 - Passed Gas - A special effect that shows Passed Gas. Double-click to use this effect one time only! +5281001 - Floral Scent - A special effect that shows Floral Scent. +5290000 - Guild Forum Emoticon - Angry - An emoticon that can be entered in Guild Forum. +5290001 - Guild Forum Emoticon - Smile - An emoticon that can be entered in Guild Forum. +5290002 - Guild Forum Emoticon - Silent - An emoticon that can be entered in Guild Forum. +5290003 - Guild Forum Emoticon - LOL - An emoticon that can be entered in Guild Forum. +5290004 - Guild Forum Emoticon - Surprise - An emoticon that can be entered in Guild Forum. +5290005 - Guild Forum Emoticon - Cry - An emoticon that can be entered in Guild Forum. +5290006 - Guild Forum Emoticon - Furious - An emoticon that can be entered in Guild Forum. +5290007 - Guild Forum Emoticon - 0_0 - An emoticon that can be entered in Guild Forum. +5300000 - Fungus Scroll - At last, your desire to transform into a mushroom can be fulfilled. Disguise yourself for 10 minutes and surpirse your friends! +5300001 - Oinker Delight - Endulge yourself with this phat pig costume. 10 minutes of gluttony has never been so fun! +5300002 - Zeta Nightmare - Become a terifying Space Monster with this costume. Scare your friends out of this world for 10 minutes! +5330000 - Quick Delivery Ticket - This ticket enables one to send a package, along with an entered message, #cRIGHT THEN AND THERE#. #cDouble-click# it or visit the #cPackage NPC# to use this. +5360000 - 1day 2x Drop Special Coupon - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available for 24 hours upon purchase. +5360001 - 2x Drop Card Type 1 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 07 am to 11 am (Pacific time) #ceveryday#. +5360002 - 2x Drop Card Type 2 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 10 am to 02 pm (Pacific time) #ceveryday#. +5360003 - 2x Drop Card Type 3 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 01 pm to 05 pm (Pacific time) #ceveryday#. +5360004 - 2x Drop Card Type 4 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 04 pm to 08 pm (Pacific time) #ceveryday#. +5360005 - 2x Drop Card Type 5 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 07 pm to 11 pm (Pacific time) #ceveryday#. +5360006 - 2x Drop Card Type 6 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 12 am to 04 am (Pacific time) #ceveryday#. +5360007 - 2x Drop Card Type 7 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 03 am to 07 am (Pacific time) #ceveryday#. +5360008 - 2x Drop Card Type 8 - Everyday - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The Double Drop card is immediately activated upon purchase and the double drop effect will be available from 06 am to 10 am (Pacific time) #ceveryday#. +5360009 - 2X Drop Card - Type 1 - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available for 24 hours upon purchase. +5360010 - 2X Drop Card - Type 1 - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available for 24 hours upon purchase. +5360011 - 2X Drop Card - Type 1 - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after purchase, and the double experience effect will be available for 24 hours upon purchase. +5360012 - 2X Drop Card - Type 1 - This coupon allows users to earn #c2x Drop (double drop rate)# from monsters. The coupon will be activated immediately after purchase, and the double experience effect will be available for 24 hours upon purchase. +5360013 - 2X Drop Card - Type 1 - This coupon allows users to earn #c2x Drop (double drop rate)# from monsters. The coupon will be activated immediately after purchase, and the double experience effect will be available for 24 hours upon purchase. +5360014 - 2x Drop 3 Hours Special Card - This coupon allows users to earn #c2x Drop (double drop)#. The coupon will be activated immediately after purchase, and the double drop effect will be available for 3 hours upon purchase. +5360042 - 4 hour 2 x Drop special coupon - This coupon #cdoubles the amount of mesos and doubles the rate of items# dropped from monsters. The coupon will be immediately activated after purchase and the double drop effect will be available for 4 hour upon purchase. +5370000 - Chalkboard - Any information entered will be featured on the chalkboard. The item can be used anywhere including #cFree Market Entrance# except for #cFree Market#. +5370001 - Chalkboard - Any information entered will be featured on the chalkboard. The item can be used anywhere including #cFree Market Entrance# except for #cFree Market#. +5380000 - The Rock of Evolution - A mysterious rock that enables baby Evolving Pets to grow into full-fledged adult Evolving Pets. +5390000 - Diablo Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a burning background for your avatar. +5390001 - Cloud 9 Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a bright background for your avatar. +5390002 - Loveholic Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a heart background for your avatar. +5400000 - Character Name Change - This scroll will enable you to change your character name to something totally new! Please be aware that the character must be at level 10 or higher to be eligible for the name change and the new name should be an acceptable new name that has passed the name check. The name-change will occur during the following server check, and you will then be restricted from changing names for one month. +5401000 - Character Transfer - This item is used to transfer your character from one game world server to another. Your character must be at least Level 20, and only up to 1,000,000 mesos will be transferred with the character. +5420000 - Amoria Hair Membership Coupon - Use it at #cAmoria Hair Salon# to change your hair to a style of #cyour choice#. +5420001 - NLC Hair Membership Coupon - Use it at #cNLC Hair Salon# to change your hair to a style of #cyour choice#. +5420002 - Henesys Hair Membership Coupon - Use it at #cHenesys Hair Salon# to change your hair to a style of #cyour choice#. +5420003 - Kerning City Hair Membership Coupon - Use it at #cKerning City Hair Salon# to change your hair to a style of #cyour choice#. +5420004 - Orbis Hair Membership Coupon - Use it at #cOrbis Hair Salon# to change your hair to a style of #cyour choice#. +5420005 - Ludibrium Hair Membership Coupon - Use it at #cLudibrium Hair Salon# to change your hair to a style of #cyour choice#. +5420006 - Mu Lung Hair Membership Coupon - Use it at #cMu Lung Hair Salon# to change your hair to a style of #cyour choice#. +5430000 - Extra Character Slot Coupon - Increases the character creation slot by 1. Each account may hold a maximum of 6 character slots per server world. +5431000 - Maple Life (A-Type) - #c*Warning: If you do not have an empty Character slot, it cannot be used.#\r\n\r\nIf you are over #cLevel 30#, a new Level 30 character can be created in your world.You can choose one of the following classes #c(Warrior, Magician, Thief, Bowman and Pirate)# at #c1st Job status#.\r\n\r\nOnly the amount of AP needed for each respective 1st jobs have been allocated and the rest of AP and SP can be distributed to your liking.#cBasic equips and items# needed for travel are also provided. +5432000 - Maple Life (B-Type) - #c*Warning : If all 12 character slots are full, it cannot be used.#\r\n\r\nThis package has the #cMaple Life item plus an Extra Character Slot coupon.#Using this item will automiatically create a new slot.\r\n\r\nIf you are over #cLevel 30#, a new Level 30 character can be created in your world. You can choose one of the following classes #c(Warrior, Magician, Thief, Bowman and Pirate)# at #c1st Job status.#\r\n\r\nOnly the amount of AP needed for each respective 1st jobs have been allocated and the rest of AP and SP can be distributed to your liking.#cBasic equips and items# needed for travel are also provided. +5450000 - Miu Miu the Traveling Merchant - Use this to experience the same effect as entering a general store. Can purchase potions to recover HP & MP, throwing stars, and recharge bullets. Some maps restrict the use of this item, though. +5460000 - Pet Snack - A Pet Snack is secret method of handling multiple pets at once. +5470000 - Store Remote Controller - Can control the Hired Merchant anywhere, as long as the merchant is on the same channel. +5990000 - MTS sale - (no description) +5240021 - Robo Oil - Greasy oil for the Robo +5150032 - CBD Hair Style Coupon (REG) - Use it at #cCBD Hair Salon# to change your hair style #crandomly#. (one-time use) +5150033 - CBD Hair Style Coupon (VIP) - Use it at #cCBD Hair Salon# to change your hair style to a style of #cyour choice#. (one-time use) +5152037 - CBD Face Coupon (REG) - Use it at #cCBD Plastic Surgery# to change your face #crandomly#. (one-time use) +5152038 - CBD Face Coupon (VIP) - Use it at #cCBD Plastic Surgery# to change your face to a style of #cyour choice#. (one-time use) +5152039 - CBD Cosmetic Lens Coupon (REG) - Use it at #cCBD Plastic Surgery# to change your eye color #crandomly#. (one-time use) +5152040 - CBD Cosmetic Lens Coupon (VIP) - Use it at #cCBD Plastic Surgery# to change your eye to a color of #cyour choice#. (one-time use) +5153010 - CBD Skin Coupon - Use it at #cCBD Skin-Care# to change your skin to a color of #cyour choice#. (one-time use) +5151027 - CBD Hair Color Coupon (REG) - Use it at #cCBD Hair Salon# to change your hair color #crandomly#. (one-time use) +5151028 - CBD Hair Color Coupon (VIP) - Use it on #cCBD Hair Salon# to change your hair to a color of #cyour choice#. (one-time use) +5021023 - Stirge Throwing Star - Stirgeman's favorite throwing star! Guaranteed to get you out of a tight spot! +5010059 - Trail of Darkness Effect - Blaze a trail of dark energy--no one can escape your wrath with this effect! +5252000 - Event Ticket (NX) - A ticket that's required to enter the Mini Dungeon during the event period. Without this, you won't be able to fully participate in the event. +5490000 - Gold Master Key - Take this Master Key to open the Gold Gachapon Box and earn a rare item! +5211049 - 7-Eleven 2x EXP Card - 90 Minutes - This coupon allows users to earn #c2x Exp (double experience)#. The coupon will be activated immediately after receiving it, and the double experience effect will be available for 90 minutes. +5010060 - Caroler Effect - Tis' the season to be jolly fa la la la la la la la! Sing to everyone in Maple with the carolers! +5240023 - Bread - A slice of freshly baked bread that can only be eaten by #cWhite Duck#. Recovers "fullness" completely and #cincreases closeness by 100#. +5121019 - Winter Knit Fest - Enter a message of your choice. +5010061 - Ace of Hearts - Show your Valentine's Day spirit with the Ace of Hearts! +5252001 - Ticket to Treasure Dungeon - This ticket allows you to enter the Treasure Dungeon. +5077000 - Triple Megaphone - This allows three lines of text to be heard throughout the world your character is currently in. +5120016 - ???? ???? - ??? +5120017 - ????? ???? - ???? +5120018 - ????? ???? - ??? +5120019 - ???? ???? - ?? +5120020 - ????? ???? - ?? +5120021 - ??? ???? - ??? +5120022 - ??? ???? - ??? +5120023 - ??? ???? - ?? +5120024 - ???? ???? - ?? +5120025 - ???? - ??? ????. +5120026 - ??????? - ???? +5121020 - ?? ? ?? - ?? ?? ???? ????? +20, ????? +30 ? 15?? ??????. ??? ???? ??? ? ??. +5500000 - ??? ???? - ?? ?? ????? ?? ??? ????? ???? ???? ????, ????? #c1?# ???? ??. #c??????? ??? ? ???. ???? 30? ????? ?? ? ??# +5510000 - Wheel of Destiny - This item revives characters in the same map where they have died. However, it cannot be used in some PQs, Event Maps, and Transportation (i.e. ship). +5520000 - Scissors of Karma - This cuts the ties that bind an item to its master, allowing you to trade once. Applicable to only certain items. +5451000 - Remote Gachapon Ticket - This ticket will enable you to use the Gachapon of any town without having to travel to the actual location. +5490001 - Silver Master Key - Take this Master Key to open the Silver Gachapon Box and earn a rare item! +5010064 - Rock Band Effect - (no description) +5010065 - Scoreboard Effect - (no description) +5010066 - Disco Effect - (no description) +5120028 - Raining Cats & Dogs - It's raining cats and dogs!!! Enter a message of your choice. +5021024 - Throwing Eggs Weapon - Can be equipped with a #cthrowing star#. +5570000 - Vicious' Hammer - Temper the equipped item with Vicious' Hammer to increase available upgrade by 1. It can be used maximum 2 times per item. Warning: You cannot use it on the Horntail Necklace. +5010068 - Return of Angel Wing - Who knows? Perhaps you'll flutter away with these wings on your back! +5221001 - Enchanted Scroll - A scroll that has the magic power to release the seal on the Miwok Artifact. The scroll is written in ancient tribal language, so you need NPC Toh Reliseeker's help if you wish to use it. +5010069 - Seraphim's Dark Wings - Who knows? Perhaps you'll flutter away with these wings on your back! +5550000 - Increasing the Pendant Slots:30 Days - This item allows characters to equip 1 more Pendant than is normally allowed for 30 days. #cHowever, characters will not be able to equip more than 1 Special Equipment Item# +5061003 - Item Guard : 365 Days - A guard for sealing an equip item and/or throwing star to prevent #cselling, trading or dropping# of the item. Double-click on the guard, then seal the item into the window that appears. #cThis Item Guard is active for 365 days, after which the item will be automatically released from the seal.# +5222000 - Cash Shop Surprise - Get a random Cash Shop item when you open this box. Test your luck! After purchasing this item, open the box by double-clicking it in the Cash Inventory. Please keep in mind that you'll only be able to open the box in the Cash Inventory. +5240024 - Pinky DrumStick - Pink Bean's favorite Drumstick. Only available for Pink Bean. +5021022 - Plate Throwing Star - Thrown with a #cthrowing star#.Item cannot be removed. +5120027 - Spaceship - Spaceship that is used when rescuing Gaga. +5120030 - Witch Tower - The Witch Tower hints of danger. +5500001 - [7days]Magical Sandglass - Drag and drop this onto a piece of equipment that has a time limit to extend the time limit by #c7days#. #This cannot be used on cash items, and the time limit cannot be extended past 30 days, starting from today.# +5500002 - [20days]Magical Sandglass - Drag and drop this onto a piece of equipment that has a time limit to extend the time limit by #c20days#. #This cannot be used on cash items, and the time limit cannot be extended past 30 days, starting from today.# +5530000 - DS Egg Basket - Double-click on it to exchange it with DS Eggs. +5490002 - Premium Gold Master Key - Take this Premium Master Key to open the Premium Gold Box and earn a rare item! +5490003 - Premium Silver Master Key - Take this Premium Master Key to open the Premium Silver Box and earn a rare item! +5150044 - Special Royal Hair Coupon - Take this coupon to the #cBig Headward of Henesys Hair Salon#, and you'll be able to #ctemporarily#k change your hair. +5010070 - Sprite Wings - A pair of wings that resembles the wings of a forest fairy. +5211052 - 3xExp - Fot Test +5211060 - 2 hour 3 x EXP special coupon - This coupon allows users to earn #c3x Exp (triple experience)#. The coupon will be activated immediately after purchase, and the triple experience effect will be available for 2 hour upon purchase. +5610000 - Vega's Spell(10%) - This winning spell from Vega enables a 30% success rate on a 10% scroll. Please check the scroll description to confirm that Vega's Spell is available for the scroll you choose. +5610001 - Vega's Spell(60%) - This winning spell from Vega enables a 90% success rate on a 60% scroll. Please check the scroll description to confirm that Vega's Spell is available for the scroll you choose. +5590000 - High-Five Stamp - Can equip items that are 5 levels above your current level. +5021026 - Gift Box Throwing Stars - A gift box that can be freely thrown around. Using the #cThrowing Star# will create an orbital effect.\n\nThis item cannot be deleted. +5010073 - Miss Popular - Well, lookie here. Someones certainly become popular with the guys. Turn this effect on and off by assigning it to a shortcut key from the keyboard settings menu. + +5010074 - Mr. Popular - Well, lookie here. Someones certainly become popular with the girls. Turn this effect on and off by assigning it to a shortcut key from the keyboard settings menu. + +5240027 - Golden Drumstick - A drumstick that can be consumed only by #cBaby Tiger#. It recovers hunger and #cincreases Closeness by 100.# +5390005 - Cute Tiger Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a tiger background for your avatar. +5390006 - Roaring Tiger Messenger - Shout to everyone in the world your character is on with this megaphone. Now available with your avatar on the top of everyone's screen! Comes with a screen shaked. +5120034 - Cloudy Meatballs - Meatballs will drop from the sky in the map your character is in for 30 seconds. diff --git a/handbook/Equip/Accessory.txt b/handbook/Equip/Accessory.txt new file mode 100644 index 0000000000..f8ec0478f1 --- /dev/null +++ b/handbook/Equip/Accessory.txt @@ -0,0 +1,497 @@ +1122040 - Sealed Mind of Maple Necklace - A Mind of Maple Necklace that has been sealed up. One more gem, and its mystical powers will begin to be restored. +1122041 - Sealed Mind of Maple Necklace - A Mind of Maple Necklace that has been sealed up. One more gem, and its mystical powers will begin to be restored. +1122042 - Sealed Mind of Maple Necklace - A Mind of Maple Necklace that has been sealed up. One more gem, and its mystical powers will begin to be restored. +1122043 - Sealed Mind of Maple Necklace - A Mind of Maple Necklace that has been sealed up. One more gem, and its mystical powers will begin to be restored. +1122044 - Sealed Mind of Maple Necklace - A Mind of Maple Necklace that has been sealed up. One more gem, and its mystical powers will begin to be restored. +1122045 - Sealed Mind of Maple Necklace - A Mind of Maple Necklace that has been sealed up. One more gem, and its mystical powers will begin to be restored. +1122046 - Restoring Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122047 - Restoring Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122048 - Restoring Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122049 - Restoring Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122050 - Restoring Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122051 - Restoring Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122052 - Awakening Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122053 - Awakening Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122054 - Awakening Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122055 - Awakening Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122056 - Awakening Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1122057 - Awakening Mind of Maple Necklace - A Mind of Maple Necklace that is beginning to be restored. One more gem, and its mystical powers will be amplified and awakened into a power on another level. +1010000 - Long Brown Beard - (no description) +1010001 - Goatee - (no description) +1010002 - Ninja Mask for Men - (no description) +1010003 - 5 O'Clock Shadow - (no description) +1010004 - General's Mustache (1) - (no description) +1010005 - General's Mustache (2) - (no description) +1010006 - Yakuza Scar - (no description) +1011000 - Ninja Mask for Women - (no description) +1011001 - SF Ninja Mask - (no description) +1011002 - Heart - (no description) +1011003 - Freckles - (no description) +1012000 - Battle Scar - (no description) +1012001 - Bindi - (no description) +1012002 - Leather Mask - (no description) +1012003 - Blush - (no description) +1012004 - Disguise - (no description) +1012005 - Bruise - (no description) +1012006 - Rose - (no description) +1012007 - Santa Beard - (no description) +1012008 - Censor - (no description) +1012009 - Kiss Mark - (no description) +1012010 - Hinomaru - (no description) +1012011 - Rudolph's Red Nose - (no description) +1012012 - Rudolph's Red Nose - (no description) +1012013 - Rudolph's Red Nose - (no description) +1012014 - Rudolph's Red Nose - (no description) +1012015 - Rudolph's Red Nose - (no description) +1012016 - Rudolph's Red Nose - (no description) +1012017 - Rudolph's Red Nose - (no description) +1012018 - Rudolph's Red Nose - (no description) +1012019 - Rudolph's Red Nose - (no description) +1012020 - Rudolph's Red Nose - (no description) +1012021 - White Kabuki Mask - (no description) +1012022 - Red Kabuki Mask - (no description) +1012023 - Yellow Kabuki Mask - (no description) +1012024 - Gentleman's Mustache - (no description) +1012025 - War Paint - (no description) +1012026 - Guan Yu Beard - (no description) +1012027 - Bandage Strip - (no description) +1012028 - Blush - (no description) +1012029 - Jester Mask - (no description) +1012030 - Eye Scar - (no description) +1012031 - Leaf - (no description) +1012032 - White Bread - (no description) +1012033 - England Face Painting - (no description) +1012034 - Tri-color Paint (France) - (no description) +1012035 - Brazillian Paint (Brazil) - (no description) +1012036 - Bundes Paint (Germany) - (no description) +1012037 - Armillary Shield Paint (Portugal) - (no description) +1012038 - Rising Sun Paint (Japan) - (no description) +1012039 - Taegeuk Paint (Korea) - (no description) +1012040 - Heart Face Painting - (no description) +1012041 - Star Spangled Paint (USA) - (no description) +1012042 - Aztec Paint (Mexico) - (no description) +1012043 - Australia Face Painting - (no description) +1012044 - Mummy Mask - (no description) +1012047 - Fu Manchu - (no description) +1012048 - Blackjack Scar - (no description) +1012049 - Ogre Mask - (no description) +1012050 - Maple-Stein - (no description) +1012051 - Dark Jester - (no description) +1012052 - Tongue Twister Scroll - (no description) +1012053 - Unmanaged Anger - (no description) +1012054 - Purple Rage - (no description) +1012055 - Allergic Reaction - (no description) +1012056 - Doggy Mouth - (no description) +1012058 - Tree Branch Nose - (no description) +1012059 - Tree Branch Nose - (no description) +1012060 - Tree Branch Nose - (no description) +1012061 - Tree Branch Nose - (no description) +1012062 - Mild Pink Lipstick - (no description) +1012063 - Kitty Paint - (no description) +1012070 - Strawberry Icecream Bar - (no description) +1012071 - Chocolate Icecream Bar - (no description) +1012072 - Melon Icecream Bar - (no description) +1012073 - Watermelon Icecream Bar - (no description) +1012074 - Neh neh neh boo boo - (no description) +1012075 - Cold Sweat - (no description) +1012076 - Smiling Mask - (no description) +1012077 - Crying Mask - (no description) +1012078 - Angry Mask - (no description) +1012079 - Sad Mask - (no description) +1012080 - Fat Lips - (no description) +1012082 - Ice Cold Red - (no description) +1012083 - Dollish Pink - (no description) +1012084 - White Mouse Kit - (no description) +1012085 - Cherry Bubblegum - (no description) +1012086 - White Mouse Kit - (no description) +1012087 - White Mouse Kit - (no description) +1012088 - White Mouse Kit - (no description) +1012090 - Facial Powder - (no description) +1012096 - Apple Bubble Gum - (no description) +1012097 - Purple Noisemaker - (no description) +1012098 - Maple Leaf - (no description) +1012099 - Facial Powder(blue) - (no description) +1012100 - Facial Powder(red) - (no description) +1012101 - Maple Leaf - (no description) +1012102 - Maple Leaf - (no description) +1012103 - Maple Leaf - (no description) +1012104 - Transparent Face Accessory - (no description) +1012105 - Super Sucker - (no description) +1012106 - Rat Mouth - (no description) +1012107 - Branch Nose - (no description) +1012108 - Smiling Mask - (no description) +1012109 - Crying Mask - (no description) +1012110 - Angry Mask - (no description) +1012111 - Sad Mask - (no description) +1012112 - Bauhinia Paint (Hong Kong) - (no description) +1012113 - ROC Paint (Taiwan) - (no description) +1012114 - 5-Starred Red Paint (China) - (no description) +1012121 - Coat of Arms Paint (Spain) - (no description) +1012122 - Gold Nordic Paint (Sweden) - (no description) +1012123 - Holland Paint (Netherlands) - (no description) +1012124 - Union Paint (UK) - (no description) +1012125 - Chakra Paint (Thailand) - (no description) +1012126 - Yellow Star Paint (Vietnam) - (no description) +1012127 - Crescent Paint (Singapore) - (no description) +1012128 - Jalur Gemilang Paint (Malaysia) - (no description) +1012129 - Maple Leaf Paint (Canada) - (no description) +1020000 - Aqua Toy Shades - (no description) +1021000 - Pink Toy Shades - (no description) +1022000 - Orange Shades - (no description) +1022001 - Blue Shades - (no description) +1022002 - Yellow Shades - (no description) +1022003 - Green Shades - (no description) +1022004 - Black Sunglasses - (no description) +1022005 - Red Hard-Rimmed Glasses - (no description) +1022006 - Blue Hard-Rimmed Glasses - (no description) +1022007 - Green Hard-Rimmed Glasses - (no description) +1022008 - Orange Hard-Rimmed Glasses - (no description) +1022009 - Dark Shades - (no description) +1022010 - Blue & Red Eye Guard - (no description) +1022011 - Red Eye Guard - (no description) +1022012 - Blue Eye Guard - (no description) +1022013 - Black Eye Guard - (no description) +1022014 - Brown Aviator Shades - (no description) +1022015 - Black Aviator Shades - (no description) +1022016 - Blue Aviator Shades - (no description) +1022017 - Purple Aviator Shades - (no description) +1022018 - Classic Masquerade Mask - (no description) +1022019 - Old-School Glasses - (no description) +1022020 - Metal Shades - (no description) +1022021 - Red Head-Spinning Glasses - (no description) +1022022 - Blue Head-Spinning Glasses - (no description) +1022023 - Crested Eye Patch - (no description) +1022024 - Skull Patch - (no description) +1022025 - Red Hearted Eye Patch - (no description) +1022026 - Purple Starred Eye Patch - (no description) +1022027 - Medical Eye Patch - (no description) +1022028 - Spinning Groucho - (no description) +1022029 - Spinning Piglet - (no description) +1022030 - Hot Teacher Glasses - (no description) +1022031 - White Toy Shades - (no description) +1022032 - Yellow Toy Shades - (no description) +1022033 - Politician Glasses - (no description) +1022034 - Bizarre Monocle - (no description) +1022035 - Orange Sports Goggle - (no description) +1022036 - Green Sports Goggle - (no description) +1022037 - Frameless Glasses - (no description) +1022038 - Purple Round Shades - (no description) +1022039 - Orange Round Shades - (no description) +1022040 - Lead Monocle - (no description) +1022041 - Cyclist Shades - (no description) +1022042 - Scouter - (no description) +1022043 - Head Bandage - (no description) +1022044 - Nerdy Glasses - (no description) +1022045 - Red Bushido Bandana - (no description) +1022046 - Butterfly Ball Mask - (no description) +1022047 - Owl Ball Mask - (no description) +1022049 - Green Hard-rimmed Glasses - (no description) +1022050 - Vintage Glasses - (no description) +1022051 - Red Half-Rimless Glasses - (no description) +1022052 - Future Vision Shades - (no description) +1022053 - Futuristic Shades - (no description) +1022054 - Round Shield Shades - (no description) +1022055 - Pink Sunglasses - (no description) +1022056 - Pink Aviator Sunglasses - (no description) +1022057 - Pop-Eye - (no description) +1022058 - Raccoon Mask - (no description) +1022059 - Black Shades - (no description) +1022060 - White Raccoon Mask - (no description) +1022061 - Redbeard's Pirate Eye Patch - (no description) +1022062 - Black Skull Eye Patch - (no description) +1022063 - Flat Mini Glasses - (no description) +1022064 - Big Red Glasses - (no description) +1022066 - Star Spectacles - (no description) +1032000 - Weighted Earrings - (no description) +1032001 - Single Earring - (no description) +1032002 - Sapphire Earrings - (no description) +1032003 - Amethyst Earrings - (no description) +1032004 - Gold Earrings - (no description) +1032005 - Red Cross Earrings - (no description) +1032006 - Lightning Earrings - (no description) +1032007 - Emerald Earrings - (no description) +1032008 - Cat's Eye - (no description) +1032009 - Yellow Square - (no description) +1032010 - Star Earrings - (no description) +1032011 - Blue Moon - (no description) +1032012 - Skull Earrings - (no description) +1032013 - Red-Hearted Earrings - (no description) +1032014 - Pink-Flowered Earrings - (no description) +1032015 - Metal Silver Earrings - (no description) +1032016 - Metal Heart Earrings - (no description) +1032017 - Rose Earrings - (no description) +1032018 - Pansy Earrings - (no description) +1032019 - Crystal Flower Earrings - (no description) +1032020 - Gold Drop Earrings - (no description) +1032021 - Holy Cross Earrings - (no description) +1032022 - Half Earrings - (no description) +1032023 - Strawberry Earrings - (no description) +1032024 - Transparent Earrings - Use these Earrings if you want to make your Earrings transparent while still using all of the stats your Earrings possess. +1032025 - Leaf Earrings - (no description) +1032026 - Gold Emerald Earrings - (no description) +1032027 - Black Emerald Earrings - (no description) +1032028 - Red Emerald Earrings - (no description) +1032029 - Silver Earrings - (no description) +1032030 - Sword Earrings - (no description) +1032031 - Timeless Earrings - (no description) +1032032 - Fallen Leaf Earrings - (no description) +1032033 - Protector Rock - (no description) +1032034 - Coke Earring - (no description) +1032036 - Beaded Cross Earring - (no description) +1032038 - Snow Earring - (no description) +1032039 - Eclipse Earrings - (no description) +1032040 - Maple Earring - (no description) +1032041 - Maple Earring - (no description) +1032042 - Maple Earring - (no description) +1032043 - Cecelia's Earrings - (no description) +1032044 - Moonstar Earrings - (no description) +1032045 - Celestial Earrings - (no description) +1032046 - Spider Venom Earrings - (no description) +1032047 - Coke Earring - (no description) +1032048 - Crystal Leaf Earrings - Once worn proudly by Masterian magicians, these shining earrings are infused with magical qualities. +1032049 - Dark Shards - This unique item combines Power Crystal and Black Crystals for increased resistance to physical and magical forces. +1032050 - Snail's Eye - (no description) +1032051 - Diamond Earrings - (no description) +1032052 - Slime Earrings - (no description) +1032053 - Clover Earrings - (no description) +1032054 - Rainbow Earrings - (no description) +1122000 - Horntail Necklace - (no description) +1122001 - Bow-tie(Green) - (no description) +1022071 - Red Shutter Shades - (no description) +1122002 - Bow-tie (Red) - (no description) +1122003 - Bow-tie (Yellow) - (no description) +1122004 - Bow-tie (Pink) - (no description) +1122005 - Bow-tie (Black) - (no description) +1122006 - Bow-tie (Blue) - (no description) +1122007 - Spiegelmann's Necklace - (no description) +1122010 - Horus' Eye - (no description) +1122014 - Silver Deputy Star - A badge of honor given by Lita Lawless for vanquishing monsters in defense of NLC. You're part of the law now! +1022069 - Orange Shutter Shades - (no description) +1012134 - Tear Drop Face Tattoo - Express your soft side with this teary-eyed Tattoo! +1032060 - Altair Earrings - (no description) +1022073 - Broken Glasses - (no description) +1032061 - Glittering Altaire Earrings - (no description) +1012057 - Transparent Face Accessory - (no description) +1122018 - Warm Muffler - (no description) +1022074 - Gaga Glasses - (no description) +1122039 - Mind of Maple Necklace - A Mind of Maple Necklace that brings luck and hope to anyone who wears it. +1022072 - Yellow Shutter Shades - (no description) +1022070 - Green Shutter Shades - (no description) +1012081 - MV Mask - (no description) +1012137 - Star Face Painting - (no description) +1122059 - Mark of Naricain - A token given to those who have found favor with the demon Naricain. It may be wise to hold onto this... +1142000 - Diligent Explorer Medal - (no description) +1142001 - PQ Mania Medal - (no description) +1142002 - Quest Specialist Medal - (no description) +1142003 - Celebrity Medal - (no description) +1142004 - Veteran Hunter Medal - (no description) +1142005 - Legendary Hunter Medal - (no description) +1142006 - Maple Idol Medal - (no description) +1142007 - Horned Tail Slayer Medal - (no description) +1142008 - Pink Bean Slayer Medal - (no description) +1142009 - Gallant Warrior Medal - (no description) +1142010 - Wiseman Medal - (no description) +1142011 - Lord Sniper Medal - (no description) +1142012 - Legendary Thief Medal - (no description) +1142013 - King Pirate Medal - (no description) +1142014 - Henesys Donor Medal - (no description) +1142015 - Ellinia Donor Medal - (no description) +1142016 - Perion Donor Medal - (no description) +1142017 - Kerning City Donor Medal - (no description) +1142018 - Sleepywood Donor Medal - (no description) +1142019 - The Nautilus Donor Medal - (no description) +1142020 - El Nath Donor Medal - (no description) +1142021 - Aquarium Donor Medal - (no description) +1142022 - Ludibrium Donor Medal - (no description) +1142023 - Omega Sector Donor Medal - (no description) +1142024 - Korean Folk Town Donor Medal - (no description) +1142025 - Leafre Donor Medal - (no description) +1142026 - Mu Lung Donor Medal - (no description) +1142027 - Herb Town Donor Medal - (no description) +1142028 - Ariant Donor Medal - (no description) +1142029 - Magatia Donor Medal - (no description) +1142030 - Lith Harbor Donor Medal - (no description) +1142031 - Orbis Donor Medal - (no description) +1142032 - The Curse Breaker Medal - (no description) +1142033 - Mano Vanquisher Medal - (no description) +1142034 - Stumpy Vanquisher Medal - (no description) +1142035 - Deo Vanquisher Medal - (no description) +1142036 - King Slime Vanquisher Medal - (no description) +1142037 - Giant Centipede Vanquisher Medal - (no description) +1142038 - Faust Vanquisher Medal - (no description) +1142039 - King Clang Vanquisher Medal - (no description) +1142040 - Mushmom Vanquisher Medal - (no description) +1142041 - Alishar Vanquisher Medal - (no description) +1142042 - Timer Vanquisher Medal - (no description) +1142043 - Dyle Vanquisher Medal - (no description) +1142044 - Papa Pixie Vanquisher Medal - (no description) +1142045 - Zombie Mushmom Vanquisher Medal - (no description) +1142046 - Zeno Vanquisher Medal - (no description) +1142047 - Lord Pirate Vanquisher Medal - (no description) +1142048 - Nine-Tailed Fox Vanquisher Medal - (no description) +1142049 - Tae Roon Vanquisher Medal - (no description) +1142050 - Poison Golem Vanquisher Medal - (no description) +1142051 - King Sage Cat Vanquisher Medal - (no description) +1142052 - Jr. Balrog Vanquisher Medal - (no description) +1142053 - Eliza Vanquisher Medal - (no description) +1142054 - Frankenroid Vanquisher Medal - (no description) +1142055 - Chimera Vanquisher Medal - (no description) +1142056 - Snack Bar Vanquisher Medal - (no description) +1142057 - Snowman Vanquisher Medal - (no description) +1142058 - Blue Mushmom Vanquisher Medal - (no description) +1142059 - Crimson Balrog Vanquisher Medal - (no description) +1142060 - Manon Vanquisher Medal - (no description) +1142061 - Griffey Vanquisher Medal - (no description) +1142062 - Leviathan Vanquisher Medal - (no description) +1142063 - Papulatus Vanquisher Medal - (no description) +1142064 - Mu Lung Dojo Vanquisher Medal - (no description) +1142065 - Noblesse Medal - (no description) +1142066 - Training Knight Medal - (no description) +1142067 - Official Knight Medal - (no description) +1142068 - Advanced Knight Medal - (no description) +1142069 - Captain Knight Medal - (no description) +1142070 - Lie Detector Medal - (no description) +1142071 - Use Clean Language Medal - (no description) +1142072 - Ask Me Anything Medal - (no description) +1142073 - Be My Friend Medal - (no description) +1142074 - Leader of a Big Family Medal - (no description) +1142075 - Patriot Medal - (no description) +1142076 - Honorary Meso Ranger - (no description) +1032055 - Agent C's Old Receiver - (no description) +1032056 - Agent C's Old Receiver - (no description) +1032057 - Agent C's Old Receiver - (no description) +1032058 - Agent C's Titanium Receiver - (no description) +1122011 - Locked Timeless Pendant - (no description) +1122012 - Timeless Pendant - (no description) +1022081 - Cracked Glasses - (no description) +1032070 - Shield Earrings - (no description) +1032071 - Altair Earrings - (no description) +1032072 - Shiny Altair Earrings - (no description) +1022079 - Clear Glasses - (no description) +1022075 - Twinkling Eyes - (no description) +1022082 - Spectrum Goggles - Strange eyewear that allows vision in multiple dimensions. A short inscription states: "Who says the goggles do nothing?" +1012147 - Immortal Mask - (no description) +1012132 - Chicky Face Decoration - (no description) +1022068 - White Shade - (no description) +1032059 - Coca-Cola Zero Earrings - (no description) +1122013 - Gordon's Magic Iron - (no description) +1122015 - Maple Scarf - (no description) +1122017 - Pendant of the Spirit - EXP will increase as soon as this item is equipped, and the effects will only get stronger with time.\n #c1hr: 10% extra EXP \n 2hr: 20% extra EXP \n More than 2 hr: 30% extra EXP# +1132000 - White Belt - (no description) +1132001 - Yellow Belt - (no description) +1132002 - Blue Belt - (no description) +1132003 - Red Belt - (no description) +1132004 - Black Belt - (no description) +1022083 - Hitman Sunglasses - (no description) +1022084 - Eye Mask (Red) - (no description) +1022087 - Eye Mask (Green) - (no description) +1142077 - Absolute Victory Carnivalian Medal - (no description) +1142078 - Gifted Carnivalian Medal - (no description) +1122058 - Spiegelmann's Necklace of Chaos - (no description) +1022085 - Eye Mask (Pink) - (no description) +1022086 - Eye Mask (Blue) - (no description) +1142080 - Fervent Carnivalian Medal - (no description) +1032073 - Wind Bell Earrings - (no description) +1022088 - Archeologist Glasses - A pair of Archeologist Glasses received for participating in the Artifact Hunt. +1022089 - Archeologist Glasses - A pair of Archeologist Glasses received for finishing Top 10 in the Artifact Hunt. +1132005 - White Cookie Belt - (no description) +1132006 - Yellow Cookie Belt - (no description) +1132007 - Blue Cookie Belt - (no description) +1132008 - Red Cookie Belt - (no description) +1132009 - Violet Cookie Belt - (no description) +1132010 - Golden Pig Belt - (no description) +1132011 - Lupin Pig Belt - (no description) +1140000 - 2010 Winter King Medal - (no description) +1141000 - 2010 Winter Queen Medal - (no description) +1142079 - Tristan's Successor Medal - (no description) +1142081 - Outstanding Citizen Medal - (no description) +1142082 - Lovely Pet Owner Medal - (no description) +1142083 - Monster Expert Medal - (no description) +1142084 - Persevering Challenger Medal - (no description) +1142085 - 1-Day Dreamer Medal - (no description) +1142086 - 2-Day Dreamer Medal - (no description) +1142087 - 3-Day Dreamer Medal - (no description) +1142088 - 4-Day Dreamer Medal - (no description) +1142089 - 5-Day Dreamer Medal - (no description) +1142090 - 6-Day Dreamer Medal - (no description) +1142091 - 7-Day Dreamer Medal - (no description) +1142092 - 8-Day Dreamer Medal - (no description) +1142093 - 9-Day Dreamer Medal - (no description) +1142094 - 10-Day Dreamer Medal - (no description) +1142095 - 11-Day Dreamer Medal - (no description) +1142096 - 12-Day Dreamer Medal - (no description) +1142097 - 13-Day Dreamer Medal - (no description) +1142098 - 14-Day Dreamer Medal - (no description) +1142099 - 15-Day Dreamer Medal - (no description) +1142100 - Maple Lover Medal - (no description) +1142101 - Maple Lover Medal - (no description) +1142107 - Beginner Adventurer Medal - (no description) +1142108 - Junior Adventurer Medal - (no description) +1142109 - Veteran Adventurer Medal - (no description) +1142110 - Master Adventurer Medal - (no description) +1142111 - The One Who's Touched the Sky Medal - (no description) +1142112 - Victoria Explorer Medal - (no description) +1142113 - El Nath Explorer Medal - (no description) +1142114 - Ludus Lake Explorer Medal - (no description) +1142115 - Undersea Explorer Medal - (no description) +1142116 - Mu Lung Explorer Medal - (no description) +1142117 - Nihal Desert Explorer Medal - (no description) +1142118 - Minar Forest Explorer Medal - (no description) +1142119 - Ossyria Explorer Medal - (no description) +1142120 - Maple Explorer Medal - (no description) +1142123 - The 2nd Honorable Mesoranger Medal - (no description) +1142124 - Artifact Hunt Top 10 Medal - (no description) +1142125 - Mystical Artifact Discoverer Medal - (no description) +1142127 - Beginner Explorer - (no description) +1142128 - Sleepywood Explorer - (no description) +1142129 - Awakened Aran - (no description) +1142130 - Aran in Memory - (no description) +1142131 - Aran in Misery - (no description) +1142132 - Aran in Hope - (no description) +1142133 - Aran the Hero - (no description) +1012139 - ?? ??? - (no description) +1012140 - ?? ??? - (no description) +1012141 - ??? ??? - (no description) +1012146 - ??? ? - (no description) +1132014 - Witch's Crimson Belt - (no description) +1132015 - Witch's Ocean Blue Belt - (no description) +1132016 - Witch's Deep Purple Belt - (no description) +1012166 - Villian Mask - (no description) +1022095 - I Like Money - (no description) +1132012 - Pharaoh Belt - (no description) +1132013 - The Immortal Pharaoh Belt - (no description) +1140001 - 2010 Winter Adventurer Medal - (no description) +1140002 - 2010 Winter Adventurer Medal - (no description) +1141001 - 2010 Winter Adventurer Medal - (no description) +1141002 - 2010 Winter Adventurer Medal - (no description) +1142122 - Dynamic Hair Medal - (no description) +1142126 - Maple School Medal - (no description) +1142134 - Combo Maniac Medal - (no description) +1142135 - Combo Master Medal - (no description) +1142136 - Combo King Medal - (no description) +1142137 - Spirit Diviner Medal - (no description) +1142138 - Soul Conjurer Medal - (no description) +1142139 - Soul Guardian Medal - (no description) +1142140 - Saint Exorcist Medal - (no description) +1142141 - Honorary Employee Medal - (no description) +1142142 - Protector of Pharaoh Medal - (no description) +1032074 - Heart Rainbow Earrings - (no description) +1022096 - Fashionista Sunglasses - (no description) +1012165 - Clown Nose - (no description) +1012181 - Green Mardi Gras Mask - (no description) +1012182 - Purple Mardi Gras Mask - (no description) +1012183 - Red Mardi Gras Mask - (no description) +1012184 - Royal Green Mardi Gras Mask - (no description) +1012185 - Royal Purple Mardi Gras Mask - (no description) +1012186 - Royal Red Mardi Gras Mask - (no description) +1032063 - Bluetooth Headset - (no description) +1032075 - Free Spirit Piercing - (no description) +1142152 - Well-Behaved Child - (no description) +1142153 - Perion Guard - (no description) +1142154 - Kerning City Honorary Citizen - (no description) +1142155 - Secret Organization Temporary Member - (no description) +1012180 - Chocolate Heart - (no description) +1022102 - LED Sunglasses - (no description) +1022065 - Alphabet Glasses - (no description) +1022103 - Archeologist Glasses - A pair of Archeologist Glasses received for participating in the Artifact Hunt. +1022104 - 3D Glasses - (no description) diff --git a/handbook/Equip/Cap.txt b/handbook/Equip/Cap.txt new file mode 100644 index 0000000000..fe0beb727d --- /dev/null +++ b/handbook/Equip/Cap.txt @@ -0,0 +1,915 @@ +1002859 - MV's Hat (DEX) - (no description) +1002860 - MV's Hat (INT) - (no description) +1002861 - MV's Hat (LUK) - (no description) +1002851 - Golden Rooster Comb - (no description) +1002821 - Violet Heart Beanie - (no description) +1000000 - Blue Beanie - (no description) +1000001 - Fine Black Hanbok Hat - (no description) +1000002 - Fine Blue Hanbok Hat - (no description) +1000003 - Scream Mask - (no description) +1000004 - Old School Uniform Hat - (no description) +1000005 - Men's Ninja Hat - (no description) +1000006 - Samurai Hair-do - (no description) +1000007 - Hat of Death - (no description) +1000008 - Detective Hat - (no description) +1000009 - Mesoranger Red Helmet - (no description) +1000010 - Mesoranger Blue Helmet - (no description) +1000011 - Mesoranger Green Helmet - (no description) +1000012 - Mesoranger Black Helmet - (no description) +1000013 - Yellow Crown - (no description) +1000014 - Green Crown - (no description) +1000015 - Blue Crown - (no description) +1000016 - Red Crown - (no description) +1000017 - Van Hat - (no description) +1000018 - Kuniragi Hat - (no description) +1000019 - Goya Hat 3 - (no description) +1000020 - Chief Hat - (no description) +1000021 - General's Wig - (no description) +1000022 - General's Wig - (no description) +1000023 - Race Ace Cap - (no description) +1000025 - Pilgrim Hat - (no description) +1000026 - Santa Boy Hat - (no description) +1000027 - Lunar Celebration Cap - (no description) +1000029 - Wedding veil - (no description) +1000030 - Sachiel Wig (M) - (no description) +1000031 - Veamoth Wig (M) - (no description) +1000032 - Janus Wig (M) - (no description) +1000035 - White Floral Hat - (no description) +1001000 - Orange Beanie - (no description) +1001001 - Hanbok Jobawi - (no description) +1001002 - Witch Hat - (no description) +1001003 - Pink Nurse Hat - (no description) +1001004 - White Nurse Hat - (no description) +1001005 - Women's Ninja Hat - (no description) +1001006 - SF Ninja Hat - (no description) +1001007 - Female Wig - (no description) +1001008 - A Ladylike Hat - (no description) +1001009 - Ribbon - (no description) +1001010 - Teddy Bear Hat - (no description) +1001011 - Strawberry Headgear - (no description) +1001012 - Tiara - (no description) +1001013 - Beret - (no description) +1001014 - Mesoranger Pink Helmet - (no description) +1001015 - Mesoranger Yellow Helmet - (no description) +1001016 - Mesoranger Black Helmet - (no description) +1001017 - Princess Tiara - (no description) +1001018 - Lady Blue - (no description) +1001019 - Lady Pink - (no description) +1001020 - Lady Yellow - (no description) +1001021 - The Gabera Hat - (no description) +1001022 - Van Hat w/ Heart - (no description) +1001023 - Picnic Hat - (no description) +1001024 - Diamond Tiara - (no description) +1001025 - Ruby Tiara - (no description) +1001026 - Red-Feathered Indian Bandana - (no description) +1001027 - Blue-Feathered Indian Bandana - (no description) +1001028 - Jami Wig - (no description) +1001029 - Yellow Bride's Veil - Flowing veil that brides wear on their Wedding Day. +1001030 - Diao Chan Headpiece - (no description) +1001031 - White Cat Ears - (no description) +1001032 - Black Cat Ears - (no description) +1001033 - Maid Hat - (no description) +1001035 - Maplehontas - (no description) +1001036 - Santa Girl Hat - (no description) +1001037 - Leopard Print Hat - (no description) +1001038 - Korean Dress Wig - (no description) +1001039 - Lunar Celebration Ornament - (no description) +1001042 - Purple Bride's Veil - Flowing veil that brides wear on their Wedding Day. +1001043 - Royal Tiara - Hand crafted Tiara that brides wear on their Wedding Day +1001044 - Green Bride's Veil - Flowing veil that brides wear on their Wedding Day. +1001045 - Sachiel Wig (F) - (no description) +1001046 - Veamoth Wig (F) - (no description) +1001047 - Janus Wig (F) - (no description) +1001048 - Gothic Mini Hat - (no description) +1001049 - Gothic Headband - (no description) +1002000 - Brown Flight Headgear - (no description) +1002001 - Metal Gear - (no description) +1002002 - Metal Koif - (no description) +1002003 - Steel Helmet - (no description) +1002004 - Great Brown Helmet - (no description) +1002005 - Iron Burgernet Helm - (no description) +1002006 - Bone Helm - (no description) +1002007 - Steel Full Helm - (no description) +1002008 - Brown Skullcap - (no description) +1002009 - Steel Football Helmet - (no description) +1002010 - Brown Winter Hat - (no description) +1002011 - Iron Viking Helm - (no description) +1002012 - Red Baseball Cap - (no description) +1002013 - Golden Pride - (no description) +1002014 - Red Headband - (no description) +1002015 - Red Swimming Goggle - (no description) +1002016 - Green Wizardry Hat - (no description) +1002017 - Brown Apprentice Hat - (no description) +1002018 - Green Camping Hat - (no description) +1002019 - White Bandana - (no description) +1002020 - Red Starry Bandana - (no description) +1002021 - Steel Nordic Helm - (no description) +1002022 - Old Steel Nordic Helm - (no description) +1002023 - Jousting Helmet - (no description) +1002024 - Emerald Dome - (no description) +1002025 - Red Duke - (no description) +1002026 - Brown Bamboo Hat - (no description) +1002027 - Steel Sharp Helm - (no description) +1002028 - Silver Crusader Helm - (no description) +1002029 - Red Oriental Helmet - (no description) +1002030 - Silver Planet - (no description) +1002031 - Cat Hat - (no description) +1002032 - Puffy Brown Hat - (no description) +1002033 - Old Wisconsin - (no description) +1002034 - Blue Jester - (no description) +1002035 - Pink Jester - (no description) +1002036 - Green Jester - (no description) +1002037 - Black Jester - (no description) +1002038 - Brown Jester - (no description) +1002039 - Bronze Helmet - (no description) +1002040 - Mithril Helmet - (no description) +1002041 - Yellow Metal Gear - (no description) +1002042 - Blue Metal Gear - (no description) +1002043 - Bronze Koif - (no description) +1002044 - Mithril Koif - (no description) +1002045 - Blue Bone Helm - (no description) +1002046 - Red Bone Helm - (no description) +1002047 - Great Red Helmet - (no description) +1002048 - Great Blue Helmet - (no description) +1002049 - Gold Burgernet Helm - (no description) +1002050 - Orihalcon Burgernet Helm - (no description) +1002051 - Bronze Full Helm - (no description) +1002052 - Mithril Full Helm - (no description) +1002053 - Green Skullcap - (no description) +1002054 - Red Skullcap - (no description) +1002055 - Bronze Football Helmet - (no description) +1002056 - Mithril Football Helmet - (no description) +1002057 - Green Winter Hat - (no description) +1002058 - Mithril Viking Helm - (no description) +1002059 - Bronze Viking Helm - (no description) +1002060 - Black Baseball Cap - (no description) +1002061 - Yellow Baseball Cap - (no description) +1002062 - Brown Baseball Cap - (no description) +1002063 - Blue Baseball Cap - (no description) +1002064 - Bronze Pride - (no description) +1002065 - Steel Pride - (no description) +1002066 - Black Headband - (no description) +1002067 - Green Headband - (no description) +1002068 - Yellow Headband - (no description) +1002069 - Blue Headband - (no description) +1002070 - Green Swimming Goggle - (no description) +1002071 - Blue Swimming Goggle - (no description) +1002072 - Blue Wizardry Hat - (no description) +1002073 - Red Wizardry Hat - (no description) +1002074 - Blue Apprentice Hat - (no description) +1002075 - Red Apprentice Hat - (no description) +1002076 - Red Flight Headgear - (no description) +1002077 - Blue Flight Headgear - (no description) +1002078 - Sky Blue Camping Hat - (no description) +1002079 - Pink Camping Hat - (no description) +1002080 - Red Bandana - (no description) +1002081 - Blue Bandana - (no description) +1002082 - Yellow Bandana - (no description) +1002083 - Black Bandana - (no description) +1002084 - Blue Oriental Helmet - (no description) +1002085 - Mithril Crusader Helm - (no description) +1002086 - Bronze Crusader Helm - (no description) +1002087 - Mithril Sharp Helm - (no description) +1002088 - Gold Sharp Helm - (no description) +1002089 - Green Bamboo Hat - (no description) +1002090 - Blue Bamboo Hat - (no description) +1002091 - Dark Dome - (no description) +1002092 - Yellow Duke - (no description) +1002093 - Blue Duke - (no description) +1002094 - Bronze Planet - (no description) +1002095 - Mithril Planet - (no description) +1002096 - Sky Blue Starry Bandana - (no description) +1002097 - Yellow Starry Bandana - (no description) +1002098 - Gold Nordic Helm - (no description) +1002099 - Mithril Nordic Helm - (no description) +1002100 - Old Bronze Nordic Helm - (no description) +1002101 - Old Mithril Nordic Helm - (no description) +1002102 - Blue Moon Conehat - (no description) +1002103 - Pink Moon Conehat - (no description) +1002104 - Green Moon Conehat - (no description) +1002105 - Dark Moon Conehat - (no description) +1002106 - Brown Moon Conehat - (no description) +1002107 - Red Thief Hood - (no description) +1002108 - Blue Thief Hood - (no description) +1002109 - Green Thief Hood - (no description) +1002110 - Black Thief Hood - (no description) +1002111 - Yellow Thief Hood - (no description) +1002112 - Red Feather Hat - (no description) +1002113 - Blue Feather Hat - (no description) +1002114 - Green Feather Hat - (no description) +1002115 - Black Feather Hat - (no description) +1002116 - Brown Feather Hat - (no description) +1002117 - Red Robin Hat - (no description) +1002118 - Blue Robin Hat - (no description) +1002119 - Green Robin Hat - (no description) +1002120 - Black Robin Hat - (no description) +1002121 - Brown Robin Hat - (no description) +1002122 - Red Ghetto Beanie - (no description) +1002123 - Blue Ghetto Beanie - (no description) +1002124 - Brown Ghetto Beanie - (no description) +1002125 - Black Ghetto Beanie - (no description) +1002126 - Green Ghetto Beanie - (no description) +1002127 - Red Loosecap - (no description) +1002128 - Blue Loosecap - (no description) +1002129 - Brown Loosecap - (no description) +1002130 - Black Loosecap - (no description) +1002131 - Green Loosecap - (no description) +1002132 - Black Swimming Cap - (no description) +1002133 - Blue Swimming Cap - (no description) +1002134 - Red Swimming Cap - (no description) +1002135 - Brown Pole-Feather Hat - (no description) +1002136 - Dark Pole-Feather Hat - (no description) +1002137 - Green Pole-Feather Hat - (no description) +1002138 - Blue Pole-Feather Hat - (no description) +1002139 - Red Pole-Feather Hat - (no description) +1002140 - Wizet Invincible Hat - (no description) +1002141 - Red Matty - (no description) +1002142 - Blue Matty - (no description) +1002143 - Green Matty - (no description) +1002144 - Brown Matty - (no description) +1002145 - Dark Matty - (no description) +1002146 - Red Tiberian - (no description) +1002147 - Blue Tiberian - (no description) +1002148 - Green Tiberian - (no description) +1002149 - Brown Tiberian - (no description) +1002150 - Dark Tiberian - (no description) +1002151 - Brown Guiltian - (no description) +1002152 - Blue Guiltian - (no description) +1002153 - Red Guiltian - (no description) +1002154 - Dark Guiltian - (no description) +1002155 - White Guiltian - (no description) +1002156 - Red Hunter - (no description) +1002157 - Blue Hunter - (no description) +1002158 - Green Hunter - (no description) +1002159 - Black Hunter - (no description) +1002160 - Brown Hunter - (no description) +1002161 - Red Hawkeye - (no description) +1002162 - Blue Hawkeye - (no description) +1002163 - Green Hawkeye - (no description) +1002164 - Brown Hawkeye - (no description) +1002165 - Dark Hawkeye - (no description) +1002166 - Red Distinction - (no description) +1002167 - Blue Distinction - (no description) +1002168 - Green Distinction - (no description) +1002169 - Brown Distinction - (no description) +1002170 - Dark Distinction - (no description) +1002171 - Red Guise - (no description) +1002172 - Blue Guise - (no description) +1002173 - Green Guise - (no description) +1002174 - Brown Guise - (no description) +1002175 - Dark Guise - (no description) +1002176 - Red Burgler - (no description) +1002177 - Blue Burgler - (no description) +1002178 - Green Burgler - (no description) +1002179 - Brown Burgler - (no description) +1002180 - Dark Burgler - (no description) +1002181 - Red Pilfer - (no description) +1002182 - Blue Pilfer - (no description) +1002183 - Green Pilfer - (no description) +1002184 - Brown Pilfer - (no description) +1002185 - Dark Pilfer - (no description) +1002186 - Transparent Hat - If you want to use the abilities available through hats, yet still want to show off your hairstyle, use this. +1002187 - Blue Cowboy Hat - (no description) +1002188 - Red Cowboy Hat - (no description) +1002189 - Dark Cowboy Hat - (no description) +1002190 - Blue Pre-School Hat - (no description) +1002191 - Red Pre-School Hat - (no description) +1002192 - The Chinese Undead's Hat (Blue) - (no description) +1002193 - The Chinese Undead's Hat (Maroon) - (no description) +1002194 - Rosy Swimming Cap - (no description) +1002195 - Flowery Swimming Cap - (no description) +1002196 - Blue Baseball Helmet - (no description) +1002197 - Red Baseball Helmet - (no description) +1002198 - Indigo Baseball Helmet - (no description) +1002199 - Black Baseball Helmet - (no description) +1002200 - Green Visor - (no description) +1002201 - Sky Blue Visor - (no description) +1002202 - Orange Visor - (no description) +1002203 - Yellow Rain Cap - (no description) +1002204 - Red Rain Cap - (no description) +1002205 - Sky Blue Rain Cap - (no description) +1002206 - Green Rain Cap - (no description) +1002207 - Red Sonata - (no description) +1002208 - Blue Sonata - (no description) +1002209 - Green Sonata - (no description) +1002210 - Brown Sonata - (no description) +1002211 - Blue Maro - (no description) +1002212 - Red Maro - (no description) +1002213 - Green Maro - (no description) +1002214 - Black Maro - (no description) +1002215 - Flame Golden Circlet - (no description) +1002216 - Aqua Golden Circlet - (no description) +1002217 - Orange Golden Circlet - (no description) +1002218 - Dark Golden Circlet - (no description) +1002219 - Zorro Hat - (no description) +1002220 - Black Slanted Visor - (no description) +1002221 - Purple Slanted Visor - (no description) +1002222 - Red Upside-Down Visor - (no description) +1002223 - Blue Upside-Down Visor - (no description) +1002224 - Tiger Mask - (no description) +1002225 - Santa Hat - (no description) +1002226 - Fashionable Hat - (no description) +1002227 - Blue Fisherman Hat - (no description) +1002228 - Cabbie - (no description) +1002229 - Goggled Red Cap - (no description) +1002230 - Goggled Black Cap - (no description) +1002231 - Goggled Blue Cap - (no description) +1002232 - Starry Red Beanie - (no description) +1002233 - Starry Pink Beanie - (no description) +1002234 - Starry Sky Blue Beanie - (no description) +1002235 - Sky Blue Goggled Beanie - (no description) +1002236 - Khaki Goggled Beanie - (no description) +1002237 - Blue Cap - (no description) +1002238 - Construction Hardhat - (no description) +1002239 - The Legendary Gold Poop Hat - While the character chats, the quote bubble is in gold. If combined with the Golden Fly Ring, the fly effect takes place. +1002240 - Hajimaki - (no description) +1002241 - Techwin Wig - (no description) +1002242 - Red Seraphis - (no description) +1002243 - Blue Seraphis - (no description) +1002244 - Green Seraphis - (no description) +1002245 - White Seraphis - (no description) +1002246 - Dark Seraphis - (no description) +1002247 - Bronze Identity - (no description) +1002248 - Silver Identity - (no description) +1002249 - Dark Identity - (no description) +1002250 - Headphone Bandana - (no description) +1002251 - The Graduation Hat - (no description) +1002252 - Red Infinium Circlet - (no description) +1002253 - Blue Infinium Circlet - (no description) +1002254 - Dark Infinium Circlet - (no description) +1002255 - Circus Cowboy Hat - (no description) +1002256 - Orange Mushroom Hat - (no description) +1002257 - Blue Mushroom Hat - (no description) +1002258 - Blue Diamondy Bandana - (no description) +1002259 - Black Top Hat - (no description) +1002260 - Yellow Trucker Hat - (no description) +1002261 - Blue Trucker Hat - (no description) +1002262 - Red Trucker Hat - (no description) +1002263 - Green Trucker Hat - (no description) +1002264 - Hardhat - (no description) +1002265 - Elf's Ear - (no description) +1002266 - Basic Earmuff - (no description) +1002267 - Red Polyfeather Hat - (no description) +1002268 - Brown Polyfeather Hat - (no description) +1002269 - White Polyfeather Hat - (no description) +1002270 - Black Polyfeather Hat - (no description) +1002271 - Green Galaxy - (no description) +1002272 - Blue Galaxy - (no description) +1002273 - Purple Galaxy - (no description) +1002274 - Dark Galaxy - (no description) +1002275 - Blue Falcon - (no description) +1002276 - Red Falcon - (no description) +1002277 - Green Falcon - (no description) +1002278 - Dark Falcon - (no description) +1002279 - Bunny Hat - (no description) +1002280 - Ducky Hat - (no description) +1002281 - Brown Nightfox - (no description) +1002282 - Blue Nightfox - (no description) +1002283 - Purple Nightfox - (no description) +1002284 - White Nightfox - (no description) +1002285 - Blood Nightfox - (no description) +1002286 - Blue Patriot - (no description) +1002287 - Beige Patriot - (no description) +1002288 - Green Patriot - (no description) +1002289 - Dark Patriot - (no description) +1002290 - Camouflaged Helmet - (no description) +1002291 - Starred Hunting Hat - (no description) +1002292 - Pink Frill Pajama Hat - (no description) +1002293 - Blue Pajama Hat - (no description) +1002294 - Red Frill Pajama Hat - (no description) +1002295 - Chef's Hat - (no description) +1002296 - Slime Hat - (no description) +1002297 - Brown Bucket Hat - (no description) +1002298 - Blue Bucket Hat - (no description) +1002299 - Cubic Newsie Hat - (no description) +1002300 - Green Picnic Hat - (no description) +1002301 - Yellow Picnic Hat - (no description) +1002302 - Pink Picnic Hat - (no description) +1002303 - Blue Picnic Hat - (no description) +1002304 - Silver-Chain Hat - (no description) +1002305 - Blue Headband - (no description) +1002306 - Brown Headband - (no description) +1002307 - Blue B-Ball Headband - (no description) +1002308 - Orange B-Ball Headband - (no description) +1002309 - Watermelon Hat - (no description) +1002310 - Flower Crown - (no description) +1002311 - Traveler's Hat - (no description) +1002312 - Evil Watermelon Hat - (no description) +1002313 - Palm Tree Hat - (no description) +1002314 - Zombie Mushroom Hat - (no description) +1002315 - Red Straw Hat - (no description) +1002316 - Blue Straw Hat - (no description) +1002317 - Grey Headband - (no description) +1002318 - Red Headband - (no description) +1002319 - Whale Hat - (no description) +1002320 - Fuji Hat - (no description) +1002321 - Crow Hat - (no description) +1002322 - Lobster Hat - (no description) +1002323 - Green Osfa Hat - (no description) +1002324 - Brown Osfa Hat - (no description) +1002325 - Purple Osfa Hat - (no description) +1002326 - Red Osfa Hat - (no description) +1002327 - Brown Pireta Hat - (no description) +1002328 - Green Pireta Hat - (no description) +1002329 - Red Pireta Hat - (no description) +1002330 - Dark Pireta Hat - (no description) +1002331 - Wind Goblin - (no description) +1002332 - Cloud Goblin - (no description) +1002333 - Angel's Halo - (no description) +1002334 - Raccoon Hat - (no description) +1002335 - Triangular Hat - (no description) +1002336 - Noble Moca - (no description) +1002337 - Laurel Crown - (no description) +1002338 - Red Dragon Babuta - (no description) +1002339 - Blue Dragon Babuta - (no description) +1002340 - Dark Dragon Babuta - (no description) +1002341 - Starry Olive Beanie - (no description) +1002342 - Olive Beanie - (no description) +1002343 - White Beanie - (no description) +1002344 - Woodsman Hat - (no description) +1002345 - Party Hat - (no description) +1002346 - Blue Corporal Hat - (no description) +1002347 - Brown Corporal Hat - (no description) +1002348 - Bamboo Hat - (no description) +1002349 - Black Cowboy Hat - (no description) +1002350 - Red Cowboy Hat - (no description) +1002351 - Yellow Cowboy Hat - (no description) +1002352 - Red Knitted Hat - (no description) +1002353 - Purple Knitted Hat - (no description) +1002354 - Yellow Knitted Hat - (no description) +1002355 - Blue Kitty Beanie - (no description) +1002356 - Yellow Kitty Beanie - (no description) +1002357 - Zakum Helmet - (no description) +1002358 - Green Knitted Gumball - (no description) +1002359 - Blue Knitted Gumball - (no description) +1002360 - Pink Knitted Gumball - (no description) +1002361 - Red Festive Gumball - (no description) +1002362 - White Festive Gumball - (no description) +1002363 - Green Oriental Fury Hat - (no description) +1002364 - Blue Oriental Fury Hat - (no description) +1002365 - Red Oriental Fury Hat - (no description) +1002366 - Black Oriental Fury Hat - (no description) +1002367 - Angel Halo - (no description) +1002368 - Reindeer Hat - (no description) +1002369 - Tentacle Hairband - (no description) +1002370 - Black-Striped Indian Hat - (no description) +1002371 - Red-Dotted Indian Hat - (no description) +1002372 - Indian Hat w/ Hearts - (no description) +1002373 - Cloth Wrapper - (no description) +1002374 - Red Beret - (no description) +1002375 - Yellow Beret - (no description) +1002376 - Pink Beret - (no description) +1002377 - Green Valhalla Helmet - (no description) +1002378 - Blue Valhalla Helmet - (no description) +1002379 - Dark Valhalla Helmet - (no description) +1002380 - Green Canal Hood - (no description) +1002381 - Blue Canal Hood - (no description) +1002382 - Red Canal Hood - (no description) +1002383 - Dark Canal Hood - (no description) +1002384 - Casual Cowboy Hat - (no description) +1002385 - Red Eskimo Hat - (no description) +1002386 - Brown Eskimo Hat - (no description) +1002387 - Green Eskimo Hat - (no description) +1002388 - Peter Pan Hat - (no description) +1002389 - Devil Hat - (no description) +1002390 - Zakum Helmet (2) - (no description) +1002391 - Green Bandana - (no description) +1002392 - Brown Bandana - (no description) +1002393 - Pink Bandana - (no description) +1002394 - Grey Bandana - (no description) +1002395 - Purple Bandana - (no description) +1002396 - Hawaiian Flower - (no description) +1002397 - Sunflower Petal - (no description) +1002398 - Green Varr Hat - (no description) +1002399 - Blue Varr Hat - (no description) +1002400 - Red Varr Hat - (no description) +1002401 - Dark Varr Hat - (no description) +1002402 - Red Arlic Helmet - (no description) +1002403 - Blue Arlic Helmet - (no description) +1002404 - Green Arlic Helmet - (no description) +1002405 - Dark Arlic Helmet - (no description) +1002406 - Red Arnah Cap - (no description) +1002407 - Blue Arnah Cap - (no description) +1002408 - Green Arnah Cap - (no description) +1002409 - Tin Bucket - (no description) +1002410 - Pink Turban - (no description) +1002411 - Yellow Turban - (no description) +1002412 - Skyblue Turban - (no description) +1002413 - Octopus Hat - (no description) +1002414 - Orange Mushroom Hat - (no description) +1002415 - Zombie Mushroom Hat - (no description) +1002416 - Slime Hat - (no description) +1002417 - Drake Hat - (no description) +1002418 - Newspaper Hat - (no description) +1002419 - Mark of the Beta - (no description) +1002420 - Biker Bandana - (no description) +1002421 - Pink Knitted Beanie - (no description) +1002422 - Blue Knitted Beanie - (no description) +1002423 - Yellow Knitted Beanie - (no description) +1002424 - Red Sporty Cap - (no description) +1002425 - Blue Sporty Cap - (no description) +1002426 - Beige Goya Beret - (no description) +1002427 - Green Goya Beret - (no description) +1002428 - Beige Checkered Hat - (no description) +1002429 - Meshcap - (no description) +1002430 - Zakum Helmet (3) - (no description) +1002431 - Bull's Horn - (no description) +1002432 - Spring Hat - (no description) +1002433 - Summer Hat - (no description) +1002434 - Autumn Hat - (no description) +1002435 - Korean Flower Petal - (no description) +1002436 - Chief Stan Hat - (no description) +1002437 - Guan Yu Headpiece - (no description) +1002438 - Zhu-Ge-Liang Hat - (no description) +1002439 - Blue Jelly Cap - (no description) +1002440 - Pink Jelly Cap - (no description) +1002441 - Ribboned Pig Headband - (no description) +1002442 - Rainbow Afro Wig - (no description) +1002443 - Patissier Hat - (no description) +1002444 - Liu Bei Headpiece - (no description) +1002445 - Cao Cao Headpiece - (no description) +1002446 - Sun Quan Headpiece - (no description) +1002447 - Rolled Towel - (no description) +1002448 - Purple Bandana - (no description) +1002449 - Winged Cap - (no description) +1002450 - Conch Cap - (no description) +1002451 - Starfish - (no description) +1002452 - Black Starry Bandana - (no description) +1002453 - White Starry Bandana - (no description) +1002454 - Red Starry Bandana - (no description) +1002455 - Black Starry Bandana - (no description) +1002456 - Horoscope Hat (Aquarius) - (no description) +1002457 - Horoscope Hat (Pisces) - (no description) +1002458 - Horoscope Hat (Aries) - (no description) +1002459 - Horoscope Hat (Taurus) - (no description) +1002460 - Horoscope Hat (Gemini) - (no description) +1002461 - Horoscope Hat (Cancer) - (no description) +1002462 - Horoscope Hat (Leo) - (no description) +1002463 - Horoscope Hat (Virgo) - (no description) +1002464 - Horoscope Hat (Libra) - (no description) +1002465 - Horoscope Hat (Scorpius) - (no description) +1002466 - Horoscope Hat (Sagittarius) - (no description) +1002467 - Horoscope Hat (Capricornos) - (no description) +1002468 - Golden Bulldog Hat - (no description) +1002469 - Jester Hat - (no description) +1002470 - Welding Mask - (no description) +1002471 - Shapka for Hunters - (no description) +1002476 - Rough Hat - (no description) +1002477 - Slime Hair Pin - (no description) +1002478 - Mushroom Hair Pin - (no description) +1002479 - Snowman Mask - (no description) +1002480 - White Wig Hat - (no description) +1002481 - Black Snowboard Helmet - (no description) +1002482 - Red Snowboard Helmet - (no description) +1002483 - Goblin Cap - (no description) +1002484 - Polar Bear Hat - (no description) +1002485 - Grey Visor Beanie - (no description) +1002486 - Green Visor Beanie - (no description) +1002487 - Rainbow Visor Beanie - (no description) +1002488 - Military Fur Hat - (no description) +1002489 - Football Helmet(Home) - (no description) +1002490 - Football Helmet(Away) - (no description) +1002491 - Musashi Hat - (no description) +1002492 - White Baseball Cap - (no description) +1002493 - Teddy Bear Headgear - (no description) +1002495 - Angora Hat - (no description) +1002496 - Black Skull Bandana - (no description) +1002497 - Hunting Cap - (no description) +1002498 - Bald Wig - (no description) +1002499 - White Tiger Hat - (no description) +1002500 - Korean Flag Bandana - (no description) +1002501 - Reggae Hat - (no description) +1002502 - Vintage Denim Hat - (no description) +1002503 - Vintage Pink Hat - (no description) +1002504 - Old Fisherman Hat - (no description) +1002505 - Sergeant Hat - (no description) +1002506 - Flower Crown - (no description) +1002507 - Soccer Ball Hat - (no description) +1002508 - Maple Hat - (no description) +1002509 - Maple Hat - (no description) +1002510 - Maple Hat - (no description) +1002511 - Maple Hat - (no description) +1002512 - Red Spirit Bandana - (no description) +1002513 - Maple Party Hat - (no description) +1002515 - Maple Bandana White - (no description) +1002516 - Maple Bandana Yellow - (no description) +1002517 - Maple Bandana Red - (no description) +1002518 - Maple Bandana Blue - (no description) +1002519 - White Felt Hat - (no description) +1002520 - Red Rose - (no description) +1002521 - White Hairband - (no description) +1002522 - Pink-Dotted Hairband - (no description) +1002523 - Paper Boat Hat - (no description) +1002524 - Coke Hat - (no description) +1002525 - Mummy Hat - (no description) +1002526 - Skull Hat - (no description) +1002527 - Independence Day Hat - (no description) +1002528 - Green Grace Helmet - (no description) +1002529 - Blue Grace Helmet - (no description) +1002530 - Red Grace Helmet - (no description) +1002531 - Silver Grace Helmet - (no description) +1002532 - Dark Grace Helmet - (no description) +1002534 - White Puppy Hat - (no description) +1002536 - Brown Paperbag Mask - (no description) +1002542 - Acorn Headgear - (no description) +1002543 - Acorn Helmet - (no description) +1002544 - Pumpkin Headgear - (no description) +1002545 - Yellow Slime Hat - (no description) +1002547 - Red Hunter - (no description) +1002548 - White Rabbit Hat - (no description) +1002549 - Black Cat Hat - (no description) +1002550 - Black Garina Hood - (no description) +1002551 - Blue Dragon Helmet - (no description) +1002552 - Moon Bunny Headgear - (no description) +1002553 - Genesis Bandana - (no description) +1002554 - Muey Thai String - (no description) +1002555 - Demon Goblin - (no description) +1002556 - Maple-Stein - (no description) +1002557 - Jr. Lioner Hat - (no description) +1002558 - Werebeast - (no description) +1002559 - Nordic Knitted Beanie - (no description) +1002560 - Striped Knitted Beanie - (no description) +1002562 - Training Headgear for Beginners - (no description) +1002565 - Fur Hat - (no description) +1002566 - Skull Beanie - (no description) +1002567 - Elf Hat - (no description) +1002568 - Tweed Headband - (no description) +1002569 - Candlelight hat - (no description) +1002571 - Lord Pirate's Hat - (no description) +1002572 - Lord Pirate's Hat - (no description) +1002573 - Lord Pirate's Hat - (no description) +1002574 - Lord Pirate's Hat - (no description) +1002575 - Angel Headband - (no description) +1002576 - Fallen Angel Headband - (no description) +1002577 - Pickpocket Pilfer - (no description) +1002578 - Herculean Helmet - (no description) +1002579 - LeFay Jester - (no description) +1002580 - Lockewood Hat - (no description) +1002584 - Red Old Wisconsin - (no description) +1002585 - Blue Old Wisconsin - (no description) +1002586 - Purple Old Wisconsin - (no description) +1002587 - Black Old Wisconsin - (no description) +1002590 - Star baseball cap - (no description) +1002591 - Leatty Hat - (no description) +1002592 - Sun Wu Kong hat - (no description) +1002593 - Smiley Headgear - (no description) +1002594 - Goggled Smiley Headgear - (no description) +1002596 - Bulldog Cap - (no description) +1002597 - Husky Hat - (no description) +1002598 - Rabbit Ear - (no description) +1002599 - Golden Trench Helmet - (no description) +1002600 - Red Maple Bandana - (no description) +1002601 - Yellow Maple Bandana - (no description) +1002602 - Blue Maple Bandana - (no description) +1002603 - White Maple Bandana - (no description) +1002607 - Zhu Ba Jie Hat - (no description) +1002608 - Superstar Cap - (no description) +1002610 - Brown Rocky Bandana - (no description) +1002613 - Brown Lagger Cap - (no description) +1002616 - Brown Double Marine - (no description) +1002619 - Brown Pitz Bandana - (no description) +1002622 - White Oceania Cap - (no description) +1002625 - Blue Den Marine - (no description) +1002628 - Red Misty - (no description) +1002631 - Brown Leather Ocean Hat - (no description) +1002634 - Purple Cast Linen - (no description) +1002637 - Black Pirate's Bandana - (no description) +1002640 - Blue Sun Boat Hat - (no description) +1002643 - Red Brave Hamal - (no description) +1002646 - Black Polax Hat - (no description) +1002649 - Canopus Hat - (no description) +1002650 - Vintage Grey Cap - (no description) +1002653 - Stack of Books - (no description) +1002655 - Versal Maro - (no description) +1002656 - White Identity - (no description) +1002657 - Spectre Helm - (no description) +1002658 - Valor Helmet - (no description) +1002660 - Orange Cap w/ Shades - (no description) +1002661 - Bird Nest - (no description) +1002662 - Flower decoration celebrating wedding anniversary - (no description) +1002663 - Cork hat - (no description) +1002666 - White basic cap - (no description) +1002667 - Star Hair Pin - (no description) +1002672 - Helm of the Golden Monk - (no description) +1002674 - Helm of the Bronze Monk - (no description) +1002675 - Antellion Miter - A restored headpiece of the Antellion Guard; extends the wearer's lifeforce and magical power. +1002676 - Infinity Circlet - An ancient, revered symbol of insight. Awarded to those who achieved perfect union of mind, body and soul. +1002677 - Toymaker Cap - (no description) +1002678 - Old Hockey Mask - (no description) +1002679 - Eye Poppers - (no description) +1002691 - Centaurus Horns - (no description) +1002692 - Centaurus Horns (Ghost) - (no description) +1002693 - Centaurus Horns (Green) - (no description) +1002694 - Centaurus Horns (Light) - (no description) +1002695 - Soul Teddy Hat - (no description) +1002696 - Stoplight Hat - (no description) +1002697 - Devilfish Headgear - (no description) +1002698 - Vintage Khaki Cap - (no description) +1002699 - Halloween Pumpkin Hat - (no description) +1002700 - Luscious Eyes Green - (no description) +1002701 - Extravagant Lips Green - (no description) +1002703 - Luscious Eyes - Blue Skin - (no description) +1002704 - Luscious Eyes - Normal - (no description) +1002705 - Extravagant Lips - Blue Skin - (no description) +1002706 - Extravagant Lips - Normal - (no description) +1002707 - Hat of a Masked Man - (no description) +1002708 - Red Vintage Bandana - (no description) +1002709 - Snowy Knitted Hat - (no description) +1002710 - Pink Kitty Hat - (no description) +1002711 - White Kitty Ears - (no description) +1002712 - Black Kitty Ears - (no description) +1002713 - Black Bubble Beanie - (no description) +1002714 - Christmas Tree Hat - (no description) +1002715 - Military Beanie - (no description) +1002716 - Versalmas Hat - (no description) +1002717 - Maplemas Hat - (no description) +1002721 - Raccoon Earmuffs - (no description) +1002722 - Teddy Earmuffs - (no description) +1002723 - Rice Cake Hat - (no description) +1002724 - Cat Hat - (no description) +1002725 - Pierced Apple - (no description) +1002726 - Umbrella Hat - (no description) +1002727 - Huge Pink Ribbon - (no description) +1002728 - Rudolph's Horn - (no description) +1002734 - Chinese Lion Headgear - The famous headgear worn with the lion costume for the lion dance to celebrate Lunar New Year. +1002735 - Glowy Smile Cap - (no description) +1002736 - Glowy Patterned Cap - (no description) +1002737 - White Mouse Headband - (no description) +1002738 - Bunny Earmuffs - (no description) +1002739 - Bosshunter Helm - (no description) +1002740 - Bosshunter Faceguard - (no description) +1002741 - Yellow Baby Dragon Hat - (no description) +1002742 - Baby Turkey Hat - (no description) +1002747 - Superstar Headphones - (no description) +1002748 - Apple-Green Hood - (no description) +1002749 - Bosshunter Helm - (no description) +1002750 - Bosshunter Faceguard - (no description) +1002752 - Celestial Crown - (no description) +1002753 - Stylish Pink Cotton Cap - (no description) +1002755 - Hero's Beret - (no description) +1002756 - Hero's Casket - (no description) +1002757 - football steel helmet - (no description) +1002758 - Maple Hat (level 4) - (no description) +1002759 - Maple Hood Hat - (no description) +1002760 - Globe Cap - (no description) +1002762 - Transform to Kanderun - (no description) +1002763 - Transform to Pergen - (no description) +1002764 - Transform to Helena - (no description) +1002765 - Transform to Dark Lord - (no description) +1002766 - Transform to Euryth - (no description) +1002770 - Cone Ears - (no description) +1002771 - Tiger Cub Hat - (no description) +1002774 - Victory Hairpin - (no description) +1002801 - Raven Ninja Bandana - (no description) +1002673 - Helm of the Silver Monk - (no description) +1002472 - Cabbage Patch Hat - (no description) +1002654 - Orange Mushroom Hat - (no description) +1002823 - Scarface Mask - A well-worn mask that's perfect for scaring friends! +1002824 - Noob Hat - From the early days of Maple Island! Relive the past with this authentic Noob hat! +1002812 - Moon Bloom Hair Pin - (no description) +1002605 - Jet Black Head Scarf - (no description) +1002837 - Tengu Mask - A mask inspired by the nefarious Black Crow. +1002788 - Necomimi - (no description) +1002856 - Miner's Hat - (no description) +1002857 - Hard Hat - (no description) +1002820 - Inferno Horns - (no description) +1002804 - Brown Felt Hat - (no description) +1002582 - Maximus Galea - (no description) +1002796 - Puffy Ram Hat - The secret word to make the ram fly is #cflyhigh#. +1002850 - Rudolph Change Hat - (no description) +1002803 - Mrs. Octopus - (no description) +1002863 - Bear Tassel Hat - (no description) +1002876 - Holly Hair Clip - A traditional festive holly clip accessory to decorate your hair! +1002822 - Bird Nest - (no description) +1002849 - Panda Hat - (no description) +1002880 - Versalmas Hat - (no description) +1002881 - Maplemas Hat - (no description) +1002887 - Pink Ribbon Hairband - (no description) +1002877 - Cow Mask - (no description) +1002840 - Hatched Bird Cap - (no description) +1002903 - Pink Bandana - Suitable for men and women alike! +1002858 - MV's Hat (STR) - (no description) +1002776 - Timeless Fennel - (no description) +1002777 - Timeless Coral - (no description) +1002778 - Timeless Rapido - (no description) +1002779 - Timeless Chive - (no description) +1002780 - Timeless Conrad Henkel - (no description) +1002784 - "A" Cap - (no description) +1002790 - Reverse Fennel - (no description) +1002791 - Reverse Coral - (no description) +1002792 - Reverse Rapido - (no description) +1002793 - Reverse Chive - (no description) +1002794 - Reverse Conrad Henkel - (no description) +1002797 - Agent N's Disposable Receiver - (no description) +1002798 - A Rice Cake on Top of My Head - (no description) +1002800 - Agent N's Receiver - (no description) +1002890 - Blue Ribbon Hairband - (no description) +1002891 - Green Ribbon Hairband - (no description) +1002940 - GMS ??? ??2 - (no description) +1002941 - Moon Bloom Hair Pin - (no description) +1002943 - Sailor Hat - (no description) +1002945 - Heart Hairband - (no description) +1002907 - Checkered Fedora - (no description) +1002913 - Miranda Ribbon - (no description) +1002942 - Green Mushroom Hat - (no description) +1002947 - Arcana Crown - A headpiece not of the Maple World, perhaps another dimension... +1002948 - Blitz Helm - A helmet crafted in the shadows. Gives the wearer additional speed. +1002949 - Power Mane - Strange hair imbued with the power of rage. From an unknown land. +1002950 - Pink Flower Headwrap - (no description) +1002951 - Yellow Flower Headwrap - (no description) +1002952 - Purple Flower Headwrap - (no description) +1002953 - Giant Fiesta Sombrero - (no description) +1002922 - Navy Hoodie Cap - (no description) +1002921 - Blue Mini Hat - (no description) +1002928 - Pink Star Beanie - (no description) +1002929 - Colorful Striped Beanie - (no description) +1002956 - Blue Mushroom Hat - (no description) +1002959 - Junior GM Cap - (no description) +1002773 - Gold Dragon Crown - (no description) +1002785 - Azure Sun Cap - Hat that #cChanges its color depending on a day of the week# +1002839 - Pumpkin Hat - (no description) +1002869 - Elegant Noblesse Hat - (no description) +1002878 - Snow Flake Hat - (no description) +1002978 - Cute Mouse Ears - (no description) +1002979 - Marbum Headgear - Put this on and you'll feel as if you're already riding down the boulevard on your bike! +1002961 - Gray Mask - (no description) +1002968 - Pancake Hat - (no description) +1002984 - Spiegelmann's Hat - (no description) +1002995 - Royal Navy Hat - (no description) +1002831 - Leo Hairpin - (no description) +1002920 - Pink Mini Hat - (no description) +1003001 - Chaos Metallic Helmet - (no description) +1002944 - Honey Bee Hat - (no description) +1003005 - Maple Racing Helmet - (no description) +1002999 - Fire Shadow Hair - (no description) +1002998 - Edwin Wig - (no description) +1002845 - Pink Bunny Cap - (no description) +1002870 - Moon Bunny Hat - (no description) +1002912 - Iljimae Mask - (no description) +1002919 - Courageous Little Lamb Hat - (no description) +1002923 - Treacherous Wolf Hat - (no description) +1002924 - Courageous Little Lamb Hat - (no description) +1002925 - Treacherous Wolf Hat - (no description) +1002930 - 6th Anniversary Hat - (no description) +1002955 - Brave Musashi Helmet - (no description) +1002970 - Moon Bunny Hat - (no description) +1002971 - Pink Bean Hat - (no description) +1002980 - Archeologist Hat - An archeologist hat received for participating in the Artifact Hunt. +1002981 - Archeologist Hat - An archeologist hat received for finishing Top 10 in the Artifact Hunt. +1003023 - Targar Hat(INT) - (no description) +1003024 - Targar Hat(LUK) - (no description) +1003025 - Scarlion Hat(DEX) - (no description) +1003026 - Scarlion Hat(STR) - (no description) +1003031 - Andras Hat - (no description) +1003032 - Marbas Hat - (no description) +1003033 - Valefor Hat - (no description) +1003034 - Amdusias Hat - (no description) +1003035 - Crocell Hat - (no description) +1003036 - Wild Eye's Gas Mask - (no description) +1003027 - Talking Witch Hat - A special hat that witches wear. +1003022 - Devil Horns - (no description) +1002847 - Frog Hat - (no description) +1002976 - Maid Headband - (no description) +1002844 - Chipmunk Ears - (no description) +1002937 - Felt Hat - (no description) +1002889 - Purple Ribbon Hairband - (no description) +1002954 - Aran Helmet - (no description) +1003014 - Scooter Helmet Red - (no description) +1003015 - Scooter Helmet Blue - (no description) +1002834 - Scorpius Hairpin - (no description) +1003009 - Rainbow Bead Hairband - (no description) +1002973 - Fox Mask - (no description) +1002990 - King Pepe Great Blue Helmet - (no description) +1002991 - King Pepe Dark Matty - (no description) +1002992 - King Pepe Red Polefeather Hat - (no description) +1002993 - King Pepe Dark Burglar - (no description) +1002994 - King Pepe Blue Denemarine - (no description) +1003006 - Kitty Camping Hat - (no description) +1003008 - Pharaoh Crown - (no description) +1002867 - Rudolph Antlers - Can be used for 15 days. +1002835 - Sagittarius Hair Clip - (no description) +1002836 - Capricorn Hair Clip - (no description) +1003044 - Clown Hat - (no description) +1003049 - Giant Bear Cap - (no description) +1002969 - Puppy Ears - (no description) +1001055 - Frilly Pink Cap - (no description) +1002974 - Jr. Lucida Hat - (no description) +1003013 - Red Loose-Fit Beanie - (no description) +1002962 - Flower Pin - (no description) +1002960 - Emperial Crown - (no description) +1003047 - Bear Hat - (no description) +1003039 - Time Traveler's Circlet - (no description) +1003038 - Dolfie Hat - (no description) +1003030 - Former Hero Male Face - (no description) +1003029 - Former Hero Female Face - (no description) +1003028 - Average Straw Hat - (no description) +1003016 - Wild Wolf Bandana - (no description) +1003043 - ??? ? - (no description) +1003050 - Bunny Ears - (no description) +1002754 - Orange Mushroom Scholar - (no description) +1002885 - Pink Bow - (no description) +1003052 - Tilted Fedora - (no description) +1002665 - Tomato Hat - (no description) +1003051 - Desert Fox - (no description) +1003057 - Mini Crown - (no description) +1003073 - Archeologist Hat - An archeologist hat received for participating in the Artifact Hunt. diff --git a/handbook/Equip/Cape.txt b/handbook/Equip/Cape.txt new file mode 100644 index 0000000000..113117ce61 --- /dev/null +++ b/handbook/Equip/Cape.txt @@ -0,0 +1,178 @@ +1102206 - Blackfist Cloak - (no description) +1102207 - Goldensoul Cape - (no description) +1102000 - Green Napoleon - (no description) +1102001 - Blue Napoleon - (no description) +1102002 - Red Napoleon - (no description) +1102003 - White Napoleon - (no description) +1102004 - Black Napoleon - (no description) +1102005 - Baby Angel Wings - (no description) +1102006 - Devil Wings - (no description) +1102007 - Yellow Star Cape - (no description) +1102008 - Blue Star Cape - (no description) +1102009 - Red Star Cape - (no description) +1102010 - Black Star Cape - (no description) +1102011 - Blue Justice Cape - (no description) +1102012 - Red Justice Cape - (no description) +1102013 - White Justice Cape - (no description) +1102014 - Black Justice Cape - (no description) +1102015 - Blue Magic Cape - (no description) +1102016 - Red Magic Cape - (no description) +1102017 - White Magic Cape - (no description) +1102018 - Black Magic Cape - (no description) +1102019 - Korean-Flagged Cape - (no description) +1102020 - Turtle Shell - (no description) +1102021 - Blue Gaia Cape - (no description) +1102022 - Red Gaia Cape - (no description) +1102023 - White Gaia Cape - (no description) +1102024 - Black Gaia Cape - (no description) +1102025 - Red Hood - (no description) +1102026 - Green Seraph Cape - (no description) +1102027 - Blue Seraph Cape - (no description) +1102028 - Red Seraph Cape - (no description) +1102029 - White Seraph Cape - (no description) +1102030 - Black Seraph Cape - (no description) +1102031 - Green Giles Cape - (no description) +1102032 - Purple Giles Cape - (no description) +1102033 - Red Giles Cape - (no description) +1102034 - Blue Giles Cape - (no description) +1102035 - Black Giles Cape - (no description) +1102036 - Red Landcell Pack - (no description) +1102037 - Black Landcell Pack - (no description) +1102038 - Blue Landcell Pack - (no description) +1102039 - Transparent Cape - Use this Cape if you want to make your Cape transparent while still using all of the stats the Cape possesses. +1102040 - Yellow Adventurer Cape - A yellow cape for the prototypical adventurer. +1102041 - Pink Adventurer Cape - A pink cape for the prototypical adventurer. +1102042 - Purple Adventurer Cape - A purple cape for the prototypical adventurer. +1102043 - Brown Adventurer Cape - A brown cape for the prototypical adventurer. +1102044 - Red G-Wing Jetpack - (no description) +1102045 - Blue G-Wing Jetpack - (no description) +1102046 - Blue Musketeer Cape - (no description) +1102047 - Turquoise Musketeer Cape - (no description) +1102048 - Red Musketeer Cape - (no description) +1102049 - Blue Nymph Wing - (no description) +1102050 - Green Nymph Wing - (no description) +1102051 - Yellow Nymph Wing - (no description) +1102052 - Pink Nymph Wing - (no description) +1102053 - Old Raggedy Cape - (no description) +1102054 - Icarus Cape (1) - (no description) +1102055 - Icarus Cape (2) - (no description) +1102056 - Icarus Cape (3) - (no description) +1102057 - Ludibrium Cape - (no description) +1102058 - Gargoyle Wings - (no description) +1102059 - Michael Wings - (no description) +1102060 - Pink Ribbon - (no description) +1102061 - Oxygen Tank - (no description) +1102062 - Martial Cape - (no description) +1102063 - Fallen Angel Wings - (no description) +1102064 - Goblin Cape - (no description) +1102065 - Christmas Cape - (no description) +1102066 - Dracula Cloak - (no description) +1102067 - Tiger Tail - (no description) +1102068 - Harpie Cape - (no description) +1102069 - Pink Wings - (no description) +1102070 - Blue Book Bag - (no description) +1102072 - Yellow-Green Backpack - (no description) +1102073 - Hot Pink Backpack - (no description) +1102074 - Dragonfly Wings - (no description) +1102075 - Bat's Bane - (no description) +1102076 - Newspaper Cape - (no description) +1102077 - Cotton Blanket - (no description) +1102078 - Eclipse Cloak - (no description) +1102079 - Ragged Red Cape - (no description) +1102080 - Ragged Blue Cape - (no description) +1102081 - Ragged Yellow Cape - (no description) +1102082 - Ragged Black Cape - (no description) +1102083 - Ragged Red Cape - (no description) +1102084 - Pink Gaia Cape - (no description) +1102085 - Yellow Gaia Cape - (no description) +1102086 - Purple Gaia Cape - (no description) +1102087 - Green Gaia Cape - (no description) +1102091 - Summer Kite - (no description) +1102092 - Cuddle Bear - (no description) +1102093 - Heart Balloon - (no description) +1102094 - Sun Wu Kong Tail - (no description) +1102095 - Veamoth Wings - (no description) +1102096 - Sachiel Wings - (no description) +1102097 - Janus Wings - (no description) +1102098 - Coffin of Gloom - (no description) +1102099 - Amos' Royal Cape - (no description) +1102100 - Amos' Spirit Cape - (no description) +1102101 - The Legendary Elias Cape 1 - (no description) +1102102 - The Legendary Elias Cape 2 - (no description) +1102103 - The Legendary Elias Cape 3 - (no description) +1102104 - Cecelia Cloak 1 - (no description) +1102105 - Cecelia Cloak 2 - (no description) +1102106 - Cecelia Cloak 3 - (no description) +1102107 - Rocket Booster - (no description) +1102108 - Fallen Angel Tail - (no description) +1102109 - Cape of warmness - This is a magical cape made by Alcaster. When you put it on, you aren't affected by Elnas's chill. It doesn't look good as Magician made it. +1102110 - Chipmunk Tail - (no description) +1102111 - Elephant Balloon - (no description) +1102112 - Bunny Doll - (no description) +1102135 - Zenumist's cape - A cape that marks one a member of the Zenumists. +1102136 - Alcadno's Cape - This proves that you are a Beginner Magician from Alcadno. +1102137 - Orange Mushroom Balloon - (no description) +1102138 - Pink wing bag - (no description) +1102139 - Zenumist's Cape - The proud owner of this cape signifies the fact that the person's a high-leveled alchemist from Zenumist +1102140 - Alcadno's Cape - The proud owner of this cape signifies the fact that the person's a high-leveled alchemist from Alcadno. +1102141 - Pepe Balloon - (no description) +1102142 - The Flaming Cape - (no description) +1102145 - Sirius Cloak - A supremely powerful cloak which enhances the wearer's speed, strength and movement in battle. +1102146 - Zeta Cape - A mysterious cape based on the Grays' alien technology. Best worn by those with mental fortitude. +1102147 - Toymaker Cape - (no description) +1102148 - Tania Cloak - (no description) +1102149 - Mercury Cloak - (no description) +1102150 - Count Dracula Cape - (no description) +1102151 - Lost Kitty - (no description) +1102152 - Pirate Emblem Flag - (no description) +1102153 - Sunfire Wings - (no description) +1102154 - Zakum Arms - (no description) +1102155 - My Buddy Rex - (no description) +1102156 - Aerial Wave Cape - (no description) +1102157 - Puppet Strings - (no description) +1102158 - Peacock Feather Cape - (no description) +1102159 - White Monkey Balloon - (no description) +1102160 - Baby Lupin Cape - (no description) +1102164 - Maple MSX Guitar - (no description) +1102165 - Taru Spirit Cape - (no description) +1102166 - Maple Cape - (no description) +1102167 - Maple Cape - (no description) +1102168 - Maple Cape - (no description) +1102169 - Blue Wing Bag - (no description) +1102176 - Stirgeman Cape - (no description) +1102177 - Stirgeman Raggedy Cape - (no description) +1102178 - Stirgeman Cape Mk II - (no description) +1102179 - Stirgeman Cape Mk III - (no description) +1102180 - Stirgeman Cape Mk IV - (no description) +1102181 - Stirgeman's Cloak of Wiliness - (no description) +1102182 - Stirgeman's Cloak of Darkness - (no description) +1102143 - Waterworks Cape - (no description) +1102144 - Sage Cape - (no description) +1102183 - Stirgeman's Cloak of Justice - (no description) +1102191 - El Nathian Cape - (no description) +1102192 - Wrath of El Nath - (no description) +1102193 - Cloak of Corruption - (no description) +1102194 - Shroud of Zakum - (no description) +1102175 - Puffy Ram Wings - (no description) +1102185 - Rainbow Scarf - (no description) +1102186 - Kitty Parachute - (no description) +1102196 - Snowflake Scarf - (no description) +1102205 - Crimsonheart Cloak - (no description) +1102172 - Timeless Moonlight - (no description) +1102174 - Agent Cape - (no description) +1102203 - Super Rocket Booster - (no description) +1102184 - Aurora Happy Wing - (no description) +1102216 - Dogtail - (no description) +1102218 - Winged Costume - (no description) +1102222 - Seraphim Cape - (no description) +1102202 - Galactic Flame Cape - (no description) +1102212 - Lost Child - (no description) +1102210 - Honeybee's Sting - (no description) +1102215 - Balloon Bouquet - (no description) +1102211 - Aran Cape - (no description) +1102223 - Star Tail - (no description) +1102224 - Lamby Cape - (no description) +1102236 - Cupid's Wings Cape - Cupid Wings to help guide the wearer to finding love in the Maple World. +1102229 - Bear Cape - (no description) +1102226 - ?? ??? ?? - (no description) +1102227 - ?? ??? ?? - (no description) diff --git a/handbook/Equip/Coat.txt b/handbook/Equip/Coat.txt new file mode 100644 index 0000000000..76cd609c4a --- /dev/null +++ b/handbook/Equip/Coat.txt @@ -0,0 +1,463 @@ +1040000 - Yellow Jangoon Armor - (no description) +1040001 - Black Blazer - (no description) +1040002 - White Undershirt - (no description) +1040003 - Brown Hard Leather Top - (no description) +1040004 - Blue Training Shirt - (no description) +1040005 - Orange Baseball Jacket - (no description) +1040006 - Undershirt - (no description) +1040007 - Green Leather Hoodwear - (no description) +1040008 - Brown Archer Top - (no description) +1040009 - Steel Corporal - (no description) +1040010 - Grey T-Shirt - (no description) +1040011 - Silver Leather Hoodwear - (no description) +1040012 - Blue Sergeant - (no description) +1040013 - Blue One-lined T-Shirt - (no description) +1040014 - Orange Sporty T-Shirt - (no description) +1040015 - Brown Lolico Armor - (no description) +1040016 - Orihalcon Master Sergeant - (no description) +1040017 - Grey / Brown Training Shirt - (no description) +1040018 - Black Split Piece - (no description) +1040019 - Orange Split Piece - (no description) +1040020 - Blue Split Piece - (no description) +1040021 - Red Hwarang Shirt - (no description) +1040022 - Green Bennis Chainmail - (no description) +1040023 - Black Bennis Chainmail - (no description) +1040024 - Blue Bennis Chainmail - (no description) +1040025 - Red Bennis Chainmail - (no description) +1040026 - Green Hwarang Shirt - (no description) +1040027 - Old School Blazer - (no description) +1040028 - Blue Sky - (no description) +1040029 - Blue Dragon - (no description) +1040030 - Gold Dragon - (no description) +1040031 - Blue Cloth Vest - (no description) +1040032 - Red Cloth Vest - (no description) +1040033 - Black Cloth Vest - (no description) +1040034 - Dark Nightshift - (no description) +1040035 - Blue Nightshift - (no description) +1040036 - Blue-Striped Undershirt - (no description) +1040037 - Brown Corporal - (no description) +1040038 - Blue Lolico Armor - (no description) +1040039 - Red Sergeant - (no description) +1040040 - Silver Master Sergeant - (no description) +1040041 - Dark Master Sergeant - (no description) +1040042 - Blue Pao - (no description) +1040043 - Red Pao - (no description) +1040044 - Black Pao - (no description) +1040045 - Red Rider - (no description) +1040046 - Shine Rider - (no description) +1040047 - Dark Rider - (no description) +1040048 - Brown Sneak - (no description) +1040049 - Blue Sneak - (no description) +1040050 - Black Sneak - (no description) +1040051 - Blue Striped Trainer - (no description) +1040052 - Green Striped Trainer - (no description) +1040053 - Orange Striped Trainer - (no description) +1040054 - Green Disco Shirt - (no description) +1040055 - Orange Disco Shirt - (no description) +1040056 - Original Disco Shirt - (no description) +1040057 - Dark Brown Stealer - (no description) +1040058 - Dark Silver Stealer - (no description) +1040059 - Red Gold Stealer - (no description) +1040060 - Silver Black Stealer - (no description) +1040061 - Green Knucklevest - (no description) +1040062 - Red Knucklevest - (no description) +1040063 - Black Knucklevest - (no description) +1040064 - Wild Top - (no description) +1040065 - Brown Wild Top - (no description) +1040066 - Red Wild Top - (no description) +1040067 - Green Hunter's Armor - (no description) +1040068 - Dark Hunter's Armor - (no description) +1040069 - Red Hunter's Armor - (no description) +1040070 - Blue Hunter's Armor - (no description) +1040071 - Green Archer Top - (no description) +1040072 - Red Legolier - (no description) +1040073 - Blue Legolier - (no description) +1040074 - Green Legolier - (no description) +1040075 - Dark Legolier - (no description) +1040076 - Brown Legolier - (no description) +1040077 - Cowboy Top - (no description) +1040078 - Pre-School Uniform Top - (no description) +1040079 - Brown Piette - (no description) +1040080 - Dark Piette - (no description) +1040081 - White Piette - (no description) +1040082 - Khaki Shadow - (no description) +1040083 - Marine Shadow - (no description) +1040084 - Dark Shadow - (no description) +1040085 - Maroon Jangoon Armor - (no description) +1040086 - Blue Jangoon Armor - (no description) +1040087 - Blue Shouldermail - (no description) +1040088 - Oaker Shouldermail - (no description) +1040089 - Umber Shouldermail - (no description) +1040090 - Green Orientican - (no description) +1040091 - Red Orientican - (no description) +1040092 - Blue Orientican - (no description) +1040093 - Dark Orientican - (no description) +1040094 - Red China - (no description) +1040095 - Blue China - (no description) +1040096 - Brown China - (no description) +1040097 - Green China - (no description) +1040098 - Light Scorpio - (no description) +1040099 - Oaker Scorpio - (no description) +1040100 - Dark Scorpio - (no description) +1040101 - Skull T-Shirt - (no description) +1040102 - Bronze Platine - (no description) +1040103 - Mithril Platine - (no description) +1040104 - Orihalcon Platine - (no description) +1040105 - Brown Studded Top - (no description) +1040106 - Blue Studded Top - (no description) +1040107 - Dark Studded Top - (no description) +1040108 - Green Pirate Top - (no description) +1040109 - Red Pirate Top - (no description) +1040110 - Dark Pirate Top - (no description) +1040111 - Green Commodore - (no description) +1040112 - Blue Commodore - (no description) +1040113 - Dark Commodore - (no description) +1040114 - Hawaiian Shirt - (no description) +1040115 - Green Osfa Suit - (no description) +1040116 - Brown Osfa Suit - (no description) +1040117 - Purple Osfa Suit - (no description) +1040118 - Red Osfa Suit - (no description) +1040119 - Ragged Top - (no description) +1040120 - Green Neos - (no description) +1040121 - Blue Neos - (no description) +1040122 - Black Neos - (no description) +1040123 - Prep School Uniform - (no description) +1040124 - Crusader T-Shirt - (no description) +1040125 - Military Cargo Jacket - (no description) +1040126 - Yellow Frill Sleeveless - (no description) +1040127 - Blue Heart Tanktop - (no description) +1040128 - Blue Line Tanktop - (no description) +1040129 - Red Casual Suit - (no description) +1040130 - Green Tie Casual Suit - (no description) +1040131 - Pink Tie Casual Suit - (no description) +1040132 - Palm Tree Tanktop - (no description) +1040133 - Long Blue Shirt - (no description) +1040134 - Orange Puffy Jacket - (no description) +1040135 - Muscle Man T - (no description) +1040137 - Tania Tailored Jacket - (no description) +1040138 - Mercury Leather Jacket (M) - (no description) +1040140 - Pink Mimi Blouse - (no description) +1040141 - Blue Sailor Shirt - (no description) +1040143 - Pink Top [m] - (no description) +1040144 - Bulletproof Vest - (no description) +1041000 - Blue Frill Blouse - (no description) +1041001 - Blue Sailor Shirt - (no description) +1041002 - White Tubetop - (no description) +1041003 - Red Qi Pao - (no description) +1041004 - Pink Starry Shirt - (no description) +1041005 - Pink Mimi Blouse - (no description) +1041006 - Yellow T-Shirt - (no description) +1041007 - Green Avelin - (no description) +1041008 - Green Able Armor - (no description) +1041009 - Red Sailor Shirt - (no description) +1041010 - Green T-Shirt - (no description) +1041011 - Red-Striped Top - (no description) +1041012 - Red-Striped T-Shirt - (no description) +1041013 - Green Shivermail - (no description) +1041014 - Orange Lolica Armor - (no description) +1041015 - Black Armine - (no description) +1041016 - Green Armine - (no description) +1041017 - Purple Arianne - (no description) +1041018 - Green Arianne - (no description) +1041019 - Red Lamelle - (no description) +1041020 - Green Lamelle - (no description) +1041021 - Brown Lamelle - (no description) +1041022 - Blue Shark - (no description) +1041023 - Sky Shark - (no description) +1041024 - Red Shark - (no description) +1041025 - Pink Arianne - (no description) +1041026 - Yellow Arianne - (no description) +1041027 - Red Shivermail - (no description) +1041028 - Purple Shivermail - (no description) +1041029 - Black Split - (no description) +1041030 - Red Split - (no description) +1041031 - Purple Split - (no description) +1041032 - Green Bennis Chainmail - (no description) +1041033 - Red Bennis Chainmail - (no description) +1041034 - Blue Bennis Chainmail - (no description) +1041035 - Yellow Bennis Chainmail - (no description) +1041036 - Red Cloth Vest - (no description) +1041037 - Blue Cloth Vest - (no description) +1041038 - Black Cloth Vest - (no description) +1041039 - Pink Qi Pao - (no description) +1041040 - Blue Qi Pao - (no description) +1041041 - Purple Fairy Top - (no description) +1041042 - Green Fairy Top - (no description) +1041043 - Blue Fairy Top - (no description) +1041044 - Red Nightshift - (no description) +1041045 - Brown Nightshift - (no description) +1041046 - Pink Tanktop - (no description) +1041047 - Red Steal - (no description) +1041048 - Black Steal - (no description) +1041049 - Blue Steal - (no description) +1041050 - Purple Steal - (no description) +1041051 - Red Amoria Top - (no description) +1041052 - Blue Amoria Top - (no description) +1041053 - Black Amoria Top - (no description) +1041054 - Green Huntress Armor - (no description) +1041055 - Black Huntress Armor - (no description) +1041056 - Red Huntress Armor - (no description) +1041057 - Dark Sneak - (no description) +1041058 - Blood Sneak - (no description) +1041059 - Sky Sneak - (no description) +1041060 - Gold Sneak - (no description) +1041061 - Yellow Avelin - (no description) +1041062 - Yellow Able Armor - (no description) +1041063 - Grey Able Armor - (no description) +1041064 - Blueberry Lolica Armor - (no description) +1041065 - Red Legolia - (no description) +1041066 - Blue Legolia - (no description) +1041067 - Green Legolia - (no description) +1041068 - Dark Legolia - (no description) +1041069 - Brown Legolia - (no description) +1041070 - Sky Blue Mimi Blouse - (no description) +1041071 - Yellow Mimi Blouse - (no description) +1041072 - Cowboy Top - (no description) +1041073 - Pre-School Uniform Top - (no description) +1041074 - Purple Shadow - (no description) +1041075 - Red Shadow - (no description) +1041076 - Dark Shadow - (no description) +1041077 - Maroon Moon - (no description) +1041078 - Blue Moon - (no description) +1041079 - Brown Moon - (no description) +1041080 - Red Moon - (no description) +1041081 - White Piettra - (no description) +1041082 - Brown Piettra - (no description) +1041083 - Dark Piettra - (no description) +1041084 - Red Jangoon Armor - (no description) +1041085 - Brown Jangoon Armor - (no description) +1041086 - Black Jangoon Armor - (no description) +1041087 - Red Shouldermail - (no description) +1041088 - Ivory Shouldermail - (no description) +1041089 - Dark Shouldermail - (no description) +1041090 - Pink Top - (no description) +1041091 - Green Ice Queen - (no description) +1041092 - Red Ice Queen - (no description) +1041093 - Blue Ice Queen - (no description) +1041094 - Light Mantis - (no description) +1041095 - Bloody Mantis - (no description) +1041096 - Umber Mantis - (no description) +1041097 - Aqua Platina - (no description) +1041098 - Violet Platina - (no description) +1041099 - Bloody Platina - (no description) +1041100 - Purple Mystique - (no description) +1041101 - Blue Mystique - (no description) +1041102 - Pink Mystique - (no description) +1041103 - Red Mystique - (no description) +1041104 - Old School Uniform Top - (no description) +1041105 - Green Pirate Blouse - (no description) +1041106 - Red Pirate Blouse - (no description) +1041107 - Dark Pirate Blouse - (no description) +1041108 - SF Ninja Top - (no description) +1041109 - Red Trainer Jacket - (no description) +1041110 - Sky Blue Trainer Jacket - (no description) +1041111 - Pink Trainer Jacket - (no description) +1041112 - Black Trainer Jacket - (no description) +1041113 - Pink Frill Pajama Top - (no description) +1041114 - Hawaiian Shirt - (no description) +1041115 - Green Osfa Suit - (no description) +1041116 - Brown Osfa Suit - (no description) +1041117 - Purple Osfa Suit - (no description) +1041118 - Red Osfa Suit - (no description) +1041119 - Green Valkyrie - (no description) +1041120 - Purple Valkyrie - (no description) +1041121 - Dark Valkyrie - (no description) +1041122 - Green Lucida - (no description) +1041123 - Purple Lucida - (no description) +1041124 - Dark Lucida - (no description) +1041125 - Rainbow Knit - (no description) +1041126 - Transparent Top (F) - Use this Top equip if you want to make your Top equip transparent while still using all of the stats your Top equip possesses. +1041127 - Heart Sleeveless - (no description) +1041128 - Cross Sleeveless - (no description) +1041129 - Yellow Frill Camisole - (no description) +1041130 - Blue Frill Camisole - (no description) +1041131 - Pink Ribboned Janie - (no description) +1041132 - Pink Frill Camisole - (no description) +1041133 - Grey Cardigan - (no description) +1041134 - Angora Mustang - (no description) +1041135 - Tube-Top Jacket - (no description) +1041136 - Pink Vest Blouse - (no description) +1041137 - Pink-Dotted Top - (no description) +1041138 - Tania Bolero - (no description) +1041139 - Mercury Leather Jacket (F) - (no description) +1041142 - Ribbon Frilled top - (no description) +1041143 - Green tie Jacket - (no description) +1041146 - Old School Blazer [F] - (no description) +1042000 - Orange Hooded Vest - (no description) +1042001 - Black Hooded Vest - (no description) +1042002 - Red Hooded Vest - (no description) +1042003 - Wizet Plain Suit - (no description) +1042004 - Pink Hooded Vest - (no description) +1042005 - Pink Camping Shirt - (no description) +1042006 - Green Camping Shirt - (no description) +1042007 - Blue Camping Shirt - (no description) +1042008 - Wildcats Baseball Shirt (Basic) - (no description) +1042009 - Wildcats Baseball Shirt (Home) - (no description) +1042010 - Wildcats Baseball Shirt (Away) - (no description) +1042011 - Wildcats Baseball Shirt (Alternate) - (no description) +1042012 - Yellow Snowboard Top - (no description) +1042013 - Green Snowboard Top - (no description) +1042014 - Yellow Layered Combo - (no description) +1042015 - Blue Layered Combo - (no description) +1042016 - Pink Snowboard Top - (no description) +1042017 - Sky Blue Snowboard Top - (no description) +1042018 - Red T-Shirt w/ Heart - (no description) +1042019 - M Layered T-Shirt - (no description) +1042020 - Old Military Uniform - (no description) +1042021 - Starry Layered Combo - (no description) +1042022 - Camouflaged Uniform - (no description) +1042023 - Blue Polka-Dot Pajama Top - (no description) +1042024 - Red Polka-Dot Pajama Top - (no description) +1042025 - Prisoner Top - (no description) +1042026 - Flowery Dress Shirt - (no description) +1042027 - Blue B-Ball Jersey - (no description) +1042028 - Orange B-Ball Jersey - (no description) +1042029 - Octopus T-Shirt - (no description) +1042030 - Slime T-Shirt - (no description) +1042031 - O. Mushroom T-Shirt - (no description) +1042032 - Beetle Longsleeve - (no description) +1042033 - Beige Double-Coat - (no description) +1042034 - Green Double-Coat - (no description) +1042035 - Red Double-Coat - (no description) +1042036 - Christmas Padded Jacket - (no description) +1042037 - Snowman Padded Jacket - (no description) +1042038 - Red Sweater - (no description) +1042039 - Sky Blue Allstar - (no description) +1042040 - Pink Allstar - (no description) +1042041 - Black Allstar - (no description) +1042042 - White Hooded Vest - (no description) +1042043 - Green Striped Rugby Tee - (no description) +1042044 - Pink Striped Rugby Tee - (no description) +1042045 - Bowling Shirt - (no description) +1042046 - White Casual Suit - (no description) +1042047 - Star-Patterned Yellow Shirt - (no description) +1042048 - Star-Patterned Purple Shirt - (no description) +1042049 - Short Denim Jacket - (no description) +1042050 - Baseball Jumper - (no description) +1042051 - Bomber Jacket - (no description) +1042052 - Blue Down Parka - (no description) +1042053 - Blue Wool Jacket - (no description) +1042054 - Pink Wool Jacket - (no description) +1042055 - Pink Down Parka - (no description) +1042056 - Beat Shirt - (no description) +1042058 - Red Half - (no description) +1042059 - Sholl Trainer - (no description) +1042060 - Pola Sweater - (no description) +1042061 - Ball Zone Jumper - (no description) +1042062 - Stitched Leather Jacket - (no description) +1042063 - Red Turtleneck Sweater - (no description) +1042064 - Football Top(Home) - (no description) +1042065 - Football Top(Away) - (no description) +1042066 - Orange Hooded Shirt - (no description) +1042067 - Orange Hooded Zip-Up - (no description) +1042068 - Drill Muffler - (no description) +1042069 - Pink Big-Belt Shirt - (no description) +1042070 - Sky Blue Big-Belt Shirt - (no description) +1042071 - Pastel Layered Hooded Shirt - (no description) +1042072 - Red Layered Hooded Shirt - (no description) +1042073 - Navy Blue Dress Shirt - (no description) +1042074 - White Longsleeve with Star - (no description) +1042075 - Pink Pluto T - (no description) +1042076 - Dotted Disco Shirt - (no description) +1042077 - Rainbow T - (no description) +1042078 - White & Blue Sailor Top - (no description) +1042080 - Red Hot Racer T - (no description) +1042081 - Cherry Layered T - (no description) +1042082 - Black Cardigan Set - (no description) +1042083 - Rainbow Hooded Pancho - (no description) +1042084 - Army General Hoodie - (no description) +1042085 - Canary Heart T - (no description) +1042086 - Tourist T - (no description) +1042087 - Skull Shirt - (no description) +1042088 - Black Skull Hooded Vest - (no description) +1042089 - Blue Skull Hooded Vest - (no description) +1042090 - Red Skull Hooded Vest - (no description) +1042091 - Pink Skull Hooded Vest - (no description) +1042092 - Pelvis Hoodie - (no description) +1042093 - Pointed Double Coat - (no description) +1042094 - Orange Snowflake Sweater - (no description) +1042095 - Vintage Hooded Shirt - (no description) +1042096 - M Shirt - (no description) +1042097 - Print layered Hoody - (no description) +1042098 - Camo Hooded Jacket - (no description) +1042099 - Striped Hooded Shirt - (no description) +1042100 - Checkered Casual Suit - (no description) +1042101 - Blanc Rose Top - (no description) +1042102 - Aqua Road T - (no description) +1042103 - White Outlaw Shirt - (no description) +1042104 - Lime Green Sleeveless - (no description) +1042105 - Crown Hooded T - (no description) +1042106 - Rainbow-striped Hoodie - (no description) +1042107 - Pink Flower T-shirt - When equipped, the flower petals will float around while moving. +1042108 - Spangle sleeveless - (no description) +1042109 - Yellow & Red-Striped Jacket - (no description) +1042110 - Red Hooded Coat - (no description) +1042116 - Orange Pea Coat - (no description) +1042117 - Green Baseball Jacket - (no description) +1042118 - Red Checkered Shirt - (no description) +1042119 - Vintage Muffler Jacket - (no description) +1042120 - Celeste Blue Double Coat - (no description) +1042121 - Opera Pink Double Coat - (no description) +1042122 - Bowtie Jacket - (no description) +1042125 - Yellow Longsleeve w/ Bunny Bag - (no description) +1042126 - Red and Black Blazer - (no description) +1042127 - Green Suspenders - (no description) +1042128 - Apple-Green Sweater - (no description) +1042129 - "Black Tie Affair" Dress Shirt - (no description) +1042130 - Gold Chainz - (no description) +1042131 - Preppy Black Vest - (no description) +1042132 - Aqua Green Star - (no description) +1042133 - Striped Hoodie Shirt - (no description) +1042134 - Yellow Shirt w/ Pads - (no description) +1042135 - Dark Master Sergeant for Transformation - (no description) +1042136 - Red Legolesse for Transformation - (no description) +1042137 - Dark Night for Transformation - (no description) +1042138 - The White Tee - (no description) +1042141 - Pink Star Glow - (no description) +1042140 - Slick Agent Top - (no description) +1042145 - Layered Duckie T - (no description) +1042146 - Superstar Hoodie - (no description) +1042147 - Preppy Knit Vest - (no description) +1042142 - Rainbow Top - (no description) +1042143 - Disco Tank Top - (no description) +1042154 - Bohemian Hooded Jacket - (no description) +1042152 - Rainbow Knitted Top - (no description) +1042150 - Black "Hit Me" Shirt - (no description) +1042153 - Red Plaid Duffle Coat - (no description) +1042155 - Sky Rider Jacket - (no description) +1042151 - Brown Argyle Sweater - (no description) +1042149 - 80's Knit Pullover - (no description) +1049000 - Friendship Shirt - Can be purchased and given to another user as a gift. If two characters wearing this item are standing within a given range, the Friendship effect is generated. +1048000 - Couple Shirt - Can be purchased and given to another user as a gift. If two characters wearing this item are standing within a given range, the Couple effect is generated. +1042166 - Leather Biker Jacket - (no description) +1042160 - Navy Hoodie - (no description) +1042156 - Galaxy T-Shirt - (no description) +1042161 - Spring Jealousy - (no description) +1042163 - Pink Heart T-Shirt & Muffler - (no description) +1042164 - Green Tie & Shirt - (no description) +1042165 - Pink Bowtie & White Vest - (no description) +1042158 - Baseball Classic - (no description) +1042144 - Checkered Resort Shirt - (no description) +1042168 - Lightning T-Shirt - (no description) +1042157 - Lovely Pink T-Shirt - (no description) +1042162 - Blue-Striped Undershirt - (no description) +1042169 - Rainbow Tie-Dye Shirt - (no description) +1040145 - King Pepe Gold Dragon - (no description) +1040146 - King Pepe Dark Legolier - (no description) +1040147 - King Pepe Black Knuckle Vest - (no description) +1041148 - King Pepe Red Shark - (no description) +1041149 - King Pepe Brown Legolas - (no description) +1041150 - King Pepe Purple Steal - (no description) +1042167 - Simple Warrior Top - (no description) +1042170 - Cool Summer Shirt - (no description) +1042172 - Cute Baby Blue Shirt - (no description) +1042173 - Green Smart Tee - (no description) +1042174 - Camping Shirt - (no description) +1042182 - Denim Hoodie - (no description) +1042177 - Vintage Hoodie Jacket - (no description) +1042181 - Napoleon Jacket - (no description) +1042178 - ?? ???? - (no description) +1042180 - ??? ???? - (no description) +1042183 - Pink Argyle Plaid - (no description) +1042186 - Fur Vest - (no description) +1042187 - Pink Sweater - (no description) diff --git a/handbook/Equip/Face.txt b/handbook/Equip/Face.txt new file mode 100644 index 0000000000..d2ad5ee3c6 --- /dev/null +++ b/handbook/Equip/Face.txt @@ -0,0 +1,540 @@ +20000 - Male 1 (Black) - (no description) +20001 - Male 2 (Black) - (no description) +20002 - Leisure Look (Black) - (no description) +20003 - Male 4 (Black) - (no description) +20004 - Male 5 (Black) - (no description) +20005 - Male 6 (Black) - (no description) +20006 - Male 7 (Black) - (no description) +20007 - Male 8 (Black) - (no description) +20008 - Male 9 (Black) - (no description) +20009 - Male JP (Black) - (no description) +20010 - Male JP (Black) - (no description) +20011 - Male JP (Black) - (no description) +20012 - Male 10 (Black) - (no description) +20013 - Male JP (Black) - (no description) +20014 - Male 11 (Black) - (no description) +20016 - Male Face 12 - (no description) +20017 - Male Face 14 - (no description) +20018 - Male 12 (Black) - (no description) +20019 - Male 13 (Black) - (no description) +20020 - Fierce Edge (Black) - (no description) +20021 - Male Face JP - (no description) +20022 - Male Face 16 - (no description) +20023 - malefaceGL(Black) - (no description) +20024 - Awakening (Black) - (no description) +20100 - Male 1 (Blue) - (no description) +20101 - Male 2 (Blue) - (no description) +20102 - Leisure Look (Blue) - (no description) +20103 - Male 4 (Blue) - (no description) +20015 - Male 15 - (no description) +20115 - Male 15 - (no description) +20215 - Male 15 - (no description) +20315 - Male 15 - (no description) +20415 - Male 15 - (no description) +20515 - Male 15 - (no description) +20615 - Male 15 - (no description) +20715 - Male 15 - (no description) +20104 - Male 5 (Blue) - (no description) +20105 - Male 6 (Blue) - (no description) +20106 - Male 7 (Blue) - (no description) +20107 - Male 8 (Blue) - (no description) +20108 - Male 9 (Blue) - (no description) +20109 - Male JP (Blue) - (no description) +20110 - Male JP (Blue) - (no description) +20111 - Male JP (Blue) - (no description) +20112 - Male 10 (Blue) - (no description) +20113 - Male JP (Blue) - (no description) +20114 - Male 11 (Blue) - (no description) +20116 - Male Face 12 - (no description) +20117 - Male Face 14 - (no description) +20118 - Male 12 (Blue) - (no description) +20119 - Male 13 (Blue) - (no description) +20120 - Fierce Edge (Blue) - (no description) +20121 - Male Face JP - (no description) +20122 - Male Face 16(Blue Eyes) - (no description) +20123 - malefaceGL(Blue) - (no description) +20124 - Awakening (Blue) - (no description) +20200 - Male 1 (Red) - (no description) +20201 - Male 2 (Red) - (no description) +20202 - Leisure Look (Red) - (no description) +20203 - Male 4 (Red) - (no description) +20204 - Male 5 (Red) - (no description) +20205 - Male 6 (Red) - (no description) +20206 - Male 7 (Red) - (no description) +20207 - Male 8 (Red) - (no description) +20208 - Male 9 (Red) - (no description) +20209 - Male JP (Red) - (no description) +20210 - Male JP (Red) - (no description) +20211 - Male JP (Red) - (no description) +20212 - Male 10 (Red) - (no description) +20213 - Male JP (Red) - (no description) +20214 - Male 11 (Red) - (no description) +20216 - Male Face 12 - (no description) +20217 - Male Face 14 - (no description) +20218 - Male 12 (Red) - (no description) +20219 - Male 13 (Red) - (no description) +20220 - Fierce Edge (Red) - (no description) +20221 - Male Face JP - (no description) +20222 - Male Face 16(Red Eyes) - (no description) +20223 - malefaceGL(Red) - (no description) +20224 - Awakening (Red) - (no description) +20300 - Male 1 (Green) - (no description) +20301 - Male 2 (Green) - (no description) +20302 - Leisure Look (Green) - (no description) +20303 - Male 4 (Green) - (no description) +20304 - Male 5 (Green) - (no description) +20305 - Male 6 (Green) - (no description) +20306 - Male 7 (Green) - (no description) +20307 - Male 8 (Green) - (no description) +20308 - Male 9 (Green) - (no description) +20309 - Male JP (Green) - (no description) +20310 - Male JP (Green) - (no description) +20311 - Male JP (Green) - (no description) +20312 - Male 10 (Green) - (no description) +20313 - Male JP (Green) - (no description) +20314 - Male 11 (Green) - (no description) +20316 - Male Face 12 - (no description) +20317 - Male Face 14 - (no description) +20318 - Male 12 (Green) - (no description) +20319 - Male 13 (Green) - (no description) +20320 - Fierce Edge (Green) - (no description) +20321 - Male Face JP - (no description) +20322 - Male Face 16(Green Eyes) - (no description) +20323 - malefaceGL(Green) - (no description) +20324 - Awakening (Green) - (no description) +20400 - Male 1 (Hazel) - (no description) +20401 - Male 2 (Hazel) - (no description) +20402 - Leisure Look (Hazel) - (no description) +20403 - Male 4 (Hazel) - (no description) +20404 - Male 5 (Hazel) - (no description) +20405 - Male 6 (Hazel) - (no description) +20406 - Male 7 (Hazel) - (no description) +20407 - Male 8 (Hazel) - (no description) +20408 - Male 9 (Hazel) - (no description) +20409 - Male JP (Hazel) - (no description) +20410 - Male JP (Hazel) - (no description) +20411 - Male JP (Hazel) - (no description) +20412 - Male 10 (Hazel) - (no description) +20413 - Male JP (Hazel) - (no description) +20414 - Male 11 (Hazel) - (no description) +20416 - Male Face 12 - (no description) +20417 - Male Face 14 - (no description) +20418 - Male 12 (Hazel) - (no description) +20419 - Male 13 (Hazel) - (no description) +20420 - Fierce Edge (Hazel) - (no description) +20421 - Male Face JP - (no description) +20422 - Male Face 16(Brown Eyes) - (no description) +20423 - malefaceGL(Hazel) - (no description) +20424 - Awakening (Hazel) - (no description) +20500 - Male 1 (Sapphire) - (no description) +20501 - Male 2 (Sapphire) - (no description) +20502 - Leisure Look (Sapphire) - (no description) +20503 - Male 4 (Sapphire) - (no description) +20504 - Male 5 (Sapphire) - (no description) +20505 - Male 6 (Sapphire) - (no description) +20506 - Male 7 (Sapphire) - (no description) +20507 - Male 8 (Sapphire) - (no description) +20508 - Male 9 (Sapphire) - (no description) +20509 - Male JP (Sapphire) - (no description) +20510 - Male JP (Sapphire) - (no description) +20511 - Male JP (Sapphire) - (no description) +20512 - Male 10 (Sapphire) - (no description) +20513 - Male JP (Sapphire) - (no description) +20514 - Male 11 (Sapphire) - (no description) +20516 - Male Face 12 - (no description) +20517 - Male Face 14 - (no description) +20518 - Male 12 (Sapphire) - (no description) +20519 - Male 13 (Sapphire) - (no description) +20520 - Fierce Edge (Sapphire) - (no description) +20521 - Male Face JP - (no description) +20522 - Male Face 16(Sapphire Eyes) - (no description) +20523 - malefaceGL(Sapphire) - (no description) +20524 - Awakening (Sapphire) - (no description) +20600 - Male 1 (Violet) - (no description) +20601 - Male 2 (Violet) - (no description) +20602 - Leisure Look (Violet) - (no description) +20603 - Male 4 (Violet) - (no description) +20604 - Male 5 (Violet) - (no description) +20605 - Male 6 (Violet) - (no description) +20606 - Male 7 (Violet) - (no description) +20607 - Male 8 (Violet) - (no description) +20608 - Male 9 (Violet) - (no description) +20609 - Male JP (Violet) - (no description) +20610 - Male JP (Violet) - (no description) +20611 - Male JP (Violet) - (no description) +20612 - Male 10 (Violet) - (no description) +20613 - Male JP (Violet) - (no description) +20614 - Male 11 (Violet) - (no description) +20616 - Male Face 12 - (no description) +20617 - Male Face 14 - (no description) +20618 - Male 12 (Violet) - (no description) +20619 - Male 13 (Violet) - (no description) +20620 - Fierce Edge (Violet) - (no description) +20621 - Male Face JP - (no description) +20622 - Male Face 16(Violet Eyes) - (no description) +20623 - malefaceGL(Violet) - (no description) +20624 - Awakening (Violet) - (no description) +20700 - Male 1 (Amethyst) - (no description) +20701 - Male 2 (Amethyst) - (no description) +20702 - Leisure Look (Amethyst) - (no description) +20703 - Male 4 (Amethyst) - (no description) +20704 - Male 5 (Amethyst) - (no description) +20705 - Male 6 (Amethyst) - (no description) +20706 - Male 7 (Amethyst) - (no description) +20707 - Male 8 (Amethyst) - (no description) +20708 - Male 9 (Amethyst) - (no description) +20709 - Male JP (Amethyst) - (no description) +20710 - Male JP (Amethyst) - (no description) +20711 - Male JP (Amethyst) - (no description) +20712 - Male 10 (Amethyst) - (no description) +20713 - Male JP (Amethyst) - (no description) +20714 - Male 11 (Amethyst) - (no description) +20716 - Male Face 12 - (no description) +20717 - Male Face 14 - (no description) +20718 - Male 12 (Amethyst) - (no description) +20719 - Male 13 (Amethyst) - (no description) +20720 - Fierce Edge (Amethyst) - (no description) +20721 - Male Face JP - (no description) +20722 - Male Face 16(Amethyst Eyes) - (no description) +20723 - malefaceGL(Amethyst) - (no description) +20724 - Awakening (Amethyst) - (no description) +21000 - Female 1 (Black) - (no description) +21001 - Female 2 (Black) - (no description) +21002 - Female 3 (Black) - (no description) +21003 - Female 4 (Black) - (no description) +21004 - Female 5 (Black) - (no description) +21005 - Female 6 (Black) - (no description) +21006 - Female 7 (Black) - (no description) +21007 - Female 8 (Black) - (no description) +21008 - Female 9 (Black) - (no description) +21009 - Female JP (Black) - (no description) +21010 - Female JP (Black) - (no description) +21011 - Female JP (Black) - (no description) +21012 - Female 10 (Black) - (no description) +21013 - Female JP (Black) - (no description) +21014 - Female 11 (Black) - (no description) +21016 - Female Face 12 - (no description) +21017 - Female Face 14 - (no description) +21018 - Athena's Grace (Black) - (no description) +21019 - Hera's Radiance (Black) - (no description) +21020 - Female Face 13 - (no description) +21021 - Compassion's Countenance (Black) - (no description) +21022 - femalefaceGL(Black) - (no description) +21024 - Leisure Look (Black) - (no description) +21100 - Female 1 (Blue) - (no description) +21101 - Female 2 (Blue) - (no description) +21102 - Female 3 (Blue) - (no description) +21103 - Female 4 (Blue) - (no description) +21104 - Female 5 (Blue) - (no description) +21105 - Female 6 (Blue) - (no description) +21106 - Female 7 (Blue) - (no description) +21107 - Female 8 (Blue) - (no description) +21108 - Female 9 (Blue) - (no description) +21109 - Female JP (Blue) - (no description) +21110 - Female JP (Blue) - (no description) +21111 - Female JP (Blue) - (no description) +21112 - Female 10 (Blue) - (no description) +21113 - Female JP (Blue) - (no description) +21114 - Female 11 (Blue) - (no description) +21116 - Female Face 12 - (no description) +21117 - Female Face 14 - (no description) +21118 - Athena's Grace (Blue) - (no description) +21119 - Hera's Radiance (Blue) - (no description) +21120 - Female Face 13 - (no description) +21121 - Compassion's Countenance (Blue) - (no description) +21122 - femalefaceGL(Blue) - (no description) +21124 - Leisure Look (Blue) - (no description) +21200 - Female 1 (Red) - (no description) +21201 - Female 2 (Red) - (no description) +21202 - Female 3 (Red) - (no description) +21203 - Female 4 (Red) - (no description) +21204 - Female 5 (Red) - (no description) +21205 - Female 6 (Red) - (no description) +21206 - Female 7 (Red) - (no description) +21207 - Female 8 (Red) - (no description) +21208 - Female 9 (Red) - (no description) +21209 - Female JP (Red) - (no description) +21210 - Female JP (Red) - (no description) +21211 - Female JP (Red) - (no description) +21212 - Female 10 (Red) - (no description) +21213 - Female JP (Red) - (no description) +21214 - Female 11 (Red) - (no description) +21216 - Female Face 12 - (no description) +21217 - Female Face 14 - (no description) +21218 - Athena's Grace (Red) - (no description) +21219 - Hera's Radiance(Red) - (no description) +21220 - Female Face 13 - (no description) +21221 - Compassion's Countenance (Red) - (no description) +21222 - femalefaceGL(Red) - (no description) +21224 - Leisure Look (Red) - (no description) +21300 - Female 1 (Green) - (no description) +21301 - Female 2 (Green) - (no description) +21302 - Female 3 (Green) - (no description) +21303 - Female 4 (Green) - (no description) +21304 - Female 5 (Green) - (no description) +21305 - Female 6 (Green) - (no description) +21306 - Female 7 (Green) - (no description) +21307 - Female 8 (Green) - (no description) +21308 - Female 9 (Green) - (no description) +21309 - Female JP (Green) - (no description) +21310 - Female JP (Green) - (no description) +21311 - Female JP (Green) - (no description) +21312 - Female 10 (Green) - (no description) +21313 - Female JP (Green) - (no description) +21314 - Female 11 (Green) - (no description) +21316 - Female Face 12 - (no description) +21317 - Female Face 14 - (no description) +21318 - Athena's Grace (Green) - (no description) +21319 - Hera's Radiance (Green) - (no description) +21320 - Female Face 13 - (no description) +21321 - Compassion's Countenance (Green) - (no description) +21322 - femalefaceGL(Green) - (no description) +21324 - Leisure Look (Green) - (no description) +21400 - Female 1 (Hazel) - (no description) +21401 - Female 2 (Hazel) - (no description) +21402 - Female 3 (Hazel) - (no description) +21403 - Female 4 (Hazel) - (no description) +21404 - Female 5 (Hazel) - (no description) +21405 - Female 6 (Hazel) - (no description) +21406 - Female 7 (Hazel) - (no description) +21407 - Female 8 (Hazel) - (no description) +21408 - Female 9 (Hazel) - (no description) +21409 - Female JP (Hazel) - (no description) +21410 - Female JP (Hazel) - (no description) +21411 - Female JP (Hazel) - (no description) +21412 - Female 10 (Hazel) - (no description) +21413 - Female JP (Hazel) - (no description) +21414 - Female 11 (Hazel) - (no description) +21416 - Female Face 12 - (no description) +21417 - Female Face 14 - (no description) +21418 - Athena's Grace (Hazel) - (no description) +21419 - Hera's Radiance (Hazel) - (no description) +21420 - Female Face 13 - (no description) +21421 - Compassion's Countenance (Hazel) - (no description) +21422 - femalefaceGL(Hazel) - (no description) +21424 - Leisure Look (Hazel) - (no description) +21500 - Female 1 (Sapphire) - (no description) +21501 - Female 2 (Sapphire) - (no description) +21502 - Female 3 (Sapphire) - (no description) +21503 - Female 4 (Sapphire) - (no description) +21504 - Female 5 (Sapphire) - (no description) +21505 - Female 6 (Sapphire) - (no description) +21506 - Female 7 (Sapphire) - (no description) +21507 - Female 8 (Sapphire) - (no description) +21508 - Female 9 (Sapphire) - (no description) +21509 - Female JP (Sapphire) - (no description) +21510 - Female JP (Sapphire) - (no description) +21511 - Female JP (Sapphire) - (no description) +21512 - Female 10 (Sapphire) - (no description) +21513 - Female JP (Sapphire) - (no description) +21514 - Female 11 (Sapphire) - (no description) +21516 - Female Face 12 - (no description) +21517 - Female Face 14 - (no description) +21518 - Athena's Grace (Sapphire) - (no description) +21519 - Hera's Radiance(Sapphire) - (no description) +21520 - Female Face 13 - (no description) +21521 - Compassion's Countenance (Sapphire) - (no description) +21522 - femalefaceGL(Sapphire) - (no description) +21524 - Leisure Look (Sapphire) - (no description) +21600 - Female 1 (Violet) - (no description) +21601 - Female 2 (Violet) - (no description) +21602 - Female 3 (Violet) - (no description) +21603 - Female 4 (Violet) - (no description) +21604 - Female 5 (Violet) - (no description) +21605 - Female 6 (Violet) - (no description) +21606 - Female 7 (Violet) - (no description) +21607 - Female 8 (Violet) - (no description) +21608 - Female 9 (Violet) - (no description) +21609 - Female JP (Violet) - (no description) +21610 - Female JP (Violet) - (no description) +21611 - Female JP (Violet) - (no description) +21612 - Female 10 (Violet) - (no description) +21613 - Female JP (Violet) - (no description) +21614 - Female 11 (Violet) - (no description) +21616 - Female Face 12 - (no description) +21617 - Female Face 14 - (no description) +21618 - Athena's Grace (Violet) - (no description) +21619 - Hera's Radiance (Violet) - (no description) +21620 - Female Face 13 - (no description) +21621 - Compassion's Countenance (Violet) - (no description) +21622 - femalefaceGL(Violet) - (no description) +21624 - Leisure Look (Violet) - (no description) +21700 - Female 1 (Amethyst) - (no description) +21701 - Female 2 (Amethyst) - (no description) +21702 - Female 3 (Amethyst) - (no description) +21703 - Female 4 (Amethyst) - (no description) +21704 - Female 5 (Amethyst) - (no description) +21705 - Female 6 (Amethyst) - (no description) +21706 - Female 7 (Amethyst) - (no description) +21707 - Female 8 (Amethyst) - (no description) +21708 - Female 9 (Amethyst) - (no description) +21709 - Female JP (Amethyst) - (no description) +21710 - Female JP (Amethyst) - (no description) +21711 - Female JP (Amethyst) - (no description) +21712 - Female 10 (Amethyst) - (no description) +21713 - Female JP (Amethyst) - (no description) +21714 - Female 11 (Amethyst) - (no description) +21716 - Female Face 12 - (no description) +21717 - Female Face 14 - (no description) +21718 - Athena's Grace (Amethyst) - (no description) +21719 - Hera's Radiance (Amethyst) - (no description) +21720 - Female Face 13 - (no description) +21721 - Compassion's Countenance (Amethyst) - (no description) +21722 - femalefaceGL(Amethyst) - (no description) +21724 - Leisure Look (Amethyst) - (no description) +20800 - Male 1 (White) - (no description) +20801 - Male 2 (White) - (no description) +20802 - Leisure Look (Black) - (no description) +20803 - Male 4 (White) - (no description) +20804 - Male 5 (White) - (no description) +20805 - Male 6 (White) - (no description) +20806 - Male 7 (White) - (no description) +20807 - Male 8 (White) - (no description) +20808 - Male 9 (White) - (no description) +20809 - Male JP (White) - (no description) +20810 - Male JP (White) - (no description) +20811 - Male JP (White) - (no description) +20812 - Male 10 (White) - (no description) +20813 - Male JP (White) - (no description) +20814 - Male 11 (White) - (no description) +20816 - Male Face 12 (White) - (no description) +20817 - Male Face 14 (White) - (no description) +20818 - Male 12 (White) - (no description) +20819 - Male 13 (White) - (no description) +20820 - Fierce Edge (White) - (no description) +20821 - Male Face JP (White) - (no description) +20822 - Male Face 16 (White Eyes) - (no description) +20823 - malefaceGL (White) - (no description) +20824 - Awakening (White) - (no description) +20826 - Closed Lids (White) - (no description) +21800 - Female 1 (White) - (no description) +21801 - Female 2 (White) - (no description) +21802 - Female 3 (White) - (no description) +21803 - Female 4 (White) - (no description) +21804 - Female 5 (White) - (no description) +21805 - Female 6 (White) - (no description) +21806 - Female 7 (White) - (no description) +21807 - Female 8 (White) - (no description) +21808 - Female 9 (White) - (no description) +21809 - Female JP (White) - (no description) +21810 - Female JP (White) - (no description) +21811 - Female JP (White) - (no description) +21812 - Female 10 (White) - (no description) +21813 - Female JP (White) - (no description) +21814 - Female 11 (White) - (no description) +21816 - Female Face 12 (White) - (no description) +21817 - Female Face 14 (White) - (no description) +21818 - Athena's Grace (White) - (no description) +21819 - Hera's Radiance (White) - (no description) +21820 - Female Face 13 (White) - (no description) +21821 - Compassion's Countenance (White) - (no description) +21822 - femalefaceGL (White) - (no description) +21824 - Leisure Look (White) - (no description) +21825 - Closed Lids (White) - (no description) +20126 - Closed Lids (Blue) - (no description) +20226 - Closed Lids (Red) - (no description) +20326 - Closed Lids (Green) - (no description) +20426 - Closed Lids (Hazel) - (no description) +20526 - Closed Lids (Sapphire) - (no description) +20626 - Closed Lids (Violet) - (no description) +20726 - Closed Lids (Amethyst) - (no description) +20026 - Closed Lids (Black) - (no description) +21025 - Closed Lids (Black) - (no description) +21125 - Closed Lids (Blue) - (no description) +21225 - Closed Lids (Red) - (no description) +21325 - Closed Lids (Green) - (no description) +21425 - Closed Lids (Hazel) - (no description) +21525 - Closed Lids (Sapphire) - (no description) +21625 - Closed Lids (Violet) - (no description) +21725 - Closed Lids (Amethyst) - (no description) +20025 - Male 17 (Black) - (no description) +20125 - Male 17 (Blue) - (no description) +20225 - Male 17 (Red) - (no description) +20325 - Male 17 (Green) - (no description) +20425 - Male 17 (Hazel) - (no description) +20525 - Male 17 (Sapphire) - (no description) +20625 - Male 17 (Violet) - (no description) +20725 - Male 17 (Amethyst) - (no description) +20027 - Male 18 (Black) - (no description) +20127 - Male 18 (Blue) - (no description) +20227 - Male 18 (Red) - (no description) +20327 - Male 18 (Green) - (no description) +20427 - Male 18 (Hazel) - (no description) +20527 - Male 18 (Sapphire) - (no description) +20627 - Male 18 (Violet) - (no description) +20727 - Male 18 (Amethyst) - (no description) +20028 - Male Face 19 - (no description) +20128 - Male Face 19(Blue Eyes) - (no description) +20228 - Male Face 19(Red Eyes) - (no description) +20328 - Male Face 19(Green Eyes) - (no description) +20428 - Male Face 19(Brown Eyes) - (no description) +20528 - Male Face 19(Sapphire Eyes) - (no description) +20628 - Male Face 19(Violet Eyes) - (no description) +20728 - Male Face 19(Amethyst Eyes) - (no description) +21023 - Female Face 17 - (no description) +21123 - Female Face 17(Blue Eyes) - (no description) +21223 - Female Face 17(Red Eyes) - (no description) +21323 - Female Face 17(Green Eyes) - (no description) +21423 - Female Face 17(Brown Eyes) - (no description) +21523 - Female Face 17(Sapphire Eyes) - (no description) +21623 - Female Face 17(Violet Eyes) - (no description) +21723 - Female Face 17(Amethyst Eyes) - (no description) +21026 - Female Face 19 - (no description) +21126 - Female Face 19(Blue Eyes) - (no description) +21226 - Female Face 19(Red Eyes) - (no description) +21326 - Female Face 19(Green Eyes) - (no description) +21426 - Female Face 19(Brown Eyes) - (no description) +21526 - Female Face 19(Sapphire Eyes) - (no description) +21626 - Female Face 19(Violet Eyes) - (no description) +21726 - Female Face 19(Amethyst Eyes) - (no description) +20828 - Male Face 19(White Eyes) - (no description) +21823 - Female Face 17(Amethyst Eyes) - (no description) +21826 - Female Face 19(White Eyes) - (no description) +20029 - Male Face 20 - (no description) +20129 - Male Face 20 - (no description) +20229 - Male Face 20 - (no description) +20329 - Male Face 20 - (no description) +20429 - Male Face 20 - (no description) +20529 - Male Face 20 - (no description) +20629 - Male Face 20 - (no description) +20729 - Male Face 20 - (no description) +21027 - Female Face 20 - (no description) +21127 - Female Face 20 - (no description) +21227 - Female Face 20 - (no description) +21327 - Female Face 20 - (no description) +21427 - Female Face 20 - (no description) +21527 - Female Face 20 - (no description) +21627 - Female Face 20 - (no description) +21727 - Female Face 20 - (no description) +20031 - Male Face 21 - (no description) +20131 - Male Face 21 - (no description) +20231 - Male Face 21 - (no description) +20331 - Male Face 21 - (no description) +20431 - Male Face 21 - (no description) +20531 - Male Face 21 - (no description) +20631 - Male Face 21 - (no description) +20731 - Male Face 21 - (no description) +20032 - Male Face 22 - (no description) +20132 - Male Face 22 - (no description) +20232 - Male Face 22 - (no description) +20332 - Male Face 22 - (no description) +20432 - Male Face 22 - (no description) +20532 - Male Face 22 - (no description) +20632 - Male Face 22 - (no description) +20732 - Male Face 22 - (no description) +21029 - Female Face 21 - (no description) +21129 - Female Face 21 - (no description) +21229 - Female Face 21 - (no description) +21329 - Female Face 21 - (no description) +21429 - Female Face 21 - (no description) +21529 - Female Face 21 - (no description) +21629 - Female Face 21 - (no description) +21729 - Female Face 21 - (no description) +21030 - Female Face 22 - (no description) +21130 - Female Face 22 - (no description) +21230 - Female Face 22 - (no description) +21330 - Female Face 22 - (no description) +21430 - Female Face 22 - (no description) +21530 - Female Face 22 - (no description) +21630 - Female Face 22 - (no description) +21730 - Female Face 22 - (no description) diff --git a/handbook/Equip/Glove.txt b/handbook/Equip/Glove.txt new file mode 100644 index 0000000000..f2be2128c2 --- /dev/null +++ b/handbook/Equip/Glove.txt @@ -0,0 +1,239 @@ +1080000 - White Ninja Gloves - (no description) +1080001 - Red Ninja Gloves - (no description) +1080002 - Black Ninja Gloves - (no description) +1081000 - Red Ninja Gloves - (no description) +1081001 - Blue Ninja Gloves - (no description) +1081002 - Wedding Gloves - (no description) +1081003 - White Cat Gloves - (no description) +1081004 - Black Cat Gloves - (no description) +1082000 - Steel Fingerless Gloves - (no description) +1082001 - White Fingerless Gloves - (no description) +1082002 - Work Gloves - (no description) +1082003 - Juno - (no description) +1082004 - Venon - (no description) +1082005 - Steel Missel - (no description) +1082006 - Orihalcon Missel - (no description) +1082007 - Bronze Missel - (no description) +1082008 - Steel Briggon - (no description) +1082009 - Steel Brist - (no description) +1082010 - Mithril Brist - (no description) +1082011 - Gold Brist - (no description) +1082012 - Basic Archer Gloves - (no description) +1082013 - Blue Diros - (no description) +1082014 - Red Diros - (no description) +1082015 - Green Diros - (no description) +1082016 - Blue Savata - (no description) +1082017 - Red Savata - (no description) +1082018 - Dark Savata - (no description) +1082019 - Lemona - (no description) +1082020 - Blue Morrican - (no description) +1082021 - Green Morrican - (no description) +1082022 - Purple Morrican - (no description) +1082023 - Iron Knuckle - (no description) +1082024 - Adamantium Knuckle - (no description) +1082025 - Dark Knuckle - (no description) +1082026 - Ocean Mesana - (no description) +1082027 - Blood Mesana - (no description) +1082028 - Dark Mesana - (no description) +1082029 - Brown Duo - (no description) +1082030 - Blue Duo - (no description) +1082031 - Black Duo - (no description) +1082032 - Bronze Mischief - (no description) +1082033 - Mithril Mischief - (no description) +1082034 - Dark Mischief - (no description) +1082035 - Yellow Briggon - (no description) +1082036 - Dark Briggon - (no description) +1082037 - Bronze Wolfskin - (no description) +1082038 - Mithril Wolfskin - (no description) +1082039 - Dark Wolfskin - (no description) +1082040 - Red Boxing Gloves - (no description) +1082041 - Blue Boxing Gloves - (no description) +1082042 - Steel Sylvia - (no description) +1082043 - Silver Sylvia - (no description) +1082044 - Gold Sylvia - (no description) +1082045 - Gold Arbion - (no description) +1082046 - Steel Arbion - (no description) +1082047 - Orihalcon Arbion - (no description) +1082048 - Brown Marker - (no description) +1082049 - Green Marker - (no description) +1082050 - Black Marker - (no description) +1082051 - Red Lutia - (no description) +1082052 - Blue Lutia - (no description) +1082053 - Black Lutia - (no description) +1082054 - Red Noel - (no description) +1082055 - Blue Noel - (no description) +1082056 - Dark Noel - (no description) +1082057 - Brown Baseball Glove - (no description) +1082058 - Blue Baseball Glove - (no description) +1082059 - Bronze Clench - (no description) +1082060 - Sapphire Clench - (no description) +1082061 - Dark Clench - (no description) +1082062 - Red Arten - (no description) +1082063 - Blue Arten - (no description) +1082064 - Dark Arten - (no description) +1082065 - Blue Moon Gloves - (no description) +1082066 - Brown Moon Gloves - (no description) +1082067 - Red Moon Gloves - (no description) +1082068 - Bronze Scaler - (no description) +1082069 - Mithril Scaler - (no description) +1082070 - Gold Scaler - (no description) +1082071 - Aqua Brace - (no description) +1082072 - Gold Brace - (no description) +1082073 - Dark Brace - (no description) +1082074 - Dark Cleave - (no description) +1082075 - Red Cleave - (no description) +1082076 - Gold Cleave - (no description) +1082077 - White Bandage - (no description) +1082078 - Brown Bandage - (no description) +1082079 - Black Bandage - (no description) +1082080 - Dark Penance - (no description) +1082081 - Red Pennance - (no description) +1082082 - Blue Pennance - (no description) +1082083 - Dark Willow - (no description) +1082084 - Blue Willow - (no description) +1082085 - Red Willow - (no description) +1082086 - Steel Manute - (no description) +1082087 - Gold Manute - (no description) +1082088 - Dark Manute - (no description) +1082089 - Oaker Garner - (no description) +1082090 - Sephia Garner - (no description) +1082091 - Dark Garner - (no description) +1082092 - Bronze Pow - (no description) +1082093 - Steal Pow - (no description) +1082094 - Gold Pow - (no description) +1082095 - Bronze Rover - (no description) +1082096 - Silver Rover - (no description) +1082097 - Gold Rover - (no description) +1082098 - Brown Lorin - (no description) +1082099 - Blue Lorin - (no description) +1082100 - Dark Lorin - (no description) +1082101 - Santa Gloves - (no description) +1082102 - Transparent Gloves - Use these Gloves if you want to make your Gloves transparent while still using all of the stats your Gloves possess. +1082103 - Bronze Husk - (no description) +1082104 - Mithril Husk - (no description) +1082105 - Dark Husk - (no description) +1082106 - Blue Eyes - (no description) +1082107 - Gold Eyes - (no description) +1082108 - Dark Eyes - (no description) +1082109 - Red Cordon - (no description) +1082110 - Blue Cordon - (no description) +1082111 - Green Cordon - (no description) +1082112 - Dark Cordon - (no description) +1082113 - Hair-Cutter Gloves - (no description) +1082114 - Sapphire Emperor - (no description) +1082115 - Emerald Emperor - (no description) +1082116 - Blood Emperor - (no description) +1082117 - Dark Emperor - (no description) +1082118 - Green Larceny - (no description) +1082119 - Purple Larceny - (no description) +1082120 - Blood Larceny - (no description) +1082121 - Green Clarity - (no description) +1082122 - Blue Clarity - (no description) +1082123 - Dark Clarity - (no description) +1082124 - Mesoranger Gloves - (no description) +1082125 - Red Focus - (no description) +1082126 - Green Focus - (no description) +1082127 - Dark Focus - (no description) +1082128 - Green Imperial - (no description) +1082129 - Purple Imperial - (no description) +1082130 - Dark Imperial - (no description) +1082131 - Blue Sage - (no description) +1082132 - Green Sage - (no description) +1082133 - Red Sage - (no description) +1082134 - Dark Pachone - (no description) +1082135 - Blue Anelin - (no description) +1082136 - Green Anelin - (no description) +1082137 - Red Anelin - (no description) +1082138 - Dark Anelin - (no description) +1082139 - Green Korben - (no description) +1082140 - Blue Korben - (no description) +1082141 - Dark Korben - (no description) +1082142 - Green Mystra - (no description) +1082143 - Purple Mystra - (no description) +1082144 - Dark Mystra - (no description) +1082145 - Yellow Work Gloves - (no description) +1082146 - Red Work Gloves - (no description) +1082147 - Blue Work Gloves - (no description) +1082148 - Purple Work Gloves - (no description) +1082149 - Brown Work Gloves - (no description) +1082150 - Grey Work Gloves - (no description) +1082151 - Green Ciara - (no description) +1082152 - Blue Ciara - (no description) +1082153 - Red Ciara - (no description) +1082154 - Purple Ciara - (no description) +1082155 - Snowman Gloves - (no description) +1082156 - Teddy Bear Gloves - (no description) +1082157 - Skull Gloves - (no description) +1082158 - Red Arcina - (no description) +1082159 - Blue Arcina - (no description) +1082160 - Green Arcina - (no description) +1082161 - Star Gloves - (no description) +1082162 - Love Gloves - (no description) +1082163 - Red Hunter Gloves - (no description) +1082164 - Blue Elemental Gloves - (no description) +1082167 - Black Garina Gloves - (no description) +1082168 - Blue Dragon Gauntlet - (no description) +1082169 - Moon Bunny Gloves - (no description) +1082170 - Rose Crystal Watch - (no description) +1082171 - Blue Watch - (no description) +1082172 - Snowflake Gloves - (no description) +1082173 - Lightning Gloves - (no description) +1082174 - Lunar Gloves - (no description) +1082175 - Red Marker - (no description) +1082176 - Blue Marker - (no description) +1082177 - Purple Marker - (no description) +1082178 - Pink Marker - (no description) +1082179 - Yellow Marker - (no description) +1082180 - Green Lagger Halfglove - (no description) +1082183 - Brown Leather Armor Glove - (no description) +1082186 - Hard Leather Glove - (no description) +1082189 - Yellow Tartis - (no description) +1082192 - Brown Jeweled - (no description) +1082195 - Brown Barbee - (no description) +1082198 - Brown Royce - (no description) +1082201 - Black Schult - (no description) +1082204 - Black Bisk - (no description) +1082207 - Blue Halfglove - (no description) +1082210 - Red Martier - (no description) +1082213 - Black Skellduke - (no description) +1082216 - Canopus Glove - (no description) +1082217 - Wolf Gauntlets - (no description) +1082218 - Dragon Gauntlet - A gauntlet worn by the fearsome Dragon Ninja Clan. Imbued with strange properties, as if it was experiemented on... +1082221 - Golden Gloves - (no description) +1082222 - Mechanical Glove - (no description) +1082223 - Stormcaster Gloves - A relic formerly worn by the Stormcaster knights, these gloves are renowned for their offensive capabilities. +1082224 - Tania Gloves - (no description) +1082225 - Mercury Gloves - (no description) +1082227 - Transparent Skull Glove - (no description) +1082228 - Green Mittens - (no description) +1082229 - Heart Ribbon Glove - (no description) +1082230 - Glitter Gloves - (no description) +1082231 - Luxury Wristwatch - (no description) +1082232 - Goddess Wristband - (no description) +1082233 - Moomoo Gloves - (no description) +1082246 - Flamekeeper Cordon - (no description) +1082249 - Neon Amulet - (no description) +1082247 - Puffy Ram Gloves - (no description) +1082234 - Timeless Bergamot - (no description) +1082235 - Timeless Hermosa - (no description) +1082236 - Timeless Presto - (no description) +1082237 - Timeless Lubav - (no description) +1082238 - Timeless Charlston - (no description) +1082239 - Reverse Bergamot - (no description) +1082240 - Reverse Hermosa - (no description) +1082241 - Reverse Presto - (no description) +1082242 - Reverse Lubav - (no description) +1082243 - Reverse Charlston - (no description) +1082244 - Agent O's Nylon Gloves - (no description) +1082245 - Agent O's Leather Gloves - (no description) +1082251 - Rock Chain Armlet - (no description) +1082255 - Maple Racing Glove - (no description) +1082250 - Treacherous Wolf Gloves - (no description) +1082252 - Maple Gage - (no description) +1082256 - Andras Gloves - (no description) +1082257 - Marbas Gloves - (no description) +1082258 - Valefor Gloves - (no description) +1082259 - Amdusias Gloves - (no description) +1082260 - Crocell Gloves - (no description) +1082254 - Mushking Leather Glove - (no description) +1082261 - Freud's Gloves - (no description) diff --git a/handbook/Equip/Hair.txt b/handbook/Equip/Hair.txt new file mode 100644 index 0000000000..eebe4640d4 --- /dev/null +++ b/handbook/Equip/Hair.txt @@ -0,0 +1,1504 @@ +30000 - Black Toben - (no description) +30001 - Red Toben - (no description) +30002 - Orange Toben - (no description) +30003 - Blonde Toben - (no description) +30004 - Green Toben - (no description) +30005 - Blue Toben - (no description) +30006 - Purple Toben - (no description) +30007 - Brown Toben - (no description) +30010 - Zeta - (no description) +30020 - Black Rebel - (no description) +30021 - Red Rebel - (no description) +30022 - Orange Rebel - (no description) +30023 - Blonde Rebel - (no description) +30024 - Green Rebel - (no description) +30025 - Blue Rebel - (no description) +30026 - Purple Rebel - (no description) +30027 - Brown Rebel - (no description) +30030 - Black Buzz - (no description) +30031 - Red Buzz - (no description) +30032 - Orange Buzz - (no description) +30033 - Blonde Buzz - (no description) +30034 - Green Buzz - (no description) +30035 - Blue Buzz - (no description) +30036 - Purple Buzz - (no description) +30037 - Brown Buzz - (no description) +30040 - Black Rockstar - (no description) +30041 - Red Rockstar - (no description) +30042 - Orange Rockstar - (no description) +30043 - Blonde Rockstar - (no description) +30044 - Green Rockstar - (no description) +30045 - Blue Rockstar - (no description) +30046 - Purple Rockstar - (no description) +30047 - Brown Rockstar - (no description) +30050 - Black Metro - (no description) +30051 - Red Metro - (no description) +30052 - Orange Metro - (no description) +30053 - Blonde Metro - (no description) +30054 - Green Metro - (no description) +30055 - Blue Metro - (no description) +30056 - Purple Metro - (no description) +30057 - Brown Metro - (no description) +30060 - Black Catalyst - (no description) +30061 - Red Catalyst - (no description) +30062 - Orange Catalyst - (no description) +30063 - Blonde Catalyst - (no description) +30064 - Green Catalyst - (no description) +30065 - Blue Catalyst - (no description) +30066 - Purple Catalyst - (no description) +30067 - Brown Catalyst - (no description) +30070 - All Back - (no description) +30080 - Military Buzzcut - (no description) +30090 - Mohawk - (no description) +30100 - Blue Fantasy - (no description) +30101 - Maroon Fantasy - (no description) +30102 - Brown Fantasy - (no description) +30103 - Green Fantasy - (no description) +30104 - Blue-Green Fantasy - (no description) +30110 - Black Fireball - (no description) +30111 - Red Fireball - (no description) +30112 - Orange Fireball - (no description) +30113 - Blonde Fireball - (no description) +30114 - Green Fireball - (no description) +30115 - Blue Fireball - (no description) +30116 - Purple Fireball - (no description) +30117 - Brown Fireball - (no description) +30120 - Black Vincent - (no description) +30121 - Red Vincent - (no description) +30122 - Orange Vincent - (no description) +30123 - Blonde Vincent - (no description) +30124 - Green Vincent - (no description) +30125 - Blue Vincent - (no description) +30126 - Purple Vincent - (no description) +30127 - Brown Vincent - (no description) +30130 - Black Antagonist - (no description) +30131 - Red Antagonist - (no description) +30132 - Orange Antagonist - (no description) +30133 - Blonde Antagonist - (no description) +30134 - Green Antagonist - (no description) +30135 - Blue Antagonist - (no description) +30136 - Purple Antagonist - (no description) +30137 - Brown Antagonist - (no description) +30140 - Black Topknot - (no description) +30141 - Red Topknot - (no description) +30142 - Orange Topknot - (no description) +30143 - Blonde Topknot - (no description) +30144 - Green Topknot - (no description) +30145 - Blue Topknot - (no description) +30146 - Purple Topknot - (no description) +30147 - Brown Topknot - (no description) +30150 - Black Dreadlocks - (no description) +30151 - Red Dreadlocks - (no description) +30152 - Orange Dreadlocks - (no description) +30153 - Blonde Dreadlocks - (no description) +30154 - Green Dreadlocks - (no description) +30155 - Blue Dreadlocks - (no description) +30156 - Purple Dreadlocks - (no description) +30157 - Brown Dreadlocks - (no description) +30160 - Black Trip Scratch - (no description) +30161 - Red Trip Scratch - (no description) +30162 - Orange Trip Scratch - (no description) +30163 - Blonde Trip Scratch - (no description) +30164 - Green Trip Scratch - (no description) +30165 - Blue Trip Scratch - (no description) +30166 - Purple Trip Scratch - (no description) +30167 - Brown Trip Scratch - (no description) +30170 - Black Line Scratch - (no description) +30171 - Red Line Scratch - (no description) +30172 - Orange Line Scratch - (no description) +30173 - Blonde Line Scratch - (no description) +30174 - Green Line Scratch - (no description) +30175 - Blue Line Scratch - (no description) +30176 - Purple Line Scratch - (no description) +30177 - Brown Line Scratch - (no description) +30180 - Black Mane - (no description) +30181 - Red Mane - (no description) +30182 - Orange Mane - (no description) +30183 - Blonde Mane - (no description) +30184 - Green Mane - (no description) +30185 - Blue Mane - (no description) +30186 - Purple Mane - (no description) +30187 - Brown Mane - (no description) +30190 - Black Bowl Cut - (no description) +30191 - Red Bowl Cut - (no description) +30192 - Orange Bowl Cut - (no description) +30193 - Blonde Bowl Cut - (no description) +30194 - Green Bowl Cut - (no description) +30195 - Blue Bowl Cut - (no description) +30196 - Purple Bowl Cut - (no description) +30197 - Brown Bowl Cut - (no description) +30200 - Black Wind - (no description) +30201 - Red Wind - (no description) +30202 - Orange Wind - (no description) +30203 - Blonde Wind - (no description) +30204 - Green Wind - (no description) +30205 - Blue Wind - (no description) +30206 - Purple Wind - (no description) +30207 - Brown Wind - (no description) +30210 - Black Shaggy Wax - (no description) +30211 - Red Shaggy Wax - (no description) +30212 - Orange Shaggy Wax - (no description) +30213 - Blonde Shaggy Wax - (no description) +30214 - Green Shaggy Wax - (no description) +30215 - Blue Shaggy Wax - (no description) +30216 - Purple Shaggy Wax - (no description) +30217 - Brown Shaggy Wax - (no description) +30220 - Black Grooovy Do - (no description) +30221 - Red Grooovy Do - (no description) +30222 - Orange Grooovy Do - (no description) +30223 - Blonde Grooovy Do - (no description) +30224 - Green Grooovy Do - (no description) +30225 - Blue Grooovy Do - (no description) +30226 - Purple Grooovy Do - (no description) +30227 - Brown Grooovy Do - (no description) +30230 - Black Foil Perm - (no description) +30231 - Red Foil Perm - (no description) +30232 - Orange Foil Perm - (no description) +30233 - Blonde Foil Perm - (no description) +30234 - Green Foil Perm - (no description) +30235 - Blue Foil Perm - (no description) +30236 - Purple Foil Perm - (no description) +30237 - Brown Foil Perm - (no description) +30240 - Black Monkey - (no description) +30241 - Red Monkey - (no description) +30242 - Orange Monkey - (no description) +30243 - Blonde Monkey - (no description) +30244 - Green Monkey - (no description) +30245 - Blue Monkey - (no description) +30246 - Purple Monkey - (no description) +30247 - Brown Monkey - (no description) +30250 - Black Afro - (no description) +30251 - Red Afro - (no description) +30252 - Orange Afro - (no description) +30253 - Blonde Afro - (no description) +30254 - Green Afro - (no description) +30255 - Blue Afro - (no description) +30256 - Purple Afro - (no description) +30257 - Brown Afro - (no description) +30260 - Black Metrosexual - (no description) +30261 - Red Metrosexual - (no description) +30262 - Orange Metrosexual - (no description) +30263 - Blonde Metrosexual - (no description) +30264 - Green Metrosexual - (no description) +30265 - Blue Metrosexual - (no description) +30266 - Purple Metrosexual - (no description) +30267 - Brown Metrosexual - (no description) +30270 - Black w/ Bald Spot - (no description) +30271 - Red w/ Bald Spot - (no description) +30272 - Orange w/ Bald Spot - (no description) +30273 - Blonde w/ Bald Spot - (no description) +30274 - Green w/ Bald Spot - (no description) +30275 - Blue w/ Bald Spot - (no description) +30276 - Purple w/ Bald Spot - (no description) +30277 - Brown w/ Bald Spot - (no description) +30280 - Black Mohecan Shaggy Do - (no description) +30281 - Red Mohecan Shaggy Do - (no description) +30282 - Orange Mohecan Shaggy Do - (no description) +30283 - Blonde Mohecan Shaggy Do - (no description) +30284 - Green Mohecan Shaggy Do - (no description) +30285 - Blue Mohecan Shaggy Do - (no description) +30286 - Purple Mohecan Shaggy Do - (no description) +30287 - Brown Mohecan Shaggy Do - (no description) +30290 - Black Old Man 'Do - (no description) +30291 - Red Old Man 'Do - (no description) +30292 - Orange Old Man 'Do - (no description) +30293 - Blonde Old Man 'Do - (no description) +30294 - Green Old Man 'Do - (no description) +30295 - Blue Old Man 'Do - (no description) +30296 - Purple Old Man 'Do - (no description) +30297 - Brown Old Man 'Do - (no description) +30300 - Black Romance - (no description) +30301 - Red Romance - (no description) +30302 - Orange Romance - (no description) +30303 - Blond Romance - (no description) +30304 - Green Romance - (no description) +30305 - Blue Romance - (no description) +30306 - Purple Romance - (no description) +30307 - Brown Romance - (no description) +30310 - Black Acorn - (no description) +30311 - Red Acorn - (no description) +30312 - Orange Acorn - (no description) +30313 - Blonde Acorn - (no description) +30314 - Green Acorn - (no description) +30315 - Blue Acorn - (no description) +30316 - Purple Acorn - (no description) +30317 - Brown Acorn - (no description) +30320 - Black Afro - (no description) +30321 - Red Afro - (no description) +30322 - Orange Afro - (no description) +30323 - Blonde Afro - (no description) +30324 - Green Afro - (no description) +30325 - Blue Afro - (no description) +30326 - Purple Afro - (no description) +30327 - Brown Afro - (no description) +30330 - Black Cabana Boy - (no description) +30331 - Red Cabana Boy - (no description) +30332 - Orange Cabana Boy - (no description) +30333 - Blonde Cabana Boy - (no description) +30334 - Green Cabana Boy - (no description) +30335 - Blue Cabana Boy - (no description) +30336 - Purple Cabana Boy - (no description) +30337 - Brown Cabana Boy - (no description) +30340 - Black Tristan - (no description) +30341 - Red Tristan - (no description) +30342 - Orange Tristan - (no description) +30343 - Blonde Tristan - (no description) +30344 - Green Tristan - (no description) +30345 - Blue Tristan - (no description) +30346 - Purple Tristan - (no description) +30347 - Brown Tristan - (no description) +30350 - Black Astro - (no description) +30351 - Red Astro - (no description) +30352 - Orange Astro - (no description) +30353 - Blonde Astro - (no description) +30354 - Green Astro - (no description) +30355 - Blue Astro - (no description) +30356 - Purple Astro - (no description) +30357 - Brown Astro - (no description) +30360 - Black Spiky Tail - (no description) +30361 - Red Spiky Tail - (no description) +30362 - Orange Spiky Tail - (no description) +30363 - Blonde Spiky Tail - (no description) +30364 - Green Spiky Tail - (no description) +30365 - Blue Spiky Tail - (no description) +30366 - Purple Spiky Tail - (no description) +30367 - Brown Spiky Tail - (no description) +30370 - Black Shaggy Dragon - (no description) +30371 - Red Shaggy Dragon - (no description) +30372 - Orange Shaggy Dragon - (no description) +30373 - Blond Shaggy Dragon - (no description) +30374 - Green Shaggy Dragon - (no description) +30375 - Blue Shaggy Dragon - (no description) +30376 - Purple Shaggy Dragon - (no description) +30377 - Brown Shaggy Dragon - (no description) +30400 - Black Tribal Buzz - (no description) +30401 - Red Tribal Buzz - (no description) +30402 - Orange Tribal Buzz - (no description) +30403 - Blond Tribal Buzz - (no description) +30404 - Green Tribal Buzz - (no description) +30405 - Blue Tribal Buzz - (no description) +30406 - Purple Tribal Buzz - (no description) +30407 - Brown Tribal Buzz - (no description) +30410 - Black Natural - (no description) +30411 - Red Natural - (no description) +30412 - Orange Natural - (no description) +30413 - Blond Natural - (no description) +30414 - Green Natural - (no description) +30415 - Blue Natural - (no description) +30416 - Purple Natural - (no description) +30417 - Brown Natural - (no description) +30420 - Black Cozy Amber - (no description) +30421 - Red Cozy Amber - (no description) +30422 - Orange Cozy Amber - (no description) +30423 - Blond Cozy Amber - (no description) +30424 - Green Cozy Amber - (no description) +30425 - Blue Cozy Amber - (no description) +30426 - Purple Cozy Amber - (no description) +30427 - Brown Cozy Amber - (no description) +30430 - Skin Head - (no description) +30431 - Skin Head - (no description) +30432 - Skin Head - (no description) +30433 - Skin Head - (no description) +30434 - Skin Head - (no description) +30435 - Skin Head - (no description) +30436 - Skin Head - (no description) +30437 - Skin Head - (no description) +30440 - Black Fury - (no description) +30441 - Red Fury - (no description) +30442 - Orange Fury - (no description) +30443 - Blonde Fury - (no description) +30444 - Green Fury - (no description) +30445 - Blue Fury - (no description) +30446 - Purple Fury - (no description) +30447 - Brown Fury - (no description) +30450 - Black Casanova - (no description) +30451 - Red Casanova - (no description) +30452 - Orange Casanova - (no description) +30453 - Blonde Casanova - (no description) +30454 - Green Casanova - (no description) +30455 - Blue Casanova - (no description) +30456 - Purple Casanova - (no description) +30457 - Brown Casanova - (no description) +30460 - Black Tornade Hair - (no description) +30461 - Red Tornade Hair - (no description) +30462 - Orange Tornade Hair - (no description) +30463 - Blond Tornade Hair - (no description) +30464 - Green Tornade Hair - (no description) +30465 - Blue Tornade Hair - (no description) +30466 - Purple Tornade Hair - (no description) +30467 - Brown Tornade Hair - (no description) +30470 - Black Slick Dean - (no description) +30471 - Red Slick Dean - (no description) +30472 - Orange Slick Dean - (no description) +30473 - Blonde Slick Dean - (no description) +30474 - Green Slick Dean - (no description) +30475 - Blue Slick Dean - (no description) +30476 - Purple Slick Dean - (no description) +30477 - Brown Slick Dean - (no description) +30480 - Black Babby Cut - (no description) +30481 - Red Babby Cut - (no description) +30482 - Orange Babby Cut - (no description) +30483 - Blonde Babby Cut - (no description) +30484 - Green Babby Cut - (no description) +30485 - Blue Babby Cut - (no description) +30486 - Purple Babby Cut - (no description) +30487 - Brown Babby Cut - (no description) +30490 - Black Messy Spike - (no description) +30491 - Red Messy Spike - (no description) +30492 - Orange Messy Spike - (no description) +30493 - Blonde Messy Spike - (no description) +30494 - Green Messy Spike - (no description) +30495 - Blue Messy Spike - (no description) +30496 - Purple Messy Spike - (no description) +30497 - Brown Messy Spike - (no description) +30510 - Black Rockie - (no description) +30511 - Red Rockie - (no description) +30512 - Orange Rockie - (no description) +30513 - Blonde Rockie - (no description) +30514 - Green Rockie - (no description) +30515 - Blue Rockie - (no description) +30516 - Purple Rockie - (no description) +30517 - Brown Rockie - (no description) +30520 - Black Hontas - (no description) +30521 - Red Hontas - (no description) +30522 - Orange Hontas - (no description) +30523 - Blonde Hontas - (no description) +30524 - Green Hontas - (no description) +30525 - Blue Hontas - (no description) +30526 - Purple Hontas - (no description) +30527 - Brown Hontas - (no description) +30530 - Black Baldie - (no description) +30531 - Red Baldie - (no description) +30532 - Orange Baldie - (no description) +30533 - Blonde Baldie - (no description) +30534 - Green Baldie - (no description) +30535 - Blue Baldie - (no description) +30536 - Purple Baldie - (no description) +30537 - Brown Baldie - (no description) +30540 - Black Robot - (no description) +30541 - Red Robot - (no description) +30542 - Orange Robot - (no description) +30543 - Blonde Robot - (no description) +30544 - Green Robot - (no description) +30545 - Blue Robot - (no description) +30546 - Purple Robot - (no description) +30547 - Brown Robot - (no description) +30550 - Black Kongfu Braids - (no description) +30551 - Red Kongfu Braids - (no description) +30552 - Orange Kongfu Braids - (no description) +30553 - Blonde Kongfu Braids - (no description) +30554 - Green Kongfu Braids - (no description) +30555 - Blue Kongfu Braids - (no description) +30556 - Purple Kongfu Braids - (no description) +30557 - Brown Kongfu Braids - (no description) +30560 - Black Grand Lionman - (no description) +30561 - Red Grand Lionman - (no description) +30562 - Orange Grand Lionman - (no description) +30563 - Blonde Grand Lionman - (no description) +30564 - Green Grand Lionman - (no description) +30565 - Blue Grand Lionman - (no description) +30566 - Purple Grand Lionman - (no description) +30567 - Brown Grand Lionman - (no description) +30570 - Black Eternal Elegance - (no description) +30571 - Red Eternal Elegance - (no description) +30572 - Orange Eternal Elegance - (no description) +30573 - Blonde Eternal Elegance - (no description) +30574 - Green Eternal Elegance - (no description) +30575 - Blue Eternal Elegance - (no description) +30576 - Purple Eternal Elegance - (no description) +30577 - Brown Eternal Elegance - (no description) +30580 - Black Saturday Special - (no description) +30581 - Red Saturday Special - (no description) +30582 - Orange Saturday Special - (no description) +30583 - Blonde Saturday Special - (no description) +30584 - Green Saturday Special - (no description) +30585 - Blue Saturday Special - (no description) +30586 - Purple Saturday Special - (no description) +30587 - Brown Saturday Special - (no description) +30590 - Black Super Suave - (no description) +30591 - Red Super Suave - (no description) +30592 - Orange Super Suave - (no description) +30593 - Blonde Super Suave - (no description) +30594 - Green Super Suave - (no description) +30595 - Blue Super Suave - (no description) +30596 - Purple Super Suave - (no description) +30597 - Brown Super Suave - (no description) +30600 - Black The Curl - (no description) +30601 - Red The Curl - (no description) +30602 - Orange The Curl - (no description) +30603 - Blonde The Curl - (no description) +30604 - Green The Curl - (no description) +30605 - Blue The Curl - (no description) +30606 - Purple The Curl - (no description) +30607 - Brown The Curl - (no description) +30610 - Black The Mo Rawk - (no description) +30611 - Red The Mo Rawk - (no description) +30612 - Orange The Mo Rawk - (no description) +30613 - Blonde The Mo Rawk - (no description) +30614 - Green The Mo Rawk - (no description) +30615 - Blue The Mo Rawk - (no description) +30616 - Purple The Mo Rawk - (no description) +30617 - Brown The Mo Rawk - (no description) +30620 - Black Bubba GoaTee - (no description) +30621 - Red Bubba GoaTee - (no description) +30622 - Orange Bubba GoaTee - (no description) +30623 - Blonde Bubba GoaTee - (no description) +30624 - Green Bubba GoaTee - (no description) +30625 - Blue Bubba GoaTee - (no description) +30626 - Purple Bubba GoaTee - (no description) +30627 - Brown Bubba GoaTee - (no description) +30630 - Black Neon Cactus - (no description) +30631 - Red Neon Cactus - (no description) +30632 - Orange Neon Cactus - (no description) +30633 - Blonde Neon Cactus - (no description) +30634 - Green Neon Cactus - (no description) +30635 - Blue Neon Cactus - (no description) +30636 - Purple Neon Cactus - (no description) +30637 - Brown Neon Cactus - (no description) +30640 - Black Urban Dragon - (no description) +30641 - Red Urban Dragon - (no description) +30642 - Orange Urban Dragon - (no description) +30643 - Blonde Urban Dragon - (no description) +30644 - Green Urban Dragon - (no description) +30645 - Blue Urban Dragon - (no description) +30646 - Purple Urban Dragon - (no description) +30647 - Brown Urban Dragon - (no description) +30650 - Black Rise N Shine - (no description) +30651 - Red Rise N Shine - (no description) +30652 - Orange Rise N Shine - (no description) +30653 - Blonde Rise N Shine - (no description) +30654 - Green Rise N Shine - (no description) +30655 - Blue Rise N Shine - (no description) +30656 - Purple Rise N Shine - (no description) +30657 - Brown Rise N Shine - (no description) +30660 - Black Fuzz - (no description) +30661 - Red Fuzz - (no description) +30662 - Orange Fuzz - (no description) +30663 - Blonde Fuzz - (no description) +30664 - Green Fuzz - (no description) +30665 - Blue Fuzz - (no description) +30666 - Purple Fuzz - (no description) +30667 - Brown Fuzz - (no description) +30670 - Black Preppy Spike - (no description) +30671 - Red Preppy Spike - (no description) +30672 - Orange Preppy Spike - (no description) +30673 - Blonde Preppy Spike - (no description) +30674 - Green Preppy Spike - (no description) +30675 - Blue Preppy Spike - (no description) +30676 - Purple Preppy Spike - (no description) +30677 - Brown Preppy Spike - (no description) +30680 - Black Hobo - (no description) +30681 - Red Hobo - (no description) +30682 - Orange Hobo - (no description) +30683 - Blonde Hobo - (no description) +30684 - Green Hobo - (no description) +30685 - Blue Hobo - (no description) +30686 - Purple Hobo - (no description) +30687 - Brown Hobo - (no description) +30690 - Black Metro Man - (no description) +30691 - Red Metro Man - (no description) +30692 - Orange Metro Man - (no description) +30693 - Blonde Metro Man - (no description) +30694 - Green Metro Man - (no description) +30695 - Blue Metro Man - (no description) +30696 - Purple Metro Man - (no description) +30697 - Brown Metro Man - (no description) +30700 - Black Rising Rocker - (no description) +30701 - Red Rising Rocker - (no description) +30702 - Orange Rising Rocker - (no description) +30703 - Blonde Rising Rocker - (no description) +30704 - Green Rising Rocker - (no description) +30705 - Blue Rising Rocker - (no description) +30706 - Purple Rising Rocker - (no description) +30707 - Brown Rising Rocker - (no description) +30710 - Black Puffy Fro - (no description) +30711 - Red Puffy Fro - (no description) +30712 - Orange Puffy Fro - (no description) +30713 - Blonde Puffy Fro - (no description) +30714 - Green Puffy Fro - (no description) +30715 - Blue Puffy Fro - (no description) +30716 - Purple Puffy Fro - (no description) +30717 - Brown Puffy Fro - (no description) +30720 - Black Exotica - (no description) +30721 - Red Exotica - (no description) +30722 - Orange Exotica - (no description) +30723 - Blonde Exotica - (no description) +30724 - Green Exotica - (no description) +30725 - Blue Exotica - (no description) +30726 - Purple Exotica - (no description) +30727 - Brown Exotica - (no description) +30730 - Black Roving Rockstar - (no description) +30731 - Red Roving Rockstar - (no description) +30732 - Orange Roving Rockstar - (no description) +30733 - Blonde Roving Rockstar - (no description) +30734 - Green Roving Rockstar - (no description) +30735 - Blue Roving Rockstar - (no description) +30736 - Purple Roving Rockstar - (no description) +30737 - Brown Roving Rockstar - (no description) +30740 - Black Receding Hair - (no description) +30741 - Red Receding Hair - (no description) +30742 - Orange Receding Hair - (no description) +30743 - Blonde Receding Hair - (no description) +30744 - Green Receding Hair - (no description) +30745 - Blue Receding Hair - (no description) +30746 - Purple Receding Hair - (no description) +30747 - Brown Receding Hair - (no description) +30750 - Black Buddha Fire - (no description) +30751 - Red Buddha Fire - (no description) +30752 - Orange Buddha Fire - (no description) +30753 - Blonde Buddha Fire - (no description) +30754 - Green Buddha Fire - (no description) +30755 - Blue Buddha Fire - (no description) +30756 - Purple Buddha Fire - (no description) +30757 - Brown Buddha Fire - (no description) +30760 - Black Bowling Ball - (no description) +30761 - Red Bowling Ball - (no description) +30762 - Orange Bowling Ball - (no description) +30763 - Blonde Bowling Ball - (no description) +30764 - Green Bowling Ball - (no description) +30765 - Blue Bowling Ball - (no description) +30766 - Purple Bowling Ball - (no description) +30767 - Brown Bowling Ball - (no description) +30770 - Black Lucky Charms - (no description) +30771 - Red Lucky Charms - (no description) +30772 - Orange Lucky Charms - (no description) +30773 - Blonde Lucky Charms - (no description) +30774 - Green Lucky Charms - (no description) +30775 - Blue Lucky Charms - (no description) +30776 - Purple Lucky Charms - (no description) +30777 - Brown Lucky Charms - (no description) +30780 - Black Dragon Tail - (no description) +30781 - Red Dragon Tail - (no description) +30782 - Orange Dragon Tail - (no description) +30783 - Blonde Dragon Tail - (no description) +30784 - Green Dragon Tail - (no description) +30785 - Blue Dragon Tail - (no description) +30786 - Purple Dragon Tail - (no description) +30787 - Brown Dragon Tail - (no description) +30790 - Black Lion Hair - (no description) +30791 - Red Lion Hair - (no description) +30792 - Orange Lion Hair - (no description) +30793 - Blonde Lion Hair - (no description) +30794 - Green Lion Hair - (no description) +30795 - Blue Lion Hair - (no description) +30796 - Purple Lion Hair - (no description) +30797 - Brown Lion Hair - (no description) +30800 - Black Dreamcatcher - (no description) +30801 - Red Dreamcatcher - (no description) +30802 - Orange Dreamcatcher - (no description) +30803 - Blonde Dreamcatcher - (no description) +30804 - Green Dreamcatcher - (no description) +30805 - Blue Dreamcatcher - (no description) +30806 - Purple Dreamcatcher - (no description) +30807 - Brown Dreamcatcher - (no description) +30810 - Black Gruff & Tough - (no description) +30811 - Red Gruff & Tough - (no description) +30812 - Orange Gruff & Tough - (no description) +30813 - Blonde Gruff & Tough - (no description) +30814 - Green Gruff & Tough - (no description) +30815 - Blue Gruff & Tough - (no description) +30816 - Purple Gruff & Tough - (no description) +30817 - Brown Gruff & Tough - (no description) +30820 - Black Matinee Idol - (no description) +30821 - Red Matinee Idol - (no description) +30822 - Orange Matinee Idol - (no description) +30823 - Blond Matinee Idol - (no description) +30824 - Green Matinee Idol - (no description) +30825 - Blue Matinee Idol - (no description) +30826 - Purple Matinee Idol - (no description) +30827 - Brown Matinee Idol - (no description) +30840 - Black Julian Hair - (no description) +30841 - Red Julian Hair - (no description) +30842 - Orange Julian Hair - (no description) +30843 - Blonde Julian Hair - (no description) +30844 - Green Julian Hair - (no description) +30845 - Blue Julian Hair - (no description) +30846 - Purple Julian Hair - (no description) +30847 - Brown Julian Hair - (no description) +30860 - Black Male Runway Hair - (no description) +30861 - Red Male Runway Hair - (no description) +30862 - Orange Male Runway Hair - (no description) +30863 - Blonde Male Runway Hair - (no description) +30864 - Green Male Runway Hair - (no description) +30865 - Blue Male Runway Hair - (no description) +30866 - Purple Male Runway Hair - (no description) +30867 - Brown Male Runway Hair - (no description) +30870 - Black Hector Hair - (no description) +30871 - Red Hector Hair - (no description) +30872 - Orange Hector Hair - (no description) +30873 - Blonde Hector Hair - (no description) +30874 - Green Hector Hair - (no description) +30875 - Blue Hector Hair - (no description) +30876 - Purple Hector Hair - (no description) +30877 - Brown Hector Hair - (no description) +30897 - Brown Eastern Mystery - (no description) +30896 - Purple Eastern Mystery - (no description) +30895 - Blue Eastern Mystery - (no description) +30894 - Green Eastern Mystery - (no description) +30893 - Yellow Eastern Mystery - (no description) +30892 - Orange Eastern Mystery - (no description) +30891 - Red Eastern Mystery - (no description) +30890 - Black Eastern Mystery - (no description) +30907 - Brown Kravitz Locks - (no description) +30906 - Purple Kravitz Locks - (no description) +30905 - Blue Kravitz Locks - (no description) +30904 - Green Kravitz Locks - (no description) +30903 - Yellow Kravitz Locks - (no description) +30902 - Orange Kravitz Locks - (no description) +30901 - Red Kravitz Locks - (no description) +30900 - Black Kravitz Locks - (no description) +30910 - Black Jun Pyo Hair - (no description) +30911 - Red Jun Pyo Hair - (no description) +30912 - Orange Jun Pyo Hair - (no description) +30913 - Yellow Jun Pyo Hair - (no description) +30914 - Green Jun Pyo Hair - (no description) +30915 - Blue Jun Pyo Hair - (no description) +30916 - Purple Jun Pyo Hair - (no description) +30917 - Brown Jun Pyo Hair - (no description) +30940 - Black Hip Hop Cut - (no description) +30941 - Red Hip Hop Cut - (no description) +30942 - Orange Hip Hop Cut - (no description) +30943 - Blond Hip Hop Cut - (no description) +30944 - Green Hip Hop Cut - (no description) +30945 - Blue Hip Hop Cut - (no description) +30946 - Purple Hip Hop Cut - (no description) +30947 - Brown Hip Hop Cut - (no description) +31000 - Black Sammy - (no description) +31001 - Red Sammy - (no description) +31002 - Orange Sammy - (no description) +31003 - Blonde Sammy - (no description) +31004 - Green Sammy - (no description) +31005 - Blue Sammy - (no description) +31006 - Purple Sammy - (no description) +31007 - Brown Sammy - (no description) +31010 - Black Veronica - (no description) +31011 - Red Veronica - (no description) +31012 - Orange Veronica - (no description) +31013 - Blonde Veronica - (no description) +31014 - Green Veronica - (no description) +31015 - Blue Veronica - (no description) +31016 - Purple Veronica - (no description) +31017 - Brown Veronica - (no description) +31020 - Black Francesca - (no description) +31021 - Red Francesca - (no description) +31022 - Orange Francesca - (no description) +31023 - Blonde Francesca - (no description) +31024 - Green Francesca - (no description) +31025 - Blue Francesca - (no description) +31026 - Purple Francesca - (no description) +31027 - Brown Francesca - (no description) +31030 - Black Polly - (no description) +31031 - Red Polly - (no description) +31032 - Orange Polly - (no description) +31033 - Blonde Polly - (no description) +31034 - Green Polly - (no description) +31035 - Blue Polly - (no description) +31036 - Purple Polly - (no description) +31037 - Brown Polly - (no description) +31040 - Black Edgy - (no description) +31041 - Red Edgy - (no description) +31042 - Orange Edgy - (no description) +31043 - Blonde Edgy - (no description) +31044 - Green Edgy - (no description) +31045 - Blue Edgy - (no description) +31046 - Purple Edgy - (no description) +31047 - Brown Edgy - (no description) +31050 - Black Connie - (no description) +31051 - Red Connie - (no description) +31052 - Orange Connie - (no description) +31053 - Blonde Connie - (no description) +31054 - Green Connie - (no description) +31055 - Blue Connie - (no description) +31056 - Purple Connie - (no description) +31057 - Brown Connie - (no description) +31060 - Black Annie - (no description) +31061 - Red Annie - (no description) +31062 - Orange Annie - (no description) +31063 - Blonde Annie - (no description) +31064 - Green Annie - (no description) +31065 - Blue Annie - (no description) +31066 - Purple Annie - (no description) +31067 - Brown Annie - (no description) +31070 - Black Stella - (no description) +31071 - Red Stella - (no description) +31072 - Orange Stella - (no description) +31073 - Blonde Stella - (no description) +31074 - Green Stella - (no description) +31075 - Blue Stella - (no description) +31076 - Purple Stella - (no description) +31077 - Brown Stella - (no description) +31080 - Black Rainbow - (no description) +31081 - Red Rainbow - (no description) +31082 - Orange Rainbow - (no description) +31083 - Blonde Rainbow - (no description) +31084 - Green Rainbow - (no description) +31085 - Blue Rainbow - (no description) +31086 - Purple Rainbow - (no description) +31087 - Brown Rainbow - (no description) +31090 - Black Bridget - (no description) +31091 - Red Bridget - (no description) +31092 - Orange Bridget - (no description) +31093 - Blonde Bridget - (no description) +31094 - Green Bridget - (no description) +31095 - Blue Bridget - (no description) +31096 - Purple Bridget - (no description) +31097 - Brown Bridget - (no description) +31100 - Black Mary - (no description) +31101 - Red Mary - (no description) +31102 - Orange Mary - (no description) +31103 - Blonde Mary - (no description) +31104 - Green Mary - (no description) +31105 - Blue Mary - (no description) +31106 - Purple Mary - (no description) +31107 - Brown Mary - (no description) +31110 - Black Monica - (no description) +31111 - Red Monica - (no description) +31112 - Orange Monica - (no description) +31113 - Blonde Monica - (no description) +31114 - Green Monica - (no description) +31115 - Blue Monica - (no description) +31116 - Purple Monica - (no description) +31117 - Brown Monica - (no description) +31120 - Black Miru - (no description) +31121 - Red Miru - (no description) +31122 - Orange Miru - (no description) +31123 - Blonde Miru - (no description) +31124 - Green Miru - (no description) +31125 - Blue Miru - (no description) +31126 - Purple Miru - (no description) +31127 - Brown Miru - (no description) +31130 - Black Jolie - (no description) +31131 - Red Jolie - (no description) +31132 - Orange Jolie - (no description) +31133 - Blonde Jolie - (no description) +31134 - Green Jolie - (no description) +31135 - Blue Jolie - (no description) +31136 - Purple Jolie - (no description) +31137 - Brown Jolie - (no description) +31140 - Black Pei Pei - (no description) +31141 - Red Pei Pei - (no description) +31142 - Orange Pei Pei - (no description) +31143 - Blonde Pei Pei - (no description) +31144 - Green Pei Pei - (no description) +31145 - Blue Pei Pei - (no description) +31146 - Purple Pei Pei - (no description) +31147 - Brown Pei Pei - (no description) +31150 - Black Angelica - (no description) +31151 - Red Angelica - (no description) +31152 - Orange Angelica - (no description) +31153 - Blonde Angelica - (no description) +31154 - Green Angelica - (no description) +31155 - Blue Angelica - (no description) +31156 - Purple Angelica - (no description) +31157 - Brown Angelica - (no description) +31160 - Black Lori - (no description) +31161 - Red Lori - (no description) +31162 - Orange Lori - (no description) +31163 - Blonde Lori - (no description) +31164 - Green Lori - (no description) +31165 - Blue Lori - (no description) +31166 - Purple Lori - (no description) +31167 - Brown Lori - (no description) +31170 - Black Rastafari - (no description) +31171 - Red Rastafari - (no description) +31172 - Orange Rastafari - (no description) +31173 - Blonde Rastafari - (no description) +31174 - Green Rastafari - (no description) +31175 - Blue Rastafari - (no description) +31176 - Purple Rastafari - (no description) +31177 - Brown Rastafari - (no description) +31180 - Black Cutey Doll - (no description) +31181 - Red Cutey Doll - (no description) +31182 - Orange Cutey Doll - (no description) +31183 - Blonde Cutey Doll - (no description) +31184 - Green Cutey Doll - (no description) +31185 - Blue Cutey Doll - (no description) +31186 - Purple Cutey Doll - (no description) +31187 - Brown Cutey Doll - (no description) +31190 - Black Celeb - (no description) +31191 - Red Celeb - (no description) +31192 - Orange Celeb - (no description) +31193 - Blonde Celeb - (no description) +31194 - Green Celeb - (no description) +31195 - Blue Celeb - (no description) +31196 - Purple Celeb - (no description) +31197 - Brown Celeb - (no description) +31200 - Black Holla' Back Do - (no description) +31201 - Red Holla' Back Do - (no description) +31202 - Orange Holla' Back Do - (no description) +31203 - Blonde Holla' Back Do - (no description) +31204 - Green Holla' Back Do - (no description) +31205 - Blue Holla' Back Do - (no description) +31206 - Purple Holla' Back Do - (no description) +31207 - Brown Holla' Back Do - (no description) +31210 - Black Perfect Stranger - (no description) +31211 - Red Perfect Stranger - (no description) +31212 - Orange Perfect Stranger - (no description) +31213 - Blonde Perfect Stranger - (no description) +31214 - Green Perfect Stranger - (no description) +31215 - Blue Perfect Stranger - (no description) +31216 - Purple Perfect Stranger - (no description) +31217 - Brown Perfect Stranger - (no description) +31220 - Black Caspia - (no description) +31221 - Red Caspia - (no description) +31222 - Orange Caspia - (no description) +31223 - Blonde Caspia - (no description) +31224 - Green Caspia - (no description) +31225 - Blue Caspia - (no description) +31226 - Purple Caspia - (no description) +31227 - Brown Caspia - (no description) +31230 - Black Rose - (no description) +31231 - Red Rose - (no description) +31232 - Orange Rose - (no description) +31233 - Blonde Rose - (no description) +31234 - Green Rose - (no description) +31235 - Blue Rose - (no description) +31236 - Purple Rose - (no description) +31237 - Brown Rose - (no description) +31240 - Black Disheveled - (no description) +31241 - Red Disheveled - (no description) +31242 - Orange Disheveled - (no description) +31243 - Blonde Disheveled - (no description) +31244 - Green Disheveled - (no description) +31245 - Blue Disheveled - (no description) +31246 - Purple Disheveled - (no description) +31247 - Brown Disheveled - (no description) +31250 - Black Bowlcut - (no description) +31251 - Red Bowlcut - (no description) +31252 - Orange Bowlcut - (no description) +31253 - Blonde Bowlcut - (no description) +31254 - Green Bowlcut - (no description) +31255 - Blue Bowlcut - (no description) +31256 - Purple Bowlcut - (no description) +31257 - Brown Bowlcut - (no description) +31260 - Black Daisy Do - (no description) +31261 - Red Daisy Do - (no description) +31262 - Orange Daisy Do - (no description) +31263 - Blonde Daisy Do - (no description) +31264 - Green Daisy Do - (no description) +31265 - Blue Daisy Do - (no description) +31266 - Purple Daisy Do - (no description) +31267 - Brown Daisy Do - (no description) +31270 - Black Pigtails - (no description) +31271 - Red Pigtails - (no description) +31272 - Orange Pigtails - (no description) +31273 - Blonde Pigtails - (no description) +31274 - Green Pigtails - (no description) +31275 - Blue Pigtails - (no description) +31276 - Purple Pigtails - (no description) +31277 - Brown Pigtails - (no description) +31280 - Black Ellie - (no description) +31281 - Red Ellie - (no description) +31282 - Orange Ellie - (no description) +31283 - Blonde Ellie - (no description) +31284 - Green Ellie - (no description) +31285 - Blue Ellie - (no description) +31286 - Purple Ellie - (no description) +31287 - Brown Ellie - (no description) +31290 - Black Naomi - (no description) +31291 - Red Naomi - (no description) +31292 - Orange Naomi - (no description) +31293 - Blonde Naomi - (no description) +31294 - Green Naomi - (no description) +31295 - Blue Naomi - (no description) +31296 - Purple Naomi - (no description) +31297 - Brown Naomi - (no description) +31300 - Black Chantelle - (no description) +31301 - Red Chantelle - (no description) +31302 - Orange Chantelle - (no description) +31303 - Blonde Chantelle - (no description) +31304 - Green Chantelle - (no description) +31305 - Blue Chantelle - (no description) +31306 - Purple Chantelle - (no description) +31307 - Brown Chantelle - (no description) +31310 - Black Carla - (no description) +31311 - Red Carla - (no description) +31312 - Orange Carla - (no description) +31313 - Blonde Carla - (no description) +31314 - Green Carla - (no description) +31315 - Blue Carla - (no description) +31316 - Purple Carla - (no description) +31317 - Brown Carla - (no description) +31320 - Black Roxy - (no description) +31321 - Red Roxy - (no description) +31322 - Orange Roxy - (no description) +31323 - Blonde Roxy - (no description) +31324 - Green Roxy - (no description) +31325 - Blue Roxy - (no description) +31326 - Purple Roxy - (no description) +31327 - Brown Roxy - (no description) +31330 - Black Penelope - (no description) +31331 - Red Penelope - (no description) +31332 - Orange Penelope - (no description) +31333 - Blonde Penelope - (no description) +31334 - Green Penelope - (no description) +31335 - Blue Penelope - (no description) +31336 - Purple Penelope - (no description) +31337 - Brown Penelope - (no description) +31340 - Black Rae - (no description) +31341 - Red Rae - (no description) +31342 - Orange Rae - (no description) +31343 - Blonde Rae - (no description) +31344 - Green Rae - (no description) +31345 - Blue Rae - (no description) +31346 - Purple Rae - (no description) +31347 - Brown Rae - (no description) +31350 - Black Fourtail Braids - (no description) +31351 - Red Fourtail Braids - (no description) +31352 - Orange Fourtail Braids - (no description) +31353 - Blonde Fourtail Braids - (no description) +31354 - Green Fourtail Braids - (no description) +31355 - Blue Fourtail Braids - (no description) +31356 - purple Fourtail Braids - (no description) +31357 - Brown Fourtail Braids - (no description) +31400 - Black Boyish - (no description) +31401 - Red Boyish - (no description) +31402 - Orange Boyish - (no description) +31403 - Blonde Boyish - (no description) +31404 - Green Boyish - (no description) +31405 - Blue Boyish - (no description) +31406 - Purple Boyish - (no description) +31407 - Brown Boyish - (no description) +31410 - Black Paula - (no description) +31411 - Red Paula - (no description) +31412 - Orange Paula - (no description) +31413 - Blonde Paula - (no description) +31414 - Green Paula - (no description) +31415 - Blue Paula - (no description) +31416 - Purple Paula - (no description) +31417 - Brown Paula - (no description) +31420 - Black Lana - (no description) +31421 - Red Lana - (no description) +31422 - Orange Lana - (no description) +31423 - Blonde Lana - (no description) +31424 - Green Lana - (no description) +31425 - Blue Lana - (no description) +31426 - Purple Lana - (no description) +31427 - Brown Lana - (no description) +31430 - Skin Head - (no description) +31431 - Skin Head - (no description) +31432 - Skin Head - (no description) +31433 - Skin Head - (no description) +31434 - Skin Head - (no description) +31435 - Skin Head - (no description) +31436 - Skin Head - (no description) +31437 - Skin Head - (no description) +31440 - Black Ravishing Raven - (no description) +31441 - Red Ravishing Raven - (no description) +31442 - Orange Ravishing Raven - (no description) +31443 - Blonde Ravishing Raven - (no description) +31444 - Green Ravishing Raven - (no description) +31445 - Blue Ravishing Raven - (no description) +31446 - Purple Ravishing Raven - (no description) +31447 - Brown Ravishing Raven - (no description) +31450 - Black Fluffy Dolly - (no description) +31451 - Red Fluffy Dolly - (no description) +31452 - Orange Fluffy Dolly - (no description) +31453 - Blonde Fluffy Dolly - (no description) +31454 - Green Fluffy Dolly - (no description) +31455 - Blue Fluffy Dolly - (no description) +31456 - Purple Fluffy Dolly - (no description) +31457 - Brown Fluffy Dolly - (no description) +31460 - Black Lady Mariko - (no description) +31461 - Red Lady Mariko - (no description) +31462 - Orange Lady Mariko - (no description) +31463 - Blonde Lady Mariko - (no description) +31464 - Green Lady Mariko - (no description) +31465 - Blue Lady Mariko - (no description) +31466 - Purple Lady Mariko - (no description) +31467 - Brown Lady Mariko - (no description) +31470 - Black Ming Ming - (no description) +31471 - Red Ming Ming - (no description) +31472 - Orange Ming Ming - (no description) +31473 - Blonde Ming Ming - (no description) +31474 - Green Ming Ming - (no description) +31475 - Blue Ming Ming - (no description) +31476 - Purple Ming Ming - (no description) +31477 - Brown Ming Ming - (no description) +31480 - Black Classy Sass - (no description) +31481 - Red Classy Sass - (no description) +31482 - Orange Classy Sass - (no description) +31483 - Blonde Classy Sass - (no description) +31484 - Green Classy Sass - (no description) +31485 - Blue Classy Sass - (no description) +31486 - Purple Classy Sass - (no description) +31487 - Brown Classy Sass - (no description) +31490 - Black Cecelia Twist - (no description) +31491 - Red Cecelia Twist - (no description) +31492 - Orange Cecelia Twist - (no description) +31493 - Blonde Cecelia Twist - (no description) +31494 - Green Cecelia Twist - (no description) +31495 - Blue Cecelia Twist - (no description) +31496 - Purple Cecelia Twist - (no description) +31497 - Brown Cecelia Twist - (no description) +31510 - Black Minnie - (no description) +31511 - Red Minnie - (no description) +31512 - Orange Minnie - (no description) +31513 - Blonde Minnie - (no description) +31514 - Green Minnie - (no description) +31515 - Blue Minnie - (no description) +31516 - Purple Minnie - (no description) +31517 - Brown Minnie - (no description) +31520 - Black Curly Stream - (no description) +31521 - Red Curly Stream - (no description) +31522 - Orange Curly Stream - (no description) +31523 - Blonde Curly Stream - (no description) +31524 - Green Curly Stream - (no description) +31525 - Blue Curly Stream - (no description) +31526 - Purple Curly Stream - (no description) +31527 - Brown Curly Stream - (no description) +31530 - Black Zessica - (no description) +31531 - Red Zessica - (no description) +31532 - Orange Zessica - (no description) +31533 - Blonde Zessica - (no description) +31534 - Green Zessica - (no description) +31535 - Blue Zessica - (no description) +31536 - Purple Zessica - (no description) +31537 - Brown Zessica - (no description) +31540 - Black Jean - (no description) +31541 - Red Jean - (no description) +31542 - Orange Jean - (no description) +31543 - Blonde Jean - (no description) +31544 - Green Jean - (no description) +31545 - Blue Jean - (no description) +31546 - Purple Jean - (no description) +31547 - Brown Jean - (no description) +31550 - Black Candy Heart - (no description) +31551 - Red Candy Heart - (no description) +31552 - Orange Candy Heart - (no description) +31553 - Blonde Candy Heart - (no description) +31554 - Green Candy Heart - (no description) +31555 - Blue Candy Heart - (no description) +31556 - Purple Candy Heart - (no description) +31557 - Brown Candy Heart - (no description) +31560 - Black Sunflower Power - (no description) +31561 - Red Sunflower Power - (no description) +31562 - Orange Sunflower Power - (no description) +31563 - Blonde Sunflower Power - (no description) +31564 - Green Sunflower Power - (no description) +31565 - Blue Sunflower Power - (no description) +31566 - Purple Sunflower Power - (no description) +31567 - Brown Sunflower Power - (no description) +31570 - Black Maiden's Weave - (no description) +31571 - Red Maiden's Weave - (no description) +31572 - Orange Maiden's Weave - (no description) +31573 - Blonde Maiden's Weave - (no description) +31574 - Green Maiden's Weave - (no description) +31575 - Blue Maiden's Weave - (no description) +31576 - Purple Maiden's Weave - (no description) +31577 - Brown Maiden's Weave - (no description) +31580 - Black Victorian Wrap - (no description) +31581 - Red Victorian Wrap - (no description) +31582 - Orange Victorian Wrap - (no description) +31583 - Blonde Victorian Wrap - (no description) +31584 - Green Victorian Wrap - (no description) +31585 - Blue Victorian Wrap - (no description) +31586 - Purple Victorian Wrap - (no description) +31587 - Brown Victorian Wrap - (no description) +31590 - Black Ballroom Classic - (no description) +31591 - Red Ballroom Classic - (no description) +31592 - Orange Ballroom Classic - (no description) +31593 - Blonde Ballroom Classic - (no description) +31594 - Green Ballroom Classic - (no description) +31595 - Blue Ballroom Classic - (no description) +31596 - Purple Ballroom Classic - (no description) +31597 - Brown Ballroom Classic - (no description) +31600 - Black Tall Bun - (no description) +31601 - Red Tall Bun - (no description) +31602 - Orange Tall Bun - (no description) +31603 - Blonde Tall Bun - (no description) +31604 - Green Tall Bun - (no description) +31605 - Blue Tall Bun - (no description) +31606 - Purple Tall Bun - (no description) +31607 - Brown Tall Bun - (no description) +31610 - Black Darling Diva - (no description) +31611 - Red Darling Diva - (no description) +31612 - Orange Darling Diva - (no description) +31613 - Blonde Darling Diva - (no description) +31614 - Green Darling Diva - (no description) +31615 - Blue Darling Diva - (no description) +31616 - Purple Darling Diva - (no description) +31617 - Brown Darling Diva - (no description) +31620 - Black Desert Flower - (no description) +31621 - Red Desert Flower - (no description) +31622 - Orange Desert Flower - (no description) +31623 - Blonde Desert Flower - (no description) +31624 - Green Desert Flower - (no description) +31625 - Blue Desert Flower - (no description) +31626 - Purple Desert Flower - (no description) +31627 - Brown Desert Flower - (no description) +31630 - Black The Honeybun - (no description) +31631 - Red The Honeybun - (no description) +31632 - Orange The Honeybun - (no description) +31633 - Blonde The Honeybun - (no description) +31634 - Green The Honeybun - (no description) +31635 - Blue The Honeybun - (no description) +31636 - Purple The Honeybun - (no description) +31637 - Brown The Honeybun - (no description) +31640 - Black Sonara Wave - (no description) +31641 - Red Sonara Wave - (no description) +31642 - Orange Sonara Wave - (no description) +31643 - Blonde Sonara Wave - (no description) +31644 - Green Sonara Wave - (no description) +31645 - Blue Sonara Wave - (no description) +31646 - Purple Sonara Wave - (no description) +31647 - Brown Sonara Wave - (no description) +31650 - Black Dashing Damsel - (no description) +31651 - Red Dashing Damsel - (no description) +31652 - Orange Dashing Damsel - (no description) +31653 - Blonde Dashing Damsel - (no description) +31654 - Green Dashing Damsel - (no description) +31655 - Blue Dashing Damsel - (no description) +31656 - Purple Dashing Damsel - (no description) +31657 - Brown Dashing Damsel - (no description) +31670 - Black Grandma ma' - (no description) +31671 - Red Grandma ma' - (no description) +31672 - Orange Grandma ma' - (no description) +31673 - Blonde Grandma ma' - (no description) +31674 - Green Grandma ma' - (no description) +31675 - Blue Grandma ma' - (no description) +31676 - Purple Grandma ma' - (no description) +31677 - Brown Grandma ma' - (no description) +31680 - Black Lovely Ladyhawk - (no description) +31681 - Red Lovely Ladyhawk - (no description) +31682 - Orange Lovely Ladyhawk - (no description) +31683 - Blonde Lovely Ladyhawk - (no description) +31684 - Green Lovely Ladyhawk - (no description) +31685 - Blue Lovely Ladyhawk - (no description) +31686 - Purple Lovely Ladyhawk - (no description) +31687 - Brown Lovely Ladyhawk - (no description) +31690 - Black Demolishing Diva - (no description) +31691 - Red Demolishing Diva - (no description) +31692 - Orange Demolishing Diva - (no description) +31693 - Blonde Demolishing Diva - (no description) +31694 - Green Demolishing Diva - (no description) +31695 - Blue Demolishing Diva - (no description) +31696 - Purple Demolishing Diva - (no description) +31697 - Brown Demolishing Diva - (no description) +31700 - Black Crazy Medusa - (no description) +31701 - Red Crazy Medusa - (no description) +31702 - Orange Crazy Medusa - (no description) +31703 - Blonde Crazy Medusa - (no description) +31704 - Green Crazy Medusa - (no description) +31705 - Blue Crazy Medusa - (no description) +31706 - Purple Crazy Medusa - (no description) +31707 - Brown Crazy Medusa - (no description) +31710 - Black Princess Warrior - (no description) +31711 - Red Princess Warrior - (no description) +31712 - Orange Princess Warrior - (no description) +31713 - Blonde Princess Warrior - (no description) +31714 - Green Princess Warrior - (no description) +31715 - Blue Princess Warrior - (no description) +31716 - Purple Princess Warrior - (no description) +31717 - Brown Princess Warrior - (no description) +31720 - Black Streaky Siren - (no description) +31721 - Red Streaky Siren - (no description) +31722 - Orange Streaky Siren - (no description) +31723 - Blonde Streaky Siren - (no description) +31724 - Green Streaky Siren - (no description) +31725 - Blue Streaky Siren - (no description) +31726 - Purple Streaky Siren - (no description) +31727 - Brown Streaky Siren - (no description) +31730 - Black Model's Ambition - (no description) +31731 - Red Model's Ambition - (no description) +31732 - Orange Model's Ambition - (no description) +31733 - Blonde Model's Ambition - (no description) +31734 - Green Model's Ambition - (no description) +31735 - Blue Model's Ambition - (no description) +31736 - Purple Model's Ambition - (no description) +31737 - Brown Model's Ambition - (no description) +31740 - Black Frizzle Dizzle - (no description) +31741 - Red Frizzle Dizzle - (no description) +31742 - Orange Frizzle Dizzle - (no description) +31743 - Blonde Frizzle Dizzle - (no description) +31744 - Green Frizzle Dizzle - (no description) +31745 - Blue Frizzle Dizzle - (no description) +31746 - Purple Frizzle Dizzle - (no description) +31747 - Brown Frizzle Dizzle - (no description) +31750 - Black Super Diva - (no description) +31751 - Red Super Diva - (no description) +31752 - Orange Super Diva - (no description) +31753 - Blonde Super Diva - (no description) +31754 - Green Super Diva - (no description) +31755 - Blue Super Diva - (no description) +31756 - Purple Super Diva - (no description) +31757 - Brown Super Diva - (no description) +31760 - Black Shaggy Dog - (no description) +31761 - Red Shaggy Dog - (no description) +31762 - Orange Shaggy Dog - (no description) +31763 - Blonde Shaggy Dog - (no description) +31764 - Green Shaggy Dog - (no description) +31765 - Blue Shaggy Dog - (no description) +31766 - Purple Shaggy Dog - (no description) +31767 - Brown Shaggy Dog - (no description) +31770 - Black Short Shaggy Hair - (no description) +31771 - Red Short Shaggy Hair - (no description) +31772 - Orange Short Shaggy Hair - (no description) +31773 - Blonde Short Shaggy Hair - (no description) +31774 - Green Short Shaggy Hair - (no description) +31775 - Blue Short Shaggy Hair - (no description) +31776 - Brown Short Shaggy Hair - (no description) +31777 - Purple Short Shaggy Hair - (no description) +31790 - Black Princessa - (no description) +31791 - Red Princessa - (no description) +31792 - Orange Princessa - (no description) +31793 - Blonde Princessa - (no description) +31794 - Green Princessa - (no description) +31795 - Blue Princessa - (no description) +31796 - Purple Princessa - (no description) +31797 - Brown Princessa - (no description) +31800 - Black Onna's Honor - (no description) +31801 - Red Onna's Honor - (no description) +31802 - Orange Onna's Honor - (no description) +31803 - Blonde Onna's Honor - (no description) +31804 - Green Onna's Honor - (no description) +31805 - Blue Onna's Honor - (no description) +31806 - Purple Onna's Honor - (no description) +31807 - Brown Onna's Honor - (no description) +31810 - Black Apple Hair - (no description) +31811 - Red Apple Hair - (no description) +31812 - Orange Apple Hair - (no description) +31813 - Blonde Apple Hair - (no description) +31814 - Green Apple Hair - (no description) +31815 - Blue Apple Hair - (no description) +31816 - Purple Apple Hair - (no description) +31817 - Brown Apple Hair - (no description) +31830 - Black Eye-skimming Bang - (no description) +31831 - Red Eye-skimming Bang - (no description) +31832 - Orange Eye-skimming Bang - (no description) +31833 - Blonde Eye-skimming Bang - (no description) +31834 - Green Eye-skimming Bang - (no description) +31835 - Blue Eye-skimming Bang - (no description) +31836 - Purple Eye-skimming Bang - (no description) +31837 - Brown Eye-skimming Bang - (no description) +31840 - Black Female Runway Hair - (no description) +31841 - Red Female Runway Hair - (no description) +31842 - Orange Female Runway Hair - (no description) +31843 - Blonde Female Runway Hair - (no description) +31844 - Green Female Runway Hair - (no description) +31845 - Blue Female Runway Hair - (no description) +31846 - Purple Female Runway Hair - (no description) +31847 - Brown Female Runway Hair - (no description) +31867 - Brown Laguna Beach - (no description) +31866 - Purple Laguna Beach - (no description) +31865 - Blue Laguna Beach - (no description) +31864 - Green Laguna Beach - (no description) +31863 - Yellow Laguna Beach - (no description) +31862 - Orange Laguna Beach - (no description) +31861 - Red Laguna Beach - (no description) +31860 - Black Laguna Beach - (no description) +31877 - Brown Ayu - (no description) +31876 - Purple Ayu - (no description) +31875 - Blue Ayu - (no description) +31874 - Green Ayu - (no description) +31873 - Yellow Ayu - (no description) +31872 - Orange Ayu - (no description) +31871 - Red Ayu - (no description) +31870 - Black Ayu - (no description) +31880 - Black Gardener - (no description) +31881 - Red Gardener - (no description) +31882 - Orange Gardener - (no description) +31883 - Blond Gardener - (no description) +31884 - Green Gardener - (no description) +31885 - Blue Gardener - (no description) +31886 - Purple Gardener - (no description) +31887 - Brown Gardener - (no description) +31890 - Black Short Twin Tails - (no description) +31891 - Red Short Twin Tails - (no description) +31892 - Orange Short Twin Tails - (no description) +31893 - Blond Short Twin Tails - (no description) +31894 - Green Short Twin Tails - (no description) +31895 - Blue Short Twin Tails - (no description) +31896 - Purple Short Twin Tails - (no description) +31897 - Brown Short Twin Tails - (no description) +31910 - Black Housewife - (no description) +31911 - Red Housewife - (no description) +31912 - Orange Housewife - (no description) +31913 - Blond Housewife - (no description) +31914 - Green Housewife - (no description) +31915 - Blue Housewife - (no description) +31916 - Purple Housewife - (no description) +31917 - Brown Housewife - (no description) +31940 - Black Spunky Do - (no description) +31941 - Red Spunky Do - (no description) +31942 - Orange Spunky Do - (no description) +31943 - Blond Spunky Do - (no description) +31944 - Green Spunky Do - (no description) +31945 - Blue Spunky Do - (no description) +31946 - Purple Spunky Do - (no description) +31947 - Brown Spunky Do - (no description) +30830 - Black Alex - (no description) +30831 - Red Alex - (no description) +30832 - Orange Alex - (no description) +30833 - Blond Alex - (no description) +30834 - Green Alex - (no description) +30835 - Blue Alex - (no description) +30836 - Purple Alex - (no description) +30837 - Brown Alex - (no description) +30850 - Black Cornrow - (no description) +30851 - Red Cornrow - (no description) +30852 - Orange Cornrow - (no description) +30853 - Blond Cornrow - (no description) +30854 - Green Cornrow - (no description) +30855 - Blue Cornrow - (no description) +30856 - Purple Cornrow - (no description) +30857 - Brown Cornrow - (no description) +30880 - Black Unbalanced - (no description) +30881 - Red Unbalanced - (no description) +30882 - Orange Unbalanced - (no description) +30883 - Blond Unbalanced - (no description) +30884 - Green Unbalanced - (no description) +30885 - Blue Unbalanced - (no description) +30886 - Purple Unbalanced - (no description) +30887 - Brown Unbalanced - (no description) +31820 - Black Grace - (no description) +31821 - Red Grace - (no description) +31822 - Orange Grace - (no description) +31823 - Blond Grace - (no description) +31824 - Green Grace - (no description) +31825 - Blue Grace - (no description) +31826 - Purple Grace - (no description) +31827 - Brown Grace - (no description) +31850 - Black Dambi - (no description) +31851 - Red Dambi - (no description) +31852 - Orange Dambi - (no description) +31853 - Blonde Dambi - (no description) +31854 - Green Dambi - (no description) +31855 - Blue Dambi - (no description) +31856 - Purple Dambi - (no description) +31857 - Brown Dambi - (no description) +30920 - Black Short Top Tail - (no description) +30921 - Red Short Top Tail - (no description) +30922 - Orange Short Top Tail - (no description) +30923 - Blonde Short Top Tail - (no description) +30924 - Green Short Top Tail - (no description) +30925 - Blue Short Top Tail - (no description) +30926 - Purple Short Top Tail - (no description) +30927 - Brown Short Top Tail - (no description) +31920 - Black CL Hair - (no description) +31921 - Red CL Hair - (no description) +31922 - Orange CL Hair - (no description) +31923 - Yellow CL Hair - (no description) +31924 - Green CL Hair - (no description) +31925 - Blue CL Hair - (no description) +31926 - Purple CL Hair - (no description) +31927 - Brown CL Hair - (no description) +30930 - Black Boy Band Cut - (no description) +30931 - Red Boy Band Cut - (no description) +30932 - Orange Boy Band Cut - (no description) +30933 - Blond Boy Band Cut - (no description) +30934 - Green Boy Band Cut - (no description) +30935 - Blue Boy Band Cut - (no description) +30936 - Purple Boy Band Cut - (no description) +30937 - Brown Boy Band Cut - (no description) +30950 - Black Volume Cut - (no description) +30951 - Red Volume Cut - (no description) +30952 - Orange Volume Cut - (no description) +30953 - Blond Volume Cut - (no description) +30954 - Green Volume Cut - (no description) +30955 - Blue Volume Cut - (no description) +30956 - Purple Volume Cut - (no description) +30957 - Brown Volume Cut - (no description) +31780 - ??? ???? ?? - (no description) +31781 - ??? ???? ?? - (no description) +31782 - ??? ???? ?? - (no description) +31783 - ??? ???? ?? - (no description) +31784 - ??? ???? ?? - (no description) +31785 - ??? ???? ?? - (no description) +31786 - ??? ???? ?? - (no description) +31787 - ?? ???? ?? - (no description) +31930 - Black Bowl Cut - (no description) +31931 - Red Bowl Cut - (no description) +31932 - Orange Bowl Cut - (no description) +31933 - Blond Bowl Cut - (no description) +31934 - Green Bowl Cut - (no description) +31935 - Blue Bowl Cut - (no description) +31936 - Purple Bowl Cut - (no description) +31937 - Brown Bowl Cut - (no description) +31950 - Black Vintage Flip - (no description) +31951 - Red Vintage Flip - (no description) +31952 - Orange Vintage Flip - (no description) +31953 - Blond Vintage Flip - (no description) +31954 - Green Vintage Flip - (no description) +31955 - Blue Vintage Flip - (no description) +31956 - Purple Vintage Flip - (no description) +31957 - Brown Vintage Flip - (no description) +30990 - Black Tentacle Hair - (no description) +30991 - Red Tentacle Hair - (no description) +30992 - Orange Tentacle Hair - (no description) +30993 - Blond Tentacle Hair - (no description) +30994 - Green Tentacle Hair - (no description) +30995 - Blue Tentacle Hair - (no description) +30996 - Purple Tentacle Hair - (no description) +30997 - Brown Tentacle Hair - (no description) +33000 - Black Prince Cut - (no description) +33001 - Red Prince Cut - (no description) +33002 - Orange Prince Cut - (no description) +33003 - Blond Prince Cut - (no description) +33004 - Green Prince Cut - (no description) +33005 - Blue Prince Cut - (no description) +33006 - Purple Prince Cut - (no description) +33007 - Brown Prince Cut - (no description) +34000 - Black Palm Tree Hair - (no description) +34001 - Red Palm Tree Hair - (no description) +34002 - Orange Palm Tree Hair - (no description) +34003 - Blond Palm Tree Hair - (no description) +34004 - Green Palm Tree Hair - (no description) +34005 - Blue Palm Tree Hair - (no description) +34006 - Purple Palm Tree Hair - (no description) +34007 - Brown Palm Tree Hair - (no description) +34010 - Black Rollered Hair - (no description) +34011 - Red Rollered Hair - (no description) +34012 - Orange Rollered Hair - (no description) +34013 - Blond Rollered Hair - (no description) +34014 - Green Rollered Hair - (no description) +34015 - Blue Rollered Hair - (no description) +34016 - Purple Rollered Hair - (no description) +34017 - Brown Rollered Hair - (no description) +34020 - Black School Girl Hair - (no description) +34021 - Red School Girl Hair - (no description) +34022 - Orange School Girl Hair - (no description) +34023 - Blond School Girl Hair - (no description) +34024 - Green School Girl Hair - (no description) +34025 - Blue School Girl Hair - (no description) +34026 - Purple School Girl Hair - (no description) +34027 - Brown School Girl Hair - (no description) +34030 - Black Designer Hair - (no description) +34031 - Red Designer Hair - (no description) +34032 - Orange Designer Hair - (no description) +34033 - Blond Designer Hair - (no description) +34034 - Green Designer Hair - (no description) +34035 - Blue Designer Hair - (no description) +34036 - Purple Designer Hair - (no description) +34037 - Brown Designer Hair - (no description) +33040 - Black Aran Cut - (no description) +33041 - Red Aran Cut - (no description) +33042 - Orange Aran Cut - (no description) +33043 - Blond Aran Cut - (no description) +33044 - Green Aran Cut - (no description) +33045 - Blue Aran Cut - (no description) +33046 - Purple Aran Cut - (no description) +33047 - Brown Aran Cut - (no description) +34050 - Black Aran Hair - (no description) +34051 - Red Aran Hair - (no description) +34052 - Orange Aran Hair - (no description) +34053 - Blond Aran Hair - (no description) +34054 - Green Aran Hair - (no description) +34055 - Blue Aran Hair - (no description) +34056 - Purple Aran Hair - (no description) +34057 - Brown Aran Hair - (no description) +33100 - Black The Coco - (no description) +33102 - Orange The Coco - (no description) +33103 - Blond The Coco - (no description) +33104 - Green The Coco - (no description) +33105 - Blue The Coco - (no description) +33106 - Purple The CoCo - (no description) +34110 - Black Full Bangs - (no description) +34111 - Red Full Bangs - (no description) +34112 - Orange Full Bangs - (no description) +34113 - Blond Full Bangs - (no description) +34114 - Green Full Bangs - (no description) +34115 - Blue Full Bangs - (no description) +34116 - Purple Full Bangs - (no description) +34117 - Brown Full Bangs - (no description) +33107 - Brown The Coco - (no description) diff --git a/handbook/Equip/Longcoat.txt b/handbook/Equip/Longcoat.txt new file mode 100644 index 0000000000..ba6195672d --- /dev/null +++ b/handbook/Equip/Longcoat.txt @@ -0,0 +1,485 @@ +1050000 - White Crusader Chainmail - (no description) +1050001 - Brown Doros Robe - (no description) +1050002 - Blood Chaos Robe - (no description) +1050003 - Blue Wizard Robe - (no description) +1050004 - Blue Officer Uniform - (no description) +1050005 - Blue Kendo Robe - (no description) +1050006 - Red Kendo Robe - (no description) +1050007 - White Kendo Robe - (no description) +1050008 - Beige Plain Robe - (no description) +1050009 - Blue Plain Robe - (no description) +1050010 - Green Plain Robe - (no description) +1050011 - Black Dragon Robe - (no description) +1050012 - Grey Skull Overall - (no description) +1050013 - Red Skull Overall - (no description) +1050014 - Green Skull Overall - (no description) +1050015 - Blue Skull Overall - (no description) +1050016 - Orange Skull Overall - (no description) +1050017 - Yellow Tights - (no description) +1050018 - Blue Sauna Robe - If worn inside the hotel sauna, the recovery rate for HP and MP will increase 1.5x. +1050019 - Santa Costume - (no description) +1050020 - Paper Box - (no description) +1050021 - Blue Crusader Chainmail - (no description) +1050022 - Dark Crusader Chainmail - (no description) +1050023 - Blue Doros Robe - (no description) +1050024 - Yellow Doros Robe - (no description) +1050025 - White Doros Robe - (no description) +1050026 - White Wizard Robe - (no description) +1050027 - Black Mage Robe - (no description) +1050028 - Green Wizard Robe - (no description) +1050029 - Dark Chaos Robe - (no description) +1050030 - Blue Chaos Robe - (no description) +1050031 - White Chaos Robe - (no description) +1050032 - Silver Officer Uniform - (no description) +1050033 - Black Officer Uniform - (no description) +1050034 - Red Officer Uniform - (no description) +1050035 - Brown Starlight - (no description) +1050036 - Red Starlight - (no description) +1050037 - Green Starlight - (no description) +1050038 - Blue Starlight - (no description) +1050039 - Dark Starlight - (no description) +1050040 - Red Swimming Trunk - (no description) +1050041 - Blue Swimming Trunk - (no description) +1050042 - Fine Brown Hanbok - (no description) +1050043 - Fine Black Hanbok - (no description) +1050044 - Fine Blue Hanbok - (no description) +1050045 - Blue Calas - (no description) +1050046 - Red Calas - (no description) +1050047 - Orange Calas - (no description) +1050048 - White Calas - (no description) +1050049 - Dark Calas - (no description) +1050050 - Dark Suit - (no description) +1050051 - Red-Lined Kismet - (no description) +1050052 - Blue-Lined Kismet - (no description) +1050053 - Blue Anakamoon - (no description) +1050054 - Red Anakamoon - (no description) +1050055 - White Anakamoon - (no description) +1050056 - Dark Anakamoon - (no description) +1050057 - Ghost Uniform - (no description) +1050058 - Orange Tai - (no description) +1050059 - Blue Tai - (no description) +1050060 - Red Tai - (no description) +1050061 - Blue Linnex - (no description) +1050062 - Beige Linnex - (no description) +1050063 - Green Linnex - (no description) +1050064 - Dark Linnex - (no description) +1050065 - Blue Celebration Hanbok - (no description) +1050066 - Green Celebration Hanbok - (no description) +1050067 - Blue Requiem - (no description) +1050068 - Red Requiem - (no description) +1050069 - Brown Requiem - (no description) +1050070 - Dark Requiem - (no description) +1050071 - Men's Ninja Overall - (no description) +1050072 - Green Enigmatic - (no description) +1050073 - Blue Enigmatic - (no description) +1050074 - Dark Enigmatic - (no description) +1050075 - Red Pris - (no description) +1050076 - Blue Pris - (no description) +1050077 - Green Pris - (no description) +1050078 - Dark Pris - (no description) +1050079 - Black Coat of Death - (no description) +1050080 - Green Battle Road - (no description) +1050081 - Red Battle Road - (no description) +1050082 - Blue Battle Road - (no description) +1050083 - Dark Battle Road - (no description) +1050084 - Red Mesoranger - (no description) +1050085 - Blue Mesoranger - (no description) +1050086 - Mesoranger Green - (no description) +1050087 - Black Mesoranger - (no description) +1050088 - Red Ades - (no description) +1050089 - Blue Ades - (no description) +1050090 - Green Ades - (no description) +1050091 - Dark Ades - (no description) +1050092 - Green Oriental Fury Coat - (no description) +1050093 - Blue Oriental Fury Coat - (no description) +1050094 - Red Oriental Fury Coat - (no description) +1050095 - Black Oriental Fury Coat - (no description) +1050096 - Green Katinas - (no description) +1050097 - Blue Katinas - (no description) +1050098 - Red Katinas - (no description) +1050099 - Dark Katinas - (no description) +1050100 - Bathrobe for Men - (no description) +1050101 - Western Cowboy - (no description) +1050102 - Green Varuna - (no description) +1050103 - Blue Varuna - (no description) +1050104 - Red Varuna - (no description) +1050105 - Dark Varuna - (no description) +1050106 - Green Arzuna - (no description) +1050107 - Blue Arzuna - (no description) +1050108 - Red Arzuna - (no description) +1050109 - Green Picnicwear - (no description) +1050110 - Sky Blue Picnicwear - (no description) +1050111 - Boxer Trunks - (no description) +1050112 - Wedding Dress - (no description) +1050113 - Wedding Tuxedo - (no description) +1050114 - Poseidon Armor - (no description) +1050115 - Sea Hermit Robe - (no description) +1050116 - Race Ace Suit - (no description) +1050117 - Tiny Blue Swimshorts - (no description) +1050118 - Tiny Black Swimshorts - (no description) +1050119 - Santa Boy Overall - (no description) +1050120 - Horoscope Overall (Male) - (no description) +1050123 - Royal Hanbok - (no description) +1050124 - Lunar Celebration Suit - (no description) +1050125 - Brown Casual Look - (no description) +1050126 - Imperial Uniform - (no description) +1050127 - Bath Towel (Black) - (no description) +1050128 - Go! Korea! - (no description) +1050131 - Blue Groomsman's Suit - Suits that guest males can wear to attend a wedding. +1050132 - Brown Groomsman's Suit - Suits that guest males can wear to attend a wedding. +1050133 - Red Groomsman's Suit - Suits that guest males can wear to attend a wedding. +1050134 - White Groomsman's Suit - Suits that guest males can wear to attend a wedding. +1050135 - Beau Tuxedo - Tailor-made Tuxedo for grooms +1050136 - Black Male Fur Coat - (no description) +1050137 - White Male Fur Coat - (no description) +1050138 - School uniform with hoody jumper - (no description) +1050139 - Simple school uniform - (no description) +1050141 - Kitty Hoodie (m) - (no description) +1050142 - Hooded Korean Traditional Costume - (no description) +1050145 - Violet Strapless Dress [m] - (no description) +1050146 - Buddy Overall Jeans (M) - (no description) +1050147 - Princess Korean Traditional Costume - (no description) +1050152 - Sailor Outfit - (no description) +1051000 - Steel Fitted Mail - (no description) +1051001 - Emerald Fitted Mail - (no description) +1051002 - Cat Suit - (no description) +1051003 - Brown Doroness Robe - (no description) +1051004 - Purple Doroness Robe - (no description) +1051005 - Red Doroness Robe - (no description) +1051006 - Dark Avenger - (no description) +1051007 - Red Avenger - (no description) +1051008 - Blue Avenger - (no description) +1051009 - Purple Avenger - (no description) +1051010 - Dark Engrit - (no description) +1051011 - Red Engrit - (no description) +1051012 - Blue Engrit - (no description) +1051013 - Yellow Engrit - (no description) +1051014 - Sapphire Fitted Mail - (no description) +1051015 - Blood Fitted Mail - (no description) +1051016 - Silver Fitted Mail - (no description) +1051017 - Red Sauna Robe - If worn inside the hotel sauna, the recovery rate of HP and MP will be 1.5x faster. +1051018 - Purple Skull Overall - (no description) +1051019 - Orange Skull Overall - (no description) +1051020 - Green Skull Overall - (no description) +1051021 - Blue Skull Overall - (no description) +1051022 - Grey Skull Overall - (no description) +1051023 - Purple Moonlight - (no description) +1051024 - Red Moonlight - (no description) +1051025 - Blue Moonlight - (no description) +1051026 - Dark Moonlight - (no description) +1051027 - Brown Moonlight - (no description) +1051028 - White Swimming Suit - (no description) +1051029 - Red Swimming Suit - (no description) +1051030 - Dark Calaf - (no description) +1051031 - White Calaf - (no description) +1051032 - Blue Calaf - (no description) +1051033 - Red Calaf - (no description) +1051034 - Orange Calaf - (no description) +1051035 - Fine Red Hanbok Dress - (no description) +1051036 - Fine Blue Hanbok Dress - (no description) +1051037 - Blue Lumati - (no description) +1051038 - Green Lumati - (no description) +1051039 - Red Lumati - (no description) +1051040 - Dark Enamel Suit - (no description) +1051041 - Red Choro - (no description) +1051042 - Blue Choro - (no description) +1051043 - Brown Choro - (no description) +1051044 - Blue Anakarune - (no description) +1051045 - Red Anakarune - (no description) +1051046 - White Anakarune - (no description) +1051047 - Dark Anakarune - (no description) +1051048 - Witch Clothes - (no description) +1051049 - Mrs. Claus Costume - (no description) +1051050 - Blue Celebration Hanbok Dress - (no description) +1051051 - Pink Celebration Hanbok Dress - (no description) +1051052 - Blue Requierre - (no description) +1051053 - Red Requierre - (no description) +1051054 - Brown Requierre - (no description) +1051055 - Dark Requierre - (no description) +1051056 - Green Enigma - (no description) +1051057 - Purple Enigma - (no description) +1051058 - Dark Enigma - (no description) +1051059 - Pink Nurse Uniform - (no description) +1051060 - White Nurse Uniform - (no description) +1051061 - Women's Ninja Uniform - (no description) +1051062 - Blue Lineros - (no description) +1051063 - Beige Lineros - (no description) +1051064 - Green Lineros - (no description) +1051065 - Dark Lineros - (no description) +1051066 - Red Pria - (no description) +1051067 - Blue Pria - (no description) +1051068 - Green Pria - (no description) +1051069 - Dark Pria - (no description) +1051070 - Bunny Costume - (no description) +1051071 - Pink Kimono - (no description) +1051072 - White Kimono - (no description) +1051073 - Red Kimono - (no description) +1051074 - Yellow Kimono - (no description) +1051075 - Blue Swimming Suit - (no description) +1051076 - Ghost Suit - (no description) +1051077 - Yellow Battle Empress - (no description) +1051078 - Red Battle Empress - (no description) +1051079 - Blue Battle Empress - (no description) +1051080 - Dark Battle Empress - (no description) +1051081 - Purple Kimono - (no description) +1051082 - Red Anes - (no description) +1051083 - Blue Anes - (no description) +1051084 - Green Anes - (no description) +1051085 - Dark Anes - (no description) +1051086 - Ragged Korean Costume - (no description) +1051087 - Pink Mesoranger - (no description) +1051088 - Yellow Mesoranger - (no description) +1051089 - Black Mesoranger - (no description) +1051090 - Green Katte - (no description) +1051091 - Blue Katte - (no description) +1051092 - Red Katte - (no description) +1051093 - Dark Katte - (no description) +1051094 - Green Oriental Fury Coat - (no description) +1051095 - Blue Oriental Fury Coat - (no description) +1051096 - Red Oriental Fury Coat - (no description) +1051097 - Black Oriental Fury Coat - (no description) +1051098 - Bathrobe for Women - (no description) +1051099 - Prep Uniform - (no description) +1051100 - Western Cowgirl - (no description) +1051101 - Green Bazura - (no description) +1051102 - Blue Bazura - (no description) +1051103 - Red Bazura - (no description) +1051104 - Dark Bazura - (no description) +1051105 - Green Armis - (no description) +1051106 - Blue Armis - (no description) +1051107 - Red Armis - (no description) +1051108 - Pink Picnic Dress - (no description) +1051109 - Yellow Picnic Dress - (no description) +1051110 - Purple Frill One Piece - (no description) +1051111 - Blue Frill One Piece - (no description) +1051112 - Boxing Gear (F) - (no description) +1051113 - Transparent Overall (F) - Use this Overall equip if you want to make your Overall equip transparent while still using all of the stats your Overall equip possesses. +1051114 - Wedding Dress - (no description) +1051115 - Sea Queen Dress - (no description) +1051116 - Race Queen Uniform - (no description) +1051117 - Diao Chan Dress - (no description) +1051118 - Pink Strapless Bikini - (no description) +1051119 - Blue Strapless Bikini - (no description) +1051120 - Flight Attendant Uniform - (no description) +1051121 - Tropical Dress - (no description) +1051122 - White Cat Costume - (no description) +1051123 - Violet Strapless Dress - (no description) +1051124 - Purple Ring One Piece - (no description) +1051125 - Black Cat Costume - (no description) +1051126 - Red Chinese Dress - (no description) +1051127 - Maid Uniform - (no description) +1051128 - Horoscope Overall (Female) - (no description) +1051131 - Santa Girl Overall - (no description) +1051132 - White Coat - (no description) +1051133 - Rough Coat - (no description) +1051134 - Leopard Print Coat - (no description) +1051135 - Ruffled Coat - (no description) +1051136 - Korean Dress for the Palace - (no description) +1051137 - Rabbit Fur Dress - (no description) +1051138 - Lunar Celebration Dress - (no description) +1051139 - White Ribboned Sailor Dress - (no description) +1051140 - Yellow Bath Towel - (no description) +1051141 - Female Shaman Costume - (no description) +1051142 - Vibrant Yellow Dress - (no description) +1051143 - Korean Flag Tank Top & Skirt - (no description) +1051144 - Elegant Blue One Piece - (no description) +1051147 - Street Cred Ensemble - (no description) +1051148 - Navy Blue Au Luxe - (no description) +1051149 - Princess Dress - (no description) +1051150 - Blue Bridesmaid's Dress - Dresses that guest females can wear to attend a wedding. +1051151 - Pink Bridesmaid's Dress - Dresses that guest females can wear to attend a wedding. +1051152 - Red Bridesmaid's Dress - Dresses that guest females can wear to attend a wedding. +1051153 - White Bridesmaid's Dress - Dresses that guest females can wear to attend a wedding. +1051154 - Princess Isis - Elegant Wedding Dress for brides. +1051155 - Queen Mary - Modern, Sexy Wedding Dress for brides +1051156 - Black Female Fur Coat - (no description) +1051157 - White Female Fur Coat - (no description) +1051158 - School uniform with hoody jumper - (no description) +1051159 - Simple school uniform - (no description) +1051160 - Pink-Striped Dress - (no description) +1051162 - Cute Sailor Dress - (no description) +1051163 - Gothic Overall - (no description) +1051164 - Kitty Hoodie (f) - (no description) +1051166 - Dressu Korean Traditional Costume - (no description) +1051167 - Black Rockabilly Dress - (no description) +1051169 - Sky Blue Picnicwear [F] - (no description) +1051170 - Buddy Overall Jeans (F) - (no description) +1051171 - Royal Costume - (no description) +1051180 - Sailor Outfit - (no description) +1052000 - Recycled Box - (no description) +1052001 - Paper Box - (no description) +1052002 - Cardboard Box - (no description) +1052003 - Blue Chinese Undead Costume - (no description) +1052004 - Maroon Chinese Undead Costume - (no description) +1052005 - Yellow Raincoat - (no description) +1052006 - Sky Blue Raincoat - (no description) +1052007 - Red Raincoat - (no description) +1052008 - Green Raincoat - (no description) +1052009 - Orange Overall - (no description) +1052010 - Pink Overall - (no description) +1052011 - Blue Overall - (no description) +1052012 - Green Overall - (no description) +1052013 - Graduation Gown - (no description) +1052014 - Ducky Costume - (no description) +1052015 - Blue Shinsun - (no description) +1052016 - Brown Shinsun - (no description) +1052017 - Orange Life-Jacket - (no description) +1052018 - Green Life-Jacket - (no description) +1052019 - Blue Life-Jacket - (no description) +1052020 - White Body Tights - (no description) +1052021 - Black Body Tights - (no description) +1052022 - White Holed Tights - (no description) +1052023 - Black Holed Tights - (no description) +1052024 - Big Kimono - (no description) +1052025 - Denim Overall - (no description) +1052026 - Grey Full Coat - (no description) +1052027 - Red Full Coat - (no description) +1052028 - Forest Samurai Outfit - (no description) +1052029 - Premium Trenchcoat - (no description) +1052030 - Toga - (no description) +1052031 - Reindeer Suit - (no description) +1052032 - Red Bruma - (no description) +1052033 - Green Bruma - (no description) +1052034 - Blue Bruma - (no description) +1052035 - Guan Yu Armor - (no description) +1052036 - Zhu-Ge-Liang Gown - (no description) +1052037 - Patissier Uniform - (no description) +1052038 - Blue Robot Pilotgear - (no description) +1052039 - Liu Bei Robe - (no description) +1052040 - Cao Cao Robe - (no description) +1052041 - Sun Quan Robe - (no description) +1052042 - Pink Robot Pilotgear - (no description) +1052043 - Hip Hop Sweats - (no description) +1052044 - Scuba Diving Suit - (no description) +1052045 - Mink Coat - (no description) +1052046 - Snowman Costume - (no description) +1052047 - Black Snowboard Overall - (no description) +1052048 - Brown Snowboard Overall - (no description) +1052049 - Yang In - (no description) +1052050 - Red Hip Hop - (no description) +1052051 - Blue Hip Hop - (no description) +1052052 - Musashi Costume - (no description) +1052053 - Teddy Bear Costume - (no description) +1052054 - Welder Look - (no description) +1052055 - Enamer - (no description) +1052056 - Soccer Uniform - (no description) +1052057 - England Soccer Uniform(No.7) - (no description) +1052058 - Brazil Soccer Uniform(No.10) - (no description) +1052059 - France Soccer Uniform(No.14) - (no description) +1052060 - England Soccer Uniform(No.8) - (no description) +1052061 - Brazil Soccer Uniform(No.9) - (no description) +1052062 - France Soccer Uniform(No.10) - (no description) +1052063 - USA Soccer Uniform(No.17) - (no description) +1052064 - Mexico Soccer Uniform(No.4) - (no description) +1052065 - USA Soccer Uniform(No.21) - (no description) +1052066 - Mexico Soccer Uniform(No.9) - (no description) +1052067 - Mummy Suit - (no description) +1052068 - Skull Suit - (no description) +1052069 - Flamboyant Autumn Gear - (no description) +1052071 - Red Mantle - (no description) +1052072 - Black Garina - (no description) +1052075 - Blue Dragon Armor - (no description) +1052076 - Blue Czar - (no description) +1052077 - Moon Bunny Costume - (no description) +1052078 - Soap Bubble Bonanza - (no description) +1052079 - Prince of Darkness - (no description) +1052081 - Training Uniform for Beginners - (no description) +1052082 - Elf Overall - (no description) +1052083 - Son Wu Kong robe - (no description) +1052084 - Golden Armor - (no description) +1052085 - Red Amorian Apron - (no description) +1052086 - Blue Amorian Apron - (no description) +1052087 - Dark Blue Kimono - (no description) +1052089 - Black Overcoat of Doom - (no description) +1052090 - Rompers - (no description) +1052091 - Sachiel Armor - (no description) +1052092 - Veamoth Armor - (no description) +1052093 - Janus Armor - (no description) +1052094 - Zhu Ba Jie Overall - (no description) +1052095 - Brown Rocky Suit - (no description) +1052098 - Brown Cotton Lagger - (no description) +1052101 - Beige Carribean - (no description) +1052104 - Brown Turk Gally - (no description) +1052107 - Brown Pollard - (no description) +1052110 - Blue Brace Look - (no description) +1052113 - Red Barbay - (no description) +1052116 - Green Plasteer - (no description) +1052119 - Black Royal Barone - (no description) +1052122 - Red Viska - (no description) +1052125 - White Pioneer - (no description) +1052128 - White Marquini - (no description) +1052131 - Red Belly Duke - (no description) +1052134 - Canopus Suit - (no description) +1052135 - Centaurus Legs - (no description) +1052142 - Shorts with Suspenders - (no description) +1052143 - Sky Blue Padded Coat - (no description) +1052144 - Luxurious Padded Coat - (no description) +1052145 - Christmas Party Suit - (no description) +1052147 - Chinese Lion Costume - The lion costume worn with the famous lion headgear for the lion dance to celebrate Lunar New Year. +1052148 - Bosshunter Armor - (no description) +1052149 - Bosshunter Gi - (no description) +1052151 - Bosshunter Armor - (no description) +1052152 - Bosshunter Gi - (no description) +1052153 - Red Viska for Transformation - (no description) +1052154 - Tiger Cub Outfit - (no description) +1052170 - Noob Overall - From the early days of Maple Island! Relive the past with this authentic Noob overall! +1052169 - Gaga Suit - (no description) +1052171 - Baby Chick Apron - (no description) +1052175 - Coastal Winter Wear - (no description) +1052179 - Cow Costume - (no description) +1052176 - Fashionable Checkerwear - (no description) +1051173 - Purple Dorothy Dress - (no description) +1052155 - Timeless Taragon - (no description) +1052156 - Timeless Myst Blue - (no description) +1052157 - Timeless Evernew - (no description) +1052158 - Timeless Prinsid - (no description) +1052159 - Timeless Burgunt - (no description) +1052160 - Reverse Taragon - (no description) +1052161 - Reverse Myst Blue - (no description) +1052162 - Reverse Evernew - (no description) +1052163 - Reverse Prinsid - (no description) +1052164 - Reverse Burgunt - (no description) +1052165 - Parachute Agent Suit - (no description) +1052166 - Invincible Agent Suit - (no description) +1052167 - Ultimate Agent Suit - (no description) +1052180 - Denim Overalls - (no description) +1052194 - Caveman Outfit - (no description) +1051179 - Pretty Girl - (no description) +1052168 - Cutie Buck Outfit - (no description) +1052172 - Pumpkin Clothes - (no description) +1052173 - Tacky Manager Uniform - (no description) +1052177 - Fancy Noblesse Robe - (no description) +1052178 - Snowflake knit - (no description) +1052183 - ??? ??? - (no description) +1052200 - Lolli Pink Suit - (no description) +1051183 - Night Fever Ensemble - (no description) +1052199 - Blade Overall - (no description) +1051188 - Blue Daisy Dress - (no description) +1050154 - Seraphim Suit - (no description) +1051190 - Seraphim Suit - (no description) +1052213 - Chaos Armor - (no description) +1052214 - Maple Racing Suit - (no description) +1052211 - Fire Shadow Suit - (no description) +1052210 - Alchemist Overall - (no description) +1052182 - Galactic Hero Suit - (no description) +1052197 - Brave Soldier Armor - (no description) +1052202 - Pink Bean Suit - (no description) +1052203 - One Summer Night - (no description) +1052196 - Aran Armor - (no description) +1052193 - Honeybee Costume - (no description) +1051185 - Maid Dress - (no description) +1052192 - Bombacha - (no description) +1052195 - Aran Armor - (no description) +1052209 - Royal Navy Uniform - (no description) +1051192 - Blue Marine Girl - (no description) +1050155 - King Pepe White Devil Robe - (no description) +1050156 - Blue Towel - (no description) +1051189 - Yellow Anticipation - (no description) +1051191 - King Pepe Red Doroness Robe - (no description) +1051193 - Orange Towel - (no description) +1052208 - King Pepe Blue Suspenders Look - (no description) +1052218 - Clown Suit - (no description) +1051175 - Fur-Trimmed Dress - (no description) +1052226 - Former Hero Robe - (no description) +1052137 - Tomato Suit - (no description) +1052234 - Stylish Layered Plaid - (no description) diff --git a/handbook/Equip/Pants.txt b/handbook/Equip/Pants.txt new file mode 100644 index 0000000000..57f7acdd29 --- /dev/null +++ b/handbook/Equip/Pants.txt @@ -0,0 +1,410 @@ +1060000 - Black Jangoon Pants - (no description) +1060001 - Black Suit Pants - (no description) +1060002 - Blue Jean Shorts - (no description) +1060003 - Military Shorts - (no description) +1060004 - Grey Thick Sweat Pants - (no description) +1060005 - Warfare Pants - (no description) +1060006 - Brown Cotton Shorts - (no description) +1060007 - Jean Capris - (no description) +1060008 - Brown Lolico Pants - (no description) +1060009 - Steel Corporal Pants - (no description) +1060010 - Steel Sergeant Kilt - (no description) +1060011 - Orihalcon Master Sergeant Kilt - (no description) +1060012 - Blue Training Pants - (no description) +1060013 - Grey / Brown Training Pants - (no description) +1060014 - Black Split Pants - (no description) +1060015 - White Split Pants - (no description) +1060016 - Black Martial Arts Pants - (no description) +1060017 - White Martial Arts Pants - (no description) +1060018 - Red Martial Arts Pants - (no description) +1060019 - Brown Martial Arts Pants - (no description) +1060020 - White Martial Arts Shorts - (no description) +1060021 - Blue Cloth Pants - (no description) +1060022 - Red Cloth Pants - (no description) +1060023 - Black Cloth Pants - (no description) +1060024 - Dark Nightshift Pants - (no description) +1060025 - Blue Nightshift Pants - (no description) +1060026 - Blue-Striped Boxers - (no description) +1060027 - Brown Corporal Pants - (no description) +1060028 - Blue Lolico Pants - (no description) +1060029 - Red Sergeant Kilt - (no description) +1060030 - Dark Master Sergeant Kilt - (no description) +1060031 - Blue Pao Bottom - (no description) +1060032 - Red Pao Bottom - (no description) +1060033 - Black Pao Bottom - (no description) +1060034 - Blue Rider Pants - (no description) +1060035 - Shine Rider Pants - (no description) +1060036 - Dark Rider Pants - (no description) +1060037 - Dark Brown Sneak Pants - (no description) +1060038 - Brown Sneak Pants - (no description) +1060039 - Black Sneak Pants - (no description) +1060040 - Blue Trainer Pants - (no description) +1060041 - Green Trainer Pants - (no description) +1060042 - Orange Trainer Pants - (no description) +1060043 - Dark Brown Stealer Pants - (no description) +1060044 - Dark Silver Stealer Pants - (no description) +1060045 - Red / Gold Stealer Pants - (no description) +1060046 - Silver / Black Stealer Pants - (no description) +1060047 - Original Disco Pants - (no description) +1060048 - Green Disco Pants - (no description) +1060049 - Blue Disco Pants - (no description) +1060050 - Blue Knucklevest Pants - (no description) +1060051 - Red Knucklevest Pants - (no description) +1060052 - Black Knucklevest Pants - (no description) +1060053 - Wild Pants - (no description) +1060054 - Brown Wild Pants - (no description) +1060055 - Red Wild Pants - (no description) +1060056 - Green Hunter's Pants - (no description) +1060057 - Dark Hunter's Pants - (no description) +1060058 - Red Hunter's Pants - (no description) +1060059 - Blue Hunter's Pants - (no description) +1060060 - Silver Master Sergeant Kilt - (no description) +1060061 - Red Legolier Pants - (no description) +1060062 - Blue Legolier Pants - (no description) +1060063 - Green Legolier Pants - (no description) +1060064 - Dark Legolier Pants - (no description) +1060065 - Brown Legolier Pants - (no description) +1060066 - Cowboy Pants - (no description) +1060067 - Preschool Pants - (no description) +1060068 - Dark Piette Pants - (no description) +1060069 - Brown Piette Pants - (no description) +1060070 - Blue Piette Pants - (no description) +1060071 - Khaki Shadow Pants - (no description) +1060072 - Marine Shadow Pants - (no description) +1060073 - Dark Shadow Pants - (no description) +1060074 - White Jangoon Pants - (no description) +1060075 - Brown Jangoon Pants - (no description) +1060076 - Blue Shouldermail Pants - (no description) +1060077 - Oaker Shouldermail Pants - (no description) +1060078 - Umber Shouldermail Pants - (no description) +1060079 - Green Orientican Pants - (no description) +1060080 - Red Orientican Pants - (no description) +1060081 - Blue Orientican Pants - (no description) +1060082 - Dark Orientican Pants - (no description) +1060083 - Red China Pants - (no description) +1060084 - Blue China Pants - (no description) +1060085 - Brown China Pants - (no description) +1060086 - Green China Pants - (no description) +1060087 - Light Scorpio Pants - (no description) +1060088 - Oaker Scorpio Pants - (no description) +1060089 - Dark Scorpio Pants - (no description) +1060090 - Bronze Platine Pants - (no description) +1060091 - Mithril Platine Pants - (no description) +1060092 - Orihalcon Platine Pants - (no description) +1060093 - Brown Studded Pants - (no description) +1060094 - Blue Studded Pants - (no description) +1060095 - Dark Studded Pants - (no description) +1060096 - Old School Uniform Pants - (no description) +1060097 - Green Pirate Pants - (no description) +1060098 - Red Pirate Pants - (no description) +1060099 - Dark Pirate Pants - (no description) +1060100 - Green Commodore Pants - (no description) +1060101 - Blue Commodore Pants - (no description) +1060102 - Dark Commodore Pants - (no description) +1060103 - Hawaiian Skirt - (no description) +1060104 - Green Osfa Pants - (no description) +1060105 - Brown Osfa Pants - (no description) +1060106 - Purple Osfa Pants - (no description) +1060107 - Red Osfa Pants - (no description) +1060108 - Torn-up Jeans - (no description) +1060109 - Green Neos Pants - (no description) +1060110 - Blue Neos Pants - (no description) +1060111 - Black Neos Pants - (no description) +1060112 - Prep School Uniform Pants - (no description) +1060113 - Blue Leggings - (no description) +1060114 - Washed Jeans - (no description) +1060115 - Transparent Bottom (M) - Use this Bottom equip if you want to make your Bottom equip transparent while still using all of the stats your Bottom equip possesses. +1060116 - Military Cargo Shorts - (no description) +1060117 - Tropical Shorts - (no description) +1060118 - Orange Puffy Pants - (no description) +1060119 - Denim Wrinkled skirt - (no description) +1060120 - Tania Tartan Pants - (no description) +1060121 - Mercury Washed Jeans - (no description) +1060122 - Pink Miniskirt - (no description) +1060123 - Blue Sailor Skirt - (no description) +1060125 - Blue Skirt (m) - (no description) +1060126 - Black Wakeboard Pants - (no description) +1060127 - Stirgeman's Utility Pants - (no description) +1060128 - Stirgeman Utility Pants Mk II - (no description) +1060129 - Stirgeman Utility Pants Mk III - (no description) +1060130 - Stirgeman Utility Pants Mk IV - (no description) +1060131 - Stirgeman Utility Pants Mk V - (no description) +1060132 - Stirgeman Power Pants - (no description) +1060133 - Stirgeman Power Pants Mk II - (no description) +1061000 - Blue Bell Dress - (no description) +1061001 - Blue Sailor Skirt - (no description) +1061002 - Red Miniskirt - (no description) +1061003 - Red Qi Pao Pants - (no description) +1061004 - Pink Miniskirt - (no description) +1061005 - Roll-up Jean - (no description) +1061006 - Green Able Armor Skirt - (no description) +1061007 - Red Sailor Skirt - (no description) +1061008 - Indigo Miniskirt - (no description) +1061009 - Green Avelin Skirt - (no description) +1061010 - Black Armine Skirt - (no description) +1061011 - Green Armine Skirt - (no description) +1061012 - Purple Arianne Skirt - (no description) +1061013 - Green Arianne Skirt - (no description) +1061014 - Rookie Pants - (no description) +1061015 - Blue Shark Skirt - (no description) +1061016 - Red Ramel Skirt - (no description) +1061017 - Green Ramel Skirt - (no description) +1061018 - Brown Ramel Skirt - (no description) +1061019 - Sky Shark Skirt - (no description) +1061020 - Red Shark Skirt - (no description) +1061021 - Pink Arianne Skirt - (no description) +1061022 - Yellow Arianne Skirt - (no description) +1061023 - Sophia Pants - (no description) +1061024 - Green Shivermail Skirt - (no description) +1061025 - Red Shivermail Skirt - (no description) +1061026 - Purple Shivermail Skirt - (no description) +1061027 - Black Split Skirt - (no description) +1061028 - White Split Skirt - (no description) +1061029 - Red Cloth Pants - (no description) +1061030 - Blue Cloth Pants - (no description) +1061031 - Black Cloth Pants - (no description) +1061032 - Purple Qi Pao Pants - (no description) +1061033 - Blue Qi Pao Pants - (no description) +1061034 - Purple Fairy Skirt - (no description) +1061035 - Green Fairy Skirt - (no description) +1061036 - Blue Fairy Skirt - (no description) +1061037 - Red Nightshift Pants - (no description) +1061038 - Brown Nightshift Pants - (no description) +1061039 - Pink Cotton Boxers - (no description) +1061040 - Red Qi Pao Skirt - (no description) +1061041 - Purple Qi Pao Skirt - (no description) +1061042 - Blue Qi Pao Skirt - (no description) +1061043 - Red Steal Pants - (no description) +1061044 - Black Steal Pants - (no description) +1061045 - Blue Steal Pants - (no description) +1061046 - Purple Steal Pants - (no description) +1061047 - Red Amoria Skirt - (no description) +1061048 - Blue Amoria Skirt - (no description) +1061049 - Black Amoria Skirt - (no description) +1061050 - Green Huntress Pants - (no description) +1061051 - Black Huntress Pants - (no description) +1061052 - Red Huntress Pants - (no description) +1061053 - Dark Sneak Pants - (no description) +1061054 - Blood Sneak Pants - (no description) +1061055 - Sky Sneak Pants - (no description) +1061056 - Gold Sneak Pants - (no description) +1061057 - Yellow Avelin Skirt - (no description) +1061058 - Brown Able Skirt - (no description) +1061059 - Grey Able Skirt - (no description) +1061060 - Red Legolia Pants - (no description) +1061061 - Blue Legolia Pants - (no description) +1061062 - Green Legolia Pants - (no description) +1061063 - Dark Legolia Pants - (no description) +1061064 - Brown Legolia Pants - (no description) +1061065 - Sky Blue Miniskirt - (no description) +1061066 - Yellow Mimi Skirt - (no description) +1061067 - Cowboy Shorts - (no description) +1061068 - Pre-School Uniform Skirt - (no description) +1061069 - Purple Shadow Pants - (no description) +1061070 - Red Shadow Pants - (no description) +1061071 - Dark Shadow Pants - (no description) +1061072 - Red Trainer Pants - (no description) +1061073 - Sky Blue Trainer Pants - (no description) +1061074 - Pink Trainer Pants - (no description) +1061075 - Black Trainer Pants - (no description) +1061076 - Maroon Moon Pants - (no description) +1061077 - Blue Moon Pants - (no description) +1061078 - Brown Moon Pants - (no description) +1061079 - Red Moon Pants - (no description) +1061080 - White Piettra Skirt - (no description) +1061081 - Brown Piettra Skirt - (no description) +1061082 - Dark Piettra Skirt - (no description) +1061083 - Red Jangoon Skirt - (no description) +1061084 - Brown Jangoon Skirt - (no description) +1061085 - Black Jangoon Skirt - (no description) +1061086 - Red Shouldermail Pants - (no description) +1061087 - Ivory Shouldermail Pants - (no description) +1061088 - Dark Shouldermail Pants - (no description) +1061089 - Blue Skirt - (no description) +1061090 - Green Ice Queen Skirt - (no description) +1061091 - Red Ice Queen Skirt - (no description) +1061092 - Blue Ice Queen Skirt - (no description) +1061093 - Light Mantis Pants - (no description) +1061094 - Bloody Mantis Pants - (no description) +1061095 - Umber Mantis Pants - (no description) +1061096 - Aqua Platina Pants - (no description) +1061097 - Violet Platina Pants - (no description) +1061098 - Blood Platina Pants - (no description) +1061099 - Purple Mystique Pants - (no description) +1061100 - Blue Mystique Pants - (no description) +1061101 - Pink Mystique Pants - (no description) +1061102 - Red Mystique Pants - (no description) +1061103 - Old School Uniform (Skirt) - (no description) +1061104 - Green Pirate Skirt - (no description) +1061105 - Red Pirate Skirt - (no description) +1061106 - Dark Pirate Skirt - (no description) +1061107 - SF Ninja Pants - (no description) +1061108 - Red Training Shorts - (no description) +1061109 - Sky Blue Training Shorts - (no description) +1061110 - Pink Training Shorts - (no description) +1061111 - Black Training Shorts - (no description) +1061112 - Pink Frill Pajama Bottom - (no description) +1061113 - Hawaiian Skirt - (no description) +1061114 - Green Osfa Pants - (no description) +1061115 - Brown Osfa Pants - (no description) +1061116 - Purple Osfa Pants - (no description) +1061117 - Red Osfa Pants - (no description) +1061118 - Green Valkyrie Skirt - (no description) +1061119 - Purple Valkyrie Skirt - (no description) +1061120 - Blood Valkyrie Skirt - (no description) +1061121 - Green Lucida Skirt - (no description) +1061122 - Purple Lucida Skirt - (no description) +1061123 - Dark Lucida Skirt - (no description) +1061124 - Red Leggings - (no description) +1061125 - Transparent Bottom (F) - Use this Bottom equip if you want to make your Bottom equip transparent while still using all of the stats your Bottom equip possesses. +1061126 - Plitz Skirt - (no description) +1061127 - Blue Diamond Bootcuts - (no description) +1061128 - Pink Diamond Bootcuts - (no description) +1061129 - Butterfly Skirt - (no description) +1061130 - Green Long Skirt - (no description) +1061131 - Blue Slit Skirt - (no description) +1061132 - Skirt w/ Tights - (no description) +1061133 - Orange Long Skirt - (no description) +1061134 - Denim Miniskirt - (no description) +1061135 - Pink Layered Skirt - (no description) +1061136 - Long Khaki Skirt - (no description) +1061137 - Dark Denim Skirt - (no description) +1061138 - Pink-Hearted Hot Pants - (no description) +1061139 - Military Cargo Shorts - (no description) +1061140 - Denim Skirt & Striped Sox - (no description) +1061141 - Tania Tartan Skirt - (no description) +1061142 - Mercury Jean Skirt - (no description) +1061143 - Amorian Pink Skirt - (no description) +1061144 - Blue Jeans - (no description) +1061147 - Old School Uniform Pants (F) - (no description) +1061148 - Pink Frill Swim Skirt - (no description) +1061149 - Stirgeman's Utility Skirt - (no description) +1061150 - Stirgeman Utility Skirt Mk II - (no description) +1061151 - Stirgeman Utility Skirt Mk III - (no description) +1061152 - Stirgeman Utility Skirt Mk IV - (no description) +1061153 - Stirgeman Utility Skirt Mk V - (no description) +1061154 - Stirgeman Power Skirt - (no description) +1061155 - Stirgeman Power Skirt Mk II - (no description) +1062000 - Ice Jeans - (no description) +1062001 - Sandblasted Jeans - (no description) +1062002 - Brown Hard Leather Pants - (no description) +1062003 - Red Hip-Hop Pants - (no description) +1062004 - Archer Pants - (no description) +1062005 - Lined Hip-Hop Pants - (no description) +1062006 - Bennis Chainpants - (no description) +1062007 - Wizet Plain Suit Pants - (no description) +1062008 - Pink Camping Shorts - (no description) +1062009 - Green Camping Shorts - (no description) +1062010 - Blue Camping Shorts - (no description) +1062011 - Wildcats Baseball Pants (Basic) - (no description) +1062012 - Wildcats Baseball Pants (Home) - (no description) +1062013 - Wildcats Baseball Pants (Away) - (no description) +1062014 - Wildcats Baseball Pants (Alternate) - (no description) +1062015 - Ripped Jeans - (no description) +1062016 - Yellow Snowboard Pants - (no description) +1062017 - Green Snowboard Pants - (no description) +1062018 - Bell-Bottomed Faded Jeans - (no description) +1062019 - Pink Snowboard Pants - (no description) +1062020 - Sky Blue Snowboard Pants - (no description) +1062021 - Jean Shorts - (no description) +1062022 - Old Army Pants - (no description) +1062023 - Baggy Jeans - (no description) +1062024 - Camouflaged Army Pants - (no description) +1062025 - Blue Polka-Dot Pajama Pants - (no description) +1062026 - Red Polka-Dot Pajama Pants - (no description) +1062027 - Prisoner Pants - (no description) +1062028 - Picnic Jean Shorts - (no description) +1062029 - Blue B-Ball Shorts - (no description) +1062030 - Orange B-Ball Shorts - (no description) +1062031 - Checkered Shorts - (no description) +1062032 - Cargo Pants - (no description) +1062033 - Red Checkered Pants - (no description) +1062034 - White Checkered Pants - (no description) +1062035 - Bone Buckled Slack - (no description) +1062036 - none - (no description) +1062037 - Blue Burma - (no description) +1062038 - Hip Hop Jeans - (no description) +1062039 - White Jeans - (no description) +1062040 - Washed Denim Cargos - (no description) +1062041 - Denim Cargos - (no description) +1062042 - Jeans w/ Chain - (no description) +1062043 - Black Leather Pants - (no description) +1062044 - Red Leather Pants - (no description) +1062045 - Patched Denim Jeans - (no description) +1062046 - Vintage Pocket Pants - (no description) +1062047 - Brisk - (no description) +1062048 - Brown Checkered Pants - (no description) +1062049 - Football Bottom(Home) - (no description) +1062050 - Football Bottom(Away) - (no description) +1062051 - All-Star Blue Jeans - (no description) +1062052 - White Faded Jeans - (no description) +1062053 - Pink-Lined Shorts - (no description) +1062054 - Busy Bee Shorts - (no description) +1062055 - Jailbird Shorts - (no description) +1062056 - Military Cargo Pants - (no description) +1062057 - Scottish Pants - (no description) +1062058 - Inferno Jeans - (no description) +1062059 - Vintage Black Jeans - (no description) +1062060 - Blue Skinny Jeans - (no description) +1062061 - Olive Skinny Jeans - (no description) +1062062 - Red Wine Skinny Jeans - (no description) +1062063 - Dark Rocker Jeans - (no description) +1062064 - Checks Point Pants - (no description) +1062065 - White-Striped Trainer Shorts - (no description) +1062066 - Vintage Sky Blue Jeans - (no description) +1062067 - Summer Capris - (no description) +1062068 - Rainbow Shorts - (no description) +1062069 - Brown Chained Pants - (no description) +1062070 - Painted Blue Jeans - (no description) +1062071 - Low-rise Ripped Jeans - (no description) +1062072 - Relaxed Fit Jeans - (no description) +1062073 - Olive Pumpkin Pants - (no description) +1062075 - Vintage Black Pants - (no description) +1062076 - Light Blue Ripped Jeans - (no description) +1062077 - Brown Bubble Jeans - (no description) +1062080 - Amorian Pink Skirt - (no description) +1062081 - Bunny-Padded Snowboard Pants - (no description) +1062082 - Red and Black Warm-ups - (no description) +1062083 - Brown Pocket Shorts - (no description) +1062084 - Jewel Chain Jeans - (no description) +1062085 - "Black Tie Affair" Dress Pants - (no description) +1062086 - Dark Master Sergeant Skirt for Transformation - (no description) +1062087 - Red Legollesse Pants for Transformation - (no description) +1062088 - Dark Night Pants for Transformation - (no description) +1062089 - Purple Heart Boxers - (no description) +1062091 - Black Checkered Shorts - (no description) +1062092 - Pink 80s Slacks - (no description) +1062095 - Milan Jeans - (no description) +1062096 - Practical Linen Trousers - (no description) +1062097 - Ella Blue Denim - (no description) +1062098 - Aqua Jeans - (no description) +1062093 - Moss Green Pants - (no description) +1062094 - Ruby-Buckled Shorts - (no description) +1062100 - Rolled-up Baggy Jeans - (no description) +1062106 - Bunny Frill Pants - A cute pair of pants featuring an adorable bunny on the back. +1062101 - Rolled-up Skinny Jeans - (no description) +1062104 - Dark Purple Jeans - (no description) +1062105 - Plaid Roll-Up Jeans - (no description) +1062109 - Neon Skinny Jeans - (no description) +1062111 - Blue Ribbon Shorts - (no description) +1062113 - Crayon Shorts - (no description) +1062114 - Pink Heart Shorts - (no description) +1062074 - Brown Pumpkin Pants - (no description) +1062102 - Twinkle Star Blue Jeans - (no description) +1062103 - Baggy Glow-in-the-dark Pants - (no description) +1062108 - Vintage Jeans - (no description) +1062107 - Shooting Star Jeans - (no description) +1062116 - Star Beach Shorts - (no description) +1062110 - Baby Pink Pants - (no description) +1062119 - Technicolour Funky Pants - (no description) +1062112 - Underpants - (no description) +1060134 - King Pepe White Martial Arts Shorts - (no description) +1060135 - King Pepe Dark Legolier Pants - (no description) +1060136 - King Pepe Black Knucklevest Pants - (no description) +1061156 - King Pepe Red Shark Skirt - (no description) +1061157 - King Pepe Brown Legolia Pants - (no description) +1061158 - King Pepe Purple Steal Pants - (no description) +1062115 - Simple Warrior Pants - (no description) +1062118 - Stone Washed Jeans - (no description) +1061160 - Average Denim Skirt - (no description) +1060138 - Average Denim Shorts - (no description) diff --git a/handbook/Equip/PetEquip.txt b/handbook/Equip/PetEquip.txt new file mode 100644 index 0000000000..83ba78ce1e --- /dev/null +++ b/handbook/Equip/PetEquip.txt @@ -0,0 +1,67 @@ +1802000 - Red Ribbon - (no description) +1802001 - Yellow Hat - (no description) +1802002 - Red Hat - (no description) +1802003 - Black Hat - (no description) +1802004 - Pink Laced Cap - (no description) +1802005 - Sky Blue Laced Cap - (no description) +1802006 - Blue Top Hat - (no description) +1802007 - Red Top Hat - (no description) +1802008 - Rudolph's Hat - (no description) +1802009 - Tree Hat - (no description) +1802010 - Mushroom Suit - An orange mushroom suit custom-fitted for #cblack pigs#. +1802011 - Red Fur Coat - A red coat with white fur hat custom-fitted for #cHuskies#. +1802012 - Chestnut Cap - A very warm-looking chestnut cap that's custom-fitted for #cpandas#. +1802013 - Red Scarf - A red scarf with stripes custom-fitted for #cbunnies#. +1802014 - Mini Kargo Wings - A small, cutesy set of wings for #ckargo's# only. +1802015 - Dino King & Queen - A crown and a cape which can only be worn by #cDino Boy and Dino Girl#. +1802016 - Husky Yellow Tights - A yellow trainer that can only be worn by #cHuskies#. +1802017 - Monkey Sack - A sack which can only be worn by the #cMonkey#. +1802018 - Clown Dress - A Clown constume that can only be worn by the #cPanda#. +1802019 - Rudolph's Sleigh - It is the very vehicle Santa uses on his Christmas trips. Only available for Rudolph. +1802020 - White Tiger Suit - A black thief costume for #cwhite tiger# only. +1802021 - Elephant Hat - Elephant Hat +1802022 - Aladin Vest - Aladin Vest +1802023 - Pelvis Hair - A Pelvis Hair that can only be equipped by a #cMonkey#. +1802024 - White Tiger the Wizard - A purple wizard costume for #cwhite tiger# only. +1802025 - Bunny Suit - A pink bunny suit for #cHusky# only. +1802026 - Prince Pepe - A stubborn Pepe that only wants to be besides #cYeti#. +1802027 - Bare Bones - A scary skeletal look that can only be worn by #cHuskies#. +1802028 - Ghosty - A ghoulish costume that can only be worn by #cDino Boy and Dino Girl#. +1802029 - Pet-o-Lantern - A perfect Halloween costume that can only be worn by #cPandas#. +1802030 - Penguin Earmuff Set - A set of earmuff and scarf only available for #cPenguin#. +1802031 - Cowboy Kargo - A cowboy costume that can only be equipped by a #cKargo#. +1802032 - Snowboard Gear - A full-fledged snowboard gear that can only be equipped by a #cHusky#. +1802033 - Crimson Mask - A Crimson Balrog gear from head to toe that can only be equipped by a #cJr. Balrog#. +1802034 - White Angel - An angel costume that can only be equipped by a #Yeti#. +1802035 - Cute Beggar Overall - An adorable country-looking costume that can only be equipped by a #Monkey#. +1802036 - Golden Pig Fortune Pouch - A Fortune pouch for #cGolden Pig# only. +1802037 - Oinker Suit - A Oinker Suit that can only be worn by the #cHuskies#. +1802038 - Mini Celestial Wand - Equip by #cSun Wu Kong# only. +1802042 - Baby Turkey Carriage - A small carriage built especially for well-behaved baby turkeys. Can only be equipped by a #cturkey#. +1802044 - Dragon's soul - Only available for evolution pet : Dragon +1802045 - Guitar - A stylish, mystical guitar. Can only be played by the #cJr. Reaper#. +1802047 - Porcupine Sunglasses - A set of sunglasses specially made for porcupine. +1802048 - Dragon Armor - Heavy metal for your dragon...as if it weren't imposing enough already! This armor can only be equipped by an adult #cdragon#. +1802049 - Jr. Reaper Sign (I'm with stoopid) - The Jr Reaper isn't afraid to give its owner a little lip. This sign can only be equipped by the #cJr Reaper pet#. +1802050 - Jr. Reaper Sign (<--Noob) - The Jr Reaper isn't afraid to give its owner a little lip. This sign can only be equipped by the #cJr Reaper pet#. +1802051 - Jr. Reaper Sign (cc plz) - The Jr Reaper isn't afraid to give its owner a little lip. This sign can only be equipped by the #cJr Reaper pet#. +1802052 - Jr. Reaper Sign (I love pie) - The Jr Reaper isn't afraid to give its owner a little lip. This sign can only be equipped by the #cJr Reaper pet#. +1802053 - Snowman Gear - A cozy set of gear to keep #cSnowman# warm. +1802054 - Kino's Green Mushroom Hat - An adorable Green Mushroom Hat that can only be adorned by #cKino#. +1802055 - Gas Mask - A gas Mask specially made for Skunk. +1802100 - Pet Collar - (no description) +1812000 - Meso Magnet - With this item, your pet will collect mesos dropped by a monster as it passes by them. Applies only to your monster spoils. +1812001 - Item Pouch - With this item, your pet will collect items dropped by a monster as it passes by them. Applies only to your monster spoils. +1812002 - Auto HP Potion Pouch - Pet will automatically consume potions by setting the HP alert in system option. \n#c Place the pouch in Pet Ability section at Pet Equip window in Equip window as well as the potion for Pet to consume in Pet HP section# +1812003 - Auto MP Potion Pouch - Pet will automatically consume potions by setting the MP alert in system option. \n#c Place the pouch in Pet Ability section at Pet Equip window in Equip window as well as the potion for Pet to consume in Pet MP section# +1812004 - Wing Boots - With these boots, your pet will move to mesos/items dropped by monsters to collect them. Applies only to your monster spoils if not equiped with Magic Scales. Applies only with combination of which items you are equiped with. (Meso Magnet, Item Pouch) +1812005 - Binocular - With this Binocular AND Wing Boots, your pet will move to mesos/items dropped by monsters to collect them in a #cwider range than solely equipping Wing Boots.# +1812006 - Magic Scales - With these scales, your pet will become knowledgable of ownership expiration of dropped mesos/items from monsters and will also pick them up. Applies only with combination of which items you are equiped with. (Meso Magnet, Item Pouch) +1812007 - Item Ignore Pendant - This allows the pet to be selective in picking up dropped items by avoiding selected items. Once the owner has learned the Trainer's Command, the Lead Pet needs to have the skill in order for it to be activated.\n#cAvailable to a pet that can pick up mesos and items.# +1822000 - Pet Label Ring - By equipping this ring, your pet will get its own name tag. Only works with #cPanda, Dino Boy, Dino Girl, Monkey, Tiger, Rudolph, Robot, Mini Yeti, Penguin, Jr.Balrog, Dragon, Jr. Reaper, Porcupine, Snowman, Skunk, Pink Bean.# +1832000 - Pet Quote Ring - By equipping this ring, your pet will get its own decorated quote box. Only works with #cPanda, Dino Boy, Dino Girl, Monkey, Tiger, Rudolph, Robot, Mini Yeti, Penguin, Jr.Balrog, Dragon, Jr. Reaper, Porcupine, Snowman, Skunk, Pink Bean# +1802059 - Jail Bird Pet Costume - Disloyal or obnoxious pet? Sentence it to hard time with this outfit! Can only be equipped by a #cMonkey#. +1802060 - Crystal Rudolph Wings - A set of wings only available for #cCrystal Rudolph# +1802061 - Scuba Mask - A scuba mask #cWhite Duck# likes to wear when diving down under. +1802062 - Starry Stereo Headset - A Stereo Headset to keep your #cPink Bean# entertained at all times. +1802063 - Baby Tiger Wings - A wing accessory exclusively for #cBaby Tiger#. diff --git a/handbook/Equip/Ring.txt b/handbook/Equip/Ring.txt new file mode 100644 index 0000000000..a4c436f1f5 --- /dev/null +++ b/handbook/Equip/Ring.txt @@ -0,0 +1,112 @@ +1112000 - Sparkling Ring - A sparkling ring. +1112001 - Crush Ring - When purchased, enter the name of the character you're being a couple with, then the item works for both. When the two are together, an effect comes out. Also, it can only be that of one male and one female character. +1112002 - Cloud Ring - After purchasing the ring, enter the name of the character that'll become your partner, so the other character will also receive the ring. Once the two characters equip themselves with the ring, stand next to each other to trigger the special effect. The couple-ring can only be worn by a couple that consists of two characters that are of opposite sex. +1112003 - Cupid Ring - When purchased, enter the name of the character you're being a couple with, then the item works for both. When the two are together, an effect comes out. Also, it can only be that of one male and one female character. +1112005 - Venus Fireworks - Powerful fireworks to express one's love! When purchased, enter the name of the character you're being a couple with, then the item works for both. When the two are together, an effect comes out. Also, it can only be that of one male and one female character. +1112006 - Crossed Hearts - This is the best way to express "Love is a battlefield!" When purchased, enter the name of the character you're being a couple with, then the item works for both. When the two are together, an effect comes out. Also, it can only be that of one male and one female character. +1112100 - White Label Ring - Under the character avatar, the name of the character will be featured in white background and black font. +1112101 - Blue Label Ring - Under the character avatar, the name of the character will be featured in blue background and white font. +1112102 - Blue Label Ring 2 - Under the character avatar, the name of the character will be featured in blue background and white font. +1112103 - The Legendary Gold Ring - Under the character avatar, the name of the character will be featured in gold background and black font. +1112104 - Bubbly Label Ring - Under the character avatar, the name of the character will be featured in blue background and written in stars. +1112105 - Pink-Ribboned Label Ring - Under the character avatar, the name of the character will be featured in pink ribbon background and black font. +1112106 - Blue-Ribboned Label Ring - Under the character avatar, the name of the character will be featured in blue ribbon background and black font. +1112107 - Skull Label Ring - Under the character avatar, the name of the character will be featured in black-skulled background and white font. +1112108 - Butterfly Label Ring - Under the character avatar, the name of the character will be featured in butterfly background and white font. +1112109 - Scoreboard Label Ring - Under the character avatar, the name of the character will be featured in scoreboard background and yellow font. +1112110 - SK Basketball Team Label Ring - Under the character avatar, the name of the character will be featured in blue SK Basketball Team background and white font. +1112111 - KTF Basketball Team Label Ring - Under the character avatar, the name of the character will be featured in orange KTF basketball team background and black font. +1112112 - Beach Label Ring - Under the character avatar, the name of the character will be featured in a sea of clams and starfish, written in white font. +1112113 - Chocolate Label Ring - Under the character avatar, the name of the character will be featured on top of a sweet chocolate as a background with white font. +1112114 - Pink Candy Label Ring - Under the character avatar, the name of the character will be featured on top of a pink candy wrapper as a background with white font. +1112115 - MapleBowl Label Ring - Under the character avatar, the name of the character will be featured in a football helmet with a black background, and in orange font. +1112116 - White Cloud Label Ring - Under the character avatar, the name of the character will be featured in a white cloud background, and in black font. +1112117 - Rainbow Label Ring - Under the character avatar, the name of the character will be featured in a rainbow with a sky blue background, and in black font. +1112118 - Coke Label Ring - Under the character avatar, the name of the character will be featured in coke-themed background and in white font. +1112119 - Coke(Red) Label Ring - Under the character avatar, the name of the character will be featured in a Coke background, and in white font. +1112120 - Coke(White) Label Ring - Under the character avatar, the name of the character will be featured in a Coke background, and in red font. +1112121 - Gingerman Label Ring - Under the character avatar, the name of the character will be featured in a background of a cookieand white font. +1112122 - Rainbow Label Ring - Under the character avatar, the name of the character will be featured in a background of rainbow & cloud and white font. +1112123 - Red Pencil Label Ring - Under the character avatar, the name of the character will be featured in a background of a red colored pencil and white font. +1112124 - Blue Pencil Label Ring - Under the character avatar, the name of the character will be featured in a background of a blue colored pencil and white font. +1112125 - Green Pencil Label Ring - Under the character avatar, the name of the character will be featured in a background of a green colored pencil and white font. +1112200 - Pink Quote Ring - While the character chats, the quote bubble is in pink. +1112201 - Pink-Hearted Quote Ring - While the character chats, the quote bubble comes out as a pink heart. +1112202 - Blue Quote Ring - While the character chats, the quote bubble is in blue. +1112203 - The Golden Fly Ring - While the character chats, the quote bubble is in gold. If combined with the Legendary Gold Poop Hat, the fly effect takes place. +1112204 - Pink-Flowered Quote Ring - While the character chats, the quote bubble comes out decorated in pink flowers. +1112205 - Blue-Flowered Quote Ring - While the character chats, the quote bubble comes out decorated in blue flowers. +1112206 - Pink-Ribboned Quote Ring - While the character chats, the quote bubble comes out decorated in pink ribbons. +1112207 - Blue-Ribboned Quote Ring - While the character chats, the quote bubble comes out decorated in sky blue ribbons. +1112208 - Skull Quote Ring - While the character chats, the quote bubble comes out as a skull. +1112209 - Blue-Hearted Quote Ring - While the character chats, the quote bubble comes out decorated in blue background and heart-shaped. +1112210 - Gold-Yellow Quote Ring - While the character chats, the quote bubble comes out decorated in glimmering yellow star background and in black font. +1112211 - Pink Lady Quote Ring - While the character chats, the quote bubble comes out decorated in glimmering pink star background and in white font. +1112212 - Silver-Blue Quote Ring - While the character chats, the quote bubble comes out decorated in glimmering silver star background and in black font. +1112213 - Gold-Yellow Quote Ring 2 - While the character chats, the quote bubble comes out decorated in glimmering yellow star background and in white font. +1112214 - Pink Lady Quote Ring 2 - While the character chats, the quote bubble comes out decorated in glimmering pink star background and in black font. +1112215 - BlueMarine Quote Ring - While the character chats, the quote bubble comes out decorated in glimmering blue star background and in white font. +1112216 - Kitty Quote Ring - While the character chats, the quote bubble comes out decorated in brown cat background and in black font. +1112217 - Paw-Print Quote Ring - While the character chats, the quote bubble comes out decorated in brown dogprinted background and in white font. +1112218 - Teddy Bear Quote Ring - While the character chats, the quote bubble comes out decorated in brown teddybear background and in black font. +1112219 - Scoreboard Quote Ring - While the character chats, the quote bubble comes out decorated in scoreboard background and in yellow font. +1112220 - SK Basketball Team Quote Ring - While the character chats, the quote bubble comes out decorated in blue SK Basketball Team background and in white font. +1112221 - KTF Basketball Team Quote Ring - While the character chats, the quote bubble comes out decorated in orange KTF basketball gear and in black font. +1112222 - Starflower Ring - While the character chats, the quote bubble comes out decorated in starflower background and in white font. +1112223 - Beach Quote Ring - While the character chats, the quote bubble comes out decorated in beach-themed background. +1112224 - Chocolate Quote Ring - While the character chats, the quote bubble comes out decorated in chocolate. +1112225 - Pink Candy Quote Ring - While the character chats, the quote bubble comes out decorated in pink candy. +1112226 - White Cloud Quote Ring - While the character chats, the quote bubble comes out decorated in white cloud. +1112227 - Rainbow Quote Ring - While the character chats, the quote bubble comes out decorated in rainbow. +1112228 - Coke Quote Ring - While the character chats, the quote bubble comes out decorated in coke-themed background. +1112229 - Coke(Red) Quote Ring - While the character chats, the quote bubble is in a state of Coke. +1112230 - Coke(White) Quote Ring - While the character chats, the quote bubble is in a state of Coke. +1112231 - Gingerman Quote Ring - While the character chats, the quote bubble comes out decorated in Gingerman cookie. +1112232 - Rainbow Quote Ring - While the character chats, the quote bubble comes out decorated in rainbow and clouds. +1112233 - Red Notebook Quote Ring - While the character chats, the quote bubble comes out with a red notepad as a background. +1112234 - Blue Notebook Quote Ring - While the character chats, the quote bubble comes out with a blue notepad as a background. +1112235 - Green Notebook Quote Ring - While the character chats, the quote bubble comes out with a green notepad as a background. +1112300 - Ring of Moon Stone 1Carats - (no description) +1112301 - Ring of Moon Stone: 2 Carats - (no description) +1112302 - Ring of Moon Stone 3Carats - (no description) +1112303 - Ring of Shining Star 1Carats - (no description) +1112304 - Ring of Shining Star 2Carats - (no description) +1112305 - Ring of Shining Star 3Carats - (no description) +1112306 - Gold Heart Ring 1Carats - (no description) +1112307 - Gold Heart Ring: 2 Carats - (no description) +1112308 - Gold Heart Ring: 3 Carats - (no description) +1112309 - Ring of Silver Wing 1Carats - (no description) +1112310 - Ring of Silver Wing: 2 Carats - (no description) +1112311 - Ring of Silver Wing: 3 Carats - (no description) +1112800 - Friendship Ring : Clover - Put on this ring with your friend, stand next to each other, and see the clover effect +1112801 - Friendship Ring : Flower Petal - Put on this ring with your friend, stand next to each other, and see the flower petal effect +1112802 - Friendship Ring : Star - Put on this ring with your friend, stand next to each other, and see the star effect +1112803 - Moonstone Wedding Ring - Wedding ring that shows two people are married +1112806 - Star gem Wedding Ring - Wedding ring that shows two people are married +1112807 - Golden Heart Wedding Ring - Wedding ring that shows two people are married +1112808 - MapleBowl Quote Ring - While the character chats, the quote bubble comes out decorated with a border featuring a football helmet and orange dots, with a white background and written in black font. +1112809 - Silver Swan Wedding Ring - Wedding ring that shows two people are married +1112900 - Lalala Ring - With this ring, colored musical notes swirl around the character. +1112901 - Starry Spotlight Ring - With this ring, sparkling stars swirl around the character. +1112903 - Amorian Aura Ring - It is a floating ring of hearts that surround the avatar. +1112904 - Rainbow Star Ring - It is a floating ring of rainbows that surround the avatar. +1112007 - Mistletoe Crush Ring - A mistletoe is a symbol of love! A wonderful way to show someone you are thinking about them during the holidays! When purchased, enter the name of the character you're being a couple with, then the item works for both. When the two are together, an effect comes out. Also, it can only be that of one male and one female character. +1112908 - Aura Ring - When you walk around with this ring on, the power of the Aura gem on the ring is triggered and gives a #c+1 boost for every stat#. +1112905 - Bright Hot Pink Heart - Numerous bright, pink hearts swirl around the character that wears this ring. +1112906 - Baby Pink Heart - A baby pink heart floats over the character's head, circling around making hearts. +1112012 - Rose Crush Ring - Get tangled in the vines of love with the Rose Crush Ring! A wonderful way to show someone you are thinking about them! When purchased, enter the name of the character you're being a couple with, then the item works for both. When the two are together, an effect comes out. Also, it can only be that of one male and one female character. +1112126 - Brown Teddy Label Ring - Under the character avatar, the name of the character will be featured on top of adorable teddies. +1112236 - Brown Teddy Quote Ring - While the character chats, the quote bubble comes out decorated with a border featuring adorable teddies. +1112400 - Ring of Alchemist - (no description) +1112902 - Baba Blue - Pretty Blue heart that attracts love goes around the character. +1112407 - Circle of Ancient Thought - +1112408 - Circle of Ancient Strength - +1112401 - Spiegelmann's Ring - (no description) +1112402 - Spiegelmann's Ring - (no description) +1112405 - Lilin's Ring - Lilin's Ring that can be shared with any character in the same account. Cannot be put in a transaction with other accounts. +1112810 - Christmas Night Bells - Put on this ring with your friend, stand next to each other, and see the star effect +1112811 - Christmas Party - Put on this ring with your friend, stand next to each other, and see the star effect +1112413 - Lilin's Ring - Lilin's Ring that can be shared with any character in the same account. Cannot be put in a transaction with other accounts. +1112414 - Lilin's Ring - Lilin's Ring that can be shared with any character in the same account. Cannot be put in a transaction with other accounts. +1112812 - Shared Umbrella Ring - (no description) +1112916 - Solo Ring - (no description) diff --git a/handbook/Equip/Shield.txt b/handbook/Equip/Shield.txt new file mode 100644 index 0000000000..408dd0de0d --- /dev/null +++ b/handbook/Equip/Shield.txt @@ -0,0 +1,57 @@ +1092000 - Steel Shield - (no description) +1092001 - Red Triangular Shield - (no description) +1092002 - Red Cross Shield - (no description) +1092003 - Stolen Fence - (no description) +1092004 - Skull Shield - (no description) +1092005 - Wooden Buckler - (no description) +1092006 - Mithril Buckler - (no description) +1092007 - Battle Shield - (no description) +1092008 - Pan Lid - (no description) +1092009 - Wooden Legend Shield - (no description) +1092010 - Silver Legend Shield - (no description) +1092011 - Adamantium Legend Shield - (no description) +1092012 - Steel Tower Shield - (no description) +1092013 - Mithril Tower Shield - (no description) +1092014 - Adamantium Tower Shield - (no description) +1092015 - Steel Ancient Shield - (no description) +1092016 - Silver Ancient Shield - (no description) +1092017 - Gold Ancient Shield - (no description) +1092018 - Seclusion Wristguard - (no description) +1092019 - Nimble Wristguard - (no description) +1092020 - Jurgen Wristguard - (no description) +1092021 - Mystic Shield - (no description) +1092022 - Palette - (no description) +1092023 - Steel Aquila Shield - (no description) +1092024 - Silver Aquila Shield - (no description) +1092025 - Gold Aquila Shield - (no description) +1092026 - Bronze Kalkan - (no description) +1092027 - Silver Kalkan - (no description) +1092028 - Gold Kalkan - (no description) +1092029 - Esther Shield - (no description) +1092030 - Maple Shield - (no description) +1092031 - Ladybug Shield - (no description) +1092032 - Cookie Shield - (no description) +1092033 - Clover Shield - (no description) +1092034 - Red Devil Shield - (no description) +1092035 - Cokeplay Shield - (no description) +1092036 - Green Hoflon - (no description) +1092037 - Violet Hoflon - (no description) +1092038 - Blue Hoflon - (no description) +1092040 - Snowflake Shield - (no description) +1092041 - Skill-Earning Shield - (no description) +1092042 - Gellerhead Shield - (no description) +1092044 - Love Knuckler - (no description) +1092045 - Maple Magician shield - (no description) +1092046 - Maple Warrior shield - (no description) +1092047 - Maple Thief shield - (no description) +1092049 - Dragon Khanjar - (no description) +1092050 - Khanjar - (no description) +1092052 - Black Phoenix Shield - An immensely strong shield imbued with the power of elder warriors. The shield is rumored to grow stronger over time. +1092056 - Transparent Shield - (no description) +1092061 - Crossheider - (no description) +1092057 - Timeless Prelude - (no description) +1092058 - Timeless Kite Shield - (no description) +1092059 - Timeless List - (no description) +1092060 - Blue Dragon Shield - (no description) +1092062 - Maple Girl Shield - (no description) +1092039 - Leaf Fall - (no description) diff --git a/handbook/Equip/Shoes.txt b/handbook/Equip/Shoes.txt new file mode 100644 index 0000000000..f292b381a4 --- /dev/null +++ b/handbook/Equip/Shoes.txt @@ -0,0 +1,421 @@ +1070000 - Blue Gomushin - (no description) +1070001 - Black Santa Boots - (no description) +1070002 - Kimono Shoes - (no description) +1070003 - Black Shoes of Death - (no description) +1070004 - Blue Western Walkers - (no description) +1070005 - Santa Boy Boots - (no description) +1070006 - Royal Costume Shoes - (no description) +1070007 - Lunar Celebration Shoes - (no description) +1070009 - Paris Wingtips - Snazzy shoes for Grooms +1070014 - Veras Heels [m] - (no description) +1070015 - Bunny Boots [m] - (no description) +1070016 - Dandy Silver Sneaks - (no description) +1071000 - Blue Loose Sox - (no description) +1071001 - Red Loose Sox - (no description) +1071002 - Red Gomushin - (no description) +1071003 - Red Santa Boots - (no description) +1071004 - Pink Nurse Shoes - (no description) +1071005 - White Nurse Shoes - (no description) +1071006 - SF Ninja Shoes - (no description) +1071007 - Bunny Boots - (no description) +1071008 - Kimono Sandals - (no description) +1071009 - Red Western Walkers - (no description) +1071010 - Sea Queen Sandals - (no description) +1071011 - Race Queen Boots - (no description) +1071012 - Diao Chan Shoes - (no description) +1071013 - White Cat Shoes - (no description) +1071014 - Black Cat Shoes - (no description) +1071015 - Maid Shoes - (no description) +1071016 - Santa Girl Boots - (no description) +1071017 - Leopard Print Shoes - (no description) +1071018 - Brown Leather Boots - (no description) +1071019 - Lunar Celebration Pumps - (no description) +1071020 - Veras Heels - Traditional, elegant Bride heels +1071021 - Gothic Boots - (no description) +1071024 - Black Dress Shoes [f] - (no description) +1071025 - Paris Wingtips [f] - (no description) +1071026 - White High Top - (no description) +1072000 - Brown Jangoon Shoes - (no description) +1072001 - Red Rubber Boots - (no description) +1072002 - Steel Trigger - (no description) +1072003 - Emerald Battle Grieves - (no description) +1072004 - White Gomushin - (no description) +1072005 - Leather Sandals - (no description) +1072006 - Brown Basic Boots - (no description) +1072007 - Brown High Boots - (no description) +1072008 - Bronze Aroa Boots - (no description) +1072009 - Steel Grieves - (no description) +1072010 - Black Dress Shoes - (no description) +1072011 - Mithril War Boots - (no description) +1072012 - Red Whitebottom Boots - (no description) +1072013 - Red Air H's - (no description) +1072014 - Camping Boots - (no description) +1072015 - Brown Hard Leather Boots - (no description) +1072016 - Green Woodsman Boots - (no description) +1072017 - Blue Ankle-strap Sandals - (no description) +1072018 - Blue Sneakers - (no description) +1072019 - Blue Jewelry Boots - (no description) +1072020 - Purple Jewelry Boots - (no description) +1072021 - Red Jewelry Boots - (no description) +1072022 - Black Enamel Boots - (no description) +1072023 - Beige Nitty - (no description) +1072024 - Black Nitty - (no description) +1072025 - Deer Huntertop - (no description) +1072026 - Rabbit Huntertop - (no description) +1072027 - Brown Jack Boots - (no description) +1072028 - White Ninja Sandals - (no description) +1072029 - Yellow Ninja Sandals - (no description) +1072030 - Blue Ninja Sandals - (no description) +1072031 - Red Ninja Sandals - (no description) +1072032 - Bronze Chain Boots - (no description) +1072033 - Iron Chain Boots - (no description) +1072034 - Green Jack Boots - (no description) +1072035 - Silver Chain Boots - (no description) +1072036 - Gold Chain Boots - (no description) +1072037 - Yellow Rubber Boots - (no description) +1072038 - Blue Rubber Boots - (no description) +1072039 - Mithril Battle Grieves - (no description) +1072040 - Silver Battle Grieves - (no description) +1072041 - Blood Battle Grieves - (no description) +1072042 - Black Gomushin - (no description) +1072043 - Smelly Gomushin - (no description) +1072044 - Yellow Basic Boots - (no description) +1072045 - Blue Basic Boots - (no description) +1072046 - Orange High Boots - (no description) +1072047 - Blue High Boots - (no description) +1072048 - Brown Aroa Boots - (no description) +1072049 - Green Aroa Boots - (no description) +1072050 - Bronze Grieves - (no description) +1072051 - Silver War Boots - (no description) +1072052 - Dark War Boots - (no description) +1072053 - Gold War Boots - (no description) +1072054 - Orange Whitebottom Boots - (no description) +1072055 - Pink Whitebottom Boots - (no description) +1072056 - Blue Whitebottom Boots - (no description) +1072057 - Blue Air H's - (no description) +1072058 - Black Air H's - (no description) +1072059 - Green Hard Leather Boots - (no description) +1072060 - Brown Woodsman Boots - (no description) +1072061 - Blue Woodsman Boots - (no description) +1072062 - Red Ankle-strap Sandals - (no description) +1072063 - Brown Ankle-strap Sandals - (no description) +1072064 - Red Sneakers - (no description) +1072065 - Red Enamel Boots - (no description) +1072066 - Blue Enamel Boots - (no description) +1072067 - Bear Huntertop - (no description) +1072068 - Lion Huntertop - (no description) +1072069 - Red Jack Boots - (no description) +1072070 - Blue Gidder Shoes - (no description) +1072071 - Brown Gidder Shoes - (no description) +1072072 - Silver Windshoes - (no description) +1072073 - Yellow Windshoes - (no description) +1072074 - Black Windshoes - (no description) +1072075 - Red Magicshoes - (no description) +1072076 - Blue Magicshoes - (no description) +1072077 - White Magicshoes - (no description) +1072078 - Black Magicshoes - (no description) +1072079 - Red Hunter Boots - (no description) +1072080 - Blue Hunter Boots - (no description) +1072081 - Green Hunter Boots - (no description) +1072082 - Black Hunter Boots - (no description) +1072083 - Brown Hunter Boots - (no description) +1072084 - Blue Lappy Boots - (no description) +1072085 - Red Lappy Boots - (no description) +1072086 - Green Lappy Boots - (no description) +1072087 - Black Lappy Boots - (no description) +1072088 - Cowboy Boots - (no description) +1072089 - Purple Salt Shoes - (no description) +1072090 - Red Salt Shoes - (no description) +1072091 - Black Salt Shoes - (no description) +1072092 - Yellow Flippers - (no description) +1072093 - Blue Flippers - (no description) +1072094 - Yellow Rain Boots - (no description) +1072095 - Sky Blue Rain Boots - (no description) +1072096 - Red Rain Boots - (no description) +1072097 - Green Rain Boots - (no description) +1072098 - Blue Baseball Cleats - (no description) +1072099 - Red Baseball Cleats - (no description) +1072100 - Black Baseball Cleats - (no description) +1072101 - Blue Silky Boots - (no description) +1072102 - Green Silky Boots - (no description) +1072103 - Red Silky Boots - (no description) +1072104 - Red White-Lined Boots - (no description) +1072105 - Green White-Lined Boots - (no description) +1072106 - Blue White-Lined Boots - (no description) +1072107 - Black Red-Lined Shoes - (no description) +1072108 - Black Green-Lined Shoes - (no description) +1072109 - Black Yellow-Lined Shoes - (no description) +1072110 - Black Blue-Lines Shoes - (no description) +1072111 - Black Leather Boots - (no description) +1072112 - Mithril Trigger - (no description) +1072113 - Dark Trigger - (no description) +1072114 - Red Moon Shoes - (no description) +1072115 - Blue Moon Shoes - (no description) +1072116 - Gold Moon Shoes - (no description) +1072117 - Dark Moon Shoes - (no description) +1072118 - Red Pierre Shoes - (no description) +1072119 - Yellow Pierre Shoes - (no description) +1072120 - Brown Pierre Shoes - (no description) +1072121 - Blue Pierre Shoes - (no description) +1072122 - Brown Steel-Tip Boots - (no description) +1072123 - Green Steel-Tip Boots - (no description) +1072124 - Blue Steel-Tip Boots - (no description) +1072125 - Purple Steel-Tip Boots - (no description) +1072126 - Maroon Jangoon Shoes - (no description) +1072127 - Blue Jangoon Shoes - (no description) +1072128 - Blue Goni Shoes - (no description) +1072129 - Green Goni Shoes - (no description) +1072130 - Red Goni Shoes - (no description) +1072131 - Purple Goni Shoes - (no description) +1072132 - Emerald Hildon Boots - (no description) +1072133 - Mithril Hildon Boots - (no description) +1072134 - Orihalcon Hildon Boots - (no description) +1072135 - Gold Hildon Boots - (no description) +1072136 - Pink Goldrunners - (no description) +1072137 - Green Goldrunners - (no description) +1072138 - Orange Goldrunners - (no description) +1072139 - Blue Goldrunners - (no description) +1072140 - Pink Goldwind Shoes - (no description) +1072141 - Blue Goldwind Shoes - (no description) +1072142 - Purple Goldwind Shoes - (no description) +1072143 - Green Goldwind Shoes - (no description) +1072144 - Red Gore Boots - (no description) +1072145 - Blue Gore Boots - (no description) +1072146 - Green Gore Boots - (no description) +1072147 - Sapphire Camel Boots - (no description) +1072148 - Orihalcon Camel Boots - (no description) +1072149 - Blood Camel Boots - (no description) +1072150 - Blood Moss Boots - (no description) +1072151 - Gold Moss Boots - (no description) +1072152 - Dark Moss Boots - (no description) +1072153 - Transparent Shoes - Use these Shoes if you want to make your Shoes transparent while still using all of the stats your Shoes possess. +1072154 - Blue Carzen Boots - (no description) +1072155 - Purple Carzen Boots - (no description) +1072156 - Dark Carzen Boots - (no description) +1072157 - Blue Lapiz Sandals - (no description) +1072158 - Red Lapiz Sandals - (no description) +1072159 - Brown Lapiz Sandals - (no description) +1072160 - Gold Lapiz Sandals - (no description) +1072161 - Purple Mystique Shoes - (no description) +1072162 - Blue Mystique Shoes - (no description) +1072163 - Red Mystique Shoes - (no description) +1072164 - Blue Elf Shoes - (no description) +1072165 - Baige Elf Shoes - (no description) +1072166 - Green Elf Shoes - (no description) +1072167 - Dark Elf Shoes - (no description) +1072168 - Red Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072169 - Blue Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072170 - Green Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072171 - Black Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072172 - Green Pirate Boots - (no description) +1072173 - Red Pirate Boots - (no description) +1072174 - Dark Pirate Boots - (no description) +1072175 - Ninja Shoes - (no description) +1072176 - Military Boots - (no description) +1072177 - Green Enigma Shoes - (no description) +1072178 - Purple Enigma Shoes - (no description) +1072179 - Dark Enigma Shoes - (no description) +1072180 - Flipper Boots - (no description) +1072181 - Green Ting Slippers - (no description) +1072182 - Blue Wing Boots - (no description) +1072183 - Red Wing Boots - (no description) +1072184 - Green Wing Boots - (no description) +1072185 - Dark Wing Boots - (no description) +1072186 - Kitty Slipper - (no description) +1072187 - Blue Marble Slippers - (no description) +1072188 - Red Marble Slippers - (no description) +1072189 - Bunny Slippers - (no description) +1072190 - Blue B-ball Sneakers - (no description) +1072191 - Orange B-ball Sneakers - (no description) +1072192 - Green Osfa Boots - (no description) +1072193 - Brown Osfa Boots - (no description) +1072194 - Purple Osfa Boots - (no description) +1072195 - Red Osfa Boots - (no description) +1072196 - Emerald War Greave - (no description) +1072197 - Orihalcon War Greave - (no description) +1072198 - Dark War Greave - (no description) +1072199 - Ragged Korean Rubber Shoes - (no description) +1072200 - Brown Dress Shoes - (no description) +1072201 - Red Leather Boots - (no description) +1072202 - Mesoranger Boots - (no description) +1072203 - Red Ades Shoes - (no description) +1072204 - Green Ades Shoes - (no description) +1072205 - Dark Ades Shoes - (no description) +1072206 - Blue Neli Shoes - (no description) +1072207 - Green Neli Shoes - (no description) +1072208 - Red Neli Shoes - (no description) +1072209 - Dark Neli Shoes - (no description) +1072210 - Red Rivers Boots - (no description) +1072211 - Blue Rivers Boots - (no description) +1072212 - Dark Rivers Boots - (no description) +1072213 - Green Katina Boots - (no description) +1072214 - Blue Katina Boots - (no description) +1072215 - Red Katina Boots - (no description) +1072216 - Dark Katina Boots - (no description) +1072217 - Beige Golashes - (no description) +1072218 - Sky Blue Golashes - (no description) +1072219 - Pink Golashes - (no description) +1072220 - Green Crescent Boots - (no description) +1072221 - Blue Crescent Boots - (no description) +1072222 - Dark Crescent Boots - (no description) +1072223 - Green Varr Shoes - (no description) +1072224 - Blue Varr Shoes - (no description) +1072225 - Red Varr Shoes - (no description) +1072226 - Dark Varr Shoes - (no description) +1072227 - Red Arnah Shoes - (no description) +1072228 - Blue Arnah Shoes - (no description) +1072229 - Green Arnah Shoes - (no description) +1072230 - Black Boxing Shoes - (no description) +1072231 - Blue Boxing Shoes - (no description) +1072232 - Red Boxing Shoes - (no description) +1072233 - Bear Shoes - (no description) +1072234 - Bubbling Slippers - (no description) +1072235 - Slime Slippers - (no description) +1072236 - Guan Yu Shoes - (no description) +1072237 - Zhu-Ge-Liang Shoes - (no description) +1072238 - Violet Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072239 - Yellow Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072240 - Big Rabbit Feet - (no description) +1072241 - Liu Bei Shoes - (no description) +1072242 - Cao Cao Shoes - (no description) +1072243 - Sun Quan Shoes - (no description) +1072244 - Red Enamel Shoes - (no description) +1072245 - Blue Enamel Shoes - (no description) +1072246 - Pink Sneakers - (no description) +1072247 - Hunting Boots - (no description) +1072248 - Blue Basketball Shoes - (no description) +1072249 - Orange Basketball Shoes - (no description) +1072250 - Horoscope Shoes - (no description) +1072251 - Pro-Cat Sticker - (no description) +1072252 - Snowboard Boots - (no description) +1072253 - Snowman Shoes - (no description) +1072254 - Football Cleats(Home) - (no description) +1072255 - Football Cleats(Away) - (no description) +1072256 - Teddy Bear Shoes - (no description) +1072257 - Puppy Slippers - (no description) +1072258 - Kitty Slippers - (no description) +1072259 - Chick Slippers - (no description) +1072260 - Penguin Slippers - (no description) +1072261 - Yellow Strap Shoes - (no description) +1072262 - Black Strap Shoes - (no description) +1072263 - Green Strap Shoes - (no description) +1072264 - Silver Strap Shoes - (no description) +1072265 - Blue Soccer Cleats - (no description) +1072266 - Black Soccer Cleats - (no description) +1072267 - Red Soccer Cleats - (no description) +1072268 - Blue Elemental Shoes - (no description) +1072269 - Red Hunter Shoes - (no description) +1072272 - Black Garina Shoes - (no description) +1072273 - Blue Dragon Boots - (no description) +1072274 - Moon Bunny Paws - (no description) +1072275 - Fonla's Slippers - (no description) +1072276 - Booster Shoes - (no description) +1072277 - Red Elf shoes - (no description) +1072278 - Rudolph Slippers - (no description) +1072279 - Super Booster Shoes - (no description) +1072280 - Golden Shoes - (no description) +1072281 - Sachiel Shoes - (no description) +1072282 - Veamoth Shoes - (no description) +1072283 - Janus Shoes - (no description) +1072284 - Zhu Ba Jie Shoes - (no description) +1072285 - Brown Lagger Slipper - (no description) +1072288 - Brown Skeedy Sandals - (no description) +1072291 - Brown Wooden Krag - (no description) +1072294 - Brown Paulie Boots - (no description) +1072297 - Brown Locote Shoes - (no description) +1072300 - Brown Leather Krag - (no description) +1072303 - Brown Double Boots - (no description) +1072306 - Black Basile Boots - (no description) +1072309 - Black Voyson Shoes - (no description) +1072312 - Blue Pageant - (no description) +1072315 - Black Markintz - (no description) +1072318 - Black Duke Barkin Shoes - (no description) +1072321 - Canopus Boots - (no description) +1072322 - Rollerskates - (no description) +1072323 - Starry Slippers - (no description) +1072324 - Piggy Slippers - (no description) +1072325 - Red Slime Slippers - (no description) +1072326 - Yellow Slime Slippers - (no description) +1072327 - Tania En Fuego - (no description) +1072328 - Mercury Lighning - (no description) +1072329 - Flipped Blue High Top - (no description) +1072330 - Checkered Sneakers - (no description) +1072331 - Velcro Vivid High Shoes - (no description) +1072332 - Black Enamel Shoes - (no description) +1072333 - Green Checkered Sneakers - (no description) +1072334 - Red Checkered Sneakers - (no description) +1072335 - Natural Golashes - (no description) +1072336 - Soccer Cleats - (no description) +1072337 - Fluffy Slippers - (no description) +1072338 - Purple Snowshoes - Put this on, and you won't be slipping around regardless of snow or ice. +1072341 - Orange Checkered Sneakz - (no description) +1072342 - Bosshunter Greaves - (no description) +1072343 - Bosshunter Boots - (no description) +1072344 - Facestompers - (no description) +1072345 - Bosshunter Greaves - (no description) +1072346 - Bosshunter Boots - (no description) +1072347 - Olive Green Kicks - (no description) +1072348 - Elephant Slippers - (no description) +1072349 - Green Checkered Sneakz - (no description) +1072350 - Black High Tops - (no description) +1072351 - Green Ankle Boots for Transformation - (no description) +1072352 - Red Silky Boots for Transformation - (no description) +1072353 - White Ninja Sandals for Transformation - (no description) +1072354 - Black Voyson Shoes for Transformation - (no description) +1072360 - White & Blue Sandals - (no description) +1072367 - Puffy Ram Shoes - (no description) +1072373 - Purple Rainbow Sneaks - (no description) +1072371 - Custom Blue High Tops - (no description) +1072370 - Gaga Shoes - (no description) +1072355 - Timeless Grabbe - (no description) +1072356 - Timeless Cabatina - (no description) +1072357 - Timeless Rontano - (no description) +1072358 - Timeless Moonsteed - (no description) +1072359 - Timeless Faraon - (no description) +1072361 - Reverse Grabbe - (no description) +1072362 - Reverse Cabatina - (no description) +1072363 - Reverse Rontano - (no description) +1072364 - Reverse Moonsteed - (no description) +1072365 - Reverse Faraon - (no description) +1072366 - Parachute Agent Shoes - (no description) +1072368 - Ultimate Agent Shoes - (no description) +1072369 - Squishy Shoes - (no description) +1072379 - Yellow Rainbow Sneaks - (no description) +1072380 - White & Blue Sandals - (no description) +1072384 - Bling Bling Shoes - (no description) +1072395 - Mix-n-Match Sneakers - (no description) +1072394 - Pink Polka-Dotted Boots - (no description) +1072392 - Red Ankle-Strap Shoes - (no description) +1072406 - Chaos Metallic Shoes - (no description) +1072404 - Alchemist Shoes - (no description) +1072408 - Maple Racing Shoes - (no description) +1072405 - Ninja Shoes - (no description) +1072375 - Balrog's Leather Shoes - (no description) +1072376 - Balrog's Fur Shoes - (no description) +1072377 - Treacherous Wolf Shoes - (no description) +1072382 - Brave Soldier Shoes - (no description) +1072383 - Average Musashi Shoes - (no description) +1072419 - Andras Shoes - (no description) +1072420 - Marbas Shoes - (no description) +1072421 - Valefor Shoes - (no description) +1072422 - Amdusias Shoes - (no description) +1072423 - Crocell Shoes - (no description) +1072381 - Aran Combat Shoes - (no description) +1072388 - Stripe Knee Socks - (no description) +1072374 - Lace Long Boots - (no description) +1072407 - Kawaii Kitty Shoes - (no description) +1072399 - King Pepe Dark Walker - (no description) +1072400 - King Pepe Black Salt Shoes - (no description) +1072401 - King Pepe Red Silky Boots - (no description) +1072402 - King Pepe Blue Lined Boots - (no description) +1072403 - King Pepe Brown Pirate Shoes - (no description) +1072417 - Clown Shoes - (no description) +1072427 - Red Christmas Sock - (no description) +1072428 - Green Christmas Sock - (no description) +1072429 - Navy Christmas Sock - (no description) +1072430 - White Christmas Sock - (no description) +1072431 - Yellow Christmas Sock - (no description) +1072432 - Purple Christmas Sock - (no description) +1072418 - Average Black Boots - (no description) +1072425 - Freud's Shoes - (no description) +1072437 - Pink Bean Shoes - (no description) diff --git a/handbook/Equip/Taming.txt b/handbook/Equip/Taming.txt new file mode 100644 index 0000000000..f9e0cf1646 --- /dev/null +++ b/handbook/Equip/Taming.txt @@ -0,0 +1,33 @@ +1902000 - Hog - (no description) +1902001 - Silver Mane - (no description) +1902002 - Red Draco - (no description) +1912000 - Saddle - (no description) +1912003 - Frog Cover - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1912004 - Ostrich Cover - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1902008 - Frog - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1902009 - Ostrich - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1902011 - Turtle - This monster must be used with the #cTurtle Mount#. +1902012 - Yeti - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1912008 - Yeti Cover - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1912007 - Turtle Mount - This mount must be used with the #cTurtle# monster. +1902005 - Mimiana - (no description) +1902006 - Mimio - (no description) +1902007 - Shinjou - (no description) +1902010 - Frog - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1912005 - Saddle - (no description) +1912006 - Frog Cover - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1902021 - Robot - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1912014 - Robot Cover - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1912029 - Maple Racing Car Cover - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1902036 - Maple Racing Car - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1912031 - Pink Scooter Key - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1912032 - Black Scooter Key - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1902038 - Pink Scooter - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1902039 - Black Scooter - You must have an in-game mount (Watch Hog, Silver Boar, etc) to use this mount cover. +1902020 - Hot Air Balloon - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1912013 - Hot Air Balloon Cover - You must be over level 70 in order to use this item and have an in-game mount (Hog, Silver Mane, Red Draco) to use this mount cover. +1902015 - Werewolf - (no description) +1902016 - Werewolf - (no description) +1902017 - Werewolf - (no description) +1902018 - Ryko - (no description) +1912011 - Wolf Saddle - (no description) diff --git a/handbook/Equip/Weapon.txt b/handbook/Equip/Weapon.txt new file mode 100644 index 0000000000..1c0a089baa --- /dev/null +++ b/handbook/Equip/Weapon.txt @@ -0,0 +1,1184 @@ +1302107 - Black Crystal Blade - (no description) +1302000 - Sword - (no description) +1302001 - Saw - (no description) +1302002 - Viking Sword - (no description) +1302003 - Eloon - (no description) +1302004 - Cutlus - (no description) +1302005 - Sabre - (no description) +1302006 - Machete - (no description) +1302007 - Long Sword - (no description) +1302008 - Gladius - (no description) +1302009 - Traus - (no description) +1302010 - Jeweled Katar - (no description) +1302011 - Neocora - (no description) +1302012 - Red Katana - (no description) +1302013 - Red Whip - (no description) +1302014 - Old Gladius - (no description) +1302015 - Hero's Gladius - (no description) +1302016 - Yellow Umbrella - (no description) +1302017 - Sky Blue Umbrella - (no description) +1302018 - Khan - (no description) +1302019 - Nameless Sword - (no description) +1302020 - Maple Sword - (no description) +1302021 - Pico-Pico Hammer - (no description) +1302022 - Bamboo Sword - (no description) +1302023 - Fraute - (no description) +1302024 - Newspaper Sword - (no description) +1302025 - Red Umbrella - (no description) +1302026 - Black Umbrella - (no description) +1302027 - Green Umbrella - (no description) +1302028 - Light Purple Umbrella - (no description) +1302029 - Beige Umbrella - (no description) +1302030 - Maple Soul Singer - (no description) +1302031 - Diao Chan Sword - (no description) +1302032 - Hwa Ryung Ji Gum - (no description) +1302033 - Maple Flag - (no description) +1302034 - Pumpkin Basket - (no description) +1302035 - Maple Flag : 1000 Days - (no description) +1302036 - Maple Flag : 1000 Days - (no description) +1302037 - Trumpet - (no description) +1302038 - Gladius - (no description) +1302039 - Jeweled Katar - (no description) +1302040 - Neocora - (no description) +1302041 - Red Katana - (no description) +1302042 - Khan - (no description) +1302043 - Gladius - (no description) +1302044 - Jeweled Katar - (no description) +1302045 - Neocora - (no description) +1302046 - Red Katana - (no description) +1302047 - Khan - (no description) +1302049 - Glowing Whip - (no description) +1302050 - Gladius - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1302051 - Jeweled Katar - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1302052 - Neocora - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1302053 - Red Katana - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1302054 - Khan - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1302056 - Sparta - (no description) +1302057 - The Stars and Stripes - (no description) +1302058 - Maple Umbrella - (no description) +1302059 - Dragon Carabella - (no description) +1302060 - Huckle's Lamp - (no description) +1302062 - Pumpkin Basket (2006 SE) - (no description) +1302063 - Flaming Katana - (no description) +1302064 - Maple Glory Sword - (no description) +1302065 - Blue Maple Flag - (no description) +1302066 - Maple 1500 Anniv. Flag - (no description) +1302067 - Maple 1500 Anniv. Flag - (no description) +1302068 - Onyx Blade - (no description) +1302069 - Komodo Sword - (no description) +1302071 - Pink Flower Tube - (no description) +1302073 - Singapore Flag (Beginner) - (no description) +1302074 - Malaysia Flag (Beginner) - (no description) +1302075 - Singapore Flag (One Handed Sword) - (no description) +1302076 - Malaysia Flag (One Handed Sword) - (no description) +1302077 - Beginner Warrior's sword - (no description) +1302079 - Astral Blade - One of the Glimmer Man's custom weapons, this powerful blade is said to harness the very power of the stars. +1302080 - Maplemas Lights - (no description) +1302081 - Timeless Executioners - (no description) +1302083 - Viking Sword for Transformation - (no description) +1302086 - Reverse Executioners - (no description) +1302088 - Stirge-on-a-String - (no description) +1302089 - Stirge-on-a-Rope - (no description) +1302090 - Stirge-o-Whip - (no description) +1302091 - Stirge Grappler - (no description) +1302092 - Swooping Stirge - (no description) +1302093 - Frantic Strige - (no description) +1302094 - Angry Stirge - (no description) +1302095 - Lifeguard Saver - (no description) +1302098 - Lunch box (Lv 20) - A special lunchbox given to hold roughly 2 weeks' worth of lunch. Hits hard, hits fast! +1302099 - Lunch box (Lv 60) - A special lunchbox given to hold roughly 2 weeks' worth of lunch. Hits hard, hits fast! +1302100 - Lunch box (Lv 90) - A special lunchbox given to hold roughly 2 weeks' worth of lunch. Hits hard, hits fast! +1302101 - Lunch box (Lv 120) - A special lunchbox given to hold roughly 2 weeks' worth of lunch. Hits hard, hits fast! +1312000 - Double Axe - (no description) +1312001 - Battle Axe - (no description) +1312002 - Scythe - (no description) +1312003 - Misthil Axe - (no description) +1312004 - Hand Axe - (no description) +1312005 - Fireman's Axe - (no description) +1312006 - Dankke - (no description) +1312007 - Blue Counter - (no description) +1312008 - Buck - (no description) +1312009 - Hawkhead - (no description) +1312010 - Mikhail - (no description) +1312011 - Gaea - (no description) +1312012 - Hula Hoop - (no description) +1312013 - Green Paint Brush - (no description) +1312014 - Black Paint Brush - (no description) +1312015 - Vifennis - (no description) +1312016 - Contra Axe - (no description) +1312017 - Chief Axe - (no description) +1312018 - Buck - (no description) +1312019 - Hawkhead - (no description) +1312020 - Mikhail - (no description) +1312021 - Gaea - (no description) +1312022 - Buck - (no description) +1312023 - Hawkhead - (no description) +1312024 - Mikhail - (no description) +1312025 - Gaea - (no description) +1312026 - Buck - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1312027 - Hawkhead - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1312028 - Mikhail - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1312029 - Gaea - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1312030 - Tomahawk - (no description) +1312031 - Dragon Axe - (no description) +1312032 - Maple Steel Axe - (no description) +1312033 - Maple 1500 Anniv. Flag - (no description) +1312034 - Pink Flower Tube - (no description) +1312037 - Timeless Bardiche - (no description) +1312038 - Reverse Bardiche - (no description) +1322000 - Mace - (no description) +1322001 - Hammer - (no description) +1322002 - Iron Mace - (no description) +1322003 - Lollipop - (no description) +1322004 - Fusion Mace - (no description) +1322005 - Wooden Club - (no description) +1322006 - Steel Pipe - (no description) +1322007 - Leather Purse - (no description) +1322008 - Hard Briefcase - (no description) +1322009 - Plunger - (no description) +1322010 - Square Shovel - (no description) +1322011 - Pointed Shovel - (no description) +1322012 - Red Brick - (no description) +1322013 - Wizet Secret Agent Suitcase - (no description) +1322014 - War Hammer - (no description) +1322015 - Heavy Hammer - (no description) +1322016 - Jacker - (no description) +1322017 - Knuckle Mace - (no description) +1322018 - Tamus - (no description) +1322019 - The Judgement - (no description) +1322020 - Bent Judgement - (no description) +1322021 - Black Tube - (no description) +1322022 - Red Flowery Tube - (no description) +1322023 - Blue Flowery Tube - (no description) +1322024 - Purple Tube - (no description) +1322025 - Emergency Rescue Tube - (no description) +1322026 - Colorful Tube - (no description) +1322027 - Frying Pan - (no description) +1322028 - Heaven's Justice - (no description) +1322029 - Ruin Hammer - (no description) +1322030 - M Purse - (no description) +1322031 - Pig Illustrated - (no description) +1322032 - Iron Hammer - (no description) +1322033 - Goblin Bat - (no description) +1322034 - Chul Jil To Gol Ta - (no description) +1322035 - War Hammer - (no description) +1322036 - Knuckle Mace - (no description) +1322037 - Tamus - (no description) +1322038 - The Judgement - (no description) +1322039 - Heaven's Justice - (no description) +1322040 - War Hammer - (no description) +1322041 - Knuckle Mace - (no description) +1322042 - Tamus - (no description) +1322043 - The Judgement - (no description) +1322044 - Heaven's Justice - (no description) +1322045 - Battle Hammer - (no description) +1322046 - War Hammer - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1322047 - Knuckle Mace - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1322048 - Tamus - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1322049 - The Judgement - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1322050 - Heaven's Justice - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1322051 - Fruity Bamboo - (no description) +1322052 - Dragon Mace - (no description) +1322053 - Golden Mace - (no description) +1322054 - Maple Havoc Hammer - (no description) +1322055 - Maple 1500 Anniv. Flag - (no description) +1322056 - Pink Flower Tube - (no description) +1322059 - Cosmic Scepter - One of the Glimmer Man's custom weapons, this massive mace has an antimatter core which gives it exceptional striking power. +1322060 - Timeless Allargando - (no description) +1322062 - Crushed Skull - (no description) +1322063 - Duck tube - (no description) +1322064 - Duck tube - (no description) +1332000 - Triangular Zamadar - (no description) +1332001 - Halfmoon Zamadar - (no description) +1332002 - Triple-Tipped Zamadar - (no description) +1332003 - Shinkita - (no description) +1332004 - Forked Dagger - (no description) +1332005 - Razor - (no description) +1332006 - Field Dagger - (no description) +1332007 - Fruit Knife - (no description) +1332008 - Coconut Knife - (no description) +1332009 - Cass - (no description) +1332010 - Iron Dagger - (no description) +1332011 - Bazlud - (no description) +1332012 - Reef Claw - (no description) +1332013 - Stinger - (no description) +1332014 - Gephart - (no description) +1332015 - Deadly Fin - (no description) +1332016 - Sai - (no description) +1332017 - Serpent's Coil - (no description) +1332018 - Kandine - (no description) +1332019 - Golden River - (no description) +1332020 - Korean Fan - (no description) +1332021 - Plastic Bottle - (no description) +1332022 - Angelic Betrayal - (no description) +1332023 - Dragon's Tail - (no description) +1332024 - Bushido - (no description) +1332025 - Maple Wagner - (no description) +1332026 - Cursayer - (no description) +1332027 - Varkit - (no description) +1332029 - Liu Bei Dagger - (no description) +1332030 - Fan - (no description) +1332031 - Dragon Toenail - (no description) +1332032 - Christmas Tree - (no description) +1332033 - Reef Claw - (no description) +1332034 - Shinkita - (no description) +1332035 - Deadly Fin - (no description) +1332036 - Kandine - (no description) +1332037 - Dragon's Tail - (no description) +1332038 - Reef Claw - (no description) +1332039 - Shinkita - (no description) +1332040 - Deadly Fin - (no description) +1332041 - Kandine - (no description) +1332042 - Dragon's Tail - (no description) +1332043 - Reef Claw - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1332044 - Shinkita - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1332045 - Deadly Fin - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1332046 - Kandine - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1332047 - Dragon's Tail - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1332049 - Dragon Kanzir - (no description) +1332050 - Dragon Kreda - (no description) +1332051 - Gold Double Knife - (no description) +1332052 - Blood Dagger - (no description) +1332053 - Kebob - (no description) +1332054 - Diamond Dagger - (no description) +1332055 - Maple Dark Mate - (no description) +1332056 - Maple Asura Dagger - (no description) +1332057 - Maple 1500 Anniv. Flag - (no description) +1332058 - Darkstar Dagger - (no description) +1332059 - Pink Flower Tube - (no description) +1332063 - Beginner Thief's short sword - (no description) +1332064 - Nebula Dagger 1 (LUK) - One of the Glimmer Man's custom weapons, this swift dagger is said to strike with the power of a supernova. +1332065 - Nebula Dagger 2 (STR) - One of the Glimmer Man's custom weapons, this swift dagger is said to strike with the power of a supernova. +1332066 - Razor - (no description) +1332067 - Maku(LUK) - (no description) +1332068 - Makusuma(LUK) - (no description) +1332069 - Makumagna(LUK) - (no description) +1332070 - Maku(STR) - (no description) +1332071 - Makusuma(STR) - (no description) +1332072 - Makumagna(STR) - (no description) +1332077 - Raven's Beak - (no description) +1332078 - Night Raven's Beak - (no description) +1332079 - Dawn Raven's Beak - (no description) +1332080 - Dusk Raven's Beak - (no description) +1372000 - Fairy Wand - (no description) +1372001 - Wizard Wand - (no description) +1372002 - Metal Wand - (no description) +1372003 - Mithril Wand - (no description) +1372004 - Ice Wand - (no description) +1372005 - Wooden Wand - (no description) +1372006 - Hardwood Wand - (no description) +1372007 - Cromi - (no description) +1372008 - Hinomaru Fan - (no description) +1372009 - Magicodar - (no description) +1372010 - Dimon Wand - (no description) +1372011 - Zhu-Ge-Liang Wand - (no description) +1372012 - Crystal Wand - (no description) +1372014 - Evil Tale - (no description) +1372015 - Angel Wings - (no description) +1372016 - Phoenix Wand - (no description) +1372017 - Streetlight - (no description) +1372018 - Wizard Wand - (no description) +1372019 - Cromi - (no description) +1372020 - Evil Tale - (no description) +1372021 - Angel Wings - (no description) +1372022 - Wizard Wand - (no description) +1372023 - Cromi - (no description) +1372024 - Evil Tale - (no description) +1372025 - Angel Wings - (no description) +1372027 - Wizard Wand - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1372028 - Cromi - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1372029 - Evil Tale - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1372030 - Angel Wings - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1372031 - Heart Staff - (no description) +1372032 - Dragon Wand - (no description) +1372033 - Heart Wand - (no description) +1372034 - Maple Shine Wand - (no description) +1372035 - Elemental Wand 1 - (no description) +1372036 - Elemental Wand 2 - (no description) +1372037 - Elemental Wand 3 - (no description) +1372038 - Elemental Wand 4 - (no description) +1372039 - Elemental Wand 5 - (no description) +1372040 - Elemental Wand 6 - (no description) +1372041 - Elemental Wand 7 - (no description) +1372042 - Elemental Wand 8 - (no description) +1372043 - Beginner Magician's wand - (no description) +1382000 - Wooden Staff - (no description) +1382001 - Arc Staff - (no description) +1382002 - Wizard Staff - (no description) +1382003 - Sapphire Staff - (no description) +1382004 - Old Wooden Staff - (no description) +1382005 - Emerald Staff - (no description) +1382006 - Thorns - (no description) +1382007 - Evil Wings - (no description) +1382008 - Kage - (no description) +1382009 - Maple Staff - (no description) +1382010 - Dark Ritual - (no description) +1382011 - Mystic Cane - (no description) +1382012 - Maple Lama Staff - (no description) +1382013 - Hwa Ryung Ji Jang - (no description) +1382014 - Sun Quan Staff - (no description) +1382015 - Poison Mushroom - (no description) +1382016 - Pyogo Mushroom - (no description) +1382017 - Circle-Winded Staff - (no description) +1382018 - Petal Staff - (no description) +1382019 - Hall Staff - (no description) +1382020 - Arc Staff - (no description) +1382021 - Thorns - (no description) +1382022 - Evil Wings - (no description) +1382023 - Dark Ritual - (no description) +1382024 - Kage - (no description) +1382025 - Arc Staff - (no description) +1382026 - Thorns - (no description) +1382027 - Evil Wings - (no description) +1382028 - Dark Ritual - (no description) +1382029 - Kage - (no description) +1382030 - Arc Staff - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1382031 - Thorns - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1382032 - Evil Wings - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1382033 - Dark Ritual - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1382034 - Kage - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1382035 - Blue Marine - (no description) +1382036 - Dragon Staff - (no description) +1382037 - Doomsday Staff - (no description) +1382039 - Maple Wisdom Staff - (no description) +1382040 - Maple 1500 Anniv. Flag - (no description) +1382041 - Nocturnal Staff - (no description) +1382042 - Pink Flower Tube - (no description) +1382045 - Elemental Staff 1 - (no description) +1382046 - Elemental Staff 2 - (no description) +1382047 - Elemental Staff 3 - (no description) +1382048 - Elemental Staff 4 - (no description) +1382049 - Elemental Staff 5 - (no description) +1382050 - Elemental Staff 6 - (no description) +1382051 - Elemental Staff 7 - (no description) +1382052 - Elemental Staff 8 - (no description) +1382053 - Celestial Staff - One of the Glimmer Man's custom weapons, this staff contains concentrated chaos magic for devastating effects! +1382054 - Umaru - (no description) +1382055 - Umarusuma - (no description) +1382056 - Umarumagna - (no description) +1382058 - Wooden Staff for Transformation - (no description) +1382060 - Crimson Arcanon - (no description) +1402000 - Two-Handed Sword - (no description) +1402001 - Wooden Sword - (no description) +1402002 - Scimitar - (no description) +1402003 - Lion's Fang - (no description) +1402004 - Blue Screamer - (no description) +1402005 - Berzerker - (no description) +1402006 - Lionheart - (no description) +1402007 - Zard - (no description) +1402008 - Broadsword - (no description) +1402009 - Wooden Baseball Bat - (no description) +1402010 - Aluminum Baseball Bat - (no description) +1402011 - Sparta - (no description) +1402012 - Doombringer - (no description) +1402013 - Japanese Map - (no description) +1402014 - Thermometer - (no description) +1402015 - Heaven's Gate - (no description) +1402016 - Devil's Sunrise - (no description) +1402017 - Daiwa Sword - (no description) +1402018 - Wooden Samurai Sword - (no description) +1402019 - Scimitar - (no description) +1402020 - Lion's Fang - (no description) +1402021 - Sparta - (no description) +1402022 - Doombringer - (no description) +1402023 - Heaven's Gate - (no description) +1402024 - Scimitar - (no description) +1402025 - Lion's Fang - (no description) +1402026 - Sparta - (no description) +1402027 - Doombringer - (no description) +1402028 - Heaven's Gate - (no description) +1402029 - Aluminum Bat - (no description) +1402030 - Scimitar - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1402031 - Lion's Fang - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1402032 - Sparta - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1402033 - Doombringer - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1402034 - Heaven's Gate - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1402035 - The Beheader - (no description) +1402036 - Dragon Claymore - (no description) +1402037 - Stonetooth Sword - (no description) +1402039 - Maple Soul Rohen - (no description) +1402040 - Maple 1500 Anniv. Flag - (no description) +1402041 - Pink Flower Tube - (no description) +1402044 - Pumpkin Lantern - (no description) +1402045 - Tiger's Fang - (no description) +1402046 - Timeless Nibleheim - (no description) +1402048 - Raven's Wing - (no description) +1402049 - Night Raven's Wing - (no description) +1402050 - Dawn Raven's Wing - (no description) +1402051 - Dusk Raven's Wing - (no description) +1412000 - Two-Handed Axe - (no description) +1412001 - Metal Axe - (no description) +1412002 - Iron Axe - (no description) +1412003 - The Rising - (no description) +1412004 - Niam - (no description) +1412005 - Sabretooth - (no description) +1412006 - Blue Axe - (no description) +1412007 - The Shining - (no description) +1412008 - Chrono - (no description) +1412009 - Helios - (no description) +1412010 - Colonian Axe - (no description) +1412011 - Maple Dragon Axe - (no description) +1412012 - Iron Axe - (no description) +1412013 - The Rising - (no description) +1412014 - The Shining - (no description) +1412015 - Chrono - (no description) +1412016 - Helios - (no description) +1412017 - The Rising - (no description) +1412018 - The Shining - (no description) +1412019 - Chrono - (no description) +1412020 - Helios - (no description) +1412021 - Tavar - (no description) +1412022 - The Rising - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1412023 - The Shining - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1412024 - Chrono - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1412025 - Helios - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1412026 - Dragon Battle Axe - (no description) +1412027 - Maple Demon Axe - (no description) +1412028 - Maple 1500 Anniv. Flag - (no description) +1412029 - Pink Flower Tube - (no description) +1412032 - Crescent Moon - One of the Glimmer Man's custom weapons, this deadly axe is known to decimate foes in the blink of an eye. +1412033 - Timeless Tabarzin - (no description) +1422000 - Wooden Mallet - (no description) +1422001 - Mithril Maul - (no description) +1422002 - Heavy Mace - (no description) +1422003 - Square Hammer - (no description) +1422004 - Monkey Wrench - (no description) +1422005 - Golden Mole - (no description) +1422006 - Pickaxe - (no description) +1422007 - Titan - (no description) +1422008 - Sledgehammer - (no description) +1422009 - The Blessing - (no description) +1422010 - Gigantic Sledge - (no description) +1422011 - Sake Bottle - (no description) +1422012 - The Morningstar - (no description) +1422013 - Leomite - (no description) +1422014 - Maple Doom Singer - (no description) +1422015 - Golden Mole - (no description) +1422016 - The Blessing - (no description) +1422017 - Gigantic Sledge - (no description) +1422018 - The Morningstar - (no description) +1422019 - Golden Mole - (no description) +1422020 - The Blessing - (no description) +1422021 - Gigantic Sledge - (no description) +1422022 - The Morningstar - (no description) +1422023 - Golden Mole - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1422024 - The Blessing - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1422025 - Gigantic Sledge - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1422026 - The Morningstar - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1422027 - Golden Smith Hammer - (no description) +1422028 - Dragon Flame - (no description) +1422029 - Maple Belzet - (no description) +1422030 - Pink Seal Cushion - (no description) +1422031 - Blue Seal Cushion - (no description) +1422032 - Maple 1500 Anniv. Flag - (no description) +1422033 - Pink Flower Tube - (no description) +1422036 - Toymaker Hammer - (no description) +1422037 - Timeless Bellocce - (no description) +1432000 - Spear - (no description) +1432001 - Fork on a Stick - (no description) +1432002 - Forked Spear - (no description) +1432003 - Nakamaki - (no description) +1432004 - Serpent's Tongue - (no description) +1432005 - Zeco - (no description) +1432006 - Holy Spear - (no description) +1432007 - Redemption - (no description) +1432008 - Fish Spear - (no description) +1432009 - Bamboo Spear - (no description) +1432010 - Omega Spear - (no description) +1432011 - Fairfrozen - (no description) +1432012 - Maple Impaler - (no description) +1432013 - Pumpkin Spear - (no description) +1432014 - Fish Spear - (no description) +1432015 - Red Ski - (no description) +1432016 - Orange Ski - (no description) +1432017 - Green Ski - (no description) +1432018 - Sky Ski - (no description) +1432019 - Forked Spear - (no description) +1432020 - Serpent's Tongue - (no description) +1432021 - Holy Spear - (no description) +1432022 - Redemption - (no description) +1432023 - Omega Spear - (no description) +1432024 - Forked Spear - (no description) +1432025 - Serpent's Tongue - (no description) +1432026 - Holy Spear - (no description) +1432027 - Redemption - (no description) +1432028 - Omega Spear - (no description) +1432030 - Pinaka - (no description) +1432031 - Forked Spear - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1432032 - Serpent's Tongue - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1432033 - Holy Spear - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1432034 - Redemption - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1432035 - Omega Spear - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1432038 - Dragon Faltizan - (no description) +1432039 - Fishing Pole - (no description) +1432040 - Maple Soul Spear - (no description) +1432041 - Maple 1500 Anniv. Flag - (no description) +1432042 - Pink Flower Tube - (no description) +1432043 - Singapore Flag (Spear) - (no description) +1432044 - Malaysia Flag (Spear) - (no description) +1432045 - Sunspear - One of the Glimmer Man's custom weapons, this spear contains the fiery power of a blazing red sun. +1432046 - Maplemas Tree - (no description) +1432048 - Pooh Pooh Shovel - (no description) +1442000 - Pole Arm - (no description) +1442001 - Mithril Pole Arm - (no description) +1442002 - Eviscerator - (no description) +1442003 - Axe Pole Arm - (no description) +1442004 - Janitor's Mop - (no description) +1442005 - The Nine Dragons - (no description) +1442006 - Iron Ball - (no description) +1442007 - Studded Polearm - (no description) +1442008 - The Gold Dragon - (no description) +1442009 - Crescent Polearm - (no description) +1442010 - Skylar - (no description) +1442011 - Surfboard - (no description) +1442012 - Sky Snowboard - (no description) +1442013 - Aqua Snowboard - (no description) +1442014 - Silver Snowboard - (no description) +1442015 - Golden Snowboard - (no description) +1442016 - Dark Snowboard - (no description) +1442017 - Blood Snowboard - (no description) +1442018 - Frozen Tuna - (no description) +1442019 - Eclipse - (no description) +1442020 - Hellslayer - (no description) +1442021 - Yellow Mop - (no description) +1442022 - White Mop - (no description) +1442023 - Maroon Mop - (no description) +1442024 - Maple Scorpio - (no description) +1442025 - Guan Yu Pole Arm - (no description) +1442026 - Red Surfboard - (no description) +1442027 - Green Surfboard - (no description) +1442028 - Black Surfboard - (no description) +1442029 - Gold Surfboard - (no description) +1442030 - Maple Snowboard - (no description) +1442031 - The Nine Dragons - (no description) +1442032 - Skylar - (no description) +1442033 - The Gold Dragon - (no description) +1442034 - Eclipse - (no description) +1442035 - The Nine Dragons - (no description) +1442036 - Skylar - (no description) +1442037 - The Gold Dragon - (no description) +1442038 - Eclipse - (no description) +1442039 - Frozen Tuna - (no description) +1442040 - The Nine Dragons - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1442041 - Skylar - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1442042 - The Gold Dragon - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1442043 - Eclipse - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1442044 - Zedbug - (no description) +1442045 - Dragon Chelbird - (no description) +1442046 - Super Snowboard - (no description) +1442047 - Yellow Valentine Rose - (no description) +1442048 - Red Valentine Rose - (no description) +1442049 - Blue Valentine Rose - (no description) +1442050 - White Valentine Rose - (no description) +1442051 - Maple Karstan - (no description) +1442052 - Maple 1500 Anniv. Flag - (no description) +1442053 - Pink Flower Tube - (no description) +1442054 - Red Surfboard - (no description) +1442055 - Green Surfboard - (no description) +1442056 - Sky Blue Surfboard - (no description) +1442057 - Purple Surfboard - (no description) +1442060 - Heavenly Messenger - One of the Glimmer Man's custom weapons, this legendary poleaxe is said to strengthen the will of the bearer in battle. +1442061 - Versalmas Cactus - (no description) +1442063 - Timeless Diesra - (no description) +1442065 - Tsunami Wave - (no description) +1442066 - Bullseye Board - (no description) +1442068 - Crimson Arcglaive - (no description) +1452000 - Battle Bow - (no description) +1452001 - Hunter's Bow - (no description) +1452002 - War Bow - (no description) +1452003 - Composite Bow - (no description) +1452004 - Asianic Bow - (no description) +1452005 - Ryden - (no description) +1452006 - Red Viper - (no description) +1452007 - Vaulter 2000 - (no description) +1452008 - Olympus - (no description) +1452009 - Red Hinkel - (no description) +1452010 - Blue Hinkel - (no description) +1452011 - Golden Hinkel - (no description) +1452012 - Marine Arund - (no description) +1452013 - Fire Arund - (no description) +1452014 - Golden Arund - (no description) +1452015 - Dark Arund - (no description) +1452016 - Maple Bow - (no description) +1452017 - Metus - (no description) +1452018 - Bow of Magical Destruction - (no description) +1452019 - White Nisrock - (no description) +1452020 - Golden Nisrock - (no description) +1452021 - Dark Nisrock - (no description) +1452022 - Maple Soul Searcher - (no description) +1452023 - Cao Cao Bow - (no description) +1452025 - Blue Metus - (no description) +1452026 - Black Metus - (no description) +1452027 - Ryden - (no description) +1452028 - Olympus - (no description) +1452029 - Asianic Bow - (no description) +1452030 - Golden Hinkel - (no description) +1452031 - Dark Arund - (no description) +1452032 - Ryden - (no description) +1452033 - Olympus - (no description) +1452034 - Asianic Bow - (no description) +1452035 - Golden Hinkel - (no description) +1452036 - Dark Arund - (no description) +1452038 - Ryden - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1452039 - Olympus - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1452040 - Asianic Bow - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1452041 - Golden Hinkel - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1452042 - Dark Arund - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1452044 - Dragon Shiner Bow - (no description) +1452045 - Maple Kandiva Bow - (no description) +1452046 - Maple 1500 Anniv. Flag - (no description) +1452047 - Barracuda Bow - (no description) +1452048 - Pink Flower Tube - (no description) +1452049 - Singapore Flag (Bow) - (no description) +1452050 - Malaysia Flag (Bow) - (no description) +1452051 - Beginner Bowman's bow - (no description) +1452052 - Andromeda Bow - One of the Glimmer Man's custom weapons, this hybrid bow is powered by an extradimensional essence for high-impact attacks. +1452053 - Winkel - (no description) +1452054 - Akha - (no description) +1452055 - Akhasuma - (no description) +1452056 - Akhamagna - (no description) +1452060 - Crimson Arclancer - (no description) +1462000 - Mountain Crossbow - (no description) +1462001 - Crossbow - (no description) +1462002 - Battle Crossbow - (no description) +1462003 - Balanche - (no description) +1462004 - Eagle Crow - (no description) +1462005 - Heckler - (no description) +1462006 - Silver Crow - (no description) +1462007 - Rower - (no description) +1462008 - Golden Crow - (no description) +1462009 - Gross Jaeger - (no description) +1462010 - Marine Raven - (no description) +1462011 - Fire Raven - (no description) +1462012 - Golden Raven - (no description) +1462013 - Dark Raven - (no description) +1462014 - Maple Crow - (no description) +1462015 - White Neschere - (no description) +1462016 - Golden Neschere - (no description) +1462017 - Dark Neschere - (no description) +1462018 - Casa Crow - (no description) +1462019 - Maple Crossbow - (no description) +1462020 - Hwa Ryung Ji No - (no description) +1462021 - Dark Crow - (no description) +1462022 - Yellow Crow - (no description) +1462023 - Mountain Crossbow - (no description) +1462024 - Rower - (no description) +1462025 - Golden Crow - (no description) +1462026 - Gross Jaeger - (no description) +1462027 - Dark Raven - (no description) +1462028 - Mountain Crossbow - (no description) +1462029 - Rower - (no description) +1462030 - Golden Crow - (no description) +1462031 - Gross Jaeger - (no description) +1462032 - Dark Raven - (no description) +1462033 - Mountain Crossbow - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1462034 - Rower - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1462035 - Golden Crow - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1462036 - Gross Jaeger - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1462037 - Dark Raven - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1462039 - Dragon Shiner Cross - (no description) +1462040 - Maple Nishada - (no description) +1462041 - Maple 1500 Anniv. Flag - (no description) +1462042 - River Rattler - (no description) +1462043 - Pink Flower Tube - (no description) +1462046 - Void Hunter - One of the Glimmer Man's custom weapons, this crossbow is composed of a weightless material said to have originated from Versal. +1462047 - Xaru - (no description) +1462048 - Xarusuma - (no description) +1462049 - Xarumagna - (no description) +1462052 - Raven's Eye - (no description) +1462053 - Night Raven's Eye - (no description) +1462054 - Dawn Raven's Eye - (no description) +1462055 - Dusk Raven's Eye - (no description) +1472000 - Garnier - (no description) +1472001 - Steel Titans - (no description) +1472002 - Mithril Titans - (no description) +1472003 - Gold Titans - (no description) +1472004 - Bronze Igor - (no description) +1472005 - Steel Igor - (no description) +1472006 - Adamantium Igor - (no description) +1472007 - Meba - (no description) +1472008 - Steel Guards - (no description) +1472009 - Mithril Guards - (no description) +1472010 - Adamantium Guards - (no description) +1472011 - Bronze Guardian - (no description) +1472012 - Silver Guardian - (no description) +1472013 - Dark Guardian - (no description) +1472014 - Steel Avarice - (no description) +1472015 - Blood Avarice - (no description) +1472016 - Adamantium Avarice - (no description) +1472017 - Dark Avarice - (no description) +1472018 - Steel Slain - (no description) +1472019 - Blood Slain - (no description) +1472020 - Sapphire Slain - (no description) +1472021 - Dark Slain - (no description) +1472022 - Bronze Gigantic - (no description) +1472023 - Blood Gigantic - (no description) +1472024 - Sapphire Gigantic - (no description) +1472025 - Dark Gigantic - (no description) +1472026 - Brown Scarab - (no description) +1472027 - Green Scarab - (no description) +1472028 - Blue Scarab - (no description) +1472029 - Black Scarab - (no description) +1472030 - Maple Claw - (no description) +1472031 - Black Mamba - (no description) +1472032 - Maple Kandayo - (no description) +1472033 - Casters - (no description) +1472034 - Adamantium Guards - (no description) +1472035 - Dark Slain - (no description) +1472036 - Dark Gigantic - (no description) +1472037 - Black Scarab - (no description) +1472038 - Black Mamba - (no description) +1472039 - Adamantium Guards - (no description) +1472040 - Dark Slain - (no description) +1472041 - Dark Gigantic - (no description) +1472042 - Black Scarab - (no description) +1472043 - Black Mamba - (no description) +1472045 - Adamantium Guards - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1472046 - Dark Slain - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1472047 - Dark Gigantic - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1472048 - Black Scarab - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1472049 - Black Mamba - #cInternet Cafe-only item. Disappears after exiting the game.\n# +1472051 - Dragon Green Sleve - (no description) +1472052 - Dragon Purple Sleve - (no description) +1472053 - Red Craven - (no description) +1472054 - Shinobi Bracer - (no description) +1472055 - Maple Skanda - (no description) +1472056 - Maple 1500 Anniv. Flag - (no description) +1472057 - Celestial Python - (no description) +1472058 - Pink Flower Tube - (no description) +1472061 - Beginner Thief Wrist Guard - (no description) +1472062 - Black Hole - One of the Glimmer Man's custom weapons, this claw is powered by a vortex of stardust particles, allowing its user to throw stars at supreme speeds. No enemy can escape its power. +1472063 - Magical Mitten - A finely-woven mitten that emits warmth all over those fortunate enough to wear it. Enables one to withstand even the harshest of conditions. +1472064 - Neva - (no description) +1472065 - Kuma - (no description) +1472066 - Kumasuma - (no description) +1472067 - Kumamagna - (no description) +1472069 - Steel Avarice for Transformation - (no description) +1472072 - Raven's Claw - (no description) +1472073 - Night Raven's Claw - (no description) +1472074 - Dawn Raven's Claw - (no description) +1472075 - Dusk Raven's Claw - (no description) +1482000 - Steel Knuckler - (no description) +1482001 - Leather Arms - (no description) +1482002 - Double Tail Knuckler - (no description) +1482003 - Norman Grip - (no description) +1482004 - Prime Hands - (no description) +1482005 - Silver Maiden - (no description) +1482006 - Neozard - (no description) +1482007 - Fury Claw - (no description) +1482008 - Psycho Claw - (no description) +1482009 - Beia Crash - (no description) +1482010 - Steelno - (no description) +1482011 - White Fangz - (no description) +1482012 - King Cent - (no description) +1482013 - Dragon Slash Claw - (no description) +1482014 - Scallywag Knuckler - (no description) +1482015 - Prime Hands - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1482016 - Fury Claw - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1482017 - Seraphims - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1482018 - Beia Crash - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1482019 - Steelno - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1482020 - Maple Knuckle - (no description) +1482021 - Maple Storm Finger - (no description) +1482022 - Maple Golden Claw - (no description) +1482023 - Timeless Equinox - (no description) +1492000 - Pistol - (no description) +1492001 - Dellinger Special - (no description) +1492002 - The Negotiator - (no description) +1492003 - Golden Hook - (no description) +1492004 - Cold Mind - (no description) +1492005 - Shooting Star - (no description) +1492006 - Lunar Shooter - (no description) +1492007 - Mr. Rasfelt - (no description) +1492008 - Burning Hell - (no description) +1492009 - Abyss Shooter - (no description) +1492010 - Infinity's Wrath - (no description) +1492011 - The Peacemaker - (no description) +1492012 - Concerto - (no description) +1492013 - Dragonfire Revolver - (no description) +1492014 - Pirate's Pistol - (no description) +1492015 - Cold Mind - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1492016 - Mr. Rasfelt - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1492017 - Burning Hell - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1492018 - Abyss Shooter - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1492019 - Infinity's Wrath - #cThis item is for the Internet Cafe only and will disappear once you log out of the game.\n# +1492020 - Maple Gun - (no description) +1492021 - Maple Storm Pistol - (no description) +1492022 - Maple Canon Shooter - (no description) +1602000 - Basic Skill Effect (warrior) - Attach to your weapon for an added effect to your 1st job skills. (warriors only) +1602001 - Basic Skill Effect (magician) - Attach to your weapon for an added effect to your 1st job skills. (magicians only) +1602002 - Basic Skill Effect (bowman) - Attach to your weapon for an added effect to your 1st job skills. (bowmen only) +1602003 - Basic Skill Effect (thief) - Attach to your weapon for an added effect to your 1st job skills. (thieves only) +1602004 - Combo Skill Effect (warrior) - Attach to your weapon for an added effect to your 1st & 2nd job skills. (warriors only) +1602005 - Combo Skill Effect (magician) - Attach to your weapon for an added effect to your 1st & 2nd job skills. (magicians only) +1602006 - Combo Skill Effect (bowman) - Attach to your weapon for an added effect to your 1st & 2nd job skills. (bowmen only) +1602007 - Combo Skill Effect (thief) - Attach to your weapon for an added effect to your 1st & 2nd job skills. (thieves only) +1702000 - Dual Plasma Blade - A glowing dagger that masks over an equipped #cdagger#. +1702001 - Bouquet - A pretty bouquet that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, or a dagger#. +1702002 - Wooden Slingshot - A toy wooden slingshot that masks over an equipped #cbow#. +1702003 - Plastic Slingshot - A toy plastic slingshot that masks over an equipped #cbow#. +1702004 - Angel Wand - A sparkling Angel Wand that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger, or a staff#. +1702005 - Yellow Candy Cane - A yellow candy cane that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, or a staff#. +1702006 - Red Candy Cane - A red candy cane that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, or a staff#. +1702007 - Green Candy Cane - A green candy cane that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, or a staff#. +1702008 - Santa Sack - A package full of surprises that masks over an equipped #ctwo-handed axe or two-handed blunt weapon#. +1702009 - Tiger Paw - A sharp tiger paw that masks over an equipped #cclaw#. +1702010 - Orange Toy Hammer - An orange toy hammer that masks over an equipped #ctwo-handed sword#. +1702011 - Pink Toy Hammer - A pink toy hammer that masks over an equipped #ctwo-handed sword#. +1702012 - Yellow Spatula - A clean spatula that masks over an equipped #cwand or a staff#. +1702013 - Teddy Bear - An adorable teddy bear that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, or a staff#. +1702014 - Toy Rifle - A huge toy rifle that masks over an equipped #ccrossbow#. +1702015 - Bug Net - A long bug net that masks over an equipped #cspear and pole arm#. +1702016 - Picnic Basket - A picnic basket that masks over an equipped #cdagger#. +1702017 - Pink Rabbit Puppet - A pink bunny that masks over an equipped #cclaw#. +1702018 - Vanilla Ice Cream - A tasty-looking vanilla ice cream that masks over an equipped #cdagger, wand, or a staff#. +1702019 - Pillow - A very comfortable-looking pillow that masks over an equipped #cone-handed sword, one-handed axe, or a one-handed blunt weapon#. +1702020 - Lollipop - A sweet-looking candy that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger or a staff#. +1702021 - Black Electric Guitar - A black electric guitar that masks over an equipped #cpole arm#. +1702022 - Brown Electric Guitar - An electric guitar with a brown frame that can be masked over an equipped #cPole Arm#. +1702023 - Green Electric Guitar - A green electric guitar that masks over an equipped #cpole arm#. +1702024 - Cupid's Bow - A Cupid Bow that masks over an equipped #cbow#. +1702025 - Cherub's Bow - An Angel Bow that masks over an equipped #cbow#. +1702026 - Cupid's Crossbow - A cupid crossbow that masks over an equipped #ccrossbow#. +1702027 - Blazing Sword - A blazing sword that masks over an equipped #cone-handed sword, one-handed blunt weapon, one-handed axe, two-handed sword, two-handed blunt weapon, two-handed axe, dagger, staff, or a wand#. +1702028 - Donut - A warm, freshly-baked donut that masks over an equipped #cclaw#. +1702029 - White Rabbit's Foot - A cute glove that resembles a foot of a white bunny that masks over an equipped #cclaw#. +1702030 - Diao Chan Sword - Diao Chan's weapon that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, or a dagger#. +1702031 - Liu Bei Sword - Liu Bei's sword that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, or a dagger#. +1702032 - Zhu-Ge-Liang Wand - Zhu-Ge-Liang's weapon that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand or a staff#. +1702033 - Sun Quan Staff - Sun Quan's staff that masks over an equipped #cwand or a staff#. +1702034 - Guan Yu Spear - Guan Yu's weapon that masks over an equipped #ca spear, two-handed axe, two-handed mace, pole arm, or as a two-handed sword#. +1702035 - Cao Cao Bow - Cao Cao's bows that masks over an equipped #cbow#. +1702036 - Witch's Broom - A witch broom that masks over an equipped #cspear, or a pole arm#. +1702037 - Coffee Pot - A coffee pot that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand or a staff#. +1702038 - Horoscope Claw - A horoscope themed claw that masks over an equipped #cclaw#. +1702039 - Horoscope Net - A horoscope themed net that masks over an equipped #ca spear, two-handed axe, two-handed mace, pole arm, or as a two-handed sword#. +1702040 - Horoscope Bow - A horoscope themed bow that masks over an equipped #cbow#. +1702041 - Horoscope Sword - A horoscope themed net that masks over an equipped #cone-handed weapon#. +1702042 - Microphone - A microphone that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand or a staff#. +1702043 - Poo Stick - It's crap attack time! A stick with poo on it that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand or a staff#. +1702044 - Toy Machine Gun - A toy machine gun that masks over an equipped #ccrossbow#. +1702045 - Sunflower Stalk - A sunflower stalk that masks over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spears, and pole arms#. +1702046 - Horoscope Crossbow - A horoscope themed crossbow that masks over an equipped #ccrossbow#. +1702047 - Snowflake Staff - A snowflake stick that masks over an equipped #cone-haned sword, one-handed axe, one-handed blunt weapon, dagger, wand, or a staff#. +1702048 - Rubber Towel - A rubber towel that masks over an equipped #cclaw#. +1702049 - Snowman Claw - A miniature snowman accent that masks over an equipped #cclaw#. +1702050 - Cellphone - A cellphone that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, or a dagger#. +1702051 - Hong Bao - An oriental lantern that was used in the past and masks over an equipped #cone-handed sword, one-handed axe, one-handed mace, dagger, wand and staff#. +1702052 - In-Hand FB Helmet(Home) - Get tough! A helmet held in-hand as a weapon. Masks over #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger or a staff#. +1702053 - In-Hand FB Helmet(Away) - Get tough! A helmet held in-hand as a weapon. Masks over #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger or a staff#. +1702054 - Football Claw - #cMasks over an equipped claw# as a held football. This item does not have the throwing effect. +1702055 - Ancient Korean Bow - An ancient bow that has been passed down from generation to generation that can be masked over an equipped #cBow#. +1702056 - Guitar - An acoustic guitar that can only be masked over an equipped #ctwo-handed sword#. +1702057 - Blue Guitar - A blue acoustic guitar that can only be masked over an equipped #ctwo-handed sword#. +1702058 - Big Hand - A humongous glove that can be masked over an equipped #cClaw#. +1702059 - Cactus - A Cactus that can be masked over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon or a dagger#. +1702060 - Shiner - A glowing bow that can be masked over an equipped #cbow#. +1702061 - Red Fist of Fury - A tightly-clenched fist covered in red aura; can be masked over an equipped #cclaw#. +1702062 - Blue Fist of Fury - A tightly-clenched fist covered in blue aura; can be masked over an equipped #cclaw#. +1702063 - Scissor Stick - A Scissor Stick that can be masked over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or a pole-arm#. +1702064 - Rock Stick - A Rock Stick that can be masked over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or a pole-arm#. +1702065 - Paper Stick - A Paper Stick that can be masked over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or a pole-arm#. +1702066 - Canvas Tote Bag - A tote bag that can be masked over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, or a dagger#. +1702067 - England Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702068 - France Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702069 - Brazil Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702070 - Sporty Band - A sporty band that can be masked over an equipped #cclaw#. +1702071 - Japan Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702072 - Laser Sword - A laser sword that can be masked over an equipped #ctwo-handed sword, two-handed axe, or a two-handed blunt weapon#. +1702073 - Blue Shiner Crossbow - A glowing blue crossbow that can be masked over an equipped #ccrossbow#. +1702074 - Pink Shiner Crossbow - A glowing pink crossbow that can be masked over an equipped #ccrossbow#. +1702075 - USA Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702076 - Mexico Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702077 - Australia Cheer Towel - A World Cup Cheer Towel that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, a dagger, wand or a staff# +1702078 - Fairy Fan - A multi-colored fan that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand or a staff#. +1702079 - Blue Blazing Sword - A blue sabre sword that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, two-handed sword, two-handed axe, two-handed blunt weapon, wand, or a staff#. +1702080 - Green Blazing Sword - A green sabre sword that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, two-handed sword, two-handed axe, two-handed blunt weapon, wand, or a staff#. +1702081 - Purple Blazing Sword - A purple sabre sword that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, two-handed sword, two-handed axe, two-handed blunt weapon, wand, or a staff#. +1702082 - Harp - Apolon's Harp that masks over an equipped #cbow#. +1702083 - Foam Hand - A foam hand used to cheer your favorite team. Masks over #cany weapon except guns and knucklers#. +1702084 - Toy Pinwheel - A toy pinwheel that masks over #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand, staff, or a Claw# +1702085 - Frog Claw - A cute froggy glove that masks over an equipped as a #cClaw#. +1702086 - Chicken Smackaroo - A rooster that masks over #cany weapon except guns and knucklers#. +1702087 - Red Pencil - A red pencil that masks over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or a pole arm#. +1702088 - Super Scrubber - A back brush that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand, staff, or a Claw#. +1702089 - Candy Hammer - This giant, enticing Caramel Apple is the perfect cover for an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger or staff#. +1702090 - Feather Scimitar - A Shiny Feather that masks over #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, Wand, Staff.# +1702091 - Tennis Racquet - A sturdy-looking tennis racquet that masks over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or a pole-arm#. +1702092 - Glowing Pumpkin Basket - A cane featuring a pumpkin that masks over #cany equipped weapon except guns and knucklers#. +1702093 - Okie Donkie - An adorable-looking Donky that masks over #cany equipped weapon except guns and knucklers#. +1702094 - Mad Cow - A Mad Cow weapon that masks over an equipped #cClaw#. +1702095 - Frog Glove - A cute froggy glove that masks over an equipped as a #cClaw#. +1702096 - Pizza Pan - A pizza frying pan that masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, dagger, wand, staff, or a Claw#. +1702098 - Violin - A durable violin that can be masked over an equipped #cCrossbow#. +1702099 - Transparent Claw - Now you see it, now you don't. Equip this if you want to make your claw transparent while still using all of the stats your claw possesses. +1702100 - Christmas Bell - A Christmas bell that masks over #cany equipped weapon except guns and knucklers#. +1702102 - Starblade - A Starblade weapon masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt, short sword, or wand.# +1702103 - Pink Ribbon Umbrella - A pink ribbon umbrella to avoid the sun that masks over an equipped #cbow#. +1702104 - Deluxe Cone - Deluxe Cone can be masked over #call weapons expect for spear, pole-arm, bow, crossbow, claw, knuckler, and gun#. +1702105 - Heart Key - A golden Heart Key that can be masked over an equipped #cwand or staff#. +1702106 - Melting Chocolate - A pot full of hot, Melting Chocolate that can be masked over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger or a staff#. +1702107 - Chocolate - A humongous, neatly-packaged Chocolate that can be masked over an equipped #ctwo-handed sword, two-handed axe or a two-handed blunt weapon#. +1702108 - Giant Lollipop - A rainbow-colored Giant Lollipop that can be masked over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, dagger or a staff#. +1702112 - Celestial Wand - This is the strongest weapon, which can be put on #call weapons except guns and knucklers#. +1702113 - Maoster Pole Arm - Specially designed Maoster Pole Arm that masks over #cpole arm#. +1702114 - Wonky's Leaf - A long, green leaf used by Wonky the Fairy that masks over #cany equipped weapon except guns and knucklers# +1702115 - Red rose - This can be put on #call weapons except guns and knucklers#. +1702118 - Janus Sword - This can be put on #call weapons except guns and knucklers#. +1702119 - Sachiel Sword - This can be put on #call weapons except guns and knucklers#. +1702120 - Veamoth Sword - This can be put on #call weapons except guns and knucklers#. +1702121 - Seal Pillow - A cushy, adorable seal pillow that masks over #cany weapon except guns and knucklers#. +1702122 - Dragon's Fury - This can be put on #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, pole Arm#. +1702123 - Forked Pork - A forked pork that can be masked over #cany weapon except guns and knucklers#. +1702124 - Kitty - An adorable kitty that can be masked over #cany weapon except guns and knucklers#. +1702125 - Heart Cane - An adorable pink heart cane that can be equipped in place of #cone-hand sword, one-hand axe, one-hand blunt weapon, short sword, wand, staff#. +1702126 - Blue Shiner - A glowing bow that can be masked over an equipped #cbow#. +1702127 - Water Gun - Spray your friends with lethal water! Use well! A Water Gun that can be masked over an equipped #ccrossbow#. +1702128 - Green Shiner - A glowing bow that can be masked over an equipped #cbow#. +1702129 - Purple Shiner - A glowing bow that can be masked over an equipped #cbow#. +1702130 - Red Shiner - A glowing bow that can be masked over an equipped #cbow#. +1702131 - Pepe Beak - Pepe Claw is one of the winning Artworks of MapleSEA Equipment Creation Contest 2007. It is specially designed by #c# and modified by Wizet. \nMasks over an equipped #cClaw and Dagger.# +1702132 - Slime Stick - A Slime Stick weapon #cMasks over any weapon except guns and knucklers.# +1702133 - Smackdown Fist - Lay the smackdown on foes with this hard-hitting fist! Smack talk not included! Can be equipped over a #cClaw#. +1702134 - Serpent Staff - A gold staff with serpent's head atop that masks over an equipped #wand or a staff# +1702135 - Vengence Claw - A Vengence Claw that masks over an equipped #cclaw#. +1702136 - Ice snow flower ring - This is an ice snow flower ring which can be put on#cany weapon except guns and knucklers#. +1702138 - Spanish Ham - A salt-cured ham derived from a pig's back leg. It masks over an equipped #cone-handed blunt weapon#. +1702140 - Giant Orchid - Specially designed for Maplers in celebration of launching Singapore exclusive map.\n#cMasks over any weapon except guns and knucklers.# +1702141 - My Buddy Max - An adorable puppy that masks over #cany weapon except guns and knucklers#. +1702142 - Pink Angel Stick - An enchanted magic stick that masks over #cany weapon except guns and knucklers#. +1702144 - Broken Sword - A broken sword that can be masked over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, and dagger#. +1702145 - Bionic Claw - A Bionic Claw that masks over an equipped #cclaw#. +1702146 - Skull Staff - A Skull Staff that masks over an equipped #wand or a staff# +1702147 - Skull Axe - A Skull Axe that masks over an equipped #ctwo-handed axe#. +1702148 - Moon Baton - A Moon Baton weapon that masks over a #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, and pole-arm#. +1702149 - Tania Sword - A sword of supreme power that masks over #cany weapon except guns and knucklers#. +1702150 - Mercury Sword - A sword with mystical qualities that masks over #cany weapon except guns and knucklers#. +1702151 - Royal Oaken Staff - A glowing Royal Oaken Staff that can be masked over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, pole-arm, or a staff#. +1702152 - Flame Tongue - A Flame Tongue that masks over an equipped #ctwo-handed sword, two-handed axe, two-handed blunt weapon#. +1702153 - Crissagrim Blade - A Crissagrim Blade weapon that masks over #cany weapon except guns and knucklers#. +1702154 - Plasma Saber - A plasma-emitting saber that masks over #cany weapon except guns and knucklers#. +1702155 - Shooting Star - An adorable Shooting Star that can be masked over #cany weapon except guns and knucklers#. +1702156 - Forked Turkey - A tasty turkey speared on the end of a giant fork. Equips over #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, polearm, or staff#. +1702157 - Burning Marshmellow - A flaming marshmallow taken straight from the campfire! This item equips over a #cone-handed sword, one-handed blunt weapon, one-handed axe, wand, or dagger#. +1702158 - The Jackal - This item can be masked over an equipped #cGun#. +1702159 - Blackbeard's Knuckler - This weapon with flashy beads can be masked over an equipped #cKnuckler#. +1702160 - Tiger Paw Knuckler - This weapon that strongly resembles a tiger claw can be masked over an equipped #cKnuckler#. +1702161 - Dogged Out - This dog comes with a lifetime "Ultra-bite" warranty--guaranteed to never let go of your arm! Can be equipped over a #cClaw#. +1702162 - Koala Doll - A seemingly harmless Koala Doll... that hides your weapon perfectly! This item masks over #call weapons except Guns and Knuckles#. +1702163 - Hot Dog Fork - A long fork with a hot dog stuck on it. Masks over an equipped #ctwo-handed sword, two-handed blunt weapon, or two-handed axe#. +1702164 - Bunny Nunchucks - A swift, powerful Nunchuck with a bunny head delivering mighty blows, while the carrot serves as its handle. Equips over a #cone-handed sword, one-handed axe, one-handed blunt weapon, staff or wand#. +1702165 - My Buddy DJ - My stylish buddy DJ, who imitates my every move. Masks over #cany weapon except guns and knucklers#. +1702166 - Holiday Candy Cane - A holiday candy cane that is sure to please the kids. Masks over #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, and pole arm#. +1702167 - Glow Fingers - A glowy finger that can be equipped in place of a #cGun#. +1702168 - Holiday Tree Ring - A beautiful holiday ring that perfectly conveys the holiday spirit. Masks over #call weapons except Guns and Knuckles#. +1702169 - My Buddy Tina - My popular high-school friend Tina, who imitates my every move. Masks over #cany weapon except guns and knucklers#. +1702170 - Electric Knuckle - A sparky weapon that masks over a #cKnuckle#. +1702171 - Party Popper - A loud party popper featuring multi-colored lines of paper that masks over an equipped #cbow or a crossbow#. +1702172 - Bluebird - An adorable bluebird, considered a lucky charm in some areas, that masks over #cany weapon except guns and knucklers#. +1702173 - Hessonite Saber - An adorable Hessonite Saber that can be masked over #cany weapon except guns and knucklers#. +1702174 - Butterfly Staff - An adorable Butterfly Staff that can be masked over #cany weapon except guns and knucklers#. +1702175 - Hot Dog Link - A long string of sausages tied up to become an unlikely source of damage. Masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, wand, or a staff#. +1702177 - Power Pesticide - A powerful bug spray that masks over an equipped #cgun#. +1702179 - Cloud 9 Pillow - A Cloud 9 Pillow that masks over #cany weapon except guns and knucklers#. +1702180 - Dark Seraphim - A Dark Seraphim that masks over #cany weapon. +1702181 - Picky Ducky - Masks over #cany weapon except guns and knucklers# +1702182 - Giant Pop with a Swirl - A weapon that can be masked over #cany weapon except guns and knucklers#. +1702183 - Sunset Seraphim - A Sunset Seraphim that masks over #cany weapon except guns and knucklers#. +1702184 - Aqua Seraphim - A Aqua Seraphim that masks over #cany weapon except guns and knucklers#. +1702185 - White & Yellow Seraphim - A White & Yellow Seraphim that masks over #cany weapon except guns and knucklers#. +1702187 - Patriot Seraphim - A Patriot Seraphim that masks over #cany weapon except guns and knucklers#. +1702188 - Pink Seraphim - A Pink Seraphim that masks over #cany weapon except guns and knucklers#. +1702189 - Oh Crab! - A Crab weapon that masks over #cany weapon except guns and knucklers#. +1702143 - Combat Syringe - A Combat Syringe that masks over #cany weapon except guns and knucklers#. +1702193 - Towel Whip - A wet towel whip that masks over an equipped #cone-handed sword#. +1312036 - Malaysia Flag (One Handed Axe) - (no description) +1322057 - Singapore Flag (One Handed Mace) - (no description) +1322058 - Malaysia Flag (One Handed Mace) - (no description) +1332060 - Singapore Flag (Dagger) - (no description) +1332061 - Malaysia Flag (Dagger) - (no description) +1382043 - Singapore Flag (Staff) - (no description) +1382044 - Malaysia Flag (Staff) - (no description) +1402042 - Singapore Flag (Two Handed Sword) - (no description) +1412030 - Singapore Flag (Two Handed Axe) - (no description) +1412031 - Malaysia Flag (Two Handed Axe) - (no description) +1422034 - Singapore Flag (Two Handed Mace) - (no description) +1442058 - Singapore Flag (Pole Arm) - (no description) +1462044 - Singapore Flag (Crossbow) - (no description) +1462045 - Malaysia Flag (Crossbow) - (no description) +1472059 - Singapore Flag (claw) - (no description) +1472060 - Malaysia Flag (Claw) - (no description) +1702201 - Bone Weapon - Give those evil creatures a bone--literally! It masks over an equipped #cone-handed sword, one-handed axe, one-handed blunt weapon, and dagger#. +1702204 - Japanese War Fan - Japanese War Fan that masks over an equipped #cone-handed sword#. +1302106 - Crystal Blade - (no description) +1492032 - Kyrin's Pistol - (no description) +1302105 - Seraphim One-handed Sword - (no description) +1312039 - Seraphim One-handed Axe - (no description) +1322065 - Seraphim One-handed Blunt Weapon - (no description) +1332081 - Seraphim Dagger - (no description) +1372046 - Seraphim Wand - (no description) +1382062 - Seraphim Staff - (no description) +1402053 - Seraphim Two-handed Sword - (no description) +1412035 - Seraphim Two-handed Axe - (no description) +1422039 - Seraphim Two-handed Blunt Weapon - (no description) +1432050 - Seraphim Spear - (no description) +1442071 - Seraphim Pole Arm - (no description) +1452062 - Seraphim Bow - (no description) +1462056 - Seraphim Crossbow - (no description) +1472077 - Seraphim Claw - (no description) +1482029 - Seraphim Knuckler - (no description) +1492030 - Seraphim Gun - (no description) +1702210 - Santa Buddy - Santa buddy is here to follow you around and spread cheer around Maple! This item can be equipped over #call weapons#. +1702209 - Rudolph Stick - A slim and sturdy rudolph stick weapon just in time for the holidays! Can be equipped over #cany weapon except guns and knucklers#. +1702191 - Rainbow Sabre - An interesting sabre that masks over #call weapons except Guns and Knuckles#, and the color of the weapon changes everyday.(Mon - Red, Tue - Orange, Wed- Green, Thur - Blue, Fri - Purple, Sat - Black, Sun -White) +1702195 - MapleGirl Wand - A Maply wand that masks #call weapons#. +1702196 - Fly Blue Bird - A twitty little blue bird that masks #call weapons#. +1702202 - Baby Ellie - An adorable pink Baby Ellie that masks over #call weapons#. +1702213 - Heartbreak Sword - Give monsters a broken heart with this stylish weapon! Masks over and equipped #wand, staff, pole-arm, two-handed sword, two-handed axe, and two-handed blunt weapon#. +1702207 - Musical Violin - Mesmerize mobs with an enchanting fiddle tune. Masks over #all weapons#. +1412040 - Redner - One of the huge Versalian axes wielded by Red Nirg. +1432056 - Stormshear - (no description) +1322061 - Reverse Allargando - (no description) +1332073 - Timeless Pescas - (no description) +1332074 - Timeless Killic - (no description) +1332075 - Reverse Pescas - (no description) +1332076 - Reverse Killic - (no description) +1372044 - Timeless Enreal Tear - (no description) +1372045 - Reverse Enreal Tear - (no description) +1382057 - Timeless Aeas Hand - (no description) +1382059 - Reverse Aeas Hand - (no description) +1402047 - Reverse Nibleheim - (no description) +1412034 - Reverse Tabarzin - (no description) +1422038 - Reverse Bellocce - (no description) +1432047 - Timeless Alchupiz - (no description) +1432049 - Reverse Alchupiz - (no description) +1442067 - Reverse Diesra - (no description) +1452057 - Timeless Engaw - (no description) +1452059 - Reverse Engaw - (no description) +1462050 - Timeless Black Beauty - (no description) +1462051 - Reverse Black Beauty - (no description) +1472068 - Timeless Lampion - (no description) +1472071 - Reverse Lampion - (no description) +1482024 - Reverse Equinox - (no description) +1482025 - Pink Flower Tube - (no description) +1492023 - Timeless Blindness - (no description) +1492025 - Reverse Blindness - (no description) +1492026 - Pink Flower Tube - (no description) +1302114 - GMS Carabella - (no description) +1312044 - GMS Axe - (no description) +1322072 - GMS Flame - (no description) +1402061 - GMS Claymore - (no description) +1412041 - GMS Battle Axe - (no description) +1422044 - GMS Maul - (no description) +1482034 - GMS Knuckle - (no description) +1702217 - Ducky Tube - This item can be equipped over #call weapons#. +1702218 - Dumbell Weapon - Masks over an equipped #cone handed sword, one-handed axe, one-handed blunt weapon, and dagger.# +1702219 - Knockout Boxing Gloves - Masks over an equipped #cclaw#. +1702220 - Transparent Wand - Masks over #cany wand#. +1492024 - Lunar Shooter for transformation - (no description) +1702190 - Transparent Knuckle - Transparent Knuckle that mask over #cKnuckle#. +1702203 - Halloween Teddy - Equipped on #call weapons#. +1702211 - Blizzard Stick - Equipped on #call weapons#. +1702229 - Demon Sickle - Equips over #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or pole arm#. +1702233 - Rainbow Brush - Can be equipped in place of #call weapons#. +1702226 - My Buddy Whale - Equips over #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or pole arm#. +1702228 - Choco Banana - Equips over #ctwo-handed sword, two-handed axe, two-handed blunt weapon, spear, or pole arm#. +1702230 - Popsicle Sword - Equips over #cone-handed sword, one-handed blunt weapon, one-handed axe, dagger and claw#. +1702208 - Alligator Tube - Specially made alligator shape tube that masks over #cany equipped weapon except guns and knuckles#. +1702235 - Metallic Arm - (no description) +1702139 - Hook Hand - Masks over an equipped #cclaw#. +1302112 - Balrog's Khan - (no description) +1302113 - Balrog's Fraute - (no description) +1312042 - Balrog's Gaea - (no description) +1312043 - Balrog's Vifennis - (no description) +1322068 - Balrog's Golden Hammer - (no description) +1322069 - Balrog's Runi Hammer - (no description) +1332084 - Balrog's Angelic Betrayal - (no description) +1332085 - Dragon's Tail of Balrog - (no description) +1332086 - Balrog's Cursayer - (no description) +1332087 - Balrog's Varkit - (no description) +1372049 - Zakum's Tree Branch - (no description) +1372050 - Balrog's Magicodar - (no description) +1372051 - Balrog's Phoenix Wand - (no description) +1382066 - Balrog's Kage - (no description) +1382067 - Balrog's Blue Marine - (no description) +1382068 - Bain Wings - (no description) +1402056 - Balrog's Blue Screamer - (no description) +1402057 - Heaven's Gate of Balrog - (no description) +1402058 - Balrog's Berzerker - (no description) +1402059 - Devil's Sunrise of Balrog - (no description) +1402062 - Bain Sword - (no description) +1412038 - Balrog's Helios - (no description) +1412039 - Balrog's Colonian Axe - (no description) +1422042 - Balrog's Morningstar - (no description) +1422043 - Balrog's Leomite - (no description) +1432054 - Balrog's Omega Spear - (no description) +1432055 - Balrog's Fairfrozen - (no description) +1442074 - Balrog's Eclipse - (no description) +1442075 - Balrog's Hellslayer - (no description) +1442078 - Bain Pole Arm - (no description) +1442079 - Basic Polearm - (no description) +1452066 - Balrog's Marine Arund - (no description) +1452067 - Balrog's Fire Arund - (no description) +1452068 - Balrog's Golden Arund - (no description) +1452069 - Balrog's Dark Arund - (no description) +1452070 - Balrog's Metus - (no description) +1452071 - Bain Long Bow - (no description) +1462059 - Balrog's Marine Raven - (no description) +1462060 - Balrog's Fire Raven - (no description) +1462061 - Balrog's Golden Raven - (no description) +1462062 - Balrog's Dark Raven - (no description) +1462063 - Balrog's Casa Crow - (no description) +1472083 - Balrog's Black Mamba - (no description) +1472084 - Balrog's Caster - (no description) +1472086 - Bain Biter - (no description) +1482031 - Balrog's Steel Renault - (no description) +1482032 - Balrog's White Evil - (no description) +1492035 - Balrog's Infinity - (no description) +1492036 - Balrog's Peacemaker - (no description) +1492037 - Bain Shooter - (no description) +1702212 - Galactic Legend - A weapon that masks over #call weapons#. +1702216 - Magic Heart Stick - A weapon that masks over #call weapons#. +1302133 - Astaroth One-Handed Sword - #cYou can feel Astaroth's dark energy.# +1332099 - Astaroth Short Sword - #cYou can feel Astaroth's dark energy.# +1372058 - Astaroth Wand - #cYou can feel Astaroth's dark energy.# +1382080 - Astaroth Staff - #cYou can feel Astaroth's dark energy.# +1402072 - Astaroth Two-Handed Sword - #cYou can feel Astaroth's dark energy.# +1412046 - Astaroth Axe - #cYou can feel Astaroth's dark energy.# +1432061 - Astaroth Spear - #cYou can feel Astaroth's dark energy.# +1442103 - Astaroth Polearm - #cYou can feel Astaroth's dark energy.# +1452083 - Solomon's Unstable Bow - (no description) +1452084 - Solomon's Bow - Completed Solomon's Bow +1452085 - Astaroth Bow - #cYou can feel Astaroth's dark energy.# +1462075 - Astaroth Crossbow - #cYou can feel Astaroth's dark energy.# +1472100 - Astaroth Claw - #cYou can feel Astaroth's dark energy.# +1482046 - Astaroth Knuckles - #cYou can feel Astaroth's dark energy.# +1492048 - Astaroth Gun - #cYou can feel Astaroth's dark energy.# +1302131 - Broomstick - (no description) +1702246 - Ghost Weapon - This item can be equipped over #call weapons#. +1702215 - Boleadoras - This item can be equipped #cany weapon except guns and knuckles#. +1442076 - Aran Polearm Maha - (no description) +1702249 - Gosling Cushion - An adorable pillow that can be equipped on #cany weapon except for guns and knuckles#. +1702250 - Steel Briefcase - A briefcase that can be equipped on #cany weapon except for guns and knuckles#. +1702238 - Soft Plush Dolphin - Can be equipped with #call weapons#. +1302119 - King Pepe Cutlass - (no description) +1302120 - Angel Sword - (no description) +1312045 - King Pepe Danker - (no description) +1322073 - King Pepe Heavy Hammer - (no description) +1332088 - King Pepe Gephart - (no description) +1372053 - King Pepe Wizard Wand - (no description) +1382070 - King Pepe Petal Staff - (no description) +1402064 - King Pepe Highlander - (no description) +1412042 - King Pepe Niam - (no description) +1422045 - King Pepe Big Hammer - (no description) +1432057 - King Pepe Nakamaki - (no description) +1442077 - Practice Polearm - (no description) +1442080 - Steel Polearm - (no description) +1442081 - Tru's Mithril Polearm - A Mithril Polearm from Tru. It will disappear the moment you log out of the game. +1442082 - King Pepe Axe Polearm - (no description) +1452073 - King Pepe Red Viper - (no description) +1462066 - King Pepe Eagle Crow - (no description) +1472089 - King Pepe Dark Guardian - (no description) +1482037 - King Pepe Silver Maiden - (no description) +1492038 - King Pepe Shooting Star - (no description) +1702251 - Saw Machine Gun - A machine gun with a terrifying, rotating saw blade. You can apply this item to #cany weapon# of your choice. diff --git a/handbook/Etc.txt b/handbook/Etc.txt new file mode 100644 index 0000000000..61d29e4940 --- /dev/null +++ b/handbook/Etc.txt @@ -0,0 +1,2385 @@ +4001257 - Staff of First Magic - A symbolic weapon of Mage mastery. Although it can't be equipped, its power is palpable. This item must be placed in the Altar of Mastery to activate it. +4001258 - Ancestral Bow - A symbolic weapon of Bowman mastery. Although it can't be equipped, its power is palpable. This item must be placed in the Altar of Mastery to activate it. +4001259 - Master Sword - A symbolic weapon of Warrior mastery. Although it can't be equipped, its power is palpable. This item must be placed in the Altar of Mastery to activate it. +4001260 - Forbidden Gun - A symbolic weapon of Pirate mastery. Although it can't be equipped, its power is palpable. This item must be placed in the Altar of Mastery to activate it. +4000488 - MasteriaPQ Mob Summon - (no description) +4031867 - A secret letter - A secret letter that contains information about the traitorous MV. Needs to be delivered to Charles the Adventurer. +4032234 - Piece of Courage - A piece that represents courage +4032235 - Piece of Wisdom - A piece that represents wisdom +4032236 - Piece of Accuracy - A piece that represents accuracy +4032237 - Piece of Dexterity - A piece that represents dexterity +4032238 - Piece of Freedom - A piece that represents freedom +4001249 - Maple Necklace Gem - A beautiful gem that can be set on the Mind of Maple Necklace. +4001250 - Maple Necklace Pendant - This can be used to create the Mind of Maple Necklace. +4220147 - Mind of Maple Necklace - A Mind of Maple Necklace that brings luck and hope to anyone who wears it. +4290000 - Golden Chicken Effect - Golden Chicken Effect was given as a reward for helping Lazy Daisy. You can turn it ON/OFF by double-clicking the icon or using the key configuration menu to assign a shortcut key. +4290001 - Bummer Effect - This effect is for people who helped Lazy Daisy but failed to hatch the egg. You can turn it ON/OFF by double-clicking the icon or using the key configuration menu to assign a shortcut key. +4220089 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220090 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220091 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220092 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220093 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220094 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220095 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220096 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220097 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220098 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220099 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220100 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220101 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220102 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220103 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220104 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220105 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220106 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220107 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220108 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220109 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220110 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220111 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220112 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220113 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220114 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220115 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220116 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220117 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220118 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220119 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220120 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220121 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220122 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220123 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220124 - Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220125 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220126 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220127 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220128 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220129 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220130 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220131 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220132 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220133 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220134 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220135 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4220136 - Golden Egg - This is Lazy Daisy's egg she has left in your care. If you double-click and leave the UI open, it will grow faster. +4032135 - Growth Powder - Sprinkle it on eggs or chicks to expedite their growth. +4032093 - Alcaster's Reply - A reply letter written by Alcaster of El Nath for Snow Spirit. +4032199 - Transparent Icon 1 - A transparent item. +4032200 - Transparent Icon 2 - A transparent item. +4000000 - Blue Snail Shell - A shell removed from a snail +4000001 - Orange Mushroom Cap - A cap removed from a mushroom +4000002 - Pig's Ribbon - Taken off from the pig with a ribbon +4000003 - Tree Branch - The branch bent away from a tree +4000004 - Squishy Liquid - Very thick and sticky liquid +4000005 - Leaf - The leaf that's taken out of a tree +4000006 - Octopus Leg - The leg removed from an octopus +4000007 - Evil Eye Tail - A tail removed from a lizard +4000008 - Charm of the Undead - A charm taken out of an undead monster. +4000009 - Blue Mushroom Cap - A cap removed from a mushroom +4000010 - Slime Bubble - A bubble removed from the slime +4000011 - Mushroom Spore - A spore of a mushroom +4000012 - Green Mushroom Cap - A cap removed from a mushroom +4000013 - Curse Eye Tail - A tail removed from a lizard +4000014 - Drake Skull - It's a skull of Drake +4000015 - Horny Mushroom Cap - A cap removed from a mushroom +4000016 - Red Snail Shell - A shell removed from a snail. +4000017 - Pig's Head - Head of a pig +4000018 - Firewood - A high-quality firewood from an Axe-Stump. +4000019 - Snail Shell - Shell removed from a snail +4000020 - Wild Boar Tooth - The canine tooth taken off from the Wild Boar +4000021 - Leather - An animal's skin that's been cut away +4000022 - Stone Golem Rubble - A mystic rubble that was a part of Stone Golem. +4000023 - Cold Eye Tail - A tail removed from a lizard +4000024 - Fire Boar's Tooth - The canine tooth taken off from the Fire Boar +4000025 - Dark Stone Golem Rubble - A mystic rubble that was a part of Dark Stone Golem. +4000026 - Lupin Doll - A miniature figure of Lupin +4000027 - Wild Kargo Eye - An eye removed from Wild Kargo +4000028 - Tauromacis Horn - A very solid and heavy piece of a horn from Tauromacis. +4000029 - Lupin's Banana - It's Lupin's favorite: a tasty banana +4000030 - Dragon Skin - A solid piece of dragon's skin that gives off a mysterious light. +4000031 - Cursed Doll - A cursed doll possessed by the Zombie Lupin's. +4000032 - Ligator Skin - A very solid and tough piece of skin from the Ligator. +4000033 - Croco Skin - A very solid and tough piece of skin from Croco. +4000034 - Jr. Necki Skin - A piece of skin from the Jr. Necki. +4000035 - Tablecloth - A tablecloth donned by Jr. Wraith. +4000036 - Medicine With Weird Vibes - A medicine with weird vibes left by Wraith +4000037 - Bubbling's Huge Bubble - A huge bubble removed from a Bubbling +4000038 - Event Trophy - A souvenir for entering the event. Made out of gold, so you can sell it for a high price. +4000039 - Iron Hog's Metal Hoof - A metal hoof that covered the legs of Iron Hog. +4000040 - Mushmom Spore - A spore from Mushmom, a humongous mushroom +4000041 - Malady's Experimental Frog - A bottle containing frogs that Malady had for various experiments. +4000042 - Stirge Wing - A wing cut out of Stirge. +4000043 - Lorang Claw - A huge piece of claw cut out of Lorang. +4000044 - Clang Claw - A huge piece of claw cut out of Clang. +4000045 - Tortie Shell - A shell cut out of Tortie's back. +4000046 - Taurospear Horn - A very tough and heavy piece of horn from Taurospear. +4000047 - Mouse - A computer mouse probably taken from an internet cafe. +4000048 - Jr. Yeti Skin - A skin cut out of Jr. Yeti. Very soft and full of white fur. +4000049 - Yeti Horn - A horn cut out of Yeti. Very solid and hard to break. +4000050 - Pepe Beak - A beak cut out of Pepe. Solid and gold-colored. +4000051 - Hector Tail - A tail cut out of Hector. Brown, and a tad rough. +4000052 - White Pang Tail - A tail cut out of White Pang. Very soft, white hair. +4000053 - Werewolf Toenail - A toenail cut out of Werewolf. Better be careful, because it's really sharp. +4000054 - Lycanthrope Toenail - A toenail cut out of Werewolf. Better be careful, because it's not only really sharp, but almost unbreakable. +4000055 - Dark Jr. Yeti Skin - A skin cut out of Dark Jr. Yeti. Consists of rough, black hair. +4000056 - Dark Yeti Horn - A horn cut out of Dark Yeti. Very solid and hard to break. +4000057 - Dark Pepe Beak - A beak cut out of Dark Pepe. Solid and black-colored. +4000058 - Nependeath Seed - A seed cut out of Nependeath. It's poisonous, so it shouldn't be taken lightly. +4000059 - Star Pixie's Starpiece - A piece of star dropped by Star Pixie. It glows beautifully. +4000060 - Lunar Pixie's Moonpiece - A piece of moon dropped by Lunar Pixie. It glows beautifully. +4000061 - Luster Pixie's Sunpiece - A piece of sun dropped by Luster Pixie. It glows beautifully. +4000062 - Dark Nependeath Seed - A seed cut out of Dark Nependeath. Should be handled with care, because it's poisonous with thorns around it. +4000063 - Sentinel Shellpiece - A hard shellpiece from Sentinel. +4000064 - Crow Feather - The feather of a crow. +4000065 - Raccoon Firewood - Raccoon's firewood. +4000066 - Cloud Foxtail - Cloud Fox's tail. +4000067 - Jr. Boogie Horn - A horn removed from Jr. Boogie. Small, dense, and hard to break. +4000068 - Fierry's Tentacle - A tentacle removed from Fierry. Very small and delicate, so it should be handled with care. +4000069 - Zombie's Lost Tooth - A lost tooth from a Zombie. It's very decayed, looking to break apart any minute. +4000070 - Cellion Tail - A tail removed from Cellion. Very soft and scorching hot. +4000071 - Lioner Tail - A tail removed from Lioner. Very soft and electric. +4000072 - Grupin Tail - A tail removed from Grupin. Very soft and ice cold. +4000073 - Solid Horn - A horn that can be obtained from Jr. Cellion, Jr. Lioner, and Jr. Grupin. +4000074 - Lucida Tail - A tail removed from Lucida. It is overflowing with evil force. +4000075 - Triangular Bandana of the Nightghost - Triangular Bandana that Nightghost wears while spooking other. +4000076 - Fly-Eye Wing - A wing removed from Fly-Eye. Spiky and very dirty. +4000077 - Dark Cloud Foxtail - Dark Cloud Fox's tail +4000078 - Jr. Cerebes Tooth - A tooth removed from Jr. Cerebes. Very small and dense, it also looks very hard to break. +4000079 - Cerebes Tooth - A tooth removed from Cerebes. Very long and massive, enough for it to be a threat to someone. +4000080 - Bain's Spiky Collar - A collar stolen from Bain. Spiked in everywhich way, enough for it to be a threat to someone. +4000081 - Firebomb Flame - A collection of sparks from Firebomb. Scorching hot, looking to explode any minute. +4000082 - Zombie's Lost Gold Tooth - A lost gold tooth from the zombie. +4000083 - Jr. Sentinel Shellpiece - A hard shellpiece that's a part of Jr. Sentinel. +4000084 - Ice Sentinel Shellpiece - A hard shellpiece that's a part of Ice Sentinel. +4000085 - Fire Sentinel Shellpiece - A hard shellpiece that's a part of Fire Sentinel +4000086 - Leatty Furball - Leatty's Furball. So soft and small that it looks like it may just float away. +4000087 - Dark Leatty Furball - Dark Leatty's Furball. So soft and small that it looks like it may just float away. +4000088 - Jr. Pepe's Fish - A snackery of Jr. Pepe : a live, fresh fish. +4000089 - Littleman A's Badge - The badge of Littleman A +4000090 - Littleman B's Name Plate - The name plate of Littleman B +4000091 - Littleman C's Necklace - The necklace of Littleman C. +4000092 - Leader A's Shades - The shades of leader A +4000093 - Leader B's Charm - The charm of Leader B. +4000094 - Boss's Pomade - Boss's pomade. +4000095 - Rat Trap - Some one must have set up this rat trap. Make sure it doesn't go off. +4000096 - Hard Walnut - A hard walnut that may have been nibbled away before. +4000097 - Spiderweb - A small spiderweb that's been intricately made. Sticks onto anything. +4000098 - Sticky Spiderweb - A very adhesive spiderweb. Much more sticky than the regular spiderweb. +4000099 - Bloctopus Key Chain - A small, octopus-shaped key chain made out of plastic. +4000100 - Plastic Crown - A toy crown made out of plastic. +4000101 - Yellow Toy Block - A toy block that's a part of Golem. +4000102 - Blue Toy Block - A toy block that's a part of Golem +4000103 - Propeller - A propeller that's a part of the toy plane. +4000104 - Motor - A motor that's a part of the toy plane. +4000105 - Plane Controller - A controller used to navigate the toy plane. +4000106 - Teddy's Cotton - A soft piece of cotton from Teddy. +4000107 - Teddy's Yellow Ribbon - A yellow ribbon from Teddy. +4000108 - Panda Doll - A small, adorable-looking panda doll. Looks so real that it may just get up and walk around any minute. +4000109 - Toy Duckling - A miniature toy duckling with wheels. +4000110 - Toy Trojan Sword - A plastic sword from the toy trojan. +4000111 - Cheap Battery - A cheap battery from the inside of a robot. Looks like it still can be used for a little bit. +4000112 - Mechanical Heart - A mechanical heart from the inside of the robot. Looks like it's still working. +4000113 - Clock Spring - A tiny spring of the clock. +4000114 - Table Clock - A very pretty-looking table clock. It's still running. +4000115 - Cog - An important part of a clock. +4000116 - Small Egg - Small egg, which is easily breakable +4000117 - Space Food - Food from the Space. You are not supposed to eat this. +4000118 - Small Spaceship - Small-sized spaceship. There seems to be a special way of making this work +4000119 - Receiving Apparatus - Apparatus, which enables you to receive informations from the space. There seems to be a special way of making this work +4000120 - Mateon's Tentacle - Mateon's tentacle, which collects lots of information. +4000121 - Plateon's Helmet - A helmet that Plateon wears all the times. It's slimy inside +4000122 - Mecateon's Laser Gun - A laser gun that Mecateon carries. There seems to be a special way of making this work +4000123 - Worn-Out Goggle - It is a worn-out goggle. It is too small. +4000124 - Rombot's Memory Card - A memory card that contains the program that controls Rombot. +4000125 - Chief Gray's Sign - A sign only the Chief Grays have. The mystical power that the Chief Gray's possess seem to originate from it. +4000126 - MT-09's Fuel - A fuel tank of MT-09 that contains unknown liquid. Looks like it has a lot of punch even with a small amount. +4000127 - Toy Drum - A toy drum from the Drum Bunny. +4000128 - Buffy Hat - A multi-colored hat from Buffy. +4000129 - Lazy Buffy Marble - A marble from the tip of the hat that Lazy Buffy wore. Seems to have a mystierious power hidden in it. +4000130 - Buffoon's Grandpa Clock - An old, humongous grandfather's clock Buffoon uses as a weapon. +4000131 - Deep Buffoon's Rock Piece - A rock piece that Deep Buffoon donned on its waste. Quite heavy. +4000132 - Ghost Pirate Key - A key stuck on the boat that Pirate was riding on. +4000133 - Dual Pirate's Propeller - A propeller of the boat that Dual Pirate rides on. +4000134 - Viking Sail - A sail on the ship that Viking was riding on. +4000135 - Gigantic Viking Hat - A huge hat that Gigantic Viking donned. +4000136 - Coconut - A fresh coconut made in Florina Beach. +4000137 - Subordinate D Fingernail - Looks like a fingernail of a Subordinate D. +4000138 - Lady Boss's Comb - A comb that the lady boss always carries with. +4000139 - Bodyguard A's Tie Pin - A pin stuck on the tie of Bodyguard A. +4000140 - Bodyguard B's Bullet Shell - A bullet shell of the gun that Bodyguard B used. +4000141 - Big Boss Flashlight - Maybe the Big Boss uses it as a secret weapon... +4000142 - Jr. Sentinel Shellpiece - A hard piece of rock that forms the body of Jr. Sentinel. +4000143 - Zombie Teddy Bear - A Teddy plushy that's been controlled by Soul Teddy. The soul is long gone, and what's left is a torn-up toy. +4000144 - Free Spirit - A soul that used to be stuck on the back of Master Soul Teddy. The soul is now set free, and it's smiling. +4000145 - Sealed-up Grandpa Clock - Sealed up the center of the clock with a charm . +4000146 - Evil Spirit - The heart of the Dark Clock is broken, and the charm is stuck on it, but it's still not fully sealed up. As a result, it gives off black aura all around it. +4000147 - Sealed Teddy Bear - A sealed-up Teddy bear that's been controlled by Death Teddy. +4000148 - Binding Bridle - The bridle that bound Master Death Teddy's hand and the Teddys. +4000149 - Sealed Bottle - A pot that is a source of power that sealed up the phantom watch. +4000150 - Ice Piece - An ice piece formed after the death of Grim Phantom Watch. +4000151 - Gatekeeper Armband - An armband from the Gatekeeper. +4000152 - Tanathos Strap - A strap from Tanathos +4000153 - Snorkle - Used by Scuba Pepe to breathe while swimming. +4000154 - Toy Baby Seal - A toy figure that's modeled after Jr. Seal. +4000155 - Seal Skin - A seal skin made with processed Freezer skins. +4000156 - Seal Tooth - A long tooth removed from Sparker; looks very strong and powerful. +4000157 - Seal Meat - Seal meat is as nutritious a food as it gets. +4000158 - Poopa Egg - A small egg laid by a Poopa. +4000159 - Poison Poopa's Poisonous Spikes - A poisoned set of spikes from Poison Poopa. +4000160 - Needle - A long, sharp needle from Pinboom's body. +4000161 - Sea Horse Tail - A rolled-up tail from Seacle. +4000162 - Flamboyant Scale Skin - A scale skin with flamboyant colors in tact from Krappi. +4000163 - Sea Horse Horn - A round horn from the head of Cico. +4000164 - Bubble Fish's Thoughts - A small, red jewel from the inside of Bubblefish. +4000165 - Flamboyant Petal - A flower petal from the head of Flowerfish. +4000166 - Shrimp Meat - A delicious shrimp from Krip. +4000167 - Hard Needle - A hard, solid needle from Mask Fish. +4000168 - Sunflower Seed - A sunflower seed that Ratz enjoys. Has a long black stripe on it. +4000169 - Pounder - A pounder that the Moon Bunny always carries around. Used to pound away the crops in the mortar. +4000170 - Tiger Stamp - A slate that has Tiger's thick footprint engraved. +4000171 - Tiger Skin - A tiger skin that Hogul wears. +4000172 - Three-Tailed Foxtail - A soft foxtail that Three-Tailed Fox removed from itself. +4000173 - Broom - A small broom made from bushes that Blins dropped. +4000174 - Money Envelope - You can sell this envelope for 10,000 meso in the store. +4000175 - Minature Pianus - A miniature version of Pianus +4000176 - Poisonous Mushroom - A poisonous mushroom that lives on the humongous Zombie Mushroom. +4000177 - Mixed Block - A block from Mix Golem that consists of its chest area. +4000178 - Iron Boar Armor - A small piece of the solid armor from Iron Boar. +4000179 - A Bundle of Goby - A bundle of Goby wrapped around with a rope. +4000180 - Shark Denture - A sharp shark denture. +4000181 - Frozen Shark's Fin - A frozen, cooked shark's fin from the Cold Shark. +4000182 - Lime Powder Bottle - A bottle of lime powder from the bones of Bone Fish. +4000183 - Ink Bottle - A bottle of Squid ink. +4000184 - Butter-Toasted Squid - Risell Squid, buttered up and toasted. +4000185 - Ice Backbone - A backbone from Ice Drake. +4000186 - Dark Drake's Horn - A horn from Dark Drake's head. +4000187 - Chicken Feet - A chicken's foot +4000188 - Duck Egg - A round, white egg laid by a duck. +4000189 - Sheep Skin - A white fluffy wool from white sheep. +4000190 - White Horn - A white horn from a goat. +4000191 - Black Horn - A black horn shed from the black goat. +4000192 - Nose Ring - A nose ring stuck on the nose of cows. +4000193 - Plow - A plow that's on the back of the oxen to plow the field. +4000194 - Black Fur - A fluffy black wool from the black sheep. +4000195 - Seedling - A branch from Ghost Stump. +4000196 - Wooden Board - A wooden board that Wooden Mask wears. +4000197 - Slate - A slate that Stone Mask wears. +4000198 - Wild Dog Tail - A short and stiff tail of Wild Dog +4000199 - Wild Dog Shades - A pair of cool-looking sunglasses adorned by stylish Wild Dog. +4000200 - Wild Dog Denture - A denture worn by the intimidating Wild Dog. +4000201 - Monkey Bike - A unicycle ridden by Circus Monkey. +4000202 - Motorcycle Helmet - A helmet adorned by Biker Monkey +4000204 - Skeledog's Bone - A bone that fell out of Skeledog. +4000205 - Dirty Bandage - A string of dirty bandage that was wrapped around Mummydog. +4000206 - Rib - A rib from Skeleton Soldier. +4000207 - Pelvic Bone - A pelvic bone from Skeleton Officer. +4000208 - Horse Skull - A horse skull from the horse of Skeleton Commander. +4000215 - Axe - An axe stuck in a trunk. +4000222 - Worn Paper Lantern - Worn paper lantern from Purple ghost. +4000223 - Cucumber - A delicious looking cucumber that Hadong Dropped. +4000224 - Sabots - Pair of Sabots that Red nose was wearing. +4000225 - Kimono Piece - A piece of cloth that Mong Ghost was wearing. +4000226 - Rash's Furball - A ball of hair that fell off from Rash. +4000227 - Tree Fruit - Rash's favorite food. Not for humans! +4000228 - Anesthetic Powder - A sparkling powder that fell from Rash. Be careful, because this powder is anesthetic. +4000229 - Dark Rash's Furball - A ball of hair that fell off from Dark Rash. +4000230 - Curse Powder - A sparkling powder that fell from Rash. Be careful, because this powder is packed with a potent curse. +4000231 - Hankie's Pan Flute - An exotic instrument played by Hankie. +4000232 - Kentaurus's Flame - The root of Kentaurus's awesome power. +4000233 - Kentaurus's Marrow - The root of Kentaurus's awesome power. +4000234 - Kentaurus's Skull - The root of Kentaurus's awesome power. +4000235 - Manon's Tail - A tail that's been cut off from Manon. It looks quite enticing, but it actually doesn't taste very good. +4000236 - Beetle's Horn - A horn removed from Beetle's head. Very solid and sharp. +4000237 - Dual Beetle's Horn - A horn removed from Dual Beetle's head. Bigger and stronger than Beetle's horn. +4000238 - Harp's Tail Feather - A tail feather removed from Harp. Visually pleasing enough to use as an accessory.. +4000239 - Blood Harp's Crown - A small crown worn by Blood Harp. Very soft and comfortable. +4000240 - Small Flaming Feather - A soft, flaming-like feather that fell from Blood Harp. +4000241 - Birk's Chewed Grass - A batch of grass Birk likes to chew on a regular basis. Should not be chewn by anyone else. +4000242 - Dual Birk's Tiny Tail - A tiny tail from Dual Birk. Girls love its distinctively cute design. +4000243 - Griffey Horn - A horn removed from Griffey. Solid white, but also pretty enough to be used as a material for accessories. +4000244 - Dragon Spirit - A crystal with rough edges that has a small dragon engraved on it. A mysterious force can be felt just by looking at it. +4000245 - Dragon Scale - A piece of scale that fell from dragon. A mysterious force can be felt just by looking at it. +4000246 - Toad Poisoin - A bottle full of poison from Toad's skin. +4000247 - Frog Legs - A very chewy back leg of a frog. +4000248 - Snake Scale - A piece of scale that fell off the snake. +4000249 - Snake Skin - A snake skin removed from the animal. +4000250 - Lizard Tail - A piece of lizard tail that an animal dropped when it felt threatened. +4000251 - Lizard Tongue - A lizard tongue that features distinctively lively color. +4000252 - Chicken - A featherless chicken ready to be cooked. +4000253 - White Egg - A white egg that was laid this morning. +4000254 - Red Bubble - A red bubble used for bubble teas. +4000255 - Yellow Bubble - A yellow bubble used for bubble teas. +4000256 - Green Bubble - A green bubble used for bubble teas. +4000257 - Yeti Key Chain - A key chain with a doll that resembles Yeti. +4000258 - Jr. Pepe Key Chain - A key chain with a doll that resembles Jr. Pepe. +4000259 - UFO Catcher - A key chain with a doll that resembles the UFO Catcher. +4000260 - Hov's Shorts - A ragged pair of brown shorts that Hov wore. +4000261 - Pin Hov's Charm - A rabbit-foot charm that Pin Hov kept to himself. It looks very poorly made. +4000262 - Cracked Shell - A grey shell from the Blue Dragon Turtle. It has a little bit of crack on it, but it's still rock-solid and heavy. +4000263 - Red Shell - A red shell from the Red Dragon Turtle. Features an intimidating set of spikes on the shell. +4000264 - Rexton Leather - A piece of skin that protects Rexton from bodily harm. +4000265 - Strange Egg - A strange-looking egg that rode on top of Brexton. +4000266 - Wooden Shoulder Pad - A shoulder pad from Green Cornian. Made with wood. +4000267 - Skull Shoulder Pad - A shoulder pad from Dark Cornian. Composed entirely out of a skull, which instills fear in anyone taking a look at it. +4000268 - Wyvern Wing - A torn red wing from Red Wyvern. +4000269 - Wyvern Gill - A small gill that is attached to both sides of Blue Wyvern's face. +4000270 - Wyvern Toenail - A small, sharp toenail attached at the end of Dark Wyvern's wings. +4000271 - Destroyed Nest - A dragon nest that has been utterly destroyed. +4000272 - Egg Shell - A broken piece of egg shell that Newt Jr. had on its head. +4000273 - Old Neck Bone - An old neck bone from Skelosaurus. +4000274 - Broken Horn - A horn that used to adorn the head of Skelegon. It's now broken off. +4000275 - Broken Horn - A horn that used to adorn the head of Skelegon. It's now broken off. +4000276 - Acorn - A small acorn that the squirrels collect. +4000277 - Thimble - A small piece of rubber used to protect fingers while sewing. +4000278 - Needle Pouch - A pouch used to keep needles by poking the needle through it. +4000279 - Necki Flower - A red flower petal that used to be on the head of Red Retro Snake. +4000280 - Necki Swimming Cap - A swimming cap fully adorned with flowers that used to be on the head of Blue Retro Snake. +4000281 - Snake Leather - A high-quality snake leather with snake patterns clearly featured on it. +4000282 - Peach Seed - A peach seed spat out by the Peach Monkey. +4000283 - Bear Foot - A huge, thick bear foot. +4000284 - Yellow Belt - A long yellow belt that the Grizzly wears around its waist. +4000285 - Red Belt - A long red belt that the Panda wears around its waist. +4000286 - Straw Doll - A yellow doll stuffed with straw. +4000287 - Wooden Doll - A wooden doll sculpted from head to toe. +4000288 - Broken Deer Horn - A white deer horn with the bottom snapped off. +4000289 - Cat Doll - A slouched grey cat doll. +4000290 - Porcupine Spine - A sharp porcupine spine that's dropped by Red or Black Porky. +4000291 - Broken Piece of Pot - A piece that fell out of a broken pot. +4000292 - Ginseng-Boiled Water - A hot pot that contains water that's been boiling with ginseng for a long time. +4000293 - Bellflower - A commonly-found root of a bellflower. +4000294 - 100-Year-Old Bellflower - The root of a 100-year-old bellflower. +4000295 - Mr. Alli's Leather - A freshly torn piece of Mr. Alli's leather. +4000296 - Mark of the Pirate - A unique piece of cloth used for identification among pirates. +4000297 - Captain's Hat - A pirate captain's hat. +4000298 - Old Paper - An old, blank piece of paper. Due to age, the color has tinted a faint yellow. +4000299 - The Book Ghost's Sheet of Paper - A sheet from the book that contains a writing of divination of the Mountain God. Contains unrecognizable writings. +4000300 - Letty's Hairball - A hairball from Leatty. So small and soft, it could easily fly away. +4000301 - Toy Drum - A toy drum from the drumming rabbit. +4000313 - Golden Maple Leaf - A maple leaf that contains the mysterious power of the golden pig. +4000324 - Clover - A Sand Rabbit's food. Also known as rabbit grass, it usually has three leaves. +4000325 - Carrot - A Sand Rabbit's food. They love eating the plump orange root! +4000326 - Earmuff - Earmuffs that keep the ears warm. The muffs on this pair are old and shaggy. +4000327 - Ragged Scarf - An old ragged scarf. It doesn't look like it's been washed in a very long time. +4000328 - Snake Rattle - Bellamoa's rattle. Shaking it might draw Bellamoa out. +4000329 - Cactus Stem - Cut pieces of a Cactus. The liquid from the cactus is good for healing wounds. +4000330 - Cactus Thorn - A cactus' thorn. Although it contains no poison, being pricked by one is extremely painful. +4000331 - Cactus' Flower - A flower that can be obtained from Royal Cactus. The sweet sap from the flower is also used in teas. +4000332 - Sand - Shiny, fine sand that has been ground many times over for many years by the desert. +4000333 - Telescope - A telescope that lets you see far away. It makes things that are really far away appear very close. +4000334 - Empty Sack - The sack that the sand elfs used to excavate Lidium stones. It is currently empty. +4000335 - Kiyo's Beek - Kiyo's long and bent beak. It is very hard. +4000336 - Bible of the Corrupt - Richie's book. +4000350 - Wooden Hammer - A wooden hammer that can be obtained by catching a sand mole. +4000351 - Scorpion Sting - The scorpion's poisonous stinger. The poison is located at the tip of its sharp tail. +4000352 - Flaming Desert - A red sand crystal that the Dark Sand Dwarfs carry around. +4000353 - Gelatin - A firm and transparent blob of gelatin. +4000354 - Beaker - A beaker that has been used in science experiments. +4000355 - Homunculus's Sand - Sand that was a party of Homunculus's body. There is a slight scent of chemicals. +4000356 - Flask - A flask that has been used in science experiments. +4000357 - Piece of Steel - A piece of steel that was a part of Iron Mutae. +4000358 - Hardened Piece of Steel - A hardened piece of steel that was a part of the upgraded Iron Muten. +4000359 - Piece of Mithril - A piece of Mithril that was a part of Mithril Mutae. +4000360 - Hardened Piece of Mithril - A hardened piece of Mithril that was a part of the upgraded Mithril Mutae. +4000361 - May Mist - An ingredient that was used to capture Homunculus. +4000362 - Broken Mechanical Heart - A mechanical heart. Although it is currently broken, if fixed, it might be useful. +4000363 - Entry Pass - A pass that is needed to enter the research center. +4000364 - Wires - Coil of electric wires that was a part of Lloyd's body. +4000365 - Plug - An outlet that powers Neo Huroid. +4000366 - Waste Paper - A piece of trash Paper lying here and there in CBD. +4000391 - Boomer Core - The small core of a Boomer, still packs an explosive punch. Handle with caution! +4000399 - Loaded Spring - The neckpiece of a jack-in-the-box. +4000400 - Lock of Doll's Hair - A lock of blonde hair from one of Prendergast's dolls. +4000411 - Blacklist - A list of people that have trespassed to a Personnel-only area captured on the Security Camera. +4000412 - Proof of Training - A proof of training that's earned by defeating the Master Dummy. This signifies that the receiver has trained for a significant amount of time. +4000413 - Someone's Hat - An abandoned hat that used to be worn by someone. It resembles that of the subway workers. No idea why Shade would have this. +4000414 - Bamboo Nameplate - An item with a name engraved on a piece of bamboo. Used to be used as a form of ID. +4000415 - Ice Tear - A drop of tear made out of ice. Beautiful like a jewelry, but it's so cold that not everyone can touch it. +4000416 - Traditional Scholar Hat - A hat adorned by ancient scholars. Old, ragged, and crumpled. +4000417 - trans - trans +4000418 - Useless Mechanical Heart - A useless mechanical heart because it's totally destroyed. +4000419 - Purple Liquid - A purple liquid no one knows what it's for. Probably not for drinking. +4000422 - Christmas Present box (White) - A present box from snowman. +4000423 - Christmas Present box (Red) - A present box from snowman. +4000424 - Christmas Present box (Blue) - A present box from snowman. +4000425 - Christmas Present box (Purple) - A present box from snowman. +4000436 - Moss Snail Shell - A snail shell from Moss Snail. Very tough and solid, as if made with rocks. +4000437 - Black Mushroom Spore - A black mushroom spore from Moss Mushroom. It's quite dark. +4000438 - Tree Trunk - A strange tree trunk that's wrapped all over Lord Tree. +4000439 - Rubble - A piece of rubble from Stone Bug. +4000440 - Tough Leather - A tough, stiff leather from an animal. +4001000 - Arwen's Glass Shoes - A shiny glass shoes for women-only. +4001001 - VIP Mirror - A fancily decorated mirror. +4001002 - The Girl Next Door - A book with a dangerous content. +4001003 - Old Gold Watch - An old gold watch. An article left by Alex's late mother. +4001004 - "Blackbull's" deed to the land - A lost deed to the land for "Blackbull" of Perion. +4001005 - Ancient Scroll - A scroll from long ago that contains powerful, mysterious magic from then. +4001006 - Flaming Feather - A flame with the look of a feather. It never stops burning. +4001007 - Coupon - A coupon earned by taking down a monster. Can be traded with a pass. +4001008 - Pass - A pass earned by trading with a coupon. Can only advance to the next stage with a pass. +4001009 - Stump Eraser - An eraser shaped as a stump. +4001010 - Mushmom Eraser - An eraser shaped as the Mushmom. +4001011 - Lupin Eraser - An eraser shaped as the Lupin. +4001012 - Wraith Eraser - An eraser shaped as the Wraith. +4001013 - Slime Eraser - An eraser shaped as the slime. +4001014 - Octopus Eraser - An eraser shaped as the octopus. +4001015 - Paper Document - A document that contains informations about the studies on return scrolls. Collect these to exchange with return scroll to Mines. +4001016 - The Key - An important key that'll allow access to the huge tresure chest at the Mine Quest. +4001017 - Eye of Fire - A manmade seed of Zakum tree, which is actually sealed up. Used as the sacrifice to the altar. +4001018 - Fire Ore - The ore that contains the power of fire. Used as a material for the sacrifice to the altar. +4001019 - Orbis Rock Scroll - Use it at the magic rock on either the 1st or the 20th floor of Orbis Tower to teleport to one another. +4001020 - Eos Rock Scroll - You can transport to the other Eos Rocks by activating them using this scroll +4001021 - Fire Raccoon Eraser - An eraser that looks like the fire raccoon. +4001022 - Pass of Dimension - A pass earned through defeating the monster. Need the pass to move to the next level. +4001023 - Key of Dimension - A key possessed by Alishar. It can be used to block the entrances that leads to other places. +4001024 - Rubian - A breathtakingly beautiful red jewel. Need to be careful not to be too enamored with its color, though. +4001025 - Longinus Spear - A spear of mythical force. It contains elements that disables the seal of Eregoth. +4001026 - Key - A key made out of pure gold that is used to open a locked door. +4001027 - Medal of Valor - An honorable medal bestowed by the leader of Sharenian to the loyal subjects. +4001028 - Scroll of Wisdom - A scroll that contains various invaluable strategies that can be used in combat. +4001029 - Spoiled Food - A cup full of rotten, aged food in which its putrid smell cannot be ignored. +4001030 - Jr. Necki Drink - 700 Yrs Old - A fine alcoholic drink made out of Jr. Necki. This drink has been matured for 700 years. +4001031 - Sharen III's Pants - Pants worn by Sharen III. +4001032 - Sharen III's Shoes - Shoes worn by Sharen III. +4001033 - Sharen III's Top - Top worn by Sharen III. +4001034 - Sharen III's Crown - A gorgeous crown adorned by Sharen III. +4001035 - Mark of Evil - A mark that signifies that of Ergoth's faithful. Its pure force of evil can be felt just by looking at it. +4001036 - . - . +4001037 - Rusty Key - A rusty key that opens a door to a small, secret room. +4001038 - Stump Eraser - An eraser shaped like a Stump. There are five other erasers featuring different shapes of forms. Try collecting them all! +4001039 - Mushmom Eraser - An eraser shaped like a Mushmom. There are five other erasers featuring different shapes of forms. Try collecting them all! +4001040 - Lupin Eraser - An eraser shaped like a Lupin. There are five other erasers featuring different shapes of forms. Try collecting them all!. +4001041 - Wraith Eraser - An eraser shaped like a Wraith. There are five other erasers featuring different shapes of forms. Try collecting them all! +4001042 - Slime Eraser - An eraser shaped like a Slime. There are five other erasers featuring different shapes of forms. Try collecting them all! +4001043 - Octopus Eraser - An eraser shaped like an Octopus. There are five other erasers featuring different shapes of forms. Try collecting them all!. +4001044 - Statue of Goddess : 1st Piece - The first piece from the Statue of Goddess. +4001045 - Statue of Goddess : 2nd Piece - The second piece from the Statue of Goddess. +4001046 - Statue of Goddess : 3rd Piece - The third piece from the Statue of Goddess. +4001047 - Statue of Goddess : 4th Piece - The fourth piece from the Statue of Goddess. +4001048 - Statue of Goddess : 5th Piece - The fifth piece from the Statue of Goddess. +4001049 - Statue of Goddess : 6th Piece - The sixth piece from the Statue of Goddess. +4001050 - 1st Small Piece - A small piece among the pieces that formed the first piece of the Statue of Goddess. +4001051 - 2nd Small Piece - A small piece among the pieces that formed the second piece of the Statue of Goddess. +4001052 - 5th Small Piece - A small piece among the pieces that formed the fifth piece of the Statue of Goddess. +4001053 - Strange Seed - A strange seed that summons Nependeath. +4001054 - Even Stranger Seed - An even stranger seed that summons the Grass of Life. +4001055 - Grass of Life - A grass of life that is powerful enough to resurrect the Goddess. +4001056 - LP : Operatic Music - An LP that contains mostly operatic scores. +4001057 - LP : Cute Music - An LP that offers cute, charming scores. +4001058 - LP : Scary Music - An LP that offers scary music perfect for horror movies. +4001059 - LP : Fun Music - An LP that offers fun, bouncy music. +4001060 - LP : Sad Music - An LP that offers sad, melancholic music. +4001061 - LP : Cold Music - An LP that offers cold, chilly music. +4001062 - LP : Tight Music - An LP that offers music with tight arrangements. +4001063 - Cloud Piece - A piece of a cloud. +4001064 - Diary : 1st Page - April 16th\nTitle : I have finally started writing a diary.\nThe Owl of Minerva today...\n 1 / 10 page +4001065 - Diary : 2nd Page - April 19th\nTitle : My Statue\nThe humans have been building a tall tower for me...\n 2 / 10 page +4001066 - Diary : 3rd Page - April 23rd\nTitle : On a Lazy Afternoon...\nLately, every morning I have been...\n 3 / 10 page +4001067 - Diary : 4th Page - April 24th\nTitle : Unwelcome Guest\nToday, Papa Pixie came by for a visit wearing this round, weird-looking hat...\n 4 / 10 page +4001068 - Diary : 5th Page - April 27th\nTitle : Busted Statue of Goddess\nToday was really a rough day...\n 5 / 10 page +4001069 - Diary : 6th Page - April 28th\nTitle : Papa Pixie's 2nd Visit\nPapa Pixie, who came by a couple of days ago...\n 6 / 10 page +4001070 - Diary : 7th Page - April 30th\nTitle : A Visit by Human\nToday, the humans paid a visit to the tower...\n 7 / 10 page +4001071 - Diary : 8th Page - May 3rd\nTitle : Lazy Papa Pixie\nToday I felt like watering the garden...\n 8 / 10 page +4001072 - Diary : 9th Page - May 5th\nTitle : Eak's Lecture\nEak was following me around all day...\n 9 / 10 page +4001073 - Diary : 10th Page - May 7th\nTitle : Restoring the Statue\nLooking at the busted statue of goddess, Papa Pixie...\n 10 / 10 page +4001074 - Transparent Item - This item is very transparent. +4001075 - Cornian's Marrow - A solvent that contained the force of Cornian. Emits a mysterious color. +4001076 - Manon's Cry - A horn that contains the cry of Manon. +4001077 - Tough Dragon Skin - A dragon skin that is multiple times tougher than a regular dragon skin. +4001078 - Cornian's Dagger - A dagger that resembles a tide which was used by Green Cornian. Very sharp around the edges, making it a lethal weapon. +4001079 - Busted Dagger - An old, worn dagger by Dark Cornian. Due to long periods of use, this once-sharp blade is now dull +4001080 - Mark of the Squad 1 - A mark carried by the Dragon Squad as the means of identification. +4001081 - Mark of the Squad 2 - A mark carried by the Dragon Squad as the means of identification. +4001082 - Mark of the Squad 3 - A mark carried by the Dragon Squad as the means of identification. +4001083 - Zakum Certificate - A mystic piece of rock dropped by Zakum. The ultimate proof that you have slain Zakum. +4001084 - Papulatus Certificate - A mystic piece of rock dropped by Papulatus. The ultimate proof that you have slain Papulatus. +4001085 - Pianus Certificate - A mystic piece of rock dropped by Pianus. The ultimate proof that you have slain Pianus. +4001086 - Certificate of the Dragon Squad - A certificate that signifies the exclusive membership of the Dragon Squad. +4001087 - Crystal Key : 1st Room of Maze - A crystal key that opens the door to the first room of maze. +4001088 - Crystal Key : 2nd Room of Maze - A crystal key that opens the door to the second room of maze. +4001089 - Crystal Key : 3rd Room of Maze - A crystal key that opens the door to the third room of maze. +4001090 - Crystal Key : 4th Room of Maze - A crystal key that opens the door to the fourth room of maze. +4001091 - Crystal Key : 5th Room of Maze - A crystal key that opens the door to the fifth room of maze. +4001092 - Red Key - A special key that saps the strength of Horntail, the monster protecting the cave door. +4001093 - Blue Key - A special key that saps the strength of Horntail, the monster protecting the cave door. +4001094 - Nine Spirit's Egg - The egg of Nine Spirit that Horntail stole. Need to return the egg to its original nest. +4001095 - Green Primrose Seed - A seed that'll eventually grow into a primrose. +4001096 - Purple Primrose Seed - A seed that'll eventually grow into a primrose. +4001097 - Pink Primrose Seed - A seed that'll eventually grow into a primrose. +4001098 - Brown Primrose Seed - A seed that'll eventually grow into a primrose. +4001099 - Yellow Primrose Seed - A seed that'll eventually grow into a primrose. +4001100 - Blue Primrose Seed - A seed that'll eventually grow into a primrose. +4001101 - Moon Bunny's Rice Cake - A chewy rice cake made by Moon Bunny. +4001102 - Treasure Chest - A chest full of rare, valuable jewelries. +4001103 - Cornian's Marrow - A solvent that contained the force of Cornian. Emits a mysterious color. +4001104 - Manon's Cry - A horn that contains the cry of Manon. +4001105 - Tough Dragon Skin - A dragon skin that is multiple times tougher than a regular dragon skin. +4001106 - Entrance Ticket to the Ludibrium Maze - This ticket is used to enter the Ludibrium Maze. +4001107 - [Storybook]Black book - A book with a black cover. I got a eery and evil energy from it and could not open it. I should take it to Bishop Gritto.\nOnly for : #cBishop# +4001108 - Cold Flame - A small flame that'll slowly build up to be a cold fire. +4001109 - Hardened Glass Bottle - A glass bottle that can hold the lava's marrow. One of the materials used while making the bottle was a diamond; thus, the bottle is multiple times more powerful than a regular glass bottle. +4001110 - [Storybook] Unknown Letter - It's an anonymous letter. It just said #c 'I have what you want. Meet me at the Cloud Balcony'#.\nOnly for : #cNight Lord# +4001111 - [Storybook] Crimson Balrog's Proposal - It's half of the note about the plan to kidnap Tylus that Crimson Balrog had.\nOnly for : #c4th job Warrior# +4001112 - [Storybook] Indecipherable Book - It's a book written with monster language that I can't read. Would Manji know about the book?\nOnly for : #c4th Job Warrior# +4001113 - Phoenix's Egg - An egg of a legendary bird Phoenix. +4001114 - Freezer's Egg - An egg of a legendary bird Freezer. +4001115 - Undine's Cloth - An arcane piece of cloth from Undine, the powerful water spirit. Something may happen if this is combined with the Monster Eraser... +4001116 - Hectagon Necklace - A beautiful piece of necklace featuring the hexagon-shaped jewelry. Something may happen if brought with the Monster Eraser... +4001117 - Old Metal Key - An old metal key used to lock the door of the pirate ship. +4001118 - Piece of the Pirate Map - A ripped piece of the map that featured the routes the pirates took. +4001119 - Pirate Map - It's the map that details the routes that the pirates take. +4001120 - Mark of the Rookie Pirate - A mark that signifies that the owner is in the lower ranks among the pirates. +4001121 - Mark of the Rising Pirate - A mark that signifies that the owner is in the middle ranks among the pirates. +4001122 - Mark of the Veteran Pirate - A mark that signifies that the owner is in the top ranks among the pirates. +4001123 - Transparent Item - A transparent item for summoning Wu Yang. +4001124 - Dr. Do's Marble - It's the marble I received after giving medicinal ingredients to Dr. Do. +4001125 - Bloctopus Blueprint - A blueprint that contains information on constructing a Bloctoplus. +4001126 - Maple Leaf - It's a beautiful Maple Leaf. +4001127 - Fuse - This is used to make firecrackers. +4001128 - Powder keg - This is used to make firecrackers. +4001129 - Maple Coin - A maple mark is engrained on this shiny coin. Exchangeable for an item via Spiegelmann. +4001130 - Romeo's Letter - A letter that Romeo wrote to Juliet, warning of a suspicious plan that is to occur. +4001131 - Juliet's Letter - A letter that Juliet wrote to Romeo, warning of a suspicious plan that is to occur. +4001132 - Suspicious Liquid - A bottle that contains a green liquid that has been treated with a peculiar chemical. +4001133 - Card Key - The card key that allows you to enter Eurek's special laboratory. +4001134 - Alcadno's Experiment Files - Research information on Alcadno's stolen ingredient. +4001135 - Zenumist's Experiment Files - Research information on Zenumist's stolen ingredient. +4001136 - Piece of Scroll - A piece of a scroll. I should collect the pieces and take it to Cassandra before September 19th, 2008. +4001141 - Snowman Branch - A tree branch used to make a Kid Snowman arm. Represents a pure innocense of the kids that made the Snowman. +4001147 - Call of The Nautilus - Nautilus +4001154 - El Nath Dead Mine - El Nath Dead Mine +4001155 - Dragon Forest - Dragon Forest +4001156 - Pass of Dimension - A pass earned by defeating a monster. This pass is required in order to enter the next stage. +4001157 - Star Stamp - A star stamp earned by protecting the candle given by the Administrator. +4001158 - Feather of Goddess - A feather from Minerva the Goddess. +4001159 - Zenumist Marble - A marble taken care of by Romeo. +4001160 - Alcadno Marble - A marble taken care of by Juliet. +4001161 - Concentrated Poison - This poison is too strong for anyone to handle. +4001162 - Diluted Poison - This poison has been diluted with water. It can now be handled. +4001163 - Purple Stone of Magic - It's a magic stone that's purple.\nIt can probably trigger a reaction from something... +4001164 - Golem's Marble - It's the essence of Poison Golem. It will have to be cleansed in clear spring water. +4001165 - Sunshine - Maple Tree loves this sunshine. Give it an ample amount of sunshine, and the tree will grow. +4001166 - Snow Silk - A ball of silk that's cold like snow, as if it'll melt away. +4001167 - Piece of Birthday Cake - A piece of the MapleStory's 4 Year Anniversary cake. You can complete the cake by opening the cake box and placing 4 cake pieces on the plate. +4001168 - Golden Maple Leaf - A Golden Maple Leaf that fell from a Maple Tree specially for MapleStory's 4 Year Anniversary. Take it to the keeper of the maple tree and receive a special present. +4001169 - Monster Marble - This marble contains a poisoned monster. The monster is being purified within it +4002000 - Snail Stamp - A stamp with a snail drawn in. +4002001 - Blue Snail Stamp - A stamp with a blue snail drawn in. +4002002 - Stump Stamp - A stamp with a stump drawn in. +4002003 - Slime Stamp - A stamp with a slime drawn in. +4003000 - Screw - A small screw made out of steel. Used as a material to make weapons or armors. +4003001 - Processed Wood - A processed wood made out of tree branches. Used as a material to make weapons or armors. +4003002 - Piece of Ice - Water frozen through the power of magic. Doesn't melt easily. +4003003 - Fairy Wing - A piece of wing from a fairy. It's soft and brittle, so it should be handled with care. +4003004 - Stiff Feather - A feather that's stiff and rough. Used to make arrows. +4003005 - Soft Feather - A soft and light feather. Used to make arrows. +4004000 - Power Crystal Ore - An ore of a crystal that possesses power. +4004001 - Wisdom Crystal Ore - An ore of a crystal that possesses wisdom. +4004002 - DEX Crystal Ore - An ore of a crystal that possesses dexterity. +4004003 - LUK Crystal Ore - An ore of a crystal that possesses luck. +4004004 - Dark Crystal Ore - An ore of a crystal that possesses dark power. An incredible power lay asleep in it. +4005000 - Power Crystal - A mysterious crystal with the source of power in it. +4005001 - Wisdom Crystal - A mysterious crystal with the source of wisdom in it. +4005002 - DEX Crystal - A mysterious crystal with the source of dexterity in it. +4005003 - LUK Crystal - A mysterious crystal with the source of luck in it. +4005004 - Dark Crystal - A mysterious crystal with the source of dark power in it. An incredible power lay asleep in it. +4006000 - The Magic Rock - A mythical rock with the power of magic in it. Used with high-leveled skills. +4006001 - The Summoning Rock - A mythical rock with the power of summoning in it. Used with high-leveled skills. +4010000 - Bronze Ore - The ore of a light and weak bronze. +4010001 - Steel Ore - The ore of a tough steel +4010002 - Mithril Ore - The ore of a light, solid Mithril. +4010003 - Adamantium Ore - The ore of a heavy, strong Adamantium +4010004 - Silver Ore - The ore of a shiny silver +4010005 - Orihalcon Ore - An ore of a very rare mineral, Orihalcon. +4010006 - Gold Ore - The ore of gold, a very rare mineral +4010007 - Lidium Ore - Lidium Ore that in formed under the sand. +4011000 - Bronze Plate - A light, weak, refined bronze. +4011001 - Steel Plate - A tough, refined steel. +4011002 - Mithril Plate - A solid, light, refined Mithril. +4011003 - Adamantium Plate - A heavy, strong, refined Adamantium. +4011004 - Silver Plate - A shiny, refined silver. +4011005 - Orihalcon Plate - A refined Orihalcon, a very rare mineral. +4011006 - Gold Plate - A very rare, refined gold. +4011007 - Moon Rock - A glittering mineral that possesses the mysterious power of the moon. +4011008 - Lidium - Hard yet transparent processed Lidium. +4020000 - Garnet Ore - The ore of a red jewel. +4020001 - Amethyst Ore - The ore of a purple jewel. +4020002 - AquaMarine Ore - The ore of a blue jewel. +4020003 - Emerald Ore - The ore of a green jewel. +4020004 - Opal Ore - The ore of a jewel with many colors. +4020005 - Sapphire Ore - The ore of a blue, transparent jewel. +4020006 - Topaz Ore - The ore of a yellow jewel +4020007 - Diamond Ore - The ore of a jewel that's transparent +4020008 - Black Crystal Ore - An ore of a crystal that has dark powers stored in it +4021000 - Garnet - A red jewel. +4021001 - Amethyst - A purple jewel. +4021002 - AquaMarine - A blue jewel. +4021003 - Emerald - A green jewel. +4021004 - Opal - A jewel with many colors. +4021005 - Sapphire - A blue, transparent jewel. +4021006 - Topaz - A yellow jewel. +4021007 - Diamond - A transparent jewel. +4021008 - Black Crystal - A very rare crystal with a dark power that lay asleep in it. +4021009 - Star Rock - A glittering jewel that possesses a mysterious power of a star. +4030000 - Omok Piece : Slime - A slime-shaped Omok piece to play Omok. +4030001 - Omok Piece : Mushroom - A mushroom-shaped Omok piece to play Omok. +4030002 - Tetris Piece - Funny-looking piece. +4030003 - Tetris Piece - Funny-looking piece +4030004 - Tetris Piece - Funny-looking piece +4030005 - Tetris Piece - Funny-looking piece +4030006 - Tetris Piece - Funny-looking piece +4030007 - Tetris Piece - Funny-looking piece +4030008 - Tetris Piece - Funny-looking piece +4030009 - Omok Table - A wooden table that allows you to play Omok. +4030010 - Omok Piece : Octopus - An octopus-shaped Omok piece to play Omok. +4030011 - Omok Piece : Pig - A pig-shaped Omok piece to play Omok. +4030012 - Monster Card - The monster cards needed for the game of Match Cards. Need to have plenty of cards. +4030013 - Omok Piece : Bloctopus - A Bloctopus-shaped Omok piece to play Omok. +4030014 - Omok Piece : Pink Teddy - A Pink Teddy-shaped Omok piece to play Omok. +4030015 - Omok Piece : Panda Teddy - A Panda Teddy-shaped Omok piece to play Omok. +4030016 - Omok Piece : Trixter - A Trixter-shaped Omok piece to play Omok. +4031000 - Maria's Letter - A letter by Maria. Needs to be delivered to Lucas of Amherst. +4031001 - Lucas' Letter - A letter by Lucas. Needs to be sent to Mushroom Town's Maria. +4031002 - Lucas's Gold Watch - Lucas's gold watch made out of pure gold. +4031003 - Sera's Mirror - Sera's mirror. Has lots of decorations on it. +4031004 - Sparkling Rock - A sparking rock that shines by itself. +4031005 - Arcon's Blood - A bottle full of Arcon's blood +4031006 - Weird Medicine - No telling the power of this mysterious, weird medicine +4031007 - Old Gold Watch - An old gold watch. An article left by Alex's late mother. +4031008 - Dances with Balrog's Letter - A letter from 'Dances with Balrog' of Perion. Needs to be shown to the 'Warrior Job Instructor' at somewhere around the highland. +4031009 - Grendel the Really Old's Letter - A letter from Grendel the Really Old of Ellinia. Needs to be shown to the "Test Instructor For Magicians" at somewhere around the forrest. +4031010 - Athena Pierce's Letter - A letter from Athena Pierce of Henesys. Needs to be shown to the "Test Instructor For Bowmen" at somewhere around the Dungeon. +4031011 - Dark Lord's Letter - A letter from "Dark Lord" of Kerning City. Needs to be shown to the "Test Instructor For Thieves" at somewhere around the city. +4031012 - The Proof of a Hero - A proof from the instructor that you have passed the test for the 2nd job advancement. Once possessed, you'll be recognized as a hero. +4031013 - Dark Marble - A mysterious marble that possesses the dark, ugly nature of the monster. +4031014 - Rina's Unagi Special - A special Unagi consisting of the tails of Curse Eye...and pig's head. Needs to be delivered to Ronnie. +4031015 - Fresh Milk - A fresh milk from the fairies. Needs to be delivered to Ronnie. +4031016 - Secret Book - No one knows what's in this book. +4031017 - Magic Box - A box locked away with a powerful magical lock. Apparently there are jewels inside. +4031018 - Treasure Scroll - A map that shows where the jewels are hidden away. +4031019 - Scroll of Secrets - A mystical scroll written in a lost ancient language. +4031020 - Pink Anthurium - A pile of flowers that give off pink, mystical colors.. +4031021 - Orange Anthurium - A pile of flowers that give off orange, mystical colors. +4031022 - Blue Anthurium - A pile of flowers that give off blue, mystical colors. +4031023 - Yellow Anthurium - A pile of flowers that give off yellow, mystical colors. +4031024 - Purple Viola - A purple flower with a huge flower bud. +4031025 - Pink Viola - A pink flower with a huge flower bud. +4031026 - Blue Viola - A blue flower with a huge flower bud. +4031027 - Orange Viola - An orange flower with a huge flower bud. +4031028 - White Viola - A white flower with a huge flower bud. +4031029 - Single-Rooted Ginseng - A single-rooted Ginseng that appears to be aged. +4031030 - Double-Rooted Ginseng - A double-rooted Ginseng that appears to be aged. +4031031 - Triple-Rooted Ginseng - A triple-rooted Ginseng that appears to be aged. +4031032 - Double-Rooted Red Ginseng - A double-rooted Red Ginseng. +4031033 - Triple-Rooted Red Ginseng - A triple-rooted Red Ginseng. +4031034 - Life Scroll - A scroll with unrecognizable ancient characters on it. +4031035 - Bartos' Letter - A letter from Bartos the instructor. Needs to be delivered to Frod. +4031036 - Ticket to Construction Site B1 - The ticket that allows you to enter Construction Site B1 of Kerning City Subway. +4031037 - Ticket to Construction Site B2 - The ticket that allows you to enter Construction Site B2 of Kerning City Subway. +4031038 - Ticket to Construction Site B3 - The ticket that allows you to enter Construction Site B3 of Kerning City Subway. +4031039 - Shumi's Coin - The coin that Shumi lost. +4031040 - Shumi's Roll of Cash - The roll of cash that Shumi lost. +4031041 - Shumi's Sack of Cash - The sack of money that Shumi lost. +4031042 - Black Feather - A feather burning in black. So light, it feels like it's going to fly away. +4031043 - Red Cape - A red cape for women-only. Looks like it's going to be very warm. +4031044 - Ticket to Orbis (Basic) - A basic ticket needed to get on the ship that heads to Orbis Station of Ossyria Continent. +4031045 - Ticket to Orbis (Regular) - A regular ticket needed to get on the ship that heads to Orbis Station of Ossyria Continent. +4031046 - Ticket to Ellinia (Basic) - A basic ticket needed to get on the ship that heads to Ellinia of Victoria Island. +4031047 - Ticket to Ellinia (Regular) - A regular ticket needed to get on the ship that heads to Ellinia of Victoria Island. +4031048 - Blank Scroll - A scroll written in unrecognizable letters. Get this to Chef of Lith Harbor to trade with a prize. +4031049 - A Piece of an Ancient Scroll - An old piece of paper that seems to be part of an ancient document. +4031050 - Cracked Black Crystal - A black crystal that seems like the one Spiruna lost. It's broken, probably by the monsters stepping on it. +4031051 - Fairy Dust - A collection of dust from the fairies flapping their wings. It has a mysterious light to it. +4031052 - Hella's Pendant - A pendant Hella has been keeping since childhood. Needs to deliver this to Jade. +4031053 - Old Ring - An old ring found from a tomb in the deep valley of snowfield. Maybe Alcaster may have seen this before... +4031054 - Old Piece of Map - An old piece of paper that seems to be a part of an ancient map. +4031055 - Memory Powder - A very fine powder that's hard to feel. Has the power to return the memory of a person. +4031056 - The Book of Ancient - A book that contains incredible spells that are banned. A regular person can't even open the book; it's that powerful... +4031057 - The Necklace of Strength - A necklace earned by deservingly defeating the "other self" at the Other Dimension with power. +4031058 - The Necklace of Wisdom - A necklace earned by convincingly answering all the questions at the Holy Land with poise and full of wisdom. +4031059 - Black Charm - A charm earned by defeating the "other self" at the world of new dimension. +4031060 - Nick's Ring - The ring of Nick, the long-lost son of Scadur. +4031061 - Piece of Fire Ore - A piece of an ore that has the power of fire in it. Used as a material to make the sacrifice for the Zakum altar. +4031062 - The Breath of Lava - Contains the scorching heat of the lava needed to refine a sacrifice. +4031063 - Torr's Horn - A little horn that Torr lost. +4031064 - Orange Marble - Orange marble that Boss kitty has stolen from Sakura. +4031065 - Excellent Luck Fortune Cookie Message - Fortune cookie message, which tells you excellent luck +4031066 - Great Luck Fortune Cookie Message - Fortune cookie message, which tells you great luck +4031067 - Good Luck Fortune Message - Fortune cookie message, which tells you good luck +4031068 - Ordinary Luck Fortune Cookie Message - Fortune cookie message, which tells you ordinary luck +4031069 - Bad Luck Fortune Cookie Message - Fortune cookie message, which tells you bad luck +4031070 - Terrible Luck Fortune Cookie Message - Fortune cookie message, which tells you terrible luck +4031071 - Worst Luck Fortune Cookie Message - Fortune cookie message, which tells you worst luck +4031072 - A Key of the Magic Box - An item, which enables you to open the magic box. You should bring this to Geny +4031073 - Ticket to Ludibrium (Basic) - A basic ticket to Ludibrium in Ossyria +4031074 - Ticket to Ludibrium (Regular) - A regular ticket to Ludibrium in Ossyria +4031075 - New Year's Card from Blackbull - A New Year's Card from Blackbull of Perion. This needs to be delivered to Grendel the Really Old of Ellinia. +4031076 - New Year's Card from Grendel the Really Old - A New Year's Card from Grendel the Really Old of Ellinia. This needs to be delivered to Helena of Henesys. +4031077 - New Year's Card from Helena - A New Year's Card from Helena of Henesys. This needs to be delivered to Dark Lord of Kerning City. +4031078 - Manager Karl's Camera - A camera borrowed from Manager Karl. This is used to take pictures of the 10 workers at Eos Tower. +4031079 - Photo of Roly-Poly 1 - A picture of a roly-poly at Eos Tower through Manager Karl's camera. Need to look for 9 more. +4031080 - Photo of Roly-Poly 2 - 2 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 8 more. +4031081 - Photo of Roly-Poly 3 - 3 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 7 more. +4031082 - Photo of Roly-Poly 4 - 4 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 6 more. +4031083 - Photo of Roly-Poly 5 - 5 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 5 more. +4031084 - Photo of Roly-Poly 6 - 6 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 4 more. +4031085 - Photo of Roly-Poly 7 - 7 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 3 more. +4031086 - Photo of Roly-Poly 8 - 8 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 2 more. +4031087 - Photo of Roly-Poly 9 - 9 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Need to look for 1 more. +4031088 - Photo of Roly-Poly 10 - 10 pictures of roly-poly workers at Eos Tower through Manager Karl's camera. Now I got them all! +4031089 - Screwdriver - A screwdriver that Roly-Poly 6 lost. Used to tighten screws. +4031090 - Piece of Memory - Korin's pieces of lost memory earned through defeating the aliens. +4031091 - Korin's Memory - Korin's pieces of lost memory put together in one. +4031092 - Machine Parts - Parts lost in the toy factory. Have to gather up 10 of them and get them to Cheng the assistant. +4031093 - Tasty Walnut - You can definitely smell this from afar. Very much stuffed inside, which would be perfect for Delv the Toy Soldier. +4031094 - Pendulum - An important part of the clock for the Ludibrium Clocktower. Need to get this to Mark the Toy Soldier. +4031095 - Box of Parts #1 - A box of robotic parts 1 that Dr. Kim of Omega Sector requested. +4031096 - Box of Parts #2 - A box of robotic parts 2 that Dr. Kim of Omega Sector requested. +4031097 - Box of Parts #3 - A box of robotic parts 3 that Dr. Kim of Omega Sector requested. +4031098 - All-purpose Clock Spring - A spring that is needed to make the grandpa clock run. +4031099 - Sealed Letter - Appears to be a very old letter from the outer space. Sealed in an old, raggedy envelope with the candle wax used as a stamp. +4031100 - Blueprint Machine - A machine with the robot's blueprint on it. Can't look at it unless you know how to run it. +4031101 - Laser Gun - A laser gun used by Hoony to defeat the aliens. +4031102 - Note - A note full of descriptions on the history of the Grays and their past actions. +4031103 - Barnard Gray's Cell - The DNA of an alien. It may contain lots of informatin regarding them. +4031104 - Zeta Gray's Cell - The DNA of an alien. It may contain lots of informatin regarding them. +4031105 - Ultra Gray's Cell - The DNA of an alien. It may contain lots of informatin regarding them. +4031106 - Chief Gray's Cell - The DNA of an alien. It may contain lots of informatin regarding them. +4031107 - Dogon's Report - A report that contains valuable information regarding the hidden headquarters of an alien follower. +4031108 - Super Alarm Clock - An alarm clock with many functions that'll surely wake up the Pink Mesoranger. +4031109 - White Chocolate - An ingredient used to make a chocolate. Melt it, mix it with water, then mold it accordingly to make a delicious-looking chocolate. +4031110 - Dark Chocolate - An ingredient used to make a chocolate. Melt it, mix it with water, then mold it accordingly to make a delicious-looking chocolate. +4031111 - Heart Box - A heart-shaped box with no decoration whatsoever. Used to carry the chocolate. +4031112 - Gold Ribbon - Used to decorate the chocolate. +4031113 - Basket - A basket with a handle. Decorate it with ribbons and chocolate, and this may come out as something nice. +4031114 - Cover Material - All the materials used to decorate the chocolate basket are in here. It looks like ribbons, marbles, and fabrics in it. +4031115 - Special Battery - A special battery used to move Master Robo. +4031116 - Secret Document - A secret document that contains classified information on the Omega Sector. A security device is attached to it. +4031117 - Meteorite Sample - A sample of the meteorite that was recently discovered at the Coolan Field. +4031118 - Deciphered Memory Card - Rombot 's memory card that Porter deciphered. +4031119 - Black Toy Heena - A black Toy Heena; no way to find out how it originally looked like. +4031120 - Toy Heena - A toy that resembles someone. +4031121 - Clam Shell - A light clam shell. +4031122 - Sugar - Used to make candies. Melt it to turn it into syrup, then sprinkle them onto the fruits to make tasty fruit candies. +4031123 - Pineapple - Cut in triangles. Used to make tasty fruit candies. +4031124 - Strawberry - A very ripe, red strawberry. Used to make tasty fruit candies. +4031125 - Wooden Skewer - A long wooden skewer for the fruits. +4031126 - Porter's Letter - A letter from Porter of the Omega Sector. I need to deliver this to Kay the Engineer, who should be at the Omega Sector Silo, on time. +4031127 - Pilot's Letter - A letter recovered from a broken transport in what appears to be written by a missing pilot. Need to get this to Kay the Engineer, who should be at the Omega Sector Silo. +4031128 - Weaver's Letter - A letter from Weaver the assistant. Need to get this to Nerr. +4031129 - Savory Cheese - As soft as it gets. I can make a soup out of this. +4031130 - Maintenance Manual - A maintenance manual with the blueprint of the machine at the Toy Factory. Mac the Mechanic had originally lost it. +4031131 - Blue Carp - A blue koynobori used on children's day. +4031132 - Red Carp - A red koynobori used on children's day. +4031133 - Green Baby Carp - A green koynobori used on children's day. +4031134 - VIP Ticket to Florina Beach - It is needed to go to Florina Beach. If in possession of the ticket, you can simply head to Florina Beach for free FOR LIFE. +4031135 - Dull Crystal - A crystal without the sparkling light, because its powers have been used up while inside the body of the Drum Bunny. +4031136 - Gray's Document - A document of a Gray in what appears to be an alien writing. Hard to decipher. +4031137 - Box of Presents - A box of presents for the kids on children's day. +4031138 - Money Sack - A money sack for the kids on children's day. +4031139 - Mariwakawa's Bag - A bag of Mariwakawa +4031140 - Dull Crystal - A crystal without the sparkling light, because its powers have been used up while inside the body of the Drum Bunny. +4031141 - Parts #1 - A box full of robotic parts no. 1 that Dr. Kim of Omega Sector lost. +4031142 - Parts #2 - A box full of robotic parts no. 2 that Dr. Kim of Omega Sector lost. +4031143 - Parts #3 - A box full of robotic parts no. 3 that Dr. Kim of Omega Sector lost. +4031144 - Hero's Gladius - A fully reawaken Gladius that a hero has used. +4031145 - Pendulum - An important part of the clock for the Ludibrium Clocktower. Need to get this to Mark the Toy Soldier. +4031146 - Animal Fossil - A fossil of an animal from thousands of years ago. +4031147 - Plant Fossil - A fossil of a leaf of a plant from thousands and thousands of years ago. +4031148 - Winston's Recommendation - A letter of recommendation from Winston the Archeologist. Need to deliver this to Dr. Betty of Ellinia. +4031149 - Fossil Box - A wooden box that contains fossils. On the cover reads 'WARNING: Handle with CARE.' +4031150 - Plant Sample - A plant that's been dug out and kept with everything in tact, +4031151 - Stuffed Drake Skull - Drake Skull kept in its original state through chemicals. +4031152 - Fossil Report - Dr. Betty's final report on the studies of fossils. +4031153 - Stump's Teardrop - Very rarely found on Dark Axe Stump's. A hardened liquid from Stump. +4031154 - Estelle's Special Sauce - A special sauce from Estelle of Ellinia. Its ingredients and formulas are all kept secret. +4031155 - Broken Mirror Glass - A piece of a shattered mirror. +4031156 - Sparkling Glass Marble - A huge glass marble that is transparent and radiates in multiple colors. At the corner of it says "To My Friend Utah." +4031157 - Maple History Book I - An important history book that contains everything about the history of MapleStory. +4031158 - Maple History Book II - Part II of the Maple History Books trilogy contains mostly of the growth of Maple. This book is also an important reference for the future of MapleStory. +4031159 - Maple History Book III - Part III of the Maple History Books trilogy contains the history behind the emergence of evil monsters in the MapleStory. +4031160 - Medal of Honor - Got all 3 Maple History Books and gave it to Tigun. According to him, this is a medal personally awarded by the King of Ludibrium. +4031161 - Rusty Screw - A rusty screw from an old, unusable box that has been broken down. Can this be recycled? +4031162 - Old Wooden Board - An old wooden board from an old, unusable box that has been broken down. Can this be recycled? +4031163 - Flying Medicine - A fairy medicine made with a collection of rare, hard-to-find ingredients. There's a legend that anyone that takes pill can fly, but it's only been passed around from generations to generations. +4031164 - Alligator Skin Pouch - A pouch made out of alligator skin. Looks sturdy enough to hold on to most anything. +4031165 - Witchgrass Leaf - Leaves of the Witchgrass growing in the swamps. Laiden with incredible magical powers, it is used as a primary source for herbal medicine. +4031166 - Olaf's Recommendation - A letter of recommendation written by Olaf the job agent. +4031167 - Blue Present Box for Training - A blue present box that the GM hung on the monster for the event "Face the Hotness." +4031168 - Yellow Present Box for Training - A yellow present box that the GM hung on the monster for the event "Face the Hotness." +4031169 - Green Present Box for Training - A green present box that the GM hung on the monster for the event "Face the Hotness." +4031170 - Tachion - A particle that is the source of power for the time sphere; it is used to trigger the force in relations to time. +4031171 - Mysterious Powder - A mysterious powder that glows in gold. +4031172 - Ludibrium Medal - A medal earned from the gatekeepeer, and is apparently needed to enter a certain door. The word Ludibrium is engraved at the center of this gold medal. +4031173 - Ayan's Letter - A letter from Ayan. Must be delievered to Bruce of Henesys. +4031174 - Ayan's Toy Sword - A toy sword that Ayan played with growing up. +4031175 - Tachion - A particle that is the source of power for the time sphere; a new bundle of energy can be formed through this. +4031176 - Piece of Cracked Dimension A - This must be what Flo mentioned as "a piece of cracked dimension." +4031177 - Piece of Cracked Dimension B - This must be what Flo mentioned as "a piece of cracked dimension." +4031178 - Piece of Cracked Dimension C - This must be what Flo mentioned as "a piece of cracked dimension." +4031179 - Piece of Cracked Dimension - A piece of the cracked dimension that Papulatus used to enter this world. Use this piece to seal up the cracks of dimension. +4031180 - Beginner's Shopping Guide - A Shopping guide for beginners that Yoona asked to bring for the quiz. +4031181 - Rice Powder - A sack of well-grinded rice powder. Add this with honey and leaf for something delicious! +4031182 - Honey - A beehive full of sweet honey. +4031183 - Leaf - A strong-scented leaf. Put this in when making the Song Pyun for optimal results +4031184 - Glutinous Rice Powder - A sack of well-grinded Glutinous Rice Powder. Add this with honey and oil for nice Yugwa. +4031185 - Pot of Honey - A pot full of sweet honey +4031186 - Bottle of Oil - A bottle full of sesami oil. +4031187 - Gold Song Pyun - How about a nice Gold Song Pyun for the elderly, like Chief Stan of Victoria? +4031188 - Han Gwa Set - How about a nice Han Gwa Set for the elderly, like Manager Karl of Ludibrium? +4031189 - Aurora Marble - It's an aurora marble from Buffy. Unlike other marbles, this one seems to emit a special force. +4031190 - Horn Flute - A horn flute that emits a soothing sound that spreads all over the area. It is decorated with a feather and has a leather handle on it. +4031191 - Golden Bell - A small gold bell that is needed to make a new necklace for Nero.\n#cUsed as a : Quest Item# +4031192 - Red Ribbon - A red ribbon needed to make a new necklace for Nero.\n#cUsed as a : Quest Item# +4031193 - Soul Collector - Ghosthunter Bob uses this to collect souls. There must be something incredible inside, since it has DANGER written on it. +4031194 - Nella's Korean Costume - A Korean costume Nella will wear for Korean Thanksgiving. +4031195 - Aurora Marble - An aurora marble that was held by Buffy. Probably the one that Mason mentioned before. +4031196 - Dark Tachion - Tachion, the source of power for the time sphere, is emitting a force of evil. Destroy this by throwing it in the lava at the deepest part of El Nath. +4031197 - Tears of Kelvelos - A bottle that contains the tears of a legendary monster, Kelvelos +4031198 - Empty Potion Bottle - An empty bottle that used to contain spell ingredients. +4031199 - Lunar Wristband - A wristband made of Lunar Pixie Moonpiece and Star Pixie Starpiece. +4031200 - Sap of Nependeath - A squeezed-out sap of Nependeath and Dark Nependeath seeds. +4031201 - Sweet Syrup - A sugar-sweet syrup made by Estelle of Ellinia. +4031202 - Nependeath Juice - A nutritious, tasty juice made by Elma the Housekeeper. +4031203 - Halloween Candies - Halloween candies acquired from the monsters. +4031204 - Lisa's Recommendation - A recommendation letter by Lisa. Needs to be delivered to Scadur of El Nath for approval. +4031205 - Lisa's Special Medicine - A special medicine made by Lisa. Very sweet-scented, it drives up the appetite of everyone near it. +4031206 - Ripped Travel Ticket 1 - An unknown travel ticket ripped in half. +4031207 - Ripped Travel Ticket 2 - The other half of a ripped traveling ticket. +4031208 - Empty Bottle - An empty bottle. +4031209 - SOS Letter - A letter requesting rescue inside a glass bottle. Since the bottle contains dry sand, it looks like someone is lost in the middle of an island where there is full of sand. +4031210 - Robinson's ID - The pilot Robinson's ID.\n\n#cName : Robinson\nTeam : Transport - Pilot\nID number : XXX-XXXXX# +4031211 - Lama's Sign - A piece of paper that has Lama's Sign on. +4031212 - Cold Steam - A cold steam from the mouth of Cold Eye. +4031213 - Wild Kargo's Spirit Rock - A purple rock which contains a sealed-up soul of Wild Kargo. +4031214 - Tauromacis's Spirit Rock - A green rock which contains a sealed-up soul of Tauromacis. +4031215 - Taurospear's Spirit Rock - A blue rock which contains a sealed-up soul of Taurospear. +4031216 - Jr. Balrog's Spirit Rock - A dark rock which contains a sealed-up soul of Jr. Balrog. +4031217 - Golden Key - A golden key, which emits a mysterious white light. +4031218 - The Contract of Darkness - The source of power for all zombies. A contract written on a raggedy old paper, it details the contract with the dark force as well as the dates. +4031219 - Scadur's Bow - Icadur made this bow for his brother Scadur. Light, solid, and very powerful. +4031220 - Mythical Flour - A mythical flour that Ace of Hearts uses to make cookies. +4031221 - Omega Sector Warp Capsule - A warp capsule only available for the members of the Omega Sector. Unlike other warp capsules, this one allows one to teleport directly to the Omega Sector, regardless of which island or continent the person is on. +4031222 - Steel Hoe - A rock-solid hoe that is used for farming. Since the blade is made out of steel, it should last a while. +4031223 - Box of Jewelry - A box full of expensive jewelry and other treasures that emerged from Hongbu's gourd. +4031224 - Warrant of Attachment - A warrant of attachment that emerged from Nolbu's gourd; \nAll of Nolbu's possessions will be seized and auctioned off by OO/OO/OO. +4031225 - Magic Seed - A small, white seed that Swallow brought from across the river. Plant it somewhere safe, and it'll grow. +4031226 - Gwin's Bag - A heavy bag that is full of mysterious items. Looking into the corner of the back of the bag, the name GWIN is written on it. +4031227 - Centipede Red Marble - A red marble previously possessed by the Centipede. A weird vibe can be felt on it. +4031229 - Sack of Rice - A sack full of rice. +4031230 - New Pot - A glossy new pot. +4031231 - Artemisia - This plant can be seen everywhere around spring time. +4031232 - Goblin Cap - A black cap worn by the Goblin when pulling pranks on someone. Legend has it that when this cap is worn, the person will become invisible. +4031233 - Goblin Bat - A wooden bat with lots of horns attached to its surface. Goblins carry these around all the time. Legend has it that this bat will make all the wishes come true. +4031234 - Goblin Cape - A cape made out of tiger skin. Very furry and warm, legend has it that anyone that dons this cape will become courageous. +4031235 - Storybook on Hongbu and Nolbu - The storybook that features a Korean Folk Tale on Hongbu and Nolbu. +4031236 - Storybook on Kong Ji and Pat Ji - The storybook that features a Korean Folk Tale on Kong Ji and Pat Ji. +4031237 - Storybook on Brotherly Love - The storybook that features the Korean Folk Tale 'Brothery Love'. +4031238 - Storybook on the Goblin Story - The storybook that features the Korean Folk Tale 'The Goblin Story'. +4031239 - The Letter to Camila - A letter to Camila from a pen pal far far away. +4031240 - Camila's Reply - A letter Camila wrote for her pen pal far far away, Kong Jwi. +4031241 - Swallow's Lost Seed - A seed that Swallow, who is very prone to losing things, lost in the middle of the mountain. +4031242 - Dolphin Taxi Coupon - This coupon allows the owner to use the Dolphin Taxi available in Aquarium. Ride the taxi all the way to the Sharp Unknown. +4031243 - Ripped Travel Ticket 1 - An unknown travel ticket ripped in half. +4031244 - Hongbu's Seed - A seed given by Hongbu to be planted on top of the roof of his house. I better drop it on the roof. +4031245 - Nolbu's Seed - A seed given by Nolbu to be planted on top of the roof of his house. I better drop it on the roof. +4031246 - Sack of Rice - A sack full of rice, ready to be cooked. +4031247 - Sack of Rice - A sack full of rice, ready to be cooked. +4031248 - Sack of Rice - A sack full of rice, ready to be cooked. +4031249 - Red Envelope - An open envelope colored in warm red. +4031251 - Sea Dust - A small dust that floats around the sea. +4031252 - Wripped Note - An old, ragged notebook that's been wripped here and there. Something must have been written on it, but there's no way to find out what's in it. +4031253 - Pianus's Scream - A metal can that contains the scream of a huge creature inside the cave in the ocean. +4031254 - Broken Flashlight - Someone must have used this flashlight, and busted the light bulb. +4031255 - Broken Camera - A totally busted camera. The lens is cracked, and the film is nowhere to be found. +4031256 - Cold Tear - Bone Fish's tear, which is made out of ice. +4031257 - Empty Bottle of Perfume - An empty bottle of perfume. +4031258 - Chrysanthemum - A beautiful yellow flower that can be found near Korean Folk Town. +4031259 - Seacle's DNA Sample - A slide that contains the DNA sample of Seacle. +4031260 - Cico's DNA Sample - A slide that contains the DNA sample of Cico. +4031261 - Pin Boom's DNA Sample - A slide that contains the DNA sample of Pin Boom. +4031262 - Flower Fish's DNA Sample - A slide that contains the DNA sample of Flower Fish. +4031263 - Masked Fish's DNA Sample - A slide that contains the DNA sample of Masked Fish. +4031264 - Bubble Fish's DNA Sample - A slide that contains the DNA sample of Bubble Fish. +4031265 - Pooper's DNA Sample - A slide that contains the DNA sample of Pooper. +4031266 - Sparker's DNA Sample - A slide that contains the DNA sample of Sparker. +4031267 - Freezer's DNA Sample - A slide that contains the DNA sample of Freezer. +4031268 - Tough Rope - A tightly wound rope. +4031269 - Slippery Oil - A container full of slippery oil. +4031270 - Storybook on The Kids That Became the Sun and the Moon - The storybook that features the Korean Folk Tale 'The Kids that Became the Sun and the Moon'. +4031271 - Empty Bottle of Perfume - An empty bottle of perfume. +4031272 - Empty Bottle of Perfume - An empty bottle of perfume. +4031273 - Red Ball of Yarn - A red ball of yarn that Fanzy the mysterious cat lost. +4031274 - Piece of Paper A - A piece of paper hidden by Kenta the Animal Trainer of the Aquarium Zoo. +4031275 - Piece of Paper B - A piece of paper hidden by Kenta the Animal Trainer of the Aquarium Zoo. +4031276 - Piece of Paper C - A piece of paper hidden by Kenta the Animal Trainer of the Aquarium Zoo. +4031277 - Piece of Paper D - A piece of paper hidden by Kenta the Animal Trainer of the Aquarium Zoo. +4031278 - Piece of Paper E - A piece of paper hidden by Kenta the Animal Trainer of the Aquarium Zoo. +4031279 - State-held Rice - A sack full of state-held rice. These sacks feature stamps of approval from the government. +4031280 - Storybook on Shim Chung - The storybook that features the Korean Folk Tale on Shim Chung. +4031281 - Muse's Dish - A tasty dish of Shark's Fin and Squid Ink Pasta tightly packaged to make it easier to carry. +4031282 - Evil Energy - An energy that control those who are weak. +4031283 - Easter Basket - A well-decorated basket full of Easter eggs. Disappears after the event is over. +4031284 - Golden Egg - A freshly boiled egg colored with real gold. +4031285 - Treasure Chest - A treasure chest that Vikin gave me to deliver to Erikson. +4031286 - Treasure Chest - A treasure chest that Vikin gave me to deliver to Ian. +4031288 - Recommendation Letter - A recommendation letter written by Mr. Yang +4031289 - Shanghai Permit - A permit issued to individuals that are capable of protecting Shanghai. +4031290 - Tripod - An important item to prevent cameras from shaking while taking pictures. +4031291 - The Perfect Box - The perfect box made by a legendary figure. There's nothing with this box, at all. +4031292 - Hero's Drum - A drum that only the legendary heroes are permitted to play with. +4031293 - Tears of Eternity - A legendary tale in which a fairy, feeling despondent over not seeing, shed a tear or two. +4031294 - Dog Food - (no description) +4031295 - Yan Zi's Letter - A letter written by the superstar Yan Zi for her dear friend. +4031296 - New Cellphone - A brand-new cellphone that boasts lots of new features. A must-have for everyone. It is written as Made In Korea on the back. +4031297 - Party Invitation - A formal invitation to the Big Gala for the 3rd Anniversary of MapleStory. +4031298 - Storybook on the Story of Axes - The storybook that features the Korean Folk Tale 'The Story of Axes'. +4031299 - Stamp for "Excellent" - Stamp for "Excellent" +4031300 - Maple Stamp - Maple Stamp +4031301 - Invitation to Aquarium - An invitation to Aquarium that Icarus lost. +4031302 - Sea Trash - A filthy, dirty can of trash that pollutes the sea. +4031303 - Storage Key - An elegantly designed key with a large jewel in the center. +4031304 - Invitation to Aquarium - An invitation to Aquarium that Ronnie lost. +4031305 - Birthday Candle - A candle for birthday cakes. Used for MapleStory Anniversary Event. +4031306 - Birthday Present (Red) - A box that may contain a birthday present. No one knows what's inside the box... Used for MapleStory Anniversary Event. +4031307 - Birthday Present (Blue) - A box that may contain a birthday present. No one knows what's inside the box... Used for MapleStory Anniversary Event. +4031308 - Cloud Sprayer - A sprayer normally used to water the flowers, but instead sprays clouds. +4031309 - Cloud Piece - A piece of the cloud torn apart from a corner of the Orbis Cloud. +4031310 - Aquaroad Photo Album - A photo album full of gorgeous pictures that capture the true beauty of ocean. +4031311 - Snow Crystal - A snow crystal that's ready to melt any minute. +4031312 - Snow Crystal Sphere - A beautiful snow crystal that's wrapped around in transparent, protective sphere. +4031315 - Tree Cutter's Steel Axe - A lost axe from the tree cutter. This item should be returned to its rightful owner. +4031316 - Chil Sung's Steel Axe - A lost axe from Chil Sung of Korean Folk Town. +4031317 - Tree's Steel Axe - A lost axe from a fella named 'Tree'. +4031318 - Chil Nam's Steel Axe - A lost axe from Chil Nam of Korean Folk Town. +4031319 - Steel Axe for Tree Cutters - A steel axe only used by tree cutters. +4031320 - Broken Steel Axe - An old, rusty broken axe. +4031321 - Sea Trash - A filthy, dirty can of trash that pollutes the sea. +4031322 - Coca Fruit - Coca fruit that is used to make the secret ingredient for Coca-Cola. +4031323 - CO2 - CO2 that is used to make the secret ingredient for Coca-Cola. +4031324 - Caramel - Caramel that is used to make the secret ingredient for Coca-Cola. +4031325 - Secret Coca-Cola Liquid - Secret ingredient that is used to make Coca-Cola. I should take it to the North Polar bear, Poach, since he likes Coca-Cola. +4031330 - Ticket to Leafre (Basic) - A basic ticket to Leafre... This ticket is needed to get on the ride to Leafre. +4031331 - Ticket to Leafre (Reg) - A regular ticket to Leafre... This ticket is needed to get on the ride to Leafre. +4031332 - Certificate of 1-straight Win - A document certifying 1 straight win in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031333 - Certificate of 2-straight Wins - A document certifying 2 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031334 - Certificate of 3-straight Wins - A document certifying 3 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031335 - Certificate of 4-straight Wins - A document certifying 4 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031336 - Certificate of 5-straight Wins - A document certifying 5 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031337 - Certificate of 6-straight Wins - A document certifying 6 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031338 - Certificate of 7-straight Wins - A document certifying 7 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031339 - Certificate of 8-straight Wins - A document certifying 8 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031340 - Certificate of 9-straight Wins - A document certifying 9 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031341 - Certificate of 10-straight Wins - A document certifying 10 straight wins in Rock, Paper, Scissors. Take the ticket to the NPC's Paul, Jean, Martin, or Tony to exchange to another item. +4031342 - Certificate of Switch - A letter or recommendation that the Chieves in El Nath write to the priest living in Minar Forest. +4031343 - The Heroic Pentagon - A five-sided pendant that signfies the heroic nature of the owner. +4031344 - The Heroic Star - A star-shaped pendant to represent heroicism and other good qualities in life. +4031345 - Pure Water of Protection - An item Tatamo requested for Grendel the Really Old. Drop the water on top of an item to kick in the protective spell. +4031346 - Magic Seed - A vegetable seed with the magical power hidden inside. It has an ability to connect from one space to another. +4031347 - Toy Castle Present - A toy castle full of presents as a gesture of goodwill from Ludibrium to Leafre. +4031348 - Secret Spell Scroll - A scroll that contains an unknown secret. In the hands of someone who knows how to use the scroll, it can unlock enormous power. +4031352 - Pink Yeti Doll - A PINK Yeti doll, unlike other Yeti dolls. +4031353 - Music Box - A secret present for Jay Chou's secret lover. +4031354 - Necklace - Women love wearing this as an accessory. +4031355 - Porridge - A hot bowl of porridige, mixed with chicken. +4031356 - Christine's Introduction letter - A letter written by Christine. I better get this to the Grandpa at the fruit market. +4031357 - Moonstone Engagement Ring Box (Empty) - Empty engagement ring box. Has no ring, required for marriage. +4031358 - Moonstone Engagement Ring - Engagement Ring made of Moon Rock. This is the actual ring design. There is a diamond in the center. Required for marriage. +4031359 - Star gem Engagement Ring Box (Empty) - Empty engagement ring box. Has no ring, required for marriage. +4031360 - Star gem Engagement Ring - Engagement Ring made of Star Rock. This is the actual ring design. There is a diamond in the center. Required for marriage. +4031361 - Golden Heart Engagement Ring Box (Empty) - Empty engagement ring box. Has no ring, required for marriage. +4031362 - Golden Heart Engagement Ring - Engagement Ring made of gold. This is the actual ring design. There is a diamond in the center. Required for marriage. +4031363 - Silver Swan Engagement Ring Box (Empty) - Empty engagement ring box. Has no ring, required for marriage. +4031364 - Silver Swan Engagement Ring - Engagement Ring made of silver. This is the actual ring design. There is a diamond in the center. Required for marriage. +4031367 - Proof of Love - Proof of Love that Nana makes for the couples. There is a cupid bow attached to a heart +4031368 - Proof of Love - Proof of Love that Nana makes for the couples. There is a cupid bow attached to a heart +4031369 - Proof of Love - Proof of Love that Nana makes for the couples. There is a cupid bow attached to a heart +4031370 - Proof of Love - Proof of Love that Nana makes for the couples. There is a cupid bow attached to a heart +4031371 - Proof of Love - Proof of Love that Nana makes for the couples. There is a cupid bow attached to a heart +4031372 - Proof of Love - Proof of Love that Nana makes for the couples. There is a cupid bow attached to a heart +4031373 - Parent's Blessing - A sign that symbolizes the blessings received from Mom and Dad. You need this to ask high priest for preside at the wedding. +4031374 - Officiator's Permission - Proof that couple got permission from High Priest John to officiate at their wedding. Etc +4031375 - Premium Cathedral Reservation Receipt - Receipt that proves that a couple made reservations at the Cathedral. Required for Cathedral Wedding +4031376 - Premium Chapel Reservation Receipt - Receipt that proves that couples made reservations at the Vegas Chapel. Required for Chapel Wedding +4031377 - Invitation - Chapel - A Wedding Invitation. Only the people you invite will be able to come into your Wedding ceremony. To invite someone, simply #cDouble-Click# the invitation and put the character name you want to invite. Please check your spelling for the character name before sending. +4031382 - Party Dress - A beautiful dress made by the wife of Puyai Lee's. +4031383 - Defense Squad Enrollment Permission - A document that acknowledges one as a Floating Market Defense Squad member +4031384 - Defense Squad Enrollment Permission - A document that acknowledges one as a Floating Market Defense Squad member +4031385 - Defense Squad Enrollment Permission - A document that acknowledges one as a Floating Market Defense Squad member +4031386 - Defense Squad Enrollment Permission - A document that acknowledges one as a Floating Market Defense Squad member +4031387 - Defense Squad Enrollment Permission - A document that acknowledges one as a Floating Market Defense Squad member +4031388 - Kid's Key - A key used by Kid. +4031391 - Fake Blueprint - A fake blueprint that poorly copied that of a legendary invention. +4031392 - Face Lotion - Lisa's face lotion, the most expensive one of its kind. +4031395 - Invitation - Cathedral - A Wedding Invitation. Only the people you invite will be able to come into your Wedding ceremony. To invite someone, simply #cDouble-Click# the invitation and put the character name you want to invite. Please check your spelling for the character name before sending. +4031400 - Papaya - A tropical fruit with a pleasant smell that has lots of seeds in it. +4031401 - Rose Apple - A red tropical fruit that is both sweet and sour at the same time. Can also be used as an ingredient for jello and cocktail. +4031405 - Glass Shoes - A beautiful, sparkling glass shoes apparently made by the fairies. +4031406 - Invitation - Chapel - A Wedding Invitation. Only the people invited can enter the Special Wedding. For detailed information, please Double-Click this invitation. Also, if the Wedding for this invitation is started, #cDouble-Click# the item as well to instantly enter the Wedding. +4031407 - Invitation - Cathedral - A Wedding Invitation. Only the people invited can enter the Special Wedding. For detailed information, please Double-Click this invitation. Also, if the Wedding for this invitation is started, #cDouble-Click# the item as well to instantly enter the Wedding. +4031409 - Amoria Heart Key - This key is used to unlock the treasure chest in the Amoria hunting ground. +4031410 - Grendel the Really Old's Message - A letter written by Grendel the Really Old that answers Tatamo's questions. +4031411 - Tatamo's Letter - A letter written by Tatamo to Grendel the Really Old regardint a strange set of events that have taken place at Minar Forest. +4031412 - Black Soul of Dark Rash - A black, tainted soul that seemed to hover around Dark Rash. +4031413 - Black Soul of Dual Birk - A black, tainted soul that seemed to hover around Dual Birk. +4031414 - Black Soul of Dark Cornian - A black, tainted soul that seemed to hover around Dark Comian. +4031415 - Black Soul of Dark Wyvern - A black, tainted soul that seemed to hover around Dark Wyvern. +4031416 - Yellow Turkey Egg - An oversized Yellow Turkey Egg. You can turn this in to Cody. +4031417 - Green Turkey Egg - An oversized Green Turkey Egg. You can turn this in to Cody. +4031418 - Pie Crust - An ingredient needed for Grandma Benson's pumpkin pie. +4031419 - Pumpkin - An ingredient needed for Grandma Benson's pumpkin pie. +4031420 - Flour - An ingredient needed for Grandma Benson's pumpkin pie. +4031421 - Powder Sugar - An ingredient needed for Grandma Benson's pumpkin pie. +4031423 - Onyx Chest - This mysterious chest of Amorian legend appears at all Wedding Parties, and gives a very lucky guest a fantastic prize. +4031424 - Onyx Chest for Bride and Groom - This mysterious chest of Amorian legend appears at all Wedding Parties, and gives a very lucky guest a fantastic prize. +4031425 - Miniature Turkey Pet - An adorable-looking miniature turkey pet that will transform into a fully-grown Turkey Pet after the conclusion of the Thanksgiving Event. +4031426 - Anne's Letter - A letter written by Anne to Cliff. The letter contains requests for a nice present. +4031427 - Cliff's Gift Box - A heavily-gift box sent by Cliff. No one knows what's inside the box. +4031428 - Delicious Snowball - A sparkly ball of snow that sparkles so much that one can mistake it for a ball of sugar. +4031429 - Straw - A handful of straw that filled up the straw hats. +4031430 - The Legendary Being's Scroll - A scroll that describes the courses of the studies of becoming The Legendary Being. On the cover of the scroll has number 1 written in Chinese. +4031431 - The Legendary Being's Scroll - A scroll that describes the courses of the studies of becoming The Legendary Being. On the cover of the scroll has number 1 written in Chinese. +4031432 - The Legendary Being's Scroll - A scroll that describes the courses of the studies of becoming The Legendary Being. On the cover of the scroll has number 1 written in Chinese. +4031433 - Kitty Spirit - A marble that resembles that of a cat's eye. +4031435 - Captain Hat - A captain hat that is always worn by the captain of the pirates. +4031436 - Hook - A hook-shaped metal hand. +4031437 - Lord Pirate's Key to Chest - The key that opens Lord Pirate's treasure chest. A red accessory is donned at the end of the key. +4031438 - Lord Pirate's Travel Diary - A travel diary recorded by Lord Pirate during his heydays as a forceful pirate. Stories abound regarding places people are unaware of, as well as trasures. +4031439 - Blue/White Present - A present box that fell out of Maple Claws' sled. Can be given to Maple Claws, O-Pongo or Mr. Grubber. +4031440 - Red/White Present - A present box that fell out of Maple Claws' sled. Can be given to Maple Claws, O-Pongo or Mr. Grubber. +4031441 - Red/Blue Present - A present box that fell out of Maple Claws' sled. Can be given to Maple Claws, O-Pongo or Mr. Grubber. +4031442 - White/Green Present - A present box that fell out of Maple Claws' sled. Can be given to Maple Claws, O-Pongo or Mr. Grubber. +4031443 - Red/Green Present - A present box that fell out of Maple Claws' sled. Can be given to Maple Claws, O-Pongo or Mr. Grubber. +4031444 - Sabbath Candle - A candle needed to begin the Festival of Lights. +4031445 - Altar Piece - A piece needed to build the Altar at the Festival of Lights. +4031446 - Graham Cracker - A large, sweet graham cracker used to build houses. +4031447 - Bob's Snail Shell - Threatened for his life, Bob went back into his shell. You can carry him. He's not too heavy. +4031448 - Deathly Fear - A deathly fear taken from the deathly darkness. +4031449 - Dragon Heart - A bright, shiny rock that can be found inside the Dragon. Inside the rock features the unbelievable power of the dragon, condensed. Looks vaguely like a red jewelry. +4031450 - Orihalcon Hammer - A rock-hard hammer made out of Orihalcon, which means it'll never break. +4031451 - Summoning Frame - A frame that sets the basic boundaries of the summoning. +4031452 - Shawn's Request - There's no way to tell what it is, but there's an item inside this small wooden box. Need to take this to Shawn. +4031453 - Magical Array of the Spirit - A magical array that obtained the ability to heal by eliminating the sealed force of the black soul. +4031454 - Holy Cup - A gold cup with decorations all over it. +4031455 - Holy Water of Life - A holy water endlessly streaming from the Cave of Life. +4031456 - Maple Marble - A transparent glass marble that contains a maple leaf. +4031457 - Griffey Wind - A soft breeze created by Griffey's wings. +4031458 - Thanatos's Black Tornado - A black tornado made by Thanatos's powerful spells. +4031459 - Boogie's Cursed Whirlwind - A whirlwind made out of Boogie's cursed powers. +4031460 - Cold Heart of a Wolf - A cold, non-beating heart of Lycanthrope. +4031461 - Life Roots - A root of a plant that grows in the Cave of Life. +4031462 - Ventilating Fan - Engineer Kay of the Omega Secto created this device for some ventilation. +4031463 - Mithril Wristband - A blue wristband made out of Mithril. +4031464 - Ragged Wristband - A wristband so ragged that it cannot be worn anymore. +4031465 - Helena's Old Gloves - An old glove she bought years ago for Legor. It may be dirty with accumulated usage, but it also shows how hard the owner of the glove worked with them on. +4031466 - Dark Soul Rock - A soul rock that contains the force of darkness. +4031467 - Sayram's Necklace - A necklace Sayram made for his trustworthy horse Griffey. There used to be a drawing of where they first met on the necklace, but it's erased now. +4031468 - Soul Pouch - A small pouch that contains both free spirits as well as the evil ones. +4031469 - Fire Soul Rock - A soul rock that contains the force of fire. +4031470 - Icy Soul Rock - A soul rock that contains the force of ice. +4031471 - Sayram's Shield - A shield that was carried around by the legendary Warrior Sayram. If the owner is in trouble, the shield is known to make a shrieking cry; therefore it is also known as the singing shield. +4031472 - Piece of Courage - A small piece of courage that can be obtained through monsters at Warped Dimension. +4031473 - Key to the Other World - This is the key that opens the door to Thanatos's room. +4031474 - Soul Contract - A contract that allows the black soul it to obtain the ability to bless by eliminating the black soul's sealed-up hidden force. +4031475 - Key to the Forgotten Shrine - This key is needed to head to the Forgotten Shrine. +4031476 - Glass Marble - A transparent glass marble. +4031477 - Lycanthrope's Plans - The other half of the note that detailed Lycanthrope's planned kidnapping of Tylus. +4031478 - Long-lasting Battery - Porter of Omega Sector invented this battery, which lasts a long long time. +4031479 - Sayram's Necklace - A necklace Sayram made for his trustworthy horse Griffey. There used to be a drawing of where they first met on the necklace, but it's erased now. +4031480 - Normal Cathedral Reservation Receipt - Receipt that proves that a couple made reservations at the Cathedral. Required for Cathedral Wedding +4031481 - Normal Chapel Reservation Receipt - Receipt that proves that a couple made reservations at the Vegas Chapel. Required for Chapel Wedding +4031482 - Dragon Heart - A bright, shiny rock that can be found inside the Dragon. Inside the rock features the unbelievable power of the dragon, condensed. Looks vaguely like a red jewelry. +4031483 - Dragon Heart - A bright, shiny rock that can be found inside the Dragon. Inside the rock features the unbelievable power of the dragon, condensed. Looks vaguely like a red jewelry. +4031484 - Dragon Heart - A bright, shiny rock that can be found inside the Dragon. Inside the rock features the unbelievable power of the dragon, condensed. Looks vaguely like a red jewelry. +4031485 - Dragon Heart - A bright, shiny rock that can be found inside the Dragon. Inside the rock features the unbelievable power of the dragon, condensed. Looks vaguely like a red jewelry. +4031486 - Lost Present - A present that must be delivered to someone accepting them for Maple Claws. +4031487 - Helena's Old Gloves - An old glove she bought years ago for Legor. It may be dirty with accumulated usage, but it also shows how hard the owner of the glove worked with them on. +4031488 - Soul Pouch - A small pouch that contains both free spirits as well as the evil ones. +4031495 - Tylus's Trust - An item that Tylus gave as a sign of trust. +4031496 - Key to the Other World - This is the key that opens the door to Thanatos's room. +4031497 - Summoning Frame - A frame that sets the basic boundaries of the summoning. +4031504 - Blue Gift Box - A blue gift box that features the Christmas presents. +4031505 - Yellow Gift Box - A yellow gift box that features the Christmas presents. +4031506 - Green Gift Box - A green gift box that features the Christmas presents. +4031507 - Pheromone - Used as an ingredient for Pheromone perfume. +4031508 - Kenta's Report - A report that features the results of Kenta's studies. +4031509 - Dragon's Perfume Bottle - A very important perfume bottle, needed to create the Pheromone perfume. +4031510 - Recommendation Letter for Job Adv. - A letter of recommendation written by the Chiefs in El Nath to the priest at Minar Forest. +4031511 - Heroic Pentagon - A pentagon pendant which brings out the show of ultimate respect. The true sign of a hero.. +4031512 - Heroic Star - A star-shaped pendant which brings out the show of ultimate respect. The true sign of a hero.. +4031513 - Recommendation Letter for Job Adv. - A letter of recommendation written by the Chiefs in El Nath to the priest at Minar Forest. +4031514 - Heroic Pentagon - A pentagon pendant which brings out the show of ultimate respect. The true sign of a hero.. +4031515 - Heroic Star - A star-shaped pendant which brings out the show of ultimate respect. The true sign of a hero.. +4031516 - Recommendation Letter for Job Adv. - A letter of recommendation written by the Chiefs in El Nath to the priest at Minar Forest. +4031517 - Heroic Pentagon - A pentagon pendant which brings out the show of ultimate respect. The true sign of a hero.. +4031518 - Heroic Star - A star-shaped pendant which brings out the show of ultimate respect. The true sign of a hero.. +4031519 - Christmas Present - A present from Maple Claws. In the spirit of the holidays, you must give this to a lucky person for it to be opened. +4031520 - New Year's Present - Bring in the New Year with this present from MapleStory! Thanks for playing! +4031521 - Hanukkah Present - Hannah's gift. In the spirit of the holidays, you must give this to a lucky person for it to be opened. +4031523 - Cherry Blossom Seed - A mystical seed that produces a fully bloomed Cherry Blossom tree. +4031524 - Silk Feather - A large, silk-like feather. Can be used in pillows and beds for added comfort. +4031525 - Ring Fragment - A piece from a set of broken engagement rings. +4031526 - Repaired Rings - A pair of rings mended by Moony for Gary and Shatima. +4031527 - White/Purple Ribbon Gift Box - An empty gift box in perfect condition. Goes well with new gifts. +4031528 - Claudia's Coupon (EXP Hair) - Given by Claudia in exchange for help. Grants the user a free EXP hair style change. One-time only! +4031529 - Allowance - Money from Mom and Dad. Can be used to purchase a Nexon Prepaid. +4031530 - Nexon Prepaid - 100 points - A Nexon Prepaid from Mr. Spot worth 100 points. Will be redeemed into Maple Points. +4031531 - Nexon Prepaid - 250 points - A Nexon Prepaid from Mr. Spot worth 250 points. Will be redeemed into Maple Points. +4031542 - Mouse - A new computer mouse perfect for Mom and Dad's new computer. +4031543 - Yellow Wish Ticket - Yellow Wish Ticket +4031544 - Green Wish Ticket - Green Wish Ticket +4031545 - Blue Wish Ticket - Blue Wish Ticket +4031551 - Lord Pirate's Treasures - A stack of treasures Lord Pirate had collected over the years. Looks very expensive. +4031552 - Body & Physics Medicine Herb Pouch - A herb pouch ready to be heated and squeezed out to make Body & Physics Medicine. +4031553 - Mind & Heart Medicine Herb Pouch - A herb pouch ready to be heated and squeezed out to make Mind & Heart Medicine. +4031554 - Peach Tree Herb Pouch - A herb pouch ready to be heated and squeezed out to make a medicine that aids in the growth of trees. +4031555 - Herb Pouch for Birds - A herb pouch ready to be heated and squeezed out to make a great medicine for birds. Not for humans! +4031556 - Maria's Nutritional Juice - Maria's special juice made of squishy liquid and mushroom spore. +4031557 - Cassandra's Cellphone - A broken cellphone that Cassandra lost. +4031558 - Dances with Balrog's Stamp - A Stamp that must be placed on the package, sent to Warriors. +4031559 - Grendel the Really Old's Stamp - A Stamp that must be placed on the package, sent to the Magicians. +4031560 - Dark Lord Stamp - Stamp that is needed to put on the package that is sent to the Thieves. +4031561 - Athena Pierce's Stamp - Stamp that is needed to put on the package that is sent to the Archers. +4031563 - Richard's Letter - A love letter written by Richard. Needs to be delivered to Angelique of Amoria... +4031564 - Richard's Letter - A love letter written by Richard. Needs to be delivered to Angelique of Amoria... +4031565 - Richard's Letter - A love letter written by Richard. Needs to be delivered to Angelique of Amoria... +4031566 - Richard's Letter - A love letter written by Richard. Needs to be delivered to Angelique of Amoria... +4031567 - Richard's Letter - A love letter written by Richard. Needs to be delivered to Angelique of Amoria... +4031568 - Cat's Eye - A gem that resembles the eye of a cat. Obtainable from Meowcat. +4031569 - Dancer's Swords - Decorative swords with fancy ornamentations on the blade and handle. They don't seem like they were meant to be used for fighting. +4031570 - Piece of Tigun's Beard - A lock of Tigun's beard that has been plucked. +4031571 - Queen's Silk - Silks with fine colors that the Queen ordered. It seems very expensive. +4031572 - Schegerazade's Storybook - Schegerazade's book that contains all the stories he knows. +4031573 - Wiz's Storybook - A storybook that Wiz kept safely in the Helios Tower. +4031574 - Sky Jewel - A gem that is known to contain Heaven's power. No one actually knows what kind of power it contains. +4031575 - Ticket to Ariant (Basic) - A basic ticket needed to board the boat that goes to Ariant in Ossyria. +4031576 - Ticket to Ariant (Regular) - A regular ticket needed to board the boat that goes to Ariant in Ossyria. +4031577 - Fairy's Tea Leaf - A tea leaf that is grown by fairies. +4031578 - Queen's Ring - An elaborately decorated ring. It looks really expensive. +4031579 - Small Sack of Jewelry - A small portion of treasure that has been brought back, carried inside a small sack. +4031580 - Wrapped Food - A food that has been wrapped so that it will stay in one piece. +4031581 - Sand Picture Member Badge - A badge that is only given to those qualify to be a Sand Picture member. +4031582 - Entry Pass to the Palace - A piece of paper that grants the right to enter the Palace. +4031583 - Purple Leaf of Transformation - A purple leaf with a sweet aroma. If you smell the flower, you can't transform back for 1 hour. +4031584 - Pink Leaf of Transformation - A pink leaf with a sweet aroma. If you smell the flower, you can't transform back for 1 hour. +4031585 - Yellow Leaf of Transformation - A yellow leaf with a sweet aroma. If you smell the flower, you can't transform back for 1 hour. +4031586 - Lonely Baking Powder - Baking powder that contains loneliness. +4031587 - Black Bean Paste of Longing - Black Bean Paste that contains the sorrow of missing someone. +4031588 - Pork of Loneliness - Pork that contains loneliness. +4031589 - Schegerazade's Letter - A letter that Schegerazade, the palace's gossiper, wrote to her younger brother Jiyur. +4031590 - Birthday Candle - A candle for birthday cakes. Used for MapleStory Anniversary Event. +4031591 - The Little Maple Prince Storybook - A book that contains the story of the 'Little Maple Prince'. +4031592 - Entrance Ticket - Entrance Ticket to the Amorian Challenge! Party Quest +4031593 - Lip Lock Key - One of many keys scattered throughout Amoria. You can give 10 of these to Amos to enter his Hunting Ground. +4031594 - Geist Fang - An enchanted fang from the Geist Balrog. Must be given to Amos as proof of triumph. +4031595 - Magik Mirror Shard - A shattered piece from a Magik Mirror. +4031596 - Wing Hammer - A unique hammer that can shatter anything with one swing. +4031597 - Cupid Code Piece - A special kind of multi-numeral key used for complex locks. +4031606 - Maple Leaf in the Box - A maple leaf that Kun received from a hero. The leaf is slowly dying. +4031607 - Maple Leaf in the Box - A maple leaf that Kun received from a hero. It is kept alive by Grendel the Really Old's magic. +4031608 - Infinity Scroll - A scroll that is needed to activate the maple leaf marble. You must have this to converse with the maple leaf marble. +4031610 - Maple Leaf Earring - A maple leaf shaped earring. Currently unuseable. +4031611 - Infinity Scroll - A scroll that is needed to activate the maple leaf marble. You must have this to converse with the maple leaf marble. +4031612 - Infinity Scroll - A scroll that is needed to activate the maple leaf marble. You must have this to converse with the maple leaf marble. +4031613 - Maple Leaf in the Box - A maple leaf that Kun received from a hero. It is kept alive by Grendel the Really Old' magic. +4031614 - Maple Leaf in the Box - A maple leaf that Kun received from a hero. It is kept alive by Grendel the Really Old' magic. +4031615 - Maple Leaf in the Box - A maple leaf that Kun received from a hero. It is kept alive by Grendel the Really Old' magic. +4031616 - Maple Leaf Earring - A maple leaf shaped earring. Currently unuseable. +4031617 - Maple Leaf Earring - A maple leaf shaped earring. Currently unuseable. +4031619 - Moppie's Little Box - A small box that Moppie had around his neck. It said 'to Ariant's Eleska...' +4031620 - Byron's Recommendation Letter - A recommendation letter written by Byron. I should take it to Dances With Balrog in Perion. +4031621 - Byron's Recommendation Letter - A recommendation letter written by Byron. I should take it to Grendel the Really Old in Ellinia. +4031622 - Byron's Recommendation Letter - A recommendation letter written by Byron. I should take it to Athena in Henesys. +4031623 - Byron's Recommendation Letter - A recommendation letter written by Byron. I should take it to the Dark Lord in Kerning City. +4031624 - Moppie's Little Box - A small box that Moppie had around his neck. It was sealed and it said 'to Ariant's Eleska...' +4031625 - Aquarium Invitation - An invitation to the Aquarium that a kid lost. +4031627 - Whitebait (3cm) - It measures 3cm in length, with high nutritional value, and it is suitable for steaming with the egg ingredients. It is delicious & low in fats. +4031628 - Sailfish (120cm) - It measures 120cm in length, containing protein, calcium, magnesium and vitamin D that a human body needs. It is a very healthy seafood. +4031629 - Pot - This superior heat conduction pot is easy to clean, and it is very suitable for those who are on diet. +4031630 - Carp (30cm) - It measures 30cm in length, with rich protein contents. It has the essential quantity of amino acids that a human body needs. +4031631 - Salmon(150cm) - It measures 150cm in length, with green and tender flesh. It is always the first choice in Sashimi. +4031632 - Shovel - An equipment used for stir-frying dishes +4031633 - Whitebait (3.6cm) - It measures 3.6cm in length, with high nutritional value, and it is suitable for steaming with the egg ingredients. It is delicious & low in fats. +4031634 - Whitebait (5cm) - It measures 5cm in length, with high nutritional value, and it is suitable for steaming with the egg ingredients. It is delicious & low in fats. +4031635 - Whitebait (6.5cm) - It measures 6.5cm in length, with high nutritional value, and it is suitable for steaming with the egg ingredients. It is delicious & low in fats. +4031636 - Whitebait (10cm) - It measures 10cm in length, with high nutritional value, and it is suitable for steaming with the egg ingredients. It is delicious & low in fats. +4031637 - Carp (53cm) - It measures 53cm in length, with rich protein contents. It has the essential quantity of amino acids that a human body needs. +4031638 - Carp (60cm) - It measures 60cm in length, with rich protein contents. It has the essential quantity of amino acids that a human body needs. +4031639 - Carp (100cm) - It measures 100cm in length, with rich protein contents. It has the essential quantity of amino acids that a human body needs. +4031640 - Carp (113cm) - It measures 113cm in length, with rich protein contents. It has the essential quantity of amino acids that a human body needs. +4031641 - Sailfish (128cm) - It measures 128cm in length, containing protein, calcium, magnesium and vitamin D that a human body needs. It is a very healthy seafood. +4031642 - Sailfish (131cm) - It measures 131cm in length, containing protein, calcium, magnesium and vitamin D that a human body needs. It is a very healthy seafood. +4031643 - Sailfish (140cm) - It measures 140cm in length, containing protein, calcium, magnesium and vitamin D that a human body needs. It is a very healthy seafood. +4031644 - Sailfish (148cm) - It measures 148cm in length, containing protein, calcium, magnesium and vitamin D that a human body needs. It is a very healthy seafood. +4031645 - Salmon (166cm) - It measures 166cm in length, with green and tender flesh. It is always the first choice in Sashimi. +4031646 - Salmon (183cm) - It measures 183cm in length, with green and tender flesh. It is always the first choice in Sashimi. +4031647 - Salmon (227cm) - It measures 227cm in length, with green and tender flesh. It is always the first choice in Sashimi. +4031648 - Salmon (288cm) - It measures 288cm in length, with green and tender flesh. It is always the first choice in Sashimi. +4031658 - Charcoal - Heats up the grill, needed for any BBQ. +4031659 - BBQ Sauce - Spicy sauce. Goes perfect with Maple Meat. +4031660 - Maple Raw Meat - Fresh meat ready to be cooked. Tastes excellent with BBQ sauce. +4031661 - Bottle of Emotion - A water bottle with shiny purple liquid inside. You can capture emotions in it. +4031662 - Ragged Steel Sword - A ragged steel sword. Judging by the clean handle, it seems like it's a valuable item to someone. +4031663 - Emergency Kit - Bandage and Medicine bottle that Mrs. Ming Ming has made. +4031664 - Charcoal - Heats up the grill, needed for any BBQ. +4031665 - BBQ Sauce - Spicy sauce. Goes perfect with Maple Meat. +4031666 - Maple Raw Meat - Fresh meat ready to be cooked. Tastes excellent with BBQ sauce. +4031667 - Bottle of Emotion - A water bottle with shiny purple liquid inside. You can capture emotions in it. +4031668 - Dark Lord's New Year Card - A New Year's card from Dark Lord of Kerning City. I'll have to deliver this to 'Kyrin', the Pirate Captain over in the Nautilus. +4031669 - Luck Sack - A red sack of "luck" with a Chinese character for luck engraved on the front. +4031674 - Elpam Magnet - A strange magnet not of the Maple World. Rumored to come from Versal. +4031675 - Temporal Fragment - An odd timepiece said to contain 1 second of time. +4031676 - Lost Ankh - An arcane key needed to unlock Bigger Ben's Pharoah Gate. +4031677 - Komodo Key - A key dropped from the Komodo Duo. Can be used to enter Foxwit's Den. +4031678 - Lift Key - A key used for the Elevator in Bigger Ben. +4031679 - Dragon Jewel - A jewel passed down through the Dragon Ninja clan. Allows access to any member's inner sanctum. +4031680 - Hyper Glyph - A peculiar crystal that seems to decipher languages. +4031681 - MesoGear Map Piece - A fraction of the MesoGears Map, said to reveal a hidden cavern within the MesoGears. +4031682 - Gullivera Coin - A mystic coin that temporarily bonds with the traveler for a short period of time. +4031683 - Maya's seal of love - This is a seal of true love given by Maya. +4031684 - Lowen's seal of love - This is a seal of true love given by Lowen. +4031685 - Ayan's seal of love - This is a seal of true love given by Ayan. +4031686 - Nela's seal of love - This is a seal of true love given by Nela +4031687 - Erikson's seal of love - This is a seal of true love given by Erikson. +4031688 - Tigun's seal of love - This is a seal of true love given by Tigun. +4031689 - Muse's seal of love - This is a seal of true love given by Muse. +4031690 - Pam's seal of love - This is a seal of true love given by Pam. +4031691 - Taesoo's Proof of Love - A badge of love that Taesoo gave me, acknowledging the sincerity of my love. +4031692 - Jiyur's Proof of Love - A badge of love that Jiyur gave me, acknowledging the sincerity of my love. +4031693 - Mute's Model - A miniature model of Mute. It was made for research purposes by the alchemists. +4031694 - Lumo's Leaf - A rare leaf obtained from Lumo. It contains the power of life but can easily die if mistreated. +4031695 - Snow Rose - A rose that is white like snow. It was created by the alchemists. +4031696 - Snow Rose Seed - A small and white seed. It can grow into a snow rose but you'll need to use alchemy to raise it. +4031697 - Silver Pendant - A pendant with a rose engraving. It is not yet attached to a chain. +4031698 - Magic Device - A device that has a gem that controls magic. Only the alchemists know how it works. +4031699 - Drop of Sun - A cure for fairies made by fairies. It's been made by sunlight. +4031700 - Drop of Moon - A cure for fairies made by fairies. It's been made by moonlight. +4031701 - Chumji's Watermelon - Sweet watermelon that is grown from Chumji's field. +4031702 - Transparent Item - A transparent item that is used to fight off the watermelon keeper. +4031703 - Regular Tree Branch - A regular looking tree branch. It doesn't seem to have any special powers. +4031704 - Anonymous Research Report - A research report that an unknown person compiled. The research seems to be about using metal to strengthen your body. +4031705 - Strange Bottle of Water - A water bottle containing transparent water. It is tightly locked. +4031706 - Phyllia's Letter - A letter Phyllia wrote to Erikson. It seems to be about Kini's condition. +4031707 - Ericsson's Letter - A letter Ericsson wrote to Phyllia. It seems to be about the medicine for Keeny. +4031708 - Secret Document - A secretive document written with codes. The bottom part is badly damaged and not readable. +4031709 - Lightless Magic Device - A magic device that has been completely used up. There is no more use for it. +4031710 - Subway Ticket to NLC (Basic) - A basic ticket needed to get on the subway that goes from Kerning City to New Leaf City of Masteria Continent. +4031711 - Subway Ticket to NLC (Regular) - A Regular ticket needed to get on the subway that goes from Kerning City to New Leaf City of Masteria Continent. +4031712 - Subway Ticket to Kerning City (Basic) - A basic ticket needed to get on the subway that goes from New Leaf City to Kerning City of Victoria Island. +4031713 - Subway Ticket to Kerning City (Regular) - A Regular ticket needed to get on the subway that goes from New Leaf City to Kerning City of Victoria Island. +4031731 - Ticket to Singapore (From Kerning City) - A regular ticket needed to get on the plane that heads from Kerning City to Changi airport. +4031732 - Ticket to Kerning City (From CBD) - A regular ticket needed to get on the plane that heads from Changi airport to Kerning City. +4031733 - Ticket to Singapore (From Orbis) - A regular ticket needed to get on the plane that heads from Oribs to Changi airport. +4031734 - Ticket to Orbis (From CBD) - A regular ticket needed to get on the plane that heads from Changi airport to Orbis. +4031737 - Homunculus's Blood - Blood that is made by Homunculus's magic. It has the power to reveal truth. +4031738 - Dran's Medicine - Medicine that Dran made for his daughter Kini. It seems rather ordinary but it is actually very difficult to make. +4031739 - Magic Stone of Humility - An orange magic stone that signifies humility. What kind of powers does this item have? +4031740 - Magic Stone of Honesty - A green magic stone that signifies honesty. What kind of powers does this item have? +4031741 - Magic Stone of Trust - A blue magic stone that signifies trust. What kind of powers does this item have? +4031743 - Unknown Medicine - A medicine carried by Humanoid A. There's no way to tell what kind of effect it has when consumed. +4031744 - Silver Pendant - A pendant with a rose engraving. It seems to be missing its chain. +4031745 - Parwen's Entry Pass - Entry pass that was used by Parwen. It looks like any other entry passes but has a different number on it. +4031750 - Dark Matter - Strange matter from the depths of space. When used in the construction of items, who knows what effect it'll have! +4031751 - Vorticular Gyro - A futuristic machine part that perpetually makes whirling noises. Once a part of a bigger machine, it can be used to create something new. +4031752 - Blinking Dingbat - A futuristic machine part that blinks steadily and mysteriously. It's original use is unknown but it can be broken down to create something else. +4031753 - Zeta Residue - Residual matter from the explosion of a distant dying star that's taken eons to reach here. +4031754 - Black Versal Materia - A form of concentrated energy, harvested from the alternate dimension of Versal. The dark energy denotes a chaotic element. +4031755 - Taru Totem - An ancient totem that pulses with mystic energy. +4031756 - Mystic Astrolabe - A golden instrument used for navigation. Said to have magical effects when combined with other items. +4031757 - Antellion Relic - An old world tablet with strange markings. These are said to combine with other objects. +4031758 - Naricain Jewel - A lost jewel created by Naricain, the demon sorceror. Said to add tremendous dark power to crafted items. +4031759 - Subani Ankh - One of Subani's Ankhs. Said to have protective powers and ward off darkness. +4031760 - White Versal Materia - A form of concentrated energy, harvested from the alternate dimension of Versal. The blinding white energy indicates it is still unstable. +4031761 - Materia Orb - Materia from Versal that has been stabilized into an orb form. It still pulses with energy. +4031762 - Relic Weapon Blueprint - Relic Weapon Blueprint +4031763 - Materia Weapon Blueprint - Materia Weapon Blueprint +4031764 - Paranormal Activity Report Page - A page from a file detailing strange activity and possible locations for ghosts. It doesn't look very professional. +4031765 - Blank Paranormal Subject Questionnaire - This is an official MBI form that is intended for gathering data on paranormal subjects. It is currently blank. +4031766 - Completed Paranormal Subject Questionnaire - This official MBI form has been completed by a paranormal subject. Hmmm... very interesting information. +4031767 - Sophilia's First Doll - A worn, happy looking doll that has seen better days. +4031768 - "Perfect" Sophilia Doll - A doll that is a chilling likeness of Sophilia but looks odd and unnatural. +4031769 - Tarrymore Earring - This beautiful, elegant earring belongs to Ludmilla. +4031770 - Sepha Earring - This expensive, stylish earring belongs to Ludmilla. +4031771 - Omni Key - A strange key kept in excellent condition. Can be used to enter fireplaces in the Prendergast Mansion. +4031772 - Toy Workshop Key - Jonas' key to his Toy Workshop at the top of the Prendergast Mansion. +4031773 - Dry Branch - An arid branch so devoid of water, it looks like even the slightest touch might break it. +4031774 - Yulete's Lab Report - A compilation of Yulete's lab work and research. Very neat! +4031775 - Frankenroid's Blueprint - A blueprint of Frankenroid created by Yulete. +4031776 - Sirin's Pattern - The pattern of the clothes Sirin designed. Comes with a detailed step-by-step guide for beginners. +4031777 - Juliet's Present - Juliet made this for Romeo. What kind of guy would enjoy this as a gift? +4031778 - Romeo's Love Letter - A letter Romeo wrote to profess his love for Juliet. +4031779 - Juliet's Lunch Box - A lunch box Juliet made for Romeo. I am not sure if the food inside is completely edible...I'll let Romeo try it instead. +4031780 - Mysterious Red Liquid - A red liquid Yulete made for the combination of reagents. +4031781 - Mysterious Green Liquid - A green liquid Yulete made for the combination of reagents. +4031782 - Mysterious Yellow Liquid - A yellow liquid Yulete made for the combination of reagents. +4031783 - Mysterious Blue Liquid - A blue liquid Yulete made for the combination of reagents. +4031784 - Mysterious Purple Liquid - A purple liquid Yulete made for the combination of reagents. +4031785 - Lunchbox Recipe - A lunch box recipe sold by Han the Broker. The author's name is on the cover - H. No way it's written by Han the Broker... +4031788 - Red Marble - A glowing Red Marble Master Goblin prepared for Do Gong. Apparently it helps mastering spells. +4031789 - Antidote Marble - An antidote to King Sage Cat's poison. +4031790 - Small Clue - A cloth from a robe found from Tri-Tailed Foxes. This may explain Chil Nam's bizarre behavior. +4031791 - Ice Crystal - A piece of ice with mysterious powers that may recover the Statue of the Spirit of Snow. +4031792 - Mushroom Candy - A sweet candy that resembles a mushroom. +4031793 - Old Fox's Tail - One of the tails from the Old Fox. Very soft and shiny. +4031794 - Tae Soo's Peach - A special Peach Tae Soo plucked out of the Peach Farm with Tae Sang's blessings. Only the sweetest and the most delicious Peaches can be found here. +4031795 - Cat Doll Under a Spell - A cat doll from Sage Cat with a spell from Do Gong. +4031796 - Yulete's Lab Report - A compilation of Yulete's lab work and research. The notes, while very neat, are complicated. +4031797 - Yulete's Report - A report full of notes from Yulete's various expriments. +4031798 - Finished Reagent - A reagent made with a combination of liquids. +4031799 - Romeo's Snow Rose - A snow rose from Romeo to Juliet. +4031800 - Maria's Letter - A letter from Maria to Lucas, the chief of Amherst. +4031801 - Lucas's Recommendation Letter - A recommendation letter from Lucas for a beginner. +4031802 - Jr. Sentinel Shellpiece - A hard shellpiece that's a part of Jr. Sentinel. +4031805 - Bob's Snail Shell - Threatened for his life, Bob went back into his shell. You can carry him. He's not too heavy.. +4031806 - Romeo's Engagement Ring - A beautiful set of silver rings that Romeo got for Juliet for the engagement, with help from Allegro. +4031811 - Sophilia's First Doll - A worn, happy looking doll that has seen better days. +4031812 - Paranormal Activity Report Page - A page from a file detailing strange activity and possible locations for ghosts. It doesn't look very professional. +4031815 - Heartstopper - Just one taste of this spicy candy and it'll feel like your heart's on fire! +4031816 - Pumpkin Taffy - Sweetened pumpkin taffy on a candy cane stick. +4031817 - Red Gummy Slime - Super-chewy gummy slimes. This one is cherry-flavored. If only real Slimes tasted this good. +4031818 - Green Gummy Slime - Super-chewy gummy slimes. This one is cherry-flavored. If only real Slimes tasted this good. +4031819 - Purple Gummy Slime - Super-chewy gummy slimes. This one is cherry-flavored. If only real Slimes tasted this good. +4031820 - Orange Gummy Slime - Super-chewy gummy slimes. This one is cherry-flavored. If only real Slimes tasted this good. +4031821 - Maple Pop - A mouth-watering, delectable sweet treat! +4031822 - Infinity Circlet Forging Manual - John Barricade's hastily drawn notes for creating an Infinity Circlet. +4031823 - Antellion Miter Forging Manual - John Barricade's hastily drawn notes for creating an Antellion Miter. +4031824 - Stormcaster Gloves Forging Manual - John Barricade's hastily drawn notes for creating Stormcaster Gloves. +4031825 - Crystal Leaf Earrings Forging Manual - John Barricade's hastily drawn notes for creating Crystal Leaf Earrings. +4031826 - Zeta Cape Forging Manual - Professor Foxwit's blueprint for creating a Zeta Cape. +4031827 - Sirius Cloak Forging Manual - Professor Foxwit's blueprint for creating a Sirius Cloak. +4031828 - Dark Shard Earrings Forging Manual - Professor Foxwit's blueprint for creating Dark Shard Earrings. +4031829 - Black Phoenix Shield Forging Manual - Professor Foxwit's blueprint for creating a Black Phoenix Shield. +4031830 - Ghost Sack - A strange sack that contains ghosts. If I mistakenly open this, I feel like a million ghosts might try and possess me. +4031831 - Mirror Piece - A piece of a mirror. If I have this with me, I'll be able to see ghosts with my own eyes. +4031839 - Crumpled Letter - An old, crumpled letter. It is extremely damaged and therefore not very legible. +4031840 - Old Orgel - A beautiful, yet old orgel that shows the traces of time. Written on the inside of the orgel are the words, "For Dear Miss Helena". +4031841 - Magic Flask (Empty) - An empty bottle that can be filled with magic. +4031842 - Magic Flask (Filled) - The Vigor of the Sea fills this magic flask. +4031843 - Large Pearl - A beautiful, large pearl. +4031844 - Rolonay's Research Report - A report document compiled by Rolonay in response to Dr. Kim's research request. +4031845 - Daily Log - Bart's log report of various happenings nearby, as seen from the watchtower. +4031846 - Black Magician's Token - A token of proof that one is a follower of the Black Magician. +4031847 - Milk Jug - A large, empty milk bottle. +4031848 - Milk Jug (1/3) - A jug filled with 1/3rd of milk. Exact measurements. +4031849 - Milk Jug (2/3) - A jug filled with 2/3rds of milk. Exact measurements. +4031850 - Milk Jug (Full) - A jug filled to the brim with milk. Don't spill it! +4031851 - Whalean Canned Food - Kenta's special, canned delicacy of cooked sea horse tail, beloved by Whales. +4031852 - Dress - A fancy, fashionable dress made by Madame Ming Ming herself. The inscription says "Kyrin". +4031853 - Abel's Glasses - Abel's lost pair of glasses. Black, horn-rimmed and polished. +4031854 - Miscellaneous Glasses - Someone's lost pair of glasses. To whom do they belong? +4031855 - Miscellaneous Glasses - Someone's lost pair of glasses. To whom do they belong? +4031856 - Potent Power Crystal - A Power Crystal that contains concentrated monster power. +4031857 - Potent Wind Crystal - A Wind Crystal that contains concentrated dexterity extract, drained from evasive monsters. Enables agility. +4031858 - Porchay's Letter - Porchay's letter to Kenta. +4031859 - Recommendation Letter for 4th Job Advancement - A recommendation letter written by the Chiefs in El Nath to the Priest of Minar Forest. +4031860 - Heroic Pentagon - A pentagon-shaped badge proving one's status as a hero. +4031861 - Heroic Star - A star-shaped pendant proving one's status as a hero. +4031862 - Black Magician's Token - A token of proof that one is a follower of the Black Magician. +4031863 - Confidential Report - A highly confidential report compiled by Baine. Keep it a secret! +4031864 - Allowance - Money from Mom and Dad. Can be used to purchase a Nexon Game Card. +4031865 - Nexon Game Card - 100 points - A Nexon Game Card worth 100 points. Will be redeemed into Maple Points! +4031866 - Nexon Game Card - 250 points - A Nexon Game Card worth 250 points. Will be redeemed into Maple Points! +4031868 - Spirit Jewel - A fossilized jewel which contains the pure essence of a monster in crystallized form. It gives off a potent aura of evil. +4031869 - Papulatus' Key - A mysterious key held by Papulatus. Wonder where the key might fit? +4031870 - Papulatus' Key - A mysterious key that enables separation from different dimensions. What did Papulatus use this key for? +4031871 - Sturdy Leather - Sturdy leather belonging to a Blue Dragon Turtle. +4031872 - Heart of Stone - A heart made of stone that can fill the Red Dragon Turtle's heart with cruelty. +4031873 - Spirit Viking Flags - The flag that the Spirit Vikings carry with them everywhere. They say that without this flag, they are not acknowledged as a Spirit Viking. +4031874 - Spirit Viking Token - A token of proof that one is a member of the Vikings. The Gigantic Spirit Vikings take this token with them wherever they go. +4031875 - Nevermelting Snow - A batch of snow that stays powdery. It never melts for some reason. +4031876 - Flyers - A flyer that contains some important message from Rooney on it. +4031877 - Little Suzy's Wishlist - Little Suzy's Wishlist. Neatly written in pencil. Must be taken to Maple Claws or O-Pongo. +4031878 - Star of Maplemas Spirit - The spirit of Maplemas, the holiday celebrated annually in the Maple World! +4031879 - Orb of Versalmas Cheer - The spirit of Versalmas, the holiday celebrating the 99 days of sunshine in Versal. +4031880 - Stock Certificate for Grubber Industries - A stock certificate good for one share in Mr. Grubber's company. It may be worth a lot of money someday! +4031887 - Tamed Rudolph - A lost Rudolph that has been tamed through spells. +4031890 - Warp Card - A special card needed to travel to the Command Center in Omega Sector. Can only be used inside the Nautilus' Warp Machine. +4031891 - Gold Pouch - A cloth pouch full of gold. +4031892 - Tattered Map - An old, tattered map from hundreds of years ago. +4031893 - Byron's Recommendation Letter - A recommendation letter from Byron the scholar. Give it to Kyrin at Notilus. +4031894 - Crumpled Piece of Paper - When this crumpled piece of paper is straightened out, some familiar names are featured. Jake, Shumi, Nella, Mr. Pickall... +4031895 - Piece of Cheese - A tasty piece of cheese, the main dish for mice. +4031896 - Magic Reagent - Pour it on the horoscope paper, and the future can be seen right then and there. +4031897 - Ancient Helm - An ancient, broken version of the Bosshunter Helm that has lost its original power. With a magic ritual and the right spell components, this can be restored to its original, equippable condition. +4031898 - Ancient Armor - An ancient, broken version of the Bosshunter Armor that has lost its original power. With a magic ritual and the right spell components, this can be restored to its original, equippable condition. +4031899 - Ancient Greaves - An ancient, broken version of the Bosshunter Greaves that has lost its original power. With a magic ritual and the right spell components, this can be restored to its original, equippable condition. +4031900 - Ridley's Book of Rituals - A handy guide and how-to book for all things arcane. No need to hire a professional magician, Ridley shows you how to do it yourself! +4031901 - Papulatus Curl - This is the curl taken from the top of Papulatus' head. +4031902 - Tengu Nose - This is the nose that has been cut off from Black Crow's face. +4031903 - Jack O'Lantern - This is the head of the Headless Horseman. +4031904 - Ergoth's Jawbone - This is the lower jawbone taken from defeating Ergoth. +4031905 - Pianus Scale - This is a scale taken from the giant demonfish Pianus. +4031906 - Balrog Claw - This is a claw taken from either the Crimson Balrog or the Geist Balrog. +4031907 - Tiger's Fang Forging Manual - John Barricade's hastily drawn notes for creating a Tiger's Fang. +4031908 - Neva Forging Manual - John Barricade's hastily drawn notes for creating a Neva. +4031909 - Winkel Forging Manual - John Barricade's hastily drawn notes for creating a Winkel. +4031910 - Glitter Gloves Forging Manual - John Barricade's hastily drawn notes for creating a pair of Glitter Gloves. +4031911 - Facestompers Forging Manual - John Barricade's hastily drawn notes for creating a pair of Facestompers. +4031912 - Crystal Ilbi Forging Manual - John Barricade's hastily drawn notes for creating a Crystal Ilbi. +4031913 - Stone Tiger Head - The figure of a roaring tiger's head, carved from an unknown material. +4031914 - Typhon Crest - A crest marked with the sign of Typhon, a wind beast. +4031915 - LeFay Jewel - A jewel from the former headpiece worn by the dark sorceress LeFay. +4031916 - Pharoah's Wrappings - The remnant of an ancient king's burial garb, probably found from a Nihalian tomb. +4031917 - Crystal Shard - A shard from a legendary crystal sword shattered when used to slay a powerful demon. +4031918 - Ancient Faceguard - An ancient, broken version of the Bosshunter Faceguard that has lost its original power. With a magic ritual and the right spell components, this can be restored to its original, equippable condition. +4031919 - Ancient Gi - An ancient, broken version of the Bosshunter Gi that has lost its original power. With a magic ritual and the right spell components, this can be restored to its original, equippable condition. +4031920 - Ancient Boots - An ancient, broken version of the Bosshunter Boots that has lost its original power. With a magic ritual and the right spell components, this can be restored to its original, equippable condition. +4031921 - Hidden note - In order to prove the worth as a pet trainer, you have to find this. +4031922 - Pet poop - It's Pet poop. +4031923 - Radio Parts - A radio part that can be used to fix Petit's radio. +4031924 - Fairy Hair - Some hair from a fairy with mysterious powers. Apparently, fairies give a piece of their hair to someone as a sign of apology. +4031925 - Cursing Nail - A nail used for curse. Make a voodoo doll, press this nail against it, and the curse is on! +4031926 - Gray Tentacle - A tentacle from Gray's head. Apparently Grays use this tentacle to communicate, instead of their mouths. +4031927 - Wave Translator - A wave translator invented by Dr. Kim of Omega Sector to translate supersonic waves Grays use to communicate to one another. May be subject to malfunction. +4031928 - Wave Translator - A wave translator invented by Dr. Kim of Omega Sector to translate supersonic waves Grays use to communicate to one another. May be subject to malfunction. +4031933 - Solid Purple Lumber - A solid, purple lumber. Can be used to build things. +4031934 - Solid Pink Lumber - A solid, pink lumber. Can be used to build things. +4031935 - Solid Yellow Lumber - A solid, yellow lumber. Can be used to build things. +4031936 - Taru Spirit Feather - A special feather given to a Taru warrior to mark a brave deed. [This item is required to upgrade Taru weapons.] +4031937 - Jungle Lily - A rare, exotic flower that grows in the Krakian Jungle. +4031938 - 99% Dark Chocolate - A 99% Cacao dark chocolate that tastes like crayon. It's so bitter, some call it a tearjerker. +4031939 - 99% Dark Chocolate - A 99% Cacao dark chocolate that tastes like crayon. It's so bitter, some call it a tearjerker. +4031940 - 99% Dark Chocolate - A 99% Cacao dark chocolate that tastes like crayon. It's so bitter, some call it a tearjerker. +4031945 - Mysterious Cloth - A mysterious cloth created by Arwen using Snow Silk. It's transparent and sparkly, but also very tightly woven. +4032003 - Phantom Seed - A seed dropped by the possessed trees of Phantom Forest. +4032004 - Crimson Wood - Resilient wood from the Crimson Tree. +4032005 - Typhon Feather - A feather from the mythical Typhon. These are thought to contain the essence of their wind nature. +4032006 - Stormbreaker Badge - An emblem that marks one as a member of the Stormbreakers. +4032007 - Windraider Badge - An emblem that marks one as a member of the Windraiders. +4032008 - Firebrand Badge - An emblem that marks one as a member of the Firebrands. +4032009 - Nightshadow Badge - An emblem that marks one as a member of the Nightshadows. +4032010 - Elder Ashes - The Elder Wraiths are spirits of Crimsonwood Keep heroes who fell in battle but were never buried. These are the burnt ashes of their remains (ashes of the dead) and should basically look like a pile of grey dust. +4032011 - Soiled Rags - The Elder Wraiths are spirits of Crimsonwood Keep heroes who fell in battle but were never buried. These are the burnt ashes of their remains (ashes of the dead) and should basically look like a pile of grey dust. +4032012 - Crimson Heart - A dark red crystal that pulses with unknown energy, used to power the Crimson Guardians. +4032013 - Bigfoot's Toe - The big toe of Bigfoot. Even though it has a pretty ribbon tied around it, it still looks kinda gross. +4032014 - Jack's Letter to John - A letter the Jack has written to John. It seems to be written in some secret code known only between the Barricade Brothers. +4032015 - Tao of Shadows - A ancient Shadowknight artifact. Its use is known only to the Raven Ninjas. +4032016 - Tao of Sight - A ancient Shadowknight artifact. Its use is known only to the Raven Ninjas. +4032017 - Tao of Harmony - A ancient Shadowknight artifact. Its use is known only to the Raven Ninjas. +4032032 - Coded Communique - (no description) +4032018 - Translated Communique - (no description) +4032021 - Triferium Fuel Cell - A futuristic, super-efficient power unit designed for everything from cybernetic protectors to microwaves. +4032022 - Diferium Fuel Cell - A futuristic power unit suitable for powering everything from toasters to toy robot dogs. +4032023 - Sparkplug - A useful component for many electronic devices, especially cybernetic protectors. +4032024 - Jumper Cable - A pair of jumper cables. Anyone need a start? +4032025 - T-1 Socket Adapter - Looks like a socket adapter for the T-1 line of robotic devices. +4032026 - Ridley's Stone - An ancient magical stone bearing the mark of Ridley, the master artisan-magician. It hums when in vicinity of a Ridley's Statue. +4032027 - Coat Hanger - A wire coat hanger that can be bent into different shapes, for function or for fun. +4032028 - Wad of Gum - A wad of gum that has been slightly chewed. Still sticky! +4032029 - Duct Tape - A roll of silver duct tape. Never know when this may come in handy! +4032030 - Stretchy Material - A piece of highly stretchy, elastic cloth. +4032031 - Lucky Charm - A small silver lucky charm. Hopefully, it'll bring you more luck than it did the leprechaun. +4032055 - Event Ticket (Regular) - A ticket that's required to enter the Mini Dungeon during the event period. Without this, you won't be able to fully participate in the event. +4032056 - Magic Crystal - A beautiful crystal with a red maple leaf inside. Hand this in to the Event Personnel, and she'll exchange this with a prize. +4032057 - Attendance Sheet - An attendance sheet that checks your daily attendance to MapleStory. +4032058 - PB & J Sandwich - A scrumptious Peanut Butter and Jelly Sandwich. The staple of lunch for all ages! +4032059 - Chocolate Milk - Rich Happyville chocolate combined with high-quality milk straight from the fields of Henesys. A delicious treat! +4032060 - Chips - An irresistible snack. Way too tasty to eat just one! +4032061 - Cookie - A chocolate chip cookie found in the wild, now prepared to eat. Guaranteed to bring a smile to someone's face. +4032062 - Fruit Roll Up - A favorite in Victoria Island, this delectable snack bursts with the taste of strawberries. +4032063 - Notebook - A special notebook used for the 2008 Back to School Event. Can be turned into the Maple Admin. May the best server team win! +4055000 - Cassandra's Divine Coupon - Use this at #cHenesys Plastic Surgery# to #ctemporarily# change face once +4055001 - Cassandra's Divine Coupon - Use this at #cKerning City# Hair Salon to #ctemporarily# change hairstyle once +4055004 - Henesys Plastic Surgery Event Coupon - Use this at #cHenesys Plastic Surgery# to #ctemporarily# change face once +4055005 - Kerning City Hair Salon Coupon - Use this at #cKerning City# Hair Salon to #ctemporarily# change hairstyle once +4080000 - Slime & Mushroom Omok Set - A set that allows you to play Omok. Uses slime and mushroom-shaped figures for the game. +4080001 - Slime & Octopus Omok Set - A set that allows you to play Omok. Uses slime and octopus-shaped figures for the game. +4080002 - Slime & Pig Omok Set - A set that allows you to play Omok. Uses pig and slime-shaped figures for the game. +4080003 - Octopus & Mushroom Omok Set - A set that allows you to play Omok. Uses octopus and mushroom-shaped figures for the game. +4080004 - Pig & Octopus Omok Set - A set that allows you to play Omok. Uses pig and octopus-shaped figures for the game. +4080005 - Pig & Mushroom Omok Set - A set that allows you to play Omok. Uses pig and mushroom-shaped figures for the game. +4080006 - Bloctopus & Pink Teddy Omok Set - A set that allows you to play Omok. Uses Bloctopus & Pink Teddy-shaped figures for the game. +4080007 - Bloctopus & Trixter Omok Set - A set that allows you to play Omok. Uses Bloctopus & Trixter-shaped figures for the game. +4080008 - Pink Teddy & Trixter Omok Set - A set that allows you to play Omok. Uses Pink Teddy & Trixter-shaped figures for the game. +4080009 - Panda Teddy & Blocktopus Omok Set - A set that allows you to play Omok. Uses Blocktopus & Panda Teddy-shaped figures for the game. +4080010 - Panda Teddy & Pink Teddy Omok Set - A set that allows you to play Omok. Uses Panda Teddy & Pink Teddy-shaped figures for the game. +4080011 - Panda Teddy & Trixter Omok Set - A set that allows you to play Omok. Uses Panda Teddy & Trixter-shaped figures for the game. +4080100 - A set of Match Cards - A set of Match Cards the game to play. +4130000 - Gloves Production Stimulator - Item option changes when you make gloves with this stimulator. However, creating item may result in failure by 10%. +4130001 - Shoes Production Stimulator - Item option changes when you make shoes with this stimulator. However, creating item may result in failure by 10%. +4130002 - One-Handed Sword Forging Stimulator - Item option changes when you make one-handed sword with this stimulator. However, creating item may result in failure by 10%. +4130003 - One-Handed Axe Forging Stimulator - Item option changes when you make one-handed axe with this stimulator. However, creating item may result in failure by 10%. +4130004 - One-Handed Blunt Weapon Forging Stimulator - Item option changes when you make one-handed blunt weapon with this stimulator. However, creating item may result in failure by 10%. +4130005 - Two-Handed Sword Forging Stimulator - Item option changes when you make two-handed sword with this stimulator. However, creating item may result in failure by 10%. +4130006 - Two-Handed Axe Forging Stimulator - Item option changes when you make two-handed axe with this stimulator. However, creating item may result in failure by 10%. +4130007 - Two-Handed Mace Forging Stimulator - Item option changes when you make two-handed mace with this stimulator. However, creating item may result in failure by 10%. +4130008 - Spear Forging Stimulator - Item option changes when you make spear with this stimulator. However, creating item may result in failure by 10%. +4130009 - Pole Arm Forging Stimulator - Item option changes when you make pole arm with this stimulator. However, creating item may result in failure by 10%. +4130010 - Wand Production Stimulator - Item option changes when you make wand with this stimulator. However, creating item may result in failure by 10%. +4130011 - Staff Production Stimulator - Item option changes when you make staff with this stimulator. However, creating item may result in failure by 10%. +4130012 - Bow Production Stimulator - Item option changes when you make bow with this stimulator. However, creating item may result in failure by 10%. +4130013 - Crossbow Production Stimulator - Item option changes when you make crossbow with this stimulator. However, creating item may result in failure by 10%. +4130014 - Dagger Forging Stimulator - Item option changes when you make dagger with this stimulator. However, creating item may result in failure by 10%. +4130015 - Claw Production Stimulator - Item option changes when you make claw with this stimulator. However, creating item may result in failure by 10%. +4130016 - Knuckler Production Stimulator - Item option changes when you make the Knuckler with this stimulator. However, there's a 10% chance of failure. +4130017 - Gun Production Stimulator - Item option changes when you make the gun with this stimulator. However, there's a 10% chance of failure. +4131000 - One-Handed Sword Forging Manual - Worn-out one-handed sword forging manual. +4131001 - One-Handed Axe Forging Manual - Worn-out one-handed axe forging manual. +4131002 - One-Handed Blunt Weapon Forging Manual - Worn-out one-handed blunt weapon forging manual. +4131003 - Two-Handed Sword Forging Manual - Worn-out two-handed sword forging manual. +4131004 - Two-Handed Axe Forging Manual - Worn-out two-handed axe forging manual. +4131005 - Two-Handed Mace Forging Manual - Worn-out two-handed blunt weapon forging manual +4131006 - Spear Forging Manual - Worn-out spear forging manual +4131007 - Pole Arm Forging Manual - Worn-out pole arm forging manual +4131008 - Wand Production Manual - Worn-out wand production manual +4131009 - Staff Production Manual - Worn-out staff production manual +4131010 - Bow Production Manual - Worn-out bow production manual +4131011 - Crossbow Production Manual - Worn-out crossbow production manual +4131012 - Dagger Forging Manual - Worn-out dagger forging manual +4131013 - Claw Production Manual - Worn-out claw production manual +4131014 - Knuckler Production Manual - A worn-out Knuckler production manual. +4131015 - Gun Production Manual - A worn-out gun production manual. +4140000 - Chocolate Stick - A tasty-looking chocolate-dipped cookie stick. +4140100 - Heart Chocolate - A chocolate encased in a heart-shaped box. +4140101 - Pineapple Candy for White Day - A tasty pineapple candy. +4140102 - Strawberry Candy for White Day - A tasty strawberry candy. +4140103 - Certificate of Assistant - Much like the Safety Charm, it does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140200 - Chocolate Basket - A well-decorated basket full of chocolate. +4140201 - Candy Basket for White Day - A candy basket full of sweet candies. It does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140300 - Power of Moon - A piece of rock that contains the mysterious power of moon. It does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140301 - Power of Star - A piece of rock that contains the mysterious power of a star. It does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140302 - Defense Charm - A self-defense charm given as an event prize. It prevents EXP loss upon death. \n Good for 1 use. +4140900 - White Day - Strawberry Candy - A sweet strawberry candy. Much like the Safety Charm, it does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140901 - White Day - Candy Basket - A candy basket full of love. Much like the Safety Charm, it does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140902 - Pineapple Candy - A sweet pineapple candy. Much like the Safety Charm, it does not let the user lose EXP points after death, as long as it's in possession. #cCan be used ONCE within the expiration date# +4140903 - Easter Charm - This will allow the possessor of the item to retain all of the EXP points even after death. The item will be discarded after use. +4160000 - Pet Command Guide : Puppy - A guide that has all the commands for the puppy.\n#cDouble-click on the item to open the guide.# +4160001 - Pet Command Guide : Kitty - A guide that has all the commands for the Kitty.\n#cDouble-click on the item to open the guide.# +4160002 - Pet Command Guide : Bunny - A guide that has all the commands for the Bunny.\n#cDouble-click on the item to open the guide.# +4160003 - Pet Command Guide : Mini Kargo - A guide that has all the commands for Mini Kargo.\n#cDouble-click on the item to open the guide.# +4160004 - Pet Command Guide : Husky - A guide that has all the commands for the Husky.\n#cDouble-click on the item to open the guide.# +4160005 - Pet Command Guide : Pig - A guide that has all the commands for the pig.\n#cDouble-click on the item to open the guide.# +4160006 - Pet Command Guide : Panda - A guide that has all the commands for the Panda.\n#cDouble-click on the item to open the guide.# +4160007 - Pet Command Guide : Dino - A guide that has all the commands for the Dino.\n#cDouble-click on the item to open the guide.# +4160008 - Pet Command Guide : White Tiger - A guide that has all the commands for the White Command.\n#cDouble-click on the item to open the guide.# +4160009 - Pet Command Guide : Rudolph - A guide that has all the commands for the Rudolph.\n#cDouble-click on the item to open the guide.# +4160010 - Pet Command Guide : Monkey - A guide that has all the commands for Monkey.\n#cDouble-click on the item to open the guide.# +4160011 - Pet AP Reset Scroll - An important scroll that enables one to adjust the pet ability points. \n#cDouble-click on the item for more information.# +4160012 - Pet Command Guide : Mini Yeti - A guidebook that details the commands that can be said to Mini Yeti.#cDouble-click on the item to open the book.# +4160013 - Pet Command Guide : Robot - A guide that has all the commands for the Robot.\n#cDouble-click on the item to open the guide.# +4160014 - Pet Command Guide : Penguin - A guide that has all the commands for the Penguin.\n#cDouble-click on the item to open the guide.# +4160015 - Pet Command Guide : Jr. Balrog - A guide that has all the commands for the Jr. Balrog.\n#cDouble-click on the item to open the guide.# +4160016 - Pet Command Guide : Elephant - A guide that has all the commands for the Elephant.\n#cDouble-click on the item to open the guide.# +4160017 - Pet Command Guide : Golden Pig - A guide that has all the commands for the Golden Pig.\n#cDouble-click on the item to open the guide.# +4160019 - Pet Command Guide : Sun Wu Kong - A guide that has all the commands for Sun Wu Kong.\n#cDouble-click on the item to open the guide.# +4160020 - Pet Command Guide : Turkey - A guide that has all the commands for the Turkey.\n#cDouble-click on the item to open the guide.# +4160022 - Pet Command Guide : Baby Dragon - A guide that has all the commands for the Baby Dragon.\n#cDouble-click on the item to open the guide.# +4160023 - Pet Command Guide : Green/Red/Blue Dragon - A guide that has all the commands for the Green/Red/Blue Dragon.\n#cDouble-click on the item to open the guide.# +4160024 - Pet Command Guide : Black Dragon - A guide that has all the commands for the Black Dragon.\n#cDouble-click on the item to open the guide.# +4160026 - Pet Command Guide : Jr. Reaper - A guide that has all the commands for the Jr. Reaper.\n#cDouble-click on the item to open the guide.# +4160027 - Pet Command Guide : Porcupine - A guide that has all the commands for the porcupine.\n#cDouble-click on the item to open the guide.# +4160028 - Pet Command Guide : Jr. Reaper - A guide that has all the commands for the pet Jr. Reaper.n#cDouble-click on the item to open the guide.# +4160029 - Pet Command Guide : Snowman - A guide that has all the commands for the Snowman.\n#cDouble-click on the item to open the guide.# +4160031 - Pet Command Guide : Hedgehog - A guide that has all the commands for the pet hedgehog.n#cDouble-click on the item to open the guide.# +4160032 - Pet Command Guide : Skunk - A guide that has all the commands for the Skunk.\n#cDouble-click on the item to open the guide.# +4160033 - Pet Command Guide : Kino - A guide that has all the commands for the pet Kino.n#cDouble-click on the item to open the guide.# +4161000 - Gwin's Diary - A diary that was inside what appears to be Gwin's bag. Can we findout his whereabouts?\n#cDouble-click on the item to open the diary.# +4161001 - Beginner's Guide - A thorough guide for the beginners.\n#cDouble-click on the item to open the book.# +4161002 - Attendance Book - An attendance book that proves you are an honest traveler.\n#cYou can open the book by double clicking the item.# +4161003 - Attendance Book - An attendance book that proves you are an honest traveler.\n#cYou can open the book by double clicking the item.# +4161004 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161005 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161006 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161007 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161008 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161009 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161010 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161011 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161012 - Attendance Book - A diligent traveler in MapleStory can now prove his/her diligence in traveling through this attendance book. \n#cDouble-click on the item to open the book.# +4161013 - Leafre Guidebook - A book that details different ways to get to Leafre in Ossyria. \n#cDouble-click on the item to open the book.# +4161014 - Diary of the Goddess - This diary is written by Minerva the Goddess.\n#cDouble-click on the item to read the book.# +4161015 - [Storybook] Burning Book of Fire - A book with a flaming cover. There's nothing written inside. Perhaps Bishop Gritto can help?\nJob : #cArch Mage (Fire/Poison)# +4161016 - [Storybook] Frozen Book of Ice - A book with frozen ice on its cover. There's nothing written inside. Perhaps Bishop Gritto can help?\nJob : #cArch Mage (Ice/Lightning)# +4161017 - Caron's Note - A black notebook with no title or whatsoever. Some of the notes inside were taken by Caron, the sailor sailiing through the River of Death +4161018 - [Storybook] Ancient Book - A strange, blank book with neither a title nor anything written inside it. Wiz the librarian might know something about this book.\nOnly for :#c4th Job Bowman# +4161019 - Sayram's Journey - A book that chronicles the various adventures of Sayram, a legendary Warrior. +4161020 - Story of a Magician - A book that chronicles the life of a magician who, despite showing signs of pure genius, managed to fall in love with banned magic and became a mad magician. +4161021 - [Storybook] Formula for Black Cloud - A book that features the blueprint on the device that creates black clouds, as well as the step-by-step guide to using the device.\nJob : #cShadower# +4161022 - Burning Book of Fire - A book with a flaming cover. Inside, the book features texts on fire magic, as well as some undiscipherable phrases. +4161023 - Frozen Book of Ice - A book with frozen ice on its cover. Inside, the book features texts on ice magic, as well as some undiscipherable phrases. +4161024 - Bowman's Way - A bible for bowmen. It details the way bowmen train, as well as insights on 'Bowman Training Ground'. +4161025 - Road of Bowman - This is a training guideline book for Bowman. It contains how to train Bowman and the story of training field. +4161026 - Road of Bowman - This is a training guideline book for Bowman. It contains how to train Bowman and the story of training field. +4161027 - Road of Bowman - This is a training guideline book for Bowman. It contains how to train Bowman and the story of training field. +4161028 - Road of Bowman - This is a training guideline book for Bowman. It contains how to train Bowman and the story of training field. +4161029 - Road of Bowman - This is a training guideline book for Bowman. It contains how to train Bowman and the story of training field. +4161030 - Book on Herbal Medicine - This book contains formulas of various medicines created by Mr. Do, some more outrageous and questionable than others. If in possession of this book, Mr. Do will create those medicines. +4161031 - Dran's Note - A book written by the missing alchemist, Dran, on his studies. Looking into the book, it doesn't resemble study notes as much as a diary. +4161032 - Dran's Note - A book written by the missing alchemist, Dran, on his studies. Looking into the book, it doesn't resemble study notes as much as a diary. +4161033 - Dran's Note - A book written by the missing alchemist, Dran, on his studies. Looking into the book, it doesn't resemble study notes as much as a diary. +4161034 - Dran's Note - A book written by the missing alchemist, Dran, on his studies. Looking into the book, it doesn't resemble study notes as much as a diary. +4161035 - The Legend of Snail - A book chronicling the history of snails, the creature with the longest life span in Maple World. +4161036 - Song : Twinkle Twinkle Little Star - A book that contains the notes to play beautiful music. This book has the notes of Twinkle Twinkle Little Star. +4170000 - Pigmy Egg - Pigmy of Henesys laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170001 - Pigmy Egg - Pigmy of Ellinia laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170002 - Pigmy Egg - Pigmy of Kerning City laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170003 - Pigmy Egg - Pigmy of Perion laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170004 - Pigmy Egg - Pigmy of El Nath laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170005 - Pigmy Egg - Pigmy of Ludibrium laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170006 - Pigmy Egg - Pigmy of Orbis laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170007 - Pigmy Egg - Pigmy of Aquarium laid this egg. The egg is so hard and dense that it will simply not break unless using a special tool. +4170009 - Pigmy Egg - An egg laid by Pigmy in Notilus. The egg is so steely strong, that unless a special device is used, this doesn't crack. #cDouble-click it to put it on the incubator.# +4210000 - Moon stone ring - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210001 - Moon stone ring 2 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210002 - Moon stone ring 3 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement.. +4210003 - Shining star ring - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210004 - Shining star ring 2 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210005 - Shining star ring 3 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210006 - Gold heart ring - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210007 - Gold heart ring 2 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210008 - Gold heart ring 3 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210009 - Silver wing ring - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210010 - Silver wing ring 2 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4210011 - Silver wing ring 3 karat - This is a seal of love that you promised to marry someone you love. If you discard it, you break off the engagement. +4211000 - Simple wedding invitation - This is to invite someone to wedding. You can send it by double click. +4211001 - Sweetie wedding invitation - This is to invite someone to wedding. You can send it by double click. +4211002 - Premium wedding invitation - This is to invite someone to wedding. You can send it by double click. +4212000 - Simple wedding invitation - This is to invite someone to wedding. You can send it by double click. +4212001 - Sweetie wedding invitation - This is to invite someone to wedding. You can send it by double click. +4212002 - Premium wedding invitation - This is to invite someone to wedding. You can send it by double click. +4213000 - Love vow - This is a doll contains a love vow of a couple who are engaged. +4213001 - Approval for officiation - This is an approval document that priest Reberto will officiate the couple. +4214000 - Simple wedding receipt - This is a receipt that you got after simple wedding reservation. +4214001 - Sweetie wedding receipt - This is a receipt that you got after sweetie wedding reservation. +4214002 - Premium wedding receipt - This is a receipt that you got after premium wedding reservation. +4220000 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220001 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220002 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220003 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220004 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220005 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220006 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220007 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220008 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220009 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220010 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220011 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220012 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220013 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220014 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220015 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220016 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220017 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220018 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220019 - Flowerpot - Double click on the item to open the UI and it will grow faster with the help of sun. +4220020 - Stumpy's Seedling - A baby seedling from a dead Stumpy. +4220021 - Rag Doll - A doll made out of rag. Double-click it to make a doll out of the skeletal figure. If there comes a time where the doll is not needed, this needs to be returned to Jonas. +4220023 - Fortune Sheet - A sheet that details this year's fortunes on horoscope. +4031993 - Bartos' Favorite Juice - A savory juice that Bartos really likes to drink. +4220045 - Birthday Cake Box - A box that contains the cake commemorating the 5th anniversary of MapleStory. Double-click to see the cake. +4000367 - Recycle Water Bottle - An empty unwanted bottle dropped by Biner. +4000368 - Broken Wing - A fallen broken wing from batoo. +4000369 - Stop Sign - A piece of metal written with a stop word. Dropped by Stopnow. +4000370 - Metal Pole - An piece of extracted metal. It can be found from Stopnow and Nospeed. +4000371 - Speed Limit Sign - A piece of metal indicating speed limitation warning. +4000372 - Fire Extinguisher - Red Fire extinguisher that Freezer stole from CBD buildings. +4000373 - Ink - Octobunny's Ink. So dark but not toxic. +4000374 - Headlight - An old rusty light projector dropped by Trucker. +4000375 - Tires - Mini set of tires. It doesn't seem like it is usuable. +4000376 - Batteries - Car batteries that dropped from Trucker. It seems like it has ran out of power. +4000377 - Small Poop - A tiny stinky poop, relatively small sized. +4000378 - Big Poop - An enormous poop. It is extremely smelly. +4000379 - Green Essence - This Green Essence is extracted from Slimy. It contains a mysterious power. +4000380 - Pink Essence - This Pink Essence is extracted from Pac Pinky. It contains a mysterious power. +4000381 - White Essence - This White Essence is extracted from Mr. Anchor. It contains a mysterious power to unlock the door to secret. +4000382 - Blue Essence - This Blue Essence is extracted from Selkie Jr. It contains a mysterious power. +4000383 - Red Essence - This Red Essence is extracted from Mr. Anchor. It contains mysterious power. +4000384 - Black Essence - The black soul from Capt. Latanica. It seems extremely powerful. +4000385 - Soul Lantern - A mysterious lantern that glows in dark. It is believed that this lantern will produce an incredible power if it is used correctly. +4032133 - Zakum Diamond - (no description) +4032134 - Stone Denari - (no description) +4160034 - Pet Command Guide : Baby Robo - A guide that has all the commands for the Baby Robo.\n#cDouble-click on the item to open the guide.# +4160035 - Pet Command Guide : Blue/Red/Green/Gold Robo - A guide that has all the commands for the Blue/Red/Green/Gold Robo.\n#cDouble-click on the item to open the guide.# +4160036 - Pet Command Guide : Gorilla Robo - A guide that has all the commands for the Gorilla Robo.\n#cDouble-click on the item to open the guide.# +4001232 - White Gift Box - A white gift box that can be found inside the New Year's Lucky Pouch. Bring it to the Game Administrator to receive a gift from the box. +4001233 - Red Gift Box - A red gift box that can be found inside the New Year's Lucky Pouch. Bring it to the Game Administrator to receive a gift from the box. +4001234 - Blue Gift Box - A blue gift box that can be found inside the New Year's Lucky Pouch. Bring it to the Game Administrator to receive a gift from the box. +4001235 - Purple Gift Box - A purple gift box that can be found inside the New Year's Lucky Pouch. Bring it to the Game Administrator to receive a gift from the box. +4032176 - Rascal Snowpiece - A snowpiece dropped by those that are only too eager to spoil Maplemas for everyone. +4300000 - New Year's Card (Send) - A beautiful card with season's greetings. +4301000 - New Year's Card (Receive) - A beautiful card with season's greetings. Double click on it to read! +4032092 - Force of the Spirit - A magical item that contains the magic force of the Snow Spirit. Apparently it contains mystical magic... +4032094 - Snow Vigor - A magical vigor of snow that provides much-needed support to the snowman. Drop this item on the snowman and magical things may happen. +4032095 - Fake Snow Vigor - A magical vigor of snow that provides much-needed support to the snowman. Drop this item on the snowman and magical things may happen. +4032091 - A Secret Note - A secret note writen by Snow Spirit of Happyville for Alcaster. +4160037 - Pet Command Guide : Crystal Rudolph - A guide that has all the commands for the Crystal Rudolph.\n#cDouble-click on the item to open the guide.# +4032233 - Maple Necklace Chain - This can be used to create the Mind of Maple Necklace. +4032239 - Piece of Mind of Maple - A piece of Mind of Maple given by Chief Stan +4032247 - Richard's Letter - A love letter written by Richard. Needs to be delivered to Angelique of Amoria... +4160039 - Pet Command Guide : White Duck - A guide that has all the commands for the pet white duck.\n#cDouble-click on the item to open the guide.# +4032119 - MV's Sabre - A shining sabre of MV, hidden deep in the treasure dungeon. +4032118 - A secret letter - A secret letter that contains information about the traitorous MV. Needs to be delivered to Charles the Adventurer. +4032248 - Map to MV's Lair - (no description) +4000487 - Shadow Meso - (no description) +4001256 - Primal Claw - A symbolic weapon of Thief mastery. Although it can't be equipped, its power is palpable. This item must be placed in the Altar of Mastery to activate it. +4000443 - Cracked Hourglass - Cracked hourglass. It looks broken but it still functions. +4000444 - Green Cloth - A piece of clothing from the Memory Monk. +4000445 - Green Cone Hat - Hat worn by the Memory Monk Trainee +4000446 - Smiley Mask - A mask made from a smiley face. +4000447 - Green Helmet - Helmet worn by the Memory Guardian +4000448 - Green Heart - Heart of the Chief Memory Guardian +4000449 - Blue Cloth - A piece of clothing from the Qualm Monk +4000450 - Blue Cone Hat - Hat worn by the Qualm Monk Trainee. +4000451 - Neutral Mask - A mask made from an expressionless face. +4000452 - Blue Helmet - Helmet worn by the Qualm Guardian +4000453 - Blue Heart - Heart of the Chief Qualm Guardian +4000454 - Red Cloth - A piece of clothing from the Oblivion Monk. +4000455 - Red Cone Hat - Hat worn by the Oblivion Monk Trainee. +4000456 - Frowny Mask - A mask made from a frowny face. +4000457 - Red Helmet - It's a helmet that an Oblivion Guardian was wearing. +4000458 - Red Heart - Heart of the Chief Oblivion Guardian. +4000459 - Black Armor Fragment - A piece of the armor that was covering the guardian's shoulder. +4000460 - Whale's Helmet - Helmet worn by Dodo, the Whale of Time. +4000461 - Knight's Mask - Mask worn by Lilynouch, the Ice Knight. +4000462 - Guardian's Horn - Guardian Lyka's horn. +4001176 - Shovel - A small shovel with a short handle for easier shoveling. +4001177 - White Crewneck Shirt - A plain, white cotton shirt. +4001178 - Beach Sandals - A pair of sandals perfect for walking around the beach on a hot summer day. +4001179 - Water Gun for Training - It looks exactly like the Laser Gun, but it's a water gun, making it an optimal weapon for training. +4001180 - Gloves for Outside - A durable pair of gloves perfect for outside. +4001181 - Mittens - A warm, red furry pair of mittens. +4001182 - Clean Mop - A clean mop that hasn't been used yet. +4001183 - Training Uniform - A white training uniform featuring a red belt. The uniform lets in air and is very light, so the students won't pass out training under the sun. +4001184 - Durable Rake - A metal rake used to rake the farm. +4001185 - Warm Fur Boots - A pair of warm fur boots that goes up to the ankle. +4001186 - King's Turban - A special turban ordered by Abdullah VIII. Very fancy, to say the least. +4001190 - Blackhole Marble - Inside a clear marble, there is a black hole like figure swirling around. +4001191 - Excellent Agent Badge - A badge that is given to an agent who accomplishes their mission with excellence. +4001192 - Intelligence Document - Intelligence document that contains investigations regarding Master M and party quest monsters. +4001193 - Transparent Item for Lightning - A transparent item for lightning expressions. +4001198 - Altaire Fragment - This is given to those who save Altaire Camp from Forest of Poison Haze. +4020009 - Piece of Time - A raw ore of a gem that contains the power of time. +4021010 - Rock of Time - A fascinating gem that contains the power of time. +4031988 - Special Agent Badge - Item Agent O asked me to retrieve. I should take it back to Agent O. +4031991 - Timer's Egg - This is Timer's egg. It's too hard to crack. Ghosthunter Bob must know what to do with this. +4031992 - Springy Worm - This little worm lives in Ludirium. It's so small it's not at all threatening. +4031999 - Master M's Direction Scroll - Directions believed be written by Master M. +4032000 - Master M's Order Scroll - An order believed to be written by Master M. +4032001 - Master M's Command Scroll - A command believed to be written by Master M. +4032002 - Marble of Chaos - This marble was created by Temple Keeper. It can break the barrier with the chaotic power within. +4032086 - Mysterious Small Egg - A Fairy with a luscious purple hair said something that's hard to understand, then left a mysterious, small egg in the pocket. Can't figure out what this egg really is, but the Fairy may help identify the egg. +4161037 - A Guide to Using the Maker Skill - [Maker] This is a guide to help you use the Maker Skill. +4161042 - Santa Encyclopedia No.6 - Santa Encyclopedia that explains about the Santa village of Finland.\n#cDouble click on the item to open the book. +4161044 - Cygnus Knight's Book Volume 1 - A recording of the conversation I had with the book containing Cygnus' thoughts. +4161045 - Cygnus Knight's Book Volume 2 - A recording of the conversation I had with the book containing Cygnus' thoughts. +4161046 - Cygnus Knight's Book Volume 3 - A recording of the conversation I had with the book containing Cygnus' thoughts. +4220046 - Timer's Egg - This is Timer's egg. If you look closely in the half cracked shell, you'll see a baby Timer with wet feathers. +4280000 - Gold Box - A gold treasure chest dropped by a monster. This can be opened with the Gold Master Key available at the Cash Shop. If you already have the Master Key, just double-click the box to open it. +4280001 - Silver Box - A silver treasure chest dropped by a monster. This can be opened with the Silver Master Key available at the Cash Shop. If you already have the Master Key, just double-click the box to open it. +4220074 - Birthday Cake Box - A box that contains the cake commemorating the 4th anniversary of MapleStory. Double-click to see the cake. +4032306 - Yellow Birthday Candle - A candle Cody was looking for. +4032307 - Blue Birthday Candle - A candle Cody was looking for. +4032308 - Pink Birthday Candle - A candle Cody was looking for. +4032096 - Proof of Exam - The Proof of Exam used for the Knighthood Exam. Take it over to Mihile, and you will be acknowledged as a legitimate knight. +4032097 - Proof of Exam - The Proof of Exam used for the Knighthood Exam. Take it over to Oz, and you will be acknowledged as a legitimate knight. +4032098 - Proof of Exam - The Proof of Exam used for the Knighthood Exam. Take it over to Irena, and you will be acknowledged as a legitimate knight. +4032099 - Proof of Exam - The Proof of Exam used for the Knighthood Exam. Take it over to Eckhart, and you will be acknowledged as a legitimate knight. +4032100 - Proof of Exam - The Proof of Exam used for the Knighthood Exam. Take it over to Hawkeye, and you will be acknowledged as a legitimate knight. +4032101 - The Lost Treasure - The lost treasure that was stolen by the Master of Disguise who brazenly entered Ereve. Let's take it back to Mihile. +4032102 - The Lost Treasure - The lost treasure that was stolen by the Master of Disguise who brazenly entered Ereve. Let's take it back to Oz. +4032103 - The Lost Treasure - The lost treasure that was stolen by the Master of Disguise who brazenly entered Ereve. Let's take it back to Irena. +4032104 - The Lost Treasure - The lost treasure that was stolen by the Master of Disguise who brazenly entered Ereve. Let's take it back to Eckhart. +4032105 - The Lost Treasure - The lost treasure that was stolen by the Master of Disguise who brazenly entered Ereve. Let's take it back to Hawkeye. +4000209 - Co-ke Slimes Bell - The bell of Co-ke Slime that has been taken off. +4000210 - Co-ke Pigs Ribbon - A piece of Co-ke Pigs ribbon. +4000211 - Coca-Cola Cube - A cube with a drawing of a Coca-Cola bottle on it. +4000212 - CokePLAY Cube - A cube with the CokePLAY symbol. +4000213 - Coca-Cola Card - A card with a drawing of Coca-Cola. +4000214 - Coca-Cola Gem - A red gem with a Coca-Cola logo engraved on it. +4000216 - Coca-Cola Can - An empty can that had been filled with the sweet and tangy Coca-Cola. +4000217 - Coca-Cola Light Can - An empty can that had been filled with Coke Light, a drink with zero calories. +4000218 - Ice Shell - A turtle shell shaped like an igloo that is made of ice. +4000219 - Coke Ice Block - A block that had been part of the hard body of a Coke Golem. It looks like frozen Cola. +4000220 - Ice Block - A block that had been part of the hard body of an Ice Golem. +4000221 - Coke Bottle Lid - A bottle lid that a Coke Mushroom used to wear on its head. +4001142 - Henesys - Henesys +4001143 - Elinia - Elinia +4001144 - Perion - Perion +4001145 - Kerning City - Kerning City +4001146 - Lith Harbor - Lith Harbor +4001148 - Sleepywood - Sleepywood +4001149 - Aquarium - Aquarium +4001150 - Baekcho Village - Baekcho Village +4001151 - Happy Valley - Happy Valley +4001152 - Ariant - Ariant +4001153 - Magatia - Magatia +4031832 - Sophelias Portrait - A portrait of Sophelia. +4031833 - Pumpkin Juice - A juice made with pumpkin. It is very fragrant. +4031834 - Perfect Tool - The most perfect tool for making dolls. +4031835 - Lyudmillas Earring - The earrings that Lyudmilla lost. They shine with brilliance. +4031836 - Score - The score that Lyudmilla asked for. No one knows what kind of music is in it. +4031837 - Dumped Doll - A doll that Sophelia used to cherish a long time ago. She threw it away when she got a new doll. +4031838 - Piece of Cloth - A small piece of cloth. If you drag and drop it onto the rag doll, the doll will be completed bit by bit. +4000482 - Tino's Feather - Tino's feather that is as light as a flowerseed. +4000483 - Tiv's Feather - Tiv's Feather. So light, I was concerned it might just blow away. +4000484 - Timu's Feather - Timu's Feather. Still very soft in texture. +4000485 - Tiru's Feather - Tiru's Feather. A combination of numerous light Tiru's feathers. +4000486 - Tiguru's Feather - Tiguru's Feathers that are so soft and slick, one can make a pillow out of it. +4001174 - Practice Shoes - The most basic form of shoes for practice. +4001175 - Kid Shoes - Adorable cute shoes that are obviously only for dids. +4001187 - Beltin - A mysterious fish that allows one to sing well and in tune after eating it. +4001188 - Breakin - A mysterious fish that allows one to rock the dance floor after eating it. +4001189 - Poppin - A mysterious fish that allows one to sing well and in rhythm after eaten it. +4001197 - Bluish Mineral - A mineral featuring bluish color +4001199 - Straw - A warm set of straws used to make a bird's nest. Gather them all up, and bring them together and show them to Gaga. +4001201 - Funny Travel Stories - A tape that contained all the fun adventure stories recorded while on the road. +4001202 - Top 10 Pop Star Hits - A tape that only contained the lastest from radio and tv. +4001203 - Manji's Ragged Diary - An old, ragged diary that includes the war stories of Manji in Perion. Let's return it to the Maple Admin. +4001204 - Gwin's Travel Stories - A collection of travel storries that Gwin wrote. Need to hand it back to the Maple Admin. +4001205 - Ericsson's Travel Stories - A handwritten, gripping account of Ericsson's days as an explorer. +4001207 - Black Scale - A scale that's slightly dyed in black. Something doesn't seem right with this. +4001213 - Strange Mark - A mysterious-looking mark. +4001214 - Richie Gold - Golden Key - A key that leads to Richie Gold's treasure storage. Entering this storage alone requires 3 keys. \n#cRelated Quest:Richie Gold's Maze +4001215 - Whatever Charm - A charm that lets one skip a mission. +4001216 - Diamond Mark - It's a diamond mark. +4001217 - Heart Mark - It's a diamond mark. +4001218 - Space Mark - It's a space mark. +4001219 - Clover Mark - It's a clover mark. +4001237 - Slightly Polluted Rock - This rock has a slight hint of that unmistakable force of darkness. +4001238 - Polluted Rock - This rock really has the force of Black Mage stored in it. +4001239 - Heavily Polluted Rock - This rock contains a powerful force of Black Mage stored in it. +4001240 - Polluted Item - A piece of rock that has been irreparable damaged because of the force of the Black Mage. +4007000 - Magic Powder (Brown) - A brown Magic Powder used to create armors. +4007001 - Magic Powder (White) - A white Magic Powder used to create armors. +4007002 - Magic Powder (Blue) - A blue Magic Powder used to create armors. +4007003 - Magic Powder (Green) - A green Magic Powder used to create armors. +4007004 - Magic Powder (Yellow) - A yellow Magic Powder used to create armors. +4007005 - Magic Powder (Purple) - A purple Magic Powder used to create armors. +4007006 - Magic Powder (Red) - A red Magic Powder used to create armors. +4007007 - Magic Powder (Black) - A black Magic Powder used to create armors. +4031963 - Eel's Half Pendant - A pendant that Eels carries with, with a broken jewel on the pendant. +4031964 - Piece of Pendant - The other half of Eels's necklace. A perfect tft it with Eels's pendant. +4031965 - Eel's Pendant - Eels's pendant that is finally seeing its original night of day. It looks like it might have some mysterious power in it. +4031966 - Practice Shoes Order Form - Order : Keol\nItem : Practice Shoes\nUnits : 1\nUsage : For Test +4031967 - Kids' Shoes Order Form - Order : Keol\nItem : Kids' Shoes\nUnits : 1\nUsage : Gift +4031968 - Work Shovel Order Form - Order : Manager Karl\nItem : Shovel for work\nUnits : 10\nUsage : Restoring Eos Tower +4031969 - White Cotton Shirt Order Form - Order : Maple Admin\nItem : White Cotton Shirt\nUnits : 100\nUsage : For Beginners +4031970 - Beach Sandals Order Form - Order : Valen\nItem : Beach Sandals\nUnits : 5\nUsage : Store +4031971 - Training Gun Order Form - Order : General Maester\nItem : Training Gun\nUnits : 7\nUsage : For soldier trainees +4031972 - Outdoor Gloves Order Form - Order : Keol\nItem : Outdoor Gloves\nUnits : 1\nUsage : Personal +4031973 - Mittens Order Form - Order : Cliff\nItem : Mittens\nUnits : 1\nUsage : Personal +4031974 - Clean Mop Order Form - Order : Kyrin\nItem : Clean Mop\nUnits : 6\nUsage : To clean the deck +4031975 - Training Uniform Order Form - Order : No Gong\nItem : Training Uniform\nUnits : 30\nUsage : Worn during training +4031976 - Strong Rake Order Form - Order : Chil Sung, Chil Name\nItem : Solid, Strong Rake\nUnits : 2\nUsage : Farming, raking +4031977 - Fur Boots Order Form - Order : Nanuke\nItem : Warm Fur Boots\nUnits : 1\nUsage : Personal +4031978 - King's Turban Order Form - Order : Abdullah VIII\nItem : King's Turban\nUnits : 1\nUsage : Personal +4031979 - Doodly Paper - A piece of paper with illegible doodling on it.\n#Mix gold and iron in the ratio of 6:2, then cover it with wisdom and courage stored in Lithium.# Then... +4031980 - Gold Anvil - An anvil that glows in gold. +4032035 - A Lost Snipe - A Snipe that has lost her way. Take her and move up to a high point, where she can use the launch pad-like area to try to fly her way back home. +4032036 - Special Ticket to the Moon - As long as you have this with you, the Moon Bunny will give you the Sweet Rice Cake 5 times a day. +4032037 - Beef Slice - A single slice of beef. Marinate it, then grill it to try to make the Fire Grill Skewer. +4032038 - Dry Mushroom - A single slice of dried mushroom. Mix it with some seasoning to make a Fire Grill Skewer. +4032039 - Whole Bellflower - A whole bellflower that can be used as part of the Fire Grill Skewer if soaked in salt water +4032040 - Fire Grill Skewer Dish - Simply a Fire Grill Skewer placed on a pretty dish. Nothing says Thank You quite like a nice dish of Fire Grill Skewer. +4032041 - Moon Flower - A beautiful flower that apparently only grows on the moon. Constantly glitters, thanks to all that moonlight it's been soaking up. +4032042 - 1st Moon Photo Piece - The first piece of photo of the moon. Collect the other two, and it'll turn into a photo of a beautiful full moon. Place the pictures inside the envelope to make sure they don't rip. +4032043 - 2nd Moon Photo Piece - The second piece of photo of the moon. Collect the other two, and it'll turn into a photo of a beautiful full moon. Place the pictures inside the envelope to make sure they don't rip. +4032044 - 3rd Moon Photo Piece - The third piece of photo of the moon. Collect the other two, and it'll turn into a photo of a beautiful full moon. Place the pictures inside the envelope to make sure they don't rip. +4032066 - Baby Bird Feather - A soft feather presumably from a baby bird. Gaga will definitely like this. +4032083 - Ludmilla's Photo Albm - Ludmilla's Family Photo Albm +4032084 - Sophilia's Perfect Doll - A perfect Sophilia Doll made by Jonas +4032085 - Peto Doll - A doll that has the ability to transform into Peto. +4032087 - Lucky White Monkey Doll - A white monkey doll that is considered a lucky charm. Whether it really brings good luck remains to be seen. +4032088 - Ludmilla's Photo Albm - Ludmilla's Family Photo Albm +4032115 - Neinheart's Letter - A letter of introduction from Neinheart. Hand this to Kiridu the Mount Trainer, and you'll learn to ride a Mount available exclusively to the knights. +4032116 - Kiridu's Letter - A letter of introduction from Kiridu. Hand this to Kenta of Aquarium, and you'll receive a saddle for your Mount. +4032117 - Kenta's Special Supplements - A special form of supplements concocted by Kenta. +4032120 - Proof of Qualification - The Proof of Qualification that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032121 - Proof of Qualification - The Proof of Qualification that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032122 - Proof of Qualification - The Proof of Qualification that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032123 - Proof of Qualification - The Proof of Qualification that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032124 - Proof of Qualification - The Proof of Qualification that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032125 - Proof of Ability - The Proof of Ability that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032126 - Proof of Ability - The Proof of Ability that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032127 - Proof of Ability - The Proof of Ability that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032128 - Proof of Ability - The Proof of Ability that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032129 - Proof of Ability - The Proof of Ability that is required to learn a new skill. This proof signifies that you are ready to learn a new skill. +4032130 - Pig Doll - An adorable doll that resembles a pig. However, something doesn't seem right +4032131 - Pig Doll - An adorable doll that resembles a pig. However, something doesn't seem right +4032132 - Roca's Mission Report - A mission report written by Roca, the Agent for Henesys. This compiles a list of events that have taken place recently. +4032136 - Bubbling Doll - An adorable doll that was designed based on Bubbling, but something doesn't seem right. The way it smiles just seems a bit off, as if it has hidden agenda. +4032137 - Bubbling Doll - An adorable doll that was designed based on Bubbling, but something doesn't seem right. The way it smiles just seems a bit off, as if it has hidden agenda. +4032138 - Bubbling Doll - An adorable doll that was designed based on Bubbling, but something doesn't seem right. It's intears. +4032139 - Old Key - An old, rusty key that Mr. Pickall has been looking for. +4032140 - Bubbling Doll - An adorable doll that was designed based on Bubbling, but something doesn't seem right. It's intears. +4032141 - Mattias' Mission Report - A mission report written by Roca, the Agent for Kerning City. This compiles a list of events that have taken place recently. +4032142 - Clear Tree Sap - A clear tree sap that can only be found at the very top of the skyscraping trees. Accompanied by the freshest green scent. +4032143 - Fruit - A fruit picked from plants near Henesys. +4032144 - Hersha's Mission Report - A mission report written by Hersha, the Agent for Ellinia. This compiles a list of events that have taken place recently. +4032145 - Detector - A detector made to detect any forces of darkness. Take this to the 10 Boogies. +4032146 - Wooden Mask Doll - An adorable doll modeled after the Wooden Mask, but something doesn't seem right +4032147 - Rocky Mask Doll - An adorable doll modeled after the Stone Mask, but something doesn't seem right +4032148 - Detector - A detector created with the sole purpose of detecting the Puppeteer's movements. We put it to good use, so let's return it to Neinheart. +4032149 - 10 Boogies' Mission Report - A mission report written by 10 Boogies, the Agents for Perion. This compiles a list of events that have taken place recently. +4032178 - Hack Attempt - A record that shows that Chief Grays tried to hack into the system. +4032179 - Ereve Investigation Permit - A permitt that allows one to investigate every part of Ereve. When the Red Alert is on, this permit is the only way you can roam freely around Ereve. +4032190 - Orange Mushroom Doll - An adorable doll modeled after the Orange Mushroom, but something doesn't seem right +4032196 - Concentrated Formula: Step 1 - A formula concentrated with effective and potent ingredients. The first formula used to raise Mimiana and Mimio +4032197 - Concentrated Formula: Step 2 - A formula concentrated with effective and potent ingredients. The second formula used to raise Mimiana and Mimio. +4032198 - Concentrated Formula: Step 3 - A formula concentrated with effective and potent ingredients. The third formula used to raise Mimiana and Mimio. +4032206 - Ellinia Alpine Plants - Plants that only grow in Ellinia. They closely resemble fernbrakes. +4032208 - Neinheart's Letter - A letter of introduction from Neinheart. Give this to Kiridu the Mount Trainer, and you'll learn to ride a Mount available exclusively to the knights. +4130018 - Armor Production Stimulator - Use this when making a headgear to change the item option. Beware that this also carries a 10% risk of ruining the item production. +4130019 - Topwear Production Stimulator - Use this when making a topwear to change the item option. Beware that this also carries a 10% risk of ruining the item production. +4130020 - Bottomwear Production Stimulator - Use this when making a bottomwear to change the item option. Beware that this also carries a 10% risk of ruining the item production. +4130021 - Overall Production Stimulator - Use this when making an overall to change the item option. Beware that this also carries a 10% risk of ruining the item production. +4130022 - Shield Production Stimulator - Use this when making a shield to change the item option. Beware that this also carries a 10% risk of ruining the item production. +4220067 - Moon - An envelope used to contain a picture of the moon. Made out of durable paper that will not rip as a result of shock caused by jumping. Once you acquire a piece of the moon photo, double-click on it to open the envelope, then drag the piece of photo into it. +4220137 - Mimiana Egg - An egg of Mimiana, the Mount for knights. Watch the egg grow into a full-grown Mimiana by sharing your experiences with it. Once it matures into a full-grown creature, take it to Kiridu the Mount Trainer. +4220138 - Glass Incubator - A glass incubator where Mimiana is stored. Drag the food into the incubator to feed Mimiana. Once it matures, take it back to Kiridu the Mount Trainer. +4220139 - Mimiana Egg - An egg of Mimiana, the Mount for knights. Watch the egg grow into a full-grown Mimiana by sharing your experiences with it. Once it matures into a full-grown creature, take it to Kiridu the Mount Trainer. +4220145 - Mimiana Egg - An egg of Mimiana, the Mount for knights. Watch the egg grow into a full-grown Mimiana by sharing your experiences with it. Once it matures into a full-grown creature, take it to Kiridu the Mount Trainer. +4220146 - Mimiana Egg - An egg of Mimiana, the Mount for knights. Watch the egg grow into a full-grown Mimiana by sharing your experiences with it. Once it matures into a full-grown creature, take it to Kiridu the Mount Trainer. +4250000 - Basic Diamond - A jewel used primarily for item-production.\nWeapon ATT+1 +4250001 - Intermediate Diamond - A jewel used primarily for item-production.\nWeapon ATT+2 +4250002 - Advanced Diamond - A jewel used primarily for item-production.\nWeapon ATT+3 +4250100 - Basic Sapphire - A jewel used primarily for item-production.\nMagic ATT+1 +4250101 - Intermediate Sapphire - A jewel used primarily for item-production.\nMagic ATT+2 +4250102 - Advanced Sapphire - A jewel used primarily for item-production.\nMagic ATT+3 +4250200 - Basic Garnet - A jewel used primarily for item-production.\nAccuracy+2 +4250201 - Intermediate Garnet - A jewel used primarily for item-production.\nAccuracy+3 +4250202 - Advanced Garnet - A jewel used primarily for item-production.\nAccuracy+5 +4250300 - Basic Opal - A jewel used primarily for item-production.\nAvoidability+2 +4250301 - Intermediate Opal - A jewel used primarily for item-production.\nAvoidability+3 +4250302 - Advanced Opal - A jewel used primarily for item-production.\nAvoidability+5 +4250400 - Basic Amethyst - A jewel used primarily for item-production.\nSpeed+2 +4250401 - Intermediate Amethyst - A jewel used primarily for item-production.\nSpeed+3 +4250402 - Advanced Amethyst - A jewel used primarily for item-production.\nSpeed+5 +4250500 - Basic AquaMarine - A jewel used primarily for item-production.\nJump+1 +4250501 - Intermediate AquaMarine - A jewel used primarily for item-production.\nJump+2 +4250502 - Advanced AquaMarine - A jewel used primarily for item-production.\nJump+3 +4250600 - Basic Topaz - A jewel used primarily for item-production.\nMaxHP+10 +4250601 - Intermediate Topaz - A jewel used primarily for item-production.\nMaxHP+20 +4250602 - Advanced Topaz - A jewel used primarily for item-production.\nMaxHP+30 +4250700 - Basic Emerald - A jewel used primarily for item-production.\nMaxMP+10 +4250701 - Intermediate Emerald - A jewel used primarily for item-production.\nMaxMP+20 +4250702 - Advanced Emerald - A jewel used primarily for item-production.\nMaxMP+30 +4250800 - Basic Power Crystal - A jewel used primarily for item-production.\nSTR+2 +4250801 - Intermediate Power Crystal - A jewel used primarily for item-production.\nSTR+3 +4250802 - Advanced Power Crystal - A jewel used primarily for item-production.\nSTR+5 +4250900 - Basic Wisdom Crystal - A jewel used primarily for item-production.\nINT+2 +4250901 - Intermediate Wisdom Crystal - A jewel used primarily for item-production.\nINT+3 +4250902 - Advanced Wisdom Crystal - A jewel used primarily for item-production.\nINT+5 +4251000 - Basic LUK Crystal - A jewel used primarily for item-production.\nLUK+2 +4251001 - Intermediate LUK Crystal - A jewel used primarily for item-production.\nLUK+3 +4251002 - Advanced LUK Crystal - A jewel used primarily for item-production.\nLUK+5 +4251100 - Basic DEX Crystal - A jewel used primarily for item-production.\nDEX+2 +4251101 - Intermediate DEX Crystal - A jewel used primarily for item-production.\nDEX+3 +4251102 - Advanced DEX Crystal - A jewel used primarily for item-production.\nDEX+5 +4251200 - Basic Secret Crystal - A jewel used primarily for item-production.\nRequired Level -1 +4251201 - Intermediate Secret Crystal - A jewel used primarily for item-production.\nRequired Level -2 +4251202 - Advanced Secret Crystal - A jewel used primarily for item-production.\nRequired Level -3 +4251300 - Basic Black Crystal - A jewel used primarily for item-production.\nThere's no way to tell how the item will turn out with this. +4251301 - Intermediate Black Crystal - A jewel used primarily for item-production.\nThere's no way to tell how the item will turn out with this. +4251302 - Advanced Black Crystal - A jewel used primarily for item-production.\nThere's no way to tell how the item will turn out with this. +4251400 - Basic Dark Crystal - A jewel used primarily for item-production.\nThere's no way to tell how the item will turn out with this. +4251401 - Intermediate Dark Crystal - A jewel used primarily for item-production.\nThere's no way to tell how the item will turn out with this. +4251402 - Advanced Dark Crystal - A jewel used primarily for item-production.\nThere's no way to tell how the item will turn out with this. +4260000 - Basic Monster Crystal 1 - A Monster Crystal that was formed by combining the droppings of monsters on level 31 ~ 50. +4260001 - Basic Monster Crystal 2 - A Monster Crystal that was formed by combining the droppings of monsters on level 51 ~ 60. +4260002 - Basic Monster Crystal 3 - A Monster Crystal that was formed by combining the droppings of monsters on level 61 ~ 70. +4260003 - Intermediate Monster Crystal 1 - A Monster Crystal that was formed by combining the droppings of monsters on level 71 ~ 80. +4260004 - Intermediate Monster Crystal 2 - A Monster Crystal that was formed by combining the droppings of monsters on level 81 ~ 90. +4260005 - Intermediate Monster Crystal 3 - A Monster Crystal that was formed by combining the droppings of monsters on level 91 ~ 100. +4260006 - Advanced Monster Crystal 1 - A Monster Crystal that was formed by combining the droppings of monsters on level 101 ~ 110. +4260007 - Advanced Monster Crystal 2 - A Monster Crystal that was formed by combining the droppings of monsters on level 111 ~ 120. +4260008 - Advanced Monster Crystal 3 - A Monster Crystal that was formed by combining the droppings of monsters on level 121 ~ 130. +4000508 - Miwok Artifact - An artifact in which the Miwok tribe has sealed their treasure. Purchase an Enchanted Scroll at the Cash Shop in order to release the seal and retrieve the treasure, and take it to NPC Toh Relicseeker. +4000509 - Old Tree Branch of the Wise One - The Old Tree Branch that the Wise One from the Miwok tribe used to predict the future. Kopee Relicseeker says she can make the legendary ring using the tree branch. +4000510 - Bluejay Feather of the Wise One - The Bluejay Feather that the Wise One from the Miwok tribe used to predict the future. Kopee Relicseeker says she can make the legendary ring using the feather. +4000511 - Red Bird Feather of the Wise One - The Red Bird Feather that the Wise One from the Miwok tribe used to predict the future. Kopee Relicseeker says she can make the legendary ring using the feather. +4000512 - Cat Eye of the Brave One - The cat eye with which the Brave One from the Miwok tribe equipped himself in battles. Kopee Relicseeker says she can make the legendary ring using the cat eye. +4000513 - Buffalo Horns of the Brave One - The buffalo horn with which the Brave One from the Miwok tribe equipped himself in battles. Kopee Relicseeker says she can make the legendary ring using the horn. +4000514 - Puma Bones of the Brave One - The puma bone with which the Brave One from the Miwok tribe equipped himself in battles. Kopee Relicseeker says she can make the legendary ring using the puma bones. +4032404 - Miwok Artifact Piece - A piece that appears to be a fragment of the Miwok Artifact. +4001254 - Shiny Maple Coin - An octagonal gold coin with a maple mark. The Shiny Maple Coins can be traded for items from Spiegelmann. +4000515 - Aramia's Book - Aramia's Book-Drive Book +4160040 - Pet Guide : Pink Bean - A guide that has all the commands for the Pink Bean.\n#cDouble-click on the item to open the guide.# +4032246 - Spirit of Fantasy Theme Park - Very important key item to save Fantasy Theme Park from monsters' threat. +4000469 - Scarf - Must have fashion item. +4000470 - Tall Hat - Victorian silk hat. +4000471 - Rodeo's Master - Master of a Rodeo +4000472 - Charmer's Flute - Deadly weapon of Charmer. +4000473 - Dented Barrel - Dented wooden barrel soaked with oil. +4000474 - Lucky Hat - Cute little hat that Froscola loves to wear. +4000475 - Lucky Bus Ticket - Bus ticket that can take you to the city. +4000476 - Toy Plane - Cute little toy plane, perfect as a gift for children. +4000477 - Viking Helmet - Nice sturdy Viking style helmet. +4000478 - Wooden Pony Tail - Wooden tail of Gallopera. +4001242 - Scarlion Boss's Foot - Scarlion Boss's magical foot. +4001241 - Targa's Foot - Targa's magical foot. +4000465 - Coconut Husk - Coconut husk that Chlorotrap had left. +4000466 - Rebab - Traditional musical instrument of Malaysia. +4000467 - Yellow Wig - Silky and shiny hair of Dark Fission. +4000468 - Somebody's Tire - A tire that Oly Oly stole from someone. +4001245 - Pigmy's Golden Egg - Pigmy's Golden Egg. It can only be hatched by a fairy from a fairytale. +4001246 - Warm Sunlight - Drop the Warm Sunlight in front of the Bean Stalk to make it grow. +4001247 - Story Treasure Box - A Treasure Box hidden in the Dungeon. +4001255 - Golden Pig's Hard Egg - It's too hard to open. It may be a good idea to bring it to Goldrich. +4001261 - Piece of Balrog Leather - A piece of leather from a Balrog's rough hide. +4001263 - Fine Wool - This wool is fine. +4001264 - Shepherd Boy's Lunch. - This is a Shepherd Boy's Lunch. Collect and deliver them to the Lamb. You can get a reward when you win. +4001268 - Brown Krypto Crystal - A Brown Krypto Crystal containing the mysterious energies of space. +4001269 - Emerald Krypto Crystal - An Emerald Krypto Crystal containing the mysterious energies of space. +4001270 - Warm-hearted Child's Note - An item that is falsely rumored to be only visible to warm-hearted children. Take it to Cassandra. +4001271 - Lost Child - A child that is lost. +4001272 - Giant Nependeath Seed - A seed from a Giant Nependeath. It's very big. +4001300 - Granada - A captivating single rose loved by the Witch. +4001301 - Gaga's Excavation Permit - A permit that allows one to dig up relics. Talk to Gaga to receive another permit. +4001302 - Valuable Artifact - A relic that looks very rare. +4001303 - Petrified Mouse - The first of 8 treasures mentioned by Shuang. +4001304 - Gaga's Glasses - The second of 8 treasures mentioned by Shuang. +4001305 - Cassandra's Crystal Ball - The third of 8 treasures mentioned by Shuang. +4001306 - The Shiny Watch - The fourth of 8 treasures mentioned by Shuang. +4001307 - A Soccer Cleat - The fifth of 8 treasures mentioned by Shuang. +4001308 - The Quest Completion Book - The sixth of 8 treasures mentioned by Shuang. +4001309 - A Pretty Hair-Tie - The seventh of 8 treasures mentioned by Shuang. +4001310 - An Old Shoe - The last of 8 treasures mentioned by Shuang. +4001311 - Ancient Relic - A relic that appears to be very old. +4001316 - Cassandra's Album - A photo album filled with Cassandra's baby pictures. +4032250 - Mysterious Piece of Paper - A piece of paper filled with mysterious scribbles. It looks like an item lost by Mu Young, Manji's apprentice. Take it to Mu Young. +4032262 - Mu Young's Message - A letter that Mu Young asked you to deliver to Manji, his teacher. You must deliver it to Manji in Perion. +4032263 - Shaman Charm - A Charm given to you by Chrishrama to be placed on a Shaman Rock. It is said that it contains energies that can chase away evil. +4032264 - Spring Flower Seed - A seed that grows into a Spring Flower. +4032265 - Spring Flower Petal - The petals that make up the Spring Flower. +4032266 - Dazzling Sunlight - Dazzling sunlight filled with the feeling of spring. +4032267 - Building Stone - A hard building stone that came out of a box. Looks suitable for making a chair. +4032268 - Drape - A drape that came out of a box. Looks suitable for making a chair. +4032269 - Noblesse Certificate - A certificate proving that you've learned the basic controls for the game. You must show it to Empress Cygnus. +4032270 - Glistening Sunlight - Glistening sunlight filled with the feeling of spring. +4032271 - Pure Small Sprout - A fragrant new sprout filled with the energies of spring. Used as an ingredient for Pure Perfume. +4032272 - Stationery of Longing - Pink stationary that's rumored to return a favorable response if used to send a letter to a secret crush. +4032273 - Pencil of Courage X 10 - A pencil that's used to write things you dont have the courage to say. +4032275 - Pure Normal Sprout - A fragrant new sprout filled with the energies of spring. Used as an ingredient for Pure Perfume. +4032276 - Pure Sprout - A fragrant new sprout filled with the energies of spring. Used as an ingredient for Pure Perfume. +4032277 - Pure Large Sprout - A fragrant new sprout filled with the energies of spring. Used as an ingredient for Pure Perfume. +4032278 - Stationery of Deep Longing - Pink stationary that's rumored to return a favorable response if used to send a letter to a secret crush. +4032279 - Stationary of Hope and Longing - Pink stationary that's rumored to return a favorable response if used to send a letter to a secret crush. +4032280 - Letter of Love and Longing - Pink stationary that's rumored to return a favorable response if used to send a letter to a secret crush. +4032281 - Pencil of Courage X 100 - A pencil that's used to write things you dont have the courage to say. +4032282 - Pencil of Courage X 1000 - AA pencil that's used to write things you dont have the courage to say. +4032283 - Pencil of Courage X 10000 - A pencil that's used to write things you dont have the courage to say. +4032284 - Child's Broken Toy - A toy stolen from a child by a monster. It's broken and cannot be used. +4032285 - Child's Broken Toy - A toy stolen from a child by a monster. It's broken and cannot be used. +4032286 - Child's Broken Toy - A toy stolen from a child by a monster. It's broken and cannot be used. +4032287 - Child's Broken Toy - A toy stolen from a child by a monster. It's broken and cannot be used. +4032288 - Neinheart's Taxi Coupon - A Taxi coupon given to you by Neinheart. If you're in Ellinia, a taxi will take you to Henesys for free 1 time. +4032298 - Party Balloon - A MapleStory 6th Anniversary Party Item. +4032299 - Party Firecracker - A MapleStory 6th Anniversary Party Item. +4032300 - Party Candle - A MapleStory 6th Anniversary Party Item. +4032301 - Party Conehat - A MapleStory 6th Anniversary Party Item. +4032302 - Amazing Watercolor Paint - These amazing watercolor paints can be used to draw portraits of the Orange Mushroom, Octopus, and Yeti. +4032303 - Mystical Watercolor Paint - These mystical watercolor paints can be used to draw portraits of the Orange Mushroom, Octopus, and Yeti. +4032304 - Magical Watercolor Paint - These magical watercolor paints can be used to draw portraits of the Orange Mushroom, Octopus, and Yeti. +4032348 - Secure Bundle of Straw - A secure bundle of straw that can be used to make the Witch's Broomstick. +4032349 - Solid Bundle of Straw - A solid bundle of straw that can be used to make the Witch's Broomstick. +4032350 - Strong Bundle of Straw - A strong bundle of straw that can be used to make the Witch's Broomstick. +4161047 - Noblesse Guide - A guide for Noblesses.\n#cThe book can be opened by double-clicking on it.# +4170012 - DS Egg - A small egg taken out of the DS egg basket. The egg is hard as steel and cannot be opened without a special device. #cWill be placed in an incubator when you double-click it.# +4220148 - Portrait of an Orange Mushroom - Drawing paper on which you can draw a portrait of an Orange Mushroom. The portrait of an Orange Mushroom can be completed by using the Amazing, Mystical, or Magical watercolor paint on it. \r\n#cCan be opened by double-clicking on it with the mouse.# +4220149 - Portrait of an Octopus - Drawing paper on which you can draw a portrait of an Octopus. The portrait of an Octupus can be completed by using the Amazing, Mystical, or Magical watercolor paint on it. \r\n#cCan be opened by double-clicking on it with the mouse.# +4220150 - Portrait of a Yeti - Drawing paper on which you can draw a portrait of a Yeti. The portrait of a Yeti can be completed by using the Amazing, Mystical, or Magical watercolor paint on it. \r\n#cCan be opened by double-clicking on it with the mouse.# +4220151 - Hanging Scroll - A Hanging Scroll given to you by the Black Wing Shadow Warrior. The erased content can be restored by using special ink.\r\n#cCan be opened by double-clicking on it with a mouse.# +4032366 - Vague Aran Memory - A vague memory of the Aran. +4032367 - Dim Aran Memory - A dim memory of the Aran. +4032368 - Faint Aran Memory - A faint memory of the Aran. +4032369 - Cloudy Aran Memory - A cloudy memory of the Aran. +4032370 - Lingering Aran Memory - A lingering memory of the Aran. +4032371 - Flickering Aran Memory - A flickering memory of the Aran. +4001340 - Foreign Object - A green-colored foreign object that was blocking the pipes. Looks very dirty. +4001341 - Broken Iron Fragment - Looks like a fragment that broke off of something...? +4001342 - Pig Shaped Bottle - Wine would taste great in this bottle. +4001343 - Pig Vein - Very durable looking pig vein. +4001344 - Dark Wooden Board - Straight wooden board. +4001345 - Sunglasses - Looks like it belongs to a rock star. +4001346 - Antique - An old antique from Leafre. +4001347 - Ellinia Tree Barrel - A tree stump from Ellinia with a brown tint. +4001348 - Memory Fragment - Contains the memory of Solomon's bow. +4001349 - Octopus Leg Stick - An Octopus Leg that has been dried to resemble a stick. +4001350 - Pumpkin Head - Wearing this item compels you to listen to some Rock'n Roll. +4001351 - Devil Hunting Scroll - Scroll that contains the Devil's weakness... +4001352 - Lost Book - Jay's lost book. +4001353 - Lost Statue - A statue from Leafre that was lost in Nautilus. +4001354 - Young Soul - The soul of an innocent child. +4001355 - Golden Feather - Strange to think that it comes from an animal. +4001356 - Flint - Can this really be used to start a fire? +4001357 - Pork - Goes great with wine. +4001358 - Long Strong Stick - A long stick made of wood. +4001359 - Small Snail Shell - A curious shell that amplifies sound and reverberates when you scream. +4001360 - Piece of White Pants - A partial sheet of fabric taken from someone's pants. +4001361 - Ink - Black ink from an Octopus. +4001362 - Old Worn-out Paper - This is the treasure that was so hard to get?! But it does have some strange markings on it. +4001363 - Old Key - Is this the key to the Treasure Box? Not sure where this is supposed to be used. +4001364 - Orange Mushroom Sample - An extracted portion of the Orange Mushroom. +4001365 - Octopus Sample - An extracted portion of the Octopus. +4001366 - Paper with Strange Markings - There appears to be strange markings drawn on it. +4001367 - Ripped Paper-1 - Clue found near the Dark Portal where Andras is located. +4001368 - Ripped Paper-2 - Clue found near the Dark Portal where Valefor is located. +4001369 - Ripped Paper-3 - Clue found near the Dark Portal where Amdusias is located. +4001370 - Ripped Paper-4 - Clue found near the Dark Portal where Crocell is located. +4001371 - Ripped Paper-5 - Clue found near the Dark Portal where Marbas is located. +4001372 - Wild Boar Leather - Smelly leather from a Wild Boar. It's very pungent. +4001373 - Evil Eye Eyeball - Eek, so disgusting...could you really see with that thing? +4032478 - V.I. Orange Mushroom Wine - An expensive wine made with Orange Mushroom Caps from Victoria Islands. +4032479 - Training Instructor's Badge - Token indicating the Perion Training Instructor. +4032480 - Stanlica's Guitar - Music can expose the most painful roots of the heart, but it will always reveal the truth.\r\n#c- Chief Stan -# +4032481 - Unseemly Ocarina - It's missing some holes, as though it were constructed hastily. But the sound seems to be fine. +4032482 - Darkween's Monster Drum - You must live life with passion, so that the rest of the world might learn how to live.\r\n#c- Dark Lord -# +4032483 - Solomon's Sealed Bow - Looks quite ordinary for a supposedly legendary bow. +4032484 - Kyrinvana's Guitar - Blast this song until the rhythm pumps your blood and the chorus echoes through your bones...\r\n#c- Kyrin -# +4032485 - Large Model of a Coin - A large replica of a coin made by Shumi. Looks very desirable. +4032486 - Green Slime Eraser - An eraser made by collecting slime liquids. Use it on the dirty Treasure Map. +4032487 - Improved Flint - Its heat is strong enough to evaporate water from afar. Use it on the Slightly Cleaned Treasure Map. +4032488 - Ayan Mercury's Microphone - I will love my life just as I love the melody of this song.(Use it on the dirty Treasure Map.)\r\n#c- Ayan -# +4032489 - Ink Sack - A Sack containing Ink. Use it on the dirty Treasure Map. +4032490 - Cold Medicine - Effective Cold Medicine from Henesys. +4032491 - Andras' Emblem - Emblem of the demon Andras who was sealed up in Perion. It allows you to enter the location in which Andras resides. +4032492 - Amdusias' Emblem - Emblem of the demon Amdusias who was sealed up in Henesys. It allows you to enter the location in which Amdusias resides. +4032493 - Valefor's Emblem - Emblem of the demon Valefor who was sealed up in Kerning City. It allows you to enter the location in which Valefor resides. +4032494 - Crocell's Emblem - Emblem of the demon Crocell who was sealed up in Nautilus. It allows you to enter the location in which Crocell resides. +4032495 - Marbas' Emblem - Emblem of the demon Marbas who was sealed up in Ellinia. It allows you to enter the location in which Marbas resides. +4032496 - Devil Hunter's Necklace - Necklace shows that you defeat a Demon. +4220153 - Dirty Treasure Map - A treasure map given by Kyrin. There are three sections--red, green, and white--that are invisible. The green section should be cleaned first. \r\n\r\n*If you don't need the item anymore, just go to Jack in the Top Floor - Hallway to discard it.# +4032435 - Tombstone - I wonder who this tombstone belongs to? +4032436 - Tombstone - I wonder who this tombstone belongs to? +4032437 - Tombstone - I wonder who this tombstone belongs to? +4032438 - Haunted Mansion Brass Key - A key that looks like it can unlock the doors inside the Haunted Mansion. +4032439 - Haunted Mansion Silver Key - A key that looks like it can unlock the doors inside the Haunted Mansion. +4032440 - Haunted Mansion Gold Key - A key that looks like it can unlock the doors inside the Haunted Mansion. +4032441 - Olivia's Letter - Olivia's Letter +4032442 - Olivia's Letter - Olivia's Letter +4032443 - Olivia's Letter - Olivia's Letter +4032444 - Green Halloween Stick Candy - A green-colored Halloween Candy that Cassandra likes. +4032445 - Blue Halloween Stick Candy - A blue-colored Halloween Candy that Cassandra likes. +4032446 - Red Halloween Stick Candy - A red-colored Halloween Candy that Cassandra likes. +4000517 - Sophilia's Favorite Doll - Sophilia's Favorite Doll +4000518 - Haunted Mansion Gold Key - A key that looks like it can unlock the doors inside the Haunted Mansion. +4000519 - Haunted Mansion Silver Key - A key that looks like it can unlock the doors inside the Haunted Mansion. +4000520 - Haunted Mansion Brass Key - A key that looks like it can unlock the doors inside the Haunted Mansion. +4000521 - Olivia's Doll - Olivia's doll, which is obtained by defeating Olivia in the secret room. +4000522 - Cursed Frog Egg - A frog egg that has been cursed by Black Magic. Also, it is used as an ingredient in Witch Malady's cooking. +4000523 - Cursed Cat Spittle - Cat saliva that has been cursed with Black Magic. Also, it is used as an ingredient in Witch Malady's cooking. +4000524 - Dark Token - Looks like a type of currency used in a world other than Maple World. +4000489 - Tutorial Tino's Feather - Tutorial Tino's Feather. +4280002 - Premium Gold Box - A gold treasure chest dropped by a monster. This can be opened with the Premium Gold Master Key available at the Cash Shop. If you already have the Premium Gold Master Key, just double-click the box to open it. +4280003 - Premium Silver Box - A silver treasure chest dropped by a monster. This can be opened with the Premium Silver Master Key available at the Cash Shop. If you already have the Premium Silver Master Key, just double-click the box to open it. +4032522 - Yellow Turkey Egg - An oversized Yellow Turkey Egg. You can turn this in to Cody. +4032523 - Green Turkey Egg - An oversized Green Turkey Egg. You can turn this in to Cody. +4032524 - Blue Turkey Egg - An oversized Blue Turkey Egg. You can turn this in to Cody. +4032525 - Turkey Commando's Eye - A pair of futuristic eyeglasses previously worn by Turkey Commando. +4000499 - Mutated Spore - Comes from the Renegade Spores. +4000500 - Poison Mushroom Cap - A cap from the Poison Mushroom. It contains potent poison. +4000501 - Intoxicated Pig Tail - A pig tail that's been intoxicated by the mysterious herb in El Nath. +4000502 - Destroyed Helmet - A destroyed helmet that Helmet Pepe wore. +4000503 - Broken Spear - A spear used by Royal Guard Pepe. +4000504 - Chief Grey Yeti Horn - A horn from Grey Yeti, one of the head security members of King Pepe. +4000505 - Chief White Yeti Horn - A horn from White Yeti, one of the head security members of King Pepe. +4000506 - Chief Gold Yeti Horn - A horn from Gold Yeti, one of the head security members of King Pepe. +4000507 - Poison Spore - A powerful poisonous spore dropped by the Poison Mushroom. It can penetrate through the barrier of the magic spore once. +4001317 - Helmet Pepe's Helmet - A helmet worn by Helmet Pepe. Put it on to disguise yourself as a Helmet Pepe. +4001318 - The Royal Seal of the Mushking Empire - The Royal Seal that represents the power of the Mushking Empire. +4001320 - Flower Tube Coupon - Take this to Cassandra, and exchange it for a pretty Pink Flower Tube. +4001321 - Train 999 Boarding Pass - Allows one to board Train 999 through Mr. Lim. +4001322 - Pharaoh Yeti's Sapphire - A sapphire mounted on Pharaoh Yeti's necklace. Give it to Duarte, and he'll take you to Pharaoh Yeti's tomb. +4001323 - Pharaoh Yeti's Ruby - A ruby mounted on Pharaoh Yeti's necklace. Give it to Duarte, and he'll take you to Pharaoh Yeti's tomb. +4001324 - Pharaoh Yeti's Emerald - An emerald mounted on Pharaoh Yeti's necklace. Give it to Duarte, and he'll take you to Pharaoh Yeti's tomb. +4001325 - Pharaoh Yeti's Topaz - A topaz mounted on Pharaoh Yeti's necklace. Give it to Duarte, and he'll take you to Pharaoh Yeti's tomb. +4032372 - Giant Polearm Image - (no description) +4032373 - Tutorial Muru's Furball - A white, cold furball from Tutorial Muru. +4032374 - Letter of Commendation - Warrior Adventurer - The letter of commendation Power B. Fore lost. +4032375 - Recommendation Letter - Job Instructor - A recommendation letter from the job instructor. Take this and show it to the Head Security Officer at the Mushking Empire. +4032376 - Letter of Commendation - Magician Adventurer - The letter of commendation Power B. Fore lost. +4032377 - Letter of Commendation - Bowman Adventurer - The letter of commendation Power B. Fore lost. +4032378 - Letter of Commendation - Thief Adventurer - The letter of commendation Power B. Fore lost. +4032379 - Letter of Commendation - Pirate Adventurer - The letter of commendation Power B. Fore lost. +4032386 - King Pepe's Crown - A crown that King Pepe sported. +4032387 - Prime Minister Emblem - An emblem worn by the Prime Minister of the Mushking Empire. +4032389 - Killer Mushroom Spore Sample - A completed sample of Killer Mushroom Spores. +4032388 - Wedding Hall Key - The key that opens the wedding hall, where Princess Violetta will be married. +4032390 - Tainted Horny Mushroom Cap - A tainted Horny Mushroom cap that was discovered by The Rememberer. +4032399 - Recording Charm - A charm that stores the final scream of Zombie Mushroom before its death. +4032400 - Recommendation Letter - The Rememberer - Hand this letter to Karacas at Nihal Desert. +4032401 - Gold Poison Sting - A special gold sting that the Scorpion carries. +4032402 - Sand Mole Hat - Sand Mole Hat +4032405 - Secret Key - A key to the secret place where Prime Minster's remaining army is hiding. +4032418 - Bingo Necklace - The necklace of a puppy named Bingo +4032419 - Bingo Necklace - The necklace of a puppy named Bingo +4032420 - Bingo Necklace - The necklace of a puppy named Bingo +4032421 - Bingo Necklace - The necklace of a puppy named Bingo +4032422 - Bingo Necklace - The necklace of a puppy named Bingo +4032423 - Arthritis Medicine - Medicine that alleviates arthritis. +4032424 - Missed Mark - A mark that warns one of Missed Monsters. +4161048 - Legend's Guide - A guide strictly for the Legends. \n#cDouble-click the item to open.# +4000497 - Murukun's Furball - Murukun's furball. Covers up Murukun's sharp piece of horn. +4000496 - Murumuru's Furball - Murumuru's Furball. Highly resembles that of a snowman. +4000495 - Murupia's Furball - Murupia's Furball. Looks like something's growing out of it. +4000494 - Murupa's Furball - Murupa's Furball. A small leaf is stuck in the ball. +4000493 - Muru's Furball - A handful of white, cold furball of Muru's. +4000492 - Certificate of Great Tester - A certificate that certifies one as a great tester. The more the certificate, the better the chance of being selected as a Great Tester. +4032309 - Piece of Bamboo - A piece of bamboo snapped from Rien. A prime material for building a chair. +4032310 - Wood - A wood carved out of a tree from Rien. A prime material for building a chair. +4032311 - Sign of Acceptance - A sign of acceptance the Scarred Bear was carrying with. Take it to Sir Blacksmith to get accepted. +4032312 - Red Jade - A red jade that decorated Maha. A portion of Maha's powers is instilled in it. +4032313 - Tru Taxi Coupon - A taxi coupon from Tru. Use the coupon at the cab in Lith Harbor to get one free ride to Henesys. +4032314 - Orange Mushroom Horn - A horn from Orange Mushroom that's on the verge of evolving into a Horny Mushroom. +4032315 - Cynical Orange Mushroom Puppet - A cute puppet based on Orange Mushroom, but something about its facial expression seems odd. +4032316 - Dejected Green Mushroom Puppet - A cute puppet based on Green Mushroom, but something about its facial expression seems odd. +4032317 - Dejected Green Mushroom Puppet - A cute puppet based on Green Mushroom, but something about its facial expression seems odd. +4032318 - Dejected Green Mushroom Puppet - A cute puppet based on Green Mushroom, but something about its facial expression seems odd. +4032319 - Smirking Ghost Stump Puppet - A cute puppet based on Ghost Stump, but something about its facial expression seems odd. +4032320 - Report from 10 Boogies - A report written by 10 Boogies. Better take this to Nineheart. +4032321 - Annoyed Zombie Mushroom Doll - A cute doll based on Zombie Mushroom, but something about its facial expression seems odd. +4032322 - Puppeteer Document - A document written by the puppeteer. It looks it like contains the sinister plans of Black Wing. +4032323 - Seal Stone of Victoria Island - The seal stone of Victoria Island that Black Wing had been desperately looking for. No one knows exactly what the stone is for. +4032324 - Rapid Growth Stimulator - A stimulator that promotes rapid growth. Probably came as a result of the appearance of Giant Nependeath. +4032325 - Storage Key - A key that opens the storage. Better take it to Helena. +4032326 - Wooden Key - A key made out of wood. +4032327 - Clean Letter - A letter that Helena held on to for a long time. Wonder what's written on it. +4032328 - Old Letter - A letter that Helena held on to for a long time. The condition of the letter shows its age. +4032329 - Old Letter - A letter that Helena held on to for a long time. It's impossible to see what's written on it. +4032330 - Lilin's Envelope - An Envelope from Lilin. Contains documents related to Black Wing. +4032331 - Wolf Cub Vitamins - Vitamins that contain nutrients required for Wolf Cub. +4032332 - Wolf Cub Meal - A delicious meal meant for Wolf Cub. +4032333 - Puberty Wolf Vitamins - Vitamins that contain nutrients essential for wolf in puberty. +4032334 - Life Water for Wolf - A special type of water the wolf drinks in order to become an adult. +4032335 - Wolf Tooth - An important ingredient for wolf's Life Water. +4032338 - Lilin's Letter - A letter handwritten by Lilin. Hand the letter to Tru, the Info Merchant at Lith Harbor, and just follow his directions. +4032339 - Red Jade - A red jade Tititi accidentally lost. Better hand it back to Tititi. +4032340 - Pig Tail - A pig tail that is rarely available through pigs. There's not much value in it. +4032341 - Puppeteer Document - A document written by the puppeteer. It looks it like contains the sinister plans of Black Wing. Lilin may be able to decipher this letter. +4032342 - Special Ink - A special form of ink made by the artist of Mu Lung, Jin Jin. +4001231 - Candy Cane - A Chrismas Candy Cane for Jump Event +4032185 - 1st Place Medal - A medal acquired from the Christmas High Jump map. +4032186 - 2nd Place Medal - A medal acquired from the Christmas High Jump map. +4032187 - 3rd Place Medal - A medal acquired from the Christmas High Jump map. +4032343 - Picture Scroll - A warning shot fired by the shadow warrior of Black Wing. +4000421 - Qualified Knitting Ball - Qualified Knitting Ball to make the Christmas Sock. #cPlease click and drag# this item into the Socks Frame UI to make your own socks. +4031881 - Picture of Rudolph - Someone took a picture of Rudolph flying in the night sky of Happy ville. Rudolph seems happy in this picture. +4031882 - Chimney Broom - This will enable you to sweep inside the Chimney eventhough it is long and wide. +4031883 - Flashlight - This will enable you to light up the dark chimney. +4031884 - Warm Milk - This warm milk will help Icarus to go to bed. +4031885 - Mapler Recommendation - Recommendation written by Happyville people. +4031886 - Completed Socks - Happyville Trend Socks made with skill from Mrs. Santa Claus +4161038 - Santa Encyclopedia No.2 - Santa Encyclopedia that contains the history of Santa's Family.\n#cDouble click on the item to open the book. +4161039 - Santa Encyclopedia No.3 - Santa Encyclopedia that contains method about how to make the Christmas Socks.\n#cDouble click on the item to open the book. +4161040 - Santa Encyclopedia No.4 - Santa Encyclopedia that contains characteristics of Santa.\n#cDouble click on the item to open the book. +4161041 - Santa Encyclopedia No.5 - Santa Encyclopedia that contains how to do a good thing for Christmas.\n#cDouble click on the item to open the book. +4220022 - Socks Frame - Double click on the item to open the UI to add knitting balls to make the Christmas socks. +4161043 - Santa Encyclopedia No.1 - Santa Encyclopedia that contains the history of Santa.\n#cDouble click on the item to open the book. +4031408 - Gachapon Stamp - Can be traded for an awesome gift depending on the number of stamps collected. + +4001428 - Cupid's Lost Arrow - One of Cupid's Lost Arrows. +4001429 - Mardi Gras Bead Necklace - A necklace that Gaga wants. +4032576 - Green Mardi Gras Feather - (no description) +4032577 - Purple Mardi Gras Feather - (no description) +4032578 - Red Mardi Gras Feather - (no description) +4000525 - Kid Mannequin's Bunny Suit - A bunny suit that the Kid Mannequin was wearing. +4000526 - Female Mannequin's Wig - A blonde wig that the Female Mannequin was wearing. +4000527 - Male Mannequin's Fedora - A black fedora that the Male Mannequin was wearing. +4000528 - Latest Hits Compilation - A CD of latest hits. +4000529 - Greatest Oldies - A CD of the greatest oldies. +4000530 - Blue Perfume - A lavender-scented perfume. Musky and rich. +4000532 - Yellow Perfume - A freesia-scented perfume. Fresh and smooth. +4000534 - Pink Perfume - A rose-scented perfume. Light and airy. +4000536 - Cheap Speakers - Low-quality speakers. +4000537 - Fancy Amplifier Cables - Fancy cables that connect to fancy amplifiers. +4000538 - Spirit of Rock's Music Score - A music score that Spirit of Rock treasures. +4000539 - Cherry Bubble - Refreshing cherry-flavored bubble from a cherry bubble tea. +4000540 - Melon Bubble - Sweet melon-flavored bubble from a melon bubble tea. +4000541 - Mango Bubble - Sweet mango-flavored bubble from a mango bubble tea. +4000542 - Yeti Keychain - A cute keychain with a dangling Yeti doll. +4000543 - Jr. Pepe Keychain - A cute keychain with a dangling Jr. Pepe doll. +4000544 - Orange Mushroom Doll - A pretty Orange Mushroom doll from the claw vending machine. +4000545 - Red Squishy Liquid - Cherry-scented jelly from a Red Slime. +4000546 - Silver Squishy Liquid - Jelly from a Silver Slime. It looks pretty heavy. +4000547 - Gold Squishy Liquid - Jelly from a Gold Slime. It looks expensive. +4000548 - Overlord A Radar Device - A radar that detects anything within a 10m radius. +4000549 - Overlord B Radar Device - A radar that detects anything within a 30m radius. +4000550 - Robby's Electronic Induction Device - A device that communicates using the nearest inductive material. +4000551 - Iruvata Laser Sword - Iruvata's laser sword, which can be used as a weapon. +4000552 - Afterlord Chained Tire - Appears durable enough to maneuver through the wilderness. +4000553 - Prototype Lord Propulsion System - This propulsion system uses nitrogen energy as its propellant. +4000554 - Maverick Type A Component - A component of Maverick Type A that is abrasion-resistant due to its ergonomic design. +4000555 - Maverick Type S Laser Gun - A high-tech laser gun that consumes minimal energy yet ejects maximum power. +4000556 - Maverick Type D Booster - A booster that provides a temporary increase in thrust for flight. +4000557 - Imperial Guard Vacuum Tube - A vacuum tube that uses air pressure to maintain an output of at least 5 tons. +4000558 - Royal Guard Armor - Special armor that features a special alloy for maximum durability. +4001170 - ?? - (no description) +4001171 - ?? - (no description) +4001172 - ?? - (no description) +4001173 - ?? - (no description) +4001326 - ??? ???? - ??? ?????. ??? ??? ??? ? ????. +4001327 - ??? ???? - ??? ?????. ??? ??? ??? ? ????. +4001328 - ??? ???? - ??? ?????. ??? ??? ??? ? ????. +4001329 - ??? ???? - ??? ?????. ??? ??? ??? ? ????. +4001330 - ??? ???? - ??? ?????. ??? ??? ??? ? ????. +4001331 - ?? ???? - ?? ?????. ??? ??? ??? ? ????. +4001332 - ??? ???? - ??? ?????. ??? ??? ??? ? ????. +4001333 - Pot - A small pot with a flower bud in it. Watch it for 30 minutes to see a flower bloom. +4001334 - Yellow Flower Pot - A small pot that contains a yellow flower. Take it to Gaga to trade it for a crayon. +4001339 - Treacherous Fox Tail - The tail of a Treacherous Fox. It seems pretty useless, especially since it is covered in coarse fur. +4001393 - Time Traveler's Pocket Watch - An object that signifies authorized use of the Time Gate in Tera Forest. It looks like an average pocket watch but has something engraved on the back. It reads, 'Time is Golden.' +4001394 - Time Traveler's Free Pass - An object that signifies authorized use of the Time Gate in Tera Forest for a limited time. +4032430 - Photo of the Moon - A photo of the moon that hasn't developed yet. The image should become more vivid in 30 minutes. The photo will disappear if you log out! +4032431 - Photo of the Moon - A faint photo of the moon that hasn't been fully developed yet. The image should become more vivid in 30 minutes. The photo will disappear if you log out! +4032432 - Photo of the Moon - A blurry photo of the moon that hasn't been fully developed yet. The image should become more vivid in 30 minutes. The photo will disappear if you log out! +4032433 - Photo of the Moon - A clear photo of the moon. This will certainly make the Baby Moon Bunny happy. +4032434 - Yellow Butterfly - A cute little yellow butterfly. It might fly away if you don't keep your eye on it. +4032447 - Dog Food - A small bag of dog food. Bulldogs go crazy for this stuff. +4032448 - Lunch Made with Love - A special lunch Anna made for Gustav. It's packed with tender loving care. +4032449 - Piglet - A piglet that escaped from the farm. Return it to the farm. +4032450 - Empty Lunch Box - Someone has devoured everything that was inside the lunch box. +4032451 - Egg - Eggs from the hen house in the back yard. +4032452 - Bundle of Hay - A bundle of hay used to feed livestock. Baby dragons might like it too. +4032453 - Pork - Juicy pork. Baby dragons might like it. +4032454 - Milk for Baby Dragon - Cow milk. Baby dragons might like it. +4032455 - Letter from Gustav - A letter Gustav wrote to Chief Stan in Henesys. The letter mentions something about pork delivery. +4032456 - Recommendation Letter - Chief Stan - A recommendation letter from Stan. Take it to Power B. Fore and he might let you use the training center. +4032457 - Power B. Fore's Certificate of Training - A certificate that states the recipient has completed Power B. Fore's training. It also appears to be a free pass to use Power B. Fore's training center. +4032458 - Rina's Blue Mushroom Porridge - Some Blue Mushroom porridge Rina made. It's packed nicely and ready for delivery. +4032459 - Blue Mushroom Doll - A cute doll that resembles a Blue Mushroom. +4032460 - Refreshing Stump Sap - Tree sap from a Stump. It is surprisingly refreshing. +4032461 - Zombie Mushroom Doll - A doll that resembles a Zombie Mushroom, though something isn't quite right with the face. +4032462 - Wild Boar Doll - A cute doll that resembles a Wild Boar. +4032463 - Document with Clue - A document that has a clue about the thief that stole Sabitrama's herb written on it. It looks like an ordinary letter, though. +4032464 - Sabitrama's Herb - A pouch with a pleasant herbal scent that obviously contains Sabitrama's herb. +4032465 - Nella's Letter of Introduction - A letter of introduction from Nella. It states that the recipient is a capable adventurer. +4032466 - Golem Doll - A cute doll that resembles a Golem. +4032467 - Dragon Scales - A few scales from dragon. +4032468 - Rapid Growth Accelerant - A rapid growth accelerant that was created by a secret organization. It appears to accelerate the growth of plants. +4032469 - John's Map - John's map, which contains information about some island. That island is said to be the place where the dragon lies asleep. +4032470 - Tropical Fruit Punch - Specially ordered tropical fruit punch that can only be made in Florina Beach. +4032471 - Black Key - A key you received from Shammos on a mission for a secret organization. What is this key used for? +4032472 - Map of Turtle Island - The map of Turtle Island you received from Captain Hwang. It has the location of an island but not much else is known. +4032473 - Gruesome Bone - Bone that exudes a gruesome energy. +4032474 - Seruf Pearl - A shiny pearl acquired from Seruf. Based on its shade, it appears to be of the highest quality. +4032475 - Lycanthrope Leather - A tough piece of Lycanthrope leather. +4032476 - Captain Alpha's Buckle - Captain Alpha's buckle, which was discovered deep inside the ocean in a treasure chest near the shipwreck. It looks extremely fancy. +4032477 - Unbreakable Porcelain - Unbreakable Porcelain that Herb Town is known for. +4032497 - Potter - A master craftsman in Herb Town. He is as light as a feather. +4032498 - Thick Branch - A tree branch from a Stump. You can use it to repair the fence. +4032502 - Dragon Scale - Scale left behind after the Onyx Dragon's ecdysis. It stores the force of the dragon. Something remarkable could be created using the Maker skill. +4032503 - Shiny Dragon Scale - Scale left behind after the Onyx Dragon's ecdysis. The force of the dragon is stored inside the golden emblem. Something remarkable could be created using the Maker skill. +4032504 - Lycanthrope Leather - A tough piece of Lycanthrope leather. +4032505 - Captain Alpha's Buckle - Captain Alpha's buckle, which was discovered deep inside the ocean in a treasure chest near the shipwreck. It looks extremely fancy. +4032506 - Locker Key - Key to a locker at the Kerning Square Station. +4032507 - Composition Notes - Lost composition notes that belong to Maestro Rho, a genius composer. +4032508 - Secret Recipe - The seven star chef Robby Fray's secret recipe. +4032509 - Latest Model MP3 - Latest model MP3 with a sophisticated design and increased memory capacity. +4032510 - Legendary Scissors - Marshall the hair stylist's legendary scissors. +4032511 - Andy's Pocket Watch - An item that activates the Time Gate. It has Andy the Time Traveler's name engraved on it, so only he can use it. +4032512 - Primary Clue to the Case - A piece of paper that contains a clue to the case Andy is working on. It's hard to read what it says. The paper has been severely damaged. +4032513 - Wrinkled Sketchbook Loose-Leaf - A sheet of paper that appears to be from a sketchbook. +4032514 - Shelter Key - A key to the shelter at the harbor. +4032515 - Bergamot's Time Sand - Time Sand that belonged to Bergamot. +4032516 - Dunas's Time Sand - Time Sand that belonged to Dunas. +4032517 - Aufheben's Time Sand - Time Sand that belonged to Aufheben. +4032518 - Oberon's Time Sand - Time Sand that belonged to Oberon. +4032519 - Nibelung's Time Sand - Time Sand that belonged to Nibelung. +4032520 - Maid Apron - An apron Bao is giving May as a present. An apron? That's a strange gift, but take it over to May anyway. +4032521 - VIP Invitation - An invitation that grants admission to the VIP Zone. +4032526 - John's Map - John's map that contains information on some island. That island is said to be the place where the dragon lies asleep. +4160041 - Pet Command Guide : Gold Pig - A guide that has all the commands for the Gold Pig.\n#cDouble-click on the item to open the guide.# +4220152 - Rainbow Drawing - A sheet of sketch paper that has a rainbow drawing. \r\n#cYou can open it with your mouse by double-clicking.# +4310000 - Perfect Pitch - This Music Note gives Inkwell the perfect pitch he's been dying to find. You can trade it for a rare item if you go to the Free Market Entrance or talk to Inkwell in Henesys before March 30th. +4160044 - Pet Command Guide : Baby Tiger - A guide that contains commands for Baby Tiger. \n#cYou can open the book by double-clicking on it.# +4001434 - Gachapon Food Coupon - Use this coupon on a Gachapon machine to het a veriety of food. diff --git a/handbook/Map.txt b/handbook/Map.txt new file mode 100644 index 0000000000..c0a07f3ad0 --- /dev/null +++ b/handbook/Map.txt @@ -0,0 +1,4447 @@ +maple + +0 - Maple Road - Entrance - Mushroom Town Training Camp +1 - Maple Road - Upper level of the Training Camp +10000 - Maple Road - Mushroom Town +1000000 - Rainbow Street - Amherst +1000001 - Rainbow Street - Amherst Weapon Store +1000002 - Rainbow Street - Amherst Townstreet +1000003 - Rainbow Street - Amherst Department Store +1000004 - Rainbow Street - Snail Garden +1000005 - Rainbow Street - Hunting Ground Middle of the Forest I +1000006 - Rainbow Street - Hunting Ground Middle of the Forest II +1010000 - Maple Road - Entrance to Adventurer Training Center +1010001 - Rainbow Street - Amherst Weapon Store +1010002 - Rainbow Street - Amherst Townstreet +1010003 - Rainbow Street - Amherst Department Store +1010004 - Rainbow Street - Snail Field of Flowers +1020000 - Maple Road - Split Road of Destiny +1020001 - Rainbow Street - Tomato Field +2 - Maple Road - Lower level of the Training Camp +20000 - Maple Road - Snail Garden +20001 - Maple Road - Mushroom Town Townstreet +3 - Maple Road - Entrance - Mushroom Town Training Camp +30000 - Maple Road - Snail Field of Flowers +40000 - Maple Road - In a Small Forest +40001 - Maple Road - Snail Hunting Ground II +40002 - Maple Road - Snail Hunting Ground III +50000 - Maple Road - Dangerous Forest +50001 - Maple Road - The Field West of Southperry +60000 - Maple Road - Southperry +60001 - Maple Road - Southperry Armor Store +30001 - Maple Road - Mushroom Town Townstreet +1010100 - Maple Road - Adventurer Training Center 1 +1010200 - Maple Road - Adventurer Training Center 2 +1010300 - Maple Road - Adventurer Training Center 3 +1010400 - Maple Road - Adventurer Training Center 4 +2000000 - Maple Road - Southperry +2000001 - Maple Road - Southperry Armor Store + +victoria + +100000000 - Victoria Road - Henesys +100000001 - Victoria Road - Henesys Townstreet +100000002 - Hidden Street - An Empty House +100000003 - Hidden Street - Pig Park +100000004 - Hidden Street - Pig Park II +100000005 - Hidden Street - Someone Else's House +100000006 - Hidden Street - The Resting Spot, Pig Park +100000100 - Victoria Road - Henesys Market +100000101 - Victoria Road - Henesys Weapon Store +100000102 - Victoria Road - Henesys Department Store +100000103 - Victoria Road - Henesys Plastic Surgery +100000104 - Victoria Road - Henesys Hair Salon +100000105 - Victoria Road - Henesys Skin-Care +100000110 - Victoria Road - Henesys Free Market Entrance +100000111 - Victoria Road - Henesys Free Market <1> +100000112 - Victoria Road - Henesys Free Market <2> +100000113 - Victoria Road - Henesys Free Market <3> +100000114 - Victoria Road - Henesys Free Market <4> +100000115 - Victoria Road - Henesys Free Market <5> +100000116 - Victoria Road - Henesys Free Market <6> +100000117 - Victoria Road - Henesys Free Market <7> +100000118 - Victoria Road - Henesys Free Market <8> +100000119 - Victoria Road - Henesys Free Market <9> +100000200 - Victoria Road - Henesys Park +100000201 - Victoria Road - Bowman Instructional School +100000202 - Victoria Road - Pet-Walking Road +100000203 - Victoria Road - Henesys Game Park +100010000 - Victoria Road - The Hill East of Henesys +100020000 - Victoria Road - The Rain-Forest East of Henesys +100030000 - Victoria Road - The Forest East of Henesys +100030001 - Hidden Street - The Blue Mushroom Forest +100040000 - Victoria Road - The Forest South of Ellinia +100040001 - Victoria Road - Dungeon, Southern Forest I +100040002 - Victoria Road - Dungeon, Southern Forest II +100040003 - Victoria Road - Dungeon, Southern Forest III +100040004 - Victoria Road - Dungeon, Southern Forest IV +100040100 - Victoria Road - The Forest of Wisdom +100040101 - Hidden Street - Monkey Forest I +100040102 - Victoria Road - Tree Dungeon, Monkey Forest I +100040103 - Victoria Road - Monkey Forest II +100040104 - Hidden Street - Tree Dungeon, Monkey Forest II +100040105 - Hidden Street - The Forest of Evil I +100040106 - Hidden Street - The Forest of Evil II +100040110 - Hidden Street - Downstairs at the Forest +100050000 - Victoria Road - The Field South of Ellinia +101000000 - Victoria Road - Ellinia +101000001 - Victoria Road - Ellinia Weapon Store +101000002 - Victoria Road - Ellinia Department Store +101000003 - Victoria Road - Magic Library +101000100 - Hidden Street - The Forest of Patience +101000101 - Hidden Street - The Forest of Patience +101000102 - Hidden Street - The Forest of Patience +101000103 - Hidden Street - The Forest of Patience +101000104 - Hidden Street - The Forest of Patience +101000200 - Hidden Street - Mar's Forest +101000300 - Victoria Road - Ellinia Station +101000301 - Victoria Road - Before Takeoff +101010000 - Victoria Road - The Field Up North of Ellinia +101010100 - Victoria Road - The Tree That Grew I +101010101 - Victoria Road - The Tree That Grew II +101010102 - Victoria Road - The Tree That Grew III +101020000 - Victoria Road - The Forest North of Ellinia +101020001 - Victoria Road - The Tree Tunnel At the Forest Up North +101020002 - Victoria Road - Tree Dungeon, Forest Up North I +101020003 - Victoria Road - Tree Dungeon, Forest Up North II +101020004 - Victoria Road - Tree Dungeon, Forest Up North III +101020005 - Victoria Road - Tree Dungeon, Forest Up North IV +101020006 - Victoria Road - Tree Dungeon, Forest Up North V +101020007 - Victoria Road - Tree Dungeon, Forest Up North VI +101020008 - Victoria Road - Tree Dungeon, Forest Up North VII +101020009 - Victoria Road - Tree Dungeon, Forest Up North +101020010 - Victoria Road - Tree Dungeon, Forest Up North IX +101030000 - Victoria Road - East Domain of Perion +101030001 - Hidden Street - The Land of Wild Boar II +101030100 - Victoria Road - Rocky Road III +101030101 - Victoria Road - Excavation Site I +101030102 - Victoria Road - Excavation Site II +101030103 - Victoria Road - Excavation Site III +101030104 - Victoria Road - Excavation Site +101030105 - Victoria Road - Remains I +101030106 - Victoria Road - Remains II +101030107 - Victoria Road - Remains III +101030108 - Victoria Road - Remains IV +101030109 - Victoria Road - Remains +101030110 - Victoria Road - Camp 1 +101030111 - Victoria Road - Camp 2 +101030112 - Victoria Road - Camp 3 +101030200 - Victoria Road - Rocky Road II +101030300 - Victoria Road - Rocky Road I +101030400 - Victoria Road - East Rocky Mountain I +101030401 - Victoria Road - East Rocky Mountain II +101030402 - Victoria Road - East Rocky Mountain III +101030403 - Victoria Road - East Rocky Mountain IV +101030404 - Victoria Road - East Rocky Mountain V +101030405 - Victoria Road - East Rocky Mountain VI +101030406 - Victoria Road - East Rocky Mountain VII +101040000 - Victoria Road - Perion Street Corner +101040001 - Hidden Street - Land of Wild Boar +101040002 - Hidden Street - Over the Wall +101040003 - Hidden Street - Iron Boar Land +102000000 - Victoria Road - Perion +102000001 - Victoria Road - Perion Weapon Store +102000002 - Victoria Road - Perion Department Store +102000003 - Victoria Road - Warriors' Sanctuary +102000100 - Victoria Road - Entrance of Perion Free Market +102000101 - Victoria Road - Perion Free Market <1> +102000102 - Victoria Road - Perion Free Market <2> +102000103 - Victoria Road - Perion Free Market <3> +102000104 - Victoria Road - Perion Free Market <4> +102000105 - Victoria Road - Perion Free Market <5> +102000106 - Victoria Road - Perion Free Market <6> +102000107 - Victoria Road - Perion Free Market <7> +102000108 - Victoria Road - Perion Free Market <8> +102000109 - Victoria Road - Perion Free Market <9> +102010000 - Victoria Road - West Street Corner of Perion +102020000 - Victoria Road - West Rocky Mountain I +102020100 - Victoria Road - West Rocky Mountain II +102020200 - Victoria Road - West Rocky Mountain III +102020300 - Victoria Road - West Rocky Mountain IV +102030000 - Victoria Road - West Domain of Perion +102040000 - Victoria Road - Construction Site North of Kerning City +102040001 - Hidden Street - Northern Top of Construction Site +102050000 - Victoria Road - Sunset Sky +103000000 - Victoria Road - Kerning City +103000001 - Victoria Road - Kerning City Self-Defence Item Store +103000002 - Victoria Road - Kerning City Pharmacy +103000003 - Victoria Road - Thieves' Hideout +103000004 - Victoria Road - Naora Hospital +103000005 - Victoria Road - Kerning City Hair Salon +103000006 - Victoria Road - Kerning City Repair Shop +103000100 - Victoria Road - Subway Ticketing Booth +103000101 - Kerning City Subway - Line 1 +103000102 - Kerning City Subway - Transfer Area +103000103 - Kerning City Subway - Line 1 +103000104 - Kerning City Subway - Line 1 +103000105 - Kerning City Subway - Line 1 +103000200 - Kerning City Subway - Line 2 +103000201 - Kerning City Subway - Line 2 +103000202 - Kerning City Subway - Line 2 +103000800 - Hidden Street - 1st Accompaniment <1st Stage> +103000801 - Hidden Street - 1st Accompaniment <2nd Stage> +103000802 - Hidden Street - 1st Accompaniment <3rd Stage> +103000803 - Hidden Street - 1st Accompaniment <4th stage> +103000804 - Hidden Street - 1st Accompaniment +103000805 - Hidden Street - 1st Accompaniment +103000890 - Hidden Street - 1st Accompaniment +103000900 - Line 3 Construction Site - B1 +103000901 - Line 3 Construction Site - B1 +103000902 - Line 3 Construction Site - B1 +103000903 - Line 3 Construction Site - B2 +103000904 - Line 3 Construction Site - B2 +103000905 - Line 3 Construction Site - B2 +103000906 - Line 3 Construction Site - B3 +103000907 - Line 3 Construction Site - B3 +103000908 - Line 3 Construction Site - B3 +103000909 - Line 3 Construction Site - B3 +103010000 - Victoria Road - Kerning City Construction Site +103010001 - Hidden Street - Caution Falling Down +103020000 - Victoria Road - L Forest I +103020100 - Victoria Road - L Forest II +103020200 - Victoria Road - L Forest III +103030000 - Victoria Road - Kerning City Middle Forest I +103030100 - Victoria Road - Kerning City Middle Forest II +103030200 - Victoria Road - Kerning City Middle Forest III +104000000 - Victoria Road - Lith Harbor +104000001 - Victoria Road - Lith Harbor Armor Shop +104000002 - Victoria Road - Lith Harbor Department Store +104000003 - Victoria Road - Lith Harbor Weapon Shop +104000100 - Victoria Road - Right Around Lith Harbor +104000200 - Victoria Road - Thicket Around the Beach I +104000300 - Victoria Road - Thicket Around the Beach II +104000400 - Victoria Road - Thicket Around the Beach III +104010000 - Victoria Road - 3-Way Road-Split +104010001 - Hidden Street - The Pig Beach +104010002 - Hidden Street - Beach Hunting Ground +104020000 - Victoria Road - Forest West of Henesys +104030000 - Victoria Road - A Hill West of Henesys +104030001 - Hidden Street - Mushroom Garden +104040000 - Victoria Road - Henesys Hunting Ground I +104040001 - Victoria Road - Henesys Hunting Ground II +104040002 - Victoria Road - Henesys Hunting Ground III +105030000 - Dungeon - Deep Forest +105040000 - Dungeon - Swampy Land in a Deep Forest +105040100 - Dungeon - Hunting Ground in the Deep Forest I +105040200 - Dungeon - Hunting Ground in the Deep Forest II +105040300 - Dungeon - Sleepywood +105040301 - Dungeon - Sleepy Dungeon I +105040302 - Dungeon - Sleepy Dungeon II +105040303 - Dungeon - Sleepy Dungeon III +105040304 - Dungeon - Sleepy Dungeon IV +105040305 - Dungeon - Sleepy Dungeon V +105040306 - Dungeon - The forest of Golem +105040310 - Hidden Street - The Deep Forest of Patience +105040311 - Hidden Street - The Deep Forest of Patience +105040312 - Hidden Street - The Deep Forest of Patience +105040313 - Hidden Street - The Deep Forest of Patience +105040314 - Hidden Street - The Deep Forest of Patience +105040315 - Hidden Street - The Deep Forest of Patience +105040316 - Hidden Street - The Deep Forest of Patience +105040400 - Dungeon - Sleepywood Hotel +105040401 - Dungeon - Regular Sauna +105040402 - Dungeon - VIP Sauna +105050000 - Dungeon - Ant Tunnel I +105050100 - Dungeon - Ant Tunnel II +105050200 - Dungeon - Ant Tunnel III +105050300 - Dungeon - Ant Tunnel IV +105050400 - Dungeon - Dark Cave +105060000 - Dungeon - Dangerous Steam +105060100 - Dungeon - Deep Ant Tunnel I +105070000 - Dungeon - Deep Ant Tunnel II +105070001 - Dungeon - Ant Tunnel Park +105070002 - Dungeon - The Grave of Mushmom +105070100 - Dungeon - The Cave of Evil Eye I +105070200 - Dungeon - The Cave of Evil Eye II +105070300 - Dungeon - The Cave of Evil Eye III +105070400 - Dungeon - The Cave of Evil Eye IV +105080000 - Dungeon - Drake Hunting Ground +105090000 - Dungeon - The Tunnel That Lost Light I +105090100 - Dungeon - The Tunnel That Lost Light II +105090200 - Dungeon - Another Entrance +105090300 - Dungeon - Drake's Meal Table +105090301 - Dungeon - Wild Cargo's Area +105090310 - Dungeon - Drake Area +105090311 - Dungeon - Cold Cradle +105090312 - Dungeon - Drake's Nest +105090400 - Dungeon - Another Path +105090500 - Dungeon - Sanctuary Entrance I +105090600 - Dungeon - Sanctuary Entrance II +105090700 - Dungeon - Sanctuary Entrance III +105090800 - Dungeon - Sanctuary Entrance IV +105090900 - Dungeon - The Cursed Sanctuary +106000000 - Warning Street - Deep Valley I +106000001 - Hidden Street - Dangerous Valley +106000002 - Hidden Street - Dangerous Valley II +106000100 - Warning Street - Deep Valley II +106000101 - Warning Street - The Burnt Land I +106000110 - Warning Street - The Burnt Land II +106000120 - Warning Street - The Burnt Land III +106000130 - Warning Street - The Burnt Land IV +106000140 - Warning Street - The Burnt Land V +106000200 - Warning Street - Deep Valley III +106000300 - Warning Street - Perion Dungeon Entrance +106010000 - Warning Street - The Road to the Dungeon +106010100 - Warning Street - Henesys Dungeon Entrance +106010101 - Hidden Street - The Breathing Rock +106010102 - Victoria Road - The Entrance of Golem's Temple +106010103 - Victoria Road - Golem's Temple I +106010104 - Victoria Road - Golem's Temple II +106010105 - Victoria Road - Golem's Temple III +106010106 - Victoria Road - Golem's Temple IV +107000000 - Warning Street - The Swamp of Despair I +107000001 - Hidden Street - Swamp of the Jr.Necki +107000100 - Warning Street - The Swamp of Despair II +107000200 - Warning Street - The Swamp of Despair III +107000300 - Warning Street - Dangerous Croko I +107000400 - Warning Street - Dangerous Croko II +107000401 - Hidden Street - Monkey Swamp I +107000402 - Hidden Street - Monkey Swamp II +107000403 - Hidden Street - Monkey Swamp III +107000500 - Dungeon - Damp Tree-Forest +107000501 - Dungeon - Damp Forest +108000100 - Hidden Street - Ant Tunnel For Bowman +108000101 - Hidden Street - Ant Tunnel For Bowman +108000102 - Hidden Street - Ant Tunnel For Bowman +108000200 - Hidden Street - Magician's Tree Dungeon +108000201 - Hidden Street - Magician's Tree Dungeon +108000202 - Hidden Street - Magician's Tree Dungeon +108000300 - Hidden Street - Warrior's Rocky Mountain +108000301 - Hidden Street - Warrior's Rocky Mountain +108000302 - Hidden Street - Warrior's Rocky Mountain +108000400 - Hidden Street - Thief's Construction Site +108000401 - Hidden Street - Thief's Construction Site +108000402 - Hidden Street - Thief's Construction Site +108010100 - Hidden Street - The Path of Glittering Crystal +108010101 - Hidden Street - The Other Dimension +108010200 - Hidden Street - The Path of Glittering Crystal +108010201 - Hidden Street - The Other Dimension +108010300 - Hidden Street - The Path of Glittering Crystal +108010301 - Hidden Street - The Other Dimension +108010400 - Hidden Street - The Path of Glittering Crystal +108010401 - Hidden Street - The Other Dimension +109010000 - Hidden Street - Find the Jewel +109010100 - Hidden Street - Eastern Field +109010101 - Hidden Street - Hidden Place in the East +109010102 - Hidden Street - Hidden Place in the East +109010103 - Hidden Street - Hidden Place in the East +109010104 - Hidden Street - Hidden Place in the East +109010105 - Hidden Street - Hidden Place in the East +109010106 - Hidden Street - Hidden Place in the East +109010107 - Hidden Street - Hidden Place in the East +109010108 - Hidden Street - Hidden Place in the East +109010109 - Hidden Street - Hidden Place in the East +109010110 - Hidden Street - Hidden Place in the East +109010200 - Hidden Street - Southern Field +109010201 - Hidden Street - Hidden Place in South +109010202 - Hidden Street - Hidden Place in South +109010203 - Hidden Street - Hidden Place in South +109010204 - Hidden Street - Hidden Place in South +109010205 - Hidden Street - Hidden Place in South +109010206 - Hidden Street - Hidden Place in South +109010300 - Hidden Street - Northern Field +109010301 - Hidden Street - Hidden Room in North 1 +109010302 - Hidden Street - Hidden Room in North 2 +109010303 - Hidden Street - Hidden Room in North 3 +109010400 - Hidden Street - Western Field +109010401 - Hidden Street - Hidden Room in West 1 +109010402 - Hidden Street - Hidden Room in West 2 +109010403 - Hidden Street - Hidden Room in West 3 +109020001 - Hidden Street - OX Quiz +109030001 - Hidden Street - Ola Ola +109030002 - Hidden Street - Ola Ola +109030003 - Hidden Street - Ola Ola +109030101 - Hidden Street - Ola Ola +109030102 - Hidden Street - Ola Ola +109030103 - Hidden Street - Ola Ola +109030201 - Hidden Street - Ola Ola +109030202 - Hidden Street - Ola Ola +109030203 - Hidden Street - Ola Ola +109030301 - Hidden Street - Ola Ola +109030302 - Hidden Street - Ola Ola +109030303 - Hidden Street - Ola Ola +109030401 - Hidden Street - Ola Ola +109030402 - Hidden Street - Ola Ola +109030403 - Hidden Street - Ola Ola +109040000 - Hidden Street - MapleStory Physical Fitness Test +109040001 - Hidden Street - MapleStory Physical Fitness Challenge +109040002 - Hidden Street - MapleStory Physical Fitness Challenge +109040003 - Hidden Street - MapleStory Physical Fitness Challenge +109040004 - Hidden Street - MapleStory Physical Fitness Challenge +109050000 - Hidden Street - Receiving the Reward For the Event +109050001 - Hidden Street - Leaving the Event +109060000 - Hidden Street - Snowball +109060001 - Hidden Street - Event Map Entrance +109060002 - Hidden Street - Event Map Entrance +109070000 - Hidden Street - Minigame Challenge +109080000 - Hidden Street - Coconut Harvest +109080001 - Hidden Street - Coconut Harvest +109080002 - Hidden Street - Coconut Harvest +109080003 - Hidden Street - G? Coconut Season +110000000 - Florina Road - Florina Beach +110010000 - Florina Road - A Look-Out Shed Around the Beach +110020000 - Florina Road - Lorang Lorang +110020001 - Hidden Street - Lorang Lorang Lorang +110030000 - Florina Road - Lorang and Clang +110030001 - Florina Road - Clang and Lorang +110040000 - Florina Road - Hot Sand +180000000 - Victoria Road - Ellinia +180000001 - Victoria Road - Ellinia +180000002 - Victoria Road - Ellinia +180000003 - Victoria Road - Ellinia +190000000 - Premium Road - Another Sanctuary +190000001 - Premium Road - Breathing Sanctuary I +190000002 - Premium Road - Breathing Sanctuary II +191000000 - Premium Road - The Monkey Forest +191000001 - Premium Road - Tree Dungeon +192000000 - Premium Road - Dry Rocky Mountain +192000001 - Premium Road - Dry Rocky Mountain II +193000000 - Premium Road - Kerning City Internet Cafe +195000000 - Premium Road - Dangerous Ant-Hole +195010000 - Premium Road - Evil Eye's Cave +195020000 - Premium Road - The Lightless Cave +195030000 - Premium Road - Cargo Hunting Ground +196000000 - Premium Road - The Chilly Hill +196010000 - Premium Road - The Chilly Cliff +197000000 - Premium Road - Windy Terrace I +197010000 - Premium Road - Windy Terrace II +120000000 - Victoria Road - Nautilus Harbor +120000100 - The Nautilus - Top Floor - Hallway +120000101 - The Nautilus - Navigation Room +120000102 - The Nautilus - Lord Jonathan's Room +120000103 - The Nautilus - Cafeteria +120000104 - The Nautilus - Training Room +120000200 - The Nautilus - Mid Floor - Hallway +120000201 - The Nautilus - Conference Room +120000202 - The Nautilus - Bedroom +120000300 - The Nautilus - Bottom Floor - Hallway +120000301 - The Nautilus - Generator Room +120010000 - Victoria Road - On the Way to the Harbor +108000500 - Hidden Street - Pirate Test Room +108000501 - Hidden Street - Pirate Test Room +108000502 - Hidden Street - Pirate Test Room +108000503 - Hidden Street - Pirate Test Room +108010500 - Shadow Zone - The Path of Glittering Crystal +108010501 - Shadow Zone - The Other Dimension +100020100 - Mini Dungeon - Henesys Pig Farm +100020101 - Mini Dungeon - Henesys Pig Farm +100020102 - Mini Dungeon - Henesys Pig Farm +100020103 - Mini Dungeon - Henesys Pig Farm +100020104 - Mini Dungeon - Henesys Pig Farm +100020105 - Mini Dungeon - Henesys Pig Farm +100020106 - Mini Dungeon - Henesys Pig Farm +100020107 - Mini Dungeon - Henesys Pig Farm +100020108 - Mini Dungeon - Henesys Pig Farm +100020109 - Mini Dungeon - Henesys Pig Farm +100020110 - Mini Dungeon - Henesys Pig Farm +100020111 - Mini Dungeon - Henesys Pig Farm +100020112 - Mini Dungeon - Henesys Pig Farm +100020113 - Mini Dungeon - Henesys Pig Farm +100020114 - Mini Dungeon - Henesys Pig Farm +100020115 - Mini Dungeon - Henesys Pig Farm +100020116 - Mini Dungeon - Henesys Pig Farm +100020117 - Mini Dungeon - Henesys Pig Farm +100020118 - Mini Dungeon - Henesys Pig Farm +100020119 - Mini Dungeon - Henesys Pig Farm +100020120 - Mini Dungeon - Henesys Pig Farm +100020121 - Mini Dungeon - Henesys Pig Farm +100020122 - Mini Dungeon - Henesys Pig Farm +100020123 - Mini Dungeon - Henesys Pig Farm +100020124 - Mini Dungeon - Henesys Pig Farm +100020125 - Mini Dungeon - Henesys Pig Farm +100020126 - Mini Dungeon - Henesys Pig Farm +100020127 - Mini Dungeon - Henesys Pig Farm +100020128 - Mini Dungeon - Henesys Pig Farm +100020129 - Mini Dungeon - Henesys Pig Farm +100010100 - Hidden Street - Nefarious Hill +101000400 - Victoria Road - Sky Ferry +101010103 - Victoria Road - Top of the Tree That Grew +105040320 - Mini Dungeon - Golem's Castle Ruins +105040321 - Mini Dungeon - Golem's Castle Ruins +105040322 - Mini Dungeon - Golem's Castle Ruins +105040323 - Mini Dungeon - Golem's Castle Ruins +105040324 - Mini Dungeon - Golem's Castle Ruins +105040325 - Mini Dungeon - Golem's Castle Ruins +105040326 - Mini Dungeon - Golem's Castle Ruins +105040327 - Mini Dungeon - Golem's Castle Ruins +105040328 - Mini Dungeon - Golem's Castle Ruins +105040329 - Mini Dungeon - Golem's Castle Ruins +105040330 - Mini Dungeon - Golem's Castle Ruins +105040331 - Mini Dungeon - Golem's Castle Ruins +105040332 - Mini Dungeon - Golem's Castle Ruins +105040333 - Mini Dungeon - Golem's Castle Ruins +105040334 - Mini Dungeon - Golem's Castle Ruins +105040335 - Mini Dungeon - Golem's Castle Ruins +105040336 - Mini Dungeon - Golem's Castle Ruins +105040337 - Mini Dungeon - Golem's Castle Ruins +105040338 - Mini Dungeon - Golem's Castle Ruins +105040339 - Mini Dungeon - Golem's Castle Ruins +105040340 - Mini Dungeon - Golem's Castle Ruins +105040341 - Mini Dungeon - Golem's Castle Ruins +105040342 - Mini Dungeon - Golem's Castle Ruins +105040343 - Mini Dungeon - Golem's Castle Ruins +105040344 - Mini Dungeon - Golem's Castle Ruins +105040345 - Mini Dungeon - Golem's Castle Ruins +105040346 - Mini Dungeon - Golem's Castle Ruins +105040347 - Mini Dungeon - Golem's Castle Ruins +105040348 - Mini Dungeon - Golem's Castle Ruins +105040349 - Mini Dungeon - Golem's Castle Ruins +105040350 - Mini Dungeon - Golem's Castle Ruins +105040351 - Mini Dungeon - Golem's Castle Ruins +105040352 - Mini Dungeon - Golem's Castle Ruins +105040353 - Mini Dungeon - Golem's Castle Ruins +105040354 - Mini Dungeon - Golem's Castle Ruins +105040355 - Mini Dungeon - Golem's Castle Ruins +105040356 - Mini Dungeon - Golem's Castle Ruins +105040357 - Mini Dungeon - Golem's Castle Ruins +105040358 - Mini Dungeon - Golem's Castle Ruins +105040359 - Mini Dungeon - Golem's Castle Ruins +105050101 - Mini Dungeon - Cave of Mushrooms +105050102 - Mini Dungeon - Cave of Mushrooms +105050103 - Mini Dungeon - Cave of Mushrooms +105050104 - Mini Dungeon - Cave of Mushrooms +105050105 - Mini Dungeon - Cave of Mushrooms +105050106 - Mini Dungeon - Cave of Mushrooms +105050107 - Mini Dungeon - Cave of Mushrooms +105050108 - Mini Dungeon - Cave of Mushrooms +105050109 - Mini Dungeon - Cave of Mushrooms +105050110 - Mini Dungeon - Cave of Mushrooms +105050111 - Mini Dungeon - Cave of Mushrooms +105050112 - Mini Dungeon - Cave of Mushrooms +105050113 - Mini Dungeon - Cave of Mushrooms +105050114 - Mini Dungeon - Cave of Mushrooms +105050115 - Mini Dungeon - Cave of Mushrooms +105050116 - Mini Dungeon - Cave of Mushrooms +105050117 - Mini Dungeon - Cave of Mushrooms +105050118 - Mini Dungeon - Cave of Mushrooms +105050119 - Mini Dungeon - Cave of Mushrooms +105050120 - Mini Dungeon - Cave of Mushrooms +105050121 - Mini Dungeon - Cave of Mushrooms +105050122 - Mini Dungeon - Cave of Mushrooms +105050123 - Mini Dungeon - Cave of Mushrooms +105050124 - Mini Dungeon - Cave of Mushrooms +105050125 - Mini Dungeon - Cave of Mushrooms +105050126 - Mini Dungeon - Cave of Mushrooms +105050127 - Mini Dungeon - Cave of Mushrooms +105050128 - Mini Dungeon - Cave of Mushrooms +105050129 - Mini Dungeon - Cave of Mushrooms +105050130 - Mini Dungeon - Cave of Mushrooms +109080010 - Hidden Street - Coke Play Season +109080011 - Hidden Street - Coke Play Season +109080012 - Hidden Street - Coke Play Season +107000301 - Hidden Street - Hut in the Swamp +108000600 - Hidden Street - The 2nd Drill Hall +108000601 - Hidden Street - The 2nd Drill Hall +108000602 - Hidden Street - The 2nd Drill Hall +108010600 - Hidden Street - Tino's Forest +108010610 - Hidden Street - Tiv's Forest +108010620 - Hidden Street - Timu's Forest +108010630 - Hidden Street - Tiru's Forest +108010640 - Hidden Street - Entrance to the Drill Hall +109060003 - Hidden Street - Event Map Entrance +109060004 - Hidden Street - Rolling Snowball<2Stage> +109060005 - Hidden Street - Event Map Entrance +130000000 - Empress' Road - Ereve +130000100 - Empress' Road - Knights Chamber +130000110 - Empress' Road - Knights Chamber 2nd Floor +130000120 - Empress' Road - Knights Chamber 3rd Floor +130000200 - Empress' Road - Crossroads of Ereve +130000210 - Empress' Road - Sky Ferry +130010000 - Empress' Road - Training Forest I +130010010 - Empress' Road - Tino's Forest +130010020 - Empress' Road - Tiv's Forest +130010100 - Empress' Road - Training Forest II +130010110 - Empress' Road - Timu's Forest +130010120 - Empress' Road - Tiru's Forest +130010200 - Empress' Road - Training Forest III +130010210 - Empress' Road - Tiguru's Forest +130010220 - Empress' Road - Kiridu's Hatchery +130020000 - Empress' Road - Entrance to the Drill Hall +103000007 - Victoria Road - Kerning City Night Market +105090320 - Mini Dungeon - Drake's Blue Cave +105100000 - Dungeon - Stairway to the Underground Temple +105100100 - Dungeon - Bottom of the Temple +105100101 - Hidden Street - Tristan's Resting Place +105100300 - Dungeon - Balrog's Tomb +105100301 - Dungeon - Balrog's Disappearance Site +105100400 - Dungeon - Balrog's Tomb +105100401 - Dungeon - Balrog's Disappearance Site +109090000 - Hidden Street - Sheep Ranch Lobby +109090001 - Hidden Street - Sheep Ranch Lobby +109090002 - Hidden Street - Sheep Ranch Lobby +109090003 - Hidden Street - Sheep Ranch Lobby +109090004 - Hidden Street - Sheep Ranch Lobby +109090100 - Hidden Street - Sheep Camp Waiting Room +109090101 - Hidden Street - Sheep Camp Waiting Room +109090102 - Hidden Street - Sheep Camp Waiting Room +109090103 - Hidden Street - Sheep Camp Waiting Room +109090104 - Hidden Street - Sheep Camp Waiting Room +109090200 - Hidden Street - Wolf Camp Waiting Room +109090201 - Hidden Street - Wolf Camp Waiting Room +109090202 - Hidden Street - Wolf Camp Waiting Room +109090203 - Hidden Street - Wolf Camp Waiting Room +109090204 - Hidden Street - Wolf Camp Waiting Room +109090300 - Hidden Street - Sheep Ranch Event +109090301 - Hidden Street - Sheep Ranch Event +109090302 - Hidden Street - Sheep Ranch Event +109090303 - Hidden Street - Sheep Ranch Event +109090304 - Hidden Street - Sheep Ranch Event +130030000 - Empress's Road - Forest of Beginning 1 +130030001 - Empress's Road - Forest of Beginning 2 +130030002 - Empress's Road - Forest of Beginning 3 +130030003 - Empress's Road - Forest of Beginning 4 +130030004 - Empress's Road - Forest of Beginning 5 +130030005 - Empress's Road - A path out of the Forest of Beginning +130030006 - Empress's Road - Small Bridge +100000204 - Victoria Road - Hall of Bowmen +101000004 - Victoria Road - Hall of Magicians +102000004 - Victoria Road - Hall of Warriors +103000008 - Victoria Road - Hall of Thieves +104000004 - Victoria Road - Lith Harbor Info Shop +105040201 - Dungeon - Puppeteer's Hiding Place +106020000 - Mushroom Castle - Mushroom Forest Field +106020100 - Mushroom Castle - Secluded Mushroom Forest +106020200 - Mushroom Castle - Isolated Mushroom Forest +106020300 - Mushroom Castle - Deep Inside Mushroom Forest +106020400 - Mushroom Castle - Split Road of Destiny +106020401 - Mushroom Castle - Steep Downhill 1 +106020402 - Mushroom Castle - Steep Downhill 2 +106020403 - Mushroom Castle - Shadow Cliffs +106020500 - Mushroom Castle - Castle Wall Edge +106020501 - Mushroom Castle - Castle Wall Edge +106020600 - Mushroom Castle - Outer Castle Wall +106020601 - Mushroom Castle - On the Watch +106020700 - Mushroom Castle - Skyscraper 1 +106020800 - Mushroom Castle - Skyscraper 2 +106020900 - Mushroom Castle - West Castle Tower +106021000 - Mushroom Castle - Skyscraper 3 +106021001 - Mushroom Castle - Security Room +106021100 - Mushroom Castle - Skyscraper 4 +106021200 - Mushroom Castle - Skyscraper 5 +106021201 - Mushroom Castle - Central Castle Tower +106021300 - Mushroom Castle - Skyscraper 6 +106021400 - Mushroom Castle - East Castle Tower +106021401 - Mushroom Castle - Entrance to Wedding Hall +106021402 - Mushroom Castle - The Last Castle Tower +106021500 - Mushroom Castle - Entrance to Wedding Hall +106021501 - Mushroom Castle - Castle Tower that leads to the Top +106021600 - Mushroom Castle - Wedding Hall +106021601 - Mushroom Castle - Wedding Hall +106021700 - Mushroom Castle - Wedding Hall +106021800 - Mushroom Castle - Dead End +108000700 - Aran's Past - Head Blacksmith's Shop +108000701 - Aran's Past - Head Blacksmith's Shop +108000702 - Aran's Past - Head Blacksmith's Shop +108000703 - Aran's Past - Head Blacksmith's Shop +108000704 - Aran's Past - Head Blacksmith's Shop +108000705 - Aran's Past - Head Blacksmith's Shop +108000706 - Aran's Past - Head Blacksmith's Shop +108000707 - Aran's Past - Head Blacksmith's Shop +108000708 - Aran's Past - Head Blacksmith's Shop +108000709 - Aran's Past - Head Blacksmith's Shop +108000710 - Aran's Past - Outside Blacksmith's Shop +108000711 - Aran's Past - Outside Blacksmith's Shop +108000712 - Aran's Past - Outside Blacksmith's Shop +108000713 - Aran's Past - Outside Blacksmith's Shop +108000714 - Aran's Past - Outside Blacksmith's Shop +108000715 - Aran's Past - Outside Blacksmith's Shop +108000716 - Aran's Past - Outside Blacksmith's Shop +108000717 - Aran's Past - Outside Blacksmith's Shop +108000718 - Aran's Past - Outside Blacksmith's Shop +108000719 - Aran's Past - Outside Blacksmith's Shop +108010700 - Penguin Port in Emergency - Find the Black Crow! +108010701 - Aran's Past - Razor Sharp Cliff +108010702 - Aran's Past - Black Crow Region +140000000 - Snow Island - Rien +140000001 - Snow Island - Lilin's Home +140000010 - Snow Island - Rien Library 1st Floor +140000011 - Snow Island - Rien Library 2nd Floor +140000012 - Snow Island - Rien Library 3rd Floor +140010000 - Snow Island - Dangerous Forest +140010100 - Snow Island - Dangerous Forest +140010110 - Snow Island - Palace of the Master +140010200 - Snow Island - Dangerous Forest +140010210 - Hidden Street - Field of Wolves +140020000 - Snow Island - Snow-covered Field 1 +140020100 - Snow Island - Snow-covered Field 2 +140020110 - Snow Island - Dangerous Forest +140020200 - Snow Island - Snow-covered Field 3 +140020300 - Snow Island - Dangerous Forest +140030000 - Snow Island - Mirror Cave +140090000 - Snow Island - Ice Cave +140090100 - Snow Island - Cold Forest 1 +140090200 - Snow Island - Cold Forest 2 +140090300 - Snow Island - Cold Forest 3 +140090400 - Snow Island - Cold Forest 4 +140090500 - Snow Island - Cold Forest 5 +140000002 - Snow Island - Rien Library +100000205 - Victoria Road - Hall of Bowmen +100030100 - Utah's House - Small Attic +100030101 - Utah's House - Living Room +100030102 - Utah's House - Front Yard +100030103 - Utah's House - Back Yard +100030200 - Farm Street - Small Forest Trail +100030300 - Farm Street - Farm Center +100030310 - Farm Street - Large Forest Trail +100030400 - Farm Street - Farm Entrance +101000005 - Victoria Road - Hall of Magicians +102000005 - Victoria Road - Hall of Warriors +103000009 - Victoria Road - Hall of Thieves +103000300 - Kerning City Subway - Subway Train +103000301 - Kerning City Subway - Subway Train +103000302 - Kerning City Subway - Subway Train +103000310 - Kerning City Subway - Kerning Square Station +103040000 - Kerning Square - Kerning Square Lobby +103040100 - Kerning Square - 1st Floor 2nd Floor Area A +103040101 - Kerning Square - 1st Floor 2nd Floor Area B +103040102 - Kerning Square - 1st Floor 2nd Floor Area C +103040103 - Kerning Square - 1st Floor 2nd Floor Area D +103040200 - Kerning Square - 3rd Floor 4th Floor Area A +103040201 - Kerning Square - 3rd Floor 4th Floor Area B +103040202 - Kerning Square - 3rd Floor 4th Floor Area C +103040203 - Kerning Square - 3rd Floor 4th Floor Area D +103040300 - Kerning Square - 5th Floor 6th Floor Area A +103040301 - Kerning Square - 5th Floor 6th Floor Area B +103040302 - Kerning Square - 5th Floor 6th Floor Area C +103040303 - Kerning Square - 5th Floor 6th Floor Area D +103040400 - Kerning Square - 7th Floor 8th Floor Area A +103040410 - Kerning Square - 7th Floor 8th Floor Area B +103040420 - Kerning Square - 7th Floor 8th Floor Area C +103040430 - Kerning Square - 7th Floor 8th Floor Area D +103040440 - Kerning Square - VIP Zone Area A +103040450 - Kerning Square - VIP Zone Area B +103040460 - Kerning Square - VIP Zone Area C +120000105 - The Nautilus - Training Room +130000101 - Empress's Road - Knights Chamber +140010111 - Snow Island - Palace of the Master + +ossyria + +200000000 - Orbis - Orbis +200000001 - Orbis - Orbis Weapon Store +200000002 - Orbis - Orbis Department Store +200000100 - Orbis - Orbis Station Enterence +200000110 - Orbis - Station Tunnel +200000111 - Orbis - Station +200000112 - Orbis - Before Takeoff +200000120 - Orbis - Station Pathway +200000121 - Orbis - Station +200000122 - Orbis - Before the Departure +200000130 - Orbis - Cabin Path +200000131 - Orbis - Cabin +200000132 - Orbis - Cabin +200000140 - Orbis - Cabin Path +200000141 - Orbis - Cabin +200000150 - Orbis - Station Tunnel +200000151 - Orbis - Station +200000152 - Orbis - Station +200000200 - Orbis - Orbis Park +200000201 - Orbis Park - Orbis Plastic Surgery +200000202 - Orbis Park - Orbis Hair Salon +200000203 - Orbis Park - Orbis Skin-Care +200000300 - Orbis - Top of the Hill +200000301 - Orbis - Guild Headquarters +200010000 - Orbis - Cloud Park I +200010100 - Orbis - The Road to Garden of 3 Colors +200010110 - Orbis - Garden of Red I +200010111 - Orbis - Garden of Red II +200010120 - Orbis - Garden of Yellow I +200010121 - Orbis - Garden of Yellow II +200010130 - Orbis - Garden of Green I +200010131 - Orbis - Garden of Green II +200010200 - Orbis - Stairway to the Sky I +200010300 - Orbis - Stairway to the Sky II +200010301 - Orbis - Garden of Darkness I +200010302 - Orbis - Garden of Darkness II +200020000 - Orbis - Cloud Park II +200030000 - Orbis - Strolling Path +200040000 - Orbis - Cloud Park III +200040001 - Orbis - Disposed Flower Garden +200050000 - Orbis - Cloud Park IV +200050001 - Orbis - Old Man's House +200060000 - Orbis - Strolling Path II +200070000 - Orbis - Cloud Park V +200080000 - Orbis - Cloud Park VI +200080100 - Orbis - Entrance to Orbis Tower +200080101 - Orbis - The Unknown Tower +200080200 - Orbis - Orbis Tower <20th Floor> +200080300 - Orbis - Orbis Tower <19th Floor> +200080400 - Orbis - Orbis Tower <18th Floor> +200080500 - Orbis - Orbis Tower <17th Floor> +200080600 - Orbis - Orbis Tower <16th Floor> +200080700 - Orbis - Orbis Tower <15th Floor> +200080800 - Orbis - Orbis Tower <14th Floor> +200080900 - Orbis - Orbis Tower <13th Floor> +200081000 - Orbis - Orbis Tower <12th Floor> +200081100 - Orbis - Orbis Tower <11th Floor> +200081200 - Orbis - Orbis Tower <10th Floor> +200081201 - Orbis - Orbis Tower +200081300 - Orbis - Orbis Tower <9th Floor> +200081400 - Orbis - Orbis Tower <8th Floor> +200081500 - Orbis - Orbis Tower <7th Floor> +200081600 - Orbis - Orbis Tower <6th Floor> +200081700 - Orbis - Orbis Tower <5th Floor> +200081800 - Orbis - Orbis Tower <4th Floor> +200081900 - Orbis - Orbis Tower <3rd Floor> +200082000 - Orbis - Orbis Tower <2nd Floor> +200082100 - Orbis - Orbis Tower <1st Floor> +200082200 - Orbis - Orbis Tower +200082300 - Orbis - Orbis Tower +200082301 - Orbis - Orbis Tower +200090000 - During the Ride - To Ellinia +200090001 - During the Ride - Cabin +200090010 - During the Ride - To Orbis +200090011 - During the Ride - Cabin +200090100 - On a Voyage - Ludibrium +200090110 - On a Voyage - Orbis +200090200 - During the Ride - To Leafre +200090210 - During the Ride - To Orbis +200090300 - During the Ride - To Mu Lung +200090310 - During the Ride - To Orbis +200090400 - Cruising - To Ariant +200090410 - Cruising - To Orbis +209000000 - Hidden Street - Happyville +209000001 - Hidden Street - The Hill of Christmas +209000002 - Hidden Street - The Hill of Christmas +209000003 - Hidden Street - The Hill of Christmas +209000004 - Hidden Street - The Hill of Christmas +209000005 - Hidden Street - The Hill of Christmas +209000006 - Hidden Street - The Hill of Christmas +209000007 - Hidden Street - The Hill of Christmas +209000008 - Hidden Street - The Hill of Christmas +209000009 - Hidden Street - The Hill of Christmas +209000010 - Hidden Street - The Hill of Christmas +209000011 - Hidden Street - The Hill of Christmas +209000012 - Hidden Street - The Hill of Christmas +209000013 - Hidden Street - The Hill of Christmas +209000014 - Hidden Street - The Hill of Christmas +209000015 - Hidden Street - The Hill of Christmas +209080000 - Hidden Street - Extra Frosty Snow Zone +211000000 - El Nath - El Nath +211000001 - El Nath - Chief's Residence +211000100 - El Nath - El Nath Market +211000101 - El Nath - El Nath Weapon Store +211000102 - El Nath - El Nath Department Store +211000110 - El Nath - Entrance to El Nath Free Market +211000111 - El Nath - El Nath Free Market <1> +211000112 - El Nath - El Nath Free Market <2> +211000113 - El Nath - El Nath Free Market <3> +211000114 - El Nath - El Nath Free Market <4> +211000115 - El Nath - El Nath Free Market <5> +211000200 - El Nath - Snowy Hill +211010000 - El Nath - Watch Out for Icy Path I +211020000 - El Nath - Watch Out for Icy Path II +211030000 - El Nath - Cold Field I +211040000 - El Nath - Cold Field II +211040001 - Hidden Street - The Crown-Flyer +211040100 - El Nath - Ice Valley I +211040101 - Hidden Street - Valley of Snowman +211040200 - El Nath - Ice Valley II +211040300 - El Nath - Sharp Cliff I +211040400 - El Nath - Sharp Cliff II +211040401 - Hidden Street - Holy Ground at the Snowfield +211040500 - El Nath - Wolf Territory I +211040600 - El Nath - Wolf Territory II +211040700 - El Nath - Dangerous Cliff +211040800 - El Nath - Wolf Territory III +211040900 - El Nath - Wolf Territory IV +211041000 - El Nath - Wolf Territory V +211041100 - El Nath - Forest of Dead Trees I +211041200 - El Nath - Forest of Dead Trees II +211041300 - El Nath - Forest of Dead Trees III +211041400 - El Nath - Forest of Dead Trees IV +211041500 - El Nath - Dead Mine I +211041600 - El Nath - Dead Mine II +211041700 - El Nath - Dead Mine III +211041800 - El Nath - Dead Mine IV +211041900 - El Nath - The Passage +211042000 - El Nath - The Cave of Trial I +211042100 - El Nath - The Cave of Trial II +211042101 - Hidden Street - Cave Within the Cave +211042200 - El Nath - The Cave of Trial III +211042300 - El Nath - The Door to Zakum +211042400 - El Nath - Entrance to Zakum Altar +211050000 - El Nath - Icy Cold Field +220000000 - Ludibrium - Ludibrium +220000001 - Ludibrium - Ludibrium Weapon Store +220000002 - Ludibrium - Ludibrium Pharmacy +220000003 - Ludibrium - Ludibrium Plastic Surgery +220000004 - Ludibrium - Ludibrium Hair Salon +220000005 - Ludibrium - Ludibrium Skin Care +220000006 - Ludibrium - Ludibrium Pet Walkway +220000100 - Ludibrium - Ludibrium Ticketing Place +220000110 - Ludibrium - Station +220000111 - Ludibrium - Before the Departure +220000200 - Ludibrium - Free Market Entrance +220000201 - Ludibrium - Free Market<1> +220000202 - Ludibrium - Free Market<2> +220000203 - Ludibrium - Free Market<3> +220000204 - Ludibrium - Free Market<4> +220000205 - Ludibrium - Free Market<5> +220000206 - Ludibrium - Free Market<6> +220000207 - Ludibrium - Free Market<7> +220000208 - Ludibrium - Free Market<8> +220000209 - Ludibrium - Free Market<9> +220000300 - Ludibrium - Ludibrium Village +220000301 - Ludibrium - Korin's House +220000302 - Ludibrium - Manager Karl's House +220000303 - Ludibrium - Tara and Sarah's House +220000304 - Ludibrium - Chloe's House +220000305 - Ludibrium - Empty House I +220000306 - Ludibrium - Empty House II +220000307 - Ludibrium - Mason's House +220000400 - Ludibrium - Eos Tower Entrance +220000500 - Ludibrium - Helios Tower Entrance +220010000 - Ludibrium - Cloud Terrace<5> +220010001 - Ludibrium - Cloud Balcony +220010100 - Ludibrium - Cloud Terrace<4> +220010200 - Ludibrium - Cloud Terrace<3> +220010300 - Ludibrium - Cloud Terrace<2> +220010400 - Ludibrium - Cloud Terrace<1> +220010500 - Ludibrium - Terrace Hall +220010600 - Ludibrium - Sky Terrace<1> +220010700 - Ludibrium - Sky Terrace<2> +220010800 - Ludibrium - Sky Terrace<3> +220010900 - Ludibrium - Sky Terrace<4> +220011000 - Ludibrium - Sky Terrace<5> +220011001 - Ludibrium - Sky Terrace +220020000 - Ludibrium - Toy Factory Zone 1 +220020100 - Ludibrium - Toy Factory Zone 2 +220020200 - Ludibrium - Toy Factory Zone 3 +220020300 - Ludibrium - Toy Factory
+220020400 - Ludibrium - Toy Factory Zone 5 +220020500 - Ludibrium - Toy Factory Zone 6 +220020600 - Ludibrium - Toy Factory +220030000 - Ludibrium - Toy Factory Zone 1 +220030100 - Ludibrium - Toy Factory Zone 2 +220030200 - Ludibrium - Toy Factory
+220030300 - Ludibrium - Toy Factory Zone 3 +220030400 - Ludibrium - Toy Factory Zone 4 +220040000 - Ludibrium - The Path of Time <1> +220040100 - Ludibrium - The Path of Time <2> +220040200 - Ludibrium - Crossroad of Time +220040300 - Ludibrium - The Path of Time <3> +220040400 - Ludibrium - The Path of Time <4> +220050000 - Ludibrium - Lost Time <1> +220050100 - Ludibrium - Whirlpool of Time +220050200 - Ludibrium - Lost Time <2> +220050300 - Ludibrium - Path of Time +220060000 - Ludibrium - Warped Path of Time<1> +220060100 - Ludibrium - Warped Path of Time<2> +220060200 - Ludibrium - Warped Path of Time<3> +220060201 - Hidden Street - Unbalanced Time +220060300 - Ludibrium - Warped Path of Time<4> +220060301 - Hidden Street - Twisted Time +220060400 - Ludibrium - Warped Passage +220070000 - Ludibrium - Forgotten Path of Time<1> +220070100 - Ludibrium - Forgotten Path of Time<2> +220070200 - Ludibrium - Forgotten Path of Time<3> +220070201 - Hidden Street - Lost Time +220070300 - Ludibrium - Forgotten Path of Time<4> +220070301 - Hidden Street - Forbidden Time +220070400 - Ludibrium - Forgotten Passage +220080000 - Ludibrium - Deep Inside the Clocktower +220080001 - Ludibrium - Origin of Clocktower +221000000 - Omega Sector - Omega Sector +221000001 - Omega Sector - Tunnel +221000100 - Omega Sector - HQ +221000200 - Omega Sector - Silo +221000300 - Omega Sector - Command Center +221000400 - Omega Sector - Safety Zone +221020000 - Ludibrium - Eos Tower 1st Floor +221020100 - Ludibrium - Eos Tower 2nd Floor +221020200 - Ludibrium - Eos Tower 3rd Floor +221020300 - Ludibrium - Eos Tower 4th Floor +221020400 - Ludibrium - Eos Tower 5th Floor +221020500 - Ludibrium - Eos Tower 6th Floor +221020600 - Ludibrium - Eos Tower 7th Floor +221020700 - Ludibrium - Eos Tower 8th Floor +221020701 - Hidden Street - Hidden Tower +221020800 - Ludibrium - Eos Tower 9th Floor +221020900 - Ludibrium - Eos Tower 10th Floor +221021000 - Ludibrium - Eos Tower 11th ~ 20th Floor +221021100 - Ludibrium - Eos Tower 21st Floor +221021200 - Ludibrium - Eos Tower 22nd Floor +221021300 - Ludibrium - Eos Tower 23rd Floor +221021400 - Ludibrium - Eos Tower 24th Floor +221021500 - Ludibrium - Eos Tower 25th Floor +221021600 - Ludibrium - Eos Tower 26th ~ 40th Floor +221021700 - Ludibrium - Eos Tower 41st Floor +221021800 - Ludibrium - Eos Tower 42nd Floor +221021900 - Ludibrium - Eos Tower 43rd Floor +221022000 - Ludibrium - Eos Tower 44th Floor +221022100 - Ludibrium - Eos Tower 45th Floor +221022200 - Ludibrium - Eos Tower 46th ~ 55th Floor +221022300 - Ludibrium - Eos Tower 56th Floor +221022400 - Ludibrium - Eos Tower 57th Floor +221022500 - Ludibrium - Eos Tower 58th Floor +221022600 - Ludibrium - Eos Tower 59th Floor +221022700 - Ludibrium - Eos Tower 60th Floor +221022800 - Ludibrium - Eos Tower 61st ~ 70th Floor +221022900 - Ludibrium - Eos Tower 71st Floor +221023000 - Ludibrium - Eos Tower 72nd Floor +221023100 - Ludibrium - Eos Tower 73rd Floor +221023200 - Ludibrium - Eos Tower 74th Floor +221023300 - Ludibrium - Eos Tower 75th Floor +221023400 - Ludibrium - Eos Tower 76th ~ 90th Floor +221023500 - Ludibrium - Eos Tower 91st Floor +221023600 - Ludibrium - Eos Tower 92nd Floor +221023700 - Ludibrium - Eos Tower 93rd Floor +221023800 - Ludibrium - Eos Tower 94th Floor +221023900 - Ludibrium - Eos Tower 95th Floor +221024000 - Ludibrium - Eos Tower 96th Floor +221024100 - Ludibrium - Eos Tower 97th Floor +221024200 - Ludibrium - Eos Tower 98th Floor +221024300 - Ludibrium - Eos Tower 99th Floor +221024400 - Ludibrium - Eos Tower 100th Floor +221024500 - Ludibrium - Eos Tower 101st Floor +221030000 - Omega Sector - Off-Limits +221030100 - Omega Sector - Boswell Field I +221030200 - Omega Sector - Boswell Field II +221030300 - Omega Sector - Boswell Field III +221030301 - Hidden Street - Mateon Field +221030400 - Omega Sector - Boswell Field IV +221030401 - Hidden Street - Plateon Field +221030500 - Omega Sector - Boswell Field V +221030501 - Hidden Street - Mecateon Field +221030600 - Omega Sector - Boswell Field VI +221030601 - Hidden Street - Defeat Monsters +221040000 - Omega Sector - Kulan Field I +221040100 - Omega Sector - Kulan Field II +221040200 - Omega Sector - Kulan Field III +221040201 - Hidden Street - Barnard Field +221040300 - Omega Sector - Kulan Field IV +221040400 - Omega Sector - Kulan Field V +221040401 - Hidden Street - Entrance to Dogon's HQ +221040402 - Hidden Street - Dogon's HQ +222000000 - Korean Folk Town - Korean Folk Town +222000001 - Korean Folk Town - Pond +222010000 - Korean Folk Town - Entrance to Black Mountain +222010001 - Korean Folk Town - Black Mountain +222010002 - Korean Folk Town - A Small Well +222010100 - Korean Folk Town - Around the Pond +222010101 - Korean Folk Town - Tiger Forest I +222010102 - Korean Folk Town - Tiger Forest II +222010200 - Korean Folk Town - Tiger Ridge +222010201 - Korean Folk Town - Black Mountain +222010300 - Korean Folk Town - Fox Ridge +222010400 - Korean Folk Town - Top of Black Mountain +222010401 - Hidden Street - Haunted House +222020000 - Ludibrium - Helios Tower +222020100 - Ludibrium - Helios Tower <2nd Floor> +222020110 - Ludibrium - Elevator +222020111 - Ludibrium - Elevator +222020200 - Ludibrium - Helios Tower <99th Floor> +222020210 - Ludibrium - Elevator +222020211 - Ludibrium - Elevator +222020300 - Ludibrium - Helios Tower (100th Floor) +222020400 - Hidden Street - Time Control Room +230000000 - Aquarium - Aquarium +230000001 - Aquarium - The Center Hall +230000002 - Aquarium - Department Store +230000003 - Aquarium - Zoo +230010000 - Aqua Road - Ocean I.C +230010001 - Hidden Street - Penguin's Playground +230010100 - Aqua Road - Crystal Gorge +230010200 - Aqua Road - Red Coral Forest +230010201 - Aqua Road - Snowy Whale's Island +230010300 - Aqua Road - Turban Shell Hill +230010400 - Aqua Road - Forked Road : West Sea +230020000 - Aqua Road - Forked Road : East Sea +230020100 - Aqua Road - The Seaweed Tower +230020101 - Hidden Street - The Hidden Town +230020200 - Aqua Road - Sand Castle Playground +230020201 - Aqua Road - Two Palm Trees +230020300 - Aqua Road - Big Fish Valley +230030000 - Aqua Road - Blue Seaweed Road +230030001 - Hidden Street - Fish Resting Spot +230030100 - Aqua Road - Mushroom Coral Hill +230030101 - Aqua Road - Tae Gong's Ferry +230030200 - Aqua Road - The Sharp Unknown +230040000 - Aqua Road - Deep Sea Gorge I +230040001 - Aqua Road - Carta's Cave +230040100 - Aqua Road - Deep Sea Gorge II +230040200 - Aqua Road - Dangerous Sea Gorge I +230040300 - Aqua Road - Dangerous Sea Gorge II +230040301 - Aqua Road - A Small Cave +230040400 - Aqua Road - The Grave of a Wrecked Ship +230040401 - Aqua Road - A Small Wrecked Ship +230040410 - Aqua Road - The Dangerous Cave +230040420 - Aqua Road - The Cave of Pianus +240000000 - Leafre - Leafre +240000001 - Leafre - Chief's House +240000002 - Leafre - Department Store +240000003 - Leafre - Yaku's House +240000004 - Leafre - Ito's House +240000005 - Leafre - Kumo's House +240000006 - Leafre - Pam's House +240000100 - Leafre - Leafre Station Enterence +240000110 - Leafre - Station +240000111 - Leafre - Before Takeoff +240010000 - Leafre - West Leafre Forest +240010100 - Leafre - Minar Forest : West Border +240010101 - Leafre - Peach Monkey Forest +240010200 - Leafre - Cranky Forest +240010300 - Leafre - Steep Hill +240010400 - Leafre - Forest : Crossroad +240010500 - Leafre - Valley of the Antelope +240010501 - Leafre - Forest of the Priest +240010600 - Leafre - Sky Nest II +240010700 - Leafre - Sky Nest I +240010800 - Leafre - Entrance to Sky Nest +240010900 - Leafre - Minar Forest : East Border +240010901 - Leafre - Beetle Forest +240011000 - Leafre - Leafre : East Forest +240020000 - Leafre - The Area of Red Kentaurus +240020100 - Leafre - Battlefield of Fire and Darkness +240020101 - Leafre - Griffey Forest +240020102 - Leafre - Griffey Forest +240020200 - Leafre - The Area of Black Kentaurus +240020300 - Leafre - Battlefield of Water and Darkness +240020400 - Leafre - The Area of Blue Kentaurus +240020401 - Leafre - Manon's Forest +240020402 - Leafre - Manon's Forest +240020500 - Leafre - Battlefield of Fire and Water +240030000 - Leafre - Entrance to Dragon Forest +240030100 - Leafre - Dragon Forest I +240030101 - Leafre - The Burning Forest +240030102 - Leafre - The Forest That Disappeared +240030103 - Hidden Street - The Hidden Dragon Tomb I +240030104 - Hidden Street - The Hidden Dragon Tomb II +240030200 - Leafre - Dragon Forest II +240030300 - Leafre - Dragon Forest III +240040000 - Leafre - The Dragon Canyon +240040100 - Leafre - Canyon : Crossroad +240040200 - Leafre - Canyon : East Road +240040210 - Hidden Street - Blue Wyvern's Nest +240040300 - Leafre - Canyon : West Road +240040310 - Hidden Street - Red Wyvern's Nest +240040400 - Leafre - Wyvern Canyon +240040500 - Leafre - Entrance to Dragon Nest +240040510 - Leafre - Nest of a Dead Dragon +240040511 - Leafre - The Dragon Nest Left Behind +240040520 - Leafre - Destroyed Dragon Nest +240040521 - Leafre - Dangerous Dragon Nest +240040600 - Leafre - Peak of the Big Nest +240040610 - Leafre - Below the Dangerous Nest +240040611 - Leafre - Nine Spirit's Nest +240040700 - Leafre - Cave of Life - Entrance +240050000 - Cave of Life - Cave Entrance +240050100 - Cave of Life - Room of Maze +240050101 - Cave of Life - 1st Room of Maze +240050102 - Cave of Life - 2nd Room of Maze +240050103 - Cave of Life - 3rd Room of Maze +240050104 - Cave of Life - 4th Room of Maze +240050105 - Cave of Life - 5th Room of Maze +240050200 - Cave of Life - Cave of Choice +240050300 - Cave of Life - Cave of Light +240050310 - Cave of Life - Cave of Darkness +240050400 - Cave of Life - Entrance to Horntail's Cave +240050500 - Cave of Life - Cave Exit +240050600 - Cave of Life - Cave : The Road in Between +240060000 - Cave of Life - The Cave of Trial I +240060100 - Cave of Life - The Cave of Trial II +240060200 - Cave of Life - Horntail's Cave +250000000 - Mu Lung - Mu Lung +250000001 - Mu Lung - Tae Sang's House +250000002 - Mu Lung - Mu Lung Department Store +250000003 - Mu Lung - Mu Lung Hair Salon +250000100 - Mu Lung - Mu Lung Temple +250010000 - Mu Lung - Entrance to Sky Forest +250010100 - Mu Lung - Sky Forest : The Train +250010200 - Mu Lung - Deep in the Sky Forest +250010300 - Mu Lung - Snake Area +250010301 - Mu Lung - Wild Bear Area 1 +250010302 - Mu Lung - Wild Bear Area 2 +250010303 - Mu Lung - Wild Bear Area 3 +250010304 - Mu Lung - Territory of Wandering Bear +250010400 - Mu Lung - Where the Sky Forest Ends +250010500 - Mu Lung - Peach Farm1 +250010501 - Mu Lung - Foggy Forest +250010502 - Mu Lung - Virtuous Forest +250010503 - Mu Lung - Goblin Forest 1 +250010504 - Mu Lung - Goblin Forest 2 +250010600 - Mu Lung - Peach Farm 2 +250010700 - Mu Lung - Peach Farm 3 +250020000 - Mu Lung - Practice Field : Beginner +250020100 - Mu Lung - Practice Field : Easy Level +250020200 - Mu Lung - Practice Field : Normal Level +250020300 - Mu Lung - Practice Field : Advanced Level +251000000 - Herb Town - Herb Town +251000100 - Herb Town - Pier on the Beach +251010000 - Herb Town - 10-Year-Old Herb Garden +251010100 - Herb Town - 50-Year-Old Herb Garden +251010101 - Herb Town - 60-Year-Old Herb Garden +251010102 - Herb Town - 80-Year-Old Herb Garden +251010200 - Herb Town - 100-Year-Old Herb Garden +251010300 - Herb Town - Bellflower Valley +251010400 - Herb Town - Old Swamp +251010401 - Herb Town - Red-Nose Pirate Den 1 +251010402 - Herb Town - Red-Nose Pirate Den 2 +251010403 - Herb Town - Red-Nose Pirate Den 3 +251010404 - Herb Town - Over the Pirate Ship +251010410 - Mini Dungeon - Pillage of Treasure Island +251010500 - Herb Town - Isolated Swamp +260000000 - The Burning Road - Ariant +260000100 - Ariant - Ariant Station Platform +260000110 - Ariant - Before Takeoff +260000200 - Ariant - The Town of Ariant +260000201 - Town of Ariant - An Old, Empty House +260000202 - Town of Ariant - Residential Area 1 +260000203 - Town of Ariant - Residential Area 2 +260000204 - Town of Ariant - Residential Area 3 +260000205 - Town of Ariant - Residential Area 4 +260000206 - Town of Ariant - Residential Area 5 +260000207 - Town of Ariant - Residential Area 6 +260000300 - Ariant - Ariant Castle +260000301 - Ariant Castle - Castle Garden +260000302 - Ariant Castle - Palace Hallway +260000303 - Ariant Castle - King's Room +260010000 - The Burning Sands - Outside the West Entrance of Ariant +260010001 - Hidden Street - Young Catthus Desert +260010100 - The Burning Sands - Cactus Desert 1 +260010200 - The Burning Sands - Cactus Desert 2 +260010201 - Hidden Street - Royal Catthus Desert +260010300 - The Burning Sands - White Rock Desert +260010301 - Hidden Street - Bellamoa's Cave +260010400 - The Burning Sands - The Scorching Desert +260010401 - Hidden Street - Rocky Hill +260010402 - Hidden Street - Red Scorpion's Lair +260010500 - The Burning Sands - Dry Desert +260010501 - Hidden Street - Frilled Field +260010600 - The Burning Sands - Tent of the Entertainers +260010700 - The Burning Sands - Outside East Entrance of Ariant +260020000 - The Burning Sands - Outside North Entrance of Ariant +260020100 - The Burning Sands - North Desert Road 1 +260020200 - Sunset Road - North Desert Road 2 +260020300 - Sunset Road - The Desert of Red Sand +260020400 - Sunset Road - The Ruins of Desert Nomads +260020401 - Hidden Street - The Giant of the Sunset +260020500 - Sunset Road - Sahel 3 +260020600 - Sunset Road - Sahel 2 +260020610 - Sunset Road - The Desert of Serenity +260020620 - Sunset Road - The Desert of Dreams +260020700 - Sunset Road - Sahel 1 +280010000 - Adobis's Mission I - Unknown Dead Mine +280010010 - Adobis's Mission I - Area 1-1 +280010011 - Adobis's Mission I - Area 1-2 +280010020 - Adobis's Mission I - Area 2-1 +280010030 - Adobis's Mission I - Area 3-1 +280010031 - Adobis's Mission I - Area 3-2 +280010040 - Adobis's Mission I - Area 4-1 +280010041 - Adobis's Mission I - Area 4-2 +280010050 - Adobis's Mission I - Area 5-1 +280010060 - Adobis's Mission I - Area 6-1 +280010070 - Adobis's Mission I - Area 7-1 +280010071 - Adobis's Mission I - Area 7-2 +280010080 - Adobis's Mission I - Area 8-1 +280010081 - Adobis's Mission I - Area 8-2 +280010090 - Adobis's Mission I - Area 9-1 +280010091 - Adobis's Mission I - Area 9-2 +280010100 - Adobis's Mission I - Area 10-1 +280010101 - Adobis's Mission I - Area 10-2 +280010110 - Adobis's Mission I - Area 11-1 +280010120 - Adobis's Mission I - Area 12-1 +280010130 - Adobis's Mission I - Area 13-1 +280010140 - Adobis's Mission I - Area 14-1 +280010150 - Adobis's Mission I - Area 15-1 +280011000 - Adobis's Mission I - Area 16 +280011001 - Adobis's Mission I - Area 16-1 +280011002 - Adobis's Mission I - Area 16-2 +280011003 - Adobis's Mission I - Area 16-3 +280011004 - Adobis's Mission I - Area 16-4 +280011005 - Adobis's Mission I - Area 16-5 +280011006 - Adobis's Mission I - Area 16-6 +280020000 - Adobis's Mission I - Breath of Lava +280020001 - Adobis's Mission I - Breath of Lava +280030000 - Last Mission - Zakum's Altar +280090000 - Adobis's Mission I - The Room of Tragedy +261000000 - Sunset Road - Magatia +261000001 - Magatia - Home of the Missing Alchemist +261000002 - Magatia - Weapon & Armor Shop +261000010 - Magatia - Zenumist Society +261000011 - Magatia - Zenumist - Hidden Room +261000020 - Magatia - Alcadno Society +261000021 - Magatia - Alcadno - Hidden Room +261010000 - Zenumist Research Institute - Lab - 1st Floor Hallway +261010001 - Zenumist Research Institute - Lab - Unit 101 +261010002 - Zenumist Research Institute - Lab - Unit 102 +261010003 - Zenumist Research Institute - Lab - Unit 103 +261010100 - Zenumist Research Institute - Lab - 2nd Floor Hallway +261010101 - Zenumist Research Institute - Lab - Unit 201 +261010102 - Zenumist Research Institute - Lab - Unit 202 +261010103 - Zenumist Research Institute - Lab - Unit 203 +261020000 - Alcadno Research Institute - Lab - Center Gate +261020100 - Alcadno Research Institute - Lab - Area A-1 +261020200 - Alcadno Research Institute - Lab - Area B-1 +261020300 - Alcadno Research Institute - Lab - Area C-1 +261020301 - Hidden Street - Critical Error +261020302 - Hidden Street - Critical Error +261020303 - Hidden Street - Critical Error +261020304 - Hidden Street - Critical Error +261020305 - Hidden Street - Critical Error +261020306 - Hidden Street - Critical Error +261020307 - Hidden Street - Critical Error +261020308 - Hidden Street - Critical Error +261020309 - Hidden Street - Critical Error +261020310 - Hidden Street - Critical Error +261020311 - Hidden Street - Critical Error +261020312 - Hidden Street - Critical Error +261020313 - Hidden Street - Critical Error +261020314 - Hidden Street - Critical Error +261020315 - Hidden Street - Critical Error +261020316 - Hidden Street - Critical Error +261020317 - Hidden Street - Critical Error +261020318 - Hidden Street - Critical Error +261020319 - Hidden Street - Critical Error +261020320 - Hidden Street - Critical Error +261020321 - Hidden Street - Critical Error +261020322 - Hidden Street - Critical Error +261020323 - Hidden Street - Critical Error +261020324 - Hidden Street - Critical Error +261020325 - Hidden Street - Critical Error +261020326 - Hidden Street - Critical Error +261020327 - Hidden Street - Critical Error +261020328 - Hidden Street - Critical Error +261020329 - Hidden Street - Critical Error +261020330 - Hidden Street - Critical Error +261020331 - Hidden Street - Critical Error +261020332 - Hidden Street - Critical Error +261020333 - Hidden Street - Critical Error +261020334 - Hidden Street - Critical Error +261020335 - Hidden Street - Critical Error +261020336 - Hidden Street - Critical Error +261020337 - Hidden Street - Critical Error +261020338 - Hidden Street - Critical Error +261020339 - Hidden Street - Critical Error +261020340 - Hidden Street - Critical Error +261020400 - Alcadno Research Institute - Lab - Area C-2 +261020401 - Hidden Street - Authorized Personnel Only +261020500 - Alcadno Research Institute - Lab - Area C-3 +261020600 - Alcadno Research Institute - Lab - Area B-3 +261020700 - Alcadno Research Institute - Lab - Area A-3 +261030000 - Hidden Street - Lab - Secret Basement Path +261030001 - Hidden Street - The Unknown Underground Passage +261040000 - Hidden Street - Black Magician's Lab +200090500 - In Flight - Way to Temple of Time +200090510 - In Flight - Way to Minar Forest +221023401 - Mini Dungeon - Drummer Bunny's Lair +221023402 - Mini Dungeon - Drummer Bunny's Lair +221023403 - Mini Dungeon - Drummer Bunny's Lair +221023404 - Mini Dungeon - Drummer Bunny's Lair +221023405 - Mini Dungeon - Drummer Bunny's Lair +221023406 - Mini Dungeon - Drummer Bunny's Lair +221023407 - Mini Dungeon - Drummer Bunny's Lair +221023408 - Mini Dungeon - Drummer Bunny's Lair +221023409 - Mini Dungeon - Drummer Bunny's Lair +221023410 - Mini Dungeon - Drummer Bunny's Lair +221023411 - Mini Dungeon - Drummer Bunny's Lair +221023412 - Mini Dungeon - Drummer Bunny's Lair +221023413 - Mini Dungeon - Drummer Bunny's Lair +221023414 - Mini Dungeon - Drummer Bunny's Lair +221023415 - Mini Dungeon - Drummer Bunny's Lair +221023416 - Mini Dungeon - Drummer Bunny's Lair +221023417 - Mini Dungeon - Drummer Bunny's Lair +221023418 - Mini Dungeon - Drummer Bunny's Lair +221023419 - Mini Dungeon - Drummer Bunny's Lair +221023420 - Mini Dungeon - Drummer Bunny's Lair +221023421 - Mini Dungeon - Drummer Bunny's Lair +221023422 - Mini Dungeon - Drummer Bunny's Lair +221023423 - Mini Dungeon - Drummer Bunny's Lair +221023424 - Mini Dungeon - Drummer Bunny's Lair +221023425 - Mini Dungeon - Drummer Bunny's Lair +221040301 - Hidden Street - Gray's Prairie +222010310 - Hidden Street - Moon Ridge +222010402 - Hidden Street - Goblin House +240020501 - Mini Dungeon - The Round Table of Kentaurus +240020502 - Mini Dungeon - The Round Table of Kentaurus +240020503 - Mini Dungeon - The Round Table of Kentaurus +240020504 - Mini Dungeon - The Round Table of Kentaurus +240020505 - Mini Dungeon - The Round Table of Kentaurus +240020506 - Mini Dungeon - The Round Table of Kentaurus +240020507 - Mini Dungeon - The Round Table of Kentaurus +240020508 - Mini Dungeon - The Round Table of Kentaurus +240020509 - Mini Dungeon - The Round Table of Kentaurus +240020510 - Mini Dungeon - The Round Table of Kentaurus +240020511 - Mini Dungeon - The Round Table of Kentaurus +240020512 - Mini Dungeon - The Round Table of Kentaurus +240020513 - Mini Dungeon - The Round Table of Kentaurus +240020514 - Mini Dungeon - The Round Table of Kentaurus +240020515 - Mini Dungeon - The Round Table of Kentaurus +240020516 - Mini Dungeon - The Round Table of Kentaurus +240020517 - Mini Dungeon - The Round Table of Kentaurus +240020518 - Mini Dungeon - The Round Table of Kentaurus +240020519 - Mini Dungeon - The Round Table of Kentaurus +240020520 - Mini Dungeon - The Round Table of Kentaurus +240020521 - Mini Dungeon - The Round Table of Kentaurus +240020522 - Mini Dungeon - The Round Table of Kentaurus +240020523 - Mini Dungeon - The Round Table of Kentaurus +240020524 - Mini Dungeon - The Round Table of Kentaurus +240020525 - Mini Dungeon - The Round Table of Kentaurus +240020526 - Mini Dungeon - The Round Table of Kentaurus +240020527 - Mini Dungeon - The Round Table of Kentaurus +240020528 - Mini Dungeon - The Round Table of Kentaurus +240020529 - Mini Dungeon - The Round Table of Kentaurus +240020530 - Mini Dungeon - The Round Table of Kentaurus +240020600 - Hidden Street - Isolated Forest +240040401 - Hidden Street - Leviathan's Canyon +240040612 - Hidden Street - Nine Spirit's Nest +240040800 - Mini Dungeon - The Restoring Memory +240040801 - Mini Dungeon - The Restoring Memory +240040802 - Mini Dungeon - The Restoring Memory +240040803 - Mini Dungeon - The Restoring Memory +240040804 - Mini Dungeon - The Restoring Memory +240040805 - Mini Dungeon - The Restoring Memory +240040806 - Mini Dungeon - The Restoring Memory +240040807 - Mini Dungeon - The Restoring Memory +240040808 - Mini Dungeon - The Restoring Memory +240040809 - Mini Dungeon - The Restoring Memory +240040810 - Mini Dungeon - The Restoring Memory +240040811 - Mini Dungeon - The Restoring Memory +240040812 - Mini Dungeon - The Restoring Memory +240040813 - Mini Dungeon - The Restoring Memory +240040814 - Mini Dungeon - The Restoring Memory +240040815 - Mini Dungeon - The Restoring Memory +240040816 - Mini Dungeon - The Restoring Memory +240040817 - Mini Dungeon - The Restoring Memory +240040818 - Mini Dungeon - The Restoring Memory +240040819 - Mini Dungeon - The Restoring Memory +240040820 - Mini Dungeon - The Restoring Memory +240040821 - Mini Dungeon - The Restoring Memory +240040822 - Mini Dungeon - The Restoring Memory +240040823 - Mini Dungeon - The Restoring Memory +240040824 - Mini Dungeon - The Restoring Memory +240040825 - Mini Dungeon - The Restoring Memory +240040826 - Mini Dungeon - The Restoring Memory +240040827 - Mini Dungeon - The Restoring Memory +240040828 - Mini Dungeon - The Restoring Memory +240040829 - Mini Dungeon - The Restoring Memory +240040900 - Mini Dungeon - Newt Secured Zone +240040901 - Mini Dungeon - Newt Secured Zone +240040902 - Mini Dungeon - Newt Secured Zone +240040903 - Mini Dungeon - Newt Secured Zone +240040904 - Mini Dungeon - Newt Secured Zone +240040905 - Mini Dungeon - Newt Secured Zone +240040906 - Mini Dungeon - Newt Secured Zone +240040907 - Mini Dungeon - Newt Secured Zone +240040908 - Mini Dungeon - Newt Secured Zone +240040909 - Mini Dungeon - Newt Secured Zone +240040910 - Mini Dungeon - Newt Secured Zone +240040911 - Mini Dungeon - Newt Secured Zone +240040912 - Mini Dungeon - Newt Secured Zone +240040913 - Mini Dungeon - Newt Secured Zone +240040914 - Mini Dungeon - Newt Secured Zone +240040915 - Mini Dungeon - Newt Secured Zone +240040916 - Mini Dungeon - Newt Secured Zone +240040917 - Mini Dungeon - Newt Secured Zone +240040918 - Mini Dungeon - Newt Secured Zone +240040919 - Mini Dungeon - Newt Secured Zone +240040920 - Mini Dungeon - Newt Secured Zone +240040921 - Mini Dungeon - Newt Secured Zone +240040922 - Mini Dungeon - Newt Secured Zone +240040923 - Mini Dungeon - Newt Secured Zone +240040924 - Mini Dungeon - Newt Secured Zone +240040925 - Mini Dungeon - Newt Secured Zone +240040926 - Mini Dungeon - Newt Secured Zone +240040927 - Mini Dungeon - Newt Secured Zone +240040928 - Mini Dungeon - Newt Secured Zone +240040929 - Mini Dungeon - Newt Secured Zone +260020630 - Mini Dungeon - Hill of Sandstorms +260020631 - Mini Dungeon - Hill of Sandstorms +260020632 - Mini Dungeon - Hill of Sandstorms +260020633 - Mini Dungeon - Hill of Sandstorms +260020634 - Mini Dungeon - Hill of Sandstorms +260020635 - Mini Dungeon - Hill of Sandstorms +260020636 - Mini Dungeon - Hill of Sandstorms +260020637 - Mini Dungeon - Hill of Sandstorms +260020638 - Mini Dungeon - Hill of Sandstorms +260020639 - Mini Dungeon - Hill of Sandstorms +260020640 - Mini Dungeon - Hill of Sandstorms +260020641 - Mini Dungeon - Hill of Sandstorms +260020642 - Mini Dungeon - Hill of Sandstorms +260020643 - Mini Dungeon - Hill of Sandstorms +260020644 - Mini Dungeon - Hill of Sandstorms +260020645 - Mini Dungeon - Hill of Sandstorms +260020646 - Mini Dungeon - Hill of Sandstorms +260020647 - Mini Dungeon - Hill of Sandstorms +260020648 - Mini Dungeon - Hill of Sandstorms +260020649 - Mini Dungeon - Hill of Sandstorms +260020650 - Mini Dungeon - Hill of Sandstorms +260020651 - Mini Dungeon - Hill of Sandstorms +260020652 - Mini Dungeon - Hill of Sandstorms +260020653 - Mini Dungeon - Hill of Sandstorms +260020654 - Mini Dungeon - Hill of Sandstorms +260020655 - Mini Dungeon - Hill of Sandstorms +260020656 - Mini Dungeon - Hill of Sandstorms +260020657 - Mini Dungeon - Hill of Sandstorms +260020658 - Mini Dungeon - Hill of Sandstorms +260020659 - Mini Dungeon - Hill of Sandstorms +260020660 - Mini Dungeon - Hill of Sandstorms +260020661 - Mini Dungeon - Hill of Sandstorms +260020662 - Mini Dungeon - Hill of Sandstorms +260020663 - Mini Dungeon - Hill of Sandstorms +260020664 - Mini Dungeon - Hill of Sandstorms +270000000 - Time Lane - Three Doors +270000100 - Time Lane - Temple of Time +270010000 - Time Lane - Past of the Verdure +270010100 - Time Lane - Memory Lane1 +270010110 - Time Lane - Resting Spot of Memory1 +270010111 - Time Lane - Memory Keeper's Room +270010200 - Time Lane - Memory Lane2 +270010210 - Time Lane - Resting Spot of Memory2 +270010300 - Time Lane - Memory Lane3 +270010310 - Time Lane - Resting Spot of Memory3 +270010400 - Time Lane - Memory Lane4 +270010410 - Memory Keeper - Resting Spot of Memory4 +270010500 - Time Lane - Memory Lane5 +270020000 - Time Lane - Frozen Past +270020100 - Time Lane - Road of Regrets1 +270020110 - Time Lane - Resting Spot of Regret1 +270020200 - Time Lane - Road of Regrets2 +270020210 - Time Lane - Resting Spot of Regret2 +270020211 - Time Lane - Sorcerer's Room +270020300 - Time Lane - Road of Regrets3 +270020310 - Time Lane - Resting Spot of Regret3 +270020400 - Time Lane - Road of Regrets4 +270020410 - Time Lane - Resting Spot of Regret4 +270020500 - Time Lane - Road of Regrets5 +270030000 - Time Lane - Burning Past +270030100 - Time Lane - Road to Oblivion1 +270030110 - Time Lane - Resting Spot of Oblivion1 +270030200 - Time Lane - Road to Oblivion2 +270030210 - Time Lane - Resting Spot of Oblivion2 +270030300 - Time Lane - Road to Oblivion3 +270030310 - Time Lane - Resting Spot of Oblivion3 +270030400 - Time Lane - Road to Oblivion4 +270030410 - Time Lane - Resting Spot of Oblivion4 +270030411 - Time Lane - Record Keeper's Room +270030500 - Time Lane - Road to Oblivion5 +270040000 - Deep Place of Temple - Broken Corridor +270040100 - Deep Place of Temple - Temple Ruins +270050000 - Deep Place of Temple - Forgotten Twilight +270050100 - Deep Place of Temple - Twilight of Gods +270050200 - Deep Place of Temple - Forgotten Twilight +270050300 - Deep Place of Temple - Between Twilight and Daybreak +200000160 - Orbis - Station Hall +200000161 - Orbis - Station +200000204 - Orbis Park - Counseling Room +200090020 - Empress' Road - To Ereve +200090021 - Empress' Road - To Orbis +200090022 - Empress' Road - To Ereve +200090023 - Empress' Road - To Orbis +200090024 - Empress' Road - To Ereve +200090025 - Empress' Road - To Orbis +200090026 - Empress' Road - To Ereve +200090027 - Empress' Road - To Orbis +200090028 - Empress' Road - To Ereve +200090029 - Empress' Road - To Orbis +200090030 - Empress' Road - To Ereve +200090031 - Empress' Road - To Ellinia +200090032 - Empress' Road - To Ereve +200090033 - Empress' Road - To Ellinia +200090034 - Empress' Road - To Ereve +200090035 - Empress' Road - To Ellinia +200090036 - Empress' Road - To Ereve +200090037 - Empress' Road - To Ellinia +200090038 - Empress' Road - To Ereve +200090039 - Empress' Road - To Ellinia +200090040 - Empress' Road - To Ereve +200090041 - Empress' Road - To Orbis +200090042 - Empress' Road - To Ereve +200090043 - Empress' Road - To Orbis +200090044 - Empress' Road - To Ereve +200090045 - Empress' Road - To Orbis +200090046 - Empress' Road - To Ereve +200090047 - Empress' Road - To Orbis +200090048 - Empress' Road - To Ereve +200090049 - Empress' Road - To Orbis +200090050 - Empress' Road - To Ereve +200090051 - Empress' Road - To Ellinia +200090052 - Empress' Road - To Ereve +200090053 - Empress' Road - To Ellinia +200090054 - Empress' Road - To Ereve +200090055 - Empress' Road - To Ellinia +200090056 - Empress' Road - To Ereve +200090057 - Empress' Road - To Ellinia +200090058 - Empress' Road - To Ereve +200090059 - Empress' Road - To Ellinia +200010303 - Hidden Street - Elizas Garden +211040102 - Hidden Street - Snow Souls Resting Place +209000100 - Happy Village - Cliffs Hut +219000000 - Hidden Street - Coke Town +219000001 - Hidden Street - Coke Town Sundry Goods Shop +219000002 - Hidden Street - House of Pouch +219000003 - Hidden Street - House of Lolo +219000004 - Hidden Street - Empty House in Coke Town +219000005 - Hidden Street - House of Puch +219010000 - Hidden Street - Coke Ski Camp +219010001 - Hidden Street - Coke Ski Camp +219010100 - Hidden Street - Coke Ski Camp +219010101 - Hidden Street - Coke Ski Camp +219010200 - Hidden Street - Coke Ski Camp +219010201 - Hidden Street - Coke Ski Camp +219010300 - Hidden Street - Coke Ski Camp B1648 +219020000 - Hidden Street - Coke ValleyI +219020001 - Hidden Street - Small Alley +219020100 - Hidden Street - Coke ValleyII +219020200 - Hidden Street - Coke ValleyIII +219020300 - Hidden Street - Coke ValleyIV +219020301 - Hidden Street - Forest of Coke Golem +200060001 - Hidden Street - Neglected Strolling Path +200090060 - Snow Island - To Rien +200090061 - Snow Island - To Rien +200090062 - Snow Island - To Rien +200090063 - Snow Island - To Rien +200090064 - Snow Island - To Rien +200090065 - Snow Island - To Rien +200090066 - Snow Island - To Rien +200090067 - Snow Island - To Rien +200090068 - Snow Island - To Rien +200090069 - Snow Island - To Rien +200090071 - Snow Island - To Lith Harbor +200090070 - Snow Island - To Lith Harbor +200090072 - Snow Island - To Lith Harbor +200090073 - Snow Island - To Lith Harbor +200090074 - Snow Island - To Lith Harbor +200090075 - Snow Island - To Lith Harbor +200090076 - Snow Island - To Lith Harbor +200090077 - Snow Island - To Lith Harbor +200090078 - Snow Island - To Lith Harbor +200090079 - Snow Island - To Lith Harbor +200080601 - Orbis - Orbis Tower +200090080 - ?? ?? - ?? ?? ??? +200090090 - ?? ?? - ????? +240070000 - Tera Forest - Tera Forest Time Gate +240070010 - Tera Forest - Old Tree in Tera Forest +240070020 - Tera Forest - Old Tree in Tera Forest +240070030 - Tera Forest - Old Tree in Tera Forest +240070040 - Tera Forest - Old Tree in Tera Forest +240070050 - Tera Forest - Old Tree in Tera Forest +240070060 - Tera Forest - Old Tree in Tera Forest +240070100 - Neo City - Average Town Entrance +240070101 - Neo City - Average Town Playground +240070102 - Neo City - Average Town Outskirt +240070200 - Neo City - Midnight Harbor Entrance +240070201 - Neo City - Midnight Harbor Loading Dock +240070202 - Neo City - Midnight Harbor Warehouse +240070203 - Neo City - Midnight Harbor Pier +240070300 - Neo City - Bombed City Center Retail District +240070301 - Neo City - Bombed City Center Overpass +240070302 - Neo City - Bombed City Center Shopping District +240070303 - Neo City - Bombed City Center Square +240070400 - Neo City - Ruined City Intersection +240070401 - Neo City - Ruined City Center +240070402 - Neo City - Ruined City Construction Site +240070403 - Neo City - Ruined City Land Mark +240070500 - Neo City - Dangerous Tower Lobby +240070501 - Neo City - Dangerous Tower Ventilator +240070502 - Neo City - Dangerous Tower Emergency Exit +240070503 - Neo City - Dangerous Tower Penthouse +240070600 - Neo City - Air Battleship Bow +240070601 - Neo City - Air Battleship Area A +240070602 - Neo City - Air Battleship Area B +240070603 - Neo City - Air Battleship Stern + +elin + +300000000 - Ellin Forest - Altaire Camp +300000100 - Altaire Camp - Small Forest +300000010 - Altaire Camp - Camp Conference Room +300000011 - Camp Conference Room - Library +300000012 - Camp Conference Room - Cellar +300000001 - Altaire Camp - Tent House 1 +300000002 - Altaire Camp - Tent House 2 +300010000 - Ellin Forest - Mossy Tree Forest Entrance +300010100 - Ellin Forest - Western Region of Mossy Tree Forest 1 +300010200 - Ellin Forest - Western Region of Mossy Tree Forest 2 +300010300 - Ellin Forest - Mossy Tree Forest Trail +300010400 - Ellin Forest - Boulder Mountain Entrance +300020000 - Ellin Forest - Souther Region of Mossy Tree Forest 1 +300020100 - Ellin Forest - Southern Region of Mossy Tree Forest 2 +300020200 - Ellin Forest - Mushroom Hill Entrance +300030000 - Ellin Forest - Eastern Region of Mossy Tree Forest +300030100 - Ellin Forest - Deep Fairy Forest +390000100 - Unique Road - Gold Richie's Treasures <2> +390000000 - Unique Road - Gold Richie's Treasures <1> +390000200 - Unique Road - Gold Richie's Treasures <3> +390000300 - Unique Road - Gold Richie's Treasures <4> +390000400 - Unique Road - Gold Richie's Treasures <5> +390000500 - Unique Road - Gold Richie's Treasures <6> +390000600 - Unique Road - Gold Richie's Treasures <7> +390000700 - Unique Road - Gold Richie's Treasures <8> +390000800 - Unique Road - Gold Richie's Treasures <9> +390000900 - Unique Road - Gold Richie's Treasures <10> +390001000 - Unique Road - Gold Richie's Treasures <11> +390009999 - Unique Road - Treasure Storage Exit + +weddingGL + +670000100 - Hidden Street - Purplewood Forest 1 +670000200 - Hidden Street - Purplewood Forest 2 +670010000 - Hidden Street - Amos' Training Ground +670010100 - Hidden Street - Entrance of Amorian Challenge +670010200 - Hidden Street - Stage 1 - Magik Mirror +670010300 - Hidden Street - Stage 2 - Heart Strings +670010301 - Hidden Street - Stage 2 - Heart Strings +670010302 - Hidden Street - Stage 2 - Heart Strings +670010400 - Hidden Street - Stage 3 - Twisted Switcher +670010500 - Hidden Street - Stage 4 - Last Man Standing +670010600 - Hidden Street - Stage 5 - Fluttering Hearts +670010700 - Hidden Street - Stage 6 - Love Hurts +670010750 - Hidden Street - Stage 7 - Amos' Vault for Couples +670010800 - Hidden Street - Stage 7 - Amos' Vault +670011000 - Hidden Street - Exit +680000000 - Amoria - Amoria +680000001 - Amoria - Amoria Wedding Shop +680000002 - Amoria - Amoria Hair Salon +680000003 - Amoria - Amoria Plastic Surgery +680000004 - Amoria - Meet the Parents +680000100 - Amoria - White Wedding Lounge +680000110 - Amoria - White Wedding Altar +680000200 - Amoria - Saint Maple Lounge +680000210 - Amoria - Saint Maple Altar +680000300 - Amoria - Cherished Visage Photos +680000400 - Amoria - Untamed Hearts Hunting Ground +680000401 - Amoria - The Love Pinata +680000500 - Amoria - Wedding Exit map +680010000 - Hidden Street - Purple Plains 1 +680010100 - Hidden Street - Purple Plains 2 +681000000 - Hidden Street - Shalom Temple + +MasteriaGL + +610030010 - Crimsonwood Keep - Hall of Mastery +610030011 - Crimsonwood Keep - Tornado Corridor +610030012 - Crimsonwood Keep - The Inferno Chamber +610030013 - Crimsonwood Keep - The Wrath of Night +610030014 - Crimsonwood Keep - Stormhall +610030015 - Crimsonwood Keep - Eternal Vigilance +610030020 - Crimsonwood Keep - Hall to Inner Sanctum +610030100 - Party Quest - Inner Sanctum Hallway +610030200 - Party Quest - Forgotten Storage Chamber +610030300 - Party Quest - The Test of Agility +610030400 - Party Quest - The Test of Wit +610030500 - Party Quest - The Test of Unity +610030510 - Party Quest - Warrior Mastery Room +610030520 - Party Quest - Mage Mastery Room +610030521 - Party Quest - Mage Mastery Room +610030522 - Party Quest - Mage Mastery Room +610030530 - Party Quest - Thief Mastery Room +610030540 - Party Quest - Bowman Mastery Room +610030550 - Party Quest - Pirate Mastery Room +610030600 - Party Quest - Grandmaster Council Hall +610030700 - Party Quest - Grandmaster Secret Chamber +610030800 - Party Quest - Crimsonwood Armory +600000000 - New Leaf City Town Street - New Leaf City - Town Center +600000001 - New Leaf City Town Street - NLC Mall +600010000 - Badlands - Urban Underground +600010001 - New Leaf City Town Street - NLC Subway Station +600010002 - New Leaf City Town Street - Waiting Room(From NLC to KC) +600010003 - Hidden Street - Inside Subway(From NLC to KC) +600010004 - Kerning City Town Street - Waiting Room(From KC to NLC) +600010005 - Hidden Street - Inside Subway(From KC to NLC) +600010100 - Masteria - Jungle Clearing +600010200 - Masteria - Krakian Jungle Basin +600010300 - Masteria - Jungle Valley +600010400 - Masteria - Mountain Slopes +600010500 - Masteria - Mountain Cliffs +600010600 - Masteria - Highlands +600020000 - Bigger Ben - Lobby +600020100 - MesoGears - Deity Room +600020200 - MesoGears - Soul Corridor +600020300 - MesoGears - Wolf Spider Cavern +600020400 - MesoGears - Fire Chamber +600020500 - MesoGears - Ice Chamber +600020600 - MesoGears - Enigma Chamber +610010000 - Phantom Forest - Bent Tree +610010001 - Phantom Forest - Haunted Hill +610010002 - Phantom Forest - Swamp Bog +610010003 - Phantom Forest - Phantom Road +610010004 - Phantom Forest - Dead Man's Gorge +610010005 - Phantom Forest - Forgotten Path +610010010 - Phantom Forest - Hidden Evil +610010011 - Phantom Forest - Creeping Evil +610010012 - Phantom Forest - Evil Rising +610010013 - Phantom Forest - The Evil Dead +610010100 - Phantom Forest - Twisted Paths +610010101 - Phantom Forest - Twisted Paths +610010102 - Phantom Forest - Twisted Paths +610010103 - Phantom Forest - Twisted Paths +610010104 - Phantom Forest - Twisted Paths +610010200 - Phantom Forest - Crossroads +610010201 - Phantom Forest - Crossroads +610010202 - Phantom Forest - Crossroads +610020000 - Crimsonwood Mountain - Valley of Heroes 1 +610020001 - Crimsonwood Mountain - Valley of Heroes 2 +610020002 - Crimsonwood Mountain - Lower Ascent +610020003 - Crimsonwood Mountain - The Path of Strength +610020004 - Crimsonwood Mountain - The Path of Peril +610020005 - Crimsonwood Mountain - Upper Ascent +610020006 - Crimsonwood Mountain - Crimsonwood Keep +610020010 - Crimsonwood Mountain - Cavern of Fear +610020011 - Crimsonwood Mountain - Cavern of Pain +610020012 - Crimsonwood Mountain - Cavern of Shame +610020013 - Crimsonwood Mountain - Cavern of Honor +610020014 - Crimsonwood Mountain - Cavern of Fortitude +610020015 - Crimsonwood Mountain - Cavern of Valor +610030000 - Crimsonwood Keep - Courtyard + +HalloweenGL + +682000000 - Phantom Forest - Haunted House +682000001 - Phantom Forest - Hollowed Ground +682000100 - Haunted House - Foyer +682000200 - Haunted House - Ghost Chimney +682000300 - Haunted House - Hallway +682000301 - Haunted House - Sophilia's Bedroom +682000302 - Haunted House - Vanity Room +682000303 - Haunted House - Study +682000304 - Haunted House - Piano Room +682000305 - Haunted House - Toy Room +682000306 - Haunted House - Barren Room +682000400 - Haunted House - Hallway - Where am I? +682000401 - Haunted House - Sophilia's Bedroom +682000402 - Haunted House - Vanity Room +682000403 - Haunted House - Study +682000404 - Haunted House - Piano Room +682000405 - Haunted House - Toy Room +682000406 - Haunted House - Barren Room +682000500 - Haunted House - Hallway - Where are you? +682000501 - Haunted House - Sophilia's Bedroom +682000502 - Haunted House - Vanity Room +682000503 - Haunted House - Study +682000504 - Haunted House - Piano Room +682000505 - Haunted House - Toy Room +682000506 - Haunted House - Barren Room +682000600 - Haunted House - Hallway - This Again? +682000601 - Haunted House - Sophilia's Bedroom +682000602 - Haunted House - Vanity Room +682000603 - Haunted House - Study +682000604 - Haunted House - Piano Room +682000605 - Haunted House - Toy Room +682000606 - Haunted House - Barren Room +682000700 - Hidden Street - Pumpkin Vault +682000800 - Haunted House - Library +682000900 - Haunted House - Toy Workshop +682010000 - Haunted House - Mansion's Hidden Hall 1 +682010100 - Haunted House - Olivia's Secret Room 1 +682010001 - Haunted House - Mansion's Hidden Hall 2 +682010101 - Haunted House - Olivia's Secret Room 2 +682010002 - Haunted House - Mansion's Hidden Hall 3 +682010102 - Haunted House - Olivia's Secret Room 3 +682010200 - Haunted House - Mansion's Main Chimney +682010201 - Haunted House - Chimney Possessed by the Skeletons +682010202 - Haunted House - Chimney Possessed by the Scarecrow +682010203 - Haunted House - Chimney Possessed by the Clown + +jp + +800000000 - Zipangu - Mushroom Shrine +800010000 - Zipangu - Mushroom Forest +800010001 - Zipangu - The Mountain of Cloud Fox +800010100 - Zipangu - Hall of Mushroom +800020000 - Zipangu - Crow Forest +800020100 - Zipangu - Road to Cemetery +800020101 - Zipangu - Crow Forest 2 +800020110 - Zipangu - A Night in the Forest +800020120 - Zipangu - Vanished Village +800020130 - Zipangu - Encounter with the Buddha +800020200 - Zipangu - A Desolate Cemetery +800020300 - Zipangu - Cemetery Full of Ghosts +800020400 - Zipangu - WanWan Spa of Hell +800030000 - Zipangu - Forest of Animals +801000000 - Zipangu - Showa Town +801000001 - Zipangu - Hair Salon +801000002 - Zipangu - Plastic Surgery +801000100 - Zipangu - Locker Room (M) +801000110 - Zipangu - The Secret Spa (M) +801000200 - Zipangu - Locker Room (F) +801000210 - Zipangu - The Secret Spa (F) +801000300 - Zipangu - Showa Street Market +801010000 - Zipangu - Showa Street 1 +801020000 - Zipangu - Showa Street 2 +801030000 - Zipangu - Showa Street 3 +801040000 - Zipangu - Near the Hideout +801040001 - Zipangu - Parking Lot +801040002 - Zipangu - Finance of Flaming Raccoon +801040003 - Zipangu - Parlor +801040004 - Zipangu - Armory +801040100 - Zipangu - The Nightmarish Last Days +801040101 - Zipangu - Near the Hideout (Beautiful Sky) +809000101 - Zipangu - Spa (M) +809000201 - Zipangu - Spa (F) +809010000 - Florina Beach - Hinamatsuri +809020000 - - Zakum Helmet (Upgraded) +809030000 - - Slot Machine +809040000 - - The Survival Challenge (Waiting Room) +809040100 - - The Survival Challenge +809050000 - Ludibrium - Ludibrium Maze 1 +809050001 - Ludibrium - Ludibrium Maze 2 +809050002 - Ludibrium - Ludibrium Maze 3 +809050003 - Ludibrium - Ludibrium Maze 4 +809050004 - Ludibrium - Ludibrium Maze 5 +809050005 - Ludibrium - Ludibrium Maze 6 +809050006 - Ludibrium - Ludibrium Maze 7 +809050007 - Ludibrium - Ludibrium Maze 8 +809050008 - Ludibrium - Ludibrium Maze 9 +809050009 - Ludibrium - Ludibrium Maze 10 +809050010 - Ludibrium - Ludibrium Maze 11 +809050011 - Ludibrium - Ludibrium Maze 12 +809050012 - Ludibrium - Ludibrium Maze 13 +809050013 - Ludibrium - Ludibrium Maze 14 +809050014 - Ludibrium - Ludibrium Maze 15 +809050015 - Ludibrium - Ludibrium Maze 16 +809050016 - Ludibrium - Exit of the Maze +809050017 - Ludibrium - Exit of the Maze +810000000 - Ludibrium - Entrance to Slot Machine Arcade +880000000 - - WanWan Spa of Hell +881000000 - - The Pirate Hideout +890000001 - - ????????? + +etc + +926100000 - Hidden Street - Mysterious Lab +926100001 - Hidden Street - Dark Tunnel +926100100 - Hidden Street - Unpleasant Lab +926100200 - Hidden Street - Special Lab +926100201 - Hidden Street - Dark Lab 1 +926100202 - Hidden Street - Dark Lab 2 +926100203 - Hidden Street - Yulete's Office +926100300 - Hidden Street - Lab Tunnel +926100301 - Hidden Street - Lab - Unit 101 +926100302 - Hidden Street - Lab - Unit 102 +926100303 - Hidden Street - Lab - Unit 103 +926100304 - Hidden Street - Lab - Unit 104 +926100400 - Hidden Street - Entrance to Center Lab +926100401 - Hidden Street - Center Lab +926100500 - Hidden Street - Traces of Yulete +926100600 - Hidden Street - Romeo and Juliet +926100700 - Hidden Street - Exit +926110000 - Hidden Street - Mysterious Lab +926110001 - Hidden Street - Dark Tunnel +926110100 - Hidden Street - Unpleasant Lab +926110200 - Hidden Street - Special Lab +926110201 - Hidden Street - Dark Lab 1 +926110202 - Hidden Street - Dark Lab 2 +926110203 - Hidden Street - Yulete's Office +926110300 - Hidden Street - Lab Tunnel +926110301 - Hidden Street - Lab - Unit 101 +926110302 - Hidden Street - Lab - Unit 102 +926110303 - Hidden Street - Lab - Unit 103 +926110304 - Hidden Street - Lab - Unit 104 +926110400 - Hidden Street - Entrance to Center Lab +926110401 - Hidden Street - Center Lab +926110500 - Hidden Street - Traces of Yulete +926110600 - Hidden Street - Romeo and Juliet +926110700 - Hidden Street - Exit +926120000 - Hidden Street - Dark Lab +926120100 - Hidden Street - Closed Lab +926120200 - Hidden Street - Dran's Lab +926120300 - Hidden Street - Where Snow Rose Grows +926120400 - Hidden Street - Cheese Storage +926120401 - Hidden Street - Cheese Storage +926120402 - Hidden Street - Cheese Storage +926120403 - Hidden Street - Cheese Storage +926120404 - Hidden Street - Cheese Storage +926120405 - Hidden Street - Cheese Storage +926120406 - Hidden Street - Cheese Storage +926120407 - Hidden Street - Cheese Storage +926120408 - Hidden Street - Cheese Storage +926120409 - Hidden Street - Cheese Storage +926120410 - Hidden Street - Exit - Cheese Storage +926130000 - Hidden Street - Yulete's Lab +926130100 - Hidden Street - Lab Entrance +926130101 - Hidden Street - Yulete's Lab 1 +926130102 - Hidden Street - Yulete's Lab 2 +926130103 - Hidden Street - Yulete's Lab 3 +926130200 - Hidden Street - Lab Exit 1 +926130201 - Hidden Street - Lab Exit 2 +926130203 - Hidden Street - Lab Exit 3 +900000000 - Hidden Street - Utah's Pig Farm +910000000 - Hidden Street - Free Market Entrance +910000001 - Hidden Street - Free Market<1> +910000002 - Hidden Street - Free Market<2> +910000003 - Hidden Street - Free Market<3> +910000004 - Hidden Street - Free Market<4> +910000005 - Hidden Street - Free Market<5> +910000006 - Hidden Street - Free Market<6> +910000007 - Hidden Street - Free Market<7> +910000008 - Hidden Street - Free Market<8> +910000009 - Hidden Street - Free Market<9> +910000010 - Hidden Street - Free Market<10> +910000011 - Hidden Street - Free Market<11> +910000012 - Hidden Street - Free Market<12> +910000013 - Hidden Street - Free Market<13> +910000014 - Hidden Street - Free Market<14> +910000015 - Hidden Street - Free Market<15> +910000016 - Hidden Street - Free Market<16> +910000017 - Hidden Street - Free Market<17> +910000018 - Hidden Street - Free Market<18> +910000019 - Hidden Street - Free Market<19> +910000020 - Hidden Street - Free Market<20> +910000021 - Hidden Street - Free Market<21> +910000022 - Hidden Street - Free Market<22> +910010000 - Hidden Street - Primrose Hill +910010100 - Hidden Street - Shortcut +910010200 - Hidden Street - Pig Town +910010300 - Hidden Street - Back to Town +910010400 - Hidden Street - Shortcut +910200000 - Hidden Street - Hidden Relic +910200001 - Hidden Street - Hidden Relic +910200002 - Hidden Street - Hidden Relic +910300000 - Hidden Street - Dark Lord's Practice Field +910500000 - Hidden Street - Another World : Practice Field +910500100 - Hidden Street - Secret Shrine +910500200 - Hidden Street - Forgotten Shrine +920010000 - Hidden Street - Tower of Goddess +920010100 - Hidden Street - Tower of Goddess
+920010200 - Hidden Street - Tower of Goddess +920010300 - Hidden Street - Tower of Goddess +920010400 - Hidden Street - Tower of Goddess +920010500 - Hidden Street - Tower of Goddess +920010600 - Hidden Street - Tower of Goddess +920010601 - Hidden Street - Tower of Goddess +920010602 - Hidden Street - Tower of Goddess +920010603 - Hidden Street - Tower of Goddess +920010604 - Hidden Street - Tower of Goddess +920010700 - Hidden Street - Tower of Goddess +920010800 - Hidden Street - Tower of Goddess +920010900 - Hidden Street - Tower of Goddess +920010910 - Hidden Street - Tower of Goddess +920010911 - Hidden Street - Tower of Goddess +920010912 - Hidden Street - Tower of Goddess +920010920 - Hidden Street - Tower of Goddess +920010921 - Hidden Street - Tower of Goddess +920010922 - Hidden Street - Tower of Goddess +920010930 - Hidden Street - Tower of Goddess +920010931 - Hidden Street - Tower of Goddess +920010932 - Hidden Street - Tower of Goddess +920011000 - Hidden Street - Tower of Goddess +920011100 - Hidden Street - Tower of Goddess +920011200 - Hidden Street - Tower of Goddess +920011300 - Hidden Street - Tower of Goddess +921100000 - Hidden Street - Heart of Lava +921100100 - Hidden Street - Ice Valley +921100200 - Hidden Street - Phoenix's Nest +921100210 - Hidden Street - Freezer's Nest +921100300 - Hidden Street - Protect Tylus +921100301 - Hidden Street - Protecting Tylus : Complete +922000000 - Hidden Street - Toy Factory +922000009 - Hidden Street - Secret Passage +922000010 - Hidden Street - Doll's House +922000020 - Hidden Street - Secret Factory +922000021 - Hidden Street - Secret Factory +922010000 - Hidden Street - Abandoned Tower +922010100 - Hidden Street - Abandoned Tower +922010200 - Hidden Street - Abandoned Tower +922010201 - Hidden Street - Tower's Trap +922010300 - Hidden Street - Abandoned Tower +922010400 - Hidden Street - Abandoned Tower +922010401 - Hidden Street - Darkness in the Tower +922010402 - Hidden Street - Darkness in the Tower +922010403 - Hidden Street - Darkness in the Tower +922010404 - Hidden Street - Darkness in the Tower +922010405 - Hidden Street - Darkness in the Tower +922010500 - Hidden Street - Abandoned Tower +922010501 - Hidden Street - Tower's Maze +922010502 - Hidden Street - Tower's Maze +922010503 - Hidden Street - Tower's Maze +922010504 - Hidden Street - Tower's Maze +922010505 - Hidden Street - Tower's Maze +922010506 - Hidden Street - Tower's Maze +922010600 - Hidden Street - Abandoned Tower +922010700 - Hidden Street - Abandoned Tower +922010800 - Hidden Street - Abandoned Tower +922010900 - Hidden Street - A Crack on the Wall +922011000 - Hidden Street - Abandoned Tower +922011100 - Hidden Street - Abandoned Tower +922020000 - Hidden Street - The Forgotten Darkness +922020100 - Hidden Street - Room of Thanatos +922020200 - Hidden Street - Hidden Balcony +922200000 - Hidden Street - The Area of Wild Hog +923000000 - Hidden Street - Warped Dimension +923000100 - Hidden Street - Cold Cave +923010000 - Hidden Street - Kenta's Breeding Room +923010100 - Hidden Street - Path to the Breeding Room +924000000 - Hidden Street - On the Way to the Practice Field +924000001 - Hidden Street - Moose's Practice Field +924000002 - Hidden Street - Exiting the Practice Field +924000100 - Hidden Street - The Top of the Sky Nest +925100000 - Hidden Street - On the Way to the Pirate Ship +925100100 - Hidden Street - Through the Head of the Ship! +925100200 - Hidden Street - Through the Deck I +925100201 - Hidden Street - The Area of 100yrOld Bellflower I +925100202 - Hidden Street - Lord Pirate's Servant I +925100300 - Hidden Street - Through the Deck II +925100301 - Hidden Street - The Area of 100yrOld Bellflower II +925100302 - Hidden Street - Lord Pirate's Servant II +925100400 - Hidden Street - Eliminate Pirates! +925100500 - Hidden Street - The Captain's Dignity +925100600 - Hidden Street - Wu Yang Giving Thanks +925100700 - Hidden Street - Pirate Ship On its Way Out +980000000 - Monster Carnival - Spiegelmann's Office +980000010 - Monster Carnival - Exit +980000020 - Monster Carnival - Prizes +980000100 - Monster Carnival - Carnival Field 1 +980000101 - Monster Carnival - Carnival Field 1 +980000102 - Monster Carnival - Carnival Field 1 +980000103 - Monster Carnival - Carnival Field 1 +980000104 - Monster Carnival - Carnival Field 1 +980000200 - Monster Carnival - Carnival Field 2 +980000201 - Monster Carnival - Carnival Field 2 +980000202 - Monster Carnival - Carnival Field 2 +980000203 - Monster Carnival - Carnival Field 2 +980000204 - Monster Carnival - Carnival Field 2 +980000300 - Monster Carnival - Carnival Field 3 +980000301 - Monster Carnival - Carnival Field 3 +980000302 - Monster Carnival - Carnival Field 3 +980000303 - Monster Carnival - Carnival Field 3 +980000304 - Monster Carnival - Carnival Field 3 +980000400 - Monster Carnival - Carnival Field 4 +980000401 - Monster Carnival - Carnival Field 4 +980000402 - Monster Carnival - Carnival Field 4 +980000403 - Monster Carnival - Carnival Field 4 +980000404 - Monster Carnival - Carnival Field 4 +980000500 - Monster Carnival - Carnival Field 5 +980000501 - Monster Carnival - Carnival Field 5 +980000502 - Monster Carnival - Carnival Field 5 +980000503 - Monster Carnival - Carnival Field 5 +980000504 - Monster Carnival - Carnival Field 5 +980000600 - Monster Carnival - Carnival Field 6 +980000601 - Monster Carnival - Carnival Field 6 +980000602 - Monster Carnival - Carnival Field 6 +980000603 - Monster Carnival - Carnival Field 6 +980000604 - Monster Carnival - Carnival Field 6 +980010000 - Ariant Coliseum - Battle Arena Lobby +980010010 - Ariant Coliseum - King's Room +980010020 - Ariant Coliseum - Battle Arena Exit +980010100 - Ariant Coliseum - Battle Arena 1 Entrance +980010101 - Ariant Coliseum - Battle Arena 1 +980010200 - Ariant Coliseum - Battle Arena 2 Entrance +980010201 - Ariant Coliseum - Battle Arena 2 +980010300 - Ariant Coliseum - Battle Arena 3 Entrance +980010301 - Ariant Coliseum - Battle Arena 3 +990000000 - Sharenian - Excavation Site +990000100 - Sharenian - Valley of the Guard +990000200 - Sharenian - Entrance to the Remains +990000300 - Sharenian - Door to the Sharenian Castle +990000301 - Sharenian - Road to the Fortress +990000400 - Sharenian - Hall of the Knight +990000401 - Sharenian - Middle Path +990000410 - Sharenian - Room of Glory +990000420 - Sharenian - Room of Courage +990000430 - Sharenian - Room of Faith +990000431 - Sharenian - Room of Pledge +990000440 - Sharenian - Room of Justice +990000500 - Sharenian - Fountain of the Wiseman +990000501 - Sharenian - Center Banquet +990000502 - Sharenian - Wine Cellar +990000600 - Sharenian - Underground Waterway +990000610 - Sharenian - Waterway Maze +990000611 - Sharenian - End of the Maze +990000620 - Sharenian - Waterway Maze +990000630 - Sharenian - Waterway Maze +990000631 - Sharenian - End of the Maze +990000640 - Sharenian - Waterway Maze +990000641 - Sharenian - End of the Maze +990000700 - Sharenian - Sharen III's Grave +990000800 - Sharenian - King's Corridor +990000900 - Sharenian - Ergoth's Throne +990001000 - Sharenian - Sharen III's Treasure Wearhouse +990001100 - Sharenian - Returning Path +990001101 - Sharenian - Guild Union Camp +912000000 - Hidden Chamber - Secret Place +912000100 - Hidden Chamber - The Nautilus - Stable +912010000 - Hidden Chamber - Kyrin's Training Room +912010100 - Hidden Chamber - Kyrin's Training Room +912010200 - Hidden Chamber - Kyrin's Training Room +912020000 - Hidden Chamber - Bart's Room +925010000 - Hidden Street - Looking for Delli 1 +925010100 - Hidden Street - Looking for Delli 2 +925010200 - Hidden Street - Looking for Delli 3 +925010300 - Hidden Street - Save Delli! +925010400 - Hidden Street - The Nautilus Hideout Room +889100000 - (no street name) - Entrance - Snow Man's Land +889100001 - (no street name) - Snow Man's Land +889100002 - (no street name) - Exit - Snow Man's Land +889100010 - (no street name) - Entrance - Snow Man's Land +889100011 - (no street name) - Snow Man's Land +889100012 - (no street name) - Exit - Snow Man's Land +889100020 - (no street name) - Entrance - Snow Man's Land +889100021 - (no street name) - Snow Man's Land +889100022 - (no street name) - Exit - Snow Man's Land +889100100 - (no street name) - Path to Snow Man's Land +680100000 - Maple 7th Day Market - Maple 7th Day Market +680100001 - Maple 7th Day Market - Maple 7th Day Market +680100002 - Maple 7th Day Market - Maple 7th Day Market +680100003 - Maple 7th Day Market - Maple 7th Day Market +674030300 - Treasure Dungeon - (no map name) +674030000 - Initiation - (no map name) +674030100 - Entrance to MV's Lair - (no map name) +674030200 - The Lair of MV - (no map name) +910020000 - Hidden Street - Nest of a Baby Bird +910100000 - Hidden Street - The Cursed Forest +910100001 - Hidden Street - The Cursed Forest +922210000 - Hidden Street - Field of Refreshing Watermelons +922210100 - Hidden Street - Field of Tasty Watermelons +922210200 - Hidden Street - Field of Sweet Watermelons +922210300 - Hidden Street - Watermelon Field Exit +922210400 - Hidden Street - Field of Refreshing Watermelons +922210500 - Hidden Street - Field of Tasty Watermelons +922210600 - Hidden Street - Field of Sweet Watermelons +922210700 - Hidden Street - Field of Refreshing Watermelons +922210800 - Hidden Street - Field of Tasty Watermelons +922210900 - Hidden Street - Field of Sweet Watermelons +922211000 - Hidden Street - Field of Refreshing Watermelons +922211100 - Hidden Street - Field of Tasty Watermelons +922211200 - Hidden Street - Field of Sweet Watermelons +922211300 - Hidden Street - Field of Refreshing Watermelons +922211400 - Hidden Street - Field of Tasty Watermelons +922211500 - Hidden Street - Field of Sweet Watermelons +922211600 - Hidden Street - Field of Refreshing Watermelons +922211700 - Hidden Street - Field of Tasty Watermelons +922211800 - Hidden Street - Field of Sweet Watermelons +922211900 - Hidden Street - Field of Refreshing Watermelons +922212000 - Hidden Street - Field of Tasty Watermelons +922212100 - Hidden Street - Field of Sweet Watermelons +922212200 - Hidden Street - Field of Refreshing Watermelons +922212300 - Hidden Street - Field of Tasty Watermelons +922212400 - Hidden Street - Field of Sweet Watermelons +922212500 - Hidden Street - Field of Refreshing Watermelons +922212600 - Hidden Street - Field of Tasty Watermelons +922212700 - Hidden Street - Field of Sweet Watermelons +922212800 - Hidden Street - Field of Refreshing Watermelons +922212900 - Hidden Street - Field of Tasty Watermelons +922213000 - Hidden Street - Field of Sweet Watermelons +926130500 - Hidden Street - Lab Exit +930000000 - Forest of Poison Haze - Pre-Entrance +930000010 - Forest of Poison Haze - Forest Entrance +930000100 - Forest of Poison Haze - Mouth of the Forest +930000200 - Forest of Poison Haze - Deteriorated Forest +930000300 - Forest of Poison Haze - Forest of Haze +930000400 - Forest of Poison Haze - Poisoned Forest +930000500 - Forest of Poison Haze - Forest's Empty Lot +930000600 - Forest of Poison Haze - Forest of Poison +930000700 - Forest of Poison Haze - Ellin's Forest +930000800 - Forest of Poison Haze - Outer Forest Exit +970000000 - Hidden Street - Studio Entrance +970000001 - Hidden Street - Ludibrium Studio +970000002 - Hidden Street - Orbis Studio +970000003 - Hidden Street - Ariant Studio +970000004 - Hidden Street - Mu Lung Studio +970000005 - Hidden Street - Magatia Studio +970010000 - Hidden Street - Maple Hill +970020000 - Hidden Street - Cassandra's Shore +970020001 - Hidden Street - Nautilus Coast +970020002 - Hidden Street - Mu Lung Clouds +970020003 - Hidden Street - Herb Town Pier +970020004 - Hidden Street - Magatia Waterway +970020005 - Hidden Street - Aqua Road Ferry +970030000 - Hidden Street - Exclusive Training Center +970030001 - Hidden Street - Resting Spot I +970030002 - Hidden Street - Resting Spot II +970030003 - Hidden Street - Resting Spot III +970030004 - Hidden Street - Resting Spot IV +970030005 - Hidden Street - Last Resting Spot +970030006 - Hidden Street - Resting Spot I +970030007 - Hidden Street - Resting Spot II +970030008 - Hidden Street - Resting Spot III +970030009 - Hidden Street - Resting Spot IV +970030010 - Hidden Street - Last Resting Spot +970030020 - Hidden Street - Agent HQ +970030100 - Hidden Street - Stage 1 +970030101 - Hidden Street - Stage 1 +970030102 - Hidden Street - Stage 1 +970030103 - Hidden Street - Stage 1 +970030104 - Hidden Street - Stage 1 +970030105 - Hidden Street - Stage 1 +970030106 - Hidden Street - Stage 1 +970030107 - Hidden Street - Stage 1 +970030200 - Hidden Street - Stage 2 +970030201 - Hidden Street - Stage 2 +970030202 - Hidden Street - Stage 2 +970030203 - Hidden Street - Stage 2 +970030204 - Hidden Street - Stage 2 +970030205 - Hidden Street - Stage 2 +970030206 - Hidden Street - Stage 2 +970030207 - Hidden Street - Stage 2 +970030300 - Hidden Street - Stage 3 +970030301 - Hidden Street - Stage 3 +970030302 - Hidden Street - Stage 3 +970030303 - Hidden Street - Stage 3 +970030304 - Hidden Street - Stage 3 +970030305 - Hidden Street - Stage 3 +970030306 - Hidden Street - Stage 3 +970030307 - Hidden Street - Stage 3 +970030400 - Hidden Street - Stage 4 +970030401 - Hidden Street - Stage 4 +970030402 - Hidden Street - Stage 4 +970030403 - Hidden Street - Stage 4 +970030404 - Hidden Street - Stage 4 +970030405 - Hidden Street - Stage 4 +970030406 - Hidden Street - Stage 4 +970030407 - Hidden Street - Stage 4 +970030500 - Hidden Street - Stage 5 +970030501 - Hidden Street - Stage 5 +970030502 - Hidden Street - Stage 5 +970030503 - Hidden Street - Stage 5 +970030504 - Hidden Street - Stage 5 +970030505 - Hidden Street - Stage 5 +970030506 - Hidden Street - Stage 5 +970030507 - Hidden Street - Stage 5 +970030600 - Hidden Street - Stage 6 +970030601 - Hidden Street - Stage 6 +970030602 - Hidden Street - Stage 6 +970030603 - Hidden Street - Stage 6 +970030604 - Hidden Street - Stage 6 +970030605 - Hidden Street - Stage 6 +970030606 - Hidden Street - Stage 6 +970030607 - Hidden Street - Stage 6 +970030700 - Hidden Street - Stage 7 +970030701 - Hidden Street - Stage 7 +970030702 - Hidden Street - Stage 7 +970030703 - Hidden Street - Stage 7 +970030704 - Hidden Street - Stage 7 +970030705 - Hidden Street - Stage 7 +970030706 - Hidden Street - Stage 7 +970030707 - Hidden Street - Stage 7 +970030800 - Hidden Street - Stage 8 +970030801 - Hidden Street - Stage 8 +970030802 - Hidden Street - Stage 8 +970030803 - Hidden Street - Stage 8 +970030804 - Hidden Street - Stage 8 +970030805 - Hidden Street - Stage 8 +970030806 - Hidden Street - Stage 8 +970030807 - Hidden Street - Stage 8 +970030900 - Hidden Street - Stage 9 +970030901 - Hidden Street - Stage 9 +970030902 - Hidden Street - Stage 9 +970030903 - Hidden Street - Stage 9 +970030904 - Hidden Street - Stage 9 +970030905 - Hidden Street - Stage 9 +970030906 - Hidden Street - Stage 9 +970030907 - Hidden Street - Stage 9 +970031000 - Hidden Street - Stage 10 +970031001 - Hidden Street - Stage 10 +970031002 - Hidden Street - Stage 10 +970031003 - Hidden Street - Stage 10 +970031004 - Hidden Street - Stage 10 +970031005 - Hidden Street - Stage 10 +970031006 - Hidden Street - Stage 10 +970031007 - Hidden Street - Stage 10 +970031100 - Hidden Street - Stage 11 +970031101 - Hidden Street - Stage 11 +970031102 - Hidden Street - Stage 11 +970031103 - Hidden Street - Stage 11 +970031104 - Hidden Street - Stage 11 +970031105 - Hidden Street - Stage 11 +970031106 - Hidden Street - Stage 11 +970031107 - Hidden Street - Stage 11 +970031200 - Hidden Street - Stage 12 +970031201 - Hidden Street - Stage 12 +970031202 - Hidden Street - Stage 12 +970031203 - Hidden Street - Stage 12 +970031204 - Hidden Street - Stage 12 +970031205 - Hidden Street - Stage 12 +970031206 - Hidden Street - Stage 12 +970031207 - Hidden Street - Stage 12 +970031300 - Hidden Street - Stage 13 +970031301 - Hidden Street - Stage 13 +970031302 - Hidden Street - Stage 13 +970031303 - Hidden Street - Stage 13 +970031304 - Hidden Street - Stage 13 +970031305 - Hidden Street - Stage 13 +970031306 - Hidden Street - Stage 13 +970031307 - Hidden Street - Stage 13 +970031400 - Hidden Street - Stage 14 +970031401 - Hidden Street - Stage 14 +970031402 - Hidden Street - Stage 14 +970031403 - Hidden Street - Stage 14 +970031404 - Hidden Street - Stage 14 +970031405 - Hidden Street - Stage 14 +970031406 - Hidden Street - Stage 14 +970031407 - Hidden Street - Stage 14 +970031500 - Hidden Street - Stage 15 +970031501 - Hidden Street - Stage 15 +970031502 - Hidden Street - Stage 15 +970031503 - Hidden Street - Stage 15 +970031504 - Hidden Street - Stage 15 +970031505 - Hidden Street - Stage 15 +970031506 - Hidden Street - Stage 15 +970031507 - Hidden Street - Stage 15 +970031600 - Hidden Street - Stage 16 +970031601 - Hidden Street - Stage 16 +970031602 - Hidden Street - Stage 16 +970031603 - Hidden Street - Stage 16 +970031604 - Hidden Street - Stage 16 +970031605 - Hidden Street - Stage 16 +970031606 - Hidden Street - Stage 16 +970031607 - Hidden Street - Stage 16 +970031700 - Hidden Street - Stage 17 +970031701 - Hidden Street - Stage 17 +970031702 - Hidden Street - Stage 17 +970031703 - Hidden Street - Stage 17 +970031704 - Hidden Street - Stage 17 +970031705 - Hidden Street - Stage 17 +970031706 - Hidden Street - Stage 17 +970031707 - Hidden Street - Stage 17 +970031800 - Hidden Street - Stage 18 +970031801 - Hidden Street - Stage 18 +970031802 - Hidden Street - Stage 18 +970031803 - Hidden Street - Stage 18 +970031804 - Hidden Street - Stage 18 +970031805 - Hidden Street - Stage 18 +970031806 - Hidden Street - Stage 18 +970031807 - Hidden Street - Stage 18 +970031900 - Hidden Street - Stage 19 +970031901 - Hidden Street - Stage 19 +970031902 - Hidden Street - Stage 19 +970031903 - Hidden Street - Stage 19 +970031904 - Hidden Street - Stage 19 +970031905 - Hidden Street - Stage 19 +970031906 - Hidden Street - Stage 19 +970031907 - Hidden Street - Stage 19 +970032000 - Hidden Street - Stage 20 +970032001 - Hidden Street - Stage 20 +970032002 - Hidden Street - Stage 20 +970032003 - Hidden Street - Stage 20 +970032004 - Hidden Street - Stage 20 +970032005 - Hidden Street - Stage 20 +970032006 - Hidden Street - Stage 20 +970032007 - Hidden Street - Stage 20 +970032100 - Hidden Street - Stage 21 +970032101 - Hidden Street - Stage 21 +970032102 - Hidden Street - Stage 21 +970032103 - Hidden Street - Stage 21 +970032104 - Hidden Street - Stage 21 +970032105 - Hidden Street - Stage 21 +970032106 - Hidden Street - Stage 21 +970032107 - Hidden Street - Stage 21 +970032200 - Hidden Street - Stage 22 +970032201 - Hidden Street - Stage 22 +970032202 - Hidden Street - Stage 22 +970032203 - Hidden Street - Stage 22 +970032204 - Hidden Street - Stage 22 +970032205 - Hidden Street - Stage 22 +970032206 - Hidden Street - Stage 22 +970032207 - Hidden Street - Stage 22 +970032300 - Hidden Street - Stage 23 +970032301 - Hidden Street - Stage 23 +970032302 - Hidden Street - Stage 23 +970032303 - Hidden Street - Stage 23 +970032304 - Hidden Street - Stage 23 +970032305 - Hidden Street - Stage 23 +970032306 - Hidden Street - Stage 23 +970032307 - Hidden Street - Stage 23 +970032400 - Hidden Street - Stage 24 +970032401 - Hidden Street - Stage 24 +970032402 - Hidden Street - Stage 24 +970032403 - Hidden Street - Stage 24 +970032404 - Hidden Street - Stage 24 +970032405 - Hidden Street - Stage 24 +970032406 - Hidden Street - Stage 24 +970032407 - Hidden Street - Stage 24 +970032500 - Hidden Street - Stage 25 +970032501 - Hidden Street - Stage 25 +970032502 - Hidden Street - Stage 25 +970032503 - Hidden Street - Stage 25 +970032504 - Hidden Street - Stage 25 +970032505 - Hidden Street - Stage 25 +970032506 - Hidden Street - Stage 25 +970032507 - Hidden Street - Stage 25 +970032600 - Hidden Street - Stage 26 +970032601 - Hidden Street - Stage 26 +970032602 - Hidden Street - Stage 26 +970032603 - Hidden Street - Stage 26 +970032604 - Hidden Street - Stage 26 +970032605 - Hidden Street - Stage 26 +970032606 - Hidden Street - Stage 26 +970032607 - Hidden Street - Stage 26 +970032700 - Hidden Street - Stage 27 +970032701 - Hidden Street - Stage 27 +970032702 - Hidden Street - Stage 27 +970032703 - Hidden Street - Stage 27 +970032704 - Hidden Street - Stage 27 +970032705 - Hidden Street - Stage 27 +970032706 - Hidden Street - Stage 27 +970032707 - Hidden Street - Stage 27 +970040100 - Hidden Street - Stage 1 +970040101 - Hidden Street - Stage 1 +970040102 - Hidden Street - Stage 1 +970040103 - Hidden Street - Stage 1 +970040104 - Hidden Street - Stage 1 +970040105 - Hidden Street - Stage 1 +970040106 - Hidden Street - Stage 1 +970040107 - Hidden Street - Stage 1 +970040108 - Hidden Street - Stage 1 +970040109 - Hidden Street - Stage 1 +970040110 - Hidden Street - Stage 1 +970040111 - Hidden Street - Stage 1 +970040200 - Hidden Street - Stage 2 +970040201 - Hidden Street - Stage 2 +970040202 - Hidden Street - Stage 2 +970040203 - Hidden Street - Stage 2 +970040204 - Hidden Street - Stage 2 +970040205 - Hidden Street - Stage 2 +970040206 - Hidden Street - Stage 2 +970040207 - Hidden Street - Stage 2 +970040208 - Hidden Street - Stage 2 +970040209 - Hidden Street - Stage 2 +970040210 - Hidden Street - Stage 2 +970040211 - Hidden Street - Stage 2 +970040300 - Hidden Street - Stage 3 +970040301 - Hidden Street - Stage 3 +970040302 - Hidden Street - Stage 3 +970040303 - Hidden Street - Stage 3 +970040304 - Hidden Street - Stage 3 +970040305 - Hidden Street - Stage 3 +970040306 - Hidden Street - Stage 3 +970040307 - Hidden Street - Stage 3 +970040308 - Hidden Street - Stage 3 +970040309 - Hidden Street - Stage 3 +970040310 - Hidden Street - Stage 3 +970040311 - Hidden Street - Stage 3 +970040400 - Hidden Street - Stage 4 +970040401 - Hidden Street - Stage 4 +970040402 - Hidden Street - Stage 4 +970040403 - Hidden Street - Stage 4 +970040404 - Hidden Street - Stage 4 +970040405 - Hidden Street - Stage 4 +970040406 - Hidden Street - Stage 4 +970040407 - Hidden Street - Stage 4 +970040408 - Hidden Street - Stage 4 +970040409 - Hidden Street - Stage 4 +970040410 - Hidden Street - Stage 4 +970040411 - Hidden Street - Stage 4 +970040500 - Hidden Street - Stage 5 +970040501 - Hidden Street - Stage 5 +970040502 - Hidden Street - Stage 5 +970040503 - Hidden Street - Stage 5 +970040504 - Hidden Street - Stage 5 +970040505 - Hidden Street - Stage 5 +970040506 - Hidden Street - Stage 5 +970040507 - Hidden Street - Stage 5 +970040508 - Hidden Street - Stage 5 +970040509 - Hidden Street - Stage 5 +970040510 - Hidden Street - Stage 5 +970040511 - Hidden Street - Stage 5 +970040600 - Hidden Street - Stage 6 +970040601 - Hidden Street - Stage 6 +970040602 - Hidden Street - Stage 6 +970040603 - Hidden Street - Stage 6 +970040604 - Hidden Street - Stage 6 +970040605 - Hidden Street - Stage 6 +970040606 - Hidden Street - Stage 6 +970040607 - Hidden Street - Stage 6 +970040608 - Hidden Street - Stage 6 +970040609 - Hidden Street - Stage 6 +970040610 - Hidden Street - Stage 6 +970040611 - Hidden Street - Stage 6 +970040700 - Hidden Street - Stage 7 +970040701 - Hidden Street - Stage 7 +970040702 - Hidden Street - Stage 7 +970040703 - Hidden Street - Stage 7 +970040704 - Hidden Street - Stage 7 +970040705 - Hidden Street - Stage 7 +970040706 - Hidden Street - Stage 7 +970040707 - Hidden Street - Stage 7 +970040708 - Hidden Street - Stage 7 +970040709 - Hidden Street - Stage 7 +970040710 - Hidden Street - Stage 7 +970040711 - Hidden Street - Stage 7 +970040800 - Hidden Street - Stage 8 +970040801 - Hidden Street - Stage 8 +970040802 - Hidden Street - Stage 8 +970040803 - Hidden Street - Stage 8 +970040804 - Hidden Street - Stage 8 +970040805 - Hidden Street - Stage 8 +970040806 - Hidden Street - Stage 8 +970040807 - Hidden Street - Stage 8 +970040808 - Hidden Street - Stage 8 +970040809 - Hidden Street - Stage 8 +970040810 - Hidden Street - Stage 8 +970040811 - Hidden Street - Stage 8 +970040900 - Hidden Street - Stage 9 +970040901 - Hidden Street - Stage 9 +970040902 - Hidden Street - Stage 9 +970040903 - Hidden Street - Stage 9 +970040904 - Hidden Street - Stage 9 +970040905 - Hidden Street - Stage 9 +970040906 - Hidden Street - Stage 9 +970040907 - Hidden Street - Stage 9 +970040908 - Hidden Street - Stage 9 +970040909 - Hidden Street - Stage 9 +970040910 - Hidden Street - Stage 9 +970040911 - Hidden Street - Stage 9 +970041000 - Hidden Street - Stage 10 +970041001 - Hidden Street - Stage 10 +970041002 - Hidden Street - Stage 10 +970041003 - Hidden Street - Stage 10 +970041004 - Hidden Street - Stage 10 +970041005 - Hidden Street - Stage 10 +970041006 - Hidden Street - Stage 10 +970041007 - Hidden Street - Stage 10 +970041008 - Hidden Street - Stage 10 +970041009 - Hidden Street - Stage 10 +970041010 - Hidden Street - Stage 10 +970041011 - Hidden Street - Stage 10 +970041100 - Hidden Street - Stage 11 +970041101 - Hidden Street - Stage 11 +970041102 - Hidden Street - Stage 11 +970041103 - Hidden Street - Stage 11 +970041104 - Hidden Street - Stage 11 +970041105 - Hidden Street - Stage 11 +970041106 - Hidden Street - Stage 11 +970041107 - Hidden Street - Stage 11 +970041108 - Hidden Street - Stage 11 +970041109 - Hidden Street - Stage 11 +970041110 - Hidden Street - Stage 11 +970041111 - Hidden Street - Stage 11 +970041200 - Hidden Street - Stage 12 +970041201 - Hidden Street - Stage 12 +970041202 - Hidden Street - Stage 12 +970041203 - Hidden Street - Stage 12 +970041204 - Hidden Street - Stage 12 +970041205 - Hidden Street - Stage 12 +970041206 - Hidden Street - Stage 12 +970041207 - Hidden Street - Stage 12 +970041208 - Hidden Street - Stage 12 +970041209 - Hidden Street - Stage 12 +970041210 - Hidden Street - Stage 12 +970041211 - Hidden Street - Stage 12 +970041300 - Hidden Street - Stage 13 +970041301 - Hidden Street - Stage 13 +970041302 - Hidden Street - Stage 13 +970041303 - Hidden Street - Stage 13 +970041304 - Hidden Street - Stage 13 +970041305 - Hidden Street - Stage 13 +970041306 - Hidden Street - Stage 13 +970041307 - Hidden Street - Stage 13 +970041308 - Hidden Street - Stage 13 +970041309 - Hidden Street - Stage 13 +970041310 - Hidden Street - Stage 13 +970041311 - Hidden Street - Stage 13 +970041400 - Hidden Street - Stage 14 +970041401 - Hidden Street - Stage 14 +970041402 - Hidden Street - Stage 14 +970041403 - Hidden Street - Stage 14 +970041404 - Hidden Street - Stage 14 +970041405 - Hidden Street - Stage 14 +970041406 - Hidden Street - Stage 14 +970041407 - Hidden Street - Stage 14 +970041408 - Hidden Street - Stage 14 +970041409 - Hidden Street - Stage 14 +970041410 - Hidden Street - Stage 14 +970041411 - Hidden Street - Stage 14 +970041500 - Hidden Street - Stage 15 +970041501 - Hidden Street - Stage 15 +970041502 - Hidden Street - Stage 15 +970041503 - Hidden Street - Stage 15 +970041504 - Hidden Street - Stage 15 +970041505 - Hidden Street - Stage 15 +970041506 - Hidden Street - Stage 15 +970041507 - Hidden Street - Stage 15 +970041508 - Hidden Street - Stage 15 +970041509 - Hidden Street - Stage 15 +970041510 - Hidden Street - Stage 15 +970041511 - Hidden Street - Stage 15 +970041600 - Hidden Street - Stage 16 +970041601 - Hidden Street - Stage 16 +970041602 - Hidden Street - Stage 16 +970041603 - Hidden Street - Stage 16 +970041604 - Hidden Street - Stage 16 +970041605 - Hidden Street - Stage 16 +970041606 - Hidden Street - Stage 16 +970041607 - Hidden Street - Stage 16 +970041608 - Hidden Street - Stage 16 +970041609 - Hidden Street - Stage 16 +970041610 - Hidden Street - Stage 16 +970041611 - Hidden Street - Stage 16 +970041700 - Hidden Street - Stage 17 +970041701 - Hidden Street - Stage 17 +970041702 - Hidden Street - Stage 17 +970041703 - Hidden Street - Stage 17 +970041704 - Hidden Street - Stage 17 +970041705 - Hidden Street - Stage 17 +970041706 - Hidden Street - Stage 17 +970041707 - Hidden Street - Stage 17 +970041708 - Hidden Street - Stage 17 +970041709 - Hidden Street - Stage 17 +970041710 - Hidden Street - Stage 17 +970041711 - Hidden Street - Stage 17 +970041800 - Hidden Street - Stage 18 +970041801 - Hidden Street - Stage 18 +970041802 - Hidden Street - Stage 18 +970041803 - Hidden Street - Stage 18 +970041804 - Hidden Street - Stage 18 +970041805 - Hidden Street - Stage 18 +970041806 - Hidden Street - Stage 18 +970041807 - Hidden Street - Stage 18 +970041808 - Hidden Street - Stage 18 +970041809 - Hidden Street - Stage 18 +970041810 - Hidden Street - Stage 18 +970041811 - Hidden Street - Stage 18 +970041900 - Hidden Street - Stage 19 +970041901 - Hidden Street - Stage 19 +970041902 - Hidden Street - Stage 19 +970041903 - Hidden Street - Stage 19 +970041904 - Hidden Street - Stage 19 +970041905 - Hidden Street - Stage 19 +970041906 - Hidden Street - Stage 19 +970041907 - Hidden Street - Stage 19 +970041908 - Hidden Street - Stage 19 +970041909 - Hidden Street - Stage 19 +970041910 - Hidden Street - Stage 19 +970041911 - Hidden Street - Stage 19 +970042000 - Hidden Street - Stage 20 +970042001 - Hidden Street - Stage 20 +970042002 - Hidden Street - Stage 20 +970042003 - Hidden Street - Stage 20 +970042004 - Hidden Street - Stage 20 +970042005 - Hidden Street - Stage 20 +970042006 - Hidden Street - Stage 20 +970042007 - Hidden Street - Stage 20 +970042008 - Hidden Street - Stage 20 +970042009 - Hidden Street - Stage 20 +970042010 - Hidden Street - Stage 20 +970042011 - Hidden Street - Stage 20 +970042100 - Hidden Street - Stage 21 +970042101 - Hidden Street - Stage 21 +970042102 - Hidden Street - Stage 21 +970042103 - Hidden Street - Stage 21 +970042104 - Hidden Street - Stage 21 +970042105 - Hidden Street - Stage 21 +970042106 - Hidden Street - Stage 21 +970042107 - Hidden Street - Stage 21 +970042108 - Hidden Street - Stage 21 +970042109 - Hidden Street - Stage 21 +970042110 - Hidden Street - Stage 21 +970042111 - Hidden Street - Stage 21 +970042200 - Hidden Street - Stage 22 +970042201 - Hidden Street - Stage 22 +970042202 - Hidden Street - Stage 22 +970042203 - Hidden Street - Stage 22 +970042204 - Hidden Street - Stage 22 +970042205 - Hidden Street - Stage 22 +970042206 - Hidden Street - Stage 22 +970042207 - Hidden Street - Stage 22 +970042208 - Hidden Street - Stage 22 +970042209 - Hidden Street - Stage 22 +970042210 - Hidden Street - Stage 22 +970042211 - Hidden Street - Stage 22 +970042300 - Hidden Street - Stage 23 +970042301 - Hidden Street - Stage 23 +970042302 - Hidden Street - Stage 23 +970042303 - Hidden Street - Stage 23 +970042304 - Hidden Street - Stage 23 +970042305 - Hidden Street - Stage 23 +970042306 - Hidden Street - Stage 23 +970042307 - Hidden Street - Stage 23 +970042308 - Hidden Street - Stage 23 +970042309 - Hidden Street - Stage 23 +970042310 - Hidden Street - Stage 23 +970042311 - Hidden Street - Stage 23 +970042400 - Hidden Street - Stage 24 +970042401 - Hidden Street - Stage 24 +970042402 - Hidden Street - Stage 24 +970042403 - Hidden Street - Stage 24 +970042404 - Hidden Street - Stage 24 +970042405 - Hidden Street - Stage 24 +970042406 - Hidden Street - Stage 24 +970042407 - Hidden Street - Stage 24 +970042408 - Hidden Street - Stage 24 +970042409 - Hidden Street - Stage 24 +970042410 - Hidden Street - Stage 24 +970042411 - Hidden Street - Stage 24 +970042500 - Hidden Street - Stage 25 +970042501 - Hidden Street - Stage 25 +970042502 - Hidden Street - Stage 25 +970042503 - Hidden Street - Stage 25 +970042504 - Hidden Street - Stage 25 +970042505 - Hidden Street - Stage 25 +970042506 - Hidden Street - Stage 25 +970042507 - Hidden Street - Stage 25 +970042508 - Hidden Street - Stage 25 +970042509 - Hidden Street - Stage 25 +970042510 - Hidden Street - Stage 25 +970042511 - Hidden Street - Stage 25 +970042600 - Hidden Street - Stage 26 +970042601 - Hidden Street - Stage 26 +970042602 - Hidden Street - Stage 26 +970042603 - Hidden Street - Stage 26 +970042604 - Hidden Street - Stage 26 +970042605 - Hidden Street - Stage 26 +970042606 - Hidden Street - Stage 26 +970042607 - Hidden Street - Stage 26 +970042608 - Hidden Street - Stage 26 +970042609 - Hidden Street - Stage 26 +970042610 - Hidden Street - Stage 26 +970042611 - Hidden Street - Stage 26 +970042700 - Hidden Street - Stage 27 +970042701 - Hidden Street - Stage 27 +970042702 - Hidden Street - Stage 27 +970042703 - Hidden Street - Stage 27 +970042704 - Hidden Street - Stage 27 +970042705 - Hidden Street - Stage 27 +970042706 - Hidden Street - Stage 27 +970042707 - Hidden Street - Stage 27 +970042708 - Hidden Street - Stage 27 +970042709 - Hidden Street - Stage 27 +970042710 - Hidden Street - Stage 27 +970042711 - Hidden Street - Stage 27 +980020000 - Goldrich's Maze - Maze Entrance +980020001 - Goldrich's Maze - Maze Exit +980020100 - Goldrich's Maze - Snail's Maze +980020200 - Goldrich's Maze - Snail's Maze +980020300 - Goldrich's Maze - Snail's Maze +980020400 - Goldrich's Maze - Snail's Maze +980020500 - Goldrich's Maze - Snail's Maze +980020600 - Goldrich's Maze - Snail's Maze +980020700 - Goldrich's Maze - Snail's Maze +980020800 - Goldrich's Maze - Snail's Maze +980020900 - Goldrich's Maze - Goldrich's Treasure Vault +980021000 - Goldrich's Maze - Rainbow Snail's Maze +980021100 - Goldrich's Maze - Rainbow Snail's Maze +980021200 - Goldrich's Maze - Rainbow Snail's Maze +980021300 - Goldrich's Maze - Rainbow Snail's Maze +980021400 - Goldrich's Maze - Rainbow Snail's Maze +980021500 - Goldrich's Maze - Dragon Nest Maze +980021600 - Goldrich's Maze - Dragon Nest Maze +980021700 - Goldrich's Maze - Dragon Nest Maze +980021800 - Goldrich's Maze - Dragon Nest Maze +980021900 - Goldrich's Maze - Dragon Nest Maze +980022000 - Goldrich's Maze - High! Low! +980022100 - Goldrich's Maze - High! Low! +980022200 - Goldrich's Maze - High! Low! +980022300 - Goldrich's Maze - High! Low! +980022400 - Goldrich's Maze - High! Low! +980022500 - Goldrich's Maze - Maze of Golden Fruit +980022600 - Goldrich's Maze - Maze of Golden Fruit +980022700 - Goldrich's Maze - Maze of Golden Fruit +980022800 - Goldrich's Maze - Maze of Golden Fruit +980022900 - Goldrich's Maze - Maze of Golden Fruit +980023000 - Goldrich's Maze - Maze of Numbers +980023100 - Goldrich's Maze - Maze of Numbers +980023200 - Goldrich's Maze - Maze of Numbers +980023300 - Goldrich's Maze - Maze of Numbers +980023400 - Goldrich's Maze - Maze of Numbers +980023500 - Goldrich's Maze - Ribbon Pig's Maze +980023600 - Goldrich's Maze - Ribbon Pig's Maze +980023700 - Goldrich's Maze - Ribbon Pig's Maze +980023800 - Goldrich's Maze - Ribbon Pig's Maze +980023900 - Goldrich's Maze - Ribbon Pig's Maze +980024000 - Goldrich's Maze - Maze of Mushroom +980024100 - Goldrich's Maze - Maze of Mushroom +980024200 - Goldrich's Maze - Maze of Mushroom +980024300 - Goldrich's Maze - Maze of Mushroom +980024400 - Goldrich's Maze - Maze of Mushroom +980024500 - Goldrich's Maze - Glowing Maze of Mushroom +980024600 - Goldrich's Maze - Glowing Maze of Mushroom +980024700 - Goldrich's Maze - Glowing Maze of Mushroom +980024800 - Goldrich's Maze - Glowing Maze of Mushroom +980024900 - Goldrich's Maze - Glowing Maze of Mushroom +980025000 - Goldrich's Maze - Twin Maze +980025100 - Goldrich's Maze - Twin Maze +980025200 - Goldrich's Maze - Twin Maze +980025300 - Goldrich's Maze - Twin Maze +980025400 - Goldrich's Maze - Twin Maze +980025500 - Goldrich's Maze - Twin Maze +980025600 - Goldrich's Maze - Twin Maze +980025700 - Goldrich's Maze - Twin Maze +980025800 - Goldrich's Maze - Twin Maze +980025900 - Goldrich's Maze - Twin Maze +980026000 - Goldrich's Maze - Round Up! +980026100 - Goldrich's Maze - Round Up! +980026200 - Goldrich's Maze - Round Up! +980026300 - Goldrich's Maze - Round Up! +980026400 - Goldrich's Maze - Round Up! +980026500 - Goldrich's Maze - Maze of Erosion +980026600 - Goldrich's Maze - Maze of Erosion +980026700 - Goldrich's Maze - Maze of Erosion +980026800 - Goldrich's Maze - Maze of Erosion +980026900 - Goldrich's Maze - Maze of Erosion +980027000 - Goldrich's Maze - Maze of Erosion +980027100 - Goldrich's Maze - Maze of Erosion +980027200 - Goldrich's Maze - Maze of Erosion +980027300 - Goldrich's Maze - Beginning of the Maze +980027400 - Goldrich's Maze - Monster's Maze +980027500 - Goldrich's Maze - Monster's Maze +980027600 - Goldrich's Maze - Monster's Maze +980027700 - Goldrich's Maze - Monster's Maze +980027800 - Goldrich's Maze - Monster's Maze +980027900 - Goldrich's Maze - Maze of the Golden Key +980028000 - Goldrich's Maze - Maze of Exploration +980028100 - Goldrich's Maze - Maze of Exploration +980020101 - Goldrich's Maze - Snail's Maze +980020201 - Goldrich's Maze - Snail's Maze +980020301 - Goldrich's Maze - Snail's Maze +980020401 - Goldrich's Maze - Snail's Maze +980020501 - Goldrich's Maze - Snail's Maze +980020601 - Goldrich's Maze - Snail's Maze +980020701 - Goldrich's Maze - Snail's Maze +980020801 - Goldrich's Maze - Snail's Maze +980020901 - Goldrich's Maze - Goldrich's Treasure Vault +980021001 - Goldrich's Maze - Rainbow Snail's Maze +980021101 - Goldrich's Maze - Rainbow Snail's Maze +980021201 - Goldrich's Maze - Rainbow Snail's Maze +980021301 - Goldrich's Maze - Rainbow Snail's Maze +980021401 - Goldrich's Maze - Rainbow Snail's Maze +980021501 - Goldrich's Maze - Dragon Nest Maze +980021601 - Goldrich's Maze - Dragon Nest Maze +980021701 - Goldrich's Maze - Dragon Nest Maze +980021801 - Goldrich's Maze - Dragon Nest Maze +980021901 - Goldrich's Maze - Dragon Nest Maze +980022001 - Goldrich's Maze - High! Low! +980022101 - Goldrich's Maze - High! Low! +980022201 - Goldrich's Maze - High! Low! +980022301 - Goldrich's Maze - High! Low! +980022401 - Goldrich's Maze - High! Low! +980022501 - Goldrich's Maze - Maze of Golden Fruit +980022601 - Goldrich's Maze - Maze of Golden Fruit +980022701 - Goldrich's Maze - Glowing Mushroom's Room +980022801 - Goldrich's Maze - Glowing Mushroom's Room +980022901 - Goldrich's Maze - Glowing Mushroom's Room +980023001 - Goldrich's Maze - Maze of Numbers +980023101 - Goldrich's Maze - Maze of Numbers +980023201 - Goldrich's Maze - Maze of Numbers +980023301 - Goldrich's Maze - Maze of Numbers +980023401 - Goldrich's Maze - Maze of Numbers +980023501 - Goldrich's Maze - Ribbon Pig's Maze +980023601 - Goldrich's Maze - Ribbon Pig's Maze +980023701 - Goldrich's Maze - Ribbon Pig's Maze +980023801 - Goldrich's Maze - Ribbon Pig's Maze +980023901 - Goldrich's Maze - Ribbon Pig's Maze +980024001 - Goldrich's Maze - Maze of Mushroom +980024101 - Goldrich's Maze - Maze of Mushroom +980024201 - Goldrich's Maze - Maze of Mushroom +980024301 - Goldrich's Maze - Maze of Mushroom +980024401 - Goldrich's Maze - Maze of Mushroom +980024501 - Goldrich's Maze - Glowing Maze of Mushroom +980024601 - Goldrich's Maze - Glowing Maze of Mushroom +980024701 - Goldrich's Maze - Glowing Maze of Mushroom +980024801 - Goldrich's Maze - Glowing Maze of Mushroom +980024901 - Goldrich's Maze - Glowing Maze of Mushroom +980025001 - Goldrich's Maze - Twin Maze +980025101 - Goldrich's Maze - Twin Maze +980025201 - Goldrich's Maze - Twin Maze +980025301 - Goldrich's Maze - Twin Maze +980025401 - Goldrich's Maze - Twin Maze +980025501 - Goldrich's Maze - Twin Maze +980025601 - Goldrich's Maze - Twin Maze +980025701 - Goldrich's Maze - Twin Maze +980025801 - Goldrich's Maze - Twin Maze +980025901 - Goldrich's Maze - Twin Maze +980026001 - Goldrich's Maze - Round Up! +980026101 - Goldrich's Maze - Round Up! +980026201 - Goldrich's Maze - Round Up! +980026301 - Goldrich's Maze - Round Up! +980026401 - Goldrich's Maze - Round Up! +980026501 - Goldrich's Maze - Maze of Erosion +980026601 - Goldrich's Maze - Maze of Erosion +980026701 - Goldrich's Maze - Maze of Erosion +980026801 - Goldrich's Maze - Maze of Erosion +980026901 - Goldrich's Maze - Maze of Erosion +980027001 - Goldrich's Maze - Maze of Erosion +980027101 - Goldrich's Maze - Maze of Erosion +980027201 - Goldrich's Maze - Maze of Erosion +980027301 - Goldrich's Maze - Beginning of the Maze +980027401 - Goldrich's Maze - Monster's Maze +980027501 - Goldrich's Maze - Monster's Maze +980027601 - Goldrich's Maze - Monster's Maze +980027701 - Goldrich's Maze - Monster's Maze +980027801 - Goldrich's Maze - Monster's Maze +980027901 - Goldrich's Maze - Maze of the Golden Key +980028001 - Goldrich's Maze - Maze of Exploration +980028101 - Goldrich's Maze - Maze of Exploration +980020102 - Goldrich's Maze - Snail's Maze +980020202 - Goldrich's Maze - Snail's Maze +980020302 - Goldrich's Maze - Snail's Maze +980020402 - Goldrich's Maze - Snail's Maze +980020502 - Goldrich's Maze - Snail's Maze +980020602 - Goldrich's Maze - Snail's Maze +980020702 - Goldrich's Maze - Snail's Maze +980020802 - Goldrich's Maze - Snail's Maze +980020902 - Goldrich's Maze - Goldrich's Treasure Vault +980021002 - Goldrich's Maze - Rainbow Snail's Maze +980021102 - Goldrich's Maze - Rainbow Snail's Maze +980021202 - Goldrich's Maze - Rainbow Snail's Maze +980021302 - Goldrich's Maze - Rainbow Snail's Maze +980021402 - Goldrich's Maze - Rainbow Snail's Maze +980021502 - Goldrich's Maze - Dragon Nest Maze +980021602 - Goldrich's Maze - Dragon Nest Maze +980021702 - Goldrich's Maze - Dragon Nest Maze +980021802 - Goldrich's Maze - Dragon Nest Maze +980021902 - Goldrich's Maze - Dragon Nest Maze +980022002 - Goldrich's Maze - High! Low! +980022102 - Goldrich's Maze - High! Low! +980022202 - Goldrich's Maze - High! Low! +980022302 - Goldrich's Maze - High! Low! +980022402 - Goldrich's Maze - High! Low! +980022502 - Goldrich's Maze - Maze of Golden Fruit +980022602 - Goldrich's Maze - Maze of Golden Fruit +980022702 - Goldrich's Maze - Glowing Mushroom's Room +980022802 - Goldrich's Maze - Glowing Mushroom's Room +980022902 - Goldrich's Maze - Glowing Mushroom's Room +980023002 - Goldrich's Maze - Maze of Numbers +980023102 - Goldrich's Maze - Maze of Numbers +980023202 - Goldrich's Maze - Maze of Numbers +980023302 - Goldrich's Maze - Maze of Numbers +980023402 - Goldrich's Maze - Maze of Numbers +980023502 - Goldrich's Maze - Ribbon Pig's Maze +980023602 - Goldrich's Maze - Ribbon Pig's Maze +980023702 - Goldrich's Maze - Ribbon Pig's Maze +980023802 - Goldrich's Maze - Ribbon Pig's Maze +980023902 - Goldrich's Maze - Ribbon Pig's Maze +980024002 - Goldrich's Maze - Maze of Mushroom +980024102 - Goldrich's Maze - Maze of Mushroom +980024202 - Goldrich's Maze - Maze of Mushroom +980024302 - Goldrich's Maze - Maze of Mushroom +980024402 - Goldrich's Maze - Maze of Mushroom +980024502 - Goldrich's Maze - Glowing Maze of Mushroom +980024602 - Goldrich's Maze - Glowing Maze of Mushroom +980024702 - Goldrich's Maze - Glowing Maze of Mushroom +980024802 - Goldrich's Maze - Glowing Maze of Mushroom +980024902 - Goldrich's Maze - Glowing Maze of Mushroom +980025002 - Goldrich's Maze - Twin Maze +980025102 - Goldrich's Maze - Twin Maze +980025202 - Goldrich's Maze - Twin Maze +980025302 - Goldrich's Maze - Twin Maze +980025402 - Goldrich's Maze - Twin Maze +980025502 - Goldrich's Maze - Twin Maze +980025602 - Goldrich's Maze - Twin Maze +980025702 - Goldrich's Maze - Twin Maze +980025802 - Goldrich's Maze - Twin Maze +980025902 - Goldrich's Maze - Twin Maze +980026002 - Goldrich's Maze - Round Up! +980026102 - Goldrich's Maze - Round Up! +980026202 - Goldrich's Maze - Round Up! +980026302 - Goldrich's Maze - Round Up! +980026402 - Goldrich's Maze - Round Up! +980026502 - Goldrich's Maze - Maze of Erosion +980026602 - Goldrich's Maze - Maze of Erosion +980026702 - Goldrich's Maze - Maze of Erosion +980026802 - Goldrich's Maze - Maze of Erosion +980026902 - Goldrich's Maze - Maze of Erosion +980027002 - Goldrich's Maze - Maze of Erosion +980027102 - Goldrich's Maze - Maze of Erosion +980027202 - Goldrich's Maze - Maze of Erosion +980027302 - Goldrich's Maze - Beginning of the Maze +980027402 - Goldrich's Maze - Monster's Maze +980027502 - Goldrich's Maze - Monster's Maze +980027602 - Goldrich's Maze - Monster's Maze +980027702 - Goldrich's Maze - Monster's Maze +980027802 - Goldrich's Maze - Monster's Maze +980027902 - Goldrich's Maze - Maze of the Golden Key +980028002 - Goldrich's Maze - Maze of Exploration +980028102 - Goldrich's Maze - Maze of Exploration +999999998 - Maple World - Destiny's Call +970030108 - Hidden Street - Stage 1 +970030109 - Hidden Street - Stage 1 +970030110 - Hidden Street - Stage 1 +970030111 - Hidden Street - Stage 1 +970030208 - Hidden Street - Stage 2 +970030209 - Hidden Street - Stage 2 +970030210 - Hidden Street - Stage 2 +970030211 - Hidden Street - Stage 2 +970030308 - Hidden Street - Stage 3 +970030309 - Hidden Street - Stage 3 +970030310 - Hidden Street - Stage 3 +970030311 - Hidden Street - Stage 3 +970030408 - Hidden Street - Stage 4 +970030409 - Hidden Street - Stage 4 +970030410 - Hidden Street - Stage 4 +970030411 - Hidden Street - Stage 4 +970030508 - Hidden Street - Stage 5 +970030509 - Hidden Street - Stage 5 +970030510 - Hidden Street - Stage 5 +970030511 - Hidden Street - Stage 5 +970030608 - Hidden Street - Stage 6 +970030609 - Hidden Street - Stage 6 +970030610 - Hidden Street - Stage 6 +970030611 - Hidden Street - Stage 6 +970030708 - Hidden Street - Stage 7 +970030709 - Hidden Street - Stage 7 +970030710 - Hidden Street - Stage 7 +970030711 - Hidden Street - Stage 7 +970030808 - Hidden Street - Stage 8 +970030809 - Hidden Street - Stage 8 +970030810 - Hidden Street - Stage 8 +970030811 - Hidden Street - Stage 8 +970030908 - Hidden Street - Stage 9 +970030909 - Hidden Street - Stage 9 +970030910 - Hidden Street - Stage 9 +970030911 - Hidden Street - Stage 9 +970031008 - Hidden Street - Stage 10 +970031009 - Hidden Street - Stage 10 +970031010 - Hidden Street - Stage 10 +970031011 - Hidden Street - Stage 10 +970031108 - Hidden Street - Stage 11 +970031109 - Hidden Street - Stage 11 +970031110 - Hidden Street - Stage 11 +970031111 - Hidden Street - Stage 11 +970031208 - Hidden Street - Stage 12 +970031209 - Hidden Street - Stage 12 +970031210 - Hidden Street - Stage 12 +970031211 - Hidden Street - Stage 12 +970031308 - Hidden Street - Stage 13 +970031309 - Hidden Street - Stage 13 +970031310 - Hidden Street - Stage 13 +970031311 - Hidden Street - Stage 13 +970031408 - Hidden Street - Stage 14 +970031409 - Hidden Street - Stage 14 +970031410 - Hidden Street - Stage 14 +970031411 - Hidden Street - Stage 14 +970031508 - Hidden Street - Stage 15 +970031509 - Hidden Street - Stage 15 +970031510 - Hidden Street - Stage 15 +970031511 - Hidden Street - Stage 15 +970031608 - Hidden Street - Stage 16 +970031609 - Hidden Street - Stage 16 +970031610 - Hidden Street - Stage 16 +970031611 - Hidden Street - Stage 16 +970031708 - Hidden Street - Stage 17 +970031709 - Hidden Street - Stage 17 +970031710 - Hidden Street - Stage 17 +970031711 - Hidden Street - Stage 17 +970031808 - Hidden Street - Stage 18 +970031809 - Hidden Street - Stage 18 +970031810 - Hidden Street - Stage 18 +970031811 - Hidden Street - Stage 18 +970031908 - Hidden Street - Stage 19 +970031909 - Hidden Street - Stage 19 +970031910 - Hidden Street - Stage 19 +970031911 - Hidden Street - Stage 19 +970032008 - Hidden Street - Stage 20 +970032009 - Hidden Street - Stage 20 +970032010 - Hidden Street - Stage 20 +970032011 - Hidden Street - Stage 20 +970032108 - Hidden Street - Stage 21 +970032109 - Hidden Street - Stage 21 +970032110 - Hidden Street - Stage 21 +970032111 - Hidden Street - Stage 21 +970032208 - Hidden Street - Stage 22 +970032209 - Hidden Street - Stage 22 +970032210 - Hidden Street - Stage 22 +970032211 - Hidden Street - Stage 22 +970032308 - Hidden Street - Stage 23 +970032309 - Hidden Street - Stage 23 +970032310 - Hidden Street - Stage 23 +970032311 - Hidden Street - Stage 23 +970032408 - Hidden Street - Stage 24 +970032409 - Hidden Street - Stage 24 +970032410 - Hidden Street - Stage 24 +970032411 - Hidden Street - Stage 24 +970032508 - Hidden Street - Stage 25 +970032509 - Hidden Street - Stage 25 +970032510 - Hidden Street - Stage 25 +970032511 - Hidden Street - Stage 25 +970032608 - Hidden Street - Stage 26 +970032609 - Hidden Street - Stage 26 +970032610 - Hidden Street - Stage 26 +970032611 - Hidden Street - Stage 26 +970032708 - Hidden Street - Stage 27 +970032709 - Hidden Street - Stage 27 +970032710 - Hidden Street - Stage 27 +970032711 - Hidden Street - Stage 27 +970040112 - Hidden Street - Stage 1 +970040113 - Hidden Street - Stage 1 +970040114 - Hidden Street - Stage 1 +970040115 - Hidden Street - Stage 1 +970040116 - Hidden Street - Stage 1 +970040117 - Hidden Street - Stage 1 +970040212 - Hidden Street - Stage 2 +970040213 - Hidden Street - Stage 2 +970040214 - Hidden Street - Stage 2 +970040215 - Hidden Street - Stage 2 +970040216 - Hidden Street - Stage 2 +970040217 - Hidden Street - Stage 2 +970040312 - Hidden Street - Stage 3 +970040313 - Hidden Street - Stage 3 +970040314 - Hidden Street - Stage 3 +970040315 - Hidden Street - Stage 3 +970040316 - Hidden Street - Stage 3 +970040317 - Hidden Street - Stage 3 +970040412 - Hidden Street - Stage 4 +970040413 - Hidden Street - Stage 4 +970040414 - Hidden Street - Stage 4 +970040415 - Hidden Street - Stage 4 +970040416 - Hidden Street - Stage 4 +970040417 - Hidden Street - Stage 4 +970040512 - Hidden Street - Stage 5 +970040513 - Hidden Street - Stage 5 +970040514 - Hidden Street - Stage 5 +970040515 - Hidden Street - Stage 5 +970040516 - Hidden Street - Stage 5 +970040517 - Hidden Street - Stage 5 +970040612 - Hidden Street - Stage 6 +970040613 - Hidden Street - Stage 6 +970040614 - Hidden Street - Stage 6 +970040615 - Hidden Street - Stage 6 +970040616 - Hidden Street - Stage 6 +970040617 - Hidden Street - Stage 6 +970040712 - Hidden Street - Stage 7 +970040713 - Hidden Street - Stage 7 +970040714 - Hidden Street - Stage 7 +970040715 - Hidden Street - Stage 7 +970040716 - Hidden Street - Stage 7 +970040717 - Hidden Street - Stage 7 +970040812 - Hidden Street - Stage 8 +970040813 - Hidden Street - Stage 8 +970040814 - Hidden Street - Stage 8 +970040815 - Hidden Street - Stage 8 +970040816 - Hidden Street - Stage 8 +970040817 - Hidden Street - Stage 8 +970040912 - Hidden Street - Stage 9 +970040913 - Hidden Street - Stage 9 +970040914 - Hidden Street - Stage 9 +970040915 - Hidden Street - Stage 9 +970040916 - Hidden Street - Stage 9 +970040917 - Hidden Street - Stage 9 +970041012 - Hidden Street - Stage 10 +970041013 - Hidden Street - Stage 10 +970041014 - Hidden Street - Stage 10 +970041015 - Hidden Street - Stage 10 +970041016 - Hidden Street - Stage 10 +970041017 - Hidden Street - Stage 10 +970041112 - Hidden Street - Stage 11 +970041113 - Hidden Street - Stage 11 +970041114 - Hidden Street - Stage 11 +970041115 - Hidden Street - Stage 11 +970041116 - Hidden Street - Stage 11 +970041117 - Hidden Street - Stage 11 +970041212 - Hidden Street - Stage 12 +970041213 - Hidden Street - Stage 12 +970041214 - Hidden Street - Stage 12 +970041215 - Hidden Street - Stage 12 +970041216 - Hidden Street - Stage 12 +970041217 - Hidden Street - Stage 12 +970041312 - Hidden Street - Stage 13 +970041313 - Hidden Street - Stage 13 +970041314 - Hidden Street - Stage 13 +970041315 - Hidden Street - Stage 13 +970041316 - Hidden Street - Stage 13 +970041317 - Hidden Street - Stage 13 +970041412 - Hidden Street - Stage 14 +970041413 - Hidden Street - Stage 14 +970041414 - Hidden Street - Stage 14 +970041415 - Hidden Street - Stage 14 +970041416 - Hidden Street - Stage 14 +970041417 - Hidden Street - Stage 14 +970041512 - Hidden Street - Stage 15 +970041513 - Hidden Street - Stage 15 +970041514 - Hidden Street - Stage 15 +970041515 - Hidden Street - Stage 15 +970041516 - Hidden Street - Stage 15 +970041517 - Hidden Street - Stage 15 +970041612 - Hidden Street - Stage 16 +970041613 - Hidden Street - Stage 16 +970041614 - Hidden Street - Stage 16 +970041615 - Hidden Street - Stage 16 +970041616 - Hidden Street - Stage 16 +970041617 - Hidden Street - Stage 16 +970041712 - Hidden Street - Stage 17 +970041713 - Hidden Street - Stage 17 +970041714 - Hidden Street - Stage 17 +970041715 - Hidden Street - Stage 17 +970041716 - Hidden Street - Stage 17 +970041717 - Hidden Street - Stage 17 +970041812 - Hidden Street - Stage 18 +970041813 - Hidden Street - Stage 18 +970041814 - Hidden Street - Stage 18 +970041815 - Hidden Street - Stage 18 +970041816 - Hidden Street - Stage 18 +970041817 - Hidden Street - Stage 18 +970041912 - Hidden Street - Stage 19 +970041913 - Hidden Street - Stage 19 +970041914 - Hidden Street - Stage 19 +970041915 - Hidden Street - Stage 19 +970041916 - Hidden Street - Stage 19 +970041917 - Hidden Street - Stage 19 +970042012 - Hidden Street - Stage 20 +970042013 - Hidden Street - Stage 20 +970042014 - Hidden Street - Stage 20 +970042015 - Hidden Street - Stage 20 +970042016 - Hidden Street - Stage 20 +970042017 - Hidden Street - Stage 20 +970042112 - Hidden Street - Stage 21 +970042113 - Hidden Street - Stage 21 +970042114 - Hidden Street - Stage 21 +970042115 - Hidden Street - Stage 21 +970042116 - Hidden Street - Stage 21 +970042117 - Hidden Street - Stage 21 +970042212 - Hidden Street - Stage 22 +970042213 - Hidden Street - Stage 22 +970042214 - Hidden Street - Stage 22 +970042215 - Hidden Street - Stage 22 +970042216 - Hidden Street - Stage 22 +970042217 - Hidden Street - Stage 22 +970042312 - Hidden Street - Stage 23 +970042313 - Hidden Street - Stage 23 +970042314 - Hidden Street - Stage 23 +970042315 - Hidden Street - Stage 23 +970042316 - Hidden Street - Stage 23 +970042317 - Hidden Street - Stage 23 +970042412 - Hidden Street - Stage 24 +970042413 - Hidden Street - Stage 24 +970042414 - Hidden Street - Stage 24 +970042415 - Hidden Street - Stage 24 +970042416 - Hidden Street - Stage 24 +970042417 - Hidden Street - Stage 24 +970042512 - Hidden Street - Stage 25 +970042513 - Hidden Street - Stage 25 +970042514 - Hidden Street - Stage 25 +970042515 - Hidden Street - Stage 25 +970042516 - Hidden Street - Stage 25 +970042517 - Hidden Street - Stage 25 +970042612 - Hidden Street - Stage 26 +970042613 - Hidden Street - Stage 26 +970042614 - Hidden Street - Stage 26 +970042615 - Hidden Street - Stage 26 +970042616 - Hidden Street - Stage 26 +970042617 - Hidden Street - Stage 26 +970042712 - Hidden Street - Stage 27 +970042713 - Hidden Street - Stage 27 +970042714 - Hidden Street - Stage 27 +970042715 - Hidden Street - Stage 27 +970042716 - Hidden Street - Stage 27 +970042717 - Hidden Street - Stage 27 +926000010 - Hidden Street - Treasure Room of Queen +926000000 - Hidden Street - Ariant Back Street +910020100 - Hidden Street - Thornbush Leading to Jump Stand +910020101 - Hidden Street - Thornbush Leading to Jump Stand +910020102 - Hidden Street - Thornbush Leading to Jump Stand +910020103 - Hidden Street - Thornbush Leading to Jump Stand +910020104 - Hidden Street - Thornbush Leading to Jump Stand +910020200 - Hidden Street - Playground of Lupin Leading to Jump Stand +910020201 - Hidden Street - Playground of Lupin Leading to Jump Stand +910020202 - Hidden Street - Playground of Lupin Leading to Jump Stand +910020203 - Hidden Street - Playground of Lupin Leading to Jump Stand +910020204 - Hidden Street - Playground of Lupin Leading to Jump Stand +910020300 - Hidden Street - Jumping Board Leading to Jump Stand +910020301 - Hidden Street - Jumping Board Leading to Jump Stand +910020302 - Hidden Street - Jumping Board Leading to Jump Stand +910020303 - Hidden Street - Jumping Board Leading to Jump Stand +910020304 - Hidden Street - Jumping Board Leading to Jump Stand +910021000 - Hidden Street - Under the High Branch +910110000 - Hidden Street - Magic Library +910210000 - Hidden Street - Sharenian Castle Gate +910510000 - Hidden Street - Puppeteer's Cave +910510001 - Hidden Street - Puppeteer's Cave +913000000 - Hidden Street - The 1st Drill Hall +913000100 - Hidden Street - The 1st Drill Hall +913000200 - Hidden Street - The 1st Drill Hall +913010000 - Hidden Street - The 3rd Drill Hall +913010100 - Hidden Street - The 3rd Drill Hall +913010200 - Hidden Street - The 3rd Drill Hall +913010300 - Hidden Street - The 3rd Drill Hall +913020000 - Hidden Street - The 4th Drill Hall +913020100 - Hidden Street - The 4th Drill Hall +913020200 - Hidden Street - The 4th Drill Hall +913020300 - Hidden Street - The 4th Drill Hall +913030000 - Hidden Street - Quiet Ereve +913040000 - Opening - Cygnus Knights +913040001 - Opening - Cygnus Knights +913040002 - Opening - Cygnus Knights +913040003 - Opening - Cygnus Knights +913040004 - Opening - Cygnus Knights +913040005 - Opening - Cygnus Knights +913040006 - Opening - Cygnus Knights +913040007 - Opening - Cygnus Knights +913040008 - Opening - Cygnus Knights +913040009 - Opening - Cygnus Knights +920020000 - Hidden Street - Elizas Garden +922020300 - Hidden Street - Origin of the Clock Tower +922220000 - Hidden Street - Gloomy Forest +922230000 - Hidden Street - Lunar World +922230001 - Hidden Street - Hole of the Moon +922230002 - Hidden Street - Under the Moon +922230100 - Hidden Street - Silent Yard of Moon Flowers +922230101 - Hidden Street - Silent Yard of Moon Flowers +922230102 - Hidden Street - Silent Yard of Moon Flowers +922230103 - Hidden Street - Silent Yard of Moon Flowers +922230104 - Hidden Street - Silent Yard of Moon Flowers +922230105 - Hidden Street - Silent Yard of Moon Flowers +922230106 - Hidden Street - Silent Yard of Moon Flowers +922230200 - Hidden Street - Shiny Yard of Moon Flowers +922230201 - Hidden Street - Shiny Yard of Moon Flowers +922230202 - Hidden Street - Shiny Yard of Moon Flowers +922230203 - Hidden Street - Shiny Yard of Moon Flowers +922230204 - Hidden Street - Shiny Yard of Moon Flowers +922230205 - Hidden Street - Shiny Yard of Moon Flowers +922230206 - Hidden Street - Shiny Yard of Moon Flowers +922230300 - Hidden Street - Fragrant Yard of Moon Flowers +922230301 - Hidden Street - Fragrant Yard of Moon Flowers +922230302 - Hidden Street - Fragrant Yard of Moon Flowers +922230303 - Hidden Street - Fragrant Yard of Moon Flowers +922230304 - Hidden Street - Fragrant Yard of Moon Flowers +922230305 - Hidden Street - Fragrant Yard of Moon Flowers +922230306 - Hidden Street - Fragrant Yard of Moon Flowers +922231000 - Hidden Street - Playground of Moon Bunnies +924010000 - Hidden Street - Cave of Black Witches +924010100 - Hidden Street - Cave of Black Witches +924010200 - Hidden Street - Cave of Black Witches +925000000 - Hidden Street - Forest of the Ghost Priest +925020000 - Mu Lung Dojo - Mu Lung Dojo Entrance +925020001 - Mu Lung Dojo - Mu Lung Dojo Hall +925020002 - Mu Lung Dojo - Mu Lung Dojo Exit +925020003 - Mu Lung Dojo - Mu Lung Dojo Rooftop +925020010 - Mu Lung Dojo - So Gong's Room +925020011 - Mu Lung Dojo - So Gong's Room +925020012 - Mu Lung Dojo - So Gong's Room +925020013 - Mu Lung Dojo - So Gong's Room +925020014 - Mu Lung Dojo - So Gong's Room +925020100 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020101 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020102 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020103 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020104 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020105 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020106 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020107 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020108 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020109 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020110 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020111 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020112 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020113 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020114 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925020200 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020201 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020202 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020203 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020204 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020205 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020206 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020207 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020208 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020209 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020210 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020211 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020212 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020213 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020214 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925020300 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020301 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020302 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020303 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020304 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020305 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020306 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020307 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020308 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020309 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020310 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020311 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020312 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020313 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020314 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925020400 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020401 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020402 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020403 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020404 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020405 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020406 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020407 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020408 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020409 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020410 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020411 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020412 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020413 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020414 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925020500 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020501 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020502 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020503 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020504 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020505 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020506 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020507 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020508 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020509 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020510 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020511 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020512 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020513 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020514 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925020600 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020601 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020602 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020603 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020604 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020605 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020606 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020607 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020608 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020609 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020610 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020611 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020612 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020613 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020614 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925020700 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020701 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020702 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020703 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020704 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020705 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020706 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020707 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020708 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020709 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020710 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020711 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020712 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020713 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020714 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925020800 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020801 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020802 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020803 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020804 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020805 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020806 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020807 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020808 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020809 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020810 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020811 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020812 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020813 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020814 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925020900 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020901 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020902 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020903 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020904 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020905 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020906 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020907 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020908 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020909 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020910 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020911 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020912 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020913 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925020914 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925021000 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021001 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021002 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021003 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021004 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021005 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021006 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021007 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021008 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021009 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021010 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021011 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021012 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021013 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021014 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925021100 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021101 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021102 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021103 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021104 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021105 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021106 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021107 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021108 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021109 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021110 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021111 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021112 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021113 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021114 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925021200 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021201 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021202 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021203 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021204 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021205 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021206 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021207 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021208 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021209 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021210 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021211 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021212 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021213 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021214 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925021300 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021301 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021302 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021303 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021304 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021305 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021306 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021307 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021308 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021309 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021310 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021311 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021312 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021313 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021314 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925021400 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021401 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021402 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021403 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021404 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021405 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021406 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021407 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021408 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021409 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021410 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021411 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021412 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021413 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021414 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925021500 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021501 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021502 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021503 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021504 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021505 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021506 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021507 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021508 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021509 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021510 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021511 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021512 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021513 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021514 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021600 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925021601 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021602 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021603 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021604 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021605 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021606 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021607 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021608 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021609 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021610 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021611 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021612 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021613 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021614 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925021700 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021701 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021702 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021703 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021704 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021705 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021706 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021707 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021708 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021709 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021710 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021711 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021712 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021713 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021714 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925021800 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021801 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021802 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021803 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021804 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021805 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021806 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021807 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021808 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021809 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021810 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021811 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021812 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021813 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021814 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925021900 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021901 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021902 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021903 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021904 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021905 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021906 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021907 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021908 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021909 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021910 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021911 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021912 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021913 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925021914 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925022000 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022001 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022002 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022003 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022004 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022005 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022006 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022007 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022008 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022009 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022010 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022011 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022012 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022013 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022014 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925022100 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022101 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022102 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022103 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022104 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022105 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022106 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022107 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022108 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022109 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022110 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022111 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022112 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022113 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022114 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925022200 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022201 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022202 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022203 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022204 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022205 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022206 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022207 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022208 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022209 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022210 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022211 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022212 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022213 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022214 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925022300 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022301 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022302 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022303 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022304 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022305 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022306 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022307 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022308 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022309 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022310 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022311 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022312 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022313 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022314 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925022400 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022401 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022402 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022403 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022404 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022405 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022406 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022407 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022408 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022409 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022410 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022411 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022412 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022413 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022414 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925022500 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022501 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022502 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022503 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022504 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022505 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022506 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022507 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022508 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022509 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022510 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022511 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022512 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022513 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022514 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925022600 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022601 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022602 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022603 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022604 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022605 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022606 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022607 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022608 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022609 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022610 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022611 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022612 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022613 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022614 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925022700 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022701 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022702 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022703 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022704 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022705 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022706 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022707 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022708 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022709 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022710 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022711 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022712 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022713 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022714 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925022800 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022801 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022802 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022803 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022804 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022805 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022806 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022807 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022808 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022809 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022810 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022811 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022812 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022813 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022814 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925022900 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022901 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022902 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022903 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022904 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022905 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022906 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022907 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022908 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022909 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022910 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022911 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022912 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022913 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925022914 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925023000 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023001 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023002 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023003 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023004 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023005 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023006 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023007 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023008 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023009 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023010 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023011 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023012 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023013 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023014 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925023100 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023101 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023102 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023103 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023104 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023105 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023106 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023107 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023108 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023109 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023110 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023111 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023112 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023113 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023114 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925023200 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023201 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023202 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023203 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023204 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023205 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023206 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023207 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023208 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023209 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023210 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023211 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023212 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023213 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023214 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925023300 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023301 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023302 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023303 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023304 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023305 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023306 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023307 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023308 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023309 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023310 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023311 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023312 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023313 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023314 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925023400 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023401 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023402 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023403 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023404 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023405 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023406 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023407 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023408 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023409 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023410 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023411 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023412 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023413 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023414 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925023500 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023501 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023502 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023503 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023504 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023505 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023506 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023507 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023508 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023509 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023510 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023511 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023512 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023513 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023514 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925023600 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023601 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023602 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023603 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023604 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023605 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023606 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023607 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023608 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023609 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023610 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023611 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023612 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023613 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023614 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925023700 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023701 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023702 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023703 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023704 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023705 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023706 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023707 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023708 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023709 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023710 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023711 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023712 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023713 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023714 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925023800 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023801 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023802 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023803 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023804 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023805 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023806 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023807 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023808 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023809 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023810 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023811 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023812 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023813 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925023814 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925030100 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925030101 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925030102 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925030103 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925030104 - Mu Lung Dojo - Mu Lung Dojo 1st Floor +925030200 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925030201 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925030202 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925030203 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925030204 - Mu Lung Dojo - Mu Lung Dojo 2nd Floor +925030300 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925030301 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925030302 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925030303 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925030304 - Mu Lung Dojo - Mu Lung Dojo 3rd Floor +925030400 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925030401 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925030402 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925030403 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925030404 - Mu Lung Dojo - Mu Lung Dojo 4th Floor +925030500 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925030501 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925030502 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925030503 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925030504 - Mu Lung Dojo - Mu Lung Dojo 5th Floor +925030600 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925030601 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925030602 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925030603 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925030604 - Mu Lung Dojo - Mu Lung Dojo 6th Floor +925030700 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925030701 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925030702 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925030703 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925030704 - Mu Lung Dojo - Mu Lung Dojo 7th Floor +925030800 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925030801 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925030802 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925030803 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925030804 - Mu Lung Dojo - Mu Lung Dojo 8th Floor +925030900 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925030901 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925030902 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925030903 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925030904 - Mu Lung Dojo - Mu Lung Dojo 9th Floor +925031000 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925031001 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925031002 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925031003 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925031004 - Mu Lung Dojo - Mu Lung Dojo 10th Floor +925031100 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925031101 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925031102 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925031103 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925031104 - Mu Lung Dojo - Mu Lung Dojo 11th Floor +925031200 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925031201 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925031202 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925031203 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925031204 - Mu Lung Dojo - Mu Lung Dojo 12th Floor +925031300 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925031301 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925031302 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925031303 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925031304 - Mu Lung Dojo - Mu Lung Dojo 13th Floor +925031400 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925031401 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925031402 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925031403 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925031404 - Mu Lung Dojo - Mu Lung Dojo 14th Floor +925031500 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925031501 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925031502 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925031503 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925031504 - Mu Lung Dojo - Mu Lung Dojo 15th Floor +925031600 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925031601 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925031602 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925031603 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925031604 - Mu Lung Dojo - Mu Lung Dojo 16th Floor +925031700 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925031701 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925031702 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925031703 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925031704 - Mu Lung Dojo - Mu Lung Dojo 17th Floor +925031800 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925031801 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925031802 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925031803 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925031804 - Mu Lung Dojo - Mu Lung Dojo 18th Floor +925031900 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925031901 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925031902 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925031903 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925031904 - Mu Lung Dojo - Mu Lung Dojo 19th Floor +925032000 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925032001 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925032002 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925032003 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925032004 - Mu Lung Dojo - Mu Lung Dojo 20th Floor +925032100 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925032101 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925032102 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925032103 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925032104 - Mu Lung Dojo - Mu Lung Dojo 21st Floor +925032200 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925032201 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925032202 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925032203 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925032204 - Mu Lung Dojo - Mu Lung Dojo 22nd Floor +925032300 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925032301 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925032302 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925032303 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925032304 - Mu Lung Dojo - Mu Lung Dojo 23rd Floor +925032400 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925032401 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925032402 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925032403 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925032404 - Mu Lung Dojo - Mu Lung Dojo 24th Floor +925032500 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925032501 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925032502 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925032503 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925032504 - Mu Lung Dojo - Mu Lung Dojo 25th Floor +925032600 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925032601 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925032602 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925032603 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925032604 - Mu Lung Dojo - Mu Lung Dojo 26th Floor +925032700 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925032701 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925032702 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925032703 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925032704 - Mu Lung Dojo - Mu Lung Dojo 27th Floor +925032800 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925032801 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925032802 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925032803 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925032804 - Mu Lung Dojo - Mu Lung Dojo 28th Floor +925032900 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925032901 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925032902 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925032903 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925032904 - Mu Lung Dojo - Mu Lung Dojo 29th Floor +925033000 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925033001 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925033002 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925033003 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925033004 - Mu Lung Dojo - Mu Lung Dojo 30th Floor +925033100 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925033101 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925033102 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925033103 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925033104 - Mu Lung Dojo - Mu Lung Dojo 31st Floor +925033200 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925033201 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925033202 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925033203 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925033204 - Mu Lung Dojo - Mu Lung Dojo 32nd Floor +925033300 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925033301 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925033302 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925033303 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925033304 - Mu Lung Dojo - Mu Lung Dojo 33rd Floor +925033400 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925033401 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925033402 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925033403 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925033404 - Mu Lung Dojo - Mu Lung Dojo 34th Floor +925033500 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925033501 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925033502 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925033503 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925033504 - Mu Lung Dojo - Mu Lung Dojo 35th Floor +925033600 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925033601 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925033602 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925033603 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925033604 - Mu Lung Dojo - Mu Lung Dojo 36th Floor +925033700 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925033701 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925033702 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925033703 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925033704 - Mu Lung Dojo - Mu Lung Dojo 37th Floor +925033800 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925033801 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925033802 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925033803 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +925033804 - Mu Lung Dojo - Mu Lung Dojo 38th Floor +913040010 - Opening - Cygnus Knights +913040011 - Opening - Cygnus Knights +980030000 - The 2nd Monster Carnival - Spiegelmann's Office +980030010 - The 2nd Monster Carnival - Exit +980031000 - The 2nd Monster Carnival - Carnival Field 1 +980031100 - The 2nd Monster Carnival - Carnival Field 1 +980031200 - The 2nd Monster Carnival - Carnival Field +980031300 - The 2nd Monster Carnival - Carnival Field +980031400 - The 2nd Monster Carnival - Carnival Field +980032000 - The 2nd Monster Carnival - Carnival Field 2 +980032100 - The 2nd Monster Carnival - Carnival Field 2 +980032200 - The 2nd Monster Carnival - Carnival Field +980032300 - The 2nd Monster Carnival - Carnival Field +980032400 - The 2nd Monster Carnival - Carnival Field +980033000 - The 2nd Monster Carnival - Carnival Field 3 +980033100 - The 2nd Monster Carnival - Carnival Field 3 +980033200 - The 2nd Monster Carnival - Carnival Field +980033300 - The 2nd Monster Carnival - Carnival Field +980033400 - The 2nd Monster Carnival - Carnival Field +910030000 - Fairytale Land - Fairytale Land Entrance +910030001 - Fairytale Land - Fairytale Land Exit +910031000 - Fairytale Land - Witch Cat and the Gingerbread House +910032000 - Fairytale Land - Back Yard +910032100 - Fairytale Land - Beanstalk Climb +910032200 - ???? - ???? ?? ??? +910033000 - Fairytale Land - Ocean Cave Escape! +910033100 - Fairytale Land - Ocean Cave Escape!! +910033200 - Fairytale Land - Ocean Cave Escape!!! +910033300 - Fairytale Land - Ocean Cave End +910040000 - Sheep Ranch - Ranch Entrance +910040001 - Sheep Ranch - Ranch Backstreet +910040002 - Sheep Ranch - Fenced Street +910040003 - Sheep Ranch - Big Bad Wolf's Victory +910040004 - Sheep Ranch - Little Lamb's Victory +910040005 - Sheep Ranch - Wolf's Defeat +910040006 - Sheep Ranch - Little Lamb's Defeat +910040110 - Sheep Ranch - Little Lamb's Courage +910040120 - Sheep Ranch - Wolf's Treachery +910040100 - Sheep Ranch - Sheep Ranch +910520000 - Hidden Street - Hero's Memory +913040100 - Neinheart's Job Introduction - Cygnus Knights +913040101 - Neinheart's Job Introduction - Cygnus Knights +913040102 - Neinheart's Job Introduction - Cygnus Knights +913040103 - Neinheart's Job Introduction - Cygnus Knights +913040104 - Neinheart's Job Introduction - Cygnus Knights +913040105 - Neinheart's Job Introduction - Cygnus Knights +913040106 - Neinheart's Job Introduction - Cygnus Knights +922240000 - Space Gaga - Rescue Gaga! +922240100 - Space Gaga - Gaga's Rescue Success?! +922240200 - Space Gaga - Moon Corner +922241000 - Space Mine - Space Mine +922241100 - Space Mine - Back of Space Mine +970000100 - Hidden Street - Family Studio Waiting Room +970000101 - Hidden Street - Maple Studio +970000102 - Hidden Street - Ludibrium Studio +970000103 - Hidden Street - Ariant Studio +970000104 - Hidden Street - Orbis Studio +970000105 - Hidden Street - Mu Lung Studio +970000106 - Hidden Street - Magatia Studio +970000107 - Hidden Street - Ereve Studio +970000108 - Hidden Street - Studio Made of Cookies +980040000 - Witch Tower - Witch Tower Entrance +980040010 - Witch Tower - Witch's Grave Site +980041000 - Witch Tower - Witch Tower 1st Floor +980041100 - Witch Tower - Witch Tower 2nd Floor +980041200 - Witch Tower - Witch Tower 3rd Floor +980042000 - Witch Tower - Witch Tower 1st Floor +980042100 - Witch Tower - Witch Tower 2nd Floor +980042200 - Witch Tower - Witch Tower 3rd Floor +980043000 - Witch Tower - Witch Tower 1st Floor +980043100 - Witch Tower - Witch Tower 2nd Floor +980043200 - Witch Tower - Witch Tower 3rd Floor +980044000 - Witch Tower - Witch Tower 1st Floor +980044100 - Witch Tower - Witch Tower 2nd Floor +980044200 - Witch Tower - Witch Tower 3rd Floor +950000000 - ?????? - ??? ??? +910050000 - ?????? - ??? ?? ????? +910060000 - Victoria Road - Bowman Training Center +910060001 - Victoria Road - Bowman Training Center +910060002 - Victoria Road - Bowman Training Center +910060003 - Victoria Road - Bowman Training Center +910060004 - Victoria Road - Bowman Training Center +910120000 - Victoria Road - Magician Training Center +910120001 - Victoria Road - Magician Training Center +910120002 - Victoria Road - Magician Training Center +910120003 - Victoria Road - Magician Training Center +910120004 - Victoria Road - Magician Training Center +910220000 - Victoria Road - Warrior Training Center +910220001 - Victoria Road - Warrior Training Center +910220002 - Victoria Road - Warrior Training Center +910220003 - Victoria Road - Warrior Training Center +910220004 - Victoria Road - Warrior Training Center +910310000 - Victoria Road - Thief Training Center +910310001 - Victoria Road - Thief Training Center +910310002 - Victoria Road - Thief Training Center +910310003 - Victoria Road - Thief Training Center +910310004 - Victoria Road - Thief Training Center +910400000 - Hidden Street - Dangerous Info Shop +910330300 - Hidden Street - Dusty Platform +910330200 - Hidden Street - Dusty Platform +910330100 - Hidden Street - Dusty Platform +910330001 - Hidden Street - Last Platform +910320300 - Hidden Street - Dusty Platform +910320200 - Hidden Street - Dusty Platform +910320100 - Hidden Street - Dusty Platform +910320010 - Hidden Street - Platform - Train 999 +910320001 - Hidden Street - Dusty Platform +910320000 - Hidden Street - Abandoned Subway Station +910510100 - Hidden Street - Puppeteer's Secret Passage +910510200 - Hidden Street - Puppeteer's Cave +910510201 - Hidden Street - Puppeteer's Cave +910510202 - Hidden Street - Puppeteer's Cave +912030000 - Victoria Road - Pirate Training Center +912030001 - Victoria Road - Pirate Training Center +912030002 - Victoria Road - Pirate Training Center +912030003 - Victoria Road - Pirate Training Center +912030004 - Victoria Road - Pirate Training Center +914000000 - Black Road - Wounded Soldier's Camp +914000100 - Black Road - Ready to Leave +914000200 - Black Road - Burning Forest 1 +914000210 - Black Road - Burning Forest 2 +914000220 - Black Road - Burning Forest 3 +914000300 - Black Road - Dead End Forest +914000400 - Black Road - Burning Forest 3 +914000410 - Black Road - Burning Forest 2 +914000420 - Black Road - Burning Forest 1 +914000500 - Black Road - Ready to Leave +914010000 - Snow Island - Training Ground 1 +914010100 - Snow Island - Training Ground 2 +914010200 - Snow Island - Training Ground 3 +914020000 - Hidden Street - Battle Against Maha +914030000 - Hidden Street - Wolf's Agony +920030000 - Hidden Street - Quiet Walk +920030001 - Hidden Street - Sealed Garden +921110000 - Hidden Street - Rider's Field +925040000 - Hidden Street - Back Alley of Mu Lung Training Center +925040001 - Hidden Street - Special Floor of Mu Lung Training Center +925040100 - Hidden Street - Sealed Temple +926010000 - Hidden Street - Pyramid Dunes +926010001 - Hidden Street - Nett's Pyramid +926010010 - Hidden Street - Tomb of Pharaoh Yeti +926010070 - Hidden Street - Tomb of Pharaoh Yeti +926010100 - Hidden Street - Nett's Pyramid +926010200 - Hidden Street - Nett's Pyramid +926010300 - Hidden Street - Nett's Pyramid +926010400 - Hidden Street - Nett's Pyramid +926010500 - Hidden Street - Nett's Pyramid +926011100 - Hidden Street - Nett's Pyramid +926011200 - Hidden Street - Nett's Pyramid +926011300 - Hidden Street - Nett's Pyramid +926011400 - Hidden Street - Nett's Pyramid +926011500 - Hidden Street - Nett's Pyramid +926012100 - Hidden Street - Nett's Pyramid +926012200 - Hidden Street - Nett's Pyramid +926012300 - Hidden Street - Nett's Pyramid +926012400 - Hidden Street - Nett's Pyramid +926012500 - Hidden Street - Nett's Pyramid +926013100 - Hidden Street - Nett's Pyramid +926013200 - Hidden Street - Nett's Pyramid +926013300 - Hidden Street - Nett's Pyramid +926013400 - Hidden Street - Nett's Pyramid +926013500 - Hidden Street - Nett's Pyramid +926020001 - Hidden Street - Shades of the Pyramid +926020100 - Hidden Street - Nett's Pyramid +926020200 - Hidden Street - Nett's Pyramid +926020300 - Hidden Street - Nett's Pyramid +926020400 - Hidden Street - Nett's Pyramid +926020500 - Hidden Street - Nett's Pyramid +926021100 - Hidden Street - Nett's Pyramid +926021200 - Hidden Street - Nett's Pyramid +926021300 - Hidden Street - Nett's Pyramid +926021400 - Hidden Street - Nett's Pyramid +926021500 - Hidden Street - Nett's Pyramid +926022100 - Hidden Street - Nett's Pyramid +926022200 - Hidden Street - Nett's Pyramid +926022400 - Hidden Street - Nett's Pyramid +926022300 - Hidden Street - Nett's Pyramid +926022500 - Hidden Street - Nett's Pyramid +926023100 - Hidden Street - Nett's Pyramid +926023200 - Hidden Street - Nett's Pyramid +926023300 - Hidden Street - Nett's Pyramid +926023400 - Hidden Street - Nett's Pyramid +926023500 - Hidden Street - Nett's Pyramid +930010000 - Hidden Street - Dangerous Library + +singapore + +540000000 - Singapore - CBD +540000100 - Singapore - Central Way 1 +540000200 - Singapore - Central Way 2 +540000300 - Singapore - Central Way 3 +540010000 - Singapore - Changi Airport +540010001 - Singapore - Before Departure (To Kerning City) +540010002 - Singapore - On the way to Kerning City +540010100 - Victoria Island - Kerning Airport +540010101 - Victoria Island - On the way to CBD +540020000 - Singapore - Suburban Area 1 +540020100 - Singapore - Suburban Area 2 +541000000 - Singapore - Boat Quay Town +541000100 - Singapore - Mysterious Path 1 +541000200 - Singapore - Mysterious Path 2 +541000300 - Singapore - Mysterious Path 3 +541010000 - Singapore - Ghost ship 1 +541010010 - Singapore - Ghost Ship 2 +541010020 - Singapore - Ghost Ship 3 +541010030 - Singapore - Ghost Ship 4 +541010040 - Singapore - Ghost Ship 5 +541010050 - Singapore - Ghost Ship 6 +541010060 - Singapore - Ghost ship 7 +541010100 - Singapore - The Engine Room +541010110 - Singapore - The Peaceful Ship +550000000 - Malaysia - Trend Zone Metropolis +550000100 - Malaysia - Outskirts of Muddy Banks +550000200 - Malaysia - Muddy Banks 1 +550000300 - Malaysia - Muddy Banks 2 +550000400 - Malaysia - Muddy Banks 3 +551000000 - Malaysia - Kampung Village +551000100 - Malaysia - Hibiscus Road 1 +551000200 - Malaysia - Hibiscus Road 2 +551010000 - Malaysia - Fantasy Theme Park 1 +551020000 - Malaysia - Fantasy Theme Park 2 +551030000 - Malaysia - Fantasy Theme Park 3 +551030100 - Malaysia - Entrance to the Spooky World +551030200 - Malaysia - Spooky World +551030001 - Malaysia - Longest Ride on ByeBye Station +551030020 - Malaysia - Longest Ride on ByeBye Station +551030019 - Malaysia - Longest Ride on ByeBye Station +551030018 - Malaysia - Longest Ride on ByeBye Station +551030017 - Malaysia - Longest Ride on ByeBye Station +551030016 - Malaysia - Longest Ride on ByeBye Station +551030015 - Malaysia - Longest Ride on ByeBye Station +551030014 - Malaysia - Longest Ride on ByeBye Station +551030013 - Malaysia - Longest Ride on ByeBye Station +551030012 - Malaysia - Longest Ride on ByeBye Station +551030011 - Malaysia - Longest Ride on ByeBye Station +551030010 - Malaysia - Longest Ride on ByeBye Station +551030009 - Malaysia - Longest Ride on ByeBye Station +551030008 - Malaysia - Longest Ride on ByeBye Station +551030007 - Malaysia - Longest Ride on ByeBye Station +551030006 - Malaysia - Longest Ride on ByeBye Station +551030005 - Malaysia - Longest Ride on ByeBye Station +551030004 - Malaysia - Longest Ride on ByeBye Station +551030003 - Malaysia - Longest Ride on ByeBye Station +551030002 - Malaysia - Longest Ride on ByeBye Station + +event + +683000000 - Hidden Street - Sweet Cake Hill Entrance +683000100 - Mini Dungeon - Sweet Cake Hill 1 +683000101 - Mini Dungeon - Sweet Cake Hill 1 +683000102 - Mini Dungeon - Sweet Cake Hill 1 +683000103 - Mini Dungeon - Sweet Cake Hill 1 +683000104 - Mini Dungeon - Sweet Cake Hill 1 +683000105 - Mini Dungeon - Sweet Cake Hill 1 +683000106 - Mini Dungeon - Sweet Cake Hill 1 +683000107 - Mini Dungeon - Sweet Cake Hill 1 +683000108 - Mini Dungeon - Sweet Cake Hill 1 +683000109 - Mini Dungeon - Sweet Cake Hill 1 +683000110 - Mini Dungeon - Sweet Cake Hill 2 +683000111 - Mini Dungeon - Sweet Cake Hill 2 +683000112 - Mini Dungeon - Sweet Cake Hill 2 +683000113 - Mini Dungeon - Sweet Cake Hill 2 +683000114 - Mini Dungeon - Sweet Cake Hill 2 +683000115 - Mini Dungeon - Sweet Cake Hill 2 +683000116 - Mini Dungeon - Sweet Cake Hill 2 +683000117 - Mini Dungeon - Sweet Cake Hill 2 +683000118 - Mini Dungeon - Sweet Cake Hill 2 +683000119 - Mini Dungeon - Sweet Cake Hill 2 +683000120 - Mini Dungeon - Sweet Cake Hill 3 +683000121 - Mini Dungeon - Sweet Cake Hill 3 +683000122 - Mini Dungeon - Sweet Cake Hill 3 +683000123 - Mini Dungeon - Sweet Cake Hill 3 +683000124 - Mini Dungeon - Sweet Cake Hill 3 +683000125 - Mini Dungeon - Sweet Cake Hill 3 +683000126 - Mini Dungeon - Sweet Cake Hill 3 +683000127 - Mini Dungeon - Sweet Cake Hill 3 +683000128 - Mini Dungeon - Sweet Cake Hill 3 +683000129 - Mini Dungeon - Sweet Cake Hill 3 + +Episode1GL + +677000000 - Mini Dungeon - Marbas Strolling Path +677000001 - Mini Dungeon - Marbas Hiding Place +677000002 - Mini Dungeon - Amdusias Strolling Path +677000003 - Mini Dungeon - Amdusias Hiding Place +677000004 - Mini Dungeon - Andras Strolling Path +677000005 - Mini Dungeon - Andras Hiding Place +677000006 - Mini Dungeon - Crocell Strolling Path +677000007 - Mini Dungeon - Crocell Hiding Place +677000008 - Mini Dungeon - Valefor Strolling Path +677000009 - Mini Dungeon - Valefor Hiding Place +677000010 - Mini Dungeon - Fog Forest +677000011 - Mini Dungeon - Astaroth Strolling Place +677000012 - Mini Dungeon - Astaroth Hiding Place + diff --git a/handbook/Mob.txt b/handbook/Mob.txt new file mode 100644 index 0000000000..cd9329b5b6 --- /dev/null +++ b/handbook/Mob.txt @@ -0,0 +1,1597 @@ +100100 - Snail +100101 - Blue Snail +100120 - Tino +100121 - Tiv +100122 - Timu +100123 - Tiru +100124 - Tiguru +1110100 - Green Mushroom +1110101 - Dark Stump +1120100 - Octopus +1130100 - Axe Stump +1140100 - Ghost Stump +120100 - Shroom +1210100 - Pig +1210101 - Ribbon Pig +1210102 - Orange Mushroom +2230131 - Annoyed Zombie Mushroom +1110130 - Dejected Green Mushroom +1140130 - Smirking Ghost Stump +1210103 - Bubbling +130100 - Stump +130101 - Red Snail +2100100 - Desert Rabbit (F) +2100101 - Desert Rabbit (M) +2100102 - Jr. Cactus +9501018 - Stat Change Test +9300383 - Tutorial Muru +2100103 - Cactus +2100104 - Royal Cactus +2100105 - Bellamoa +2100106 - Ear Plug Plead +2100107 - Scarf Plead +210100 - Slime +2110200 - Horny Mushroom +2110300 - Sand Rat +2110301 - Scorpion +2130100 - Dark Axe Stump +2130103 - Jr. Necki +2220000 - Mano +2220100 - Blue Mushroom +2230100 - Evil Eye +2230101 - Zombie Mushroom +2230102 - Wild Boar +2230103 - Trixter +2230104 - Green Trixter +2230105 - Seacle +2230106 - Cico +2230107 - Krappy +2230108 - Pinboom +2230109 - Bubble Fish +2230110 - Wooden Mask +2230111 - Rocky Mask +2230200 - Flower Fish +2300100 - Stirge +3000000 - Sentinel +3000001 - Fairy 1 +3000002 - Fairy 2 +3000003 - Fairy 3 +3000004 - Fairy 4 +3000005 - Brown Teddy +3000006 - Krip +3100101 - Sand Dwarf +3100102 - Kiyo +3110100 - Ligator +3110101 - Pink Teddy +3110102 - Ratz +3110300 - Cube Slime +3110301 - Dark Sand Dwarf +3110302 - Rumo +3110303 - Triple Rumo +3210100 - Fire Boar +3210200 - Jr. Cellion +3210201 - Jr. Lioner +3210202 - Jr. Grupin +3210203 - Panda Teddy +3210204 - Roloduck +3210205 - Black Ratz +3210206 - Helly +3210207 - Tick +3210208 - Retz +3210450 - Scuba Pepe +3210800 - Lupin +3220000 - Stumpy +3220001 - Deo +3230100 - Curse Eye +3230101 - Jr. Wraith +3230102 - Lorang +3230103 - King Bloctopus +3230104 - Mask Fish +3230200 - Star Pixie +3230300 - Jr. Boogie 1 +3230301 - Jr. Boogie 2 +3230302 - Bloctopus +3230303 - Propelly +3230304 - Planey +3230305 - Toy Trojan +3230306 - Chronos +3230307 - Chirppy +3230308 - Tweeter +3230400 - Drumming Bunny +3230405 - Jr. Seal +4090000 - Iron Hook +4110300 - Iron Mutae +4110301 - Reinforced Iron Mutae +4110302 - Mithril mutae +4130100 - Copper Drake +4130101 - Tortie +4130102 - Dark Nependeath +4130103 - Rombot +4130104 - Dark Nependeath +4220000 - Seruf +4220001 - Seruf +4230100 - Cold Eye +4230101 - Zombie Lupin +4230102 - Wraith +4230103 - Iron Hog +4230104 - Clang +4230105 - Nependeath +4230106 - Lunar Pixie +4230107 - Flyeye +4230108 - Jr. Cerebes +4230109 - Block Golem +4230110 - King Block Golem +4230111 - Robo +4230112 - Master Robo +4230113 - Tick-Tock +4230114 - Platoon Chronos +4230115 - Master Chronos +4230116 - Barnard Gray +4230117 - Zeta Gray +4230118 - Ultra Gray +4230119 - Mateon +4230120 - Plateon +4230121 - Mecateon +4230122 - Nependeath +4230123 - Sparker +4230124 - Freezer +4230125 - Skeledog +4230126 - Mummydog +4230200 - Poopa +4230201 - Poison Poopa +4230300 - Moon Bunny +4230400 - Iron Boar +4230500 - Chipmunk +4230501 - Red Porky +4230502 - Black Porky +4230503 - Blue Flower Serpent +4230504 - Red Flower Serpent +4230505 - Jar +4230506 - Ginseng Jar +4230600 - Desert Giant +4240000 - Chief Gray +4250000 - Mossy Snail +4250001 - Tree Rod +5090000 - Shade +5090001 - Master Dummy +5100000 - Jr. Yeti +5100001 - Transforming Jr. Yeti +5100002 - Firebomb +5100003 - Hodori +5100004 - Samiho +5100005 - Hogul +5110300 - Reinforced Mithril Mutae +5110301 - Roid +5110302 - Neo Huroid +5120000 - Luster Pixie +5120001 - Cellion +5120002 - Lioner +5120003 - Grupin +5120100 - MT-09 +5120500 - Grizzly +5120501 - Bellflower Root +5120502 - Sr. Bellflower Root +5120503 - Straw Target Dummy +5120504 - Wooden Target Dummy +5120505 - Reindeer +5120506 - The Book Ghost +5130100 - Drake +5130101 - Stone Golem +5130102 - Dark Stone Golem +5130103 - Croco +5130104 - Hector +5130105 - Dark Jr. Yeti +5130106 - Transforming Dark Jr. Yeti +5130107 - Coolie Zombie +5130108 - Miner Zombie +5140000 - White Fang +5150000 - Mixed Golem +5150001 - Skeleton Soldier +5200000 - Jr. Sentinel +5200001 - Ice Sentinel +5200002 - Fire Sentinel +5220000 - King Clang +5220001 - King Clang +5220002 - Faust +5220003 - Timer +5220004 - Giant Centipede +5250000 - Mossy Mushroom +5250001 - Stone Bug +5250002 - Primitive Boar +5300000 - Leatty +5300001 - Dark Leatty +5300100 - Malady +5400000 - Jr. Pepe +6090000 - Riche +6090001 - Snow Witch +6090002 - Bamboo Warrior +6090003 - Scholar Ghost +6090004 - Rurumo +6110300 - Homun +6110301 - Saitie +6130100 - Red Drake +6130101 - Mushmom +6130102 - Separated Pepe +6130103 - Pepe +6130104 - Boogie +6130200 - Buffy +6130201 - Blin +6130202 - Morphed Blin +6130203 - Panda +6130204 - Mr. Alli +6130207 - Peach Monkey +6130208 - Kru +6130209 - Sage Cat +6220000 - Dyle +6220001 - Zeno +6230100 - Wild Kargo +6230101 - Puco +6230200 - Dark Pepe +6230201 - Separated Dark Pepe +6230300 - Lazy Buffy +6230400 - Soul Teddy +6230401 - Jr. Lucida +6230500 - Master Soul Teddy +6230600 - Ice Drake +6230601 - Dark Drake +6230602 - Officer Skeleton +6300000 - Yeti +6300001 - Transformed Yeti +6300002 - Separated Yeti +6300003 - Punco +6300004 - Pachu +6300005 - Zombie Mushmom +6300100 - Buffoon +6400000 - Dark Yeti +6400001 - Transformed Dark Yeti +6400002 - Separated Dark Yeti +6400003 - Cuzco +6400004 - Opachu +6400005 - ??? ?? +6400100 - Deep Buffoon +7090000 - Security Camera +7110300 - D. Roy +7110301 - Homunculus +7130000 - Lucida +7130001 - Cerebes +7130002 - Beetle +7130003 - Dual Beetle +7130004 - Hankie +7130010 - Death Teddy +7130020 - Goby +7130100 - Tauromacis +7130101 - Taurospear +7130102 - Yeti and Pepe +7130103 - Commander Skeleton +7130104 - Captain +7130200 - Werewolf +7130300 - Master Death Teddy +7130400 - Yellow King Goblin +7130401 - Blue King Goblin +7130402 - Green King Goblin +7130500 - Rash +7130501 - Dark Rash +7130600 - Hobi +7130601 - Green Hobi +7130602 - Thorny Vine +7140000 - Ghost Pirate +7160000 - Dual Ghost Pirate +7220000 - Tae Roon +7220001 - Nine-Tailed Fox +7220002 - King Sage Cat +8090000 - Deet and Roi +8110300 - Homunscullo +8130100 - Jr. Balrog +8140000 - Lycanthrope +8140001 - Harp +8140002 - Blood Harp +8140100 - Dark Yeti and Pepe +8140101 - Black Kentaurus +8140102 - Red Kentaurus +8140103 - Blue Kentaurus +8140110 - Birk +8140111 - Dual Birk +8140200 - Klock +8140300 - Dark Klock +8140500 - Bain +8140555 - Bombing Fish House +8140600 - Bone Fish +8140700 - Blue Dragon Turtle +8140701 - Red Dragon Turtle +8140702 - Rexton +8140703 - Brexton +8141000 - Spirit Viking +8141100 - Gigantic Spirit Viking +8141300 - Squid +8142000 - Phantom Watch +8142100 - Risell Squid +8143000 - Grim Phantom Watch +8150000 - Crimson Balrog +8150100 - Shark +8150101 - Cold Shark +8150200 - Green Cornian +8150201 - Dark Cornian +8150300 - Red Wyvern +8150301 - Blue Wyvern +8150302 - Dark Wyvern +8160000 - Gatekeeper +8170000 - Thanatos +8180000 - Manon +8180001 - Griffey +8190000 - Jr. Newtie +8190001 - Jr. Newtie +8190002 - Nest Golem +8190003 - Skelegon +8190004 - Skelosaurus +8190005 - Nest Golem +8200000 - Eye of Time +8200001 - Memory Monk +8200002 - Memory Monk Trainee +8200003 - Memory Guardian +8200004 - Chief Memory Guardian +8200005 - Qualm Monk +8200006 - Qualm Monk Trainee +8200007 - Qualm Guardian +8200008 - Chief Qualm Guardian +8200009 - Oblivion Monk +8200010 - Oblivion Monk Trainee +8200011 - Oblivion Guardian +8200012 - Chief Oblivion Guardian +8220000 - Eliza +8220001 - Snowman +8220002 - Chimera +8220003 - Leviathan +8220004 - Dodo +8220005 - Lilynouch +8220006 - Lyka +8220007 - Blue Mushmom +8220009 - Snack Bar +8500000 - Time Sphere +8500001 - Papulatus Clock +8500002 - Papulatus +8500003 - High Darkstar +8500004 - Low Darkstar +8510000 - Pianus +8510100 - Bloody Boom +8520000 - Pianus +8800000 - Zakum1 +8800001 - Zakum2 +8800002 - Zakum3 +8800003 - Zakum's Arm 1 +8800004 - Zakum's Arm 2 +8800005 - Zakum's Arm 3 +8800006 - Zakum's Arm 4 +8800007 - Zakum's Arm 5 +8800008 - Zakum's Arm 6 +8800009 - Zakum's Arm 7 +8800010 - Zakum's Arm 8 +8810000 - Horntail's Left Head +8810001 - Horntail's Right Head +8810002 - Horntail's Head A +8810003 - Horntail's Head B +8810004 - Horntail's Head C +8810005 - Horntail's Left Hand +8810006 - Horntail's Right Hand +8810007 - Horntail's Wings +8810008 - Horntail's Legs +8810009 - Horntail's Tails +8810010 - Dead Horntail's Head A +8810011 - Dead Horntail's Head B +8810012 - Dead Horntail's Head C +8810013 - Dead Horntail's Left Hand +8810014 - Dead Horntail's Right Hand +8810015 - Dead Horntail's Wings +8810016 - Dead Horntail's Legs +8810017 - Dead Horntail's Tails +8810018 - Horntail +8810019 - Red Wyvern +8810020 - Blue Wyvern +8810021 - Dark Wyvern +8810022 - Green Cornian +8810023 - Dark Cornian +8810024 - Summon Horntail's Left Head +8810025 - Summon Horntail's Right Head +8810026 - Summon Horntail +8820000 - Pink Bean +8820001 - Pink Bean +8820002 - Ariel +8820003 - Solomon the Wise +8820004 - Rex the Wise +8820005 - Hugin +8820006 - Munin +8820007 - Mini Bean +8820008 - Transparent Mob for summoning baby boss +8820009 - set0 Transparent Mob +8820010 - Pink Bean +8820011 - Pink Bean +8820012 - Pink Bean +8820013 - Pink Bean +8820014 - Pink Bean +8820015 - Solomon the Wise +8820016 - Rex the Wise +8820017 - Hugin +8820018 - Munin +8820019 - Ariel +8820020 - Solomon the Wise +8820021 - Rex the Wise +8820022 - Hugin +8820023 - Munin +8820024 - Solomon the Wise +8820025 - Rex the Wise +8820026 - Hugin +8820027 - Munin +9000001 - Curse Eye 2 +9000002 - Horned Mushroom 2 +9000100 - Fire Boar 2 +9000101 - Lupin 2 +9000200 - Evil Eye 2 +9000201 - Zombie Mushroom 2 +9000300 - Cold Eye 2 +9000301 - Blue Mushroom 2 +9001000 - Dances with Balrog's Clone +9001001 - Grendel the Really Old's Clone +9001002 - Athena Pierce's Clone +9001003 - Dark Lord's Clone +9001004 - Shadow Kyrin +9001005 - OctoPirate +9001006 - OctoPirate +9001007 - Scarecrow for Training +9001008 - Shadow Kyrin's Clone +9001009 - Master of Disguise +9001010 - Black Witch +9001011 - Tiguru of Exam +9100000 - Super Slime +9100001 - Super Jr. Necki +9100002 - Super Stirge +9100003 - Ultra Jr. Necki 1 +9100004 - Ultra Jr. Necki 2 +9100005 - Super Trickster +9100006 - Super Green Trickster +9100007 - Super Ribbon-Pig +9100008 - Super Coke Snail 1 +9100009 - Super Coke Snail 2 +9100010 - Mr. Black Sheep +9100013 - Adin +9200000 - Wild Boar (PC) +9200001 - Fire Boar (PC) +9200002 - Dark Stump (PC) +9200003 - Horned Mushroom (PC) +9200004 - Green Mushroom (PC) +9200005 - Slime (PC) +9200006 - Lupin (PC) +9200007 - Zombie Lupin (PC) +9200008 - Blue Mushroom (PC) +9200009 - Stone Golem (PC) +9200010 - Zombie Mushroom (PC) +9200011 - Evil Eye (PC) +9200012 - Drake (PC) +9200013 - Cold Eye (PC) +9200014 - Wild Kargo (PC) +9200015 - Brown Tanny +9200016 - Drumming Bunny +9200017 - Pink Tanny +9200018 - Jr. Yetti +9200019 - White Fang +9200020 - Yetti & Pepe +9200021 - Separated Yetti +9200022 - Separated Pepe +9300000 - Jr. Necki (PC) +9300001 - Ligator (PC) +9300002 - Curse Eye (PC) +9300003 - King Slime +9300004 - Mimic +9300005 - Ratz from Another Dimension +9300006 - Black Ratz from Another Dimension +9300007 - Bloctopus from Another Dimension +9300008 - Shadow Eye from Another Dimension +9300009 - Block Golem from Another Dimension +9300010 - Rombad from Another Dimension +9300011 - Toy Trojan +9300012 - Alishar +9300013 - King Block Golem from Another Dimension +9300014 - Dark Eye from Another Dimension +9300015 - Cronos +9300016 - Platoon Cronos +9300017 - Master Cronos +9300018 - Tutorial Jr. Sentinel +9300019 - Master Muscle Stone +9300020 - Muscle Stone +9300021 - Dark Muscle Stone +9300022 - Black Knight +9300023 - Myst Knight +9300024 - Puppet Golem +9300025 - Gargoyle +9300026 - Jr. Gargoyle +9300027 - Devil Slime +9300028 - Ergoth +9300029 - Lion Statue A +9300030 - Lion Statue B +9300031 - Knight Statue A +9300032 - Knight Statue B +9300033 - Jr. Gargoyle +9300034 - Mist Knight +9300035 - Jr. Gargoyle +9300036 - Black Knight +9300037 - Mist Knight +9300038 - Ghost Pixie +9300039 - Papa Pixie +9300040 - Cellion in Tower of Goddess +9300041 - Cellion in Tower of Goddess +9300042 - Grupin in Tower of Goddess +9300043 - Lioner in Tower of Goddess +9300044 - Lucida in Tower of Goddess +9300045 - Lunar Pixie in Tower of Goddess +9300046 - Star Pixie in Tower of Goddess +9300047 - Luster Pixie in Tower of Goddess +9300048 - Nependeath in Tower of Goddess +9300049 - Royal Nependeath in Tower of Goddess +9300050 - Flying Boogie +9300051 - Jr. Cellion in Tower of Goddess +9300052 - Jr. Lioner in Tower of Goddess +9300053 - Jr. Grupin in Tower of Goddess +9300054 - Lunar Pixie in Tower of Goddess(Summon Boss) +9300055 - Star Pixie in Tower of Goddess(Summon Boss) +9300056 - Luster Pixie in Tower of Goddess(Summon Boss) +9300057 - Cellion in Tower of Goddess +9300058 - Pig +9300059 - Ribbon Pig +9300060 - Iron Hog +9300061 - Moon Bunny +9300062 - Flyeye +9300063 - Stirge +9300064 - Goblin Fire +9300065 - Green Cornian1 in Cave +9300066 - Green Cornian 2 in Cave +9300067 - Dark Cornian 1 in Cave +9300068 - Dark Cornian 2 in Cave +9300069 - Red Wyvern 1 in Cave +9300070 - Red Wyvern 2 in Cave +9300071 - Blue Wyvern 1 in Cave +9300072 - Blue Wyvern 2 in Cave +9300073 - Dark Wyvern 1 in Cave +9300074 - Dark Wyvern 2 in Cave +9300075 - Skelegon 1 in Cave +9300076 - Skelegon 2 in Cave +9300077 - T-Skelegon in Cave +9300078 - Jr. Newtie in Cave +9300079 - Nest Golem in Cave +9300080 - Kru +9300081 - Flyeye +9300082 - Stirge +9300083 - Goblin Fire +9300084 - Deathly Fear +9300085 - Jr. Balrog in Another World +9300086 - The Elemental Thanatos +9300087 - The Charging Taurospear +9300088 - Dark Lord's Disciple +9300089 - Phoenix +9300090 - Freezer +9300091 - Buff Rocky in the Dark +9300092 - Jr. Balrog in Forgotten Shrine +9300093 - Tylus +9300094 - Crimson Balrog the Kidnapper +9300095 - Lycanthrope the Kidnapper +9300096 - Black Kentaurus +9300097 - Goby in Warped Dimension +9300098 - Bone Fish in Warped Dimension +9300099 - Shark in Warped Dimension +9300100 - The Elemental Thanatos +9300101 - Tamable Hog +9300102 - Watchhog +9300103 - Barnard Gray +9300104 - Zeta Gray +9300105 - Angry Lord Pirate +9300106 - Enraged Lord Pirate +9300107 - Peeking Lord Pirate +9300108 - Lord Pirate's Jar +9300109 - Lord Pirate's Ginseng Jar +9300110 - Lord Pirate's Bellflower +9300111 - Lord Pirate's Ancient Bellflower +9300112 - Lord Pirate's 100yrOld Bellflower +9300113 - Lord Pirate's 100yrOld Ancient Bellflower +9300114 - Lord Pirate's Enraged Mr. Alli +9300115 - Lord Pirate's Enraged Kru +9300116 - Lord Pirate's Enraged Captain +9300117 - Lord Pirate's Devoted Kru +9300118 - Lord Pirate's Devoted Captain +9300119 - Lord Pirate +9300120 - Lord Pirate's Furious Mr. Alli +9300121 - Lord Pirate's Furious Kru +9300122 - Lord Pirate's Furious Captain +9300123 - Lord Pirate's Mr. Alli +9300124 - Lord Pirate's Kru +9300125 - Lord Pirate's Captain +9300126 - Lord Pirate's Enraged Ginseng Jar +9300127 - Brown Teddy +9300128 - Bloctopus +9300129 - Ratz +9300130 - Chronos +9300131 - Toy Trojan +9300132 - Tick-Tock +9300133 - Robo +9300134 - King Bloctopus +9300135 - Master Chronos +9300136 - Rombot +9300137 - Juliet +9300138 - Romeo +9300139 - Frankenroid +9300140 - Angry Frankenroid +9300141 - Homun of Closed Laboratory +9300142 - Homunculu of hidden laboratory +9300143 - Reinforced Iron Mutae +9300144 - Reinforced Mithril Mutae +9300145 - Homun +9300146 - Cyti +9300147 - Homunculus +9300148 - Neo Huroid +9300149 - Roid +9300150 - Neo Huroid +9300151 - Frankenroid +9300152 - Angry Frankenroid +9300153 - Obstacle Mutae +9300154 - Experimental Neo Huroid +9300155 - Pig +9300156 - Black Magician's Disciple +9300157 - Scorpion +9300158 - Kyrin +9300159 - Inferno Kyrin +9300160 - Blue Flower Serpent +9300161 - Red Flower Serpent +9300162 - Willi +9300163 - Sage Cat +9300164 - The Book Ghost +9300165 - Peach Monkey +9300166 - Bomb +9300167 - Degraded Rumo +9300168 - Reinforced Roid +9300169 - Ratz from Another Dimension +9300170 - Black Ratz from Another Dimension +9300171 - Bloctopus from Another Dimension +9300172 - Poisoned Lord Tree +9300173 - Poisoned Stone Bug +9300174 - Poisoned Spright +9300175 - Poison Flower +9300176 - Poison Golem +9300177 - Poison Golem Level 2 +9300178 - Poison Golem Level 3 +9300179 - Spright +9300180 - Poison Golem +9300181 - Charged Poison Golem +9300182 - Super-Charged Poison Golem +9300183 - Deeply Poisoned Stone Bug +9300184 - Mano +9300185 - Stumpy +9300186 - Deo +9300187 - King Slime +9300188 - Giant Centipede +9300189 - Faust +9300190 - King Clang +9300191 - Mushmom +9300192 - Alishar +9300193 - Timer +9300194 - Dyle +9300195 - Papa Pixie +9300196 - Zombie Mushmom +9300197 - Zeno +9300198 - Lord Pirate +9300199 - Nine-Tailed Fox +9300200 - Tae Roon +9300201 - Super-Charged Poison Golem +9300202 - King Sage Cat +9300203 - Jr. Balrog +9300204 - Eliza +9300205 - Frankenroid +9300206 - Chimera +9300207 - Snack Bar +9300208 - Snowman +9300209 - Blue Mushmom +9300210 - Crimson Balrog +9300211 - Manon +9300212 - Griffey +9300213 - Leviathan +9300214 - Papulatus +9300215 - Mu Gong Merits +9300216 - A transparent item for checking elimination +9300217 - Blue Snail +9300218 - Red Snail +9300219 - Stump +9300220 - Axe Stump +9300221 - Cactus +9300222 - Royal Cactus +9300223 - Slime +9300224 - Black Sheep +9300225 - Lupin +9300226 - Zombie Lupin +9300227 - Lorang +9300228 - Clang +9300229 - Orange Mushroom +9300230 - Platoon Chronos +9300231 - Master Chronos +9300232 - Tick +9300233 - Tick-Tock +9300234 - Ligator +9300235 - Croko +9300236 - Luster Pixie +9300237 - Ghost Pixie +9300238 - Zombie Mushroom +9300239 - Zeta +9300240 - Ultra Gray +9300241 - Kru +9300242 - Captain +9300243 - Samiho +9300244 - Grizzly +9300245 - Panda +9300246 - Tree Road +9300247 - Stone Bug +9300248 - Sage Cat +9300249 - Tauromacis +9300250 - Taurospear +9300251 - Lucida +9300252 - Reinforced Iron Mutae +9300253 - Reinforced Mithril Mutae +9300254 - Reinforced Iron Mutae +9300255 - Mithril Mutae +9300256 - Transforming Doll Machine (Before) +9300257 - Transforming Doll Machine (After) +9300258 - Yeti +9300259 - Blue Mushroom +9300260 - Jr. Balrog +9300261 - Black Kentaurus +9300262 - Red Kentaurus +9300263 - Blue Kentaurus +9300264 - Dark Wyvern +9300265 - Blue Wyvern +9300266 - High Darkstar +9300267 - Low Darkstar +9300268 - Tae Roon +9300269 - So Gong +9300270 - Mingu +9300271 - Target Slime +9300272 - Target Orange Mushroom +9300273 - Target Pig +9300274 - Cynical Orange Mushroom +9300275 - Yellow Snail of the Maze +9300276 - Green Snail of the Maze +9300277 - Blue Snail of the Maze +9300278 - Red Snail of the Maze +9300279 - Purple Snail of the Maze +9300280 - Transforming Yellow Snail of the Maze +9300281 - Transforming Green Snail of the Maze +9300282 - Blue Transforming Snail of the Maze +9300283 - Transforming Yellow Snail of the Maze +9300284 - Transforming Yellow Snail of the Maze +9300285 - Puppeteer +9300286 - Dangerous Blue Mushroom +9300287 - Snowman of Competence +9300288 - Crimson Balrog of Competence +9300289 - Snipe of Competence +9300290 - Lilynouch of Competence +9300291 - Advanced Manon +9300292 - Advanced Griffey +9300293 - Advanced Leviathan +9300294 - Advanced Pianus +9300295 - The Dangerous Tree of the Maze +9300296 - The Cool Shade of the Maze +9300297 - Mutae of the Maze +9300298 - Red Ribbon Pig of the Maze +9300299 - Green Ribbon Pig of the Maze +9300300 - Blue Ribbon Pig of the Maze +9300301 - Purple Ribbon Pig of the Maze +9300302 - Pig of the Maze +9300303 - Sky Mushroom of the Maze I +9300304 - Sky Mushroom of the Maze II +9300305 - Sky Mushroom of the Maze III +9300306 - Sky Mushroom of the Maze IV +9300307 - Sky Mushroom of the Maze V +9300308 - Sky Mushroom of the Maze VI +9300309 - Rash of the Maze +9300310 - Sand Rabbit of the Maze +9300315 - Buffy +9300316 - Soul Teddy +9300317 - Lazy Buffy +9300318 - Master Soul Teddy +9300319 - Klock +9300320 - Buffoon +9300321 - Deep Buffoon +9300322 - Ghost Pirate +9300323 - Death Teddy +9300324 - Viking +9300325 - Cat Sleeping Spot +9300328 - Tutorial Tino +9300329 - Wolf's Bomb +9300330 - Rose Thorn +9300331 - Gaga +9300332 - Barnard Gray +9300333 - Ultra Gray +9300334 - Chief Gray +9300335 - Mateon +9300336 - Mecateon +9300337 - Mecateon +9300338 - Rescued Gaga +9300339 - Space Mateon +9300340 - Maple Bday Cake +9300341 - Target Slime +9300342 - Target Orange Mushroom +9300343 - Target Pig +9300344 - Puppeteer +9300345 - Puppeteer +9300346 - Puppeteer +9300347 - Giant Nependeath +9300348 - Giant +9300349 - Gentleman +9300350 - Mu Gong's Shadow +9300351 - Shadow Knight +9300352 - Gentleman +9300353 - Gentleman +9300354 - Wolf Underling +9300355 - Shapeshifter +9300356 - Sma Gingerman +9300357 - Grii Gingerman +9300358 - Grii Gingerman +9300359 - Sma Gingerman +9300360 - Grii Gingerman +9300361 - Grii Gingerman +9300362 - Grii Gingerman +9300363 - Grii Gingerman +9300364 - Sma Gingerman +9300365 - Grii Gingerman +9300366 - Grii Gingerman +9300367 - Witch Bear +9300368 - Witch Bear +9300369 - Witch Bear +9300370 - Witch Bear +9300371 - Witch Bear +9300372 - Witch Bear +9300373 - Witch Bear +9300374 - Witch Bear +9300375 - Witch Bear +9300376 - Witch Bear +9300377 - Witch Bear +9300378 - Giant Nependeath +9300379 - Black Mage Wyvern +9300380 - Black Mage Cornian +9300381 - Black Mage Skelegon +9300382 - ??? +9301000 - Bain +9301001 - Gigantic Viking +9301002 - Viking +9301003 - Dual Ghost Pirate +9301004 - Ghost Pirate +9400000 - Crow +9400001 - Fire Raccoon +9400002 - Cloud Fox +9400003 - Nightghost +9400004 - Big Cloud Fox +9400005 - Red Boogie +9400006 - Blue Boogie +9400007 - Green Boogie +9400008 - Black Boogie +9400009 - Crow +9400010 - Flaming Raccoon +9400011 - Paper Lantern Ghost +9400012 - Water Goblin +9400013 - Dreamy Ghost +9400014 - Black Crow +9400100 - Extra A +9400101 - Extra B +9400102 - Extra C +9400103 - Extra D +9400110 - Leader A +9400111 - Leader B +9400112 - Bodyguard A +9400113 - Bodyguard B +9400114 - Slot Machine +9400120 - Male Boss +9400121 - Female Boss +9400122 - Male Boss +9400200 - Malady +9400201 - Wild Cargo +9400202 - Golden Slime +9400203 - Silver Slime +9400204 - Red Slime +9400205 - Blue Mushmom +9400209 - Miner Zombie (JP) +9400210 - Coolie Zombie (JP) +9400211 - Dark Stone Golem (JP) +9400212 - Stone Golem (JP) +9400213 - Dark Jr. Yeti (JP) +9400214 - Master Chronos (JP) +9400215 - Ultra Gray (JP) +9400216 - Zeta Gray (JP) +9400217 - Flyeye (JP) +9400218 - Tauromacis (JP) +9400238 - Drumming Bunny +9400239 - Sand Rat +9400240 - Roid +9400241 - Pig +9400242 - Ribbon Pig +9400243 - Stone Golem +9400244 - Mixed Golem +9400245 - Zombie Mushroom +9400246 - Horny Mushroom +9400247 - Drumming Bunny +9400248 - Sand Rat +9400249 - Roid +9400300 - The Boss +9400310 - Tic (Easy) +9400311 - Tac (Easy) +9400312 - Toe (Easy) +9400313 - Tic (Medium) +9400314 - Tac (Medium) +9400315 - Toe (Medium) +9400316 - Tic (Hard) +9400317 - Tac (Hard) +9400318 - Toe (Hard) +9400319 - Cross (Easy) +9400320 - Cross (Medium) +9400321 - Cross (Hard) +9400322 - Giant Snowman (Lvl 1) - Easy +9400323 - Giant Snowman (Lvl 2) - Easy +9400324 - Giant Snowman (Lvl 3) - Easy +9400325 - Giant Snowman (Lvl 4) - Easy +9400326 - Giant Snowman (Lvl 5) - Easy +9400327 - Giant Snowman (Lvl 1) - Medium +9400328 - Giant Snowman (Lvl 2) - Medium +9400329 - Giant Snowman (Lvl 3) - Medium +9400330 - Giant Snowman (Lvl 4) - Medium +9400331 - Giant Snowman (Lvl 5) - Medium +9400332 - Giant Snowman (Lvl 1) - Hard +9400333 - Giant Snowman (Lvl 2) - Hard +9400334 - Giant Snowman (Lvl 3) - Hard +9400335 - Giant Snowman (Lvl 4) - Hard +9400336 - Giant Snowman (Lvl 5) - Hard +9400500 - Malady +9400501 - Jr. Wraith +9400502 - Wraith +9400503 - Stirge +9400504 - Coolie Zombie +9400505 - Turkey +9400506 - Candle Monster +9400507 - Cake Monster +9400508 - Mad Turkey +9400509 - Sakura Cellion +9400510 - Green Eggy Popp +9400511 - Yellow Eggy Popp +9400512 - Cake Mob (2nd) +9400513 - Candle Mob (2nd) +9400514 - Geist Balrog Phase 3 +9400515 - Indigo Eye +9400516 - Crystal Boar +9400517 - Magik Fierry A +9400518 - Magik Fierry B +9400519 - G Slime +9400520 - P Slime +9400521 - O Slime +9400522 - B Slime +9400523 - Evil Eye GL +9400524 - Curse Eye GL +9400525 - Cold Eye GL +9400526 - Fierry GL +9400527 - Fire Boar GL +9400528 - Sentinel GL +9400529 - Ice Sentinel GL +9400530 - Zombie Lupin GL +9400531 - Toy Trojan GL +9400532 - King Slime GL +9400533 - Indigo Eye PQ +9400534 - Crystal Boar PQ +9400535 - Magik Fiarry A PQ +9400536 - Geist Balrog Phase 1 +9400537 - Geist Balrog Phase 2 +9400538 - Street Slime +9400539 - Urban Fungus +9400540 - Killa Bee +9400541 - Killa Bee +9400542 - Fire Tusk +9400543 - Electrophant +9400544 - Gryphon +9400545 - Wolf Spider +9400546 - I.AM.ROBOT +9400547 - Boomer +9400548 - Mighty Maple Eater +9400549 - Headless Horseman +9400550 - Boomer +9400551 - Bob +9400552 - Zoo Snail +9400553 - Purple Flying Book +9400554 - Orange Flying Book +9400555 - Blue Flying Book +9400556 - Glutton Ghoul +9400557 - Psycho Jack Box +9400558 - Psycho Jack +9400559 - Sophilia Doll Ground +9400560 - Sophilia Doll +9400561 - Voodoo +9400562 - Hoodoo +9400563 - Nightmare +9400564 - Mirror Ghost +9400565 - Glutton Ghoul +9400566 - Loki Box Ex +9400567 - Loki Box Tr +9400568 - Turkey Commando +9400569 - Big Puff Daddy +9400570 - Anniversary Cake +9400571 - Headless Horseman +9400572 - Geist Balrog +9400573 - Baby typhon +9400574 - Typhon +9400575 - Bigfoot +9400576 - Windraider +9400577 - Firebrand +9400578 - Firebrand +9400579 - Nightshadow +9400580 - Elderwraith +9400581 - Stormbreaker +9400582 - Crimson Guardian +9400583 - Leprechaun +9400584 - Leprechaun +9400585 - Crimson Tree +9400586 - Crimson Tree +9400587 - Phantom Tree +9400588 - Phantom Tree +9400589 - MV +9400590 - Margana +9400591 - Red Nirg +9400592 - Rellik +9400593 - Hsalf +9400594 - Master Guardian +9400595 - Blood Stirge +9400596 - Scarlet Phoenix +9400597 - Azure Ocelot +9400598 - Dark Menhir +9400599 - Black Bird +9400600 - MasteriaPQ Mob Summoner +9400601 - Birthday Candle +9400602 - Strawberry Cake +9400603 - Angry Strawberry Cake +9400604 - Deluxe Candle +9400605 - Chocolate Cake +9400606 - Giant Cake +9400607 - Cake Monster +9400608 - Big Puff Daddy +9400704 - Beef Eater +9400706 - Jr. MV +9400707 - Item Maker +9400708 - Snowman1 +9400709 - Snowman2 +9400710 - Snowman3 +9400711 - Transparent Mob +9400712 - Little Snowman +9400713 - Item Killer +9400714 - Snow Blower +9400715 - Snow Blower +9400716 - Snow Blower +9400717 - Snow Blower +9400718 - Snow Blower +9400719 - Snow Blower +9400720 - Snow Blower +9400721 - Snow Blower +9400722 - Snow Blower +9400723 - Snow Blower +9400724 - Snow Blower +9400739 - MV Minion +9400740 - MV Minion +9400741 - Skel Guard Dog +9400742 - Mummy Guard Dog +9400743 - Angry Guard Dog +9400744 - Crimson Balrog Minion +9400745 - Jr. Balrog Minion +9400746 - Muscle Stone Minion +9400747 - Bain Minion +9400748 - MV +9400749 - Red Eggy Popp +9409000 - Tutorial Leatty +9409001 - Tutorial Drumming Rabbit +9410000 - Stray Dog +9410001 - Stylish Stray Dog +9410002 - Angry Stray Dog +9410003 - Clown Monkey +9410004 - Biker Monkey +9410005 - Red Bubble Tea +9410006 - Yellow Bubble Tea +9410007 - Green Bubble Tea +9410008 - Yeti UFO Catcher +9410009 - Yeti Doll +9410010 - Jr. Pepe UFO Catcher +9410011 - Jr. Pepe Doll +9410012 - UFO Catcher +9410013 - Doll Vending Machine +9410014 - Snack Bar +9410015 - Snack Bar +9410016 - Bubble Fish +9410017 - Krappi +9410018 - Poopa +9410019 - Cico +9410020 - Jr. Seal +9420000 - Toad +9420001 - Frog +9420002 - Python +9420003 - Red Lizard +9420004 - Yellow Lizard +9420005 - White Rooster +9420006 - Book Monster +9420015 - NooNoo +9420500 - Stopnow +9420501 - Freezer +9420502 - Biner +9420503 - Nospeed +9420504 - Tippo Red +9420505 - Tippo Blue +9420506 - Batoo +9420507 - Trucker +9420508 - Octobunny +9420509 - Pac Pinky +9420510 - Slimy +9420511 - Selkie Jr. +9420512 - Mr. Anchor +9420513 - Capt. Latanica +9500000 - Making a wish to full moon +9500001 - Making a wish to the full moon +9500002 - Making a wish to the full moon +9500003 - Making a wish to the full moon +9500004 - Making a wish to the full moon +9500005 - Making a wish to the full moon +9500100 - Slime +9500101 - Pig +9500102 - Orange Mushroom +9500103 - Bubbling +9500104 - Octopus +9500105 - Green Mushroom +9500106 - Horny Mushroom +9500107 - Drumming Bunny +9500108 - Ligator +9500109 - Ratz +9500110 - Star Pixie +9500111 - Jr. Wraith +9500112 - Jr. Pepe +9500113 - Panda Teddy +9500114 - King Blockpus +9500115 - Lorang +9500116 - Zombie Lupin +9500117 - Helly +9500118 - Tweeter +9500119 - Toy Trojan +9500120 - King Block Golem +9500121 - Wraith +9500122 - Chief Gray +9500123 - Mixed Golem +9500124 - Mushmom +9500125 - Red Drake +9500126 - Ice Drake +9500127 - Master Soul Teddy +9500128 - Dark Yeti +9500129 - Taurospear +9500130 - Blue King Goblin +9500131 - Lucida +9500132 - Werewolf +9500133 - Yeti and Pepe +9500134 - Lycanthrope +9500135 - Death Teddy +9500136 - Gigantic Viking +9500137 - G. Phantom Watch +9500138 - Bain +9500139 - Jr. Balrog +9500140 - Crimson Balrog +9500141 - Separated Yeti +9500142 - Separated Pepe +9500143 - Coke Pig +9500144 - Coke Snail +9500145 - Coke Seal +9500146 - Play Seal +9500147 - Yeti and Coketump +9500148 - Igloo Turtle +9500149 - Coke Golem +9500150 - Ice Golem +9500151 - Coke Slime +9500152 - Coke Mushroom +9500153 - Coketump +9500154 - Coketump Lite +9500155 - Three-Tailed Fox +9500156 - Wraith +9500157 - Jr. Wraith +9500158 - Yellow King Goblin +9500159 - Blue King Goblin +9500160 - Green King Goblin +9500161 - Hankie +9500162 - Harp +9500163 - Blood Harp +9500164 - Black Kentaurus +9500165 - Red Kentaurus +9500166 - Blue Kentaurus +9500167 - Golden Pig +9500168 - King Slime +9500169 - Jr. Balrog +9500170 - Papa Pixie +9500171 - Crimson Balrog +9500172 - Alishar +9500173 - Griffey +9500174 - Manon +9500175 - Angry Lord Pirate +9500176 - Blue Mushmom +9500177 - Giant Centipede +9500178 - Snack Bar +9500179 - Transformed Snack Bar +9500180 - Papulatus +9500181 - Papulatus +9500182 - Watermelon Guard Hogol +9500183 - Watermelon Guard Hogol +9500184 - Rideword P +9500185 - Rideword Y +9500186 - Rideword B +9500187 - Busted Doll +9500188 - Destroyed Doll +9500189 - Gift Box +9500190 - Toy Clown +9500191 - Green Phantom +9500192 - Pumpkin Knight +9500193 - Fire Steed +9500194 - Mirror Ghost +9500195 - Jack-o-Lantern +9500196 - Ghost +9500197 - Ghost +9500198 - Gift Box +9500199 - Toy Clown +9500200 - Zoo Balrog +9500201 - Zoo Yeti +9500202 - Zoo White Fang +9500203 - Zoo Pig +9500204 - Zoo Ribbon Pig +9500300 - Busted Doll +9500301 - Destroyed Doll +9500302 - Jack-o-Lantern at Pumpkin Farm +9500303 - Mirror Ghost 2 +9500304 - Mirror Ghost 3 +9500305 - Jack-o-Lantern +9500306 - Mano +9500307 - Stumpy +9500308 - Faust +9500309 - King Clang +9500310 - Timer +9500311 - Dyle +9500312 - Nine-Tailed Fox +9500313 - Tae Roon +9500314 - King Sage Cat +9500315 - Eliza +9500316 - Snow Yeti +9500317 - Kid Snowman +9500318 - Angry Snowman +9500319 - Giant Snowman +9500320 - Lost Rudolph +9500321 - Snowman +9500322 - Kid Snowman +9500323 - Kitty from Cheese Storage +9500324 - Kitty from Cheese Storage +9500325 - King Slime +9500326 - Mushmom +9500327 - Jr. Balrog +9500328 - Crimson Balrog +9500329 - Papa Pixie +9500330 - Alishar +9500331 - Papulatus +9500332 - Pianus +9500333 - Leviathan +9500334 - Lord Pirate +9500335 - Frankenroid +9500336 - P Junior +9500337 - Mano +9500338 - Stumpy +9500339 - Deo +9500340 - King Slime +9500341 - Faust +9500342 - King Clang +9500343 - Alishar +9500344 - Timer +9500345 - Mushmom +9500346 - Dyle +9500347 - Zeno +9500348 - Nine-Tailed Fox +9500349 - Lord Pirate +9500350 - Tae Roon +9500351 - Papa Pixie +9500352 - King Sage Cat +9500353 - Jr. Balrog +9500354 - Frankenroid +9500355 - Eliza +9500356 - Chimera +9500357 - Snow Yeti +9500358 - Crimson Balrog +9500359 - Manon +9500360 - Griffey +9500361 - Leviathan +9500362 - Papulatus +9500363 - Pianus +9500364 - Mini Dungeon Transparent Monster +9500365 - Mini Dungeon Agent Box +9500366 - Barnard Gray +9500367 - Zeta Gray +9500368 - Ultra Gray +9500369 - Chief Gray +9500370 - Mecateon +9500371 - Mateon +9500372 - Plateon +9500373 - Machine MT-09 +9500400 - Gourd +9501000 - Sealed +9501001 - Darkness +9501002 - Weakness +9501003 - Knocked Out +9501004 - Cursed +9501005 - Poisoned +9501006 - Slow +9501007 - Disable Buff +9501008 - Seduce +9501009 - Immune to Weapon +9501010 - Immune to Magic +9501011 - Cancel Element +9501012 - Reduce Element +9501013 - Expand Element +9501014 - Undead +9501015 - Boss +9501016 - Monster Book Test +9501017 - Skull +9600001 - Rooster +9600002 - Duck +9600003 - Sheep +9600004 - Goat +9600005 - Black Goat +9600006 - Cow +9600007 - Plow Ox +9600008 - Black Sheep +9600009 - Giant Centipede +9600010 - Giant Centipede +9600065 - Holiday Super Sock +9600066 - New Year's Party Pouch +9999998 - Star Monster +9999999 - ??? +9400630 - Event Horntail's Left Head +9400631 - Event Horntail's Right Head +9400632 - Event Pink Bean +9420527 - Chlorotrap +9420528 - Emo Slime +9420529 - Dark Fission +9420530 - Oly Oly +9420531 - Scaredy Scarlion +9420532 - Ratatula +9420533 - Rodeo +9420534 - Charmer +9420535 - Jester Scarlion +9420536 - Froscola +9420537 - Yabber Doo +9420538 - Booper Scarlion +9420539 - Vikerola +9420540 - Gallopera +9420541 - Targa +9420542 - Targa +9420543 - Angry Targa +9420544 - Furious Targa +9420545 - Ratatula +9420546 - Scarlion Boss +9420547 - Scarlion Boss +9420548 - Angry Scarlion Boss +9420549 - Furious Scarlion Boss +9420550 - Scaredy Scarlion +6400006 - Crimson Balrog +6400007 - Baby Balrog +6400008 - Jr. Balrog +6400009 - Crimson Balrog +8830000 - Balrog +8830001 - Balrog +8830002 - Balrog +8830003 - Balrog +8830004 - Balrog +8830005 - Balrog +8830006 - Balrog +8830007 - Balrog +8830008 - Balrog +8830009 - Balrog +8830010 - Balrog +8830011 - Balrog +8830012 - Balrog +8830013 - Balrog +9300311 - Bam Bam Cat +9300312 - Pigmy that lays Golden Eggs +9300313 - Witch Cat +9300314 - Witch Cat +9300326 - Unknown Jr. Balrog +9300327 - Balrog Corpse +9302011 - Lupin Pig +9001013 - Thief Crow +9001014 - Uncontrollable Maha +9303000 - Mano +9303001 - Stumpy +9303002 - King Slime +9303003 - Deo +9303004 - Mushmom +9303005 - Tae Roon +9303006 - Rombot +9303007 - Zeno +9303008 - Nine-Tailed Fox +9303009 - King Sage Cat +9303010 - Jr. Balrog +9303011 - Lord Pirate +9303012 - Papa Pixie +9303013 - Crimson Balrog +9303014 - Seruf +9303015 - Eliza +9303016 - Leviathan +9302000 - Golden Pig +9302001 - Golden Pig +9302002 - Golden Pig +9302003 - Golden Pig +9302004 - Golden Pig +9302005 - Golden Pig +9302006 - Golden Pig +9302007 - Golden Pig +9302008 - Golden Pig +9302009 - Golden Pig +9302010 - Golden Pig +100130 - Muru +100131 - Murupa +100132 - Murupia +100133 - Murumuru +100134 - Murukun +9400609 - Andras +9400610 - Amdusias +9400611 - Crocell +9400612 - Marbas +9400613 - Valefor +9400614 - Strange Orange Mushroom +9400615 - Strange Ribbon Pig +9400616 - Strange Green Mushroom +9400617 - Strange Pig +9400618 - Strange Dark Axe Stump +9400619 - Strange Zombie Mushroom +9400620 - Strange Dark Stump +9400621 - Strange Horny Mushroom +9400622 - Strange Blue Mushroom +9400623 - Amdusias +9400633 - Astaroth +9400645 - Totem1 +9400646 - Totem2 +9400647 - A Parasite +9400634 - Frog +9400635 - Cursed Frog +9400636 - Black Cat +9400637 - Cursed Black Cat +9400638 - Rotting Skeleton +9400639 - Dead Scarecrow +9400640 - Twisted Jester +9400641 - Olivia +9400642 - Olivia +9400643 - Olivia +9400644 - Malady +9400648 - Possessed Bear Doll +9400649 - Possessed Rabbit Doll +9400650 - Possessed Bear Doll +9400651 - Possessed Rabbit Doll +9400652 - Possessed Bear Doll +9400653 - Possessed Rabbit Doll +9400654 - Event Pink Bean +9400655 - Strange Orange Mushroom +9400656 - Strange Ribbon Pig +9400657 - Strange Green Mushroom +3300000 - Renegade Spores +3300001 - Poison Mushroom +3300002 - Intoxicated Pig +3300003 - Helmet Pepe +3300004 - Royal Guard Pepe +3300005 - Grey Yeti and King Pepe +3300006 - Gold Yeti and King Pepe +3300007 - White Yeti and King Pepe +3300008 - Prime Minister +9101000 - Green Mushroom +9101001 - Zombie Mushroom +9101002 - Ghost Stump +9700000 - Subway Slime +9700001 - Subway Orange Mushroom +9700002 - Subway Ribbon Pig +9700003 - Subway Horny Mushroom +9700004 - Pyramid Mummydog +9700005 - Pyramid Skeleton +9700006 - Mummy +9700007 - Pharaoh Snake +9700008 - Anubis +9700009 - Pyramid Mummydog +9700010 - Pyramid Skeleton +9700011 - Mummy +9700012 - Pharaoh Snake +9700013 - Anubis +9700014 - Pyramid Mummydog +9700015 - Pyramid Skeleton +9700017 - Pharaoh Snake +9700016 - Mummy +9700018 - Anubis +9700019 - Pharaoh Jr. Yeti +9700020 - Metro Bubbling +9700021 - Pharaoh Yeti +9700022 - Transparent Pharaoh Yeti +9700023 - Transparent Pharaoh Yeti +9700024 - Pyramid Mummydog +9700025 - Pyramid Skeleton +9700026 - Mummy +9700027 - Pharaoh Snake +9700028 - Anubis +9700029 - Pharaoh Jr. Yeti +8220008 - Unknow Snack Bar +9001012 - Scarred Bear +9101003 - ???? +1210111 - Strange Pig +2220110 - Crying Blue Mushroom +2230112 - Terrified Wild Boar +3400000 - Cherry Bubble Tea +3400001 - Mango Bubble Tea +3400002 - Melon Bubble Tea +3400003 - Yeti Doll Claw Game +3400004 - Yeti Doll +3400005 - Jr. Pepe Doll Claw Game +3400006 - Jr. Pepe Doll +3400007 - Transformed Doll Claw Game +3400008 - Transformed Doll Claw Game +4300000 - Blue Perfume +4300001 - Blue Perfume +4300002 - Yellow Perfume +4300003 - Yellow Perfume +4300004 - Pink Perfume +4300005 - Pink Perfume +4300006 - Kid Mannequin +4300007 - Female Mannequin +4300008 - Male Mannequin +4300009 - Latest Hits Compilation +4300010 - Greatest Oldies +4300011 - Cheap Amplifier +4300012 - Fancy Amplifier +4300013 - Spirit of Rock +4300014 - Greatest Oldies +4300015 - Cheap Amplifier +4300016 - Fancy Amplifier +4300017 - Spirit of Rock's Soul +7120100 - Gatekeeper Nex +7120101 - Gatekeeper Nex +7120102 - Gatekeeper Nex +7120103 - Red Slime +7120104 - Silver Slime +7120105 - Gold Slime +7120106 - Overlord A +7120107 - Overlord B +7120108 - Robby +7120109 - Iruvata +7220003 - Bergamot +7220004 - Bergamot +7220005 - Bergamot +8120100 - Gatekeeper Nex +8120101 - Gatekeeper Nex +8120102 - Afterlord +8120103 - Prototype Lord +8120104 - Maverick Type A +8120105 - Maverick Type S +8120106 - Maverick Type D +8120107 - Maverick Type D +8140510 - Gatekeeper Nex +8140511 - Imperial Guard +8140512 - Royal Guard +8220010 - Dunas +8220011 - Aufheben +8220012 - Oberon +8220013 - Nibelung +8220014 - Nibelung +8220015 - Nibelung +9300384 - Red Slime +9300385 - Treacherous Fox +9300386 - Trainee Spore +9300387 - Enraged Golem +9300388 - Free Spirit +9300389 - Safe Guard +9300390 - Door Block +9300391 - Ice Wall +9300392 - Black Wing Henchman +9300393 - Gentleman +9700030 - ?? ??? ?? +9700031 - ?? ??? ?? +9700032 - ?? ?? ?? +9700033 - ?? ?? ?? +9700034 - ?? ?? ?? +9700035 - ?? ??? +9700036 - ?? ?? +9700037 - ??? ?? +9700038 - ??? ??? ?? +2100108 - Meerkat diff --git a/handbook/NPC.txt b/handbook/NPC.txt new file mode 100644 index 0000000000..75d518a315 --- /dev/null +++ b/handbook/NPC.txt @@ -0,0 +1,1733 @@ +10000 - Pio +1001000 - Silver +1001001 - Natasha +1001100 - Mina +1002000 - Phil +1002001 - Teo +1002002 - Pason +1002003 - Mr. Goldstein +1002004 - VIP Cab +1002005 - Mr. Kim +1002006 - Chef +1002100 - Jane +1002101 - Olaf +1002102 - Eels +1002103 - Captain Al +1010100 - Rina +1011000 - Karl +1011001 - Sam +1011100 - Luna +1012000 - Regular Cab +1012001 - Dr. Squint +1012002 - Vicious +1012003 - Chief Stan +1012004 - Doofus +1012005 - Cloy +1012006 - Trainer Bartos +1012007 - Trainer Frod +1012008 - Casey +1012009 - Mr. Lee +1012100 - Athena Pierce +1012101 - Maya +1012102 - Pia +1012103 - Natalie +1012104 - Brittany +1012105 - Ms. Tan +1012106 - Mrs. Ming Ming +1012107 - Utah +1012108 - Camila +1012109 - Jay +1012110 - Anne +1012111 - Bruce +1012112 - Tory +1012113 - Tommy +1012114 - Growlie +1012115 - Henesys Forest +1012116 - Henesys Forest +1012117 - Big Headward +1020000 - Blackbull +1021000 - River +1021001 - Harry +1021100 - Arturo +1022000 - Dances with Balrog +1022001 - Regular Cab +1022002 - Manji +1022003 - Mr. Thunder +1022004 - Mr. Smith +1022005 - Mr. Wang +1022006 - Winston +1022007 - Ayan +1022008 - Burnt Sword +1022100 - Sophia +1022101 - Rooney +1022102 - The Excavator Board +1022103 - Fountain Statue +1031000 - Flora the Fairy +1031001 - Serabi the Fairy +1031100 - Len the Fairy +1032000 - Regular Cab +1032001 - Grendel the Really Old +1032002 - Francois +1032003 - Shane +1032004 - Louis +1032005 - VIP Cab +1032006 - Mr. Park +1032007 - Joel +1032008 - Cherry +1032009 - Purin +1032100 - Arwen the Fairy +1032101 - Rowen the Fairy +1032102 - Mar the Fairy +1032103 - El Moth +1032104 - Betty +1032105 - Estelle +1032106 - Wing the Fairy +1032107 - Reef +1032108 - Reef +1032109 - Corner of the Magic Library +1032110 - Corner of the Magic Library +1032111 - Small Tree Stump +1040000 - Luke +1040001 - Mike +1040002 - Fanzy +1043000 - a pile of flowers +1043001 - a pile of herbs +1051000 - Cutthroat Manny +1051001 - Don Hwang +1051002 - Dr. Faymus +1052000 - Alex +1052001 - Dark Lord +1052002 - JM From tha Streetz +1052003 - Chris +1052004 - Denma the Owner +1052005 - Dr. Feeble +1052006 - Jake +1052007 - The Ticket Gate +1052008 - Treasure Chest +1052009 - Treasure Chest +1052010 - Treasure Chest +1052011 - Exit +1052012 - Mong from Kong +1052013 - Computer +1052014 - Vending Machine +1052015 - Billy +1052016 - Regular Cab +1052017 - Mr. Hong +1052100 - Don Giovanni +1052101 - Andre +1052102 - Shumi +1052103 - Nella +1052104 - Tulcus +1052105 - Jane Doe +1052106 - Icarus +1052107 - Small Street Light +1052108 - Knocked Trash Can +1052109 - Subway Trash Can +1052110 - Subway Trash Can +1052111 - Subway Trash Can +1052112 - Subway Trash Can +1061000 - Chrishrama +1061001 - 24 Hr Mobile Store +1061002 - Mr. Sweatbottom +1061003 - Mr. Wetbottom +1061004 - Ronnie +1061005 - Sabitrama +1061006 - Mysterious Statue +1061007 - Crumbling Statue +1061008 - Mr. Oh +1061009 - Door of Dimension +1061010 - Sparkling Crystal +1061011 - The Rememberer +1061012 - Insignificant Being +1061013 - Gwin +1061014 - Mu Young +1061015 - Tristan's Spirit +1061016 - Suspicious Man +1061017 - Tristan's Spirit +1061018 - Mu Young +1061019 - Ilji +1061100 - Hotel Receptionist +1063000 - a pile of pink flowers +1063001 - a pile of blue flowers +1063002 - a pile of white flowers +1063003 - Wanted : G. Mushroom +1063004 - Wanted : Curse Eye +1063005 - Wanted : Evil Eye +1063006 - Wanted : Cold Eye +1063007 - Wanted : Z. Mushroom +1063008 - Wanted : H. Mushroom +1063009 - Wanted : Jr. Boogie +1063010 - Wanted : Drake +1063011 - Cave Wall of Evil Eye +1063012 - Shaman Rock +1063013 - Shaman Rock +1063014 - Mysterious Piece of Paper +1063015 - Underground Temple Entrance +1063016 - Strange Looking Statue +1063017 - Monstrous Looking Statue +1072000 - Warrior Job Instructor +1072001 - Magician Job Instructor +1072002 - Bowman Job Instructor +1072003 - Thief Job Instructor +1072004 - Warrior Job Instructor +1072005 - Magician Job Instructor +1072006 - Bowman Job Instructor +1072007 - Thief Job Instructor +1072008 - Kyrin +1081000 - Valen +1081001 - Pison +1081100 - Riel +1081101 - Roel +1081102 - Rael +1090000 - Kyrin +1091000 - Morgan +1091001 - Rodos +1091002 - Gali +1091003 - Serryl +1091004 - Dondlass +1092000 - Tangyoon +1092001 - Bonnie +1092002 - Baine +1092003 - Sharyl +1092004 - Calico +1092006 - Black Bark +1092007 - Muirhat +1092008 - Shulynch +1092009 - Mrs. Reade +1092010 - Jack +1092011 - Bartol +1092012 - Rolonay +1092013 - Porchay +1092014 - Nautilus' Mid-Sized Taxi +1092015 - Water Filter +1092016 - Shiny Stone +1092017 - Anonymous Merchant +1092018 - Trash Can +1092019 - Lord Jonathan +1092090 - Mother Milk Cow +1092091 - Mother Milk Cow +1092092 - Mother Milk Cow +1092093 - Baby Milk Cow +1092094 - Baby Milk Cow +1092095 - Baby Milk Cow +1092097 - Mother of Pearl +1093000 - Pupa +1094000 - Bart +1094001 - Abel +1094002 - Bush +1094003 - Bush +1094004 - Bush +1094005 - Bush +1094006 - Bush +1095000 - Shulynch +11000 - Sid +1100000 - Kirium +1100001 - Kiriyu +1100002 - Kiriwing +1100003 - Kiriru +1100004 - Kiru +1100005 - Kiruru +1100006 - Kiru +1100007 - Kiriru +1100008 - Kiru +1101000 - Cygnus +1101001 - Shinsoo +1101002 - Neinheart +1101003 - Mihile +1101004 - Oz +1101005 - Irena +1101006 - Eckhart +1101007 - Hawkeye +1101008 - Mimo +1102000 - Kiku +1102001 - Kiriko +1102002 - Kiridu +1102003 - Kidan +1102004 - Kimu +1102005 - Kizan +1102006 - Kinu +1102007 - Kia +1102008 - Kisha +1102009 - Neinheart +1103000 - Dunamis +1103001 - Roca +1103002 - Matthias +1103003 - Hersha +1103004 - 10 Boogies +1103005 - Neinheart +1104000 - Francis +1104001 - Baroq +1104002 - Eleanor +1104100 - Mihile +1104101 - Oz +1104102 - Irena +1104103 - Eckhart +1104104 - Hawkeye +1104200 - Fallen Knight +1104201 - Cygnus +1104202 - Neinheart +1104203 - Mihile +1104204 - Oz +1104205 - Irena +1104206 - Eckhart +1104207 - Hawkeye +1104208 - Shinsoo +11100 - Lucy +12000 - Lucas +12100 - Mai +12101 - Rain +2000 - Roger +20000 - John +20001 - Bari +20002 - Biggs +2001 - Sen +2001000 - Cliff +2001001 - Branch Snowman +2001002 - Metal Bucket Snowman +2001003 - Straw Hat Snowman +2001004 - Scarf Snowman +2001005 - Rupert +2002 - Peter +2002000 - Rupi +2002001 - Rudi +2002002 - Torr +2003 - Robin +2004 - Todd +2005 - Sam +2006 - Tienk +20100 - Yoona +2010000 - Staff Sergeant Charlie +2010001 - Mino the Owner +2010002 - Franz the Owner +2010003 - Neve +2010004 - Corporal Wilson +2010005 - Shuri +2010006 - Trina +2010007 - Heracle +2010008 - Lea +2010009 - Lenario +2012000 - Agatha +2012001 - Rini +2012002 - Erin +2012003 - Neri the Fairy +2012004 - Nuri the Fairy +2012005 - Edel the Fairy +2012006 - Isa the Station Guide +2012007 - Rinz the Assistant +2012008 - Romi +2012009 - Riza the Assistant +2012010 - Elma the Housekeeper +2012011 - Kriel the Fairy +2012012 - Lisa +2012013 - Sunny +2012014 - Orbis Magic Spot +2012015 - El Nath Magic Spot +2012016 - Aileen +2012017 - Hughes the Fuse +2012018 - Ericsson +2012019 - Moppie +2012020 - Alfonse Green +2012021 - Ramini +2012022 - Pelace +2012023 - Maple Leaf Marble +2012024 - Egnet +2012025 - Geras +2012026 - Elliza +2012027 - Harp String +2012028 - Harp String +2012029 - Harp String +2012030 - Harp String +2012031 - Harp String +2012032 - Harp String +2012033 - Harp String +2013000 - Wonky the Fairy +2013001 - Chamberlain Eak +2013002 - Minerva the Goddess +2020000 - Vogen +2020001 - Scott +2020002 - Gordon +2020003 - Master Sergeant Fox +2020004 - Mr. Mohammed +2020005 - Alcaster +2020006 - Jade +2020007 - Scadur +2020008 - Tylus +2020009 - Robeira +2020010 - Rene +2020011 - Arec +2020012 - Spirit of Snow Statue +2020013 - Pedro +2022000 - Rumi +2022001 - Hana +2022002 - Barun +2022003 - Shammos +2022004 - Tylus +2023000 - Danger Zone Taxi +2030000 - Jeff +2030001 - Sergeant Bravo +2030002 - Corporal Easy +2030003 - Rock Covered in Snow +2030004 - Small Tomb +2030005 - Statue +2030006 - Holy Stone +2030007 - Piece of Statue +2030008 - Adobis +2030009 - Glibber +2030010 - Amon +2030011 - Ali +2030012 - Huckle +2030013 - Adobis +2030014 - Ancient Icy Stone +2032000 - ???? +2032001 - Spiruna +2032002 - Aura +2032003 - Lira +2032004 - Suspicious Lava +2040000 - Mel +2040001 - Delv the Toy Soldier +2040002 - Olson the Toy Soldier +2040003 - Assistant Cheng +2040004 - Roly-Poly 1 +2040005 - Roly-Poly 2 +2040006 - Roly-Poly 3 +2040007 - Roly-Poly 4 +2040008 - Roly-Poly 5 +2040009 - Roly-Poly 6 +2040010 - Roly-Poly 7 +2040011 - Roly-Poly 8 +2040012 - Roly-Poly 9 +2040013 - Roly-Poly 10 +2040014 - Chico +2040015 - Manager Karl +2040016 - Pi +2040017 - Green Mesoranger +2040018 - Black Mesoranger +2040019 - Everton +2040020 - Sarah +2040021 - Tara +2040022 - Rydole +2040023 - Lost Soldier +2040024 - First Eos Rock +2040025 - Second Eos Rock +2040026 - Third Eos Rock +2040027 - Fourth Eos Rock +2040028 - Mark the Toy Soldier +2040029 - Grandpa Clock +2040030 - Wisp +2040031 - Document Roll +2040032 - Weaver +2040033 - Neru +2040034 - Red Sign +2040035 - Arturo +2040036 - Red Balloon +2040037 - Orange Balloon +2040038 - Yellow Balloon +2040039 - Lime Balloon +2040040 - Green Balloon +2040041 - Aqua Balloon +2040042 - Sky-Blue Balloon +2040043 - Blue Balloon +2040044 - Violet Balloon +2040045 - Pink Balloon +2040046 - Robert Holly +2040047 - Sgt. Anderson +2040048 - Nara +2040049 - Gumball Machine +2040050 - Eurek the Alchemist +2040051 - Toly +2040052 - Wiz the Librarian +2041000 - Tian +2041001 - Rosey +2041002 - Hid +2041003 - Miru +2041004 - Marcel +2041005 - Nemi +2041006 - Misky +2041007 - Miyu +2041008 - Seppy +2041009 - Mini +2041010 - Ellie +2041011 - Yellow Mesoranger +2041012 - Pink Mesoranger +2041013 - Gina +2041014 - Patricia +2041015 - Korin +2041016 - Vega +2041017 - Ace of Hearts +2041018 - Hans the Assembler +2041019 - Rocky the Repairman +2041020 - Mac the Mechanic +2041021 - Mr. Bouffon +2041022 - Tigun the Advisor +2041023 - Flo +2041024 - Tombstone +2041025 - Machine Apparatus +2041026 - Ghosthunter Bob +2041027 - Mason the Collector +2041028 - Unknown Thief +2041029 - Karen +2042000 - Spiegelmann +2042001 - Spiegelmann +2042002 - Spiegelmann +2042003 - Assistant Red +2042004 - Assistant Blue +2042005 - Spiegelmann +2042006 - Spiegelmann +2042007 - Spiegelmann +2042008 - Assistant Red +2042009 - Assistant Blue +2043000 - Papulatus +2050000 - Dr. San +2050001 - Dr. Kim +2050002 - Alien Gray +2050003 - Spacen +2050004 - Kubo the Storageman +2050005 - Chury +2050006 - Hoony +2050007 - Gunny +2050008 - General Maestro +2050009 - Jr. Officer Medin +2050010 - Rice the Medic +2050011 - Kevin the Soldier +2050012 - Agent M +2050013 - Porter +2050014 - Meteorite 1 +2050015 - Meteorite 2 +2050016 - Meteorite 3 +2050017 - Meteorite 4 +2050018 - Meteorite 5 +2050019 - Meteorite 6 +2050020 - Dropship +2051000 - Dr. Pepper +2051001 - Kay +2060000 - Nanuke +2060001 - Robinson +2060002 - Tae Gong +2060003 - Melias +2060004 - Oannes +2060005 - Kenta +2060006 - Muse +2060007 - Calypso +2060008 - Gerrard +2060009 - Dolphin +2060100 - Carta +2060101 - Taeng the Explorer +2060102 - Door to the Warped Dimension +2070000 - Mr. Noh +2070001 - Bung's Mama +2070002 - Moki +2070003 - Dori +2071000 - Chumji +2071001 - Hongbu +2071002 - Nolbu +2071003 - Chil Nam +2071004 - Kong Ji +2071005 - Chil Sung +2071006 - Swallow +2071007 - Grandma Yeon +2071008 - Haenim +2071009 - Mr. Shim +2071010 - God of Mountains +2071011 - Tree Cutter +2071012 - A Familiar Lady +2071013 - Yellow King Goblin +2071014 - Blue King Goblin +2071015 - Green King Goblin +2072000 - Chil Sung's Rice Stacks +2072001 - Chil Nam's Rice Stacks +2073000 - Park Chum Ji +2080000 - Mos +2080001 - Sly +2080002 - Max +2080003 - Norman +2080004 - Moodie +2080005 - Koscu +2080006 - Dolphin +2081000 - Chief Tatamo +2081001 - Kumo +2081002 - Ito +2081003 - Yaku +2081004 - Pam +2081005 - Keroben +2081006 - Moira +2081007 - Raul the Knight +2081008 - Nein Spirit's Baby Dragon +2081009 - Moose +2081010 - Moose +2081011 - Nein Spirit's Baby Dragon +2081012 - Nix +2081013 - Frightening Marble +2081014 - Dunamis +2081100 - Harmonia +2081200 - Gritto +2081300 - Legor +2081400 - Hellin +2081500 - Samuel +2082000 - Mue +2082001 - Tommie +2082002 - Harry +2082003 - Corba +2083000 - Encrypted Slate of the Squad +2083001 - Horned Tail's Schedule +2083002 - Crystal of Roots +2083003 - Stump at the Room of Maze +2083004 - Mark of the Squad +2083005 - Fountain of Life +2084000 - Gold Compass +2084001 - Gold Richie +2084002 - Gold Richie +2084003 - Gold Richie +2084004 - Gold Richie +2084005 - Gold Richie +2084006 - Gold Richie +2084007 - Gold Richie +2084008 - Gold Richie +2084009 - OX Bird +2084010 - Gold Key Box +2090000 - Mr. Pan +2090001 - Gong Gong +2090002 - Bidiwon +2090003 - Dalsuk +2090004 - Mr. Do +2090005 - Crane +2090006 - Laya +2090100 - Grandpa Luo +2090101 - Lilishu +2090102 - Naran +2090103 - Pata +2090104 - Noma +2091000 - No Gong +2091001 - Do Gong +2091002 - Tae Sang +2091003 - Tae Soo +2091004 - Master Goblin +2091005 - So Gong +2091006 - Mu Lung Dojo Bulletin Board +2092000 - Mr. Ku +2092001 - Captain Hwang +2093000 - Mu Tan +2093001 - So Won +2093002 - Lan Ming +2093003 - Mr. Gong +2093004 - Dolphin +2094000 - Guon +2094001 - Wu Yang +2094002 - Guon +2095000 - Delli +2096000 - Practice Chart +2100 - Sera +21000 - Pan +2100000 - Ahmad +2100001 - Muhamad +2100002 - Zaid +2100003 - Jasmin +2100004 - SagaT +2100005 - Shati +2100006 - Mazra +2100007 - Lila +2100008 - Vard +2100009 - Aldin +2101 - Heena +2101000 - Sirin +2101001 - Jiyur +2101002 - Eleska +2101003 - Ardin +2101004 - Tigun +2101005 - Byron +2101006 - Le Petit Prince +2101007 - Areda +2101008 - Schegerazade +2101009 - Abdullah VIII +2101010 - Jano +2101011 - Sejan +2101012 - Strange Guy +2101013 - Karcasa +2101014 - Cesar +2101015 - Abdullah VIII +2101016 - Areda +2101017 - Cesar +2101018 - Cesar +2102 - Nina +2102000 - Asesson +2102001 - Slyn +2102002 - Syras +2103 - Maria +2103000 - Palace Oasis +2103001 - Secret wall +2103002 - Queen's cabinet +2103003 - Ariant private house1 +2103004 - Ariant private house2 +2103005 - Ariant private house4 +2103006 - Ariant private house6 +2103007 - Treasure Box +2103008 - Mysterious voice +2103009 - Ariant private house1 Cupboard +2103010 - Ariant private house2 Cupboard +2103011 - Ariant private house4 Cupboard +2103012 - Ariant private house6 Cupboard +2110000 - Rosen +2110001 - Jerry +2110002 - Keol +2110003 - Ramain +2110004 - Moren +2110005 - Camel Cab +2111000 - Carson +2111001 - Maed +2111002 - Dr. De Lang +2111003 - Humanoid A +2111004 - Phyllia +2111005 - Keeny +2111006 - Parwen +2111007 - Han the Broker +2111008 - Bedin +2111009 - Russellon +2111010 - Alcando's Cabinet. +2111011 - Wall +2111012 - Cabinet +2111013 - Picture frame +2111014 - Desk +2111015 - Russellon's Desk +2111016 - Dr. De Lang's Secret book +2111017 - 1st Pipe handle +2111018 - 2nd Pipe handle +2111019 - 3rd Pipe handle +2111020 - 1st Magic Pentagram +2111021 - 2nd Magic Pentagram +2111022 - 3rd Magic Pentagram +2111023 - Center of the Magic Pentagram +2111024 - Secret Passage +2111025 - Control Device +2111026 - Incomplete Magic Square +2112000 - Yulete +2112001 - Yulete +2112002 - Yulete +2112003 - Juliet +2112004 - Romeo +2112005 - Juliet +2112006 - Romeo +2112007 - Investigation Result. +2112008 - Juliet +2112009 - Romeo +2112010 - Yulete +2112011 - Yulete +2112012 - Yulete +2112013 - Investigation Result. +2112014 - Yulete +2112015 - Yulete +2112016 - Hidden Documents +2112017 - Dropped Piece of Paper +2112018 - Romeo & Juliet +2120000 - Masked Gentleman +2120001 - Gatekeeper +2120002 - Steward +2120003 - Maid +2120004 - Jonas +2120005 - Sophelia +2120006 - Lyudmila +2120007 - Joey +2120008 - Ghost T +2120009 - Steward +2120010 - Butler +2121000 - Nameless Cat +2121001 - A grave with a collapsed gravestone +2121002 - Nameless Grave +2121003 - Unvisited Grave +2121004 - Somebody's Grave +2121005 - Piano +2121006 - Someone's Picture Frame 1 +2121007 - Someone's Picture Frame 2 +2121008 - Someone's Picture Frame 3 +2121009 - Someone's Picture Frame 4 +2121010 - Someone's Picture Frame 5 +2121011 - Sophelia's Picture Frame +2121012 - A Girl Dressed In Her Halloween Outfit +2130000 - Mayoren +2131000 - Athena Pierce +2131001 - Perzen +2131002 - Yuris +2131003 - Loha +2131004 - Crawls with Balrog +2131005 - Sion +2131006 - Duru +2131007 - Tess +2132000 - Kanderune +2132001 - Lohd +2132002 - Rius +2132003 - Shadrion +2133000 - Ellin +2133001 - Ellin +2133002 - Ellin Forest Milepost +2133003 - Wooden Desk +2133004 - Sprite +2140000 - Temple Keeper +2140001 - Memory Keeper +2140002 - Sorcerer +2140003 - Record Keeper +2141000 - Kirston +2141001 - Forgotten Temple Keeper +2141002 - Forgotten Temple Keeper +22000 - Shanks +9000000 - Paul +9000001 - Jean +9000002 - Pietro +9000003 - Vikan +9000004 - Vikon +9000005 - Vikone +9000006 - Vikoon +9000007 - Chun Ji +9000008 - Mr. Pickall +9000009 - Vikin +9000010 - Pietra +9000011 - Martin +9000012 - Harry +9000013 - Tony +9000014 - Geanie +9000015 - Tamis +9000016 - Jester +9000017 - Coco +9000018 - Matilda +9000019 - Rock, Paper, Scissor Admin +9000020 - Spinel +9000021 - Gaga +9000032 - Agent W +9000033 - Agent C +9000034 - Agent O +9000035 - Agent P +9000036 - Agent E +9000037 - Agent Meow +9000038 - Agent Kitty +9000039 - Agent W +9000040 - Dalair +9000041 - Donation Box +9000042 - Gaga +9000043 - The Lost Snipe +9000044 - The Lost Snipe +9000045 - The Lost Snipe +9000046 - Cygnus Mentality +9000047 - Fairytale Pinnochio +9000048 - Fairytale Jack +9000049 - Fairytale Crackers +9000050 - Sign Inside Whale +9000051 - Jump Wings +9000052 - Courageous Little Lamb +9000053 - Big Bad Wolf +9000054 - Ranch Owner +9000055 - Aramia +9000056 - Small Gift Box +9000057 - Candy Gift Box +9000058 - Cake Gift Box +9000059 - Gingerbread man +9000060 - Gingerbread man +9000061 - Agent M +9000062 - Agent C +9000063 - Agent E +9000064 - Agent S +9000065 - Agent O +9000066 - Dalair +9000067 - Wolf Awaiting It's Owner +9000068 - Ice Piece +9001000 - Cokebear operator +9001001 - Lolo +9001002 - Polar bear Poch +9001003 - Polar bear Nell +9001004 - Polar bear Hoop +9001005 - Polar bear Poch +9001006 - Polar bear Poch +9001008 - Bohun +9001009 - Shimmy +9001100 - Gaga +9001101 - Master Moon Bunny +9001102 - Baby Moon Bunny +9001103 - Moon Bunny the Salesman +9001104 - Smart Moon Bunny +9001105 - Grandpa Moon Bunny +9001106 - The Lost Grey +9001107 - Guide Moon Bunny +9001108 - Gatekeeper Moon Bunny +9010000 - Maple Administrator +9010001 - Tia +9010002 - Mia +9010003 - Ria +9010004 - Mia +9010005 - Diane +9010006 - Sally +9010007 - Josh +9010008 - Pettite +9010009 - Duey +9010010 - Cassandra +9010011 - Orange Mushroom +9010012 - Star Pixie +9010013 - Hengki +9010014 - Aramia +9010015 - Street Cat +9010016 - Aru +9010017 - Dev Doll +9010018 - Cryssea +9010019 - Mushroomie +9010020 - Witch's Tomb +9020000 - Lakelis +9020001 - Cloto +9020002 - Nella +9030000 - Fredrick +9030100 - Scrooge +9040000 - Shuang +9040001 - Nuris +9040002 - Shawn +9040003 - Sharen III's Soul +9040004 - Honorable Rock +9040005 - Returning Rock +9040006 - Guard Statue +9040007 - Sharen III's Will +9040008 - Guild Rank Board +9040009 - Gatekeeper +9040010 - Tiger Statue +9040011 - Bulletin Board +9040012 - Knight Armor +9050000 - Pigmi the Summoner +9050001 - Pigmi the Summoner +9050002 - Pigmi the Summoner +9050003 - Pigmi the Summoner +9050004 - Pigmi the Summoner +9050005 - Pigmi the Summoner +9050006 - Pigmi the Summoner +9050007 - Pigmi the Summoner +9050008 - Pigmi and Etran +9050009 - Etran's Information Board +9050010 - Pet Pygmy +9060000 - Kenta +9060001 - Kenta +9090000 - Mu Mu +9100000 - Kerning City Manekineko +9100001 - Henesys Manekineko +9100002 - Ellinia Manekineko +9100003 - Perion Manekineko +9100004 - Sleepywood Manekineko +9100100 - Gachapon +9100101 - Gachapon +9100102 - Gachapon +9100103 - Gachapon +9100104 - Gachapon +9100105 - Gachapon +9100106 - Gachapon +9100107 - Gachapon +9100108 - Gachapon +9100109 - Gachapon +9100110 - Gachapon +9100111 - Gachapon +9100112 - EXP Gachapon +9100117 - Gachapon +9100200 - Pachinko 1 +9100201 - Pachinko 2 +9100202 - Pachinko 3 +9100203 - Pachinko 4 +9100204 - Pachinko 5 +9100205 - Pachinko 6 +9101000 - No String +9101001 - Peter +9101002 - Todd +9101003 - Peter +9102000 - Scon +9102001 - Garnox +9102100 - ? +9102101 - ? +9103000 - Pietri +9103001 - Rolly +9103002 - Rolly +9103003 - Rolly +9105002 - Naomi +9105003 - Snow Spirit +9105004 - Snow Spirit +9105005 - Snowman +9110000 - Perry +9110001 - Raimu the Warrior +9110002 - Kino Konoko +9110003 - Janken +9110004 - Taru +9110005 - Bronze +9110006 - Jin Jia +9110007 - Robo +9110008 - Perry +9110009 - Gachapon Charity Box +9110010 - Gachapon Statue +9110011 - Gachapon +9110012 - Gachapon +9110013 - Gachapon +9110014 - Gachapon +9110015 - Mushroom Statue +9110016 - No String. +9110100 - Charity Box +9120000 - Shinta +9120001 - Hanako +9120002 - Doran +9120003 - Hikari +9120004 - Momoyo +9120005 - Umi +9120006 - Skai +9120007 - Furano +9120008 - Tsuri +9120009 - Yuse +9120010 - Faito +9120011 - Sakura +9120012 - Fraidy Cat +9120013 - Boss Kitty +9120014 - Popo +9120015 - Konpei +9120016 - Mariwaka +9120017 - Poni Chai +9120018 - Grako +9120019 - Momoyo +9120020 - Minstein +9120021 - Clamshell +9120022 - Manstein +9120023 - YokoYoko +9120024 - Ueriba +9120100 - Tepei +9120101 - Midori +9120102 - Hikekuro +9120103 - Saeko +9120104 - Naoko +9120200 - Konpei +9120201 - Konpei +9120202 - Konpei +9120203 - Konpei +9200000 - Cody +9200001 - Mad Bunny +9200100 - Dr. Lenu +9200101 - Dr. Rhomes +9200102 - Dr. Bosch +9201000 - Moony +9201001 - Nana(H) +9201002 - High Priest John +9201003 - Mom and Dad +9201004 - Ames the Wise +9201005 - Assistant Nicole +9201006 - Assistant Debbie +9201007 - Assistant Nancy +9201008 - Assistant Bonnie +9201009 - Assistant Jackie +9201010 - Assistant Travis +9201011 - Pelvis Bebop +9201012 - Wayne +9201013 - Victoria +9201014 - Pila Present +9201015 - Julius Styleman +9201016 - Salon Seamus +9201017 - Dr.Roberts +9201018 - Dr. 90212 +9201019 - Intern Shakihands +9201020 - Vivian Boutique +9201021 - Robin The Huntress +9201022 - Thomas Swift +9201023 - Nana(K) +9201024 - Nana(E) +9201025 - Nana(O) +9201026 - Nana(L) +9201027 - Nana(P) +9201028 - Malady +9201029 - Grandma Benson +9201030 - Maple Claws +9201031 - Hannah +9201032 - Mr. Kit Kat +9201033 - Simon +9201034 - Ben +9201035 - Jacob +9201036 - Angelique +9201037 - Gary and Shatima +9201038 - Richard the Sailor +9201039 - Claudia +9201040 - Mr. Spot +9201041 - Bullseye +9201042 - Mr. Sandman +9201043 - Amos the Strong +9201044 - Amos the Strong +9201045 - Amos the Strong +9201046 - Amos the Strong +9201047 - The Glimmer Man +9201048 - Amos the Strong +9201049 - Ames the Wise +9201050 - Icebyrd Slimm +9201051 - John Barricade +9201052 - Professor Foxwit +9201053 - Jack Masque +9201054 - Lita Lawless +9201055 - Elpam Gorlab +9201056 - NLC Taxi +9201057 - Bell +9201058 - Delphi +9201059 - Kyle +9201060 - Miki +9201061 - Bomack +9201062 - J.J. +9201063 - Ari +9201064 - Mani +9201065 - Miranda +9201066 - NLC Maple TV +9201067 - Claw Machine +9201068 - NLC ticket gate +9201069 - V. Isage +9201070 - Nerbit +9201071 - Sunstone Grave +9201072 - Moonstone Grave +9201073 - Tombstone +9201074 - Bob +9201075 - Agent Falcon +9201076 - Ludmilla +9201077 - Jonas Prendergast +9201078 - Sophilia +9201079 - Old Man Tom +9201080 - Edmunds +9201081 - Rob +9201082 - Spindle +9201083 - The Glimmer Man +9201084 - Tombstone +9201085 - Nicholas +9201086 - Andy +9201087 - Kate +9201088 - Barry +9201089 - Alex +9201090 - Jill +9201091 - O-Pongo +9201092 - Mr. Grubber +9201093 - Little Suzy +9201094 - Corine +9201095 - Fiona +9201096 - Jack +9201097 - Joko +9201098 - Lukan +9201099 - Mo +9201100 - Taggrin +9201101 - T-1337 +9201102 - Stirgeman +9201103 - Ridley +9201104 - Sage +9201105 - Sage +9201106 - Adonis +9201107 - Master Warrior +9201108 - Master Bowman +9201109 - Master Mage +9201110 - Master Thief +9201111 - Master Pirate +9201112 - Jack +9201113 - Jack +9201114 - Gate +9201115 - Battle Statue +9201116 - Kopee Relicseeker +9201117 - Toh Relicseeker +9201118 - Hill +9201119 - Silence of the Wolf +9201120 - Ervine +9201121 - Lucci +9201122 - Old Bow +9201123 - Warrior Statue +9201124 - Bowman Statue +9201125 - Magician Statue +9201126 - Thief Statue +9201127 - Pirate Statue +9201128 - Demon's Doorway +9201129 - Demon's Doorway +9201130 - Demon's Doorway +9201131 - Demon's Doorway +9201132 - Demon's Doorway +9201133 - Astaroth's Doorway +9201134 - Aldol +9201135 - Audrey +9201136 - Olivia +9201137 - Joe +9201143 - Steward +9201139 - Olivia's Mirror1 +9201140 - Olivia's Mirror2 +9201141 - Olivia's Mirror3 +9201142 - Witch Malady +9209000 - Abdula +9209001 - Mimi +9209002 - Mr. Oh +9209003 - Lung Tup +9209004 - Lena +9209005 - Tae Gong +9209006 - Hanako +9209007 - Lazy Daisy +9209008 - Lazy Daisy +9209100 - Santa +9209101 - Santa +9220000 - Milla +9220001 - Charles +9220004 - Happy +9220005 - Roodolph +9220006 - Bill +9220016 - Lara +9220018 - Charles +9220019 - Milla +9220020 - Charles +9250000 - Ponlaa +9250001 - Apaporn +9250003 - Kith +9250004 - Jit +9250005 - Pond +9250006 - Nid +9250007 - Dang +9250008 - Parn +9250009 - Noi-nha +9250010 - Pornsak +9250011 - Chut +9250012 - Chai +9250013 - Lung Tup +9250014 - Pooyai Lee +9250016 - Toon +9250022 - Yai Bua +9250023 - Aquarium Maple TV +9250024 - El Nath Maple TV +9250025 - Free Market Maple TV +9250026 - Ludibrium Maple TV +9250027 - Kob +9250028 - Lung Thid +9250029 - Thawee +9250042 - Henesys Maple TV +9250043 - Kerning City Maple TV +9250044 - Elinia Maple TV +9250045 - Perion Maple TV +9250046 - Orbis Maple TV +9250052 - News Stand +9250053 - Christmas Tree +9250054 - Bicho +9270000 - Amoria Maple TV +9270001 - Lith Harbor Maple TV +9270002 - Sleepywood Maple TV +9270003 - Omega Sector Maple TV +9270004 - Korean Folk Town Maple TV +9270005 - Leafre Maple TV +9270006 - Murung Maple TV +9270007 - Bak Cho Maple TV +9270008 - Y Tan Maple TV +9270009 - Yuan Maple TV +9270010 - SeuMunJung Maple TV +9270011 - NightMarket Maple TV +9270012 - Mushroom Shine Maple TV +9270013 - Showa Maple TV +9270014 - Ninja Maple TV +9270015 - Taiwan Water Market Maple TV +9270016 - Golden Temple Maple TV +9270017 - Xinga +9270018 - Kerny +9270019 - Chan +9270020 - Hui Ting +9270021 - Wendy +9270022 - Candy +9270023 - Noel +9270024 - Kelvin +9270025 - Xan +9270026 - Sixx +9270027 - Alwyn +9270028 - Adrian +9270029 - Johnson +9270030 - Ralph the wanderer +9270031 - Dave & Iris +9270032 - Angie +9270033 - Bob +9270034 - Airu +9270035 - Eunice +9270036 - Eric +9270037 - Jimmy +9270038 - Shalon +9270039 - Sureen +9270040 - Singapore Maple TV +9270041 - Irene +9270042 - Mr. Hwang +9270043 - Gachapon +9270047 - Aldol +9270054 - Encik Musa +9270055 - Chiang +9270056 - Riduan +9270057 - Kok Hua +9270058 - Hurliza +9270059 - Nuri +9270060 - Chee Wee +9270061 - Village Chief Malek +9270062 - Lam +9270063 - Mutu +9270064 - Theme Park Owner +9270065 - Ali +9270066 - MY Maple TV +9300000 - Tang San Zang +9300001 - Fa Hai +9300002 - Di Zang Wang +9300003 - Yue Lao +9300004 - Wu Yuan +9300005 - Hong Niang +9300006 - Banquet Master +9300007 - Tian Bing +9300008 - Tian Sha Gu Xing +9300009 - Mi Le +9300010 - Mr. Moneybags +9300011 - Cai Shen +9300012 - Guan Zhong +9300013 - Sima Qian +9300014 - Zhang Liang +9310000 - Hong the Pilot +9310001 - Lady Li +9310002 - Owner Jang +9310003 - Lady Jin +9310004 - Officer Lim +9310005 - Officer Chung +9310006 - Officer Huh +9310007 - Officer Kang +9310008 - Chief Officer Chu +9310009 - Ms. Jo +9310010 - Mr. Yang +9310011 - Owner Yeo +9310012 - Cho the photographer +9310013 - Yang the Pilot +9310014 - TMS +9310015 - TMS +9310016 - TMS +9310017 - TMS +9310018 - TMS +9310019 - TMS +9310021 - TMS +9330000 - ? +9330001 - ?? +9330002 - ??? +9330003 - ??? +9330004 - ??? +9330005 - ??? +9330006 - ??? +9330007 - ?? +9330008 - FAQ ??? npc 1 +9330009 - FAQ ??? npc 2 +9330010 - FAQ ??? npc 3 +9330011 - FAQ ??? npc 4 +9330012 - FAQ npc +9330013 - FAQ ??? npc 5 +9330014 - ?? +9330015 - ?? +9330016 - ??? ?? +9330017 - ??? ?? +9330018 - ??? ?? ?? +9330019 - ?? +9330020 - ???? +9330021 - ?? +9330022 - ?? +9330023 - ??? +9330024 - ??? +9330025 - ??? +9330026 - ?? ?? +9330027 - ?? ??? +9330028 - ???? ???? +9330029 - ?? +9330030 - ?? ??? +9330031 - ???? ??? +9330032 - ???? ???? +9330045 - Kedrick +9330046 - Madrick +9900000 - KIN +9900001 - NimaKIN +9901000 - +9901001 - +9901002 - +9901003 - +9901004 - +9901005 - +9901006 - +9901007 - +9901008 - +9901009 - +9901010 - +9901011 - +9901012 - +9901013 - +9901014 - +9901015 - +9901016 - +9901017 - +9901018 - +9901019 - +9901100 - +9901101 - +9901102 - +9901103 - +9901104 - +9901105 - +9901106 - +9901107 - +9901108 - +9901109 - +9901110 - +9901111 - +9901112 - +9901113 - +9901114 - +9901115 - +9901116 - +9901117 - +9901118 - +9901119 - +9901200 - +9901201 - +9901202 - +9901203 - +9901204 - +9901205 - +9901206 - +9901207 - +9901208 - +9901209 - +9901210 - +9901211 - +9901212 - +9901213 - +9901214 - +9901215 - +9901216 - +9901217 - +9901218 - +9901219 - +9901300 - +9901301 - +9901302 - +9901303 - +9901304 - +9901305 - +9901306 - +9901307 - +9901308 - +9901309 - +9901310 - +9901311 - +9901312 - +9901313 - +9901314 - +9901315 - +9901316 - +9901317 - +9901318 - +9901319 - +9901500 - +9901501 - +9901502 - +9901503 - +9901504 - +9901505 - +9901506 - +9901507 - +9901508 - +9901509 - +9901510 - +9901511 - +9901512 - +9901513 - +9901514 - +9901515 - +9901516 - +9901517 - +9901518 - +9901519 - +9901520 - +9901521 - +9901522 - +9901523 - +9901524 - +9901525 - +9901526 - +9901527 - +9901528 - +9901529 - +9901530 - +9901531 - +9901532 - +9901533 - +9901534 - +9901535 - +9901536 - +9901537 - +9901538 - +9901539 - +9901540 - +9901541 - +9901542 - +9901543 - +9901544 - +9901545 - +9901546 - +9901547 - +9901548 - +9901549 - +9901550 - +9901551 - +9999999 - test +9201138 - Jonas +9201144 - Steward +2007 - Maple Administrator +10200 - Athena Pierce +10201 - Grendel the Really Old +10202 - Dances with Balrog +10203 - Dark Lord +10204 - Kyrin +1002007 - Regular Cab at Lith Harbor +1002104 - Tru +1012118 - Power B. Fore +1012119 - Power B. Fore +1022104 - Power B. Fore +1022105 - Power B. Fore +1032112 - Talking Tree +1032113 - Power B. Fore +1032114 - Power B. Fore +1052113 - Power B. Fore +1052114 - Power B. Fore +1052115 - Mr. Lim +1095001 - Power B. Fore +1095002 - Power B. Fore +1200000 - Pusla +1200001 - Puno +1200002 - Puri Puri +1200003 - Puro +1200004 - Puro +1200005 - Puro +1200006 - Puro +1201000 - Lilin +1201001 - Giant Polearm +1201002 - Maha +1202000 - Tutorial Lilin +1202001 - Puka +1202002 - Puen +1202003 - Puir +1202004 - Purun +1202005 - Putzki +1202006 - Puo +1202007 - Pucci +1202008 - Head Wolf +1202009 - Wolf Guard +1202010 - Pudin +1203000 - Sir Blacksmith +1203001 - Tititi +1204000 - Shadow +1204001 - Francis +1204002 - Francis +1204003 - Francis +1204004 - ??? +1204005 - Tru +1204006 - Francis +1204007 - Tru +1204010 - Dargoth +1204020 - Nameless +1204030 - Storage Bookshelf +1204031 - ??? +1204032 - Athena Pierce +1209000 - Athena Pierce +1209001 - Refugee +1209002 - Refugee +1209003 - 3 Refugees +1209004 - Refugee +1209005 - Refugee +1209006 - Lost Kid +1209007 - Athena Pierce +1300000 - Mushking +1300001 - King Pepe +1300002 - Violetta +1300003 - Secretary of Domestic Affairs +1300004 - Secretary of Magic +1300005 - Head Security Officer +1300006 - Prince Giuseppe +1300007 - Scarrs +1300008 - James +1300009 - Mushroom Soldier +1300010 - Killer Spore Potion +1300011 - Thorn Remover +1300012 - Door to East Castle Tower +1300013 - Blocked Entrance +1300014 - SELF +1301000 - Thorr +2091007 - Mu Gong +2091008 - Jin Jin +2091009 - Entrance of Sealed Shrine +2103013 - Duarte +9000022 - John +9000023 - Athena Pierce +9000024 - Dances with Balrog +9000025 - Grendel the Really Old +9000026 - Dark Lord +9000027 - Kyrin +9000028 - Tae Gong +9000029 - Winky the Fairy +9000030 - Maple Admin the Witness +9000031 - Cassandra +9901600 - +9901601 - +9901602 - +9901603 - +9901604 - +9901605 - +9901606 - +9901607 - +9901608 - +9901609 - +9901610 - +9901611 - +9901612 - +9901613 - +9901614 - +9901615 - +9901616 - +9310083 - Talking Snow Man +1204033 - John's Box +9250051 - Mrs. Claus +9310058 - Santa +1013000 - ?? +1013001 - ??? +1013002 - ???? ?? +1013100 - ?? +1013101 - ?? +1013102 - ?? +1013103 - ??? +1013104 - ?? +1013105 - ?? +1013201 - ??? +1013202 - ?? ??? +1013203 - ??? +1013200 - Baby Pig +9000070 - Full Moon +1022106 - Christopher +1022107 - Perion Warning Post +1052116 - Thompson +1052117 - Blake +1052118 - Lockers +1052119 - Lala +1052120 - Maestro Rho +1052121 - Lana +1052122 - Tina +1052123 - Robby Fray +1052124 - Marshall +1052125 - June +1063018 - Doll Left Behind +1205000 - Afrien +2012034 - Hidden Brick +2030015 - Hidden Rock +2060010 - Dolphin +2060103 - Norrington +2082004 - Andy +2082005 - Brainy Boy +2082006 - Crying Girl +2082007 - Policeman +2082008 - Captain Edmond +2082009 - May +2082010 - Bao +2082011 - Hoya +2082012 - Nalo +2082013 - Ashura +2082014 - Asia +2082015 - Electronic Induction Device +2082016 - Isabella +2082017 - Ken +2083006 - Time Gate +2092100 - Potter +9010022 - Dimensional Mirror +9010021 - Wolf Spirit Ryko +9901700 - +9901701 - +9901702 - +9901703 - +9901704 - +9901705 - +9901706 - +9901707 - +9901708 - +9901709 - +9901710 - +9901711 - +9901712 - +9901713 - +9901714 - +9901715 - +9901716 - +9901717 - +9901718 - +9901719 - +9901720 - +9901721 - +9901722 - +9901723 - +9901724 - +9901725 - +9901726 - +9901727 - +9901728 - +9901729 - +9901730 - +9901731 - +9901732 - +9901733 - +9901734 - +9901735 - +9901736 - +9901737 - +9901738 - +9901739 - +9901740 - +9901741 - +9901742 - +9901743 - +9901744 - +9901745 - +9901746 - +9901747 - +9901748 - +9901749 - +9901800 - +9901801 - +9901802 - +9901803 - +9901804 - +9901805 - +9901806 - +9901807 - +9901808 - +9901809 - +9901810 - +9901811 - +9901812 - +9901813 - +9901814 - +9901815 - +9901816 - +9901817 - +9901818 - +9901819 - +9901820 - +9901821 - +9901822 - +9901823 - +9901824 - +9901825 - +9901826 - +9901827 - +9901828 - +9901829 - +9901830 - +9901831 - +9901832 - +9901833 - +9901834 - +9901835 - +9901836 - +9901837 - +9901838 - +9901839 - +9901840 - +9901841 - +9901842 - +9901843 - +9901844 - +9901845 - +9901846 - +9901847 - +9901848 - +9901849 - +9901900 - +9901901 - +9901902 - +9901903 - +9901904 - +9901905 - +9901906 - +9901907 - +9901908 - +9901909 - +9000069 - Inkwell diff --git a/handbook/Pet.txt b/handbook/Pet.txt new file mode 100644 index 0000000000..ee5e9915a3 --- /dev/null +++ b/handbook/Pet.txt @@ -0,0 +1,57 @@ +5000000 - Brown Kitty - They are quiet and gentle in nature, so they don't go craving for food too often. They don't seem to be too obedient of their owners. +5000001 - Brown Puppy - They are outgoing and active in nature, so they can't sit still for a period of time, which makes them hungry often. They are very obedient of their owners. +5000002 - Pink Bunny - They are well-behaved and quiet, so they don't need to be fed more than the usual amount. They are smart and obedient, but also stubborn. +5000003 - Mini Kargo - They are very very active, so they get hungry pretty often. Very intelligent, they are quite obedient of their owners. +5000004 - Black Kitty - They are quiet and gentle in nature, so they don't go craving for food too often. They don't seem to be too obedient of their owners. +5000005 - White Bunny - They are well-behaved and quiet, so they don't need to be fed more than the usual amount. They are smart and obedient, but also stubborn. +5000006 - Husky - Active, yet calm at times. Can be moderately fed. Very smart in general. +5000007 - Black Pig - Very active and hungry at all times. Need to be fed often. Very friendly in nature, so it's easy to increase the level of closeness with it. +5000008 - Panda - Calm, relaxed, and gentle. A very rare creature. +5000009 - Dino Boy - A very adorable male baby dinosaur that is both active and unpredictable. +5000010 - Dino Girl - A very adorable female baby dinosaur that is both active and unpredictable. +5000011 - Monkey - The always-curious monkey never rests, wanders around. +5000012 - White Tiger - They are very gentle and obedient in nature, easily becoming friendly with the owner, which in turn speeds up the level-up process. +5000013 - Elephant - Very outgoing and mature; doesn't need to be fed all the time. An intelligent pet that easily understands the commands from the master. +5000014 - Rudolph - Every Christmas, Santa Claus rides on the sleigh driven by his trusty sidekick, Rudolph. +5000015 - Dasher - They are smart and obedient by nature, picking up commands faster than other pets, but they also can get hungry in a hurry. +5000017 - Robot - A hyper-active robot that always changes its mind on everything. Very unpredictable, yet easy to please. +5000018 - Husky - Active, yet calm at times. Can be moderately fed. Very smart in general. +5000020 - Mini Yeti - A trustworthy pet that quietly watches everyone's back. Quiet, but smart and gets a lot of things done. +5000021 - Monkey - Very charming who is also very intuitive, but not as obedient as some of the others +5000022 - Turkey - Somewhat active, quiet and not well-behaved in nature. It is not very obedient, but isn't hungry very often. +5000023 - Penguin - Penguins are always energetic and in good spirits. Use the Meso Magnet and Item Pouch on the Penguin to pick up the mesos and items on the ground. +5000024 - Jr. Balrog - A trustworthy pet who is equally quick-witted. Unlike its masculine appearance, it is prone to insecurity and shyness. +5000025 - Golden Pig - This designed Golden Pig will definately bring you a Good Luck! Use the Meso Magnet and Item Pouch to pick up the mesos and items on the ground. +5000028 - Dragon - A special egg that becomes a mythical Baby Dragon upon hatching. +5000029 - Baby Dragon - A Baby Dragon hatched out of the special Dragon Egg. At Level 15, the pet can be evolved into a full-fledged Adult Dragon with the help of Garnox the NPC using the Rock of Evolution. +5000030 - Green Dragon - Mysterious magical powers aligned and sucessfully evolved the Baby Dragon into a Green Dragon! +5000031 - Red Dragon - Mysterious magical powers aligned and sucessfully evolved the Baby Dragon into a Red Dragon! +5000032 - Blue Dragon - Mysterious magical powers aligned and sucessfully evolved the Baby Dragon into a Blue Dragon! +5000033 - Black Dragon - Mysterious magical powers aligned and sucessfully evolved the Baby Dragon into the rare and majestic Black Dragon! +5000034 - Black Bunny - They are well-behaved and quiet, so they don't need to be fed more than the usual amount. They are smart and obedient, but also stubborn. +5000036 - Jr. Reaper - Miniature death incarnate. Makes for a loyal but cheeky sidekick that is prone to talking back. +5000037 - Husky - Active, yet calm at times. Can be moderately fed. Very smart in general. +5000039 - Porcupine - A small, furry creature with very, very sharp spikes. A lovable pet. +5000041 - Snowman - An adorable Snowman that is also very active. May seem a little rude at times, but the more it is loved, the more affable it becomes. +5000044 - Orange tiger - They are very gentle and obedient in nature, easily becoming friendly with the owner, which in turn speeds up the level-up process. +5000045 - Skunk - Calm and quiet by nature, the easy-going, eccentric Skunk has a rather humorous and pompous outlook on life, the finer things are what it enjoys. +5000026 - Sun Wu Kong - Sun Wu Kong ran out of Tang Shan Zhang. He is lazy and moody but can be changed with love. +5000040 - ??? ?? - ??? ??? ??? ??? ???????. ??? ????? ??? ?????, ??? ? ?? ??? ??? ???? ??? ?? ????. \n#c??: ?? ??, ??? ??, ??? ?? ???&?? ??, ?? ??, ???? ??, MP ????# +5000042 - Kino - A happy-go-lucky, orange mushroom that loves shiny stones. +5000043 - ???? - ??? ????, ?? ??? ??? ???????. ??? ?? ? ????, ??? ??? ???? ??? ?? ????. \n#c??: ????, ?????# +5000046 - ?? - ???? ?? ?? ???? ???? ??? ???????. \n#c??:????, ?????# +5000047 - Robo - A special egg that becomes a mythical Robo upon hatching. +5000048 - Baby Robo - A Baby Robo hatched out of the special Capsule. At Level 15, the pet can be evolved into a full-fledged Adult Robo with the help of Garnox the NPC using the Rock of Evolution. +5000049 - Blue Robo - Mysterious magical powers aligned and sucessfully evolved the Baby Robo into a Blue Robo! +5000050 - Red Robo - Mysterious magical powers aligned and sucessfully evolved the Baby Robo into a Red Robo! +5000051 - Green Robo - Mysterious magical powers aligned and sucessfully evolved the Baby Robo into a Green Robo! +5000052 - Gold Robo - Mysterious magical powers aligned and sucessfully evolved the Baby Robo into a Gold Robo! +5000053 - Gorilla Robo - Mysterious magical powers aligned and sucessfully evolved the Baby Robo into the rare and majestic Gorilla Robo! +5000055 - Crys.Rudolph - The star of this year's Holidays. Projects an aura of nobility and gentleness. Only available during the winter Holidays! +5000058 - White Duck - Silly and foolish, but hard working and easy-going by nature, White Duck is easy to please, and enjoys good food and a swim. +5000054 - Snail - A snail that is really hard to figure out. +5000060 - Pink Bean - A short and chubby pet summoned through the Goddess' mirror. It is temperamental.\n#cA pet whose life will never expire.# +5000100 - Kino - A happy-go-lucky, orange mushroom that loves shiny stones.\n#cA pet whose life will never expire.# +5000101 - White Tiger - They are very gentle and obedient in nature, easily becoming friendly with the owner, which in turn speeds up the level-up process.\n#cA pet whose life will never expire.# +5000102 - Mini Yeti - A trustworthy pet that quietly watches everyone's back. Quiet, but smart and gets a lot of things done.\n#cA pet whose life will never expire.# +5000066 - Baby Tiger - Baby Tiger, the big star of 2010. diff --git a/handbook/Setup.txt b/handbook/Setup.txt new file mode 100644 index 0000000000..7deebab82d --- /dev/null +++ b/handbook/Setup.txt @@ -0,0 +1,251 @@ +3010000 - The Relaxer - Catch your breath and relax by sitting on this chair to recover 50 HP every 10 seconds.\n#cCannot be traded or dropped.# +3010001 - Sky-blue Wooden Chair - A specially-made sky-blue wooden chair that's only available in Lith Harbor. Recover 35 HP every 10 seconds. +3010002 - Green Chair - A comfortable, plush green chair, complete with arm-rests. Recovers 50 HP every 10 seconds. +3010003 - Red Chair - A comfortable, plush red chair, complete with arm-rests.. Recovers 50 HP every 10 seconds. +3010004 - The Yellow Relaxer - Catch your breath and relax by sitting on this chair to recover 50 HP every 10 seconds. Perfect for a quick break from training. +3010005 - The Red Relaxer - Catch your breath and relax by sitting on this chair to recover 50 HP every 10 seconds. Perfect for a quick break from training. +3010006 - Yellow Chair - A comfortable, plush yellow chair, complete with arm-rests. Recovers 50 HP every 10 seconds. +3010007 - Pink Seal Cushion - An adorable pink cushion that resembles a seal. Recovers HP 60 every 10 seconds. +3010008 - Blue Seal Cushion - An adorable blue cushion that resembles a seal. Recovers HP 60 every 10 seconds. +3010009 - Red Round Chair - Rumored to be crafted in Amoria, this special chair is also known as the Love Seat. Recover 20 HP and 20 MP every 10 seconds. +3010010 - White Seal Cushion - An adorable white cushion that resembles a seal. Recovers HP 50 every 10 seconds. +3010011 - Amorian Relaxer - A chair crafted by Jacob. Recovers 75 HP every 10 seconds.\n#cCannot be traded or dropped.# +3010012 - Warrior Throne - A powerful chair used often on the battlefield. Recovers 60 HP every 10 seconds.\n#cCannot be traded or dropped.# +3010013 - Beach Chair - A chair straight from the relaxation experts in Florina Beach. Recover 20 HP every 10 seconds. +3010014 - Moon Star Chair - A light, stylish chair that seems to be sent from the heavens. Recover 30 HP and 30 MP every 10 seconds. +3010015 - The Red Relaxer - A chair with magical properties crafted in Ellinia. Restores 35 MP per 10 Seconds while sitting. +3010016 - Grey Seal Cushion - An adorable grey cushion that resembles a seal. Recovers HP 60 every 10 seconds. +3010017 - Gold Seal Cushion - An adorable gold cushion that resembles a seal. Recovers MP 60 every 10 seconds. +3010018 - Palm Tree Beach Chair - A beach chair placed in the shades under the palm tree at Ariant. Sit on it to recover HP 40 and MP 20 every 10 seconds. +3010019 - Kadomatsu - A specially-made chair that's only available in Mushroom Shrine. Recover 60 MP every 10 seconds. +3010025 - Under the Maple Tree... - A white chair commemorating the 4th anniversary of MapleStory. Sit on it to recover HP 35 and MP 10 every 10 seconds. +3011000 - Fishing Chair - The perfect chair for fishing. +3990000 - Red No. 1 - A red #1 to decorate the tree. +3990001 - Red No. 2 - A red #2 to decorate the tree. +3990002 - Red No. 3 - A red #3 to decorate the tree. +3990003 - Red No. 4 - A red #4 to decorate the tree. +3990004 - Red No. 5 - A red #5 to decorate the tree. +3990005 - Red No. 6 - A red #6 to decorate the tree. +3990006 - Red No. 7 - A red #7 to decorate the tree. +3990007 - Red No. 8 - A red #8 to decorate the tree. +3990008 - Red No. 9 - A red #9 to decorate the tree. +3990009 - Red No. 0 - A red #0 to decorate the tree. +3990010 - Green No. 1 - A green #1 to decorate the tree. +3990011 - Green No. 2 - A green #2 to decorate the tree. +3990012 - Green No. 3 - A green #3 to decorate the tree. +3990013 - Green No. 4 - A green #4 to decorate the tree. +3990014 - Green No. 5 - A green #5 to decorate the tree. +3990015 - Green No. 6 - A green #6 to decorate the tree. +3990016 - Green No. 7 - A green #7 to decorate the tree. +3990017 - Green No. 8 - A green #8 to decorate the tree. +3990018 - Green No. 9 - A green #9 to decorate the tree. +3990019 - Green No. 0 - A green #0 to decorate the tree. +3990020 - Red " + " - A red " + " to decorate the tree. +3990021 - Red " - " - A red " - " to decorate the tree. +3990022 - Green " + " - A green " + " to decorate the tree. +3990023 - Green " - " - A green " - " to decorate the tree. +3991000 - Red "A" - A red "A" to decorate the tree. +3991001 - Red "B" - A red "B" to decorate the tree. +3991002 - Red "C" - A red "C" to decorate the tree. +3991003 - Red "D" - A red "D" to decorate the tree. +3991004 - Red "E" - A red "E" to decorate the tree. +3991005 - Red "F" - A red "F" to decorate the tree. +3991006 - Red "G" - A red "G" to decorate the tree. +3991007 - Red "H" - A red "H" to decorate the tree. +3991008 - Red "I" - A red "I" to decorate the tree. +3991009 - Red "J" - A red "J" to decorate the tree. +3991010 - Red "K" - A red "K" to decorate the tree. +3991011 - Red "L" - A red "L" to decorate the tree. +3991012 - Red "M" - A red "M" to decorate the tree. +3991013 - Red "N" - A red "N" to decorate the tree. +3991014 - Red "O" - A red "O" to decorate the tree. +3991015 - Red "P" - A red "P" to decorate the tree. +3991016 - Red "Q" - A red "Q" to decorate the tree. +3991017 - Red "R" - A red "R" to decorate the tree. +3991018 - Red "S" - A red "S" to decorate the tree. +3991019 - Red "T" - A red "T" to decorate the tree. +3991020 - Red "U" - A red "U" to decorate the tree. +3991021 - Red "V" - A red "V" to decorate the tree. +3991022 - Red "W" - A red "W" to decorate the tree. +3991023 - Red "X" - A red "X" to decorate the tree. +3991024 - Red "Y" - A red "Y" to decorate the tree. +3991025 - Red "Z" - A red "Z" to decorate the tree. +3991026 - Green "A" - A green "A" to decorate the tree. +3991027 - Green "B" - A green "B" to decorate the tree. +3991028 - Green "C" - A green "C" to decorate the tree. +3991029 - Green "D" - A green "D" to decorate the tree. +3991030 - Green "E" - A green "E" to decorate the tree. +3991031 - Green "F" - A green "F" to decorate the tree. +3991032 - Green "G" - A green "G" to decorate the tree. +3991033 - Green "H" - A green "H" to decorate the tree. +3991034 - Green "I" - A green "I" to decorate the tree. +3991035 - Green "J" - A green "J" to decorate the tree. +3991036 - Green "K" - A green "K" to decorate the tree. +3991037 - Green "L" - A green "L" to decorate the tree. +3991038 - Green "M" - A green "M" to decorate the tree. +3991039 - Green "N" - A green "N" to decorate the tree. +3991040 - Green "O" - A green "O" to decorate the tree. +3991041 - Green "P" - A green "P" to decorate the tree. +3991042 - Green "Q" - A green "Q" to decorate the tree. +3991043 - Green "R" - A green "R" to decorate the tree. +3991044 - Green "S" - A green "S" to decorate the tree. +3991045 - Green "T" - A green "T" to decorate the tree. +3991046 - Green "U" - A green "U" to decorate the tree. +3991047 - Green "V" - A green "V" to decorate the tree. +3991048 - Green "W" - A green "W" to decorate the tree. +3991049 - Green "X" - A green "X" to decorate the tree. +3991050 - Green "Y" - A green "Y" to decorate the tree. +3991051 - Green "Z" - A green "Z" to decorate the tree. +3992000 - Santa Ornament - A santa ornament for the tree. +3992001 - Rudolph Ornament - A Rudolph ornament for the tree. +3992002 - Mushroom Ornament - A mushroom ornament for the tree. +3992003 - Pig Ornament - A pig ornament for the tree. +3992004 - Slime Ornament - A slime ornament for the tree. +3992005 - Red Gift-Box Ornament - A red gift-box ornament for the tree. +3992006 - Blue Gift-Box Ornament - A blue gift-box ornament for the tree. +3992007 - Yellow Gift-Box Ornament - A yellow gift-box ornament for the tree. +3992008 - Red Star Miniature Bulb - A red star miniature bulb for the tree. +3992009 - Blue Star Miniature Bulb - A blue star miniature bulb for the tree. +3992010 - Green Star Miniature Bulb - A green star miniature bulb for the tree. +3992011 - Pink Star Miniature Bulb - A pink star miniature bulb for the tree. +3992012 - Orange Star Miniature Bulb - An orange star miniature bulb for the tree. +3992013 - Red Miniature Bulb - A red miniature bulb for the tree. +3992014 - Blue Miniature Bulb - A blue miniature bulb for the tree. +3992015 - Yellow Miniature Bulb - A yellow miniature bulb for the tree. +3992016 - Green Miniature Bulb - A green miniature bulb for the tree. +3992017 - Red Ball Ornament - A red ball ornament for the tree. +3992018 - Blue Ball Ornament - A blue ball ornament for the tree. +3992019 - Yellow Ball Ornament - A yellow ball ornament for the tree. +3992020 - Red Sock - A red sock for the tree. +3992021 - The gingerbread man - The gingerbread man for the tree. +3992022 - The gingerbread woman - The gingerbread lady for the tree. +3992023 - Candy Cane - A candy cane for the tree. +3992024 - Circular Tree Ornament - A circular ornament for the tree. +3992025 - King-sized Star - A king-sized star for the tree. +3992026 - Christmas wreath - A christmas wreath for the tree. +3992027 - Red Candle - A red candle for the tree. +3992028 - Blue Candle - A blue candle for the tree. +3992029 - Yellow Candle - A yellow candle for the tree. +3992030 - Red Candy Canes - Red candy canes for the tree. +3992031 - Blue Candy Canes - Blue candy canes for the tree. +3992032 - Yellow Candy Canes - Yellow candy canes for the tree. +3992033 - Red Fruit Leaves - Red fruit leaves for the tree. +3992034 - Yellow Fruit Leaves - Yellow fruit leaves for the tree. +3992035 - Red-Ribboned Giftbox - A red-ribboned giftbox for the tree. +3992036 - Blue-Ribboned Giftbox - A blue-ribboned giftbox for the tree. +3992037 - Yellow-Ribboned Giftbox - A yellow-ribboned giftbox for the tree. +3992038 - Ruldolph Santa Boots - A Rudolph Santa Boots for the tree. +3992039 - Marker of Heroism - A small figurine embedded with a gem that emanates heroism. This item allows you to activate and use the Heroic Statues in the Valley of Heroes. +3992040 - Map of Phantom Forest - This map marks the hidden paths of Phantom Forest, which are now open to you. +3992041 - Crimsonwood Keystone - A magical stone that unlocks the gates to the Inner Sanctum of Crimsonwood Keep. +3993000 - Lucky Dish - A pair of luck dish out of bamboos. Common in Korean culture +3993001 - Luck Sack - A red luck sack common in Korean culture. +3993002 - Bamboo Luck Sack - A pair of luck sack made of bamboo. +3993003 - Red Luck Sack - A red luck sack with 'luck' written on it. +3994000 - Alphabet Soup Pasta "A" - An alphabet "A" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994001 - Alphabet Soup Pasta "E" - An alphabet "E" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994002 - Alphabet Soup Pasta "I" - An alphabet "I" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994003 - Alphabet Soup Pasta "L" - An alphabet "L" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994004 - Alphabet Soup Pasta "N" - An alphabet "N" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994005 - Alphabet Soup Pasta "O" - An alphabet "O" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994006 - Alphabet Soup Pasta "P" - An alphabet "P" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994007 - Alphabet Soup Pasta "R" - An alphabet "R" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994008 - Alphabet Soup Pasta "T" - An alphabet "T" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994009 - Alphabet Soup Pasta "X" - An alphabet "X" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994010 - Alphabet Soup Pasta "Y" - An alphabet "Y" made out of pasta. Gather up other alphabets, and bring them all to the Maple Administrator. +3994011 - Alphabet Soup Pasta "Z" - An alphabet "Z" made out of pasta. Gather up other alphabets, and bring them all to the GM to... +3994012 - Special "M" - A special alphabet "M". Gather up other alphabets, and bring them all to the Maple Administrator. +3994013 - Special "S" - A special alphabet "S". Gather up other alphabets, and bring them all to the Maple Administrator. +3994014 - Special "W" - A special alphabet "W". Gather up other alphabets, and bring them all to the GM to... +3994015 - Wooden Alphabet C - (no description) +3994016 - Wooden Alphabet H - (no description) +3994017 - Alphabet A - An alphabet A. Collect other alphabets and hand them to Maple Administrator to... +3994018 - Alphabet E - An alphabet E. Collect other alphabets and hand them to Maple Administrator to... +3994019 - Alphabet H - An alphabet H. Collect other alphabets and hand them to Maple Administrator to... +3994020 - Alphabet N - An alphabet N. Collect other alphabets and hand them to Maple Administrator to... +3994021 - Alphabet P - An alphabet P. Collect other alphabets and hand them to Maple Administrator to... +3994022 - Alphabet R - An alphabet R. Collect other alphabets and hand them to Maple Administrator to... +3994023 - Alphabet W - An alphabet W. Collect other alphabets and hand them to Maple Administrator to... +3994024 - Alphabet Y - An alphabet Y. Collect other alphabets and hand them to Maple Administrator to... +3994085 - Admin's Candle - A small candle from the Admin. This candle will turn itself off when the game is ended. +3994086 - Birthday Cake Candle - A candle used on the birthday cake for the 4th anniversary of Maplestory. The flame will be blown out when the player exits the game and lit again upon returning to the game. +3995000 - . - (no description) +3010040 - The Stirge Seat - A chair hand-crafted by Stirgeman for aspiring superheroes! Recovers 50 HP and 50 MP every 10 seconds. +3010041 - Skull Throne - A chair crafted within the Phantom Forest, complete with...ornaments...from unlucky travelers. Recovers 50 HP and 50 MP every 10 seconds. +3010045 - Ice Chair - A chair made out of Ice Queen's ice pieces. Sit on it to recover HP 40 and MP 30 per 10 seconds. +3994090 - Spices - Mr. Oh sells these rare spices at the Maple 7th Day Market. You can sell them to Abdula for a profit. +3994091 - Memorabilia from Thailand - You can find these memorabilia from Thailand at the Maple 7th Day Market. You can sell them to Abdula for a profit. +3994092 - Unagi - Lena sells delicious unagi at the Maple 7th Day Market. You can sell it to Abdula for a profit. +3994093 - Taxidermy Shark - This taxydermy shark, handmade by Tae Gong himself, can be found at the Maple 7th Day Market. You can sell it to Abdula for a profit. +3994094 - Crow-feather Hat - Hanako sells this exquisite at the Maple 7th Day Market. You can sell it to Abdula for a profit. +3012005 - Amorian Loveseat - A comfortable, stylish seat that only forms when true love exists between two people. Recovers 45 HP, 45 MP every 10 seconds. +3994089 - Agent W's Memory Chip - A memory chip Agent W left with me. Information regarding 'Master M' is said to be contained in it. If I don't enter the secret code every hour, it will self-destruct. +3994096 - ??1 - ??1??. +3994097 - ??2 - ??2??. +3994098 - ??3 - ??3??. +3994099 - ??4 - ??4??. +3994100 - ??5 - ??5??. +3010046 - Dragon Chair(Inferno) - Inferno will comfort your body. Recovers 60 HP every 10 seconds. +3010047 - Dragon Chair(Abyss) - Abyss will comfort your mind. Recovers 60 MP every 10 seconds. +3010072 - Miwok Chief's Chair - The chair in which the chiefs of the Miwok tribe sat. If you sit in this chair, you can receive the strength of the Miwok ancestors and recover 65MP in 10 seconds. +3994141 - Cassandra's Candle - A small candle given by Cassandra. This candle will turn off automatically when the game ends. +3010058 - WorldEnd - You will recover 50 HP every 10 seconds. Perhaps, as you recline, you will find the answer to many of life's questions. +3010057 - BloodyRose - You will recover 50 HP every 10 seconds. You will experience the might of a conqueror after recovery. +3010060 - Noblesse Chair - A chair makes you feel like you're sitting in the lap of luxury. Also recovers 50 HP every 10 seconds. +3010061 - Underneath the Maple Tree - A white chair created to celebrate Maple Story's 6th Anniversary. Sit on it to restore 35 HP and 10 MP every 10 seconds. +3010062 - Bamboo Chair - A chair that restores HP every 10 seconds when used. It's very strong since it was made from bamboo grown on Rien. +3010063 - Moon and Star Cushion - A pretty cushion shaped like a moon. Recovers 60 HP every 10 seconds. +3010064 - Male Desert Rabbit Cushion - 60 HP is restored every 10 seconds if you lean back on this cute Male Desert Rabbit Cushion. +3010065 - Pink Beach Parasol - A pink beach chair that makes you want to go to the beach. Restores 60 HP every 10 seconds. +3010066 - Navy Velvet Sofa - A luxurious velvet sofa dyed with a beautiful shade of navy. Restores 60 HP every 10 seconds. +3010067 - Red Designer Chair - A designer chair that glows with a passionate red. Restores 60 HP every 10 seconds. +3994101 - Cassandra's Giant Star - A Giant Star that Cassandra made for you. If you hold it during the Starlight Festival, you can receive 1 Star Stamp every hour. \n#cDisappears when you log out of the game. +3994102 - Letter N for Compass - A Letter N that looks like it would fit perfectly on the Empty Compass. +3994103 - Letter E for Compass - A Letter E that looks like it would fit perfectly on the Empty Compass. +3994104 - Letter W for Compass - A Letter W that looks like it would fit perfectly on the Empty Compass. +3994105 - Letter S for Compass - A Letter S that looks like it would fit perfectly on the Empty Compass. +3994106 - 6th Anniversary Maple Leaf of Journey - A Maple Leaf that signifies Maple Story's 6 year journey. Something good will happen if you hold onto it for 1 hour. +3994115 - Easy Mode - Easy Mode +3994116 - Normal Mode - Normal Mode +3994117 - Hard Mode - Hard Mode +3994118 - Hell Mode - Hell Mode +3994120 - Unknown - An unknown being that has yet to be explained. +3994121 - Agent M - An Agent. +3994122 - Agent C - An Agent. +3994123 - Agent E - An Agent. +3994124 - Agent S - An Agent. +3994125 - Agent O - An Agent. +3010043 - Halloween Broomstick Chair - When you sit on the Halloween Broomstick Chair, 50 MP is restored every 10 seconds +3010071 - Mini Shinsoo Chair - When you rest on the Shinsoo, 50 HP and 50 MP are restored every 10 seconds +3010085 - Olivia's Chair - An eerie looking chair that resembles Olivia. Recovers 40 HP and 35 MP every 10 seconds +3010098 - TV Recliner - A new chair to recline and relax in throughout the Thanksgiving holiday.\nRecovers 60 HP and 30 MP every 10 seconds. +3010116 - The Spirit of Rock Chair - A new chair that makes you feel like a Rock Star.\nRecovers 60 HP and 30 MP every 10 seconds. +3994126 - Aran Memory Fragments - The Arans are reviving. +3994127 - Aran Memory Fragments - The Arans are reviving. +3994128 - Aran Memory Fragments - The Arans are reviving. +3994129 - Aran Memory Fragments - The Arans are reviving. +3994130 - Aran Memory Fragments - The Arans are reviving. +3994131 - Aran Memory Fragments - The Arans are reviving. +3994132 - Aran Memory Fragments - The Arans are reviving. +3994133 - Aran Memory Fragments - The Arans are reviving. +3994134 - Aran Memory Fragments - The Arans are reviving. +3994135 - Aran Memory Fragments - The Arans are reviving. +3994136 - Aran Memory Fragments - The Arans are reviving. +3994137 - Aran Memory Fragments - The Arans are reviving. +3994138 - Ice Crystal - A solid ice crystal that contains Maha Charm. Hold onto it for one hour and the crystal will melt, enabling you to acquire the Charm. +3994139 - Maha Charm - A charm that contains protection from Maha, the spirit of Polearm. Take this to Cassandra for a chance to answer questions and receive prizes. +3010101 - Christmas Gift Box - A huge X-mas Gift Box big enough to fit a grownup. It has a message that reads, "I am here for you." Sitting in it will recover 50 HP and MP every 10 seconds. +3010073 - Giant Pink Bean Cushion - A cushion that resembles Pink Bean, the underling of the Black Mage. Leaning against the cushion and resting will recover 50 HP and 30 MP every 10 seconds. +3010099 - Cuddly Polar Bear - Cuddling with the Polar Bear for some cozy, comfy rest will recover 50 HP and 50 MP every 10 seconds. +3010044 - Winter Red Chair - A chair with a big umbrella. Recovers 30 HP and 30 MP every 10 seconds. +3010106 - Ryko Chair - Snuggle up with Aran's loyal mount, Ryko, to recover 50 HP and MP every 10 seconds. +3010111 - Tiger Skin Chair - Lean back on this imposing Tiger Skin Chair to restore 50 HP and 30 MP every 10 seconds. +3010080 - Swing on the Persimmon Tree - There is a swing on the Persimmon Tree with ripe persimmons. +3010081 - ??? ?? ?? - ??? ??? ?? ??? ? ??? ??? ??? ? ? ??. +3010082 - ??? ?? ?? - ??? ??? ?? ??? ? ??? ??? ??? ? ? ??. +3010083 - ??? ?? ?? - ??? ??? ??? ?? ???? ?? ??? ??? ? ? ??. +3010084 - ??? ?? ?? - ??? ??? ??? ?? ?? ???? ??? ? ? ??. +3010092 - Witch's Broomstick - Hold onto the Broomstick so you don't fall off. +3012010 - Half-Heart Chocolate Cake Chair - Sink yourself into this heavenly cake chair next to someone else who owns it as well, and watch it create a scrumptious effect! Mmm, this chair is so delicious you'll recover 50 HP every 10 seconds. +3012011 - Chocolate Fondue Chair - Yummy! Use this chair next to someone else who's also using it, and a mouth-watering chocolate fondue appears. Smack your lips and dream about treats as you recover 50 HP every 10 seconds. +3010069 - Yellow Robot Chair - Perch yourself on the hand of this powerful yellow robot to recover 50 HP and 30 MP every 10 seconds. diff --git a/handbook/Skill.txt b/handbook/Skill.txt new file mode 100644 index 0000000000..18ad04b301 --- /dev/null +++ b/handbook/Skill.txt @@ -0,0 +1,541 @@ +0000008 - Follow the Lead - Allows one to lead up to 3 pets at once. (Passive skill) +0001000 - Three Snails - [Master Level : 3]\nHurls snail shells to attack monsters from long distance. +0001001 - Recovery - [Master Level : 3]\nEnables the user to recover HP constantly for 30 sec. \n#cTerms between skills : 10 min.# +0001003 - Legendary Spirit - [Master Level : 1]\nUses the spirit of a legend to use a scroll on an item that cannot be normally equipped by the character. +0001004 - Monster Rider - [Master Level : 1]\nEnables one to ride on a tamed monster and use it as a method of transportation. +0001002 - Nimble Feet - [Master Level : 3]\nEnables the character to move around quickly for a short amount of time. \n#cTerms between skills : 1 min.# +0001013 - Spaceship - [Master Level : 2]\nYou board a spaceship. While aboard, you can increase your movement and jump abilities by pressing the right/left direction key twice. #Available until: 06-08-2009 at 00 hour# +0001014 - Space Dash - [Master Level : 1]\nIncrease your movement and jump abilities by pressing the right/left direction key twice. #cAvailable until 06-08-2009 at 00 hour# +0001015 - Space Beam - [Master Level : 1]\nChanges the condition of the Krypto found at the Space Mine. #cAvailable until: 06-08-2009 at 00 hour# +1000000 - Improved HP Recovery - [Master Level : 16]\nRecover additional HP every 10 sec. while standing still. +1000001 - Improved MaxHP Increase - Master Level : 10] This skill boosts up the amount of increase on MaxHP after each Level UP, or AP used on MaxHP.\nRequired Skill : #cAt least Level 5 on Improving HP Recovery.# +1000002 - Endure - [Master Level : 8]\nEven when hanging on the rope or on a ladder, you'll be able to recover some HP after a certain amount of time.\nRequired Skill : #cAt least Level 3 on Improving MaxHP Increase.# +1001003 - Iron Body - [Master Level : 20]\nTemporarily increases your weapon defense.\nRequired Skill : #cAt least Level 3 on Endure# +1001004 - Power Strike - [Master Level : 20]\nUse MP to deliver a killer blow to the monsters with a sword. +1001005 - Slash Blast - [Master Level : 20]\nUse HP and MP to attack every enemy around you with a sword.\nRequired Skill : #cAt least Level 1 on Power Strike# +2000000 - Improved MP Recovery - [Master Level : 16]\nRecovering even more MP every 10 sec. The higher the level of the character and the skill level, the more recovery it enables the character to have. +2000001 - Improved MaxMP Increase - Master Level : 10] This skill boosts up the amount of increase on MaxMP after each Level UP, or AP used on MaxMP.\nRequired Skill : #cAt least Level 5 on Improving MP Recovery# +2001002 - Magic Guard - [Master Level : 20]\nTemporarily replaces damage with MP instead of HP. If MP reaches 0, the HP takes a full hit. +2001003 - Magic Armor - [Master Level : 20]\nTemporarily boosts the weapon def. of the armor by blowing magic into it.\nRequired Skill : #cAt least Level 3 on Magic Guard# +2001004 - Energy Bolt - [Master Level : 20]\nUse MP to attack one enemy. +2001005 - Magic Claw - [Master Level : 20]\nUse MP to attack an enemy twice.\nRequired Skill : #cAt least Level 1 on Energy Bolt# +3000000 - The Blessing of Amazon - [Master Level : 16]\nIncreases accuracy. +3000001 - Critical Shot - [Master Level : 20]\nLaunches a critical attack with a given success rate. +3000002 - The Eye of Amazon - [Master Level : 8]\nIncreases the range of attack for bows and crossbows.\nRequired Skill : #cAt least Level 3 on The Blessing of Amazon# +3001003 - Focus - [Master Level : 20]\nFocusing to temporarily increase accuracy and avoidability.\nRequired Skill : #cAt least Level 3 on The Blessing of Amazon# +3001004 - Arrow Blow - [Master Level : 20]\nFires an arrow with authority. Applies more damage than usual. +3001005 - Double Shot - [Master Level : 20]\nFires two arrows at once to attack an enemy twice.\nRequired Skill : #cAt least Level 1 on Arrow Blow# +4000000 - Nimble Body - [Master Level : 20]\nIncreases accuracy and avoidability. +4000001 - Keen Eyes - [Master Level : 8]\nIncreases the range of attack using throwing weapons such as throwing stars & knives.\nRequired Skill : #cAt least Level 3 on Nimble Body# +4001002 - Disorder - [Master Level : 20]\nTemporarily decreases the weapon def. and attacking abilities of the affected, even stunting the ongoing attacks. Can't use this skill on a monster that's already in "disorder." +4001003 - Dark Sight - [Master Level : 20]\nUse MP to hide behind the shadows. Can't be attacked, and can't attack either.\nRequired Skill : #cAt least Level 3 on Disorder# +4001334 - Double Stab - [Master Level : 20]\nUse MP to quickly stab a monster twice in one turn using a dagger. +4001344 - Lucky Seven - [Master Level : 20]\nUse MP to throw 2 throwing stars and apply damage based on LUK, regardless of the rate of Claw Mastery. +1100000 - Sword Mastery - [Master Level : 20]\nIncreases the sword mastery and accuracy. It only applies when either a one-handed or a two-handed sword is in hand. +1100001 - Axe Mastery - [Master Level : 20]\nIncreases the axe mastery and accuracy. It only applies when either a one-handed or a two-handed axe is in hand. +1100002 - Final Attack : Sword - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a one-hand or two-hand sword.\nRequired Skill : #cAt least Level 3 on Sword Mastery# +1100003 - Final Attack : Axe - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a one-hand or two-hand axe.\nRequired Skill : #cAt least Level 3 on Axe Mastery# +1101004 - Sword Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the equipped sword. It only applies when either a one-handed or a two-handed sword is in hand.\nRequired Skill : #cAt least Level 5 on Sword Mastery# +1101005 - Axe Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the equipped axe. It only applies when either a one-handed or a two-handed axe is in hand.\nRequired Skill : #cAt least Level 5 on Axe Mastery# +1101006 - Rage - [Master Level : 20]\nTemporarily boosts the weapon attack level of everyone in the party around the area, but also decreases the level of weapon attack defense. +1101007 - Power Guard - [Master Level : 30]\nReturns a portion of the damage received from the enemy. Can't return more than 10% of the enemy's Max HP at once, however.\nRequired Skill : #cAt least Level 3 on Rage# +1200000 - Sword Mastery - [Master Level : 20]\nIncreases the sword mastery and accuracy. It only applies when either a one-handed or a two-handed sword is in hand. +1200001 - BW Mastery - [Master Level : 20]\nIncreases the mastery of blunt weapons and accuracy. It only applies when either a one-handed or a two-handed blunt weapon is in hand. +1200002 - Final Attack : Sword - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a one-hand or two-hand sword.\nRequired Skill : #cAt least Level 3 on Sword Mastery# +1200003 - Final Attack : BW - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a one-hand or two-hand blunt weapon.\nRequired Skill : #cAt least Level 3 on BW Mastery# +1201004 - Sword Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the equipped sword. It only applies when either a one-handed or a two-handed sword is in hand.\nRequired Skill : #cAt least Level 5 on Sword Mastery# +1201005 - BW Booster - [Master Level: 20]\nUses HP and MP to temporarily boost up the attacking speed of the equipped blunt weapon. It only applies when either a one-handed or a two-handed blunt weapon is in hand.\nRequired Skill : #cAt least Level 5 on Mace Mastery# +1201006 - Threaten - [Master Level : 20]\nUse MP to temporarily threaten a monster. Decreases the level of weapon attack and weapon defense of every monster around the area. +1201007 - Power Guard - [Master Level : 30]\nReturns a portion of the damage received from the enemy. Can't return more than 10% of the enemy's Max HP at once, however.\nRequired Skill : #cAt least Level 3 on Threaten# +1300000 - Spear Mastery - [Master Level : 20]\nIncreases the spear mastery and accuracy. It only applies when a spear is in hand. +1300001 - Pole Arm Mastery - [Master Level : 20]\nIncreases the mastery of pole arms and accuracy. It only applies when a pole arm is in hand. +1300002 - Final Attack : Spear - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a one-hand or two-hand spear.\nRequired Skill : #cAt least Level 3 on Spear Mastery# +1300003 - Final Attack : Pole Arm - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a one-hand or two-hand pole arm.\nRequired Skill : #cAt least Level 3 on Pole Arm Mastery# +1301004 - Spear Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the equipped spear. It only applies when a spear is in hand.\nRequired Skill : #cAt least Level 5 on Spear Mastery# +1301005 - Pole Arm Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the equipped pole arm. It only applies when a pole arm is in hand.\nRequired Skill : #cAt least Level 5 on Pole Arm Mastery# +1301006 - Iron Will - [Master Level : 20]\nTemporarily increases the level of weapon and magic defense on every member of the party around the area. +1301007 - Hyper Body - [Master Level : 30]\nTemporarily increases the Max HP and Max MP of all members of the party around the area.\nRequired Skill : #cAt least Level 3 on Iron Will# +2100000 - MP Eater - [Master Level : 20]\nAbsorbs the enemy's MP when attacking with Magic skills, until it reaches 0. +2101001 - Meditation - [Master Level : 20]\nMeditate for a bit to temporarily boost up the magic attack of party members around the area.\nRequired Skill : #cAt least Level 3 on MP Eater# +2101002 - Teleport - [Master Level : 20]\nUse the arrow keys to teleport to other places in the same map on a set distance. +2101003 - Slow - [Master Level : 20]\nTemporarily slows down the movement of up to 6 monsters. Cannot be used on the same monsters more than twice in a row.\nRequired Skill : #cAt least Level 5 on Teleport# +2101004 - Fire Arrow - [Master Level : 30]\nAttacks a single monster with a fire arrow using the magic power. Applies 1.5 times the damage to the ice-based enemies, whereas fire-based enemies receive half the damage, if that. +2101005 - Poison Breath - [Master Level : 30]\nAttacks a single monster by splashing a Poison drop. With a given success rate, the monster gets temporarily poisoned. +2200000 - MP Eater - [Master Level : 20]\nAbsorbs the enemy's MP when attacking with Magic skills, until it reaches 0. +2201001 - Meditation - [Master Level : 20]\nMeditate for a bit to temporarily boost up the magic attack of party members around the area.\nRequired Skill : #cAt least Level 3 on MP Eater# +2201002 - Teleport - [Master Level : 20]\nUse the arrow keys to teleport to other places in the same map on a set distance. +2201003 - Slow - [Master Level : 20]\nTemporarily slows down the movement of up to 6 monsters. Cannot be used on the same monsters more than twice in a row.\nRequired Skill : #cAt least Level 5 on Teleport# +2201004 - Cold Beam - [Master Level : 30]\nAttacks a single monster with a sharp piece of Ice. The monster will freeze if hit. Damages the fire-based enemies 1.5 times more, where as the ice-based enemies get only half the damage. +2201005 - Thunder Bolt - [Master Level : 30]\nAttacks surrounding monsters with a thunder bolt. All monsters in the range receive damage. +2300000 - MP Eater - [Master Level : 20]\nAbsorbs the enemy's MP when attacking with Magic skills, until it reaches 0. +2301001 - Teleport - [Master Level : 20]\nUse the arrow keys to teleport to other places in the same map on a set distance. +2301002 - Heal - [Master Level : 30]\nRecovers the HP of all party members around the area. The amount of healing depends on the number of people being healed, and the undead monster in the vicinity of this will receive damage. +2301003 - Invincible - [Master Level : 20]\nTemporarily decreases the weapon damage received. It has no effect, however, on the magic attack.\nRequired Skill : #cAt least Level 5 on Heal# +2301004 - Bless - [Master Level : 20]\nTemporarily increases the weapon def., magic def., accuracy, and avoidability of all party members around the area. This cannot be combined with a skill or a potion.\nRequired Skill : #cAt least Level 5 on Invincible# +2301005 - Holy Arrow - [Master Level : 30]\nAttacks a single monster by firing Holy Arrows. Very effective against the undead's or devil-based monsters. +3100000 - Bow Mastery - [Master Level : 20]\nIncreases the bow mastery and accuracy. It only applies when a bow is in hand. +3100001 - Final Attack : Bow - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a bow.\nRequired Skill : #cAt least Level 3 on Bow Mastery# +3101002 - Bow Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the bow. It only works with a bow in hand.\nRequired Skill : #cAt least Level 5 on Bow Mastery# +3101003 - Power Knock-Back - [Master Level : 20]\nIncreases the success rate for pushing off the monsters when swinging a bow. As the level rises, the number of monsters that one can push off with one swing increases. +3101004 - Soul Arrow : Bow - [Master Level : 20]\nTemporarily allows the character to fire bow arrows without using up the arrows. Only works with a bow in hand.\nRequired Skill : #cAt least Level 5 on Bow Booster# +3101005 - Arrow Bomb : Bow - [Master Level : 30]\nFires arrows with bombs attached to it. If struck cleanly, the bomb explodes on the enemy, knocking out some of the enemies around with a certain success rate. Can't attack more than 6 at once, and it only works with a bow in hand. +3200000 - Crossbow Mastery - [Master Level : 20]\nIncreases the crossbow mastery and accuracy. It only applies when a crossbow is in hand. +3200001 - Final Attack : Crossbow - [Master Level : 30]\nStrikes an another, far deadlier blow following the initial attack with a given success rate. It works only when holding a crossbow.\nRequired Skill : #cAt least Level 3 on Crossbow Mastery# +3201002 - Crossbow Booster - [Master Level : 20]\nUses HP and MP to temporarily boost up the attacking speed of the crossbow. It only works with a crossbow in hand.\nRequired Skill : #cAt least Level 5 on Crossbow Mastery# +3201003 - Power Knock-Back - [Master Level : 20]\nIncreases the success rate for pushing off the monsters when swinging a crossbow. As the level rises, the number of monsters that one can push off with one swing increases. +3201004 - Soul Arrow : Crossbow - [Master Level : 20]\nTemporarily allows the character to fire crossbow arrows without using up the arrows. Only works with a crossbow in hand.\nRequired Skill : #cAt least Level 5 on Bow Booster# +3201005 - Iron Arrow : Crossbow - [Master Level : 30]\nAttacks up to 6 monsters at once with a powerful arrow, which penetrates through them. Damage decreases as the arrow flies through. +4100000 - Claw Mastery - [Master Level : 20]\nIncreases the mastery of throwing stars and accuracy, along with the maximum number of throwing stars to recharge. It only applies when the character is throwing stars. +4100001 - Critical Throw - [Master Level : 30]\nEnables the character to make a critical attack with throwing stars on a certain success rate.\nRequired Skill : #cAt least Level 3 on Claw Mastery# +4100002 - Endure - [Master Level : 20]\nRecovers additional amount of HP and MP. +4101003 - Claw Booster - [Master Level : 20]\nUse HP and MP to temporarily boost up the attacking speed of the claw. It only applies when the character is equipped with a claw throwing stars.\nRequired Skill : #cAt least Level 5 on Claw Mastery# +4101004 - Haste - [Master Level : 20]\nTemporarily improves the speed and jumping ability of every member of the party. +4101005 - Drain - [Master Level : 30]\nAbsorb some of the damage dished out to the enemy as HP. The most one can absorb at once is the character's MaxHP / 2, and can't absorb more than the MaxHP of the enemy.\nRequired Skill : #cAt least Level 3 on Endure# +4200000 - Dagger Mastery - [Master Level: 20]\nIncreases the dagger mastery and accuracy. It only applies when the character has a dagger in hand. +4200001 - Endure - [Master Level : 20]\nRecovers additional amount of HP and MP. +4201002 - Dagger Booster - [Master Level : 20]\nUse HP and MP to temporarily boost up the attacking speed of the dagger. Only applies when the character has a dagger in hand. \nRequired Skill : #cAt least Level 5 on Dagger Mastery# +4201003 - Haste - [Master Level : 20]\nTemporarily boosts the speed and jumping ability of everyone in the party. +4201004 - Steal - [Master Level : 30]\nSteals one of the monster's items with a given success rate. It works only once against the same monster. The effort can be continued till its success.\nRequired Skill : #cAt least Level 5 on Haste# +4201005 - Savage Blow - [Master Level : 30]\nUse MP to attack an enemy up to 6 times in a row with a dagger. +1110000 - Improving MP Recovery - [Master Level : 20]\nRecovers MP at a faster rate than the norm every 10 seconds by standing still. +1110001 - Shield Mastery - [Master Level : 20]\nIncreases shield defense. However, it does not affect if the character does not equip the shield. +1111002 - Combo Attack - [Master Level : 30]\nPrepares for combo attack. Combo counter can be used to strike a deadly blow to the monster. Max. for combo counter is 5 and midpoint is 3. +1111003 - Panic : Sword - [Master Level : 30]\n Attack a single monster using dark powers. This skill can only be used when equipped with a sword and the combo all charged up.\nRequired Skill : #cAt least Level 1 on Combo Attack# +1111004 - Panic : Axe - [Master Level : 30]\n Attack a single monster using dark powers. This skill can only be used when equipped with an axe and the combo all charged up.\nRequired Skill : #cAt least Level 1 on Combo Attack# +1111005 - Coma: Sword - [Master Level : 30]\n If struck cleanly, the monster becomes panicked. This skill can only be used when equipped with a sword and the combo all charged up.\nRequired Skill : #cAt least Level 1 on Combo Attack# +1111006 - Coma: Axe - [Master Level : 30]\n If struck cleanly, the monster becomes panicked. This skill can only be used when equipped with an axe and the combo all charged up.\nRequired Skill : #cAt least Level 1 on Combo Attack# +1111007 - Armor Crash - [Master Level : 20]\n Nullifies the defense buff used by the monster with a given success rate.\nRequired Skill : #cAt least Level 3 on Shout# +1111008 - Shout - [Master Level : 30]\nTemporarily stuns up to 6 monsters nearby with damage. +1210000 - Improving MP Recovery - [Master Level : 20]\nRecovering even more MP every 10 sec. +1210001 - Shield Mastery - [Master Level : 20]\nShield Defense increases. However, it does not affect if the character does not equip the shield. +1211002 - Charged Blow - [Master Level : 30]\n Make the enemy stun. You can use this skill only when your combo is charged up. +1211003 - Fire Charge: Sword - [Master Level: 30]\n Temporarily adds an element of fire into the sword. It gets cancelled when the charge blow is used or it simply expires. +1211004 - Flame Charge: BW - [Master Level: 30]\n Temporarily adds an element of fire into the blunt weapon. It gets cancelled when the charge blow is used or it simply expires. +1211005 - Ice Charge: Sword - [Master Level: 30]\n You can attack with ice power. The skill get canceled if you use Charge Blow or if the time runs out. +1211006 - Blizzard Charge: BW - [Master Level: 30]\n Temporarily adds an element of blizzard into the blunt weapon. It gets cancelled when the charge blow is used or it simply expires. +1211007 - Thunder Charge: Sword - [Master Level: 30]\n Temporarily adds an element of thunder into the sword. It gets cancelled when the charge blow is used or it simply expires. +1211008 - Lightning Charge: BW - [Master Level: 30]\n Temporarily adds an element of lightning into the blunt weapon. It gets cancelled when the charge blow is used or it simply expires. +1211009 - Magic Crash - [Master Level : 20]\n Nullifies the magic defense buff used by the monster with a given success rate.\nRequired Skill : #cAt least Level 3 on Charged Blow# +1310000 - Elemental Resistance - [Master Level : 20]\n Gains resistance against all Magic attacks (Fire, Cold, Lightning & Poison.) +1311001 - Spear Crusher - [Master Level : 30]\nAttacks multiple monsters several times by thrusting the spear. +1311002 - Pole Arm Crusher - [Master Level : 30]\nAttacks multiple monsters several times by thrusting the pole arm. +1311003 - Dragon Fury: Spear - [Master Level : 30]\n Attacks up to 6 monsters nearby in relatively distant range by swinging the Spear. +1311004 - Dragon Fury: Pole Arm - [Master Level : 30]\n Attacks up to 6 monsters nearby in relatively distant range by swinging the pole arm. +1311005 - Sacrifice - [Master Level: 30]\n Attacks a single monster while disabling the monster's defending capacity. However, some damage will be done to the attacker him/herself. +1311006 - Dragon Roar - [Master Level : 30]\n Attacks up to 15 monsters at once by temporarily stunning them. It works only when more than 50% of HP is left.\nRequired Skill : #cAt least Level 3 on Sacrifice# +1311007 - Power Crash - [Master Level : 20]\n Nullifies "power-up" skills of multiple monsters with a given success rate.\nRequired Skill : #cAt least Level 3 on Dragon Blood# +1311008 - Dragon Blood - [Master Level : 20]\nIncreases the attacking capacity, but decreases HP steadily until 4 seconds before the remaining HP exhausts. +2110000 - Partial Resistance - [Master Level : 20]\n Gains resistance against Magic attacks of Fire and Poison. +2110001 - Element Amplification - [Master Level : 30]\n Boosts the capacity for all Magic attacks by using additional MP. +2111002 - Explosion - [Master Level : 30]\nAttacks up to 6 surrounding monsters by creating an explosion around the character, using fire-based attacks. +2111003 - Poison Mist - [Master Level : 30]\n Makes a poison fog around the character. Deceases HP of all monsters in the range. +2111004 - Seal - [Master Level : 20]\nTemporarily seals up all surrounding monsters. Once sealed, monsters can't use skills. Does not work against boss-level monsters.\nRequired Skill : #cAt least Level 3 on Element Amplification# +2111005 - Spell Booster - [Master Level : 20]\nUses up a significant amount of HP and MP to increase the attacking speed for spells.\nRequired Skill : #cAt least Level 3 on Element Amplification# +2111006 - Element Composition - [Master Level : 30]\nAttacks a single monster by splashing a Poison drop. With a given success rate, the monster gets temporarily poisoned. +2210000 - Partial Resistance - [Master Level : 20]\n Gains resistance against Magic attacks of Ice and Lightning. +2210001 - Element Amplification - [Master Level : 30]\n Boosts the capacity for all Magic attacks by using additional MP. +2211002 - Ice Strike - [Master Level : 30]\nFires ice blocks at multiple enemies. If struck, all monsters other than ice-based ones will freeze. Cannot attack more than 6 at once. +2211003 - Thunder Spear - [Master Level : 30]\nGathers up the power of lightening and turns it into a spear, attacking a single enemy. Monsters will be damaged with a lightening-based attack. +2211004 - Seal - [Master Level : 20]\nSeals up the enemies around you for a certain amount of time. Once sealed up, the monsters can't use attacking skills, but the skill does not work on boss monsters.\nRequired Skill : #cAt least Level 3 on Element Amplification# +2211005 - Spell Booster - [Master Level : 20]\nUses up a significant amount of HP and MP to increase the attacking speed for spells. +2211006 - Element Composition - [Master Level : 30]\nAttacks a single monster with Magic attack of Ice and Lightning features combined. Very effective to the monsters vulnerable to ice and lightning, and if struck, the monster will freeze. +2310000 - Elemental Resistance - [Master Level : 20]\nGains a higher tolerance for all element-based spell attacks from the enemy. +2311001 - Dispel - [Master Level : 20]\nNullifies all monsters' Magic effects within the targeted area while healing all abnormal conditions suffered by all surrounding party members. +2311002 - Mystic Door - [Master Level : 20]\nCreates a portal that heads to the nearest town. All members of the party can use it multiple times until the portal disappears. Press? to move.\nRequired Skill : #cAt least Level 3 on Dispell# +2311003 - Holy Symbol - [Master Level : 30]\nTemporarily allows all members of the party nearby to gain additional EXP while hunting. It becomes fully effective only when there are more than 2 members of the party around.\nRequired Skill : #cAt least Level 3 on Dispell# +2311004 - Shining Ray - [Master Level : 30]\nAttacks multiple enemies at once with the ray of holy light. Applies massive damage to the undead + devil-based monsters. +2311005 - Doom - [Master Level : 30]\nTurns up to 6 monsters into snails. Changes the look, the attacking capacity, and the speed of movement. Cannot be used against boss-level monsters. +2311006 - Summon Dragon - [Master Level : 30]\nSummons a holy dragon for a certain amount of time. The dragon will stay beside you and attack the enemies in the process. The higher the skill level, the stronger the summoned dragon is. +3110000 - Thrust - [Master Level : 20]\nBoosts up the moving speed. +3110001 - Mortal Blow - [Master Level : 20]\nEnables to shoot monsters within a very close range with a given success rate. Even kills a monster with a single shot every once in a while. +3111002 - Puppet - [Master Level : 20]\nTemporarily summons a puppet, which takes all the attacks from the monsters instead. +3111003 - Inferno - [Master Level : 30]\nUses fire-based arrows to attack up to 6 monsters at once. Only works when equipped with a bow. +3111004 - Arrow Rain - [Master Level : 30]\nFires a number of arrows into the sky, attacking upto 6 monsters at once on its way down. Only available when equipped with a bow.\nRequired Skill : #cAt least Level 5 on Mortal Blow# +3111005 - Silver Hawk - [Master Level : 30]\nSummons a silver hawk. The hawk will be hovering around you, attacking monsters nearby.\nRequired Skill : #cAt least Level 5 on Puppet# +3111006 - Strafe - [Master Level : 30]\nFires 4 arrows at an enemy. +3210000 - Thrust - [Master Level : 20]\nBoosts up the moving speed. +3210001 - Mortal Blow - [Master Level : 20]\nFor a certain rate, allows you to fire crossbow arrows even at a very close range. Even kills a monster with one shot every once in a while. +3211002 - Puppet - [Master Level : 20]\nSummons a puppet (your other self) for a certain amount of time. While the puppet is around, the monsters will attack the puppet, not you. +3211003 - Blizzard - [Master Level : 30]\nUses ice-based arrows to attack up to 6 monsters at once. Only works when equipped with a bow. +3211004 - Arrow Eruption - [Master Level : 30]\nAttacks up to 6 monsters simultaneously by shooting multiple arrows. Only works with a crossbow equipped. +3211005 - Golden Eagle - [Master Level : 30]\nSummons a golden eagle. The eagle will be hovering around you, attacking monsters nearby.\nRequired Skill : #cAt least Level 5 on Puppet# +3211006 - Strafe - [Master Level : 30]\nFires 4 arrows at an enemy. +4110000 - Alchemist - [Master Level : 20]\nIncreases the effect of the recovery-based items like potions and others, and lengthen time for the effect, if the item is based on such. However, items such as Elixir and others that base the recovery in % do not apply in this skill. +4111001 - Meso Up - [Master Level : 20]\nFor a certain amount of time, everyone in the party can make the enemies drop more mesos than usual with this skill. +4111002 - Shadow Partner - [Master Level : 30]\nTemporarily summons a shadow of oneself, repeating every move. There's no real stamina in it, and it will disappear after a while. +4111003 - Shadow Web - [Spider Web : 20]\nCreates a web of shadow of oneself to hold up to 6 monsters. Once stuck, the monsters held in the spiderweb will be unable to move. +4111004 - Shadow Meso - [Master Level : 30]\nAttacks enemies with mesos and the damage is based on the amount of mesos thrown. Nullifies the monsters' "weapon def. up" and "magic guard up." \nRequired Skill : #cAt least Level 5 on Meso Up# +4111005 - Avenger - [Master Level : 30]\nUses MP to make an enormous throwing star for attack. The throwing star will go through an enemy, and attack the ones behind it, too. +4111006 - Flash Jump - [Master Level : 20]\nWhile in the air after a jump, use this skill + the arrow for a second jump. The higher the skill level, the farther the distance for the jump.\nRequired Skill : #cAt least Level 5 on Avenger# +4210000 - Shield Mastery - [Master Level : 20]\nIncreases the def. of the equipped shield. Only works when the shield is equipped. +4211001 - Chakra - [Master Level : 30]\nUses MP to recover HP. Only works when the HP is less than 50%, and it'll stop if either attacked or moved. +4211002 - Assaulter - [Master Level : 30]\nAttacks a single monster with incredible power and speed. The attacked may even be stunned on a low succcess rate. +4211003 - Pickpocket - [Master Level : 20]\nTemporarily increases the amount of mesos dropped off from the attacked monsters. The amount of mesos increases in proportion to the skill level and damage done to the monsters.\nRequired Skill : #cAt least Level 3 on Meso Explosion# +4211004 - Band of Thieves - [Master Level : 30]\nSummons fellow bandits to attack up to 6 monsters around the area. +4211005 - Meso Guard - [Master Level : 20]\nUses mesos to guard 50% of the damage received. Once the skill is used, it saves up a certain amount of mesos, and once damaged from then on out, the mesos will be used based on the damage received. The skill will be turned off when the saved mesos are used up.\nRequired Skill : #cAt least Level 3 on Chakra# +4211006 - Meso Explosion - [Master Level : 30]\nExplodes the mesos dropped on the ground around you to attack monsters. The mesos from the monsters killed by someone else will not be able to be used for this. +9001000 - Haste (Normal) - [Master Level : 1]\n Haste +9001001 - Super Dragon Roar - [Master Level : 1]\n Super Dragon Roar +9001002 - Teleport - [Master Level : 1]\n Teleport +9101000 - Heal + Dispel - [Master Level : 1]\nHeal + Dispel +9101001 - Haste (Super) - [Master Level : 1]\n Haste +9101002 - Holy Symbol - [Master Level : 1]\n Holy Symbol +9101003 - Bless - [Master Level : 1]\n Bless +9101004 - Hide - [Master Level : 1]\n Hide +9101005 - Resurrection - [Master Level : 1]\n Resurrection +9101006 - Super Dragon Roar - [Master Level : 1]\n Super Dragon Roar +9101007 - Teleport - [Master Level : 1]\n Teleport +9101008 - Hyper Body - [Master Level : 1]\nIncrease the Max HP and Max MP for 15 mins. +0001005 - Echo of Hero - [Master Level : 1]\n Increase weapon attack and magic attack on all players around. \n#cTerms between skills : 2hours# +1121000 - Maple Warrior - Increase all players' stats within a party by certain percentage +1121001 - Monster Magnet - Pulls a monster from afar up close. +1121002 - Power Stance - Enables one to stay at the same spot after being struck, resisting knock-back effects. +1120003 - Advanced Combo Attack - By maximizing the potential of the combo attack, it enables one to charge up the combo counter up to 10, and with a given success rate, the combo counter gets charged twice as fast. The Skill can only be obtained by fully mastered Combo Attack. \nRequired skill : #cCombo attack level 30# +1120004 - Achilles - Permanently increases the weapon defense of one's armor +1120005 - Guardian - Blocks the monster's attack by using the shield with a given success rate. Additionally, if the close-range attack is blocked, the attacking monster will be stunned for 2 seconds. The skill only works when equipped with a shield +1121006 - Rush - Makes a mad dash forward, pushing off up to 10 monsters. +1121008 - Brandish - Enables one to attack multiple monsters forward twice +1121010 - Enrage - Temporarily increases the attacking ability by using up the 10 combo counters. +1121011 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +1221000 - Maple Warrior - Increase all players' stats within a party by certain percentage +1221001 - Monster Magnet - Pulls a monster from afar up close. +1221002 - Power Stance - Enables one to stay at the same spot after being struck, resisting knock-back effects. +1221003 - Holy Charge : Sword - Temporarily adds a holy element to the sword. The skill gets cancelled when the charge blow is used or expires. +1221004 - Divine Charge : BW - Temporarily adds a divine element to the blunt weapon. The skill gets cancelled when the charge blow is used or expires. +1220005 - Achilles - Permanently increases the weapon defense of one's armor +1220006 - Guardian - Blocks the monster's attack by using the shield with a given success rate. Additionally, if the close-range attack is blocked, the attacking monster will be stunned for 2 seconds. The skill only works when equipped with a shield +1221007 - Rush - Makes a mad dash forward, pushing off up to 10 monsters. +1221009 - Blast - Strikes a single, tremendous blow to a single monster. +1220010 - Advanced Charge - Increases the damage incurred when using Charge Blow. With a given success rate, the charge does not expire even after the initial Charge Blow. +1221011 - Heaven's Hammer - Strikes the ground with a huge hammer to attack up to 15 monsters. The skill works when charged up in a Holy Charge. +1221012 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +1321000 - Maple Warrior - Increase all players' stats within a party by certain percentage +1321001 - Monster Magnet - Pulls a monster from afar up close. +1321002 - Power Stance - Enables one to stay at the same spot after being struck, resisting knock-back effects. +1321003 - Rush - Makes a mad dash forward, pushing off up to 10 monsters. +1320005 - Achilles - Permanently increases the weapon defense of one's armor +1320006 - Berserk - Increases overall attack once the knight's HP drops below a certain level. However, the additional attack boost is nullified once HP recovers back past that level. +1321007 - Beholder - Temporarily summons Beholder. With the Beholder's incredible powers, the knight's weapon mastery permanently increases. +1320008 - Aura of the Beholder - The black spirit periodically restores the Dark Knight's HP. The amount of healing increases as the skill level rises. +1320009 - Hex of the Beholder - The black spirit periodically buffs the Dark Knight. Buff type depends on skill level. +1321010 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +2121000 - Maple Warrior - Increase all players' stats within a party by certain percentage +2121001 - Big Bang - Gathers up numerous particles from the surrounding area to form an energy vortex, culminating in a powerful explosion. +2121002 - Mana Reflection - By drawing an incredible inner strength, enables one to reverse the flow of Mana back to the monster, returning the damage received from the monster. The returned damage cannot exceed 20% of maxHP of the monster. +2121003 - Fire Demon - Provides consistent damage to a monster using a ball of fire from the Fire Demon. Monsters stricken by Fire Demon become vulnerable to ice-based attacks. +2121004 - Infinity - Enables one to temporarily draw magic powers from sources surrounding the mage and use it in place of one's own MP. +2121005 - Elquines - Calls upon the Elquines familiar, who is ice-based. Attacks up to 3 monsters.\nRequired skill : #cFire Demon level 5 and above# +2121006 - Paralyze - Temporarily paralyzes the monster with a poison-based attack. +2121007 - Meteor Shower - Summons meteors from outer space to shower the ground, striking up to 15 monsters at once. Incurs tremendous fire-based damages to those struck. +2121008 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +2221000 - Maple Warrior - Increase all players' stats within a party by certain percentage +2221001 - Big Bang - Gathers up numerous particles from the surrounding area to form an energy vortex, culminating in a powerful explosion. +2221002 - Mana Reflection - By drawing on incredible inner strength, enables one to reverse the flow of Mana back to the monster, returning the damage received from the monster. The returned damage cannot exceed 20% of maxHP of the monster. +2221003 - Ice Demon - Provides consistent damage to a monster using ice pieces from Ice Demon. Monsters stricken by Ice Demon become vulnerable to fire-based attacks. +2221004 - Infinity - Enables one to temporarily draw magic powers from sources surrounding the mage and use it in place of one's own MP. +2221005 - Ifrit - Calls upon the Ifrit familiar, who is fire-based. Attacks up to 3 monsters. +2221006 - Chain Lightning - Attacks a single monster using a high-voltage lightning attack. If struck, monsters around the affected monster will receive damage as well. +2221007 - Blizzard - Summons spears of ice from the sky, showering up to 15 monsters at one time with a nasty blizzard. Incurs tremedous ice-based damages to the attacked. +2221008 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +2321000 - Maple Warrior - Increase all players' stats within a party by certain percentage +2321001 - Big Bang - Gathers up numerous particles from the surrounding area to form an energy vortex, culminating in a powerful explosion. +2321002 - Mana Reflection - By drawing on incredible inner strength, enables one to reverse the flow of Mana back to the monster, returning the damage received from the monster. The returned damage cannot exceed 20% of maxHP of the monster. +2321003 - Bahamut - Temporarily summons Bahamut, a holy dragon. Attacks up to 3 monsters..\nRequired skill : #cSummon Dragon level 15 and above# +2321004 - Infinity - Enables one to temporarily draw magic powers from sources surrounding the mage and use it in place of one's own MP. +2321005 - Holy Shield - Temporarily protects all party members from abnormal conditions. +2321006 - Resurrection - Resurrects a member instantly. +2321007 - Angel Ray - Attacks a single monster with a holy arrow, incurring tremendous holy damage. +2321008 - Genesis - A holy ray of light shines down from the sky, burning up to 15 monsters at one time. Incurs tremendous holy damage to the targets. +2321009 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +3121000 - Maple Warrior - Increase all players' stats within a party by certain percentage +3121002 - Sharp Eyes - Grants party members the ability to locate enemy weaknesses, and in turn inflict more damage by exploiting them. +3121003 - Dragon's Breath - Drawing upon the spirit of the dragon, fires a powerful arrow of tremendous force that will knock back the target a long distance. +3121004 - Hurricane - Fires away arrows at a tremendous speed, as chaotic as a nasty rainstorm. +3120005 - Bow Expert - Increases the bow mastery as well as weapon attack. Only applied with a bow equipped. +3121006 - Phoenix - Temporarily summons the Phoenix, who is a fire-based ally. Attacks up to 4 monsters. +3121007 - Hamstring - Attacks a monster's leg with a given success rate, slowing it down tremendously in the process +3121008 - Concentrate - Temporarily increases weapon attack, while simultaneously decreases skill-based MP usage.\n#c Terms between skills : 6 Minutes# +3121009 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +3221000 - Maple Warrior - Increase all players' stats within a party by certain percentage +3221001 - Piercing Arrow - Fires a special arrow that penetrates through monsters. The arrow's power increases with each monster it pierces, inflicting more damage to each consecutive monster. +3221002 - Sharp Eyes - Grants party members the ability to locate enemy weaknesses, and in turn inflict more damage by exploiting them. +3221003 - Dragon's Breath - Drawing upon the spirit of the dragon, fires a powerful arrow of tremendous force that will knock back the target a long distance. +3220004 - Marksman Boost - Increases the crossbow mastery as well as weapon attack. Only applied with a crossbow equipped. +3221005 - Frostprey - Temporarily summons the Frostprey, an ice-based hawk. Attacks up to 4 monsters. +3221006 - Blind - Delivers a blinding strike that impairs a monster's vision with a certain success rate, decreasing its accuracy. +3221007 - Snipe - Delivers a lethal blow to a monster by aiming for its weak spot. +3221008 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +4121000 - Maple Warrior - Increase all players' stats within a party by certain percentage +4120002 - Shadow Shifter - With great reflexes, enables one to avoid the monster's attack. +4121003 - Taunt - Provokes a monster, causing its general defense to increase. As a result, EXP earned and drop rate for items will increase for this monster. +4121004 - Ninja Ambush - For a set period of time, a group of ninjas hiding around the bushes will periodically ambush up to 6 monsters at once. : #cShadow Shifter level 5 and above# +4120005 - Venomous Star - Throws a star that's been smeared with poison; the monster struck has a chance of being poisoned. Usable up to 3 times against each monster. +4121006 - Shadow Stars - Attacks a monster using 200 stars out of the currently equipped star. Allows an infinite number of stars to be thrown for a short period of time. +4121007 - Triple Throw - Attacks one monster by simultaneously throwing 3 stars. +4121008 - Ninja Storm - Summons ninjas to push back surrounding monsters. +4121009 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +4221000 - Maple Warrior - Increase all players' stats within a party by certain percentage +4221001 - Assassinate - Strikes an unsuspecting monster at its vital spots 4 times. The last strike can be lethal with a given success rate. Only works with Dark Sight enabled. +4220002 - Shadow Shifter - With great reflexes, enables one to avoid the monster's attack. +4221003 - Taunt - Provokes a monster, causing its general defense to increase. As a result, EXP earned and drop rate for items will increase for this monster. +4221004 - Ninja Ambush - For a set period of time, a group of ninjas hiding around the bushes will periodically ambush up to 6 monsters at once. : #cShadow Shifter level 5 and above# +4220005 - Venomous Stab - Stab a monster with a dagger that's been smeared with poison; the monster struck has a chance of being poisoned. Usable up to 3 times against each monster. +4221006 - Smokescreen - Sets off a smoke grenade to escape from a tight situation. All members of the party in the vicinity of smoke will not receive damage while the smokescreen is up. +4221007 - Boomerang Step - With great quickness, stabs multiple monsters TWICE. Under the set success rate, the monsters attacked will be stunned. +4221008 - Hero's Will - Enables one to shrug off abnormal conditions. The higher the skill level, the more types of abnormal conditions one can nullify. +0001006 - Jump Down - [Master Level : 1]nJump downward. +5000000 - Bullet Time - [Master Level : 20]\nIncreases accuracy and avoidability. +5001001 - Flash Fist - [Master Level : 20]\nUses MP to speed up the punch to rapidly attack enemies. +5001002 - Sommersault Kick - [Master Level : 20]\nA devastating kick that accompanies a backward sommersault. Attacks all enemies in the vicinity. +5001003 - Double Shot - [Master Level : 20]\nFires two bullets at once to apply double damage to monsters. +5001005 - Dash - [Master Level : 10]\nPress left or right arrow twice to temporarily boost your speed and jump. +5100000 - Improve MaxHP - [Master Level : 10]\nApply AP to MaxHP to improve the rate of increase for MaxHP. +5100001 - Knuckler Mastery - [Master Level : 20]\nBoosts the accuracy and the mastery of Knucklers. This skill only applies when you equip a Knuckler. +5101002 - Backspin Blow - [Master Level : 20]\nThis skill allows you to quickly slide back and elbow multiple monsters at once to apply damage and temporarily stun them. +5101003 - Double Uppercut - [Master Level : 20]\nA quick round of two punches to apply damage and temporarily stun a monster. +5101004 - Corkscrew Blow - [Master Level : 20]\nThis skill allows you to run forward and punch multiple monsters in front at once. +5101005 - MP Recovery - [Master Level : 10]\nRecovers MP by using up a bit of HP. +5101006 - Knuckler Booster - [Master Level : 20]\nUses parts of HP and MP to temporarily boost the speed of a Knuckler. This skill can only be triggered when a Knuckler is equipped. \nRequired Skill : #cLevel 5 or above on Knuckler Mastery +5101007 - Oak Barrel - [Master Level : 10]\nThis skill will allow you to safely navigate your way through monsters without being recognized by them...by donning an Oak Barrel. Some clever monsters may be able to tell, though, so be careful. If you are lying down, it's literally impossible to tell the difference! +5200000 - Gun Mastery - [Master Level : 20]\nBoosts the accuracy and the mastery of your Guns. This skill only applies when you equip a Gun. +5201001 - Invisible Shot - [Master Level : 20]\nAttacks multiple monsters by quickly firing a few bullets, so fast that the naked eye can't see the shooting. +5201002 - Grenade - [Master Level : 20]\nAttacks a monster by throwing a grenade. The distance the grenade travels depends on how long you press the skill key. +5201003 - Gun Booster - [Master Level : 20]\nUses parts of HP and MP to temporarily boost the firing speed of the Gun.This skill can only be triggered when the Gun is equipped. \nRequired Skill : #cLevel 5 or above on Gun Mastery +5201004 - Blank Shot - [Master Level : 20]\nThis skill allows you to pretend shooting a gun, faking out the monsters, and instead of firing bullets, it'll fire a flag. This will temporarily stun up to 3 monsters. +5201005 - Wings - [Master Level : 10]\nAllows for a longer, more sustained jump than a regular jump. +5201006 - Recoil Shot - [Master Level : 20]\nUses the recoil of the gun to run back after a gunshot. \nRequired Skill : #cLevel 5 or above on Wings# +5110000 - Stun Mastery - [Master Level : 20]\nWhen attacking a monster that's stunned, the critical attack will be triggered at a set rate. +5110001 - Energy Charge - [Master Level : 40]\nA set amount of energy is charged after every attack. When the energy is fully charged, this will automatically trigger the effects of the Body Attack and Stance will be triggered at a specific rate. This will allow you to use energy-related skills. +5111002 - Energy Blast - [Master Level : 30]\nBlasts a ball of energy to attack multiple monsters at once. This skill can only be used when #cthe energy is fully charged#.\nRequired Skill : #cLevel 1 of Energy Charge# +5111004 - Energy Drain - [Master Level : 20]\nUses energy to convert the lost HP of a monster into your own HP. This skill can only be used when #cthe energy is full charged#.\nRequired Skill : #cLevel 1 of Energy Charge# +5111005 - Transformation - [Master Level : 20]\nTransforms you into a more powerful state for 120 seconds. \nSkills available : Changes have been made so that while using the Buccaneer skill, Transform, you can now use all skills besides the Oak Barrel, Double Fire, Demolition and Snatch. +5111006 - Shockwave - [Master Level : 30]\nStrikes the ground with tremendous force, affecting multiple monsters. This skill can only be used during #cTransformation or Super Transformation#.\nRequired Skill : #cLevel 1 of Transformation# +5210000 - Burst Fire - [Master Level : 20]\nIncreases the potency and the number of bullets fired when using Double Shot.\nRequired Skill : #cLevel 20 of Double Shot# +5211001 - Octopus - [Master Level : 30]\nSummons a loyal octopus that'll aid your attacks. The summoned octopus will not move, however.\n#cWaiting time until the next summon : 10 sec# +5211002 - Gaviota - [Master Level : 30]\nSummons Gaviota, who's trained to throw a grenade at monsters. The summoned Gaviota will seek a monster, and when it finds one, it'll toss the grenade and disappear. \n#cWaiting time : 5 sec.# +5211004 - Flamethrower - [Master Level : 30]\nAttacks a monster nearby with a fire-based attack. The affected monster will keep receiving damage for a short period of time. +5211005 - Ice Splitter - [Master Level : 30]\nAttacks the closest monster with an ice-based attack. The affected monster will be frozen for a short period of time. +5211006 - Homing Beacon - [Master Level : 30]\nSends a parrot that'll mark a target on a monster. From then on out, all attacks will be focused on that monster. +5121000 - Maple Warrior - Increase all players' stats within a party by certain percentage +5121001 - Dragon Strike - Summons a sleeping dragon from the depths of the ground to apply damage to a number of monsters. +5121002 - Energy Orb - Uses a blast of powerful energy to strike a monster. If there are other monsters around the affected monster, they will also be affected by this potent ball of energy. Only available when the #cenergy is fully charged#.\nRequired Skill : #cLevel 1 of Ener +5121003 - Super Transformation - Increases power to extreme levels for 120 seconds. \nAvailable skills : Changes have been made so that while using the Viper skill, Super Transform, you can now use all skills excluding the Oak Barrel and the Double Fire. \nRequired Skill : #cLevel 20 of Transformation# +5121004 - Demolition - Apply a significant damage to a single monster by attacking it in a blinding speed. Only available when under a state of #cSuper Transformation#.\nRequired Skill : #cLevel 1 of Super Transformation# +5121005 - Snatch - Applies damage to a monster that's far away, and drags it right in front of you. Only available when under a state of #cSuper Transformation#.\nRequired Skill : #cLevel 1 of Super Transformation# +5121007 - Barrage - Attacks a monster nearby 6 times in quick succession. +5121008 - Pirate's Rage - Allows you to break out of an abnormal state. As its level increases, the number of abnormal states that can be broken out increases. \n#cWaiting time : 10 min.# +5121009 - Speed Infusion - Uses HP and MP to temporarily increase the attacking speed of a weapon. This can be combined with other boosters, and everyone in the party will have their attacking speed increased.\nRequired Skill : #cLevel 20 of Knuckle Booster# +5121010 - Time Leap - Resets the waiting time for skills for yourself and everyone in the party. This does not reset the waiting time for Time Leap. +5221000 - Maple Warrior - Increase all players' stats within a party by certain percentage +5220001 - Elemental Boost - Increases the potency of Flamethrower and Ice Splitter. +5220002 - Wrath of the Octopi - An additional octopus is summoned, increasing the fire rate and the damage.\nRequired Skill : #cLevel 30 of Octopus# +5221003 - Aerial Strike - Uses the grenade attack of Gaviota to damage up to 6 monsters. \nRequired Skill : #cLevel 15 of Gaviota# +5221004 - Rapid Fire - Fires rounds of bullets very quickly. Hold on to the skill key for continued shooting.\nRequired Skill : #cLevel 20 of Burst Fire# +5221006 - Battleship - Calls forth a ship that you can mount and launch attacks from. The durability of the ship decreases per damage received, and when it reaches 0, you will not be able to get back on board for a short period of time. \nAvailable Skills : Battleship skills, Grenades, Gun Booster, Flamethower. +5221007 - Battleship Cannon - Rapidly fires a number of cannonballs. Only available when aboard the Battleship.\nRequired Skill : #cLevel 1 of Battleship# +5221008 - Battleship Torpedo - Fires a hardened cannonball that goes through monsters. Only available when aboard the Battleship.\nRequired Skill : #cLevel 1 of Battleship# +5221009 - Hypnotize - Hypnotizes monsters to temporarily make it attack other monsters instead of you. +5221010 - Speed Infusion - Uses HP and MP to temporarily increase the attacking speed of a weapon. This can be combined with other boosters, and everyone in the party will be positively affected by this.\nRequired Skill : #cLevel 20 of Knuckler Booster# +5220011 - Bullseye - Applies more damage to monsters under the effect of Homing Beacon.\nRequired Skill : #cLevel 30 of Homing Beacon# +0001009 - Bamboo Rain - An attack using a bamboo stick. +0001010 - Invincibility - You become invincible for a fixed amount of time. +0001011 - Power Explosion - Increased damage rate for a fixed amount of time. +8001000 - ??? ??? - [??? ?? : 1]\n???? ???? ???? ???? ??? ???? ????. +8001001 - ???? - [??? ?? : 1]\n?, ?, ?, ? ???? ???? ?? ? ?? ?? ??? ?? ???? ??? ? ??. +11001002 - Power Strike - [Master Level : 20]\nInflict damage on the opponent using the weapon with which the character used MP to equip. +11001003 - Slash Blast - [Master Level : 20]\nInflict damage on all nearby opponents using the weapon with which the character used HP and MP to equip.\nRequired Skill : #cAt least Level 1 on Power Strike# +11101003 - Rage - [Master Level : 20]\nTemporarily enhances the Weapon Attack rate of everyone in the party nearby, while decreasing the rate of Weapon Defense. +13111001 - Strafe - [Master Level : 30]\nFires 4 arrows at a single enemy. +15111007 - Shark Wave - [Master Level : 30]\nAttack multiple monsters in front. +15100000 - Improve MaxHP - [Master Level : 10]\nThis skill boosts up the amount of increase on MaxHP after each Level UP, or AP used on MaxHP. +15100001 - Knuckle Mastery - [Master Level : 20]\nBoosts the accuracy and the mastery of Knuckles. This skill only applies when you equip a Knuckle. +15101002 - Knuckle Booster - [Master Level : 20]\nUses parts of HP and MP to temporarily boost the speed of a Knuckle. This skill can only be triggered when a Knuckle is equipped. \nRequired Skill : #cLevel 5 or above on Knuckle Mastery +15101003 - Corkscrew Blow - [Master Level : 20]\nThis skill allows you to run forward and punch multiple monsters in front at once. +15100004 - Energy Charge - [Master Level : 20]\nA set amount of energy is charged after every attack. When the energy is full charged, this will automatically trigger the effects of the Body Attack and Stance, and will allow you to use energy-related skills. +15101005 - Energy Blast - [Master Level : 20]\nBlasts a ball of energy to attack multiple monsters at once. This skill can only be used when #cthe energy is full charged#.\nRequired Skill : #cLevel 1 of Energy Charge# +15101006 - Lightning Charge - [Master Level : 20]\nKnuckle will be empowered with lightning element for certain period of time. +15110000 - Critical Punch - [Master Level : 20]\nCritical attack available at certain rate. +15111001 - Energy Drain - [Master Level : 20]\nUses energy to convert the lost HP of a monster into your own HP. This skill can only be used when #cthe energy is full charged#.\nRequired Skill : #cLevel 1 of Energy Charge# +15111002 - Transformation - [Master Level : 10]\nTransforms you into a more powerful state for 120 seconds. +15111003 - Shockwave - [Master Level : 20]\nStrikes the ground with tremendous force, affecting multiple monsters. This skill can only be used during #cTransformation#.\nRequired Skill : #cLevel 1 of Transformation# +15111004 - Barrage - [Master Level : 20]\nAttacks a monster nearby 6 times in quick succession. +15111005 - Speed Infusion - Uses HP and MP to temporarily increase the attacking speed of a weapon. This can be combined with other boosters, and everyone in the party will have their attacking speed increased.\nRequired Skill : #cLevel 20 of Knuckle Booster# +15111006 - Spark - [Master Level : 20]\nMake additional attack by the power of lightning fairy. Monsters around the monster that is attacked will get damage at the same time. +14111005 - Triple throw - [Master Level : 20]\nAttacks monsters by throwing 3 stars at once. +14111006 - Poison Bomb - [Master Level : 30]\nThrows a bomb that generates a poisonous cloud. Monsters within the range of the poisonous cloud will continuously incur damage. +15000000 - Quick Motion - [Master Level : 10]\nIncreases accuracy and avoidability. +15001001 - Straight - [Master Level : 20]\nUses MP to speed up the punch to rapidly attack enemies. +15001002 - Somersault Kick - [Master Level : 20]\nA devastating kick that accompanies a backward somersault. Attacks all enemies in the vicinity. +15001003 - Dash - [Master Level : 10]\nPress left or right arrow twice to temporarily boost your speed and jump. +15001004 - Lightning - [Master Level : 20]\nSummon guardian fairy and attack monsters in the close distance. +13100000 - Bow Mastery - [Master Level : 20]\nEnhnaces Mastery and Accuracy of bow-type weapons. It only applies when the bow is in hand. +13101001 - Bow Booster - [Master Level : 20]\nEnhances the Speed of bow attack for a given duration using HP and MP. It only applies when the bow is in hand. \nRequired Skill : #c At least Level 5 on Bow Mastery # +13101002 - Final Attack - [Master Level : 30]\nConsecutive attack is activated by using a pre-established amount of MP after applying the attack skill at a regular interval. It only applies when the bow is equipped in hand. \nRequired Skill : #c At least Level 3 on Bow Mastery # +13101003 - Soul Arrow - [Master Level : 20]\nTemporarily allows the character to fire crossbow arrows without using up the arrows. It only applies when the crossbow is equipped in hand.\nRequired Skill : #c At least Level 5 on Bow Booster # +13100004 - Thrust - [Master Level : 20]\nEnhances Speed. +13101005 - Storm Break - [Master Level : 20]\nCast Damage to monsters in a close distance and Knock-back to far away. +13101006 - Wind Walk - [Master Level : 10]\nTemporarily hides ones self from the monsters. Attacking an opponent in the state of Wind Walk can inflict additional damage. +13111000 - Arrow Rain - [Master Level : 20]\nFires a number of arrows into the sky, attacking up to 6 monsters at once. It can only be applied when the character is equipped with a bow. +13111002 - Hurricane - [Master Level : 20]\nLaunches arrows at a tremendous speed like a catastrophic rainstorm. Pressing the skill key will launch the arrows continuously. +13110003 - Bow Expert - [Master Level : 20]\nEnhances Mastery and Attack Rate of bow-type weapons. It can only be applied when the character is equipped with a bow. \nRequired Skill: #c Bow Mastery level 20 # +13111004 - Puppet - [Master Level : 20]\nSummons a Puppet (a doppelganger) for a given duration. When the Puppet is summoned, the monsters will attack the Puppet instead of the actual character. +13111005 - Eagle Eye - [Master Level : 10]\nTransforms into Eagle Eye, a heroic figure who was able to use his bow more freely and skillfully than anyone else for 120 sec. This will enhance the character's Speed and Jump stats and allow the character to use the exclusive skills of Eagle Eye. +13111006 - Wind Piercing - [Master Level : 20]\nInflicts a significant damage on multiple monsters at once with a single powerful blow. Available only during the characters transformed state of Eagle Eye. \nRequired skill : #cEagle Eye over level 1# +13111007 - Wind Shot - [Master Level : 20]\nFires 3 arrows to inflict damage on monsters. Available only during the characters transformed state of Eagle Eye. \nRequired skill : #cEagle Eye over level 1# +14000000 - Nimble Body - [Master Level : 10]\nIncreases accuracy and avoidability. +14000001 - Keen Eyes - [Master Level : 8]\nIncreases the range of attack for throwing weapons such as the Throwing Stars and Knives.\nRequired Skill : #cAt least Level 3 on Nimble Body# +14001002 - Disorder - [Master Level : 10]\nTemporarily decreases the enemys Weapon Attack and Defense, eventually disabling the monsters attack. It cannot be used on the same monster repeatedly. +14001003 - Dark Sight - [Master Level : 10]\nUses MP to hide behind the shadows. With this skill activated, the character can neither attack nor be attacked.\nRequired Skill : #c At least Level 3 on Disorder # +14001004 - Lucky Seven - [Master Level : 20]\nUses MP to throw 2 Throwing Stars and inflict damage according to the LUK stats regardless of the character's level of Claw Mastery. +14001005 - Darkness - [Master Level : 20]\nSummons the Guardian Fairy to attack monsters nearby. +14100000 - Claw Mastery - [Master Level : 20]\nIncreases the characters skill in using the Throwing Stars, and enhances the max number of charges. It only applies when the character is equipped with Throwing Stars. +14100001 - Critical Throw - [Master Level : 30]\nEnables Critical Attack with Throwing Stars at a pre-established success rate.\nRequired Skill: #c At least Level 3 on Claw Mastery # +14101002 - Claw Booster - [Master Level : 20]\nUse HP and MP to temporarily boost up the attack speed of the claw. It only applies when the character is equipped with a claw Throwing Stars.\nRequired Skill : \n#cAt least Level 5 on Claw Mastery# +14101003 - Haste - [Master Level : 20]\nTemporarily enhances Speed and Jump stats of every member in the party. +14101004 - Flash Jump - [Master Level : 20]\n[Master Level : 20]\nAllows a second Jump toward the direction which the character was headed when used while the character is in the air. The distance of the Jump increases in accordance with the advancement of the characters skill level. +14100005 - Vanish - [Master Level : 10]\nInflicts additional damage on monsters when used while Dark Sight is activated. Dark Sight deactivates as soon as this skill is applied. \nRequired skill : #cDark Sight over level 10# +14101006 - Vampire - [Master Level : 20]\nCan attack multiple monsters 4 times and partially consumes the damage to recover HP. No more than of the characters max HP and the Monsters max HP can be consumed. +14111000 - Shadow Partner - [Master Level : 30]\nSummons a shadow, which repeats the characters every move, for a given duration. It has no special strength. +14111001 - Shadow Web - [Master Level : 20]\nMakes a spider web of the characters shadow, and holds up to 6 enemies in one spot at once. Mobility of the monsters caught in the spider web will be disabled. +14111002 - Avenger - [Master Level : 30]\nUses MP to make an enormous Throwing Star for attack. The Throwing Star will penetrate the enemy, and attack the ones behind it, too. +14110003 - Alchemist - [Master Level : 20]\nEnhances the effects of recovery items including potions or lengthens the duration of items applied to the status of the character, with an exception of recovery items such as the Elixir that provide recovery based on %. +14110004 - Venom - [Master Level : 20]\nThrows a poisonous Throwing Star. Monsters that have been struck will be poisoned according to the pre-established success rate. It can be used against one monster up to 3 times during which the monster's HP will not go any lower than 1. +11101004 - Soul Blade - [Master Level : 30]\nTransforms invisible Soul into visible form and inflicts damage on an enemy. +11101005 - Soul Rush - [Master Level : 10]\nReceives the power of Soul, which allows the character to instantaneously move at a fast speed. +11110000 - MP Recovery Rate Enhancement - [Master Level : 20]\nCan recover more MP every 10 sec. +11111001 - Combo Attack - [Master Level : 20]\nCan build up ones Comb Attack. The Finish Attack is enabled when the Combo Counter increases every time the attack is used. The Max Combo Counter is 5 and the standard Damage inflicted is when the Combo Counter is at 3. +11111002 - Panic - [Master Level : 20]\nAttacks a single enemy. It is only available when the Sword is equipped and the Combo Counter is activated.\nRequired Skill: #cCombo Attack higher than level 1.# +11111003 - Coma - [Master Level : 20]\nPut monsters nearby in coma. Only available when the Sword is equipped and Combo Counter is activated : #cCombo Attack higher than level 1 required.# +11111004 - Brandish - [Master Level : 30]\nEnables two attacks on multiple monsters nearby. +11110005 - Advanced combo - [Master Level : 20]\nIncreases max Combo Counter stats to 10 and charges 2 Combo Counts at a pre-established rate. It only applies when the Combo Attack is mastered. \nRequired Skill: #cCombo Attack Lv.20# +11111006 - Soul Driver - [Master Level : 30]\nAttacks multiple monsters 4 times at once via the power of Soul. +11111007 - Soul Charge - [Master Level : 20]\nEmpower the sword with sanctity attribute for a given duration. +12000000 - Increasing Max MP. - [Master Level : 10]\nIncreases the Max MP when AP is applied to Max MP at the time of Level Up. +12001001 - Magic Guard - [Master Level : 10]\nTemporarily replaces damage with MP instead of HP. If MP reaches 0, the HP takes a full hit. +12001002 - Magic Armor - [Master Level : 10]\nTemporarily enhances the Weapon Def. of the armor by applying magic for a given duration.\nRequired Skill : \n#cAt least Level 3 on Magic Guard# +12001003 - Magic Claw - [Master Level : 20]\nUse MP to attack an enemy twice. +12001004 - Flame - [Master Level : 20]\nSummon the Guardian Fairy to attack monsters nearby. +12101000 - Meditation - [Master Level : 20]\nTemporarily enhances the Magic Attack of all party members nearby by Meditation. +12101001 - Slow - [Master Level : 20]\nTemporrily slows down the enemies around you. Can't use it on them twice at once, and affects only 6 enemies per say.\nRequired Skill : \n#cAt least Level 5 on Teleport# +12101002 - Fire Arrow - [Master Level : 20]\nA Fire Arrow is generated using magic and is shot at an enemy. It is especially effective on enemies with ice attribute. +12101003 - Teleport - [Master Level : 20]\nCan move a pre-established distance to other locations within the map using the arrow keys. +12101004 - Spell Booster - [Master Level : 20]\nConsumes a significant amount of HP and MP to enhance the speed of Magic Attack. +12101005 - Elemental Reset - [Master Level : 20]\nMake all Elemental Attack to Non-elemental Attack for a given duration. +12101006 - Fire Pillar - [Master Level : 20]\nInflicts fire damage on nearby monster. It can be applied to attack up to 6 monsters. +12110000 - Elemental Resistance - [Master Level : 20]\nGains a higher tolerance for all Elemental Attacks from the enemy. +12110001 - Element Amplification - [Master Level : 20]\nIncrease all Magic Attacks by using more MP. +12111002 - Seal - [Master Level : 20]\nSeals multiple enemies nearby for a given duration. Once sealed, the monsters will not be able to use their skills to attack. This does not apply to the Boss Monsters. \nRequired Skill : #c At least Level 3 on Element Amplification # +12111003 - Meteor Shower - [Master Level : 20]\nInflicts significant fire damages on up to 15 monsters at once via the meteor shower. +12111004 - Ifrit - [Master Level : 20]\nTemporarily summons Ifrit of Fire Attribute for a given duration. Attacks up to 3 monsters. +12111005 - Flame Gear - [Master Level : 30]\n Temporarily creates a wall of fire near the character for a given duration. The monsters inside the wall continuously receive damage. +12111006 - Fire Strike - [Master Level : 30]\nThrow huge fireball to attack up to 6 monsters. +13000000 - Critical Shot - [Master Level : 20]\nEnables Critical Attack at a pre-established success rate. +13000001 - The Eye of Amazon - [Master Level : 8]\nIncreases the range of attack for bows and crossbows. +13001002 - Focus - [Master Level : 10]\nEnhances Accuracy and Avoidability for a given duration. \nRequired Skill : #c At least Level 3 on the Eye of Amazon # +13001003 - Double Shot - [Master Level : 20]\nAttacks an enemy twice using two arrows at once. +13001004 - Storm - [Master Level : 20]\nSummon the Guardian Fairy to attack monsters nearby. +11001004 - Soul - [Master Level : 20]\nSummons a Fairy who attacks enemies within a given range. +11100000 - Sword Mastery - [Master Level : 20]\nIncreases the Sword Mastery and Accuracy. It only applies when either a one-handed or a two-handed Sword is in hand. +11101001 - Sword Booster - [Master Level : 20]\nUses HP and MP to temporarily boost the attack speed of the Sword. It only applies when either a one-handed or a two-handed Sword is in hand.\nRequired Skill : \n#cAt least Level 5 on Sword Mastery# +11101002 - Final Attack - [Master Level : 30]\nEnables consecutive attacks when an attack skill is applied at a regular interval and pre-established amount of MP is used. It only applies when a one-handed or a two-handed Sword is in hand. \nRequired Skill : #c At least Lv.3 on Sword Mastery# +10000018 - Follow the Lead - Allows one to lead up to 3 pets at once. (Passive skill) +10001000 - Three Snails - [Master Level : 3]\nHurls snail shells to attack monsters from long distance. +10001001 - Recovery - [Master Level : 3]\nEnables the user to recover HP constantly for 30 sec. \n#cTerms between skills : 10 min.# +10001002 - Nimble Feet - [Master Level : 3]\nEnables the character to move around quickly for a short amount of time. \n#cTerms between skills : 1 min.# +10001003 - Legendary Spirit - [Master Level : 1]\nUses the spirit of a legend to use a scroll on an item that cannot be equipped with your character. +10001004 - Monster Rider - [Master Level : 1]\nEnables one to ride on a tamed monster and use it as a method of transportation. +10001005 - Echo of Hero - [Master Lever : 1]\n Increase weapon attack and magic attack on all players around. \n#cTerms between skills : 2hours# +10001006 - Jump Down - [Master Level:1]\nJump down. +10001007 - Maker - [Master Level : 3]\nCan create item by using alchemy. Created item is different by level. +10001009 - Bamboo Thrust - Use bamboo as weapon and attack. +10001010 - Invincible Barrier - Become invincible for certain period of time. +10001011 - Meteo Shower - Damage will increase for certain period of time. +10000012 - Blessing of the Fairy - [Master Level : 20]\nSkill Point will increase by 1 when the related character reaches above Lv.10. +11000000 - Max HP Enhancement - [Master Level : 10]\nIncreases the Max HP when AP is applied during the Level Up. +11001001 - Iron Body - [Master Level : 10]\nTemporarily increases your Weapon Defense. +0000012 - Blessing of the Fairy - [Master Level : 20]\nSkill Point will increase by 1 when the related character reaches above Lv.10. +0001007 - Maker - [Master Level : 3]\nCan create item by using alchemy. Items that can be created will vary depending on your Character level. +9001003 - Bless - [Master Level:1]\nIncreases all abilities of those around you for 15 minutes. +9001004 - Hide - [Master Level : 1]\n Hide +9001005 - Resurrection - [Master Level : 1]\n Resurrection +9001006 - Super Dragon Roar - [Master Level : 1]\n Super Dragon Roar +9001007 - Teleport - [Master Level : 1]\n Teleport +9001009 - ADMIN_ANTIMACRO - [Master Level:1]\nActivate Lie Detector on the suspicious macro user. +9001008 - Hyper Body - [Master Level:1]\nMax HP, Max MP increases for 15 minutes. +10001014 - Spaceship - [Master Level : 2]\nYou board a spaceship. While aboard, you can increase your movement and jump abilities by pressing the right/left direction key twice. #Available until: 06-08-2009 at 00 hour# +10001015 - Space Dash - [Master Level : 1]\nIncrease your movement and jump abilities by pressing the right/left direction key twice. #cAvailable until 06-08-2009 at 00 hour# +10001016 - Space Beam - [Master Level : 1]\nChanges the condition of the Krypto found at the Space Mine. #cAvailable until: 06-08-2009 at 00 hour# +20001000 - Three Snails - [Master Level : 3]\nHurls snail shells to attack monsters from long distance. +20001001 - Recovery - [Master Level : 3]\nEnables the user to recover HP constantly for 30 sec. \n#cTerms between skills : 2 min.# +20001002 - Agile Body - [Master Level : 3]\nExplosive speed for an instant. \n#cTakes about 1 min. until the next call.# +20001003 - Legendary Spirit - [Master Level : 1]\nUses the spirit of a legend to use a scroll on an item that cannot be normally equipped by the character. +20001004 - Monster Rider - [Master Level : 1]\nEnables one to ride on a tamed monster and use it as a method of transportation. +20001005 - Echo of Hero - [Master Level : 1]\n Increase weapon attack and magic attack on all players around. \n#cTerms between skills : 2hours# +20001006 - Jump Down - [Master Level : 1]nJump downward. +20001007 - Maker - [Master Level : 3]\nCan create item by using alchemy. Created item is different by level. +20001009 - Bamboo Thrust - Use bamboo as weapon and attack. +20001010 - Invincible Barrier - Become invincible for certain period of time. +20001011 - Meteo Shower - Damage will increase for certain period of time. +20000012 - Blessing of the Fairy - [Master Level : 20]\nSkill Point will increase by 1 when the related character reaches above Lv.10. +20001013 - Helper - Damage increases for a fixed time period. +20000014 - Tutorial Skill - Tutorial Skill +20000015 - Tutorial Skill - Tutorial Skill +20000016 - Tutorial Skill - Tutorial Skill +20000017 - Tutorial Skill - Tutorial Skill +20000018 - Tutorial Skill - Tutorial Skill +20000024 - Follow the Lead - Allows one to lead up to 3 pets at once. (Passive skill) +21000000 - Combo Ability - [Master Level : 10]\nEverytime the combo count reaches 10, the stats increase.\nRequired Skill : #cLevel 10 on Double Swing# +21000002 - Double Swing - [Master Level : 20]\nTap the attack key twice to attack up to 12 enemies by attacking twice. +21001003 - Polearm Booster - [Master Level : 20]\n\nUses HP and MP to temporarily boost up the attacking speed of the equipped polearm. It only applies when either a one-handed or a two-handed polearm is in hand.\nRequired Skill : \n#cAt least Level 5 on Polearm Mastery#\n\nRequired Skill : #cCombat Step Level 5# +21100000 - Polearm Mastery - [Master Level : 20]\nIncreases the mastery of pole arms and accuracy. It only applies when a pole arm is in hand. This skill only gets triggered when the owner is carrying the secuity stuff.\nRequired Skill : #cTriple Swing Level 3# +21100002 - Final Charge - [Master Level : 30]\nJust pushes the enemy forward. Only available right after #cTriple Swing#.\nRequired Skill : #cTriple Swing Level 20 and above#\n[Command : triple attack, #cArrow Key : Right + attack#] +21101003 - Body Pressure - [Master Level : 20]\nAllows one to feel very powerful for a small period of time, by being able to body-check monsters, and completely render the monster useless. +21110000 - Combo Critical - [Master Level : 20]\nEvery time the combo count reaches 10, that's when the critical rate and the damage increases.\nRequired Skill : #cCombo Ability Level 10# +21111001 - Smart Knockback - [Master Level : 20]\nUtilizes efficiency over power, in that it dishes out less damage than a regular knockback, yet still manages to knock back an enemy. +21110004 - Combo Penril - [Master Level : 30]\nShoots a wave of concentrated energy, mixing with the spirit of wolves. Can only be used when the #cCombo Count reaches at least 100.#\nRequired Skill : #cCombo Smash Level 10#\n[Command : #cArrow Key : Down + Right + attack key#] +21111005 - Snow Charge - [Master Level : 20]\nFor a set period of time, add the element of ice on the Pole Arm. The skill cancels itself when the time is up, while the attacked monsters become much slower. +21110007 - (hidden) Full Swing - Double Swing - [Master Level : 20] +21110008 - (hidden) Full Swing - Triple Swing - [Master Level : 20] +21121000 - Maple Warrior - Temporarily boosts the stats of everyone in the party. +21120001 - High Mastery - Improves the overall mastery of Polearm-related weapons and attack.\nRequired Skill : #cPolearm Mastery Level 20# +21121003 - Freeze Standing - Stand heavy like a frozen block of ice and back down from no one. +21120004 - High Defense - A new level of defense, in that it permanently decreases the damage suffering from the same attacks. +21120006 - Combo Tempest - Creates an ice that is so deadly that even a slight collision would kill the monster, while incurring significant damage to boss monsters as well. #cOnly avilable when the combo count reaches 200 or more#.\nRequired Skill : #cCombo Penril Level 10#\n[command : #cArrow Key : Down + Right + attck\#] +21120007 - Combo Barrier - A buff that decreases the amount of damage received over a set time. A welcome skill in party formats a la cleric. Only available once the #ccombo count reaches 200#.\nRequired Skill : #cCombo Drain Level 10#\n[Command : #cArrow key : Down + Down + attack#] +21121008 - Hero's Will - Allows one to snap out of abnormal conditions. The higher the character's level, the less the character has to wait. +21120009 - (hidden) Over Swing - Double Swing - [Master Level : 30] +21120010 - (hidden) Over Swing - Triple Swing - [Master Level : 30] +0001020 - Rage of Pharaoh - [Master Level : 1]\nUtilizes the rage of Pharaoh as an attack. +0009000 - Pig's Weakness - [Master Level : 1]\n Inflicts 150% damage on Pigs. +0009001 - Stump's Weakness - [Master Level : 1]\n Inflicts 150% damage on Stumps. +0009002 - Slime's Weakness - [Master Level : 1]\n Inflicts 150% damage on Slimes. +10000013 - Helper - Damage increases for a fixed time period. +10001019 - Yeti Rider - [Master Level : 1]\nAllows one to ride on a Yeti.\n#cAvailable until : 7/9/2009 at 00:00# +10001020 - Rage of Pharaoh - [Master Level : 1]\nUtilizes the rage of Pharaoh as an attack. +10009000 - Pig's Weakness - [Master Level : 1]\n Inflicts 150% damage on Pigs. +10009001 - Stump's Weakness - [Master Level : 1]\n Inflicts 150% damage on Stumps. +10009002 - Slime's Weakness - [Master Level : 1]\n Inflicts 150% damage on Slimes. +20001019 - Yeti Rider - [Master Level : 1]\nAllows one to ride on a Yeti.\n#cAvailable until : 7/9/2009 at 00:00# +20001020 - Rage of Pharaoh - [Master Level : 1]\nUtilizes the rage of Pharaoh as an attack. +20009000 - Pig's Weakness - [Master Level : 1]\n Inflicts 150% damage on Pigs. +20009001 - Stump's Weakness - [Master Level : 1]\n Inflicts 150% damage on Stumps. +20009002 - Slime's Weakness - [Master Level : 1]\n Inflicts 150% damage on Slimes. +0001017 - Yeti Rider - [Master Level : 1]\nAllows one to ride on a Yeti.\n#cAvailable until : 7/9/2009 at 00:00# +21001001 - Combat Step - [Master Level : 15]\nQuickly tap the direction arrows twice to quickly cover a short distance.\nRequired Skill : #cDouble Swing Level 5#\n[How-to : #cArrow Key : Right + Right#] +21100001 - Triple Swing - [Master Level : 20]\nPress the attack key 3 times in a row to privde triple-hit combos on up to 12 enemies.\nRequired Skill : #cDouble Swing 20# +21100004 - Combo Smash - [Master Level : 20]\nAchieves excellent amound of danger at the booth. Only available when the #cCombo Count reaches 30 or above#.\nRequired Skill : #cPolearm combo 1#\n[Command : #cArrow Key : Down + Right + attack key#] +21100005 - Combo Drain - [Master Level : 20]\nA buff that allows one to recover a portion of damage dished out by attacking back as HP. #cCombo Count must reach 30# and can only be used then.\nRequired Skill : #cCombo Ability Level 1#\n[Command : #cArrow Key : Down + Down + attack#] +21120005 - Final Blow - Swings Polearm widely to incur significant damage to up to 12 monsters at once. Only works right after triggering #cTriple Swing#.\nRequired Skill : #cTriple Swing Level 20#\n[Command : Triple Swing + #cArrow Key : Down + attack key#] +21120002 - Over Swing - Expands the damage caused by Double Swing and Triple Swing to the extreme.\nRequired Skill : #cFull Swing Level 20# +21110006 - Rolling Spin - [Master Level : 20]\nCauses a strong wind which flies out monsters left and right.\n[command : #cArrow Key : Up + Up + Attack key#] +21110003 - Final Cross - [Master Level : 30]\nTosses up 12 monsters in the air. The monsters that are in the air will be vulnerable to attacks, therefore receiving more damage than on the ground. Can only triggered right after Triple Swing.\nRequired Skill : #cTriple Swing Level 20#\n[Command : #cArrow Key : Up + attack key#] +21110002 - Full Swing - [Master Level : 20]\nIncreases the damage rate of Double Swing and Triple Swing. \nRequired Skill : #cTriple Swing Level 20# +0001018 - Yeti Mount - [Master Level : 1]\nAllows you to move around while being mounted on a Yeti. +0001019 - Witch's Broomstick - [Master Level : 1]\nAllows you to move around while being mounted on a Broomstick. +10001023 - Witch's Broomstick - [Master Level : 1]\nAllows you to move around while being mounted on a Broomstick. +10001022 - Yeti Mount - [Master Level : 1]\nAllows you to move around while being mounted on a Yeti. +20001023 - Witch's Broomstick - [Master Level : 1]\nAllows you to move around while being mounted on a Broomstick. +20001022 - Yeti Mount - [Master Level : 1]\nAllows you to move around while being mounted on a Yeti. +0001031 - Barlog Mount - [Master Level : 1]\nAllows you to move around while being mounted on a Barlog. +10001031 - Barlog Mount - [Master Level : 1]\nAllows you to move around while being mounted on a Barlog. +20001031 - Barlog Mount - [Master Level : 1]\nAllows you to move around while being mounted on a Barlog. diff --git a/handbook/Use.txt b/handbook/Use.txt new file mode 100644 index 0000000000..e3176ce1b4 --- /dev/null +++ b/handbook/Use.txt @@ -0,0 +1,2294 @@ +2000000 - Red Potion - A potion made out of red herbs.\nRecovers 50 HP. +2000001 - Orange Potion - A concentrated potion made out of red herbs.\nRecovers 150 HP. +2000002 - White Potion - A highly-concentrated potion made out of red herbs.\nRecovers 300 HP. +2000003 - Blue Potion - A potion made out of blue herbs.\nRecovers 100 MP. +2000004 - Elixir - A legendary potion.\nRecovers 50% HP and 50% MP. +2000005 - Power Elixir - A legendary potion.\nRecovers all HP and MP. +2000006 - Mana Elixir - A legendary potion.\nRecovers around 300 MP. +2000007 - Red Pill - A pill of concentrated red potion, which restores 50 HP. You can carry more pills than potions because they're smaller +2000008 - Orange Pill - A pill of concentrated orange potion, which restores 150 HP. You can carry more pills than potions because they're smaller +2000009 - White Pill - A pill of concentrated white potion, which restores 300 HP. You can carry more pills than potions because they're smaller +2000010 - Blue Pill - A pill of concentrated blue potion, which restores 100 MP. You can carry more pills than potions because they're smaller +2000011 - Mana Elixir Pill - A pill of concentrated Mana Elixir, which restores 300 MP. You can carry more pills than potions because they're smaller +2000012 - Elixir - A legendary secret potion.\nRecovers 50% of HP and MP. +2000013 - Red Potion for Beginners - A potion made out of red herbs made especially for beginners. \nRecovers 40 HP. +2000014 - Blue Potion for Beginners - A potion made out of blue herbs made especially for beginners. \nRecovers 80 MP. +2000015 - Orange Potion for Beginners - A concentrated potion made out of red herbs.\nRecovers 150 HP. +2000016 - White Potion - A highly-concentrated potion made out of red herbs.\nRecovers 300 HP. +2000017 - Blue Potion - A potion made out of blue herbs.\nRecovers 100 MP. +2000018 - Mana Elixir - A legendary potion.\nRecovers around 300 MP. +2000019 - Power Elixir - A legendary potion.\nRecovers all HP and MP. +2001000 - Watermelon - A very ripe watermelon.\nRecovers about 1000 HP and 1000 MP. +2001001 - Ice Cream Pop - A tasty ice cream pop.\nRecovers around 2000 HP. +2001002 - Red Bean Sundae - Definitely lets you forget about the hot hot summer. \nRecovers around 2000 MP. +2002000 - Dexterity Potion - Adds quickness.\nAvoidability +5 for 3 min. +2002001 - Speed Potion - Increases speed.\nSpeed +8 for 3 min. +2002002 - Magic Potion - Increases magic attack.\nMagic Attack +5 for 3 min. +2002003 - Wizard Potion - Increases magic attack.\nMagic Attack +10 for 3 min. +2002004 - Warrior Potion - Increases attacking ability.\nAttack +5 for 3 min. +2002005 - Sniper Potion - Increases accuracy.\nAccuracy +5 for 5 min. +2002006 - Warrior Pill - A pill of concentrated warrior potion. Att. + 5 for 10 minutes +2002007 - Magic Pill - A pill of concentrated magic potion. Magic Att. + 5 for 10 minutes +2002008 - Sniper Pill - A pill of concentrated sniper potion. Accuracy + 10 for 10 minutes +2002009 - Dexterity Pill - A pill of concentrated dexterity potion. Avoidablity + 10 for 10 minutes +2002010 - Speed Pill - A pill of concentrated speed potion. Increased speed for 10 minutes +2002011 - Pain Reliever - A special pain reliever created in Omega Sector.nWeapon Def + 30 for 30 min. +2002012 - Elixir - Recovers both HP and MP by 50%. +2002013 - Power Elixir - Fully recovers HP and MP. +2002014 - Iron Body Medicine - A n enhanced pain reliever smuggled out of Omega Sector.n Def + 30 for 30 min. (Modification Request) +2002015 - Elpam Elixir - A rare, powerful elixir from Versal. Restores 90% HP & MP, and gives a boost of +5 Att and +40 Def for a duration of 15 minutes. +2002016 - Thief Elixir - A special elixir for Thieves. Gives +9 Accuracy and +15 Avoidability for 8 minutes. +2002017 - Warrior Elixir - A special elixir for Warriors. Gives +12 W. Att for 8 minutes. +2002018 - Wizard Elixir - A special elixir for Magicians. Gives +20 M.Att for 8 minutes. +2002019 - Archer Elixir - A special elixir for Bowmen. Gives +20 Avoidability for 8 minutes. +2002020 - Mana Bull - A special potion made in New Leaf City, recovers 60% MP. +2002021 - Honster - A special potion made in New Leaf City, recovers 60% HP. +2002022 - Ginseng Root - Pure ginseng extract that recovers 40% of HP and MP. +2002023 - Ginger Ale - Strong brewed Ginger Ale. Recovers 75% of HP and MP. +2002024 - Sorcerer Elixir - A rare potion perfect for Magicians. Recovers 1500 MP. +2002025 - Barbarian Elixir - A volatile potion mixed on the battlefield. Recovers 1500 HP. +2002026 - Ginger Ale - Strong brewed Ginger Ale. Recovers 75% of HP and MP. +2002027 - Stirge Signal - A makeshift device that looks like it's been duct-taped together. Can be used to distract enemies... slightly. [Gives +5 Avoidability for 20 minutes.] +2002028 - T-1337 Supercharger - A charger for an advanced model cyborg. Looks like it would give quite a shock to the system! [Gives +25 Weapon Attack, +60 Magic Attack for 20 minutes.] +2002029 - Ridley's Scroll of Defense - Why wear cumbersome armor when Ridley can provide the same protection, weightlessly and more comfortably! (Legal Disclaimer: Effect is temporary) [Gives +100 Overall Defense for 10 minutes.] +2010000 - Apple - A red, ripe, and tasty apple.\nRecovers around 30 HP +2010001 - Meat - A tasty-looking meat. .\nRecovers around 100 HP. +2010002 - Egg - A nutritious egg.nImproves around 50 HP. +2010003 - Orange - A sweet, tasty orange.\nRecovers around 50 MP. +2010004 - Lemon - Very sour.\nRecovers around 150 MP. +2010005 - Honey - Fresh honey extracted from the beehive. \nRecovers around 30% of both HP and MP. +2010006 - Pot of Honey - A pot full of fresh honey.\nRecovers 50% of both HP and MP. +2010007 - Roger's Apple - A ripe, red apple.\nRecovers HP 30.nn#cTo eat Roger's Apple, simply double-click on it in your use inventory#. +2010009 - Green Apple - Sour and crunchy green apple.\nRecovers MP +30. +2011000 - Poisonous Mushroom - A very poisonous mushroom. +2012000 - Drake's Blood - Drake's blood. nAttack +8 for 5 min. +2012001 - Fairy's Honey - It's honey, the fairies' favorite.nAvoidability +10 for 5 min. +2012002 - Sap of Ancient Tree - Sap of a thousands-of-years-old tree. \nMagic Attack +10 for 5 min. +2012003 - Drake's Meat - Drake's meat.nWeapon Def. +10 for 5 min. +2012004 - Purified Honey - Fairies favorite purified honey.nAvoidability +40 for 5 min. (Modification Request) +2020000 - Salad - Made out of fresh vegetable.\nRecovers 200 MP. +2020001 - Fried Chicken - Well-fried chicken.\nRecovers around 200 HP. +2020002 - Cake - A cake full of sweetness. Recovers 100 for both HP and MP. +2020003 - Pizza - A freshly-baked pizza. Recovers 400 HP. +2020004 - Hamburger - A hamburger with bulgogi in it. Recovers 400 HP. +2020005 - Hot Dog - A hotdog with ketchup on it. Recovers 300 HP. +2020006 - Hot Dog Supreme - A huge hot dog. Recovers 500 HP. +2020007 - Dried Squid - Well-dried. Recovers 600 HP. +2020008 - Fat Sausage - Tastes great, and is quite nutritious. Recovers 1200 HP. +2020009 - Orange Juice - Pure OJ... Recovers 450 MP. +2020010 - Grape Juice - Used real grapes for this. Recovers 900 MP. +2020011 - W Ramen - A cup ramen with awesome soup.\nRecovers 40% of HP and MP.. +2020012 - Melting Cheese - A mouth-watering cheese made out of fresh milk.\nRecovers 4000 HP. +2020013 - Reindeer Milk - Fresh milk squeezed out of a reindeer.\nRecovers 5000 HP. +2020014 - Sunrise Dew - Dew collected early morning. Recovers 4000 MP +2020015 - Sunset Dew - Dew collected late in the afternoon. Recovers 5000 MP. +2020016 - Cheesecake - MapleStory's 4th Anniversary Cake. Recovers 1200 HP and MP. +2020017 - Strawberry Cream Cake - MapleStory 4th Anniversary Cake. Recovers 1400 HP and MP. +2020018 - Chocolate Cream Cake - MapleStory 4th Anniversary Cake. Recovers 1600 HP and MP. +2020019 - Chocolate Cake - MapleStory 4th Anniversary Cake. Recovers 1800 HP and MP. +2020020 - Wedding Cake - A Wedding cake that coming Recovers 2000 HP and MP. +2020021 - Nemi's Lunch Box - A fresh-made lunch box made by Nemi of Ludibrium for her dad, Kaho of the Toy Factory. Recovers 10 HP. +2020022 - White Chocolate - A very delicious, home-made white chocolate. Attack + 5 for 30 minutes. +2020023 - Dark Chocolate - A very delicious, home-made dark chocolate. Magic Attack + 5 for 30 minutes. +2020024 - Chocolate Basket - A basket full of delicious, home-made chocolate decorated with ribbons and marbles. Avoidability, speed and accuracy +10 each for 30 minutes. +2020025 - Pineapple Candy - A very sweet, home-made pineapple candy. Attack +5 for 30 minutes. +2020026 - Strawberry Candy - A very sweet, home-made strawberry candy. Magic Att. +5 for 30 minutes. +2020027 - Candy Basket - A basket full of sweet home-made fruit candies decorated with ribbons and marbles. Avoidability, speed and accuracy +10 each for 30 minutes. +2020028 - Chocolate - Milk chocolate that has a strong sweet scent. This is used to make the chocolate-dipped cookie stick.\nRecovers each of HP and MP by 1000. +2020029 - Corn - A fresh corn plucked right off the stalk.\nRecovers 100 MP. +2020030 - Roasted Turkey - A well-roasted turkey enough to feed the whole family.\nRecovers 100 HP. +2020031 - Coca_Cola - Sweet refreshing #cCoca-Cola#.\nRecovers HP and MP by 30%. +2020032 - Birthday Cake - A tasty-looking cake full of whipped cream and fruit toppings.\nRecovers 365 MP and HP. +2022000 - Pure Water - Very clean water.\nRecovers up to 800 MP. +2022001 - Red Bean Porridge - A hot steamy porridge made out of red beans. At an HP-decreasing map, whenever such map damage is dealt, 10 HP will be protected. +2022002 - Cider - A cold soft drink.\nIncreases weapon attack for 5 min.\nAccuracy -5 for 5 min., though. +2022003 - Unagi - Well-seasoned eel.\nRecovers 1000 HP. +2022004 - Song Pyun - Filled with royal jelly.\nRecovers 1500 HP. +2022005 - Han Gwa - A traditional Korean snack.\nRecovers 1500 MP. +2022006 - Rice-Cake Soup - Just got done boiling.\nRecovers 500 for both HP and MP. +2022007 - Triangular Sushi(plum) - A nice triangular sushi with plum in it. \nRecovers 20% of both HP and MP. +2022008 - Triangular Sushi(salmon) - A nice triangular sushi with salmon in it. \nRecovers 30% of both HP and MP. +2022009 - Triangular Sushi(bonito) - A nice triangular sushi with bonito in it. \nRecovers 40% of both HP and MP. +2022010 - Triangular Sushi(pollack) - A nice triangular sushi with pollack in it. \nRecovers 50% of both HP and MP. +2022011 - Triangular Sushi(mushroom) - A nice triangular sushi with mushroom in it. \nRecovers 60% of both HP and MP. +2022012 - Sushi(tuna) - Sushi made out of fresh fish near Victoria Island.\nRecovers 1000 HP. +2022013 - Sushi(salmon) - Sushi made out of fresh fish near Victoria Island.\nRecovers 500 HP. +2022014 - Dango - Taste the sweetness of this dango.\nRecovers 200 HP & MP. +2022015 - Mushroom Miso Ramen - Only the finest ingredients are used to make this Miso Ramen.\nRecovers 80% for both HP and MP. +2022016 - Maple Special Bento - A special bento with meat and mushroom.\nRecovers 500 for both HP and MP. +2022017 - Ramen - A bowl of ramen cooked with Robo's special recipe.\nRecovers HP 1000. +2022018 - Kinoko Ramen(roasted pork) - A bowl of ramen cooked with roasted pork in the soup.\nRecovers HP 1500. +2022019 - Kinoko Ramen(pig head) - A bowl of ramen cooked with pig head in the soup.\nRecovers HP 800. +2022020 - Kinoko Ramen(salt) - A bowl of ramen cooked with salt in the soup. Tastes a little peculiar...\nRecovers HP 500. +2022021 - Fish Cake(skewer) - A Fish Cake skewer which also includes a bunch of vegetables.\nRecovers MP 250. +2022022 - Fish Cake(dish) - A dish full of tasty Fish Cake.\nRecovers MP 500. +2022023 - Tri-colored Dango - A tri-colored dango that includes a handful of tasty dango.\nRecovers each of HP and MP by 400. +2022024 - Takoyaki (Octopus Ball) - A hot, tasty-looking Takoyaki.nAttack +8 for 5 minutes. +2022025 - Takoyaki (jumbo) - Two servings worth of Takoyaki.nAttack +8 for 10 minutes. +2022026 - Yakisoba - A bowl of Yakisoba which includes vegetable, seafood, and noodles mixed with a delicious sauce.nMagic Attack +10 for 5 minutes. +2022027 - Yakisoba (x2) - Double the serving of a normal bowl of Yakisoba which includes vegetable, seafood, and noodles mixed with a delicious sauce.nMagic Attack +10 for 10 minutes. +2022028 - Valentine Chocolate (Dark) - A rich, dark chocolate for your special someone on Valentine's Day. Recovers 50% of HP and MP. +2022029 - Valentine Chocolate (Strawberry) - A rich, dark chocolate for your special someone on Valentine's Day. Recovers 100% of HP and MP. +2022030 - Valentine Chocolate (White) - A tasty white chocolate for your special someone on Valentine's Day. Accuracy +10 for 5 minutes. +2022031 - Cookie - Crispy on the cover and soft inside, this cookie is definitely worth a bite. +2022032 - Marshmallow - A mushy, yummy-looking marshmallow. +2022033 - Candy - A sparkling candy with a scent of tropical fruit. +2022034 - Zong Zi - A tiny seed of a fruit.\nRecovers 50 HP. +2022035 - Maple Cola - none +2022036 - Candy Basket - Defense and avoidablity will be increased by 300 for 30 minutes. +2022037 - Pink Rice Cake - Recovers 500 HP and MP. +2022038 - Rice Cookie - Recovers 1500 for both HP and MP. +2022039 - Nependeath's Honey - Recovers 1000 for both HP and MP. +2022040 - Air Bubble - Air bubble enables breathing in the water for 15 minutes. +2022041 - Fried shrimp - Recovers 500 of HP and MP. +2022042 - Cookie - Crispy on the outside, marshmellow-soft on the inside, this cookie can be traced from afar by its sweet smell.nWeapon & Magic Attack +20 for 30 minutes. +2022043 - Fruity Candy - Multi-colored, fruity-flavored candies.nSpeed +10 for 30 minutes. +2022044 - New Year Rice Cake - Attack +20 for 10 min. +2022045 - New Year Lunchbox - Recovers 2000 HP & MP +2022046 - Seaweed - null +2022047 - Cooked Sea Bream - Magic Attack +35 for 10 min. +2022048 - New Year Rice Soup - Accuracy +30 for 5 min. +2022049 - Steamed Crab - Weapon Def. +100 for 5 min. +2022050 - Roasted pork - A piece of roasted pork that is favorite of Yellow King Goblin. Marinated just right, and it even looks delicious enough for one to salivate over it. Recovers 800 HP. +2022051 - Buckwheat paste - A buckwheat paste that is the favorite of Green King Goblin. Bouncy like jelly, yet very nutritious. Recovers 800 MP. +2022052 - Rice Wine - A cup of wine made out of fermented rice that is the favorite of Blue King Goblin. An aroma of a combination of vinegar-like spike and smoothness of a tea tickles the nose of those near it. Recovers 400 each of HP and MP. +2022053 - Jujube - A ripe, red jujube.\nRecovers 30 HP. +2022054 - Pear - A big, juicy-looking pear.\nRecovers 30 HP. +2022055 - Persimmon - A ripe, orangy Persimmon.\nRecovers 30 HP. +2022056 - Chestnut - A ripe, brown chestnut just picked out of a tree.\nRecovers 30 HP. +2022057 - Tofu - Made out of soy beans, it is one healthy food recommended for everyone.\nRecovers 50 HP. +2022058 - Dumpling - A mixture of pork and vegetable wrapped up in a thin layer of wheat.\nRecovers 1500 HP. +2022060 - Lotus Perfume - A perfume that contains power-boosting aroma. nAttack, Defense, Magic Attack +10 for 20 min. +2022061 - Oriental Perfume - A perfume that contains power-boosting aroma. nAttack, Defense, Magic Attack +15 for 20 min. +2022062 - Chrysanthemum Perfume - A perfume that contains power-boosting aroma. nAttack, Defense, Magic Attack +20 for 20 min. +2022063 - Corn Stick - A roasted corn on a skewer. Very delicious looking. \nRecovers HP 800. +2022064 - Fruit Stick - A snackery with fruity-flavored candies on the skewer.\nRecovers MP 800. +2022065 - Yellow Easter Egg - A freshly boiled egg colored in yellow. Recovers 100 HP and MP. +2022066 - Green Easter Egg - A freshly boiled egg colored in green. \nRecovers 200 HP and MP. +2022068 - Yellow Cider - A cold soft-drink. Magic Attack +35 for 5 min. +2022069 - Red Cider - A cold soft-drink. Attack +34 for 5 min. +2022070 - Congrats from GM - A mystical spell that can only be casted by a GM as a sign of congratulation. Weapon & Magic Attack +20, Defense +100, Accuracy & Avoidability +50, Speed & Jump +10 for 1 HOUR. +2022071 - Korean Warrior - Weapon Attack +20, Magic Attack +20 for 10 min. +2022072 - Forza Corea - Gives +50 Weapon Defense and +50 Magic Defense for 10 minutes. +2022073 - A Prayer for Victory - Increases Jump +10, Speed +20 for 20 minutes. +2022074 - Oolleung Squid - Dried squid from Oolleung renowned for its taste. \nRecovers 500 HP & MP. +2022075 - Mini Coke - A sweet, tasty, carbonated Coke featured in a Mini Can. nAttack +8, Magic Attack +8 for 20 minutes. +2022076 - Coke Pill - A pill made out of a sweet, tasty, carbonated Coke. nAttack +10, Magic Attack +10, Defense +10 for 15 minutes. +2022077 - Coke Lite Pill - A pill made out of a sweet, tasty, carbonated Coke. nAttack +12, Magic Attack +12, Defense +12 for 15 minutes. +2022078 - Coke Zero Pill - A pill made out of a sweet, tasty, carbonated Coke. nAttack +15, Magic Attack +15, Defense +15 for 15 minutes. +2022079 - Barbecue - A fresh Barbecue meat.\nRecovers 1000 HP. +2022086 - Red Fruit - A curious-looking fruit that increases Attack by 8 for 10 minutes. Kicks in as soon as the first bite is taken. +2022087 - Black Fruit - A curious-looking fruit that increases Defense by 15 for 10 minutes. Kicks in as soon as the first bite is taken. +2022088 - Blue Fruit - A curious-looking fruit that increases Magic Attack by 10 for 10 minutes. Kicks in as soon as the first bite is taken. +2022089 - Baby Dragon Food - A delicious bowl of baby food for the baby dragon. Attack +7 for 20 minutes. +2022090 - Blessing from Wonky the Fairy - A blessing from Wonky the Fairy. Increases attack & magic attack. +2022091 - Blessing from Wonky the Fairy - A blessing from Wonky the Fairy. Increases weapon defense & magic defense. +2022092 - Blessing from Wonky the Fairy - A blessing from Wonky the Fairy. Increases accuracy and avoidability. +2022093 - Blessing from Wonky the Fairy - A blessing from Wonky the Fairy. Increases speed and jump. +2022094 - Chicken Soup - Weapon Attack+20, Magic Attack +30 for 15 minutes. +2022096 - Fried Chicken - Crispy on the outside, soft on the inside. \nRecovers HP 400. +2022097 - Chun Gwon - A dish full of renowned Chun Gwon. nnRecovers MP 400. +2022098 - Bubble Gum - A fruity bubble gum that can make a huge bubble.n Jump +5 for 20 minutes. +2022099 - HP up - HP up +2022100 - Song Pyun - Weapon Attack +20, Magic Attack +30 for 15 minutes. +2022101 - Han Gwa - Weapon Attack +20, Magic Attack +30 for 15 minutes. +2022102 - Massage Oil - A massage oil used for the Thai Body Massage session. Attack +8 for 10 minutes. +2022103 - Thai Cookie - A sweet, Thai treat. \nRecovers HP 150. +2022105 - Green Malady's Candy - A magical concoction bewitched for wellness by Malady. \nRecovers 50% of the HP. Also recovers 50% of MP. +2022106 - Red Malady's Candy - An enticing piece of candy straight from Malady's finest pot. \nRecovers around 300 MP. +2022107 - Blue Malady's Candy - This delicious candy holds a special blessing from Malady. \nRecovers all HP and MP. +2022108 - Horntail Squad : Victory - Weapon Attack +30, Magic Attack +40, Weapon Defense +200, Magic Defense +200 for one hour. +2022109 - The Breath of Nine Spirit - Weapon Attack +25, Magic Attack +35, Weapon Defense +150, Magic Defense +150 for one hour. +2022112 - Baby Witch - Weapon Attack +20, Magic Attack +30 nfor 15 minutes. +2022113 - Pumpkin Pie - A piping hot, delicious pie right from Grandma Benson's oven. Eat up! \nRecovers 700 HP, 400 MP and Defense +50 for 10 mins. +2022114 - Enchanted Apple Crisp - A hot pastry made from mystic apples. At an HP-decreasing map, whenever such map damage is dealt, 50% HP will be protected. (Modification Request) +2022116 - Peach - Recovers a set amount of HP and MP. Only obtainable in Mu Lung. +2022117 - Maple Syrup - A mystical syrup from maple tree. Weapon & Magic Attack +20, Defense +50, Accuracy & Avoidability +30, Speed & Jump +10 for 20 MINUTES. +2022118 - Admin's Congrats - A mysterious form of bless given by the administrator. Attack +10, Magic Attack +10, Defense+ 30, Accuracy +20, Avoidability +20, Speed +3 and Jump +3 for 20 minutes +2022119 - Tree Ornament - Weapon Attack +20, Magic Attack +30 forn15 minutes. +2022120 - Christmas Melon - A special melon imbued with Holiday blessings. Delicious! nRecovers 2000 HP and 1000 MP. +2022121 - Gelt Chocolate - A special piece of tasty chocolate given out at the Festival of Lights. \nRecovers 100 HP & MP, and +120 Attack +120 Weapon Def. +30 Accuracy +30 Avoidability + 10 Speed +10 Jump for 10 minutes. +2022123 - Banana Graham Pie - This scrumptious pie is sure to lighten your spirits! nRecovers 400 HP & 500 MP, and +120 Magic +120 Magic Def. +30 Accuracy +30 Avoidability + 10 Speed +10 Jump for 10 minutes. +2022124 - Magic of Kasandra - Double the meso drop rate. +2022125 - Increase in Weapon Defense - An increase in weapon defense with a little help from a Dark Spirit. +2022126 - Increase in Magic Defense - An increase in magic defense with a little help from a Dark Spirit. +2022127 - Increase in Accuracy - An increase in accuracy with a little help from a Dark Spirit. +2022128 - Increase in Avoidablility - An increase in avoidability with a little help from a Dark Spirit. +2022129 - Increase in Attack - An increase in attack with a little help from a Dark Spirit. +2022130 - Blossom Juice - A special energy drink made from crushed Cherry Blossoms and other mystic ingredients. Recovers 1200 HP, 900 MP and +12 to DEF for 20 minutes. +2022131 - Ginseng Concentrate - A ginseng concentrate. Recovers both HP and MP by 400. +2022132 - Bellflower Concentrate - A Bellflower concentrate. Recovers both HP and MP by 200. +2022142 - Mind & Heart Medicine - A hot, soup-like medicine made out of bear paws. Drinking this will revitalize the brain to the tune of Accuracy +10 for 15 minutes. +2022143 - Mastery Medicine - A hot, soup-like medicine that allegedly turns students into bona-fide Masters. Magic Attack +10 for 15 minutes. +2022144 - Body & Physics Medicine - A hot, soup-like medicine made out of snake tails. Drinking this will revitalize the body to the tune of Attack +8 for 15 minutes. +2022145 - Canned Peach - Homemade canned peach made by the weird pharmacist in Mu Lung, Dr. Do.\nRecovers around 1000 nHP. +2022146 - Peach Juice - Peace juice made by the weird pharmacist in Mu Lung, Dr. DonRecovers around 500 MP. +2022147 - Bellflower Medicine Soup - A herb medicine made from bellflowers and snake.nAttack + 6 for 10 minutes. +2022148 - Pill of Tunnel Vision - A pill of acorn powder. The marksman's liquid medicine. Increases +12 accuracy for 10 minutes. +2022149 - Pill of Intelligence - A pill of powdered deer antler and wild ginseng. Increases Magic Attack by +10 for 10 minutes. +2022150 - Slithering Balm - Ointment medicine made from Mr. Alli's skin. Gives +12 Avoidability for 10 minutes. +2022151 - Cassandra's Magic - A mysterious spell cast by Cassandra. Gives +20 Att and Magic, +100 Defense, +50 accuracy and avoidability, and +10 speed and jump for 1 hour. +2022152 - Cassandra's Magic - A mysterious spell cast by Cassandra. Gives +10 Att and Magic, +30 Defense, +20 accuracy and avoidability, and +3 speed and jump for 20 minutes. +2022153 - Happy birthday - Gives +20 W. Att, +30 M. Att for 15 minutes to all the characters in the map when item was used. +2022154 - Petit Rose - Gives +20 Weapon Attack, +30 Magic Attack for 15 minutes. +2022155 - Desert Mist - Pure water extracted from Katuse roots. Recovers 200 MP. +2022156 - Black Bean Noodle - Nothing like a hot bowl of noodles to cap off a great day. Increases Weapon Attack and Magic Attack by +13 for 30 minutes. +2022160 - Party Mana Elixir - Recovers 300 MP for all members of your party. +2022161 - Party Elixir - Recovers 50% of HP and MP for all members of your party. +2022162 - Party Power Elixir - Recovers all HP and HP for all members of your party. +2022163 - Party All Cure Potion - Cures any abnormal state affecting any members of your party. +2022164 - Mini Cube of Darkness - One of the members in the opposing party will have their buffs nullified. +2022165 - Cube of Darkness - Everyone in the opposing party will have their buffs nullified. +2022166 - Stunner - One of the members of the opposing party will be stunned. +2022174 - White Potion - A highly-concentrated potion made out of red herbs.\nRecovers 300 HP. +2022179 - Onyx Apple - A rare, ripe apple imbued with power. Recovers 90% HP & MP, and provides +100 W.Att, +100 M.Att, +20 Def for 10 minutes. +2022180 - Amorian Rice Cookie - A special Rice Cookie from Amos. Recovers 3000 HP and MP. +2022181 - Victoria's Amorian Basket - Victoria's special basket, made just for Amos. Provides a boost of +40 to Avoidability, speed and accuracy for 10 minutes +2022182 - Crystalized Pineapple Chew - A very sweet, home-made pineapple chew. Provides a bonus of +20 ATT for 7 minutes. +2022183 - Flower Shower - Increases physical attack by 20, Magic attack by 30 for 15 minutes. +2022184 - Maple BBQ - Delicious, succulent BBQ meat. Take a big bite--you know you want to. Weapon attack +13, Magic Attack +13 for 20 min. +2022185 - Fireworks - The fireworks for celebrating MV's defeat. Attack +20, Magic Attack +20 for 10 min. +2022186 - Soft White Bun - Freshly baked bread, hot from the oven! Makes you warm inside and prevents HP loss for 30 minutes in the El Nath region. +2022187 - Cassandra's Magic - Breathe comfortably underwater for 30 minutes with Cassandra's magic. Prevents the constant HP damage you receive for every 10 seconds underwater. +2022189 - Grilled Cheese - A tasty, golden brown, grilled cheese sandwich. Recovers 500 HP & MP and gives a boost of +20 Def for 30 mins. +2022190 - Cherry Pie - A piping hot pie that warrants eating. Recovers 2000 HP/MP and has a bonus of +2 ATT for 8 minutes. +2022191 - Supreme Pizza - A piping hot pizza with all toppings. Recovers 900 HP and 600 MP. +2022192 - Waffle - A hot, buttery waffle that's ready to eat. Recovers 300 HP and MP +2022193 - Merlin Orb - A majestic orb said to have been the property of a powerful mage. Gives a boost of +40 M. Att for 15 mins. +2022194 - Leaf Crystal - An uncommon crystal formed by the leaves of an Ellinian vine. Provides a boost of +12 W. Att, +20 M. Att, +20 DEF/M. DEF, +8 Avoidability/Accuracy for 20 minutes. May only be used 5 times before it vanishes. +2022195 - Mapleade - Refreshing drink for thirsty travelers! Recovers 80% HP, 90% MP and gives a boost of +2 Att for 30 mins. +2022196 - Wedding Bouquet - A special wedding bouquet. Gives +5 Weapon Attack and +3 Magic Attack for 5 minutes. +2022197 - Wedding Bouquet - A special wedding bouquet. Gives +8 Weapon Attack and +5 Magic Attack for 5 minutes. +2022198 - Russellon's Pills - A pill made by Russellon from Magatia. The actual effects of this pill remain a mystery... +2022199 - Russellon's Potion - A potion made by Russellon from Magatia. The actual effects of this potion remain a mystery... +2022200 - Wedding Bouquet - A special wedding bouquet. Gives +10 Weapon Attack and +8 Magic Attack for 5 minutes. +2022203 - Laksa - Singapore local speciality spicy noodle. It triggers one to sweat after consumpsion.\nRecovers 800 HP. +2022204 - Hokkien Mee - Singapore's local speciality prawn noodles. It is normally served with prawns, chili & lime. \nRecovers 1200 HP. +2022205 - Carrot Cake - A delicious local traditional food. It is made up of carrot extracts & secret recipes. \nRecovers 1800 HP. +2022206 - Chicken Rice - A delicious Singapore local traditional food. The rice is covered with the fragrant secret recipes of chicken extracts.\nRecovers 2200 HP. +2022207 - Satay - A delicious Singapore local traditional BBQ food. It is normally served with curry sauces. Its fragrance can be sensed a distance away.\nRecovers 2600 HP. +2022208 - Guava - A fruit that is hard & sour. Its nutritional value improves our digestive system.\nRecovers 500 MP. +2022209 - Rambutan - A fruit that is delicious & juicy. It is so sweet that it attracts ants if they are not well attended to. \nRecovers 800 MP +2022210 - Dragon Fruit - Another fruit that is delicious & juicy, similar to Rambutan, it will attract unwanted pests if they are not attended. \nRecovers 1600 MP. +2022211 - Durian - The fruit is nominated as the King of Fruits around the region. Despite having a hard & thorny shell, the fruit that lies within is extremely fragrant, and it tastes great! nRecovers 3200 MP. +2022212 - Nasi Lemak - A popular Malay Traditional Dish mainly made up of rice, egg & cucumber, soaked with pandan fragrant.nImproves Magic Attack +8 for 5 minutes. +2022213 - Roti Prata - A popular Indian Traditional Dish made up of flour. It is normally served with sugar & curry sauces.n Improves Magic Attack +8 for 10 Minutes. +2022214 - Pepper Crab - A popular Chinese traditional dish made of up fresh steam crab, pepper, egg & secret recipes.nImproves Weapon Attack +8 for 5 minutes. +2022215 - Chili Crab - A popular Chinese traditional dish made of up fresh steam crab, chili power, egg & secret recipes.nImproves Weapon Attack +8 for 10 minutes. +2022224 - Russellon's Potion - A potion made by Russellon from Magatia. The actual effects of this potion remain a mystery... +2022225 - Russellon's Potion - A potion made by Russellon from Magatia. The actual effects of this potion remain a mystery... +2022226 - Russellon's Potion - A potion made by Russellon from Magatia. The actual effects of this potion remain a mystery... +2022227 - Russellon's Potion - A potion made by Russellon from Magatia. The actual effects of this potion remain a mystery... +2022228 - Russellon's Potion - A potion made by Russellon from Magatia. The actual effects of this potion remain a mystery... +2022238 - MesoGears Ring - An ancient ring of wondrous power. There appears to be a faded inscription along the side..."Subani". Provides a boost of +8 W. Att, +15 M. Att, +12 Def/M. Def. for 8 minutes. +2022239 - Cassandra's Magic - A special magic spell cast by Cassandra. For 30 minutes, Attack +10, Magic Attack +10, DEF +30, Accuracy +20, Avoidability +20, Speed +7, and Jump +5. +2022240 - Cassandra's Magic - A special magic spell cast by Cassandra. For 1 hour, Attack +10, Magic Attack +10, DEF +30, Accuracy +20, Avoidability +20, Speed +7, and Jump +5. +2022242 - Edmund's Special Brew - A healing tonic made with Edmund's secret recipe. Just the thing when you're feeling under the weather! [Restores 50% of HP and MP, also gives +14 W. Att + 30 M.Att, for 10 minutes.] +2022243 - Sophilia's Necklace - A jewel crafted by Prendergast for his daughter, intended as a protective gift for her 16th birthday. +2022244 - Smore - A tasty, hot smore. Perfect for a toasty Halloween night! +2022245 - Heartstopper - Just one taste of this spicy candy and it'll feel like your heart's on fire! +2022246 - Pumpkin Taffy - Sweetened pumpkin taffy on a candy cane stick. [Gives +15 Weapon Defense, +15 Magic Defense for 5 minutes] +2022247 - Red Gummy Slime - Super-chewy gummy slimes. This one is cherry-flavored. If only real Slimes tasted this good. [Restore 1200HP, 1200MP] +2022248 - Green Gummy Slime - Super-chewy gummy slimes. This one is lime-flavored. If only real Slimes tasted this good. [Restores 600 HP] +2022249 - Purple Gummy Slime - Super-chewy gummy slimes. This one is grape-flavored. If only real Slimes tasted this good. [Restores 600 MP] +2022250 - Orange Gummy Slime - Super-chewy gummy slimes. This one is orange-flavored. If only real Slimes tasted this good. [Restores 600HP, 600MP] +2022251 - Maple Pop - A mouth-watering, delectable sweet treat! [Gives +100 Accuracy for 1 minute] +2022252 - Tae Roon's Note - A small note written by Tae Roon. This note is enchanted, so it boosts weapon attack and magic attack by 3 for 1 minute. +2022253 - Mushroom Candy - Delicious mushroom candy from Sen. This candy makes anyone feel good about themselves. So good, that it boosts Jump +3 for 3 minutes. +2022255 - Pumpkin Pieces - Pieces of pumpkin left over from making halloween Jack-o'-Lanterns. The pumpkin, perfectly ripe, has an aroma that is sweeter than ever. Each piece recovers 50 HP and 50 MP. +2022256 - Halloween Candy - A candy wrapped in stripes. Kids love it. Recovers 20 HP and MP. +2022257 - Power of the Glowing Rock - Received a mysterious power from the Glowing Rock. Boosts the weapon attack and magic attack slightly for 10 minutes. +2022258 - Coconut Juice - A small hole is up on the top of the Coconut, where the straw goes in. Drink the juice with the straw for maximum refreshment. Recovers 100 HP. +2022259 - Attack Crystal - A red crystal with a mysterious power packed in. Attack +5 for 5 minutes. +2022260 - Accuracy Crystal - A blue crystal with a mysterious power packed in. Accuracy +5 for 5 minutes. +2022261 - Stuffing Scoop - A delicious scoop of stuffing. This treat comes around only once in a while so eat it up before it gets cold. \n[Restores 600 HP/ 600 MP] +2022262 - Cranberry Sauce - This delicious cranberry sauce complements almost any meal! \n[Gives + 30 Magic Attack for 3 minutes] +2022263 - Mashed Potato - It looks like someone dropped this potato. \n[Restores 800 HP] +2022264 - Gravy - The only thing better than a gravy boat is a gravy train. \n[Restores 800 MP] +2022265 - Snowing Fishbread - Increases Physical Attack Power by 20 and Magic Attack Power by 30 for 15 minutes. +2022266 - Power Punch - A fist used during the Hunting Tournament. Boosts weapon and magic attack. +2022267 - Wing of the Wind - A set of wings used during the Hunting Tournament. Boosts speed and jump. +2022268 - Crazy Skull - An eyeball-rotating skull used during the Hunting Tournament. Inverts directions. +2022269 - Shield - A shield used during the Hunting Tournament. Protects the owner from the bomb once. +2022271 - Maplemas Ham - A delicious looking Christmas Ham with a sprig of mistletoe on top.\nRecovers 3000 HP and MP. +2022272 - Smoken Salmon - The traditional Versalmas dinner. Smells... like fish. \nRecovers 2385 HP and 3791 MP. +2022273 - Ssiws Cheese - Cheese from the alternate dimension of Versal. Looks funny but smells quite nice. nGives +220 Magic Attack for 2 minutes +2022274 - Sugar-Coated Olives - Olives frosted with pink sugar -- a special treat beloved by children from Versal! nGives +40 Speed and + 25 Jump for 5 minutes. +2022275 - Caramel Onion - O-Pongo's favorite treat! Creamy caramel with a crunchy onion center! nRestores 800 HP and MP. +2022276 - Chocolate Wafers - A crispy wafer layered with chocolate creme. nGives +40 Weapon Attack for 3 minutes +2022277 - Sunblock - SPF 1000. Blocks all harmful rays, including magical ones. nGives +200 Magic Defense for 10 minutes. +2022278 - Lump of Coal - Restores 1 HP and 1 MP. +2022279 - Snow Cake Piece - A piece of cake that consists of snow-white whipped cream and cherry. Recovers 300 HP and MP. +2022280 - A Flurry of Snow - Increases Physical Attack Power by 20 and Magic Attack Power by 30 for 15 minutes. +2022281 - Chinese Firecrackers - A string of Chinese firecrackers known to scare away ghoulish spirits. +2022282 - Naricain's Demon Elixir - A fiery black liquid that gives the user the power of a thousand demons when consumed. [Gives +140 Weapon Attack for 8 minutes] +2022283 - Subani's Mystic Cauldron - Drinking the swirling blue liquid within this small iron pot fills the user with an energy that emanates a protective aura. [Gives +100 Overall Defense, +200 Magic Attack for 10 minutes] +2022284 - Barricade Booster - John Barricade's special concoction, used to get him out of tight jams. For use in emergencies! [Gives +50 Avoidability, +50 Accuracy, +10 Jump for 5 minutes] +2022285 - Sweet Heart - Weapon attack +20, Magic attack +30 for 15 minutes. +2022296 - Power Scream - A power scream from Maple Admin. Weapon attack +8, Magic attack +12 for 30 minutes. +2022302 - Party Bear - Weapon attack +20, Magic attack +30 for 15 minutes. +2022305 - Taru Face Paint - This mystical camouflage allows the user to blend into his or her surroundings. [Gives +100 Avoidability for 5 minutes.] +2022306 - Primal Brew - A mixture made from an ancient Taru shaman recipe. Instills warriors with the primal strength of the Jungle Spirit. [Gives +35 Weapon Attack, +10 Accuracy for 20 minutes.] +2022307 - Spirit Herbs - Special incense used by ancient Taru shamans for communion rituals with the Jungle Spirit. [Gives +90 Magic Attack for 20 minutes.] +2022308 - Jungle Juice - A delicious natural beverage made from a secret blend of jungle fruits, flowers, roots, and vines. The perfect thing to fuel a Taru brave through a long jungle trek! [Restores 1000 HP and 2000 MP.] +2022309 - Treasure Hunt Note - Spread all over the Maple World for the 4th anniversary of MapleStory, this note contains the prizes that you'll win when this is found. +2022310 - Chocolate Cream Cupcake - A delicious chocolate cupcake with vanilla cream filling. One taste and you'll be hooked! [Restores 300 HP & MP, and gives +30 Accuracy, +30 Speed, and +30 Jump for 3 minutes.] +2022311 - Big Cream Puff - A rare, tasty dessert. Known as the 'Warrior's Dessert' to some and the 'Fattening Treat' to others. [Gives +30 Weapon Attack for 3 minutes.] +2022332 - Agent O's Encouragement - An encouraging message from Agent O. Jump rate will be increased by 20 for 30 minutes. +2022333 - Agent O's Encouragement - An encouraging message from Agent O. Speed will be increased by 40 for 30 minutes. +2022335 - Baby Chick Cookie - This is a cookie shaped like a baby chick. Recovers 1000 HP and MP. +2022336 - Secret Box - Secret Box +2022337 - Sorcerer's Potion - This is a potion that you can buy from Sorcerer. It's potent, but its side-effects are equally strong. It's also very expensive, so be careful with it. +2022338 - VitroJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Looks suspiciously like an energy drink. Drink at your own risk! [Gives +14 Weapon Attack for 15 minutes] +2022339 - NitroJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Looks suspiciously like an energy drink. Drink at your own risk! [Gives +22 Weapon Attack for 10 minutes] +2022340 - BlastroJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Looks suspiciously like an energy drink. Drink at your own risk! [Gives +90 Weapon Attack for 1 minute] +2022341 - ElectroJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Looks suspiciously like an energy drink, but drink at your own risk! [Gives +50 Magic Attack for 10 minutes.] +2022342 - MegaJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Looks suspiciously like an energy drink, but drink at your own risk! [Gives +200 Magic Attack for 30 seconds.] +2022343 - GigaJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Tasty and strong enough to dissolve rust from machinery! Drink at your own risk! [Gives +700 Magic Attack for 10 seconds.] +2022344 - JigaJuice - A futuristic power pack full of liquid fuel synthesized by T-1337. Drink at your own risk! Gives the user a sudden jolting surge of energy, so use it or lose it! [Gives +1000 Magic Attack for 5 seconds.] +2022345 - The Energizer Drink - An energizing drink packed with electrolytes. For 30 minutes, you will receive a boost of: Attack +25, Magic Attack +30, Defense +30 +2022354 - Tick-Tock's Egg - This is Tick-Tock's egg. There must be something inside. +2022355 - Cronos' Egg - This is Cronos' egg. There must be something inside. +2022436 - Holiday Buff - A Holiday present from the Snow Spirit. For 15 min., Speed +5. +2022437 - Holiday Buff - A Holiday present from the Snow Spirit. For 15 min., Jump +7. +2022438 - Holiday Buff - A Holiday present from the Snow Spirit. For 15 min., Speed and Jump +10. +2022439 - Elixir of Darkness - A mysterious concoction of herbs brewed deep within the mountains of El Nath. [Gives +200 Magic Attack, -25 Defense for 5 minutes.] +2022440 - Gold Dust - Ancient dust found long ago by the miners in El Nath. [Gives +20 Defense for 5 minutes.] +2022441 - Adonis Cauldron - A rather clumsy attempt at potion creation by Adonis. Still useful in the hands of a skilled warrior. [Gives +40 Weapon Attack, +50 Avoidability, -30 Defense for 10 minutes.] +2022443 - Fireworks - The fireworks for celebrating MV's defeat. Speed +5, Physical & Magic Attack +5 for 20 min. +2022444 - Mihile's Blessing - Once I used the 'Torn Cygnus' Book', a mysterious power covered me and blessed me. +2022445 - Oz's Blessing - Once I used the 'Torn Cygnus' Book', a mysterious power covered me and blessed me. +2022446 - Irena's Blessing - Once I used the 'Torn Cygnus' Book', a mysterious power covered me and blessed me. +2022447 - Eckhart's Blessing - Once I used the 'Torn Cygnus' Book', a mysterious power covered me and blessed me. +2022448 - Hawkeye's Blessing - Once I used the 'Torn Cygnus' Book', a mysterious power covered me and blessed me. +2022449 - Pink Bean Squad : Victory - Weapon Attack +35, Magic Attack +45, Weapon Defense +250, Magic Defense +250 for one hour. +2022453 - Fireworks - The fireworks for celebrating MV's defeat. Speed +5, Physical & Magic Attack +5 for 20 min. +2022454 - Cygnus's Blessing - Once I completed Cygnus' Book, the spirit's power covered me and blessed me. It increased my Attack Rate by 10, Physical Defense Rate by 80 and Speed by 5 for 10 minutes. +2022538 - Red Easter Egg - A freshly boiled egg colored in red. Recovers 400 HP and MP. +2030000 - Return Scroll - Nearest Town - Returns you to the nearest town. +2030001 - Return Scroll to Lith Harbor - Returns you to Lith Harbor. +2030002 - Return Scroll to Ellinia - Returns you to Ellinia. +2030003 - Return Scroll to Perion - Returns you to Perion. +2030004 - Return Scroll to Henesys - Returns you to Henesys. +2030005 - Return Scroll to Kerning City - Returns you to the dark Kerning City. +2030006 - Return Scroll to Sleepywood - Returns you to Sleepywood, a quiet and dark forest-town. +2030007 - Return Scroll for Dead Mine - Returns you to the dead mine at the higher ground of El Nath.nCan only be used in Orbis and El Nath. +2030008 - Coffee Milk - Returns you to the nearest town. +2030009 - Strawberry Milk - Returns you to Mushroom Shrine. +2030010 - Fruit Milk - Returns you to Showa Town. +2030011 - Command Center Warp Capsule - A warp capsule that allows the owner of the capsule to warp to the Command Center of Omega Sector. +2030012 - Ludibrium Warp Capsule - A warp capsule that returns you to Ludibrium. +2030016 - Phyllia's Warp Powder - Warp powder made by fairy Phyllia. Teleports you to Magatia when used inside the Nihal desert region. +2030019 - Nautilus Return Scroll - This scroll enables you to return to the Pirate village, Nautilus. This is a one use item and will disappear after use. +2030020 - Return to New Leaf City Scroll - Use this scroll to venture back to New Leaf City whenever you want! +2031000 - Masked Man's Invitation - An invitation from the Masked Man to the Halloween Party at the Haunted Mansion. Double-click to move straight to the mansion. +2031001 - Studio Invitation - An invitation to the studio for the event "For Guild Only". +2040000 - Scroll for Helmet for DEF - Improves the helmet's weapon def.\nSuccess rate:100%, weapon def. +1 +2040001 - Scroll for Helmet for DEF - Improves helmet def.\nSuccess rate:60%, weapon def.+2, magic def., +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040002 - Scroll for Helmet for DEF - Improves helmet def.\nSuccess Rate:10%, weapon def.+5, magic def.+3, accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040003 - Scroll for Helmet for HP - Improves MaxHP on hats.\nSuccess rate:100%, MaxHP+5 +2040004 - Scroll for Helmet for HP - Improves MaxHP on hats.\nSuccess rate:60%, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2040005 - Scroll for Helmet for HP - Improves MaxHP on hats.\nSuccess rate:10%, MaxHP+30. The success rate of this scroll can be enhanced by Vega's Spell. +2040006 - Scroll for Helmet for DEF - Improves helmet def.\nSuccess rate:100%, weapon def.+5, magic def.+3, accuracy+1 +2040007 - Scroll for Helmet for HP - Improves MaxHP on hats.\nSuccess rate:100%, MaxHP+30 +2040008 - Dark scroll for Helmet for DEF - Improves helmet def.\nSuccess rate:70%, weapon def.+2, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2040009 - Dark Scroll for Helmet for DEF - Improves the helmet def.\nSuccess rate:30%, weapon def.+5, magic def.+3, accuracy+1nIf failed, the item will be destroyed in a 50% rate. +2040010 - Scroll for Helmet for HP - Improves MaxHP on hats.\nSuccess Rate:70%, MaxHP+10nIf failed, the item will be destroyed in a 50% rate. +2040011 - Dark Scroll for Helmet for HP - Improves MaxHP on hats.\nSuccess Rate:30%, MaxHP+30nIf failed, the item will be destroyed in a 50% rate. +2040012 - Dark Scroll for Helmet for INT - Improves INT on hats.\nSuccess Rate: 70%. INT+2nIf failed, the item will be destroyed in a 50% rate. +2040013 - Dark Scroll for Helmet for INT - Improves INT on hats.\nSuccess Rate: 30%, INT +3nIf failed, the item will be destroyed in a 50% rate. +2040014 - Dark Scroll for Helmet for Accuracy - Improves the accuracy on the helmet.\nSuccess Rate 70%, Dex+1, accuracy +2nIf failed, the item will be destroyed at a 50% rate. +2040015 - Dark Scroll for Helmet for Accuracy - Improves the accuracy on the helmet.\nSuccess Rate 30%, Dex+2, accuracy +4nIf failed, the item will be destroyed at a 50% rate. +2040016 - Scroll for Helmet for Accuracy - Improves the helmet's accuracy option.\nSuccess Rate 10%, Dex+2, Accuracy +4. The success rate of this scroll can be enhanced by Vega's Spell. +2040017 - Scroll for Helmet for Accuracy - Improves the helmet's accuracy option.\nSuccess Rate 60%, Dex+1, Accuracy +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040018 - Scroll for Helmet for Accuracy - Improves the helmet's accuracy option.\nSuccess Rate 100%, Accuracy +1 +2040019 - Scroll for Helmet for DEF - Improves Weapon Defense on a Helmet.\nSuccess rate: 65%, Weapon Def. +2, Magic Def. +1 +2040020 - Scroll for Helmet for DEF - Improves Weapon Defense on a Helmet.\nSuccess rate: 15%, Weapon Def.+5, Magic Def.+3, Accuracy+1 +2040021 - Scroll for Helmet for MaxHP - Improves MaxHP on a Helmet.\nSuccess rate: 65%, MaxHP +10 +2040022 - Scroll for Helmet for MaxHP - Improves MaxHP on a Helmet.\nSuccess rate: 15%, MaxHP +30 +2040023 - Scroll for Rudolph's Horn 60% - Increases the weapon attack and magic attack of Rudolph's Horn.\nSuccess rate:60%, attack +1, magic att. +1 +2040024 - Scroll for Helmet for INT 100% - Improves INT on headwear..Success rate 100%, INT+1 +2040025 - Scroll for Helmet for INT 60% - Improves INT on headwear.\nSuccess rate 60%, INT+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040026 - Scroll for Helmet for INT 10% - Improves INT on headwear.\nSuccess rate 10%, INT+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040027 - Scroll for Helmet for DEX 100% - Improves DEX on headwear..Success rate 100%, DEX+1 +2040028 - Scroll for Helmet for DEX 70% - Improves DEX on headwear..Success rate 70%, DEX+2nIf failed, the item will be destroyed at a 50% rate. +2040029 - Scroll for Helmet for DEX 60% - Improves DEX on headwear.\nSuccess rate 60%, DEX+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040030 - Scroll for Helmet for DEX 30% - Improves DEX on headwear..Success rate 30%, DEX+3nIf failed, the item will be destroyed at a 50% rate. +2040031 - Scroll for Helmet for DEX 10% - Improves DEX on headwear.\nSuccess rate 10%, DEX+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040100 - Scroll for Face Accessory for HP - Improves MaxHP on face accessories.\nSuccess rate:10%, MaxHP +30. The success rate of this scroll can be enhanced by Vega's Spell. +2040101 - Scroll for Face Accessory for HP - Improves MaxHP on face accessories.\nSuccess rate:60%, MaxHP +15. The success rate of this scroll can be enhanced by Vega's Spell. +2040102 - Scroll for Face Accessory for HP - Improves MaxHP on face accessories.\nSuccess rate:100%, MaxHP +5 +2040103 - Dark Scroll for Face Accessory for HP - Improves MaxHP on face accessories.\nSuccess rate:30%, MaxHP +30 nIf failed, the item will be destroyed at a 50% rate. +2040104 - Dark Scroll for Face Accessory for HP - Improves MaxHP on face accessories.\nSuccess rate:70%, MaxHP +15 nIf failed, the item will be destroyed at a 50% rate. +2040105 - Scroll for Face Accessory for Avoidability - Improves avoidability on face accessories.\nSuccess rate:10%, Avoidability +2, DEX +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040106 - Scroll for Face Accessory for Avoidability - Improves avoidability on face accessories.\nSuccess rate:60%, Avoidability +1, DEX +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040107 - Scroll for Face Accessory for Avoidability - Improves avoidability on face accessories.\nSuccess rate:100%, Avoidability +1 +2040108 - Dark Scroll for Face Accessory for Avoidability - Improves avoidability on face accessories.\nSuccess rate:30%, Avoidability +2, DEX +2 nIf failed, the item will be destroyed at a 50% rate. +2040109 - Dark Scroll for Face Accessory for Avoidability - Improves avoidability on face accessories.\nSuccess rate:70%, Avoidability +1, DEX +1 nIf failed, the item will be destroyed at a 50% rate. +2040200 - Scroll for Eye Accessory for Accuracy - Improves accuracy on eye accessories.\nSuccess rate:10%, Accuracy +3, DEX +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040201 - Scroll for Eye Accessory for Accuracy - Improves accuracy on eye accessories.\nSuccess rate:60%, Accuracy +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040202 - Scroll for Eye Accessory for Accuracy - Improves accuracy on eye accessories.\nSuccess rate:100%, Accuracy +1 +2040203 - Dark Scroll for Eye Accessory for Accuracy - Improves accuracy on eye accessories.\nSuccess rate:30%, Accuracy +3, DEX +1 nIf failed, the item will be destroyed at a 50% rate. +2040204 - Dark Scroll for Eye Accessory for Accuracy - Improves accuracy on eye accessories.\nSuccess rate:70%, Accuracy +2 nIf failed, the item will be destroyed at a 50% rate. +2040205 - Scroll for Eye Accessory for INT - Improves INT on eye accessories.\nSuccess rate:10%, INT +3, Magic Def. +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040206 - Scroll for Eye Accessory for INT - Improves INT on eye accessories.\nSuccess rate:60%, INT +1, Magic Def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040207 - Scroll for Eye Accessory for INT - Improves INT on eye accessories.\nSuccess rate:100%, INT +1 +2040208 - Dark Scroll for Eye Accessory for INT - Improves INT on eye accessories.\nSuccess rate:30%, INT +3, Magic Def. +2 nIf failed, the item will be destroyed at a 50% rate. +2040209 - Dark Scroll for Eye Accessory for INT - Improves INT on eye accessories.\nSuccess rate:70%, INT +1, Magic Def. +1 nIf failed, the item will be destroyed at a 50% rate. +2040300 - Scroll for Earring for INT - Improves INT on ear accessory.\nSuccess rate:100%, magic attack+1 +2040301 - Scroll for Earring for INT - Improves INT on ear accessory.\nSuccess rate:60%, magic attack +2, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040302 - Scroll for Earring for INT - Improves INT on ear accessory.\nSuccess rate:10%, magic attack +5, INT+3, magic def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040303 - Scroll for Earring for INT - Improves INT on ear accessory.\nSuccess rate:30%, magic attack +5, INT+3, magic def. +1 +2040304 - Dark scroll for Earring for INT - Improves INT on ear accessory.\nSuccess rate:70%, magic attack +2, INT+1nIf failed, the item will be destroyed at a 50% rate. +2040305 - Dark scroll for Earring for INT - Improves INT on ear accessory.\nSuccess rate:30%, magic attack +5, INT+3, magic def. +1nIf failed, the item will be destroyed at a 50% rate. +2040306 - Dark scroll for Earring for DEX - Improves DEX on ear accesrroy.\nSuccess rate: 70%. DEX + 2nIf failed, the item will be destroyed at a 50% rate. +2040307 - Dark scroll for Earring for DEX - Improves DEX on ear accessorynSuccess rate: 30%. DEX + 3nIf failed, the item will be destroyed at a 50% rate. +2040308 - Dark Scroll for Earrings for DEF - Improves DEF on earringsnSuccess Rate 70%, weapon defense+1, magic defense+1nIf failed, the item will be destroyed at a 50% rate. +2040309 - Dark Scroll for Earrings for DEF - Improves DEF on earringsnSuccess Rate 30%, weapon defense+3, magic defense+3, accuracy+1nIf failed, the item will be destroyed at a 50% rate. +2040310 - Scroll for Earring for DEF - Improves DEF on earrings.\nSuccess Rate 10%, weapon defense+3, magic defense+3, Accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040311 - Scroll for Earring for DEF - Improves DEF on earrings.\nSuccess Rate 60%, weapon defense+1, magic defense+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040312 - Scroll for Earring for DEF - Improves DEF on earringsnSuccess Rate 100%, weapon defense+1 +2040313 - Scroll for Earring for INT - Improves INT on Earrings.\nSuccess rate: 65%, Magic Attack +2, INT+1 +2040314 - Scroll for Earring for INT - Improves INT on Earrings.\nSuccess rate:15%, Magic Attack +5, INT +3, Magic Def. +1 +2040315 - [4yrAnniv]Scroll for Earring for INT - Improves INT on Maple Earring.\nSuccess rate: 40%, Magic Attack +3, INT +2 nIf failed, the item has a 30% chance of being destroyed. +2040316 - Scroll for Earring for DEX 100% - Improves DEX on earrings..\nSuccess rate:100%, DEX+1 +2040317 - Scroll for Earring for DEX 60% - Improves DEX on earrings.\nSuccess rate:60%, DEX+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040318 - Scroll for Earring for DEX 10% - Improves DEX on earrings.\nSuccess rate:10%, DEX+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040319 - Scroll for Earring for LUK 100% - Improves LUK on earrings..\nSuccess rate:100%, LUK+1 +2040320 - Scroll for Earring for LUK 70% - Improves LUK on earrings..\nSuccess rate:70%, LUK+2nIf failed, the item will be destroyed at a 50% rate. +2040321 - Scroll for Earring for LUK 60% - Improves LUK on earrings.\nSuccess rate:60%, LUK+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040322 - Scroll for Earring for LUK 30% - Improves LUK on earrings..\nSuccess rate:30%, LUK+3nIf failed, the item will be destroyed at a 50% rate. +2040323 - Scroll for Earring for LUK 10% - Improves LUK on earrings.\nSuccess rate:10%, LUK+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040324 - Scroll for Earring for HP 100% - Improves HP on earrings..\nSuccess rate:100%, MaxHP+5 +2040325 - Scroll for Earring for HP 70% - Improves HP on earrings..\nSuccess rate:70%, MaxHP+15nIf failed, the item will be destroyed at a 50% rate. +2040326 - Scroll for Earring for HP 60% - Improves HP on earrings.\nSuccess rate:60%, MaxHP+15. The success rate of this scroll can be enhanced by Vega's Spell. +2040327 - Scroll for Earring for HP 30% - Improves HP on earrings..\nSuccess rate:30%, MaxHP+30nIf failed, the item will be destroyed at a 50% rate. +2040328 - Scroll for Earring for HP 10% - Improves HP on earrings.\nSuccess rate:10%, MaxHP+30. The success rate of this scroll can be enhanced by Vega's Spell. +2040400 - Scroll for Topwear for DEF - Improves weapon def. on topwear.\nSuccess rate:100%, weapon def.+1 +2040401 - Scroll for Topwear for DEF - Improves weapon def. on topwear.\nSuccess rate:60%, weapon def.+2, magic def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040402 - Scroll for Topwear for DEF - Improves weapon def. on topwear.\nSuccess rate:10%, weapon def. +5, magic def. +3, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2040403 - Scroll for Topwear for DEF - Improves weapon def. on topwear.\nSuccess rate:100%, weapon def. +5, magic def. +3, MaxHP+10 +2040404 - Dark scroll for Topwear for DEF - Improves weapon def. on topwear.\nSuccess rate:70%, weapon def. +2, magic def. +1nIf failed, the item will be destroyed at a 50% rate. +2040405 - Dark scroll for Topwear for DEF - Improves weapon def. on topwear.\nSuccess rate:30%, weapon def. +5, magic def. +3, MaxHP+10nIf failed, the item will be destroyed at a 50% rate. +2040406 - Dark scroll for Topwear for STR - Improves STR on topwear.\nSuccess rate: 70%, STR + 2nIf failed, the item will be destroyed at a 50% rate. +2040407 - Dark scroll for Topwear for STR - Improves STR on topwear.\nSuccess rate: 30%, STR + 3nIf failed, the item will be destroyed at a 50% rate. +2040408 - Dark scroll for Topwear for HP - Improves HP on topwear.\nSuccess rate: 70%, MaxHP + 15nIf failed, the item will be destroyed at a 50% rate. +2040409 - Dark scroll for Topwear for HP - Improves HP on topwear.\nSuccess rate: 30%, MaxHP + 30nIf failed, the item will be destroyed at a 50% rate. +2040410 - Dark Scroll for Topwear for LUK - Improves LUK on the topwear.\nSuccess Rate 70%, LUK+2, avoidability+1nIf failed, the item will be destroyed at a 50% rate. +2040411 - Dark Scroll for Topwear for LUK - Improves LUK on the topwear.\nSuccess Rate 30%, LUK+3, avoidability+3nIf failed, the item will be destroyed at a 50% rate. +2040412 - Scroll for Topwear for LUK - Improves LUK on the topwear.\nSuccess Rate 10%, LUK+3, avoidability+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040413 - Scroll for Topwear for LUK - Improves LUK on the topwear.\nSuccess Rate 60%, LUK+2, avoidability+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040414 - Scroll for Topwear for LUK - Improves LUK on the topwear.\nSuccess Rate 100%, LUK+1 +2040415 - Scroll for Topwear for DEF - Improves Weapon Def. on Topwear.\nSuccess rate: 65%, Weapon Def. +2, Magic Def. +1 +2040416 - Scroll for Topwear for DEF - Improves Weapon Def. on Topwear.\nSuccess rate: 15%, Weapon Def. +5, Magic Def. +3, MaxHP +10 +2040417 - Scroll for Topwear for STR 100% - Improves strength on topwear..Success rate 100%, STR+1 +2040418 - Scroll for Topwear for STR 60% - Improves strength on topwear.\nSuccess rate 60%, STR+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040419 - Scroll for Topwear for STR 10% - Improves strength on topwear.\nSuccess rate 10%, STR+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040420 - Scroll for Topwear for HP 100% - Improves HP on topwear..Success rate 100%, MaxHP + 5 +2040421 - Scroll for Topwear for HP 60% - Improves HP on topwear.\nSuccess rate 60%, MaxHP + 15. The success rate of this scroll can be enhanced by Vega's Spell. +2040422 - Scroll for Topwear for HP 10% - Improves HP on topwear.\nSuccess rate 10%, MaxHP + 30. The success rate of this scroll can be enhanced by Vega's Spell. +2040423 - Scroll for Topwear for LUK 100% - Improves luck on topwear..\nSuccess rate:100%, LUK+1 +2040424 - Scroll for Topwear for LUK 70% - Improves luck on topwear..\nSuccess rate:70%, LUK+2nIf failed, the item will be destroyed at a 50% rate. +2040425 - Scroll for Topwear for LUK 60% - Improves luck on topwear.\nSuccess rate:60%, LUK+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040426 - Scroll for Topwear for LUK 30% - Improves luck on topwear..\nSuccess rate:30%, LUK+3nIf failed, the item will be destroyed at a 50% rate. +2040427 - Scroll for Topwear for LUK 10% - Improves luck on topwear.\nSuccess rate:10%, LUK+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040500 - Scroll for Overall Armor for DEX - Improves dexterity on the overall armor.\nSuccess rate:100%, DEX+1 +2040501 - Scroll for Overall Armor for DEX - Improves dexterity on the overall armor.\nSuccess rate:60%, DEX+2, accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040502 - Scroll for Overall Armor for DEX - Improves dexterity on the overall armor.\nSuccess rate:10%, DEX+5, accuracy+3, speed+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040503 - Scroll for Overall Armor for DEF - Improves weapon def. on the overall armor.\nSuccess rate:100%, weapon def.+1 +2040504 - Scroll for Overall Armor for DEF - Improves def. on the overall armor.\nSuccess rate:60%, weapon def.+2, magic def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040505 - Scroll for Overall Armor for DEF - Improves def. on the overall armor.\nSuccess rate:10%, wepon def. +5, magic def. +3, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2040506 - Scroll for Overall Armor for DEX - Improves dexterity on the overall armor.\nSuccess rate:100%, DEX+5, accuracy+3, speed+1 +2040507 - Scroll for Overall Armor for DEF - Improves weapon def. on the overall armor.\nSuccess rate:30%, weapon def.+5, magic def.+3, MaxHP+10 +2040508 - Dark scroll for Overall Armor for DEX - Improves dexterity on the overall armor.\nSuccess rate:70%, DEX+2, accuracy+1nIf failed, the item will be destroyed at a 50% rate. +2040509 - Dark scroll for Overall Armor for DEX - Improves dexterity on the overall armor.\nSuccess rate:30%, DEX+4, accuracy+3, speed+1nIf failed, the item will be destroyed at a 50% rate. +2040510 - Dark scroll for Overall Armor for DEF - Improves weapon def. on the overall armor.\nSuccess rate:70%, weapon def.+2, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2040511 - Dark scroll for Overall Armor for DEF - Improves weapon def. on the overall armor.\nSuccess rate:30%, weapon def.+5, magic def.+3, MaxHP+10nIf failed, the item will be destroyed at a 50% rate. +2040512 - Scroll for Overall Armor for INT - Improves INT on the overall armor.\nSuccess rate: 100%, INT + 1 +2040513 - Scroll for Overall Armor for INT - Improves INT on the overall armor.\nSuccess rate: 60%, INT + 2, magic def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040514 - Scroll for Overall Armor for INT - Improves INT on the overall armor.\nSuccess rate: 10%, INT + 5, magic def. + 3, MaxMP + 10. The success rate of this scroll can be enhanced by Vega's Spell. +2040515 - Scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate: 100%, LUK + 1 +2040516 - Scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate: 60%, LUK + 2, avoidability + 1. The success rate of this scroll can be enhanced by Vega's Spell. +2040517 - Scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate: 10%, LUK + 5, avoidability + 3, accuracy + 1. The success rate of this scroll can be enhanced by Vega's Spell. +2040518 - Dark scroll for Overall Armor for INT - Improves INT on the overall armor.\nSuccess rate:70%, INT+2, magic defense+1nIf failed, the item will be destroyed at a 50% rate. +2040519 - Dark scroll for Overall Armor for INT - Improves INT on the overall armor.\nSuccess rate:30%, INT+5, magic defense+3, MaxMP+10nIf failed, the item will be destroyed at a 50% rate. +2040520 - Dark scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate:70%, LUK+2, avoidability+1nIf failed, the item will be destroyed at a 50% rate. +2040521 - Dark scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate:30%, LUK+5, avoidability+3, accuracy+1nIf failed, the item will be destroyed at a 50% rate. +2040522 - Scroll for Overall Armor for DEX - Improves DEX on Overall Armor.\nSuccess rate: 65%, DEX +2, Accuracy +1 +2040523 - Scroll for Overall Armor for DEX - Improves DEX on Overall Armor.\nSuccess rate: 15%, DEX +5, Accuracy+3, Speed +1 +2040524 - Overall Armor Scroll for DEF - Improves Weapon Def. on Overall Armor.\nSuccess rate: 65%, Weapon Def. +2, Magic Def. +1 +2040525 - Overall Armor Scroll for DEF - Improves Weapon Def. on Overall Armor.\nSuccess rate: 15%, Weapon Def. +5, Magic Def. +3, MaxHP +10 +2040526 - Scroll for Overall Armor for INT - Improves INT on the Overall Armor.\nSuccess rate: 65%, INT +2, Magic Def. +1 +2040527 - Scroll for Overall Armor for INT - Improves INT on the overall armor.\nSuccess rate:15%, INT+5, magic def.+3, MaxMP+10 +2040528 - Scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate:65%, LUK+2, avoidability+1 +2040529 - Scroll for Overall Armor for LUK - Improves LUK on the overall armor.\nSuccess rate:15%, LUK+5, avoidability+3, accuracy+1 +2040530 - Scroll for Overall for STR 100% - Improves strength on overalls..\nSuccess rate:100%, STR+1 +2040531 - Scroll for Overall for STR 70% - Improves strength on overalls..\nSuccess rate:70%, STR+2, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2040532 - Scroll for Overall for STR 60% - Improves strength on overalls.\nSuccess rate:60%, STR+2, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040533 - Scroll for Overall for STR 30% - Improves strength on overalls..\nSuccess rate:30%, STR+5, weapon def.+3, MaxHp+5nIf failed, the item will be destroyed at a 50% rate. +2040534 - Scroll for Overall for STR 10% - Improves strength on overalls.\nSuccess rate:10%, STR+5, weapon def.+3, MaxHP+5. The success rate of this scroll can be enhanced by Vega's Spell. +2040600 - Scroll for Bottomwear for DEF - Improves weapon def. on the bottomwear. nSuccess rate:100%, weapon def. +1 +2040601 - Scroll for Bottomwear for DEF - Improves weapon def. on the bottomwear.\nSuccess rate:60%, weapon def. +2, magic def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040602 - Scroll for Bottomwear for DEF - Improves weapon def. on the bottomwear.\nSuccess rate:10%, weapon def.+5, magic def.+3, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2040603 - Scroll for Bottomwear for DEF - Improves weapon def. on the bottomwear.\nSuccess rate:100%, weapon def.+5, magic def.+3, MaxHP+10 +2040604 - Dark scroll for Bottomwear for DEF - Improves weapon def. on the bottomwear.\nSuccess rate:70%, weapon def.+2, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2040605 - Dark scroll for Bottomwear for DEF - Improves weapon def. on the bottomwear.\nSuccess rate: 30%, weapon def.+5, magic def. + 3, MaxHP + 10nIf failed, the item will be destroyed at a 50% rate. +2040606 - Dark scroll for Bottomwear for Jump - Improves jump on the bottomwear.\nSuccess rate: 70%, jump + 2, avoidability + 1nIf failed, the item will be destroyed at a 50% rate. +2040607 - Dark scroll for Bottomwear for Jump - Improves jump on the bottomwear.\nSuccess rate: 30%. jump + 4, avoidability + 2nIf failed, the item will be destroyed at a 50% rate. +2040608 - Dark scroll for Bottomwear for HP - Improves HP on the bottomwear.\nSuccess rate: 70%. MaxHP + 15nIf failed, the item will be destroyed at a 50% rate. +2040609 - Dark scroll for Bottomwear for HP - Improves HP on the bottomwear.\nSuccess rate: 30%. MaxHP + 30nIf failed, the item will be destroyed at a 50% rate. +2040610 - Dark Scroll for Bottomwear for DEX - Improves dexterity on the bottomwear.\nSuccess Rate 70%, DEX+2, speed+1nIf failed, the item will be destroyed at a 50% rate. +2040611 - Dark Scroll for Bottomwear for DEX - Improves dexterity on the bottomwear.\nSuccess Rate 30%, DEX+3, speed+3nIf failed, the item will be destroyed at a 50% rate. +2040612 - Scroll for Bottomwear for DEX - Improves dexterity on the bottomwear.\nSuccess Rate 10%, DEX+3, speed+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040613 - Scroll for Bottomwear for DEX - Improves dexterity on the bottomwear.\nSuccess Rate 60%, DEX+2, speed+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040614 - Scroll for Bottomwear for DEX - Improves dexterity on the bottomwear.\nSuccess Rate 100%, DEX+1 +2040615 - Scroll for Bottomwear for DEF - Improves weapon def. on bottomwear.\nSuccess rate:65%, weapon def.+2, magic def.+1 +2040616 - Scroll for Bottomwear for DEF - Improves weapon def. on bottomwear.\nSuccess rate:15%, weapon def.+5, magic def.+3, MaxHP+10 +2040617 - Scroll for Bottomwear for Jump 100% - Improves jumping abilities on bottomwears..\nSuccess rate:100%, jump+1 +2040618 - Scroll for Bottomwear for Jump 60% - Improves jumping abilities on bottomwears.\nSuccess rate:60%, jump+2, avoidability+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040619 - Scroll for Bottomwear for Jump 10% - Improves jumping abilities on bottomwears..\nSuccess rate:10%, jump+4, avoidability+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040620 - Scroll for Bottomwear for HP 100% - Improves HP on bottomwears..\nSuccess rate:100%, MaxHP+5 +2040621 - Scroll for Bottomwear for HP 60% - Improves HP on bottomwears.\nSuccess rate:60%, MaxHP+15. The success rate of this scroll can be enhanced by Vega's Spell. +2040622 - Scroll for Bottomwear for HP 10% - Improves HP on bottomwears.\nSuccess rate:10%, MaxHP+30. The success rate of this scroll can be enhanced by Vega's Spell. +2040623 - Scroll for Bottomwear for DEX 100% - Improves dexterity on bottomwears..\nSuccess rate:100%, DEX+1 +2040624 - Scroll for Bottomwear for DEX 70% - Improves dexterity on bottomwears..\nSuccess rate:70%, DEX+2, accuracy+1nIf failed, the item will be destroyed at a 50% rate. +2040625 - Scroll for Bottomwear for DEX 60% - Improves dexterity on bottomwears.\nSuccess rate:60%, DEX+2, accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040626 - Scroll for Bottomwear for DEX 30% - Improves dexterity on bottomwears..\nSuccess rate:30%, DEX+3, accuracy+2, speed+1nIf failed, the item will be destroyed at a 50% rate. +2040627 - Scroll for Bottomwear for DEX 10% - Improves dexterity on bottomwears.\nSuccess rate:10%, DEX+3, accuracy+2, speed+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040700 - Scroll for Shoes for DEX - Improves dexterity on shoes.\nSuccess rate:100%, Avoidability+1 +2040701 - Scroll for Shoes for DEX - Improves dexterity on shoes.\nSuccess rate:60%, Avoidability +2, Accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040702 - Scroll for Shoes for DEX - Improves dexterity on shoes.\nSuccess rate:10%, Avoidability +5, accuracy +3, speed+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040703 - Scroll for Shoes for Jump - Improves jump on shoes.\nSuccess rate:100%, jump +1 +2040704 - Scroll for Shoes for Jump - Improves jump on shoes.\nSuccess rate: 60%, jump +2, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040705 - Scroll for Shoes for Jump - Improves jump on shoes.\nSuccess rate:10%, jump+5, DEX+3, speed+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040706 - Scroll for Shoes for Speed - Improves speed on shoes.\nSuccess rate:100%, speed+1 +2040707 - Scroll for Shoes for Speed - Improves speed on shoes.\nSuccess rate:60%, speed+2 +2040708 - Scroll for Shoes for Speed - Improves speed on shoes.\nSuccess rate:10%, speed+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040709 - Scroll for Shoes for DEX - Improves DEX on shoes.\nSuccess rate:100%, avoidability+5, accuracy+3, speed+1 +2040710 - Scroll for Shoes for Jump - Improves jump on shoes.\nSuccess rate:100%, jump+5, DEX+3, speed+1 +2040711 - Scroll for Shoes for Speed - Improves speed on shoes.\nSuccess rate:100%, speed+3 +2040712 - Dark scroll for Shoes for DEX - Improves DEX on shoes.\nSuccess rate:70%, avoidability+2, accuracy+1nIf failed, the item will be destroyed at a 50% rate. +2040713 - Dark scroll for Shoes for DEX - Improves DEX on shoes.\nSuccess rate:30%, avoidability+5, accuracy+3, speed+1nIf failed, the item will be destroyed at a 50% rate. +2040714 - Dark scroll for Shoes for Jump - Improves jump on shoes.\nSuccess rate:70%, jump+2, DEX+1nIf failed, the item will be destroyed at a 50% rate. +2040715 - Dark scroll for Shoes for Jump - Improves jump on shoes.\nSuccess rate:30%, jump+5, DEX+3, speed+1nIf failed, the item will be destroyed at a 50% rate. +2040716 - Dark scroll for Shoes for Speed - Improves speed on shoes.\nSuccess rate:70%, speed+2nIf failed, the item will be destroyed at a 50% rate. +2040717 - Dark scroll for Shoes for Speed - Improves speed on shoes.\nSuccess rate:30%, speed+3nIf failed, the item will be destroyed at a 50% rate. +2040718 - Scroll for Shoes for DEX - Improves dexterity on shoes.\nSuccess rate:65%, avoidability+2, accuracy+1 +2040719 - Scroll for Shoes for DEX - Improves dexterity on shoes.\nSuccess rate:15%, avoidability+5, accuracy+3, speed+1 +2040720 - Scroll for Jump for DEX - Improves jump on shoes.\nSuccess rate:65%, jump+2, DEX+1 +2040721 - Scroll for Jump for DEX - Improves jump on shoes.\nSuccess rate:15%, jump+5, DEX+3, speed+1 +2040722 - Scroll for Speed for DEX - Improves speed on shoes.\nSuccess rate:65%, speed+2 +2040723 - Scroll for Speed for DEX - Improves speed on shoes.\nSuccess rate:15%, speed+3 +2040727 - Scroll for Spikes on Shoes 10% - Adds traction to the shoes, which prevents the shoes from slipping on slippery surface.\nSuccess rate:10%, Does not affect the number of upgrades available. The success rate of this scroll can be enhanced by Vega's Spell. +2040800 - Scroll for Gloves for DEX - Improves dexterity on gloves.\nSuccess rate:100%, accurcacy +1 +2040801 - Scroll for Gloves for DEX - Improves dexterity on gloves.\nSuccess rate: 60%, accuracy+2, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040802 - Scroll for Gloves for DEX - Improves dexterity on gloves.\nSuccess rate:10%, accuracy+5, DEX+3, avoidability+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040803 - Scroll for Gloves for ATT - Improves attack on gloves.\nSuccess rate:100%, weapon att. +1 +2040804 - Scroll for Gloves for ATT - Improves attack on gloves.\nSuccess rate 60%, weapon att. +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040805 - Scroll for Gloves for ATT - Improves attack on gloves.\nSuccess rate:10%, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040806 - Scroll for Gloves for DEX - Improves DEX on the glove.\nSuccess rate:100%, accuracy+5, DEX+3, avoidability+1 +2040807 - Scroll for Gloves for ATT - Improves weapon att. on the glove.\nSuccess rate:100%, weapon att.+3 +2040808 - Dark scroll for Gloves for DEX - Improves DEX on the glove.\nSuccess rate:70%, accuracy+2, DEX+1nIf failed, the item will be destroyed at a 50% rate. +2040809 - Dark scroll for Gloves for DEX - Improves DEX on the glove.\nSuccess rate:30%, accuracy+5, DEX+3, avoidability+1nIf failed, the item will be destroyed at a 50% rate. +2040810 - Dark scroll for Gloves for ATT - Improves weapon att. on the glove.\nSuccess rate:70%, weapon att.+2nIf failed, the item will be destroyed at a 50% rate. +2040811 - Dark scroll for Gloves for ATT - Improves weapon att. on the glove.\nSuccess rate:30%, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2040812 - Dark scroll for Gloves for HP - Improves HP on the glove.\nSuccess rate: 70%, MaxHP+15nIf failed, the item will be destroyed at a 50% rate. +2040813 - Dark scroll for Gloves for HP - Improves HP on the glove.\nSuccess rate: 30%, MaxHP + 30nIf failed, the item will be destroyed at a 50% rate. +2040814 - Dark Scroll for Gloves for Magic Att. - Improves magic attack on the glove.\nSuccess Rate 70%, magic attack+1, INT+1nIf failed, the item will be destroyed at a 50% rate. +2040815 - Dark Scroll for Gloves for Magic Att. - Improves magic attack on the glove.\nSuccess Rate 30%, magic attack+3, INT+3, magic defense+1nIf failed, the item will be destroyed at a 50% rate. +2040816 - Scroll for Gloves for Magic Att. - Improves magic attack on the glove.\nSuccess Rate 10%, magic defense+1, magic attack+3, INT+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040817 - Scroll for Gloves for Magic Att. - Improves magic attack on the glove.\nSuccess Rate 60%, magic attack+1, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040818 - Scroll for Gloves for Magic Att. - Improves magic attack on the glove.\nSuccess Rate 100%, magic attack+1 +2040819 - Scroll for Gloves for DEX - Improves dexterity on gloves.\nSuccess rate:65%, accuracy+2, DEX+1 +2040820 - Scroll for Gloves for DEX - Improves dexterity on gloves.\nSuccess rate:15%, accuracy+5, DEX+3, avoidability+1 +2040821 - Scroll for Gloves for ATT - Improves attack on gloves.\nSuccess rate:65%, weapon attack+2 +2040822 - Scroll for Gloves for ATT - Improves attack on gloves.\nSuccess rate:15%, weapon attack+3 +2040823 - Scroll for Gloves for HP 100% - Improves HP on gloves..\nSuccess rate:100%, MaxHP+5 +2040824 - Scroll for Gloves for HP 60% - Improves HP on gloves.\nSuccess rate:60%, MaxHP+15. The success rate of this scroll can be enhanced by Vega's Spell. +2040825 - Scroll for Gloves for HP 10% - Improves HP on gloves.\nSuccess rate:10%, MaxHP+30. The success rate of this scroll can be enhanced by Vega's Spell. +2040900 - Scroll for Shield for DEF - Improves weapon def. on the shield.\nSuccess rate:100%, weapon def. +1 +2040901 - Scroll for Shield for DEF - Improves weapon def. on the shield.\nSuccess rate:60%, weapon def.+2, magic def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040902 - Scroll for Shield for DEF - Improves weapon def. on the shield.\nSuccess rate 10%, weapon def.+5, magic def.+3, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2040903 - Scroll for Shield for DEF - Improves weapon def. on the shield.\nSuccess rate 100%, weapon def.+5, magic def.+3, MaxHP+10 +2040904 - Dark scroll for Shield for DEF - Improves weapon def. on the shield.\nSuccess rate 70%, weapon def.+2, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2040905 - Dark scroll for Shield for DEF - Improves weapon def. on the shield.\nSuccess rate 30%, weapon def.+5, magic def.+3, MaxHP+10nIf failed, the item will be destroyed at a 50% rate. +2040906 - Dark scroll for Shield for LUK - Improves LUK on the shield.\nSuccess rate: 70%, LUK + 2nIf failed, the item will be destroyed at a 50% rate. +2040907 - Dark scroll for Shield for LUK - Improves LUK on the shield.\nSuccess rate: 30%, LUK + 3nIf failed, the item will be destroyed at a 50% rate. +2040908 - Dark scroll for Shield for HP - Improves HP on the shield.\nSuccess rate: 70%, MaxHP + 15nIf failed, the item will be destroyed at a 50% rate. +2040909 - Dark scroll for Shield for HP - Improves HP on the shield.\nSuccess rate: 30%, MaxHP + 30nIf failed, the item will be destroyed at a 50% rate. +2040910 - Scroll for Shield for DEF - Improves weapon defense on the shield.\nSuccess rate:65%, weapon def.+2, magic def.+1 +2040911 - Scroll for Shield for DEF - Improves weapon defense on the shield.\nSuccess rate:15%, weapon def.+5, magic def.+3, MaxHP+10 +2040912 - [4yrAnniv]Scroll for Shield for DEF - Improves weapon defense for Maple Magician shield, Maple warrior shield, and the Maple Shibus shield. nSuccess rate:40%, weapon def.+3, magic def.+2 nIf failed, the item will be destroyed at a 30% rate. +2040914 - Scroll for Shield for Weapon Att. - Improves weapon attack on the shield.\nSuccess Rate 60%, W. attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040915 - Scroll for Shield for Weapon Att. - Improves weapon attack on the shield.\nSuccess Rate 10%, W. attack+3, STR+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040916 - Dark Scroll for Shield for Weapon Att. - Improves weapon attack on the shield.\nSuccess Rate 70%, W. attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2040917 - Dark Scroll for Shield for Weapon Att. - Improves weapon attack on the shield.\nSuccess Rate 30%, W. attack+3, STR+2nIf failed, the item will be destroyed at a 50% rate. +2040918 - Scroll for Shield for Magic Att. - Improves magic attack on the shield.\nSuccess Rate 100%, magic attack+1 +2040919 - Scroll for Shield for Magic Att. - Improves magic attack on the shield.\nSuccess Rate 60%, magic attack+2, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2040920 - Scroll for Shield for Magic Att. - Improves magic attack on the shield.\nSuccess Rate 10%, magic attack+3, INT+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040921 - Dark Scroll for Shield for Magic Att. - Improves magic attack on the shield.\nSuccess Rate 70%, magic attack+2, INT+1nIf failed, the item will be destroyed at a 50% rate. +2040922 - Dark Scroll for Shield for Magic Att. - Improves magic attack on the shield.\nSuccess Rate 50%, magic attack+3, INT+2nIf failed, the item will be destroyed at a 50% rate. +2040923 - Scroll for Shield for LUK 100% - Improves LUK on shields..\nSuccess rate:100%, LUK+1 +2040924 - Scroll for Shield for LUK 60% - Improves LUK on shields.\nSuccess rate:60%, LUK+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040925 - Scroll for Shield for LUK 10% - Improves LUK on shields.\nSuccess rate:10%, LUK+3. The success rate of this scroll can be enhanced by Vega's Spell. +2040926 - Scroll for Shield for HP 100% - Improves HP on shields..\nSuccess rate:100%, MaxHP+5 +2040927 - Scroll for Shield for HP 60% - Improves HP on shields.\nSuccess rate:60%, MaxHP+15. The success rate of this scroll can be enhanced by Vega's Spell. +2040928 - Scroll for Shield for HP 10% - Improves HP on shields.\nSuccess rate:10%, MaxHP+30. The success rate of this scroll can be enhanced by Vega's Spell. +2040929 - Scroll for Shield for STR 100% - Improves strength on shields..\nSuccess rate:100%, STR+1 +2040930 - Scroll for Shield for STR 70% - Improves strength on shields..\nSuccess rate:70%, STR+2nIf failed, the item will be destroyed at a 50% rate. +2040931 - Scroll for Shield for STR 60% - Improves strength on shields.\nSuccess rate:60%, STR+2. The success rate of this scroll can be enhanced by Vega's Spell. +2040932 - Scroll for Shield for STR 30% - Improves strength on shields..\nSuccess rate:30%, STR+3nIf failed, the item will be destroyed at a 50% rate. +2040933 - Scroll for Shield for STR 10% - Improves strength on shields.\nSuccess rate:10%, STR+3. The success rate of this scroll can be enhanced by Vega's Spell. +2041000 - Scroll for Cape for Magic Def. - Improves magic def. on the cape.\nSuccess rate:100%, magic def. +1 +2041001 - Scroll for Cape for Magic Def. - Improves magic def. on the cape.\nSuccess rate:60%, magic def.+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2041002 - Scroll for Cape for Magic Def. - Improves magic def. on the cape.\nSuccess rate:10%, magic def. +5, weapon def. +3, MaxMP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2041003 - Scroll for Cape for Weapon Def. - Improves weapon def. on the cape.\nSuccess rate:100%, weapon def.+1 +2041004 - Scroll for Cape for Weapon Def. - Improves weapon def. on the cape.\nSuccess rate:60%, weapon def.+3, magic def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2041005 - Scroll for Cape for Weapon Def. - Improves weapon def. on the cape.\nSuccess rate:10%, weapon def. +5, magic def.+3, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2041006 - Scroll for Cape for HP - Improves MaxHP on the cape.\nSuccess rate:100%, MaxHP+5 +2041007 - Scroll for Cape for HP - Improves MaxHP on the cape.\nSuccess rate:60%, MaxHP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2041008 - Scroll for Cape for HP - Improves MaxHP on the cape.\nSuccess rate:10%, MaxHP+20. The success rate of this scroll can be enhanced by Vega's Spell. +2041009 - Scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:100%, MaxMP+5 +2041010 - Scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:60%, MaxMP+10. The success rate of this scroll can be enhanced by Vega's Spell. +2041011 - Scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:10%, MaxMP+20. The success rate of this scroll can be enhanced by Vega's Spell. +2041012 - Scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:100%, STR+1 +2041013 - Scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:60%, STR+2. The success rate of this scroll can be enhanced by Vega's Spell. +2041014 - Scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:10%, STR+3. The success rate of this scroll can be enhanced by Vega's Spell. +2041015 - Scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:100%, INT+1 +2041016 - Scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:60%, INT+2. The success rate of this scroll can be enhanced by Vega's Spell. +2041017 - Scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:10%, INT+3. The success rate of this scroll can be enhanced by Vega's Spell. +2041018 - Scroll for Cape for DEX - Improves DEX on the cape.\nSuccess rate:100%, DEX+1 +2041019 - Scroll for Cape for DEX - Improves DEX on the cape.\nSuccess rate:60%, DEX+2. The success rate of this scroll can be enhanced by Vega's Spell. +2041020 - Scroll for Cape for DEX - Improves DEX on the cape.\nSuccess rate:10%, DEX+3. The success rate of this scroll can be enhanced by Vega's Spell. +2041021 - Scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:100%, LUK+1 +2041022 - Scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:60%, LUK+2. The success rate of this scroll can be enhanced by Vega's Spell. +2041023 - Scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:10%, LUK+3. The success rate of this scroll can be enhanced by Vega's Spell. +2041024 - Scroll for Cape for Magic Def. - Improves magic def. on the cape.\nSuccess rate:100%, magic def.+5, weapon def.+3, MaxMP+10 +2041025 - Scroll for Cape for Weapon Def. - Improves weapon def. on the cape.\nSuccess rate:100%, weapon def.+5, magic def.+3, MaxHP+10 +2041026 - Dark scroll for Cape for Magic Def. - Improves magic def. on the cape.\nSuccess rate:70%, magic def.+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2041027 - Dark scroll for Cape for Magic Def. - Improves magic def. on the cape.\nSuccess rate:30%, magic def.+5, weapon def.+3, MaxMP+10nIf failed, the item will be destroyed at a 50% rate. +2041028 - Dark scroll for Cape for Weapon Def. - Improves weapon def. on the cape.\nSuccess rate:70%, weapon def.+3, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2041029 - Dark scroll for Cape for Weapon Def. - Improves weapon def. on the cape.\nSuccess rate:30%, weapon def.+5, magic def.+3, MaxHP+10nIf failed, the item will be destroyed at a 50% rate. +2041030 - Dark scroll for Cape for HP - Improves MaxHP on the cape.\nSuccess rate:70%, MaxHP+10nIf failed, the item will be destroyed at a 50% rate. +2041031 - Dark scroll for Cape for HP - Improves MaxHP on the cape.\nSuccess rate:30%, MaxHP+20nIf failed, the item will be destroyed at a 50% rate. +2041032 - Dark scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:70%, MaxMP+10nIf failed, the item will be destroyed at a 50% rate. +2041033 - Dark scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:30%, MaxMP+20nIf failed, the item will be destroyed at a 50% rate. +2041034 - Dark scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:70%, STR+2nIf failed, the item will be destroyed at a 50% rate. +2041035 - Dark scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:30%, STR+3nIf failed, the item will be destroyed at a 50% rate. +2041036 - Dark scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:70%, INT+2nIf failed, the item will be destroyed at a 50% rate. +2041037 - Dark scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:30%, INT+3nIf failed, the item will be destroyed at a 50% rate. +2041038 - Dark scroll for Cape for DEX - Improves DEX on the cape.\nSuccess rate:70%, DEX+2nIf failed, the item will be destroyed at a 50% rate. +2041039 - Dark scroll for Cape for DEX - Improves DEX on the cape.\nSuccess rate:30%, DEX+3nIf failed, the item will be destroyed at a 50% rate. +2041040 - Dark scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:70%, LUK+2nIf failed, the item will be destroyed at a 50% rate. +2041041 - Dark scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:30%, LUK+3nIf failed, the item will be destroyed at a 50% rate. +2041042 - Scroll for Cape for Magic DEF - Improves magic defense on the cape.\nSuccess rate:65%, magic def.+3, weapon def.+1 +2041043 - Scroll for Cape for Magic DEF - Improves magic defense on the cape.\nSuccess rate:15%, magic def.+5, weapon def.+3, MaxMP+10 +2041044 - Scroll for Cape for Weapon DEF - Improves weapon defense on the cape.\nSuccess rate:65%, weapon def.+3, magic def.+1 +2041045 - Scroll for Cape for Weapon DEF - Improves weapon defense on the cape.\nSuccess rate:15%, weapon def.+5, magic def.+3, MaxHP+10 +2041046 - Scroll for Cape for MaxHP - Improves MaxHP on the cape.\nSuccess rate:65%, MaxHP+10 +2041047 - Scroll for Cape for MaxHP - Improves MaxHP on the cape.\nSuccess rate:15%, MaxHP+20 +2041048 - Scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:65%, MaxMP+10 +2041049 - Scroll for Cape for MP - Improves MaxMP on the cape.\nSuccess rate:15%, MaxMP+20 +2041050 - Scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:65%, STR+2 +2041051 - Scroll for Cape for STR - Improves STR on the cape.\nSuccess rate:15%, STR+3 +2041052 - Scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:65%, INT+2 +2041053 - Scroll for Cape for INT - Improves INT on the cape.\nSuccess rate:15%, INT+3 +2041054 - Scroll for Cape for DEX - Improves dexterity on the cape.\nSuccess rate:65%, DEX+2 +2041055 - Scroll for Cape for DEX - Improves dexterity on the cape.\nSuccess rate:15%, DEX+3 +2041056 - Scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:65%, LUK+2 +2041057 - Scroll for Cape for LUK - Improves LUK on the cape.\nSuccess rate:15%, LUK+3 +2041058 - Scroll for Cape for Cold Protection 10% - Includes the effect of protection from cold weather on the cape.\nSuccess rate: 10%. Does not affect the number of upgrades available. The success rate of this scroll can be enhanced by Vega's Spell. +2041059 - [4yrAnniv] Scroll for Cape for STR 20% - Improves strength on Maple Cape.\nSuccess rate:20%, STR+3 nIf failed, the item will be destroyed at a 30% rate. +2041060 - [4yrAnniv] Scroll for Cape for INT 20% - Improves INT on Maple Cape.\nSuccess rate:20%, INT+3 nIf failed, the item will be destroyed at a 30% rate. +2041061 - [4yrAnniv] Scroll for Cape for DEX 20% - Improves dexterity on Maple Cape.\nSuccess rate:20%, DEX+3 nIf failed, the item will be destroyed at a 30% rate. +2041062 - [4yrAnniv] Scroll for Cape for LUK 20% - Improves luck on Maple Cape.\nSuccess rate:20%, LUK+3 nIf failed, the item will be destroyed at a 30% rate. +2041200 - Dragon Stone - A powerful stone that contains the mysterious power of the dragon. Can only be used on Horntail Necklace.\nSuccess rate:100%, Weapon Defense +140, Magic Defense +140, Avoidability +15, All Stats +15 +2041212 - Rock of Wisdom - Can only be used on Horus's Eye.\nSuccess rate:60%, HP +70, MP +70 +2043000 - Scroll for One-Handed Sword for ATT - Improves attack on one-handed sword.\nSuccess rate:100%, weapon attack+1 +2043001 - Scroll for One-Handed Sword for ATT - Improves attack on one-handed sword.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043002 - Scroll for One-Handed Sword for ATT - Improves attack on one-handed sword.\nSuccess rate:10%, weapon attack+5, STR+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043003 - Scroll for One-Handed Sword for ATT - Improves attack on one-handed sword.\nSuccess rate:100%, weapon attack+5, STR+3, weapon def.+1 +2043004 - Dark scroll for One-Handed Sword for ATT - Improves attack on one-handed sword.\nSuccess rate:70%, weapon attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2043005 - Dark scroll for One-Handed Sword for ATT - Improves attack on one-handed sword.\nSuccess rate:30%, weapon attack+5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2043006 - Dark Scroll for One-Handed Sword for Magic Att. - Improves magic attack on one-handed sword.\nSuccess Rate 70%, magic attack+1, INT+1nIf failed, the item will be destroyed at a 50% rate. +2043007 - Dark Scroll for One-Handed Sword for Magic Att. - Improves magic attack on one-handed sword.\nSuccess Rate 30%, magic attack+2, INT+2, magic defense+1nIf failed, the item will be destroyed at a 50% rate. +2043008 - Scroll for One-Handed Sword for Magic Att. - Improves magic attack on one-handed sword.\nSuccess Rate 10%, magic attack+2, magic defense+1, INT+2. The success rate of this scroll can be enhanced by Vega's Spell. +2043009 - Scroll for One-Handed Sword for Magic Att. - Improves magic attack on one-handed sword.\nSuccess Rate 60%, magic attack+1, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043010 - Scroll for One-Handed Sword for Magic Att. - Improves magic attack on one-handed sword.\nSuccess Rate 100%, magic attack+1 +2043011 - Scroll for One-Handed Sword for ATT - Improves attack on the one-handed sword.\nSuccess rate:65%, weapon attack+2, STR+1 +2043012 - Scroll for One-Handed Sword for ATT - Improves attack on the one-handed sword.\nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2043013 - [4yrAnniv]Scroll for One-Handed Sword for ATT - Improves attack for Maple Glory Sword. nSuccess rate:40%, weapon attack+3, STR+2 nIf failed, the item will be destroyed at a 30% rate. +2043015 - Scroll for One-Handed Sword for Accuracy 100% - Improves accuracy on one-handed swords.\nSuccess rate:100%, accuracy+1 +2043016 - Scroll for One-Handed Sword for Accuracy 70% - Improves accuracy on one-handed swords.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2043017 - Scroll for One-Handed Sword for Accuracy 60% - Improves accuracy on one-handed swords.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043018 - Scroll for One-Handed Sword for Accuracy 30% - Improves accuracy on one-handed swords.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2043019 - Scroll for One-Handed Sword for Accuracy 10% - Improves accuracy on one-handed swords.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2043100 - Scroll for One-Handed Axe for ATT - Improves attack on one-handed axe.\nSuccess rate:100%, weapon attack+1 +2043101 - Scroll for One-Handed Axe for ATT - Improves attack on one-handed axe.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043102 - Scroll for One-Handed Axe for ATT - Improves attack on one-handed axe.\nSuccess rate: 10%, weapon attack +5, STR+3, weapon def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2043103 - Scroll for One-Handed Axe for ATT - Improves attack on one-handed axe.\nSuccess rate:100%, weapon attack+5, STR+3, weapon def.+1 +2043104 - Dark scroll for One-Handed Axe for ATT - Improves attack on one-handed axe.\nSuccess rate:70%, weapon attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2043105 - Dark scroll for One-Handed Axe for ATT - Improves attack on one-handed axe.\nSuccess rate:30%, weapon attack+5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2043106 - Scroll for One-Handed Axe for ATT - Improves attack on the one-handed axe.\nSuccess rate:65%, weapon attack+2, STR+1 +2043107 - Scroll for One-Handed Axe for ATT - Improves attack on the one-handed axe.\nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2043108 - [4yrAnniv]Scroll for One-Handed Axe for ATT - Improves attack on the Maple Steel Axe. nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2043110 - Scroll for One-Handed Axe for Accuracy 100% - Improves accuracy on one-handed axe.\nSuccess rate:100%, accuracy+1 +2043111 - Scroll for One-Handed Axe for Accuracy 70% - Improves accuracy on one-handed axe.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2043112 - Scroll for One-Handed Axe for Accuracy 60% - Improves accuracy on one-handed axe.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043113 - Scroll for One-Handed Axe for Accuracy 30% - Improves accuracy on one-handed axe.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2043114 - Scroll for One-Handed Axe for Accuracy 10% - Improves accuracy on one-handed axe.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2043200 - Scroll for One-Handed BW for ATT - Improves attack on one-handed blunt weapon.\nSuccess rate:100%, weapon attack+1 +2043201 - Scroll for One-Handed BW for ATT - Improves attack on one-handed blunt weapon.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043202 - Scroll for One-Handed BW for ATT - Improves attack on one-handed blunt weapon.\nSuccess rate: 10%, weapon attack +5, STR+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043203 - Scroll for One-Handed BW for ATT - Improves attack on one-handed blunt weaponnSuccess rate:100%, weapon attack+5, STR+3, weapon def.+1 +2043204 - Dark scroll for One-Handed BW for ATT - Improves attack on one-handed blunt weapon.\nSuccess rate:70%, weapon attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2043205 - Dark scroll for One-Handed BW for ATT - Improves attack on one-handed blunt weapon.\nSuccess rate:30%, weapon attack+5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2043206 - Scroll for One-Handed BW for ATT - Improves attack on the one-handed blunt weapon.\nSuccess rate:65%, weapon attack+2, STR+1 +2043207 - Scroll for One-Handed BW for ATT - Improves attack on the one-handed blunt weapon.\nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2043208 - [4yrAnniv]Scroll for One-Handed BW for ATT - Added attack upgrade option for the Maple Havoc Hammer. nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2043210 - Scroll for One-Handed BW for Accuracy 100% - Improves accuracy on one-handed blunt weapon.\nSuccess rate:100%, accuracy+1 +2043211 - Scroll for One-Handed BW for Accuracy 70% - Improves accuracy on one-handed blunt weapon.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2043212 - Scroll for One-Handed BW for Accuracy 60% - Improves accuracy on one-handed blunt weapon.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043213 - Scroll for One-Handed BW for Accuracy 30% - Improves accuracy on one-handed blunt weapon.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2043214 - Scroll for One-Handed BW for Accuracy 10% - Improves accuracy on one-handed blunt weapon.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2043300 - Scroll for Dagger for ATT - Improves attack on dagger.\nSuccess rate:100%, weapon attack+1 +2043301 - Scroll for Dagger for ATT - Improves attack on dagger.\nSuccess rate:60%, weapon attack+2, LUK+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043302 - Scroll for Dagger for ATT - Improves attack on dagger.\nSuccess rate: 10%, weapon attack +5, LUK+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043303 - Scroll for Dagger for ATT - Improves attack on dagger.\nSuccess rate:100%, weapon attack+5, LUK+3, weapon def.+1 +2043304 - Dark scroll for Dagger for ATT - Improves attack on dagger.\nSuccess rate:70%, weapon attack +2, LUK +1nIf failed, the item will be destroyed at a 50% rate. +2043305 - Dark scroll for Dagger for ATT - Improves attack on dagger.\nSuccess rate:30%, weapon attack +5, LUK +3, weapon def. +1nIf failed, the item will be destroyed at a 50% rate. +2043306 - Scroll for Dagger for ATT - Improves attack on the dagger.\nSuccess rate:65%, weapon attack+2, LUK+1 +2043307 - Scroll for Dagger for ATT - Improves attack on the dagger.\nSuccess rate:15%, weapon attack+5, LUK+3, weapon def.+1 +2043308 - [4yrAnniv]Scroll for Dagger for ATT - Improves attack on the Maple Dark Mate and Maple Asura DaggernSuccess rate:40%, weapon attack+3, LUK+2nIf failed, the item will be destroyed at a 30% rate. +2043700 - Scroll for Wand for Magic Att. - Improves magic on wand.\nSuccess rate:100%, magic attack+1 +2043701 - Scroll for Wand for Magic Att. - Improves magic on wand.\nSuccess rate:60%, magic attack+2, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043702 - Scroll for Wand for Magic Att. - Improves magic on wand.\nSuccess rate:10%, magic attack+5, INT+3, magic def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043703 - Scroll for Wand for Magic Att. - Improves magic on wand.\nSuccess rate:100%, magic attack+5, INT+3, magic def.+1 +2043704 - Dark scroll for Wand for Magic Att. - Improves magic on wand.\nSuccess rate:70%, magic attack+2, INT+1nIf failed, the item will be destroyed at a 50% rate. +2043705 - Dark scroll for Wand for Magic Att. - Improves magic on wand.\nSuccess rate:30%, magic attack+5, INT+3, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2043706 - Scroll for Wand for Magic Att. - Improves magic attack on the wand.\nSuccess rate:65%, magic attack+2, INT+1 +2043707 - Scroll for Wand for Magic Att. - Improves magic attack on the wand.\nSuccess rate:15%, magic attack+5, INT+3, magic def.+1 +2043708 - [4yrAnniv]Scroll for Wand for Magic Att. - Improves magic attack on Maple Shine Wand.\nSuccess rate:40%, magic attack+3, INT+2nIf failed, the item will be destroyed at a 30% rate. +2043800 - Scroll for Staff for Magic Att. - Improves magic on staff.\nSuccess rate:100%, magic attack+1 +2043801 - Scroll for Staff for Magic Att. - Improves magic on staff.\nSuccess rate:60%, magic attack+2, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043802 - Scroll for Staff for Magic Att. - Improves magic on staff.\nSuccess rate:10%, magic attack+5, INT+3, magic def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2043803 - Scroll for Staff for Magic Att. - Improves magic on staff.\nSuccess rate:100%, magic attack+5, INT+3, magic def.+1 +2043804 - Dark scroll for Staff for Magic Att. - Improves magic on staff.\nSuccess rate:70%, magic attack+2, INT+1nIf failed, the item will be destroyed at a 50% rate. +2043805 - Dark scroll for Staff for Magic Att. - Improves magic on staff.\nSuccess rate:30%, magic attack+5, INT+3, magic def.+1nIf failed, the item will be destroyed at a 50% rate. +2043806 - Scroll for Staff for Magic Att. - Improves magic attack on the staff.\nSuccess rate:65%, magic attack+2, INT+1 +2043807 - Scroll for Staff for Magic Att. - Improves magic attack on the staff.\nSuccess rate:15%, magic attack+5, INT+3, magic def.+1 +2043808 - [4yrAnniv]Scroll for Staff for Magic Att. - Improves magic attack on Maple Wisdom Staff.\nSuccess rate:40%, magic attack+3, INT+2nIf failed, the item will be destroyed at a 30% rate. +2044000 - Scroll for Two-handed Sword for ATT - Improves attack on two-handed sword.\nSuccess rate:100%, weapon attack+1 +2044001 - Scroll for Two-handed Sword for ATT - Improves attack on two-handed sword.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044002 - Scroll for Two-handed Sword for ATT - Improves attack on two-handed sword.\nSuccess rate:10%, weapon attack+5, STR+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044003 - Scroll for Two-handed Sword for ATT - Improves attack on two-handed sword weapon.\nSuccess rate:100%, weapon attack+5, STR+3, weapon def.+1 +2044004 - Dark scroll for Two-handed Sword for ATT - Improves attack on two-handed sword.\nSuccess rate:70%, weapon attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2044005 - Dark scroll for Two-handed Sword for ATT - Improves attack on two-handed sword.\nSuccess rate:30%, weapon attack+5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2044006 - Scroll for Two-Handed Sword for ATT - Improves attack on the two-handed sword.\nSuccess rate:65%, weapon attack+2, STR+1 +2044007 - Scroll for Two-Handed Sword for ATT - Improves attack on the two-handed sword.\nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2044008 - [4yrAnniv]Scroll for Two-Handed Sword for ATT - Improves attack for Maple Soul Rohen. nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2044010 - Scroll for Two-Handed Sword for Accuracy 100% - Improves accuracy on two-handed swords.\nSuccess rate:100%, accuracy+1 +2044011 - Scroll for Two-Handed Sword for Accuracy 70% - Improves accuracy on two-handed swords.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2044012 - Scroll for Two-Handed Sword for Accuracy 60% - Improves accuracy on two-handed swords.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044013 - Scroll for Two-Handed Sword for Accuracy 30% - Improves accuracy on two-handed swords.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2044014 - Scroll for Two-Handed Sword for Accuracy 10% - Improves accuracy on two-handed swords.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2044100 - Scroll for Two-handed Axe for ATT - Improves attack on two-handed axe.\nSuccess rate:100%, weapon attack+1 +2044101 - Scroll for Two-handed Axe for ATT - Improves attack on two-handed axe.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044102 - Scroll for Two-handed Axe for ATT - Improves attack on two-handed axe.\nSuccess rate:10%, weapon attack+5, STR+3, weapon def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044103 - Scroll for Two-handed Axe for ATT - Improves attack on two-handed axe.\nSuccess rate:100%, weapon attack+5, STR+3, weapon def.+1 +2044104 - Dark scroll for Two-handed Axe for ATT - Improves attack on two-handed axe.\nSuccess rate:70%, weapon attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2044105 - Dark scroll for Two-handed Axe for ATT - Improves attack on two-handed axe.\nSuccess rate:30%, weapon attack+5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2044106 - Scroll for Two-Handed Axe for ATT - Improves attack on the two-handed axe.\nSuccess rate:65%, weapon attack+2, STR+1 +2044107 - Scroll for Two-Handed Axe for ATT - Improves attack on the two-handed axe.\nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2044108 - [4yrAnniv]Scroll for Two-Handed Axe for ATT - Improves attack for Maple Demon Axe. nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2044110 - Scroll for Two-Handed Axe for Accuracy 100% - Improves accuracy on two-handed axe.\nSuccess rate:100%, accuracy+1 +2044111 - Scroll for Two-Handed Axe for Accuracy 70% - Improves accuracy on two-handed axe.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2044112 - Scroll for Two-Handed Axe for Accuracy 60% - Improves accuracy on two-handed axe.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044113 - Scroll for Two-Handed Axe for Accuracy 30% - Improves accuracy on two-handed axe.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2044114 - Scroll for Two-Handed Axe for Accuracy 10% - Improves accuracy on two-handed axe.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2044200 - Scroll for Two-handed BW for ATT - Improves attack on two-handed blunt weapon.\nSuccess rate:100%, weapon attack+1 +2044201 - Scroll for Two-handed BW for ATT - Improves attack on two-handed blunt weapon.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044202 - Scroll for Two-handed BW for ATT - Improves attack on two-handed blunt weapon.\nSuccess rate:10%, weapon attack+5, STR+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044203 - Scroll for Two-handed BW for ATT - Improves attack on two-handed blunt weapon.\nSuccess rate:100%, weapon attack+5, STR+3, weapon def.+1 +2044204 - Dark scroll for Two-handed BW for ATT - Improves attack on two-handed blunt weapon.\nSuccess rate:70%, weapon attack+2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2044205 - Dark scroll for Two-handed BW for ATT - Improves attack on two-handed blunt weapon.\nSuccess rate:30%, weapon attack+5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2044206 - Scroll for Two-Handed BW for ATT - Improves attack on the two-handed blunt weapon.\nSuccess rate:65%, weapon attack+2, STR+1 +2044207 - Scroll for Two-Handed BW for ATT - Improves attack on the two-handed blunt weapon.\nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2044208 - [4yrAnniv]Scroll for Two-Handed BW for ATT - Improves attack on Maple Belzet. nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2044210 - Scroll for Two-Handed BW for Accuracy 100% - Improves accuracy on two-handed blunt weapon.\nSuccess rate:100%, accuracy+1 +2044211 - Scroll for Two-Handed BW for Accuracy 70% - Improves accuracy on two-handed blunt weapon.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2044212 - Scroll for Two-Handed BW for Accuracy 60% - Improves accuracy on two-handed blunt weapon.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044213 - Scroll for Two-Handed BW for Accuracy 30% - Improves accuracy on two-handed blunt weapon.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2044214 - Scroll for Two-Handed BW for Accuracy 10% - Improves accuracy on two-handed blunt weapon.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2044300 - Scroll for Spear for ATT - Improves attack on spear.\nSuccess rate:100%, weapon attack+1 +2044301 - Scroll for Spear for ATT - Improves attack on spear.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044302 - Scroll for Spear for ATT - Improves attack on spear.\nSuccess rate:10%, weapon attack+5, STR+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044303 - Scroll for Spear for ATT - Improves attack on spear.\nSuccess rate:100%, weapon attack +5, STR+3, weapon def.+1 +2044304 - Dark scroll for Spear for ATT - Improves attack on spear.\nSuccess rate:70%, weapon attack +2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2044305 - Dark scroll for Spear for ATT - Improves attack on spear.\nSuccess rate:30%, weapon attack +5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2044306 - Scroll for Spear for ATT - Improves attack on the Spear. nSuccess rate:65%, weapon attack+2, STR+1 +2044307 - Scroll for Spear for ATT - Improves attack on the Spear. nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2044308 - [4yrAnniv]Scroll for Spear for ATT - Improves attack on Maple Soul Spear. nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2044310 - Scroll for Spear for Accuracy 100% - Improves accuracy on spears.\nSuccess rate:100%, accuracy+1 +2044311 - Scroll for Spear for Accuracy 70% - Improves accuracy on spears.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2044312 - Scroll for Spear for Accuracy 60% - Improves accuracy on spears.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044313 - Scroll for Spear for Accuracy 30% - Improves accuracy on spears.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2044314 - Scroll for Spear for Accuracy 10% - Improves accuracy on spears.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2044400 - Scroll for Pole Arm for ATT - Improves attack on pole arm.\nSuccess rate:100%, weapon attack+1 +2044401 - Scroll for Pole Arm for ATT - Improves attack on pole arm.\nSuccess rate:60%, weapon attack+2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044402 - Scroll for Pole Arm for ATT - Improves attack on pole arm.\nSuccess rate:10%, weapon attack+5, STR+3, weapon def.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044403 - Scroll for Pole Arm for ATT - Improves attack on pole arm.\nSuccess rate:100%, weapon attack +5, STR+3, weapon def.+1 +2044404 - Dark scroll for Pole Arm for ATT - Improves attack on pole arm.\nSuccess rate:70%, weapon attack +2, STR+1nIf failed, the item will be destroyed at a 50% rate. +2044405 - Dark scroll for Pole Arm for ATT - Improves attack on pole arm.\nSuccess rate:30%, weapon attack +5, STR+3, weapon def.+1nIf failed, the item will be destroyed at a 50% rate. +2044406 - Scroll for Pole Arm for ATT - Improves attack on the Pole arm. nSuccess rate:65%, weapon attack+2, STR+1 +2044407 - Scroll for Pole Arm for ATT - Improves attack on the Pole arm. nSuccess rate:15%, weapon attack+5, STR+3, weapon def.+1 +2044408 - [4yrAnniv]Scroll for Pole Arm for ATT - Improves attack for Maple Karstan nSuccess rate:40%, weapon attack+3, STR+2nIf failed, the item will be destroyed at a 30% rate. +2044410 - Scroll for Pole-Arm for Accuracy 100% - Improves accuracy on pole-arms.\nSuccess rate:100%, accuracy+1 +2044411 - Scroll for Pole-Arm for Accuracy 70% - Improves accuracy on pole-arms.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate. +2044412 - Scroll for Pole-Arm for Accuracy 60% - Improves accuracy on pole-arms.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044413 - Scroll for Pole-Arm for Accuracy 30% - Improves accuracy on pole-arms.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate. +2044414 - Scroll for Pole-Arm for Accuracy 10% - Improves accuracy on pole-arms.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2044500 - Scroll for Bow for ATT - Improves attack on bow.\nSuccess rate:100%, weapon attack+1 +2044501 - Scroll for Bow for ATT - Improves attack on bow.\nSuccess rate: 60%, weapon attack+2, accuracy +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044502 - Scroll for Bow for ATT - Improves attack on bow.\nSuccess rate:10%, weapon attack+5, accuracy+3, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044503 - Scroll for Bow for ATT - Improves attack on bow.\nSuccess rate:100%, weapon attack +5, accuracy +3, DEX+1 +2044504 - Dark scroll for Bow for ATT - Improves attack on bow.\nSuccess rate:70%, weapon attack +2, accuracy +1nIf failed, the item will be destroyed at a 50% rate. +2044505 - Dark scroll for Bow for ATT - Improves attack on bow.\nSuccess rate:30%, weapon attack +5, accuracy +3, DEX+1nIf failed, the item will be destroyed at a 50% rate. +2044506 - Scroll for Bow for ATT - Improves attack on the Bow. nSuccess rate:65%, weapon attack+2, accuracy+1 +2044507 - Scroll for Bow for ATT - Improves attack on the Bow. nSuccess rate:15%, weapon attack+5, accuracy+3, DEX+1 +2044508 - [4yrAnniv]Scroll for Bow for ATT - Improves attack on Maple Kandiva Bow. nSuccess rate:40%, weapon attack+3, accuracy+1nIf failed, the item will be destroyed at a 30% rate. +2044600 - Scroll for Crossbow for ATT - Improves attack on crossbow.\nSuccess rate:100%, weapon attack+1 +2044601 - Scroll for Crossbow for ATT - Improves attack on crossbow.\nSuccess rate:60%, weapon attack+2, accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044602 - Scroll for Crossbow for ATT - Improves attack on crossbow.\nSuccess rate:10%, weapon attack+5, accuracy+3, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044603 - Scroll for Crossbow for ATT - Improves attack on crossbow.\nSuccess rate:100%, weapon attack+5, accuracy+3, DEX+1 +2044604 - Dark scroll for Crossbow for ATT - Improves attack on crossbow.\nSuccess rate:70%, weapon attack+2, accuracy+1nIf failed, the item will be destroyed at a 50% rate. +2044605 - Dark scroll for Crossbow for ATT - Improves attack on crossbow.\nSuccess rate:30%, weapon attack+5, accuracy+3, DEX+1nIf failed, the item will be destroyed at a 50% rate. +2044606 - Scroll for Crossbow for ATT - Improves attack on the Crossbow. nSuccess rate:65%, weapon attack+2, accuracy+1 +2044607 - Scroll for Crossbow for ATT - Improves attack on the Crossbow. nSuccess rate:15%, weapon attack+5, accuracy+3, DEX+1 +2044608 - [4yrAnniv]Scroll for Crossbow for ATT - Improves attack on Maple Nishada. nSuccess rate:40%, weapon attack+3, accuracy+2nIf failed, the item will be destroyed at a 30% rate. +2044700 - Scroll for Claw for ATT - Improves attack on claw.\nSuccess rate:100%, weapon attack+1 +2044701 - Scroll for Claw for ATT - Improves attack on claw.\nSuccess rate:60%, weapon attack+2, accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044702 - Scroll for Claw for ATT - Improves attack on claw.\nSuccess rate:10%, weapon attack+5, accuracy+3, LUK+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044703 - Scroll for Claw for ATT - Improves attack on claw.\nSuccess rate:100%, weapon attack+5, accuracy+3, LUK+1 +2044704 - Dark Scroll for Claw for ATT - Improves attack on claw.\nSuccess rate:70%, weapon attack +2, accuracy +1nIf failed, the item will be destroyed at the 50% rate. +2044705 - Dark scroll for Claw for ATT - Improves attack on claw.\nSuccess rate:30%, weapon attack +5, accuracy +3, LUK+1nIf failed, the item will be destroyed at a 50% rate. +2044706 - Scroll for Claw for ATT - Improves attack on the Claw. nSuccess rate:65%, weapon attack+2, accuracy+1 +2044707 - Scroll for Claw for ATT - Improves attack on the Claw. nSuccess rate:15%, weapon attack+5, accuracy+3, LUK+1 +2044708 - [4yrAnniv]Scroll for Claw for ATT - Improves attack on Maple Scandar. nSuccess rate:40%, weapon attack+3, accuracy+2nIf failed, the item will be destroyed at a 30% rate. +2044800 - Scroll for Knuckler for Attack 100% - Improves attack on Knucklers.\nSuccess rate:100%, weapon att. +1 +2044801 - Scroll for Knuckler for Attack 60% - Improves attack on Knucklers.\nSuccess rate:60%, weapon att. +2, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044802 - Scroll for Knuckler for ATT - Improves attack on Knucklers.\nSuccess rate:10%, weapon att. +5, STR+3, weapon def. +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044803 - Scroll for Knuckler for Attack 70% - Improves attack on Knucklers.\nSuccess rate:70%, weapon att. +2, STR+1nIf failed, the item will be destroyed at a 50% rate +2044804 - Scroll for Knuckler for Attack 30% - Improves attack on Knucklers.\nSuccess rate:30%, weapon att. +5, STR+3, weapon def. +1nIf failed, the item will be destroyed at a 50% rate +2044805 - Scroll for Knuckle for Accuracy 100% - Improves accuracy on knuckles.\nSuccess rate:100%, accuracy+1 +2044806 - Scroll for Knuckle for Accuracy 70% - Improves accuracy on knuckles.\nSuccess rate:70%, accuracy+3, DEX+2, weapon att.+1nIf failed, the item will be destroyed at a 50% rate.. +2044807 - Scroll for Knuckle for Accuracy 60% - Improves accuracy on knuckles.\nSuccess rate:60%, accuracy+3, DEX+2, weapon att.+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044808 - Scroll for Knuckle for Accuracy 30% - Improves accuracy on knuckles.\nSuccess rate:30%, accuracy+5, DEX+3, weapon att.+3nIf failed, the item will be destroyed at a 50% rate.. +2044809 - Scroll for Knuckle for Accuracy 10% - Improves accuracy on knuckles.\nSuccess rate:10%, accuracy+5, DEX+3, weapon att.+3. The success rate of this scroll can be enhanced by Vega's Spell. +2044810 - [4yrAnniv] Scroll for Knuckle for Attack 40% - Improves the attack on Maple Golden Claw. nSuccess rate:40%,weapon att.+3,STR+2nIf failed, the item will be destroyed at a 30% rate. +2044900 - Scroll for Gun for Attack 100% - Improves attack on Guns.\nSuccess rate:100%, weapon att. +1 +2044901 - Scroll for Gun for Attack 60% - Improves attack on Guns.\nSuccess rate:60%, weapon att. +2, accuracy+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044902 - Scroll for Gun for ATT - Improves attack on Guns.\nSuccess rate:10%, weapon att. +5, accuracy+3, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. +2044903 - Scroll for Gun for Attack 70% - Improves attack on Guns.\nSuccess rate:70%, weapon att. +2, accuracy+1nIf failed, the item will be destroyed at a 50% rate +2044904 - Scroll for Gun for Attack 30% - Improves attack on Guns.\nSuccess rate:30%, weapon att. +5, accuracy+3, DEX+1nIf failed, the item will be destroyed at a 50% rate +2044905 - [4yrAnniv] Gun for Attack 40% - Improves the attact on Maple Canon Shooter. nSuccess rate:40%, weapon att.+3,naccuracy+2nIf failed, the item will be destroyed at a 30% rate. +2048000 - Scroll for Pet Equip. for Speed - Improves speed on pet equip.\nSuccess rate:100%, speed+1 +2048001 - Scroll for Pet Equip. for Speed - Improves speed on pet equip.\nSuccess rate:60%, moving speed+2. The success rate of this scroll can be enhanced by Vega's Spell. +2048002 - Scroll for Pet Equip. for Speed - Improves speed on pet equip.\nSuccess rate:10%, moving speed+3. The success rate of this scroll can be enhanced by Vega's Spell. +2048003 - Scroll for Pet Equip. for Jump - Improves jump on pet equip.\nSuccess rate:100%, jump+1 +2048004 - Scroll for Pet Equip. for Jump - Improves jump on pet equip.\nSuccess rate:60%, jump+2. The success rate of this scroll can be enhanced by Vega's Spell. +2048005 - Scroll for Pet Equip. for Jump - Improves jump on pet equip.\nSuccess rate:10%, jump+3. The success rate of this scroll can be enhanced by Vega's Spell. +2048006 - Scroll for Speed for Pet Equip. - Improves speed on Pet Equip. nSuccess rate:65%, speed+2 +2048007 - Scroll for Speed for Pet Equip. - Improves speed on Pet Equip. nSuccess rate:15%, speed+3 +2048008 - Scroll for jump for Pet Equip. - Improves jump on Pet equip. nSuccess rate:65%, jump+2 +2048009 - Scroll for jump for Pet Equip. - Improves jump on Pet equip. nSuccess rate:15%, jump+3 +2048010 - Scroll for Pet Equip. for STR 60% - Improves strength on pet equipments.\nSuccess rate:60%, STR+1. The success rate of this scroll can be enhanced by Vega's Spell. +2048011 - Scroll for Pet Equip. for INT 60% - Improves intelligence on pet equipments.\nSuccess rate:60%, INT+1. The success rate of this scroll can be enhanced by Vega's Spell. +2048012 - Scroll for Pet Equip. for DEX 60% - Improves dexterity on pet equipments.\nSuccess rate:60%, DEX+1. The success rate of this scroll can be enhanced by Vega's Spell. +2048013 - Scroll for Pet Equip. for LUK 60% - Improves luck on pet equipments.\nSuccess rate:60%, LUK+1. The success rate of this scroll can be enhanced by Vega's Spell. +2049000 - Clean Slate Scroll 1% - Recovers the lost number of upgrades due to failed scroll by 1. Not available on Cash Items. Success rate:1%, If failed, the item will be destroyed at a 2% rate... +2049001 - Clean Slate Scroll 3% - Recovers the lost number of upgrades due to failed scroll by 1. Success rate:3%, If failed, the item will be destroyed at a 6% rate.. +2049002 - Clean Slate Scroll 5% - Recovers the lost number of upgrades due to failed scroll by 1. Success rate:5%, If failed, the item will be destroyed at a 10% rate.. +2049003 - Clean Slate Scroll 20% - Recovers the lost number of upgrades due to failed scroll by 1. Success rate:20%, If failed, the item will be destroyed at a 50% rate.. +2049100 - Chaos Scroll 60% - Alters the equipment for better or worse. Not available on Cash Items.\nSuccess rate:60% +2049101 - Liar Tree Sap 100% - Use this on Pinocchio's nose to improve or downgrade the item options.\nSuccess rate:100% +2049102 - Maple Syrup 100% - Use it on Maple Leaf to improve or downgrade the item option. Success rate:100% +2049104 - Agent Equipment Scroll 100% - Can be used on an agent equipment to either enhance or worsen the function.\nSuccess rate:100% +2050000 - Antidote - Cures the state of being poisoned. +2050001 - Eyedrop - Cures the state of darkness +2050002 - Tonic - Cures the state of weakness. +2050003 - Holy Water - Allows you to recover from the state of curse or being sealed up. +2050004 - All Cure Potion - Allows you to recover from any abnormal state. +2050005 - One View - Use it on view-restricted map to increase the vision of your partymates and yourself for 1 minute. +2050006 - Owl Potion - Recover total vision in vision-restricted map for 30 seconds. +2050098 - The Lost eye - The Lost eye +2050099 - Flaming feather - Flaming feather +2060000 - Arrow for Bow - A barrel full of arrows. Only usable with bows. +2060001 - Bronze Arrow for Bow - A barrel full of bronze arrows. Only usable with bows.\nAttack + 1 +2060002 - Steel Arrow for Bow - A barrel full of steel arrows. Only usable with bows.\nSTR +1, Attack +1 +2060003 - Red Arrow for Bow - A case full of arrows. Can only be used with a bow. \nAttack + 4. +2060004 - Diamond Arrow for Bow - A case full of arrows. Can only be used with a bow.nAttack + 4. +2060005 - Snowball - A packed ball of snow. Can be thrown to inflict damage. +2060006 - Big Snowball - A bigger, more intimidating packed ball of snow. Can be thrown to inflict damage. +2061000 - Arrow for Crossbow - A barrel full of arrows. Only usable with crossbows. +2061001 - Bronze Arrow for Crossbow - A barrel full of bronze arrows. Only usable with crossbows.\nAttack + 1 +2061002 - Steel Arrow for Crossbow - A barrel full of steel arrows. Only usable with crossbows.nAttack +2 +2061003 - Blue Arrow for Crossbow - A case full of arrows. Can only be used with a crossbow.nAttack + 4. +2061004 - Diamond Arrow for Crossbow - A case full of arrows. Can only be used with a crossbow.nAttack + 4. +2070000 - Subi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 15 +2070001 - Wolbi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 17 +2070002 - Mokbi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 19 +2070003 - Kumbi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 21 +2070004 - Tobi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 23 +2070005 - Steely Throwing-Knives - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 25 +2070006 - Ilbi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 27 +2070007 - Hwabi Throwing-Stars - A throwing-star made out of steel. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 27 +2070008 - Snowball - A well-packed snowball. Once they run out, they need to be recharged.\nLevel Limit : 10, Attack + 17 +2070009 - Wooden Top - When thrown, it spins fast and flies at great speed. Once they are all used up, they need to be recharged.\nLevel Limit : 10, Attack + 19 +2070010 - Icicle - Sharp icicles. Once they run out, they need to be recharged.rnLevel Limit : 10, Attack + 21 +2070011 - Maple Throwing-Stars - Maple-shaped steel throwing-stars. Once they run out, they need to be recharged.rnLevel Limit : 10, Attack + 21 +2070012 - Paper Fighter Plane - A paper plane that can be thrown at things. Once they run out, they need to be recharged. Attack +20 +2070013 - Orange - A tasty orange that can be thrown at things. Attack + 20 +2070014 - Devil Rain Throwing Star - Throwing Star +2070015 - A Beginner Thief's Throwing Stars - These are steel throwing stars given by Dark Lord for Beginner Thieves. Unlike normal throwing stars, you can't recharge it. \nAttack + 15 +2070016 - Crystal Ilbi Throwing-Stars - A throwing-star made of crystal. Once they run out, they need to be recharged. rnAttack + 29 +2070018 - Balanced Fury - Ancient Shadowknight throwing stars made from black crystal. These can be recharged when used up. rnAttack + 30 +2083000 - Heart Megaphone - Shout to everyone in the world your character is on with this megaphone. (Heart accents) +2084000 - Skull Megaphone - Shout to everyone in the world your character is on with this megaphone. (Skull accents) +2100000 - Black Sack - If you think your level's too low, don't bother opening it. +2100001 - Monster Sack 1 - Summons weak monsters of level 10 and under +2100002 - Monster Sack 2 - Summons weak monsters between levels 10 and 20 +2100003 - Monster Sack 3 - Summons mid-lower-leveled monsters between levels 20 and 30 +2100004 - Monster Sack 4 - Summons mid-level monsters between levels 30 and 40 +2100005 - Monster Sack 5 - Summons mid-leveled monsters between levels 40 and 50 +2100006 - Monster Sack 6 - Summons high-leveled monsters between levels 50 and 60 +2100007 - Monster Sack 7 - Summons high-leveled monsters between levels 60 and 70 +2100008 - Summoning the Boss - To the old, the pregnant, and the low-leveled : don't even bother... +2100009 - Summoning New-Type Balrog - The moment you summon it...you're dead already +2100010 - Summoning "Dances with Balrog's Clone" - Summons Dances with Balrog's Clone +2100011 - Summoning Grendel the Really Old's Clone - Summons Grendel the Really Old's Clone +2100012 - Summoning Athena Pierce's Clone - Summons Athena Pierce's Clone +2100013 - Summoning Dark Lord's Clone - Summons Dark Lord's Clone +2100014 - Brand New Monster Galore - Bam! +2100015 - Summoning Bag of Birds - A bag, which summons blue and pink birds living in Eos Tower +2100016 - Different Sack - A sack that summons monsters. +2100017 - Alien Sack - A sack full of aliens +2100018 - Toy Robot Sack - A sack full of toy robots. +2100019 - Toy Trojan Sack - A sack full of toy trojans. +2100020 - Moon Sack - Make your wish in front of the full moon. +2100021 - Moon Sack - Make your wish in front of the full moon. +2100022 - Moon Sack - Make your wish in front of the full moon. +2100023 - Moon Sack - Make your wish in front of the full moon. +2100024 - Moon Sack - Make your wish in front of the full moon. +2100025 - Moon Sack - Make your wish in front of the full moon. +2100026 - Penalty Monster Sack 1 - Summons Black Knight. +2100027 - Penalty Monster Sack 2 - Summons Myst Knight. +2100028 - Summoning Three-Tail Fox - A peculiar summon sack that summons Three-Tail Fox +2100029 - Summoning Ghosts - A peculiar summon sack that summons ghosts. No way to tell which one, though... +2100030 - Summoning Goblins - A peculiar summon sack that summons goblins. No way to tell which one, though... +2100031 - Summoning Horntail A - Summons Head A of Horntail. +2100032 - Summoning Horntail C - Summons Head C of Horntail. +2100033 - Monster Sack 8 - Summons high-leveled monsters between levels 70 and 80 +2100034 - Monster Sack 9 - Summons high-leveled monsters between levels 80 and 90 +2100035 - Monster Sack 10 - Summons high-leveled monsters between levels 90 and 100 +2100036 - Monster Sack 11 - Summons high-leveled monsters between levels 100 and 110 +2100037 - Summon Master Monsters 1 - Summon the Event-only Mano & Stumpy. +2100038 - Summon Master Monsters 2 - Summon the Event-only Faust, King Clang, Timer, and Dyle. +2100039 - Summon Master Monsters 3 - Summon the Event-only Nine-Tailed Fox, Tae Roon, and King Sage Cat. +2100040 - Summon Master Monsters 4 - Summon the Event-only Elliza, and Snowman. +2100041 - Summoning Lord Pirate - Summons Lord Pirate. +2100042 - Summoning Peeking Lord Pirate - Summons Peeking Lord Pirate. +2100043 - Summoning Angry Lord Pirate - Summons Angry Lord Pirate. +2100044 - Summoning Enraged Lord Pirate - Summons Enraged Lord Pirate. +2100045 - Summoning Lord Pirate's Jar - Summoning Lord Pirate's Jar. +2100046 - Summoning Lord Pirate's Ginseng Jar - Summons Lord Pirate's Ginseng Jar. +2100047 - Summoning Lord Pirate's Bellflower - Summons Lord Pirate's Bellflower. +2100048 - Summoning Lord Pirate's Old Bellflower - Summoning Lord Pirate's Old Bellflower. +2100049 - Summoning Lord Pirate's Mr. Alli - Summons Lord Pirate's Mr. Alli +2100050 - Summoning Lord Pirate's Kru - Summons Lord Pirate's Kru. +2100051 - Summoning Lord Pirate's Captain - Summons Lord Pirate's Captain. +2100052 - Moon Rabit Monster Sack - You can summon Moon Rabbit. +2100053 - Summon Romeo and Juliet PQ Mob - Summon Rabbit bundle +2100054 - Summon Romeo and Juliet PQ Mob - Summon Frankenroid +2100055 - Summon Romeo and Juliet PQ Mob - Summon Angry Frankenroid +2100056 - Summon Romeo and Juliet PQ Mob - Summon Fallen Romeo +2100057 - Summon Romeo and Juliet PQ Mob - Summon Fallen Romeo +2100058 - Summon Romeo and Juliet PQ Mob - Summon Frankenroid +2100059 - Summon Romeo and Juliet PQ Mob - Summon Angry Frankenroid +2100060 - Weird Sack - Summon Halloween Monster! +2100061 - Strange Sack - Summon Halloween Monster!! +2100062 - Interesting Sack - Summon Halloween Monster!!! +2100063 - Summon Ghost - Summon Mirror Ghost +2100064 - Summon Ghost 2 - Summon Mirror Ghost +2100065 - Summon Ghost 3 - Summon Mirror Ghost +2100066 - Summon Slime - A summoning sack to summon 10 Slimes. +2100067 - Bombs for Hunting Competition - A bomb used for the Hunting Competition. If hit with the bomb, the victim will lose the Spirit Jewel. +2100068 - Snowman Summon Sack - A sack that summons small Snowman made with hands. After 3 minutes, the summoned snowman will melt and disappear. +2100069 - Event Box - For Events +2100070 - 1st Monster Marble - A marble that contains poisoned monsters on the 1st floor. Use it to bring out the poisoned monster from the marble. +2100071 - Mu Lung Dojo Summon Package1_Mano - Summon Mano +2100072 - Mu Lung Dojo Summon Package2_Stumpy - Summon Stumpy +2101000 - Summoning Mushmom - Summons a Mushmom +2101001 - Summoning Crimson Balrog - Summons a Crimson Balrog +2101002 - Summoning Werewolf - Summons a Werewolf +2101003 - Summoning Yeti & Pepe - Summons one set of Yeti & Pepe +2101004 - Summoning Superslime - Summons a Superslime +2101005 - Summoning Tauromacis - Summons a Tauromacis +2101006 - Summoning Taurospear - Summons a Taurospear +2101007 - Summoning Lycanthrope - Summons a Lycanthrope. +2101008 - Summoning Dark Yeti & Pepe - Summons a set of Dark Yeti & Pepe. +2101009 - Summon Red Boogie - Summons Red Boogies. +2101010 - Summon Blue Boogie - Summons Blue Boogies. +2101011 - Summon Green Boogie - Summons Green Boogies. +2101012 - Summon Black Boogie - Summons Black Boogies. +2101013 - Summon Showa Boss - Summons Showa Boss. +2101014 - Summon Monsters - Summon particular monsters. +2101015 - Summon Bodyguard A - Summons Bodyguard A. +2101016 - Summon Toy Robot - Summons toy robots. +2101017 - Summon Black Boogie - Summons Black Boogie. +2101018 - Summon Black Boogie - (no description) +2101019 - Summon Pachinko Monster - (no description) +2101020 - Halloween Monster Sack - Summon Halloween monsters. +2101021 - Monster Sack (Jr. Mimick) - Summons 1 Jr. Mimick +2101022 - Monster Sack (Golden Egg) - (no description) +2101023 - Monster Sack (Slime Gold) - Summons 3 Slime Gold. +2101024 - Monster Sack (Slime Silver) - Summons 1 Slime Silver. +2101025 - Monster Sack (Slime Red) - Summons 5 Slime Red. +2101026 - Monster Sack (Mushmom Blue) - Summons 1 Mushmom Blue. +2101039 - Monster Summoning Sack(Alishar) - Summons 1 Alishar. +2101043 - Amoria Penalty Monster Sack1 - Summons some monsters. +2101044 - Amoria Penalty Monster Sack2 - Summons some monsters. +2101045 - Amoria Penalty Monster Sack3 - Summons some monsters. +2101046 - Amoria Penalty Monster Sack4 - Summons some monsters. +2101047 - Amoria Penalty Monster Sack5 - Summons some monsters. +2101048 - Amoria Penalty Monster Sack6 - Summons some monsters. +2101049 - Amoria Penalty Monster Sack7 - Summons some monsters. +2101050 - GM event Sack1 - Summons some monsters. Slime Storm. +2101051 - GM event Sack2 - Summons some monsters. Mushroom Boom +2101052 - GM event Sack3 - Summons some monsters. Pigs in a Blanket +2101053 - GM event Sack4 - Summons some monsters. Eye See You +2101054 - GM event Sack5 - Summons some monsters. Alien Armada +2101055 - GM event Sack6 - Summons some monsters. Toying Around +2101056 - GM event Sack7 - Summons some monsters. Crimson Crash +2101057 - Amoria Penalty Monster Sack8 - Summons some monsters. +2101058 - Amoria Penalty Monster Sack8 - Summons some monsters. +2101060 - Monster Sack (SG CBD) - Summons 9 SG Exclusive monsters. +2101061 - Monster Sack (SG Ghost ship) - Summons 4 SG Exclusive monsters. +2101072 - Monster Sack - Summons some monsters. +2101073 - Monster Sack - Summons some monsters. +2101080 - Monster Sack(x-mas07_1) - Monster Sack(x-mas07_1) +2101081 - Monster Sack(x-mas07_2) - Monster Sack(x-mas07_2) +2101082 - Monster Sack(x-mas07_3) - Monster Sack(x-mas07_3) +2101083 - Monster Sack(x-mas07_4) - Monster Sack(x-mas07_4) +2101084 - Monster Sack(x-mas07_5) - Monster Sack(x-mas07_5) +2101085 - Monster Sack(x-mas07_6) - Monster Sack(x-mas07_6) +2101086 - Monster Sack(x-mas07_7) - Monster Sack(x-mas07_7) +2101087 - Monster Sack(x-mas07_8) - Monster Sack(x-mas07_8) +2101088 - Monster Sack(x-mas07_9) - Monster Sack(x-mas07_9) +2101089 - Monster Sack(x-mas07_10) - Monster Sack(x-mas07_10) +2101090 - Monster Sack(x-mas07_11) - Monster Sack(x-mas07_11) +2101091 - Monster Sack(x-mas07_12) - Monster Sack(x-mas07_12) +2101092 - Monster Sack(x-mas07_13) - Monster Sack(x-mas07_13) +2101093 - Monster Sack(x-mas07_14) - Monster Sack(x-mas07_14) +2101124 - Giant Snowman (Lvl 1) - Easy Sack - A monster sack that summons a Giant Snowman. +2101125 - Giant Snowman (Lvl 1) - Medium Sack - A monster sack that summons a Giant Snowman. +2101126 - Giant Snowman (Lvl 1) - Hard Sack - A monster sack that summons a Giant Snowman. +2101127 - Cross (Easy) Sack - A monster sack that summons Cross. +2101128 - Cross (Medium) Sack - A monster sack that summons Cross. +2101129 - Cross (Hard) Sack - A monster sack that summons Cross. +2101130 - Summon Christmas Socks - Summons Christmas Sock monsters. +2101131 - Summon Luck Sack - Summons luck sack. +2101137 - Masteria Summoning Bag-Jungle Jam - A mysterious black sack that calls forth monsters from the Krakian Jungle. +2101138 - Masteria Summoning Bag-Corrupted Army - A mysterious black sack that calls forth monsters from Crimsonwood Mountain. +2101139 - Masteria Summoning Bag-Bosses - A mysterious black sack that calls forth powerful monsters from Masteria. Not for the faint of heart! Bigfoot will stomp nearly anyone! +2101140 - MasteriaPQ Summon Bag1 - (no description) +2101141 - MasteriaPQ Summon Bag2 - (no description) +2101142 - MasteriaPQ Summon Bag3 - (no description) +2101143 - MasteriaPQ Summon Bag4 - (no description) +2101144 - MasteriaPQ Summon Bag5 - (no description) +2101145 - MasteriaPQ Summon Bag6 - (no description) +2101146 - MasteriaPQ Summon Bag7 - (no description) +2101147 - MasteriaPQ Summon Bag8 - (no description) +2101148 - MasteriaPQ Summon Bag9 - (no description) +2101158 - Big Puff Daddy Sack - A sack filled with Big Puff Daddys +2102000 - Monster Attack Lvl 1 - Summons 3 Slimes, Pigs, Orange Mushrooms, Bubblings, Octopuses, Green Mushrooms, and Horny Mushrooms each. +2102001 - Monster Attack Lvl 2 - Summons 3 Drumming Bunnies, Ligators, Ratz, Star Pixie's, Jr. Wraith's, and Jr. Pepe's each. +2102002 - Monster Attack Lvl 3 - Summons 3 Panda Teddy's, King Bloctopuses, Lorangs, Zombie Lupins, Hellies, and Tweeters each. +2102003 - Monster Attack Lvl 4 - Summons 3 Toy Trojans, King Block Golems, Wraiths, Cheif Grey's, and Mixed Golems each. +2102004 - Monster Attack Lvl 5 - Summons 3 Mushmoms, Red Drakes, Ice Drakes, Master Soul Teddy's, and Dark Yeti's each. +2102005 - Monster Attack Lvl 6 - Summons 3 Taurospears, King Blue Goblins, Luinels, Werewolves, and Yeti & Pepes each. +2102006 - Monster Attack Lvl 7 - Summons 3 Lycanthropes, Death Teddy's, Gigantic Spirit Vikings, and G. Phantom Watches each. +2102007 - Monster Attack Lvl 8 - Summons 5 Bains, 2 Jr. Balrogs, and 1 Crimson Balrog. +2102008 - Monster Attack Package 1 - Summons one of each monsters featured in Monster Attack Level 1 ~ Level 3. +2102009 - Monster Attack Package 2 - Summons one of each monsters featured in Monster Attack Level 4 ~ Level 7. +2109000 - Monster Marble - A marble that contains poisoned monsters. Use it to bring out the poisoned monster from the marble. +2109001 - 1st Monster Marble - A marble that contains poisoned monsters on the 1st floor. Use it to bring out the poisoned monster from the marble. +2109002 - 2nd Monster Marble - A marble that contains poisoned monsters on the 2nd floor. Use it to bring out the poisoned monster from the marble. +2109003 - 3rd Monster Marble - A marble that contains poisoned monsters on the 3rd floor. Use it to bring out the poisoned monster from the marble. +2120000 - Pet Food - Small pets love them. Recovers 30 Fullness. NOT for human! +2120008 - Dry Treat - A high-quality dry treat that the Pigmies love. Pets love them, too. +2160101 - New Year's Card - Double-click on the item to send a New Year's card to a character of your choice. +2190000 - Lie Detector Test - Can be used on suspected botters. Usable only when a suspect is hunting. +2210000 - Orange Mushroom Piece - A crystal piece that resembles Orange Mushroom. When used, the crystal will melt into the body, and its mythical power will transform the user into Orange Mushroom. This mythical power will last for an hour. +2210001 - Ribbon Pig Piece - A crystal piece that resembles Ribbon Pig. When used, the crystal will melt into the body, and its mythical power will transform the user into Ribbon Pig. This mythical power will last for an hour. +2210002 - Grey Piece - A crystal piece that resembles Grey. When used, the crystal will melt into the body, and its mythical power will transform the user into Grey. This mythical power will last for an hour. +2210003 - Dragon Elixir - A mysterious elixir made by Moira which enables anyone that drinks this potion to temporarily transform into a dragon. +2210005 - Tigun Transformation Bundle. - A secret medicine that allows you to transform into Tigun, the patrol guard. +2210006 - Rainbow-colored Snail Shell - A special shell only found through Mano. Apparently it's powerful enough to grant a wish... +2210007 - Change to Ghost - First the body feels light, then all of a sudden, you're floating. Oh no, you're a ghost! +2210008 - Ghost Candy - A ghost-shaped candy with a mysterious set of ingredients. Apparently it has some special powers. +2210009 - Sophillia's Abandoned Doll - An abandoned doll that Sophillia threw away a long time ago, but revived by the Masked Man. Pet its hair, and you'll turn into Sophillia for 3 minutes. +2210010 - Potion of Transformation - The moment this potion is taken, you'll become a powerful, otherworldly being. +2210011 - Potion of Transformation - The moment this potion is taken, you'll become a powerful, otherworldly being. +2210012 - Change to Mouse - Transform into a small, tiny mouse. +2210016 - Mini Draco Transformation - The mysterious skills of an old halfling has transformed you into a form of a dragon. You can now fly. +2210023 - Cliff's Special Potion - No one knows what you'll transform into when you drink this, but something WILL happen for one hour. It's all about the risk... +2210024 - Maplemas Party Potion - Double-click on this to transform a character of your choice. Which one? Try it and find out! +2210032 - Cody's Picture - A picture given by Cody of himself. I get a feeling something fun will happen when I use it. +2210033 - Cake Picture - A picture of a delicious cake that Cody gave as a gift. I get a feeling something funny with happen when I use it. +2211000 - Cliff's Special Potion - No one knows what you'll transform into when you drink this, but something WILL happen for one hour. It's all about the risk... +2212000 - Maplemas Party Potion - Double-click on this to transform a character of your choice. Which one? Try it and find out! +2240000 - Moonstone Engagement Ring Box - Engagement Ring made of Moon Rock. The ring will be inside a wrapped box. Required for proposal. +2240001 - Star gem Engagement Ring Box - Engagement Ring made of Star Rock. The ring will be inside a wrapped box. Required for proposal. +2240002 - Golden Heart Engagement Ring Box - Engagement Ring made of gold. The ring will be inside a wrapped box. Required for proposal. +2240003 - Silver Swan Engagement Ring Box - Engagement Ring made of silver. The ring will be inside a wrapped box. Required for proposal. +2240004 - Ring of Moon Stone - An engagement ring crafted out of Moon Rock and Diamond. Use this to propose to your loved one. +2240005 - Ring of Moon Stone: 2 Carats - An engagement ring crafted out of Moon Rock and 2 carats of Diamond. Use this to propose to your loved one. +2240006 - Ring of Moon Stone: 3 Carats - An engagement ring crafted out of Moon Rock and 3 carats of Diamond. Use this to propose to your loved one. +2240007 - Ring of Shining Star - An engagement ring crafted out of Star Rock and Diamond. Use this to propose to your loved one. +2240008 - Ring of Shining Star: 2 Carats - An engagement ring crafted out of Star Rock and 2 carats of Diamond. Use this to propose to your loved one. +2240009 - Ring of Shining Star: 3 Carats - An engagement ring crafted out of Star Rock and 3 carats of Diamond. Use this to propose to your loved one. +2240010 - Gold Heart Ring - An engagement ring crafted out of Gold and Diamond. Use this to propose to your loved one. +2240011 - Gold Heart Ring: 2 Carats - An engagement ring crafted out of Gold and 2 carats of Diamond. Use this to propose to your loved one. +2240012 - Gold Heart Ring: 3 Carats - An engagement ring crafted out of Gold and 3 carats of Diamond. Use this to propose to your loved one. +2240013 - Ring of Silver Wing - An engagement ring crafted out of Silver and Diamond. Use this to propose to your loved one. +2240014 - Ring of Silver Wing: 2 Carats - An engagement ring crafted out of Silver and 2 carats of Diamond. Use this to propose to your loved one. +2240015 - Ring of Silver Wing: 3 Carats - An engagement ring crafted out of Silver and 3 carats of Diamond. Use this to propose to your loved one. +2260000 - Revitalizer - Restores tamed monster's fatigue level by 30. +2270000 - Pheromone Perfume - A perfume created by Kenta using Pheromone. Enables the user to tame hogs down at the Korean Folk Village. +2270001 - Pouch - A pouch with a jewel on the surface. Possesses a special power in that double-clicking the pouch will suck up the surrounding ghosts in the area. +2270002 - Element Rock - A special alchemist tool that converts an absorbed power of monster into a jewel. The inner part seems to be slightly transparent. +2270003 - Cliff's Magic Cane - A magic cane that tames the lost Rudolph. +2270004 - Purification Marble - It's a special magic marble that can contain and purify a monster. +2270005 - 1st Transparent Marble - A special magic marble that can contain a poisoned monster on the 1st floor. +2270006 - 2nd Transparent Marble - A special magic marble that can contain a poisoned monster on the 2nd floor. +2270007 - 3rd Transparent Marble - A special magic marble that can contain a poisoned monster on the 3rd floor. +2280000 - Lava Bottle - A glass bottle that contains an actual lava, which is waiting to be spilled out. Drink this lava, and the lava will consume the body with fire, which will enable the drinker to master Fire Demon. +2280001 - Black Cloud Machine - A mechanical device that produces black clouds. Enables the character to acquire the Smokescreen skill using the clouds. +2280002 - Firm Hand - A stimulant packaged inside a bottle that resembles a clenched fist. Drinking the stimulant will allow the character to acquire The Will of a Warrior. +2280003 - [Skill Book] Maple Hero - You can learn #cMaple Hero# with this book.rnJob : All 4th jobsrnCondition : #cMaple Hero# not acquired. +2280004 - [Skill Book] Infinity - You can learn #Infinity# with this book.rnJob : 4th Advancement MagicianrnCondition : #cInfinity# not acquired +2280005 - [Skill Book] Dragon's Breath - You can learn #cDragon's Breath# with this book.wnJob : 4th Advancement BowmanrnCondition : #cDragon's Breath# not acquired +2280006 - [Skill Book] Taunt - You can learn #cTaunt# with this book.rnJob : 4th Advancement ThiefrnCondition : #cTaunt# not acquired +2280007 - [Skill Book] Advanced Combo Attack - You can learn #cAdvanced Combo Attack# with this book.rnClass : HerornCondition : #cAdvanced Combo# not acquired +2280008 - [Skill Book] Advanced Charge - You can learn #cAdvanced Charge# with this book.rnClass : PaladinrnCondition : #cAdvanced Charge# not acquired +2280009 - [Skill Book] Angel Ray - You can learn #cAngel Ray# with this book.rnClass : BishoprnCondition : #cAngel Ray# not acquired +2280010 - [Skill Book] Triple Throw - You can learn #cTriple Throw# with this book.rnClass : Night LordrnCondition : #cTriple Throw# not acquired +2280011 - Ancient Ice Powder - This is a pack full of ancient ice powder. If you eat this, you will feel chilled and can learn Ice Demon. +2280012 - [Skill Book] Rush - You can learn #cRush# with this book.rnJob : 4th Advancement WarriorrnCondition : #cRush# not acquired +2290000 - [Mastery Book] Monster Magnet - This increases master level of the #cMonster Magnet# skill up to 20 with 70% chance of success.rnJob : 4th Advancement WarriorrnCondition : Skill level above 5 +2290001 - [Mastery Book] Monster Magnet - This increases master level of the #cMonster Magnet# skill up to 30 with 50% chance of success. rnJob : 4th Advancement WarriorrnCondition : Skill Level above 15 +2290002 - [Mastery Book] Achilles - This increases the master level of #cAchilles# up to 20 with 70% of chance.rnJob : 4th Advancement WarriorrnCondition : Skill level above 5 +2290003 - [Mastery Book] Achilles - This increases the master level of #cAchilles# up to 30 with 50% of chance.rnJob : 4th Advancement WarriorrnCondition : Skill level above 15 +2290004 - [Mastery Book] Rush - This increases the master level of #cRush# up to 20 with 70% of chance.rnJob : 4th Advancement WarriorrnCondition : Skill level above 5 +2290005 - [Mastery Book] Rush - This increases the master level of #cRush# up to 30 with 50% of chance.rnJob : 4th Advancement WarriorrnCondition : Skill level above 15 +2290006 - [Mastery Book] Power Stance - This increases the master level of #cPower Stance# up to 20 with 70% of chance.rnJob : 4th Advancement WarriorrnCondition : Skill level above 5 +2290007 - [Mastery Book] Power Stance - This increases the master level of #cPower Stance# up to 30 with 50% of chance.rnJob : 4th Advancement WarriorrnCondition : Skill level above 15 +2290008 - [Mastery Book] Advanced Combo Attack - This increases the master level of #cAdvanced Combo Attack# up to 20 with 70% of chance.rnClass : HerornCondition : Skill level above 5 +2290009 - [Mastery Book] Advanced Combo Attack - This increases the master level of #cAdvanced Combo Attack# up to 30 with 50% of chance.rnClass : HerornCondition : Skill level above 15 +2290010 - [Mastery Book] Brandish - This increases the master level of #cBrandish# up to 20 with 70% of chance.rnClass : HerornCondition : Skill level above 5 +2290011 - [Mastery Book] Brandish - This increases the master level of #cBrandish# up to 30 with 50% of chance.rnClass : HerornCondition : Skill level above 15 +2290012 - [Mastery Book] Blast - This increases the master level of #cBlast # up to 20 with 70% of chance.rnClass : PaladinrnCondition : Skill level above 5 +2290013 - [Mastery Book] Blast - This increases the master level of #cBlast# up to 30 with 50% of chance.rnClass : PaladinrnCondition : Skill level above 15 +2290014 - [Mastery Book] Guardian - This increases the master level of #cGuardian# up to 20 with 70% of chance.rnClass : Hero,PaladinrnCondition : Skill level above 5 +2290015 - [Mastery Book] Guardian - This increases the master level of #cGuardian# up to 30 with 50% of chance.rnClass : Hero,PaladinrnCondition : Skill level above 15 +2290016 - [Mastery Book] Enrage - This increases the master level of #cEnrage# up to 20 with 70% of chance.rnClass : HerornCondition : Skill level above 5 +2290017 - [Mastery Book] Enrage - This increases the master level of #cEnrage# up to 30 with 50% of chance.rnClass : HerornCondition : Skill level above 15 +2290018 - [Mastery Book] Holy Charge - This increases the master level of #cHoly Charge# up to 20 with 70% of chance.rnClass : PaladinrnCondition : Skill level above 5 +2290019 - [Mastery Book] Divine Charge - This increases the master level of #cDivine Charge# up to 20 with 70% of chance.rnClass : PaladinrnCondition : Skill level above 5 +2290020 - [Mastery Book] Heaven's Hammer - This increases the master level of #cHeaven's Hammer# up to 20 with 70% of chance.rnClass : PaldainrnCondition : Skill level above 5 +2290021 - [Mastery Book] Heaven's Hammer - This increases the master level of #cHeaven's Hammer# up to 30 with 50% of chance.rnClass : PaladinrnCondition : Skill level above 15 +2290022 - [Mastery Book] Berserk - This increases the master level of #cBerserk# up to 20 with 70% of chance.rnClass : Dark KnightrnCondition : Skill level above 5 +2290023 - [Mastery Book] Berserk - This increases the master level of #cBerserk# up to 30 with 50% of chance.rnClass : Dark KnightrnCondition : Skill level above 15 +2290024 - [Mastery Book] Mana Reflection - This increases the master level of #cMana Reflection# up to 20 with 70% of chance.rnJob : 4th Advancement MagicianrnCondition : Skill level above 5 +2290025 - [Mastery Book] Mana Reflection - This increases the master level of #cMana Reflection# up to 30 with 50% of chance.rnJob : 4th Advancement MagicianrnCondition : Skill level above 15 +2290026 - [Mastery Book] Big Bang - This increases the master level of #cBig Bang# up to 20 with 70% of chance.rnJob : 4th Advancement MagicianrnCondition : Skill level above 5 +2290027 - [Mastery Book] Big Bang - This increases the master level of #cBig Bang # up to 30 with 50% of chance.rnJob : 4th Advancement MagicianrnCondition : Skill level above 15 +2290028 - [Mastery Book] Infinity - This increases the master level of #cInfinity# up to 20 with 70% of chance.rnJob : 4th Advancement MagicianrnCondition : Skill level above 5 +2290029 - [Mastery Book] Infinity - This increases the master level of #cInfinity# up to 30 with 50% of chance.rnJob : 4th Advancement MagicianrnCondition : Skill level above 15 +2290030 - [Mastery Book] Paralyze - This increases the master level of #cParalyze# up to 20 with 70% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 5 +2290031 - [Mastery Book] Paralyze - This increases the master level of #cParalyze# up to 30 with 50% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 15 +2290032 - [Mastery Book] Chain Lightning - This increases the master level of #cChain Lightning# up to 20 with 70% of chance.rnClass : Arch Mage(Ice, Lightning)rnCondition : Skill level above 5 +2290033 - [Mastery Book] Chain Lightning - This increases the master level of #cChain Lightning# up to 30 with 50% of chance.rnClass : Arch Mage(Ice, Lightning)rnCondition : Skill level above 15 +2290034 - [Mastery Book] Holy Shield - This increases the master level of #cHoly Shield# up to 20 with 70% of chance.rnClass : BishoprnCondition : Skill Level above 5 +2290035 - [Mastery Book] Holy Shield - This increases the master level of #cHoly Shield# up to 30 with 50% of chance.rnClass : BishoprnCondition : Skill level above 15 +2290036 - [Mastery Book] Fire Demon - This increases the master level of #cFire Demon# up to 20 with 70% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 5 +2290037 - [Mastery Book] Fire Demon - This increases the master level of #cFire Demon# up to 30 with 50% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 15 +2290038 - [Mastery Book] Elquines - This increases the master level of #cElquines# up to 20 with 70% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 5 +2290039 - [Mastery Book] Elquines - This increases the master level of #cElquines# up to 30 with 50% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 15 +2290040 - [Mastery Book] Meteor Shower - This increases the master level of #cMeteor Shower# up to 20 with 70% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 5 +2290041 - [Mastery Book] Meteor Shower - This increases the master level of #cMeteor Shower# up to 30 with 50% of chance.rnClass : Arch Mage(Fire,Poison)rnCondition : Skill level above 15 +2290042 - [Mastery Book] Ice Demon - This increases the master level of #cIce Demon# up to 20 with 70% of chance.rnClass : Arch Mage(Ice, Lightning)rnCondition : Skill level above 5 +2290043 - [Mastery Book] Ice Demon - This increases the master level of #cIce Demon# up to 30 with 50% of chance.rnClass : Arch Mage(Ice, Lightning)rnCondition : Skill level above 15 +2290044 - [Mastery Book] Ifrit - This increases the master level of #cIfrit# up to 20 with 70% of chance.rnClass : Arch Mage(Ice,Lightning)rnCondition : Skill level above 5 +2290045 - [Mastery Book] Ifrit - This increases the master level of #cIfrit# up to 30 with 50% of chance.rnClass : Arch Mage(Ice,Lightning)rnCondition : Skill level above 15 +2290046 - [Mastery Book] Blizzard - This increases the master level of #cBlizzard# up to 20 with 70% of chance.rnClass : Arch Mage(Ice,Lightning)rnCondition : Skill level above 5 +2290047 - [Mastery Book] Blizzard - This increases the master level of #cBlizzard# up to 30 with 50% of chance.rnClass : Arch Mage(Ice,Lightning)rnCondition : Skill level above 15 +2290048 - [Mastery Book] Genesis - This increases the master level of #cGenesis# up to 20 with 70% of chance.rnClass : BishoprnCondition : Skill level above 5 +2290049 - [Mastery Book] Genesis - This increases the master level of #cGenesis# up to 30 with 50% of chance.rnClass : BishoprnCondition : Skill level above 15 +2290050 - [Mastery Book] Angel Ray - This increases the master level of #cAngel Ray# up to 20 with 70% of chance.rnClass : BishoprnCondition : Skill level above 5 +2290051 - [Mastery Book] Angel Ray - This increases the master level of #cAngel Ray# up to 30 with 50% of chance.rnClass : BishoprnCondition : Skill level above 15 +2290052 - [Mastery Book] Sharp Eyes - This increases the master level of #cSharp Eyes# up to 20 with 70% of chance.rnJob : 4th Advancement BowmanrnCondition : Skill level above 5 +2290053 - [Mastery Book] Sharp Eyes - This increases the master level of #cSharp Eyes# up to 30 with 50% of chance.rnJob : 4th Advancement BowmanrnCondition : Skill level above 15 +2290054 - [Mastery Book] Dragon's Breath - This increases the master level of #cDragon's Breath# up to 20 with 70% of chance.rnJob : 4th Advancement BowmanrnCondition : Skill level above 5 +2290055 - [Mastery Book] Dragon's Breath - This increases the master level of #cDragon's Breath# up to 30 with 50% of chance.rnJob : 4th Advancement BowmanrnCondition : Skill level above 15 +2290056 - [Mastery Book] Bow Expert - This increases the master level of #cBow Expert# up to 20 with 70% of chance.rnClass : Bow MasterrnCondition : Skill level above 5 +2290057 - [Mastery Book] Bow Expert - This increases the master level of #cBow Expert # up to 30 with 50% of chance.rnClass : Bow MasterrnCondition : Skill level above 15 +2290058 - [Mastery Book] Hamstring Shot - This increases the master level of #cHamstring Shot# up to 20 with 70% of chance.rnClass : Bow MasterrnCondition : Skill level above 5 +2290059 - [Mastery Book] Hamstring Shot - This increases the master level of #cHamstring Shot# up to 30 with 50% of chance.rnClass : Bow MasterrnCondition : Skill level above 15 +2290060 - [Mastery Book] Hurricane - This increases the master level of #cHurricane# up to 20 with 70% of chance.rnClass : Bow MasterrnCondition : Skill level above 5 +2290061 - [Mastery Book] Hurricane - This increases the master level of #cHurricane# up to 30 with 50% of chance.rnClass : Bow MasterrnCondition : Skill level above 15 +2290062 - [Mastery Book] Phoenix - This increases the master level of #cPhoenix# up to 20 with 70% of chance.rnClass : Bow MasterrnCondition : Skill level above 5 +2290063 - [Mastery Book] Phoenix - This increases the master level of #cPhoenix# up to 30 with 50% of chance.rnClass : Bow MasterrnCondition : Skill level above 15 +2290064 - [Mastery Book] Concentrate - This increases the master level of #cConcentrate# up to 20 with 70% of chance.rnClass : Bow MasterrnCondition : Skill level above 5 +2290065 - [Mastery Book] Concentrate - This increases the master level of #cConcentrate# up to 30 with 50% of chance.rnClass : Bow MasterrnCondition : Skill level above 15 +2290066 - [Mastery Book] Marksman Boost - This increases the master level of #cMarksman Boost# up to 20 with 70% of chance.rnClass : MarksmanrnCondition : Skill level above 5 +2290067 - [Mastery Book] Marksman Boost - This increases the master level of #cMarksman Boost# up to 30 with 50% of chance.rnClass : MarksmanrnCondition : Skill level above 15 +2290068 - [Mastery Book] Blind - This increases the master level of #cBlind# up to 20 with 70% of chance.rnClass : MarksmanrnCondition : Skill level above 5 +2290069 - [Mastery Book] Blind - This increases the master level of #cBlind# up to 30 with 50% of chance.rnClass : MarksmanrnCondition : Skill level above 15 +2290070 - [Mastery Book] Piercing Arrow - This increases the master level of #cPiercing Arrow# up to 20 with 70% of chance.rnClass : MarksmanrnCondition : Skill level above 5 +2290071 - [Mastery Book] Piercing Arrow - This increases the master level of #cPiercing Arrow# up to 30 with 50% of chance. rnClass : MarksmanrnCondition : Skill level above 15 +2290072 - [Mastery Book] Frostprey - This increases the master level of #cFrostprey# up to 20 with 70% of chance.rnClass : MarksmanrnCondition : Skill level above 5 +2290073 - [Mastery Book] Frostprey - This increases the master level of #cFrostprey# up to 30 with 50% of chance.rnClass : MarksmanrnCondition : Skill level above 15 +2290074 - [Mastery Book] Snipe - This increases the master level of #cSnipe# up to 20 with 70% of chance.rnClass : MarksmanrnCondition : Skill level above 5 +2290075 - [Mastery Book] Snipe - This increases the master level of #cSnipe# up to 30 with 50% of chance.rnClass : MarksmanrnCondition : Skill level above 15 +2290076 - [Mastery Book] Shadow Shifter - This increases the master level of #cShadow Shifter# up to 20 with 70% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 5 +2290077 - [Mastery Book] Shadow Shifter - This increases the master level of #cShadow Shifter# up to 30 with 50% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 15 +2290078 - [Mastery Book] Venomous Star/Venomous Stab - This increases the master level of #cVenomous Star or Venomous Stab# up to 20 with 70% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 5 +2290079 - [Mastery Book] Venomous Star/Venomous Stab - This increases the master level of #cVenomous Star or Venomous Stab# up to 30 with 50% of chance. rnJob : 4th Advancement ThiefrnCondition : Skill level above 15 +2290080 - [Mastery Book] Taunt - This increases the master level of #cTaunt# up to 20 with 70% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 5 +2290081 - [Mastery Book] Taunt - This increases the master level of #cTaunt# up to 30 with 50% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 15 +2290082 - [Mastery Book] Ninja Ambush - This increases the master level of #cNinja Ambush# up to 20 with 70% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 5 +2290083 - [Mastery Book] Ninja Ambush - This increases the master level of #cNinja Ambush# up to 30 with 50% of chance.rnJob : 4th Advancement ThiefrnCondition : Skill level above 15 +2290084 - [Mastery Book] Triple Throw - This increases the master level of #cTriple Throw# up to 20 with 70% of chance.rnClass : Night LordrnCondition : Skill level above 5 +2290085 - [Mastery Book] Triple Throw - This increases the master level of #cTriple Throw# up to 30 with 50% of chance.rnClass : Night LordrnCondition : Skill level above 15 +2290086 - [Mastery Book] Ninja Storm - This increases the master level of #cNinja Storm# up to 20 with 70% of chance.rnClass : Night LordrnCondition : Skill level above 5 +2290087 - [Mastery Book] Ninja Storm - This increases the master level of #cNinja Storm# up to 30 with 50% of chance.rnClass : Night LordrnCondition : Skill level above 15 +2290088 - [Mastery Book] Shadow Claw - This increases the master level of #cShadow Claw# up to 20 with 70% of chance.rnClass : Night LordrnCondition : Skill level above 5 +2290089 - [Mastery Book] Shadow Claw - This increases the master level of #cShadow Claw# up to 30 with 50% of chance.rnClass : Night LordrnCondition : Skill level above 15 +2290090 - [Mastery Book] Boomerang Step - This increases the master level of #cBoomerang Step# up to 20 with 70% of chance.rnClass : ShadowerrnCondition : Skill level above 5 +2290091 - [Mastery Book] Boomerang Step - This increases the master level of #cBoomerang Step# up to 30 with 50% of chance.rnClass : ShadowerrnCondition : Skill level above 15 +2290092 - [Mastery Book] Assassinate - This increases the master level of #cAssassinate# up to 20 with 70% of chance.rnClass : ShadowerrnCondition : Skill level above 5 +2290093 - [Mastery Book] Assassinate - This increases the master level of #cAssassinate# up to 30 with 50% of chance.rnClass : ShadowerrnCondition : Skill level above 15 +2290094 - [Mastery Book] Smokescreen - This increases the master level of #cSmokescreen# up to 20 with 70% of chance.rnClass : ShadowerrnCondition : Skill level above 5 +2290095 - [Mastery Book] Smokescreen - This increases the master level of #cSmokescreen# up to 30 with 50% of chance.rnClass : ShadowerrnCondition : Skill level above 15 +2290096 - [Mastery Book] Maple Hero 20 - This increases the master level of #cMaple Hero# up to 20 with 70% of chance.rnJob : All 4th Advancement JobsrnCondition : Skill level above 5 +2290097 - [Mastery Book] Dragon Strike - With a 70% success rate, it raises the Master Level of #cDragon Strike# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290098 - [Mastery Book] Dragon Strike - With a 50% success rate, it raises the Master Level of #cDragon Strike# to 30.nJob : BuccaneernRequirement : At least Level 15 in this skill +2290099 - [Mastery Book] Energy Orb - With a 70% success rate, it raises the Master Level of #cEnergy Orb# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290100 - [Mastery Book] Energy Orb - With a 50% success rate, it raises the Master Level of #cEnergy Orb# to 30.nJob : BuccaneernRequirement : At least Level 15 in this skill +2290101 - [Mastery Book] Super Transformation - With a 70% success rate, it raises the Master Level of #cSuper Transformation# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290102 - [Mastery Book] Demolition - With a 70% success rate, it raises the Master Level of #cDemolition# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290103 - [Mastery Book] Demolition - With a 50% success rate, it raises the Master Level of #cDemolition# to 30.nJob : BuccaneernRequirement : At least Level 15 in this skill +2290104 - [Mastery Book] Snatch - With a 70% success rate, it raises the Master Level of #cSnatch# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290105 - [Mastery Book] Snatch - With a 50% success rate, it raises the Master Level of #cSnatch# to 30.nJob : BuccaneernRequirement : At least Level 15 in this skill +2290106 - [Mastery Book] Barrage - With a 70% success rate, it raises the Master Level of #cBarrage# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290107 - [Mastery Book] Barrage - With a 50% success rate, it raises the Master Level of #cBarrage# to 30.nJob : BuccaneernRequirement : At least Level 15 in this skill +2290108 - [Mastery Book] Speed Infusion - With a 70% success rate, it raises the Master Level of #cSpeed Infusion# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290109 - [Mastery Book] Wind Booster - With a 50% success rate, it raises the Master Level of #cWind Booster# to 30. nJob : BuccaneernRequirement : At least Level 15 in this skill +2290110 - [Mastery Book] Time Leap - With a 70% success rate, it raises the Master Level of #cTime Leap# to 20.nJob : BuccaneernRequirement : At least Level 5 in this skill +2290111 - [Mastery Book] Time Leap - With a 50% success rate, it raises the Master Level of #cTime Leap# to 30.nJob : BuccaneernRequirement : At least Level 15 in this skill +2290112 - [Mastery Book] Elemental Boost - With a 70% success rate, it raises the Master Level of #cElemental Boost# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290113 - [Mastery Book] Elemental Boost - With a 50% success rate, it raises the Master Level of #cElemental Boost# to 30.nJob : CorsairnRequirement : At least Level 15 in this skill +2290114 - [Mastery Book] Wrath of the Octopi - With a 70% success rate, it raises the Master Level of #cWrath of the Octopi# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290115 - [Mastery Book] Air Strike - With a 70% success rate, it raises the Master Level of #cAir Strike# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290116 - [Mastery Book] Air Strike - With a 50% success rate, it raises the Master Level of #cAir Strike# to 30.nJob : CorsairnRequirement : At least Level 15 in this skill +2290117 - [Mastery Book] Rapid Fire - With a 70% success rate, it raises the Master Level of #cRapid Fire# to 20.\nJob : Corsair\nRequirement : At least Level 5 in this skill +2290118 - [Mastery Book] Rapid Fire - With a 50% success rate, it raises the Master Level of #cRapid Fire# to 30.nJob : CorsairnRequirement : At least Level 15 in this skill +2290119 - [Mastery Book] Battleship Cannon - With a 70% success rate, it raises the Master Level of #cBattleship Cannon# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290120 - [Mastery Book] Battleship Cannon - With a 50% success rate, it raises the Master Level of #cBattleship Cannon# to 30.nJob : CorsairnRequirement : At least Level 15 in this skill +2290121 - [Mastery Book] Battleship Torpedo - With a 70% success rate, it raises the Master Level of #cBattleship Torpedo# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290122 - [Mastery Book] Battleship Torpedo - With a 50% success rate, it raises the Master Level of #cBattleship Torpedo# to 30.nJob : CorsairnRequirement : At least Level 15 in this skill +2290123 - [Mastery Book] Hypnotize - With a 70% success rate, it raises the Master Level of #cHypnotize# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290124 - [Mastery Book] Bullseye - With a 70% success rate, it raises the Master Level of #cBullseye# to 20.nJob : CorsairnRequirement : At least Level 5 in this skill +2290125 - [Mastery Book] Maple Hero 30 - This increases the master level of #cMaple Hero# up to 30 with 50% of chance.rnJob : All 4th Advancement JobsrnCondition : Skill level above 15 +2310000 - The Owl of Minerva - #cThe Owl of Minerva#, which represents wisdom, can be used to search for items sold at the Free Market. #cDisappears right after showing the results of the item search#. +2320000 - Teleport Rock - Remembers 5 maps of your choice. This rock will enable you to #cteleport to the map you remembered#. It can even allow you to #cmove to the map where a certain character is#, provided that the person is in the same channel at the same world. +2330000 - Bullet - A bullet made out of steel. A set contains numerous bullets and once they are used up, they'll need to be recharged.\nAttack + 10 +2330001 - Split Bullet - A bullet made out of steel. A set contains numerous bullets and once they are used up, they'll need to be recharged.rnAttack + 12 +2330002 - Mighty Bullet - A bullet made out of steel. A set contains numerous bullets and once they are used up, they'll need to be recharged.rnAttack + 14 +2330003 - Vital Bullet - A bullet made out of steel. A set contains numerous bullets and once they are used up, they'll need to be recharged.rnAttack + 16 +2330004 - Shiny Bullet - A bullet made out of steel. A set contains numerous bullets and once they are used up, they'll need to be recharged.rnAttack + 18 +2330005 - Eternal Bullet - A bullet made out of steel. A set contains numerous bullets and once they are used up, they'll need to be recharged.\nAttack + 20 +2330006 - Bullet for Novice Pirates - A bullet made out of steel. A set contains numerous bullets.rnAttack + 10 +2331000 - Blaze Capsule - A capsule used for fire-elemental attacks. +2332000 - Glaze Capsule - A capsule used for ice-elemental attacks. +2340000 - White Scroll - One of Subani's sacred Scrolls. If used in conjunction with a normal or Dark Scroll, the number of item upgrade slots will not be deducted if the scroll fails. However, if using a Dark Scroll, there is still a chance that your weapon will be destroyed. +2360000 - Change to Ghost - First the body feels light, then all of a sudden, you're floating. Oh no, you're a ghost! +2360001 - Ghost Candy - A ghost-shaped candy with a mysterious set of ingredients. Take this to change into a ghost for 1 hour. +2370000 - The Songs of Solomon - An ancient collection of poems and life lessons from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 100,000 EXP. Only available fo +2370001 - The Stories of Solomon - An ancient book of stories, fables and other myths from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 50,000 EXP. Only available +2370002 - The Travels of Solomon - An ancient collection of map routes, hidden paths and shortcuts from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 30,000 EXP. On +2370003 - The Writs of Solomon X - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 20,000 EXP. Only available for users u +2370004 - The Writs of Solomon IX - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 10,000 EXP. Only available for users u +2370005 - The Writs of Solomon VIII - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 5,000 EXP. Only available for users un +2370006 - The Writs of Solomon VII - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 3,000 EXP. Only available for users un +2370007 - The Writs of Solomon VI - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 2,000 EXP. Only available for users un +2370008 - The Writs of Solomon V - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 1,000 EXP. Only available for users un +2370009 - The Writs of Solomon IV - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 500 EXP. Only available for users under +2370010 - The Writs of Solomon III - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 300 EXP. Only available for users under +2370011 - The Writs of Solomon II - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 200 EXP. Only available for users under +2370012 - The Writs of Solomon I - An ancient document of collected wisdom from various elders, sages and warriors in the Maple World. Reading this allows one to gain their collective experience (EXP) in a single second. This edition provides 100 EXP. Only available for users under +2380000 - Snail Card - A card that features Snail. +2380001 - Blue Snail Card - A card that features Blue Snail. +2380002 - Spore Card - A card that features Spore. +2380003 - Stump Card - StumpA card that features +2380004 - Red Snail Card - Red SnailA card that features +2380005 - Slime Card - A card that features Slime +2380006 - Pig Card - A card that features Pig +2380007 - Orange Mushroom Card - A card that features Orange Mushroom. +2380008 - Dark Stump Card - A card that features Dark Stump. +2380009 - Ribbon Pig Card - A card that features Ribbon Pig +2380010 - Octopus Card - A card that features Octopus. +2380011 - Green Mushroom Card - A card that features Green Mushroom. +2380012 - Bubbling Card - A card that features Bubbling. +2381000 - Axe Stump Card - A card that features Axe Stump +2381001 - Ghost Stump Card - A card that features Ghost Stump. +2381002 - Blue Mushroom Card - A card that features Blue Mushroom. +2381003 - Stirge Card - A card that features Stirge. +2381004 - Female Desert Rabbit Card - A card that features Female Desert Rabbit. +2381005 - Male Desert Rabbit Card - A card that features Male Desert Rabbit. +2381006 - Jr. Necki Card - A card that features Jr. Necki. +2381007 - Horny Mushroom Card - A card that features Horny Mushroom. +2381008 - Dark Axe Stump Card - A card that features Dark Axe Stump. +2381009 - Pinboom Card - A card that features Pinboom. +2381010 - Jr. Cactus Card - A card that features Jr. Cactus. +2381011 - Trixter Card - A card that features Trixter. +2381012 - Jr. Sentinel Card - A card that features Jr. Sentinel. +2381013 - Seacle Card - A card that features Seacle. +2381014 - Wooden Mask Card - A card that features Wooden Mask. +2381015 - Bellamoa Card - A card that features Bellamoa. +2381016 - Zombie Mushroom Card - A card that features Zombie Mushroom. +2381017 - Krappy Card - A card that features Krappy. +2381018 - Rocky Mask Card - A card that features Rocky Mask. +2381019 - Ear Plug Plead Card - A card that features Ear Plug Plead. +2381020 - Sand Rat Card - A card that features Sand Rat. +2381021 - Cico Card - A card that features Cico +2381022 - Wild Boar Card - A card that features Wild Boar. +2381023 - Cactus Card - A card that features Cactus. +2381024 - Evil Eye Card - A card that features Evil Eye. +2381025 - Scarf Plead Card - A card that features Scarf Plead. +2381026 - Bubble Fish Card - A card that features Bubble Fish. +2381027 - Green Trixter Card - A card that features Green Trixter. +2381028 - Royal Cactus Card - A card that features Royal Cactus. +2381029 - Flower Fish Card - A card that features Flower Fish. +2381030 - Meercat Card - A card that features Meercat. +2381031 - Scorpion Card - A card that features Scorpion. +2381032 - Sentinel Card - A card that features Sentinel. +2381033 - Fairy Card - A card that features Fairy. +2381034 - Brown Teddy Card - A card that features Brown Teddy. +2381035 - Krip Card - A card that features Krip. +2381036 - Kiyo Card - A card that features Kiyo. +2381037 - Ice Sentinel Card - A card that features Ice Sentinel. +2381038 - Fire Sentinel Card - A card that features Fire Sentinel. +2382000 - Chirppy Card - A card that features Chirppy.n#cIf hunting at Eos TowernSpeed +1# +2382001 - Drum Bunny Card - A card that features Drum Bunny.n#cImproves the drop rate of the Drum Bunny.# +2382002 - Ligator Card - A card that features Ligator.n#cIf hunting at the SwampnAvoidability +1# +2382003 - Fireboar Card - A card that features Fireboar.n#cIf hunting at PerionnDefense against fire-based attacks +3%# +2382004 - Pink Teddy Card - A card that features Pink Teddy.n#cIf hunting at the upper floors of the ClocktowernJump +1# +2382005 - Ratz Card - A card that features Ratz.n#cIf hunting at Eos TowernMeso drop rate is increased# +2382006 - Leatty Card - A card that features Leatty.n#cIf hunting at Orbis TowernAccuracy +1# +2382007 - Mask Fish Card - A card that features Mask Fishn#cIf hunting at Aqua Roadnavoidability+1# +2382008 - Sand Dwarf Card - A card that features Sand Dwarf.n#cIf hunting at the DesertnThe drop rate for ores are increased# +2382009 - Cube Slime Card - A card that features Cube Slime.n#cIf hunting at the Zenumist InstitutenJump +1# +2382010 - Red Sand Dwarf Card - A card that features Red Sand Dwarf.n#cIf hunting at the DesertnThe drop rate for jewels are increased# +2382011 - Jr. Cellion Card - A card that features Jr. Cellion.n#cIf hunting at the Orbis GardennDefense against fire-based attacks +3%# +2382012 - Jr. Lioner Card - A card that features Jr. Lioner.n#cIf hunting at the Orbis GardennDefense against electric-based attacks +3%# +2382013 - Jr. Grupin Card - A card that features Jr. Grupin.n#cIf hunting at the Orbis GardennDefense against ice-based attacks +3%# +2382014 - Dark Leatty Card - A card that features Dark Leatty.n#cIf hunting at Orbis TowernAccuracy +1# +2382015 - Roloduck Card - A card that features Roloduck.n#cWhen party huntingnAccuracy +1# +2382016 - Black Ratz Card - A card that features Black Ratz.n#cIf hunting at Eos TowernMeso drop rate is increased# +2382017 - Tick Card - A card that features Tickn#cIf hunting at the upper floors of the ClocktowernAccuracy +1# +2382018 - Curse Eye Card - A card that features Curse Eye.n#cIf hunting at Victoria IslandnDefense against poison-based attacks +3%# +2382019 - Jr. Wraith Card - A card that features Jr. Wraith.n#cIf hunting at the SubwaynSpeed +1# +2382020 - Star Pixie Card - A card that features Star Pixie.n#cIf hunting at the Cloud ParknSpeed +1# +2382021 - Jr. Boogie Card - A card that features Jr. Boogie.n#cDefense against curse +5%# +2382022 - Bloctopus Card - A card that features Bloctopus.n#cIf hunting at Eos TowernJump +1# +2382023 - Jr. Pepe Card - A card that features Jr. Pepe.n#cIf hunting at Orbis TowernSpeed + 1# +2382024 - Rumo Card - A card that features Rumo.n#cIf hunting at the Zenumist InstitutenDefense against poison-based attacks +3%# +2382025 - Panda Teddy Card - A card that features Panda Teddy.n#cIf attacking a weapon-carrying monsternAccuracy +1# +2382026 - Helly Card - A card that features Helly.n#cIf hunting at Eos TowernAvoidability +1# +2382027 - Scuba Pepe Card - A card that features Scuba Pepe.n#cCancels out drowning damage underwater# +2382028 - Retz - A card that features Retz.n#cIf hunting at Helios TowernItem drop rates are increased# +2382029 - Lupin Card - A card that features Lupin.n#cIf hunting at Victoria IslandnSpeed +1# +2382030 - Lorang Card - A card that features Lorang.n#cIf hunting at Victoria IslandnSpeed +1# +2382031 - Propelly Card - A card that features Propelly.n#cIf hunting at Eos TowernSpeed +1# +2382032 - Chronos Card - A card that features Chronos.n#cIf hunting at the upper floors of the ClocktowernAvoidability +1# +2382033 - King Bloctopus Card - A card that features King Bloctopus.n#cIf hunting at Eos TowernJump +1# +2382034 - Planey Card - A card that features Planey.n#cIf hunting at Eos TowernAccuracy +1# +2382035 - Jr. Seal Card - A card that features Jr. Seal.n#cIf hunting at Aqua RoadnJump +1# +2382036 - Triple Rumo Card - A card that features Triple Rumo.n#cIf hunting at the Zenumist InstitutenDefense against poison-based attacks +3%# +2382037 - Tweeter Card - A card that features Tweeter.n#cIf hunting at Eos TowernAccuracy +1# +2382038 - Toy Trojan Card - A card that features Toy Trojan.n#cIf hunting at the upper floors of the ClocktowernSpeed +1# +2382039 - Cold Eye Card - A card that features Cold Eye.n#cIf hunting at Victoria IslandnDefense against ice-based attacks +3%# +2382040 - Zombie Lupin Card - A card that features Zombie Lupin.n#cIncreases the drop rate of Cursed Doll# +2382041 - Tick-Tock Card - A card that features Tick-Tock.n#cIf hunting at the upper floors of the ClocktowernAccuracy +1# +2382042 - Barnard Grey Card - A card that features Barnard Grey.n#cIf hunting at Kulan FieldnJump +1# +2382043 - Poopa Card - A card that features Poopa.n#cIf hunting at Aqua RoadnSpeed +1# +2382044 - Poison Poopa Card - A card that features Poison Poopa.n#cIf hunting at Aqua RoadnDefense against poison-based attacks +3%# +2382045 - Chipmunk Card - A card that features Chipmunk.n#cIf hunting at Mu LungnSpeed +1# +2382046 - Desert Giant Card - A card that features Desert Giant.n#cIf hunting at the DesertnSpeed +1# +2382047 - Flyeye - A card that features Flyeye.n#cIf hunting at the CavenAvoidability +1# +2382048 - Robo Card - A card that features Robo.n#cIf hunting at the upper floors of the ClocktowernDefense against electric-based attacks +3%# +2382049 - Platoon Chronos Card - A card that features Platoon Chronos.n#cIf hunting at the upper floors of the ClocktowernSpeed +1# +2382050 - Mateon Card - A card that features Mateon.n#cIf hunting at Boswell FieldnThe drop rates for droppings are increased# +2382051 - Red Porky Card - A card that features Red Porky.n#cIf hunting at Mu LungnAvoidability +1# +2382052 - Nependeath Card - A card that features Nependeath.n#cIncreases drop rate of Nependeath Honey# +2382053 - Iron Hog Card - A card that features Iron Hog.n#cIf hunting at Victoria IslandnJump +1# +2382054 - Block Golem - A card that features Block Golem.n#cIf hunting at Eos TowernAccuracy +1# +2382055 - Zeta Grey Card - A card that features Zeta Grey.n#cIf hunting at Kulan FieldnSpeed +1# +2382056 - Freezer Card - A card that features Freezer.n#cIf hunting at Aqua RoadnDefense against ice-based attacks +3%# +2382057 - Iron Mutae - A card that features Iron Mutae.n#cIf hunting at the Alcadno InstitutenSpeed +1# +2382058 - Jr. Cerebes Card - A card that features Jr. Cerebes.n#cIf hunting at Dead MinenJump +1# +2382059 - Sparker Card - A card that features Sparker.n#cIf hunting at Aqua RoadnDefense against electric-based attacks +3%# +2382060 - Black Porky Card - A card that features Black Porky.n#cIf hunting at Mu LungnAvoidability +1# +2382061 - Plateon Card - A card that features Plateon.n#cIf hunting at Boswell FieldnSpeed +1# +2382062 - Master Robo Card - A card that features Master Robo.n#cIf hunting at the upper floors of the ClocktowernDefense against electric-based attacks +3%# +2382063 - Skeledog Card - A card that features Skeledog.n#cIf hunting at PerionnSpeed +1# +2382064 - Lunar Pixie Card - A card that features Lunar Pixie.n#cIf hunting at the Cloud ParknJump +1# +2382065 - Copper Drake Card - A card that features Copper Drake.n#cIf hunting at Victoria IslandnSpeed +1# +2382066 - King Block Golem Card - A card that features King Block Golem.n#cIf hunting at Eos TowernAccuracy +1# +2382067 - Ultra Grey Card - A card that features Ultra Grey.n#cIf hunting at Kulan FieldnAvoidability +1# +2382068 - Moon Bunny Card - A card that features Moon Bnny.n#cIf hunting at the Black MountainnJump +1# +2382069 - Iron Boar Card - A card that features Iron Boar.n#cIf hunting at Victoria IslandnAccuracy +1# +2382070 - Blue Flower Serpent - A card that features Blue Flower Serpent.n#cIf hunting at Mu LungnAvoidability +1# +2382071 - Red Flower Serpent - A card that features Red Flower Serpent.n#cIf hunting at Mu LungnAvoidability +1# +2382072 - Reinforced Iron Mutae - A card that features Reinforced Iron Mutae.n#cIf hunting at the Alcadno InstitutenAccuracy +1# +2382076 - Mossy Snail Card - A picture of Mossy Snail is on this card.n#cWhile hunting in Ellin ForestnAccuracy +1 +2383000 - Mecateon Card - A card that features Mecateon..n#cIf hunting at Boswell FieldnSpeed +2# +2383001 - Tortie Card - A card that features Tortie Card.n#cIf hunting at Florina BeachnAccuracy +2# +2383002 - Master Chronos Card - A card that features Master Chronos.n#cIf hunting at the upper floors of the ClocktowernJump +2# +2383003 - Dark Nependeath Card - A card that features Dark Nependeath.n#cIf hunting at the Cloud ParknIncreases drop rate of Nependeath Honey# +2383004 - Rombot Card - A card that features Rombot.n#cIf hunting at Eos TowernItem drop rates are increased# +2383005 - Mummy Dog Card - A card that features Mummy Dog.n#cIf hunting at PerionnJump +2# +2383006 - Jar Card - A card that features Jar.n#cIf hunting at Herb Townn??Item drop rates are increased# +2383007 - Mithril Mutae Card - A card that features Mithril Mutae.n#cIf hunting at the Alcadno InstitutenAccuracy +2# +2383008 - Wraith Card - A card that features Wraith.n#cIf hunting at the SubwaynSpeed +2# +2383009 - Clang Card - A card that features Clang.n#cIf hunting at Florina BeachnSpeed +2# +2383010 - Ginseng Jar - A card that features Ginseng Jar.n#cIf hunting at Herb Townnthe "Use" item drop rates are increased# +2383011 - Chief Grey Card - A card that features Chief Grey.n#cIf hunting at Kulan FieldnAccuracy +2# +2383012 - Drake Card - A card that features Drake.n#cIf hunting at Victoria IslandnSpeed +2# +2383013 - Jr. Yeti Card - A card that features Jr. Yeti.n#If hunting at the SnowfieldnCancels out damage penalty# +2383014 - Hodori Card - A card that features Hodori.n#cIf hunting at the Black MountainnSpeed +2# +2383015 - Straw Target Dummy - A card that features Straw Target Dummy.n#cIf hunting at the Training FieldnAvoidability +2# +2383016 - Reinforced Mithril Mutae - A card that features Reinforced Mithril Mutae.n#cIf hunting at the Alcadno InstitutenAvoidability +2# +2383017 - Firebomb Card - A card that features Firebomb.n#cIf hunting at Dead MinenDefense against fire-based attacks +6%# +2383018 - Wooden Target Dummy - A card that features Wooden Target Dummy.n#cIf hunting at the Training FieldnAccuracy +2# +2383019 - Croco Card - A card that features Croco.n#cIf hunting at the SwampnAvoidability +2# +2383020 - Luster Pixe Card - A card that features Luster Pixe.n#cIf hunting at Cloud ParknAccuracy +2# +2383021 - Cellion Card - A card that features Cellion Card.n#cIf hunting at the Orbis GardennDefense against fire-based attacks +6%# +2383022 - Lioner Card - A card that features Lioner.n#cIf hunting at the Orbis GardennDefense against electric-based attacks +6%# +2383023 - Grupin Card - A card that features Grupin.n#cIf hunting at the Orbis GardennDefense against ice-based attacks +6%# +2383024 - Hogul - A card that features Hogul.n#cIf hunting at the Black MountainnProtection against being knocked out +10%# +2383025 - Bellflower Root Card - A card that features Bellflower Root.n#cIf hunting at Herb TownnJump +2# +2383026 - MT-09 Card - A card that features MT-09.n#cIf hunting at Kulan FieldnAccuracy +2# +2383027 - Sr. Bellflower Root Card - A card that features Sr. Bellflower Root.n#cIf hunting at Herb TownnJump +2# +2383028 - Roid Card - A card that features Roid Card.n#cIf hunting at the Alcadno InstitutenDefense against electric-based attacks +6%# +2383029 - Malady Card - A card that features Malady.n#cIf hunting at EllinianSpeed +2# +2383030 - Stone Golem Card - A card that features Stone Golem.n#cIf hunting at Victoria IslandnAccuracy +2# +2383031 - Hector Card - A card that features Hector Card.n#cIf hunting at the SnowfieldnSpeed +2# +2383032 - The Book Ghost Card - A card that features the Book Ghost.n#cIf hunting at Mu LungnAvoidability +2# +2383033 - Dark Jr. Yeti Card - A card that features Dark Jr. Yeti.n#cIf hunting at the SnowfieldnCancels out the damage penalty# +2383034 - Tri-Tailed Fox Card - A card that features Tri-Tailed Fox.n#cIf hunting at the Black MountainnDefense against curse +10%# +2383035 - Grizzly Card - A card that features Grizzly.n#If hunting at Mu LungnJump +2# +2383036 - Skeleton Soldier - A card that features Skeleton Soldier.n#cIf hunting at PerionnAvoidability +2# +2383037 - Coolie Zombie Card - A card that features Coolie Zombie Card.n#cIf hunting at El NathnDefense against poison-based attacks +6%# +2383038 - Miner Zombie - A card that features Miner Zombie.n#cIf hunting at El NathnDefense against poison-based attacks +6%# +2383039 - Dark Stone Golem - A card that features Dark Stone Golem.n#cIf hunting at Victoria IslandnAccuracy +2# +2383040 - White Fang Card - A card that features White Fang.n#cIf hunting at the SnowfieldnSpeed +2# +2383041 - Reindeer Card - A card that features Reindeer.n#cIf hunting at Mu LungnJump +2# +2383042 - Neo Huroid Card - A card that features Neo Huroid.n#cIf hunting at the Alcadno InstitutenDefense against electric-based attacks +6%# +2383043 - Mixed Golem Card - A card that features Mixed Golem.n#cIf hunting at Victoria IslandnAccuracy +2/Avoidability +2# +2383044 - Red Drake Card - A card that features Red Drake.n#cIf hunting at Victoria IslandnDefense against fire-based attacks +6%# +2383045 - Pepe Card - A card that features Pepe.n#cIf hunting at the SnowfieldnSpeed +2# +2383046 - Blin Card - A card that features Blin.n#cIf hunting at the Black MountainnAvoidability +2# +2383047 - Panda Card - A card that features Panda.n#cIf hunting at Mu LungnDefense against weakness +10%# +2383048 - Shade Card - A card that features Shade.n#cIf hunting at the SubwaynAvoidability +2# +2383049 - Master Dummy Card - A card that features Master Dummy.n#cIf hunting at Mu Lung Training GroundnAvoidability +2# +2383056 - Tree Rod Card - A picture of Tree Rod is on this card.n#cWhile hunting in Ellin ForestnAvoidability +2# +2383057 - Mossy Mushroom Card - A picture of Mossy Mushroom is on this card.n#cWhile hunting in Ellin ForestnJump +2# +2383058 - Primitive Boar Card - A picture of Primitive Boar is on this card.n#cWhile hunting in Ellin ForestnSpeed +2# +2383059 - Stone Bug Card - A picture of Stone Bug is on this card.n#cWhile hunting in Ellin ForestnAccuracy +2# +2384000 - Buffy Card - A card that features Buffy.n#cIf hunting at the lower levels of the ClocktowernJump +3# +2384001 - Wild Cargo Card - A card that features Wild Cargo.n#cIf hunting at Victoria IslandnJump +3# +2384002 - Peach Monkey Card - A card that features Peach Monkey.n#cIf hunting at Mu LungnAccuracy +3# +2384003 - Officer Skeleton Card - A card that features Officer Skeleton.n#cIf hunting at PerionnAvoidability +3# +2384004 - Soul Teddy Card - A card that features Soul Teddy.n#cIf hunting at the lower levels of the ClocktowernAvoidability +3# +2384005 - Jr. Luinel Card - A card that features Jr. Luinel.n#cIf hunting at the Orbis GardennDefense against darkness +15%# +2384006 - Ice Drake Card - A card that features Ice Drake.n#cIf hunting at Victoria IslandnDefense against ice-based attacks +9%# +2384007 - Dark Pepe Card - A card that features Dark Pepe.n#cIf hunting at the SnowfieldnSpeed +3# +2384008 - Mr. Alli Card - A card that features Mr. Alli.n#cIf hunting at Herb TownnProtection against being knocked out +15%# +2384009 - Yeti Card - A card that features Yeti.n#cIf hunting at the SnowfieldnDefense against ice-based attacks +9%# +2384010 - Riche Card - A card that features Riche.n#cIf hunting at the SnowfieldnDefense against seal +15%# +2384011 - Homun Card - A card that features Homun.n#cIf hunting at the Zenumist InstitutenAvoidability +3# +2384012 - Lazy Buffy Card - A card that features Lazy Buffy.n#cIf hunting at the lower levels of the ClocktowernAvoidability +3# +2384013 - Sage Cat Card - A card that features Sage Cat.n#cIf hunting at Mu LungnAccuracy +3# +2384014 - Master Soul Teddy Card - A card that features Master Soul Teddy.n#cIf hunting at the lower levels of the ClocktowernAvoidability +3# +2384015 - Dark Drake Card - A card that features Dark Drake.n#cIf hunting at Victoria IslandnDefense against darkness +15%# +2384016 - Dark Yeti Card - A card that features Dark Yeti.n#cIf hunting at the SnowfieldnDefense against ice-based attacks +9%# +2384017 - Kru Card - A card that features Kru.n#cIf hunting at Herb TownnSpeed +3# +2384018 - Cyti Card - A card that features Cyti.n#cIf hunting at the labnAvoidability +3# +2384019 - Klock Card - A card that features Klock.n#cIf hunting at the lower levels of the ClocktowernAccuracy +3# +2384020 - Tauromacis Card - A card that features Tauromacis.n#cIf hunting at Victoria IslandnDefense against poison-based attacks +9%# +2384021 - Yellow King Goblin Card - A card that features Yellow King Goblin.n#cIf hunting at the Black MountainnDefense against fire-based attacks +9%# +2384022 - Blue King Goblin Card - A card that features Blue King Goblin.n#cIf hunting at the Black MountainnDefense against ice-based attacks +9%# +2384023 - Green King Goblin Card - A card that features Green King Goblin.n#cIf hunting at the Black MountainnDefense against poison-based attacks +9%# +2384024 - Rash Card - A card that features Rash.n#cIf hunting at Leafre ForestnDefense against curse +15%# +2384025 - Captain Card - A card that features Captain.n#cIf hunting at Herb TownnJump +3# +2384026 - Cerebes Card - A card that features Cerebes.n#cIf hunting at Dead MinenAccuracy +3# +2384027 - Beetle Card - A card that features Beetle.n#cIf hunting at Leafre ForestnAvoidability +3# +2384028 - Hobi Card - A card that features Hobi.n#cIf hunting at Leafre ForestnDefense against poison-based attack +15%# +2384029 - Commander Skeleton Card - A card that features Commander Skeleton.n#cIf hunting at PerionnAccuracy +3/Avoidability +3# +2384030 - Luinel Card - A card that features Luinel.n#cIf hunting at the Orbis GardennDefense against darkness +15%# +2384031 - Homunculu Card - A card that features Homunculu.n#cIf hunting at the Zenumist InstitutenAvoidability +3# +2384032 - Buffoon Card - A card that features Buffoon.n#cIf hunting at the lower levels of the ClocktowernSpeed +3# +2384033 - Dark Rash Card - A card that features Dark Rash.n#cIf hunting at Leafre ForestnDefense against curse +15%# +2384034 - D.Roy Card - A card that features D. Roy.n#cIf hunting at the Alcadno InstitutenAccuracy +3/Avoidability +3# +2384035 - Werewolf Card - A card that features Werewolf.n#cIf hunting at the SnowfieldnAccuracy +3# +2384036 - Taurospear Card - A card that features Taurospear.n#cIf hunting at Victoria IslandnAccuracy +3# +2384037 - Snow Witch Card - A card that features Snow Witch.n#cIf hunting at the SnowfieldnDefense against ice-based attacks +9%# +2384038 - Security Camera Card - A card that features Security Camera.n#cIf hunting at the Alcadno InstitutenSpeed +3# +2384039 - Scholar Ghost Card - A card that features Scholar Ghost.n#cIf hunting at the Black MountainnItem drop rate increased# +2384040 - Rurumo Card - A card that features Rurumo.n#cIf hunting at the Alcadno InstitutenItem drop rate increased# +2385000 - Dark Klock Card - A card that features Dark Klock.n#cIf hunting at the lower levels of the ClocktowernAvoidability +4# +2385001 - Dual Beetle Card - A card that features Dual Beetle.n#cIf hunting at Leafre ForestnAvoidability +4# +2385002 - Green Hobi Card - A card that features Green Hobi.n#cIf hunting at Minar ForestnAccuracy +4/Avoidability +4# +2385003 - Deep Buffoon Card - A card that features Deep Buffoon.n#cIf hunting at the lower levels of the ClocktowernSpeed +4# +2385004 - Yeti and Pepe Card - A card that features Yeti and Pepe.n#cIf hunting at the SnowfieldnAvoidability +4# +2385005 - Hankie Card - A card that features Hankie.n#cIf hunting at Leafre ForestnJump +4# +2385006 - Lycanthrope Card - A card that features Lycanthrope.n#cIf hunting at the SnowfieldnAccuracy +4# +2385007 - Harp Card - A card that features Harp.n#cIf hunting at Minar ForestnAvoidability +4# +2385008 - Homunscullo Card - A card that features Homunscullo.n#cIf hunting at the Zenumist InstitutenJump +4# +2385009 - Dark Yeti and Pepe Card - A card that features Dark Yeti and Pepe.n#cIf hunting at the SnowfieldnAvoidability +4# +2385010 - Pirate Card - A card that features Pirate.n#cIf hunting at the lower levels of the ClocktowernAccuracy +4# +2385011 - Blood Harp Card - A card that features Blood Harp.n#cIf hunting at Minar ForestnAccuracy +4# +2385012 - Death Teddy Card - A card that features Death Teddy.n#cIf hunting at the lower levels of the ClocktowernAccuracy +4# +2385013 - Goby Card - A card that features Goby.n#cIf hunting at Aqua Roadn15% chance of breaking through the monster's magic defense# +2385014 - Birk Card - A card that features Birk.n#cIf hunting at Leafre ForestnSpeed +4# +2385015 - Dual Pirate Card - A card that features Dual Pirate.n#cIf hunting at the lower levels of the ClocktowernAccuracy +4# +2385016 - Black Kentaurus Card - A card that features Black Kentaurus.n#cIf hunting at Leafre ForestnDefense against darkness +20%# +2385017 - Red Kentaurus Card - A card that features Red Kentaurus.n#cIf hunting at Leafre ForestnDefense against fire-based attacks +12%# +2385018 - Blue Kentaurus Card - A card that features Blue Kentaurus.n#cIf hunting at Leafre ForestnDefense against ice-based attacks +12%# +2385019 - Dual Birk Card - A card that features Dual Birk.n#cIf hunting at Leafre ForestnSpeed +4# +2385020 - Master Death Teddy Card - A card that features Master Death Teddy.n#cIf hunting at the lower levels of the ClocktowernAccuracy +4/Avoidability +4# +2385021 - Bain Card - A card that features Bain.n#cIf hunting at Dead MinenDefense against fire-based attacks +12%# +2385022 - Blue Dragon Turtle Card - A card that features Blue Dragon Turtle.n#cIf hunting at the Dragon ForestnAccuracy +4# +2385023 - Deet and Roi Card - A card that features Deet amd Roi.n#cIf hunting at the Zenumist InstitutenSpeed +4# +2385025 - Eye of Time Card - A card with a picture of the Eye of Time.nWhen hunting on the Temple of TimenSpeed +4# +2386000 - Bone Fish Card - A card that features Bone Fish.n#cIf hunting at Aqua Roadn30% chance of breaking through monster's weapon defense# +2386001 - Red Dragon Turtle Card - A card that features Red Dragon Turtle.n#cIf hunting at the Dragon ForestnAvoidability +5# +2386002 - Viking Card - A card that features Viking.n#cIf hunting at the lower levels of the ClocktowernDefense against fire-based attacks +15%# +2386003 - Squid Card - A card that features Squid.n#cIf hunting at Aqua RoadnDefense against darkness +25%# +2386004 - Phantom Watch Card - A card that features Phantom Watch.n#cIf hunting at the lower levels of the ClocktowernDefense against ice-based attacks +15%# +2386005 - Rexton Card - A card that features Rexton.n#cIf hunting at the Dragon ForestnSpeed +5# +2386006 - Brexton Card - A card that features Brexton.n#cIf hunting at the Dragon ForestnAccuracy +5# +2386007 - Risell Squid Card - A card that features Risell Squid.n#cIf hunting at Aqua RoadnDefense against darkness +25%# +2386008 - Red Wyvern Card - A card that features Red Wyvern.n#cIf hunting at the Dragon ForestnDefense against fire-based attacks +15%# +2386009 - Gigantic Viking Card - A card that features Gigantic Viking.n#cIf hunting at the lower levels of the ClocktowernDefense against fire-based attacks +15%# +2386010 - G. Phantom Watch Card - A card that features G. Phantom Watch.n#cIf hunting at the lower levels of the ClocktowernDefense against ice-based attacks +15%# +2386011 - Green Cornian Card - A card that features Green Cornian.n#cIf hunting at the Dragon ForestnSpeed +5# +2386012 - Shark Card - A card that features Sharkn#cIf hunting at Aqua RoadnDefense against ice-based attacks +15%# +2386013 - Blue Wyvern Card - A card that features Blue Wyvern.n#cIf hunting at the Dragon ForestnDefense against ice-based attacks +15%# +2386014 - Cold Shark Card - A card that features Cold Shark.n#cIf hunting at Aqua RoadnAccuracy +5# +2386015 - Dark Wyvern Card - A card that features Dark Wyvern.n#cIf hunting at the Dragon ForestnDefense against darkness +25%# +2386016 - Dark Cornian Card - A card that features Dark Cornian.n#cIf hunting at the Dragon ForestnAccuracy +5# +2386017 - Jr. Newtie Card - A card that features Jr. Newtie.n#cIf hunting at the Dragon ForestnAvoidability +5# +2386021 - Memory Monk Card - A card with a picture of the Memory Monk.n#cWhen hunting on Memory LanenEvasion rate +5# +2386022 - Memory Monk Trainee Card - A card with a picture of the Memory Monk Trainee.n#cWhen hunting on Memory LanenAccuracy +5# +2386023 - Memory Guardian Card - A card with a picture of the Memory Guardian.n#cWhen hunting on Memory LanenJump +5# +2386024 - Chief Memory Guardian Card - A card with a picture of the Chief Memory Guardian.n#cWhen hunting on Memory LanenSpeed +5# +2387000 - Gatekeeper Card - A card that features Gatekeeper.n#If hunting at the lower levels of the Clocktowern25% chance of breaking through monster's weapon defense# +2387001 - Thanatos Card - A card that features Thanatosn#cIf hunting at the lower levels of the Clocktowern25% chance of breaking through monster's magic defense# +2387002 - Skelegon Card - A card that features Skelegon.n#cIf hunting at the Dragon ForestnAccuracy +6/Avoidability +6# +2387003 - Skelosaurus Card - A card that features Skelosaurusn#cIf hunting at the Dragon Forestn20% chance of breaking through monster's weapon/magic defense# +2387004 - Nest Golem Card - A card that features Nest Golem.n#cIf hunting at the Dragon ForestnAccuracy +5 +2387006 - Qualm Monk Card - A card with a picture of the Qualm Monk.n#cWhen hunting on the Road of RegretsnEvasion rate +6# +2387007 - Qualm Monk Trainee Card - A card with a picture of the Qualm Monk Trainee.n#cWhen hunting on the Road of RegretsnAccuracy +6# +2387008 - Qualm Guardian Card - A card with a picture of the Qualm Guardian.n#cWhen hunting on the Road of RegretsnJump +6# +2387009 - Chief Qualm Guardian Card - A card with a picture of the Chief Qualm Guardian.n#cWhen hunting on the Road of RegretsnSpeed +6# +2387010 - Oblivion Monk Card - A card with a picture of the Oblivion Monk.n#cWhen hunting on the Road to OblivionnEvasion rate +6# +2387011 - Oblivion Monk Trainee Card - A card with a picture of the Oblivion Monk Trainee.n#cWhen hunting on the Road to OblivionnAccuracy +6# +2387012 - Oblivion Guardian Card - A card with a picture of the Oblivion Guardian.n#cWhen hunting on the Road to OblivionnJump +6# +2387013 - Chief Oblivion Guardian Card - A card with a picture of the Chief Oblivion Guardian.n#cWhen hunting on the Road to OblivionnSpeed +6# +2388000 - Mano Card - A card that features Mano.n#cIf hunting around the area of Lith HarbornItem/Meso drop rate is increased# +2388001 - King Slime Card - A card that features King Slime.n#cIf hunting around the area of Kerning CitynSpeed +1/Jump +1 +2388002 - Faust Card - A card that features Faust.n#cIf hunting around the area of EllinianItem/Meso drop rate is increased# +2388003 - King Clang Card - A card that features King Clang.n#cIf hunting around the area of Florina BeachnItem/Meso drop rate is increased# +2388004 - Alishar Card - A card that features Alishar.n#cIf hunting around the area of Eos TowernItem/Meso drop rate is increased# +2388005 - Timer Card - A card that features Timer.n#cIf hunting at the upper floors of the ClocktowernItem/Meso drop rate is increased# +2388006 - Mushmom Card - A card that features Mushmom.n#cIf hunting around the area of HenesysnItem/Meso drop rate is increased# +2388007 - Dyle Card - A card that features Dyle.n#cIf hunting around the area of Kerning CitynItem/Meso drop rate is increased# +2388008 - Zombie Mushmom - A card that features Zombie Mushmom.n#cIf hunting around the area of Ant TunnelnItem/Meso drop rate is increased# +2388009 - Nine-Tailed Fox Card - A card that features Nine-Tailed Fox.n#cIf hunting around the area of Korean Folk TownnItem/Meso drop rate is increased# +2388010 - Tae Roon Card - A card that features Tae Roon.n#cIf hunting around the area of Sky ForestnItem/Meso drop rate is increased# +2388011 - Lord Pirate Card - A card that features Lord Pirate.n#cIf hunting around the area of Herb TownnItem/Meso drop rate is increased# +2388012 - Papa Pixie Card - A card that features Papa Pixie.n#cIf hunting around the area of Cloud TownnItem/Meso drop rate is increased# +2388013 - King Sage Cat Card - A card that features King Sage Cat.n#cIf hunting around the area of Peach FarmnItem/Meso drop rate is increased# +2388014 - Frankenroid Card - A card that features Frankenroid.n#cIf hunting around the area of MagatianItem/Meso drop rate is increased# +2388015 - Elliza Card - A card that features Elliza.n#cIf hunting around the area of Orbis gardennItem/Meso drop rate is increased# +2388016 - Snowman Card - A card that features Snowman.n#cIf hunting around the area of SnowfieldsnItem/Meso drop rate is increased# +2388017 - Crimson Balrog Card - A card that features Crimson Balrog.n#cIf hunting at El Nath / OrbisnItem/Meso drop rate is increased# +2388018 - Manon Card - A card that features Manon.n#cIf hunting at Leafre ForestnMeso drop rate is increased# +2388019 - Griffey Card - A card that features Griffey.n#cIf hunting at Leafre ForestnItem drop rates are increased# +2388020 - Pianus Card - A card that features Pianus.n#cIf hunting around the Aqua Road areanItem/Meso drop rate is increased# +2388021 - Ergoth Card - A card that features Ergoth.n#cWhen party huntingnJump +6/Speed +6# +2388022 - Papulatus Card - A card that features Papulatus.n#cIf hunting at the lower levels of the ClocktowernItem/Meso drop rate is increased# +2388023 - Zakum Card - A card that features Zakum.n#cIf hunting around the area of the Dead MinenItem/Meso drop rate is increased# +2388024 - Horned Tail Card - A card that features Horned Tail.n#cIf hunting around the area of Minar ForestnItem/Meso drop rate is increased# +2388025 - Stumpy Card - A card that features Stumpyn#cIf hunting around the area of PerionnItem/Meso drop rate is increased# +2388026 - Jr. Balrog Card - A card that features Jr. Balrog.n#cIf hunting around the area of SleepywoodnItem/Meso drop rate is increased# +2388027 - Rudolph Card - A card that features Santa's favorite, Rudolph. +2388028 - Kid Snowman Card - A card that features the little rascal that is the Kid Snowman. +2388029 - Deo Card - A card that features Deo.n#cIf hunting around the desert areanItem/Meso drop rate will be increased# +2388030 - Seruf Card - A card that features Seruf.n#cIf hunting at a shallow seanItem/Meso drop rate will be increased# +2388031 - Zeno Card - A card that features Zeno.n#cIf hunting around the area of Omega SectornItem/Meso drop rate will be increased# +2388032 - Kimera Card - A card that features Kimera.n#cIf hunting around the lab areanItem/meso drop rate increases# +2388033 - Leviathan Card - A card that features Leviathan.n#cIf hunting around the area of Dragon ForestnItem/Meso drop rate will be increased# +2388039 - Poison Golme Card - A picture of Poison Golem is on this card.n#cWhile hunting in Ellin ForestnDrop rate of item and meso increase# +2388040 - Dodo Card - A card with a picture of Dodo.n#cWhen hunting on Memory LanenItem/Meso Drop rate increase# +2388041 - Lilynouch Card - A card with a picture of Lilynouch.n#cWhen hunting on the Road of RegretsnItem/Meso Drop rate increase# +2388042 - Lyka Card - A card with a picture of Lyka.n#cWhen hunting on the Road to OblivionnItem/Meso Drop rate increase# +2388043 - Pink Bean - A card with a picture of Pink Bean.n#cWhen hunting at the Temple of TimenItem/Meso Drop rate increase# +2390000 - Helena's Marble - A marble given by Helena. Use this to communicate with her regardless of the place. This item is good for one-time use only... +2430000 - Torn Cygnus' Book Volume 1 - When used one at a time, a special power covers my body and blesses me. I think if I collect 20, I'll be able to read what's written inside. +2430001 - Torn Cygnus' Book Volume 2 - When used one at a time, a special power covers my body and blesses me. I think if I collect 20, I'll be able to read what's written inside. +2430002 - Torn Cygnus' Book Volume 3 - When used one at a time, a special power covers my body and blesses me. I think if I collect 20, I'll be able to read what's written inside. +2430003 - Cygnus Quiz - I can receive a reward by answering questions regarding the Cygnus Knights. I should click on it and try. +2022554 - Independence Day Firecracker 1 - This firecracker has been specially made to celebrate July 4th, 1776, our Independence Day. For 10 minutes, Speed and Jump increase by 5. +2022555 - Independence Day Firecracker 2 - This firecracker has been specially made to celebrate July 4th, 1776, our Independence Day. For 10 minutes, Attack and Magic increase by 5. +2022556 - Independence Day Firecracker 3 - This firecracker has been specially made to celebrate July 4th, 1776, our Independence Day. For 10 minutes, Def. and Magic Def. increase by 10. +2000020 - Red Potion for Noblesse - A special potion made out of herbs that exclusively grow in Ereve. Made specifically for Noblesss. nHP +50. +2000021 - Blue Potion for Noblesse - A special potion made out of herbs that exclusively grow in Ereve. Made specifically for Noblesss. nMP +100. +2022323 - Fish Net with a Catch - The fish net seems to have caught something. Let's double-click it to check its content. +2022324 - Big Belly Fish - A fish that apparently swallowed something. Let's double-click on the fish to check its content. +2022326 - Blessing of the Forest - With the purified forest raining gold rain, all affected will receive a temporary boost on speed and jump. +2022352 - Fire Grill Skewer - A delicious holiday food made out of beef, mushroom, and bellflower on a skewer. +2022356 - Sweet Rice Cake - A sweet, tasty rice cake. Recovers 1,500 HP and MP. +2022357 - Sweet Rice Cake - A sweet, tasty rice cake. ATT +8, MP +8 for 15 minutes. +2022358 - Sweet Rice Cake - A sweet, tasty rice cake. For 15 min., Speed +5, Jump +3. +2022359 - Increases Physical Attack Rat. - An item that only works inside Mu Lung Dojo. +2022360 - Increases Magic Attack Rate. - An item that only works inside Mu Lung Dojo. +2022361 - Increases Physical Defense Rate. - An item that only works inside Mu Lung Dojo. +2022362 - Increases Magic Defense Rate. - An item that only works inside Mu Lung Dojo. +2022363 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022364 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022365 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022366 - Increases Max HP - An item that only works inside Mu Lung Dojo. +2022367 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022368 - Increases Physical Attack Rate - An item that only works inside Mu Lung Dojo. +2022369 - Increases Magic Attack Rate - An item that only works inside Mu Lung Dojo. +2022370 - Increases Physical Defense Rate - An item that only works inside Mu Lung Dojo. +2022371 - Increases Magic Defense Rate - An item that only works inside Mu Lung Dojo. +2022372 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022373 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022374 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022375 - Increases MaxHP - An item that only works inside Mu Lung Dojo. +2022376 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022377 - Increases Physical Attack Rate - An item that only works inside Mu Lung Dojo. +2022378 - Increases Magic Attack Rate - An item that only works inside Mu Lung Dojo. +2022379 - Increases Physical Defense Rate - An item that only works inside Mu Lung Dojo. +2022380 - Increases Magic Defense Rate - An item that only works inside Mu Lung Dojo. +2022381 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022382 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022383 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022384 - Increases Max HP - An item that only works inside Mu Lung Dojo. +2022385 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022386 - Increases Physical Attack Rate - An item that only works inside Mu Lung Dojo. +2022387 - Increases Magic Attack Rate - An item that only works inside Mu Lung Dojo. +2022388 - Increases Physical Defense Rate - An item that only works inside Mu Lung Dojo. +2022389 - Increases Magic Defense Rate - An item that only works inside Mu Lung Dojo. +2022390 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022391 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022392 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022393 - Increases Max HP - An item that only works inside Mu Lung Dojo. +2022394 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022395 - Increases Physical Attack Rate - An item that only works inside Mu Lung Dojo. +2022396 - Increases Magic Attack Rate - An item that only works inside Mu Lung Dojo. +2022397 - Increases Physical Defense Rate - An item that only works inside Mu Lung Dojo. +2022398 - Increases Magic Defense Rate - An item that only works inside Mu Lung Dojo. +2022399 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022400 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022401 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022402 - Increases Max HP - An item that only works inside Mu Lung Dojo. +2022403 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022404 - Increases Physical Attack Rate - An item that only works inside Mu Lung Dojo. +2022405 - Increases Magic Attack Rate - An item that only works inside Mu Lung Dojo. +2022406 - Increases Physical Defense Rate - An item that only works inside Mu Lung Dojo. +2022407 - Increases Magic Defense Rate - An item that only works inside Mu Lung Dojo. +2022408 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022409 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022410 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022411 - Increases Max HP - An item that only works inside Mu Lung Dojo. +2022412 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022413 - Increases Physical Attack Rate - An item that only works inside Mu Lung Dojo. +2022414 - Increases Magic Attack Rate - An item that only works inside Mu Lung Dojo. +2022415 - Increases Physical Defense Rate - An item that only works inside Mu Lung Dojo. +2022416 - Increases Magic Defense Rate - An item that only works inside Mu Lung Dojo. +2022417 - Increases Accuracy - An item that only works inside Mu Lung Dojo. +2022418 - Increases Avoidability - An item that only works inside Mu Lung Dojo. +2022419 - Increases Speed - An item that only works inside Mu Lung Dojo. +2022420 - Increases Max HP - An item that only works inside Mu Lung Dojo. +2022421 - Increases Max MP - An item that only works inside Mu Lung Dojo. +2022422 - Small Stories - A tape that contains various small stories from daily life. You can fine view its content by double-clicking on it. +2022423 - Gaga's Appreciation - Gaga's appreciation. For an hour, your attack and magic rate will go up 20, defense rate 100, accuracy and avoidability 50, and speed and jump ability will go up 10. +2022424 - Gaga's Appreciation - Gaga's appreciation. For 20 minutes, your attack rate and magic will go up 10, defense rate 30, accuracy and avoidability 20, and speed and jump ability will go up 3. +2022428 - Mysterious Box - A box with something mysterious inside. I should open it to see what it could be. If it's my lucky day, I might find an awesome gift inside.n#cYou can open it by double-clicking on it.# +2022429 - Protective Shield - It can only be used in Mu Lung Dojo. It blocks an attack up to 3 times. +2022430 - Mu Lung Dojo Mana Elixir - It recovers your MP. +2022431 - Mu Lung Dojo Elixir - It recovers 50% of your HP and MP. +2022432 - Mu Lung Dojo Power Elixir - It recovers both HP and MP. +2022433 - Mu Lung Dojo Cure-All Medicine - It recovers any status error. +2022434 - Warm and Fuzzy Winter - Weapon Att +20, Magic Att +30 for 15 minutes. +2022442 - Maze Reward - The EXP awarded by completing the maze created by Richie Gold. +2022450 - EXP Increase(S) - Provides 50 Bonus EXP. +2022451 - EXP Increase(M) - Provides 200 Bonus EXP. +2022452 - EXP Increase(L) - Provides 500 Bonus EXP. +2022455 - Happy New Year! - Weapon Att +20, Magic Att +30 for 15 min. +2022456 - Elixir - A legendary potion.\nRecovers 50% of HP and MP. +2022457 - Power Elixir - A legendary potion.nFully recovers HP and MP. +2022458 - Shinsoo's Blessing - For 1 hour, Weapon Att +5, MP +10, Weapon DEF +20, Magic DEF +20, Speed +10. +2022459 - Cassandra's Reward 1 - For 1 hour, Meso Drop Rate +30%. +2022460 - Cassandra's Reward 2 - For 40 minutes, Meso Drop Rate +50%. +2022461 - Cassandra's Reward 3 - For 30 min., Meso Drop Rate 2x. +2022462 - Cassandra's Reward 4 - For 1 hour, Item Drop Rate +50%. +2022463 - Cassandra's Reward 5 - For 30 min., Item Drop Rate 2x. +2022465 - Heartpounding Box - A box in which no one has a clue what's in it. If the luck in is your side, then a beautiful present might be in store.n#cDouble-click to open.# +2022466 - Heartpounding Box - A box in which no one has a clue what's in it. If the luck in is your side, then a beautiful present might be in store.n#cDouble-click to open.# +2022467 - Heartpounding Box - A box in which no one has a clue what's in it. If the luck in is your side, then a beautiful present might be in store.n#cDouble-click to open.# +2022468 - Heartpounding Box - A box in which no one has a clue what's in it. If the luck in is your side, then a beautiful present might be in store.n#cDouble-click to open.# +2031002 - Invitation to the Moon - An invitation to the moon, sent by the Moon Bunnies. Using this will send you directly to Moon Bunny's ????. +2031003 - Invitation to the Nest - An invitation to the baby bird's nest sent by Gaga. Use it to be sent directly to the nest. +2031004 - Invitation to Ereve - An invitation to Ereve from Neinheart. This invitation will allow you to instantly move to Ereve. +2032000 - Richie Gold's Strange Lamp - An unbelievable lamp made by Richie Gold. Use this, and you'll be led somewhere in in the maze. No one knows exactly where you'll be sent, though. +2040110 - Red-Nose STR Bandage 60% - Improves STR on Rudolf's Red Nose.\nSuccess Rate:60%, STR +1 +2040111 - Red-Nose DEX Bandage 60% - Improves DEX on Rudolf's Red Nose.\nSuccess Rate:60%, DEX +1 +2040112 - Red-Nose INT Bandage 60% - Improves INT on Rudolf's Red Nose.\nSuccess Rate:60%, INT +1 +2040113 - Red-Nose LUK Bandage 60% - Improves LUK on Rudolf's Red Nose.\nSuccess Rate:60%, LUK +1 +2040114 - Red-Nose ATT Bandage 60% - Improves ATT on Rudolf's Red Nose.\nSuccess Rate:60%, ATT +1 +2040115 - Red-Nose Weapon DEF Bandage 60% - Improves Weapon DEF on Rudolf's Red Nose.\nSuccess Rate:60%, Weapon DEF+1 +2040116 - Red-Nose MP Bandage 60% - Improves MP on Rudolf's Red Nose.\nSuccess Rate:60%, MP+1 +2040117 - Red-Nose Magic DEF Bandage 60% - Improves Magic DEF on Rudolf's Red Nose.\nSuccess Rate:60%, Magic DEF+1 +2040118 - Red-Nose Avoidability Bandage 60% - Improves Avoidability on Rudolf's Red Nose.\nSuccess Rate:60%, Avoidability+1 +2040119 - Red-Nose Accuracy Bandage 60% - Improves Accuracy on Rudolf's Red Nose.\nSuccess Rate:60%, Accuracy+1 +2044811 - Scroll for Knuckles for ATT 65% - Improves ATT on Knuckles.\nSuccess Rate:65%, Weapon Att+2, STR+1 +2044812 - Scroll for Knuckles for ATT 15% - Improves ATT on Knuckles.\nSuccess Rate:15%, Weapon Att+5, STR+3, Weapon DEF+1 +2044813 - Scroll for Knuckles for Accuracy 65% - Improves Accuracy on Knuckles.\nSuccess Rate:65%, Accuracy+3, DEX+2, Weapon Att+1 +2044814 - Scroll for Knuckles for Accuracy 15% - Improves Accuracy on Knuckles.\nSuccess Rate:15%, Accuracy+5, DEX+3, Weapon Att+3 +2044906 - Gun ATT Scroll 65% - Improves ATT on guns.\nSuccess Rate:65%, Weapon Att.+2, Accuracy+1 +2044907 - Gun ATT Scroll 15% - Improves ATT on guns.\nSuccess Rate:15%, Weapon Att.+5, Accuracy+3, DEX+1 +2049103 - Beach Sandals Scroll 100% - Used on limited-edition beach sandals, with the options of improving/decreasing the stats.\nSuccess rate:100% +2100073 - Mu Lung Dojo Summon Package3_Deo - Summon Deo +2100074 - Mu Lung Dojo Summon Package4_King Slime - Summon King Slime +2100075 - Mu Lung Dojo Summon Package5_Giant Centepede - Summon Giant Centepede +2100076 - Mu Lung Dojo Summon Package6_Faust - Summon Faust +2100077 - Mu Lung Dojo Summon Package7_King Clang - Summon King Clang +2100078 - Mu Lung Dojo Summon Package8_Mushroom - Summon Mushmom +2100079 - Mu Lung Dojo Summon Package9_Alishar - Summon Alishar +2100080 - Mu Lung Dojo Summon Package10_Timer - Summon Timer +2100081 - Mu Lung Dojo Summon Package11_Dyle - Summon Dyle +2100082 - Mu Lung Dojo Summon Package12_Papa Pixie - Summon Papa Pixie +2100083 - Mu Lung Dojo Summon Package13_Zombie Mushroom - Summon Zombie Mushmom +2100084 - Mu Lung Dojo Summon Package14_Zeno - Summon Zeno +2100085 - Mu Lung Dojo Summon Package15_Lord Pirate - Summon Lord Pirate +2100086 - Mu Lung Dojo Summon Package16_Nine-Tailed Fox - Summon Nine-Tailed Fox +2100087 - Mu Lung Dojo Summon Package17_Tae Room - Summon Tae Roon +2100088 - Mu Lung Dojo Summon Package18_Poison Golem - Summon Poison Golem +2100089 - Mu Lung Dojo Summon Package19_Priest Cat - Summon Priest Cat +2100090 - Mu Lung Dojo Summon Package20_Jr. Balrog - Summon Jr. Balrog +2100091 - Mu Lung Dojo Summon Package21_Elliza - Summon Eliza +2100092 - Mu Lung Dojo Summon Package22_Franken Lloyd - Summon Franken Lloyd +2100093 - Mu Lung Dojo Summon Package23_Kimera - Summon Kimera +2100094 - Mu Lung Dojo Summon Package24_Snack Bar - Summon Snack Bar +2100095 - Mu Lung Dojo Summon Package25_Snowman - Summon Snowman +2100096 - Mu Lung Dojo Summon Package26_Blue Mushroom - Summon Blue Mushroom +2100097 - Mu Lung Dojo Summon Package27_Crimson Balrog - Summon Crimson Balrog +2100098 - Mu Lung Dojo Summon Package28_Manon - Summon Manon +2100099 - Mu Lung Dojo Summon Package29_Griffey - Summon Griffey +2100100 - Mu Lung Dojo Summon Package30_Leviathan - Summon Leviathan +2100101 - Mu Lung Dojo Summon Package31_Papulatus - Summon Papulatus +2100102 - Mu Lung Dojo Summon Package32_Moo Gong - Summon Moo Gong +2100103 - Mu Lung Dojo Summon Package00_So Gong - Summon So Gong +2100104 - Maple Ambush Sack - Unwrap this sack, and the aliens will bring doom to the world of Maple. +2100105 - Maze Snail Set - A Maze Snail set, including 5 types of snails for a total of 25 snails. +2100106 - Maze Transformation Snail Set - A Maze Transformation Snail Set, including 3 types of snails for a total of 3, but they change their look every 3 seconds. +2100107 - Maze Transformation Snail Set2 - A Maze Transformation Snail Set, including 2 types of snails for a total of 2, but they change their look every 10 seconds. +2100112 - Summon Flying Monsters (Mark) - Summons marked monsters +2100116 - Summon Maze Pigs - Summons Maze Pig. +2100117 - Summon Maze Rash - Summons Maze Rash +2100118 - Dr. Kim's Anti-Virus Project - Eliminates Chief Greys. +2100119 - Summons Maze Sand Bunny - Summons Maze Sand Bunnies. +2210017 - Moon Photo - The more you look at it, the more you feel lightheaded� and you feel closer to the moon. +2210018 - Sweet Rice Cake - A sweet, delicious rice cake. Sometimes creates an interesting set of powers. +2210021 - Gaga Transformation Potion - The moment you drink this potion, you'll become the biggest star in the world of Maple, Gaga. +2210022 - Peto Transformation Potion - A transformation potion from the masked gentleman that allows you to transform into Peto for 15 minutes. +2270012 - Purple Ribbon Pig - A purple ribbon that helps catch Maze Pig. +2270008 - Fish Net - A fish net intended to catch something. Can be used with Gaga. +2270009 - Red Ribbon Pig - A red ribbon that helps catch Maze Pig. +2270010 - Green Ribbon Pig - A green ribbon that helps catch Maze Pig. +2270011 - Blue Ribbon Pig - A blue ribbon that helps catch Maze Pig. +2380013 - Cynical Orange Mushroom Card - A card featuring the Cynical Orange Mushroom. +2388046 - Mu Gong Card - A card with a drawing of Moo Gong on it.n#cWhen hunting in Mu Lungnincrease Item/Meso drop rate.# +2430004 - Richie Gold's Random Key Pot - Resets the Gold Key Room in Richie Gold's Maze. +2430005 - Memorial Map - Allows you to check your current position, along with the spot of the Gold Key Room. +2440000 - Richie Gold's Fake Lead - Using this will randomly take you to a spot in the maze. +2022157 - Carnival Point 1 - Enhances CP 3. +2022158 - Carnival Point 2 - Enhances CP 3. +2022159 - Carnival Point 3 - Enhances CP 3. +2022175 - Elixir - A legendary potion.\nRecovers about 50% of HP and MP. (Exclusively for Monster Carnival) +2022176 - Power Elixir - A legendary Potion.\nRecovers all HP and MP. (Exclusively for Monster Carnival) +2022177 - Mana Elixir - A legendary potion.\nRecovers about 300 MP. (Exclusively for Monster Carnival) +2022178 - All-Cure Potion - Recovers the character from any abnormal state. (Exclusively for Monster Carnival) +2041211 - Spiegelmann's Marble - Can only be used on Spiegelmann's Necklace.\nSuccess Rate: 60%, HP +30, MP +30 +2044712 - Scroll for Claw for ATT 100% - Improves attack on claw.\nSuccess rate:100%, weapon attack+2, accuracy+3 +2044612 - Scroll for Crossbow for ATT 100% - Improves attack on crossbow.\nSuccess rate:100%, weapon attack+2, accuracy+3 +2044512 - Scroll for Bow for ATT 100% - Improves attack on bow.\nSuccess rate: 100%, weapon attack+2, accuracy +3 +2044417 - Scroll for Pole Arm for ATT 100% - Improves attack on pole arm.\nSuccess rate:100%, weapon attack+2, STR+2 +2044317 - Scroll for Spear for ATT 100% - Improves attack on spear.\nSuccess rate:100%, weapon attack+2, STR+2 +2044217 - Scroll for Two-handed BW for ATT 100% - Improves attack on two-handed blunt weapon.\nSuccess rate:100%, weapon attack+2, STR+2 +2044117 - Scroll for Two-handed Axe for ATT 100% - Improves attack on two-handed axe.\nSuccess rate:100%, weapon attack+2, STR+2 +2044025 - Scroll for Two-handed Sword for ATT 100% - Improves attack on two-handed sword.\nSuccess rate:100%, weapon attack+2, STR+2 +2043812 - Scroll for Staff for Magic ATT 100% - Improves magic on staff.\nSuccess rate:100%, magic attack+2, INT+2 +2043712 - Scroll for Wand for Magic ATT 100% - Improves magic on wand.\nSuccess rate:100%, magic attack+2, INT+2 +2043312 - Scroll for Dagger for ATT 100% - Improves attack on dagger.\nSuccess rate:100%, weapon attack+2, LUK+2 +2043217 - Scroll for One-Handed BW for ATT 100% - Improves attack on one-handed blunt weapon.\nSuccess rate:100%, weapon attack+2, STR+2 +2043117 - Scroll for One-Handed Axe for ATT 100% - Improves attack on one-handed axe.\nSuccess rate:100%, weapon attack+2, STR+2 +2043023 - Scroll for One-Handed Sword for ATT 100% - Improves attack on one-handed sword.\nSuccess rate:100%, weapon attack+2, STR+2 +2041066 - Scroll for Cape for Magic DEF 100% - Improves magic def. on the cape.\nSuccess rate:100%, magic def.+3, weapon def.+2 +2041067 - Scroll for Cape for Weapon DEF 100% - Improves weapon def. on the cape.\nSuccess rate:100%, weapon def.+3, magic def. +2 +2040936 - Scroll for Shield for DEF 100% - Improves weapon def. on the shield.\nSuccess rate:100%, weapon def.+2, magic def.+3 +2040829 - Scroll for Gloves for DEX 100% - Improves dexterity on gloves.\nSuccess rate: 100%, accuracy+2, DEX+2 +2040830 - Scroll for Gloves for ATT 100% - Improves attack on gloves.\nSuccess rate 100%, weapon att. +2 +2040740 - Scroll for Shoes for DEX 100% - Improves dexterity on shoes.\nSuccess rate:100%, Avoidability +2, Accuracy+3 +2040741 - Scroll for Shoes for Jump 100% - Improves jump on shoes.\nSuccess rate: 100%, jump +2, DEX+2 +2040742 - Scroll for Shoes for Speed 100% - Improves speed on shoes.\nSuccess rate:100%, speed+2 +2040630 - Scroll for Bottomwear for DEF 100% - Improves weapon def. on the bottomwear.\nSuccess rate:100%, weapon def. +2, magic def. +3 +2040538 - Scroll for Overall Armor for DEX 100% - Improves dexterity on the overall armor.\nSuccess rate:100%, DEX+2, accuracy+3 +2040539 - Scroll for Overall Armor for DEF 100% - Improves def. on the overall armor.\nSuccess rate:100%, weapon def.+2, magic def.+3 +2040430 - Scroll for Topwear for DEF 100% - Improves weapon def. on topwear.\nSuccess rate:100%, weapon def.+2, magic def.+3 +2040334 - Scroll for Earring for INT 100% - Improves INT on ear accessory.\nSuccess rate:100%, magic attack +2, INT+2 +2040041 - Scroll for Helmet for DEF 100% - Improves helmet def.\nSuccess rate:100%, weapon def.+2, magic def., +3 +2040042 - Scroll for Helmet for HP 100% - Improves MaxHP on hats.\nSuccess rate:100%, MaxHP+15 +2101200 - GMEvent_Horntail's Left Head - GMEvent_Horntail's Left Head +2101201 - GMEvent_Horntail's Right Head - GMEvent_Horntail's Right Head +2101202 - GMEvent_Pink Bean - GMEvent_Pink Bean +2022481 - Mysterious Maple - The excitement of waiting for an adventure makes you feel good. Weapon and Magic Defense +10. +2022482 - Pigmy's Wings - Pigmy's Wings can be used to grant Speed +8. +2022496 - Cassandra's Star - Blessings from the star given to explorers who participated in the Starlight Festival. Weapon and Magic Defense +5 for 15 minutes. +2022499 - Point Improvement Treasure Chest - Improves point acquisition in the Biscuit Map. +2022500 - Point Increase Treasure Chest - Improves point acquisition in the Biscuit Map for 1 minute. +2022501 - Geppetto's Writing Analysis - Your Speed and Jump skills have increased because Geppetto has deciphered the letters. +2022502 - Hero's Gladius - Tristan's Powerful Strength +2022503 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022504 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022505 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022506 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022507 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022508 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022509 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022510 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022511 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022512 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022513 - Golden Pig's Shiny Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022514 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022515 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022516 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022517 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022518 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022519 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022520 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022521 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022522 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022523 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022524 - Golden Pig's Dazzling Egg - An egg from a Golden Pig. You cannot tell what's inside. Double-click to crack it open. +2022526 - Azalea - A spring flower that especially enjoys sunlight. Restores approximately 2000 HP. +2022527 - Forsythia - The first flower to bloom in the spring. Restores approximately 2000 HP. +2022528 - Clover - A spring flower that symbolizes good luck. Restores approximately 2000 HP. +2022529 - Meaning of Azaleas - The meaning of Azaleas is love. 2x Meso drops for 30 minutes. +2022530 - Meaning of Forsythias - The meaning of Forsythias is hope. 2X item drops for 30 minutes. +2022531 - Meaning of Clovers - The meaning of Clovers in luck. 2X item drops for 1 hour. +2022536 - Underground Temple's Seal - The Seal's energy has been placed on the Underground Temple in order to trap the Balrog inside. It restricts the abilites of all living things. +2022537 - Gladius' Strength - The abilites of the person wieldng the Hero's Gladius is amplified under the protection of Tristan. Weapon ATT +30 and Magic ATT +30. +2022539 - Cry of a Little Lamb - Wolves slow down when they hear a lamb cry. +2022540 - Danger Escape - Movement speed increased for 3 seconds. +2022541 - Self Protection - Protects from a Wolf's attack 1 time. +2022542 - Little Lamb's Surprise Attack - Attacks a Wolf's back, temporarily immobolizing it. +2022543 - Great Confusion - Causes the sheep to become confused and lose direction. +2022547 - Sound of the Sheep's Bells - Slows wolves' movement speed. +2022548 - Sound of the Wolf's Bells - Sheep are temporarily unable to move. +2022549 - Wolf's Threat - Intimidates the sheep, making them weaker. +2022550 - Sheep Ranch Golden ? Egg - A golden egg that can only be obtained at the Sheep Ranch. It has a question mark engraved on it. Double-click to find out what's inside. +2022552 - 6th Anniversary Gift Box - A gift box celebrating Maple Story's 6th Anniversary. What could be inside? rn#cCan be opened by double-clicking.# +2022553 - Crackers's Buff - A buff that Crackers has placed on the Witch's Treasure. Weapon and Magic Attack +10, Defense +20, Accuracy +20, and Avoidability +20 for 40 minutes. +2022562 - Artifact Hunt Encouragement Buff - A buff to encourage you upon accumulating 2,500 points in the Artifact Hunt. Attack +3, Magic Attack +6, Speed +6 +2022563 - Artifact Hunt Encouragement Buff - A buff to encourage you upon accumulating 4,000 points in the Artifact Hunt. Attack +5, Magic Attack +10, Speed +15 +2031006 - Family Studio Photo Coupon - A coupon that allows you to attend the 6th Anniversary Family Photo Shoot Event. +2040329 - Scroll for Earring for DEX 10% - Improves DEX on earrings. nSuccess rate: 10%, Dex +3. The success rate of this scroll can be enhanced by Vega's Spell. +2040330 - Scroll for Earring for INT 10% - Improves INT on earrings. nSuccess rate: 10%, Magic ATT +5, INT +3, Magic Defense +1. The success rate of this scroll can be enhanced by Vega's Spell. +2040331 - Scroll for Earring for LUK 10% - Improves LUK on earrings. nSuccess rate: 10%, LUK +3. The success rate of this scroll can be enhanced by Vega's Spell. +2040728 - Balrog's STR Scroll 30% - Improves STR on Balrog Leather Shoes. nSuccess rate: 30%, STR +2 +2040729 - Balrog's INT Scroll 30% - Improves INT on Balrog Leather Shoes. nSuccess rate: 30%, INT +2 +2040730 - Balrog's LUK Scroll 30% - Improves LUK on Balrog Leather Shoes. nSuccess rate: 30%, LUK +2 +2040731 - Balrog's DEX Scroll 30% - Improves DEX on Balrog Leather Shoes. nSucess rate: 30%, DEX +2 +2040732 - Balrog's HP Scroll 30% - Improves HP on Balrog Leather Shoes. nSuccess rate: 30%, MaxHP +30 +2040733 - Balrog's MP Scroll 30% - Improves MP on Balrog Leather Shoess. nSuccess rate: 30%. MaxMP +30 +2040734 - Balrog's Speed Scroll 30% - Improves Speed on Balrog Leather Shoes. nSuccess rate: 30%, Speed +3 +2040735 - Balrog's Jump Scroll 30% - Improves Jump on Balrog Leather Shoes. nSuccess rate: 30%, Jump +3 +2040736 - Balrog's Accuracy Scroll 30% - Improves Accuracty on Balrog Leather Shoes. nSuccess rate: 30%, Accuracy +5 +2040737 - Balrog's Avoidability Scroll 30% - Improves Avoidability on Balrog Leather Shoes. nSuccess rate: 30%, Avoidability +5 +2040738 - Balrog's Defense Scroll 30% - Improves Defense on Balrog Leather Shoes. nSuccess rate: 30%, Weapons Defense +10, Magic Defense +10 +2040739 - Balrog's Twilight Scroll 5% - Improves the function of Balrog Leather Shoes.\nSuccess rate: 5%, STR +4, INT +4, DEX +4, LUK +4, Speed +4, Jump +4, Avoidability +4, Accuracy +4, Weapons Defense +14, Magic Defense +14, MaxHP +40, MaxMP +40 +2040826 - Scroll for Gloves for ATT 60% - Improves ATT on Gloves.\nSuccess rate: 60%, Weapons ATT +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041100 - Scroll for Ring for STR 100% - Improves STR on Rings. nSuccess rate: 100%, STR +1 +2041101 - Scroll for Rings for STR 60% - Improves STR on Rings.\nSuccess rate: 60%, STR +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041102 - Scroll for Rings for STR 10% - Improves STR on Rings.\nSuccess rate: 10%, STR +3. The success rate of this scroll can be enhanced by Vega's Spell. +2041103 - Scroll for Rings for INT 100% - Improves INT on Rings. nSuccess rate: 100%, INT +1 +2041104 - Scroll for Rings for INT 60% - Improves INT on Rings.\nSuccess rate: 60%, INT +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041105 - Scroll for Rings for INT 10% - Improves INT on Rings.\nSuccess rate: 10%, INT +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041106 - Scroll for Rings for DEX 100% - Improves DEX on Rings. nSuccess rate: 100%, DEX +1 +2041107 - Scroll for Rings for DEX 60% - Improves DEX on Rings.\nSuccess rate: 100%, DEX +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041108 - Scroll for Rings for DEX 10% - Improves DEX on Rings.\nSuccess rate: 10%, DEX +3. The success rate of this scroll can be enhanced by Vega's Spell. +2041109 - Scroll for Rings for LUK 100% - Improves LUK on Rings. nSuccess rate: 100%, LUK +1 +2041110 - Scroll for Rings for LUK 60% - Improves LUK on Rings.\nSuccess rate: 60%, LUK+2. The success rate of this scroll can be enhanced by Vega's Spell. +2041111 - Scroll for Rings for LUK 10% - Improves LUK on Rings.\nSuccess rate: 10%, LUK +3. The success rate of this scroll can be enhanced by Vega's Spell. +2041112 - Dark Scroll for Rings for STR 70% - Improves STR on Rings. nSuccess rate: 70%, STR +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041113 - Dark Scroll for Rings for STR 30% - Improves STR on Rings. nSuccess rate: 30%, STR +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041114 - Dark Scroll for Rings for INT 70% - Improves INT on Rings.\nSuccess rate: 70%, INT +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041115 - Dark Scroll for Rings for INT 30% - Improves INT on Rings.\nSuccess rate: 30%, INT +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041116 - Dark Scroll for Rings for DEX 70% - Improves DEX on Rings.\nSuccess rate: 70%, DEX +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041117 - Dark Scroll for Rings for DEX 30% - Improves DEX on Rings. nSuccess rate: 30%, DEX +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041118 - Dark Scroll for Rings for LUK 70% - Improves LUK on Rings. nSuccess rate: 70%, LUK +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041119 - Dark Scroll for Rings for LUK 30% - Improves LUK on Rings. nSuccess rate: 30%, LUK +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041300 - Scroll for Belts for STR 100% - Improves STR on Belts. nSuccess rate: 100%, STR +1 +2041301 - Scroll for Belts for STR 60% - Improves STR on Belts.\nSuccess rate: 60%, STR +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041302 - Scroll for Belts for STR 10% - Improves STR on Belts.\nSuccess rate: 10%, STR +3. The success rate of this scroll can be enhanced by Vega's Spell. +2041303 - Scroll for Belts for INT 100% - Improves INT on Belts. nSuccess rate: 100%, INT +1 +2041304 - Scroll for Belts for INT 60% - Improves INT on Belts.\nSuccess rate: 60%, INT +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041305 - Scroll for Belts for INT 10% - Improves INT on Belts.\nSuccess rate: 10%, INT +3. The success rate of this scroll can be enhanced by Vega's Spell. +2041306 - Scroll for Belts for DEX 100% - Improves DEX on Belts. nSuccess rate: 100%, DEX +1 +2041307 - Scroll for Belts for DEX 60% - Improves DEX on Belts.\nSuccess rate: 60%, DEX +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041308 - Scroll for Belts for DEX 10% - Improves DEX on Belts.\nSuccess rate: 10%, DEX +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041309 - Scroll for Belts for LUK 100% - Improves LUK on Belts. nSuccess rate: 100%, LUK +1 +2041310 - Scroll for Belts for LUK 60% - Improves LUK on Belts.\nSuccess rate: 60%, LUK +2. The success rate of this scroll can be enhanced by Vega's Spell. +2041311 - Scroll for Belts for LUK 10% - Improves LUK on Belts.\nSuccess rate: 10%, LUK +3. The success rate of this scroll can be enhanced by Vega's Spell. +2041312 - Dark Scroll for Belts for STR 70% - Improves STR on Belts. nSuccess rate: 70%, STR +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041313 - Dark Scroll for Belts for STR 30% - Improves STR on Belts. nSuccess rate: 30%, STR +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041314 - Dark Scroll for Belts for INT 70% - Improves INT on Belts. nSuccess rate: 70%, INT +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041315 - Dark Scroll for Belts for INT 30% - Improves INT on Belts. nSuccess rate: 30%, INT +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041316 - Dark Scroll for Belts for DEX 70% - Improves DEX on Belts. nSuccess rate: 70%, DEX +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041317 - Dark Scroll for Belts for DEX 30% - Improves DEX on Belts. nSuccess rate: 30%, DEX +3nIf unsuccessful, item has a 50% chance of being destroyed. +2041318 - Dark Scroll for Belts for LUK 70% - Improves LUK on Belts. nSuccess rate: 70%, LUK +2nIf unsuccessful, item has a 50% chance of being destroyed. +2041319 - Dark Scroll for Belts for LUK 30% - Improves LUK on Belts. nSuccess rate: 30%, LUK +3nIf unsuccessful, item has a 50% chance of being destroyed. +2044015 - Scroll for Two-Handed Swords for ATT 10% - Improves ATT on Two-Handed Swords. nSuccess rate: 10%, Weapons ATT +5, STR +3, Weapons Defense +1 +2049105 - [6th Anniversary] Dark Scroll for Gloves for ATT 70% - Improves ATT on Gloves. nSuccess rate: 70%, Weapons ATT +1nIf unsuccessful, item has a 50% chance of being destroyed. +2049106 - [6th Anniversary] Dark Scroll for Gloves for ATT 30% - Improves ATT on Gloves. nSucces rate: 30%, Weapons ATT +2nIf unsuccessful, item has an 80% chance of being destroyed. +2049107 - [6th Anniversary] Dark Scroll for Gloves for STR 70% [ - Improves STR on Gloves. nSuccess rate: 70%, Accuracy +2, STR +1nIf unsuccessful, item has a 50% chance of being destroyed. +2049108 - [6th Anniversary] Dark Scroll for Gloves for LUK 70% - Improves LUK on Gloves. nSuccess rate: 70%, Accuracy +2, LUK +1nIf unsuccessful, item has a 50% chance of being destroyed. +2049109 - [6th Anniversary] Dark Scroll for Gloves for INT 70% - Improves INT on Gloves. nSuccess rate: 70%, Accuracy +2, INT +1nIf unsuccessful, item has a 50% chance of being destroyed. +2049110 - [6th Anniversary] Dark Scroll for Gloves for DEX 70% - Improves DEX on Gloves. nSuccess rate: 70%, Accuracy +2, DEX +1nIf unsuccessful, item has a 50% chance of being destroyed. +2100108 - Master of Disguise Summoning Sack - Summons the Master of Disguise. +2100109 - Black Witch Summoning Summoning Sack - Summons the Black Witch. +2100110 - Blue Mushroom Summoning Sack - Summons a group of Blue Mushrooms. +2100111 - Puppeteer Summoning Sack - Summons the Puppeteer. +2100113 - Tristan's Balrog Summon - Summons Tristan's Balrog. +2100120 - Snail Summoning Sack - Summons a group of Snails. +2100121 - Slime Summoning Sack - Summons a group of Slimes. +2100122 - Green Mushroom Summoning Sack - Summons a group of Green Mushrooms. +2100123 - Octopus Summoning Sack - Summons a group of Octopuses. +2100124 - Pig Summoning Sack - Summons a group of Pigs. +2100125 - Ribbon Pig Summoning Sack - Summons a group of Ribbon Pigs. +2100126 - Orange Mushroom Summoning Sack - Summons a group of Orange Mushrooms. +2100127 - Bubbling Summoning Sack - Summons a group of Bubblings. +2100128 - Horny Mushroom Summoning Sack - Summons a group of Horny Mushrooms. +2100129 - Jr. Necki Summoning Sack. - Summons Jr. Necki. +2100130 - Blue Mushroom Summoning Sack - Summons a group of Blue Mushrooms +2100131 - Tristan's Balrog Summoning Sack - Summons Tristan's Balrog. +2100132 - Balrog Summoning Sack - Balrog Summoning Sack +2100133 - Balrog's Spirit - Balrog's Spirit +2100134 - Rescued Gaga Summoning Sack - Summons Gaga, who has been rescued. +2100135 - Test MOB Summoning Sack - Test MOB Summoning Sack +2100136 - Easy Mode Balrog Summoning Sack - Easy Mode Balrog Summoning Sack +2100137 - Easy Mode Balrog's Spirit - Easy Mode Balrog's Spirit +2100138 - Puppeteer Summoning Sack - Summons the Puppeteer. +2100139 - Puppeteer Summoning Sack - Summons the Puppeteer. +2100140 - Puppeteer Summong Sack - Summons the Puppeteer. +2101110 - Monster Summoning Sack(Leviathan) - Summons 1 Leviathan. +2210004 - Blue Ribbon Pig Piece - A crystal piece that resembles Blue Ribbon Pig. When used, the crystal will melt into the body, and its mythical power will transform the user into Blue Ribbon Pig. This mythical power will last for an hour. +2100900 - Mysterious Sack - Cassandra says that it's impossible to know what monsters will be summoned from this sack, but it may summon special, hard-to-find monsters. +2109004 - Steal Sheep Wool - Summons a bomb to steel wool from sheep. +2109005 - Plant a Rose Thorn - Plants a Rose Thorn Bush to keep Wolves away. +2210030 - Geppetto Transformation - You've entered a fable and transformed into Geppetto. You�re feel a bit sluggish, but do your best to leave the dungeon with your party members. +2210034 - Alien Gray Transformation - The mysterious force emanating from the crystal statue shall be absorbed into your body, and you will no longer find yourself as you are. +2210035 - Penguin Transformation 1 - Will transform you into a penguin. +2210036 - Penguin Transformation 2 - Will transform you into a penguin. +2210037 - Penguin Transformation 3 - Will transform you into a penguin. +2210038 - Penguin Transformation 4 - Will transform you into a penguin. +2210039 - Penguin Transformation 5 - Will transform you into a penguin. +2360002 - Board the Spaceship - Let's go rescue Gaga! +2388055 - Balrog Card - A card that features a Balrog.ncIncreases the Item/Meso drop rates in the central dungeon of Victoria.# +2430006 - Mysterious Piece of Paper - It's full of mysterious scribbles. n#cA quest will begin when you double-click it.# +2430007 - Empty Compass - A compass with no markings. However, it can be turned into a working compass if you have the letters #cN,E, W,S#. +2430008 - Golden Compass - A golden compass that reveals the location of Gold Richie's Treasure Island. n#cBy double-clicking it# you can move to the island. +2430009 - Pure Perfume - A perfume that contains the scent of an inexperienced adventurer. n#cBy double-clicking on it#, that scent is released to confuse monsters. +2430010 - Mysterious Artifact - An artifact with an unknown date of origin.\n#cDouble-click# on it to find out its date of origin. +2430011 - Agent Summon - Summons Agents. (For GM Event Use) +2430012 - Agent Removal - Removes Agents. (For GM Event Use) +2022476 - Chicken Kapitan - A popular Malaysian dish. This mild curry contains chicken pieces with rich coconut milk, onions and spices. \nRecovers 4000 HP. +2022477 - Mee Siam - A popular Malaysian dish made up of thin rice noodles. Served with salted soy beans, dried bean curd, boiled egg and tamarind. \nRecovers 4000 MP. +2022478 - Rojak - This famous dish is served with generous amounts of sweet thick, spicy peanut sauce with bean curds, prawn fritters, hard-boiled eggs and bean sprouts.\nRecovers 1000 HP and 1000 MP. +2022479 - Kangkung belacan - This spicy vegetable dish is served with KanKung (water spinach) and spicy sambal.nImproves Weapon Attack and Magic Attack +8 for 10 minutes. +2022480 - Kuih - These sweet, bite-sized delights are a favorite pastry dish served during parties and just for tea.nImproves Speed +10 for 30 minutes. +2044713 - Scroll for Claw for ATT 50% - Improves attack on claw.\nSuccess rate:50%, weapon attack+5, LUK+1, DEX+1 +2044613 - Scroll for Crossbow for ATT 50% - Improves attack on crossbow.\nSuccess rate:50%, weapon attack+5, DEX+1, STR+1 +2044513 - Scroll for Bow for ATT 50% - Improves attack on bow.\nSuccess rate:50%, weapon attack +5, DEX+1, STR+1 +2044420 - Scroll for Pole Arm for ATT 50% - Improves attack on pole arm.\nSuccess rate:50%, weapon attack+5, STR+3, DEX+1 +2044320 - Scroll for Spear for ATT 50% - Improves attack on spear.\nSuccess rate:50%, weapon attack+5, STR+3, DEX+1 +2044220 - Scroll for Two-handed BW for ATT 50% - Improves attack on two-handed blunt weapon.\nSuccess rate:50%, weapon attack+5, STR+3, DEX+1 +2044120 - Scroll for Two-handed Axe for ATT 50% - Improves attack on two-handed axe.\nSuccess rate:50%, weapon attack+5, STR+3, DEX+1 +2044028 - Scroll for Two-handed Sword for ATT 50% - Improves attack on two-handed sword.\nSuccess rate:50%, weapon attack+5, STR+3, DEX+1 +2043813 - Scroll for Staff for Magic Att. 50% - Improves magic on staff.\nSuccess rate:50%, magic attack+5, INT+3, LUK+1 +2043713 - Scroll for Wand for Magic Att. 50% - Improves magic on wand.\nSuccess rate:50%, magic attack+5, INT+3, LUK+1 +2043313 - Scroll for Dagger for ATT 50% - Improves attack on dagger.\nSuccess rate: 50%, weapon attack +5, LUK+3, DEX+1 +2043220 - Scroll for One-Handed BW for ATT 50% - Improves attack on one-handed blunt weapon.\nSuccess rate: 50%, weapon attack +5, STR+3, DEX+1 +2043120 - Scroll for One-Handed Axe for ATT 50% - Improves attack on one-handed axe.\nSuccess rate: 50%, weapon attack +5, STR+3, DEX+1 +2043022 - Scroll for One-Handed Sword for ATT 50% - Improves attack on one-handed sword.\nSuccess rate:50%, weapon attack+5, STR+3, DEX+1 +2041068 - Scroll for Cape for Magic Def. 50% - Improves magic def. on the cape.\nSuccess rate:50%, magic def. +5, weapon def. +4 +2041069 - Scroll for Cape for Weapon Def. 50% - Improves weapon def. on the cape.\nSuccess rate:50%, weapon def. +5, magic def.+4 +2040943 - Scroll for Shield for DEF 50% - Improves weapon def. on the shield.\nSuccess rate 50%, weapon def.+5, magic def.+4 +2040833 - Scroll for Gloves for DEX 50% - Improves dexterity on gloves.\nSuccess rate:50%, accuracy+3, DEX+3, avoidability+2 +2040834 - Scroll for Gloves for ATT 50% - Improves attack on gloves.\nSuccess rate:50%, weapon att.+3 +2040755 - Scroll for Shoes for DEX 50% - Improves dexterity on shoes.\nSuccess rate:50%, Avoidability +3, accuracy +3, speed+2 +2040756 - Scroll for Shoes for Jump 50% - Improves jump on shoes.\nSuccess rate:50%, jump+6, speed+1 +2040757 - Scroll for Shoes for Speed 50% - Improves speed on shoes.\nSuccess rate:50%, speed+3, jump+1 +2040629 - Scroll for Bottomwear for DEF 50% - Improves weapon def. on the bottomwear.\nSuccess rate:50%, weapon def.+5, magic def.+4 +2040542 - Scroll for Overall Armor for DEX 50% - Improves dexterity on the overall armor.\nSuccess rate:50%, DEX+5, avoidability+1, speed+1 +2040543 - Scroll for Overall Armor for DEF 50% - Improves def. on the overall armor.\nSuccess rate:50%, wepon def. +5, magic def. +4 +2040429 - Scroll for Topwear for DEF 50% - Improves weapon def. on topwear.\nSuccess rate:50%, weapon def. +5, magic def. +4 +2040333 - Scroll for Earring for INT 50% - Improves INT on ear accessory.\nSuccess rate:50%, magic attack +5, INT+3, magic def. +2 +2040045 - Scroll for Helmet for DEF 50% - Improves helmet def.\nSuccess Rate:50%, weapon def.+5, magic def.+4 +2040046 - Scroll for Helmet for HP 50% - Improves MaxHP on hats.\nSuccess rate:50%, MaxHP+35 +2101207 - A Parasite Summoning Sack - (no description) +2101208 - Andras Summoning Sack - (no description) +2101209 - Marbas Summoning Sack - (no description) +2101210 - Amdusias Summoning Sack - (no description) +2101211 - Valefor Summoning Sack - (no description) +2101212 - Crocell Summoning Sack - (no description) +2101213 - Astaroth Summoning Sack - (no description) +2022623 - Seasoned Frog Eggs and Mushrooms - A stinky dish made with Cursed Frog Eggs. Increases 400 HP if eaten. +2022624 - Bloody Mushroom Wine - A non-alcoholic wine made by the Witch using Cursed Cat Spittle. Increases 200 MP when consumed. +2022625 - Slimy Canape - A creepy and slimy Canape that the Witch has made for you. Increases Weapon ATT and Weapon DEF +15 for 15 minutes. +2022626 - Zingy Kabab - A suspiciously sharp-tasting Kabab that the Witch has made for you. Increases Magic ATT And Magic DEF +15 for 15 minutes. +2022627 - Swamp Wrap - The Witch's wrap dish that fills your mouth with the aroma of the swamp with each bite. Increases Weapon ATT and Weapon DEF +25 for 15 minutes. +2022628 - Rough Leather Steak - A rough leather steak that the Witch has carefully grilled for you. Increases Magic ATT And Magic Defense +25 for 15 minutes. +2022629 - Witch's Special Stew - The Witch's special stew that gives off a sour stink. Increases Weapon and Magic ATT +40, Weapons and Magic DEF +100, and Speed and Jump +15 for 15 minutes. +2049113 - Normal Witch Scroll - A scroll that, depending on chance, will either improve or worsen the Talking Witch Hat or Broomstick obtained from the Witch. +2049114 - Witch's Belt Scroll - A scroll that, depending on chance, will either improve or worsen the Witch's Belts obtained from the Witch. +2101203 - Suspicious Black Sack - A sack that Cassandra gave you as a gift. On it appears a note that reads "Open with Friends." +2101204 - Olivia (30) Monster Sack - Sack containing a Lv. 30 Olivia. +2101205 - Olivia (50) Monster Sack - Sack containing a Lv. 50 Olivia. +2101206 - Olivia (70) Monster Sack - Sack containing a Lv. 70 Olivia. +2210043 - Leech Costume - An offensive-looking leech costume. Can be worn to trick your friends. +2022634 - Turkey Leg - A huge roasted turkey leg. It's so big that it seems like it would take all day to finish eating.\n[Gives +30 Physical Attack for 3 minutes] +2101236 - GMEvent_Pink Bean2 - GMEvent_Pink Bean2 +2000022 - Special Rien Red Potion - A special bottle of potion consisting of herbs that only grow in Rien. \nRecovers HP +100. +2000023 - Special Rien Blue Potion - A special bottle of potion consisting of herbs that only grow in Rien. \nRecovers MP +50. +2002030 - Angelic Steps - Allows one to move fast. \nWill increase your speed for 10 minutes. +2012005 - Angel Apple - A red, ripe apple.\nRecovers 200 HP. +2012006 - Angel Lemon - A very sour fruit.\nRecovers 200 MP. +2022564 - Aran Paper Box - A paper box containing a special present commemorating the Aran release. It is well-packed, so you may need to #cdouble-click# to open. +2022570 - King Pepe Warrior Weapon Box - King Pepe's box containing a Warrior weapon. +2022571 - King Pepe Magician Weapon Box - King Pepe's box containing a Magician weapon. +2022572 - King Pepe Bowman Weapon Box - King Pepe's box containing a Bowman weapon. +2022573 - King Pepe Thief Weapon Box - King Pepe's box containing a Thief weapon. +2022574 - King Pepe Pirate Weapon Box - King Pepe's box containing a Pirate weapon. +2022575 - King Pepe Warrior Armor Box - King Pepe's box containing armor for Warriors. +2022576 - King Pepe Magician Armor Box - King Pepe's box containing armor for Magicians. +2022577 - King Pepe Bowman Armor Box - King Pepe's box containing armor for Bowmen. +2022578 - King Pepe Thief Armor Box - King Pepe's box containing armor for Thieves. +2022579 - King Pepe Pirate Armor Box - King Pepe's box containing armor for Pirates. +2022580 - King Pepe Warrior Box - King Pepe's box containing an equipment item for Warriors. +2022581 - King Pepe Magician Box - King Pepe's box containing an equipment item for Magicians. +2022582 - King Pepe Bowman Box - King Pepe's box containing an equipment item for Bowmen. +2022583 - King Pepe Thief Box - King Pepe's box containing an equipment item for Thieves. +2022584 - King Pepe Pirate Box - King Pepe's box containing an equipment item for Pirates. +2022585 - Pharaoh's Blessing Lv. 1 - 100% Damage, Attack Speed +1 +2022586 - Pharaoh's Blessing Lv. 2 - 200% Damage, Attack Speed +2 +2022587 - Pharaoh's Blessing Lv. 3 - 300% Damage, Attack Speed +3 +2022588 - Pharaoh's Blessing Lv. 4 - 400% Damage, Attack Speed +4 +2022613 - Pharaoh's Treasure Chest - A treasure chest containing Pharaoh's treasured items. Double-click to open. +2022614 - Bingo Gift Box - A surprise gift box received after completing a line on the Bingo Board. Open it to discover what's inside! +2022615 - Subway Lost and Found - A Lost and Found box accidentally ingested by Bubbling. Double-click to open. +2022616 - Power Buff Lv. 1 - 100% Damage, Attack Speed +1 +2022617 - Power Buff Lv. 2 - 200% Damage, Attack Speed +2 +2022618 - Pharaoh's Treasure Chest - A treasure chest containing Pharaoh's precious items. Double-click to open. +2031008 - Rien Teleport Ticket - A teleport ticket given by the Maple Admin. It will immediately teleport you to Rien. +2043021 - King Pepe's 60% Scroll for One-handed Sword Attacks - Improves the Attack strength of King Pepe's Cutlass.\nSuccess Rate: 60%, Weapon Attack +2, STR +1. The success rate of this scroll can be enhanced by Vega's Spell. +2043116 - King Pepe's 60% Scroll for One-handed Axe Attacks - Improves the Attack strength of King Pepe's Danker.\nSuccess Rate: 60%, Weapon Attack +2, STR +1. The success rate of this scroll can be enhanced by Vega's Spell. +2043216 - King Pepe's 60% Scroll for One-handed BW Attacks - Improves the Attack strength of King Pepe's Heavy Hammer.\nSuccess Rate: 60%, Weapon Attack +2, STR +1. The success rate of this scroll can be enhanced by Vega's Spell. +2043311 - King Pepe's 60% Scroll for Dagger Attacks - Improves the Attack strength of King Pepe's Gephart.\nSuccess Rate: 60%, Weapon Attack +2, Luck +1. The success rate of this scroll can be enhanced by Vega's Spell. +2043711 - King Pepe's 60% Scroll for Wand Magic Attacks - Improves the Magic Attack strength of King Pepe's Wizard Wand.\nSuccess Rate: 60%, Magic Attack +2, Intelligence +1. The success rate of this scroll can be enhanced by Vega's Spell. +2043811 - King Pepe's 60% Scroll for Staff Magic Attacks - Improves the Magic Attacks strength of King Pepe's Petal Staff.\nSuccess Rate: 60%, Magic Attack +2, Intelligence +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044024 - King Pepe's 60% Scroll for Two-handed Sword Attacks - Improves the Attack strength of King Pepe's Highlander.\nSuccess Rate: 60%, Weapon Attack +2, Strength +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044116 - King Pepe's 60% Scroll for Two-handed Axe Attacks - Improves the Attack strength of King Pepe's Niam.\nSuccess Rate: 60%, Weapon Attack +2, Strength +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044216 - King Pepe's 60% Scroll for Two-handed BW Attacks - Improves the Attack strength of King Pepe's Big Hammer.\nSuccess Rate: 60%, Weapon Attack +2, Strength +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044316 - King Pepe's 60% Scroll for Spear Attacks - Improves the Attack strength of King Pepe's Nakamaki.\nSuccess Rate: 60%, Weapon Attack +2, Strength +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044416 - King Pepe's 60% Scroll for Polearm Attacks - Improves the Attack strength of King Pepe's Axe Polearm.\nSuccess Rate: 60%, Weapon Attack +2, Strength +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044511 - King Pepe's 60% Scroll for Bow Attacks - Improves the Attack strength of King Pepe's Red Viper.\nSuccess Rate: 60%, Weapon Attack +2, Accuracy +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044611 - King Pepe's 60% Scroll for Crossbow Attacks - Improves the Attack strength of King Pepe's Eagle Crow.\nSuccess Rate: 60%, Weapon Attack +2, Accuracy +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044711 - King Pepe's 60% Scroll for Thief Attacks - Improves the Attack strength of King Pepe's Dark Guardian.\nSuccess Rate: 60%, Weapon Attack +2, Accuracy +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044816 - King Pepe's 60% Scroll for Knuckle Attacks - Improves the Attack strength of King Pepe's Silver Maden.\nSuccess Rate: 60%, Weapon Attack +2, Strength +1. The success rate of this scroll can be enhanced by Vega's Spell. +2044909 - King Pepe's 60% Scroll for Gun Attacks - Improves the Attack strength of King Pepe's Shooting Star.\nSuccess Rate: 60%, Weapon Attack +2, Accuracy +1. The success rate of this scroll can be enhanced by Vega's Spell. +2049112 - King Pepe's 100% Scroll for Weapons - Improves or decreases the effectiveness of King Pepe weapons.\nSuccess Rate: 100% +2100160 - Gray Yeti and King Pepe Summoning Bag - Summons Gray Yeti and King Pepe. +2100161 - Gold Yeti and King Pepe Summoning Bag - Summons Gold Yeti and King Pepe. +2100162 - White Yeti and King Pepe Summoning Bag - Summons White Yeti and King Pepe. +2100163 - Prime Minister Summoning Bag - Summons Prime Minister. +2109006 - Pharaoh Yeti Summoning Bag - Summons Pharaoh Yeti. +2109007 - Pharaoh Yeti Summoning Bag - Summons Pharaoh Yeti in 90 seconds. +2109008 - Bubbling Summoning Bag - For use in the restricted bonus map area of the subway station. +2109009 - Jr. Yeti Pharaoh Summoning Bag - Summons Jr. Yeti Pharaoh for the bonus stage of Nett's Pyramid (Easy, Normal, Hard) +2109010 - Jr. Yeti Pharaoh Summoning Bag - Summons Jr. Yeti Pharaoh for the bonus stage of Nett's Pyramid (Hell Mode) +2280013 - [Skill Book] Final Blow - Skill Book from which you can learn about the #cFinal Blow# skill.\nJob: 4th Lv Aran\nCondition: #cFinal Blow# not available +2280014 - [Skill Book] High Defense - Skill Book from which you can learn about the #cHigh Defense# skill.\nJob: 4th Lv Aran\nCondition: #cHigh Defense# not available +2280015 - [Skill Book] Combo Tempest - Skill Book from which you can learn about the #cCombo Tempest# skill.\nJob: 4th Lv Aran\nCondition: #cCombo Tempest# not available +2280017 - [Skill Book] Pig's Weakness - Skill Book from which you can learn about the #cPig's Weakness# skill.\nCondition: #cPig's Weakness# not available +2280016 - [Skill Book] Combo Barrier - Skill Book from which you can learn about the #cCombo Barrier# skill.\nJob: 4th Lv Aran\nCondition: #cCombo Barrier# not available +2280018 - [Skill Book] Stump's Weakness - Skill Book from which you can learn about the #cStump's Weakness# skill.\nCondition: #cStump's Weakness# not available +2280019 - [Skill Book] Slime's Weakness - Skill Book from which you can learn about the #cSlime's Weakness# skill.\nCondition: #cSlime's Weakness# not available +2290126 - [Mastery Book] Overswing 20 - With a 70% success rate, raises the Mastery Level of #cOverswing# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290127 - [Mastery Book] Overswing 30 - With a 50% success rate, raises the Mastery Level of #cOverswing# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2290128 - [Mastery Book] High Mastery 20 - With a 70% success rate, raises the Mastery Level of #cHigh Mastery# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290129 - [Mastery Book]High Mastery 30 - With a 50% success rate, raises the Mastery Level of #cHigh Mastery# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2290130 - [Mastery Book] Freeze Standing 20 - With a 70% success rate, raises the Mastery Level of #cFreeze Standing# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290131 - [Mastery Book] Freeze Standing 30 - With a 50% success rate, raises the Mastery Level of #cFreeze Standing# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2290132 - [Mastery Book] Final Blow 20 - With a 70% success rate, raises the Mastery Level of #cFinal Blow# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290133 - [Mastery Book] Final Blow 30 - With a 50% success rate, raises the Mastery Level of #cFinal Blow# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2290134 - [Mastery Book] High Defense 20 - With a 70% success rate, raises the Mastery Level of #cHigh Defense# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290135 - [Mastery Book] High Defense 30 - With a 50% success rate, raises the Mastery Level of #cHigh Defense# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2290136 - [Mastery Book] Combo Tempest 20 - With a 70% success rate, raises the Mastery Level of #cCombo Tempest# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290137 - [Mastery Book] Combo Tempest 30 - With a 50% success rate, raises the Mastery Level of #cCombo Tempest# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2290138 - [Mastery Book] Combo Barrier 20 - With a 70% success rate, raises the Mastery Level of #cCombo Barrier# to 20.\nJob: Aran\nCondition: Min Skill Lv. 5 +2290139 - [Mastery Book] Combo Barrier 30 - With a 50% success rate, raises the Mastery Level of #cCombo Barrier# to 30.\nJob: Aran\nCondition: Min Skill Lv. 15 +2380014 - Dejected Green Mushroom Card - A card featuring the Dejected Green Mushroom. +2380015 - Muru Card - A card featuring Muru. +2380016 - Murupa Card - A card featuring Murupa. +2380017 - Murupia Card - A card featuring Murupia. +2380018 - MuruMuru Card - A card featuring MuruMuru. +2380019 - Murukun Card - A card featuring Murukun. +2381082 - Smiling Ghost Stump Card - A card featuring the Smiling Ghost Stump. +2381083 - Annoyed Zombie Mushroom Card - A card featuring the Annoyed Zombie Mushroom. +2382092 - Renegade Spore Card - A card featuring Renegade Spores\n#cWhen hunting in the Mushroom Castle: \nJump +1 +2382093 - Poison Mushroom Card - A card featuring the Poison Mushroom\n#cWhen hunting in the Mushroom Castle: \nAccuracy +1 +2382094 - Intoxicated Pig Card - A card featuring the Intoxicated Pig\n#cWhen hunting in the Mushroom Castle: \nSpeed +1 +2382095 - Helmet Pepe Card - A card featuring Helmet Pepe\n#cWhen hunting in the Mushroom Castle: \nJump +1 +2382096 - Royal Guard Pepe Card - A card featuring Royal Guard Pepe\n#cWhen hunting in the Mushroom Castle: \nSpeed +1 +2388052 - Giant Centipede Card - A card that features Giant Centipede.\n#ctem drop rates are increased at Herb Town# +2388053 - Blue Mushmom Card - A card that features Blue Mushmom.\n#c#tem drop rates are increased at Korean Folk Town# +2388054 - Snack Bar Card - A card that features Snack Bar.\n#ctem drop rates are increased at Drake's area# +2388067 - Gray Yeti and King Pepe Card - A card featuring the Gray Yeti and King Pepe.\n#cIncreases the item drop rate when used inside the Mushroom Castle.# +2388068 - Gold Yeti and King Pepe Card - A card featuring the Gold Yeti and King Pepe.\n#cIncreases the item drop rate when used inside the Mushroom Castle.# +2388069 - White Yeti and King Pepe Card - A card featuring the White Yeti and King Pepe.\n#cIncreases the item drop rate when used inside the Mushroom Castle.# +2388070 - Prime Minister Mushroom Card - A card featuring the Prime Minister Mushroom.\n\cIncreases the item/meso drop rate when used inside the Mushroom Castle.# +2430013 - Peng Peng Popsicle - A frozen popsicle that tranforms you into a Peng Peng. There's no determining the type of Peng Peng you'll transform into. +2430014 - Killer Mushroom Spore - A powerful chemical extracted from a Poison Mushroom. Helps you remove sprawling, thorny magic barriers in the forest. +2430015 - Thorn Remover - A magic powder that eliminates the thorns from sprawling vines. +2430016 - Crystal Chest - A chest full of items that's sure to excite anyone who sees it. Open it by August 31st, 2009, or it'll disappear. +2450000 - Hunter's Luck - For 30 minutes, doubles your EXP from hunting. +2040758 - Scroll for Shoes for ATT - Improves attack on shoes.\nSuccess rate: 100%. Weapon Attack +1 +2040759 - Scroll for Shoes for ATT - Improves attack on gloves.\nSuccess rate: 60%. Weapon Attack +2. The success rate of this scroll can be enhanced by Vega's Spell. +2040760 - Scroll for Shoes for ATT - Improves attack on shoes.\nSuccess rate: 10%, Weapon Attack +3. The success rate of this scroll can be enhanced by Vega's Spell. +2044815 - Scroll for Knuckler for Attack 100% - Improves attack on Knucklers.\nSuccess rate: 100%. Weapon Attack +2, STR +1 +2044817 - Scroll for Knuckler for Attack 50% - Improves attack on Knucklers.\nSuccess rate: 50%. Weapon Attack +5, STR +3, DEX +1 +2044908 - Scroll for Gun for Attack 100% - Improves attack on Guns.\nSuccess rate: 100%. Weapon Attack +2, Accuracy +1 +2044910 - Scroll for Gun for Attack 50% - Improves attack on Guns.\nSuccess rate: 50%. Weapon Attack +5, LUK +1, DEX +1 +2022544 - White Elixir - A legendary potion. \nRecovers 50% HP and MP and cancels abnormal statuses. It can recover all abnormal statuses. +2022545 - Dynamite Drink EX - A drink with "Energy Boost" written on the label. Consuming this drink will grant ATT +25, MP +30, DEF +30, and Jump +10 for 30 minutes. +2022546 - Energy Drink - Consuming this drink will increase MAX HP for a set amount of time. +2430032 - Black Bag - A black bag you received from Hiver, a member of the Black Wings. Release it in front of the Safe... +2430030 - Golden Compass - A golden compass that will lead you to Goldrich's Treasure Island. \n#cDouble-click it to# be transported to the Treasure Island. +2430029 - Mystery Box - A box whose contents are unknown, though a Yellow Butterfly might just be hidden inside. +2430028 - Mystery Box - A box whose contents are unknown, though a Yellow Butterfly might just be hidden inside. It will be empty if opened by a character higher than Lv. 101. +2430027 - Mystery Box - A box whose contents are unknown, though a Yellow Butterfly might just be hidden inside. It will be empty if opened by a character higher than Lv. 71. +2430026 - Mystery Box - A box whose contents are unknown, though a Yellow Butterfly might just be hidden inside. It will be empty if opened by a character higher than Lv. 41. +2430031 - Instant Camera - An instant camera that can be used to take a picture of the moon. To take a picture of the moon, double-click on the moon that can be seen from town. If you fail to capture the picture, return to the Moon Bunny for another instant camera. +2100164 - Black Wing Henchman Summoning Sack - Summons the Black Wing's Henchman +2100165 - Hiver Summoning Sack - Summons Hiver +2100152 - Giant Summoning Sack - Summons the Giant +2100153 - Shadow Knight Summoning Sack - Summons the Shadow Knight +2100154 - Gentleman Summoning Sack - Summons the Gentleman +2100155 - Master of Disguise Summoning Sack - Summons the Master of Disguise +2100159 - Transformed Tru Summoning Sack - Summons Transformed Tru +2049200 - Dark Scroll for Accessory for STR 70% - Improves STR on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 70%, STR+2\nIf failed, the item will be destroyed at a 50% rate. +2049201 - Dark Scroll for Accessory for STR 30% - Improves STR on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 30%, STR+3\nIf failed, the item will be destroyed at a 50% rate. +2049202 - Dark Scroll for Accessory for DEX 70% - Improves DEX on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 70%, DEX+2\nIf failed, the item will be destroyed at a 50% rate. +2049203 - Dark Scroll for Accessory for DEX 30% - Improves DEX on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 30%, DEX+3\nIf failed, the item will be destroyed at a 50% rate. +2049204 - Dark Scroll for Accessory for INT 70% - Improves INT on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 70%. INT+2\nIf failed, the item will be destroyed at a 50% rate. +2049205 - Dark Scroll for Accessory for INT 30% - Improves INT on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 30%. INT+3\nIf failed, the item will be destroyed at a 50% rate. +2049206 - Dark Scroll for Accessory for LUK 70% - Improves LUK on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 70%, LUK+2\nIf failed, the item will be destroyed at a 50% rate. +2049207 - Dark Scroll for Accessory for LUK 30% - Improves LUK on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 30%, LUK+3\nIf failed, the item will be destroyed at a 50% rate. +2049208 - Dark Scroll for Accessory for HP 70% - Improves MaxHP on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 70%, MaxHP+10\nIf failed, the item will be destroyed at a 50% rate. +2049209 - Dark Scroll for Accessory for HP 30% - Improves MaxHP on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 30%, MaxHP+30\nIf failed, the item will be destroyed at a 50% rate. +2049210 - Dark Scroll for Accessory for MP 70% - Improves MaxMP on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 70%, MaxMP+10\nIf failed, the item will be destroyed at a 50% rate. +2049211 - Dark Scroll for Accessory for MP 30% - Improves MaxMP on Accessories (Pendants, Belts, Rings).\nSuccess Rate: 30%, MaxMP+30\nIf failed, the item will be destroyed at a 50% rate. +2044418 - Scroll for Polearm for Accuracy 65% - Improves Accuracy on Polearms.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2044419 - Scroll for Polearm for Accuracy 15% - Improves Accuracy on Polearms.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2044318 - Scroll for Spears for Accuracy 65% - Improves Accuracy on Spears.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2044319 - Scroll for Spears for Accuracy 15% - Improves Accuracy on Spears.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2044218 - Scroll for Two-Handed BW for Accuracy 65% - Improves Accuracy on Two-Handed Blunt Weapons.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2044219 - Scroll for Two-Handed BW for Accuracy 15% - Improves Accuracy on Two-Handed Blunt Weapons.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2044118 - Scroll for Two-Handed Axe for Accuracy 65% - Improves Accuracy on Two-Handed Axe.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2044119 - Scroll for Two-Handed Axe for Accuracy 15% - Improves Accuracy on Two-Handed Axe.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2044026 - Scroll for Two-Handed Sword for Accuracy 65% - Improves Accuracy on Two-Handed Swords.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2044027 - Scroll for Two-Handed Sword for Accuracy 15% - Improves Accuracy on Two-Handed Swords.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2043218 - Scroll for One-Handed BW for Accuracy 65% - Improves Accuracy on One-Handed Blunt Weapons.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2043219 - Scroll for One-Handed BW for Accuracy 15% - Improves Accuracy on One-Handed Blunt Weapons.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2043118 - Scroll for One-Handed Axe for Accuracy 65% - Improves Accuracy on One-Handed Axe.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2043119 - Scroll for One-Handed Axe for Accuracy 15% - Improves Accuracy on One-Handed Axe.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2043024 - Scroll for One-Handed Sword for Accuracy 65% - Improves Accuracy on One-Handed Swords.\nSuccess Rate: 65%, Accuracy+3, DEX+2, Weapon Attack+1 +2043025 - Scroll for One-Handed Sword for Accuracy 15% - Improves Accuracy on One-Handed Swords.\nSuccess Rate: 15%, Accuracy+5, DEX+3, Weapon Attack+3 +2040937 - Scroll for Shield for LUK 65% - Improves LUK on Shields.\nSuccess Rate: 65%, LUK+2 +2040938 - Scroll for Shield for LUK 15% - Improves LUK on Shields.\nSuccess Rate: 15%, LUK+3 +2040939 - Scroll for Shield for HP 65% - Improves HP on Shields.\nSuccess Rate: 65%, MaxHP+15 +2040940 - Scroll for Shield for HP 15% - Improves HP on Shields.\nSuccess Rate: 15%, MaxHP+30 +2040941 - Scroll for Shield for STR 65% - Improves STR on Shields.\nSuccess Rate: 65%, STR+2 +2040942 - Scroll for Shield for STR 15% - Improves STR on Shields.\nSuccess Rate: 15%, STR+3 +2040831 - Scroll for Gloves for HP 65% - Improves HP on Gloves.\nSuccess Rate: 65%, MaxHP+15 +2040832 - Scroll for Gloves for HP 15% - Improves HP on Gloves.\nSuccess Rate: 15%, MaxHP+30 +2040631 - Scroll for Bottomwear for Jump 65% - Improves Jump on Bottomwear.\nSuccess Rate: 65%, Jump+2, Avoidability+1 +2040632 - Scroll for Bottomwear for Jump 15% - Improves Jump on Bottomwear.\nSuccess Rate: 15%, Jump+4, Avoidability+2 +2040633 - Scroll for Bottomwear for HP 65% - Improves HP on Bottomwear.\nSuccess Rate: 65%, MaxHP+15 +2040634 - Scroll for Bottomwear for HP 15% - Improves HP on Bottomwear.\nSuccess Rate: 15%, MaxHP+30 +2040635 - Scroll for Bottomwear for DEX 65% - Improves DEX on Bottomwear.\nSuccess Rate: 65%, DEX+2, Accuracy+1 +2040636 - Scroll for Bottomwear for DEX 15% - Improves DEX on Bottomwear.\nSuccess Rate: 15%, DEX+3, Accuracy+2, Speed+1 +2040540 - Scroll for Overall Armor for STR 65% - Improves STR on Overall Armor.\nSuccess Rate: 65%, STR+2, Weapon Attack+1 +2040541 - Scroll for Overall Armor for STR 15% - Improves STR on Overall Armor.\nSuccess Rate: 15%, STR+5, Weapon Attack+3, MaxHP+5 +2040431 - Scroll for Topwear for STR 65% - Improves STR on Topwear.\nSuccess Rate 65%, STR+2 +2040432 - Scroll for Topwear for STR 15% - Improves STR on Topwear.\nSuccess Rate 15%, STR+3 +2040433 - Scroll for Topwear for HP 65% - Improves HP on Topwear.\nSuccess Rate 65%, MaxHP + 15 +2040434 - Scroll for Topwear for HP 15% - Improves HP on Topwear.\nSuccess Rate 15%, MaxHP + 30 +2040435 - Scroll for Topwear for LUK 65% - Improves LUK on Topwear.\nSuccess Rate: 65%, LUK+2 +2040436 - Scroll for Topwear for LUK 15% - Improves LUK on Topwear.\nSuccess Rate: 15%, LUK+3 +2040335 - Scroll for Earring for DEX 65% - Improves DEX on Earrings.\nSuccess Rate: 65%, DEX+2 +2040336 - Scroll for Earring for DEX 15% - Improves DEX on Earrings.\nSuccess Rate: 15%, DEX+3 +2040337 - Scroll for Earring for LUK 65% - Improves LUK on Earrings.\nSuccess Rate: 65%, LUK+2 +2040338 - Scroll for Earring for LUK 15% - Improves LUK on Earrings.\nSuccess Rate: 15%, LUK+3 +2040339 - Scroll for Earring for HP 65% - Improves HP on Earrings.\nSuccess Rate: 65%, MaxHP+15 +2040340 - Scroll for Earring for HP 15% - Improves HP on Earrings.\nSuccess Rate: 15%, MaxHP+30 +2040043 - Scroll for Helmet for DEX 65% - Improves DEX on Helmets.\nSuccess Rate 65%, DEX+2 +2040044 - Scroll for Helmet for DEX 15% - Improves DEX on Helmets.\nSuccess Rate 15%, DEX+3 +2022620 - Handmade Sandwich - A sandwich made personally by Anna. Eat it in the morning to guarantee a sense of satisfaction all throughout the day. +2022621 - Tasty Milk - Fresh milk produced at the farm. \nRecovers around 100 HP. +2022622 - Squeezed Juice - Fresh juice produced at the farm. \nRecovers around 50 MP. +2022631 - Rose Scent - As you are surrounded by the fragrant scent of Roses, you get a strange headache and your feet start to feel heavy. Go see Lana before the scent disappears. +2022632 - Freesia Scent - As you are surrounded by the refreshing scent of Freesias, you get a strange headache and your feet start to feel heavy. Go see Lana before the scent disappears. +2022633 - Lavender Scent - As you are surrounded by the sweet scent of Lavenders, you get a strange headache and your feet start to feel heavy. Go see Lana before the scent disappears. +2012008 - Unripe Onyx Apple - A mysterious and unripe Onyx Apple. When consumed, it grants the following: ATT +60, Magic ATT +70, DEF +10 for 1 minute. diff --git a/mychanges_ptbr.txt b/mychanges_ptbr.txt new file mode 100644 index 0000000000..3e52e8a4fb --- /dev/null +++ b/mychanges_ptbr.txt @@ -0,0 +1,73 @@ +NEW NPC SCRIPTS: + Coco -> 9000017 + Agent E -> 9000036 + + +LOGS: + +12 --- 16 Julho 2015, + +Inclui um SQL que copia conteudo do spider que nao esteja na tabela drop_data inicial. +Alterei a chance de drops de CARDS de mobs. +Pequenas alteracoes nos scripts dos NPCs, e nas mensagens do game tb. +Inclui constante SCROLL_CHANCE_RATE: repete resultados na tentativa de scrolls. +Inclui constantes ADD_SLOTS_BY_LEVEL + ADD_RATES_BY_LEVEL: muda rates do gameplay de um personagem com a evolucao dele. +Alterei APs podendo aumentar ate 32767. +Corrigi alguns XMLs dos mapas de Omega Sector, tinham ordem dos portais invertidas. +AUTOBAN eh uma constante setavel do server agora. + +17 Julho 2015, +Adaptei todos os scripts de 2nd job adv. Nao testado ainda! +ULTRA_RECOVERY: pq n? +GAIN_FAME_BY_QUEST: cada N quests completas da +1 fame. + +21 --- 22 Julho 2015, +Coloquei uma fala no ZMM, ainda n testei. +Corrigi um bug no elevador. +Consertei o script restante do Grendel. + +25 --- 27 Julho 2015, +Criei uma variao do auto-assign, que leva em conta caracteristicas nos stats dos equips. +Consertei upar at 2 niveis por expGain(). + +OBS.: Dar um jeito de automatizar o script para colocar scrolls OP a venda + NPC Coco (9000017) sera o novo vendedor de scrolls + +28 --- 31 Julho 2015, +Consertei algumas quests e NPCs, pra variar. +Inclui constante USE_ENHANCED_CRAFTING. +Auto HP e MP. + +01 --- 03 Agosto 2015, +DUEY FUNCIONOU! Pelo menos parcialmente, ta valendo! +Pet nao mais atrapalha o jogador ao pegar itens enquanto o anterior ataca. +Utilizando um software externo, corrige dados dos drops de mobs de acordo com o BD do Maple. + +05 --- 07 Agosto 2015, +Consertei algumas quests, scripts e mapas... +Update no auto-assign para Warriors e beginners. Comeca a upar DEX para accuracy. +Update nos scripts de 2nd e 3rd job de todos os NPCs dos Explorers. +Incorporei um novo NPC script: NPC Acessories Crafter. +Testei o script do chscroll crafter. + +10 --- 11 Agosto 2015, +NPC crafters, Accessories e chscroll funcionam OK. +cORRIGIDO BUG DE CRAFTER Q TIRAVA ITEM SE INCOMPLETO! +Inclui constante USE_PERFECT_SCROLLING. + +12 --- 14 Agosto 2015, +Correcao de algumas quests... +Inseri exchange npc de orbis e de crimsonwood + +15 --- 19 Agosto 2015, +Pet evolution funciona agora! + +20 --- 21 Agosto 2015, +Genie funciona OK agora. +Script para CWKPQ. +Resolvi alguns problemas com scripts do aviao e do metro. + +25 --- 26 Agosto 2015, +Mecanismos de evitar queda de HP por mapa (red bean, air bubble, soft white bun) funcionam. +Correcao de bug que nao contabilizava queda de hp qdo um char loga em um mapa. +Correcao de bug que nao retirava corretamente recursos de projeteis. \ No newline at end of file diff --git a/scripts/NPC Base.js b/scripts/NPC Base.js new file mode 100644 index 0000000000..4255527eef --- /dev/null +++ b/scripts/NPC Base.js @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC Base + Map Name (Map ID) + Extra NPC info. + */ + +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + } + } +} \ No newline at end of file diff --git a/scripts/event/2xEvent.js b/scripts/event/2xEvent.js new file mode 100644 index 0000000000..8dcb84872f --- /dev/null +++ b/scripts/event/2xEvent.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + 2x EXP Event Script +-- Author -------------------------------------------------------------------------------------- + Twdtwd +**/ + +var timer1; +var timer2; +var timer3; +var timer4; + +importPackage(Packages.client); + +function init() { + /* + if(em.getChannelServer().getId() == 1) { // Only run on channel 1. + // AEST + timer1 = em.scheduleAtTimestamp("start", 1428220800000); + timer2 = em.scheduleAtTimestamp("stop", 1428228000000); + // EDT + timer1 = em.scheduleAtTimestamp("start", 1428271200000); + timer2 = em.scheduleAtTimestamp("stop", 1428278400000); + } + */ +} + +function cancelSchedule() { + if (timer1 != null) + timer1.cancel(true); + if (timer2 != null) + timer2.cancel(true); + if (timer3 != null) + timer3.cancel(true); + if (timer4 != null) + timer4.cancel(true); +} + +function start() { + var world = Packages.net.server.Server.getInstance().getWorld(em.getChannelServer().getWorld()); + world.setExpRate(8); + world.broadcastPacket(Packages.tools.MaplePacketCreator.serverNotice(6, "The Bunny Onslaught Survival Scanner (BOSS) has detected an Easter Bunny onslaught soon! The GM team has activated the Emergency XP Pool (EXP) that doubles experience gained for the next two hours!")); +} + +function stop() { + var world = Packages.net.server.Server.getInstance().getWorld(em.getChannelServer().getWorld()); + world.setExpRate(4); + world.broadcastPacket(Packages.tools.MaplePacketCreator.serverNotice(6, "Unfortunately the Emergency XP Pool (EXP) has run out of juice for now and needs to recharge causing the EXP rate to go back to normal.")); +} \ No newline at end of file diff --git a/scripts/event/3rdjob.js b/scripts/event/3rdjob.js new file mode 100644 index 0000000000..ad099f0b98 --- /dev/null +++ b/scripts/event/3rdjob.js @@ -0,0 +1,143 @@ +importPackage(Packages.client); +importPackage(Packages.server.life); +importPackage(Packages.tools); +importPackage(Packages.client.inventory); + +function init() { +} + + +function monsterValue(eim, mobId) { + return 1; +} + + +function setClassVars(player) { + var returnMapId; + var monsterId; + var mapId; + if (player.getJob().equals(MapleJob.FP_WIZARD) || + player.getJob().equals(MapleJob.IL_WIZARD) || + player.getJob().equals(MapleJob.CLERIC)) { + mapId = 108010201; + returnMapId = 100040106; + monsterId = 9001001; + } else if (player.getJob().equals(MapleJob.FIGHTER) || + player.getJob().equals(MapleJob.PAGE) || + player.getJob().equals(MapleJob.SPEARMAN)) { + mapId = 108010301; + returnMapId = 105070001; + monsterId = 9001000; + } else if (player.getJob().equals(MapleJob.ASSASSIN) || + player.getJob().equals(MapleJob.BANDIT)) { + mapId = 108010401; + returnMapId = 107000402; + monsterId = 9001003; + } else if (player.getJob().equals(MapleJob.HUNTER) || + player.getJob().equals(MapleJob.CROSSBOWMAN)) { + mapId = 108010101; + returnMapId = 105040305; + monsterId = 9001002; + } else if (player.getJob().equals(MapleJob.BRAWLER) || + player.getJob().equals(MapleJob.GUNSLINGER)) { + mapId = 108010501; + returnMapId = 105040305; + monsterId = 9001008; + } + return new Array(mapId, returnMapId, monsterId); +} + + +function playerEntry(eim, player) { + var info = setClassVars(player); + var mapId = info[0]; + var returnMapId = info[1]; + var monsterId = info[2]; + var map = eim.getMapInstance(mapId); + map.toggleDrops(); + + player.changeMap(map, map.getPortal(0)); + var mob = map.getMonsterById(monsterId); + eim.registerMonster(mob); + eim.schedule("warpOut", 20 * 60 * 1000); + map.addMapTimer(20 * 60); +} + + +function playerDead(eim, player) { + var info = setClassVars(player); + var mapId = info[0]; + var returnMapId = info[1]; + var monsterId = info[2]; + player.setHp(1); + var returnMap = em.getChannelServer().getMapFactory().getMap(returnMapId); + player.changeMap(returnMap, returnMap.getPortal(0)); + eim.unregisterPlayer(player); + eim.dispose(); +} + + +function playerDisconnected(eim, player) { + var info = setClassVars(player); + var mapId = info[0]; + var returnMapId = info[1]; + var monsterId = info[2]; + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + var returnMap = em.getChannelServer().getMapFactory().getMap(returnMapId); + player.setMap(returnMap); + eim.dispose(); +} + + +function allMonstersDead(eim) { + var winner = eim.getPlayers().get(0); + var info = setClassVars(winner); + var mapId = info[0]; + var returnMapId = info[1]; + var monsterId = info[2]; + var map = eim.getMapFactory().getMap(mapId); + map.spawnItemDrop(winner, winner, new Item(4031059, 0, 1), winner.getPosition(), true, false); + eim.schedule("warpOut", 12 * 60 * 1000); + map.addMapTimer(12 * 60); +} + +function cancelSchedule(eim) { + +} + + +function warpOut(eim) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + var info = setClassVars(player); + var mapId = info[0]; + var returnMapId = info[1]; + var monsterId = info[2]; + var returnMap = em.getChannelServer().getMapFactory().getMap(returnMapId); + player.changeMap(returnMap, returnMap.getPortal(0)); + eim.unregisterPlayer(player); + } + eim.dispose(); +} + + +function leftParty(eim, player) { + +} + + +function disbandParty(eim, player) { + + +} + + +function dispose() { + + +} + +function cancelSchedule(eim) { +} \ No newline at end of file diff --git a/scripts/event/4jberserk.js b/scripts/event/4jberserk.js new file mode 100644 index 0000000000..264ab62204 --- /dev/null +++ b/scripts/event/4jberserk.js @@ -0,0 +1,175 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var exitMap; +var instanceId; +var minPlayers = 3; + +function init() { + instanceId = 1; +} + +function monsterValue(eim, mobId) { + return 1; +} + +function setup() { + exitMap = em.getChannelServer().getMapFactory().getMap(105090800); // + var instanceName = "4jberserk" + instanceId; + + var eim = em.newInstance(instanceName); + + var mf = eim.getMapFactory(); + + instanceId++; + + var map = mf.getMap(910500200); + map.addMapTimer(3*60); + em.schedule("timeOut", 20 * 60000); + + //you can't warp up to the rocks until all rogs are dead, I think? + eim.setProperty("canWarp","false"); + + return eim; +} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(910500200); + player.changeMap(map, map.getPortal(0)); + +//TODO: hold time across map changes +//player.getClient().getSession().write(tools.MaplePacketCreator.getClock(1800)); +} + +function playerDead(eim, player) { +} + +function playerRevive(eim, player) { + //if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +/*/} + else { //boot dead player + // If only 2 players are left, uncompletable: + var party = eim.getPlayers(); + if (party.size() <= minPlayers) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); + }*/ +} + +function playerDisconnected(eim, player) { + //if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } + else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); +/*/} + else { //boot d/ced player + // If only 2 players are left, uncompletable: + var party = eim.getPlayers(); + if (party.size() < minPlayers) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); + }*/ +} + +function leftParty(eim, player) { + // If only 2 players are left, uncompletable: + var party = eim.getPlayers(); + if (true) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); +} + +function disbandParty(eim) { + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +//for offline players +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); +} + +function allMonstersDead(eim) { + eim.setProperty("canWarp","true"); +} + +function cancelSchedule() { +} + +function timeOut() { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) + playerExit(eim, pIter.next()); + } + eim.dispose(); + } +} diff --git a/scripts/event/4jrush.js b/scripts/event/4jrush.js new file mode 100644 index 0000000000..dc448ce1d4 --- /dev/null +++ b/scripts/event/4jrush.js @@ -0,0 +1,144 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author AngelSL + * + * 4th Job Rush Quest. + * Based on Kerning City PQ script by Stereo + */ + +var exitMap; +var instanceId; +var minPlayers = 3; + +function init() { + instanceId = 1; +} + +function monsterValue(eim, mobId) { + return 1; +} + +function setup() { + exitMap = em.getChannelServer().getMapFactory().getMap(105090700); // + var instanceName = "4jrush" + instanceId; + var eim = em.newInstance(instanceName); + var mf = eim.getMapFactory(); + instanceId++; + var map = mf.getMap(910500100); + map.addMapTimer(20*60); + em.schedule("timeOut", 20 * 60000); + return eim; +} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(910500100); + player.changeMap(map, map.getPortal(0)); +} + +function playerDead(eim, player) { +} + +function playerRevive(eim, player) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerDisconnected(eim, player) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } + else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); +} + +function leftParty(eim, player) { + // If only 2 players are left, uncompletable: + var party = eim.getPlayers(); + if (true) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); +} + +function disbandParty(eim) { + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +//for offline players +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + //KPQ does nothing special with winners + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +//do nothing; KPQ has nothing to do with monster killing +} + +function cancelSchedule() { +} + +function timeOut() { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerExit(eim, pIter.next()); + } + } + eim.dispose(); + } +} diff --git a/scripts/event/AirPlane.js b/scripts/event/AirPlane.js new file mode 100644 index 0000000000..7348719d71 --- /dev/null +++ b/scripts/event/AirPlane.js @@ -0,0 +1,47 @@ +importPackage(Packages.tools); + +//Time Setting is in millisecond +var closeTime = 24 * 1000; //The time to close the gate +var beginTime = 30 * 1000; //The time to begin the ride +var rideTime = 15 * 1000; //The time that require move to destination +var KC_bfd; +var Plane_to_CBD; +var CBD_docked; +var CBD_bfd; +var Plane_to_KC; +var KC_docked; + +function init() { + KC_bfd = em.getChannelServer().getMapFactory().getMap(540010100); + CBD_bfd = em.getChannelServer().getMapFactory().getMap(540010001); + Plane_to_CBD = em.getChannelServer().getMapFactory().getMap(540010101); + Plane_to_KC = em.getChannelServer().getMapFactory().getMap(540010002); + CBD_docked = em.getChannelServer().getMapFactory().getMap(540010000); + KC_docked = em.getChannelServer().getMapFactory().getMap(103000000); + scheduleNew(); +} + +function scheduleNew() { + em.schedule("stopEntry", closeTime); + em.schedule("takeoff", beginTime); +} + +function stopEntry() { + em.setProperty("entry","false"); +} + +function takeoff() { + em.setProperty("entry", "true"); + KC_bfd.warpEveryone(Plane_to_CBD.getId()); + CBD_bfd.warpEveryone(Plane_to_KC.getId()); + em.schedule("arrived", rideTime); + scheduleNew(); +} + +function arrived() { + Plane_to_CBD.warpEveryone(CBD_docked.getId()); + Plane_to_KC.warpEveryone(KC_docked.getId()); +} + +function cancelSchedule() { +} diff --git a/scripts/event/AreaBossDeo.js b/scripts/event/AreaBossDeo.js new file mode 100644 index 0000000000..daf68115d9 --- /dev/null +++ b/scripts/event/AreaBossDeo.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Deo Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var royalCatthusDesert = em.getChannelServer().getMapFactory().getMap(260010201); + var deo = Packages.server.life.MapleLifeFactory.getMonster(3220001); + + if(royalCatthusDesert.getMonsterById(3220001) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + royalCatthusDesert.spawnMonsterOnGroundBelow(deo, new Packages.java.awt.Point(645, 275)); + royalCatthusDesert.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Deo slowly appeared out of the sand dust.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossDyle.js b/scripts/event/AreaBossDyle.js new file mode 100644 index 0000000000..2444c0a33c --- /dev/null +++ b/scripts/event/AreaBossDyle.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Dyle Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ +importPackage(Packages.server.life); +importPackage(Packages.tools); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var dangeroudCroko1 = em.getChannelServer().getMapFactory().getMap(107000300); + if(dangeroudCroko1.getMonsterById(6220000) != null) { + setupTask = em.schedule("start", 3 * 60 *60 * 1000); + return; + } + dangeroudCroko1.spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(6220000), new Packages.java.awt.Point(90, 119)); + dangeroudCroko1.broadcastMessage(MaplePacketCreator.serverNotice(6, "The huge crocodile Dyle has come out from the swamp.")); + setupTask = em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossEliza1.js b/scripts/event/AreaBossEliza1.js new file mode 100644 index 0000000000..4f5882064e --- /dev/null +++ b/scripts/event/AreaBossEliza1.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Eliza1 Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +var setupTask; + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var stairwayToTheSky2 = em.getChannelServer().getMapFactory().getMap(200010300); + var eliza = Packages.server.life.MapleLifeFactory.getMonster(8220000); + + if(stairwayToTheSky2.getMonsterById(8220000) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + stairwayToTheSky2.spawnMonsterOnGroundBelow(eliza, new Packages.java.awt.Point(208, 83)); + stairwayToTheSky2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Eliza has appeared with a black whirlwind.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossFaust1.js b/scripts/event/AreaBossFaust1.js new file mode 100644 index 0000000000..70c9e72410 --- /dev/null +++ b/scripts/event/AreaBossFaust1.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Faust1 Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var theForestOfEvil1 = em.getChannelServer().getMapFactory().getMap(100040105); + var faust1 = Packages.server.life.MapleLifeFactory.getMonster(5220002); + + if(theForestOfEvil1.getMonsterById(5220002) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + theForestOfEvil1.spawnMonsterOnGroundBelow(faust1, new Packages.java.awt.Point(456, 278)); + theForestOfEvil1.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossFaust2.js b/scripts/event/AreaBossFaust2.js new file mode 100644 index 0000000000..875f95d6a7 --- /dev/null +++ b/scripts/event/AreaBossFaust2.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Faust2 Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var theForestOfEvil2 = em.getChannelServer().getMapFactory().getMap(100040106); + var faust2 = Packages.server.life.MapleLifeFactory.getMonster(5220002); + + if(theForestOfEvil2.getMonsterById(5220002) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + theForestOfEvil2.spawnMonsterOnGroundBelow(faust2, new Packages.java.awt.Point(474, 278)); + theForestOfEvil2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Faust appeared amidst the blue fog.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossKimera.js b/scripts/event/AreaBossKimera.js new file mode 100644 index 0000000000..8becb6c69c --- /dev/null +++ b/scripts/event/AreaBossKimera.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Chimera/Kimera Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var labSecretBasementPath = em.getChannelServer().getMapFactory().getMap(261030000); + var chimera = Packages.server.life.MapleLifeFactory.getMonster(8220002); + + if(labSecretBasementPath.getMonsterById(8220002) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + var posX; + var posY = 180; + posX = (Math.floor(Math.random() * 900) - 900); + labSecretBasementPath.spawnMonsterOnGroundBelow(chimera, new Packages.java.awt.Point(posX, posY)); + labSecretBasementPath.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Kimera has appeared out of the darkness of the underground with a glitter in her eyes.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossKingClang.js b/scripts/event/AreaBossKingClang.js new file mode 100644 index 0000000000..342d9978e9 --- /dev/null +++ b/scripts/event/AreaBossKingClang.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + King Clang Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +var hotSand; + +function init() { + hotSand = em.getChannelServer().getMapFactory().getMap(110040000); + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + if(hotSand.getMonsterById(5220001) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + var kingClang = Packages.server.life.MapleLifeFactory.getMonster(5220001); + var posX; + var posY = 140; + posX = Math.floor((Math.random() * 2400) - 1600); + hotSand.spawnMonsterOnGroundBelow(kingClang, new Packages.java.awt.Point(posX, posY)); + hotSand.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A strange turban shell has appeared on the beach.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossKingSageCat.js b/scripts/event/AreaBossKingSageCat.js new file mode 100644 index 0000000000..45957d19a7 --- /dev/null +++ b/scripts/event/AreaBossKingSageCat.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + King Sage Cat Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var goblinForest2 = em.getChannelServer().getMapFactory().getMap(250010504); + var kingSageCat = Packages.server.life.MapleLifeFactory.getMonster(7220002); + + if(goblinForest2.getMonsterById(7220002) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + var posX; + var posY = 540; + posX = Math.floor((Math.random() * 1300) - 500); + goblinForest2.spawnMonsterOnGroundBelow(kingSageCat, new Packages.java.awt.Point(posX, posY)); + goblinForest2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "The ghostly air around here has become stronger. The unpleasant sound of a cat crying can be heard.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossLeviathan.js b/scripts/event/AreaBossLeviathan.js new file mode 100644 index 0000000000..ce1a0f907d --- /dev/null +++ b/scripts/event/AreaBossLeviathan.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Leviathan Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var leviathansCanyon = em.getChannelServer().getMapFactory().getMap(240040401); + var leviathan = Packages.server.life.MapleLifeFactory.getMonster(8220003); + if(leviathansCanyon.getMonsterById(8220003) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + var posX; + var posY = 1125; + posX = Math.floor((Math.random() * 600) - 300); + leviathansCanyon.spawnMonsterOnGroundBelow(leviathan, new Packages.java.awt.Point(posX, posY)); + leviathansCanyon.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Leviathan emerges from the canyon and the cold icy wind blows.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossMano.js b/scripts/event/AreaBossMano.js new file mode 100644 index 0000000000..27e7a8da7c --- /dev/null +++ b/scripts/event/AreaBossMano.js @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Mano Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var thicketAroundTheBeach3 = em.getChannelServer().getMapFactory().getMap(104000400); + var mano = Packages.server.life.MapleLifeFactory.getMonster(2220000); + if(thicketAroundTheBeach3.getMonsterById(2220000) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + + var posX; + var posY = 455; + posX = Math.floor((Math.random() * 605) + 110); + thicketAroundTheBeach3.spawnMonsterOnGroundBelow(mano, new Packages.java.awt.Point(posX, posY)); + thicketAroundTheBeach3.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A cool breeze was felt when Mano appeared.")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossNineTailedFox.js b/scripts/event/AreaBossNineTailedFox.js new file mode 100644 index 0000000000..c5357863e4 --- /dev/null +++ b/scripts/event/AreaBossNineTailedFox.js @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Nine Tailed Fox (Old Fox) Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var moonRidge = em.getChannelServer().getMapFactory().getMap(222010310); + var nineTailedFox = Packages.server.life.MapleLifeFactory.getMonster(7220001); + if(moonRidge.getMonsterById(7220001) != null) { + em.schedule("start", 3 * 60 *60 * 1000); + return; + } + var posX; + var posY = 33; + posX = Math.floor((Math.random() * 1300) - 800); + moonRidge.spawnMonsterOnGroundBelow(nineTailedFox, new Packages.java.awt.Point(posX, posY)); + moonRidge.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "As the moon light dims, a long fox cry can be heard and the presence of the old fox can be felt")); + em.schedule("start", 3 * 60 *60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossSeruf.js b/scripts/event/AreaBossSeruf.js new file mode 100644 index 0000000000..e20f575aa1 --- /dev/null +++ b/scripts/event/AreaBossSeruf.js @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Seruf Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var theSeaweedTower = em.getChannelServer().getMapFactory().getMap(230020100); + var seruf = Packages.server.life.MapleLifeFactory.getMonster(4220001); + + if(theSeaweedTower.getMonsterById(4220001) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + var posX; + var posY = 520; + posX = Math.floor((Math.random() * 2300) - 1500); + theSeaweedTower.spawnMonsterOnGroundBelow(seruf, new Packages.java.awt.Point(posX, posY)); + theSeaweedTower.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "A strange shell has appeared from a grove of seaweed")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossStumpy.js b/scripts/event/AreaBossStumpy.js new file mode 100644 index 0000000000..e5ab22ff74 --- /dev/null +++ b/scripts/event/AreaBossStumpy.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Stumpy Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var eastRockyMountain5 = em.getChannelServer().getMapFactory().getMap(101030404); + var stumpy = Packages.server.life.MapleLifeFactory.getMonster(3220000); + + if(eastRockyMountain5.getMonsterById(3220000) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + var posX; + var posY = 1280; + posX = Math.floor((Math.random() * 800) + 400); + eastRockyMountain5.spawnMonsterOnGroundBelow(stumpy, new Packages.java.awt.Point(posX, posY)); + eastRockyMountain5.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Stumpy has appeared with a stumping sound that rings the Stone Mountain.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossTaeRoon.js b/scripts/event/AreaBossTaeRoon.js new file mode 100644 index 0000000000..34a2201d60 --- /dev/null +++ b/scripts/event/AreaBossTaeRoon.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Tae Roon Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var territoryOfWanderingBear = em.getChannelServer().getMapFactory().getMap(250010304); + var taeRoon = Packages.server.life.MapleLifeFactory.getMonster(7220000); + + if(territoryOfWanderingBear.getMonsterById(7220000) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + var posX; + var posY = 390; + posX = Math.floor((Math.random() * 700) - 800); + territoryOfWanderingBear.spawnMonsterOnGroundBelow(taeRoon, new Packages.java.awt.Point(posX, posY)); + territoryOfWanderingBear.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tae Roon has appeared with a soft whistling sound.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossTimer1.js b/scripts/event/AreaBossTimer1.js new file mode 100644 index 0000000000..7c3670d584 --- /dev/null +++ b/scripts/event/AreaBossTimer1.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Timer1 Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var whirlpoolOfTime = em.getChannelServer().getMapFactory().getMap(220050100); + var timer1 = Packages.server.life.MapleLifeFactory.getMonster(5220003); + + if(whirlpoolOfTime.getMonsterById(5220003) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + var posX; + var posY = 1030; + posX = Math.floor((Math.random() * 770) - 770); + whirlpoolOfTime.spawnMonsterOnGroundBelow(timer1, new Packages.java.awt.Point(posX, posY)); + whirlpoolOfTime.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossTimer2.js b/scripts/event/AreaBossTimer2.js new file mode 100644 index 0000000000..9a5c851a02 --- /dev/null +++ b/scripts/event/AreaBossTimer2.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Timer2 Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var lostTime1 = em.getChannelServer().getMapFactory().getMap(220050000); + var timer2 = Packages.server.life.MapleLifeFactory.getMonster(5220003); + + if(lostTime1.getMonsterById(5220003) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + var posX; + var posY = 1030; + posX = Math.floor((Math.random() * 1400) - 1000); + lostTime1.spawnMonsterOnGroundBelow(timer2, new Packages.java.awt.Point(posX, posY)); + lostTime1.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossTimer3.js b/scripts/event/AreaBossTimer3.js new file mode 100644 index 0000000000..79788c6129 --- /dev/null +++ b/scripts/event/AreaBossTimer3.js @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Timer3 Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) + +**/ + +importPackage(Packages.client); + +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var lostTime2 = em.getChannelServer().getMapFactory().getMap(220050200); + var timer3 = Packages.server.life.MapleLifeFactory.getMonster(5220003); + + if(lostTime2.getMonsterById(5220003) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + var posX; + var posY = 1030; + posX = Math.floor((Math.random() * 1400) - 700); + lostTime2.spawnMonsterOnGroundBelow(timer3, new Packages.java.awt.Point(posX, posY)); + lostTime2.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Tick-Tock Tick-Tock! Timer makes it's presence known.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/AreaBossZeno.js b/scripts/event/AreaBossZeno.js new file mode 100644 index 0000000000..267691fd00 --- /dev/null +++ b/scripts/event/AreaBossZeno.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Zeno Spawner +-- Edited by -------------------------------------------------------------------------------------- + ThreeStep (based on xQuasar's King Clang spawner) +**/ +function init() { + scheduleNew(); +} + +function scheduleNew() { + setupTask = em.schedule("start", 0); //spawns upon server start. Each 3 hours an server event checks if boss exists, if not spawns it instantly. +} + +function cancelSchedule() { + if (setupTask != null) + setupTask.cancel(true); +} + +function start() { + var graysPrairie = em.getChannelServer().getMapFactory().getMap(221040301); + var zeno = Packages.server.life.MapleLifeFactory.getMonster(6220001); + + if(graysPrairie.getMonsterById(6220001) != null) { + em.schedule("start", 3 * 60 * 60 * 1000); + return; + } + + graysPrairie.spawnMonsterOnGroundBelow(zeno, new Packages.java.awt.Point(-4224, 776)); + graysPrairie.broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(6, "Zeno has appeared with a heavy sound of machinery.")); + em.schedule("start", 3 * 60 * 60 * 1000); +} \ No newline at end of file diff --git a/scripts/event/Boats.js b/scripts/event/Boats.js new file mode 100644 index 0000000000..7dd342bfc6 --- /dev/null +++ b/scripts/event/Boats.js @@ -0,0 +1,103 @@ +importPackage(Packages.client); +importPackage(Packages.tools); +importPackage(Packages.server.life); + +//Time Setting is in millisecond +var closeTime = 50 * 1000; //The time to close the gate +var beginTime = 60 * 1000; //The time to begin the ride +var rideTime = 120 * 1000; //The time that require move to destination +var invasionTime = 30 * 1000; //The time that spawn balrog +var Orbis_btf; +var Boat_to_Orbis; +var Orbis_Boat_Cabin; +var Orbis_docked; +var Ellinia_btf; +var Ellinia_Boat_Cabin; +var Ellinia_docked; + +function init() { + Orbis_btf = em.getChannelServer().getMapFactory().getMap(200000112); + Ellinia_btf = em.getChannelServer().getMapFactory().getMap(101000301); + Boat_to_Orbis = em.getChannelServer().getMapFactory().getMap(200090010); + Boat_to_Ellinia = em.getChannelServer().getMapFactory().getMap(200090000); + Orbis_Boat_Cabin = em.getChannelServer().getMapFactory().getMap(200090011); + Ellinia_Boat_Cabin = em.getChannelServer().getMapFactory().getMap(200090001); + Ellinia_docked = em.getChannelServer().getMapFactory().getMap(101000300); + Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); + Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000111); + OBoatsetup(); + EBoatsetup(); + scheduleNew(); +} + +function scheduleNew() { + Ellinia_docked.setDocked(true); + Orbis_docked.setDocked(true); + Ellinia_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + em.setProperty("docked", "true"); + em.setProperty("entry", "true"); + em.setProperty("haveBalrog","false"); + em.schedule("stopentry", closeTime); + em.schedule("takeoff", beginTime); +} + +function stopentry() { + em.setProperty("entry","false"); + Orbis_Boat_Cabin.resetReactors(); + Ellinia_Boat_Cabin.resetReactors(); +} + + + +function takeoff() { + em.setProperty("docked","false"); + Orbis_btf.warpEveryone(Boat_to_Ellinia.getId()); + Ellinia_btf.warpEveryone(Boat_to_Orbis.getId()); + Ellinia_docked.setDocked(false); + Orbis_docked.setDocked(false); + Ellinia_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + em.schedule("invasion", invasionTime); + em.schedule("arrived", rideTime); +} + +function arrived() { + Boat_to_Orbis.warpEveryone(Orbis_Station.getId()); + Orbis_Boat_Cabin.warpEveryone(Orbis_Station.getId()); + Boat_to_Ellinia.warpEveryone(Ellinia_docked.getId()); + Ellinia_Boat_Cabin.warpEveryone(Ellinia_docked.getId()); + Boat_to_Orbis.killAllMonsters(); + Boat_to_Ellinia.killAllMonsters(); + scheduleNew(); +} + +function invasion() { + var numspawn = 2; + if(numspawn > 0) { + for(var i=0; i < numspawn; i++) { + Boat_to_Orbis.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(485, -221)); + Boat_to_Ellinia.spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8150000), new java.awt.Point(-590, -221)); + } + Boat_to_Orbis.setDocked(true); + Boat_to_Ellinia.setDocked(true); + Boat_to_Orbis.broadcastMessage(MaplePacketCreator.boatPacket(true)); + Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.boatPacket(true)); + Boat_to_Orbis.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate")); + Boat_to_Ellinia.broadcastMessage(MaplePacketCreator.musicChange("Bgm04/ArabPirate")); + em.setProperty("haveBalrog","true"); + } +} + +function OBoatsetup() { + em.getChannelServer().getMapFactory().getMap(200090011).getPortal("out00").setScriptName("OBoat1"); + em.getChannelServer().getMapFactory().getMap(200090011).getPortal("out01").setScriptName("OBoat2"); +} + +function EBoatsetup() { + em.getChannelServer().getMapFactory().getMap(200090001).getPortal("out00").setScriptName("EBoat1"); + em.getChannelServer().getMapFactory().getMap(200090001).getPortal("out01").setScriptName("EBoat2"); +} + +function cancelSchedule() { +} \ No newline at end of file diff --git a/scripts/event/CWKPQ.js b/scripts/event/CWKPQ.js new file mode 100644 index 0000000000..49e94a70fd --- /dev/null +++ b/scripts/event/CWKPQ.js @@ -0,0 +1,191 @@ +var mapz = Array(100, 200, 300, 400, 500, 510, 520, 521, 522, 530, 540, 550, 600, 700, 800); +var a = Array("a", "b", "c", "d", "e", "f", "g", "h", "i"); +/* +a1,3,6 +b1-7 +c1,3,6 +d1-7 +e1-7 +f1,3,6 +g1-7 +h1,3,6 +i1-7 +*/ + +var pos_x = Array(944,401,28,-332,-855); +var pos_y = Array(-204,-384,-504,-384,-204); +var pos_y2 = Array(-144, -444, -744, -1044, -1344, -1644); + +function init() { +em.setProperty("state", "0"); + em.setProperty("leader", "true"); +} + +function setup(eim, leaderid) { +em.setProperty("state", "1"); + em.setProperty("leader", "true"); + em.setProperty("current_instance", "0"); + em.setProperty("glpq1", "0"); + em.setProperty("glpq2", "0"); + em.setProperty("glpq3", "0"); + em.setProperty("glpq4", "0"); + em.setProperty("glpq5", "0"); + em.setProperty("glpq6", "0"); + var eim = em.newInstance("CWKPQ" + leaderid); + for (var i = 0; i < mapz.length; i++) { + var map = eim.setInstanceMap(610030000 + mapz[i]); + if (map != null) { + map.resetFully(); + if (map.getId() == 610030400) { + map.setReactorState(); //because everything is at 0 =[ + map.limitReactor(6109016, 1); + map.limitReactor(6109017, 1); + map.limitReactor(6109018, 1); + map.limitReactor(6109019, 1); + map.limitReactor(6109020, 1); + map.shuffleReactors(6109016, 6109020); + map.destroyReactors(6108000, 6108005); //destroy the fake ones, non-GMS like or is this necessary + + //add environments + for (var x = 0; x < a.length; x++) { + for (var y = 1; y <= 7; y++) { + if (x == 1 || x == 3 || x == 4 || x == 6 || x == 8) { + if (y != 2 && y != 4 && y != 5 && y != 7) { + map.moveEnvironment(a[x] + "" + y, 1); + } + } else { + map.moveEnvironment(a[x] + "" + y, 1); + } + } + } + } else if (map.getId() == 610030510) { //warrior room, crimson guardians + for (var z = 0; z < pos_y2.length; z++) { + var mob = em.getMonster(9400582); + eim.registerMonster(mob); + map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(0, pos_y2[z])); + } + //skipping mage room, ehh + } else if (map.getId() == 610030540) { //bowman room, spawn master guardians + for (var z = 0; z < pos_x.length; z++) { + var mob = em.getMonster(9400594); + eim.registerMonster(mob); + map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(pos_x[z], pos_y[z])); + } + } else if (map.getId() == 610030550) { + map.shuffleReactors(); //pirate room + } + } + } + eim.startEventTimer(120000); //2 MIN for first stg + eim.schedule("spawnGuardians", 60000); + return eim; +} + +function playerEntry(eim, player) { + eim.broadcastPlayerMsg(5, "[Expedition] " + player.getName() + " has entered the map."); + var map = eim.getMapInstance(610030100 + (parseInt(em.getProperty("current_instance")) * 100)); + player.changeMap(map, map.getPortal(0)); +} + +function spawnGuardians(eim) { + var map = eim.getMapInstance(0); + if (map.getCharactersSize() <= 0) { + return; + } + eim.broadcastPlayerMsg(5, "The Master Guardians have detected you."); + for (var i = 0; i < 20; i++) { //spawn 20 guardians + var mob = em.getMonster(9400594); + eim.registerMonster(mob); + map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(1000, 336)); + } +} + +function playerRevive(eim, player) { +} + +function scheduledTimeout(eim) { + end(eim); +} + +function changedMap(eim, player, mapid) { + if (mapid < 610030100 || mapid > 610030800) { + playerExit(eim,player); + } else { + switch(mapid) { + case 610030200: + if (em.getProperty("current_instance").equals("0")) { + eim.restartEventTimer(600000); //10 mins + em.setProperty("current_instance", "1"); + } + break; + case 610030300: + if (em.getProperty("current_instance").equals("1")) { + eim.restartEventTimer(600000); //10 mins + em.setProperty("current_instance", "2"); + } + break; + case 610030400: + if (em.getProperty("current_instance").equals("2")) { + eim.restartEventTimer(600000); //10 mins + em.setProperty("current_instance", "3"); + } + break; + case 610030500: + if (em.getProperty("current_instance").equals("3")) { + eim.restartEventTimer(1200000); //20 mins + em.setProperty("current_instance", "4"); + } + break; + case 610030600: + if (em.getProperty("current_instance").equals("4")) { + eim.restartEventTimer(3600000); //1 hr + em.setProperty("current_instance", "5"); + } + break; + case 610030800: + if (em.getProperty("current_instance").equals("5")) { + eim.restartEventTimer(60000); //1 min + em.setProperty("current_instance", "6"); + } + break; + } + } +} + +function playerDisconnected(eim, player) { + return 0; +} + +function monsterValue(eim, mobId) { + return 1; +} + +function playerExit(eim, player) { + eim.broadcastPlayerMsg(5, "[Expedition] " + player.getName() + " has left the map."); + eim.unregisterPlayer(player); + + if (eim.disposeIfPlayerBelow(0, 0)) { + em.setProperty("state", "0"); + em.setProperty("leader", "true"); + } +} + +function end(eim) { + eim.disposeIfPlayerBelow(100, 610030010); + em.setProperty("state", "0"); + em.setProperty("leader", "true"); +} + +function clearPQ(eim) { + end(eim); +} + +function allMonstersDead(eim) { +} + +function leftParty (eim, player) { +} +function disbandParty (eim) { +} +function playerDead(eim, player) {} +function cancelSchedule() {} \ No newline at end of file diff --git a/scripts/event/Cabin.js b/scripts/event/Cabin.js new file mode 100644 index 0000000000..c9c42065ce --- /dev/null +++ b/scripts/event/Cabin.js @@ -0,0 +1,102 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Cabin between Orbis and Leafre +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.5 - Fix for infinity looping [Information] + 1.4 - Ship/boat is now showed + - Removed temp message[Information] + - Credit to Snow/superraz777 for old source + - Credit to Titan/Kool for the ship/boat packet + 1.3 - Removing some function since is not needed [Information] + - Remove register player menthod [Information] + 1.2 - It should be 2 ships not 1 [Information] + 1.1 - Add timer variable for easy edit [Information] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +importPackage(Packages.tools); + +//Time Setting is in millisecond +var closeTime = 60 * 1000; //The time to close the gate +var beginTime = 60 * 1000; //The time to begin the ride +var rideTime = 60 * 1000; //The time that require move to destination +var Orbis_btf; +var Leafre_btf; +var Cabin_to_Orbis; +var Cabin_to_Leafre; +var Orbis_docked; +var Leafre_docked; + +function init() { + Orbis_btf = em.getChannelServer().getMapFactory().getMap(200000132); + Leafre_btf = em.getChannelServer().getMapFactory().getMap(240000111); + Cabin_to_Orbis = em.getChannelServer().getMapFactory().getMap(200090210); + Cabin_to_Leafre = em.getChannelServer().getMapFactory().getMap(200090200); + Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000131); + Leafre_docked = em.getChannelServer().getMapFactory().getMap(240000110); + Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); + Leafre_Station = em.getChannelServer().getMapFactory().getMap(240000100); + scheduleNew(); +} + +function scheduleNew() { + Leafre_docked.setDocked(true); + Orbis_docked.setDocked(true); + Leafre_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + em.setProperty("docked", "true"); + em.setProperty("entry", "true"); + em.schedule("stopEntry", closeTime); + em.schedule("takeoff", beginTime); +} + +function stopEntry() { + em.setProperty("entry","false"); +} + + + +function takeoff() { + Leafre_docked.setDocked(false); + Orbis_docked.setDocked(false); + Leafre_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + em.setProperty("docked","false"); + Orbis_btf.warpEveryone(Cabin_to_Leafre.getId()); + Leafre_btf.warpEveryone(Cabin_to_Orbis.getId()); + em.schedule("arrived", rideTime); +} + +function arrived() { + Cabin_to_Orbis.warpEveryone(Orbis_Station.getId()); + Cabin_to_Leafre.warpEveryone(Leafre_Station.getId()); + scheduleNew(); +} + +function cancelSchedule() { +} \ No newline at end of file diff --git a/scripts/event/CathedralWedding.js b/scripts/event/CathedralWedding.js new file mode 100644 index 0000000000..368641e462 --- /dev/null +++ b/scripts/event/CathedralWedding.js @@ -0,0 +1,190 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @Author Jvlaple + * + * Wedding for odinMS + */ +importPackage(java.lang); + +importPackage(Packages.world); +importPackage(Packages.client); +importPackage(Packages.server.maps); + +var exitMap; +var altarMap; +var cakeMap; +var instanceId; +var minPlayers = 1; + +function init() { + exitMap = em.getChannelServer().getMapFactory().getMap(680000500); //Teh exit map :) <---------t + altarMap = em.getChannelServer().getMapFactory().getMap(680000210); //Teh altar map + cakeMap = em.getChannelServer().getMapFactory().getMap(680000300); //Teh cake + instanceId = 1; +} + +function monsterValue(eim, mobId) { + return 1; +} + + + +function setup(eim) { + var instanceName = "CathedralWedding" + instanceId; + var eim = em.newInstance(instanceName); + instanceId++; + + var eim = em.newInstance(instanceName); + + var mf = eim.getMapFactory(); + + + var map = mf.getMap(680000200);//wutt + //Lets make the clock continue through all maps xD + em.schedule("playerAltar", 3 * 60000); + eim.setProperty("hclicked", 0); + eim.setProperty("wclicked", 0); + eim.setProperty("entryTimestamp",System.currentTimeMillis() + (3 * 60000)); + + return eim; +} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(680000200); + player.changeMap(map, map.getPortal(0)); + + //1st - 20 min 2nd - 5 min 3rd 5 min xD + //player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(1200)); + //player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(180)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock((Long.parseLong(eim.getProperty("entryTimestamp")) - System.currentTimeMillis()) / 1000)); +} + +//lets forget this bullshit... +function playerDead(eim, player) { +} + +function playerRevive(eim, player) { +//how the fuck can this happen? o.O +} + +function playerDisconnected(eim, player) { + playerExit(eim, player);//kick him/her +} + +function leftParty(eim, player) { //this doesnt fucking matter... +} + +function disbandParty(eim) { +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +function playerWarpAltar(eim, player) { + if ((player.getName() != eim.getProperty("husband")) && (player.getName() != eim.getProperty("wife"))){ + player.changeMap(altarMap, altarMap.getPortal(0)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(300)); + }else{ + player.changeMap(altarMap, altarMap.getPortal(2)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(300)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.serverNotice(6, "Please talk to High Priest John now!")); + } +} + +function playerWarpCake(eim, player) { + player.changeMap(cakeMap, cakeMap.getPortal(0)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(300)); +} + +function playerAltar(eim, player) { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerWarpAltar(eim, pIter.next()); + } + } + em.schedule("playerCake", 5 * 60000); + //eim.dispose(); + } +} + +function playerCake(eim, player) { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerWarpCake(eim, pIter.next()); + } + } + em.schedule("timeOut", 5 * 60000); + //eim.dispose(); + } +} + +//Those offline cuntts +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + //Wedding? IDK about gifts o.O + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +} + +function cancelSchedule() { +} + +function timeOut() { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerExit(eim, pIter.next()); + } + } + eim.dispose(); + } +} + + +function dispose() { + +} \ No newline at end of file diff --git a/scripts/event/DollHouse.js b/scripts/event/DollHouse.js new file mode 100644 index 0000000000..8a12e11dfe --- /dev/null +++ b/scripts/event/DollHouse.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *Dollhouse Event +**/ +importPackage(Packages.tools); + +var returnMap; +var map; +var eim; + +function init() { + em.setProperty("noEntry","false"); +} + +function playerEntry(eim, player) { + returnMap = em.getChannelServer().getMapFactory().getMap(221024400); + eim = em.getInstance("DollHouse"); + map = eim.getMapFactory().getMap(922000010); + player.changeMap(map, map.getPortal(0)); + map.shuffleReactors(); + em.setProperty("noEntry","true"); + em.schedule("timeOut", 600000); + player.getClient().getSession().write(MaplePacketCreator.getClock(600)); +} + + + +function playerExit(eim, player) { + em.setProperty("noEntry","false"); + player.changeMap(returnMap, returnMap.getPortal(4)); + eim.unregisterPlayer(player); + em.cancel(); + em.disposeInstance("DollHouse"); + eim.dispose(); +} + +function timeOut() { + em.setProperty("noEntry","false"); + var player = eim.getPlayers().get(0); + player.changeMap(returnMap, returnMap.getPortal(4)); + eim.unregisterPlayer(player); + em.cancel(); + em.disposeInstance("DollHouse"); + eim.dispose(); +} + +function playerDisconnected(eim, player) { + em.setProperty("noEntry","false"); + player.getMap().removePlayer(player); + player.setMap(returnMap); + eim.unregisterPlayer(player); + em.cancel(); + em.disposeInstance("DollHouse"); + eim.dispose(); +} + +function clear(eim) { + em.setProperty("noEntry","false"); + var player = eim.getPlayers().get(0); + player.changeMap(returnMap, returnMap.getPortal(4)); + eim.unregisterPlayer(player); + em.cancel(); + em.disposeInstance("DollHouse"); + eim.dispose(); +} + +function cancelSchedule() { +} + +function dispose() { +} diff --git a/scripts/event/Genie.js b/scripts/event/Genie.js new file mode 100644 index 0000000000..38bf6dca3c --- /dev/null +++ b/scripts/event/Genie.js @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +importPackage(Packages.tools); + +//Time Setting is in millisecond +var closeTime = 60 * 1000; //The time to close the gate +var beginTime = 60 * 1000; //The time to begin the ride +var rideTime = 60 * 1000; //The time that require move to destination +var Orbis_btf; +var Genie_to_Orbis; +var Orbis_docked; +var Ariant_btf; +var Genie_to_Ariant; +var Ariant_docked; + +function init() { + Orbis_btf = em.getChannelServer().getMapFactory().getMap(200000152); + Ariant_btf = em.getChannelServer().getMapFactory().getMap(260000110); + Genie_to_Orbis = em.getChannelServer().getMapFactory().getMap(200090410); + Genie_to_Ariant = em.getChannelServer().getMapFactory().getMap(200090400); + Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000151); + Ariant_docked = em.getChannelServer().getMapFactory().getMap(260000100); + Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); + scheduleNew(); +} + +function scheduleNew() { + Ariant_docked.setDocked(true); + Orbis_docked.setDocked(true); + Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + em.setProperty("docked", "true"); + em.setProperty("entry", "true"); + em.schedule("stopEntry", closeTime); + em.schedule("takeoff", beginTime); +} + +function stopEntry() { + em.setProperty("entry","false"); +} + +function takeoff() { + em.setProperty("docked","false"); + Orbis_btf.warpEveryone(Genie_to_Ariant.getId()); + Ariant_btf.warpEveryone(Genie_to_Orbis.getId()); + Ariant_docked.setDocked(false); + Orbis_docked.setDocked(false); + Ariant_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + em.schedule("arrived", rideTime); +} + +function arrived() { + Genie_to_Orbis.warpEveryone(Orbis_Station.getId()); + Genie_to_Ariant.warpEveryone(Ariant_docked.getId()); + scheduleNew(); +} + +function cancelSchedule() { +} \ No newline at end of file diff --git a/scripts/event/GuildQuest.js b/scripts/event/GuildQuest.js new file mode 100644 index 0000000000..cf3a1d013e --- /dev/null +++ b/scripts/event/GuildQuest.js @@ -0,0 +1,211 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Lerk + * + * Guild Quest + */ + +var exitMap; +var waitingListCurrent = 0; + +importPackage(Packages.world); +importPackage(Packages.client); +importPackage(Packages.server.maps); +importPackage(java.lang); + +function init() { + em.setProperty("shuffleReactors","false"); + em.setProperty("canEnter", "true"); + em.setProperty("gpqOpen", "true"); +} + +function monsterValue(eim, mobId) { //should only trigger on ergoth + if (mobId == 9300028) { //but, just to be safe... + var rubian = new Packages.client.inventory.Item(4001024, 0, 1); + var map = eim.getMapInstance(990000900); + var reactor = map.getReactorByName("boss"); + map.spawnItemDrop(reactor, eim.getPlayers().get(0), rubian, reactor.getPosition(), true, false); + } + return -1; +} + + + +function setup(eim) { + exitMap = em.getChannelServer().getMapFactory().getMap(990001100); //returning path + + //shuffle reactors in two maps for stage 3 + eim.getMapInstance(990000501).shuffleReactors(); + eim.getMapInstance(990000502).shuffleReactors(); + + //force no-respawn on certain map reactors + eim.getMapInstance(990000611).getReactorByName("").setDelay(-1); + eim.getMapInstance(990000620).getReactorByName("").setDelay(-1); + eim.getMapInstance(990000631).getReactorByName("").setDelay(-1); + eim.getMapInstance(990000641).getReactorByName("").setDelay(-1); + + //activate three minutes after start + eim.setProperty("entryTimestamp", Packages.java.lang.System.currentTimeMillis()); + eim.setProperty("canEnter","true"); + eim.schedule("begin", 60000); + eim.startEventTimer(60000); +} + +function begin(eim) { + eim.setProperty("canEnter","false"); + var party = eim.getPlayers(); + //if (party.size() < 6) { //not enough to start + // end(eim,"There are no longer enough players to continue, and those remaining shall be warped out."); + //} else { + var iter = party.iterator(); + while (iter.hasNext()) { + iter.next().dropMessage(6,"The quest has begun."); + } + + eim.startEventTimer(1000 * 60 * 90); + eim.schedule("timeOut", 1000 * 60 * 90); +//} +} + +function timeOut(eim) { + end(eim, "Your allotted time to finish the quest has passed."); +} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(990000000); + player.changeMap(map, map.getPortal(0)); +} + +function playerRevive(eim, player) { + var returnMap = 990000200; + if (eim.getProperty("canEnter").equals("true")) { + returnMap = 990000000; + } + player.setHp(50); + player.setStance(0); + player.changeMap(eim.getMapInstance(returnMap), eim.getMapInstance(returnMap).getPortal(0)); + return false; +} + +function playerDead(eim, player) { +} + +function playerDisconnected(eim, player) { + var party = eim.getPlayers(); + if (player.getName().equals(eim.getProperty("leader"))) { //check for party leader + //boot all players and end + var iter = party.iterator(); + while (iter.hasNext()) { + var pl = iter.next(); + pl.dropMessage(6,"The leader of the instance has disconnected, and the remaining players shall be warped out."); + if (pl.equals(player)) { + removePlayer(eim, pl); + } + else { + eim.unregisterPlayer(pl); + pl.changeMap(exitMap, exitMap.getPortal(0)); + } + } + eim.dispose(); + } + else { //boot d/ced player and check if enough players left + removePlayer(eim, player); + if (party.size() < 6) { //five after player booted + end(eim,"There are no longer enough players to continue, and those remaining shall be warped out."); + } + } +} + +function leftParty(eim, player) { //ignore for GQ +} + +function disbandParty(eim) { //ignore for GQ +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + var party = eim.getPlayers(); + if (party.size() < 6) { //five after player booted + end(eim,"There are no longer enough players to continue, and those remaining shall be warped out."); + } +} + +function end(eim, msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + player.dropMessage(6,msg); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + } + eim.dispose(); +} + +//for offline players +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + var iter = eim.getPlayers().iterator(); + var bonusMap = eim.getMapInstance(990001000); + eim.startEventTimer(40000); + while (iter.hasNext()) { + var player = iter.next(); + player.changeMap(bonusMap, bonusMap.getPortal(0)); + } + eim.schedule("finish", 40000) +} + +function finish(eim) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +//do nothing; GQ has nothing to do with monster killing +} + +function cancelSchedule() { +} + +function dispose(eim) { + em.schedule("openGPQ", 5000); +} + +function openGPQ() { + em.setProperty("gpqOpen", "true"); +} + + +function timeOut() { + +} \ No newline at end of file diff --git a/scripts/event/Hak.js b/scripts/event/Hak.js new file mode 100644 index 0000000000..b0a792c654 --- /dev/null +++ b/scripts/event/Hak.js @@ -0,0 +1,50 @@ +importPackage(Packages.tools); + +var returnTo = new Array(200000141, 250000100); +var rideTo = new Array(250000100, 200000141); +var birdRide = new Array(200090300, 200090310); +var myRide; +var returnMap; +var map; +var docked; +var timeOnRide = 60; //Seconds +var onRide; + +function init() { +} + +function setup() { + var eim = em.newInstance("Hak_" + + em.getProperty("player")); + return eim; +} + +function playerEntry(eim, player) { + if (player.getMapId() == returnTo[0]) { + myRide = 0; + } else { + myRide = 1; + } + docked = eim.getEm().getChannelServer().getMapFactory().getMap(rideTo[myRide]); + returnMap = eim.getMapFactory().getMap(returnTo[myRide]); + onRide = eim.getMapFactory().getMap(birdRide[myRide]); + player.changeMap(onRide, onRide.getPortal(0)); + player.getClient().getSession().write(MaplePacketCreator.getClock(timeOnRide)); + eim.schedule("timeOut", timeOnRide * 1000); +} + +function timeOut() { + onRide.warpEveryone(docked.getId()); +} + + + + +function playerDisconnected(eim, player) { + return 0; +} + +function cancelSchedule() {} + +function dispose() { + em.cancelSchedule(); +} \ No newline at end of file diff --git a/scripts/event/HenesysPQ.js b/scripts/event/HenesysPQ.js new file mode 100644 index 0000000000..a404b516b9 --- /dev/null +++ b/scripts/event/HenesysPQ.js @@ -0,0 +1,193 @@ +/* +* +*Henesys PQ : FightDesign ->RaGEZONE / FXP +* +*/ +// Significant maps (this was already here, helpful though) +// 100000200 - Pig Park +// 910010000 - 1st Stage +// 910010100 - Shortcut +// 910010200 - Bonus +// 910010300 - Exit +// Significant items +// 4001101 - Rice Cake +// Significant monsters +// 9300061 - Bunny +// 9300062 - Flyeye +// 9300063 - Stirge +// 9300064 - Goblin Fires +// Significant NPCs +// 1012112 - Troy +// 1012113 - Tommy +// 1012114 - Growlie +// map effects +// Map/Obj/Effect/quest/gate/3 - warp activation glow +// quest/party/clear - CLEAR text +// Party1/Clear - clear sound +/* INSERT monsterdrops (monsterid,itemid,chance) VALUES (9300061,4001101,1); + */ + + +importPackage(Packages.net.world); +importPackage(Packages.tools); + +var exitMap; +var mainMap; +var minPlayers = 3; +var pqTime = 10;//10 Minutes + +function init() { + exitMap = em.getChannelServer().getMapFactory().getMap(910010400); // + exitClearMap = em.getChannelServer().getMapFactory().getMap(910010100); // + mainMap = em.getChannelServer().getMapFactory().getMap(910010000); //
+ em.setProperty("HPQOpen", "true"); // allows entrance. +} + +function monsterValue(eim, mobId) { + return 1; +} + + + + +function setup() { + em.setProperty("HPQOpen", "false") + var eim = em.newInstance("HenesysPQ_" + em.getProperty("latestLeader")); + eim.setProperty("stage", "0"); + eim.setProperty("clear", "false"); + eim.getMapInstance(910010000).allowSummonState(false); + eim.getMapInstance(910010000).killAllMonsters(); + respawn(eim); + var timer = 1000 * 60 * pqTime; // 10 minutes + em.schedule("timeOut", eim, timer); + eim.startEventTimer(timer); + return eim; +} + + +function respawn(eim) { + var map = eim.getMapInstance(910010000); + if (map.getSummonState()) { + map.instanceMapRespawn(); + } + eim.schedule("respawn", 10000); +} + + +function playerEntry(eim, player) { + var map = eim.getMapInstance(mainMap.getId()); + player.changeMap(map, map.getPortal(0)); +} + +function playerDead(eim, player) { + if (player.isAlive()) { + if (eim.isLeader(player)) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); + } else { + var partyz = eim.getPlayers(); + if (partyz.size() < minPlayers) { + for (var j = 0; j < partyz.size(); j++) + playerExit(eim,partyz.get(j)); + eim.dispose(); + } else + playerExit(eim, player); + } + } +} + +function playerDisconnected(eim, player) { + if (eim.isLeader(player)) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); + } else { + var partyz = eim.getPlayers(); + if (partyz.size() < minPlayers) { + for (var j = 0; j < partyz.size(); j++) { + playerExit(eim,partyz.get(j)); + } + eim.dispose(); + } else { + playerExit(eim, player); + } + } +} + +function leftParty(eim, player) { + var party = eim.getPlayers(); + if (party.size() < minPlayers) { + for (var i = 0; i < party.size(); i++) + playerExit(eim,party.get(i)); + eim.dispose(); + } + else + playerExit(eim, player); +} + +function disbandParty(eim) { + + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerExitClear(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitClearMap, exitClearMap.getPortal(0)); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExitClear(eim, party.get(i)); + eim.dispose(); +} + +function allMonstersDead(eim) {} + +function dispose() { + em.cancelSchedule(); + em.schedule("OpenHPQ", 5000); +} + +function cancelSchedule(eim) { + //This needed? It causes problem on reloadevents + //eim.startEventTimer(0); +} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) + playerExit(eim, pIter.next()); + } + eim.dispose(); + } +} + +function OpenHPQ() { + em.setProperty("HPQOpen", "true"); +} \ No newline at end of file diff --git a/scripts/event/HorntailFight.js b/scripts/event/HorntailFight.js new file mode 100644 index 0000000000..15bfd530be --- /dev/null +++ b/scripts/event/HorntailFight.js @@ -0,0 +1,153 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author SharpAceX(Alan) + * Horntail fight + */ + +importPackage(Packages.server.expeditions); + +var exitMap; +var minPlayers = 1; +var fightTime = 60; + +var trial1; //Cave of Life - The Cave of Trial I +var trial2; // Cave of Life - The Cave of Trial II +var fightMap; // Cave of Life - Horntail's Cave +var exitMap; + +function init() { + em.setProperty("shuffleReactors","false"); + trial1 = em.getChannelServer().getMapFactory().getMap(240060000); //Cave of Life - The Cave of Trial I + trial2 = em.getChannelServer().getMapFactory().getMap(240060100); // Cave of Life - The Cave of Trial II + fightMap = em.getChannelServer().getMapFactory().getMap(240060200); // Cave of Life - Horntail's Cave + exitMap = em.getChannelServer().getMapFactory().getMap(211042300); +} + + + + +function setup() { + var eim = em.newInstance("HorntailFight_" + em.getProperty("channel")); + var timer = 1000 * 60 * fightTime; + em.schedule("timeOut", eim, timer); + eim.startEventTimer(timer); + return eim; +} + +function playerEntry(eim,player) { + var map = eim.getMapInstance(trial1.getId()); + player.changeMap(map,map.getPortal(0)); + if (exitMap == null) + debug(eim,"The exit map was not properly linked."); +} + +function playerRevive(eim,player) { + player.setHp(500); + player.setStance(0); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + var party = eim.getPlayers(); + if (party.size() < minPlayers) + end(eim,"There are not enough players remaining, the Battle is over."); + return false; +} + +function playerDead(eim,player) { +} + +function playerDisconnected(eim,player) { + var party = eim.getPlayers(); + if (player.getName().equals(eim.getProperty("leader"))) { + // tell members + var iter = party.iterator(); + while (iter.hasNext()) + iter.next().getPlayer().dropMessage(6,"The leader of the instance has disconnected."); + } + // and, if the party is too small + if (party.size() < minPlayers) { + end(eim,"There are not enough players remaining. The Battle is over."); + } +} + +function monsterValue(eim, mobId) { + return 1; +} + +function leftParty(eim,player) { +} +function disbandParty(eim) { +} + +function playerExit(eim,player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap,exitMap.getPortal(0)); + if (eim.getPlayers().size() < minPlayers)//not enough after someone left + end(eim,"There are no longer enough players to continue, and those remaining shall be warped out."); +} + +function end(eim,msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + player.getPlayer().dropMessage(6,msg); + eim.unregisterPlayer(player); + if (player != null) + player.changeMap(exitMap, exitMap.getPortal(0)); + } + eim.dispose(); +} + +// for offline folk +function removePlayer(eim,player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) {} + +function finish(eim) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +} + +function cancelSchedule() { +} + +function timeOut() { +} + +function debug(eim,msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + iter.next().getClient().getSession().write(Packages.tools.MaplePacketCreator.serverNotice(6,msg)); + } +} \ No newline at end of file diff --git a/scripts/event/KerningPQ.js b/scripts/event/KerningPQ.js new file mode 100644 index 0000000000..983d06c218 --- /dev/null +++ b/scripts/event/KerningPQ.js @@ -0,0 +1,164 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* +INSERT monsterdrops (monsterid,itemid,chance) VALUES (9300001,4001007,5); +INSERT monsterdrops (monsterid,itemid,chance) VALUES (9300000,4001008,1); +INSERT monsterdrops (monsterid,itemid,chance) VALUES (9300002,4001008,1); +INSERT monsterdrops (monsterid,itemid,chance) VALUES (9300003,4001008,1); +*/ + +importPackage(Packages.world); +var exitMap; +var minPlayers = 3; + +function init() { // Initial loading. + exitMap = em.getChannelServer().getMapFactory().getMap(103000890); + em.setProperty("KPQOpen", "true"); // allows entrance. + em.setProperty("shuffleReactors", "true"); + instanceId = 1; +} + + + +function monsterValue(eim, mobId) { // Killed monster. + return 1; // returns an amount to add onto kill count. +} + +function setup() { // Invoked from "EventManager.startInstance()" + var eim = em.newInstance("KerningPQ"); // adds a new instance and returns EventInstanceManager. + var eventTime = 30 * (1000 * 60); // 30 mins. + var firstPortal = eim.getMapInstance(103000800).getPortal("next00"); + respawn(eim); + firstPortal.setScriptName("kpq0"); + em.schedule("timeOut", eim, eventTime); // invokes "timeOut" in how ever many seconds. + eim.startEventTimer(eventTime); // Sends a clock packet and tags a timer to the players. + return eim; // returns the new instance. +} + +function playerEntry(eim, player) { // this gets looped for every player in the party. + var map = eim.getMapInstance(103000800); + player.changeMap(map, map.getPortal(0)); // We're now in KPQ :D +} + +function playerDead(eim, player) { +} + +function playerRevive(eim, player) { // player presses ok on the death pop up. + if (eim.isLeader(player) || party.size() <= minPlayers) { // Check for party leader + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); + } else + playerExit(eim, player); +} + + +function respawn(eim) { + var map = eim.getMapInstance(103000800); + var map2 = eim.getMapInstance(103000805); + if (map.getSummonState()) { //Map spawns are set to true by default + map.instanceMapRespawn(); + } + if(map2.getSummonState()) { + map2.instanceMapRespawn(); + } + eim.schedule("respawn", 10000); +} + + + +function playerDisconnected(eim, player) { + var party = eim.getPlayers(); + if (eim.isLeader(player) || party.size() < minPlayers) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + if (party.get(i).equals(player)) + removePlayer(eim, player); + else + playerExit(eim, party.get(i)); + eim.dispose(); + } else + removePlayer(eim, player); +} + +function leftParty(eim, player) { + var party = eim.getPlayers(); + if (party.size() < minPlayers) { + for (var i = 0; i < party.size(); i++) + playerExit(eim,party.get(i)); + eim.dispose(); + } else + playerExit(eim, player); +} + +function disbandParty(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); +} + +function allMonstersDead(eim) { +} + +function cancelSchedule() { +} + +function dispose(eim) { + em.cancelSchedule(); + em.schedule("OpenKPQ", 10000); // 10 seconds ? +} + +function OpenKPQ() { + em.setProperty("KPQOpen", "true"); +} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) + playerExit(eim, pIter.next()); + } + eim.dispose(); + } +} \ No newline at end of file diff --git a/scripts/event/KerningTrain.js b/scripts/event/KerningTrain.js new file mode 100644 index 0000000000..30c0ff1207 --- /dev/null +++ b/scripts/event/KerningTrain.js @@ -0,0 +1,49 @@ +importPackage(Packages.tools); + +var returnTo = new Array(103000100, 103000310); +var rideTo = new Array(103000310, 103000100); +var trainRide = new Array(103000301, 103000302); +var myRide; +var returnMap; +var map; +var docked; +var timeOnRide = 10; //Seconds +var onRide; + +function init() { +} + +function setup() { + var eim = em.newInstance("KerningTrain_" + em.getProperty("player")); + return eim; +} + +function playerEntry(eim, player) { + if (player.getMapId() == returnTo[0]) { + myRide = 0; + } else { + myRide = 1; + } + docked = eim.getEm().getChannelServer().getMapFactory().getMap(rideTo[myRide]); + returnMap = eim.getMapFactory().getMap(returnTo[myRide]); + onRide = eim.getMapFactory().getMap(trainRide[myRide]); + player.changeMap(onRide, onRide.getPortal(0)); + player.getClient().getSession().write(MaplePacketCreator.getClock(timeOnRide)); + eim.schedule("timeOut", timeOnRide * 1000); +} + +function timeOut() { + onRide.warpEveryone(docked.getId()); +} + + + +function playerDisconnected(eim, player) { + return 0; +} + +function cancelSchedule() {} + +function dispose() { + em.cancelSchedule(); +} \ No newline at end of file diff --git a/scripts/event/LudiMazePQ.js b/scripts/event/LudiMazePQ.js new file mode 100644 index 0000000000..e43c458198 --- /dev/null +++ b/scripts/event/LudiMazePQ.js @@ -0,0 +1,152 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Raz + * + * Ludi Maze PQ + */ + +var exitMap; +var instanceId; +var finishMap; + +function init() { + instanceId = 1; + em.setProperty("shuffleReactors", "true"); +} + + + +function monsterValue(eim, mobId) { + return 1; +} + +function setup() { + exitMap = em.getChannelServer().getMapFactory().getMap(809050017); + finishMap = em.getChannelServer().getMapFactory().getMap(809050016); + var instanceName = "LudiMazePQ" + instanceId; + var eim = em.newInstance(instanceName); + var mf = eim.getMapFactory(); + instanceId++; + var eventTime = 15 * (1000 * 60); + em.schedule("timeOut", eim, eventTime); + eim.startEventTimer(eventTime); + return eim; +} + +function playerEntry(eim, player) { + var random = Math.floor((Math.random() * 16)); + var map = eim.getMapInstance(809050000 + random); + player.changeMap(map, map.getPortal(0)); + +} + +function playerDead(eim, player) { + if (player.isAlive()) { //don't trigger on death, trigger on manual revive + if (eim.isLeader(player)) { //check for party leader + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); + } + else + playerExit(eim, player); + } +} + +function playerDisconnected(eim, player) { + if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + if (party.get(i).equals(player)) + removePlayer(eim, player); + else + playerExit(eim, party.get(i)); + eim.dispose(); + } + else + removePlayer(eim, player); +} + +function leftParty(eim, player) { + playerExit(eim, player); +} + +function disbandParty(eim) { + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + + +function playerFinish(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(finishMap, finishMap.getPortal(0)); +} + +//for offline players +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerFinish(eim, party.get(i)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +//do nothing; LMPQ has nothing to do with monster killing +} + +function cancelSchedule() { +} + +function dispose(eim) { + +} +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) + playerExit(eim, pIter.next()); + } + eim.dispose(); + } +} + +function playerRevive(eim, player) { + +} \ No newline at end of file diff --git a/scripts/event/LudiPQ.js b/scripts/event/LudiPQ.js new file mode 100644 index 0000000000..2e598702d2 --- /dev/null +++ b/scripts/event/LudiPQ.js @@ -0,0 +1,190 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Raz + * + * Ludi Maze PQ + */ +var exitMap; +var instanceId; +var finishMap; +var bonusMap; +var bonusTime = 60;//1 Minute +var pqTime = 3600;//60 Minutes + +function init() { + instanceId = 1; + exitMap = em.getChannelServer().getMapFactory().getMap(922010000);//Exit +} + +function monsterValue(eim, mobId) { + return 1; +} + + + +function setup() { + var instanceName = "LudiPQ" + instanceId; + var eim = em.newInstance(instanceName); + var eventTime = 60 * (1000 * 60); // 60 mins. + instanceId++; + + em.schedule("timeOut", eim, eventTime); // invokes "timeOut" in how ever many seconds. + eim.startEventTimer(eventTime); // Sends a clock packet and tags a timer to the players. + //eim.schedule("respawn", 5000); + + var stage1Portal = eim.getMapInstance(922010100).getPortal("next00"); + stage1Portal.setScriptName("lpq1"); + var stage2Portal = eim.getMapInstance(922010200).getPortal("next00"); + stage2Portal.setScriptName("lpq2"); + var stage3Portal = eim.getMapInstance(922010300).getPortal("next00"); + stage3Portal.setScriptName("lpq3"); + var stage4Portal = eim.getMapInstance(922010400).getPortal("next00"); + stage4Portal.setScriptName("lpq4"); + var stage5Portal = eim.getMapInstance(922010500).getPortal("next00"); + stage5Portal.setScriptName("lpq5"); + var stage6Portal = eim.getMapInstance(922010600).getPortal("next00"); + stage6Portal.setScriptName("lpq6"); + var stage7Portal = eim.getMapInstance(922010700).getPortal("next00"); + stage7Portal.setScriptName("lpq7"); + var stage8Portal = eim.getMapInstance(922010800).getPortal("next00"); + stage8Portal.setScriptName("lpq8"); + return eim; +} + +function playerEntry(eim, player) { + var map0 = eim.getMapInstance(922010100); + player.changeMap(map0, map0.getPortal(0)); +} + +function playerDead(eim, player) { + if (player.isAlive()) { //don't trigger on death, trigger on manual revive + if (eim.isLeader(player)) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); + } + else + playerExit(eim, player); + } +} + +function playerDisconnected(eim, player) { + if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + if (party.get(i).equals(player)) + removePlayer(eim, player); + else + playerExit(eim, party.get(i)); + eim.dispose(); + } + else + removePlayer(eim, player); +} + +function leftParty(eim, player) { + playerExit(eim, player); +} + +function disbandParty(eim) { + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerExit(eim, party.get(i)); + eim.dispose(); +} + +function OpenLPQ() { + em.setProperty("LPQOpen", "true"); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + + +function playerFinish(eim, player) { + eim.unregisterPlayer(player); + var map = eim.getMapInstance(922011100); + player.changeMap(map, map.getPortal(0)); +} + +//for offline players +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + playerFinish(eim, party.get(i)); + eim.dispose(); +} + +function allMonstersDead(eim) { +} + +function dispose() { + em.schedule("OpenLPQ", 10000); // 10 seconds ? +} + +function cancelSchedule() { +} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) + playerExit(eim, pIter.next()); + } + eim.dispose(); + } +} + +function finishBonus(eim) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) + if(party.get(i).getMap().getId() == 922011000) + playerFinish(eim, party.get(i)); +} + +function startBonus(eim) { + var bonusMap = eim.getMapInstance(922011000); + var party = eim.getPlayers(); + + em.schedule("finishBonus", eim, 60000); // invokes "timeOut" in how ever many seconds. + eim.startEventTimer(60000); + + for (var i = 0; i < party.size(); i++) { + if(party.get(i).getMap().getId() == 922010900) { + party.get(i).changeMap(bonusMap, bonusMap.getPortal(0)); + } + } + +} diff --git a/scripts/event/OrbisPQ.js b/scripts/event/OrbisPQ.js new file mode 100644 index 0000000000..d5c57ce134 --- /dev/null +++ b/scripts/event/OrbisPQ.js @@ -0,0 +1,294 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + THIS FILE WAS MADE BY JVLAPLE. REMOVING THIS NOTICE MEANS YOU CAN'T USE THIS SCRIPT OR ANY OTHER SCRIPT PROVIDED BY JVLAPLE. + */ + +/* + * @Author Jvlaple + * + * Orbis Party Quest + */ + +importPackage(java.lang); +importPackage(Packages.world); +importPackage(Packages.client); +importPackage(Packages.server.maps); +importPackage(Packages.server.life); +importPackage(Packages.scripting.npc); + +var exitMap; +var instanceId; +var minPlayers = 1; + +function init() { + instanceId = 1; +} + + + +function monsterValue(eim, mobId) { + return 1; +} + +function setup() { + instanceId = em.getChannelServer().getInstanceId(); + exitMap = em.getChannelServer().getMapFactory().getMap(920011200); //Teh exit map :) <---------t + var instanceName = "OrbisPQ" + instanceId; + var eim = em.newInstance(instanceName); + var mf = eim.getMapFactory(); + em.getChannelServer().addInstanceId(); + var map = mf.getMap(920010000);//wutt + //map.shuffleReactors(); + // eim.addMapInstance(920010000,map); + //var firstPortal = eim.getMapInstance(920010000).getPortal("in00"); + //firstPortal.setScriptName("hontale_BtoB1"); + //Fuck this timer + //eim.setProperty("bulbWay", 0); + //Define all Maps and PortalScripts + var centerMap = eim.getMapInstance(920010100); + centerMap.getPortal(13).setScriptName("orbisPQSealedRoom"); + centerMap.getPortal(4).setScriptName("orbisPQWalkway"); + centerMap.getPortal(12).setScriptName("orbisPQStorage"); + centerMap.getPortal(5).setScriptName("orbisPQLobby"); + centerMap.getPortal(14).setScriptName("orbisPQOnTheWayUp"); + centerMap.getPortal(15).setScriptName("orbisPQLounge"); + centerMap.getPortal(16).setScriptName("orbisPQRoomOfDarkness"); + var walkwayMap = eim.getMapInstance(920010200); + var storageMap = eim.getMapInstance(920010300); + var lobbyMap = eim.getMapInstance(920010400); + var sealedRoomMap = eim.getMapInstance(920010500); + var loungeMap = eim.getMapInstance(920010600); + var onTheWayUpMap = eim.getMapInstance(920010700); + var bossMap = eim.getMapInstance(920010800); + var jailMap = eim.getMapInstance(920010900); + var roomOfDarknessMap = eim.getMapInstance(920011000); + var bonusMap = eim.getMapInstance(920011100); + var endMap = eim.getMapInstance(920011300); + walkwayMap.getPortal(13).setScriptName("orbisPQWalkwayExit"); + storageMap.getPortal(1).setScriptName("orbisPQStorageExit"); + lobbyMap.getPortal(8).setScriptName("orbisPQLobbyExit"); + sealedRoomMap.getPortal(3).setScriptName("orbisPQSRExit"); + loungeMap.getPortal(17).setScriptName("orbisPQLoungeExit"); + onTheWayUpMap.getPortal(23).setScriptName("orbisPQOnTheWayUpExit"); + bossMap.getPortal(1).setScriptName("orbisPQGardenExit"); + roomOfDarknessMap.getPortal(1).setScriptName("orbisPQRoomOfDarknessExit"); + //-->Fuck we are done with portals -.- + eim.setProperty("killedCellions", "0"); + eim.setProperty("papaSpawned", "no"); + em.schedule("timeOut", 60 * 60000); + em.schedule("broadcastClock", 1500); + eim.setProperty("entryTimestamp",System.currentTimeMillis() + (60 * 60000)); + + return eim; +} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(920010000); + player.changeMap(map, map.getPortal(0)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock((Long.parseLong(eim.getProperty("entryTimestamp")) - System.currentTimeMillis()) / 1000)); + var texttt = "Hi, my name is Eak, the Chamberlain of the Goddess. Don't be alarmed; you won't be able to see me right now. Back when the Goddess turned into a block of stone, I simultaneously lost my own power. If you gather up the power of the Magic Cloud of Orbis, however, then I'll be able to recover my body and re-transform back to my original self. Please collect #b20#k Magic Clouds and bring them back to me. Right now, you'll only see me as a tiny, flickering light." + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getNPCTalk(2013001, /*(byte)*/ 0, texttt, "00 00")); +//player.getClient().getSession().write(net.sf.odinms.scripting.npc.NPCScriptManager.dispose(eim.getClient())); +//THE CLOCK IS SHIT +//player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(1800)); +} + +function playerDead(eim, player) { +} + +function playerRevive(eim, player) { + if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); + } + else { //boot dead player + // If only 5 players are left, uncompletable: + var party = eim.getPlayers(); + if (party.size() <= minPlayers) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); + } +} + +function playerDisconnected(eim, player) { + if (eim.isLeader(player)) { //check for party leader + //PWN THE PARTY (KICK OUT) + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } + else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); + } + else { //KICK THE D/CED CUNT + // If only 5 players are left, uncompletable: + var party = eim.getPlayers(); + if (party.size() < minPlayers) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); + } +} + +function leftParty(eim, player) { + // If only 5 players are left, uncompletable: + var party = eim.getPlayers(); + if (party.size() <= minPlayers) { + for (var i = 0; i < party.size(); i++) { + playerExit(eim,party.get(i)); + } + eim.dispose(); + } + else + playerExit(eim, player); +} + +function disbandParty(eim) { + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.cancelAllBuffs(); //We don't want people going out with wonky blessing >=( + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +//Those offline cuntts +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + // W00t! Bonus!! + var iter = eim.getPlayers().iterator(); + var bonusMap = eim.getMapInstance(920011100); + while (iter.hasNext()) { + var player = iter.next(); + player.changeMap(bonusMap, bonusMap.getPortal(0)); + eim.setProperty("entryTimestamp",System.currentTimeMillis() + (1 * 60000)); + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock(60)); + } + eim.schedule("finish", 60000) +} + +function finish(eim) { + var dMap = eim.getMapInstance(920011300); + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + eim.unregisterPlayer(player); + player.changeMap(dMap, dMap.getPortal(0)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +//Open Portal? o.O +} + +function cancelSchedule() { +} + +function timeOut() { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerExit(eim, pIter.next()); + } + } + eim.dispose(); + } +} + +function playerClocks(eim, player) { + if (player.getMap().hasTimer() == false){ + player.getClient().getSession().write(net.sf.odinms.tools.MaplePacketCreator.getClock((Long.parseLong(eim.getProperty("entryTimestamp")) - System.currentTimeMillis()) / 1000)); + //player.getMap().setTimer(true); + } +} + +function playerTimer(eim, player) { + if (player.getMap().hasTimer() == false) { + player.getMap().setTimer(true); + } +} + +function broadcastClock(eim, player) { + //var party = eim.getPlayers(); + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerClocks(eim, pIter.next()); + } + } + //em.schedule("broadcastClock", 1600); + } + // for (var kkl = 0; kkl < party.size(); kkl++) { + // party.get(kkl).getMap().setTimer(true); + // } + var iterr = em.getInstances().iterator(); + while (iterr.hasNext()) { + var eim = iterr.next(); + if (eim.getPlayerCount() > 0) { + var pIterr = eim.getPlayers().iterator(); + while (pIterr.hasNext()) { + //playerClocks(eim, pIter.next()); + playerTimer(eim, pIterr.next()); + } + } + //em.schedule("broadcastClock", 1600); + } + em.schedule("broadcastClock", 1600); +} + +function dispose() { + +} \ No newline at end of file diff --git a/scripts/event/RockSpirit.js b/scripts/event/RockSpirit.js new file mode 100644 index 0000000000..8149ed17a0 --- /dev/null +++ b/scripts/event/RockSpirit.js @@ -0,0 +1,136 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +var exitMap; +var startMap; +var otherMap; +var minPlayers = 1; +var fightTime = 60; +var timer = 1000 * 60 * fightTime; + +function init() { + exitMap = em.getChannelServer().getMapFactory().getMap(103040400); + startMap = em.getChannelServer().getMapFactory().getMap(103040410); + otherMap = em.getChannelServer().getMapFactory().getMap(103040420); +} + +function setup() { + var eim = em.newInstance("RockSpirit_" + em.getProperty("player")); + respawn(eim); + eim.startEventTimer(timer); + return eim; +} + +function respawn(eim) { + var map = eim.getMapInstance(startMap.getId()); + var map2 = eim.getMapInstance(otherMap.getId()); + map.allowSummonState(true); + map2.allowSummonState(true); + map.instanceMapRespawn(); + map2.instanceMapRespawn(); + eim.schedule("respawn", 10000); +} + + +function playerEntry(eim, player) { + var amplifierMap = eim.getMapInstance(startMap.getId()); + player.changeMap(amplifierMap); + eim.schedule("timeOut", timer); +} + +function playerRevive(eim, player) { + player.setHp(50); + player.setStance(0); + eim.unregisterPlayer(player); + player.changeMap(exitMap); + return false; +} + +function playerDead(eim, player) {} + +function playerDisconnected(eim, player) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); +} + +function monsterValue(eim,mobId) { + return -1; +} + +function leftParty(eim, player) { + var party = eim.getPlayers(); + if (party.size() < minPlayers) { + for (var i = 0; i < party.size(); i++) + playerExit(eim,party.get(i)); + eim.dispose(); + } + else + playerExit(eim, player); +} + +function disbandParty(eim) {} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + + +function moveMap(eim, player) { + if (player.getMap().getId() == exitMap.getId()) { + removePlayer(eim, player); + player.getClient().getSession().write(MaplePacketCreator.removeClock()); + eim.dispose(); + } +} + +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function cancelSchedule() {} + +function dispose() {} + +function clearPQ(eim) {} + +function allMonstersDead(eim) {} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()){ + var player = pIter.next(); + playerExit(eim, player); + } + } + eim.dispose(); + } +} \ No newline at end of file diff --git a/scripts/event/ScargaBattle.js b/scripts/event/ScargaBattle.js new file mode 100644 index 0000000000..3a7c4ef2fe --- /dev/null +++ b/scripts/event/ScargaBattle.js @@ -0,0 +1,161 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author SharpAceX(Alan) + * Scarga Battle + */ + +var exitMap; +var battleMap; +var minPlayers = 1; +var fightTime = 60; + +function init() { + em.setProperty("shuffleReactors","false"); + exitMap = em.getChannelServer().getMapFactory().getMap(551030100); + battleMap = em.getChannelServer().getMapFactory().getMap(551030200); +} + +function setup() { + var eim = em.newInstance("ScargaBattle_" + em.getProperty("channel")); + var timer = 1000 * 60 * fightTime; + eim.setProperty("summoned", "false"); + em.schedule("timeOut", eim, timer); + eim.startEventTimer(timer); + return eim; +} + + + +function playerEntry(eim,player) { + var battle = eim.getMapInstance(battleMap.getId()); + player.changeMap(battle, battle.getPortal(0)); + + if (battle == null) + debug(eim, "The battle map was not properly linked."); +} + +function playerRevive(eim,player) { + player.setHp(500); + player.setStance(0); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + var exped = eim.getPlayers(); + if (exped.size() < minPlayers) + end(eim,"There are not enough players remaining, the battle is over."); + return false; +} + +function playerDead(eim,player) { +} + +function playerDisconnected(eim,player) { + var exped = eim.getPlayers(); + if (player.getName().equals(eim.getProperty("leader"))) { + var iter = exped.iterator(); + while (iter.hasNext()) { + iter.next().getPlayer().dropMessage(6, "The leader of the expedition has disconnected."); + } + } + //If the expedition is too small. + if (exped.size() < minPlayers) { + end(eim,"There are not enough players remaining. The Battle is over."); + } +} + +function monsterValue(eim,mobId) { // potentially display time of death? does not seem to work + return -1; +} + +function leftParty(eim,player) { +} + +function disbandParty(eim) { +} + +function playerExit(eim,player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + if (eim.getPlayers().size() < minPlayers) {//not enough after someone left + end(eim, "There are no longer enough players to continue, and those remaining shall be warped out."); + } +} + +function end(eim,msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + player.getPlayer().dropMessage(6,msg); + eim.unregisterPlayer(player); + if (player != null){ + player.changeMap(exitMap, exitMap.getPortal(0)); + } + } + eim.dispose(); +} + +function removePlayer(eim,player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { //When the hell does this get executed? + end(eim,"As the sound of battle fades away, you feel strangely unsatisfied."); +} + +function finish(eim) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +} + +function cancelSchedule() { +} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()){ + var player = pIter.next(); + player.dropMessage(6, "You have run out of time to defeat Scarlion and Targa!"); + playerExit(eim, player); + } + } + eim.dispose(); + } +} + +function debug(eim,msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + iter.next().getClient().getSession().write(Packages.tools.MaplePacketCreator.serverNotice(6,msg)); + } +} \ No newline at end of file diff --git a/scripts/event/Subway.js b/scripts/event/Subway.js new file mode 100644 index 0000000000..36b19ce4ba --- /dev/null +++ b/scripts/event/Subway.js @@ -0,0 +1,47 @@ +//Time Setting is in millisecond +var closeTime = 30 * 1000; //[30 seconds] The time to close the gate +var beginTime = 30 * 1000; //[30 seconds] The time to begin the ride +var rideTime = 30 * 1000; //[30 seconds] The time that require move to destination +var KC_Waiting; +var Subway_to_KC; +var KC_docked; +var NLC_Waiting; +var Subway_to_NLC; +var NLC_docked; + +function init() { + KC_Waiting = em.getChannelServer().getMapFactory().getMap(600010004); + NLC_Waiting = em.getChannelServer().getMapFactory().getMap(600010002); + Subway_to_KC = em.getChannelServer().getMapFactory().getMap(600010003); + Subway_to_NLC = em.getChannelServer().getMapFactory().getMap(600010005); + KC_docked = em.getChannelServer().getMapFactory().getMap(103000100); + NLC_docked = em.getChannelServer().getMapFactory().getMap(600010001); + scheduleNew(); +} + +function scheduleNew() { + em.setProperty("docked", "true"); + em.setProperty("entry", "true"); + em.schedule("stopEntry", closeTime); + em.schedule("takeoff", beginTime); +} + +function stopEntry() { + em.setProperty("entry","false"); +} + +function takeoff() { + em.setProperty("docked","false"); + KC_Waiting.warpEveryone(Subway_to_NLC.getId()); + NLC_Waiting.warpEveryone(Subway_to_KC.getId()); + em.schedule("arrived", rideTime); +} + +function arrived() { + Subway_to_KC.warpEveryone(KC_docked.getId()); + Subway_to_NLC.warpEveryone(NLC_docked.getId()); + scheduleNew(); +} + +function cancelSchedule() { +} diff --git a/scripts/event/Trains.js b/scripts/event/Trains.js new file mode 100644 index 0000000000..9790db5e42 --- /dev/null +++ b/scripts/event/Trains.js @@ -0,0 +1,64 @@ +importPackage(Packages.tools); + +var Orbis_btf; +var Train_to_Orbis; +var Orbis_docked; +var Ludibrium_btf; +var Train_to_Ludibrium; +var Ludibrium_docked; +var Orbis_Station; +var Ludibrium_Station; + +//Time Setting is in millisecond +var closeTime = 60 * 1000; //The time to close the gate +var beginTime = 60 * 1000; //The time to begin the ride +var rideTime = 60 * 1000; //The time that require move to destination + +function init() { + Orbis_btf = em.getChannelServer().getMapFactory().getMap(200000122); + Ludibrium_btf = em.getChannelServer().getMapFactory().getMap(220000111); + Train_to_Orbis = em.getChannelServer().getMapFactory().getMap(200090110); + Train_to_Ludibrium = em.getChannelServer().getMapFactory().getMap(200090100); + Orbis_docked = em.getChannelServer().getMapFactory().getMap(200000121); + Ludibrium_docked = em.getChannelServer().getMapFactory().getMap(220000110); + Orbis_Station = em.getChannelServer().getMapFactory().getMap(200000100); + Ludibrium_Station = em.getChannelServer().getMapFactory().getMap(220000100); + scheduleNew(); +} + +function scheduleNew() { + Ludibrium_docked.setDocked(true); + Orbis_docked.setDocked(true); + Ludibrium_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(true)); + em.setProperty("docked", "true"); + em.setProperty("entry", "true"); + em.schedule("stopEntry", closeTime); + em.schedule("takeoff", beginTime); +} + + + +function stopEntry() { + em.setProperty("entry","false"); +} + +function takeoff() { + Ludibrium_docked.setDocked(false); + Orbis_docked.setDocked(false); + Ludibrium_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + Orbis_docked.broadcastMessage(MaplePacketCreator.boatPacket(false)); + em.setProperty("docked","false"); + Orbis_btf.warpEveryone(Train_to_Ludibrium.getId()); + Ludibrium_btf.warpEveryone(Train_to_Orbis.getId()); + em.schedule("arrived", rideTime); +} + +function arrived() { + Train_to_Orbis.warpEveryone(Orbis_Station.getId()); + Train_to_Ludibrium.warpEveryone(Ludibrium_Station.getId()); + scheduleNew(); +} + +function cancelSchedule() { +} diff --git a/scripts/event/VIPRockSpirit.js b/scripts/event/VIPRockSpirit.js new file mode 100644 index 0000000000..6f35f68774 --- /dev/null +++ b/scripts/event/VIPRockSpirit.js @@ -0,0 +1,136 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +var exitMap; +var startMap; +var otherMap; +var minPlayers = 1; +var fightTime = 30; +var timer = 1000 * 60 * fightTime; + +function init() { + exitMap = em.getChannelServer().getMapFactory().getMap(103040400); + startMap = em.getChannelServer().getMapFactory().getMap(103040440); + otherMap = em.getChannelServer().getMapFactory().getMap(103040450); +} + +function setup() { + var eim = em.newInstance("VIPRockSpirit_" + em.getProperty("player")); + respawn(eim); + eim.startEventTimer(timer); + return eim; +} + +function respawn(eim) { + var map = eim.getMapInstance(startMap.getId()); + var map2 = eim.getMapInstance(otherMap.getId()); + map.allowSummonState(true); + map2.allowSummonState(true); + map.instanceMapRespawn(); + map2.instanceMapRespawn(); + eim.schedule("respawn", 10000); +} + + +function playerEntry(eim, player) { + var amplifierMap = eim.getMapInstance(startMap.getId()); + player.changeMap(amplifierMap); + eim.schedule("timeOut", timer); +} + +function playerRevive(eim, player) { + player.setHp(50); + player.setStance(0); + eim.unregisterPlayer(player); + player.changeMap(exitMap); + return false; +} + +function playerDead(eim, player) {} + +function playerDisconnected(eim, player) { + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); +} + +function monsterValue(eim,mobId) { + return -1; +} + +function leftParty(eim, player) { + var party = eim.getPlayers(); + if (party.size() < minPlayers) { + for (var i = 0; i < party.size(); i++) + playerExit(eim,party.get(i)); + eim.dispose(); + } + else + playerExit(eim, player); +} + +function disbandParty(eim) {} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + + +function moveMap(eim, player) { + if (player.getMap().getId() == exitMap.getId()) { + removePlayer(eim, player); + player.getClient().getSession().write(MaplePacketCreator.removeClock()); + eim.dispose(); + } +} + +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function cancelSchedule() {} + +function dispose() {} + +function clearPQ(eim) {} + +function allMonstersDead(eim) {} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()){ + var player = pIter.next(); + playerExit(eim, player); + } + } + eim.dispose(); + } +} \ No newline at end of file diff --git a/scripts/event/ZakumBattle.js b/scripts/event/ZakumBattle.js new file mode 100644 index 0000000000..cd0a9c296b --- /dev/null +++ b/scripts/event/ZakumBattle.js @@ -0,0 +1,193 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Stereo + * @Modified By XkelvinchiaX(Kelvin) + * @Modified By Moogra + * @Modified By SharpAceX(Alan) + * Zakum Battle + */ + +var exitMap; +var altarMap; +var minPlayers = 1; +var fightTime = 75; +var altarTime = 15; +var gate; + +function init() { + em.setProperty("shuffleReactors","false"); + exitMap = em.getChannelServer().getMapFactory().getMap(211042300); + altarMap = em.getChannelServer().getMapFactory().getMap(280030000);// Last Mission: Zakum's Altar + gate = exitMap.getReactorByName("gate"); + gate.setState(0);//Open gate +} + +function setup() { + var eim = em.newInstance("ZakumBattle_" + em.getProperty("channel")); + var timer = 1000 * 60 * fightTime; + eim.setProperty("summoned", "false"); + em.schedule("timeOut", eim, timer); + em.schedule("altarTimeOut", eim, 1000 * 60 * altarTime); + eim.startEventTimer(timer); + gate.setState(1);//Close gate + return eim; +} + + + +function playerEntry(eim,player) { + var altar = eim.getMapInstance(altarMap.getId()); + player.changeMap(altar, altar.getPortal(0)); + + player.dropMessage(5, "The Zakum Shrine will close if you do not summon Zakum in " + altarTime + " minutes."); + if (altarMap == null) + debug(eim, "The altar map was not properly linked."); +} + +function playerRevive(eim,player) { + player.setHp(500); + player.setStance(0); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + var exped = eim.getPlayers(); + if (exped.size() < minPlayers) + end(eim,"There are not enough players remaining, the Zakum battle is over."); + return false; +} + +function playerDead(eim,player) { +} + +function playerDisconnected(eim,player) { + var exped = eim.getPlayers(); + if (player.getName().equals(eim.getProperty("leader"))) { + var iter = exped.iterator(); + while (iter.hasNext()) { + iter.next().getPlayer().dropMessage(6, "The leader of the expedition has disconnected."); + } + } + //If the expedition is too small. + if (exped.size() < minPlayers) { + end(eim,"There are not enough players remaining. The Battle is over."); + } +} + +function monsterValue(eim,mobId) { // potentially display time of death? does not seem to work + if (mobId == 8800002) { // 3rd body + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + iter.next().dropMessage(6, "Congratulations on defeating Zakum!"); + } + } + return -1; +} + +function leftParty(eim,player) { // do nothing in Zakum +} + +function disbandParty(eim) { // do nothing in Zakum +} + +function playerExit(eim,player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + if (eim.getPlayers().size() < minPlayers) {//not enough after someone left + end(eim, "There are no longer enough players to continue, and those remaining shall be warped out."); + } +} + +function end(eim,msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + player.getPlayer().dropMessage(6,msg); + eim.unregisterPlayer(player); + if (player != null){ + player.changeMap(exitMap, exitMap.getPortal(0)); + } + } + gate.setState(0);//Open gate + eim.dispose(); +} + +function removePlayer(eim,player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { //When the hell does this get executed? + end(eim,"As the sound of battle fades away, you feel strangely unsatisfied."); + +} + +function finish(eim) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + var player = iter.next(); + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +} + +function cancelSchedule() { +} + +function altarTimeOut(eim) { + if (eim != null && eim.getProperty("summoned").equals("false")) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()){ + var player = pIter.next(); + player.dropMessage(6, "The Shrine has closed since you did not summon Zakum within " + altarTime + " minutes."); + playerExit(eim, player); + } + } + eim.dispose(); + } +} + +function timeOut(eim) { + if (eim != null) { + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()){ + var player = pIter.next(); + player.dropMessage(6, "You have run out of time to defeat Zakum!"); + playerExit(eim, player); + } + } + eim.dispose(); + } +} + +function debug(eim,msg) { + var iter = eim.getPlayers().iterator(); + while (iter.hasNext()) { + iter.next().getClient().getSession().write(Packages.tools.MaplePacketCreator.serverNotice(6,msg)); + } +} \ No newline at end of file diff --git a/scripts/event/ZakumPQ.js b/scripts/event/ZakumPQ.js new file mode 100644 index 0000000000..3f73024c87 --- /dev/null +++ b/scripts/event/ZakumPQ.js @@ -0,0 +1,161 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Lerk + * + * Zakum Party Quest + */ + +var exitMap; +var instanceId; + +function init() { + instanceId = 1; + em.setProperty("shuffleReactors","true"); +} + +function monsterValue(eim, mobId) { + return 1; +} + +function setup() { + exitMap = em.getChannelServer().getMapFactory().getMap(280090000); //room of tragedy + var instanceName = "ZakumPQ" + instanceId; + + //ZPQ maps, center area then 1-1 through 16-6 increasing gradually + //var instanceMaps = new Array(280010000, 280010010, 280010011, 280010020, 280010030, 280010031, 280010040, 280010041, 280010050, 280010060, + // 280010070, 280010071, 280010080, 280010081, 280010090, 280010091, 280010100, 280010101, 280010110, 280010120, 280010130, 280010140, + // 280010150, 280011000, 280011001, 280011002, 280011003, 280011004, 280011005, 280011006); + var eim = em.newInstance(instanceName); + + var mf = eim.getMapFactory(); + + instanceId++; + + var map = mf.getMap(280010000); + map.shuffleReactors(); + + //no time limit yet until clock can be visible in all maps + //em.schedule("timeOut", 30 * 60000); + + return eim; +} + +function playerEntry(eim, player) { + var map = eim.getMapInstance(280010000); + player.changeMap(map, map.getPortal(0)); + +//TODO: hold time across map changes +//player.getClient().getSession().write(tools.MaplePacketCreator.getClock(1800)); +} + +function playerRevive(eim, player) { + if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); + } + else { //boot dead player + playerExit(eim, player); + } + return false; // don't execute the standard reviving code +} + +function playerDead(eim, player) { +} + +function playerDisconnected(eim, player) { + if (eim.isLeader(player)) { //check for party leader + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).equals(player)) { + removePlayer(eim, player); + } + else { + playerExit(eim, party.get(i)); + } + } + eim.dispose(); + } + else { //boot d/ced player + removePlayer(eim, player); + } +} + +function leftParty(eim, player) { + playerExit(eim, player); +} + +function disbandParty(eim) { + //boot whole party and end + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function playerExit(eim, player) { + eim.unregisterPlayer(player); + player.changeMap(exitMap, exitMap.getPortal(0)); +} + +//for offline players +function removePlayer(eim, player) { + eim.unregisterPlayer(player); + player.getMap().removePlayer(player); + player.setMap(exitMap); +} + +function clearPQ(eim) { + //ZPQ does nothing special with winners + var party = eim.getPlayers(); + for (var i = 0; i < party.size(); i++) { + playerExit(eim, party.get(i)); + } + eim.dispose(); +} + +function allMonstersDead(eim) { +//do nothing; ZPQ has nothing to do with monster killing +} + +function cancelSchedule() { +} + +function timeOut() { + var iter = em.getInstances().iterator(); + while (iter.hasNext()) { + var eim = iter.next(); + if (eim.getPlayerCount() > 0) { + var pIter = eim.getPlayers().iterator(); + while (pIter.hasNext()) { + playerExit(eim, pIter.next()); + } + } + eim.dispose(); + } +} \ No newline at end of file diff --git a/scripts/event/elevator.js b/scripts/event/elevator.js new file mode 100644 index 0000000000..3bcc720390 --- /dev/null +++ b/scripts/event/elevator.js @@ -0,0 +1,77 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +*/ +function init() { + scheduleNew(); +} + +function scheduleNew() { + em.setProperty("goingUp", "false"); + em.setProperty("goingDown", "true"); + + em.getChannelServer().getMapFactory().getMap(222020100).resetReactors(); + em.getChannelServer().getMapFactory().getMap(222020200).setReactorState(); + em.schedule("goingUpNow", 50000); +} + +function goUp() { + em.schedule("goingUpNow", 50000); // might be 60 +} + +function goDown() { + em.schedule("goingDownNow", 50000); // might be 60 +} + +function goingUpNow() { + em.getChannelServer().getMapFactory().getMap(222020110).warpEveryone(222020111); + em.setProperty("goingUp", "true"); + em.schedule("isUpNow", 55000); + + em.getChannelServer().getMapFactory().getMap(222020100).setReactorState(); +} + +function goingDownNow() { + em.getChannelServer().getMapFactory().getMap(222020210).warpEveryone(222020211); + em.setProperty("goingDown", "true"); + em.schedule("isDownNow", 55000); + + em.getChannelServer().getMapFactory().getMap(222020200).setReactorState(); +} + +function isUpNow() { + em.setProperty("goingDown", "false"); // clear + em.getChannelServer().getMapFactory().getMap(222020200).resetReactors(); + em.getChannelServer().getMapFactory().getMap(222020111).warpEveryone(222020200); + + goDown(); +} + +function isDownNow() { + em.setProperty("goingUp", "false"); // clear + em.getChannelServer().getMapFactory().getMap(222020100).resetReactors(); + em.getChannelServer().getMapFactory().getMap(222020211).warpEveryone(222020100); + + goUp(); +} + +function cancelSchedule() { + +} \ No newline at end of file diff --git a/scripts/item/openTreasure.txt b/scripts/item/openTreasure.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scripts/map/onFirstUserEnter/dojang_Eff.js b/scripts/map/onFirstUserEnter/dojang_Eff.js new file mode 100644 index 0000000000..35ce7a3bee --- /dev/null +++ b/scripts/map/onFirstUserEnter/dojang_Eff.js @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: Moogra, Traitor + *@Map(s): All Dojo fighting maps + *@Function: Spawns dojo monsters and handles time +*/ + + +function start(ms) { + ms.getPlayer().resetEnteredScript(); + var stage = (ms.getPlayer().getMap().getId() / 100) % 100; + if (stage % 6 == 1) + ms.getPlayer().setDojoStart(); + if (ms.getPlayer().getMap().getCharacters().size() == 1) + ms.getPlayer().showDojoClock(); + if (stage % 6 > 0) { + var realstage = stage - ((stage / 6) | 0); + ms.dojoEnergy(); + var mob = ms.getMonsterLifeFactory(9300183 + realstage); + if (mob != null && ms.getPlayer().getMap().getMonsterById(9300183 + realstage) == null && ms.getPlayer().getMap().getMonsterById(9300216) == null) { + mob.setBoss(false); + ms.getPlayer().getMap().spawnDojoMonster(mob); + ms.playSound("Dojang/start"); + ms.showEffect("dojang/start/stage"); + ms.showEffect("dojang/start/number/" + realstage); + } + } +} \ No newline at end of file diff --git a/scripts/map/onFirstUserEnter/killing_BonusSetting.js b/scripts/map/onFirstUserEnter/killing_BonusSetting.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/scripts/map/onFirstUserEnter/killing_MapSetting.js b/scripts/map/onFirstUserEnter/killing_MapSetting.js new file mode 100644 index 0000000000..c45b9865ec --- /dev/null +++ b/scripts/map/onFirstUserEnter/killing_MapSetting.js @@ -0,0 +1,12 @@ +//importPackage(Packages.tools); + +function start(ms) { + //var pq = ms.getPyramid(); + //ms.getPlayer().resetEnteredScript(); + //ms.getClient().getSession().write(MaplePacketCreator.getClock(pq.timer())); +} +/* +killing/first/stage +killing/first/number/ +killing/first/start +*/ \ No newline at end of file diff --git a/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js b/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js new file mode 100644 index 0000000000..842f00ed6d --- /dev/null +++ b/scripts/map/onFirstUserEnter/spaceGaGa_sMap.js @@ -0,0 +1,5 @@ +function start(ms) { + ms.getPlayer().resetEnteredScript(); + ms.getPlayer().getMap().addMapTimer(180); + ms.spawnMonster(9300331, -28, 0); +} \ No newline at end of file diff --git a/scripts/map/onFirstUserEnter/spaceGaGa_start.js b/scripts/map/onFirstUserEnter/spaceGaGa_start.js new file mode 100644 index 0000000000..ce0beaf351 --- /dev/null +++ b/scripts/map/onFirstUserEnter/spaceGaGa_start.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: kevintjuh93 +*/ + +importPackage(Packages.tools); +var player; + +function start(ms) { + player = ms.getPlayer(); + player.resetEnteredScript(); + ms.getClient().getSession().write(MaplePacketCreator.showEffect("event/space/start")); + player.startMapEffect("Please rescue Gaga within the time limit.", 5120027); + var map = player.getMap(); + if (map.getTimeLeft() > 0) { + ms.getClient().getSession().write(MaplePacketCreator.getClock(map.getTimeLeft())); + } else { + map.addMapTimer(180); + } + ms.useItem(2360002);//HOORAY <3 +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/108010101.js b/scripts/map/onUserEnter/108010101.js new file mode 100644 index 0000000000..e0ce524e89 --- /dev/null +++ b/scripts/map/onUserEnter/108010101.js @@ -0,0 +1,23 @@ +importPackage(Packages.server.life); + +function start(ms) { + if(ms.getMapId() == 108010101) { // Archer + spawnMob(188, 20, 9001002, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010301) { // Warrior + spawnMob(188, 20, 9001000, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010201) { // Mage + spawnMob(188, 20, 9001001, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010401) { // Thief + spawnMob(188, 20, 9001003, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010501) { // Pirate + spawnMob(188, 20, 9001008, ms.getPlayer().getMap()); + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/108010201.js b/scripts/map/onUserEnter/108010201.js new file mode 100644 index 0000000000..e0ce524e89 --- /dev/null +++ b/scripts/map/onUserEnter/108010201.js @@ -0,0 +1,23 @@ +importPackage(Packages.server.life); + +function start(ms) { + if(ms.getMapId() == 108010101) { // Archer + spawnMob(188, 20, 9001002, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010301) { // Warrior + spawnMob(188, 20, 9001000, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010201) { // Mage + spawnMob(188, 20, 9001001, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010401) { // Thief + spawnMob(188, 20, 9001003, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010501) { // Pirate + spawnMob(188, 20, 9001008, ms.getPlayer().getMap()); + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/108010301.js b/scripts/map/onUserEnter/108010301.js new file mode 100644 index 0000000000..e0ce524e89 --- /dev/null +++ b/scripts/map/onUserEnter/108010301.js @@ -0,0 +1,23 @@ +importPackage(Packages.server.life); + +function start(ms) { + if(ms.getMapId() == 108010101) { // Archer + spawnMob(188, 20, 9001002, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010301) { // Warrior + spawnMob(188, 20, 9001000, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010201) { // Mage + spawnMob(188, 20, 9001001, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010401) { // Thief + spawnMob(188, 20, 9001003, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010501) { // Pirate + spawnMob(188, 20, 9001008, ms.getPlayer().getMap()); + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/108010401.js b/scripts/map/onUserEnter/108010401.js new file mode 100644 index 0000000000..e0ce524e89 --- /dev/null +++ b/scripts/map/onUserEnter/108010401.js @@ -0,0 +1,23 @@ +importPackage(Packages.server.life); + +function start(ms) { + if(ms.getMapId() == 108010101) { // Archer + spawnMob(188, 20, 9001002, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010301) { // Warrior + spawnMob(188, 20, 9001000, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010201) { // Mage + spawnMob(188, 20, 9001001, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010401) { // Thief + spawnMob(188, 20, 9001003, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010501) { // Pirate + spawnMob(188, 20, 9001008, ms.getPlayer().getMap()); + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/108010501.js b/scripts/map/onUserEnter/108010501.js new file mode 100644 index 0000000000..e0ce524e89 --- /dev/null +++ b/scripts/map/onUserEnter/108010501.js @@ -0,0 +1,23 @@ +importPackage(Packages.server.life); + +function start(ms) { + if(ms.getMapId() == 108010101) { // Archer + spawnMob(188, 20, 9001002, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010301) { // Warrior + spawnMob(188, 20, 9001000, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010201) { // Mage + spawnMob(188, 20, 9001001, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010401) { // Thief + spawnMob(188, 20, 9001003, ms.getPlayer().getMap()); + } else if(ms.getMapId() == 108010501) { // Pirate + spawnMob(188, 20, 9001008, ms.getPlayer().getMap()); + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/130030000.js b/scripts/map/onUserEnter/130030000.js new file mode 100644 index 0000000000..1d94337e2e --- /dev/null +++ b/scripts/map/onUserEnter/130030000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.getPlayer().updateQuestInfo(20010, "1"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/130030001.js b/scripts/map/onUserEnter/130030001.js new file mode 100644 index 0000000000..1d94337e2e --- /dev/null +++ b/scripts/map/onUserEnter/130030001.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.getPlayer().updateQuestInfo(20010, "1"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/677000009.js b/scripts/map/onUserEnter/677000009.js new file mode 100644 index 0000000000..d9110a8b05 --- /dev/null +++ b/scripts/map/onUserEnter/677000009.js @@ -0,0 +1,13 @@ +importPackage(Packages.server.life); + +function start(ms) { + spawnMob(251, -841, 9400613, ms.getPlayer().getMap()); +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/914000100.js b/scripts/map/onUserEnter/914000100.js new file mode 100644 index 0000000000..6ec1755650 --- /dev/null +++ b/scripts/map/onUserEnter/914000100.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.getPlayer().updateQuestInfo(21000, "1"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/922000000.js b/scripts/map/onUserEnter/922000000.js new file mode 100644 index 0000000000..bb0df498b1 --- /dev/null +++ b/scripts/map/onUserEnter/922000000.js @@ -0,0 +1,7 @@ +function start(pi) { + var map = pi.getClient().getChannelServer().getMapFactory().getMap(922000000); + map.resetReactors(); + map.shuffleReactors(); + + return(true); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Massacre_result.js b/scripts/map/onUserEnter/Massacre_result.js new file mode 100644 index 0000000000..a4e13fd5c7 --- /dev/null +++ b/scripts/map/onUserEnter/Massacre_result.js @@ -0,0 +1,6 @@ +function start(ms) { + var py = ms.getPyramid(); + if (py != null) { + py.sendScore(ms.getPlayer()); + } +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/PromiseDragon.js b/scripts/map/onUserEnter/PromiseDragon.js new file mode 100644 index 0000000000..3cc192ef6d --- /dev/null +++ b/scripts/map/onUserEnter/PromiseDragon.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.lockUI(); + ms.showIntro("Effect/Direction4.img/PromiseDragon/Scene" + ms.getPlayer().getGender()); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor10.js b/scripts/map/onUserEnter/Resi_tutor10.js new file mode 100644 index 0000000000..e44549d30f --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor10.js @@ -0,0 +1,3 @@ +function start(ms) { + ms.setStandAloneMode(true); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor20.js b/scripts/map/onUserEnter/Resi_tutor20.js new file mode 100644 index 0000000000..99f58bb3ce --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor20.js @@ -0,0 +1,3 @@ +function start(ms) { + ms.mapEffect("resistance/tutorialGuide"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor30.js b/scripts/map/onUserEnter/Resi_tutor30.js new file mode 100644 index 0000000000..3521a94cd9 --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor30.js @@ -0,0 +1,4 @@ +function start(ms) { + ms.updateAreaInfo(23007, "exp1=1;exp2=1;exp3=1;exp4=1");//force + ms.showInfo("Effect/OnUserEff.img/guideEffect/resistanceTutorial/userTalk"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor40.js b/scripts/map/onUserEnter/Resi_tutor40.js new file mode 100644 index 0000000000..a5bf05fc07 --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor40.js @@ -0,0 +1,3 @@ +function start(ms) { + ms.openNpc(2159012); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor50.js b/scripts/map/onUserEnter/Resi_tutor50.js new file mode 100644 index 0000000000..ffbba6cb30 --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor50.js @@ -0,0 +1,4 @@ +function start(ms) { + ms.setDirectionMode(false); + ms.openNpc(2159006); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor60.js b/scripts/map/onUserEnter/Resi_tutor60.js new file mode 100644 index 0000000000..49f5357198 --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor60.js @@ -0,0 +1,3 @@ +function start(ms) { + ms.openNpc(2159007); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor70.js b/scripts/map/onUserEnter/Resi_tutor70.js new file mode 100644 index 0000000000..35778c89f2 --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor70.js @@ -0,0 +1,4 @@ +function start(ms) { + ms.setDirectionMode(true); + ms.showIntro("Effect/Direction4.img/Resistance/TalkJ"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/Resi_tutor80.js b/scripts/map/onUserEnter/Resi_tutor80.js new file mode 100644 index 0000000000..b782725ba3 --- /dev/null +++ b/scripts/map/onUserEnter/Resi_tutor80.js @@ -0,0 +1,3 @@ +function start(ms) { + ms.setDirectionMode(false); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/aranDirection.js b/scripts/map/onUserEnter/aranDirection.js new file mode 100644 index 0000000000..21adf9749e --- /dev/null +++ b/scripts/map/onUserEnter/aranDirection.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.displayAranIntro(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/babyPigMap.js b/scripts/map/onUserEnter/babyPigMap.js new file mode 100644 index 0000000000..a9fe2589f0 --- /dev/null +++ b/scripts/map/onUserEnter/babyPigMap.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.unlockUI(); + ms.forceStartQuest(22015); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/cannon_tuto_01.js b/scripts/map/onUserEnter/cannon_tuto_01.js new file mode 100644 index 0000000000..45d9812e7e --- /dev/null +++ b/scripts/map/onUserEnter/cannon_tuto_01.js @@ -0,0 +1,6 @@ +function start(ms) { + ms.setDirection(0); + ms.setDirectionStatus(true); + ms.lockUI2(); + ms.startDirection("cannon_tuto_02"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/cannon_tuto_direction.js b/scripts/map/onUserEnter/cannon_tuto_direction.js new file mode 100644 index 0000000000..77eb54a363 --- /dev/null +++ b/scripts/map/onUserEnter/cannon_tuto_direction.js @@ -0,0 +1,5 @@ +function start(ms) { + ms.setDirectionStatus(true); + ms.showIntro("Effect/Direction4.img/cannonshooter/Scene00"); + ms.showIntro("Effect/Direction4.img/cannonshooter/out00"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/cannon_tuto_direction1.js b/scripts/map/onUserEnter/cannon_tuto_direction1.js new file mode 100644 index 0000000000..8e01100e84 --- /dev/null +++ b/scripts/map/onUserEnter/cannon_tuto_direction1.js @@ -0,0 +1,6 @@ +function start(ms) { + ms.playSound("cannonshooter/flying"); + ms.sendDirectionInfo("Effect/Direction4.img/effect/cannonshooter/balloon/0", 9000, 0, 0, 0, -1); + ms.sendDirectionInfo(1, 1500); + ms.setDirectionStatus(true); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/cannon_tuto_direction2.js b/scripts/map/onUserEnter/cannon_tuto_direction2.js new file mode 100644 index 0000000000..fb5bfb0b35 --- /dev/null +++ b/scripts/map/onUserEnter/cannon_tuto_direction2.js @@ -0,0 +1,6 @@ +function start(ms) { + ms.playSound("cannonshooter/bang"); + ms.setDirectionStatus(true); + ms.showIntro("Effect/Direction4.img/cannonshooter/Scene01"); + ms.showIntro("Effect/Direction4.img/cannonshooter/out02"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/crash_Dragon.js b/scripts/map/onUserEnter/crash_Dragon.js new file mode 100644 index 0000000000..7e2cdbaa98 --- /dev/null +++ b/scripts/map/onUserEnter/crash_Dragon.js @@ -0,0 +1,4 @@ +function start(ms) { + ms.lockUI(); + ms.showIntro("Effect/Direction4.img/crash/Scene" + ms.getPlayer().getGender()); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/dojang_1st.js b/scripts/map/onUserEnter/dojang_1st.js new file mode 100644 index 0000000000..75249a6ac7 --- /dev/null +++ b/scripts/map/onUserEnter/dojang_1st.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author Traitor + */ +function start(ms) { + +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/dojang_Msg.js b/scripts/map/onUserEnter/dojang_Msg.js new file mode 100644 index 0000000000..63f5220364 --- /dev/null +++ b/scripts/map/onUserEnter/dojang_Msg.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: Traitor + Map(s): Mu Lung Dojo Entrance + Desc: Sends the entrance message or the taunt message from that dojo guy +*/ +var messages = Array("Your courage for challenging the Mu Lung Dojo is commendable!", "If you want to taste the bitterness of defeat, come on in!", "I will make you thoroughly regret challenging the Mu Lung Dojo! Hurry up!"); + +function start(ms) { + if (ms.getPlayer().getMap().getId() == 925020000) { + ms.getPlayer().startMapEffect(messages[(Math.random() * messages.length) | 0], 5120024); + } else { + ms.getPlayer().resetEnteredScript(); //in case the person dcs in here we set it at dojang_tuto portal + ms.getPlayer().startMapEffect("Ha! Let's see what you got! I won't let you leave unless you defeat me first!", 5120024); + } +} diff --git a/scripts/map/onUserEnter/evanleaveD.js b/scripts/map/onUserEnter/evanleaveD.js new file mode 100644 index 0000000000..23bd437737 --- /dev/null +++ b/scripts/map/onUserEnter/evanleaveD.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.unlockUI(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/explorationPoint.js b/scripts/map/onUserEnter/explorationPoint.js new file mode 100644 index 0000000000..dff5e178ee --- /dev/null +++ b/scripts/map/onUserEnter/explorationPoint.js @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* + * Author: kevintjuh93 + * +*/ +function start(ms) { + if (ms.getPlayer().getMapId() == 110000000 || (ms.getPlayer().getMapId() >= 100000000 && ms.getPlayer().getMapId() < 105040300)) { + ms.explorerQuest(29005, "Beginner Explorer");//Beginner Explorer + } else if (ms.getPlayer().getMapId() >= 105040300 && ms.getPlayer().getMapId() <= 105090900) { + ms.explorerQuest(29014, "Sleepywood Explorer");//Sleepywood Explorer + } else if (ms.getPlayer().getMapId() >= 200000000 && ms.getPlayer().getMapId() <= 211041800) { + ms.explorerQuest(29006, "El Nath Mts. Explorer");//El Nath Mts. Explorer + } else if (ms.getPlayer().getMapId() >= 220000000 && ms.getPlayer().getMapId() <= 222010400) { + ms.explorerQuest(29007, "Ludus Lake Explorer");//Ludus Lake Explorer + } else if (ms.getPlayer().getMapId() >= 230000000 && ms.getPlayer().getMapId() <= 230040401) { + ms.explorerQuest(29008, "Undersea Explorer");//Undersea Explorer + } else if (ms.getPlayer().getMapId() >= 250000000 && ms.getPlayer().getMapId() <= 251010500) { + ms.explorerQuest(29009, "Mu Lung Explorer");//Mu Lung Explorer + } else if (ms.getPlayer().getMapId() >= 260000000 && ms.getPlayer().getMapId() <= 261030000) { + ms.explorerQuest(29010, "Nihal Desert Explorer");//Nihal Desert Explorer + } else if (ms.getPlayer().getMapId() >= 240000000 && ms.getPlayer().getMapId() <= 240050000) { + ms.explorerQuest(29011, "Minar Forest Explorer");//Minar Forest Explorer + } + if (ms.getPlayer().getMapId() == 104000000) { + ms.mapEffect("maplemap/enter/104000000"); + } +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/getDragonEgg.js b/scripts/map/onUserEnter/getDragonEgg.js new file mode 100644 index 0000000000..811bf7e3c5 --- /dev/null +++ b/scripts/map/onUserEnter/getDragonEgg.js @@ -0,0 +1,4 @@ +function start(ms) { + ms.lockUI(); + ms.showIntro("Effect/Direction4.img/getDragonEgg/Scene" + ms.getPlayer().getGender()); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go10000.js b/scripts/map/onUserEnter/go10000.js new file mode 100644 index 0000000000..f037740d12 --- /dev/null +++ b/scripts/map/onUserEnter/go10000.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.unlockUI(); + ms.mapEffect("maplemap/enter/10000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go1000000.js b/scripts/map/onUserEnter/go1000000.js new file mode 100644 index 0000000000..fdd0147424 --- /dev/null +++ b/scripts/map/onUserEnter/go1000000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/1000000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go1010000.js b/scripts/map/onUserEnter/go1010000.js new file mode 100644 index 0000000000..a22d6db406 --- /dev/null +++ b/scripts/map/onUserEnter/go1010000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/1010000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go1010100.js b/scripts/map/onUserEnter/go1010100.js new file mode 100644 index 0000000000..4b0977dbe7 --- /dev/null +++ b/scripts/map/onUserEnter/go1010100.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/1010100"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go1010200.js b/scripts/map/onUserEnter/go1010200.js new file mode 100644 index 0000000000..9f0379153f --- /dev/null +++ b/scripts/map/onUserEnter/go1010200.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/1010200"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go1010300.js b/scripts/map/onUserEnter/go1010300.js new file mode 100644 index 0000000000..17c039999a --- /dev/null +++ b/scripts/map/onUserEnter/go1010300.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/1010300"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go1020000.js b/scripts/map/onUserEnter/go1020000.js new file mode 100644 index 0000000000..fbca232adc --- /dev/null +++ b/scripts/map/onUserEnter/go1020000.js @@ -0,0 +1,4 @@ +function start(ms) { + ms.unlockUI(); + ms.mapEffect("maplemap/enter/1020000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go20000.js b/scripts/map/onUserEnter/go20000.js new file mode 100644 index 0000000000..deb385cb38 --- /dev/null +++ b/scripts/map/onUserEnter/go20000.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.unlockUI(); + ms.mapEffect("maplemap/enter/20000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go30000.js b/scripts/map/onUserEnter/go30000.js new file mode 100644 index 0000000000..1057a9cdaa --- /dev/null +++ b/scripts/map/onUserEnter/go30000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/30000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go40000.js b/scripts/map/onUserEnter/go40000.js new file mode 100644 index 0000000000..fc7cd03ab8 --- /dev/null +++ b/scripts/map/onUserEnter/go40000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/40000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/go50000.js b/scripts/map/onUserEnter/go50000.js new file mode 100644 index 0000000000..8990fbd438 --- /dev/null +++ b/scripts/map/onUserEnter/go50000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.mapEffect("maplemap/enter/50000"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goAdventure.js b/scripts/map/onUserEnter/goAdventure.js new file mode 100644 index 0000000000..d6b453e409 --- /dev/null +++ b/scripts/map/onUserEnter/goAdventure.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.goAdventure(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goArcher.js b/scripts/map/onUserEnter/goArcher.js new file mode 100644 index 0000000000..1fd357c5e0 --- /dev/null +++ b/scripts/map/onUserEnter/goArcher.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.startExplorerExperience(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goLith.js b/scripts/map/onUserEnter/goLith.js new file mode 100644 index 0000000000..86da296ac2 --- /dev/null +++ b/scripts/map/onUserEnter/goLith.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.goLith(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goMagician.js b/scripts/map/onUserEnter/goMagician.js new file mode 100644 index 0000000000..1fd357c5e0 --- /dev/null +++ b/scripts/map/onUserEnter/goMagician.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.startExplorerExperience(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goPirate.js b/scripts/map/onUserEnter/goPirate.js new file mode 100644 index 0000000000..1fd357c5e0 --- /dev/null +++ b/scripts/map/onUserEnter/goPirate.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.startExplorerExperience(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goRogue.js b/scripts/map/onUserEnter/goRogue.js new file mode 100644 index 0000000000..1fd357c5e0 --- /dev/null +++ b/scripts/map/onUserEnter/goRogue.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.startExplorerExperience(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/goSwordman.js b/scripts/map/onUserEnter/goSwordman.js new file mode 100644 index 0000000000..1fd357c5e0 --- /dev/null +++ b/scripts/map/onUserEnter/goSwordman.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.startExplorerExperience(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/iceCave.js b/scripts/map/onUserEnter/iceCave.js new file mode 100644 index 0000000000..a0fe03be6e --- /dev/null +++ b/scripts/map/onUserEnter/iceCave.js @@ -0,0 +1,9 @@ +function start(ms) { + ms.teachSkill(20000014, -1, 0, -1); + ms.teachSkill(20000015, -1, 0, -1); + ms.teachSkill(20000016, -1, 0, -1); + ms.teachSkill(20000017, -1, 0, -1); + ms.teachSkill(20000018, -1, 0, -1); + ms.unlockUI(); + ms.showIntro("Effect/Direction1.img/aranTutorial/ClickLilin"); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/meetWithDragon.js b/scripts/map/onUserEnter/meetWithDragon.js new file mode 100644 index 0000000000..d89b740ea8 --- /dev/null +++ b/scripts/map/onUserEnter/meetWithDragon.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start(ms) { + ms.lockUI(); + ms.showIntro("Effect/Direction4.img/meetWithDragon/Scene" + ms.getPlayer().getGender()); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/rien.js b/scripts/map/onUserEnter/rien.js new file mode 100644 index 0000000000..0b420b7576 --- /dev/null +++ b/scripts/map/onUserEnter/rien.js @@ -0,0 +1,6 @@ +function start(ms) { + if (ms.isQuestCompleted(21101) && ms.containsAreaInfo(21019, "miss=o;arr=o;helper=clear")) { + ms.updateAreaInfo(21019, "miss=o;arr=o;ck=1;helper=clear"); + } + ms.unlockUI(); +} \ No newline at end of file diff --git a/scripts/map/onUserEnter/rienArrow.js b/scripts/map/onUserEnter/rienArrow.js new file mode 100644 index 0000000000..1a9bc01d74 --- /dev/null +++ b/scripts/map/onUserEnter/rienArrow.js @@ -0,0 +1,6 @@ +function start(ms) { + if (ms.containsAreaInfo(21019, "miss=o;helper=clear")) { + ms.updateAreaInfo(21019, "miss=o;arr=o;helper=clear"); + ms.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3"); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1002000.js b/scripts/npc/world0/1002000.js new file mode 100644 index 0000000000..cc57a4e692 --- /dev/null +++ b/scripts/npc/world0/1002000.js @@ -0,0 +1,57 @@ +var status = 0; +var maps = [102000000, 100000000, 101000000, 103000000, 120000000]; +var cost = [1000, 1000, 800, 1000, 800]; +var townText = [["The town you are at is Lith Harbor! Alright I'll explain to you more about #bLith Harbor#k. It's the place you landed on Victoria Island by riding The Victoria. That's Lith Harbor. A lot of beginners who just got here from Maple Island start their journey here.", "It's a quiet town with the wide body of water on the back of it, thanks to the fact that the harbot is located at the west end of the island. Most of the people here are, or used to be fisherman, so they may look intimidating, but if you strike up a conversation with them, they'll be friendly to you.", "Around town lies a beautiful prairie. Most of the monsters there are small and gentle, perfect for beginners. If you haven't chosen your job yet, this is a good place to boost up your level."],["Alright I'll explain to you more about #bPerion#k. It's a warrior-town located at the northern-most part of Victoria Island, surrounded by rocky mountains. With an unfriendly atmosphere, only the strong survives there.", "Around the highland you'll find a really skinny tree, a wild hog running around the place, and monkeys that live all over the island. There's also a deep valley, and when you go deep into it, you'll find a humongous dragon with the power to match his size. Better go in there very carefully, or don't go at all.", "If you want to be a #bWarrior#k then find #rDances with Balrog#k, the chief of Perion. If you're level 10 or higher, along with a good STR level, he may make you a warrior after all. If not, better keep training yourself until you reach that level."], ["Alright I'll explain to you more about #bEllinia#k. It's a magician-town located at the far east of Victoria Island, and covered in tall, mystic trees. You'll find some fairies there, too. They don't like humans in general so it'll be best for you to be on their good side and stay quiet.", "Near the forest you'll find green slimes, walking mushrooms, monkeys and zombie monkeys all residing there. Walk deeper into the forest and you'll find witches with the flying broomstick navigating the skies. A word of warning: Unless you are really strong, I recommend you don't go near them.", "If you want to be a #bMagician#k, search for #rGrendel the Really Old#k, the head wizard of Ellinia. He may make you a wizard if you're at or above level 8 with a decent amount of INT. If that's not the case, you may have to hunt more and train yourself to get there."], ["Alright I'll explain to you more about #bHenesys#k. It's a bowman-town located at the southernmost part of the island, made on a flatland in the midst of a deep forest and prairies. The weather's just right, and everything is plentiful around that town, perfect for living. Go check it out.", "Around the prairie you'll find weak monsters such as snails, mushrooms, and pigs. According to what I hear, though, in the deepest part of the Pig Park, which is connected to the town somewhere, you'll find a humongous, powerful mushroom called Mushmom every now and then.", "If you want to be a #bBowman#k, you need to go see #rAthena Pierce#k at Henesys. With a level at or above 10 and a decent amount of DEX, she may make you be one afterall. If not, go train yourself, make yourself stronger, then try again."], ["Alright I'll explain to you more about #bKerning City#k. It's a thief-town located at the northwest part of Victoria Island, and there are buildings up there that have just this strange feeling around them. It's mostly covered in black clouds, but if you can go up to a really high place, you'll be able to see a very beautiful sunset there.", "From Kerning City, you can go into several dungeons. You can go to a swamp where alligators and snakes are abound, or hit the subway full of ghosts and bats. At the deepest part of the underground, you'll find Lace, who is just as big and dangerous as a dragon.", "If you want to be a #bThief#k, seek #rDark Lord#k, the heart of darkness of Kerning City. He may well make you a thief if you're at or above level 10 with a good amount of DEX. If not, go hunt and train yourself to reach there."], ["Here's a little information on #b#m120000000##k. It's a submarine that's currently parked in between Ellinia and Henesys in Victoria Island. That submarine serves as home to numerous pirates. You can have just as beautiful a view of the ocean there as you do here in Lith Harbor.", "#m120000000# is parked in between Henesys and Ellinia, so if you step out just a bit, you'll be able to enjoy the view of both towns. All the pirates you'll meet in town are very gregarious and friendly as well.", "If you are serious about becoming a #bPirate#k, then you better meet the captain of #m120000000#, #r#p1090000##k. If you are over Level 10 with 20 DEX, then she may let you become one. If you aren't up to that level, then you'll need to train harder to get there!"], ["Alright I'll explain to you more about #bSleepywood#k. It's a forest town located at the southeast side of Victoria Island. It's pretty much in between Henesys and the ant-tunnel dungeon. There's a hotel there, so you can rest up after a long day at the dungeon ... it's a quiet town in general.", "In front of the hotel there's an old buddhist monk by the name of #rChrishrama#k. Nobody knows a thing about that monk. Apparently he collects materials from the travelers and create something, but I am not too sure about the details. If you have any business going around that area, please check that out for me.", "From Sleepywood, head east and you'll find the ant tunnel connected to the deepest part of the Victoria Island. Lots of nasty, powerful monsters abound so if you walk in thinking it's a walk in the park, you'll be coming out as a corpse. You need to fully prepare yourself for a rough ride before going in.", "And this is what I hear ... apparently, at Sleepywood there's a secret entrance leading you to an unknown place. Apparently, once you move in deep, you'll find a stack of black rocks that actually move around. I want to see that for myself in the near future ..."]]; +var selectedMap = -1; +var town = false; + +function start() { + cm.sendNext("Do you wanna head over to some other town? With a little money involved, I can make it happen. It's a tad expensive, but I run a special 90% discount for beginners."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if((mode == 0 && !town) || mode == -1){ + if(type == 1 && mode != -1) + cm.sendNext("There's a lot to see in this town, too. Let me know if you want to go somewhere else."); + cm.dispose(); + return; + }else + status -= 2; + } + if (status == 1) + cm.sendSimple("It's understandable that you may be confused about this place if this is your first time around. If you got any questions about this place, fire away.\r\n#L0##bWhat kind of towns are here in Victoria Island?#l\r\n#L1#Please take me somewhere else.#k#l"); + else if (status == 2){ + if (selection == 0){ + town = true; + var text = "There are 7 big towns here in Victoria Island. Which of those do you want to know more of?#b"; + for(var i = 0; i < maps.length; i++) + text += "\r\n#L" + i + "##m" + maps[i] + "##l"; + cm.sendSimple(text); + }else if (selection == 1) { + var selStr = cm.getJobId() == 0 ? "There's a special 90% discount for all beginners. Alright, where would you want to go?#b" : "Oh you aren't a beginner, huh? Then I'm afraid I may have to charge you full price. Where would you like to go?#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cost[i] / (cm.getJobId() == 0 ? 10 : 1)) + " mesos)#l"; + cm.sendSimple(selStr); + } + } else if (town){ + if (selectedMap == -1) + selectedMap = selection; + if(status == 3) + cm.sendNext(townText[selectedMap][status-3]); + else + townText[selectedMap][status-3] == undefined ? cm.dispose() : cm.sendNextPrev(townText[selectedMap][status-3]); + }else if(status == 3){ + selectedMap = selection; + cm.sendYesNo("I guess you don't need to be here. Do you really want to move to #b#m" + maps[selection] + "##k? Well it'll cost you #b" + (cost[selection] / (cm.getJobId() == 0 ? 10 : 1)) + " mesos#k. What do you think?"); + }else if (status == 4) { + if (cm.getMeso() < (cost[selectedMap] / (cm.getJobId() == 0 ? 10 : 1))) + cm.sendNext("You don't have enough mesos. With your abilities, you should have more than that!"); + else { + cm.gainMeso(-(cost[selectedMap] / (cm.getJobId() == 0 ? 10 : 1))); + cm.warp(maps[selectedMap]); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1002002.js b/scripts/npc/world0/1002002.js new file mode 100644 index 0000000000..098ecf5f7c --- /dev/null +++ b/scripts/npc/world0/1002002.js @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* Author: Xterminator + NPC Name: Pison + Map(s): Victoria Road : Lith Harbor (104000000) + Description: Florina Beach Tour Guide + */ +var status = 0; + +function start() { + cm.sendSimple("Have you heard of the beach with a spectacular view of the ocean called #bFlorina Beach#k, located near Lith Harbor? I can take you there right now for either #b1500 mesos#k, or if you have a #bVIP Ticket to Florina Beach#k with you, in which case you'll be there for free.\r\n\r\n#L0##b I'll pay 1500 mesos.#l\r\n#L1# I have a VIP Ticket to Florina Beach.#l\r\n#L2# What is a VIP Ticket to Florina Beach#k?#l"); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) + if((mode == 0 && type == 1) || mode == -1 || (mode == 0 && status == 1)){ + if(type == 1) + cm.sendNext("You must have some business to take care of here. You must be tired from all that traveling and hunting. Go take some rest, and if you feel like changing your mind, then come talk to me."); + cm.dispose(); + return; + } else + status -= 2; + if (selection == 0) + status++; + if(status == 1){ + if(selection == 1) + cm.sendYesNo("So you have a #bVIP Ticket to Florina Beach#k? You can always head over to Florina Beach with that. Alright then, but just be aware that you may be running into some monsters there too. Okay, would you like to head over to Florina Beach right now?"); + else if (selection == 2) + cm.sendNext("You must be curious about a #bVIP Ticket to Florina Beach#k. Haha, that's very understandable. A VIP Ticket to Florina Beach is an item where as long as you have in possession, you may make your way to Florina Beach for free. It's such a rare item that even we had to buy those, but unfortunately I lost mine a few weeks ago during my precious summer break."); + } else if (status == 2){ + if(type != 1 && selection != 0) { + cm.sendNextPrev("I came back without it, and it just feels awful not having it. Hopefully someone picked it up and put it somewhere safe. Anyway, this is my story and who knows, you may be able to pick it up and put it to good use. If you have any questions, feel free to ask."); + cm.dispose(); + } else{ + if (cm.getMeso() < 1500 && selection == 0) + cm.sendNext("I think you're lacking mesos. There are many ways to gather up some money, you know, like... selling your armor... defeating monsters... doing quests... you know what I'm talking about."); + else if(!cm.haveItem(4031134) && selection != 0){ + cm.sendNext("Hmmm, so where exactly is your #bVIP Ticket to Florina\r\nBeach#k? Are you sure you have one? Please double-check."); + }else{ + if(selection == 0) + cm.gainMeso(-1500); + cm.getPlayer().saveLocation("FLORINA"); + cm.warp(110000000); + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1002003.js b/scripts/npc/world0/1002003.js new file mode 100644 index 0000000000..926a5fa3f8 --- /dev/null +++ b/scripts/npc/world0/1002003.js @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Mr. Goldstein + Map(s): Victoria Road : Lith Harbour (104000000) + Description: Extends Buddy List +*/ +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 0 && mode == 0) { + cm.sendNext("I see... you don't have as many friends as I thought you would. Hahaha, just kidding! Anyway if you feel like changing your mind, please feel free to come back and we'll talk business. If you make a lot of friends, then you know ... hehe ..."); + cm.dispose(); + return; + } else if (status >= 1 && mode == 0) { + cm.sendNext("I see... I don't think you don't have as many friends as I thought you would. If not, you just don't have 240,000 mesos with you right this minute? Anyway, if you ever change your mind, come back and we'll talk business. That is, of course, once you have get some financial relief. .. hehe ..."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendYesNo("I hope I can make as much as yesterday... well, hello! Don't you want to extend your buddy list? You look like someone who'd have a whole lot of friends... well, what do you think? With some money I can make it happen for you. Remember, though, it only applies to one character at a time, so it won't affect any of your other characters on your account. Do you want to extend your buddy list?"); + } else if (status == 1) { + cm.sendYesNo("Alright, good call! It's not that expensive actually. #b240,000 mesos and I'll add 5 more slots to your buddy list#k. And no, I won't be selling them individually. Once you buy it, it's going to be permanently on your buddy list. So if you're one of those that needs more space there, then you might as well do it. What do you think? Will you spend 240,000 mesos for it?"); + } else if (status == 2) { + var capacity = cm.getPlayer().getBuddylist().getCapacity(); + if (capacity >= 50 || cm.getMeso() < 240000){ + cm.sendNext("Hey... are you sure you have #b240,000 mesos#k? If so, then check and see if you have extended your buddy list to the max. Even if you pay up, the most you can have on your buddy list is #b50#k."); + cm.dispose(); + } else { + var newcapacity = capacity + 5; + cm.gainMeso(-240000); + cm.getPlayer().setBuddyCapacity(newcapacity) + cm.sendOk("Alright! Your buddy list will have 5 extra slots by now. Check and see for it yourself. And if you still need more room on your buddy list, you know who to find. Of course, it isn't going to be for free ... well, so long ..."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1002004.js b/scripts/npc/world0/1002004.js new file mode 100644 index 0000000000..6c93bf04c2 --- /dev/null +++ b/scripts/npc/world0/1002004.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + VIP Cab - Victoria Road : Lith Harbor (104000000) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var cost = 10000; + +function start() { + cm.sendNext("Hi there! This cab is for VIP customers only. Instead of just taking you to different towns like the regular cabs, we offer a much better service worthy of VIP class. It's a bit pricey, but... for only 10,000 mesos, we'll take you safely to the \r\n#bAnt Tunnel#k."); +} + +function action(mode, type, selection) { + status++; + if (mode == -1){ + if(mode == 0) + cm.sendNext("This town also has a lot to offer. Find us if and when you feel the need to go to the Ant Tunnel Park."); + cm.dispose(); + return; + } + if (status == 1) { + cm.sendYesNo(cm.getJobId() == 0 ? "We have a special 90% discount for beginners. The Ant Tunnel is located deep inside in the dungeon that's placed at the center of the Victoria Island, where the 24 Hr Mobile Store is. Would you like to go there for #b1,000 mesos#k?" : "The regular fee applies for all non-beginners. The Ant Tunnel is located deep inside in the dungeon that's placed at the center of the Victoria Island, where 24 Hr Mobile Store is. Would you like to go there for #b10,000 mesos#k?"); + cost *= cm.getJobId() == 0 ? 10 : 1; + } else if (status == 2) { + if (cm.getMeso() < cost) + cm.sendNext("It looks like you don't have enough mesos. Sorry but you won't be able to use this without it.") + else { + cm.gainMeso(-cost); + cm.warp(105070001); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1002005.js b/scripts/npc/world0/1002005.js new file mode 100644 index 0000000000..35b5c3018b --- /dev/null +++ b/scripts/npc/world0/1002005.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1002005); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1002007.js b/scripts/npc/world0/1002007.js new file mode 100644 index 0000000000..7cc0804c29 --- /dev/null +++ b/scripts/npc/world0/1002007.js @@ -0,0 +1,64 @@ +var status = 0; +var maps = [100000000, 102000000, 101000000, 103000000, 120000000]; +var cost = [1000, 1000, 800, 1000, 800]; +var selectedMap = -1; +var mesos; + +function start() { + if (cm.hasItem(4032313,1)) { + cm.sendOk("I see that you have a coupon to go to Henesys. One moment while I bring you right over!"); + } else { + cm.sendNext("Hello, I drive the Regular Cab. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price."); + } +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status >= 2 && mode == 0) { + cm.sendNext("There's a lot to see in this town, too. Come back and find us when you need to go to a different town."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (cm.hasItem(4032313,1)) { + cm.gainItem(4032313, -1); + cm.warp(maps[0], 0); + cm.dispose(); + return; + } + var selStr = ""; + if (cm.getJobId() == 0) + selStr += "We have a special 90% discount for beginners."; + selStr += "Choose your destination, for fees will change from place to place.#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cm.getJobId() == 0 ? cost[i] / 10 : cost[i]) + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 2) { + cm.sendYesNo("You don't have anything else to do here, huh? Do you really want to go to #b#m" + maps[selection] + "##k? It'll cost you #b"+ (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection]) + " mesos#k."); + selectedMap = selection; + } else if (status == 3) { + if (cm.getMeso() < (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection])) { + cm.sendNext("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab."); + cm.dispose(); + return; + } + if (cm.getJobId() == 0) { + mesos = -cost[selectedMap] / 10; + } else { + mesos = -cost[selectedMap]; + } + cm.gainMeso(mesos); + cm.warp(maps[selectedMap], 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1002100.js b/scripts/npc/world0/1002100.js new file mode 100644 index 0000000000..4a1d79114e --- /dev/null +++ b/scripts/npc/world0/1002100.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +// Jane the Alchemist +var status = -1; +var amount = -1; +var items = [[2000002,310],[2022003,1060],[2022000,1600],[2001000,3120]]; +var item; + +function start() { + if (cm.isQuestCompleted(2013)) + cm.sendNext("It's you ... thanks to you I was able to get a lot done. Nowadays I've been making a bunch of items. If you need anything let me know."); + else { + if (cm.isQuestCompleted(2010)) + cm.sendNext("You don't seem strong enough to be able to purchase my potion ..."); + else + cm.sendOk("My dream is to travel everywhere, much like you. My father, however, does not allow me to do it, because he thinks it's very dangerous. He may say yes, though, if I show him some sort of a proof that I'm not the weak girl that he thinks I am ..."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0 && type == 1) + cm.sendNext("I still have quite a few of the materials you got me before. The items are all there so take your time choosing."); + cm.dispose(); + return; + } + if (status == 0){ + var selStr = "Which item would you like to buy?#b"; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##i" + items[i][0] + "# (Price : " + items[i][1] + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 1) { + item = items[selection]; + var recHpMp = ["300 HP.","1000 HP.","800 MP","1000 HP and MP."]; + cm.sendGetNumber("You want #b#t" + item[0] + "##k? #t" + item[0] + "# allows you to recover " + recHpMp[selection] + " How many would you like to buy?", 1, 1, 100); + } else if (status == 2) { + cm.sendYesNo("Will you purchase #r" + selection + "#k #b#t" + item[0] + "#(s)#k? #t" + item[0] + "# costs " + item[1] + " mesos for one, so the total comes out to be #r" + (item[1] * selection) + "#k mesos."); + amount = selection; + } else if (status == 3) { + if (cm.getMeso() < item[1] * amount) + cm.sendNext("Are you lacking mesos by any chance? Please check and see if you have an empty slot available at your etc. inventory, and if you have at least #r" + (item[1] * selectedItem) + "#k mesos with you."); + else { + if (cm.canHold(item[0])) { + cm.gainMeso(-item[1] * amount); + cm.gainItem(item[0], amount); + cm.sendNext("Thank you for coming. Stuff here can always be made so if you need something, please come again."); + } else + cm.sendNext("Please check and see if you have an empty slot available at your etc. inventory."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012000.js b/scripts/npc/world0/1012000.js new file mode 100644 index 0000000000..f95285e346 --- /dev/null +++ b/scripts/npc/world0/1012000.js @@ -0,0 +1,54 @@ +var status = 0; +var maps = [104000000, 102000000, 101000000, 103000000, 120000000]; +var cost = [1000, 1000, 800, 1000, 800]; +var selectedMap = -1; +var mesos; + +function start() { + cm.sendNext("Hello, I drive the Regular Cab. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status >= 2 && mode == 0) { + cm.sendNext("There's a lot to see in this town, too. Come back and find us when you need to go to a different town."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + var selStr = ""; + if (cm.getJobId() == 0) + selStr += "We have a special 90% discount for beginners."; + selStr += "Choose your destination, for fees will change from place to place.#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cm.getJobId() == 0 ? cost[i] / 10 : cost[i]) + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 2) { + cm.sendYesNo("You don't have anything else to do here, huh? Do you really want to go to #b#m" + maps[selection] + "##k? It'll cost you #b"+ (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection]) + " mesos#k."); + selectedMap = selection; + } else if (status == 3) { + if (cm.getMeso() < (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection])) { + cm.sendNext("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab."); + cm.dispose(); + return; + } + if (cm.getJobId() == 0) { + mesos = -cost[selectedMap] / 10; + } else { + mesos = -cost[selectedMap]; + } + cm.gainMeso(mesos); + cm.warp(maps[selectedMap], 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012002.js b/scripts/npc/world0/1012002.js new file mode 100644 index 0000000000..473116d506 --- /dev/null +++ b/scripts/npc/world0/1012002.js @@ -0,0 +1,192 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Vicious + Victoria Road : Henesys Market (100000100) + + Refining NPC: + * Bows - 10-40 + * Crossbows - 12-50 + * Archer Gloves - 10-60 + upgrades + * Processed Wood/Screws + * Arrows/Bronze Arrows/Steel Arrows +*/ + +var status = -1; +var selectedType = -1; +var selectedItem = -1; +var item; +var items; +var mats; +var matQty; +var cost; +var qty = 1; +var equip; + +function start() { + cm.getPlayer().setCS(true); + var selStr = "Hello. I am Vicious, retired Sniper. However, I used to be the top student of Athena Pierce. Though I no longer hunt, I can make some archer items that will be useful for you...#b" + var options = ["Create a bow","Create a crossbow","Make a glove","Upgrade a glove","Create materials","Create Arrows"]; + for (var i = 0; i < options.length; i++) + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + cm.sendSimple(selStr); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + cm.dispose(); + return; + } + if (status == 0) { + if (selection == 0) { //bow refine + var selStr = "I may have been a Sniper, but bows and crossbows aren't too much different. Anyway, which would you like to make?#b"; + items = [1452002,1452003,1452001,1452000,1452005,1452006,1452007]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##k - Bowman Lv. " + (10 + (i * 5)) + "#l#b"; + }else if (selection == 1) { //xbow refine + var selStr = "I was a Sniper. Crossbows are my specialty. Which would you like me to make for you?#b"; + items = [1462001,1462002,1462003,1462000,1462004,1462005,1462006,1462007]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##k - Bowman Lv. " + (10 + (i * 5)) + "#l#b"; + }else if (selection == 2) { //glove refine + var selStr = "Okay, so which glove do you want me to make?#b"; + items = [1082012,1082013,1082016,1082048,1082068,1082071,1082084,1082089]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##k - Bowman Lv. " + (15 + (i * 5) > 40 ? ((i-1) * 10) : 15 + (i * 5)) + "#l#b"; + }else if (selection == 3) { //glove upgrade + var selStr = "Upgrade a glove? That shouldn't be too difficult. Which did you have in mind?#b"; + items = [1082015,1082014,1082017,1082018,1082049,1082050,1082069,1082070,1082072,1082073,1082085,1082083,1082090,1082091]; + for (var i = 0, x = 0; i < items.length; i++, x += (i+1) % 2 == 0 ? 1 : 0) + selStr += "\r\n#L" + i + "##t" + items[i] + "##k" + "##k - Bowman Lv. " + (20 + (x * 5) > 40 ? ((x-1) * 10) : 20 + (x * 5)) + "#l#b"; + }else if (selection == 4) { //material refine + var selStr = "Materials? I know of a few materials that I can make for you...#b"; + var materials = ["Make Processed Wood with Tree Branch","Make Processed Wood with Firewood","Make Screws (packs of 15)"]; + for (var i = 0; i < materials.length; i++) + selStr += "\r\n#L" + i + "# " + materials[i] + "#l"; + }else if (selection == 5) { //arrow refine + var selStr = "Arrows? Not a problem at all.#b"; + items = [2060000,2061000,2060001,2061001,2060002,2061002]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##l"; + } + selectedType = selection; + cm.sendSimple(selStr); + if (selection != 4) + status++; + }else if (status == 1) { + selectedItem = selection; + items = [4003001,4003001,4003000]; + var matSet = [4000003,4000018, [4011000,4011001]]; + var matQtySet = [10,5,[1,1]]; + item = items[selection]; + mats = matSet[selection]; + matQty = matQtySet[selection]; + cost = 0; + cm.sendGetNumber("So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?",1,1,100) + }else if (status == 2) { + if (selectedType != 4) + selectedItem = selection; + else + qty = selection; + if (selectedType == 0) { //bow refine + var matSet = [[4003001,4000000],[4011001,4003000],[4003001,4000016],[4011001,4021006,4003000],[4011001,4011006,4021003,4021006,4003000],[4011004,4021000,4021004,4003000],[4021008,4011001,4011006,4003000,4000014]]; + var matQtySet = [[5,30],[1,3],[30,50],[2,2,8],[5,5,3,3,30],[7,6,3,35],[1,10,3,40,50]]; + var costSet = [800,2000,3000,5000,30000,40000,80000]; + }else if (selectedType == 1) { //xbow refine + var matSet = [[4003001,4003000],[4011001,4003001,4003000],[4011001,4003001,4003000],[4011001,4021006,4021002,4003000],[4011001,4011005,4021006,4003001,4003000],[4021008,4011001,4011006,4021006,4003000],[4021008,4011004,4003001,4003000],[4021008,4011006,4021006,4003001,4003000]]; + var matQtySet = [[7,2],[1,20,5],[1,50,8],[2,1,1,10],[5,5,3,50,15],[1,8,4,2,30],[2,6,30,30],[2,5,3,40,40]]; + var costSet = [1000,2000,3000,10000,30000,50000,80000,200000]; + }else if (selectedType == 2) { //glove refine + var matSet = [[4000021,4000009],[4000021,4000009,4011001],[4000021,4000009,4011006],[4000021,4011006,4021001],[4011000,4011001,4000021,4003000],[4011001,4021000,4021002,4000021,4003000],[4011004,4011006,4021002,4000030,4003000],[4011006,4011007,4021006,4000030,4003000]]; + var matQtySet = [[15,20],[20,20,2],[40,50,2],[50,2,1],[1,3,60,15],[3,1,3,80,25],[3,1,2,40,35],[2,1,8,50,50]]; + var costSet = [5000,10000,15000,20000,30000,40000,50000,70000]; + }else if (selectedType == 3) { //glove upgrade + var matSet = [[1082013,4021003],[1082013,4021000],[1082016,4021000],[1082016,4021008],[1082048,4021003],[1082048,4021008],[1082068,4011002],[1082068,4011006],[1082071,4011006],[1082071,4021008],[1082084,4011000,4021000],[1082084,4011006,4021008],[1082089,4021000,4021007],[1082089,4021007,4021008]]; + var matQtySet = [[1,2],[1,1],[1,3],[1,1],[1,3],[1,1],[1,4],[1,2],[1,4],[1,2],[1,1,5],[1,2,2],[1,5,1],[1,2,2]]; + var costSet = [7000,7000,10000,12000,15000,20000,22000,25000,30000,40000,55000,60000,70000,80000]; + }else if (selectedType == 5) { //arrow refine + var matSet = [[4003001,4003004],[4003001,4003004],[4011000,4003001,4003004],[4011000,4003001,4003004],[4011001,4003001,4003005],[4011001,4003001,4003005]]; + var matQtySet = [[1,1],[1,1],[1,3,10],[1,3,10],[1,5,15],[1,5,15]]; + var costSet = [0,0,0,0,0,0] + } + if(selectedType != 4){ + item = items[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if (mats instanceof Array) + for(var i = 0; i < mats.length; i++) + prompt += "\r\n#i" + mats[i] + "# " + (matQty[i] * qty) + " #t" + mats[i] + "#"; + else + prompt += "\r\n#i" + mats + "# " + (matQty * qty) + " #t" + mats + "#"; + if (cost > 0) + prompt += "\r\n#i4031138# " + (cost * qty) + " meso"; + cm.sendYesNo(prompt); + }else if (status == 3) { + var complete = true; + + if (cm.getMeso() < (cost * qty)) { + cm.sendOk("Sorry, but this is how I make my living. No meso, no item."); + cm.dispose(); + return; + } + else{ + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + }else if (!cm.haveItem(mats, matQty)) + complete = false; + } + if (!complete) + cm.sendOk("Surely you, of all people, would understand the value of having quality items? I can't do that without the items I require."); + else { + if (cm.canHold(item)) { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++) + cm.gainItem(mats[i], -(matQty[i] * qty)); + }else + cm.gainItem(mats, -(matQty * qty)); + cm.gainMeso(-(cost * qty)); + if (item >= 2060000 && item <= 2060002) //bow arrows + cm.gainItem(item, 1000 - (item - 2060000) * 100); + else if (item >= 2061000 && item <= 2061002) //xbow arrows + cm.gainItem(item, 1000 - (item - 2061000) * 100); + else if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("A perfect item, as usual. Come and see me if you need anything else."); + }else { + cm.sendOk("Please make sure you have room in your inventory, and talk to me again."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012005.js b/scripts/npc/world0/1012005.js new file mode 100644 index 0000000000..5c01ee1a28 --- /dev/null +++ b/scripts/npc/world0/1012005.js @@ -0,0 +1,145 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* Author: Xterminator + NPC Name: Cloy + Map(s): Victoria Road : Henesys Park (100000200) + Description: Pet Master + */ +var status = -1; +var sel; + +function start() { + cm.sendNext("Hmm... are you raising one of my kids by any chance? I perfected a spell that uses Water of Life to blow life into a doll. People call it the #bPet#k. If you have one with you, feel free to ask me questions."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + if(mode == 0 && status >= 2) + status -= 2; + else{ + cm.dispose(); + return; + } + } + if (status == 0) + cm.sendSimple("What do you want to know more of?#b\r\n#L0#Tell me more about Pets.#l\r\n#L1#How do I raise Pets?#l\r\n#L2#Do Pets die too?#l\r\n#L3#What are the commands for Brown and Black Kitty?#l\r\n#L4#What are the commands for Brown Puppy?#l\r\n#L5#What are the commands for Pink and White Bunny?#l\r\n#L6#What are the commands for Mini Kargo?#l\r\n#L7#What are the commands for Rudolph and Dasher?#l\r\n#L8#What are the commands for Black Pig?#l\r\n#L9#What are the commands for Panda?#l\r\n#L10#What are the commands for Husky?#l\r\n#L11#What are the commands for Dino Boy and Dino Girl?#l\r\n#L12#What are the commands for Monkey?#l\r\n#L13#What are the commands for Turkey?#l\r\n#L14#What are the commands for White Tiger?#l\r\n#L15#What are the commands for Penguin?#l\r\n#L16#What are the commands for Golden Pig?#l\r\n#L17#What are the commands for Robot?#l\r\n#L18#What are the commands for Mini Yeti?#l\r\n#L19#What are the commands for Jr. Balrog?#l\r\n#L20#What are the commands for Baby Dragon?#l\r\n#L21#What are the commands for Green/Red/Blue Dragon?#l\r\n#L22#What are the commands for Black Dragon?#l\r\n#L23#What are the commands for Jr. Reaper?#l\r\n#L24#What are the commands for Porcupine?#l\r\n#L25#What are the commands for Snowman?#l\r\n#L26#What are the commands for Skunk?#l\r\n#L27#Please teach me about transferring pet ability points.#l"); + else if (status == 1) { + sel = selection; + if (selection == 0) { + status = 3; + cm.sendNext("So you want to know more about Pets. Long ago I made a doll, sprayed Water of Life on it, and cast spell on it to create a magical animal. I know it sounds unbelievable, but it's a doll that became an actual living thing. They understand and follow people very well."); + } else if (selection == 1) { + status = 6; + cm.sendNext("Depending on the command you give, pets can love it, hate, and display other kinds of reactions to it. If you give the pet a command and it follows you well, your intimacy goes up. Double click on the pet and you can check the intimacy, level, fullness and etc..."); + } else if (selection == 2) { + status = 11; + cm.sendNext("Dying... well, they aren't technically ALIVE per se, so I don't know if dying is the right term to use. They are dolls with my magical power and the power of Water of Life to become a live object. Of course while it's alive, it's just like a live animal..."); + } else if (selection == 3) + cm.sendNext("These are the commands for #rBrown Kitty and Black Kitty#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1~30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#btalk, say, chat#k (Level 10 ~ 30)\r\n#bcutie#k (Level 10 ~ 30)\r\n#bup, stand, rise#k (Level 20 ~ 30)"); + else if (selection == 4) + cm.sendNext("These are the commands for #rBrown Puppy#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, baddog, dummy#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1~30)\r\n#bpee#k (Level 1 ~ 30)\r\n#btalk, say, chat#k (Level 10 ~ 30)\r\n#bdown#k (Level 10 ~ 30)\r\n#bup, stand, rise#k (Level 20 ~ 30)"); + else if (selection == 5) + cm.sendNext("These are the commands for #rPink Bunny and White Bunny#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bup, stand, rise#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1~30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#btalk, say, chat#k (Level 10 ~ 30)\r\n#bhug#k (Level 10 ~ 30)\r\n#bsleep, sleepy, gotobed#k (Level 20 ~ 30)"); + else if (selection == 6) + cm.sendNext("These are the commands for #rMini Kargo#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bup, stand, rise#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1~30)\r\n#bpee#k (Level 1 ~ 30)\r\n#btalk, say, chat#k (Level 10 ~ 30)\r\n#bthelook, charisma#k (Level 10 ~ 30)\r\n#bdown#k (Level 10 ~ 30)\r\n#bgoodboy, goodgirl#k (Level 20 ~ 30)"); + else if (selection == 7) + cm.sendNext("These are the commands for #rRudolph and Dasher#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bup, stand#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#bmerryxmas, merrychristmas#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1~30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#btalk, say, chat#k (Level 11 ~ 30)\r\n#blonely, alone#k (Level 11 ~ 30)\r\n#bcutie#k (Level 11 ~ 30)\r\n#bmush, go#k (Level 21 ~ 30)"); + else if (selection == 8) + cm.sendNext("These are the commands for #rBlack Pig#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1~30)\r\n#bhand#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bsmile#k (Level 10 ~ 30)\r\n#bthelook, charisma#k (Level 20 ~ 30)"); + else if (selection == 9) + cm.sendNext("These are the commands for #rPanda#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bchill, relax#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bup, stand, rise#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bletsplay#k (Level 10 ~ 30)\r\n#bmeh, bleh#k (Level 10 ~ 30)\r\n#bsleep#k (Level 20 ~ 30)"); + else if (selection == 10) + cm.sendNext("These are the commands for #rHusky#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, baddog, dummy#k (Level 1 ~ 30)\r\n#bhand#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bdown#k (Level 10 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bup, stand, rise#k (Level 20 ~ 30)"); + else if (selection == 11) + cm.sendNext("These are the commands for #rDino Boy and Dino Girl#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badboy, badgirl#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#bsmile, laugh#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bcutie#k (Level 10 ~ 30)\r\n#bsleep, nap, sleepy#k (Level 20 ~ 30)"); + else if (selection == 12) + cm.sendNext("These are the commands for #rMonkey#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#brest#k (Level 1 ~ 30)\r\n#bbad, no, badboy, badgirl#k (Level 1 ~ 30)\r\n#bpee#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bup, stand#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bplay#k (Level 10 ~ 30)\r\n#bmelong#k (Level 10 ~ 30)\r\n#bsleep, gotobed, sleepy#k (Level 20 ~ 30)"); + else if (selection == 13) + cm.sendNext("These are the commands for #rTurkey#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bno, rudeboy, mischief#k (Level 1 ~ 30)\r\n#bstupid#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bup, stand#k (Level 1 ~ 30)\r\n#btalk, chat, gobble#k (Level 10 ~ 30)\r\n#byes, goodboy#k (Level 10 ~ 30)\r\n#bsleepy, birdnap, doze#k (Level 20 ~ 30)\r\n#bbirdeye, thanksgiving, fly, friedbird, imhungry#k (Level 30)"); + else if (selection == 14) + cm.sendNext("These are the commands for #rWhite Tiger#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badboy, badgirl#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#brest, chill#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bactsad, sadlook#k (Level 10 ~ 30)\r\n#bwait#k (Level 20 ~ 30)"); + else if (selection == 15) + cm.sendNext("These are the commands for #rPenguin#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badboy, badgirl#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#bup, stand, rise#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 10 ~ 30)\r\n#bhug, hugme#k (Level 10 ~ 30)\r\n#bwing, hand#k (Level 10 ~ 30)\r\n#bsleep#k (Level 20 ~ 30)\r\n#bkiss, smooch, muah#k (Level 20 ~ 30)\r\n#bfly#k (Level 20 ~ 30)\r\n#bcute, adorable#k (Level 20 ~ 30)"); + else if (selection == 16) + cm.sendNext("These are the commands for #rGolden Pig#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badboy, badgirl#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 11 ~ 30)\r\n#bloveme, hugme#k (Level 11 ~ 30)\r\n#bsleep, sleepy, gotobed#k (Level 21 ~ 30)\r\n#bignore / impressed / outofhere#k (Level 21 ~ 30)\r\n#broll, showmethemoney#k (Level 21 ~ 30)"); + else if (selection == 17) + cm.sendNext("These are the commands for #rRobot#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bup, stand, rise#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#bbad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#battack, charge#k (Level 1 ~ 30)\r\n#biloveyou#k (Level 1 ~ 30)\r\n#bgood, thelook, charisma#k (Level 11 ~ 30)\r\n#bspeack, talk, chat, say#k (Level 11 ~ 30)\r\n#bdisguise, change, transform#k (Level 11 ~ 30)"); + else if (selection == 18) + cm.sendNext("These are the commands for #rMini Yeti#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad, no, badboy, badgirl#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#bdance, boogie, shakeit#k (Level 1 ~ 30)\r\n#bcute, cutie, pretty, adorable#k (Level 1 ~ 30)\r\n#biloveyou, likeyou, mylove#k (Level 1 ~ 30)\r\n#btalk, chat, say#k (Level 11 ~ 30)\r\n#bsleep, nap, sleepy, gotobed#k (Level 11 ~ 30)"); + else if (selection == 19) + cm.sendNext("These are the commands for #rJr. Balrog#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bliedown#k (Level 1 ~ 30)\r\n#bno|bad|badgirl|badboy#k (Level 1 ~ 30)\r\n#biloveyou|mylove|likeyou#k (Level 1 ~ 30)\r\n#bcute|cutie|pretty|adorable#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#bsmirk|crooked|laugh#k (Level 1 ~ 30)\r\n#bmelong#k (Level 11 ~ 30)\r\n#bgood|thelook|charisma#k (Level 11 ~ 30)\r\n#bspeak|talk|chat|say#k (Level 11 ~ 30)\r\n#bsleep|nap|sleepy#k (Level 11 ~ 30)\r\n#bgas#k (Level 21 ~ 30)"); + else if (selection == 20) + cm.sendNext("These are the commands for #rBaby Dragon#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bno|bad|badgirl|badboy#k (Level 1 ~ 30)\r\n#biloveyou|loveyou#k (Level 1 ~ 30)\r\n#bpoop#k (Level 1 ~ 30)\r\n#bstupid|ihateyou|dummy#k (Level 1 ~ 30)\r\n#bcutie#k (Level 11 ~ 30)\r\n#btalk|chat|say#k (Level 11 ~ 30)\r\n#bsleep|sleepy|gotobed#k (Level 11 ~ 30)"); + else if (selection == 21) + cm.sendNext("These are the commands for #rGreen/Red/Blue Dragon#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 15 ~ 30)\r\n#bno|bad|badgirl|badboy#k (Level 15 ~ 30)\r\n#biloveyou|loveyou#k (Level 15 ~ 30)\r\n#bpoop#k (Level 15 ~ 30)\r\n#bstupid|ihateyou|dummy#k (Level 15 ~ 30)\r\n#btalk|chat|say#k (Level 15 ~ 30)\r\n#bsleep|sleepy|gotobed#k (Level 15 ~ 30)\r\n#bchange#k (Level 21 ~ 30)"); + else if (selection == 22) + cm.sendNext("These are the commands for #rBlack Dragon#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 15 ~ 30)\r\n#bno|bad|badgirl|badboy#k (Level 15 ~ 30)\r\n#biloveyou|loveyou#k (Level 15 ~ 30)\r\n#bpoop#k (Level 15 ~ 30)\r\n#bstupid|ihateyou|dummy#k (Level 15 ~ 30)\r\n#btalk|chat|say#k (Level 15 ~ 30)\r\n#bsleep|sleepy|gotobed#k (Level 15 ~ 30)\r\n#bcutie, change#k (Level 21 ~ 30)"); + else if (selection == 23) + cm.sendNext("These are the commands for #rJr. Reaper#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bno|bad|badgirl|badboy#k (Level 1 ~ 30)\r\n#bplaydead, poop#k (Level 1 ~ 30)\r\n#btalk|chat|say#k (Level 1 ~ 30)\r\n#biloveyou, hug#k (Level 1 ~ 30)\r\n#bsmellmyfeet, rockout, boo#k (Level 1 ~ 30)\r\n#btrickortreat#k (Level 1 ~ 30)\r\n#bmonstermash#k (Level 1 ~ 30)"); + else if (selection == 24) + cm.sendNext("These are the commands for #rPorcupine#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bno|bad|badgirl|badboy#k (Level 1 ~ 30)\r\n#biloveyou|hug|goodboy#k (Level 1 ~ 30)\r\n#btalk|chat|say#k (Level 1 ~ 30)\r\n#bcushion|sleep|knit|poop#k (Level 1 ~ 30)\r\n#bcomb|beach#k (Level 10 ~ 30)\r\n#btreeninja#k (Level 20 ~ 30)\r\n#bdart#k (Level 20 ~ 30)"); + else if (selection == 25) + cm.sendNext("These are the commands for #rSnowman#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bstupid, ihateyou, dummy#k (Level 1 ~ 30)\r\n#bloveyou, mylove, ilikeyou#k (Level 1 ~ 30)\r\n#bmerrychristmas#k (Level 1 ~ 30)\r\n#bcutie, adorable, cute, pretty#k (Level 1 ~ 30)\r\n#bcomb, beach/bad, no, badgirl, badboy#k (Level 1 ~ 30)\r\n#btalk, chat, say/sleep, sleepy, gotobed#k (Level 10 ~ 30)\r\n#bchang#k (Level 20 ~ 30)"); + else if (selection == 26) + cm.sendNext("These are the commands for #rSkunk#k. The level mentioned next to the command shows the pet level required for it to respond.\r\n#bsit#k (Level 1 ~ 30)\r\n#bbad/no/badgirl/badboy#k (Level 1 ~ 30)\r\n#brestandrelax, poop#k (Level 1 ~ 30)\r\n#btalk/chat/say, iloveyou#k (Level 1 ~ 30)\r\n#bsnuggle/hug, sleep, goodboy#k (Level 1 ~ 30)\r\n#bfatty, blind, badbreath#k (Level 10 ~ 30)\r\n#bsuitup, bringthefunk#k (Level 20 ~ 30)"); + else if (selection == 27) { + status = 14; + cm.sendNext("In order to transfer the pet ability points, closeness and level, Pet AP Reset Scroll is required. If you take this\r\nscroll to Mar the Fairy in Ellinia, she will transfer the level and closeness of the pet to another one. I am especially giving it to you because I can feel your heart for your pet. However, I can't give this out for free. I can give you this book for 250,000 mesos. Oh, I almost forgot! Even if you have this book, it is no use if you do not have a new pet to transfer the Ability points."); + } + if(selection > 2 && selection < 27) + cm.dispose(); + } else if (status == 2) { + if(sel == 0) + cm.sendNextPrev("But Water of Life only comes out little at the very bottom of the World Tree, so I can't give him too much time in life... I know, it's very unfortunate... but even if it becomes a doll again I can always bring life back into it so be good to it while you're with it."); + else if (sel == 1) + cm.sendNextPrev("Talk to the pet, pay attention to it and its intimacy level will go up and eventually his overall level will go up too. As the intimacy level rises, the pet's overall level will rise soon after. As the overall level rises, one day the pet may even talk like a person a little bit, so try hard raising it. Of course it won't be easy doing so..."); + else if (sel == 2) + cm.sendNextPrev("After some time... that's correct, they stop moving. They just turn back to being a doll, after the effect of magic dies down and Water of Life dries out. But that doesn't mean it's stopped forever, because once you pour Water of Life over, it's going to be back alive."); + else if (sel == 27) + cm.sendYesNo("250,000 mesos will be deducted. Do you really want to buy?"); + } else if (status == 3) { + if (sel == 0) + cm.sendNextPrev("Oh yeah, they'll react when you give them special commands. You can scold them, love them... it all\r\ndepends on how you take care of them. They are afraid to leave their masters so be nice to them, show them love. They can get sad and lonely fast..."); + else if (sel == 1){ + cm.sendNextPrev("It may be a live doll but they also have life so they can feel the hunger too. #bFullness#k shows the level of hunger the pet's in. 100 is the max, and the lower it gets, it means that the pet is getting hungrier. After a while, it won't even follow your command and be on the offensive, so watch out over that."); + return; + }else if (sel == 2) + cm.sendNextPrev("Even if it someday moves again, it's sad to see them stop altogether. Please be nice to them while they are alive and moving. Feed them well, too. Isn't it nice to know that there's something alive that follows and listens to only you?"); + else if (sel == 27){ + if (cm.getMeso() < 250000 || !cm.canHold(4160011)) + cm.sendOk("Please check if your inventory has empty slot or you don't have enough mesos."); + else { + cm.gainMeso(-250000); + cm.gainItem(4160011, 1); + } + cm.dispose(); + } + } else if (status == 4){ + if(sel != 1) + cm.dispose(); + cm.sendNextPrev("Oh yes! Pets can't eat the normal human food. Instead my disciple #bDoofus#k sells #bPet Food#k at the Henesys Market so if you need food for your pet, find Henesys. It'll be a good idea to buy the food in advance and feed the pet before it gets really hungry."); + } else if (status == 5) + cm.sendNextPrev("Oh, and if you don't feed the pet for a long period of time, it goes back home by itself. You can take it out of its home and feed it but it's not really good for the pet's health, so try feeding him on a regular basis so it doesn't go down to that level, alright? I think this will do."); + else if (status == 6) + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1012006.js b/scripts/npc/world0/1012006.js new file mode 100644 index 0000000000..57cdd80bdf --- /dev/null +++ b/scripts/npc/world0/1012006.js @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator, Moogra + NPC Name: Trainer Bartos + Map(s): Victoria Road : Pet-Walking Road (100000202) + Description: Pet Trainer +*/ +var status = 0; + +function start() { + cm.sendSimple("Do you have any business with me?\r\n#L0##bPlease tell me about this place.#l\r\n#L1#I'm here through a word from Mar the Fairy...#k#l"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else if (mode == 0) { + cm.sendNext("Hmmm ... too busy to do it right now? If you feel like doing it, though, come back and find me."); + cm.dispose(); + } else { + status++; + if (status == 1) { + if (selection == 0) { + if (cm.haveItem(4031035)) { + cm.sendNext("Get that letter, jump over obstacles with your pet, and take that letter to my brother Trainer Frod. Give him the letter and something good is going to happen to your pet."); + cm.dispose(); + } else + cm.sendYesNo("This is the road where you can go take a walk with your pet. You can just walk around with it, or you can train your pet to go through the obstacles here. If you aren't too close with your pet yet, that may present a problem and he will not follow your command as much... So, what do you think? Wanna train your pet?"); + } else { + cm.sendOk("Hey, are you sure you've met #bMar the Fairy#k? Don't lie to me if you've never met her before because it's obvious. That wasn't even a good lie!!"); + cm.dispose(); + } + } else if (status == 2) { + cm.gainItem(4031035, 1); + cm.sendNext("Ok, here's the letter. He wouldn't know I sent you if you just went there straight, so go through the obstacles with your pet, go to the very top, and then talk to Trainer Frod to give him the letter. It won't be hard if you pay attention to your pet while going through obstacles. Good luck!"); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012007.js b/scripts/npc/world0/1012007.js new file mode 100644 index 0000000000..a9e5e4e25a --- /dev/null +++ b/scripts/npc/world0/1012007.js @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Trainer Frod + Map(s): Victoria Road : Pet-Walking Road (100000202) + Description: Pet Trainer +*/ + +function start() { + if (cm.haveItem(4031035)) + cm.sendNext("Eh, that's my brother's letter! Probably scolding me for thinking I'm not working and stuff...Eh? Ahhh...you followed my brother's advice and trained your pet and got up here, huh? Nice!! Since you worked hard to get here, I'll boost your intimacy level with your pet."); + else { + cm.sendOk("My brother told me to take care of the pet obstacle course, but ... since I'm so far away from him, I can't help but wanting to goof around ...hehe, since I don't see him in sight, might as well just chill for a few minutes."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + if (cm.getPlayer().getNoPets() == 0) + cm.sendNextPrev("Hmmm ... did you really get here with your pet? These obstacles are for pets. What are you here for without it?? Get outta here!"); + else { + cm.gainItem(4031035, -1); + cm.gainCloseness(2, 0); + cm.sendNextPrev("What do you think? Don't you think you have gotten much closer with your pet? If you have time, train your pet again on this obstacle course...of course, with my brother's permission."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012009.js b/scripts/npc/world0/1012009.js new file mode 100644 index 0000000000..5a9fae0518 --- /dev/null +++ b/scripts/npc/world0/1012009.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1012009); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1012100.js b/scripts/npc/world0/1012100.js new file mode 100644 index 0000000000..36e4c273b3 --- /dev/null +++ b/scripts/npc/world0/1012100.js @@ -0,0 +1,261 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Athena Pierce + Bowman Job Advancement + Victoria Road : Bowman Instructional School (100000201) +*/ + +status = -1; +actionx = {"1stJob" : false, "2ndjob" : false, "3thJobI" : false, "3thJobC" : false}; +job = 310; + +function start() { + if (cm.getJobId() == 0) { + actionx["1stJob"] = true; + if (cm.getLevel() >= 10) + cm.sendNext("So you decided to become a #rBowman#k?"); + else { + cm.sendOk("Train a bit more and I can show you the way of the #rBowman#k."); + cm.dispose(); + } + } else if (cm.getLevel() >= 30 && cm.getJobId() == 300) { + actionx["2ndJob"] = true; + if (cm.haveItem(4031012)) + cm.sendNext("Haha...I knew you'd breeze through that test. I'll admit, you are a great bowman. I'll make you much stronger than you're right now. before that, however... you;ll need to choose one of two paths given to you. It'll be a difficult decision for you to make, but... if there's any question to ask, please do so."); + else if (cm.haveItem(4031011)){ + cm.sendOk("Go and see the #b#p1072002##k."); + cm.dispose(); + } else + cm.sendYesNo("Hmmm... you have grown a lot since I last saw you. I don't see the weakling I saw before, and instead, look much more like a bowman now. Well, what do you think? Don't you want to get even more powerful than that? Pass a simple test and I'll do just that for you. Do you want to do it?"); + } else if (actionx["3thJobI"] || (cm.getPlayer().gotPartyQuestItem("JB3") && cm.getLevel() >= 70 && cm.getJobId() % 10 == 0 && parseInt(cm.getJobId() / 100) == 3 && !cm.getPlayer().gotPartyQuestItem("JBP"))){ + actionx["3thJobI"] = true; + cm.sendNext("There you are. A few days ago, #b#p2020010##k of Ossyria talked to me about you. I see that you are interested in making the leap to the amazing world of the third job advancement for archers. To achieve that goal, I will have to test your strength in order to see whether you are worthy of the advancement. There is an opening in the middle of a deep forest in Victoria Island, where it'll lead you to a secret passage. Once inside, you'll face a clone of myself. Your task is to defeat her and bring #b#t4031059##k back with you."); + } else if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)){ + cm.sendNext("Please, bring me the #b#t4031059##k."); + cm.dispose(); + } else if (cm.haveItem(4031059) && cm.getPlayer().gotPartyQuestItem("JBP")){ + actionx["3thJobC"] = true; + cm.sendNext("Nice work. You have defeated my clone and brought #b#t4031059##k back safely. You have now proven yourself worthy of the 3rd job advancement from the physical standpoint. Now you should give this necklace to #b#p2020011##k in Ossyria to take on the second part of the test. Good luck. You'll need it."); + } else { + cm.sendOk("You have chosen wisely."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + status++; + if (mode == 0 && type != 1) + status -= 2; + if (status == -1){ + start(); + return; + } else if (mode != 1 || status == 7 && type != 1 || (actionx["1stJob"] && status == 4) || (cm.haveItem(4031008) && status == 2) || (actionx["3thJobI"] && status == 1)){ + if (mode == 0 && status == 2 && type == 1) + cm.sendOk("You know there is no other choice..."); + if (!(mode == 0 && type != 1)){ + cm.dispose(); + return; + } + } + if (actionx["1stJob"]){ + if (status == 0) + cm.sendNextPrev("It is an important and final choice. You will not be able to turn back."); + else if (status == 1){ + if (cm.canHold(1452051) && cm.canHold(2060000)){ + if (cm.getJobId() == 0){ + cm.changeJobById(300); + cm.gainItem(1452051, 1); + cm.gainItem(2060000, 1000); + cm.resetStats(); + } + cm.sendNext("Alright, from here out, you are a part of us! You'll be living the life of a wanderer at ..., but just be patient as soon, you'll be living the high life. Alright, it ain't much, but I'll give you some of my abilities... HAAAHHH!!!"); + } else { + cm.sendNext("Make some room in your inventory and talk back to me."); + cm.dispose(); + } + } else if (status == 2) + cm.sendNextPrev("You've gotten much stronger now. Plus every single one of your inventories have added slots. A whole row, to be exact. Go see for it yourself. I just gave you a little bit of #bSP#k. When you open up the #bSkill#k menu on the lower left corner of the screen, there are skills you can learn by using SP's. One warning, though: You can't raise it all together all at once. There are also skills you can acquire only after having learned a couple of skills first."); + else + cm.dispose(); + } else if(actionx["2ndJob"]){ + if (status == 0){ + if (cm.haveItem(4031012)) + cm.sendSimple("Alright, when you have made your decision, click on [I'll choose my occupation] at the bottom.#b\r\n#L0#Please explain to me what being the Hunter is all about.\r\n#L1#Please explain to me what being the Crossbowman is all about.\r\n#L2#I'll choose my occupation!"); + else + cm.sendNext("Good decision. You look strong, but I need to see if you really are strong enough to pass the test, it's not a difficult test, so you'll do just fine. Here, take my letter first... make sure you don't lose it!"); + } else if (status == 1){ + if (!cm.haveItem(4031012)){ + if (cm.canHold(4031010)){ + if (!cm.haveItem(4031010)) + cm.gainItem(4031010, 1); + cm.sendNextPrev("Please get this letter to #b#p1072002##k who's around #b#m106010000##k near Henesys. She is taking care of the job of an instructor in place of me. Give her the letter and she'll test you in place of me. Best of luck to you."); + cm.dispose(); + } else { + cm.sendNext("Please, make some space in your inventory."); + cm.dispose(); + } + } else { + if (selection < 2){ + cm.sendNext("Not done."); + status -= 2; + } else + cm.sendSimple("Now... have you made up your mind? Please choose the job you'd like to select for your 2nd job advancement. #b\r\n#L0#Hunter\r\n#L1#Crossbowman"); + } + } else if (status == 2){ + job += selection * 10; + cm.sendYesNo("So you want to make the second job advancement as the " + (job == 310 ? "#bHunter#k" : "#bCrossbowman#k") + "? You know you won't be able to choose a different job for the 2nd job advancement once you make your desicion here, right?"); + } else if (status == 3){ + if (cm.haveItem(4031012)) + cm.gainItem(4031012, -1); + + cm.sendNext("Alright, you're the " + (job == 310 ? "#bHunter#k" : "#bCrossbowman#k") + " from here on out. " + (job == 310 ? "#bHunter#k" : "#bCrossbowman#k") + "s are the intelligent bunch with incredible vision, able to pierce the arrow through the heart of the monsters with ease... please train yourself each and everyday. I'll help you become even stronger than you already are."); + if (cm.getJobId() != job) + cm.changeJobById(job); + } else if (status == 4) + cm.sendNextPrev("I have just given you a book that gives you the list of skills you can acquire as a " + (job == 310 ? "hunter" : "crossbowman") + ". Also your etc inventory has expanded by adding another row to it. Your max HP and MP have increased, too. Go check and see for it yourself."); + else if (status == 5) + cm.sendNextPrev("I have also given you a little bit of #bSP#k. Open the #bSkill Menu#k located at the bottomleft corner. you'll be able to boost up the newer acquired 2nd level skills. A word of warning, though. You can't boost them up all at once. Some of the skills are only available after you have learned other skills. Make sure yo remember that."); + else if (status == 6) + cm.sendNextPrev((job == 310 ? "Hunter" : "Crossbowman") + " need to be strong. But remember that you can't abuse that power and use it on a weaking. Please use your enormous power the right way, because... for you to use that the right way, that is much harden than just getting stronger. Please find me after you have advanced much further. I'll be waiting for you."); + } else if (actionx["3thJobI"]){ + if (status == 0){ + if (cm.getPlayer().gotPartyQuestItem("JB3")){ + cm.getPlayer().removePartyQuestItem("JB3"); + cm.getPlayer().setPartyQuestItemObtained("JBP"); + } + cm.sendNextPrev("Since she is a clone of myself, you can expect a tough battle ahead. He uses a number of special attacking skills unlike any you have ever seen, and it is your task to successfully take him one on one. There is a time limit in the secret passage, so it is crucial that you defeat him within the time limit. I wish you the best of luck, and I hope you bring the #b#t4031059##k with you."); + } + } else if (actionx["3thJobC"]){ + cm.getPlayer().removePartyQuestItem("JBP"); + cm.gainItem(4031059, -1); + cm.gainItem(4031057, 1); + cm.dispose(); + } +} + +/* +function start() { + if (cm.getJobId() == 0) { + actionx["1stJob"] = true; + if (cm.getLevel() >= 10) + + else { + + cm.dispose(); + } + } else { + if (cm.getLevel() >= 30 && cm.getJobId() == 300) { + actionx["2ndJob"] = true; + if (cm.haveItem(4031012)) + + else if (cm.haveItem(4031010)){ + cm.sendOk("Go and see the #b#p1072002##k."); + cm.dispose(); + } else + + } else if (cm.isQuestStarted(100100)) { + if (cm.isQuestCompleted(100101)) + cm.sendOk("Alright, now take this to #bRene#k."); + else { + + cm.startQuest(100101); + } + cm.dispose(); + } else { + cm.sendOk("You have chosen wisely."); + cm.dispose(); + } + } +} + +function action(mode, type, selection) { + status++; + if (mode == 0 && type != 1) + status -= 2; + if (status == -1){ + start(); + return; + } else if (mode != 1 || status == 7 && type != 1 || (cm.haveItem(4031010) && status == 2)){ + if (mode == 0 && status == 2) + cm.sendOk("Make up your mind and visit me again."); + if (!(mode == 0 && type != 1)){ + cm.dispose(); + return; + } + } + if (actionx["1stJob"]){ + if (status == 0) + + else if (status == 1) + + else if (status == 2) { + + cm.sendOk("So be it! Now go, and go with pride."); + } else { + cm.sendNext("Make some room in your inventory and talk to me again."); + cm.dispose(); + } + } + } else if(actionx["2ndJob"]){ + if (status == 0){ + if (cm.haveItem(4031012)) + cm.sendSimple("Alright, when you have made your decision, click on [I'll choose my occupation] at the bottom.#b\r\n#L0#Please explain to me what being the Hunter is all about.\r\n#L1#Please explain to me what being the Crossbowman is all about.\r\n#L2#I'll choose my occupation!"); + else { + cm.sendNext("Good decision. You look strong, but I need to see if you really are strong enough to pass the test, it's not a difficult test, so you'll do just fine. Here, take my letter first... make sure you don't lose it!"); + if(!cm.isQuestStarted(100000)) cm.startQuest(100000); + } + } else if (status == 1){ + if (!cm.haveItem(4031012)){ + if (cm.canHold(4031010)){ + if (!cm.haveItem(4031010)) + cm.gainItem(4031010, 1); + cm.sendNextPrev("Please get this letter to #b#p1072002##k who's around #b#m106010000##k near Henesys. She is taking care of the job of an instructor in place of me. Give her the letter and she'll test you in place of me. Best of luck to you."); + } else { + cm.sendNext("Please, make some space in your inventory."); + cm.dispose(); + } + } else { + if (selection < 2){ + cm.sendNext("Not done."); + status -= 2; + } else + cm.sendSimple("Now... have you made up your mind? Please choose the job you'd like to select for your 2nd job advancement. #b\r\n#L0#Hunter\r\n#L1#Crossbowman"); + } + } else if (status == 2){ + job += selection * 10; + cm.sendYesNo("So you want to make the second job advancement as the " + (job == 310 ? "#bHunter#k" : "#bCrossbowman#k") + "? You know you won't be able to choose a different job for the 2nd job advancement once you make your desicion here, right?"); + } else if (status == 3){ + if (cm.haveItem(4031012)) + cm.gainItem(4031012, -1); + cm.completeQuest(100002); + cm.sendNext("Alright, you're the " + (job == 310 ? "#bHunter#k" : "#bCrossbowman#k") + " from here on out. Hunters are the intelligent bunch with incredible vision, able to pierce the arrow through the heart of the monsters with ease... please train yourself each and everyday. I'll help you become even stronger than you already are."); + if (cm.getJobId() != job) + cm.changeJobById(job); + } else if (status == 4) + cm.sendNextPrev("I have just given you a book that gives you the list of skills you can acquire as a " + (job == 310 ? "hunter" : "crossbowman") + ". Also your etc inventory has expanded by adding another row to it. Your max HP and MP have increased, too. Go check and see for it yourself."); + else if (status == 5) + cm.sendNextPrev("I have also given you a little bit of #bSP#k. Open the #bSkill Menu#k located at the bottomleft corner. you'll be able to boost up the newer acquired 2nd level skills. A word of warning, though. You can't boost them up all at once. Some of the skills are only available after you have learned other skills. Make sure yo remember that."); + else if (status == 6) + cm.sendNextPrev((job == 310 ? "Hunter" : "Crossbowman") + " need to be strong. But remember that you can't abuse that power and use it on a weaking. Please use your enormous power the right way, because... for you to use that the right way, that is much harden than just getting stronger. Please find me after you have advanced much further. I'll be waiting for you."); + } +}*/ \ No newline at end of file diff --git a/scripts/npc/world0/1012103.js b/scripts/npc/world0/1012103.js new file mode 100644 index 0000000000..d9c2160279 --- /dev/null +++ b/scripts/npc/world0/1012103.js @@ -0,0 +1,99 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Natalie + Henesys VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30030, 30020, 30000, 30310, 30330, 30060, 30150, 30410, 30210, 30140, 30120, 30200); +var fhair = Array(31050, 31040, 31000, 31150, 31310, 31300, 31160, 31100, 31410, 31030, 31080, 31070); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + } else { + status++; + if (status == 0) + cm.sendSimple("I'm the head of this hair salon. If you have a #b#t5150001##k or a #b#t5151001##k allow me to take care of your hairdo. Please choose the one you want.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150001##t5150001##l\r\n#L2#Dye your hair: #i5151001##t5151001##l"); + else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150001##t5150001##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151001##t5151001##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + if (cm.getPlayer().getGender() == 1) + for(var i = 0; i < fhair.length; i++) + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? If you have #b#t5150001##k I'll change it for you. Choose the one to your liking~.", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) + haircolor.push(current + i); + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t51051001##k I'll change it for you. Choose the one to your liking.", haircolor); + } + } else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150001)){ + cm.gainItem(5150001, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + if (beauty == 2){ + if (cm.haveItem(5151001)){ + cm.gainItem(5151001, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150001, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151001, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } +} diff --git a/scripts/npc/world0/1012104.js b/scripts/npc/world0/1012104.js new file mode 100644 index 0000000000..95d5385b1c --- /dev/null +++ b/scripts/npc/world0/1012104.js @@ -0,0 +1,112 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Brittany + Henesys Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30310, 30330, 30060, 30150, 30410, 30210, 30140, 30120, 30200, 30560, 30510, 30610, 30470); +var fhair = Array(31150, 31310, 31300, 31160, 31100, 31410, 31030, 31080, 31070, 31610, 31350, 31510, 31740); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm Brittany the assistant. If you have #b#t5150010##k or #b#t5151000##k by any chance, then how about letting me change your hairdo?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150010##t5150010##l\r\n#L2#Dye your hair: #i5151000##t5151000##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150010##t5150010##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151000##t5151000##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that even you didn't think was possible. Are you going to use #b#t5150010##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) + haircolor.push(current + i); + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151000##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150010) == true){ + cm.gainItem(5150010, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151000) == true){ + cm.gainItem(5151000, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150010, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151000, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/1012105.js b/scripts/npc/world0/1012105.js new file mode 100644 index 0000000000..470478530e --- /dev/null +++ b/scripts/npc/world0/1012105.js @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Ms. Tan + Henesys Skin Change. +*/ +var status = 0; +var skin = Array(0, 1, 2, 3, 4); +var price = 1000000; + +function start() { + cm.sendSimple("Well, hello! Welcome to the Henesys Skin-Care! Would you like to have a firm, tight, healthy looking skin like mine? With a #b#t5153000##k, you can let us take care of the rest and have the kind of skin you've always wanted~!\r\n#L1#I would like to buy a #b#t5153000##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) + cm.sendStyle("With our specialized machine, you can see yourself after the treatment in advance. What kind of skin-treatment would you like to do? Choose the style of your liking.", skin); + else { + if (cm.haveItem(5153000)){ + cm.gainItem(5153000, -1); + cm.setSkin(selection); + cm.sendOk("Enjoy your new and improved skin!"); + } else + cm.sendOk("Um... you don't have the skin-care coupon you need to receive the treatment. Sorry, but I am afraid we can't do it for you..."); + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/1012112.js b/scripts/npc/world0/1012112.js new file mode 100644 index 0000000000..6bf2eb2a8a --- /dev/null +++ b/scripts/npc/world0/1012112.js @@ -0,0 +1,141 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @NPC Tory + */ +var status = 0; +var chosen = 0; +var min = 3; +var minLevel = 10; + + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) { + status++; + } else { + status--; + } + if (cm.getPlayer().getMapId() == 100000200) { + if (cm.getParty() == null || !cm.isLeader()) { + if (status == 0) { + cm.sendNext("Hi there! I'm Tory. This place is covered with mysterious aura of the full moon, and no one person can enter here by him/herself."); + } else if (status == 1) { + cm.sendOk("If you'd like to enter here, the leader of your party will have to talk to me. Talk to your party leader about this."); + cm.dispose(); + } + } else { + if (status == 0) { + cm.sendNext("I'm Tory. Inside here is a beautiful hill where the primrose blooms. There's a tiger that lives in the hill, Growlie, and he seems to be looking for something to eat."); + } else if (status == 1) { + cm.sendSimple("Would you like to head over to the hill of primrose and join forces with your party members to help Growlie out?\r\n#b#L0# Yes, I will go.#l"); + } else if (status == 2) { + var party = cm.getPartyMembers(); + var onmap = 0; + for (var i = 0; i < party.size(); i++) { + if (party.get(i).getMap().getId() == 100000200) { + if (party.get(i).getLevel() < minLevel) { + cm.sendOk("A member of your party does not meet the level requirement."); + cm.dispose(); + return; + } + onmap++; + } + } + if (onmap < min) { + cm.sendOk("A member of your party is not presently in the map."); + cm.dispose(); + return; + } + if (cm.getClient().getChannelServer().getMapFactory().getMap(910010000).getAllPlayer().size() > 0) { + cm.sendOk("Someone is already attempting the PQ. Please wait for them to finish, or find another channel."); + cm.dispose(); + return; + } + var em = cm.getEventManager("HenesysPQ"); + if (em == null) { + cm.sendOk("This PQ is currently broken. Please report it on the forum!"); + cm.dispose(); + return; + } + + var prop = em.getProperty("state"); + if (prop == null || prop.equals("0")) { //Start the PQ + cm.removeHPQItems(); + em.setProperty("latestLeader", cm.getPlayer().getName()); + em.startInstance(cm.getParty(), cm.getPlayer().getMap()); + } else { + cm.sendOk("Someone is already attempting the PQ. Please wait for them to finish, or find another channel."); + cm.dispose(); + return; + } + cm.dispose(); + } + } + } else if (cm.getPlayer().getMap().getId() == 910010100 || cm.getPlayer().getMap().getId() == 910010400) { + if (status == 0) { + cm.sendSimple("I appreciate you giving some rice cakes for the hungry Growlie. It looks like you have nothing else to do now. Would you like to leave this place?\r\n#L0#I want to give you the rest of my rice cakes.#l\r\n#L1#Yes, please get me out of here.#l"); + } else if (status == 1) { + chosen = selection; + if (selection == 0) { + if (cm.getPlayer().getGivenRiceCakes() >= 20) { + if (cm.getPlayer().getGottenRiceHat()) { + cm.sendNext("Do you like the hat I gave you? I ate so much of your rice cake that I will have to say no to your offer of rice cake for a little while."); + cm.dispose(); + } else { + cm.sendYesNo("I appreciate the thought, but I am okay now. I still have some of the rice cakes you gave me stored at home. To show you my appreciation, I prepared a small gift for you. Would you like to accept it?"); + } + } + } else if (selection == 1) { + cm.warp(100000200); + cm.dispose(); + } + cm.dispose(); + } else if (status == 2) { + if (chosen == 1) { + if (cm.canHold(1002798)) { // we will let them try again if they can't + cm.gainItem(1002798); + cm.setGottenRiceHat(true); + cm.sendNext("It will really go well with you. I promise."); + } else { + cm.getPlayer().dropMessage(1, "EQUIP inventory full."); + } + cm.dispose(); + } else if (cm.getPlayer().getGivenRiceCakes() < 20) { + cm.sendOk("Thank you for rice cake number " + cm.getPlayer().getGivenRiceCakes() + "!! I really appreciate it!"); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012113.js b/scripts/npc/world0/1012113.js new file mode 100644 index 0000000000..79c60a83dc --- /dev/null +++ b/scripts/npc/world0/1012113.js @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @npc Tommy (HPQ) + */ +var status = 0; +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + } else { + status++; + if (cm.getPlayer().getMap().getId() == 910010100) { //Clear map + if (status == 0) { + cm.sendNext("Hello, there! I'm Tommy. There's a Pig Town nearby where we're standing. The pigs there are rowdy and uncontrollable to the point where they have stolen numerous weapons from travelers. They were kicked out from their towns, and are currently hiding out at the Pig Town."); + } else if (status == 1) { + cm.sendYesNo("What do you think about making your way there with your party members and teach those rowdy pigs a lesson?"); + } else if (status == 2) { + cm.warp(910010200); + cm.dispose(); + return; + } + } else if (cm.getPlayer().getMap().getId() == 910010200) { //Bonus map + if (status == 0) { + cm.sendYesNo("Would you like to exit the bonus now?"); + } else { + cm.warp(910010400); + cm.dispose(); + return; + } + } else if (cm.getPlayer().getMap().getId() == 910010300) { //Exit map + if (status == 0) { + cm.sendOk("You will now be warped out, thank you for helping us!"); + } else { + cm.warp(100000200); + cm.dispose(); + return; + } + } + } +} + \ No newline at end of file diff --git a/scripts/npc/world0/1012114.js b/scripts/npc/world0/1012114.js new file mode 100644 index 0000000000..71b962c230 --- /dev/null +++ b/scripts/npc/world0/1012114.js @@ -0,0 +1,104 @@ +/* + Growlie (that fatass uhh.. hungry lion or whatever) + FightDesign @RageZONE + */ +importPackage(Packages.net.world); +importPackage(Packages.tools); +importPackage(java.awt); + +var status = 0; +var chosen = -1; + +function start() { + if (cm.isLeader()) { + var eim = cm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + cm.getParty().getLeader().getName()); + if (eim.getProperty("clear").equals("true")) { + status = 50; + cm.sendNext("Mmmm ... this is delicious. Please come see me next time for more #b#t4001101##k. Have a safe trip home!"); + } else + cm.sendSimple("Growl! I am Growlie, always ready to protect this place. What brought you here?\r\n#b#L0# Please tell me what this place is all about.#l\r\n#L1# I have brought #t4001101#.#l\r\n#L2# I would like to leave this place.#l"); + } else { + cm.sendSimple("Growl! I am Growlie, always ready to protect this place. What brought you here?\r\n#b#L0# Please tell me what this place is all about.#l\r\n#L2# I would like to leave this place.#l"); + } +} + +function action(mode, type, selection) { + if (mode < 0) { + cm.dispose(); + return; + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 0) + status += chosen == 2 ? 1 : -1; + else + status++; + if (status == 51) { + var eim = cm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + cm.getParty().getLeader().getName()); + eim.finishPQ(); + cm.dispose(); + return; + } + if (status == 1) { + if (chosen == -1) + chosen = selection; + if (chosen == 0) { + cm.sendNext("This place can be best described as the prime spot where you can taste the delicious rice cakes made by Moon Bunny every full moon."); + } else if (chosen == 1) { + if (cm.haveItem(4001101, 10)) { + cm.sendNext("Oh... isn't this rice cake made by Moon Bunny? Please hand me the rice cake."); + } else { + cm.sendOk("I advise you to check and make sure that you have indeed gathered up #b10 #t4001101#s#k."); + cm.dispose(); + } + } else if (chosen == 2) { + cm.sendYesNo("Are you sure you want to leave?"); + } + else { + cm.dispose(); + return; + } + } else if (status == 2) { + if (chosen == 0) { + cm.sendNextPrev("Gather up the primrose seeds from the primrose leaves all over this area, and plant the seeds at the footing near the crescent moon to see the primrose bloom. There are 6 types of primroses, and all of them require different footings. It is imperative that the footing fits the seed of the flower."); + } else if (chosen == 1) { + cm.sendNext("Mmmm ... this is delicious. Please come see me next time for more #b#t4001101##k. Have a safe trip home!"); + cm.gainItem(4001101, -10); + cm.givePartyExp("HenesysPQ"); + var eim = cm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + cm.getParty().getLeader().getName()); + eim.setProperty("clear", "true"); + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.allowSummonState(false); + map.killAllMonstersNotFriendly(); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + cm.dispose(); + } else { + if (mode == 1) { + var eim = cm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + cm.getParty().getLeader().getName()); + eim.disbandParty(); + } else { + cm.sendOk("You better collect some delicious rice cakes for me then, because time is running out, Growl !"); + } + cm.dispose(); + } + } else if (status == 3) { + if (chosen == 0) { + cm.sendNextPrev("When the flowers of primrose blooms, the full moon will rise, and that's when the Moon Bunnies will appear and start pounding the mill. Your task is to fight off the monsters to make sure that Moon Bunny can concentrate on making the best rice cake possible."); + } else if (chosen == 1) { + var eim = cm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + cm.getParty().getLeader().getName()); + eim.finishPQ(); + cm.dispose(); + } + } else if (status == 4) { + if (chosen == 0) { + cm.sendNextPrev("I would like for you and your party members to cooperate and get me 10 rice cakes. I strongly advise you to get me the rice cakes within the allotted time."); + } + } else { + cm.dispose(); + } + + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012118.js b/scripts/npc/world0/1012118.js new file mode 100644 index 0000000000..0be137b223 --- /dev/null +++ b/scripts/npc/world0/1012118.js @@ -0,0 +1,40 @@ +var status = -1; +var map = 910060000; +var num = 5; +var maxp = 5; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status <= 1) { + cm.dispose(); + return; + } + status--; + } + if (status == 0) { + if (cm.isQuestStarted(22515) || cm.isQuestStarted(22516) || cm.isQuestStarted(22517) || cm.isQuestStarted(22518)) { + cm.sendYesNo("Would you like to go in the special Spore Training Center?"); + status = 1; + } + var selStr = "Would you like to go into the Training Center?"; + for (var i = 0; i < num; i++) { + selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + if (selection < 0 || selection >= num) { + cm.dispose(); + } else if (cm.getPlayerCount(map + selection) >= maxp) { + cm.sendNext("This training center is full."); + status = -1; + } else { + cm.warp(map + selection, 0); + cm.dispose(); + } + } else if (status == 2) { + cm.warp(910060100,0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1012119.js b/scripts/npc/world0/1012119.js new file mode 100644 index 0000000000..0a06d9baed --- /dev/null +++ b/scripts/npc/world0/1012119.js @@ -0,0 +1,40 @@ +var status = -1; +var map = 910060000; +var num = 5; +var maxp = 5; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status <= 1) { + cm.dispose(); + return; + } + status--; + } + if (status == 0) { + if (cm.isQuestStarted(22515) || cm.isQuestStarted(22516) || cm.isQuestStarted(22517) || cm.isQuestStarted(22518)) { + cm.sendYesNo("Would you like to go in the special Spore Training Center?"); + status = 1; + } + var selStr = "Would you like to go into the Training Center?"; + for (var i = 0; i < num; i++) { + selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + if (selection < 0 || selection >= num) { + cm.dispose(); + } else if (cm.getPlayerCount(map + selection) >= maxp) { + cm.sendNext("This training center is full."); + status = -1; + } else { + cm.warp(map + selection, 0); + cm.dispose(); + } + } else if (status == 2) { + cm.warp(910060100,0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1013001.js b/scripts/npc/world0/1013001.js new file mode 100644 index 0000000000..a687e1c975 --- /dev/null +++ b/scripts/npc/world0/1013001.js @@ -0,0 +1,24 @@ +var status = -1; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + cm.sendNext("You, who are destined to be a Dragon Master... You have finally arrived.", 1); + } else if (status == 1) { + cm.sendNextPrev("Go and fulfill your duties as the Dragon Master...", 1); + } else if (status == 2) { + cm.warp(900090101); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1013002.js b/scripts/npc/world0/1013002.js new file mode 100644 index 0000000000..9c25c5b93a --- /dev/null +++ b/scripts/npc/world0/1013002.js @@ -0,0 +1,6 @@ +function start() { + cm.forceCompleteQuest(22011); + cm.playerMessage(5, "You have acquired a Dragon Egg.");//actually getInfoMessage + cm.warp(900090103); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1013104.js b/scripts/npc/world0/1013104.js new file mode 100644 index 0000000000..5d7cba0c69 --- /dev/null +++ b/scripts/npc/world0/1013104.js @@ -0,0 +1,13 @@ +function start() { + if (cm.isQuestStarted(22007)) { + if (!cm.haveItem(4032451)) { + cm.gainItem(4032451, true); + cm.sendNext("#b(You have obtained an Egg. Deliver it to Utah.)"); + } else { + cm.sendNext("#b(You have already obtained an Egg. Take the Egg you have and give it to Utah.)"); + } + } else { + cm.sendNext("#b(You don't need to take an egg now.)#k"); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1013200.js b/scripts/npc/world0/1013200.js new file mode 100644 index 0000000000..4c8d44b57a --- /dev/null +++ b/scripts/npc/world0/1013200.js @@ -0,0 +1,10 @@ +function start() { + if (!cm.isQuestStarted(22015)) { + cm.sendOk("#b(You are too far from the Piglet. Go closer to grab it.)"); + } else { + cm.gainItem(4032449, true); + cm.forceCompleteQuest(22015); + cm.playerMessage(5, "You have rescued the Piglet."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/10200.js b/scripts/npc/world0/10200.js new file mode 100644 index 0000000000..19636b3db8 --- /dev/null +++ b/scripts/npc/world0/10200.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + cm.sendNext("Bowmen are blessed with dexterity and power, taking charge of long-distance attacks, providing support for those at the front line of the battle. Very adept at using landscape as part of the arsenal."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0) + cm.sendNext("If you wish to experience what it's like to be a Bowman, come see me again."); + cm.dispose(); + return; + } + if (status == 0) { + cm.sendYesNo("Would you like to experience what it's like to be a Bowman?"); + } else if (status == 1){ + cm.lockUI(); + cm.warp(1020300, 0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/10201.js b/scripts/npc/world0/10201.js new file mode 100644 index 0000000000..a24c5461de --- /dev/null +++ b/scripts/npc/world0/10201.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + cm.sendNext("Magicians are armed with flashy element-based spells and secondary magic that aids party as a whole. After the 2nd job adv., the elemental-based magic will provide ample amount of damage to enemies of opposite element."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0) + cm.sendNext("If you wish to experience what it's like to be a Magician, come see me again."); + cm.dispose(); + return; + } + if (status == 0) { + cm.sendYesNo("Would you like to experience what it's like to be a Magician?"); + } else if (status == 1){ + cm.lockUI(); + cm.warp(1020200, 0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/10202.js b/scripts/npc/world0/10202.js new file mode 100644 index 0000000000..05a7f9e673 --- /dev/null +++ b/scripts/npc/world0/10202.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + cm.sendNext("Warriors possess an enormous power with stamina to back it up, and they shine the brightest in melee combat situation. Regular attacks are powerful to begin with, and armed with complex skills, the job is perfect for explosive attacks."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0) + cm.sendNext("If you wish to experience what it's like to be a Warrior, come see me again."); + cm.dispose(); + return; + } + if (status == 0) { + cm.sendYesNo("Would you like to experience what it's like to be a Warrior?"); + } else if (status == 1){ + cm.lockUI(); + cm.warp(1020100, 0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/10203.js b/scripts/npc/world0/10203.js new file mode 100644 index 0000000000..cf736b87f1 --- /dev/null +++ b/scripts/npc/world0/10203.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + cm.sendNext("Thieves are a perfect blend of luck, dexterity, and power that are adept at the surprise attacks against helpless enemies. A high level of avoidability and speed allows Thieves to attack enemies from various angles."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0) + cm.sendNext("If you wish to experience what it's like to be a Thief, come see me again."); + cm.dispose(); + return; + } + if (status == 0) { + cm.sendYesNo("Would you like to experience what it's like to be a Thief?"); + } else if (status == 1){ + cm.lockUI(); + cm.warp(1020400, 0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/10204.js b/scripts/npc/world0/10204.js new file mode 100644 index 0000000000..d96f9ecc87 --- /dev/null +++ b/scripts/npc/world0/10204.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + cm.sendNext("Pirates are blessed with outstanding dexterity and power, utilizing their guns for long-range attacks while using their power on melee combat situations. Gunslingers use elemental-based bullets for added damage, while Infighters transform to a different being for maximum effect."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0) + cm.sendNext("If you wish to experience what it's like to be a Pirate, come see me again."); + cm.dispose(); + return; + } + if (status == 0) { + cm.sendYesNo("Would you like to experience what it's like to be a Pirate?"); + } else if (status == 1){ + cm.lockUI(); + cm.warp(1020500, 0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1022000.js b/scripts/npc/world0/1022000.js new file mode 100644 index 0000000000..547d5d85d6 --- /dev/null +++ b/scripts/npc/world0/1022000.js @@ -0,0 +1,166 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Dances with Balrog + Warrior Job Advancement + Victoria Road : Warriors' Sanctuary (102000003) + + Custom Quest 100003, 100005 +*/ + +status = -1; +actionx = {"1stJob" : false, "2ndjob" : false, "3thJobI" : false, "3thJobC" : false}; +job = 110; + +function start() { + if (cm.getJobId() == 0) { + actionx["1stJob"] = true; + if (cm.getLevel() >= 10) + cm.sendNext("Do you want to become a Warrior? You need to meet some criteria in order to do so.#b You should be at least in level 10, with at least 35 in STR#k. Let's see..."); + else { + cm.sendOk("Train a bit more and I can show you the way of the #rWarrior#k."); + cm.dispose(); + } + } else if (cm.getLevel() >= 30 && cm.getJobId() == 100) { + actionx["2ndJob"] = true; + if (cm.haveItem(4031012)) + cm.sendNext("Oh... you came back safe! I knew you'd breeze through. I'll admit, you are a strong, formidable Warrior! Alright, I'll make you an even stronger Warrior than you already are. But before that, you need to choose one of the three paths that you'll be given. It isn't going to be easy, so if you have and questions, feel free to ask."); + else if (cm.haveItem(4031008)){ + cm.sendOk("Go and see the #b#p1072000##k."); + cm.dispose(); + } else + cm.sendNext("The progress you have made is astonishing."); + } else if (actionx["3thJobI"] || (cm.getPlayer().gotPartyQuestItem("JB3") && cm.getLevel() >= 70 && (cm.getJobId() % 10 == 0 && parseInt(cm.getJobId() / 100) == 1 && !cm.getPlayer().gotPartyQuestItem("JBP")))) { + actionx["3thJobI"] = true; + cm.sendNext("I was waiting for you. Few days ago, I heard about you from #b#p2020008##k in Ossyria. Well... I'd like to test your strength. There is a secret passage near the ant tunnel. Nobody but you can go into that passage. If you go into the passage, you will meat my the other self. Beat him and bring #b#t4031059##k to me."); + } else if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)){ + cm.sendNext("Please, bring me the #b#t4031059##k."); + cm.dispose(); + } else if (cm.haveItem(4031059) && cm.getPlayer().gotPartyQuestItem("JBP")){ + actionx["3thJobC"] = true; + cm.sendNext("Wow... You beat my the other self and brought #b#t4031059##k to me. Good! this surely proves your strength. In terms of strength, you are ready to advance to 3th job. As I promised, I will give #b#t4031057##k to you. Give this necklace to #b#p2020008##k in Ossyria and you will be able to take second test of 3rd job advancement. Good Luck~"); + } else { + cm.sendOk("You have chosen wisely."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + status++; + if (mode == 0 && type != 1) + status -= 2; + if (status == -1){ + start(); + return; + } else if (mode != 1 || status == 7 && type != 1 || (actionx["1stJob"] && status == 4) || (cm.haveItem(4031008) && status == 2) || (actionx["3thJob"] && status == 1)){ + if (mode == 0 && status == 2 && type == 1) + cm.sendOk("Make up your mind and visit me again."); + if (!(mode == 0 && type != 1)){ + cm.dispose(); + return; + } + } + if (actionx["1stJob"]){ + if (status == 0) + cm.sendNextPrev("It is an important and final choice. You will not be able to turn back."); + else if (status == 1){ + if (cm.canHold(1302077)){ + if (cm.getJobId() == 0){ + cm.changeJobById(100); + cm.gainItem(1302077, 1); + cm.resetStats(); + } + cm.sendNext("From here on out, you are going to the (Incomplete)"); + } else { + cm.sendNext("Make some room in your inventory and talk back to me."); + cm.dispose(); + } + } else if (status == 2) + cm.sendNextPrev("You've gotten much stronger now. Plus every single one of your inventories have added slots. A whole row, to be exact. Go see for it yourself. I just gave you a little bit of #bSP#k. When you open up the #bSkill#k menu on the lower left corner of the screen, there are skills you can learn by using SP's. One warning, though: You can't raise it all together all at once. There are also skills you can acquire only after having learned a couple of skills first."); + else if (status == 3) + cm.sendNextPrev("One more warning. Once you have chosed you (Incomplete)"); + } else if(actionx["2ndJob"]){ + if (status == 0){ + if (cm.haveItem(4031012)) + cm.sendSimple("Alright, when you have made your decision, click on [I'll choose my occupation] at the bottom.#b\r\n#L0#Please explain to me what being the Fighter is all about.\r\n#L1#Please explain to me what being the Page is all about.\r\n#L2#Please explain to me what being the Spearman is all about.\r\n#L3#I'll choose my occupation!"); + else { + cm.sendNext("Good decision. You look strong, but I need to see if you really are strong enough to pass the test, it's not a difficult test, so you'll do just fine. Here, take my letter first... make sure you don't lose it!"); + if(!cm.isQuestStarted(100003)) cm.startQuest(100003); + } + } else if (status == 1){ + if (!cm.haveItem(4031012)){ + if (cm.canHold(4031008)){ + if(!cm.haveItem(4031008)) + cm.gainItem(4031008, 1); + cm.sendNextPrev("Please get this letter to #b#p1072000##k who's around #b#m102020300##k near Perion. He is taking care of the job of an instructor in place of me. Give him the letter and he'll test you in place of me. Best of luck to you."); + } else { + cm.sendNext("Please, make some space in your inventory."); + cm.dispose(); + } + }else{ + if (selection < 3){ + cm.sendNext("Make up your mind and then talk to me."); //there goes the explanation of the 3 WARRIOR PATHS. + status -= 2; + } else + cm.sendSimple("Now... have you made up your mind? Please choose the job you'd like to select for your 2nd job advancement. #b\r\n#L0#Fighter\r\n#L1#Page\r\n#L2#Spearman"); + } + } else if (status == 2){ + if (cm.haveItem(4031008)){ + cm.dispose(); + return; + } + job += selection * 10; + cm.sendYesNo("So you want to make the second job advancement as the " + (job == 110 ? "#bFighter#k" : job == 120 ? "#bPage#k" : "#bSpearman#k") + "? You know you won't be able to choose a different job for the 2nd job advancement once you make your desicion here, right? Are you sure about this?"); + } else if (status == 3){ + if (cm.haveItem(4031012)) + cm.gainItem(4031012, -1); + cm.completeQuest(100005); + + if(job == 110) cm.sendNext("Alright, you have now become the #bFighter#k. A fighter strives to become the strongest of the strong, and never stops fighting. Don't ever lose that will to fight, and push forward 24/7. I'll help you become even stronger than you already are."); + else if(job == 120) cm.sendNext("Alright, you have now become a #bPage#k! Pages have high intelligence and bravery, which I hope you'll employ throughout your journey to the right path. I'll help you become much stronger than you already are."); + else cm.sendNext("Alright, you have now become the #bSpearman#k. The Spearman use the power of darkness to take out the enemies, always in shadows... Please believe in yourself and your awesome power as you go in your journey. I'll help you become much stronger than you are right now."); + if (cm.getJobId() != job) + cm.changeJobById(job); + } else if (status == 4) + cm.sendNextPrev("I have just given you a book that gives you the list of skills you can acquire as a " + (job == 110 ? "fighter" : job == 120 ? "page" : "spearman") + ". Also your etc inventory has expanded by adding another row to it. Your max HP and MP have increased, too. Go check and see for it yourself."); + else if (status == 5) + cm.sendNextPrev("I have also given you a little bit of #bSP#k. Open the #bSkill Menu#k located at the bottomleft corner. you'll be able to boost up the newer acquired 2nd level skills. A word of warning, though. You can't boost them up all at once. Some of the skills are only available after you have learned other skills. Make sure yo remember that."); + else if (status == 6) + cm.sendNextPrev((job == 110 ? "Fighter" : job == 120 ? "Page" : "Spearman") + " need to be strong. But remember that you can't abuse that power and use it on a weaking. Please use your enormous power the right way, because... for you to use that the right way, that is much harden than just getting stronger. Please find me after you have advanced much further. I'll be waiting for you."); + } else if (actionx["3thJobI"]){ + if (status == 0){ + if (cm.getPlayer().gotPartyQuestItem("JB3")){ + cm.getPlayer().removePartyQuestItem("JB3"); + cm.getPlayer().setPartyQuestItemObtained("JBP"); + } + cm.sendNextPrev("My the other self is quite strong. He uses many special skills and you should fight with him 1 on 1. However, people cannot stay long in the secret passage, so it is important to beat him ASAP. Well... Good luck I will look forward to you bringing #b#t4031059##k to me."); + } + } else if (actionx["3thJobC"]){ + cm.getPlayer().removePartyQuestItem("JBP"); + cm.gainItem(4031059, -1); + cm.gainItem(4031057, 1); + cm.dispose(); + } +} + +/* 3th Job Part + PORTAL 20 MINUTES. + */ \ No newline at end of file diff --git a/scripts/npc/world0/1022001.js b/scripts/npc/world0/1022001.js new file mode 100644 index 0000000000..df4e63fc8d --- /dev/null +++ b/scripts/npc/world0/1022001.js @@ -0,0 +1,54 @@ +var status = 0; +var maps = [104000000, 100000000, 101000000, 103000000, 120000000]; +var cost = [1000, 1000, 800, 1000, 800]; +var selectedMap = -1; +var mesos; + +function start() { + cm.sendNext("Hello, I drive the Regular Cab. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status >= 2 && mode == 0) { + cm.sendNext("There's a lot to see in this town, too. Come back and find us when you need to go to a different town."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + var selStr = ""; + if (cm.getJobId() == 0) + selStr += "We have a special 90% discount for beginners."; + selStr += "Choose your destination, for fees will change from place to place.#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cm.getJobId() == 0 ? cost[i] / 10 : cost[i]) + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 2) { + cm.sendYesNo("You don't have anything else to do here, huh? Do you really want to go to #b#m" + maps[selection] + "##k? It'll cost you #b"+ (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection]) + " mesos#k."); + selectedMap = selection; + } else if (status == 3) { + if (cm.getMeso() < (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection])) { + cm.sendNext("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab."); + cm.dispose(); + return; + } + if (cm.getJobId() == 0) { + mesos = -cost[selectedMap] / 10; + } else { + mesos = -cost[selectedMap]; + } + cm.gainMeso(mesos); + cm.warp(maps[selectedMap], 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1022003.js b/scripts/npc/world0/1022003.js new file mode 100644 index 0000000000..91857c4805 --- /dev/null +++ b/scripts/npc/world0/1022003.js @@ -0,0 +1,238 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Mr. Thunder + Victoria Road: Perion (102000000) + + Refining NPC: + * Minerals + * Jewels + * Shields + * Helmets +*/ +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Hm? Who might you be? Oh, you've heard about my forging skills? In that case, I'd be glad to process some of your ores... for a fee.#b" + var options = new Array("Refine a mineral ore","Refine a jewel ore","Upgrade a helmet","Upgrade a shield"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //mineral refine + var selStr = "So, what kind of mineral ore would you like to refine?#b"; + var minerals = new Array ("Bronze","Steel","Mithril","Adamantium","Silver","Orihalcon","Gold"); + for (var i = 0; i < minerals.length; i++){ + selStr += "\r\n#L" + i + "# " + minerals[i] + "#l"; + } + cm.sendSimple(selStr); + equip = false; + } + else if (selectedType == 1){ //jewel refine + var selStr = "So, what kind of jewel ore would you like to refine?#b"; + var jewels = new Array ("Garnet","Amethyst","Aquamarine","Emerald","Opal","Sapphire","Topaz","Diamond","Black Crystal"); + for (var i = 0; i < jewels.length; i++){ + selStr += "\r\n#L" + i + "# " + jewels[i] + "#l"; + } + cm.sendSimple(selStr); + equip = false; + } + else if (selectedType == 2){ //helmet refine + var selStr = "Ah, you wish to upgrade a helmet? Then tell me, which one?#b"; + var helmets = new Array ("Blue Metal Gear#k - Common Lv. 15#b","Yellow Metal Gear#k - Common Lv. 15#b","Metal Koif#k - Warrior Lv. 10#b","Mithril Koif#k - Warrior Lv. 10#b","Steel Helmet#k - Warrior Lv. 12#b","Mithril Helmet#k - Warrior Lv. 12#b","Steel Full Helm#k - Warrior Lv. 15#b", + "Mithril Full Helm#k - Warrior Lv. 15#b","Iron Viking Helm#k - Warrior Lv. 20#b","Mithril Viking Helm#k - Warrior Lv. 20#b","Steel Football Helmet#k - Warrior Lv. 20#b","Mithrill Football Helmet#k - Warrior Lv. 20#b","Mithril Sharp Helm#k - Warrior Lv. 22#b","Gold Sharp Helm#k - Warrior Lv. 22#b", + "Orihalcon Burgernet Helm#k - Warrior Lv. 25#b","Gold Burgernet Helm#k - Warrior Lv. 25#b","Great Red Helmet#k - Warrior Lv. 35#b","Great Blue Helmet#k - Warrior Lv. 35#b","Mithril Nordic Helm#k - Warrior Lv. 40#b","Gold Nordic Helm#k - Warrior Lv. 40#b","Mithril Crusader Helm#k - Warrior Lv. 50#b", + "Silver Crusader Helm#k - Warrior Lv. 50#b","Old Steel Nordic Helm#k - Warrior Lv. 55#b","Old Mithril Nordic Helm#k - Warrior Lv. 55#b"); + for (var i = 0; i < helmets.length; i++){ + selStr += "\r\n#L" + i + "# " + helmets[i] + "#l"; + } + cm.sendSimple(selStr); + equip = true; + } + else if (selectedType == 3){ //shield refine + var selStr = "Ah, you wish to upgrade a shield? Then tell me, which one?#b"; + var shields = new Array ("Adamantium Tower Shield#k - Warrior Lv. 40#b","Mithril Tower Shield#k - Warrior Lv. 40#b","Silver Legend Shield#k - Warrior Lv. 60#b","Adamantium Legend Shield#k - Warrior Lv. 60#b"); + for (var i = 0; i < shields.length; i++){ + selStr += "\r\n#L" + i + "# " + shields[i] + "#l"; + } + cm.sendSimple(selStr); + equip = true; + } + if (equip) + status++; + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 0){ //mineral refine + var itemSet = new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006); + var matSet = new Array(4010000,4010001,4010002,4010003,4010004,4010005,4010006); + var matQtySet = new Array(10,10,10,10,10,10,10); + var costSet = new Array(300,300,300,500,500,500,800); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //jewel refine + var itemSet = new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008); + var matSet = new Array(4020000,4020001,4020002,4020003,4020004,4020005,4020006,4020007,4020008); + var matQtySet = new Array(10,10,10,10,10,10,10,10,10); + var costSet = new Array (500,500,500,500,500,500,500,1000,3000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + + cm.sendGetNumber(prompt,1,1,100) + } + else if (status == 3 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + if (selectedType == 2){ //helmet refine + var itemSet = new Array(1002042,1002041,1002002,1002044,1002003,1002040,1002007,1002052,1002011,1002058,1002009,1002056,1002087,1002088,1002049,1002050,1002047,1002048,1002099,1002098,1002085,1002028,1002022,1002101); + var matSet = new Array(new Array(1002001,4011002),new Array(1002001,4021006),new Array(1002043,4011001),new Array(1002043,4011002),new Array(1002039,4011001),new Array(1002039,4011002),new Array(1002051,4011001),new Array(1002051,4011002),new Array(1002059,4011001),new Array(1002059,4011002), + new Array(1002055,4011001),new Array(1002055,4011002),new Array(1002027,4011002),new Array(1002027,4011006),new Array(1002005,4011006),new Array(1002005,4011005),new Array(1002004,4021000),new Array(1002004,4021005),new Array(1002021,4011002),new Array(1002021,4011006),new Array(1002086,4011002), + new Array(1002086,4011004),new Array(1002100,4011007,4011001),new Array(1002100,4011007,4011002)); + var matQtySet = new Array(new Array(1,1),new Array(1,1),new Array(1,1),new Array(1,1),new Array(1,1),new Array(1,1),new Array(1,2),new Array(1,2),new Array(1,3),new Array(1,3),new Array(1,3),new Array(1,3),new Array(1,4),new Array(1,4),new Array(1,5),new Array(1,5),new Array(1,3),new Array(1,3), + new Array(1,5),new Array(1,6),new Array(1,5),new Array(1,4),new Array(1,1,7),new Array(1,1,7)); + var costSet = new Array(500,300,500,800,500,800,1000,1500,1500,2000,1500,2000,2000,4000,4000,5000,8000,10000,12000,15000,20000,25000,30000,30000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //shield refine + var itemSet = new Array (1092014,1092013,1092010,1092011); + var matSet = new Array(new Array (1092012,4011003),new Array (1092012,4011002),new Array (1092009,4011007,4011004),new Array (1092009,4011007,4011003)); + var matQtySet = new Array (new Array (1,10),new Array (1,10),new Array (1,1,15),new Array (1,1,15)); + var costSet = new Array (100000,100000,120000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if (mats instanceof Array) + for(var i = 0; i < mats.length; i++) + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + cm.sendYesNo(prompt); + } + else if (status == 4 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost * qty) + { + cm.sendOk("I'm afraid you cannot afford my services."); + cm.dispose(); + return; + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /* if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] * qty == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + if (!cm.haveItem(mats[i],matQty[i] * selection)) complete=false; + + } + } + } + else { + if (!cm.haveItem(mats,matQty * selection)) complete=false; + + } */ + } + if (!complete) + cm.sendOk("I'm afraid you're missing something for the item you want. See you another time, yes?"); + else { + if (mats instanceof Array) + for (var i = 0; i < mats.length; i++) + cm.gainItem(mats[i], -matQty[i] * qty); + else + cm.gainItem(mats, -matQty * qty); + cm.gainMeso(-cost * qty); + cm.gainItem(item,qty); + cm.sendOk("There, finished. What do you think, a piece of art, isn't it? Well, if you need anything else, you nkow where to find me."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1022004.js b/scripts/npc/world0/1022004.js new file mode 100644 index 0000000000..5f4ad456d6 --- /dev/null +++ b/scripts/npc/world0/1022004.js @@ -0,0 +1,234 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Mr. Smith + Victoria Road: Perion (102000000) + + Refining NPC: + * Warrior Gloves - 10-60 + upgrades + * Processed Wood/Screws +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Um... Hi, I'm Mr. Thunder's apprentice. He's getting up there in age, so he handles most of the heavy-duty work while I handle some of the lighter jobs. What can I do for you?#b" + var options = new Array("Make a glove","Upgrade a glove","Create materials"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //glove refine + var selStr = "Okay, so which glove do you want me to make?#b"; + var items = new Array ("Juno#k - Warrior Lv. 10#b","Steel Fingerless Gloves#k - Warrior Lv. 15#b","Venon#k - Warrior Lv. 20#b","White Fingerless Gloves#k - Warrior Lv. 25#b", + "Bronze Missel#k - Warrior Lv. 30#b","Steel Briggon#k - Warrior Lv. 35#b","Iron Knuckle#k - Warrior Lv. 40#b","Steel Brist#k - Warrior Lv. 50#b","Bronze Clench#k - Warrior Lv. 60#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + equip = true; + } + else if (selectedType == 1){ //glove upgrade + var selStr = "Upgrade a glove? That shouldn't be too difficult. Which did you have in mind?#b"; + var crystals = new Array ("Steel Missel#k - Warrior Lv. 30#b","Orihalcon Missel#k - Warrior Lv. 30#b","Yellow Briggon#k - Warrior Lv. 35#b","Dark Briggon#k - Warrior Lv. 35#b", + "Adamantium Knuckle#k - Warrior Lv. 40#b","Dark Knuckle#k - Warrior Lv. 40#b","Mithril Brist#k - Warrior Lv. 50#b","Gold Brist#k - Warrior Lv. 50#b", + "Sapphire Clench#k - Warrior Lv. 60#b","Dark Clench#k - Warrior Lv. 60#b"); + for (var i = 0; i < crystals.length; i++){ + selStr += "\r\n#L" + i + "# " + crystals[i] + "#l"; + } + cm.sendSimple(selStr); + equip = true; + } + else if (selectedType == 2){ //material refine + var selStr = "Materials? I know of a few materials that I can make for you...#b"; + var materials = new Array ("Make Processed Wood with Tree Branch","Make Processed Wood with Firewood","Make Screws (packs of 15)"); + for (var i = 0; i < materials.length; i++){ + selStr += "\r\n#L" + i + "# " + materials[i] + "#l"; + } + cm.sendSimple(selStr); + equip = false; + } + if (equip) + status++; + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 2){ //material refine + var itemSet = new Array (4003001,4003001,4003000); + var matSet = new Array(4000003,4000018,new Array (4011000,4011001)); + var matQtySet = new Array (10,5,new Array (1,1)); + var costSet = new Array (0,0,0) + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + + cm.sendGetNumber(prompt,1,1,100) + } + else if (status == 3 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + if (selectedType == 0){ //glove refine + var itemSet = new Array(1082003,1082000,1082004,1082001,1082007,1082008,1082023,1082009,1082059); + var matSet = new Array(new Array(4000021,4011001),4011001,new Array(4000021,4011000),4011001,new Array(4011000,4011001,4003000),new Array(4000021,4011001,4003000),new Array(4000021,4011001,4003000), + new Array(4011001,4021007,4000030,4003000),new Array(4011007,4011000,4011006,4000030,4003000)); + var matQtySet = new Array(new Array(15,1),2,new Array(40,2),2,new Array(3,2,15),new Array(30,4,15),new Array(50,5,40),new Array(3,2,30,45),new Array(1,8,2,50,50)); + var costSet = new Array(1000,2000,5000,10000,20000,30000,40000,50000,70000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //glove upgrade + var itemSet = new Array(1082005,1082006,1082035,1082036,1082024,1082025,1082010,1082011,1082060,1082061); + var matSet = new Array(new Array(1082007,4011001),new Array(1082007,4011005),new Array(1082008,4021006),new Array(1082008,4021008),new Array(1082023,4011003),new Array(1082023,4021008), + new Array(1082009,4011002),new Array(1082009,4011006),new Array(1082059,4011002,4021005),new Array(1082059,4021007,4021008)); + var matQtySet = new Array (new Array(1,1),new Array(1,2),new Array(1,3),new Array(1,1),new Array(1,4),new Array(1,2),new Array(1,5),new Array(1,4),new Array(1,3,5),new Array(1,2,2)); + var costSet = new Array (20000,25000,30000,40000,45000,50000,55000,60000,70000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 4 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost * qty) + { + cm.sendOk("I may still be an apprentice, but I do need to earn a living."); + cm.dispose(); + return; + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /* + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] * qty == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + + if (!cm.haveItem(mats[i],matQty[i]*qty)) complete=false; + } + } + } + else { + if (!cm.haveItem(mats,matQty)) complete=false; + } + */ + } + + if (!complete) + cm.sendOk("I'm still an apprentice, I don't know if I can substitute other items in yet... Can you please bring what the recipe calls for?"); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + + if (cost > 0) + cm.gainMeso(-cost * qty); + + if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("Did that come out right? Come by me again if you have anything for me to practice on."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1022005.js b/scripts/npc/world0/1022005.js new file mode 100644 index 0000000000..337b5c6ae3 --- /dev/null +++ b/scripts/npc/world0/1022005.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1022005); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1022101.js b/scripts/npc/world0/1022101.js new file mode 100644 index 0000000000..082882db73 --- /dev/null +++ b/scripts/npc/world0/1022101.js @@ -0,0 +1,214 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Rooney + Map Name (Map ID) + Used to exchange VP for Maple Leaves, and Maple Leaves for rewards. + */ + +var itemToUse = 4001126; + +var chairs = new Array(3010000, 3010001, 3010002, 3010003, 3010004, 3010005, 3010006, 3010007, 3010008, 3010009, 3010010, 3010011, 3010012, 3010013, 3010015, 3010016, 3010017, 3010018, 3010019, 3010022, 3010023, 3010024, 3010025, 3010026, 3010028, 3010040, 3010041, 3010043, 3010045, 3010046, 3010047,3010057,3010058,3010060,3010061,3010062,3010063, 3010064,3010065,3010066,3010067,3010069,3010071,3010072,3010073,3010080,3010081,3010082,3010083, 3010084,3010085,3010097,3010098,3010099,3010101,3010106,3010116,3011000,3012005,3012010,3012011); +var scrolls = new Array(2040603,2044503,2041024,2041025,2044703,2044603,2043303,2040807,2040806,2040006,2040007,2043103,2043203,2043003,2040506,2044403,2040903,2040709,2040710,2040711,2044303,2043803,2040403,2044103,2044203,2044003,2043703); +var weapons = new Array(1302020, 1302030, 1302033, 1302058, 1302064, 1302080, 1312032, 1322054, 1332025, 1332055, 1332056, 1372034, 1382009, 1382012, 1382039, 1402039, 1412011, 1412027, 1422014, 1422029, 1432012, 1432040, 1432046, 1442024, 1442030, 1442051, 1452016, 1452022, 1452045, 1462014, 1462019, 1462040, 1472030, 1472032, 1472055, 1482020, 1482021, 1482022, 1492020, 1492021, 1492022, 1092030, 1092045, 1092046, 1092047); + +var nxAmount = 3000; +var chairAmount = 2; +var weaponAmount = 2; +var buffAmount = 2; +var hiredMerchantLength = 7; + +var buff1ID = 2022273; +var buff2ID = 2022179; +var status; +var vp; +var choice; + +function start() { + vp = cm.getClient().getVotePoints(); + if(vp == null) + vp = 0; + + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if(cm.getPlayer().getLevel() < 20) { + cm.sendOk("Hello, I am the Vote Point exchanger for #rMapleSolaxia#k!\r\n\r\nI am sorry, but I can only exchange Vote Points for players #blevel 20 or over#k."); + cm.dispose(); + return; + } + var outStr = "Hello, I am the Vote Point exchanger for #rMapleSolaxia#k!\r\n"; + outStr += "You currently have #r#c" + itemToUse + "##k #t" + itemToUse + "# and #r" + vp + "#k Vote Points.#b\r\n\r\n"; + outStr += "#L0#I would like to exchange my vote points for Maple Leaves#l\r\n"; + outStr += "#L1#I would like to exchange 1 #t" + itemToUse + "# for "+ nxAmount + " NX Cash#l\r\n"; + outStr += "#L2#I would like to exchange 1 #t" + itemToUse + "# for " + chairAmount + " Random Chair" + (chairAmount > 1 ? "s" : "") + "#l\r\n"; + outStr += "#L3#I would like to exchange 1 #t" + itemToUse + "# for " + weaponAmount + " Maple Weapons#l\r\n"; + outStr += "#L4#I would like to exchange 1 #t" + itemToUse + "# for " + buffAmount + " #t" + buff1ID + "#s and " + buffAmount + " #t" + buff2ID + "#s#l\r\n"; + outStr += "#L5#I would like to exchange 1 #t" + itemToUse + "# for a " + hiredMerchantLength + " Day Hired Merchant#l\r\n"; + cm.sendSimple(outStr); + } else if(status == 1) { + choice = selection; + + if(selection > 0) { + if(!cm.haveItem(itemToUse) && vp == 0) { + cm.sendOk("I'm sorry, but you don't have any #t" +itemToUse + " or Vote Points."); + cm.dispose(); + return; + } + } + + if(selection == 0) { + // Exchange VP for leaves + if(vp <= 0) { + cm.sendOk("I'm sorry, but you don't have any Vote Points to exchange!"); + cm.dispose(); + return; + } + cm.sendYesNo("Would you like to exchange " + vp + " Vote Point" + (vp > 0 ? "s" : "") + " for " + vp + " #t" + itemToUse + "# " + (vp > 0 ? "s" : "") + "?"); + } else if(selection == 1) { + // Exchange 1 Leaf for Cash + cm.sendYesNo("Would you like to exchange 1 #t" + itemToUse + "# for " + nxAmount + " NX Cash?"); + } else if(selection == 2) { + // Exchange 1 Leaf for Chair + cm.sendYesNo("Would you like to exchange 1 #t" + itemToUse + "# for " + chairAmount + " Random Chair" + (chairAmount > 1 ? "s" : "") + "?"); + } else if(selection == 3) { + // Exchange 1 Leaf for Maple Weapons + cm.sendYesNo("Would you like to exchange 1 #t" + itemToUse + "# for " + weaponAmount + " Random Maple Weapons?"); + } else if(selection == 4) { + // Exchange 1 Leaf for Apples/Cheese + cm.sendYesNo("Would you like to exchange 1 #t" + itemToUse + "# for " + buffAmount + " #t" + buff1ID + "# and #t" + buff2ID + "#?"); + } else if(selection == 5) { + // Echange 1 Leaf for Merchant + cm.sendYesNo("Would you like to exchange 1 #t" + itemToUse + "# for a " + hiredMerchantLength + " Day Hired Merchant?"); + } else { + cm.dispose(); + } + } else if(status == 2) { + var useVP = false; + if(!cm.hasItem(itemToUse) && vp > 0) + useVP = true; + + if(choice == 0) { + // VP Exchange + if(!cm.canHold(itemToUse)) { + cm.sendOk("It looks like you don't have enough space in your #rETC#k inventory to hold the #t" + itemToUse + "#" + (vp > 0 ? "s" : "") + "."); + cm.dispose(); + return; + } + + cm.getClient().useVotePoints(vp); + cm.gainItem(itemToUse, vp); + cm.dispose(); + } else if(choice == 1) { + // Leaf for Cash + if(useVP) + cm.getClient().useVotePoints(1); + else + cm.gainItem(itemToUse, -1); + + cm.getPlayer().getCashShop().gainCash(1, nxAmount); + cm.getPlayer().announce(Packages.tools.MaplePacketCreator.earnTitleMessage("You have earned " + nxAmount + " NX")); + cm.logLeaf(nxAmount + " NX"); + cm.dispose(); + } else if(choice == 2) { + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.SETUP).isFull(chairAmount)) { + + var chairStr = ""; + for(var i = 0; i < chairAmount; i++) { + var chair = chairs[Math.floor(Math.random() * chairs.length)]; + cm.gainItem(chair, 1, true); + chairStr += chair + " "; + } + + if(useVP) + cm.getClient().useVotePoints(1); + else + cm.gainItem(itemToUse, -1); + + cm.logLeaf("Chair ID: " + chairStr); + cm.dispose(); + } else { + cm.sendOk("Please make sure you have enough space to hold the items!"); + } + } else if(choice == 3) { + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.EQUIP).isFull(weaponAmount)) { + + var weaponStr = ""; + for(var i = 0; i < weaponAmount; i++) { + var weapon = weapons[Math.floor(Math.random() * weapons.length)]; + cm.gainItem(weapon, 1, true, true); + weaponStr += weapon + " "; + } + + if(useVP) + cm.getClient().useVotePoints(1); + else + cm.gainItem(itemToUse, -1); + + cm.logLeaf("Maple Weapon IDs: " + weaponStr); + cm.dispose(); + } else { + cm.sendOk("Please make sure you have enough space to hold the items!"); + } + } else if(choice == 4) { + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.USE).isFull(2)) { + cm.gainItem(buff1ID, buffAmount, true); + cm.gainItem(buff2ID, buffAmount, true); + cm.gainItem(itemToUse, -1); + cm.logLeaf(buffAmount + " cheeses and apples"); + cm.dispose(); + } else { + cm.sendOk("Please make sure you have enough space to hold the items!"); + } + } else if(choice == 5) { + if(!cm.haveItem(5030000, 1)) { + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.CASH).isFull(1)){ + cm.gainItem(5030000, 1, false, true, 1000 * 60 * 60 * 24 * hiredMerchantLength); + + if(useVP) + cm.getClient().useVotePoints(1); + else + cm.gainItem(itemToUse, -1); + + cm.logLeaf(hiredMerchantLength + " day hired merchant"); + cm.dispose(); + } else { + cm.sendOk("Please make sure you have enough space to hold these items!"); + } + } else { + cm.sendOk("I can't give you a merchant if you already have one!"); + } + } + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1022105.js b/scripts/npc/world0/1022105.js new file mode 100644 index 0000000000..9fe941cea6 --- /dev/null +++ b/scripts/npc/world0/1022105.js @@ -0,0 +1,33 @@ +var status = -1; +var map = 910220000; +var num = 5; +var maxp = 5; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status <= 1) { + cm.dispose(); + return; + } + status--; + } + if (status == 0) { + var selStr = "Would you like to go into the Training Center?"; + for (var i = 0; i < num; i++) { + selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + if (selection < 0 || selection >= num) { + cm.dispose(); + } else if (cm.getPlayerCount(map + selection) >= maxp) { + cm.sendNext("This training center is full."); + status = -1; + } else { + cm.warp(map + selection, 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032000.js b/scripts/npc/world0/1032000.js new file mode 100644 index 0000000000..676bb8c603 --- /dev/null +++ b/scripts/npc/world0/1032000.js @@ -0,0 +1,54 @@ +var status = 0; +var maps = [104000000, 102000000, 100000000, 103000000, 120000000]; +var cost = [1000, 1000, 1000, 1000, 800]; +var selectedMap = -1; +var mesos; + +function start() { + cm.sendNext("Hello, I drive the Regular Cab. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status >= 2 && mode == 0) { + cm.sendNext("There's a lot to see in this town, too. Come back and find us when you need to go to a different town."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + var selStr = ""; + if (cm.getJobId() == 0) + selStr += "We have a special 90% discount for beginners."; + selStr += "Choose your destination, for fees will change from place to place.#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cm.getJobId() == 0 ? cost[i] / 10 : cost[i]) + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 2) { + cm.sendYesNo("You don't have anything else to do here, huh? Do you really want to go to #b#m" + maps[selection] + "##k? It'll cost you #b"+ (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection]) + " mesos#k."); + selectedMap = selection; + } else if (status == 3) { + if (cm.getMeso() < (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection])) { + cm.sendNext("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab."); + cm.dispose(); + return; + } + if (cm.getJobId() == 0) { + mesos = -cost[selectedMap] / 10; + } else { + mesos = -cost[selectedMap]; + } + cm.gainMeso(mesos); + cm.warp(maps[selectedMap], 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032001.js b/scripts/npc/world0/1032001.js new file mode 100644 index 0000000000..7a06592b75 --- /dev/null +++ b/scripts/npc/world0/1032001.js @@ -0,0 +1,164 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Grendel the Really Old + Magician Job Advancement + Victoria Road : Magic Library (101000003) + + Custom Quest 100006, 100008, 100100, 100101 +*/ + +status = -1; +actionx = {"1stJob" : false, "2ndjob" : false, "3thJobI" : false, "3thJobC" : false}; +job = 210; + +function start() { + if (cm.getJobId() == 0) { + actionx["1stJob"] = true; + if (cm.getLevel() >= 8) + cm.sendNext("Want to be a magician? There are some standards to meet. because we can't just accept EVERYONE in... #bYour level should be at least 8#k, with getting INT as your top priority. Let's see."); + else { + cm.sendOk("Train a bit more and I can show you the way of the #rMagician#k."); + cm.dispose(); + } + } else if (cm.getLevel() >= 30 && cm.getJobId() == 200) { + actionx["2ndJob"] = true; + if (cm.haveItem(4031012)) + cm.sendNext("I see you have done well. I will allow you to take the next step on your long road."); + else if (cm.haveItem(4031009)){ + cm.sendOk("Go and see the #b#p1072001##k."); + cm.dispose(); + } else + cm.sendNext("The progress you have made is astonishing."); + } else if (actionx["3thJobI"] || (cm.getPlayer().gotPartyQuestItem("JB3") && cm.getLevel() >= 70 && cm.getJobId() % 10 == 0 && parseInt(cm.getJobId() / 100) == 2 && !cm.getPlayer().gotPartyQuestItem("JBP"))){ + actionx["3thJobI"] = true; + cm.sendNext("There you are. A few days ago, #b#p2020009##k of Ossyria talked to me about you. I see that you are interested in making the leap to the enlightened of the third job advancement for magicians. To archieve that goal, I will have to test your strength in order to see whether you are worthy of the advancement. There is an opening in the middle of a deep forest of evil in Victoria Island, where it'll lead you to a secret passage. Once inside, you'll face a clone of myself. Your task is to defeat him and bring #b#t4031059##k back with you."); + } else if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)){ + cm.sendNext("Please, bring me the #b#t4031059##k from my clone. You can find him inside a hole in space which is deep in a forest of evil."); + cm.dispose(); + } else if (cm.haveItem(4031059) && cm.getPlayer().gotPartyQuestItem("JBP")){ + actionx["3thJobC"] = true; + cm.sendNext("Nice work. You have defeated my clone and brought #b#t4031059##k back safely. You have now proven yourself worthy of the 3rd job advancement from the physical standpoint. Now you should give this necklace to #b#p2020011##k in Ossyria to take on the second part of the test. Good luck. You'll need it."); + } else { + cm.sendOk("You have chosen wisely."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + status++; + if (mode == 0 && type == 0) + status -= 2; + if (status == -1){ + start(); + return; + } else if (mode != 1 || status == 7 || (actionx["1stJob"] && status == 4) || (cm.haveItem(4031008) && status == 2) || (actionx["3thJobI"] && status == 1)){ + if (mode == 0 && status == 2 && type == 1) + cm.sendOk("You know there is no other choice..."); + if (!(mode == 0 && type == 0)){ + cm.dispose(); + return; + } + } + if (actionx["1stJob"]){ + if (status == 0) + cm.sendYesNo("Oh...! You look like someone that can definitely be a part of us... all you need is a little sinister mind, and... yeah... so, what do you think? Wanna be the Magician?"); + else if (status == 1){ + if (cm.canHold(1372043)){ + if (cm.getJobId() == 0){ + cm.changeJobById(200); + cm.gainItem(1372043, 1); + cm.resetStats(); + } + cm.sendNext("Alright, from here out, you are a part of us! You'll be living the life of a wanderer at ..., but just be patient as soon, you'll be living the high life. Alright, it ain't much, but I'll give you some of my abilities... HAAAHHH!!!"); + } else { + cm.sendNext("Make some room in your inventory and talk back to me."); + cm.dispose(); + } + } else if (status == 2) + cm.sendNextPrev("You've gotten much stronger now. Plus every single one of your inventories have added slots. A whole row, to be exact. Go see for it yourself. I just gave you a little bit of #bSP#k. When you open up the #bSkill#k menu on the lower left corner of the screen, there are skills you can learn by using SP's. One warning, though: You can't raise it all together all at once. There are also skills you can acquire only after having learned a couple of skills first."); + else if (status == 3) + cm.sendNextPrev("But remember, skills aren't everything. Your stats should support your skills as a Magician, also. Magicians use INT as their main stat, and LUK as their secondary stat. If raising stats is difficult, just use #bAuto-Assign#k"); + else if (status == 4) + cm.sendNextPrev("Now, one more word of warning to you. If you fail in battle from this point on, you will lose a portion of your total EXP. Be extra mindful of this, since you have less HP than most."); + else if (status == 5) + cm.sendPrev("This is all I can teach you. Good luck on your journey, young Magician."); + } else if(actionx["2ndJob"]){ + if (status == 0){ + if (cm.haveItem(4031012)) + cm.sendSimple("Alright, when you have made your decision, click on [I'll choose my occupation] at the bottom.#b\r\n#L0#Please explain to me what being the Wizard (Fire / Poison) is all about.\r\n#L1#Please explain to me what being the Wizard (Ice / Lighting) is all about.\r\n#L2#Please explain to me what being the Cleric is all about.\r\n#L3#I'll choose my occupation!"); + else { + cm.sendNext("Good decision. You look strong, but I need to see if you really are strong enough to pass the test, it's not a difficult test, so you'll do just fine. Here, take my letter first... make sure you don't lose it!"); + if(!cm.isQuestStarted(100006)) cm.startQuest(100006); + } + } else if (status == 1){ + if (!cm.haveItem(4031012)){ + if (cm.canHold(4031009)){ + if(!cm.haveItem(4031009)) + cm.gainItem(4031009, 1); + cm.sendNextPrev("Please get this letter to #b#p1072001##k who's around #b#m101020000##k near Ellinia. He is taking care of the job of an instructor in place of me. Give him the letter and he'll test you in place of me. Best of luck to you."); + } else { + cm.sendNext("Please, make some space in your inventory."); + cm.dispose(); + } + }else{ + if (selection < 3){ + cm.sendNext("Not done."); + status -= 2; + } else + cm.sendSimple("Now... have you made up your mind? Please choose the job you'd like to select for your 2nd job advancement. #b\r\n#L0#Wizard (Fire / Poison)\r\n#L1#Wizard (Ice / Lighting)\r\n#L2#Cleric"); + } + } else if (status == 2){ + if (cm.haveItem(4031009)){ + cm.dispose(); + return; + } + job += selection * 10; + cm.sendYesNo("So you want to make the second job advancement as the " + (job == 210 ? "#bWizard (Fire / Poison)#k" : job == 220 ? "#bWizard (Ice / Lighting)#k" : "#bCleric#k") + "? You know you won't be able to choose a different job for the 2nd job advancement once you make your desicion here, right?"); + } else if (status == 3){ + if (cm.haveItem(4031012)) + cm.gainItem(4031012, -1); + cm.completeQuest(100008); + cm.sendNext("Alright, you're the " + (job == 210 ? "#bWizard (Fire / Poison)#k" : job == 220 ? "#bWizard (Ice / Lighting)#k" : "#bCleric#k") + " from here on out. Mages and wizards are the intelligent bunch with incredible magical prowess, able to pierce the mind and the psychological structure of the monsters with ease... please train yourself each and everyday. I'll help you become even stronger than you already are."); + if (cm.getJobId() != job) + cm.changeJobById(job); + } else if (status == 4) + cm.sendNextPrev("I have just given you a book that gives you the list of skills you can acquire as a " + (job == 210 ? "#bWizard (Fire / Poison)#k" : job == 220 ? "#bWizard (Ice / Lighting)#k" : "#bCleric#k") + ". Also your etc inventory has expanded by adding another row to it. Your max HP and MP have increased, too. Go check and see for it yourself."); + else if (status == 5) + cm.sendNextPrev("I have also given you a little bit of #bSP#k. Open the #bSkill Menu#k located at the bottomleft corner. you'll be able to boost up the newer acquired 2nd level skills. A word of warning, though. You can't boost them up all at once. Some of the skills are only available after you have learned other skills. Make sure you remember that."); + else if (status == 6) + cm.sendNextPrev((job == 210 ? "Wizard (Fire / Poison)" : job == 220 ? "Wizard (Ice / Lighting)" : "Cleric") + " need to be strong. But remember that you can't abuse that power and use it on a weaking. Please use your enormous power the right way, because... for you to use that the right way, that is much harden than just getting stronger. Please find me after you have advanced much further. I'll be waiting for you."); + } else if (actionx["3thJobI"]){ + if (status == 0){ + if (cm.getPlayer().gotPartyQuestItem("JB3")){ + cm.getPlayer().removePartyQuestItem("JB3"); + cm.getPlayer().removePartyQuestItem("JB3"); + cm.getPlayer().setPartyQuestItemObtained("JBP"); + } + cm.sendNextPrev("Since he is a clone of myself, you can expect a tough battle ahead. He uses a number of special attacking skills unlike any you have ever seen, and it is your task to successfully take him one on one. There is a time limit in the secret passage, so it is crucial that you defeat him within the time limit. I wish you the best of luck, and I hope you bring the #b#t4031059##k with you."); + } + } else if (actionx["3thJobC"]){ + cm.getPlayer().removePartyQuestItem("JBP"); + cm.gainItem(4031059, -1); + cm.gainItem(4031057, 1); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032002.js b/scripts/npc/world0/1032002.js new file mode 100644 index 0000000000..0a57707201 --- /dev/null +++ b/scripts/npc/world0/1032002.js @@ -0,0 +1,249 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Francois + Victoria Island: Ellinia (101000000) + + Refining NPC: (magicians) + * Gloves + * Glove Upgrades + * Hats + * Wand + * Staff +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Welcome to my eco-safe refining operation! What would you like today?#b" + var options = new Array("Make a glove","Upgrade a glove","Upgrade a hat","Make a wand","Make a staff"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //glove refine + var selStr = "So, what kind of glove would you like me to make?#b"; + var items = new Array ("Lemona#k - Magician Lv. 15#b","Blue Morrican#k - Magician Lv. 20#b","Ocean Mesana#k - Magician Lv. 25#b","Red Lutia#k - Magician Lv. 30#b","Red Noel#k - Magician Lv. 35#b","Red Arten#k - Magician Lv. 40#b", + "Red Pennance#k - Magician Lv. 50#b","Steel Manute#k - Magician Lv. 60#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //glove upgrade + var selStr = "So, what kind of glove are you looking to upgrade to?#b"; + var items = new Array ("Green Morrican#k - Magician Lv. 20#b","Purple Morrican#k - Magician Lv. 20#b","Blood Mesana#k - Magician Lv. 25#b","Dark Mesana#k - Magician Lv. 25#b","Blue Lutia#k - Magician Lv. 30#b","Black Lutia#k - Magician Lv. 30#b", + "Blue Noel#k - Magician Lv. 35#b","Dark Noel#k - Magician Lv. 35#b","Blue Arten#k - Magician Lv. 40#b","Dark Arten#k - Magician Lv. 40#b","Blue Pennance#k - Magician Lv. 50#b","Dark Pennance#k - Magician Lv. 50#b", + "Gold Manute#k - Magician Lv. 60#b","Dark Manute#k - Magician Lv. 60#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //hat upgrade + var selStr = "A hat? Which one were you thinking of?#b"; + var items = new Array ("Steel Pride#k - Magician Lv. 30#b","Golden Pride#k - Magician Lv. 30#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 3){ //wand refine + var selStr = "A wand, huh? Prefer the smaller weapon that fits in your pocket? Which type are you seeking?#b"; + var items = new Array ("Wooden Wand#k - Common Lv. 8#b","Hardwood Wand#k - Common Lv. 13#b","Metal Wand#k - Common Lv. 18#b","Ice Wand#k - Magician Lv. 23#b","Mithril Wand#k - Magician Lv. 28#b", + "Wizard Wand#k - Magician Lv. 33#b","Fairy Wand#k - Magician Lv. 38#b","Cromi#k - Magician Lv. 48#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 4){ //staff refine + var selStr = "Ah, a staff, a great symbol of one's power! Which are you looking to make?#b"; + var items = new Array ("Wooden Staff#k - Magician Lv. 10#b","Sapphire Staff#k - Magician Lv. 15#b","Emerald Staff#k - Magician Lv. 15#b","Old Wooden Staff#k - Magician Lv. 20#b","Wizard Staff#k - Magician Lv. 25#b", + "Arc Staff#k - Magician Lv. 45#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + + if (selectedType == 0){ //glove refine + var itemSet = new Array(1082019,1082020,1082026,1082051,1082054,1082062,1082081,1082086); + var matSet = new Array(4000021,new Array(4000021,4011001),new Array(4000021,4011006),new Array(4000021,4021006,4021000),new Array(4000021,4011006,4011001,4021000), + new Array(4000021,4021000,4021006,4003000),new Array(4021000,4011006,4000030,4003000),new Array(4011007,4011001,4021007,4000030,4003000)); + var matQtySet = new Array(15,new Array(30,1),new Array(50,2),new Array(60,1,2),new Array(70,1,3,2),new Array(80,3,3,30),new Array(3,2,35,40),new Array(1,8,1,50,50)); + var costSet = new Array(7000,15000,20000,25000,30000,40000,50000,70000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //glove upgrade + var itemSet = new Array(1082021,1082022,1082027,1082028,1082052,1082053,1082055,1082056,1082063,1082064,1082082,1082080,1082087,1082088); + var matSet = new Array(new Array(1082020,4011001),new Array(1082020,4021001),new Array(1082026,4021000),new Array(1082026,4021008),new Array(1082051,4021005), + new Array(1082051,4021008),new Array(1082054,4021005),new Array(1082054,4021008),new Array(1082062,4021002),new Array(1082062,4021008), + new Array(1082081,4021002),new Array(1082081,4021008),new Array(1082086,4011004,4011006),new Array(1082086,4021008,4011006)); + var matQtySet = new Array(new Array(1,1),new Array(1,2),new Array(1,3),new Array(1,1),new Array(1,3),new Array(1,1),new Array(1,3),new Array(1,1),new Array(1,4), + new Array(1,2),new Array(1,5),new Array(1,3),new Array(1,3,5),new Array(1,2,3)); + var costSet = new Array (20000,25000,30000,40000,35000,40000,40000,45000,45000,50000,55000,60000,70000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //hat upgrade + var itemSet = new Array(1002065,1002013); + var matSet = new Array(new Array(1002064,4011001),new Array(1002064,4011006)); + var matQtySet = new Array(new Array(1,3),new Array(1,3)); + var costSet = new Array(40000,50000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //wand refine + var itemSet = new Array (1372005,1372006,1372002,1372004,1372003,1372001,1372000,1372007); + var matSet = new Array(4003001,new Array(4003001,4000001),new Array(4011001,4000009,4003000),new Array(4011002,4003002,4003000),new Array(4011002,4021002,4003000), + new Array(4021006,4011002,4011001,4003000),new Array(4021006,4021005,4021007,4003003,4003000),new Array(4011006,4021003,4021007,4021002,4003002,4003000)); + var matQtySet = new Array (5,new Array(10,50),new Array(1,30,5),new Array(2,1,10),new Array(3,1,10),new Array(5,3,1,15),new Array(5,5,1,1,20),new Array(4,3,2,1,1,30)); + var costSet = new Array (1000,3000,5000,12000,30000,60000,120000,200000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 4){ //staff refine + var itemSet = new Array (1382000,1382003,1382005,1382004,1382002,1382001); + var matSet = new Array(4003001,new Array(4021005,4011001,4003000),new Array(4021003,4011001,4003000),new Array(4003001,4011001,4003000), + new Array(4021006,4021001,4011001,4003000),new Array(4011001,4021006,4021001,4021005,4003000,4000010,4003003)); + var matQtySet = new Array (5,new Array(1,1,5),new Array(1,1,5),new Array(50,1,10),new Array(2,1,1,15),new Array(8,5,5,5,30,50,1)); + var costSet = new Array (2000,2000,2000,5000,12000,180000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 3 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost) + { + cm.sendOk("Sorry, but all of us need money to live. Come back when you can pay my fees, yes?") + cm.dispose(); + return; + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /*if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + + if (!cm.haveItem(mats[i],matQty[i])) complete=false; + } + } + } + else { + + if (!cm.haveItem(mats,matQty)) complete=false; + }*/ + } + + if (!complete) + cm.sendOk("Uhm... I don't keep extra material on me. Sorry. "); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } + else + cm.gainItem(mats, -matQty); + + if (cost > 0) + cm.gainMeso(-cost); + + cm.gainItem(item, 1); + cm.sendOk("It's a success! Oh, I've never felt so alive! Please come back again!"); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032003.js b/scripts/npc/world0/1032003.js new file mode 100644 index 0000000000..9ded974c18 --- /dev/null +++ b/scripts/npc/world0/1032003.js @@ -0,0 +1,81 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Shane - Ellinia (101000000) +-- By --------------------------------------------------------------------------------------------- + Unknown +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Statement fix [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var check = 0; + +function start() { + if (cm.getLevel() < 25) { + cm.sendOk("You must be a higher level to enter the Forest of Patience."); + cm.dispose(); + check = 1; + } + else + cm.sendYesNo("Hi, i'm Shane. I can let you into the Forest of Patience for a small fee. Would you like to enter for #b5000#k mesos?"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0) { + cm.sendOk("Alright, see you next time."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (check != 1) { + if (cm.getPlayer().getMeso() < 5000) { + cm.sendOk("Sorry but it doesn't like you have enough mesos!") + cm.dispose(); + } + else { + if (cm.isQuestStarted(2050)) + cm.warp(101000100, 0); + else if (cm.isQuestStarted(2051)) + cm.warp(101000102, 0); + else if (cm.getLevel() >= 25 && cm.getLevel() < 50) + cm.warp(101000100, 0); + else if (cm.getLevel() >= 50) + cm.warp(101000102, 0); + cm.gainMeso(-5000); + cm.dispose(); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032004.js b/scripts/npc/world0/1032004.js new file mode 100644 index 0000000000..db7c6dd7e0 --- /dev/null +++ b/scripts/npc/world0/1032004.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Shane 1032004 + * By Moogra +*/ + +function start() { + cm.sendYesNo("Would you like to return to Ellinia?"); +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(101000000,0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1032005.js b/scripts/npc/world0/1032005.js new file mode 100644 index 0000000000..f92abfea3e --- /dev/null +++ b/scripts/npc/world0/1032005.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + VIP Cab - Victoria Road : Ellinia (101000000) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var cost = 10000; + +function start() { + cm.sendNext("Hi there! This cab is for VIP customers only. Instead of just taking you to different towns like the regular cabs, we offer a much better service worthy of VIP class. It's a bit pricey, but... for only 10,000 mesos, we'll take you safely to the \r\n#bAnt Tunnel#k."); +} + +function action(mode, type, selection) { + status++; + if (mode == -1){ + if(mode == 0) + cm.sendNext("This town also has a lot to offer. Find us if and when you feel the need to go to the Ant Tunnel Park."); + cm.dispose(); + return; + } + if (status == 1) { + cm.sendYesNo(cm.getJobId() == 0 ? "We have a special 90% discount for beginners. The Ant Tunnel is located deep inside in the dungeon that's placed at the center of the Victoria Island, where the 24 Hr Mobile Store is. Would you like to go there for #b1,000 mesos#k?" : "The regular fee applies for all non-beginners. The Ant Tunnel is located deep inside in the dungeon that's placed at the center of the Victoria Island, where 24 Hr Mobile Store is. Would you like to go there for #b10,000 mesos#k?"); + cost *= cm.getJobId() == 0 ? 10 : 1; + } else if (status == 2) { + if (cm.getMeso() < cost) + cm.sendNext("It looks like you don't have enough mesos. Sorry but you won't be able to use this without it.") + else { + cm.gainMeso(-cost); + cm.warp(105070001); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032006.js b/scripts/npc/world0/1032006.js new file mode 100644 index 0000000000..755053fd35 --- /dev/null +++ b/scripts/npc/world0/1032006.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1032006); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1032007.js b/scripts/npc/world0/1032007.js new file mode 100644 index 0000000000..4535065c40 --- /dev/null +++ b/scripts/npc/world0/1032007.js @@ -0,0 +1,29 @@ +var status = 0; +var cost = 5000; + +function start() { + cm.sendYesNo("Hello, I'm in charge of selling tickets for the ship ride to Orbis Station of Ossyria. The ride to Orbis takes off every 15 minutes, beginning on the hour, and it'll cost you #b"+cost+" mesos#k. Are you sure you want to purchase #b#t4031045##k?"); +} + +function action(mode, type, selection) { + if(mode == -1) + cm.dispose(); + else { + if(mode == 0) { + cm.sendNext("You must have some business to take care of here, right?"); + cm.dispose(); + return; + } + status++; + if(status == 1) { + if (cm.getMeso() >= cost && cm.canHold(4031045)) { + cm.gainItem(4031045,1); + cm.gainMeso(-cost); + cm.dispose(); + } else { + cm.sendOk("Are you sure you have #b"+cost+" mesos#k? If so, then I urge you to check your etc. inventory, and see if it's full or not."); + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/1032008.js b/scripts/npc/world0/1032008.js new file mode 100644 index 0000000000..72295381c5 --- /dev/null +++ b/scripts/npc/world0/1032008.js @@ -0,0 +1,31 @@ +function start() { + if(cm.haveItem(4031045)){ + var em = cm.getEventManager("Boats"); + if (em.getProperty("entry") == "true") + cm.sendYesNo("Do you want to go to Orbis?"); + else{ + cm.sendOk("The boat to Orbis is already travelling, please be patient for the next one."); + cm.dispose(); + } + }else{ + cm.sendOk("Make sure you got a Orbis ticket to travel in this boat. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + var em = cm.getEventManager("Boats"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031045, -1); + cm.warp(101000301); + cm.dispose(); + } + else{ + cm.sendOk("The boat to Orbis is ready to take off, please be patient for the next one."); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032009.js b/scripts/npc/world0/1032009.js new file mode 100644 index 0000000000..472e5f70ac --- /dev/null +++ b/scripts/npc/world0/1032009.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +Purin (On Boat ) 1032009 +**/ + +var status = 0; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (status == 0) { + cm.sendYesNo("Do you wish to go to leave the boat?"); + status++; + } else { + if (mode < 1) { + cm.dispose(); + } else { + if (status == 1) { + cm.sendNext ("Alright, see you next time. Take care."); + status++; + } else if (status == 2) { + cm.warp(101000300, 0);// back to orbis + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/1032100.js b/scripts/npc/world0/1032100.js new file mode 100644 index 0000000000..341fc88975 --- /dev/null +++ b/scripts/npc/world0/1032100.js @@ -0,0 +1,116 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Arwen the Fairy - Victoria Road : Ellinia (101000000) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var item; +var selected; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status == 2 && mode == 0) { + cm.sendNext("It's not easy making " + item + ". Please get the materials ready."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if (cm.getLevel() >= 40) { + cm.sendNext("Yeah... I am the master alchemist of the fairies. But the fairies are not supposed to be in contact with a human being for a long period of time... A strong person like you will be fine, though. If you get me the materials, I'll make you a special item."); + } else { + cm.sendOk("I can make rare, valuable items but unfortunately I can't make it to a stranger like you."); + cm.dispose(); + } + } else if (status == 1) { + cm.sendSimple("What do you want to make?#b\r\n#L0#Moon Rock#l\r\n#L1#Star Rock#l\r\n#L2#Black Feather#l"); + } else if (status == 2) { + selected = selection; + if (selection == 0) { + item = "Moon Rock"; + cm.sendYesNo("So you want to make a Moon Rock? To do that you need to refine one of each of these: #bBronze Plate#k, #bSteel Plate#k,\r\n#bMithril Plate#k, #bAdamantium Plate#k, #bSilver Plate#k, #bOrihalcon Plate#k and #bGold Plate#k. Throw in 10,000 mesos and I'll make it for you."); + } else if (selection == 1) { + item = "Star Rock"; + cm.sendYesNo("So you want to make a Star Rock? To do that you need to refine one of each of these: #bGarnet#k, #bAmethyst#k, #bAquaMarine#k, #bEmerald#k, #bOpal#k, #bSapphire#k, #bTopaz#k, #bDiamond#k and #bBlack Crystal#k. Throw in 15,000 mesos and I'll make it for you."); + } else if (selection == 2) { + item = "Black Feather"; + cm.sendYesNo("So you want to make a Black Feather? To do that you need #b1 Flaming Feather#k, #b1 Moon Rock#k and #b1 Black Crystal#k. Throw in 30,000 mesos and I'll make it for you. Oh yeah, this piece of feather is a very special item, so if you drop it by any chance, it'll disappear, as well as you won't be able to give it away to someone else."); + } + } else if (status == 3) { + if (selected == 0) { + if (cm.haveItem(4011000) && cm.haveItem(4011001) && cm.haveItem(4011002) && cm.haveItem(4011003) && cm.haveItem(4011004) && cm.haveItem(4011005) && cm.haveItem(4011006) && cm.getMeso() > 10000) { + cm.gainMeso(-10000); + for(var i = 4011000; i<4011007; i++) { + cm.gainItem(i,-1); + } + cm.gainItem(4011007, 1); + cm.sendNext("Ok here, take " + item + ". It's well-made, probably because I'm using good materials. If you need my help down the road, feel free to come back."); + } else { + cm.sendNext("Are you sure you have enough mesos? Please check and see if you have the refined #bBronze Plate#k, #bSteel Plate#k,\r\n#bMithril Plate#k, #bAdamantium Plate#k, #bSilver Plate#k, #bOrihalcon Plate#k and #bGold Plate#k, one of each."); + } + } else if (selected == 1) { + if (cm.haveItem(4021000) && cm.haveItem(4021001) && cm.haveItem(4021002) && cm.haveItem(4021003) && cm.haveItem(4021004) && cm.haveItem(4021005) && cm.haveItem(4021006) && cm.haveItem(4021007) && cm.haveItem(4021008) && cm.getMeso() > 15000) { + cm.gainMeso(-15000); + for(var j = 4021000; j<4011009; j++) { + cm.gainItem(j,-1); + } + cm.gainItem(4021009, 1); + cm.sendNext("Ok here, take " + item + ". It's well-made, probably because I'm using good materials. If you need my help down the road, feel free to come back."); + } else { + cm.sendNext("Are you sure you have enough mesos? Please check and see if you have the refined #bGarnet#k, #bAmethyst#k, #bAquaMarine#k, #bEmerald#k, #bOpal#k, #bSapphire#k, #bTopaz#k, #bDiamond#k and #bBlack Crystal#k, one of each."); + } + } else if (selected == 2) { + if (cm.haveItem(4001006) && cm.haveItem(4011007) && cm.haveItem(4021008) && cm.getMeso() > 30000) { + cm.gainMeso(-30000); + for(var k = 4021000; k<4021009; k+=1001) { + cm.gainItem(k,-1); + } + cm.gainItem(4031042, 1); + cm.sendNext("Ok here, take " + item + ". It's well-made, probably because I'm using good materials. If you need my help down the road, feel free to come back."); + } else { + cm.sendNext("Are you sure you have enough mesos? Please check and see if you have the refined #bGarnet#k, #bAmethyst#k, #bAquaMarine#k, #bEmerald#k, #bOpal#k, #bSapphire#k, #bTopaz#k, #bDiamond#k and #bBlack Crystal#k, one of each."); + } + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032102.js b/scripts/npc/world0/1032102.js new file mode 100644 index 0000000000..2d0e7a8acf --- /dev/null +++ b/scripts/npc/world0/1032102.js @@ -0,0 +1,128 @@ +/* + Made by RMZero213 of RaGEZONE forums. + Just keep this header here and don't claim that you made it. +*/ + +/* + 1032102.js + Mar the Fairy + Dragon Evolver +*/ + +importPackage(Packages.client); +importPackage(Packages.server); + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0) { + cm.sendOk("Alright, see you next time."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendYesNo("I am Mar the Fairy. If you have a dragon at level 15 or higher and a rock of evolution. I can evolve your dragon. If you are lucky, you may even get a black one! Would you like me to do so?"); + } else if (status == 1) { + if (cm.haveItem(5000028, 1)) { + cm.gainItem(5000028, -1); + cm.gainItem(5000029, 1); + cm.sendOk("I don't know how you got that egg, but it has hatched, apparently!"); + cm.dispose(); + } else if (cm.getChar().getPet() == null) { + cm.sendOk("Make sure your pet is equipped."); + cm.dispose(); + } else if (cm.getChar().getPet().getItemId() < 5000029 || cm.getChar().getPet().getItemId() > 5000033 || !cm.haveItem(5380000,1)) { + cm.sendOk("You do not meet the requirements. You need #i5380000##t5380000#, as well as either one of #d#i5000029##t5000029##k, #g#i5000030##t5000030##k, #r#i5000031##t5000031##k, #b#i5000032##t5000032##k, or #e#i5000033##t5000033##n equipped. Please come back when you do."); + cm.dispose(); + } else if (cm.getChar().getPet().getLevel() < 15) { + cm.sendOk("Your pet must be level 15 or above to evolve."); + cm.dispose(); + } else if (cm.haveItem(5000029,2) || cm.haveItem(5000030,2) || cm.haveItem(5000031,2) || cm.haveItem(5000032,2) || cm.haveItem(5000033,2)) { + cm.sendSimple("You have a dragon which isn't out, and as well as a dragon which is out. I can remove one for you. Remember that the data for the dragon I am removing will be lost.\r\n#r#L0#Remove my CASH first slot.#l#k\r\n#b#L1#Remove the first dragon in my inventory.#l#k\r\n#g#L2#No thanks.#l#k"); + } else { + var i; + + for(i = 0; i < 3; i++) { + if(cm.getPlayer().getPet(i) != null && cm.getPlayer().getPet(i).getItemId() == 5000029) { + pet = cm.getPlayer().getPet(i); + break; + } + } + if(i == 3) { + cm.getPlayer().message("Pet could not be evolved."); + return; + } + + var id = cm.getPlayer().getPet().getItemId(); + var name = cm.getPlayer().getPet().getName(); + var level = cm.getPlayer().getPet().getLevel(); + var closeness = cm.getPlayer().getPet().getCloseness(); + var fullness = cm.getPlayer().getPet().getFullness(); + //MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (id < 5000029 || id > 5000033) { + cm.sendOk("Something wrong, try again."); + cm.dispose(); + } + var rand = 1 + Math.floor(Math.random() * 10); + var after = 0; + if (rand >= 1 && rand <= 3) { + after = 5000030; + } else if (rand >= 4 && rand <= 6) { + after = 5000031; + } else if (rand >= 7 && rand <= 9) { + after = 5000032; + } else if (rand == 10) { + after = 5000033; + } else { + cm.sendOk("Something wrong. Try again."); + cm.dispose(); + } + + /*if (name.equals(MapleItemInformationProvider.getInstance().getName(id))) { + name = MapleItemInformationProvider.getInstance().getName(after); + }*/ + + //cm.unequipPet(cm.getC()); + cm.getPlayer().unequipAllPets(); //IMPORTANT, you can bug/crash yourself if you don't unequip the pet to be deleted + cm.gainItem(5380000, -1); + qm.evolvePet(i, after); + + cm.sendOk("Your dragon has now evolved!! It used to be a #i" + id + "##t" + id + "#, and now it's a #i" + after + "##t" + after + "#!"); + cm.dispose(); + } + } else if (status == 2) { + if (selection == 0) { + MapleInventoryManipulator.removeFromSlot(cm.getC(), MapleInventoryType.CASH, 1, 1, true); + cm.sendOk("Your cash first slot is removed."); + } else if (selection == 1) { + if (cm.haveItem(5000029, 2)) { + cm.gainItem(5000029, -1); + } else if (cm.haveItem(5000030, 2)) { + cm.gainItem(5000030, -1); + } else if (cm.haveItem(5000031, 2)) { + cm.gainItem(5000031, -1); + } else if (cm.haveItem(5000032, 2)) { + cm.gainItem(5000032, -1); + } else if (cm.haveItem(5000033, 2)) { + cm.gainItem(5000033, -1); + } + cm.sendOk("The first dragon in your inventory is removed."); + } else if (selection == 2) { + cm.sendOk("Okay, come back next time."); + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1032114.js b/scripts/npc/world0/1032114.js new file mode 100644 index 0000000000..965f3c2257 --- /dev/null +++ b/scripts/npc/world0/1032114.js @@ -0,0 +1,33 @@ +var status = -1; +var map = 910120000; +var num = 5; +var maxp = 5; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status <= 1) { + cm.dispose(); + return; + } + status--; + } + if (status == 0) { + var selStr = "Would you like to go into the Training Center?"; + for (var i = 0; i < num; i++) { + selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + if (selection < 0 || selection >= num) { + cm.dispose(); + } else if (cm.getPlayerCount(map + selection) >= maxp) { + cm.sendNext("This training center is full."); + status = -1; + } else { + cm.warp(map + selection, 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1043000.js b/scripts/npc/world0/1043000.js new file mode 100644 index 0000000000..93105eab1f --- /dev/null +++ b/scripts/npc/world0/1043000.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Sabi JQ herb pile #1 +*/ +function start() { + var prizes = Array(1040052, 1040054, 1040130, 1041143, 1042013, 1042022, 1042034, 1042084, 1042098, 1042117, 1702002, 1702015); + var chances = Array(10, 10, 10, 15, 10, 10, 10, 10, 10, 10, 5, 5); + var totalodds = 0; + var choice = 0; + for (var i = 0; i < chances.length; i++) { + var itemGender = (Math.floor(prizes[i]/1000)%10); + if ((cm.getPlayer().getGender() != itemGender) && (itemGender != 2)) + chances[i] = 0; + } + for (var i = 0; i < chances.length; i++) + totalodds += chances[i]; + var randomPick = Math.floor(Math.random()*totalodds)+1; + for (var i = 0; i < chances.length; i++) { + randomPick -= chances[i]; + if (randomPick <= 0) { + choice = i; + randomPick = totalodds + 100; + } + } + if (cm.isQuestStarted(2050)) + cm.gainItem(4031020,1); + cm.gainItem(prizes[choice],1); + cm.warp(101000000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1043001.js b/scripts/npc/world0/1043001.js new file mode 100644 index 0000000000..c56162a8d5 --- /dev/null +++ b/scripts/npc/world0/1043001.js @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Sabi JQ herb pile #1 +*/ + +function start() { + var prizes = Array(1060041, 1060048, 1060116, 1061113, 1061130, 1061139, 1062009, 1062017, 1062024, 1062056, 1062061, 1702045, 1702114); + var chances = Array(10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 5, 5); + var totalodds = 0; + var choice = 0; + for (var i = 0; i < chances.length; i++) { + var itemGender = (Math.floor(prizes[i]/1000)%10); + if ((cm.getPlayer().getGender() != itemGender) && (itemGender != 2)) + chances[i] = 0; + } + for (var i = 0; i < chances.length; i++) + totalodds += chances[i]; + var randomPick = Math.floor(Math.random()*totalodds)+1; + for (var i = 0; i < chances.length; i++) { + randomPick -= chances[i]; + if (randomPick <= 0) { + choice = i; + randomPick = totalodds + 100; + } + } + if (cm.isQuestStarted(2051)) + cm.gainItem(4031032,1); + cm.gainItem(prizes[choice],1); + cm.warp(101000000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1052001.js b/scripts/npc/world0/1052001.js new file mode 100644 index 0000000000..0b410f56d8 --- /dev/null +++ b/scripts/npc/world0/1052001.js @@ -0,0 +1,164 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Dark Lord + Thief Job Advancement + Victoria Road : Thieves' Hideout (103000003) + Custom Quest 100009, 100011 +*/ + +status = -1; +actionx = {"1stJob" : false, "2ndjob" : false, "3thJobI" : false, "3thJobC" : false}; +job = 410; + +function start() { + if (cm.getJobId() == 0) { + actionx["1stJob"] = true; + if (cm.getLevel() >= 10) + cm.sendNext("Want to be a thief? There are some standards to meet. because we can't just accept EVERYONE in... #bYour level should be at least 10, with your DEX over 25#k. Let's see."); + else { + cm.sendOk("Train a bit more and I can show you the way of the #rThief#k."); + cm.dispose(); + } + } else if (cm.getLevel() >= 30 && cm.getJobId() == 400) { + actionx["2ndJob"] = true; + if (cm.haveItem(4031012)) + cm.sendNext("I see you have done well. I will allow you to take the next step on your long road."); + else if (cm.haveItem(4031011)){ + cm.sendOk("Go and see the #b#p1072003##k."); + cm.dispose(); + } else + cm.sendNext("The progress you have made is astonishing."); + } else if (actionx["3thJobI"] || (cm.getPlayer().gotPartyQuestItem("JB3") && cm.getLevel() >= 70 && cm.getJobId() % 10 == 0 && parseInt(cm.getJobId() / 100) == 4 && !cm.getPlayer().gotPartyQuestItem("JBP"))){ + actionx["3thJobI"] = true; + cm.sendNext("There you are. A few days ago, #b#p2020011##k of Ossyria talked to me about you. I see that you are interested in making the leap to the dark world of the third job advancement for thieves. To archieve that goal, I will have to test your strength in orden to see whether you are worthy of the advancement. There is an opening in the middle of a deep swamp in Victoria Island, where it'll lead you to a secret passage. Once inside, you'll face a clone of myself. Your task is to defeat him and bring #b#t4031059##k back with you."); + } else if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)){ + cm.sendNext("Please, bring me the #b#t4031059##k."); + cm.dispose(); + } else if (cm.haveItem(4031059) && cm.getPlayer().gotPartyQuestItem("JBP")){ + actionx["3thJobC"] = true; + cm.sendNext("Nice work. You have defeated my clone and brought #b#t4031059##k back safely. You have now proven yourself worthy of the 3rd job advancement from the physical standpoint. Now you should give this necklace to #b#p2020011##k in Ossyria to take on the second part of the test. Good luck. You'll need it."); + } else if (cm.isQuestStarted(6141)) { + cm.warp(910300000, 3); + } else { + cm.sendOk("You have chosen wisely."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + status++; + if (mode == 0 && type != 1) + status -= 2; + if (status == -1){ + start(); + return; + } else if (mode != 1 || status == 7 && type != 1 || (actionx["1stJob"] && status == 4) || (cm.haveItem(4031008) && status == 2) || (actionx["3thJobI"] && status == 1)){ + if (mode == 0 && status == 2 && type == 1) + cm.sendOk("You know there is no other choice..."); + if (!(mode == 0 && type != 1)){ + cm.dispose(); + return; + } + } + if (actionx["1stJob"]){ + if (status == 0) + cm.sendYesNo("Oh...! You look like someone that can definitely be a part of us... all you need is a little sinister mind, and... yeah... so, what do you think? Wanna be the Rogue?"); + else if (status == 1){ + if (cm.canHold(2070000) && cm.canHold(1472061)){ + if (cm.getJobId() == 0){ + cm.changeJobById(400); + cm.gainItem(2070000, 500); + cm.gainItem(1472061, 1); + cm.resetStats(); + } + cm.sendNext("Alright, from here out, you are a part of us! You'll be living the life of a wanderer at ..., but just be patient as soon, you'll be living the high life. Alright, it ain't much, but I'll give you some of my abilities... HAAAHHH!!!"); + } else { + cm.sendNext("Make some room in your inventory and talk back to me."); + cm.dispose(); + } + } else if (status == 2) + cm.sendNextPrev("You've gotten much stronger now. Plus every single one of your inventories have added slots. A whole row, to be exact. Go see for it yourself. I just gave you a little bit of #bSP#k. When you open up the #bSkill#k menu on the lower left corner of the screen, there are skills you can learn by using SP's. One warning, though: You can't raise it all together all at once. There are also skills you can acquire only after having learned a couple of skills first."); + else if (status == 3) + cm.sendNextPrev("One more warning. Once you have chosed you (Incomplete)"); + } else if(actionx["2ndJob"]){ + if (status == 0){ + if (cm.haveItem(4031012)) + cm.sendSimple("Alright, when you have made your decision, click on [I'll choose my occupation] at the bottom.#b\r\n#L0#Please explain to me what being the Assassin is all about.\r\n#L1#Please explain to me what being the Bandit is all about.\r\n#L3#I'll choose my occupation!"); + else { + cm.sendNext("Good decision. You look strong, but I need to see if you really are strong enough to pass the test, it's not a difficult test, so you'll do just fine. Here, take my letter first... make sure you don't lose it!"); + if(!cm.isQuestStarted(100009)) cm.startQuest(100009); + } + } else if (status == 1){ + if (!cm.haveItem(4031012)){ + if (cm.canHold(4031011)){ + if(!cm.haveItem(4031011)) + cm.gainItem(4031011, 1); + cm.sendNextPrev("Please get this letter to #b#p1072003##k who's around #b#m102040000##k near Kerning City. He is taking care of the job of an instructor in place of me. Give him the letter and he'll test you in place of me. Best of luck to you."); + } else { + cm.sendNext("Please, make some space in your inventory."); + cm.dispose(); + } + }else{ + if (selection < 3){ + cm.sendNext("Not done."); + status -= 2; + } else + cm.sendSimple("Now... have you made up your mind? Please choose the job you'd like to select for your 2nd job advancement. #b\r\n#L0#Assassin\r\n#L1#Bandit"); + } + } else if (status == 2){ + if (cm.haveItem(4031011)){ + cm.dispose(); + return; + } + job += selection * 10; + cm.sendYesNo("So you want to make the second job advancement as the " + (job == 410 ? "#bAssassin#k" : "#bBandit#k") + "? You know you won't be able to choose a different job for the 2nd job advancement once you make your desicion here, right?"); + } else if (status == 3){ + if (cm.haveItem(4031012)) + cm.gainItem(4031012, -1); + cm.completeQuest(100011); + + if(job == 410) cm.sendNext("Alright, from here on out you are the #bAssassin#k. Assassins have quick hands and quicker feets to dominate the enemies. Please keep training. I'll make you even more powerful than you are right now!"); + else cm.sendNext("Alright, you're the #bBandit from here on out. Bandits revel in shadows and darkness, waiting until the right time comes for them to stick a dagger through the enemy's hearth, suddenly and swiftly... please keep training. I'll make you even more powerful than you are right now."); + + if (cm.getJobId() != job) + cm.changeJobById(job); + } else if (status == 4) + cm.sendNextPrev("I have just given you a book that gives you the list of skills you can acquire as a " + (job == 410 ? "assassin" : "bandit") + ". Also your etc inventory has expanded by adding another row to it. Your max HP and MP have increased, too. Go check and see for it yourself."); + else if (status == 5) + cm.sendNextPrev("I have also given you a little bit of #bSP#k. Open the #bSkill Menu#k located at the bottomleft corner. you'll be able to boost up the newer acquired 2nd level skills. A word of warning, though. You can't boost them up all at once. Some of the skills are only available after you have learned other skills. Make sure yo remember that."); + else if (status == 6) + cm.sendNextPrev((job == 410 ? "Assassin" : "Bandit") + " need to be strong. But remember that you can't abuse that power and use it on a weaking. Please use your enormous power the right way, because... for you to use that the right way, that is much harden than just getting stronger. Please find me after you have advanced much further. I'll be waiting for you."); + } else if (actionx["3thJobI"]){ + if (status == 0){ + if (cm.getPlayer().gotPartyQuestItem("JB3")){ + cm.getPlayer().removePartyQuestItem("JB3"); + cm.getPlayer().setPartyQuestItemObtained("JBP"); + } + cm.sendNextPrev("Since he is a clone of myself, you can expect a tough battle ahead. He uses a number of special attacking skills unlike any you have ever seen, and it is your task to successfully take him one on one. There is a time limit in the secret passage, so it is crucial that you defeat him within the time limit. I wish you the best of luck, and I hope you bring the #b#t4031059##k with you."); + } + } else if (actionx["3thJobC"]){ + cm.getPlayer().removePartyQuestItem("JBP"); + cm.gainItem(4031059, -1); + cm.gainItem(4031057, 1); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052002.js b/scripts/npc/world0/1052002.js new file mode 100644 index 0000000000..1a0c8bdc85 --- /dev/null +++ b/scripts/npc/world0/1052002.js @@ -0,0 +1,265 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* JM from tha Streetz + Victoria Road: Kerning City (103000000) + + Refining NPC: + * Gloves + * Glove Upgrade + * Claw + * Claw Upgrade + * Processed Wood/Screws + + * Note: JM by default is used as a Megaphone shop. To move this shop to Frederick in the FM, + * following MySQL command: + * UPDATE `shops` SET `npcid`='9030000' WHERE (`shopid`='0') +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Pst... If you have the right goods, I can turn it into something niice...#b" + var options = new Array("Create a glove","Upgrade a glove","Create a claw","Upgrade a claw","Create materials"); + for (var i = 0; i < options.length; i++) + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //glove refine + var selStr = "So, what kind of glove would you like me to make?#b"; + var gloves = new Array ("Work Gloves#k - Common Lv. 10#b","Brown Duo#k - Thief Lv. 15#b","Blue Duo#k - Thief Lv. 15#b","Black Duo#k - Thief Lv. 15#b","Bronze Mischief#k - Thief Lv. 20#b","Bronze Wolfskin#k - Thief Lv. 25#b","Steel Sylvia#k - Thief Lv. 30#b", + "Steel Arbion#k - Thief Lv. 35#b","Red Cleave#k - Thief Lv. 40#b","Blue Moon Glove#k - Thief Lv. 50#b","Bronze Pow#k - Thief Lv. 60#b"); + for (var i = 0; i < gloves.length; i++) + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + equip = true; + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //glove upgrade + var selStr = "An upgraded glove? Sure thing, but note that upgrades won't carry over to the new item... #b"; + var gloves = new Array ("Mithril Mischief#k - Thief Lv. 20#b","Dark Mischief#k - Thief Lv. 20#b","Mithril Wolfskin#k - Thief Lv. 25#b", + "Dark Wolfskin#k - Thief Lv. 25#b","Silver Sylvia#k - Thief Lv. 30#b","Gold Sylvia#k - Thief Lv. 30#b","Orihalcon Arbion#k - Thief Lv. 35#b","Gold Arbion#k - Thief Lv. 35#b","Gold Cleave#k - Thief Lv. 40#b", + "Dark Cleave#k - Thief Lv. 40#b","Red Moon Glove#k - Thief Lv. 50#b","Brown Moon Glove#k - Thief Lv. 50#b","Silver Pow#k - Thief Lv. 60#b","Gold Pow#k - Thief Lv. 60#b"); + for (var i = 0; i < gloves.length; i++) + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + equip = true; + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //claw refine + var selStr = "So, what kind of claw would you like me to make?#b"; + var claws = new Array ("Steel Titans#k - Thief Lv. 15#b","Bronze Igor#k - Thief Lv. 20#b","Meba#k - Thief Lv. 25#b","Steel Guards#k - Thief Lv. 30#b","Bronze Guardian#k - Thief Lv. 35#b","Steel Avarice#k - Thief Lv. 40#b","Steel Slain#k - Thief Lv. 50#b"); + for (var i = 0; i < claws.length; i++){ + selStr += "\r\n#L" + i + "# " + claws[i] + "#l"; + } + equip = true; + cm.sendSimple(selStr); + } + else if (selectedType == 3){ //claw upgrade + var selStr = "An upgraded claw? Sure thing, but note that upgrades won't carry over to the new item...#b"; + var claws = new Array ("Mithril Titans#k - Thief Lv. 15#b","Gold Titans#k - Thief Lv. 15#b","Steel Igor#k - Thief Lv. 20#b","Adamantium Igor#k - Thief Lv. 20#b","Mithril Guards#k - Thief Lv. 30#b","Adamantium Guards#k - Thief Lv. 30#b", + "Silver Guardian#k - Thief Lv. 35#b","Dark Guardian#k - Thief Lv. 35#b","Blood Avarice#k - Thief Lv. 40#b","Adamantium Avarice#k - Thief Lv. 40#b","Dark Avarice#k - Thief Lv. 40#b","Blood Slain#k - Thief Lv. 50#b","Sapphire Slain#k - Thief Lv. 50#b"); + for (var i = 0; i < claws.length; i++){ + selStr += "\r\n#L" + i + "# " + claws[i] + "#l"; + } + equip = true; + cm.sendSimple(selStr); + } + else if (selectedType == 4){ //material refine + var selStr = "Materials? I know of a few materials that I can make for you...#b"; + var materials = new Array ("Make Processed Wood with Tree Branch","Make Processed Wood with Firewood","Make Screws (packs of 15)"); + for (var i = 0; i < materials.length; i++){ + selStr += "\r\n#L" + i + "# " + materials[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + if (equip) + status++; + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 4){ //material refine + var itemSet = new Array (4003001,4003001,4003000); + var matSet = new Array(4000003,4000018,new Array (4011000,4011001)); + var matQtySet = new Array (10,5,new Array (1,1)); + var costSet = new Array (0,0,0); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + + cm.sendGetNumber(prompt,1,1,100) + } + else if (status == 3 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + if (selectedType == 0){ //glove refine + var itemSet = new Array(1082002,1082029,1082030,1082031,1082032,1082037,1082042,1082046,1082075,1082065,1082092); + var matSet = new Array(4000021,new Array(4000021,4000018),new Array(4000021,4000015),new Array(4000021,4000020),new Array(4011000,4000021),new Array(4011000,4011001,4000021),new Array(4011001,4000021,4003000),new Array(4011001,4011000,4000021,4003000),new Array(4021000,4000014,4000021,4003000),new Array(4021005,4021008,4000030,4003000),new Array(4011007,4011000,4021007,4000030,4003000)); + var matQtySet = new Array(15,new Array(30,20),new Array(30,20),new Array(30,20),new Array(2,40),new Array(2,1,10),new Array(2,50,10),new Array(3,1,60,15),new Array(3,200,80,30),new Array(3,1,40,30),new Array(1,8,1,50,50)); + var costSet = new Array(1000,7000,7000,7000,10000,15000,25000,30000,40000,50000,70000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //glove upgrade + var itemSet = new Array(1082033,1082034,1082038,1082039,1082043,1082044,1082047,1082045,1082076,1082074,1082067,1082066,1082093,1082094); + var matSet = new Array(new Array(1082032,4011002),new Array(1082032,4021004),new Array(1082037,4011002),new Array(1082037,4021004),new Array(1082042,4011004),new Array(1082042,4011006),new Array(1082046,4011005),new Array(1082046,4011006),new Array(1082075,4011006),new Array(1082075,4021008),new Array(1082065,4021000),new Array(1082065,4011006,4021008),new Array(1082092,4011001,4000014),new Array(1082092,4011006,4000027)); + var matQtySet = new Array(new Array(1,1),new Array(1,1),new Array(1,2),new Array(1,2),new Array(1,2),new Array(1,1),new Array(1,3),new Array(1,2),new Array(1,4),new Array(1,2),new Array(1,5),new Array(1,2,1),new Array(1,7,200),new Array(1,7,150)); + var costSet = new Array (5000,7000,10000,12000,15000,20000,22000,25000,40000,50000,55000,60000,70000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //claw refine + var itemSet = new Array(1472001,1472004,1472007,1472008,1472011,1472014,1472018); + var matSet = new Array(new Array(4011001,4000021,4003000),new Array(4011000,4011001,4000021,4003000),new Array(1472000,4011001,4000021,4003001),new Array(4011000,4011001,4000021,4003000),new Array(4011000,4011001,4000021,4003000),new Array(4011000,4011001,4000021,4003000),new Array(4011000,4011001,4000030,4003000)); + var matQtySet = new Array(new Array(1,20,5),new Array(2,1,30,10),new Array(1,3,20,30),new Array(3,2,50,20),new Array(4,2,80,25),new Array(3,2,100,30),new Array(4,2,40,35)); + var costSet = new Array(2000,3000,5000,15000,30000,40000,50000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //claw upgrade + var itemSet = new Array (1472002,1472003,1472005,1472006,1472009,1472010,1472012,1472013,1472015,1472016,1472017,1472019,1472020); + var matSet = new Array(new Array(1472001,4011002),new Array(1472001,4011006),new Array(1472004,4011001),new Array(1472004,4011003),new Array(1472008,4011002),new Array(1472008,4011003),new Array(1472011,4011004),new Array(1472011,4021008),new Array(1472014,4021000),new Array(1472014,4011003),new Array(1472014,4021008),new Array(1472018,4021000),new Array(1472018,4021005)); + var matQtySet = new Array (new Array(1,1),new Array(1,1),new Array(1,2),new Array(1,2),new Array(1,3),new Array(1,3),new Array(1,4),new Array(1,1),new Array(1,5),new Array(1,5),new Array(1,2),new Array(1,6),new Array(1,6)); + var costSet = new Array (1000,2000,3000,5000,10000,15000,20000,25000,30000,30000,35000,40000,40000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 4 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost * qty) + { + cm.sendOk("I'm afraid you cannot afford my services."); + cm.dispose(); + return; + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + /* + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] * qty == 1) + if (!cm.haveItem(mats[i])) + complete = false; + else + if (!cm.haveItem(mats[i],matQty[i])) complete=false; + } + } + else + if (!cm.haveItem(mats,matQty)) complete=false; + */ + } + + if (!complete) + cm.sendOk("What are you trying to pull? I can't make anything unless you bring me what I ask for."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + if (cost > 0) + cm.gainMeso(-cost * qty); + if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("All done. If you need anything else... Well, I'm not going anywhere."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052003.js b/scripts/npc/world0/1052003.js new file mode 100644 index 0000000000..8896f48a4b --- /dev/null +++ b/scripts/npc/world0/1052003.js @@ -0,0 +1,211 @@ +/* Chris + Victoria Road : Kerning City Repair Shop (103000006) + + Refining NPC: + * Minerals + * Jewels + * Special - Iron Hog's Metal Hoof x 100 into Steel Plate + * Claws +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; +var last_use; //last item is a use item + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0) { + var selStr = "Yes, I do own this forge. If you're willing to pay, I can offer you some of my services.#b" + var options = new Array("Refine a mineral ore","Refine a jewel ore","I have Iron Hog's Metal Hoof...","Upgrade a claw"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1) { + selectedType = selection; + if (selectedType == 0){ //mineral refine + var selStr = "So, what kind of mineral ore would you like to refine?#b"; + var minerals = new Array ("Bronze","Steel","Mithril","Adamantium","Silver","Orihalcon","Gold"); + for (var i = 0; i < minerals.length; i++){ + selStr += "\r\n#L" + i + "# " + minerals[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //jewel refine + var selStr = "So, what kind of jewel ore would you like to refine?#b"; + var jewels = new Array ("Garnet","Amethyst","Aquamarine","Emerald","Opal","Sapphire","Topaz","Diamond","Black Crystal"); + for (var i = 0; i < jewels.length; i++){ + selStr += "\r\n#L" + i + "# " + jewels[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //foot refine + var selStr = "You know about that? Not many people realize the potential in the Iron Hog's Metal Hoof... I can make this into something special, if you want me to."; + equip = false; + cm.sendYesNo(selStr); + } + else if (selectedType == 3){ //claw refine + var selStr = "Ah, you wish to upgrade a claw? Then tell me, which one?#b"; + var claws = new Array ("Blood Gigantic#k - Thief Lv. 60#b","Sapphire Gigantic#k - Thief Lv. 60#b","Dark Gigantic#k - Thief Lv. 60#b"); + for (var i = 0; i < claws.length; i++){ + selStr += "\r\n#L" + i + "# " + claws[i] + "#l"; + } + equip = true; + cm.sendSimple(selStr); + } + if (equip) + status++; + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 0){ //mineral refine + var itemSet = new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006); + var matSet = new Array(4010000,4010001,4010002,4010003,4010004,4010005,4010006); + var matQtySet = new Array(10,10,10,10,10,10,10); + var costSet = new Array(300,300,300,500,500,500,800); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //jewel refine + var itemSet = new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008); + var matSet = new Array(4020000,4020001,4020002,4020003,4020004,4020005,4020006,4020007,4020008); + var matQtySet = new Array(10,10,10,10,10,10,10,10,10); + var costSet = new Array (500,500,500,500,500,500,500,1000,3000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //special refine + var itemSet = new Array(4011001,1); + var matSet = new Array(4000039,1); + var matQtySet = new Array (100,1); + var costSet = new Array (1000,1) + item = itemSet[0]; + mats = matSet[0]; + matQty = matQtySet[0]; + cost = costSet[0]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + + cm.sendGetNumber(prompt,1,1,100) + } + + else if (status == 3) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + last_use = false; + + if (selectedType == 3){ //claw refine + var itemSet = new Array (1472023,1472024,1472025); + var matSet = new Array(new Array (1472022,4011007,4021000,2012000),new Array (1472022,4011007,4021005,2012002),new Array (1472022,4011007,4021008,4000046)); + var matQtySet = new Array (new Array (1,1,8,10),new Array (1,1,8,10),new Array (1,1,3,5)); + var costSet = new Array (80000,80000,100000) + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + if (selectedItem != 2) + last_use = true; + } + + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for (var i = 0; i < mats.length; i++) { + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) { + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + } + cm.sendYesNo(prompt); + } else if (status == 4) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost * qty) { + cm.sendOk("Cash only, no credit."); + cm.dispose(); + return; + } else { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /*if (mats instanceof Array) { + for (var i = 0; complete && i < mats.length; i++) { + if (matQty[i] * qty == 1) { + complete = cm.haveItem(mats[i]); + } else { + complete = cm.haveItem(mats[i], matQty[i] * qty); + } + } + } else { + complete = cm.haveItem(mats, matQty * qty); + }*/ + } + + if (!complete) + cm.sendOk("I cannot accept substitutes. If you don't have what I need, then I won't be able to help you."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } else { + cm.gainItem(mats, -matQty * qty); + } + cm.gainMeso(-cost * qty); + cm.gainItem(item, qty); + cm.sendNext("Phew... I almost didn't think that would work for a second... Well, I hope you enjoy it, anyway."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052004.js b/scripts/npc/world0/1052004.js new file mode 100644 index 0000000000..7d8621e654 --- /dev/null +++ b/scripts/npc/world0/1052004.js @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Denma the Owner + Henesys VIP Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Well, hello! Welcome to the Henesys Plastic Surgery! Would you like to transform your face into something new? With a #b#t5152001##k, you can let us take care of the rest and have the face you've always wanted~!\r\n#L1#I would like to buy a #b#t5152001##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152001, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) + facenew.push(mface[i] + cm.getPlayer().getFace()% 1000 - (cm.getPlayer().getFace()% 100)); + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) + facenew.push(fface[i] + cm.getPlayer().getFace()% 1000 - (cm.getPlayer().getFace()% 100)); + } + cm.sendStyle("Let's see... I can totally transform your face into something new. Don't you want to try it? For #b#t5152001##k, you can get the face of your liking. Take your time in choosing the face of your preference.", facenew); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152001) == true){ + cm.gainItem(5152001, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } +} diff --git a/scripts/npc/world0/1052005.js b/scripts/npc/world0/1052005.js new file mode 100644 index 0000000000..3234dd4034 --- /dev/null +++ b/scripts/npc/world0/1052005.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Dr. Feeble + Henesys Random Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hi, I pretty much shouldn't be doing this, but with a #b#t5152000##k, I will do it anyways for you. But don't forget, it will be random!\r\n#L1#I would like to buy a #b#t5152000##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152000, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152000##k?"); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152000) == true){ + cm.gainItem(5152000, -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } + } +} diff --git a/scripts/npc/world0/1052006.js b/scripts/npc/world0/1052006.js new file mode 100644 index 0000000000..4b39ae6702 --- /dev/null +++ b/scripts/npc/world0/1052006.js @@ -0,0 +1,43 @@ +var status = -1; +var zones = 0; +var cost = 1000; + +function start() { + cm.sendNext("Hi, I'm the ticket salesman."); + if (cm.isQuestStarted(2055) || cm.isQuestCompleted(2055)) + zones++; + if (cm.isQuestStarted(2056) || cm.isQuestCompleted(2056)) + zones++; + if (cm.isQuestStarted(2057) || cm.isQuestCompleted(2057)) + zones++; +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + cm.dispose(); + return; + } + if (status == 0) { + if (zones == 0) + cm.dispose(); + else { + var selStr = "Which ticket would you like?#b"; + for (var i = 0; i < zones; i++) + selStr += "\r\n#L" + i + "#Construction site B" + (i+1) + " (" + cost + " mesos)#l"; + cm.sendSimple(selStr); + } + } else if (status == 1) { + if (cm.getMeso() < cost) + cm.sendOk("You do not have enough mesos."); + else { + cm.gainMeso(-cost); + if(selection < 0 || selection > zones) { + cm.getClient().disconnect(false, false); + return; + } + cm.gainItem(4031036 + selection,1); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052007.js b/scripts/npc/world0/1052007.js new file mode 100644 index 0000000000..62936fa9ef --- /dev/null +++ b/scripts/npc/world0/1052007.js @@ -0,0 +1,92 @@ + + +var status = 0; +var ticketSelection = -1; +var text = "Here's the ticket reader."; +var hasTicket = false; +var NLC = false; +var em; + +function start() { + cm.sendSimple("Pick your destination.\n\r\n#L0##bKerning City Subway#l\r\n#L1##bKerning square Shopping Center (Get on the subway)#l\n\n\r\n#L2#Enter Contruction Site#l\r\n#L3#New Leaf City#l"); +} + +function action(mode, type, selection) { + em = cm.getEventManager("Subway"); + + if (mode == -1) { + cm.dispose(); + return; + } else if (mode == 0) { + cm.dispose(); + return; + } else { + status++; + } + if (status == 1) { + if (selection == 0) { + cm.warp(103000101); + cm.dispose(); + return; + } else if (selection == 1) { + var train = cm.getEventManager("KerningTrain"); + train.newInstance("KerningTrain"); + train.setProperty("player", cm.getPlayer().getName()); + train.startInstance(cm.getPlayer()); + cm.dispose(); + return; + } else if (selection == 2) { + if (cm.haveItem(4031036) || cm.haveItem(4031037) || cm.haveItem(4031038)) { + text += " You will be brought in immediately. Which ticket you would like to use?#b"; + for (var i = 0; i < 3; i++) { + if (cm.haveItem(4031036 + i)) { + text += "\r\n#b#L" + (i + 1) + "##t" + (4031036 + i) +"#"; + } + } + cm.sendSimple(text); + hasTicket = true; + } else { + cm.sendOk("It seems as though you don't have a ticket!"); + cm.dispose(); + return; + } + } else if (selection == 3) { + if (!cm.haveItem(4031711) && cm.getPlayer().getMapId() == 103000100) { + cm.sendOk("It seems you don't have a ticket! You can buy one from Bell."); + cm.dispose(); + return; + } + if (em.getProperty("entry") == "true") { + cm.sendYesNo("It looks like there's plenty of room for this ride. Please have your ticket ready so I can let you in. The ride will be long, but you'll get to your destination just fine. What do you think? Do you want to get on this ride?"); + } else { + cm.sendNext("We will begin boarding 1 minute before the takeoff. Please be patient and wait for a few minutes. Be aware that the subway will take off right on time, and we stop receiving tickets 1 minute before that, so please make sure to be here on time."); + cm.dispose(); + return; + } + } + } else if (status == 2) { + if (hasTicket) { + ticketSelection = selection; + if (ticketSelection > -1) { + cm.gainItem(4031035 + ticketSelection, -1); + cm.warp(103000897 + (ticketSelection * 3)); + hasTicket = false; + cm.dispose(); + return; + } + } + + if (cm.haveItem(4031711)) { + if(em.getProperty("entry") == "false") { + cm.sendNext("We will begin boarding 1 minute before the takeoff. Please be patient and wait for a few minutes. Be aware that the subway will take off right on time, and we stop receiving tickets 1 minute before that, so please make sure to be here on time."); + } + else { + cm.gainItem(4031711, -1); + cm.warp(600010004); + } + + cm.dispose(); + return; + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052008.js b/scripts/npc/world0/1052008.js new file mode 100644 index 0000000000..33176a4bf1 --- /dev/null +++ b/scripts/npc/world0/1052008.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Shumi JQ Chest #1 +*/ + +function start() { + prizes = [4020000,4020001,4020002,4020003,4020004]; + if (cm.isQuestStarted(2055)) + cm.gainItem(4031039,1); + else + cm.gainItem(4020000 + ((Math.random()*5)|0), 1); + cm.warp(103000100); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1052009.js b/scripts/npc/world0/1052009.js new file mode 100644 index 0000000000..6a83c44ff1 --- /dev/null +++ b/scripts/npc/world0/1052009.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Shumi JQ Chest #2 +*/ + +function start() { + prizes = [4020005,4020006,4020007,4020008,4010000]; + if (cm.isQuestStarted(2056)) + cm.gainItem(4031040,1); + else + cm.gainItem(prizes[parseInt(Math.random() * prizes.length)],1); + cm.warp(103000100); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1052010.js b/scripts/npc/world0/1052010.js new file mode 100644 index 0000000000..4e072e4822 --- /dev/null +++ b/scripts/npc/world0/1052010.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Shumi JQ Chest #3 +*/ + +function start() { + prizes = [4010001,4010002,4010003,4010004,4010005,4010006,4010007]; + if (cm.isQuestStarted(2057)) + cm.gainItem(4031041,1); + else + cm.gainItem(prizes[parseInt(Math.random() * prizes.length)],1); + cm.warp(103000100); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1052011.js b/scripts/npc/world0/1052011.js new file mode 100644 index 0000000000..93dc53bef7 --- /dev/null +++ b/scripts/npc/world0/1052011.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Exit + Warp NPC to Subway Ticketing Booth (103000100) + located in B1 (103000900) + located in B1 (103000901) + located in B2 (103000903) + located in B2 (103000904) + located in B3 (103000906) + located in B3 (103000907) + located in B3 (103000908) +*/ + +var status = 0; + +function start() { + cm.sendNext("This device is connected to outside."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else if (mode == 0) { + cm.sendOk("Alright, see you next time."); + cm.dispose(); + } + else { + status++; + if (status == 1) + cm.sendNextPrev("Are you going to give up and leave this place?") + else if (status == 2) + cm.sendYesNo("You'll have to start from scratch the next time you come in..."); + else if (status == 3){ + cm.warp(103000100, 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052016.js b/scripts/npc/world0/1052016.js new file mode 100644 index 0000000000..40a4b3e0f4 --- /dev/null +++ b/scripts/npc/world0/1052016.js @@ -0,0 +1,54 @@ +var status = 0; +var maps = [104000000, 102000000, 100000000, 101000000, 120000000]; +var cost = [1000, 1000, 1000, 800, 800]; +var selectedMap = -1; +var mesos; + +function start() { + cm.sendNext("Hello, I drive the Regular Cab. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status >= 2 && mode == 0) { + cm.sendNext("There's a lot to see in this town, too. Come back and find us when you need to go to a different town."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + var selStr = ""; + if (cm.getJobId() == 0) + selStr += "We have a special 90% discount for beginners."; + selStr += "Choose your destination, for fees will change from place to place.#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cm.getJobId() == 0 ? cost[i] / 10 : cost[i]) + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 2) { + cm.sendYesNo("You don't have anything else to do here, huh? Do you really want to go to #b#m" + maps[selection] + "##k? It'll cost you #b"+ (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection]) + " mesos#k."); + selectedMap = selection; + } else if (status == 3) { + if (cm.getMeso() < (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection])) { + cm.sendNext("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab."); + cm.dispose(); + return; + } + if (cm.getJobId() == 0) { + mesos = -cost[selectedMap] / 10; + } else { + mesos = -cost[selectedMap]; + } + cm.gainMeso(mesos); + cm.warp(maps[selectedMap], 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052017.js b/scripts/npc/world0/1052017.js new file mode 100644 index 0000000000..ac969a9cd3 --- /dev/null +++ b/scripts/npc/world0/1052017.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1052017); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1052100.js b/scripts/npc/world0/1052100.js new file mode 100644 index 0000000000..0d99cb9b78 --- /dev/null +++ b/scripts/npc/world0/1052100.js @@ -0,0 +1,110 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Don Giovanni + Kerning VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30030, 30020, 30000, 30130, 30350, 30190, 30110, 30180, 30050, 30040, 30160); +var fhair = Array(31050, 31040, 31000, 31060, 31090, 31020, 31130, 31120, 31140, 31330, 31010); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hello! I'm Don Giovanni, head of the beauty salon! If you have either #b#t5150003##k or #b#t5151003##k, why don't you let me take care of the rest? Decide what you want to do with your hair...\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150003##t5150003##l\r\n#L2#Dye your hair: #i5151003##t5151003##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150003##t5150003##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151003##t5151003##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? If you have #b#t5150003##k I'll change it for you. Choose the one to your liking~.", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t5151003##k I'll change it for you. Choose the one to your liking.", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150003)){ + cm.gainItem(5150003, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + if (beauty == 2){ + if (cm.haveItem(5151003)){ + cm.gainItem(5151003, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150003, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151003, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } +} diff --git a/scripts/npc/world0/1052101.js b/scripts/npc/world0/1052101.js new file mode 100644 index 0000000000..d61f3510d9 --- /dev/null +++ b/scripts/npc/world0/1052101.js @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Andre + Kerning Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30130, 30350, 30190, 30110, 30180, 30050, 30040, 30160, 30770, 30620, 30550, 30520); +var fhair = Array(31060, 31090, 31020, 31130, 31120, 31140, 31330, 31010, 31520, 31440, 31750, 31620); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm Andre, Don's assistant. Everyone calls me Andre, though. If you have a #b#t5150011##k or a #b#t5151002##k, please let me change your hairdo!\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150011##t5150011##l\r\n#L2#Dye your hair: #i5151002##t5151002##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150011##t5150011##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151002##t5151002##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that I came up with. Are you going to use #b#t5150010##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151002##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150011) == true){ + cm.gainItem(5150011, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151002) == true){ + cm.gainItem(5151002, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150011, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151002, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/1052115.js b/scripts/npc/world0/1052115.js new file mode 100644 index 0000000000..bdae086c92 --- /dev/null +++ b/scripts/npc/world0/1052115.js @@ -0,0 +1,79 @@ +var status = 0; +var section = 0; +importPackage(java.lang); +//questid 29931, infoquest 7662 + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + status--; + } + if (status == 1) { + if (cm.getMapId() == 910320001) { + cm.warp(910320000, 0); + cm.dispose(); + } else if (cm.getMapId() == 910330001) { + var itemid = 4001321; + if (!cm.canHold(itemid)) { + cm.sendOk("Please make room for 1 ETC slot."); + } else { + cm.gainItem(itemid,1); + cm.warp(910320000, 0); + } + cm.dispose(); + } else if (cm.getMapId() >= 910320100 && cm.getMapId() <= 910320304) { + cm.sendYesNo("Would you like to exit this place?"); + status = 99; + } else { + cm.sendSimple("My name is Mr.Lim.\r\n#b#e#L1#Enter the Dusty Platform.#l#n\r\n#L2#Head towards Train 999.#l\r\n#L3#Receive a medal of .#l#k"); + } + } else if (status == 2) { + section = selection; + if (selection == 1) { + if (cm.getPlayer().getLevel() < 25 || cm.getPlayer().getLevel() > 30 || !cm.isLeader()) { + cm.sendOk("You must be in the Level Range 25-30 and be the party leader."); + } else { + if (!cm.start_PyramidSubway(-1)) { + cm.sendOk("The Dusty Platform is currently full at the moment."); + } + } + //todo + } else if (selection == 2) { + if (cm.haveItem(4001321)) { + if (cm.bonus_PyramidSubway(-1)) { + cm.gainItem(4001321, -1); + } else { + cm.sendOk("The Train 999 is currently full at the moment"); + } + } else { + cm.sendOk("You do not have the Boarding Pass."); + } + } else if (selection == 3) { + var record = cm.getQuestRecord(7662); + var data = record.getCustomData(); + if (data == null) { + record.setCustomData("0"); + data = record.getCustomData(); + } + var mons = parseInt(data); + if (mons < 10000) { + cm.sendOk("Please defeat at least 10,000 monsters in the Station and look for me again. Kills : " + mons); + } else if (cm.canHold(1142141) && !cm.haveItem(1142141)){ + cm.gainItem(1142141,1); + cm.forceStartQuest(29931); + cm.forceCompleteQuest(29931); + } else { + cm.sendOk("Please make room."); + } + } + cm.dispose(); + } else if (status == 100) { + cm.warp(910320000,0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1052125.js b/scripts/npc/world0/1052125.js new file mode 100644 index 0000000000..db25f4585c --- /dev/null +++ b/scripts/npc/world0/1052125.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + NPC Name: June + Map(s): Kerning Square : 7th Floor + Description: Entrance to Spirit of Rock + Depart_topFloorEnter + request for a new song (block the portal before the spirit) + composition fee (block the portal before the spirit) + Say "NO" to Plagiarism (now we can open the portal) +*/ +var status = -1; + +function start() { + cm.sendSimple("Hold up! Access to this area is limited due to remodeling. I can only allow people who meet certain conditions to enter here.#b\n\r\n#L0#I'm helping #eBlake#n right now.#l\r\n#L1#I'm a #rVIP#b at this shopping Center!#l"); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + if (mode == 0 && type != 4) { + status -= 2; + } else { + cm.dispose(); + return; + } + } + if (status == 0) { + if (selection == 0) { + if (cm.isQuestStarted(2286) || cm.isQuestStarted(2287) || cm.isQuestStarted(2288)) { + var rock = cm.getEventManager("RockSpirit"); + rock.newInstance("RockSpirit"); + rock.setProperty("player", cm.getPlayer().getName()); + rock.startInstance(cm.getPlayer()); + cm.dispose(); + return; + } else { + cm.sendOk("I did not hear anything from Blake that you are assisting him."); + } + } else { + if (cm.isQuestCompleted(2291)) { + var rock = cm.getEventManager("VIPRockSpirit"); + rock.newInstance("VIPRockSpirit"); + rock.setProperty("player", cm.getPlayer().getName()); + rock.startInstance(cm.getPlayer()); + cm.dispose(); + return; + } else { + cm.sendOk("#rVIP#k? Yeah that is funny #rMr. VIP#k, now get lost before I call security."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1061000.js b/scripts/npc/world0/1061000.js new file mode 100644 index 0000000000..34485164c2 --- /dev/null +++ b/scripts/npc/world0/1061000.js @@ -0,0 +1,221 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Chrishrama + Dungeon: Sleepywood (105040300) + + Refining NPC: + * Shoes - All classes, 25 (20 for magicians)-60 +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Hello, I live here, but don't underestimate me. How about I help you by making you a new pair of shoes?#b" + var options = new Array("Create a Warrior shoe","Create a Bowman shoe","Create a Magician shoe","Create a Thief shoe"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + var selStr; + var shoes; + if (selectedType == 0){ //warrior shoe + selStr = "Warrior shoes? Sure thing, which kind?#b"; + shoes = new Array ("Silver War Boots#k - Warrior Lv. 25#b","Gold War Boots#k - Warrior Lv. 25#b","Dark War Boots#k - Warrior Lv. 25#b", + "Emerald Battle Grieve#k - Warrior Lv. 30#b","Mithril Battle Grieve#k - Warrior Lv. 30#b","Silver Battle Grieve#k - Warrior Lv. 30#b","Blood Battle Grieve#k - Warrior Lv. 30#b", + "Steel Trigger#k - Warrior Lv. 35#b","Mithril Trigger#k - Warrior Lv. 35#b","Dark Trigger#k - Warrior Lv. 35#b", + "Brown Jangoon Boots#k - Warrior Lv. 40#b","Maroon Jangoon Boots#k - Warrior Lv. 40#b","Blue Jangoon Boots#k - Warrior Lv. 40#b", + "Emerald Hildon Boots#k - Warrior Lv. 50#b","Mithril Hildon Boots#k - Warrior Lv. 50#b","Orihalcon Hildon Boots#k - Warrior Lv. 50#b","Gold Hildon Boots#k - Warrior Lv. 50#b", + "Sapphire Camel Boots#k - Warrior Lv. 60#b","Orihalcon Camel Boots#k - Warrior Lv. 60#b","Blood Camel Boots#k - Warrior Lv. 60#b");; + } + else if (selectedType == 1){ //bowman shoe + selStr = "Bowman shoes? Sure thing, which kind?#b"; + shoes = new Array ("Brown Jack Boots#k - Bowman Lv. 25#b","Green Jack Boots#k - Bowman Lv. 25#b","Red Jack Boots#k - Bowman Lv. 25#b", + "Red Hunter Boots#k - Bowman Lv. 30#b","Blue Hunter Boots#k - Bowman Lv. 30#b","Green Hunter Boots#k - Bowman Lv. 30#b","Black Hunter Boots#k - Bowman Lv. 30#b","Brown Hunter Boots#k - Bowman Lv. 30#b", + "Blue Silky Boots#k - Bowman Lv. 35#b","Green Silky Boots#k - Bowman Lv. 35#b","Red Silky Boots#k - Bowman Lv. 35#b", + "Red Pierre Shoes#k - Bowman Lv. 40#b","Yellow Pierre Shoes#k - Bowman Lv. 40#b","Brown Pierre Shoes#k - Bowman Lv. 40#b","Blue Pierre Shoes#k - Bowman Lv. 40#b", + "Brown Steel-Tipped Boots#k - Bowman Lv. 50#b","Green Steel-Tipped Boots#k - Bowman Lv. 50#b","Blue Steel-Tipped Boots#k - Bowman Lv. 50#b","Purple Steel-Tipped Boots#k - Bowman Lv. 50#b", + "Red Gore Boots#k - Bowman Lv. 60#b","Blue Gore Boots#k - Bowman Lv. 60#b","Green Gore Boots#k - Bowman Lv. 60#b"); + }else if (selectedType == 2){ //magician shoe + selStr = "Magician shoes? Sure thing, which kind?#b"; + shoes = new Array ("Blue Jewelery Shoes#k - Magician Lv. 20#b","Purple Jewelery Shoes#k - Magician Lv. 20#b","Red Jewelery Shoes#k - Magician Lv. 20#b", + "Silver Windshoes#k - Magician Lv. 25#b","Yellow Windshoes#k - Magician Lv. 25#b","Black Windshoes#k - Magician Lv. 25#b", + "Red Magicshoes#k - Magician Lv. 30#b","Blue Magicshoes#k - Magician Lv. 30#b","White Magicshoes#k - Magician Lv. 30#b","Black Magicshoes#k - Magician Lv. 30#b", + "Purple Salt Shoes#k - Magician Lv. 35#b","Red Salt Shoes#k - Magician Lv. 35#b","Black Salt Shoes#k - Magician Lv. 35#b", + "Red Moon Shoes#k - Magician Lv. 40#b","Blue Moon Shoes#k - Magician Lv. 40#b","Gold Moon Shoes#k - Magician Lv. 40#b","Dark Moon Shoes#k - Magician Lv. 40#b", + "Pink Goldwind Shoes#k - Magician Lv. 50#b","Blue Goldwind Shoes#k - Magician Lv. 50#b","Purple Goldwind Shoes#k - Magician Lv. 50#b","Green Goldwind Shoes#k - Magician Lv. 50#b", + "Pink Goldrunners#k - Magician Lv. 60#b","Green Goldrunners#k - Magician Lv. 60#b","Orange Goldrunners#k - Magician Lv. 60#b","Blue Goldrunners#k - Magician Lv. 60#b"); + }else if (selectedType == 3){ //thief shoe + selStr = "Thief shoes? Sure thing, which kind?#b"; + shoes = new Array ("Blue Lappy Shoes#k - Thief Lv. 25#b","Red Lappy Shoes#k - Thief Lv. 25#b","Green Lappy Shoes#k - Thief Lv. 25#b","Black Lappy Shoes#k - Thief Lv. 25#b", + "Bronze Chain Boots#k - Thief Lv. 30#b","Iron Chain Boots#k - Thief Lv. 30#b","Silver Chain Boots#k - Thief Lv. 30#b","Gold Chain Boots#k - Thief Lv. 30#b", + "Red White-Line Boots#k - Thief Lv. 35#b","Green White-Line Boots#k - Thief Lv. 35#b","Blue White-Line Boots#k - Thief Lv. 35#b", + "Black Red-Lined Shoes#k - Thief Lv. 40#b","Black Green-Lined Shoes#k - Thief Lv. 40#b","Black Yellow-Lined Shoes#k - Thief Lv. 40#b","Black Blue-Lined Shoes#k - Thief Lv. 40#b", + "Blue Goni Shoes#k - Thief Lv. 50#b","Red Goni Shoes#k - Thief Lv. 50#b","Green Goni Shoes#k - Thief Lv. 50#b","Purple Goni Shoes#k - Thief Lv. 50#b", + "Blood Moss Boots#k - Thief Lv. 60#b","Gold Moss Boots#k - Thief Lv. 60#b","Dark Moss Boots#k - Thief Lv. 60#b"); + }for (var i = 0; i < shoes.length; i++) + selStr += "\r\n#L" + i + "# " + shoes[i] + "#l"; + cm.sendSimple(selStr); + }else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 0){ //warrior shoe + var itemSet = new Array(1072051,1072053,1072052,1072003,1072039,1072040,1072041,1072002,1072112,1072113,1072000,1072126,1072127,1072132,1072133,1072134,1072135,1072147,1072148,1072149); + var matSet = new Array(new Array(4011004,4011001,4000021,4003000),new Array(4011006,4011001,4000021,4003000),new Array(4021008,4011001,4000021,4003000),new Array(4021003,4011001,4000021,4003000),new Array(4011002,4011001,4000021,4003000), + new Array(4011004,4011001,4000021,4003000),new Array(4021000,4011001,4000021,4003000),new Array(4011001,4021004,4000021,4000030,4003000),new Array(4011002,4021004,4000021,4000030,4003000),new Array(4021008,4021004,4000021,4000030,4003000), + new Array(4011003,4000021,4000030,4003000,4000033),new Array(4011005,4021007,4000030,4003000,4000042),new Array(4011002,4021007,4000030,4003000,4000041),new Array(4021008,4011001,4021003,4000030,4003000), + new Array(4021008,4011001,4011002,4000030,4003000),new Array(4021008,4011001,4011005,4000030,4003000),new Array(4021008,4011001,4011006,4000030,4003000),new Array(4021008,4011007,4021005,4000030,4003000), + new Array(4021008,4011007,4011005,4000030,4003000),new Array(4021008,4011007,4021000,4000030,4003000)); + var matQtySet = new Array(new Array(2,1,15,10),new Array(2,1,15,10),new Array(1,2,20,10),new Array(4,2,45,15),new Array(4,2,45,15),new Array(4,2,45,15),new Array(4,2,45,15),new Array(3,1,30,20,25),new Array(3,1,30,20,25),new Array(2,1,30,20,25), + new Array(4,100,40,30,100),new Array(4,1,40,30,250),new Array(4,1,40,30,120),new Array(1,3,6,65,45),new Array(1,3,6,65,45),new Array(1,3,6,65,45),new Array(1,3,6,65,45),new Array(1,1,8,80,55),new Array(1,1,8,80,55),new Array(1,1,8,80,55)); + var costSet = new Array(10000,10000,12000,20000,20000,20000,20000,22000,22000,25000,38000,38000,38000,50000,50000,50000,50000,60000,60000,60000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + }else if (selectedType == 1){ //bowman shoe + var itemSet = new Array(1072027,1072034,1072069,1072079,1072080,1072081,1072082,1072083,1072101,1072102,1072103,1072118,1072119,1072120,1072121,1072122,1072123,1072124,1072125,1072144,1072145,1072146); + var matSet = new Array(new Array(4000021,4011000,4003000),new Array(4000021,4021003,4003000),new Array(4000021,4021000,4003000),new Array(4000021,4021000,4003000),new Array(4000021,4021005,4003000),new Array(4000021,4021003,4003000), + new Array(4000021,4021004,4003000),new Array(4000021,4021006,4003000),new Array(4021002,4021006,4000030,4000021,4003000),new Array(4021003,4021006,4000030,4000021,4003000),new Array(4021000,4021006,4000030,4000021,4003000), + new Array(4021000,4003000,4000030,4000024),new Array(4021006,4003000,4000030,4000027),new Array(4011003,4003000,4000030,4000044),new Array(4021002,4003000,4000030,4000009),new Array(4011001,4021006,4021008,4000030,4003000,4000033), + new Array(4011001,4021006,4021008,4000030,4003000,4000032),new Array(4011001,4021006,4021008,4000030,4003000,4000041),new Array(4011001,4021006,4021008,4000030,4003000,4000042),new Array(4011006,4021000,4021007,4000030,4003000), + new Array(4011006,4021005,4021007,4000030,4003000),new Array(4011006,4021003,4021007,4000030,4003000)); + var matQtySet = new Array(new Array(35,3,10),new Array(35,1,10),new Array(35,1,10),new Array(50,2,15),new Array(50,2,15),new Array(50,2,15),new Array(50,2,15),new Array(50,2,15), + new Array(3,1,15,30,20),new Array(3,1,15,30,20),new Array(3,1,15,30,20),new Array(4,30,45,20),new Array(4,30,45,20),new Array(5,30,45,40),new Array(5,30,45,120), + new Array(3,3,1,60,35,80),new Array(3,3,1,60,35,150),new Array(3,3,1,60,35,100),new Array(3,3,1,60,35,250),new Array(5,8,1,75,50),new Array(5,8,1,75,50),new Array(5,8,1,75,50)); + var costSet = new Array(9000,9000,9000,19000,19000,19000,19000,19000,19000,20000,20000,20000,32000,32000,40000,40000,50000,50000,50000,50000,60000,60000,60000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + }else if (selectedType == 2){ //magician shoe + var itemSet = new Array(1072019,1072020,1072021,1072072,1072073,1072074,1072075,1072076,1072077,1072078,1072089,1072090,1072091,1072114,1072115,1072116,1072117,1072140,1072141,1072142,1072143,1072136,1072137,1072138,1072139); + var matSet = new Array(new Array(4021005,4000021,4003000),new Array(4021001,4000021,4003000),new Array(4021000,4000021,4003000),new Array(4011004,4000021,4003000),new Array(4021006,4000021,4003000),new Array(4021004,4000021,4003000), + new Array(4021000,4000021,4003000),new Array(4021002,4000021,4003000),new Array(4011004,4000021,4003000),new Array(4021008,4000021,4003000),new Array(4021001,4021006,4000021,4000030,4003000),new Array(4021000,4021006,4000021,4000030,4003000), + new Array(4021008,4021006,4000021,4000030,4003000),new Array(4021000,4000030,4000043,4003000),new Array(4021005,4000030,4000037,4003000),new Array(4011006,4021007,4000030,4000027,4003000),new Array(4021008,4021007,4000030,4000014,4003000), + new Array(4021009,4011006,4021000,4000030,4003000),new Array(4021009,4011006,4021005,4000030,4003000),new Array(4021009,4011006,4021001,4000030,4003000),new Array(4021009,4011006,4021003,4000030,4003000), + new Array(4021009,4011006,4011005,4000030,4003000),new Array(4021009,4011006,4021003,4000030,4003000),new Array(4021009,4011006,4011003,4000030,4003000),new Array(4021009,4011006,4021002,4000030,4003000)); + var matQtySet = new Array(new Array(1,30,5),new Array(1,30,5),new Array(1,30,5),new Array(1,35,10),new Array(1,35,10),new Array(1,35,10),new Array(2,50,15),new Array(2,50,15),new Array(2,50,15), + new Array(1,50,15),new Array(3,1,30,15,20),new Array(3,1,30,15,20),new Array(2,1,40,25,20),new Array(4,40,35,25),new Array(4,40,70,25),new Array(2,1,40,20,25),new Array(2,1,40,30,30), + new Array(1,3,3,60,40),new Array(1,3,3,60,40),new Array(1,3,3,60,40),new Array(1,3,3,60,40),new Array(1,4,5,70,50),new Array(1,4,5,70,50),new Array(1,4,5,70,50),new Array(1,4,5,70,50)); + var costSet = new Array(3000,3000,3000,8000,8000,8000,18000,18000,18000,18000,20000,20000,22000,30000,30000,35000,40000,50000,50000,50000,50000,60000,60000,60000,60000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + }else if (selectedType == 3){ //thief shoe + var itemSet = new Array(1072084,1072085,1072086,1072087,1072032,1072033,1072035,1072036,1072104,1072105,1072106,1072107,1072108,1072109,1072110,1072128,1072130,1072129,1072131,1072150,1072151,1072152); + var matSet = new Array(new Array(4021005,4000021,4003000),new Array(4021000,4000021,4003000),new Array(4021003,4000021,4003000),new Array(4021004,4000021,4003000),new Array(4011000,4000021,4003000),new Array(4011001,4000021,4003000),new Array(4011004,4000021,4003000),new Array(4011006,4000021,4003000),new Array(4021000,4021004,4000021,4000030,4003000),new Array(4021003,4021004,4000021,4000030,4003000),new Array(4021002,4021004,4000021,4000030,4003000),new Array(4021000,4000030,4000033,4003000),new Array(4021003,4000030,4000032,4003000),new Array(4021006,4000030,4000040,4003000),new Array(4021005,4000030,4000037,4003000),new Array(4011007,4021005,4000030,4000037,4003000),new Array(4011007,4021000,4000030,4000043,4003000),new Array(4011007,4021003,4000030,4000045,4003000),new Array(4011007,4021001,4000030,4000036,4003000),new Array(4021008,4011007,4021005,4000030,4003000),new Array(4021008,4011007,4011005,4000030,4003000),new Array(4021008,4011007,4021000,4000030,4003000)); + var matQtySet = new Array(new Array(1,35,10),new Array(1,35,10),new Array(1,35,10),new Array(1,35,10),new Array(3,50,15),new Array(3,50,15),new Array(2,50,15),new Array(2,50,15),new Array(3,1,30,15,20),new Array(3,1,30,15,20),new Array(3,1,30,15,20), + new Array(5,45,50,30),new Array(4,45,30,30),new Array(4,45,3,30),new Array(4,45,70,30),new Array(2,3,50,200,35),new Array(2,3,50,150,35),new Array(2,3,50,80,35),new Array(2,3,50,80,35),new Array(1,1,8,75,50),new Array(1,1,5,75,50),new Array(1,1,1,75,50)); + var costSet = new Array(9000,9000,9000,9000,19000,19000,19000,21000,20000,20000,20000,40000,32000,35000,35000,50000,50000,50000,50000,60000,60000,60000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + }var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++) + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + else + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + cm.sendYesNo(prompt); + } + else if (status == 3 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost) { + cm.sendOk("Sorry, I can only accept meso."); + cm.dispose(); + return; + } + + else { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /* + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) + complete = false; + } + else { + if (!cm.haveItem(mats[i],matQty[i] * selection)) complete=false; + + } + } + } + else { + if (!cm.haveItem(mats,matQty * selection)) complete=false; + + }*/ + } + if (!complete) + cm.sendOk("Sorry, but I have to have those items to get this exactly right. Perhaps next time."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++) + cm.gainItem(mats[i], -matQty[i]); + } + else + cm.gainItem(mats, -matQty); + cm.gainMeso(-cost); + cm.gainItem(item, 1); + cm.sendOk("There, the shoes are ready. Be careful not to trip!"); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1061006.js b/scripts/npc/world0/1061006.js new file mode 100644 index 0000000000..3e20b74f95 --- /dev/null +++ b/scripts/npc/world0/1061006.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var zones = 0; +var names = Array("Deep Forest of Patience 1", "Deep Forest of Patience 2", "Deep Forest of Patience 3"); +var maps = Array(105040310, 105040312, 105040314); +var selectedMap = -1; + +function start() { + cm.sendNext("You feel a mysterious force surrounding this statue."); + if (cm.isQuestStarted(2054)) + zones = 3; + else if (cm.isQuestStarted(2053)) + zones = 2; + else if (cm.isQuestStarted(2052)) + zones = 1; + else + zones = 0; +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (status >= 2 && mode == 0) { + cm.sendOk("Alright, see you next time."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (zones == 0) + cm.dispose(); + else { + var selStr = "Its power allows you to will yourself deep inside the forest.#b"; + for (var i = 0; i < zones; i++) + selStr += "\r\n#L" + i + "#" + names[i] + "#l"; + cm.sendSimple(selStr); + } + } else if (status == 2) { + cm.warp(maps[selection],0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1061007.js b/scripts/npc/world0/1061007.js new file mode 100644 index 0000000000..80fba6e531 --- /dev/null +++ b/scripts/npc/world0/1061007.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendYesNo("Would you like to leave?"); +} + +function action(mode, type, selection) { + if(mode == 1) + cm.warp(105040300,0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1061008.js b/scripts/npc/world0/1061008.js new file mode 100644 index 0000000000..263675f256 --- /dev/null +++ b/scripts/npc/world0/1061008.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1061008); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1061009.js b/scripts/npc/world0/1061009.js new file mode 100644 index 0000000000..e60b962520 --- /dev/null +++ b/scripts/npc/world0/1061009.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Door of Dimension + Enter 3rd job event +*/ + +function start() { + if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)) { + if (cm.getPlayer().getMapId() == 105070001 && (cm.getJobId() >= 110 && cm.getJobId() <= 130)) + cm.warp(108010300); + else if (cm.getPlayer().getMapId() == 105040305 && (cm.getJobId() >= 310 && cm.getJobId() <= 320)) + cm.warp(108010100); + else if (cm.getPlayer().getMapId() == 100040106 && (cm.getJobId() >= 210 && cm.getJobId() <= 230)) + cm.warp(108010200); + else if (cm.getPlayer().getMapId() == 107000402 && (cm.getJobId() >= 410 && cm.getJobId() <= 420)) + cm.warp(108010400); + else if (cm.getPlayer().getMapId() == 105070200 && (cm.getJobId() >= 510 && cm.getJobId() <= 520)) + cm.warp(108010500); + } + cm.dispose(); +/*20 minutes*/ +} + +/* + +1061010 - Crystal NPC +*/ +/*var em = cm.getEventManager("3rdjob"); + if (em == null) + cm.sendOk("Sorry, but 3rd job advancement is closed."); + else + em.newInstance(cm.getPlayer().getName()).registerPlayer(cm.getPlayer()); +*/ \ No newline at end of file diff --git a/scripts/npc/world0/1061010.js b/scripts/npc/world0/1061010.js new file mode 100644 index 0000000000..6d9bdefe9f --- /dev/null +++ b/scripts/npc/world0/1061010.js @@ -0,0 +1,34 @@ +var status = 0; +var summon; +var nthtext = "bonus"; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose();//ExitChat + else if (mode == 0) + cm.dispose();//No + else{ //Regular Talk + if (mode == 1) + status++; + else + status--; + + if(status == 0){ + cm.sendYesNo("Would you like to leave?"); + }else if(status == 1){ + if(cm.getMapId() == 108010101)cm.getPlayer().changeMap(105040305); + if(cm.getMapId() == 108010201)cm.getPlayer().changeMap(100040106); + if(cm.getMapId() == 108010301)cm.getPlayer().changeMap(105070001); + if(cm.getMapId() == 108010401)cm.getPlayer().changeMap(107000402); + if(cm.getMapId() == 108010501)cm.getPlayer().changeMap(105040305); + var em = cm.getEventManager("3rdjob"); + em.getInstance(cm.getPlayer().getName()).unregisterPlayer(cm.getPlayer()); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1061014.js b/scripts/npc/world0/1061014.js new file mode 100644 index 0000000000..96bfc2ca36 --- /dev/null +++ b/scripts/npc/world0/1061014.js @@ -0,0 +1,87 @@ +/*/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//@Author FateJiki +//@Author Even (modifier) +importPackage(Packages.server.expeditions); +importPackage(Packages.tools); +importPackage(Packages.scripting.event); + + +var status = 0; +var expedition; +var player; +var em; +var barlog_easy = MapleExpeditionType.BALROG_EASY; +var barlog_hard = MapleExpeditionType.BALROG_HARD; + +function start(){ + status = 0; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode <= 0) { + cm.dispose(); + } else if (status == 0) { + cm.sendNext("Hi there. I am #b#nMu Young#n#k, the temple Keeper."); + status++; + } else if (BalrogPQ.partyLeader == "undefined") { + if (status == 1) { + var text = "This temple is currently under siege by the Balrog troops. We currently do not know who gave the orders. " + + "For a few weeks now, the #e#b Order of the Altair#n#k has been sending mercenaries, but they were eliminated every time." + + " So, traveler, would you like to try your luck at defeating this unspeakable horror? \r\n\r\n " + + "#L0#Yes. Please register me as party leader\r\n#L1#What is the #eOrder of the Altair?"; + cm.sendSimple(text); + status++; + } else if (selection == 0) { + if (cm.getPlayer().getLevel() >= 70) { + BalrogPQ.partyLeader = cm.getPlayer().getName(); + cm.sendOk("Success. Your name has been registered and you may enter the battlefield. Come speak to me when you're ready!"); + cm.getPlayer().getMap().broadcastMessage(Packages.tools.MaplePacketCreator.serverNotice(0, cm.getPlayer().getName() + " is currently fighting the balrog on CH" + cm.getPlayer().getClient().getChannel() + ". To join, do @balrogpq.")) + BalrogPQ.open(cm.getPlayer()); + cm.dispose(); + } else if (cm.getPlayer().getLevel() < 70) { + cm.sendOk("You must be at least level 70 to even consider battling the monster."); + cm.dispose(); + } + } else if (selection == 1) { + cm.sendOk("The Order of the Altair is a group of elite mercenaries that oversee the world's economy and battle operations. It was founded 40 years ago right after Black Mage was defeated in hopes of forseeing the next possible attack."); + cm.dispose(); + } else if (status == 3) { + cm.warp(105100300); + cm.dispose(); + } + } else { + if (status == 1) { + cm.sendYesNo(BalrogPQ.partyLeader + "'s party is currently battling the Balrog. Would you like to assist?"); + status++; + } else if(status == 2){ + if (cm.getPlayer().getLevel() > 60 && cm.getPlayer().getClient().getChannel() == BalrogPQ.channel){ + cm.warp(105100300); + cm.dispose(); + } else { + cm.sendOk("You may not battle the balrog when you are below Lv60! \r\n\r\n Or maybe you are not on the right channel.. Try CH" + BalrogPQ.channel + "."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1061100.js b/scripts/npc/world0/1061100.js new file mode 100644 index 0000000000..321aebbaac --- /dev/null +++ b/scripts/npc/world0/1061100.js @@ -0,0 +1,81 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Hotel Receptionist - Sleepywood Hotel(105040400) +-- By --------------------------------------------------------------------------------------------- + Unknown +-- Version Info ----------------------------------------------------------------------------------- + 1.3 - More Cleanup by Moogra (12/17/09) + 1.2 - Cleanup and Statement fix by Moogra + 1.1 - Statement fix [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var regcost = 499; +var vipcost = 999; +var iwantreg = 0; + +function start() { + cm.sendNext("Welcome. We're the Sleepywood Hotel. Our hotel works hard to serve you the best at all times. If you are tired and worn out from hunting, how about a relaxing stay at our hotel?"); +} + +function action(mode, type, selection) { + if (mode == -1 || (mode == 0 && status == 1)) + cm.dispose(); + else { + if (mode == 0 && status == 2) { + cm.sendNext("We offer other kinds of services, too, so please think carefully and then make your decision."); + cm.dispose(); + return; + } + status++; + if (status == 1) { + cm.sendSimple("We offer two kinds of rooms for our service. Please choose the one of your liking.\r\n#b#L0#Regular sauna (" + regcost + " mesos per use)#l\r\n#L1#VIP sauna (" + vipcost + " mesos per use)#l"); + iwantreg = 1; + } else if (status == 2) { + if (selection == 0) + cm.sendYesNo("You have chosen the regular sauna. Your HP and MP will recover fast and you can even purchase some items there. Are you sure you want to go in?"); + else if (selection == 1) { + cm.sendYesNo("You've chosen the VIP sauna. Your HP and MP will recover even faster than that of the regular sauna and you can even find a special item in there. Are you sure you want to go in?"); + iwantreg = 0; + } + } else if (status == 3) { + if (iwantreg == 1) { + if (cm.getMeso() >= regcost) { + cm.warp(105040401); + cm.gainMeso(-regcost); + } else + cm.sendNext("I'm sorry. It looks like you don't have enough mesos. It will cost you at least " + regcost + "mesos to stay at our hotel."); + } else { + if (cm.getMeso() >= vipcost) { + cm.warp(105040402); + cm.gainMeso(-vipcost); + } else + cm.sendNext("I'm sorry. It looks like you don't have enough mesos. It will cost you at least " + vipcost + "mesos to stay at our hotel."); + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1063000.js b/scripts/npc/world0/1063000.js new file mode 100644 index 0000000000..5b568921e2 --- /dev/null +++ b/scripts/npc/world0/1063000.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* John JQ Flower pile #1 +*/ +function start() { + var prizes = Array(1040051, 1040127, 1040128, 1040133, 1040138, 1041000, 1041001, 1041110, 1041130, 1041139, 1042015, 1042017, 1042023, 1702001, 1702025); + var chances = Array(10, 10, 10, 10, 5, 10, 10, 10, 10, 5, 8, 8, 8, 9, 7); + var totalodds = 0; + var choice = 0; + for (var i = 0; i < chances.length; i++) { + var itemGender = (Math.floor(prizes[i]/1000)%10); + if ((cm.getPlayer().getGender() != itemGender) && (itemGender != 2)) + chances[i] = 0; + } + for (var i = 0; i < chances.length; i++) + totalodds += chances[i]; + var randomPick = Math.floor(Math.random()*totalodds)+1; + for (var i = 0; i < chances.length; i++) { + randomPick -= chances[i]; + if (randomPick <= 0) { + choice = i; + randomPick = totalodds + 100; + } + } + if (cm.isQuestStarted(2052)) + cm.gainItem(4031025,10); + else cm.gainItem(prizes[choice],1); + cm.warp(105040300, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1063001.js b/scripts/npc/world0/1063001.js new file mode 100644 index 0000000000..d00585af3d --- /dev/null +++ b/scripts/npc/world0/1063001.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* John JQ Flower pile #2 +*/ +function start() { + var prizes = Array(1060034, 1060040, 1060049, 1060113, 1060121, 1061000, 1061001, 1061073, 1061089, 1061142, 1062010, 1062020, 1702140, 1702115); + var chances = Array(10, 10, 10, 10, 5, 10, 10, 10, 10, 5, 8, 8, 8, 8); + var totalodds = 0; + var choice = 0; + for (var i = 0; i < chances.length; i++) { + var itemGender = (Math.floor(prizes[i]/1000)%10); + if ((cm.getPlayer().getGender() != itemGender) && (itemGender != 2)) + chances[i] = 0; + } + for (var i = 0; i < chances.length; i++) + totalodds += chances[i]; + var randomPick = Math.floor(Math.random()*totalodds)+1; + for (var i = 0; i < chances.length; i++) { + randomPick -= chances[i]; + if (randomPick <= 0) { + choice = i; + randomPick = totalodds + 100; + } + } + if (cm.isQuestStarted(2053)) + cm.gainItem(4031026,20); + else cm.gainItem(prizes[choice],1); + cm.warp(105040300, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1063002.js b/scripts/npc/world0/1063002.js new file mode 100644 index 0000000000..e568087825 --- /dev/null +++ b/scripts/npc/world0/1063002.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +// John JQ Flower pile #3 + +function start() { + var prizes = Array(1050004, 1050015, 1050041, 1050044, 1050124, 1051021, 1051036, 1051075, 1051111, 1051138, 1052003, 1052006, 1052011, 1702024, 1702026); + var chances = Array(10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 8, 8); + var totalodds = 0; + var choice = 0; + for (var i = 0; i < chances.length; i++) { + var itemGender = (Math.floor(prizes[i]/1000)%10); + if (cm.getPlayer().getGender() != itemGender && itemGender != 2) + chances[i] = 0; + } + for (var i = 0; i < chances.length; i++) + totalodds += chances[i]; + var randomPick = Math.floor(Math.random()*totalodds)+1; + for (var i = 0; i < chances.length; i++) { + randomPick -= chances[i]; + if (randomPick <= 0) { + choice = i; + randomPick = totalodds + 100; + } + } + if (cm.isQuestStarted(2054)) + cm.gainItem(4031028,30); + else cm.gainItem(prizes[choice],1); + cm.warp(105040300, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1072000.js b/scripts/npc/world0/1072000.js new file mode 100644 index 0000000000..bbaa7ac070 --- /dev/null +++ b/scripts/npc/world0/1072000.js @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Warrior Job Instructor + Warrior 2nd Job Advancement + Victoria Road : West Rocky Mountain IV (102020300) +*/ + +var status = 0; + +function start() { + if (cm.isQuestCompleted(100004)) { + cm.sendOk("You're truly a hero!"); + cm.dispose(); + } else if (cm.isQuestStarted(100003)) { + cm.completeQuest(100003); + cm.sendNext("Hmmm...it is definitely the letter from #bDances with Balrog#k...so you came all the way here to take the test and make the 2nd job advancement as the warrior. Alright, I'll explain the test to you. Don't sweat it too much, it's not that complicated."); + } else { + cm.sendOk("I can show you the way once your ready for it."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && cm.isQuestStarted(100003)) + status = 5; + else if (status == 1) + cm.sendNextPrev("I'll send you to a hidden map. You'll see monsters you don't normally see. They look the same like the regular ones, but with a totally different attitude. They neither boost your experience level nor provide you with item."); + else if (status == 2) + cm.sendNextPrev("You'll be able to acquire a marble called #b#t4031013##k while knocking down those monsters. It is a special marble made out of their sinister, evil minds. Collect 30 of those, and then go talk to a colleague of mine in there. That's how you pass the test."); + else if (status == 3) + cm.sendYesNo("Once you go inside, you can't leave until you take care of your mission. If you die, your experience level will decrease..so you better really buckle up and get ready...well, do you want to go for it now?"); + else if (status == 4) + cm.sendNext("Alright I'll let you in! Defeat the monsters inside, collect 30 Dark Marbles, then strike up a conversation with a colleague of mine inside. He'll give you #bThe Proof of a Hero#k, the proof that you've passed the test. Best of luck to you."); + cm.startQuest(100004); + cm.gainItem(4031008, -1); + else if (status == 5) { + cm.warp(108000300, 0); + cm.dispose(); + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1072001.js b/scripts/npc/world0/1072001.js new file mode 100644 index 0000000000..bef39ce7e8 --- /dev/null +++ b/scripts/npc/world0/1072001.js @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Magician Job Instructor + Magician 2nd Job Advancement + Victoria Road : The Forest North of Ellinia (101020000) +*/ + +var status = 0; + +function start() { + if (cm.isQuestCompleted(100007)) { + cm.sendOk("You're truly a hero!"); + cm.dispose(); + } else if (cm.isQuestStarted(100006)) { + cm.completeQuest(100006); + cm.sendNext("Hmmm...it is definitely the letter from #bGrendell the Really Old#k...so you came all the way here to take the test and make the 2nd job advancement as a magician. Alright, I'll explain the test to you. Don't sweat it too much, it's not that complicated.") + } else { + cm.sendOk("I can show you the way once your ready for it."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && cm.isQuestStarted(100007)) + status = 5; + else if (status == 1) + cm.sendNextPrev("I'll send you to a hidden map. You'll see monsters you don't normally see. They look the same like the regular ones, but with a totally different attitude. They neither boost your experience level nor provide you with item."); + else if (status == 2) + cm.sendNextPrev("You'll be able to acquire a marble called #b#t4031013##k while knocking down those monsters. It is a special marble made out of their sinister, evil minds. Collect 30 of those, and then go talk to a colleague of mine in there. That's how you pass the test."); + else if (status == 3) + cm.sendYesNo("Once you go inside, you can't leave until you take care of your mission. If you die, your experience level will decrease.. So you better really buckle up and get ready...well, do you want to go for it now?"); + else if (status == 4) { + cm.sendNext("Alright I'll let you in! Defeat the monsters inside, collect 30 Dark Marbles, then strike up a conversation with a colleague of mine inside. He'll give you #bThe Proof of a Hero#k, the proof that you've passed the test. Best of luck to you."); + cm.startQuest(100007); + cm.gainItem(4031009, -1); + } + else if (status == 5) { + cm.warp(108000200, 0); + cm.dispose(); + } + else cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1072002.js b/scripts/npc/world0/1072002.js new file mode 100644 index 0000000000..34a9df31dc --- /dev/null +++ b/scripts/npc/world0/1072002.js @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Bowman Job Instructor +Hunter Job Advancement +Warning Street : The Road to the Dungeon (106010000) +*/ + +var status = 0; + +function start() { + if (cm.isQuestCompleted(100001)) { + cm.sendOk("You're truly a hero!"); + cm.dispose(); + } else if (cm.isQuestStarted(100000)) { + cm.completeQuest(100000); + cm.sendNext("Oh, isn't this a letter from #bAthena#k?"); + } else { + cm.sendOk("I can show you the way once your ready for it."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && cm.isQuestStarted(100001)) + status = 4; + if (status == 1) + cm.sendNextPrev("So you want to prove your skills? Very well...") + else if (status == 2) + cm.sendAcceptDecline("I will give you a chance if you're ready."); + else if (status == 3) { + cm.startQuest(100001); + cm.gainItem(4031010, -1); + cm.sendOk("You will have to collect me #b30 #t4031013##k. Good luck.") + } else if (status == 4) { + cm.warp(108000100); + cm.dispose(); + } + else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1072003.js b/scripts/npc/world0/1072003.js new file mode 100644 index 0000000000..dfecbbe1cd --- /dev/null +++ b/scripts/npc/world0/1072003.js @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Thief Job Instructor + Thief 2nd Job Advancement + Victoria Road : Construction Site North of Kerning City (102040000) +*/ + +var status = 0; + +function start() { + if (cm.isQuestCompleted(100010)) { + cm.sendOk("You're truly a hero!"); + cm.dispose(); + } else if (cm.isQuestStarted(100009)) { + cm.completeQuest(100009); + cm.sendNext("Oh, isn't this a letter from the #bDark Lord#k?"); + } else { + cm.sendOk("I can show you the way once your ready for it."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && cm.isQuestStarted(100010)) + status = 4; + if (status == 1) + cm.sendNextPrev("So you want to prove your skills? Very well...") + else if (status == 2) + cm.sendAcceptDecline("I will give you a chance if you're ready."); + else if (status == 3) { + cm.sendOk("You will have to collect me #b30 #t4031013##k. Good luck.") + cm.startQuest(100010); + cm.gainItem(4031011, -1); + } else if (status == 4) { + cm.warp(108000400, 0); + cm.dispose(); + } + else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1072004.js b/scripts/npc/world0/1072004.js new file mode 100644 index 0000000000..b037cdb7e8 --- /dev/null +++ b/scripts/npc/world0/1072004.js @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + if (cm.haveItem(4031013,30)) { + cm.removeAll(4031013); + cm.completeQuest(100004); + cm.startQuest(100005); + cm.gainItem(4031012); + cm.sendNext("Ohhhhh.. you collected all 30 Dark Marbles!! It should have been difficult... just incredible! Alright. You've passed the test and for that, I'll reward you #bThe Proof of a Hero#k. Take that and go back to Perion."); + } else { + cm.sendSimple("You will have to collect me #b30 #t4031013##k. Good luck. \r\n#b#L1#I would like to leave#l"); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(102020300, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1072005.js b/scripts/npc/world0/1072005.js new file mode 100644 index 0000000000..2fc0fa6c02 --- /dev/null +++ b/scripts/npc/world0/1072005.js @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + if (cm.haveItem(4031013,30)) { + cm.removeAll(4031013); + cm.completeQuest(100007); + cm.startQuest(100008); + cm.gainItem(4031012); + cm.sendNext("Ohhhhh.. you collected all 30 Dark Marbles!! It should have been difficult.. just incredible! Alright. You've passed the test and for that, I'll reward you #bThe Proof of a Hero#k. Take that and go back to Ellinia."); + } else { + cm.sendSimple("You will have to collect me #b30 #t4031013##k. Good luck. \r\n#b#L1#I would like to leave#l"); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(101020000, 1); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1072006.js b/scripts/npc/world0/1072006.js new file mode 100644 index 0000000000..f223b3ab6e --- /dev/null +++ b/scripts/npc/world0/1072006.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Bowman Job Instructor - Ant Tunnel For Bowman (108000100) +-- By --------------------------------------------------------------------------------------------- + Unknown +-- Version Info ----------------------------------------------------------------------------------- + 1.2 - Clean up by Moogra + 1.1 - Statement fix [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + if (cm.haveItem(4031013,30)) { + cm.removeAll(4031013); + cm.completeQuest(100001); + cm.startQuest(100002); + cm.gainItem(4031012); + cm.sendOk("You're a true hero! Take this and Athena will acknowledge you."); + } else { + cm.sendSimple("You will have to collect me #b30 #t4031013##k. Good luck. \r\n#b#L1#I would like to leave#l") + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(106010000, 1); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1072007.js b/scripts/npc/world0/1072007.js new file mode 100644 index 0000000000..d878d844fe --- /dev/null +++ b/scripts/npc/world0/1072007.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Thief Job Instructor - Thief's Construction Site (108000400) +-- By --------------------------------------------------------------------------------------------- + Unknown +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Statement fix [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +*/ +function start() { + if (cm.haveItem(4031013,30)) { + cm.removeAll(4031013); + cm.completeQuest(100010); + cm.startQuest(100011); + cm.gainItem(4031012); + cm.sendOk("You're a true hero! Take this and the Dark Lord will acknowledge you."); + } else { + cm.sendSimple("You will have to collect me #b30 #t4031013##k. Good luck. \r\n#b#L1#I would like to leave#l") + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == 1) + cm.warp(102040000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1072008.js b/scripts/npc/world0/1072008.js new file mode 100644 index 0000000000..dae6e0194f --- /dev/null +++ b/scripts/npc/world0/1072008.js @@ -0,0 +1,40 @@ +/** + Author: xQuasar + NPC: Kyrin - Pirate Job Advancer + Inside Test Room +**/ + +var status; + +function start() { + status = -1; + action(1,0,0); +} + +function action(mode,type,selection) { + if (status == -1) { + if (cm.getMapId() == 108000502) { + if (!(cm.haveItem(4031856,15))) { + cm.sendNext("Go, and get me 15 #bPotent Wind Crystals#k."); + cm.dispose(); + } else { + status = 2; + cm.sendNext("Wow, you have brought me 15 #bPotent Wind Crystals#k! Congratulations. Let me warp you out now."); + } + } else if (cm.getMapId() == 108000501) { + if (!(cm.haveItem(4031857,15))) { + cm.sendNext("Go, and get me 15 #bPotent Power Crystals#k."); + cm.dispose(); + } else { + status = 2; + cm.sendNext("Wow, you have brought me 15 #bPotent Power Crystals#k! Congratulations. Let me warp you out now."); + } + } else { + cm.sendNext("Error. Please report this."); + cm.dispose(); + } + } else if (status == 2) { + cm.warp(120000101,0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1081001.js b/scripts/npc/world0/1081001.js new file mode 100644 index 0000000000..440188a79c --- /dev/null +++ b/scripts/npc/world0/1081001.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Pison - Florina Beach(110000000) +-- By --------------------------------------------------------------------------------------------- + Information & Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.2 - Fixed and cleanup [Shootsource] + 1.1 - Add null map check [Xterminator] + 1.0 - First Version +--------------------------------------------------------------------------------------------------- + **/ +var status = 0; +var returnmap; + +function start() { + returnmap = cm.getPlayer().getSavedLocation("FLORINA"); + if (returnmap == -1) + returnmap = 104000000; + cm.sendNext("So you want to leave #b#m110000000##k? If you want, I can take you back to #b#m"+returnmap+"##k."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + return; + } else if (mode == 0) { + cm.sendNext("You must have some business to take care of here. It's not a bad idea to take some rest at #m"+returnmap+"# Look at me; I love it here so much that I wound up living here. Hahaha anyway, talk to me when you feel like going back."); + cm.dispose(); + return; + } else if (mode == 1) { + status++; + if (status == 1) + cm.sendYesNo("Are you sure you want to return to #b#m"+returnmap+"##k? Alright, we'll have to get going fast. Do you want to head back to #m"+returnmap+"# now?") + else { + cm.warp(returnmap); + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/1090000.js b/scripts/npc/world0/1090000.js new file mode 100644 index 0000000000..498a446593 --- /dev/null +++ b/scripts/npc/world0/1090000.js @@ -0,0 +1,168 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Kyrin + Pirate Job Advancement + + Custom Quest 100009, 100011 +*/ + +status = -1; +actionx = {"1stJob" : false, "2ndjob" : false, "2ndjobT" : false, "3thJobI" : false, "3thJobC" : false}; +job = 510; + +function start() { + if (cm.getJobId() == 0) { + actionx["1stJob"] = true; + if (cm.getLevel() >= 10) + cm.sendNext("Want to be a pirate? There are some standards to meet. because we can't just accept EVERYONE in... #bYour level should be at least 10#k. Let's see."); + else { + cm.sendOk("Train a bit more and I can show you the way of the #rPirate#k."); + cm.dispose(); + } + } else if (cm.getLevel() >= 30 && cm.getJobId() == 500) { + actionx["2ndJob"] = true; + if (cm.isQuestCompleted(2191) || cm.isQuestCompleted(2192)) + cm.sendNext("I see you have done well. I will allow you to take the next step on your long road."); + else + cm.sendNext("The progress you have made is astonishing."); + } else if (actionx["3thJobI"] || (cm.getPlayer().gotPartyQuestItem("JB3") && cm.getLevel() >= 70 && cm.getJobId() % 10 == 0 && parseInt(cm.getJobId() / 100) == 5 && !cm.getPlayer().gotPartyQuestItem("JBP"))){ + actionx["3thJobI"] = true; + cm.sendNext("There you are. A few days ago, #b#p2020013##k of Ossyria talked to me about you. I see that you are interested in making the leap to the world of the third job advancement for pirates. To archieve that goal, I will have to test your strength in order to see whether you are worthy of the advancement. There is an opening in the middle of a cave on Victoria Island, where it'll lead you to a secret passage. Once inside, you'll face a clone of myself. Your task is to defeat him and bring #b#t4031059##k back with you."); + } else if (cm.getPlayer().gotPartyQuestItem("JBP") && !cm.haveItem(4031059)){ + cm.sendNext("Please, bring me the #b#t4031059##k."); + cm.dispose(); + } else if (cm.haveItem(4031059) && cm.getPlayer().gotPartyQuestItem("JBP")){ + actionx["3thJobC"] = true; + cm.sendNext("Nice work. You have defeated my clone and brought #b#t4031059##k back safely. You have now proven yourself worthy of the 3rd job advancement from the physical standpoint. Now you should give this necklace to #b#p2020013##k in Ossyria to take on the second part of the test. Good luck. You'll need it."); + } else { + cm.sendOk("You have chosen wisely."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + status++; + if (mode == 0 && type != 1) + status -= 2; + if (status == -1){ + start(); + return; + } else if (mode != 1 || status == 7 && type != 1 || (actionx["1stJob"] && status == 4) || (cm.haveItem(4031008) && status == 2) || (actionx["3thJobI"] && status == 1)){ + if (mode == 0 && status == 2 && type == 1) + cm.sendOk("You know there is no other choice..."); + if (!(mode == 0 && type != 1)){ + cm.dispose(); + return; + } + } + if (actionx["1stJob"]){ + if (status == 0) + cm.sendYesNo("Oh...! You look like someone that can definitely be a part of us... all you need is a little slang, and... yeah... so, what do you think? Wanna be the Pirate?"); + else if (status == 1){ + if (cm.canHold(2070000) && cm.canHold(1472061)){ + if (cm.getJobId() == 0){ + cm.changeJobById(500); + cm.gainItem(1492000, 1); + cm.gainItem(1482000, 1); + cm.gainItem(2330000, 1000); + cm.resetStats(); + } + cm.sendNext("Alright, from here out, you are a part of us! You'll be living the life of a wanderer at ..., but just be patient as soon, you'll be living the high life. Alright, it ain't much, but I'll give you some of my abilities... HAAAHHH!!!"); + } else { + cm.sendNext("Make some room in your inventory and talk back to me."); + cm.dispose(); + } + } else if (status == 2) + cm.sendNextPrev("You've gotten much stronger now. Plus every single one of your inventories have added slots. A whole row, to be exact. Go see for it yourself. I just gave you a little bit of #bSP#k. When you open up the #bSkill#k menu on the lower left corner of the screen, there are skills you can learn by using SP's. One warning, though: You can't raise it all together all at once. There are also skills you can acquire only after having learned a couple of skills first."); + else if (status == 3) + cm.sendNextPrev("One more warning. Once you have chosen, you (Incomplete)"); + } else if(actionx["2ndJob"]){ + if (status == 0){ + if (cm.isQuestCompleted(2191) || cm.isQuestCompleted(2192)) + cm.sendSimple("Alright, when you have made your decision, click on [I'll choose my occupation] at the bottom.#b\r\n#L0#Please explain to me what being the Brawler is all about.\r\n#L1#Please explain to me what being the Gunslinger is all about.\r\n#L3#I'll choose my occupation!"); + else + cm.sendNext("Good decision. You look strong, but I need to see if you really are strong enough to pass the test, it's not a difficult test, so you'll do just fine."); + } else if (status == 1){ + if (!cm.isQuestCompleted(2191) && !cm.isQuestCompleted(2192)){ + // Pirate works differently from the other jobs. It warps you directly in. + actionx["2ndJobT"] = true; + cm.sendYesNo("Would you like to take the test now?"); + } else { + if (selection < 3) { + cm.sendNext("Not done."); + status -= 2; + } else + cm.sendNextPrev("You have a long road ahead of you still, but being a pirate will help you get there. Just keep that in mind and you will do fine."); + } + } else if (status == 2){ + if (actionx["2ndJobT"]) { + var map = 0; + if(cm.isQuestStarted(2191)) + map = 108000502; + else + map = 108000501; + if(cm.getPlayerCount(map) > 0) { + cm.sendOk("All the training maps are currently in use. Please try again later."); + cm.dispose(); + } else { + cm.warp(map); + cm.dispose(); + return; + } + } else { + if(cm.isQuestCompleted(2191)) + job = 510; + else if(cm.isQuestCompleted(2192)) + job = 520; + + cm.sendYesNo("So you want to make the second job advancement as the " + (job == 510 ? "#bBrawler#k" : "#bGunslinger#k") + "? You know you won't be able to choose a different job for the 2nd job advancement once you make your decision here, right?"); + } + } else if (status == 3){ + if (cm.haveItem(4031012)) + cm.gainItem(4031012, -1); + + if(job == 510) cm.sendNext("From here on out, you are a #bBrawler#k. Brawlers rule the world with the power of their bare fists...which means they need to train their body more than others. If you have any trouble training, I'll be more than happy to help."); + else cm.sendNext("From here on out, you are a #bGunslinger#k. Gunslingers are notable for their long-range attacks with sniper-like accuracy and of course, using Guns as their primary weapon. You should continue training to truly master your skills. If you are having trouble training, I'll be here to help."); + + if (cm.getJobId() != job) + cm.changeJobById(job); + } else if (status == 4) + cm.sendNextPrev("I have just given you a book that gives you the list of skills you can acquire as a " + (job == 510 ? "brawler" : "gunslinger") + ". Also your etc inventory has expanded by adding another row to it. Your max HP and MP have increased, too. Go check and see for it yourself."); + else if (status == 5) + cm.sendNextPrev("I have also given you a little bit of #bSP#k. Open the #bSkill Menu#k located at the bottom left corner. you'll be able to boost up the newer acquired 2nd level skills. A word of warning, though. You can't boost them up all at once. Some of the skills are only available after you have learned other skills. Make sure yo remember that."); + else if (status == 6) + cm.sendNextPrev((job == 510 ? "Brawlers" : "Gunslingers") + " need to be strong. But remember that you can't abuse that power and use it on a weaking. Please use your enormous power the right way, because... for you to use that the right way, that is much harden than just getting stronger. Please find me after you have advanced much further. I'll be waiting for you."); + } else if (actionx["3thJobI"]){ + if (status == 0){ + if (cm.getPlayer().gotPartyQuestItem("JB3")){ + cm.getPlayer().removePartyQuestItem("JB3"); + cm.getPlayer().setPartyQuestItemObtained("JBP"); + } + cm.sendNextPrev("Since he is a clone of myself, you can expect a tough battle ahead. He uses a number of special attacking skills unlike any you have ever seen, and it is your task to successfully take him one on one. There is a time limit in the secret passage, so it is crucial that you defeat him within the time limit. I wish you the best of luck, and I hope you bring the #b#t4031059##k with you."); + } + } else if (actionx["3thJobC"]){ + cm.getPlayer().removePartyQuestItem("JBP"); + cm.gainItem(4031059, -1); + cm.gainItem(4031057, 1); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1091003.js b/scripts/npc/world0/1091003.js new file mode 100644 index 0000000000..1388997eff --- /dev/null +++ b/scripts/npc/world0/1091003.js @@ -0,0 +1,201 @@ +/* + Serryl (1091003) + Location: The Nautilus +*/ + +/** + Author: xQuasar +*/ + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "What? You want to make your own weapons and gloves? Seriously... it's tough to do it by yourself if you don't have experience... I'll help you out. I've been a pirate for 20 years, and for 20 years I have made various items for the crew here. It's easy for me."; + var options = new Array("Make a Knuckler","Make a Gun","Make a pair of gloves"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#b#L" + i + "# " + options[i] + "#l#k"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //Making a Knuckler + var selStr = "As long as you bring in the materials required, I'll make you a fine Knuckler. Which Knuckler would you like to make?"; + var knucklers = new Array("Leather Arms (Level limit: 15, Pirate)", "Double Tail Knuckler (Level limit: 20, Pirate)", "Norman Grip (Level limit: 25, Pirate)", "Prime Hands (Level limit: 30, Pirate)", "Silver Maiden (Level limit: 35, Pirate)", "Neozard (Level limit: 40, Pirate)", "Fury Claw (Level limit: 50, Pirate)"); + for (var i = 0; i < knucklers.length; i++){ + selStr += "\r\n#b#L" + i + "# " + knucklers[i] + "#l#k"; + } + equip = true; + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //Making a Gun + var selStr = "As long as you bring in the materials required, I'll make you a fine Gun. Which Gun would you like to make?"; + var guns = new Array("Dellinger Special (Level limit: 15, Pirate)", "The Negotiator (Level limit: 20, Pirate)", "Golden Hook (Level limit: 25, Pirate)", "Cold Mind (Level limit: 30, Pirate)", "Shooting Star (Level limit: 35, Pirate)", "Lunar Shooter (Level limit: 40, Pirate)", "Mr. Rasfelt (Level limit: 50, Pirate)"); + for (var i = 0; i < guns.length; i++){ + selStr += "\r\n#b#L" + i + "# " + guns[i] + "#l#k"; + } + equip = true; + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //Making a pair of pirate gloves + var selStr = "As long as you bring in the materials required, I'll make you a fine glove. Which glove would you like to make?"; + var gloves = new Array ("Green Lagger Halfglove","Brown Leather Armour Glove","Hard Leather Glove","Yellow Tartis","Brown Jewelled","Brown Barbee","Brown Royce","Black Schult"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#b#L" + i + "# " + gloves[i] + "#l#k"; + } + equip = true; + cm.sendSimple(selStr); + } + if (equip) + status++; + } + else if (status == 3 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + if (selectedType == 0){ //Making a Knuckler + var itemSet = new Array(1482001, 1482002, 1482003, 1482004, 1482005, 1482006, 1482007); + var matSet = new Array(4000021, new Array(4011001,4011000,4000021,4003000), new Array(4011000,4011001,4003000), new Array(4011000,4011001,4000021,4003000), new Array(4011000,4011001,4000021,4003000), new Array(4011000,4011001,4021000,4000021,4003000), new Array(4000039,4011000,4011001,4000030,4000021,4003000)); + var matQtySet = new Array(20, new Array(1,1,10,5), new Array(2,1,10), new Array(1,1,30,10), new Array(2,2,30,20), new Array(1,1,2,50,20), new Array(150,1,2,20,20,20)); + var costSet = new Array(1000,2000,5000,15000,30000,50000,100000); + var levelLimitSet = new Array(15,20,25,30,35,40,50); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + levelLimit = levelLimitSet[selectedItem]; + } + else if (selectedType == 1){ //Making a Gun + var itemSet = new Array(1492001, 1492002, 1492003, 1492004, 1492005, 1492006, 1492007); + var matSet = new Array(new Array(4011000,4003000,4003001), new Array(4011000,4003000,4003001,4000021), new Array(4011000,4003000), new Array(4011001,4000021,4003000), new Array(4011006,4011001,4000021,4003000), new Array(4011004,4011001,4000021,4003000), new Array(4011006,4011004,4011001,4000030,4003000)); + var matQtySet = new Array(new Array(1,5,1), new Array(1,10,5,10), new Array(2,10), new Array(2,10,10), new Array(10,2,5,10), new Array(1,2,10,20), new Array(1,2,4,30,30)); + var costSet = new Array (1000,2000,5000,15000,30000,50000,100000); + var levelLimitSet = new Array(15,20,25,30,35,40,50); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + levelLimit = levelLimitSet[selectedItem]; + } + else if (selectedType == 2){ //Making a pair of pirate gloves + var itemSet = new Array(1082180, 1082183, 1082186, 1082189, 1082192, 1082195, 1082198, 1082201); + var matSet = new Array(new Array(4000021,4021003),4000021,new Array(4011000,4000021),new Array(4021006,4000021,4003000),new Array(4011000,4000021,4003000),new Array(4000021,4011000,4011001,4003000),new Array(4011000,4000021,4000030,4003000),new Array(4011007,4021008,4021007,4000030,4003000)); + var matQtySet = new Array(new Array(15,1),35,new Array(2,20),new Array(2,50,10),new Array(3,60,15),new Array(80,3,3,25),new Array(3,20,40,30),new Array(1,1,1,50,50)); + var costSet = new Array(1000,8000,15000,25000,30000,40000,50000,70000); + var levelLimitSet = new Array(15,20,25,30,35,40,50,60); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + levelLimit = levelLimitSet[selectedItem]; + } + + prompt = "Making one #t" + item + "# requires the items listed below. The level limit for this item is " + levelLimit + ", so check and make sure you really need this item before getting it. What do you think? Do you really want one?\r\n"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 4 && mode == 1) { + var pass = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost * qty) + { + cm.sendNext("Check and make sure you have all the necessary items to make this. Also, make sure your Equips inventory has room. I can't give you the item if your inventory is full, you know."); + cm.dispose(); + return; + } + else + { + if (mats instanceof Array) { + for(var i = 0; pass && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + pass = false; + } + else if (!cm.haveItem(mats, matQty)) + pass = false; + /*if (mats instanceof Array) { + for(var i = 0; pass && i < mats.length; i++) + { + if (matQty[i] * qty == 1) { + if (!cm.haveItem(mats[i])) + { + pass = false; + } + } + else { + var count = 0; + var iter = cm.getChar().getInventory(MapleInventoryType.ETC).listById(mats[i]).iterator(); + while (iter.hasNext()) { + count += iter.next().getQuantity(); + } + if (count < matQty[i] * qty) + pass = false; + } + } + } + else { + var count = 0; + var iter = cm.getChar().getInventory(MapleInventoryType.ETC).listById(mats).iterator(); + while (iter.hasNext()) { + count += iter.next().getQuantity(); + } + if (count < matQty * qty) + pass = false; + } + */ + } + + if (pass == false) + cm.sendNext("Check and make sure you have all the necessary items to make this. Also, make sure your Equips inventory has room. I can't give you the item if your inventory is full, you know."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + + if (cost > 0) + cm.gainMeso(-cost * qty); + + if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("All done. If you need anything else... Well, I'm not going anywhere."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1091004.js b/scripts/npc/world0/1091004.js new file mode 100644 index 0000000000..dac8932881 --- /dev/null +++ b/scripts/npc/world0/1091004.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1091004); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1092000.js b/scripts/npc/world0/1092000.js new file mode 100644 index 0000000000..74d6a2ae63 --- /dev/null +++ b/scripts/npc/world0/1092000.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @Name Tangyoon + * @Author xXOsirisXx (BubblesDev) + */ + +status = -1; + +function start() { + cm.sendNext("Okay, I'll now send you to the stable where my cows are. Watch out for the calves that drink all the milk. You don't want your effort to go to waste."); +} + +function action(mode, type, selection){ + if (mode == -1 || !cm.isQuestStarted(2180)){ + cm.dispose(); + return; + } else if (mode == 0) + status--; + else + status++; + if (status == 1) + cm.sendNextPrev("It won't be easy to tell at a glance between a calf and a cow. Those calves may only be a month or two old, but they have already grown to the size of their mother. They even look alike...even I get confused at times! Good luck!"); + else if (status == 2) { + if (cm.canHold(4031847)) { + cm.gainItem(4031847, 1); + cm.warp(912000100); + } else + cm.sendNextPrev("I can't give you the empty bottle because your inventory is full. Please make some room in your Etc window."); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1092007.js b/scripts/npc/world0/1092007.js new file mode 100644 index 0000000000..46ba006425 --- /dev/null +++ b/scripts/npc/world0/1092007.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +NPC: Muirhat - Nautilus' Port +Created By: Cyndicate, shortened by Moogra +Function: No specific function, useless text. +*/ + +function start() { + cm.sendOk("The Black Magician and his followers. Kyrin and the Crew of Nautilus. \n They'll be chasing one another until one of them doesn't exist, that's for sure."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1092010.js b/scripts/npc/world0/1092010.js new file mode 100644 index 0000000000..99f5277ef7 --- /dev/null +++ b/scripts/npc/world0/1092010.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +-- JavaScript ----------------- +Jack - Nautilus' Port +-- Created By -- +Cody/Cyndicate, totally recoded by Moogra +-- Function -- +No specific function, useless text. +-- GMS LIKE -- +*/ + +function start() { + cm.sendOk("(Scratch scratch...)"); + cm.dispose(); +} diff --git a/scripts/npc/world0/1092014.js b/scripts/npc/world0/1092014.js new file mode 100644 index 0000000000..76dc351e06 --- /dev/null +++ b/scripts/npc/world0/1092014.js @@ -0,0 +1,53 @@ +var status = 0; +var maps = [104000000, 102000000, 100000000, 101000000, 103000000]; +var cost = [1000, 1000, 1000, 800, 1000]; +var selectedMap = -1; + +function start() { + cm.sendNext("Hello, I drive the Nautilus' Mid-Sized Taxi. If you want to go from town to town safely and fast, then ride our cab. We'll glady take you to your destination with an affordable price."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 1 && mode == 0) { + cm.dispose(); + return; + } else if (status >= 2 && mode == 0) { + cm.sendNext("There's a lot to see in this town, too. Come back and find us when you need to go to a different town."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + var selStr = ""; + if (cm.getJobId() == 0) + selStr += "We have a special 90% discount for beginners."; + selStr += "Choose your destination, for fees will change from place to place.#b"; + for (var i = 0; i < maps.length; i++) + selStr += "\r\n#L" + i + "##m" + maps[i] + "# (" + (cm.getJobId() == 0 ? cost[i] / 10 : cost[i]) + " mesos)#l"; + cm.sendSimple(selStr); + } else if (status == 2) { + cm.sendYesNo("You don't have anything else to do here, huh? Do you really want to go to #b#m" + maps[selection] + "##k? It'll cost you #b"+ (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection]) + " mesos#k."); + selectedMap = selection; + } else if (status == 3) { + if (cm.getMeso() < (cm.getJobId() == 0 ? cost[selection] / 10 : cost[selection])) { + cm.sendNext("You don't have enough mesos. Sorry to say this, but without them, you won't be able to ride the cab."); + cm.dispose(); + return; + } + if (cm.getJobId() == 0) { + mesos = -cost[selectedMap] / 10; + } else { + mesos = -cost[selectedMap]; + } + cm.gainMeso(mesos); + cm.warp(maps[selectedMap], 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1092016.js b/scripts/npc/world0/1092016.js new file mode 100644 index 0000000000..c033e12b40 --- /dev/null +++ b/scripts/npc/world0/1092016.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : XxOsirisxX (BubblesDev) + NPC Name: Shiny Stone +*/ + +function start() { + if(cm.isQuestStarted(2166)) { + cm.sendNext("It's a beautiful, shiny rock. I can feel the mysterious power surrounding it."); + cm.completeQuest(2166); + } else + cm.sendNext("I touched the shiny rock with my hand, and I felt a mysterious power flowing into my body."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1092019.js b/scripts/npc/world0/1092019.js new file mode 100644 index 0000000000..40083e6cf1 --- /dev/null +++ b/scripts/npc/world0/1092019.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +-- JavaScript ----------------- +Lord Jonathan - Nautilus' Port +-- Created By -- +Cody/Cyndicate +-- Totally Recreated by Moogra-- +-- Function -- +No specific function, useless text. +-- GMS LIKE -- +*/ +function start() { + cm.sendOk("Who are you talking to me? If you're just bored, go bother somebody else."); + cm.dispose(); +} + diff --git a/scripts/npc/world0/1092090.js b/scripts/npc/world0/1092090.js new file mode 100644 index 0000000000..ed89201800 --- /dev/null +++ b/scripts/npc/world0/1092090.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +status = -1; + +function start() { + if(cm.haveItem(4031847)) + cm.sendNext("The hungry calf is drinking all the milk! The bottle remains empty..."); + else if(cm.haveItem(4031848) || cm.haveItem(4031849) || cm.haveItem(4031850)){ + cm.sendNext("The hungry calf is drinking all the milk! The bottle is now empty."); + if(cm.haveItem(4031848)) + cm.gainItem(4031848,-1); + else if(cm.haveItem(4031849)) + cm.gainItem(4031849, -1); + else + cm.gainItem(4031850, -1); + cm.gainItem(4031847, 1); + cm.dispose(); + } +} + +function action(mode, type, selection){ + if(mode == -1) + cm.dispose(); + else if(mode == 0){ + status--; + start(); + }else + status++; + if(status == 0) + cm.sendPrev("The hungry calf isn't interested in the empty bottle."); + else if(status == 1) + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1092091.js b/scripts/npc/world0/1092091.js new file mode 100644 index 0000000000..f6e83bfc2b --- /dev/null +++ b/scripts/npc/world0/1092091.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; + +function start() { + if (cm.haveItem(4031847)) + cm.sendNext("The hungry calf is drinking all the milk! The bottle remains empty..."); + else if (cm.haveItem(4031848) || cm.haveItem(4031849) || cm.haveItem(4031850)) { + cm.sendNext("The hungry calf is drinking all the milk! The bottle is now empty."); + if (cm.haveItem(4031848)) + cm.gainItem(4031848,-1); + else if (cm.haveItem(4031849)) + cm.gainItem(4031849, -1); + else + cm.gainItem(4031850, -1); + cm.gainItem(4031847, 1); + cm.dispose(); + } +} + +function action(mode, type, selection){ + if (mode == -1) + cm.dispose(); + else if (mode == 0) { + status--; + start(); + } else + status++; + if (status == 0) + cm.sendPrev("The hungry calf isn't interested in the empty bottle."); + else if (status == 1) + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1092094.js b/scripts/npc/world0/1092094.js new file mode 100644 index 0000000000..27d7a951b4 --- /dev/null +++ b/scripts/npc/world0/1092094.js @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + if (cm.canHold(4031848) && cm.haveItem(4031847)) { + cm.sendNext("Now filling up the bottle with milk. The bottle is now 1/3 full of milk."); + cm.gainItem(4031847, -1); + cm.gainItem(4031848, 1); + } else if (cm.canHold(4031849, 1) && cm.haveItem(4031848)) { + cm.sendNext("Now filling up the bottle with milk. The bottle is now 2/3 full of milk."); + cm.gainItem(4031848, -1); + cm.gainItem(4031849, 1); + } else if (cm.canHold(4031850) && cm.haveItem(4031849)) { + cm.sendNext("Now filling up the bottle with milk. The bottle is now completely full of milk."); + cm.gainItem(4031849, -1); + cm.gainItem(4031850, 1); + } else + cm.sendNext("Your inventory is full, and there's no room for a milk bottle."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1092095.js b/scripts/npc/world0/1092095.js new file mode 100644 index 0000000000..f3b9a6dca8 --- /dev/null +++ b/scripts/npc/world0/1092095.js @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + if (cm.canHold(4031848) && cm.haveItem(4031847)){ + cm.sendNext("Now filling up the bottle with milk. The bottle is now 1/3 full of milk."); + cm.gainItem(4031847, -1); + cm.gainItem(4031848, 1); + } else if(cm.canHold(4031849) && cm.haveItem(4031848)){ + cm.sendNext("Now filling up the bottle with milk. The bottle is now 2/3 full of milk."); + cm.gainItem(4031848, -1); + cm.gainItem(4031849, 1); + } else if(cm.canHold(4031850) && cm.haveItem(4031849)){ + cm.sendNext("Now filling up the bottle with milk. The bottle is now completely full of milk."); + cm.gainItem(4031849, -1); + cm.gainItem(4031850, 1); + } else + cm.sendNext("Your inventory is full, and there's no room for a milk bottle."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1094000.js b/scripts/npc/world0/1094000.js new file mode 100644 index 0000000000..3cd3d172dc --- /dev/null +++ b/scripts/npc/world0/1094000.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +-- JavaScript ----------------- +Bart - Nautilus' Port +-- Created By -- +Cody/Cyndicate +-- Function -- +No specific function, useless text. +-- GMS LIKE -- +*/ +function start() { + cm.sendOk("I need to keep my eyes wide open to look for the enemy although my sea gull friends help me out so it's not all that bad."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1094002.js b/scripts/npc/world0/1094002.js new file mode 100644 index 0000000000..fffe880c6f --- /dev/null +++ b/scripts/npc/world0/1094002.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: XxOsirisxX (BubblesDev 0.75) + NPC: Bush - Abel Glasses Quest +*/ + +var rolled = 0; + +function start(mode, type, selection){ + //cm.sendGetText("Do you want to obtain a glasses?"); + if(!cm.isQuestStarted(2186)) { + cm.sendOk("Just a pile of boxes, nothing special..."); + cm.dispose(); + return; + } + + cm.sendNext("Do you want to obtain a glasses?"); +} + +function action(mode, type, selection) { + if(!(cm.haveItem(4031853) || cm.haveItem(4031854) || cm.haveItem(4031855))) { + rolled = Math.floor(Math.random() * 3); + + if(rolled == 0) cm.gainItem(4031853, 1); + else if(rolled == 1) cm.gainItem(4031854, 1); + else cm.gainItem(4031855, 1); + } + else cm.sendOk("You #balready have#k the glasses that was here!"); + + //cm.saveSquadMembers(cm.getText()); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1094003.js b/scripts/npc/world0/1094003.js new file mode 100644 index 0000000000..0709c55b98 --- /dev/null +++ b/scripts/npc/world0/1094003.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: XxOsirisxX (BubblesDev 0.75) + NPC: Bush - Abel Glasses Quest +*/ + +function start(mode, type, selection){ + cm.sendGetText("Do you want to obtain a glasses?"); +} + +function action(mode, type, selection) { + if(!(cm.haveItem(4031853) || cm.haveItem(4031854) || cm.haveItem(4031855))) + cm.gainItem(4031854, 1); + cm.saveSquadMembers(cm.getText()); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1094004.js b/scripts/npc/world0/1094004.js new file mode 100644 index 0000000000..0709c55b98 --- /dev/null +++ b/scripts/npc/world0/1094004.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: XxOsirisxX (BubblesDev 0.75) + NPC: Bush - Abel Glasses Quest +*/ + +function start(mode, type, selection){ + cm.sendGetText("Do you want to obtain a glasses?"); +} + +function action(mode, type, selection) { + if(!(cm.haveItem(4031853) || cm.haveItem(4031854) || cm.haveItem(4031855))) + cm.gainItem(4031854, 1); + cm.saveSquadMembers(cm.getText()); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1094005.js b/scripts/npc/world0/1094005.js new file mode 100644 index 0000000000..0709c55b98 --- /dev/null +++ b/scripts/npc/world0/1094005.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: XxOsirisxX (BubblesDev 0.75) + NPC: Bush - Abel Glasses Quest +*/ + +function start(mode, type, selection){ + cm.sendGetText("Do you want to obtain a glasses?"); +} + +function action(mode, type, selection) { + if(!(cm.haveItem(4031853) || cm.haveItem(4031854) || cm.haveItem(4031855))) + cm.gainItem(4031854, 1); + cm.saveSquadMembers(cm.getText()); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1094006.js b/scripts/npc/world0/1094006.js new file mode 100644 index 0000000000..0709c55b98 --- /dev/null +++ b/scripts/npc/world0/1094006.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: XxOsirisxX (BubblesDev 0.75) + NPC: Bush - Abel Glasses Quest +*/ + +function start(mode, type, selection){ + cm.sendGetText("Do you want to obtain a glasses?"); +} + +function action(mode, type, selection) { + if(!(cm.haveItem(4031853) || cm.haveItem(4031854) || cm.haveItem(4031855))) + cm.gainItem(4031854, 1); + cm.saveSquadMembers(cm.getText()); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1095001.js b/scripts/npc/world0/1095001.js new file mode 100644 index 0000000000..0a080aa4be --- /dev/null +++ b/scripts/npc/world0/1095001.js @@ -0,0 +1,33 @@ +var status = -1; +var map = 912030000; +var num = 5; +var maxp = 5; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status <= 1) { + cm.dispose(); + return; + } + status--; + } + if (status == 0) { + var selStr = "Would you like to go into the Training Center?"; + for (var i = 0; i < num; i++) { + selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + if (selection < 0 || selection >= num) { + cm.dispose(); + } else if (cm.getPlayerCount(map + selection) >= maxp) { + cm.sendNext("This training center is full."); + status = -1; + } else { + cm.warp(map + selection, 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1095002.js b/scripts/npc/world0/1095002.js new file mode 100644 index 0000000000..0a080aa4be --- /dev/null +++ b/scripts/npc/world0/1095002.js @@ -0,0 +1,33 @@ +var status = -1; +var map = 912030000; +var num = 5; +var maxp = 5; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status <= 1) { + cm.dispose(); + return; + } + status--; + } + if (status == 0) { + var selStr = "Would you like to go into the Training Center?"; + for (var i = 0; i < num; i++) { + selStr += "\r\n#b#L" + i + "#Training Center " + i + " (" + cm.getPlayerCount(map + i) + "/" + maxp + ")#l#k"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + if (selection < 0 || selection >= num) { + cm.dispose(); + } else if (cm.getPlayerCount(map + selection) >= maxp) { + cm.sendNext("This training center is full."); + status = -1; + } else { + cm.warp(map + selection, 0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1096001.js b/scripts/npc/world0/1096001.js new file mode 100644 index 0000000000..e33f3d3484 --- /dev/null +++ b/scripts/npc/world0/1096001.js @@ -0,0 +1,4 @@ +function start() { + cm.sendOk("Will I ever finish cleaning? This ship is just too big..."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1096003.js b/scripts/npc/world0/1096003.js new file mode 100644 index 0000000000..6e4cdb4b00 --- /dev/null +++ b/scripts/npc/world0/1096003.js @@ -0,0 +1,25 @@ +var status = -1; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + cm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + cm.sendDirectionInfo(4, 1096003);//else you will crash sending sendNext + cm.sendDirectionInfo(3, 4); + cm.sendNext("Ook! Ook!"); + cm.showIntro("Effect/Direction4.img/cannonshooter/face00"); + } else if (status == 1) { + cm.unlockUI(); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1096005.js b/scripts/npc/world0/1096005.js new file mode 100644 index 0000000000..08b8e28982 --- /dev/null +++ b/scripts/npc/world0/1096005.js @@ -0,0 +1,38 @@ +var status = -1; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + cm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + cm.sendDirectionInfo(4, 1096005);//else you will crash sending sendNext + cm.sendNext("All right! Let's go!"); + } else if (status == 1) { + cm.removeNPC(579711); + cm.removeNPC2(579711); + cm.updateInfo("fire", "0"); + cm.playSound("cannonshooter/fire"); + cm.sendDirectionInfo("Effect/Direction4.img/effect/cannonshooter/flying/0", 7000, 0, 0, -1, -1); + cm.sendDirectionInfo("Effect/Direction4.img/effect/cannonshooter/flying1/0", 7000, 0, 0, -1, -1); + cm.sendDirectionInfo(1, 800); + } else if (status == 2) { + cm.warp(912060300); + } else if (status == 3) { + cm.sendDirectionInfo("Effect/Direction4.img/effect/cannonshooter/balloon/1", 9000, 0, 0, 0, -1); + cm.sendDirectionInfo(1, 1500); + } else if (status == 4) { + cm.sendDirectionInfo("Effect/Direction4.img/effect/cannonshooter/balloon/2", 9000, 0, 0, 0, -1); + cm.showIntro("Effect/Direction4.img/cannonshooter/face04"); + cm.showIntro("Effect/Direction4.img/cannonshooter/out01"); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1096010.js b/scripts/npc/world0/1096010.js new file mode 100644 index 0000000000..cbdcda9ddc --- /dev/null +++ b/scripts/npc/world0/1096010.js @@ -0,0 +1,13 @@ +function start() { + if (cm.isQuestStarted(2566)) { + if (!cm.haveItem(4032985)) { + if (cm.canHold(4032985)) { + cm.gainItem(4032985, true); + cm.earnTitle("You found the Ignition Device. Bring it to Cutter."); + } + } else { + cm.earnTitle("You already have the Ignition Device."); + } + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1100000.js b/scripts/npc/world0/1100000.js new file mode 100644 index 0000000000..646e923589 --- /dev/null +++ b/scripts/npc/world0/1100000.js @@ -0,0 +1,4 @@ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1100000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1100003.js b/scripts/npc/world0/1100003.js new file mode 100644 index 0000000000..cbb25cfe38 --- /dev/null +++ b/scripts/npc/world0/1100003.js @@ -0,0 +1,51 @@ +/** +---------------------------------------------------------------------------------- + Skyferry Between Victoria Island, Ereve and Orbis. + + 1100003 Kiriru (To Victoria Island From Ereve) + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +var menu = new Array("Victoria Island"); +var method; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } else { + if(mode == 0 && status == 0) { + cm.dispose(); + return; + } else if(mode == 0) { + cm.sendNext("If you're not interested, then oh well..."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for(var i=0; i < menu.length; i++) { + var display = "\r\n#L"+i+"##b Victoria Island (1000 mesos)#k"; + } + cm.sendSimple("Eh, Hello...again. Do you want to leave Ereve and go somewhere else? If so, you've come to the right place. I operate a ferry that goes from #bEreve#k to #bVictoria Island#k, I can take you to #bVictoria Island#k if you want... You'll have to pay a fee of #b1000#k Mesos.\r\n"+display); + + } else if(status == 1) { + if(cm.getMeso() < 1000) { + cm.sendNext("Hmm... Are you sure you have #b1000#k Mesos? Check your Inventory and make sure you have enough. You must pay the fee or I can't let you get on..."); + cm.dispose(); + } else { + cm.gainMeso(-1000); + cm.warp(200090031); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1100004.js b/scripts/npc/world0/1100004.js new file mode 100644 index 0000000000..2a366d442d --- /dev/null +++ b/scripts/npc/world0/1100004.js @@ -0,0 +1,50 @@ +/** +---------------------------------------------------------------------------------- + Skyferry Between Victoria Island, Ereve and Orbis. + + 1100004 Kiru (To Orbis) + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ +var menu = new Array("Orbis"); +var method; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + return; + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } else if (mode == 0) { + cm.sendNext("OK. If you ever change your mind, please let me know."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for (var i = 0; i < menu.length; i++) { + var display = "\r\n#L" + i + "##b Orbis (1000 mesos)#k"; + } + cm.sendSimple("Hmm... The winds are favorable. Are you thinking of leaving ereve and going somwhere else? This ferry sails to Orbis on the Ossyria Continent, Have you taking care of everything you needed to in Ereve? If you happen to be headed toward #bOrbis#k i can take you there. What do you day? Are you going to go to Orbis?\r\n" + display); + + } else if (status == 1) { + if (cm.getMeso() < 1000) { + cm.sendNext("Hmm... Are you sure you have #b1000#k Mesos? Check your Inventory and make sure you have enough. You must pay the fee or I can't let you get on..."); + cm.dispose(); + } else { + cm.gainMeso(-1000); + cm.warp(200090021); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1100005.js b/scripts/npc/world0/1100005.js new file mode 100644 index 0000000000..650e810eac --- /dev/null +++ b/scripts/npc/world0/1100005.js @@ -0,0 +1,15 @@ +/** +---------------------------------------------------------------------------------- + Skyferry Between Victoria Island, Ereve and Orbis. + + 1100005 Kiriru (On boat between Ereve and Victoria Island) + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +function start() { + cm.sendOk("The weather is so nice. At this rate, we should arrive in no time...."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1100006.js b/scripts/npc/world0/1100006.js new file mode 100644 index 0000000000..f7b3c68ebb --- /dev/null +++ b/scripts/npc/world0/1100006.js @@ -0,0 +1,15 @@ +/** +---------------------------------------------------------------------------------- + Skyferry Between Victoria Island, Ereve and Orbis. + + 1100006 Kiru (On boat between Ereve and Orbis) + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +function start() { + cm.sendOk("Ah, such lovely winds. This should be a perfect voyage as long as no stupid customer falls off for attempting some weird skill. Of course, I'm talking about you. Please refain from using your skills."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1100007.js b/scripts/npc/world0/1100007.js new file mode 100644 index 0000000000..72ebcfe595 --- /dev/null +++ b/scripts/npc/world0/1100007.js @@ -0,0 +1,51 @@ +/** +---------------------------------------------------------------------------------- + Skyferry Between Victoria Island, Ereve and Orbis. + + 1100007 Kiriru (Victoria Island Station to Ereve) + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +var menu = new Array("Ereve"); +var method; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } else { + if(mode == 0 && status == 0) { + cm.dispose(); + return; + } else if(mode == 0) { + cm.sendNext("If you're not interested, then oh well..."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for(var i=0; i < menu.length; i++) { + var display = "\r\n#L"+i+"##b Ereve (1000 mesos)#k"; + } + cm.sendSimple("Eh... So... Um... Are you trying to leave Victoria to go to a different region? You can take this boat to #bEreve#k. There, you will see bright sunlight shinning on the leaves and feel a gentle breeze on your skin. It's where Shinsoo and Empress Cygnus are. Would you like to go to Ereve? It will take about #b2 Minutes#k, and it will cost you #b1000#k mesos.\r\n"+display); + + } else if(status == 1) { + if(cm.getMeso() < 1000) { + cm.sendNext("Hmm... Are you sure you have #b1000#k Mesos? Check your Inventory and make sure you have enough. You must pay the fee or I can't let you get on..."); + cm.dispose(); + } else { + cm.gainMeso(-1000); + cm.warp(200090030); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1100008.js b/scripts/npc/world0/1100008.js new file mode 100644 index 0000000000..bb65ea155a --- /dev/null +++ b/scripts/npc/world0/1100008.js @@ -0,0 +1,52 @@ +/** +---------------------------------------------------------------------------------- + Skyferry Between Victoria Island, Ereve and Orbis. + + 1100008 Kiru (Orbis Station) + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +var menu = new Array("Ereve"); +var method; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } else { + if(mode == 0 && status == 0) { + cm.dispose(); + return; + } else if(mode == 0) { + cm.sendNext("OK. If you ever change your mind, please let me know."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for(var i=0; i < menu.length; i++) { + var display = "\r\n#L"+i+"##b Ereve (1000 mesos)#k"; + } + cm.sendSimple("This ship will head towards #bEreve#k, an island where you'll find crimson leaves soaking up the sun, the gentle breeze that glides past the stream, and the Empress of Maple Cygnus. If you're interested in joining the Cygnus Knights, Then you should definitly pay a visit here. Are you interested in visiting Ereve?, The Trip will cost you #b1000#k Mesos\r\n"+display); + + } else if(status == 1) { + { if(cm.getMeso() < 1000) { + cm.sendNext("Hmm... Are you sure you have #b1000#k Mesos? Check your Inventory and make sure you have enough. You must pay the fee or I can't let you get on..."); + cm.dispose(); + } else { + cm.gainMeso(1000); + cm.warp(200090020); + cm.dispose(); + } + } + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/1101001.js b/scripts/npc/world0/1101001.js new file mode 100644 index 0000000000..1bad42e68a --- /dev/null +++ b/scripts/npc/world0/1101001.js @@ -0,0 +1,11 @@ + /* + NPC Name: Divine Bird + Map(s): Erev + Description: Buff +*/ + +function start() { + cm.useItem(2022458); + cm.sendOk("Don't stop training. Every ounce of your energy is required to protect the world of Maple...."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1101008.js b/scripts/npc/world0/1101008.js new file mode 100644 index 0000000000..bb59149a5e --- /dev/null +++ b/scripts/npc/world0/1101008.js @@ -0,0 +1,71 @@ +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 0 && mode == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if(status == 0){ + cm.sendSimple("Wait! You'll figure the stuff out by the time you reach Lv. 10 anyway, but if you absolutely want to prepare beforehand, you may view the following information.\r\n\r\n Tell me, what would you like to know?\r\n#b#L0#About you#l\r\n#L1#Mini Map#l\r\n#L2#Quest Window#l\r\n#L3#Inventory#l\r\n#L4#Regular Attack Hunting#l\r\n#L5#How to Pick Up Items#l\r\n#L6#How to Equip Items#l\r\n#L7#Skill Window#l\r\n#L8#How to Use Quick Slots#l\r\n#L9#How to Break Boxes#l\r\n#L10#How to Sit in a Chair#l\r\n#L11#World Map#l\r\n#L12#Quest Notifications#l\r\n#L13#Enhancing Stats#l\r\n#L14#Who are the Cygnus Knights?#l"); + } else if(status == 1){ + if(selection == 0){ + cm.sendNext("I serve under Shinsoo, the guardian of Empress Cygnus. My master, Shinsoo, has ordered me to guide everyone who comes to Maple World to join Cygnus Knights. I will be assisting and following you around until you become a Knight or reach Lv. 11. Please let me know if you have any questions."); + } else if(selection == 1){ + cm.guideHint(1); + cm.dispose(); + } else if(selection == 2){ + cm.guideHint(2); + cm.dispose(); + } else if(selection == 3){ + cm.guideHint(3); + cm.dispose(); + } else if(selection == 4){ + cm.guideHint(4); + cm.dispose(); + } else if(selection == 5){ + cm.guideHint(5); + cm.dispose(); + } else if(selection == 6){ + cm.guideHint(6); + cm.dispose(); + } else if(selection == 7){ + cm.guideHint(7); + cm.dispose(); + } else if(selection == 8){ + cm.guideHint(8); + cm.dispose(); + } else if(selection == 9){ + cm.guideHint(9); + cm.dispose(); + } else if(selection == 10){ + cm.guideHint(10); + cm.dispose(); + } else if(selection == 11){ + cm.guideHint(11); + cm.dispose(); + } else if(selection == 12){ + cm.guideHint(12); + cm.dispose(); + } else if(selection == 13){ + cm.guideHint(13); + cm.dispose(); + } else if(selection == 14){ + cm.sendOk("The Black Mage is trying to revive and conquer our peaceful Maple World. As a response to this threat, Empress Cygnus has formed a knighthood, now known as Cygnus Knights. You can become a Knight when you reach Lv. 10."); + cm.dispose(); + } + }else if(status == 2){ + cm.sendNextPrev("There is no need for you to check this info now. These are basics that you'll pick up as you play. You can always ask me questions that come up after you've reached Lv. 10, so just relax."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1102001.js b/scripts/npc/world0/1102001.js new file mode 100644 index 0000000000..1217e9fe7d --- /dev/null +++ b/scripts/npc/world0/1102001.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC Base + Map Name (Map ID) + Extra NPC info. + */ + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + cm.sendYesNo("Would you like to exit the drill hall?"); + } else if(status == 1) { + cm.warp(130020000); + cm.dispose(); + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1102003.js b/scripts/npc/world0/1102003.js new file mode 100644 index 0000000000..9dcff18424 --- /dev/null +++ b/scripts/npc/world0/1102003.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author BubblesDev, Rich for text + */ +function start() { + cm.sendOk("Welcome to the Knights Chamber."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1103005.js b/scripts/npc/world0/1103005.js new file mode 100644 index 0000000000..77e45c7800 --- /dev/null +++ b/scripts/npc/world0/1103005.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @NPC: Cygnus + * @ID: 1103005 + * @Map Id: 913040006 + * @Function: Cygnus Creator + * @Author Jay (text) + * @Author David + */ + +function start() { + cm.sendAcceptDecline("Becoming a Knight of Cygnus requires talent, faith, courage, and will power... and it looks like you are more than qualified to become a Knight of Cygnus. What do you think? If you wish to become one right this minute, I'll take you straight to Erev. Would you like to head over to Erev right now?"); +} + +function action(coded, by, Moogra) { + if (coded > 0) + cm.warp(130000000); + else { + try { + cm.warp(cm.getPlayer().getSavedLocation("CYGNUSINTRO")); + } catch(err) { + cm.warp(100000000); + } + } + cm.dispose(); +} diff --git a/scripts/npc/world0/1200000.js b/scripts/npc/world0/1200000.js new file mode 100644 index 0000000000..bfc2da41ad --- /dev/null +++ b/scripts/npc/world0/1200000.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* =========================================================== + Resonance + NPC Name: Pusla + Map(s): Snow Island: Rien (140000000) + Description: Open Storage +============================================================= +Version 1.0 - Script Done.(11/6/2010) +============================================================= +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 1200000); + cm.dispose(); +} diff --git a/scripts/npc/world0/1200003.js b/scripts/npc/world0/1200003.js new file mode 100644 index 0000000000..61cacaf292 --- /dev/null +++ b/scripts/npc/world0/1200003.js @@ -0,0 +1,52 @@ +/** +---------------------------------------------------------------------------------- + Whale Between Lith harbor and Rien. + + 1200003 Puro + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +var menu = new Array("Lith Harboor"); +var method; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } else { + if(mode == 0 && status == 0) { + cm.dispose(); + return; + } else if(mode == 0) { + cm.sendNext("OK. If you ever change your mind, please let me know."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for(var i=0; i < menu.length; i++) { + var display = "\r\n#L"+i+"##b Lith Harbor (800 mesos)#k"; + } + cm.sendSimple("Are you trying to leave Rien? Board this ship and I'll take you from #bRien#k to #bLith Harbor#k and back. for a #bfee of 800#k Mesos. Would you like to head over to Lith Harbor now? It'll take about a minute to get there.\r\n"+display); + + } else if(status == 1) { + { if(cm.getMeso() < 800) { + cm.sendNext("Hmm... Are you sure you have #b800#k Mesos? Check your Inventory and make sure you have enough. You must pay the fee or I can't let you get on..."); + cm.dispose(); + } else { + cm.gainMeso(-800); + cm.warp(200090070); + cm.dispose(); + } + } + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/1200004.js b/scripts/npc/world0/1200004.js new file mode 100644 index 0000000000..663933462e --- /dev/null +++ b/scripts/npc/world0/1200004.js @@ -0,0 +1,52 @@ +/** +---------------------------------------------------------------------------------- + Whale Between Lith harbor and Rien. + + 1200004 Puro + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +var menu = new Array("Rien"); +var method; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } else { + if(mode == 0 && status == 0) { + cm.dispose(); + return; + } else if(mode == 0) { + cm.sendNext("OK. If you ever change your mind, please let me know."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for(var i=0; i < menu.length; i++) { + var display = "\r\n#L"+i+"##b Rien (800 mesos)#k"; + } + cm.sendSimple("Are you thinking about leaving Victoria Island and heading to our town? If you board this ship, I can take you from #bLith Harbor#k to #bRien#k and back. But you must pay a #bfee of 800#k Mesos. Would you like to go to Rien? It'll take about a minute to get there.\r\n"+display); + + } else if(status == 1) { + { if(cm.getMeso() < 800) { + cm.sendNext("Hmm... Are you sure you have #b800#k Mesos? Check your Inventory and make sure you have enough. You must pay the fee or I can't let you get on..."); + cm.dispose(); + } else { + cm.gainMeso(-800); + cm.warp(200090060); + cm.dispose(); + } + } + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/1200005.js b/scripts/npc/world0/1200005.js new file mode 100644 index 0000000000..933cdae54b --- /dev/null +++ b/scripts/npc/world0/1200005.js @@ -0,0 +1,15 @@ +/** +---------------------------------------------------------------------------------- + Whale Between Lith harbor and Rien. + + 1200005 Puro + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +function start() { + cm.sendOk("Ahhhh, this is so boring... The whale is controlling the ship so i'm left with nothing to do but look up and stare at the clouds."); + cm.dispose() +} \ No newline at end of file diff --git a/scripts/npc/world0/1200006.js b/scripts/npc/world0/1200006.js new file mode 100644 index 0000000000..a1a5b58bc9 --- /dev/null +++ b/scripts/npc/world0/1200006.js @@ -0,0 +1,15 @@ +/** +---------------------------------------------------------------------------------- + Whale Between Lith harbor and Rien. + + 1200006 Puro + +-------Credits:------------------------------------------------------------------- + *MapleSanta +---------------------------------------------------------------------------------- +**/ + +function start() { + cm.sendOk("The current is serene, wich means we may arive in lith harbor earlier than expected."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/1202000.js b/scripts/npc/world0/1202000.js new file mode 100644 index 0000000000..1a71a58e17 --- /dev/null +++ b/scripts/npc/world0/1202000.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = -1; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if(cm.getPlayer().getMapId() == 140090000) { + if (!cm.containsAreaInfo(21019, "helper=clear")) { + if (status == 0) { + cm.sendNext("You've finally awoken...!", 8); + } else if (status == 1) { + cm.sendNextPrev("And you are...?", 2); + } else if (status == 2) { + cm.sendNextPrev("The hero who fought against the Black Mage... I've been waiting for you to wake up!", 8); + } else if (status == 3) { + cm.sendNextPrev("Who... Who are you? And what are you talking about?", 2); + } else if (status == 4) { + cm.sendNextPrev("And who am I...? I can't remember anything... Ouch, my head hurts!", 2); + } else if (status == 5) { + cm.showIntro("Effect/Direction1.img/aranTutorial/face"); + cm.showIntro("Effect/Direction1.img/aranTutorial/ClickLilin"); + cm.updateAreaInfo(21019, "helper=clear"); + cm.dispose(); + } + } else { + if (status == 0) { + cm.sendNextPrev("Are you alright?", 8); + } else if (status == 1) { + cm.sendNextPrev("I can't remember anything. Where am I? And who are you...?", 2); + } else if (status == 2) { + cm.sendNextPrev("Stay calm. There is no need to panic. You can't remember anything because the curse of the Black Mage erased your memory. I'll tell you everything you need to know...step by step.", 8); + } else if (status == 3) { + cm.sendNextPrev("You're a hero who fought the Black Mage and saved Maple World hundreds of years ago. But at the very last moment, the curse of the Black Mage put you to sleep for a long, long time. That's when you lost all of your memories.", 8); + } else if (status == 4) { + cm.sendNextPrev("This island is called Rien, and it's where the Black Mage trapped you. Despite its name, this island is always covered in ice and snow because of the Black Mage's curse. You were found deep inside the Ice Cave.", 8); + } else if (status == 5) { + cm.sendNextPrev("My name is Lilin and I belong to the clan of Rien. The Rien Clan has been waiting for a hero to return for a long time now, and we finally found you. You've finally returned!", 8); + } else if (status == 6) { + cm.sendNextPrev("I've said too much. It's okay if you don't really understand everything I just told you. You'll get it eventually. For now, #byou should head to town#k. I'll stay by your side and help you until you get there.", 8); + } else if (status == 7) { + cm.spawnGuide(); + cm.warp(140090100); + cm.dispose(); + } + } + } else { + if (status == 0) + cm.sendSimple("Is there anything you're still curious about? If so, I'll try to explain it better. #b#l\r\n#L0#Who am I? #l #l\r\n#L1#Where am I? #l #l\r\n#L2#Who are you?#l#l\r\n#L3#Tell me what I have to do.#l #l\r\n#L4#Tell me about my Inventory.#l #l\r\n#L5#How do I advance my skills?#l #l\r\n#L6#I want to know how to equip items.#l #l\r\n#L7#How do I use quick slots? #l #l\r\n#L8#How can I open breakable containers?#l #l\r\n#L9#I want to sit in a chair but I forgot how.#l#k"); + else if (status == 1) { + if (selection == 0) { + cm.sendNext("You are one of the heroes that saved Maple World from the Black Mage hundreds of years ago. You've lost your memory due to the curse of the Black Mage."); + cm.dispose(); + } else if (selection == 1) { + cm.sendNext("This island is called Rien, and this is where the Black Mage's curse put you to sleep. It's a small island covered in ice and snow, and the majority of the residents are Penguins."); + cm.dispose(); + } else if(selection == 2) { + cm.sendNext("I'm Lilin, a clan member of Rien, and I've been waiting for your return as the prophecy foretold. I'll be your guide for now."); + cm.dispose(); + } else if(selection == 3) { + cm.sendNext("Let's not waste any more time and just get to town. I'll give you the details when we get there."); + cm.dispose(); + } else if(selection == 4) { + cm.guideHint(14); + cm.dispose(); + } else if(selection == 5) { + cm.guideHint(15); + cm.dispose(); + } else if(selection == 6) { + cm.guideHint(16); + cm.dispose(); + } else if(selection == 7) { + cm.guideHint(17); + cm.dispose(); + } else if(selection == 8) { + cm.guideHint(18); + cm.dispose(); + } else if(selection == 9) { + cm.guideHint(19); + cm.dispose(); + } + } + } +} +} \ No newline at end of file diff --git a/scripts/npc/world0/1204001.js b/scripts/npc/world0/1204001.js new file mode 100644 index 0000000000..d41d9b8507 --- /dev/null +++ b/scripts/npc/world0/1204001.js @@ -0,0 +1,23 @@ +/* + * NPC : Francis (Doll master) + * Map : 910510200 + */ + +var status = -1; + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + status--; + } + if (status == 0) { + cm.sendNext("I'm Francis, the Puppeteer of the Black Wings. How dare you disturb my puppets... It really upsets me, but I''ll let it slide this time. If I catch you doing it again though, I swear in the name of the Black Mage, I will make you pay for it.", 9); + } else if (status == 1) { + cm.sendNextPrev("#b(The Black Wings? Huh? Who are they? And how is all this related to the Black Mage? Hm, maybe you should report this info to Tru.)#k", 3); + } else if (status == 2) { + cm.startQuest(21760); + cm.warp(105040200, 3);//104000004 + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/1209000.js b/scripts/npc/world0/1209000.js new file mode 100644 index 0000000000..29b94792ff --- /dev/null +++ b/scripts/npc/world0/1209000.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + cm.dispose(); + return; + } else { + status++; + } + if (mode == 1) { + status++; + } else { + status--; + } + if (status == 0) { + cm.sendNext("Aran, you're awake! How are you feeling? Hm? You want to know what's been going on?"); + } else if (status == 1) { + cm.sendNext("We're almost done preparing for the escape. You don't have to worry. Everyone I could possibly find has boarded the ark, and Shinsoo has agreed to guide the way. We'll head to Victoria Island as soon as we finish the remaining preparations."); + } else if (status == 2) { + cm.sendNext("The other heroes? They've left to fight the Black Mage. They're buying us time to escape. What? You want to fight with them? No! You can't! You're hurt. You must leave with us!"); + } else if (status == 3) { + cm.updateQuest(21002, "1"); + cm.showIntro("Effect/Direction1.img/aranTutorial/Trio"); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/12101.js b/scripts/npc/world0/12101.js new file mode 100644 index 0000000000..0e2dfe2bbf --- /dev/null +++ b/scripts/npc/world0/12101.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Rain + Map(s): Maple Road : Amherst (1010000) + Description: Talks about Amherst +*/ +var status = -1; + +function start() { + cm.sendNext("This is the town called #bAmherst#k, located at the northeast part of the Maple Island. You know that Maple Island is for beginners, right? I'm glad there are only weak monsters around this place."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0 && status == 2){ + status -= 2; + start(); + }else if(mode == 0) + status-= 2; + else + cm.dispose(); + }else{ + if (status == 1) + cm.sendNextPrev("If you want to get stronger, then go to #bSouthperry#k where there's a harbor. Ride on the gigantic ship and head to the place called #bVictoria Island#k. It's incomparable in size compared to this tiny island."); + else if (status == 2) + cm.sendPrev("At the Victoria Island, you can choose your job. Is it called #bPerion#k...? I heard there's a bare, desolate town where warriors live. A highland...what kind of a place would that be?"); + else if (status == 3) + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2001001.js b/scripts/npc/world0/2001001.js new file mode 100644 index 0000000000..f67ac38a63 --- /dev/null +++ b/scripts/npc/world0/2001001.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendYesNo("We have a beautiful christmas tree.\r\nDo you want to see/decorate it?"); +} + +function action(made, by, osiris) { + if(made == 1) + cm.warp(209000001); + else + cm.sendOk("Come back later."); + cm.dispose(); +} diff --git a/scripts/npc/world0/2001002.js b/scripts/npc/world0/2001002.js new file mode 100644 index 0000000000..fcd80c64a6 --- /dev/null +++ b/scripts/npc/world0/2001002.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//lol at old script -- Moogra +function start() { + cm.sendYesNo("We have a beautiful christmas tree.\r\nDo you want to see/decorate it?"); +} +function action(mode, type, selection) { + cm.warp(209000001); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2001003.js b/scripts/npc/world0/2001003.js new file mode 100644 index 0000000000..fcd80c64a6 --- /dev/null +++ b/scripts/npc/world0/2001003.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//lol at old script -- Moogra +function start() { + cm.sendYesNo("We have a beautiful christmas tree.\r\nDo you want to see/decorate it?"); +} +function action(mode, type, selection) { + cm.warp(209000001); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2001004.js b/scripts/npc/world0/2001004.js new file mode 100644 index 0000000000..7d38e0171b --- /dev/null +++ b/scripts/npc/world0/2001004.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendYesNo("We have a beautiful christmas tree.\r\nDo you want to see/decorate it?"); +} +function action(m, t, s) { + if (m > 0) + cm.warp(209000001); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2002000.js b/scripts/npc/world0/2002000.js new file mode 100644 index 0000000000..3137a20690 --- /dev/null +++ b/scripts/npc/world0/2002000.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Rupi by Moogra +Happyville Warp NPC +*/ + +function start() { + cm.sendYesNo("Do you want to " + (cm.getPlayer().getMap().getId() == 101000000 ? "go to" : "get out of") + "Happyville?"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else + cm.warp(cm.getPlayer().getMap().getId() == 101000000 ? 209000000 : 101000000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2003.js b/scripts/npc/world0/2003.js new file mode 100644 index 0000000000..2a9e9de1fa --- /dev/null +++ b/scripts/npc/world0/2003.js @@ -0,0 +1,106 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Robin + Map(s): Maple Road : Snail Hunting Ground I (40000) + Description: Beginner Helper +*/ +var status; +var sel; + +function start() { + status = -1; + sel = -1; + cm.sendSimple("Now...ask me any questions you may have on traveling!!\r\n#L0##bHow do I move?#l\r\n#L1#How do I take down the monsters?#l\r\n#L2#How can I pick up an item?#l\r\n#L3#What happens when I die?#l\r\n#L4#When can I choose a job?#l\r\n#L5#Tell me more about this island!#l\r\n#L6#What should I do to become a Warrior?#l\r\n#L7#What should I do to become a Bowman?#l\r\n#L8#What should I do to become a Magician?#l\r\n#L9#What should I do to become a Thief?#l\r\n#L10#How do I raise the character stats? (S)#l\r\n#L11#How do I check the items that I just picked up?#l\r\n#L12#How do I put on an item?#l\r\n#L13#How do I check out the items that I'm wearing?#l\r\n#L14#What are skills? (K)#l\r\n#L15#How do I get to Victoria Island?#l\r\n#L16#What are mesos?#l#k"); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + if(mode == 0 && type != 4) + status -= 2; + else{ + cm.dispose(); + return; + } + } + if (status == 0) { + if(sel == -1) + sel = selection; + if (sel == 0) + cm.sendNext("Alright this is how you move. Use #bleft, right arrow#k to move around the flatland and slanted roads, and press #bAlt#k to jump. A select number of shoes improve your speed and jumping abilities."); + else if (sel == 1) + cm.sendNext("Here's how to take down a monster. Every monster possesses an HP of its own and you'll take them down by attacking with either a weapon or through spells. Of course the stronger they are, the harder it is to take them down."); + else if (sel == 2) + cm.sendNext("This is how you gather up an item. Once you take down a monster, an item will be dropped to the ground. When that happens, stand in front of the item and press #bZ#k or #b0 on the NumPad#k to acquire the item."); + else if (sel == 3) + cm.sendNext("Curious to find out what happens when you die? You'll become a ghost when your HP reaches 0. There will be a tombstone in that place and you won't be able to move, although you still will be able to chat."); + else if (sel == 4) + cm.sendNext("When do you get to choose your job? Hahaha, take it easy, my friend. Each job has a requirement set for you to meet. Normally a level between 8 and 10 will do, so work hard."); + else if (sel == 5) + cm.sendNext("Want to know about this island? It's called Maple Island and it floats in the air. It's been floating in the sky for a while so the nasty monsters aren't really around. It's a very peaceful island, perfect for beginners!"); + else if (sel == 6) + cm.sendNext("You want to become a #bWarrior#k? Hmmm, then I suggest you head over to Victoria Island. Head over to a warrior-town called #rPerion#k and see #bDances with Balrog#k. He'll teach you all about becoming a true warrior. Ohh, and one VERY important thing: You'll need to be at least level 10 in order to become a warrior!!"); + else if (sel == 7) + cm.sendNext("You want to become a #bBowman#k? You'll need to go to Victoria Island to make the job advancement. Head over to a bowman-town called #rHenesys#k and talk to the beautiful #bAthena Pierce#k and learn the in's and out's of being a bowman. Ohh, and one VERY important thing: You'll need to be at least level 10 in order to become a bowman!!"); + else if (sel == 8) + cm.sendNext("You want to become a #bMagician#k? For you to do that, you'll have to head over to Victoria Island. Head over to a magician-town called #rEllinia#k, and at the very top lies the Magic Library. Inside, you'll meet the head of all wizards, #bGrendel the Really Old#k, who'll teach you everything about becoming a wizard."); + else if (sel == 9) + cm.sendNext("You want to become a #bThief#k? In order to become one, you'll have to head over to Victoria Island. Head over to a thief-town called #rKerning City#k, and on the shadier side of town, you'll see a thief's hideaway. There, you'll meet #bDark Lord#k who'll teach you everything about being a thief. Ohh, and one VERY important thing: You'll need to be at least level 10 in order to become a thief!!"); + else if (sel == 10) + cm.sendNext("You want to know how to raise your character's ability stats? First press #bS#k to check out the ability window. Every time you level up, you'll be awarded 5 ability points aka AP's. Assign those AP's to the ability of your choice. It's that simple."); + else if (sel == 11) + cm.sendNext("You want to know how to check out the items you've picked up, huh? When you defeat a monster, it'll drop an item on the ground, and you may press #bZ#k to pick up the item. That item will then be stored in your item inventory, and you can take a look at it by simply pressing #bI#k."); + else if (sel == 12) + cm.sendNext("You want to know how to wear the items, right? Press #bI#k to check out your item inventory. Place your mouse cursor on top of an item and double-click on it to put it on your character. If you find yourself unable to wear the item, chances are your character does not meet the level & stat requirements. You can also put on the item by opening the equipment inventory (#bE#k) and dragging the item into it. To take off an item, double-click on the item at the equipment inventory."); + else if (sel == 13) + cm.sendNext("You want to check on the equipped items, right? Press #bE#k to open the equipment inventory, where you'll see exactly what you are wearing right at the moment. To take off an item, double-click on the item. The item will then be sent to the item inventory."); + else if (sel == 14) + cm.sendNext("The special 'abilities' you get after acquiring a job are called skills. You'll acquire skills that are specifically for that job. You're not at that stage yet, so you don't have any skills yet, but just remember that to check on your skills, press #bK#k to open the skill book. It'll help you down the road."); + else if (sel == 15) + cm.sendNext("How do you get to Victoria Island? On the east of this island there's a harbor called Southperry. There, you'll find a ship that flies in the air. In front of the ship stands the captain. Ask him about it."); + else if (sel == 16) + cm.sendNext("It's the currency used in MapleStory. You may purchase items through mesos. To earn them, you may either defeat the monsters, sell items at the store, or complete quests..."); + } else if (status == 1) { + if (sel == 0) + cm.sendNextPrev("In order to attack the monsters, you'll need to be equipped with a weapon. When equipped, press #bCtrl#k to use the weapon. With the right timing, you'll be able to easily take down the monsters."); + else if (sel == 1) + cm.sendNextPrev("Once you make the job advancement, you'll acquire different kinds of skills, and you can assign them to HotKeys for easier access. If it's an attacking skill, you don't need to press Ctrl to attack, just press the button assigned as a HotKey."); + else if (sel == 2) + cm.sendNextPrev("Remember, though, that if your item inventory is full, you won't be able to acquire more. So if you have an item you don't need, sell it so you can make something out of it. The inventory may expand once you make the job advancement."); + else if (sel == 3) + cm.sendNextPrev("There isn't much to lose when you die if you are just a beginner. Once you have a job, however, it's a different story. You'll lose a portion of your EXP when you die, so make sure you avoid danger and death at all cost."); + else if (sel == 4) + cm.sendNextPrev("Level isn't the only thing that determines the advancement, though. You also need to boost up the levels of a particular ability based on the occupation. For example, to be a warrior, your STR has to be over 35, and so forth, you know what I'm saying? Make sure you boost up the abilities that has direct implications to your job."); + else if (sel == 5) + cm.sendNextPrev("But, if you want to be a powerful player, better not think about staying here for too long. You won't be able to get a job anyway. Underneath this island lies an enormous island called Victoria Island. That place is so much bigger than here, it's not even funny."); + else if (sel == 8) + cm.sendNextPrev("Oh by the way, unlike other jobs, to become a magician you only need to be at level 8. What comes with making the job advancement early also comes with the fact that it takes a lot to become a true powerful mage. Think long and carefully before choosing your path."); + else if (sel == 10) + cm.sendNextPrev("Place your mouse cursor on top of all abilities for a brief explanation. For example, STR for warriors, DEX for bowman, INT for magician, and LUK for thief. That itself isn't everything you need to know, so you'll need to think long and hard on how to emphasize your character's strengths through assigning the points."); + else if (sel == 15) + cm.sendNextPrev("Oh yeah! One last piece of information before I go. If you are not sure where you are, always press #bW#k. The world map will pop up with the locator showing where you stand. You won't have to worry about getting lost with that."); + else + start(); + }else + start(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2007.js b/scripts/npc/world0/2007.js new file mode 100644 index 0000000000..0b93376954 --- /dev/null +++ b/scripts/npc/world0/2007.js @@ -0,0 +1,26 @@ +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.sendNext("Enjoy your trip."); + cm.dispose(); + } else { + if (status == 0 && mode == 0) { + cm.sendNext("Enjoy your trip."); + cm.dispose(); + } + if (mode == 1) + status++; + else + status--; + if (status == 0) + cm.sendYesNo("Would you like to skip the tutorials and head straight to Lith Harbor?"); + else if (status == 1){ + cm.warp(104000000); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2010000.js b/scripts/npc/world0/2010000.js new file mode 100644 index 0000000000..e7bb529d49 --- /dev/null +++ b/scripts/npc/world0/2010000.js @@ -0,0 +1,220 @@ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Master Sergeant Fox - Orbis(200000000) +-- By --------------------------------------------------------------------------------------------- + Sean360 +-- Version Info ----------------------------------------------------------------------------------- + 1.2 - Clean-up + 1.1 - Official Text [Information] + 1.0 - First Version by Sean360 +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var eQuestChoices = new Array (4000073,4000059,4000060,4000061,4000058, + 4000062,4000048,4000049,4000055,4000056, + 4000051,4000052,4000050,4000057,4000053, + 4000054,4000076,4000078,4000081,4000070, + 4000071,4000072,4000069,4000079,4000080); + +var eQuestPrizes = new Array(); + +eQuestPrizes[0] = new Array ([2000001,20], // Orange Potions + [2010004,10], // Lemons + [2000003,15], // Blue Potions + [4003001,15], // Processed Wood + [2020001,15], // Fried Chickens + [2030000,15]); // Nearest Town Scroll +eQuestPrizes[1] = new Array ([2000003,20], // Blue Potions + [2000001,30], // Orange Potions + [2010001,40], // Meats + [4003001,20], // Processed Wood + [2040002,1]); // 10% Helm Def +eQuestPrizes[2] = new Array ([2000002,25], // White Potions + [2000006,10], // Mana Elixir + [2022000,5], // Pure Water + [4000030,15], // Dragon Skins + [2040902,1]); // 10% Shield Def +eQuestPrizes[3] = new Array ([2000002,30], // White Potions + [2000006,15], // Mana Elixir + [2020000,20], // Salad + [4003000,5], // Screws + [2041016,1]); // 10% Cape Int +eQuestPrizes[4] = new Array ([2000002,15], // White Potions + [2010004,15], // Lemons + [2000003,25], // Blue Potions + [4003001,30], // Processed Wood + [2040302,1]); // 10% Earring Int +eQuestPrizes[5] = new Array ([2000002,30], // White Potions + [2000006,15], // Mana Elixir + [2020000,20], // Salad + [4003000,5], // Screws + [2040402,1]); // 10% Top Def +eQuestPrizes[6] = new Array ([2000002,30], // White Potions + [2020000,20], // Salad + [2000006,15], // Mana Elixir + [4003000,5], // Screws + [2040402,1]); // 10% Top Def +eQuestPrizes[7] = new Array ([2000006,25], // Mana Elixir + [2020000,20], // Salad + [4020000,7], // Garnet Ore + [4020001,7], // Amethyst Ore + [4020002,3], // Aquamarine Ore + [4020007,2], // Diamond Ore + [2040708,1]); // 10% Shoe Speed +eQuestPrizes[8] = new Array ([2020005,30], // Hotdogs + [2020006,15], // Hotdog Supremes + [2022001,30], // Red Bean Soup + [4003003,1], // Fairy Wing + [2040505,1]); // 10% O/All Def +eQuestPrizes[9] = new Array ([2000006,25], // Mana Elixir + [4020005,7], // Sapphire Ore + [4020003,7], // Emerald Ore + [4020004,7], // Opal Ore + [4020008,2], // Black Crystal Ore + [2040802,1]); // 10% Glove Dex +eQuestPrizes[10] = new Array ([2002004,15], // Warrior Potion + [2002005,15], // Sniper Potion + [2002003,15], // Wizard Potion + [4001005,1], // Ancient Scroll + [2040502,1]); // 10% O/All Dex +eQuestPrizes[11] = new Array ([2000006,20], // Mana Elixir + [4010004,7], // Silver Ore + [4010003,7], // Adamantium Ore + [4010005,7], // Orihalcon Ore + [4003002,1], // Piece of Ice + [2040602,1]); // 10% Bottom Def +eQuestPrizes[12] = new Array ([2000006,20], // Mana Elixir + [4010002,7], // Mithril Ore + [4010001,7], // Steel Ore + [4010000,7], // Bronze Ore + [4010006,2], // Gold Ore + [4003000,5], // Screwa + [2040702,1]); // 10% Shoe Dex +eQuestPrizes[13] = new Array ([2000006,20], // Mana Elixir + [4010004,7], // Silver Ore + [4010005,7], // Orihalcon Ore + [4010006,3], // Gold Ore + [4020007,2], // Diamond Ore + [4020008,2], // Black Crystal Ore + [2040705,1]); // 10% Shoe Jump +eQuestPrizes[14] = new Array ([2000006,30], // Mana Elixir + [4020006,7], // Topaz Ore + [4020008,2], // Black Crystal Ore + [4020007,2], // Diamond Ore + [2070010,1], // Icicle Stars + [2040805,1]); // 10% Glove Attack +eQuestPrizes[15] = new Array ([2000006,30], // Mana Elixir + [4020006,7], // Topaz Ore + [4020008.2], // Black Crystal Ore + [4020007,2], // Diamond Ore + [2041020,1]); // 10% Cape Dex +eQuestPrizes[16] = new Array ([2000001,30], // Orange Potions + [2000003,20], // Blue Potions + [4003001,20], // Processed Wood + [2010001,40], // Meats + [2040002,1]); // 10% Helm Def +eQuestPrizes[17] = new Array ([2000002,15], // White Potions + [2000003,25], // Blue Potions + [2010004,15], // Lemons + [2050004,15], // Divine Elixir + [4003001,30], // Processed Wood + [2040302,1]); // 10% Earring Int +eQuestPrizes[18] = new Array ([2000006,25], // Mana Elixir + [2020006,25], // Hotdog Supreme + [4010004,8], // Silver Ore + [4010005,8], // Orihalcon Ore + [4010006,3], // Gold Ore + [4020007,2], // Diamond Ore + [4020008,2], // Black Crystal Ore + [2040705,1]); // 10% Shoe Jump +eQuestPrizes[19] = new Array ([2000002,30], // White Potions + [2020000,20], // Salad + [2000006,15], // Mana Elixir + [4003000,5], // Screws + [2041005,1]); // 10% Cape Wep Def +eQuestPrizes[20] = new Array ([2000002,30], // White Potions + [2020000,20], // Salad + [2000006,15], // Mana Elixir + [4003000,5], // Screws + [2041005,1]); // 10% Cape Wep Def +eQuestPrizes[21] = new Array ([2000002,30], // White Potions + [2020000,20], // Salad + [2000006,15], // Mana Elixir + [4003000,5], // Screws + [2041005,1]); // 10% Cape Wep Def +eQuestPrizes[22] = new Array ([2000006,20], // Mana Elixir + [2020005,30], // Hotdogs + [2020006,15], // Hotdog Supremes + [2050004,20], // Divine Elixirs + [4003003,1], // Fairy Wing + [2041002,1]); // 10% Cape Mag Def +eQuestPrizes[23] = new Array ([2000006,25], // Mana Elixir + [2050004,50], // Divine Elixir + [2022001,35], // Red Bean Soup + [4020000,8], // Garnet Ore + [4020001,8], // Amethyst Ore + [4020002,8], // Aquamarine Ore + [4020007,2], // Diamond Ore + [2041023,1]); // 10% Cape LUK +eQuestPrizes[24] = new Array ([2000006,35], // Mana Elixir + [4020006,9], // Topaz Ore + [4010008,4], // Black Crystal Ore + [4020007,4], // Diamond Ore + [2041008,1]); // 10% Cape HP +var requiredItem = 0; +var lastSelection = 0; +var prizeItem = 0; +var prizeQuantity = 0; +var itemSet; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 0) { + cm.sendOk("Hmmm...it shouldn't be a bad deal for you. Come see me at the right time and you may get a much better item to be offered. Anyway, let me know when you have a change of heart."); + cm.dispose(); + return; + } + + status++; + if (status == 0) { // first interaction with NPC + cm.sendNext("Hey, got a little bit of time? Well, my job is to collect items here and sell them elsewhere, but these days the monsters have become much more hostile so it's been difficult to getting good items ... What do you think? Do you want to do some business with me?"); + } else if (status == 1) { + cm.sendYesNo("The deal is simple. You get me something I need, I get you something you need. The problem is, I deal with a whole bunch of people, so the items I have to offer may change every time you see me. What do you think? Still want to do it?"); + } else if (status == 2) { + var eQuestChoice = makeChoices(eQuestChoices); + cm.sendSimple(eQuestChoice); + } else if (status == 3){ + lastSelection = selection; + requiredItem = eQuestChoices[selection]; + cm.sendYesNo("Let's see, you want to trade your #b100 #t" + requiredItem + "##k with my stuff right? Before trading make sure you have an empty slot available on your use or etc. inventory. Now, do you want to trade with me?"); + }else if (status == 4){ + itemSet = (Math.floor(Math.random() * eQuestPrizes[lastSelection].length)); + reward = eQuestPrizes[lastSelection]; + prizeItem = reward[itemSet][0]; + prizeQuantity = reward[itemSet][1]; + if(!cm.haveItem(requiredItem,100)){ + cm.sendOk("Hmmm... are you sure you have #b100 #t" + requiredItem + "##k? If so, then please check and see if your item inventory is full or not."); + } else if(!cm.canHold(prizeItem)){ + cm.sendOk("Your use and etc. inventory seems to be full. You need the free spaces to trade with me! Make room, and then find me."); + } else { + cm.gainItem(requiredItem,-100); + cm.gainExp(500); + cm.gainItem(prizeItem, prizeQuantity); + cm.sendOk("For your #b100 #t"+requiredItem+"##k, here's my #b"+prizeQuantity+" #t"+prizeItem+"##k. What do you think? Do you like the items I gave you in return? I plan on being here for a while, so if you gather up more items, I'm always open for a trade ..."); + } + cm.dispose(); + } +} + +function makeChoices(a){ + var result = "Ok! First you need to choose the item that you'll trade with. The better the item, the more likely the chance that I'll give you something much nicer in return.\r\n"; + for (var x = 0; x< a.length; x++){ + result += " #L" + x + "##v" + a[x] + "# #t" + a[x] + "##l\r\n"; + } + return result; +} \ No newline at end of file diff --git a/scripts/npc/world0/2010001.js b/scripts/npc/world0/2010001.js new file mode 100644 index 0000000000..defc9f6daf --- /dev/null +++ b/scripts/npc/world0/2010001.js @@ -0,0 +1,117 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Mino the Owner + Orbis VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30030, 30020, 30000, 30270, 30230, 30260, 30280, 30240, 30290, 30340); +var fhair = Array(31040, 31000, 31250, 31220, 31260, 31240, 31110, 31270, 31030, 31230); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hello I'm Mino. If you have either a #b#t5150005##k or a #b#t5151005##k, then please let me take care of your hair. Choose what you want to do with it.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150005##t5150005##l\r\n#L2#Dye your hair: #i5151005##t5151005##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150005##t5150005##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151005##t5151005##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? With #b#t5150005##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t5151005##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150005) == true){ + cm.gainItem(5150005, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151005) == true){ + cm.gainItem(5151005, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150005, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151005, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2010002.js b/scripts/npc/world0/2010002.js new file mode 100644 index 0000000000..1f29480f00 --- /dev/null +++ b/scripts/npc/world0/2010002.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Franz the Owner + Orbis VIP Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Well well well, welcome to the Orbis Plastic Surgery! Would you like to transform your face into something new? With a #b#t5152005##k, you can let us take care of the rest and have the face you've always wanted~!\r\n#L1#I would like to buy a #b#t5152005##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152005, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + cm.sendStyle("I can totally transform your face into something new... how about giving us a try? For #b#t5152005##k, you can get the face of your liking...take your time in choosing the face of your preference.", facenew); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152005) == true){ + cm.gainItem(5152005, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } + } +} diff --git a/scripts/npc/world0/2010003.js b/scripts/npc/world0/2010003.js new file mode 100644 index 0000000000..c4ea3eaf48 --- /dev/null +++ b/scripts/npc/world0/2010003.js @@ -0,0 +1,217 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Neve + Orbis: Orbis Park (200000200) + + Refining NPC: + * Gloves, level 70-80 all classes +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Hello there. I'm Orbis' number one glove maker. Would you like me to make you something?#b" + var options = new Array("Create or upgrade a Warrior glove","Create or upgrade a Bowman glove","Create or upgrade a Magician glove","Create or upgrade a Thief glove"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //warrior glove + var selStr = "Warrior glove? Okay, then which one?#b"; + var gloves = new Array ("Bronze Husk#k - Warrior Lv. 70#b","Mithril Husk#k - Warrior Lv. 70#b","Dark Husk#k - Warrior Lv. 70#b", + "Sapphire Emperor#k - Warrior Lv. 80#b","Emerald Emperor#k - Warrior Lv. 80#b","Blood Emperor#k - Warrior Lv. 80#b","Dark Emperor#k - Warrior Lv. 80#b"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //bowman glove + var selStr = "Bowman glove? Okay, then which one?#b"; + var gloves = new Array ("Blue Eyes#k - Bowman Lv. 70#b","Gold Eyes#k - Bowman Lv. 70#b","Dark Eyes#k - Bowman Lv. 70#b", + "Red Cordon#k - Bowman Lv. 80#b","Blue Cordon#k - Bowman Lv. 80#b","Green Cordon#k - Bowman Lv. 80#b","Dark Cordon#k - Bowman Lv. 80#b"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //mage glove + var selStr = "Magician glove? Okay, then which one?#b"; + var gloves = new Array ("Brown Lorin#k - Magician Lv. 70#b","Blue Lorin#k - Magician Lv. 70#b","Dark Lorin#k - Magician Lv. 70#b", + "Green Clarity#k - Magician Lv. 80#b","Blue Clarity#k - Magician Lv. 80#b","Dark Clarity#k - Magician Lv. 80#b"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 3){ //thief glove + var selStr = "Thief glove? Okay, then which one?#b"; + var gloves = new Array ("Bronze Rover#k - Thief Lv. 70#b","Silver Rover#k - Thief Lv. 70#b","Gold Rover#k - Thief Lv. 70#b", + "Green Larceny#k - Thief Lv. 80#b","Purple Larceny#k - Thief Lv. 80#b","Dark Larceny#k - Thief Lv. 80#b"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + } + cm.sendSimple(selStr); + } + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + + if (selectedType == 0){ //warrior glove + var itemSet = new Array(1082103,1082104,1082105,1082114,1082115,1082116,1082117,1082118); + var matSet = new Array(new Array(4005000,4011000,4011006,4000030,4003000),new Array(1082103,4011002,4021006),new Array(1082103,4021006,4021008),new Array(4005000,4005002,4021005,4000030,4003000),new Array(1082114,4005000,4005002,4021003),new Array(1082114,4005002,4021000),new Array(1082114,4005000,4005002,4021008)); + var matQtySet = new Array(new Array(2,8,3,70,55),new Array(1,6,4),new Array(1,8,3),new Array(2,1,8,90,60),new Array(1,1,1,7),new Array(1,3,8),new Array(1,2,1,4)); + var costSet = new Array(90000,90000,100000,100000,110000,110000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //bowman glove + var itemSet = new Array(1082106,1082107,1082108,1082109,1082110,1082111,1082112); + var matSet = new Array(new Array(4005002,4021005,4011004,4000030,4003000),new Array(1082106,4021006,4011006),new Array(1082106,4021007,4021008),new Array(4005002,4005000,4021000,4000030,4003000),new Array(1082109,4005002,4005000,4021005),new Array(1082109,4005002,4005000,4021003),new Array(1082109,4005002,4005000,4021008)); + var matQtySet = new Array(new Array(2,8,3,70,55),new Array(1,5,3),new Array(1,2,3),new Array(2,1,8,90,60),new Array(1,1,1,7),new Array(1,1,1,7),new Array(1,2,1,4)); + var costSet = new Array(90000,90000,100000,100000,110000,110000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //mage glove + var itemSet = new Array(1082098,1082099,1082100,1082121,1082122,1082123); + var matSet = new Array(new Array(4005001,4011000,4011004,4000030,4003000),new Array(1082098,4021002,4021007),new Array(1082098,4021008,4011006),new Array(4005001,4005003,4021003,4000030,4003000),new Array(1082121,4005001,4005003,4021005),new Array(1082121,4005001,4005003,4021008)); + var matQtySet = new Array(new Array(2,6,6,70,55),new Array(1,6,2),new Array(1,3,3),new Array(2,1,8,90,60),new Array(1,1,1,7),new Array(1,2,1,4)); + var costSet = new Array(90000,90000,100000,100000,110000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //thief glove + var itemSet = new Array (1082095,1082096,1082097,1082118,1082119,1082120); + var matSet = new Array(new Array(4005003,4011000,4011003,4000030,4003000),new Array(1082095,4011004,4021007),new Array(1082095,4021007,4011006),new Array(4005003,4005002,4011002,4000030,4003000),new Array(1082118,4005003,4005002,4021001),new Array(1082118,4005003,4005002,4021000)); + var matQtySet = new Array(new Array(2,6,6,70,55),new Array(1,6,2),new Array(1,3,3),new Array(2,1,8,90,60),new Array(1,1,1,7),new Array(1,2,1,8)); + var costSet = new Array(90000,90000,100000,100000,110000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 3 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost) + { + cm.sendOk("I'm afraid you cannot afford my services."); + cm.dispose(); + return; + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + /* + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + if (!cm.haveItem(mats[i],matQty[i])) complete=false; + } + } + } + else { + if (!cm.haveItem(mats,matQty)) complete=false; + }*/ + } + + if (!complete) + cm.sendOk("I'm afraid that substitute items are unacceptable, if you want your gloves made properly."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } + else + cm.gainItem(mats, -matQty); + + cm.gainMeso(-cost); + cm.gainItem(item, 1); + cm.sendOk("Done. If you need anything else, just ask again."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2010005.js b/scripts/npc/world0/2010005.js new file mode 100644 index 0000000000..55d534519a --- /dev/null +++ b/scripts/npc/world0/2010005.js @@ -0,0 +1,96 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Shuri the Tour Guide - Orbis (200000000) +-- By --------------------------------------------------------------------------------------------- + Information & Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version +--------------------------------------------------------------------------------------------------- +**/ + +var pay = 2000; +var ticket = 4031134; +var msg; +var check; + +var status = 0; + +function start() { + cm.sendSimple("Have you heard of the beach with a spectacular view of the ocean called #b#m110000000##k, located a little far from #m"+cm.getPlayer().getMapId()+"#? I can take you there right now for either #b"+pay+" mesos#k, or if you have #b#t"+ticket+"##k with you, in which case you'll be in for free.\r\n\r\n#L0##bI'll pay "+pay+" mesos.#k#l\r\n#L1##bI have #t"+ticket+"##k#l\r\n#L2##bWhat is #t"+ticket+"#?#k#l"); +} + +function action(mode, type, selection) { + if (mode == -1 || (mode == 0 && status == 0)) { + cm.dispose(); + } else { + if (mode == 0 && status == 1) { + cm.sendNext("You must have some business to take care of here. You must be tired from all that travelling and hunting. Go take some rest, and if you feel like changing your mind, then come talk to me."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 0 || selection == 1) { + check = selection; + if (selection == 0) + msg = "You want to pay #b"+pay+" mesos#k and leave for #m110000000#?"; + else if (selection == 1) + msg = "So you have #b#t"+ticket+"##k? You can always head over to #m110000000# with that."; + cm.sendYesNo(msg+" Okay!! Please beware that you may be running into some monsters around there though, so make sure not to get caught off-guard. Okay, would you like to head over to #m110000000# right now?"); + } else if (selection == 2) { + cm.sendNext("You must be curious about #b#t"+ticket+"##k. Yeah, I can see that. #t"+ticket+"# is an item where as long as you have in possession, you may make your way to #m110000000# for free. It's such a rare item that even we had to buy those, but unfortunately I lost mine a few weeks ago during a long weekend."); + status = 3; + } + } else if (status == 2) { + if (check == 0) { + if (cm.getMeso() < pay) { + cm.sendOk("I think you're lacking mesos. There are many ways to gather up some money, you know, like ... selling your armor ... defeating the monsters ... doing quests ... you know what I'm talking about."); + cm.dispose(); + } else { + cm.gainMeso(-pay); + access = true; + } + } else if (check == 1) { + if (!cm.haveItem(ticket)) { + cm.sendOk("Hmmm, so where exactly is #b#t"+ticket+"##k?? Are you sure you have them? Please double-check."); + cm.dispose(); + } else + access = true; + } if (access) { + cm.getPlayer().saveLocation("FLORINA"); + cm.warp(110000000); + cm.dispose(); + } + } else if (status == 3) + cm.sendNext("You must be curious about #b#t"+ticket+"##k. Yeah, I can see that. #t"+ticket+"# is an item where as long as you have in possession, you may make your way to #m110000000# for free. It's such a rare item that even we had to buy those, but unfortunately I lost mine a few weeks ago during a long weekend."); + else if (status == 4) + cm.sendPrev("I came back without it, and it just feels awful not having it. Hopefully someone picked it up and put it somewhere safe. Anyway this is my story and who knows, you may be able to pick it up and put it to good use. If you have any questions, feel free to ask"); + else if (status == 5) + cm.dispose(); + + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2010006.js b/scripts/npc/world0/2010006.js new file mode 100644 index 0000000000..c3d18b0be2 --- /dev/null +++ b/scripts/npc/world0/2010006.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2010006); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2010007.js b/scripts/npc/world0/2010007.js new file mode 100644 index 0000000000..b70d2ca93a --- /dev/null +++ b/scripts/npc/world0/2010007.js @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* guild creation npc */ +var status = 0; +var sel; + +function start() { + cm.sendSimple("What would you like to do?\r\n#b#L0#Create a Guild#l\r\n#L1#Disband your Guild#l\r\n#L2#Increase your Guild's capacity#l#k"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + sel = selection; + if (selection == 0) { + if (cm.getPlayer().getGuildId() > 0) { + cm.sendOk("You may not create a new Guild while you are in one."); + cm.dispose(); + } else + cm.sendYesNo("Creating a Guild costs #b 1500000 mesos#k, are you sure you want to continue?"); + } else if (selection == 1) { + if (cm.getPlayer().getGuildId() < 1 || cm.getPlayer().getGuildRank() != 1) { + cm.sendOk("You can only disband a Guild if you are the leader of that Guild."); + cm.dispose(); + } else + cm.sendYesNo("Are you sure you want to disband your Guild? You will not be able to recover it afterward and all your GP will be gone."); + } else if (selection == 2) { + if (cm.getPlayer().getGuildId() < 1 || cm.getPlayer().getGuildRank() != 1) { + cm.sendOk("You can only increase your Guild's capacity if you are the leader."); + cm.dispose(); + } else + cm.sendYesNo("Increasing your Guild capacity by #b5#k costs #b " + cm.getPlayer().getGuild().getIncreaseGuildCost(cm.getPlayer().getGuild().getCapacity()) +" mesos#k, are you sure you want to continue?"); + } + } else if (status == 2) { + if (sel == 0 && cm.getPlayer().getGuildId() <= 0) { + cm.getPlayer().genericGuildMessage(1); + cm.dispose(); + } else if (cm.getPlayer().getGuildId() > 0 && cm.getPlayer().getGuildRank() == 1) { + if (sel == 1) { + cm.getPlayer().disbandGuild(); + cm.dispose(); + } else if (sel == 2) { + cm.getPlayer().increaseGuildCapacity(); + cm.dispose(); + } + } + } + } +} diff --git a/scripts/npc/world0/2010008.js b/scripts/npc/world0/2010008.js new file mode 100644 index 0000000000..720acd84c7 --- /dev/null +++ b/scripts/npc/world0/2010008.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* guild emblem npc */ + +var status = 0; +var sel; + +function start() { + cm.sendSimple("What would you like to do?\r\n#b#L0#Create/Change your Guild Emblem#l#k"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) { + sel = selection; + if (sel == 0) { + if (cm.getPlayer().getGuildRank() == 1) + cm.sendYesNo("Creating or changing Guild Emblem costs #b 5000000 mesos#k, are you sure you want to continue?"); + else + cm.sendOk("You must be the Guild Leader to change the Emblem. Please tell your leader to speak with me."); + } + } + else if (status == 2 && sel == 0) { + cm.getPlayer().genericGuildMessage(17); + cm.dispose(); + } else + cm.dispose(); + } +} diff --git a/scripts/npc/world0/2010009.js b/scripts/npc/world0/2010009.js new file mode 100644 index 0000000000..cbe35a6bf0 --- /dev/null +++ b/scripts/npc/world0/2010009.js @@ -0,0 +1,101 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status; +var choice; +var guildName; +var partymembers; + +function start() { + partymembers = cm.getPartyMembers(); + status = -1; + action(1,0,0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else { + cm.dispose(); + return; + } + if (status == 0) + cm.sendSimple("Hello there! I'm #bLenario#k\r\n#b#L0#Can you please tell me what Guild Union is all about?#l\r\n#L1#How do I make a Guild Union?#l\r\n#L2#I want to make a Guild Union.#l\r\n#L3#I want to add more guilds for the Guild Union.#l\r\n#L4#I want to break up the Guild Union.#l"); + else if (status == 1) { + choice = selection; + if (selection == 0) { + cm.sendNext("Guild Union is just as it says, a union of a number of guilds to form a super group. I am in charge of managing these Guild Unions."); + cm.dispose(); + } else if (selection == 1) { + cm.sendNext("To make a Guild Union, 2 Guild Masters need to be in a party. The leader of this party will be assigned as the Guild Union Master."); + cm.dispose(); + } else if(selection == 2) { + cm.sendYesNo("Oh, are you interested in forming a Guild Union?"); + } else if (selection == 3) { + var rank = cm.getPlayer().getMGC().getAllianceRank(); + if (rank == 1) + cm.sendOk("Not done yet"); //ExpandGuild Text + else { + cm.sendNext("Only the Guild Union Master can expand the number of guilds in the Union."); + cm.dispose(); + } + } else if(selection == 4) { + var rank = cm.getPlayer().getMGC().getAllianceRank(); + if (rank == 1) + cm.sendYesNo("Are you sure you want to disband your Guild Union?"); + else { + cm.sendNext("Only the Guild Union Master may disband the Guild Union."); + cm.dispose(); + } + } + } else if(status == 2) { + if (choice == 2) { + cm.sendGetText("Now please enter the name of your new Guild Union. (max. 12 letters)"); + } else if (choice == 4) { + if (cm.getPlayer().getGuild() == null) { + cm.sendNext("You cannot disband a non-existant Guild Union."); + cm.dispose(); + } else if (cm.getPlayer().getGuild().getAllianceId() <= 0) { + cm.sendNext("You cannot disband a non-existant Guild Union."); + cm.dispose(); + } else { + cm.disbandAlliance(cm.getClient(), cm.getPlayer().getGuild().getAllianceId()); + cm.sendOk("Your Guild Union has been disbanded."); + cm.dispose(); + } + } + } else if (status == 3) { + guildName = cm.getText(); + cm.sendYesNo("Will "+ guildName + " be the name of your Guild Union?"); + } else if (status == 4) { + if (!cm.canBeUsedAllianceName(guildName)) { + cm.sendNext("This name is unavailable, please choose another one"); //Not real text + status = 1; + choice = 2; + } else { + if (cm.createAlliance(partymembers.get(0), partymembers.get(1), guildName) == null) + cm.sendOk("An unknown system error has occured."); + else + cm.sendOk("You have successfully formed a Guild Union."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2012000.js b/scripts/npc/world0/2012000.js new file mode 100644 index 0000000000..c480f21cb6 --- /dev/null +++ b/scripts/npc/world0/2012000.js @@ -0,0 +1,33 @@ +var ticket = new Array(4031047, 4031074, 4031331, 4031576); +var cost = new Array(5000, 6000, 30000, 6000); +var mapNames = new Array("Ellinia of Victoria Island", "Ludibrium", "Leafre", "Ariant"); +var mapName2 = new Array("Ellinia of Victoria Island", "Ludibrium", "Leafre of Minar Forest", "Nihal Desert"); +var select; +var status = 0; + +function start() { + var where = "Hello, I'm in charge of selling tickets for the ship ride for every destination. Which ticket would you like to purchase?"; + for (var i = 0; i < ticket.length; i++) + where += "\r\n#L" + i + "##b" + mapNames[i] + "#k#l"; + cm.sendSimple(where); +} + +function action(mode, type, selection) { + if(mode < 1) { + cm.dispose(); + } else { + status++; + if (status == 1) { + select = selection; + cm.sendYesNo("The ride to " + mapName2[select] + " takes off every " + (select == 0 ? 15 : 10) + " minutes, beginning on the hour, and it'll cost you #b"+cost[select]+" mesos#k. Are you sure you want to purchase #b#t"+ticket[select]+"##k?"); + } else if(status == 2) { + if (cm.getMeso() < cost[select] || !cm.canHold(ticket[select])) + cm.sendOk("Are you sure you have #b"+cost[select]+" mesos#k? If so, then I urge you to check you etc. inventory, and see if it's full or not."); + else { + cm.gainMeso(-cost[select]); + cm.gainItem(ticket[select],1); + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/2012001.js b/scripts/npc/world0/2012001.js new file mode 100644 index 0000000000..a252a3e4e0 --- /dev/null +++ b/scripts/npc/world0/2012001.js @@ -0,0 +1,32 @@ +function start() { + if(cm.haveItem(4031047)){ + var em = cm.getEventManager("Boats"); + if (em.getProperty("entry") == "true") + cm.sendYesNo("Do you want to go to Ellinia?"); + else{ + cm.sendOk("The boat to Ellinia is already travelling, please be patient for the next one."); + cm.dispose(); + } + }else{ + cm.sendOk("Make sure you got a Ellinia ticket to travel in this boat. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + + var em = cm.getEventManager("Boats"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031047, -1); + cm.warp(200000112); + cm.dispose(); + } + else{ + cm.sendOk("The boat to Ellinia is ready to take off, please be patient for the next one."); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2012002.js b/scripts/npc/world0/2012002.js new file mode 100644 index 0000000000..5bd1304618 --- /dev/null +++ b/scripts/npc/world0/2012002.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** + * @Author: Moogra + * @NPC ID: 2012002 + * @NPC : Erin (On Orbis Boat ) + */ + +var status = 0; + +function start() { + cm.sendYesNo("Do you wish to go to leave the boat?"); +} + +function action(mode, type, selection) { +if (mode == 0 && status == 1) { + cm.sendOk("Good choice"); + cm.dispose(); +} + if (mode > 0) + status++; + else + cm.dispose(); + if (status == 1) + cm.sendNext ("Alright, see you next time. Take care."); + else if (status == 2) + cm.warp(200000111, 0);// back to Orbis jetty + cm.dispose(); +} diff --git a/scripts/npc/world0/2012006.js b/scripts/npc/world0/2012006.js new file mode 100644 index 0000000000..7f754c7cce --- /dev/null +++ b/scripts/npc/world0/2012006.js @@ -0,0 +1,28 @@ +var status = -1; +var sel; + +var destinations = new Array("Ellinia", "Ludibrium", "Leafre", "Mu Lung", "Ariant"); +var boatType = new Array("the ship", "the ship", "Hak", "Hak", "Genie"); + +function start() { + var message = "Orbis Station has lots of platforms available to choose from. You need to choose the one that'll take you to the destination of your choice. Which platform will you take?\r\n"; + for(var i = 0; i < destinations.length; i++){ + message += "\r\n#L" + i + "##bThe platform to " + boatType[i] + " that heads to " + destinations[i] + ".#l"; + } + cm.sendSimple(message); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + return; + } + status++; + if (status == 0){ + sel = selection; + cm.sendNext("Ok #h #, I will send you to the platform for #m" + (200000110 + (sel * 10)) + "#"); + }else if (status == 1) { + cm.warp(200000110 + (sel * 10)); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2012007.js b/scripts/npc/world0/2012007.js new file mode 100644 index 0000000000..2e700ce1ec --- /dev/null +++ b/scripts/npc/world0/2012007.js @@ -0,0 +1,97 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Rinz the assistant + Orbis Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30030, 30020, 30000, 30270, 30230, 30260, 30280, 30240, 30290, 30340, 30370, 30630, 30530, 30760); +var fhair = Array(31040, 31000, 31250, 31220, 31260, 31240, 31110, 31270, 31030, 31230, 31530, 31710, 31320, 31650, 31630); +var hairnew = Array(); + +function start() { + cm.sendSimple("I'm Rinz, the assistant. Do you have #b#t5150013##k or #b#t5151004##k with you? If so, what do you think about letting me take care of your hairdo? What do you want to do with your hair?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150013##t5150013##l\r\n#L2#Dye your hair: #i5151004##t5151004##l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150013##t5150013##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151004##t5151004##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + else + for (var i = 0; i < fhair.length; i++) + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that I came up with. Are you going to use #b#t5150010##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = (cm.getPlayer().getHair() / 10) | 0; + for (var i = 0; i < 8; i++) + haircolor.push(current + i); + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151004##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150013)){ + cm.gainItem(5150013, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + if (beauty == 2){ + if (cm.haveItem(5151004)){ + cm.gainItem(5151004, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150013, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151004, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } +} diff --git a/scripts/npc/world0/2012008.js b/scripts/npc/world0/2012008.js new file mode 100644 index 0000000000..bb6e763221 --- /dev/null +++ b/scripts/npc/world0/2012008.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Romi + Orbis Skin Change. +*/ +var status = 0; +var price = 1000000; +var skin = Array(0, 1, 2, 3, 4); + +function start() { + cm.sendSimple("Well, hello! Welcome to the Orbis Skin-Care~! Would you like to have a firm, tight, healthy looking skin like mine? With #b#t5153001##k, you can let us take care of the rest and have the kind of skin you've always wanted~!\r\n#L1#I would like to buy a #b#t5153001##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5153001, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + cm.dispose(); + } else if (selection == 2) + cm.sendStyle("With our specialized machine, you can see the way you'll look after the treatment PRIOR to the procedure. What kind of a look are you looking for? Go ahead and choose the style of your liking~!", skin); + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5153001)){ + cm.gainItem(5153001, -1); + cm.setSkin(selection + 1); + cm.sendOk("Enjoy your new and improved skin!"); + } else + cm.sendOk("Um...you don't have the skin-care coupon you need to receive the treatment. Sorry, but I am afraid we can't do it for you..."); + } + } +} diff --git a/scripts/npc/world0/2012009.js b/scripts/npc/world0/2012009.js new file mode 100644 index 0000000000..3d15b91e6f --- /dev/null +++ b/scripts/npc/world0/2012009.js @@ -0,0 +1,71 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Riza the Assistant + Orbis Random Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014); +var facenew = Array(); + +function start() { + cm.sendSimple("Hi, I pretty much shouldn't be doing this, but with a #b#t5152004##k, I will do it anyways for you. But don't forget, it will be random!\r\n#L1#I would like to buy a #b#t5152004##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + } else { + status++; + if (status == 1) { + if (selection == 1) { + if (cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152004, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) + for (var i = 0; i < mface.length; i++) + facenew.push(mface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + else + for (var i = 0; i < fface.length; i++) + facenew.push(fface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152004##k?"); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152004)){ + cm.gainItem(5152004, -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } +} diff --git a/scripts/npc/world0/2012013.js b/scripts/npc/world0/2012013.js new file mode 100644 index 0000000000..c23cebc211 --- /dev/null +++ b/scripts/npc/world0/2012013.js @@ -0,0 +1,31 @@ +function start() { + if(cm.haveItem(4031074)){ + var em = cm.getEventManager("Trains"); + if (em.getProperty("entry") == "true") { + cm.sendYesNo("Do you want to go to Ludibrium?"); + } else { + cm.sendOk("The train to Ludibrium is already travelling, please be patient for the next one."); + cm.dispose(); + } + } else { + cm.sendOk("Make sure you got a Ludibrium ticket to travel in this train. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + var em = cm.getEventManager("Trains"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031074, -1); + cm.warp(200000122); + cm.dispose(); + } + else{ + cm.sendOk("The train to Ludibrium is ready to take off, please be patient for the next one."); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2012014.js b/scripts/npc/world0/2012014.js new file mode 100644 index 0000000000..c498b5380f --- /dev/null +++ b/scripts/npc/world0/2012014.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Orbis Magic Spot - Orbis Tower <1st Floor>(200082100) +-- By --------------------------------------------------------------------------------------------- + Unknown +-- Version Info ----------------------------------------------------------------------------------- + 1.2 - Now Official method (action(x,0,0) is weak) by Moogra. + 1.1 - Official Text and Method [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + if (cm.haveItem(4001019)) + cm.sendYesNo("You can use #b#t4001019#k to activate #b#p2012014##k. Will you teleport to where #b#p2012015##k is?"); + else { + cm.sendOk("There's a #b#p2012014##k that'll enable you to teleport to where #b#p2012015##k is, but you can't activate it without the scroll."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode > 0) { + cm.gainItem(4001019, -1); + cm.warp(200082100); + } + cm.dispose(); +} diff --git a/scripts/npc/world0/2012015.js b/scripts/npc/world0/2012015.js new file mode 100644 index 0000000000..ef0d257176 --- /dev/null +++ b/scripts/npc/world0/2012015.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + El Nath Magic Spot - Orbis Tower <20th Floor>(200080200) +-- By --------------------------------------------------------------------------------------------- + Unknown +-- Version Info ----------------------------------------------------------------------------------- + 1.2 - Now official version (action(1,0,0) is stupid) by Moogra + 1.1 - Official Text and Method [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + if (cm.haveItem(4001019)) + cm.sendYesNo("You can use #b#t4001019#k to activate #b#p2012014##k. Will you teleport to where #b#p2012015##k is?"); + else { + cm.sendOk("There's a #b#p2012015##k that'll enable you to teleport to where #b#p2012014##k is, but you can't activate it without the scroll."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode > 0) { + cm.gainItem(4001019, -1); + cm.warp(200080200); + } + cm.dispose(); +} diff --git a/scripts/npc/world0/2012021.js b/scripts/npc/world0/2012021.js new file mode 100644 index 0000000000..b938693f5b --- /dev/null +++ b/scripts/npc/world0/2012021.js @@ -0,0 +1,30 @@ +function start() { + if(cm.haveItem(4031331)){ + var em = cm.getEventManager("Cabin"); + if (em.getProperty("entry") == "true") { + cm.sendYesNo("Do you wish to board the flight?"); + } else { + cm.sendOk("The flight has not arrived yet. Come back soon."); + cm.dispose(); + } + } else { + cm.sendOk("Make sure you got a Leafre ticket to travel in this flight. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + + var em = cm.getEventManager("Cabin"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031331, -1); + cm.warp(200000132); + } else { + cm.sendOk("The flight has not arrived yet. Come back soon."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2012022.js b/scripts/npc/world0/2012022.js new file mode 100644 index 0000000000..777e65c494 --- /dev/null +++ b/scripts/npc/world0/2012022.js @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (status == 0) { + cm.sendYesNo("Do you wish to leave the flight?"); + status++; + } else { + if ((status == 1 && type == 1 && selection == -1 && mode == 0) || mode == -1) { + cm.dispose(); + } else { + if (status == 1) { + cm.sendNext ("Alright, see you next time. Take care."); + status++; + } else if (status == 2) { + cm.warp(200000131, 0);//Back to Orbis + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/2012024.js b/scripts/npc/world0/2012024.js new file mode 100644 index 0000000000..e4354f12f4 --- /dev/null +++ b/scripts/npc/world0/2012024.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = 0; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (status == 0) { + cm.sendYesNo("Do you wish to go to leave the genie?"); + status++; + } else { + if (mode < 1) { + cm.dispose(); + } else { + if (status == 1) { + cm.sendNext ("Alright, see you next time. Take care."); + status++; + } else if (status == 2) { + cm.warp(200000151, 0); + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/2012025.js b/scripts/npc/world0/2012025.js new file mode 100644 index 0000000000..a4ad664a19 --- /dev/null +++ b/scripts/npc/world0/2012025.js @@ -0,0 +1,31 @@ +function start() { + if(cm.haveItem(4031576)){ + var em = cm.getEventManager("Genie"); + if (em.getProperty("entry") == "true") { + cm.sendYesNo("This will not be a short flight, so you need to take care of some things, I suggest you do that first before getting on board. Do you still wish to board the genie?"); + } else { + cm.sendOk("This genie is getting ready for takeoff. I'm sorry, but you'll have to get on the next ride. The ride schedule is available through the guide at the ticketing booth."); + cm.dispose(); + } + } else { + cm.sendOk("Make sure you got an Ariant ticket to travel in this genie. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + + var em = cm.getEventManager("Genie"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031576, -1); + cm.warp(200000152); + } else { + cm.sendOk("This genie is getting ready for takeoff. I'm sorry, but you'll have to get on the next ride. The ride schedule is available through the guide at the ticketing booth."); + } + + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2013002.js b/scripts/npc/world0/2013002.js new file mode 100644 index 0000000000..a0c59a0ccc --- /dev/null +++ b/scripts/npc/world0/2013002.js @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *2013002.js - Minevra the Goddess + *@author Jvlaple + */ +var status = 0; +var itemArray = Array(2000004, 2000005, 2000006, 2002020, 2002021, 2002022, 2002023, 2002024, 2002025, 2002026, 2001000, 2001002, 2002015, 2050005, 2022179, 2020014, 2020015 /*End of Pots*/, 2100000, 2100001, 2100002, 2100003, 2100004, 2100005, /*End of Sacks*/ + 2061003, 2060003, 2060004, 2061004 /*End of Arrows*/, 2070006, 2070005, 2070007, 2070004 /*End of Stars*/, 2210000, 2210001, 2210002 /*End of Morph items*/ ); +var itemQuan = Array(50, 20, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 5, 30, 2, 100, 50, 1, 1, 1, 1, 1, 1, 2000, 2000, 2000, 2000, 1, 1, 1, 1, 5, 5, 5); +var PQItems = new Array(4001022, 4001023); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (cm.getPlayer().getMapId() == 920010100) { //Center tower + if (status == 0) + cm.sendNext("Thank you for not only restoring the statue, but rescuing me, Minerva, from the entrapment. May the blessing of the goddess be with you till the end..."); + else if (status == 1) { + var eim = cm.getPlayer().getEventInstance(); + eim.finishPQ(); + cm.dispose(); + } + } else if (cm.getPlayer().getMapId() == 920011300) { + if (status == 0) + cm.sendNext("Thank you for not only restoring the statue, but rescuing me, Minerva, from the entrapment. May the blessing of the goddess be with you till the end..."); + else if (status == 1) { + for (var i = 0; i < PQItems.length; i++) + cm.removeAll(PQItems[i]); // Remove All PQ Items :D + var randmm = (Math.random() * itemArray.length) | 0; + cm.gainItem(itemArray[randmm], itemQuan[randmm]); + cm.warp(200080101, 0); + cm.dispose(); + } + } + } +} + \ No newline at end of file diff --git a/scripts/npc/world0/2020000.js b/scripts/npc/world0/2020000.js new file mode 100644 index 0000000000..9d3128f5e6 --- /dev/null +++ b/scripts/npc/world0/2020000.js @@ -0,0 +1,277 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Vogen + El Nath: El Nath Market (211000100) + + Refining NPC: + * Minerals + * Jewels + * Moon/Star Rocks + * Crystals (including Dark) + * Processed Wood/Screws + * Arrows/Bronze Arrows/Steel Arrows +*/ +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Hm? Who might you be? Oh, you've heard about my forging skills? In that case, I'd be glad to process some of your ores... for a fee.#b" + var options = new Array("Refine a mineral ore","Refine a jewel ore","Refine a rare jewel","Refine a crystal ore","Create materials","Create Arrows"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //mineral refine + var selStr = "So, what kind of mineral ore would you like to refine?#b"; + var minerals = new Array ("Bronze","Steel","Mithril","Adamantium","Silver","Orihalcon","Gold"); + for (var i = 0; i < minerals.length; i++){ + selStr += "\r\n#L" + i + "# " + minerals[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //jewel refine + var selStr = "So, what kind of jewel ore would you like to refine?#b"; + var jewels = new Array ("Garnet","Amethyst","Aquamarine","Emerald","Opal","Sapphire","Topaz","Diamond","Black Crystal"); + for (var i = 0; i < jewels.length; i++){ + selStr += "\r\n#L" + i + "# " + jewels[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //rock refine + var selStr = "A rare jewel? Which one were you thinking of?#b"; + var items = new Array ("Moon Rock","Star Rock"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (selectedType == 3){ //crystal refine + var selStr = "Crystal ore? It's hard to find those around here...#b"; + var crystals = new Array ("Power Crystal","Wisdom Crystal","DEX Crystal","LUK Crystal","Dark Crystal"); + for (var i = 0; i < crystals.length; i++){ + selStr += "\r\n#L" + i + "# " + crystals[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 4){ //material refine + var selStr = "Materials? I know of a few materials that I can make for you...#b"; + var materials = new Array ("Make Processed Wood with Tree Branch","Make Processed Wood with Firewood","Make Screws (packs of 15)"); + for (var i = 0; i < materials.length; i++){ + selStr += "\r\n#L" + i + "# " + materials[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 5){ //arrow refine + var selStr = "Arrows? Not a problem at all.#b"; + var arrows = new Array ("Arrow for Bow","Arrow for Crossbow","Bronze Arrow for Bow","Bronze Arrow for Crossbow","Steel Arrow for Bow","Steel Arrow for Crossbow"); + for (var i = 0; i < arrows.length; i++){ + selStr += "\r\n#L" + i + "# " + arrows[i] + "#l"; + } + equip = true; + cm.sendSimple(selStr); + } + if (equip) + status++; + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 0){ //mineral refine + var itemSet = new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006); + var matSet = new Array(4010000,4010001,4010002,4010003,4010004,4010005,4010006); + var matQtySet = new Array(10,10,10,10,10,10,10); + var costSet = new Array(300,300,300,500,500,500,800); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //jewel refine + var itemSet = new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008); + var matSet = new Array(4020000,4020001,4020002,4020003,4020004,4020005,4020006,4020007,4020008); + var matQtySet = new Array(10,10,10,10,10,10,10,10,10); + var costSet = new Array (500,500,500,500,500,500,500,1000,3000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //rock refine + var itemSet = new Array(4011007,4021009); + var matSet = new Array(new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006), new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008)); + var matQtySet = new Array(new Array(1,1,1,1,1,1,1),new Array(1,1,1,1,1,1,1,1,1)); + var costSet = new Array(10000,15000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //crystal refine + var itemSet = new Array (4005000,4005001,4005002,4005003,4005004); + var matSet = new Array(4004000,4004001,4004002,4004003,4004004); + var matQtySet = new Array (10,10,10,10,10); + var costSet = new Array (5000,5000,5000,5000,1000000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 4){ //material refine + var itemSet = new Array (4003001,4003001,4003000); + var matSet = new Array(4000003,4000018,new Array (4011000,4011001)); + var matQtySet = new Array (10,5,new Array (1,1)); + var costSet = new Array (0,0,0); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + + cm.sendGetNumber(prompt,1,1,100) + } + else if (status == 3 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + if (selectedType == 5){ //arrow refine + var itemSet = new Array(2060000,2061000,2060001,2061001,2060002,2061002); + var matSet = new Array(new Array (4003001,4003004),new Array (4003001,4003004),new Array (4011000,4003001,4003004),new Array (4011000,4003001,4003004), + new Array (4011001,4003001,4003005),new Array (4011001,4003001,4003005)); + var matQtySet = new Array (new Array (1,1),new Array (1,1),new Array (1,3,10),new Array (1,3,10),new Array (1,5,15),new Array (1,5,15)); + var costSet = new Array (0,0,0,0,0,0); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 4 && mode == 1) { + var complete = true; + + if (cm.getMeso() < cost * qty) + { + cm.sendOk("I'm afraid you cannot afford my services.") + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] * qty == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + if (cm.haveItem(matQty[i]*qty))complete=false; + + } + } + } + else { + if (cm.haveItem(matQty*qty))complete=false; + + } + } + + if (!complete) + cm.sendOk("I can't refine anything for you without the proper items."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + + if (cost > 0) + cm.gainMeso(-cost * qty); + + if (item >= 2060000 && item <= 2060002) //bow arrows + cm.gainItem(item, 1000 - (item - 2060000) * 100); + else if (item >= 2061000 && item <= 2061002) //xbow arrows + cm.gainItem(item, 1000 - (item - 2061000) * 100); + else if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("All done. If you need anything else, just ask."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020002.js b/scripts/npc/world0/2020002.js new file mode 100644 index 0000000000..3ebaf27f33 --- /dev/null +++ b/scripts/npc/world0/2020002.js @@ -0,0 +1,209 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Gordon + El Nath: El Nath Market (211000100) + + Refining NPC: + * Shoes, level 60-80 all classes +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Hello there. El Nath winters are incredibly cold, you're going to need a warm pair of shoes to survive.#b" + var options = new Array("Create Warrior shoes","Create Bowman shoes","Create Magician shoes","Create Thief shoes"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + var selStr; + var shoes; + if (selectedType == 0){ //warrior shoes + selStr = "Warrior shoes? Okay, then which set?#b"; + var shoes = new Array ("Sapphire Camel Boots#k - Warrior Lv. 60#b","Orihalcon Camel Boots#k - Warrior Lv. 60#b","Blood Camel Boots#k - Warrior Lv. 60#b", + "Blue Carzen Boots#k - Warrior Lv. 70#b","Purple Carzen Boots#k - Warrior Lv. 70#b","Dark Carzen Boots#k - Warrior Lv. 70#b", + "Red Rivers Boots#k - Warrior Lv. 80#b","Blue Rivers Boots#k - Warrior Lv. 80#b","Dark Rivers Boots#k - Warrior Lv. 80#b"); + } + else if (selectedType == 1){ //bowman shoes + selStr = "Bowman shoes? Okay, then which set?#b"; + var shoes = new Array ("Red Gore Boots#k - Bowman Lv. 60#b","Blue Gore Boots#k - Bowman Lv. 60#b","Green Gore Boots#k - Bowman Lv. 60#b", + "Blue Elf Boots#k - Bowman Lv. 70#b","Beige Elf Boots#k - Bowman Lv. 70#b","Green Elf Boots#k - Bowman Lv. 70#b","Dark Elf Boots#k - Bowman Lv. 70#b", + "Blue Wing Boots#k - Bowman Lv. 80#b","Red Wing Boots#k - Bowman Lv. 80#b","Green Wing Boots#k - Bowman Lv. 80#b","Dark Wing Boots#k - Bowman Lv. 80#b"); + } + else if (selectedType == 2){ //mage shoes + selStr = "Magician shoes? Okay, then which set?#b"; + var shoes = new Array ("Pink Goldrunners#k - Magician Lv. 60#b","Green Goldrunners#k - Magician Lv. 60#b","Orange Goldrunners#k - Magician Lv. 60#b","Blue Goldrunners#k - Magician Lv. 60#b", + "Blue Lapiz Sandals#k - Magician Lv. 70#b","Red Lapiz Sandals#k - Magician Lv. 70#b","Brown Lapiz Sandals#k - Magician Lv. 70#b","Gold Lapiz Sandals#k - Magician Lv. 70#b", + "Green Enigma Shoes#k - Magician Lv. 80#b","Purple Enigma Shoes#k - Magician Lv. 80#b","Dark Enigma Shoes#k - Magician Lv. 80#b"); + } + else if (selectedType == 3){ //thief shoes + selStr = "Thief shoes? Okay, then which set?#b"; + var shoes = new Array ("Blood Moss Boots#k - Thief Lv. 60#b","Gold Moss Boots#k - Thief Lv. 60#b","Dark Moss Boots#k - Thief Lv. 60#b", + "Purple Mystique Shoes#k - Thief Lv. 70#b","Blue Mystique Shoes#k - Thief Lv. 70#b","Red Mystique Shoes#k - Thief Lv. 70#b", + "Green Pirate Boots#k - Thief Lv. 80#b","Red Pirate Boots#k - Thief Lv. 80#b","Dark Pirate Boots#k - Thief Lv. 80#b"); + } + for (var i = 0; i < shoes.length; i++){ + selStr += "\r\n#L" + i + "# " + shoes[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + + if (selectedType == 0){ //warrior shoes + var itemSet = new Array(1072147,1072148,1072149,1072154,1072155,1072156,1072210,1072211,1072212); + var matSet = new Array(new Array(4021008,4011007,4021005,4000030,4003000),new Array(4021008,4011007,4011005,4000030,4003000),new Array(4021008,4011007,4021000,4000030,4003000), + new Array(4005000,4005002,4011002,4000048,4003000),new Array(4005000,4005002,4011005,4000048,4003000),new Array(4005000,4005002,4021008,4000048,4003000), + new Array(4005000,4005002,4021000,4000030,4003000),new Array(4005000,4005002,4021002,4000030,4003000),new Array(4005000,4005002,4021008,4000030,4003000)); + var matQtySet = new Array(new Array(1,1,8,80,55),new Array(1,1,8,80,55),new Array(1,1,8,80,55),new Array(1,3,5,100,55),new Array(2,2,5,100,55),new Array(3,1,1,100,55), + new Array(2,3,7,90,65),new Array(3,2,7,90,65),new Array(4,1,2,90,65)); + var costSet = new Array(60000,60000,60000,70000,70000,70000,80000,80000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //bowman shoes + var itemSet = new Array(1072144,1072145,1072146,1072164,1072165,1072166,1072167,1072182,1072183,1072184,1072185); + var matSet = new Array(new Array(4011006,4021000,4021007,4000030,4003000),new Array(4011006,4021005,4021007,4000030,4003000),new Array(4011006,4021003,4021007,4000030,4003000), + new Array(4005002,4005000,4021005,4000055,4003000),new Array(4005002,4005000,4021004,4000055,4003000),new Array(4005002,4005000,4021003,4000055,4003000),new Array(4005002,4005000,4021008,4000055,4003000), + new Array(4005002,4005000,4021002,4000030,4003000),new Array(4005002,4005000,4021000,4000030,4003000),new Array(4005002,4005000,4021003,4000030,4003000),new Array(4005002,4021008,4000030,4003000)); + var matQtySet = new Array(new Array(5,8,1,75,50),new Array(5,8,1,75,50),new Array(5,8,1,75,50),new Array(1,3,5,100,55),new Array(2,2,5,100,55),new Array(2,2,5,100,55),new Array(3,1,1,100,55), + new Array(2,3,7,90,60),new Array(3,2,7,90,60),new Array(4,1,7,90,60),new Array(5,2,90,60)); + var costSet = new Array(60000,60000,60000,70000,70000,70000,70000,80000,80000,80000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //mage shoes + var itemSet = new Array(1072136,1072137,1072138,1072139,1072157,1072158,1072159,1072160,1072177,1072178,1072179); + var matSet = new Array(new Array(4021009,4011006,4011005,4000030,4003000),new Array(4021009,4011006,4021003,4000030,4003000),new Array(4021009,4011006,4011003,4000030,4003000),new Array(4021009,4011006,4021002,4000030,4003000), + new Array(4005001,4005003,4021002,4000051,4003000),new Array(4005001,4005003,4021000,4000051,4003000),new Array(4005001,4005003,4011003,4000051,4003000),new Array(4005001,4005003,4011006,4000051,4003000), + new Array(4005001,4005003,4021003,4000030,4003000),new Array(4005001,4005003,4021001,4000030,4003000),new Array(4005001,4005003,4021008,4000030,4003000)); + var matQtySet = new Array(new Array(1,4,5,70,50),new Array(1,4,5,70,50),new Array(1,4,5,70,50),new Array(1,4,5,70,50), + new Array(1,3,5,100,55),new Array(2,2,5,100,55),new Array(2,2,5,100,55),new Array(3,1,3,100,55), + new Array(2,3,7,85,60),new Array(3,2,7,85,60),new Array(4,1,2,85,60)); + var costSet = new Array(60000,60000,60000,60000,70000,70000,70000,70000,80000,80000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //thief shoes + var itemSet = new Array (1072150,1072151,1072152,1072161,1072162,1072163,1072172,1072173,1072174); + var matSet = new Array(new Array(4021007,4011007,4021000,4000030,4003000),new Array(4021007,4011007,4011006,4000030,4003000),new Array(4021007,4011007,4021008,4000030,4003000), + new Array(4005003,4005000,4021001,4000051,4003000),new Array(4005003,4005002,4021005,4000051,4003000),new Array(4005002,4005003,4021000,4000051,4003000), + new Array(4005000,4005003,4021003,4000030,4003000),new Array(4005002,4005003,4021000,4000030,4003000),new Array(4005003,4005002,4021008,4000030,4003000)); + var matQtySet = new Array(new Array(1,1,8,75,50),new Array(1,1,5,75,50),new Array(1,1,1,75,50), + new Array(1,3,5,100,55),new Array(1,3,5,100,55),new Array(1,3,5,100,55), + new Array(3,2,7,90,60),new Array(3,2,7,90,60),new Array(3,2,7,90,60)); + var costSet = new Array(60000,60000,60000,70000,70000,70000,80000,80000,80000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if (mats instanceof Array) + for(var i = 0; i < mats.length; i++) + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + else + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + cm.sendYesNo(prompt); + } + else if (status == 3 && mode == 1) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost) { + cm.sendOk("I'm afraid you cannot afford my services."); + cm.dispose(); + return; + } + else { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /*if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++){ + if (matQty[i] == 1){ + if (!cm.haveItem(mats[i])) + complete = false; + } + else if (!cm.haveItem(mats[i],matQty[i])) + complete=false; + } + } + + else if (!cm.haveItem(mats,matQty)) + complete=false; + */ + } + if (!complete) + cm.sendOk("I only make quality goods, which I cannot do without the proper materials."); + else { + if (mats instanceof Array) + for (var i = 0; i < mats.length; i++) + cm.gainItem(mats[i], -matQty [i]); + else + cm.gainItem(mats, -matQty ); + cm.gainMeso(-cost ); + cm.gainItem(item, 1); + cm.sendOk("All done. Stay warm!"); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020004.js b/scripts/npc/world0/2020004.js new file mode 100644 index 0000000000..188a4b6275 --- /dev/null +++ b/scripts/npc/world0/2020004.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2020004); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2020005.js b/scripts/npc/world0/2020005.js new file mode 100644 index 0000000000..4e436dc49c --- /dev/null +++ b/scripts/npc/world0/2020005.js @@ -0,0 +1,89 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Alcaster - El Nath Market (211000100) +-- By --------------------------------------------------------------------------------------------- + Unknown/Information/xQuasar +-- Version Info ----------------------------------------------------------------------------------- + 1.3 - Fixed up completely [xQuasar] + 1.2 - Add a missing text part [Information] + 1.1 - Recoded to official [Information] + 1.0 - First Version by Unknown +--------------------------------------------------------------------------------------------------- +**/ + +var selected; +var amount; +var totalcost; +var item = new Array(2050003,2050004,4006000,4006001); +var cost = new Array(300,400,5000,5000); +var msg = new Array("that cures the state of being sealed and cursed","that cures all",", possessing magical power, that is used for high-quality skills",", possessing the power of summoning that is used for high-quality skills"); + +function start() { + if (cm.isQuestCompleted(3035)) { + var selStr; + for (var i = 0; i < item.length; i++){ + selStr += "\r\n#L" + i + "# #b#t" + item[i] + "# (Price: "+cost[i]+" mesos)#k#l"; + } + cm.sendSimple("Thanks to you #b#t4031056##k is safely sealed. Of course, also as a result, I used up about half of the power I have accumulated over the last 800 years or so...but now I can die in peace. Oh, by the way... are you looking for rare items by any chance? As a sign of appreciation for your hard work, I'll sell some items I have to you, and ONLY you. Pick out the one you want!"+selStr); + } + else { + cm.sendNext("If you decide to help me out, then in return, I'll make the item available for sale."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if(mode == 0 && status == 2) { + cm.sendNext("I see. Understand that I have many different items here. Take a look around. I'm only selling these items to you, so I won't be ripping you off in any way shape or form."); + cm.dispose(); + return; + } + if (mode < 1) { + cm.dispose(); + return; + } + status++; + if (status == 1) { + selected = selection; + cm.sendGetNumber("Is #b#t"+item[selected]+"##k really the item that you need? It's the item "+msg[selected]+". It may not be the easiest item to acquire, but I'll give you a good deal on it. It'll cost you #b"+cost[selected]+" mesos#k per item. How many would you like to purchase?", 0, 1, 100); + } + else if (status == 2) { + amount = selection; + totalcost = cost[selected] * amount; + if (amount == 0) { + cm.sendOk("If you're not going to buy anything, then I've got nothing to sell neither."); + cm.dispose(); + } + cm.sendYesNo("Are you sure you want to buy #r"+amount+" #t"+item[selected]+"(s)##k? It'll cost you "+cost[selected]+" mesos per #t"+item[selected]+"#, which will cost you #r"+totalcost+" mesos#k in total."); + } else if(status == 3) { + if(cm.getMeso() < totalcost || !cm.canHold(item[selected])) { + cm.sendNext("Are you sure you have enough mesos? Please check and see if your etc. or use inventory is full, or if you have at least #r"+totalcost+"#k mesos."); + cm.dispose(); + } + cm.sendNext("Thank you. If you ever find yourself needing items down the road, make sure to drop by here. I may have gotten old over the years, but I can still make magic items with ease."); + cm.gainMeso(-totalcost); + cm.gainItem(item[selected], amount); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020008.js b/scripts/npc/world0/2020008.js new file mode 100644 index 0000000000..3795040ca7 --- /dev/null +++ b/scripts/npc/world0/2020008.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var job; +var sel; +actionx = {"Mental" : false, "Physical" : false}; + +function start() { + if (!(cm.getPlayer().getLevel() >= 70 && parseInt(cm.getJobId() / 100) == 1)){ + cm.sendNext("Hi there."); + cm.dispose(); + return; + } + if (cm.haveItem(4031058)) + actionx["Mental"] = true; + else if (cm.haveItem(4031057)) + actionx["Physical"] = true; + cm.sendSimple("Can I help you?#b" + (cm.getJobId() % 10 == 0 ? "\r\n#L0#I want to make the 3th job advancement." : "") + "\r\n#L1#Please allow me to do the Zakum Dungeon Quest."); +} + +function action(mode, type, selection){ + status++; + if (mode == 0 && type == 0) { + status -= 2; + } else if(mode != 1 || (status > 2 && !actionx["Mental"]) || status > 3){ + if (mode == 0 && type == 1) + cm.sendNext("Make up your mind."); + cm.dispose(); + return; + } + if (actionx["Mental"]){ + if (status == 0) + cm.sendNext("Great job completing the mental part of the test. You have wisely answered all the questions correctly. I must say, I am quite impressed with the level of wisdom you have displayed there. Please hand me the necklace first, before we takeon the next step."); + else if (status == 1) + cm.sendYesNo("Okay! Now, you'll be transformed into a much more powerful warrior through me. Before doing that, though, please make sure your SP has been thoroughly used, You'll need to use up at least all of SP's gained until level 70 to make the 3rd job advancement. Oh, and since you have already chosen your path of the occupation by the 2nd job adv., you won't have to choose again for the 3rd job adv. Do you want to do it right now?"); + else if (status == 2) { + if (cm.getPlayer().getRemainingSp() > 0) + if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { + cm.sendNext("Please, use all your SP before contining."); + cm.dispose(); + return; + } + if (cm.getJobId() % 10 == 0) { + cm.gainItem(4031058, -1); + cm.changeJobById(cm.getJobId() + 1); + cm.getPlayer().removePartyQuestItem("JBQ"); + } + + if(cm.getJobId() / 10 == 11) cm.sendNext("You have just become the #bCrusader#k. A number of new attacking skills such as #bShout#k and #bCombo Attack#k are devastating, while #bArmor Crash#k will put a dent on the monsters' defensive abilities. It'll be best to concentrate on acquiring skills with the weapon you mastered during the days as a Fighter."); + else if(cm.getJobId() / 10 == 12) cm.sendNext("You have just become the #bWhite Knight#k. You'll be introduced to a new skill book featuring various new attacking skills as well as element-based attacks. It's recommended that the type of weapon complementary to the Page, whether it be a sword or a blunt weapon, should be continued as the White Knight. There's a skill called #bCharge#k, which adds an element of ice, fire and lightning to the weapon, making White Knight the only warrior that can perform element-based attacks. Charge up your weapon with an element that weakens the monster, and then apply massive damage with the #bCharged Blow#k. This will definitely make you a devastating force around here."); + else cm.sendNext("You're #bDragon Knight#k from here on out. You'll be introduced to a range of new attacking skills for spears and pole arms, and whatever weapon was chosen as the Spearman should be continued as the Dragon Knigth. Skills such as #bCrusher#k (maximum damage to one monster) and #bDragon Fury#k (damage to multiple monsters) are recommended as main attacking skills of choice, while a skill called #bDragon Roar#k will damage everything on screen with devasting force. The downside is the fact that the skill uses up over half of the available HP."); + } else if (status == 3) { + cm.sendNextPrev("I've also given you some SP and AP, which will help you get started. You have now become a powerful, powerful warrior, indeed. Remember, though, that the real world will be awaiting your arrival with even tougher obstavles to overcome. Once you feel like you cannot train yourself to reach a higher place, then, and only then, come see me. I'll be here waiting."); + } + }else if (actionx["Physical"]){ + if (status == 0) + cm.sendNext("Great job completing the physical part of the test. I knew you could do it. Now that you have passed the first half of the test, here's the second half. Please give me the necklace fist"); + else if (status == 1){ + if (cm.haveItem(4031057)){ + cm.gainItem(4031057, -1); + cm.getPlayer().setPartyQuestItemObtained("JBQ"); + } + cm.sendNextPrev("Here's the 2nd half of the test. This test will determine whether you are smart enough to take the next step towards greatness. There is a dark, snow-covered area called the Holy Ground at the snowfield in Ossyria, where even the monsters can't reach. On the center of the area lies a huge stone called the Holy Stone. You'll need to offer a special item as the sacrifice, then the Holy Stone will test your wisdom right there on the spot."); + } else if (status == 2) + cm.sendNextPrev("You'll need to answer each and every question given to you with honesty and conviction. If you correctly answer all the questions, then the Holy Stone will formally accept you and hand you #b#t4031058##k. Bring back the necklace, and I will help you to the next step forward. Good luck."); + } else if (cm.getPlayer().gotPartyQuestItem("JB3") && selection == 0){ + cm.sendNext("Go, talk with #b#p1022000##k and bring me #b#t4031057##k."); + cm.dispose(); + } else if (cm.getPlayer().gotPartyQuestItem("JBQ") && selection == 0){ + cm.sendNext("Go, talk with #b#p2030006##k and bring me #b#t4031058##k."); + cm.dispose(); + } else { + if (sel == undefined) + sel = selection; + if (sel == 0){ + if (cm.getPlayer().getLevel() >= 70 && cm.getJobId() % 10 == 0){ + if (status == 0) + cm.sendYesNo("Welcome. I'm #b#p2020008##k, the chief of all warriors, in charge of bringing out the best in each and every warrior that needs my guidance. You seem like the kind of warrior that wants to make the leap forward, the one ready to take on the challenges of the 3th job advancement. But I've seen countless warriors eager to make the jump just like you, only to see them fail. What about you? Are you ready to be tested and make the 3th job advancement?"); + else if (status == 1){ + cm.getPlayer().setPartyQuestItemObtained("JB3"); + cm.sendNext("Good. You will be tested on two important aspects of the warrior: strength and wisdom. I'll now explain to you the physical half of the test. Remember #b#p1022000##k from Perion? Go see him, and he'll give you the details on the first half of the test. Please complete the mission, and get #b#t4031057##k from #p1022000#."); + } else if (status == 2) + cm.sendNextPrev("The mental half of the test can only start after you pass the physical part of the test. #b#t4031057##k will be the proof that you have indeed passed the test. I'll let #b#p1022000##k in advance that you're making your way there, so get ready. It won't be easy, but I have the utmost faith in you. Good luck."); + } + } else { + if (cm.getPlayer().getLevel() >= 50){ + cm.sendNext("Ok, go."); + cm.getPlayer().setPartyQuestItemObtained("z"); + }else + cm.sendNext("You're weak."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020009.js b/scripts/npc/world0/2020009.js new file mode 100644 index 0000000000..4d8e60d9d9 --- /dev/null +++ b/scripts/npc/world0/2020009.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var job; +var sel; +actionx = {"Mental" : false, "Physical" : false}; + +function start() { + if (!(cm.getPlayer().getLevel() >= 70 && parseInt(cm.getJobId() / 100) == 2)){ + cm.sendNext("Hi there."); + cm.dispose(); + return; + } + if (cm.haveItem(4031058)) + actionx["Mental"] = true; + else if (cm.haveItem(4031057)) + actionx["Physical"] = true; + cm.sendSimple("Anything you want from me?#b" + (cm.getJobId() % 10 == 0 ? "\r\n#L0#I want to make the 3th job advancement." : "") + "\r\n#L1#Please allow me to do the Zakum Dungeon Quest."); +} + +function action(mode, type, selection){ + status++; + if (mode == 0 && type == 0) { + status -= 2; + } else if(mode != 1 || (status > 2 && !actionx["Mental"]) || status > 3){ + if (mode == 0 && type == 1) + cm.sendNext("Make up your mind."); + cm.dispose(); + return; + } + if (actionx["Mental"]){ + if (status == 0) + cm.sendNext("Great job completing the mental part of the test. You have wisely answered all the questions correctly. I must say, I am quite impressed with the level of wisdom you have displayed there. Please hand me the necklace first, before we takeon the next step."); + else if (status == 1) + cm.sendYesNo("Okay! Now, you'll be transformed into a much more powerful thieve through me. Before doing that, though, please make sure your SP has been thoroughly used, You'll need to use up at least all of SP's gained until level 70 to make the 3rd job advancement. Oh, and since you have already chosen your path of the occupation by the 2nd job adv., you won't have to choose again for the 3rd job adv. Do you want to do it right now?"); + else if (status == 2) { + if (cm.getPlayer().getRemainingSp() > 0) + if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { + cm.sendNext("Please, use all your SP before contining."); + cm.dispose(); + return; + } + if (cm.getJobId() % 10 == 0) { + cm.gainItem(4031058, -1); + cm.changeJobById(cm.getJobId() + 1); + cm.getPlayer().removePartyQuestItem("JBQ"); + } + + if(cm.getJobId() / 10 == 21) cm.sendNext("You're the #bMage of Fire and Poison#k from here on out. The new skill book features new and improved fire and poison based spells, and skills such as #bElement Amplification#k (improved element-based spells) and #bSpell Booster#k (improves the overall speed of your attacking spells) will enable you to attack the monsters quickly and effectively. Defensive spells such as #bPartial Resistance#k (allows you to become stronger against certain elemental-based attacks) and #bSeal#k (seals up the monster) will help negate the one weakness Mages possess: lack of HP."); + else if(cm.getJobId() / 10 == 22) cm.sendNext("You're the #bMage of Ice and Lightning#k from here on out. The new skill book features new and improved ice and lightning based spells, and skills such as #bElement Amplification#k (improved element-based spells) and #bSpell Booster#k (improves the overall speed of your attacking spells) will enable you to attack the monsters quickly and effectively. Defensive spells such as #bPartial Resistance#k (allows you to become stronger against certain elemental-based attacks) and #bSeal#k (seals up the monster) will help negate the one weakness Mages possess: lack of HP."); + else cm.sendNext("You're #bPriest#k from here on out. The new skill book features new and improved holy spells such as #bShining Ray#k and #bSummon Dragon#k, and skills such as #bMystic Door#k (creates a door for the exit to the nearest town) and #bHoly Symbol#k (improves the EXP gained) can be vital to the party play. Off-beat spells such as #bDoom#k (turn monsters into snails) separates Priests from other jobs as the most different of all."); + } else if (status == 3) { + cm.sendNextPrev("I've also given you some SP and AP, which will help you get started. You have now become a powerful, powerful warrior, indeed. Remember, though, that the real world will be awaiting your arrival with even tougher obstacles to overcome. Once you feel like you cannot train yourself to reach a higher place, then, and only then, come see me. I'll be here waiting."); + } + }else if (actionx["Physical"]){ + if (status == 0) + cm.sendNext("Great job completing the physical part of the test. I knew you could do it. Now that you have passed the first half of the test, here's the second half. Please give me the necklace fist"); + else if (status == 1){ + if (cm.haveItem(4031057)){ + cm.gainItem(4031057, -1); + cm.getPlayer().setPartyQuestItemObtained("JBQ"); + } + cm.sendNextPrev("Here's the 2nd half of the test. This test will determine whether you are smart enough to take the next step towards greatness. There is a dark, snow-covered area called the Holy Ground at the snowfield in Ossyria, where even the monsters can't reach. On the center of the area lies a huge stone called the Holy Stone. You'll need to offer a special item as the sacrifice, then the Holy Stone will test your wisdom right there on the spot."); + } else if (status == 2) + cm.sendNextPrev("You'll need to answer each and every question given to you with honesty and conviction. If you correctly answer all the questions, then the Holy Stone will formally accept you and hand you #b#t4031058##k. Bring back the necklace, and I will help you to the next step forward. Good luck."); + } else if (cm.getPlayer().gotPartyQuestItem("JB3") && selection == 0){ + cm.sendNext("Go, talk with #b#p1032001##k and bring me #b#t4031057##k."); + cm.dispose(); + } else if (cm.getPlayer().gotPartyQuestItem("JBQ") && selection == 0){ + cm.sendNext("Go, talk with #b#p2030006##k and bring me #b#t4031058##k."); + cm.dispose(); + } else { + if (sel == undefined) + sel = selection; + if (sel == 0){ + if (cm.getPlayer().getLevel() >= 70 && cm.getJobId() % 10 == 0){ + if (status == 0) + cm.sendYesNo("Welcome. I'm #b#p2020009##k, the chief of all magicians, ready to share my street knowledge and hard knock life to those willing to listen. You seem ready to make the leap forward, the one ready to take on the challenges of the 3rd job advancement. Too many magicians have come and gone, unable to meet the standards of achieving the 3rd job advancement. What about you? Are you ready to be tested and make the 3th job advancement?"); + else if (status == 1){ + cm.getPlayer().setPartyQuestItemObtained("JB3"); + cm.sendNext("Good. You will be tested on two important aspects of a magician: strength and wisdom. I'll now explain to you the physical half of the test. Remember #b#p1032001##k from Ellinia? Go see him, and he'll give you the details on the first half of the test. Please complete the mission, and get #b#t4031057##k from #p1032001#."); + } else if (status == 2) + cm.sendNextPrev("The mental half of the test can only start after you pass the physical part of the test. #b#t4031057##k will be the proof that you have indeed passed the test. I'll let #b#p1032001##k in advance that you're making your way there, so get ready. It won't be easy, but I have the utmost faith in you. Good luck."); + } + } else { + if (cm.getPlayer().getLevel() >= 50){ + cm.sendNext("Ok, go."); + cm.getPlayer().setPartyQuestItemObtained("z"); + }else + cm.sendNext("You're weak."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020010.js b/scripts/npc/world0/2020010.js new file mode 100644 index 0000000000..0311ced135 --- /dev/null +++ b/scripts/npc/world0/2020010.js @@ -0,0 +1,115 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +//** Archer 3rd Job Instructor Rene + +status = -1; +var job; +var sel; +actionx = {"Mental" : false, "Physical" : false}; + +function start() { + if (!(cm.getPlayer().getLevel() >= 70 && parseInt(cm.getJobId() / 100) == 3)){ + cm.sendNext("Hi there."); + cm.dispose(); + return; + } + if (cm.haveItem(4031058)) + actionx["Mental"] = true; + else if (cm.haveItem(4031057)) + actionx["Physical"] = true; + cm.sendSimple("Anything you want from me?#b" + (cm.getJobId() % 10 == 0 ? "\r\n#L0#I want to make the 3th job advancement." : "") + "\r\n#L1#Please allow me to do the Zakum Dungeon Quest."); +} + +function action(mode, type, selection){ + status++; + if (mode == 0 && type == 0) { + status -= 2; + } else if(mode != 1 || (status > 2 && !actionx["Mental"]) || status > 3){ + if (mode == 0 && type == 1) + cm.sendNext("Make up your mind."); + cm.dispose(); + return; + } + if (actionx["Mental"]){ + if (status == 0) + cm.sendNext("Great job completing the mental part of the test. You have wisely answered all the questions correctly. I must say, I am quite impressed with the level of wisdom you have displayed there. Please hand me the necklace first, before we takeon the next step."); + else if (status == 1) + cm.sendYesNo("Okay! Now, you'll be transformed into a much more powerful thieve through me. Before doing that, though, please make sure your SP has been thoroughly used, You'll need to use up at least all of SP's gained until level 70 to make the 3rd job advancement. Oh, and since you have already chosen your path of the occupation by the 2nd job adv., you won't have to choose again for the 3rd job adv. Do you want to do it right now?"); + else if (status == 2) { + if (cm.getPlayer().getRemainingSp() > 0) + if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { + cm.sendNext("Please, use all your SP before contining."); + cm.dispose(); + return; + } + if (cm.getJobId() % 10 == 0) { + cm.gainItem(4031058, -1); + cm.changeJobById(cm.getJobId() + 1); + cm.getPlayer().removePartyQuestItem("JBQ"); + } + + if(cm.getJobId() / 10 == 31) cm.sendNext("You have officially become the #bRanger#k. One of the skills that you'll truly embrace is a skill called #bMortal Blow#k that allows Rangers to fire arrows from close-range. #bInferno#k allows Rangers to temporarily perform fire-based attacks on monsters, while skills like #bPuppet#k (summons a scarecrow which attracts the monsters' attention) and #bSilver Hawk#k (summons a Silver Hawk that attacks monsters) solidify the Bowman's status as a long-range attack extraordinaire."); + else cm.sendNext("You have officially become the #bSniper#k. One of the skills that you'll truly embrace is a skill called #bMortal Blow#k that allows Snipers to fire arrows from close-range. #bBlizzard#k allows Snipers to temporarily perform ice-based attacks on monsters, while skills like #bPuppet#k (summons a scarecrow which attracts the monsters' attention) and #bGolden Eagle#k (summons a Golden Eagle that attacks monsters) solidify the Bowman's status as a long-range attack extraordinaire."); + } else if (status == 3) { + cm.sendNextPrev("I've also given you some SP and AP, which will help you get started. You have now become a powerful, powerful warrior, indeed. Remember, though, that the real world will be awaiting your arrival with even tougher obstavles to overcome. Once you feel like you cannot train yourself to reach a higher place, then, and only then, come see me. I'll be here waiting."); + } + }else if (actionx["Physical"]){ + if (status == 0) + cm.sendNext("Great job completing the physical part of the test. I knew you could do it. Now that you have passed the first half of the test, here's the second half. Please give me the necklace fist"); + else if (status == 1){ + if (cm.haveItem(4031057)){ + cm.gainItem(4031057, -1); + cm.getPlayer().setPartyQuestItemObtained("JBQ"); + } + cm.sendNextPrev("Here's the 2nd half of the test. This test will determine whether you are smart enough to take the next step towards greatness. There is a dark, snow-covered area called the Holy Ground at the snowfield in Ossyria, where even the monsters can't reach. On the center of the area lies a huge stone called the Holy Stone. You'll need to offer a special item as the sacrifice, then the Holy Stone will test your wisdom right there on the spot."); + } else if (status == 2) + cm.sendNextPrev("You'll need to answer each and every question given to you with honesty and conviction. If you correctly answer all the questions, then the Holy Stone will formally accept you and hand you #b#t4031058##k. Bring back the necklace, and I will help you to the next step forward. Good luck."); + } else if (cm.getPlayer().gotPartyQuestItem("JB3") && selection == 0){ + cm.sendNext("Go, talk with #b#p1012100##k and bring me #b#t4031057##k."); + cm.dispose(); + } else if (cm.getPlayer().gotPartyQuestItem("JBQ") && selection == 0){ + cm.sendNext("Go, talk with #b#p2030006##k and bring me #b#t4031058##k."); + cm.dispose(); + } else { + if (sel == undefined) + sel = selection; + if (sel == 0){ + if (cm.getPlayer().getLevel() >= 70 && cm.getJobId() % 10 == 0) { + if (status == 0) + cm.sendYesNo("Welcome. I'm #b#p2020010##k, the chief of all archers, ready to share my bow knowledge and hard knock life to those willing to listen. You seem ready to make the leap forward, the one ready to take on the challenges of the 3rd job advancement. Too many archers have come and gone, unable to meet the standards of achieving the 3rd job advancement. What about you? Are you ready to be tested and make the 3th job advancement?"); + else if (status == 1){ + cm.getPlayer().setPartyQuestItemObtained("JB3"); + cm.sendNext("Good. You will be tested on two important aspects of the archer: strength and wisdom. I'll now explain to you the physical half of the test. Remember #b#p1012100##k from Henesys? Go see him, and he'll give you the details on the first half of the test. Please complete the mission, and get #b#t4031057##k from #p1012100#."); + } else if (status == 2) + cm.sendNextPrev("The mental half of the test can only start after you pass the physical part of the test. #b#t4031057##k will be the proof that you have indeed passed the test. I'll let #b#p1012100##k in advance that you're making your way there, so get ready. It won't be easy, but I have the utmost faith in you. Good luck."); + } + } else { + if (cm.getPlayer().getLevel() >= 50){ + cm.sendNext("Ok, go."); + cm.getPlayer().setPartyQuestItemObtained("z"); + }else + cm.sendNext("You're weak."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020011.js b/scripts/npc/world0/2020011.js new file mode 100644 index 0000000000..46036b2e57 --- /dev/null +++ b/scripts/npc/world0/2020011.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var job; +var sel; +actionx = {"Mental" : false, "Physical" : false}; + +function start() { + if (!(cm.getPlayer().getLevel() >= 70 && parseInt(cm.getJobId() / 100) == 4)){ + cm.sendNext("Hi there."); + cm.dispose(); + return; + } + if (cm.haveItem(4031058)) + actionx["Mental"] = true; + else if (cm.haveItem(4031057)) + actionx["Physical"] = true; + cm.sendSimple("Anything you want from me?#b" + (cm.getJobId() % 10 == 0 ? "\r\n#L0#I want to make the 3th job advancement." : "") + "\r\n#L1#Please allow me to do the Zakum Dungeon Quest."); +} + +function action(mode, type, selection){ + status++; + if (mode == 0 && type == 0) { + status -= 2; + } else if(mode != 1 || (status > 2 && !actionx["Mental"]) || status > 3){ + if (mode == 0 && type == 1) + cm.sendNext("Make up your mind."); + cm.dispose(); + return; + } + if (actionx["Mental"]){ + if (status == 0) + cm.sendNext("Great job completing the mental part of the test. You have wisely answered all the questions correctly. I must say, I am quite impressed with the level of wisdom you have displayed there. Please hand me the necklace first, before we takeon the next step."); + else if (status == 1) + cm.sendYesNo("Okay! Now, you'll be transformed into a much more powerful thieve through me. Before doing that, though, please make sure your SP has been thoroughly used, You'll need to use up at least all of SP's gained until level 70 to make the 3rd job advancement. Oh, and since you have already chosen your path of the occupation by the 2nd job adv., you won't have to choose again for the 3rd job adv. Do you want to do it right now?"); + else if (status == 2) { + if (cm.getPlayer().getRemainingSp() > 0) + if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { + cm.sendNext("Please, use all your SP before contining."); + cm.dispose(); + return; + } + if (cm.getJobId() % 10 == 0) { + cm.gainItem(4031058, -1); + cm.changeJobById(cm.getJobId() + 1); + cm.getPlayer().removePartyQuestItem("JBQ"); + } + + if(cm.getJobId() / 10 == 41) cm.sendNext("You have officially been anointed as a #bHermit#k from here on out. The skill book introduces a slew of new attacking skills for Hermits using shadows as a way of duplication and replacement, including such skills as #bShadow Meso#k (replacing MP with mesos and attack monsters with the damage based on the amount of mesos thrown) and #bCopy cat#k (creating a shadow that mimics every move, enabling a Hermit to attack a monster as if two Hermits are there). Use those skills to take on the monsters that may have been difficult to conquer before."); + else cm.sendNext("You have officially been anointed as a #bChief Bandit#k from here on out. One of the new additions to the skill book is a skill called #bBand of Thieves#k, in which you can summon fellow Bandits to attack multiple monsters at once. Chief Bandits can also utilize mesos in numerous ways, from attacking monsters (#bMeso Explosion#k, which explodes the mesos on the ground), to defending yourself (#bMeso Guard#k, which decreases the weapon damage)."); + + } else if (status == 3) { + cm.sendNextPrev("I've also given you some SP and AP; this should get you started. You have now become a powerful, powerful thief, indeed. Remember, though, that the real world will be awaiting your arrival with even tougher obstavles to overcome. Once you feel like you cannot train yourself to reach a higher place, then, and only then, come see me. I'll be here waiting."); + } + }else if (actionx["Physical"]){ + if (status == 0) + cm.sendNext("Great job completing the physical part of the test. I knew you could do it. Now that you have passed the first half of the test, here's the second half. Please give me the necklace fist"); + else if (status == 1){ + if (cm.haveItem(4031057)){ + cm.gainItem(4031057, -1); + cm.getPlayer().setPartyQuestItemObtained("JBQ"); + } + cm.sendNextPrev("Here's the 2nd half of the test. This test will determine whether you are smart enough to take the next step towards greatness. There is a dark, snow-covered area called the Holy Ground at the snowfield in Ossyria, where even the monsters can't reach. On the center of the area lies a huge stone called the Holy Stone. You'll need to offer a special item as the sacrifice, then the Holy Stone will test your wisdom right there on the spot."); + } else if (status == 2) + cm.sendNextPrev("You'll need to answer each and every question given to you with honesty and conviction. If you correctly answer all the questions, then the Holy Stone will formally accept you and hand you #b#t4031058##k. Bring back the necklace, and I will help you to the next step forward. Good luck."); + } else if (cm.getPlayer().gotPartyQuestItem("JB3") && selection == 0){ + cm.sendNext("Go, talk with #b#p1052001##k and bring me #b#t4031057##k."); + cm.dispose(); + } else if (cm.getPlayer().gotPartyQuestItem("JBQ") && selection == 0){ + cm.sendNext("Go, talk with #b#p2030006##k and bring me #b#t4031058##k."); + cm.dispose(); + } else { + if (sel == undefined) + sel = selection; + if (sel == 0){ + if (cm.getPlayer().getLevel() >= 70 && cm.getJobId() % 10 == 0){ + if (status == 0) + cm.sendYesNo("Welcome. I'm #b#p2020011##k, the chief of all thieves, ready to share my street knowledge and hard knock life to those willing to listen. You seem ready to make the leap forward, the one ready to take on the challenges of the 3rd job advancement. Too many thieves have come and gone, unable to meet the standards of achieving the 3rd job advancement. What about you? Are you ready to be tested and make the 3th job advancemente?"); + else if (status == 1){ + cm.getPlayer().setPartyQuestItemObtained("JB3"); + cm.sendNext("Good. You will be tested on two important aspects of the thief: strength and wisdom. I'll now explain to you the physical half of the test. Remember #b#p1052001##k from Kerning City? Go see him, and he'll give you the details on the first half of the test. Please complete the mission, and get #b#t4031057##k from #p1052001#."); + } else if (status == 2) + cm.sendNextPrev("The mental half of the test can only start after you pass the physical part of the test. #b#t4031057##k will be the proof that you have indeed passed the test. I'll let #b#p1052001##k in advance that you're making your way there, so get ready. It won't be easy, but I have the utmost faith in you. Good luck."); + } + } else { + if (cm.getPlayer().getLevel() >= 50){ + cm.sendNext("Ok, go."); + cm.getPlayer().setPartyQuestItemObtained("z"); + }else + cm.sendNext("You're weak."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2020013.js b/scripts/npc/world0/2020013.js new file mode 100644 index 0000000000..5d21498fe7 --- /dev/null +++ b/scripts/npc/world0/2020013.js @@ -0,0 +1,113 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var job; +var sel; +actionx = {"Mental" : false, "Physical" : false}; + +function start() { + if (!(cm.getPlayer().getLevel() >= 70 && parseInt(cm.getJobId() / 100) == 5)){ + cm.sendNext("Hi there."); + cm.dispose(); + return; + } + if (cm.haveItem(4031058)) + actionx["Mental"] = true; + else if (cm.haveItem(4031057)) + actionx["Physical"] = true; + cm.sendSimple("Can I help you?#b" + (cm.getJobId() % 10 == 0 ? "\r\n#L0#I want to make the 3th job advancement." : "") + "\r\n#L1#Please allow me to do the Zakum Dungeon Quest."); +} + +function action(mode, type, selection){ + status++; + if (mode == 0 && type == 0) { + status -= 2; + } else if(mode != 1 || (status > 2 && !actionx["Mental"]) || status > 3){ + if (mode == 0 && type == 1) + cm.sendNext("Make up your mind."); + cm.dispose(); + return; + } + if (actionx["Mental"]){ + if (status == 0) + cm.sendNext("Great job completing the mental part of the test. You have wisely answered all the questions correctly. I must say, I am quite impressed with the level of wisdom you have displayed there. Please hand me the necklace first, before we take on the next step."); + else if (status == 1) + cm.sendYesNo("Okay! Now, you'll be transformed into a much more powerful pirate through me. Before doing that, though, please make sure your SP has been thoroughly used, You'll need to use up at least all of SP's gained until level 70 to make the 3rd job advancement. Oh, and since you have already chosen your path of the occupation by the 2nd job adv., you won't have to choose again for the 3rd job adv. Do you want to do it right now?"); + else if (status == 2) { + if (cm.getPlayer().getRemainingSp() > 0) + if (cm.getPlayer().getRemainingSp() > (cm.getLevel() - 70) * 3) { + cm.sendNext("Please, use all your SP before contining."); + cm.dispose(); + return; + } + if (cm.getJobId() % 10 == 0) { + cm.gainItem(4031058, -1); + cm.changeJobById(cm.getJobId() + 1); + cm.getPlayer().removePartyQuestItem("JBQ"); + } + + if(cm.getJobId() / 10 == 51) cm.sendNext("Great! You are now a #bMarauder#k. As a Marauder, you will learn some of the most sophisticated skills related to melee-based attacks. #bEnergy Charge#k is a skill that allows you to store your power and the damage you receive into a special form of energy. Once this ball of energy is charged, you may use #bEnergy Blast#k to apply maximum damage against your enemies, and also use #bEnergy Drain#k to steal your enemy's HP to recover your own. #bTransformation#k will allow you to transform into a superhuman being with devastating melee attacks, and while transformed, you can use #bShockwave#k to cause a mini-earthquake and inflict massive damage to your enemies."); + else cm.sendNext("Great! You have now become an #bOutlaw#k. As an Outlaw, you will become a true pistolero, a master of every known Gun attack, as well as a few other skills to help you vanquish evil. #bBurst Fire#k is a more powerful version of Double Shot, shooting more bullets and causing more damage at the same time. You also now have the ability to summon a loyal #bOctopus#k and the swooping #bGaviota#k as your trusty allies, while attacking your enemies using #bBullseye#k. You can also use element-based attacks using #bFlamethrower#k and #bIce Splitter#k."); + } else if (status == 3) { + cm.sendNextPrev("I've also given you some SP and AP, which will help you get started. You have now become a powerful, powerful pirate, indeed. Remember, though, that the real world will be awaiting your arrival with even tougher obstavles to overcome. Once you feel like you cannot train yourself to reach a higher place, then, and only then, come see me. I'll be here waiting."); + } + }else if (actionx["Physical"]){ + if (status == 0) + cm.sendNext("Great job completing the physical part of the test. I knew you could do it. Now that you have passed the first half of the test, here's the second half. Please give me the necklace fist"); + else if (status == 1){ + if (cm.haveItem(4031057)){ + cm.gainItem(4031057, -1); + cm.getPlayer().setPartyQuestItemObtained("JBQ"); + } + cm.sendNextPrev("Here's the 2nd half of the test. This test will determine whether you are smart enough to take the next step towards greatness. There is a dark, snow-covered area called the Holy Ground at the snowfield in Ossyria, where even the monsters can't reach. On the center of the area lies a huge stone called the Holy Stone. You'll need to offer a special item as the sacrifice, then the Holy Stone will test your wisdom right there on the spot."); + } else if (status == 2) + cm.sendNextPrev("You'll need to answer each and every question given to you with honesty and conviction. If you correctly answer all the questions, then the Holy Stone will formally accept you and hand you #b#t4031058##k. Bring back the necklace, and I will help you to the next step forward. Good luck."); + } else if (cm.getPlayer().gotPartyQuestItem("JB3") && selection == 0) { + cm.sendNext("Go, talk with #b#p1090000##k and bring me #b#t4031057##k."); + cm.dispose(); + } else if (cm.getPlayer().gotPartyQuestItem("JBQ") && selection == 0) { + cm.sendNext("Go, talk with #b#p2030006##k and bring me #b#t4031058##k."); + cm.dispose(); + } else { + if (sel == undefined) + sel = selection; + if (sel == 0){ + if (cm.getPlayer().getLevel() >= 70 && cm.getJobId() % 10 == 0){ + if (status == 0) + cm.sendYesNo("Welcome. I'm #b#p2020013##k, the chief of all pirates, in charge of bringing out the best in each and every pirate that needs my guidance. You seem like the kind of pirate that wants to make the leap forward, the one ready to take on the challenges of the 3th job advancement. But I've seen countless pirates eager to make the jump just like you, only to see them fail. What about you? Are you ready to be tested and make the 3th job advancement?"); + else if (status == 1){ + cm.getPlayer().setPartyQuestItemObtained("JB3"); + cm.sendNext("Good. You will be tested on two important aspects of the pirate: strength and wisdom. I'll now explain to you the physical half of the test. Remember #b#p1090000##k from Nautilus Harbor? Go see him, and he'll give you the details on the first half of the test. Please complete the mission, and get #b#t4031057##k from #p1090000#."); + } else if (status == 2) + cm.sendNextPrev("The mental half of the test can only start after you pass the physical part of the test. #b#t4031057##k will be the proof that you have indeed passed the test. I'll let #b#p1022000##k in advance that you're making your way there, so get ready. It won't be easy, but I have the utmost faith in you. Good luck."); + } + } else { + if (cm.getPlayer().getLevel() >= 50){ + cm.sendNext("Ok, go."); + cm.getPlayer().setPartyQuestItemObtained("z"); + }else + cm.sendNext("You're weak."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2023000.js b/scripts/npc/world0/2023000.js new file mode 100644 index 0000000000..eb43212a98 --- /dev/null +++ b/scripts/npc/world0/2023000.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var toMap = new Array(211040200, 220050300, 220000000,240030000); +var inMap = new Array(211000000, 220000000, 221000000, 240000000); +var cost = new Array(10000, 25000, 25000,55000); +var location; +var status = 0; + +function start() { + + for (var i = 0; i < toMap.length; i ++) { + if (inMap[i] == cm.getPlayer().getMap().getId()) { + location = i; + break; + } + } + cm.sendNext("Hello there! This taxi will take you to dangerous places in Ossyria faster than an arrow! We go from #m" + inMap[location] + "# to #b#m"+toMap[location]+"##k on this Ossyria Continent! It'll cost you #b"+ cost[location] +" meso#k. I know it's a bit expensive, but it's well worth passing all the dangerous areas!"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else if (mode == 0) + cm.sendNext("Hmm, please think this over. It's not cheapr, but you will NOT be disappointed with our premier service!"); + else + status++; + if (status == 1) + cm.sendYesNo("Would you like to pay meso#k to travel to the #b#m"+toMap[location]+"##k?"); + else if (status == 2) { + if (cm.getMeso() < cost[location]) { + cm.sendNext("You don't seem to have enough mesos. I am terribly sorry, but I cannot help you unless you pay up. Bring in the mesos by hunting more and come back when you have enough."); + } else { + cm.warp(toMap[location]); + cm.gainMeso(-cost[location]); + } + cm.dispose(); + } +} diff --git a/scripts/npc/world0/2030000.js b/scripts/npc/world0/2030000.js new file mode 100644 index 0000000000..63259681c1 --- /dev/null +++ b/scripts/npc/world0/2030000.js @@ -0,0 +1,62 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Jeff - El Nath : El Nath : Ice Valley II (211040200) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; + +function start() { + cm.sendNext("Hey, you look like you want to go farther and deeper past this place. Over there, though, you'll find yourself surrounded by aggressive, dangerous monsters, so even if you feel that you're ready to go, please be careful. Long ago, a few brave men from our town went in wanting to eliminate anyone threatening the town, but never came back out..."); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (status == 1 && mode == 0 && cm.getLevel() > 49) { + cm.sendNext("Even if your level's high it's hard to actually go in there, but if you ever change your mind, please find me. After all, my job is to protect this place."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (cm.getLevel() > 49) + cm.sendYesNo("If you are thinking of going in, I suggest you change your mind. But if you really want to go in... I'm only letting in the ones that are strong enough to stay alive in there. I do not wish to see anyone else die. Let's see... Hmmm...! You look pretty strong. All right, do you want to go in?"); + else + cm.sendPrev("If you are thinking of going in, I suggest you change your mind. But if you really want to go in... I'm only letting in the ones that are strong enough to stay alive in there. I do not wish to see anyone else die. Let's see... Hmmm... You haven't reached Level 50 yet. I can't let you in, then, so forget it."); + } else if (status == 2) { + if (cm.getLevel() >= 50) + cm.warp(211040300, 5); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2030006.js b/scripts/npc/world0/2030006.js new file mode 100644 index 0000000000..088c9f93cf --- /dev/null +++ b/scripts/npc/world0/2030006.js @@ -0,0 +1,62 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +status = -1; +//Need more questions. +quest = ["Which of these NPC's will you NOT see at Ellinia of Victoria Island#b\r\n#L0#Shane\r\n#L1#Francois\r\n#L2#Grendel the Really Old\r\n#L3#Arwen the Fairy\r\n#L4#Roel", "Which of these monsters will you NOT be facing at Ossyria...?#b\r\n#L0#White Fang\r\n#L1#Croco\r\n#L2#Yeti\r\n#L3#Lycanthrope\r\n#L4#Luster Pixie", "Which of these monsters have the highest level...?#b\r\n#L0#Octopus\r\n#L1#Ribbon Pig\r\n#L2#Green Mushroom\r\n#L3#Axe Stump\r\n#L4#Bubbling", "In MapleStory, which of these pairings of potion/results doesn't match...?#b\r\n#L0#Holy Water - Recover from the state of being cursed or sealed up.\r\n#L1#Sunrise Dew - Recover MP 3000\r\n#L2#Hamburger - Recover HP 400\r\n#L3#Salad - Recover MP 200\r\n#L4#Blue Potion - Recover MP 100", "Which of these NPC's have NOTHING to do with pets...?#b\r\n#L0#Cloy\r\n#L1#Mar the Fairy\r\n#L2#Trainer Frod\r\n#L3#Vicious\r\n#L4#Doofus"]; +ans = [4, 1, 3, 1, 3]; +rand = parseInt(Math.random() * quest.length); + +function start() { + if (cm.getPlayer().gotPartyQuestItem("JBQ") && !cm.haveItem(4031058)) + if (cm.haveItem(4005004)) { + cm.sendNext("Alright... I'll be testing out your wisdom here. Answer all the questions correctly, and you will pass the test BUT, if you even lie to me once, then you'll have to start over again ok, here we go."); + return; + } else + cm.sendNext("Bring me a #b#t4005004##k to proceed with the questions."); + cm.dispose(); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + cm.dispose(); + return; + } + if (status == 0) + cm.gainItem(4005004, -1); + if (status > 0) + if (selection != ans[rand]) { + cm.sendNext("You have failed the question."); + cm.dispose(); + return; + } + while (quest[rand].equals("") && status <= 4) + rand = parseInt(Math.random() * quest.length); + if (status <= 4) { + cm.sendSimple("Here's the " + (status + 1) + (status == 0 ? "st" : status == 1 ? "nd" : status == 2 ? "rd" : "th") + " question. " + quest[rand]); + quest[rand] = ""; + } else { + cm.sendNext("Alright. All your asnwers have been proven as the truth. Your wisdom has been proven.\r\nTake this necklace and go back."); + cm.gainItem(4031058, 1); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2030008.js b/scripts/npc/world0/2030008.js new file mode 100644 index 0000000000..5d8cff520d --- /dev/null +++ b/scripts/npc/world0/2030008.js @@ -0,0 +1,187 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Adobis + * + * El Nath: The Door to Zakum (211042300) + * + * Zakum Quest NPC + + * Custom Quest 100200 = whether you can do Zakum + * Custom Quest 100201 = Collecting Gold Teeth <- indicates it's been started + * Custom Quest 100203 = Collecting Gold Teeth <- indicates it's finished + * 4031061 = Piece of Fire Ore - stage 1 reward + * 4031062 = Breath of Fire - stage 2 reward + * 4001017 = Eye of Fire - stage 3 reward + * 4000082 = Zombie's Gold Tooth (stage 3 req) +*/ + +var status; +var mapId = 211042300; +var stage; +var teethmode; +var minLevel = 50; + +function start() { + if (cm.getPlayer().getLevel() >= minLevel) { + if (cm.isQuestCompleted(100200) && !cm.isQuestStarted(100200)) { + cm.startQuest(100200); + cm.sendOk("You want to be permitted to do the Zakum Dungeon Quest? Well, I, #bAdobis#k... judge you to be suitable. You should be safe roaming around the dungeon. Just be careful..."); + cm.dispose(); + return; + } + else if (cm.isQuestStarted(100201)) { + teethmode = 1; + cm.sendNext("Have you got the items I asked for? This ain't no charity."); + } + else + cm.sendSimple("Beware, for the power of olde has not been forgotten... #b\r\n#L0#Enter the Unknown Dead Mine (Stage 1)#l\r\n#L1#Face the Breath of Lava (Stage 2)#l\r\n#L2#Forging the Eyes of Fire (Stage 3)#l"); + if (cm.isQuestCompleted(100201)) + teethmode = 2; + } + else { + cm.sendOk("Please come back to me when you've become stronger. I've seen a few adventurers in my day, and you're far too weak to complete my tasks."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (teethmode == 1) { + if (cm.haveItem(4031061,1) && cm.haveItem(4031062,1) && cm.haveItem(4000082,30)) { + cm.gainItem(4031061,-1); + cm.gainItem(4031062,-1); + cm.gainItem(4000082,-30); + cm.gainItem(4001017,5); + cm.sendNext("Thank you for the teeth! Next time you see me, I'll be blinging harder than #rJaws#k! Goodbye and good luck!"); + cm.completeQuest(100201); + cm.completeQuest(100200); + cm.dispose(); + } + else { + cm.sendNext("You shtill didn't get me my teef! Howsh a man shupposhed to conshentrate wifout teef?"); + cm.dispose(); + } + return; + } + if (selection == 0) { //ZPQ + if (cm.getParty() == null) { //no party + cm.sendNext("Please talk to me again when you have formed a party."); + cm.dispose(); + } + else if (!cm.isLeader()) { //not party leader + cm.sendNext("Please have the leader of your party speak with me."); + cm.dispose(); + } + else { + //TODO: add zakum variable to characters, check that instead; less hassle + var party = cm.getParty().getMembers(); + mapId = cm.getPlayer().getMapId(); + var next = true; + for (var i = 0; i < party.size(); i++) + if ((party.get(i).getLevel() < 50) || (party.get(i).getMapid() != mapId)) + next = false; + if (next) { + //all requirements met, make an instance and start it up + //cm.startPQ("ZakumPQ"); + var em = cm.getEventManager("ZakumPQ"); + if (em == null) { + cm.sendOk("This trial is currently under construction."); + } else { + em.startInstance(cm.getParty(), cm.getPlayer().getMap()); + party = cm.getPlayer().getEventInstance().getPlayers(); + cm.removeFromParty(4001015, party); + cm.removeFromParty(4001018, party); + cm.removeFromParty(4001016, party); + } + cm.dispose(); + } + else { + cm.sendNext("Please make sure all of your members are qualified to begin my trials..."); + cm.dispose(); + } + } + } + else if (selection == 1) { //Zakum Jump Quest + stage = 1; + if (cm.haveItem(4031061) && !cm.haveItem(4031062)) + cm.sendYesNo("Would you like to attempt the #bBreath of Lava#k? If you fail, there is a very real chance you will die."); + else { + if (cm.haveItem(4031062)) + cm.sendNext("You've already got the #bBreath of Lava#k, you don't need to do this stage."); + else + cm.sendNext("Please complete the earlier trials first."); + cm.dispose(); + } + } + else if (selection == 2) { //Golden Tooth Collection + stage = 2; + if (teethmode == 2 && cm.haveItem(4031061) && cm.haveItem(4031062)) + cm.sendYesNo("If you want more #bEyes of Fire#k, you need to bring me the same #b30 Zombie's Lost Gold Tooth#k. Turns out gold dentures don't last long, and I need a new one.\r\nDo you have those teeth for me?"); + else if (cm.haveItem(4031061) && cm.haveItem(4031062)) + cm.sendYesNo("Okay, you've completed the earlier trials. Now, with a little hard work I can get you the #bseeds of Zakum#k necessary to enter combat. But first, my teeths are not as good as they used to be. You ever seen a dentist in Maple Story? Well, I heard the Miner Zombies have gold teeth. I'd like you to collect #b30 Zombie's Lost Gold Tooth#k so I can build myself some dentures. Then I'll be able to get you the items you desire.\r\nRequired:\r\n#i4000082##b x 30"); + else { + cm.sendNext("Please complete the earlier trials before attempting this one."); + cm.dispose(); + } + } + } + else if (status == 2) { + if (stage == 1) { + cm.warp(280020000); // Breath of Lava I + cm.dispose(); + } + if (stage == 2) { + if (teethmode == 2) { + if (cm.haveItem(4031061,1) && cm.haveItem(4031062,1) && cm.haveItem(4000082,30)) { // take away items, give eyes of fire, complete quest + cm.gainItem(4031061,-1); + cm.gainItem(4031062,-1); + cm.gainItem(4000082,-30); + cm.gainItem(4001017,5); + cm.sendNext("Thank you for the teeth! Next time you see me, I'll be blinging harder than #rJaws#k! Goodbye and good luck!"); + cm.completeQuest(100201); + cm.completeQuest(100200); + cm.dispose(); + } + else { + cm.sendNext("You don't have any teeth yet! Don't try to pull a fast one on me."); + cm.dispose(); + } + } + else { + cm.startQuest(100201); + cm.dispose(); + } + } + } + } +} diff --git a/scripts/npc/world0/2030010.js b/scripts/npc/world0/2030010.js new file mode 100644 index 0000000000..f154b225b9 --- /dev/null +++ b/scripts/npc/world0/2030010.js @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Amon + * + * @Author Stereo + * Adobis's Mission I : Breath of Lava (280020000) + * Adobis's Mission I : Breath of Lava (280020001) + * Last Mission : Zakum's Altar (280030000) + * Zakum Quest NPC + * Helps players leave the map + */ + importPackage(Packages.server.expeditions); + +function start() { + cm.sendYesNo("If you leave now, you'll have to start over. Are you sure you want to leave?"); +} + +function action(mode, type, selection) { + var zakum = MapleExpeditionType.ZAKUM; + var expedition = cm.getExpedition(zakum); + if (mode < 1) + cm.dispose(); + else { + if (cm.getPlayer().getMap().getCharacters().size() < 2){ + cm.getPlayer().getMap().killAllMonsters(); + cm.getPlayer().getMap().resetReactors(); + if (expedition != null){ + cm.endExpedition(expedition); + } + } + if (cm.getPlayer().getEventInstance() != null) + cm.getPlayer().getEventInstance().removePlayer(cm.getPlayer()); + else + cm.warp(211042300); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2030011.js b/scripts/npc/world0/2030011.js new file mode 100644 index 0000000000..12bd095740 --- /dev/null +++ b/scripts/npc/world0/2030011.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Ali + * Adobis's Mission I: The Room of Tragedy (280090000) + * Zakum Quest NPC Exit +*/ + +function start() { + cm.warp(211042300); + cm.removeAll(4001015); + cm.removeAll(4001016); + cm.removeAll(4001018); + cm.sendSimple("See you next time."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2030013.js b/scripts/npc/world0/2030013.js new file mode 100644 index 0000000000..ef1c4b0ca9 --- /dev/null +++ b/scripts/npc/world0/2030013.js @@ -0,0 +1,153 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Adobis + * + *@author SharpAceX (Alan) + */ +importPackage(Packages.server.expeditions); +importPackage(Packages.tools); +importPackage(Packages.scripting.event); + +var status = 0; +var expedition; +var player; +var em; +var zakum = MapleExpeditionType.ZAKUM; +var list = "What would you like to do?#b\r\n\r\n#L1#View current Expedition members#l\r\n#L2#Start the fight!#l\r\n#L3#Stop the expedition.#l"; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + + player = cm.getPlayer(); + expedition = cm.getExpedition(zakum); + em = cm.getEventManager("ZakumBattle"); + + if (mode < 1) { + cm.dispose(); + return; + } + if (status == 0) { + //cm.removeExpedition(expedition); + if (player.getClient().getChannel() != 1) { //Only channel 1 + cm.sendOk("Sorry, Zakum may only be challenged on #bChannel 1#k."); + cm.dispose(); + } else if (player.getLevel() < zakum.getMinLevel() && player.getLevel() > zakum.getMaxLevel()) { //Don't fit requirement + cm.sendOk("You do not meet the criteria to take on Zakum!"); + cm.dispose(); + } else if (expedition == null) { //Start an expedition + cm.sendSimple("Would you like to assemble a team to take on the mighty #rZakum#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); + status = 1; + } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped + cm.sendSimple(list); + status = 2; + } else if (expedition.isRegistering()) { //If the expedition is registering + if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient + cm.sendOk("You have already registered for the expedition. Please wait for " + expedition.getLeader().getName() + " to begin the expedition."); + cm.dispose(); + } else { //If you aren't in it, you're going to get added + cm.sendOk(expedition.addMember(cm.getPlayer())); + cm.dispose(); + } + } else if (expedition.isInProgress()) { //Only if the expedition is in progress + if (expedition.contains(player)) { //If you're registered, warp you in + em.getInstance("ZakumBattle_" + player.getClient().getChannel()).registerPlayer(player); + cm.dispose(); + } else { //If you're not in by now, tough luck + cm.sendOk("Another expedition has taken the initiative to fight Zakum, lets pray for those brave souls."); + cm.dispose(); + } + } + } else if (status == 1) { + if (selection == 1) { + cm.createExpedition(zakum); + cm.sendOk("The #rZakum Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + cm.dispose(); + return; + } else if (selection == 2) { + cm.sendOk("Sure, not everyone's up to challenging the might of Zakum."); + cm.dispose(); + return; + } + } else if (status == 2) { + if (selection == 1) { + if (expedition == null) { + cm.sendOk("The expedition could not be loaded."); + cm.dispose(); + return; + } + var size = expedition.getMembers().size(); + if (size == 1) { + cm.sendOk("You are the only member of the expedition."); + cm.dispose(); + return; + } + var text = "The following members make up your expedition (Click on them to expel them):\r\n"; + text += "\r\n\t\t1." + expedition.getLeader().getName(); + for (var i = 1; i < size; i++) { + text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedition.getMembers().get(i).getName() + "#l\n"; + } + cm.sendSimple(text); + status = 6; + } else if (selection == 2) { + cm.sendOk("The expedition will begin and you will now be escorted to the #bEntrance to Zakum Altar#k."); + status = 4; + } else if (selection == 3) { + player.getMap().broadcastMessage(MaplePacketCreator.removeClock()); + player.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, expedition.getLeader().getName() + " has ended the expedition.")); + cm.endExpedition(expedition); + cm.sendOk("The expedition has now ended. Sometimes the best strategy is to run away."); + cm.dispose(); + return; + } + } else if (status == 4) { + var min = 1; //zakum.getMinSize(); + var size = expedition.getMembers().size(); + if (size < min) { + cm.sendOk("You need at least " + min + " players registered in your expedition."); + cm.dispose(); + return; + } + if (em == null) { + cm.sendOk("The event could not be found, please report this on the forum."); + cm.dispose(); + return; + } + cm.sendOk("Good luck! Zakum is a worthy foe!"); + em.setProperty("leader", player.getName()); + em.setProperty("channel", player.getClient().getChannel()); + em.startInstance(expedition); + cm.dispose(); + return; + } else if (status == 6) { + if (selection > 0) { + var banned = expedition.getMembers().get(selection); + expedition.ban(banned); + cm.sendOk("You have banned " + banned.getName() + " from the expedition."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2030013_old.js b/scripts/npc/world0/2030013_old.js new file mode 100644 index 0000000000..e4333baa77 --- /dev/null +++ b/scripts/npc/world0/2030013_old.js @@ -0,0 +1,109 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Authors Stereo, xQuasar, <> + * + * Adobis - El Nath: Entrance to Zakum Altar (211042400) + * + * Start of Zakum Bossfight + */ + +var status; +var minLevel = 50; +var state; +var maxPlayers = 30; + + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if ((cm.getPlayer().getLevel() < minLevel)) { + cm.warp(211042300); + cm.sendOk("Please come back when you're prepared for the battle. You should not be here yet."); + cm.dispose(); + return; + } + cm.sendSimple("The battle to defeat Zakum begins here. What would you like to do? #b\r\n#L0#Start a new Zakum Battle#l\r\n#L1#Join your group's Zakum Battle#l"); + } + else if (status == 1) { + state = selection; + if (selection == 0) + cm.sendGetText("In order to start the Zakum Battle, you need to choose a name for your instance. This is the password that lets your members join, so tell it to everybody who wants to participate in the battle."); + + else if (selection == 1) + cm.sendGetText("In order to join a Zakum Battle, you need to enter the password. If you don't know what it is, please ask the person leading the battle."); + + } + else if (status == 2) { + var em = cm.getEventManager("ZakumBattle"); + var passwd = cm.getText(); + if (em == null) + cm.sendOk("This trial is currently under construction."); + else { + if (state == 0) { // Leader + if (getEimForString(em,passwd) != null) + cm.sendOk("You may not use that password."); + else { // start Zakum Battle + var eim = em.newInstance("Zakum" + passwd); + em.startInstance(eim,cm.getPlayer().getName()); + eim.registerPlayer(cm.getPlayer()); + } + } + if (state == 1) { // Member + var eim = getEimForString(em,passwd); + if (eim == null) + cm.sendOk("There is currently no battle registered under that name."); + else { + if (eim.getProperty("canEnter").toLowerCase() == "true") { + if (eim.getPlayers().size() < maxPlayers) + eim.registerPlayer(cm.getPlayer()); + else + cm.sendOk("I'm sorry, but that battle is currently full. Please wait to join another one."); + } + else + cm.sendOk("I'm sorry, but that battle is currently in progress. Please return later."); + } + } + } + cm.dispose(); + } + } +} +function getEimForString(em, name) { + var stringId = "Zakum" + name; + return em.getInstance(stringId); +} \ No newline at end of file diff --git a/scripts/npc/world0/2032001.js b/scripts/npc/world0/2032001.js new file mode 100644 index 0000000000..3201c20bd8 --- /dev/null +++ b/scripts/npc/world0/2032001.js @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* Spiruna +Orbis : Old Man's House (200050001) + +Refining NPC: + * Dark Crystal - Half Price compared to Vogen, but must complete quest + */ + +var status = 0; + +function start() { + if (cm.isQuestCompleted(3034)) + cm.sendYesNo("You've been so much of a help to me... If you have any Dark Crystal Ore, I can refine it for you for only #b500000 meso#k each."); + else { + cm.sendOk("Go away, I'm trying to meditate."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + return; + } + status++; + if (status == 1) + cm.sendGetNumber("Okay, so how many do you want me to make?", 1, 1, 100); + else if (status == 2) { + var complete = true; + if (cm.getMeso() < 500000 * selection){ + cm.sendOk("I'm sorry, but I am NOT doing this for free."); + cm.dispose(); + return; + } else if (!cm.haveItem(4004004, 10 * selection)) + complete = false; + if (!complete) + cm.sendOk("I need that ore to refine the Crystal. No exceptions.."); + else { + cm.gainItem(4004004, -10 * selection); + cm.gainMeso(-500000 * selection); + cm.gainItem(4005004, selection); + cm.sendOk("Use it wisely."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2032002.js b/scripts/npc/world0/2032002.js new file mode 100644 index 0000000000..f0a0c5be5c --- /dev/null +++ b/scripts/npc/world0/2032002.js @@ -0,0 +1,97 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Aura + * + * Adobis's Mission I: Unknown Dead Mine (280010000) + * + * Zakum PQ NPC (the one and only) +*/ + +var status; +var selectedType; +var scrolls; + +function start() { + cm.sendSimple("...#b\r\n#L0#What am I supposed to do here?#l\r\n#L1#I brought items!#l\r\n#L2#I want to get out!#l"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + selectedType = selection; + if (selection == 0) { + cm.sendNext("To reveal the power of Zakum, you'll have to recreate its core. Hidden somewhere in this dungeon is a \"Fire Ore\" which is one of the necessary materials for that core. Find it, and bring it to me.\r\n\r\nOh, and could you do me a favour? There's also a number of Paper Documents lying under rocks around here. If you can get 30 of them, I can reward you for your efforts.") + cm.dispose(); + } + else if (selection == 1) { + if (!cm.haveItem(4001018)) { //documents + cm.sendNext("Please bring the Fire Ore with you.") + cm.dispose(); + } + else { + if (!cm.haveItem(4001015, 30)) { //documents + cm.sendYesNo("So, you brought the fire ore with you? In that case, I can give you and your party a piece of it that should be more than enough to make the core of Zakum. Make sure your whole party has room in their inventory before proceeding."); + scrolls = false; + } else { + cm.sendYesNo("So, you brought the fire ore and the documents with you? In that case, I can give you and your party a piece of it that should be more than enough to make the core of Zakum. As well, since you brought the documents with you, I can also give you a special item which will bring you to the mine's entrance at any time. Make sure your whole party has room in their inventory before proceeding."); + scrolls = true; + } + } + } else if (selection == 2) + cm.sendYesNo("Are you sure you want to exit? If you're the party leader, your party will also be removed from the mines.") + } + else if (status == 2) { + var eim = cm.getPlayer().getEventInstance(); + if (selectedType == 1) { + var party = eim.getPlayers(); + cm.gainItem(4001018, -1); + if (scrolls) + cm.gainItem(4001015, -30); + cm.givePartyItems(4031061, 1, party); + if (scrolls) { + cm.givePartyItems(2030007, 5, party); + cm.givePartyExp(20000, party); + } else + cm.givePartyExp(12000, party); + eim.finishPQ(); + cm.dispose(); + } + else if (selectedType == 2) { + if (cm.isLeader()) + eim.disbandParty(); + else + eim.leaveParty(cm.getPlayer()); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2032003.js b/scripts/npc/world0/2032003.js new file mode 100644 index 0000000000..e7539b4bff --- /dev/null +++ b/scripts/npc/world0/2032003.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Lira + * + * Adobis's Mission I : Breath of Lava (280020001) + * Zakum Quest NPC + * Custom Quest 100202 -> Done this stage once + */ + +var status; + +function start() { + cm.sendNext("Congratulations on getting this far! Well, I suppose I'd better give you your #bBreath of Fire#k. You've certainly earned it!"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) + cm.sendNextPrev("Well, time for you to head off."); + else if (status == 2) { + cm.gainItem(4031062,1); + cm.warp(211042300); + if (cm.isQuestCompleted(100202)) { + cm.startQuest(100202); + cm.completeQuest(100202); + cm.gainExp(10000); + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040000.js b/scripts/npc/world0/2040000.js new file mode 100644 index 0000000000..9d7f868d22 --- /dev/null +++ b/scripts/npc/world0/2040000.js @@ -0,0 +1,28 @@ +var cost = 6000; +var status = 0; + +function start() { + cm.sendYesNo("Hello, I'm in charge of selling tickets for the ship ride to Orbis Station of Ossyria. The ride to Orbis takes off every 10 minutes, beginning on the hour, and it'll cost you #b"+cost+" mesos#k. Are you sure you want to purchase #b#t4031045##k?"); +} + +function action(mode, type, selection) { + if(mode == -1) + cm.dispose(); + else { + if(mode == 1) + status++; + if(mode == 0) { + cm.sendNext("You must have some business to take care of here, right?"); + cm.dispose(); + return; + } + if(status == 1) { + if(cm.getMeso() >= cost && cm.canHold(4031045)) { + cm.gainItem(4031045,1); + cm.gainMeso(-cost); + } else + cm.sendOk("Are you sure you have #b"+cost+" mesos#k? If so, then I urge you to check your etc. inventory, and see if it's full or not."); + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/2040002.js b/scripts/npc/world0/2040002.js new file mode 100644 index 0000000000..8e5c570c7e --- /dev/null +++ b/scripts/npc/world0/2040002.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Olson the Toy Soldier + 2040002 + +map: 922000010 +quest: 3230 +escape: 2040028 +*/ +var status = 0; + +function start() { + if (cm.isQuestStarted(3230)) + cm.sendNext("The pendulum is hidden inside a dollhouse that looks different than the others."); + else { + cm.sendOk("Hello there."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) + cm.sendYesNo("Are you ready to enter the dollhouse map?"); + else if (status == 2) { + cm.warp(922000010,0); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040003.js b/scripts/npc/world0/2040003.js new file mode 100644 index 0000000000..aac55069eb --- /dev/null +++ b/scripts/npc/world0/2040003.js @@ -0,0 +1,45 @@ +var status = 0; +var entry; +function start() { + if(cm.getPlayer().getMapId() == 922000000) { + entry = 0; + cm.sendYesNo("Do you wish to quit this stage?"); + status++; + } + + else if(cm.isQuestStarted(3239)) { + entry = 1; + cm.sendYesNo("Do you want to enter #bToy Factory#k?"); + status++; + } + else { + cm.sendOk("Access to #bToy Factory#k is restricted to the public."); + } +} + +function action(mode, type, selection) { + if(status == 1) { + if(entry == 0) { + if(mode <= 0) { + cm.sendOk("Ok. Call me if you urge to exit, then."); + cm.dispose(); + return; + } + + cm.warp(922000009); + if(!(cm.isQuestStarted(3239) && cm.haveItem(4031092, 10))) cm.removeAll(4031092); + cm.dispose(); + } + + else { + if(mode <= 0) { + cm.dispose(); + return; + } + + cm.warp(922000000); + if(!(cm.isQuestStarted(3239) && cm.haveItem(4031092, 10))) cm.removeAll(4031092); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040016.js b/scripts/npc/world0/2040016.js new file mode 100644 index 0000000000..77b023d149 --- /dev/null +++ b/scripts/npc/world0/2040016.js @@ -0,0 +1,279 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Pi + Ludibrium Village (220000300) + + Refining NPC: + * Minerals + * Jewels + * Moon/Star Rocks + * Crystals (minus Dark) + * Processed Wood/Screws + * Arrows/Bronze Arrows/Steel Arrows +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Hm? Who might you be? Oh, you've heard about my forging skills? In that case, I'd be glad to process some of your ores... for a fee.#b" + var options = new Array("Refine a mineral ore","Refine a jewel ore","Refine a rare jewel","Refine a crystal ore","Create materials","Create Arrows"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + if (selectedType == 0){ //mineral refine + var selStr = "So, what kind of mineral ore would you like to refine?#b"; + var minerals = new Array ("Bronze","Steel","Mithril","Adamantium","Silver","Orihalcon","Gold"); + for (var i = 0; i < minerals.length; i++){ + selStr += "\r\n#L" + i + "# " + minerals[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 1){ //jewel refine + var selStr = "So, what kind of jewel ore would you like to refine?#b"; + var jewels = new Array ("Garnet","Amethyst","Aquamarine","Emerald","Opal","Sapphire","Topaz","Diamond","Black Crystal"); + for (var i = 0; i < jewels.length; i++){ + selStr += "\r\n#L" + i + "# " + jewels[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 2){ //rock refine + var selStr = "A rare jewel? Which one were you thinking of?#b"; + var items = new Array ("Moon Rock","Star Rock"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 3){ //crystal refine + var selStr = "Crystal ore? I love refining those!#b"; + var crystals = new Array ("Power Crystal","Wisdom Crystal","DEX Crystal","LUK Crystal"); + for (var i = 0; i < crystals.length; i++){ + selStr += "\r\n#L" + i + "# " + crystals[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 4){ //material refine + var selStr = "Materials? I know of a few materials that I can make for you...#b"; + var materials = new Array ("Make Processed Wood with Tree Branch","Make Processed Wood with Firewood","Make Screws (packs of 15)"); + for (var i = 0; i < materials.length; i++){ + selStr += "\r\n#L" + i + "# " + materials[i] + "#l"; + } + equip = false; + cm.sendSimple(selStr); + } + else if (selectedType == 5){ //arrow refine + var selStr = "Arrows? Not a problem at all.#b"; + var arrows = new Array ("Arrow for Bow","Arrow for Crossbow","Bronze Arrow for Bow","Bronze Arrow for Crossbow","Steel Arrow for Bow","Steel Arrow for Crossbow"); + for (var i = 0; i < arrows.length; i++){ + selStr += "\r\n#L" + i + "# " + arrows[i] + "#l"; + } + equip = true; + cm.sendSimple(selStr); + } + if (equip) + status++; + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 0){ //mineral refine + var itemSet = new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006); + var matSet = new Array(4010000,4010001,4010002,4010003,4010004,4010005,4010006); + var matQtySet = new Array(10,10,10,10,10,10,10); + var costSet = new Array(270,270,270,450,450,450,720); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //jewel refine + var itemSet = new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008); + var matSet = new Array(4020000,4020001,4020002,4020003,4020004,4020005,4020006,4020007,4020008); + var matQtySet = new Array(10,10,10,10,10,10,10,10,10); + var costSet = new Array (450,450,450,450,450,450,450,900,2700); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //rock refine + var itemSet = new Array(4011007,4021009); + var matSet = new Array(new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006), new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008)); + var matQtySet = new Array(new Array(1,1,1,1,1,1,1),new Array(1,1,1,1,1,1,1,1,1)); + var costSet = new Array(9000,13500); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //crystal refine + var itemSet = new Array (4005000,4005001,4005002,4005003); + var matSet = new Array(4004000,4004001,4004002,4004003); + var matQtySet = new Array (10,10,10,10); + var costSet = new Array (4500,4500,4500,4500); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 4){ //material refine + var itemSet = new Array (4003001,4003001,4003000); + var matSet = new Array(4000003,4000018,new Array (4011000,4011001)); + var matQtySet = new Array (10,5,new Array (1,1)); + var costSet = new Array (0,0,0); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + if (selectedType == 5){ //arrow refine + var itemSet = new Array(2060000,2061000,2060001,2061001,2060002,2061002); + var matSet = new Array(new Array (4003001,4003004),new Array (4003001,4003004),new Array (4011000,4003001,4003004),new Array (4011000,4003001,4003004), + new Array (4011001,4003001,4003005),new Array (4011001,4003001,4003005)); + var matQtySet = new Array (new Array (1,1),new Array (1,1),new Array (1,3,10),new Array (1,3,10),new Array (1,5,15),new Array (1,5,15)); + var costSet = new Array (0,0,0,0,0,0); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + + cm.sendGetNumber(prompt,1,1,100) + } + else if (status == 3 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 4 && mode == 1) { + var complete = true; + + if (cm.getMeso() < cost * qty) + { + cm.sendOk("I'm afraid you cannot afford my services.") + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] * qty == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + + if (cm.haveItem(mats[i],matQty[i]*qty))complete=false; + } + } + } + else { + if (!cm.haveItem(mats, matQty * qty))complete=false; + + } + } + + if (!complete) + cm.sendOk("Hold it, I can't finish that without all of the proper materials. Bring them first, then we'll talk."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + + if (cost > 0) + cm.gainMeso(-cost * qty); + + if (item >= 2060000 && item <= 2060002) //bow arrows + cm.gainItem(item, 1000 - (item - 2060000) * 100); + else if (item >= 2061000 && item <= 2061002) //xbow arrows + cm.gainItem(item, 1000 - (item - 2061000) * 100); + else if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("All done. If you need anything else, you know where to find me."); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040019.js b/scripts/npc/world0/2040019.js new file mode 100644 index 0000000000..70d52a97bb --- /dev/null +++ b/scripts/npc/world0/2040019.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Everton + Ludibrium Random Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Well, I'm bored, so I'll help out the doctor. For a #b#t5152006##k, I will change the way you look. But don't forget, it will be random!\r\n#L1#I would like to buy a #b#t5152006##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152006, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152006##k?"); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152006) == true){ + cm.gainItem(5152006, -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } + } +} diff --git a/scripts/npc/world0/2040020.js b/scripts/npc/world0/2040020.js new file mode 100644 index 0000000000..ec56be7320 --- /dev/null +++ b/scripts/npc/world0/2040020.js @@ -0,0 +1,290 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Sarah + Ludibrium : Tara and Sarah's House (220000303) + + Refining NPC: + * Gloves - All classes, 30-50, stimulator (4130000) available on upgrades + * Price is 90% of locations on same items +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var stimulator = false; +var stimID = 4130000; + +function start() { + cm.getPlayer().setCS(true); + + var selStr = "Hello, and welcome to the Ludibrium Glove Store. How can I help you today?#b" + var options = new Array("What's a stimulator?","Create a Warrior glove","Create a Bowman glove","Create a Magician glove","Create a Thief glove", + "Create a Warrior glove with a Stimulator","Create a Bowman glove with a Stimulator","Create a Magician glove with a Stimulator","Create a Thief glove with a Stimulator"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + cm.sendSimple(selStr); +} + +function action(mode, type, selection) { + if (mode > 0) + status++; + else { + cm.dispose(); + return; + } + if (status == 1) { + selectedType = selection; + if (selectedType > 4) + stimulator = true; + else + stimulator = false; + if (selectedType == 0) { //What's a stim? + cm.sendNext("A stimulator is a special potion that I can add into the process of creating certain items. It gives it stats as though it had dropped from a monster. However, it is possible to have no change, and it is also possible for the item to be below average. There's also a 10% chance of not getting any item when using a stimulator, so please choose wisely.") + cm.dispose(); + } else if (selectedType == 1){ //warrior glove + var selStr = "Warrior glove? Sure thing, which kind?#b"; + var items = new Array ("Bronze Missel#k - Warrior Lv. 30#b","Steel Briggon#k - Warrior Lv. 35#b","Iron Knuckle#k - Warrior Lv. 40#b","Steel Brist#k - Warrior Lv. 50#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 2){ //bowman glove + var selStr = "Bowman glove? Sure thing, which kind?#b"; + var items = new Array ("Brown Marker#k - Bowman Lv. 30#b","Bronze Scaler#k - Bowman Lv. 35#b","Aqua Brace#k - Bowman Lv. 40#b","Blue Willow#k - Bowman Lv. 50#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 3){ //magician glove + var selStr = "Magician glove? Sure thing, which kind?#b"; + var items = new Array ("Red Lutia#k - Magician Lv. 30#b","Red Noel#k - Magician Lv. 35#b","Red Arten#k - Magician Lv. 40#b","Red Pennance#k - Magician Lv. 50#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 4){ //thief glove + var selStr = "Thief glove? Sure thing, which kind?#b"; + var gloves = new Array ("Steel Sylvia#k - Thief Lv. 30#b","Steel Arbion#k - Thief Lv. 35#b","Red Cleave#k - Thief Lv. 40#b","Blue Moon Glove#k - Thief Lv. 50#b"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 5){ //warrior glove w/ Stim + var selStr = "Warrior glove with a stimulator? Sure thing, which kind?#b"; + var crystals = new Array ("Steel Missel#k - Warrior Lv. 30#b","Orihalcon Missel#k - Warrior Lv. 30#b","Yellow Briggon#k - Warrior Lv. 35#b","Dark Briggon#k - Warrior Lv. 35#b", + "Adamantium Knuckle#k - Warrior Lv. 40#b","Dark Knuckle#k - Warrior Lv. 40#b","Mithril Brist#k - Warrior Lv. 50#b","Gold Brist#k - Warrior Lv. 50#b"); + for (var i = 0; i < crystals.length; i++){ + selStr += "\r\n#L" + i + "# " + crystals[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 6){ //bowman glove w/ stim + var selStr = "Bowman glove with a stimulator? Sure thing, which kind?#b"; + var crystals = new Array ("Green Marker#k - Bowman Lv. 30#b","Black Marker#k - Bowman Lv. 30#b","Mithril Scaler#k - Bowman Lv. 35#b","Gold Scaler#k - Bowman Lv. 35#b","Gold Brace#k - Bowman Lv. 40#b","Dark Brace#k - Bowman Lv. 40#b","Red Willow#k - Bowman Lv. 50#b","Dark Willow#k - Bowman Lv. 50#b"); + for (var i = 0; i < crystals.length; i++){ + selStr += "\r\n#L" + i + "# " + crystals[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 7){ //magician glove w/ stim + var selStr = "Magician glove with a stimulator? Sure thing, which kind?#b"; + var items = new Array ("Blue Lutia#k - Magician Lv. 30#b","Black Lutia#k - Magician Lv. 30#b","Blue Noel#k - Magician Lv. 35#b","Dark Noel#k - Magician Lv. 35#b", + "Blue Arten#k - Magician Lv. 40#b","Dark Arten#k - Magician Lv. 40#b","Blue Pennance#k - Magician Lv. 50#b","Dark Pennance#k - Magician Lv. 50#b"); + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 8){ //thief glove w/ stim + var selStr = "Thief glove with a stimulator? Sure thing, which kind?#b"; + var gloves = new Array ("Silver Sylvia#k - Thief Lv. 30#b","Gold Sylvia#k - Thief Lv. 30#b","Orihalcon Arbion#k - Thief Lv. 35#b","Gold Arbion#k - Thief Lv. 35#b","Gold Cleave#k - Thief Lv. 40#b", + "Dark Cleave#k - Thief Lv. 40#b","Red Moon Glove#k - Thief Lv. 50#b","Brown Moon Glove#k - Thief Lv. 50#b"); + for (var i = 0; i < gloves.length; i++){ + selStr += "\r\n#L" + i + "# " + gloves[i] + "#l"; + } + cm.sendSimple(selStr); + } + } + else if (status == 2) { + selectedItem = selection; + if (selectedType == 1){ //warrior glove + var itemSet = new Array(1082007,1082008,1082023,1082009); + var matSet = new Array(new Array(4011000,4011001,4003000),new Array(4000021,4011001,4003000),new Array(4000021,4011001,4003000),new Array(4011001,4021007,4000030,4003000)); + var matQtySet = new Array(new Array(3,2,15),new Array(30,4,15),new Array(50,5,40),new Array(3,2,30,45)); + var costSet = new Array(18000,27000,36000,45000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 2){ //bowman glove + var itemSet = new Array(1082048,1082068,1082071,1082084); + var matSet = new Array(new Array(4000021,4011006,4021001),new Array(4011000,4011001,4000021,4003000),new Array(4011001,4021000,4021002,4000021,4003000),new Array(4011004,4011006,4021002,4000030,4003000)); + var matQtySet = new Array(new Array(50,2,1),new Array(1,3,60,15),new Array(3,1,3,80,25),new Array(3,1,2,40,35)); + var costSet = new Array(18000,27000,36000,45000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 3){ //magician glove + var itemSet = new Array(1082051,1082054,1082062,1082081); + var matSet = new Array(new Array(4000021,4021006,4021000),new Array(4000021,4011006,4011001,4021000),new Array(4000021,4021000,4021006,4003000),new Array(4021000,4011006,4000030,4003000)); + var matQtySet = new Array(new Array(60,1,2),new Array(70,1,3,2),new Array(80,3,3,30),new Array(3,2,35,40)); + var costSet = new Array(22500,27000,36000,45000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 4){ //thief glove + var itemSet = new Array(1082042,1082046,1082075,1082065); + var matSet = new Array(new Array(4011001,4000021,4003000),new Array(4011001,4011000,4000021,4003000),new Array(4021000,4000101,4000021,4003000),new Array(4021005,4021008,4000030,4003000)); + var matQtySet = new Array(new Array(2,50,10),new Array(3,1,60,15),new Array(3,100,80,30),new Array(3,1,40,30)); + var costSet = new Array(22500,27000,36000,45000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 5){ //warrior glove w/stim + var itemSet = new Array(1082005,1082006,1082035,1082036,1082024,1082025,1082010,1082011); + var matSet = new Array(new Array(1082007,4011001),new Array(1082007,4011005),new Array(1082008,4021006),new Array(1082008,4021008),new Array(1082023,4011003),new Array(1082023,4021008), + new Array(1082009,4011002),new Array(1082009,4011006)); + var matQtySet = new Array (new Array(1,1),new Array(1,2),new Array(1,3),new Array(1,1),new Array(1,4),new Array(1,2),new Array(1,5),new Array(1,4)); + var costSet = new Array (18000,22500,27000,36000,40500,45000,49500,54000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 6){ //bowman glove w/stim + var itemSet = new Array (1082049,1082050,1082069,1082070,1082072,1082073,1082085,1082083); + var matSet = new Array(new Array(1082048,4021003),new Array(1082048,4021008),new Array(1082068,4011002),new Array(1082068,4011006),new Array(1082071,4011006),new Array(1082071,4021008),new Array(1082084,4011000,4021000),new Array(1082084,4011006,4021008)); + var matQtySet = new Array (new Array(1,3),new Array(1,1),new Array(1,4),new Array(1,2),new Array(1,4),new Array(1,2),new Array(1,1,5),new Array(1,2,2)); + var costSet = new Array (13500,18000,19800,22500,27000,36000,49500,54000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 7){ //magician glove w/ stim + var itemSet = new Array(1082052,1082053,1082055,1082056,1082063,1082064,1082082,1082080); + var matSet = new Array(new Array(1082051,4021005),new Array(1082051,4021008),new Array(1082054,4021005),new Array(1082054,4021008),new Array(1082062,4021002),new Array(1082062,4021008), + new Array(1082081,4021002),new Array(1082081,4021008)); + var matQtySet = new Array(new Array(1,3),new Array(1,1),new Array(1,3),new Array(1,1),new Array(1,4),new Array(1,2),new Array(1,5),new Array(1,3)); + var costSet = new Array (31500,36000,36000,40500,40500,45000,49500,54000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 8){ //thief glove w/ stim + var itemSet = new Array(1082043,1082044,1082047,1082045,1082076,1082074,1082067,1082066); + var matSet = new Array(new Array(1082042,4011004),new Array(1082042,4011006),new Array(1082046,4011005),new Array(1082046,4011006),new Array(1082075,4011006),new Array(1082075,4021008),new Array(1082065,4021000),new Array(1082065,4011006,4021008)); + var matQtySet = new Array(new Array(1,2),new Array(1,1),new Array(1,3),new Array(1,2),new Array(1,4),new Array(1,2),new Array(1,5),new Array(1,2,1)); + var costSet = new Array (13500,18000,19800,22500,36000,45000,49500,54000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if(stimulator) + prompt += "\r\n#i"+stimID+"# 1 #t" + stimID + "#"; + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + } else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + } + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + cm.sendYesNo(prompt); + } else if (status == 3) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost) { + cm.sendOk("Sorry, we only accept meso."); + cm.dispose(); + return; + } + else { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /* + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) { + complete = false; + } + } else { + if (!cm.haveItem(mats[i],matQty[i] * selection)) + complete=false; + } + } + } else { + if (!cm.haveItem(mats,matQty * selection)) + complete=false; + }*/ + } + if (stimulator){ //check for stimulator + if (!cm.haveItem(stimID)) { + complete = false; + } + } + if (!complete) + cm.sendOk("Sorry, but I have to have those items to get this exactly right. Perhaps next time."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } else + cm.gainItem(mats, -matQty); + cm.gainMeso(-cost); + if (stimulator){ //check for stimulator + cm.gainItem(stimID, -1); + var deleted = Math.floor(Math.random() * 10); + if (deleted != 0) { + cm.gainRandomItem(newItem); + cm.sendOk("There, the gloves are ready. Be careful, they're still hot."); + } else { + cm.sendOk("Eek! I think I accidently added too much stimulator and, well, the whole thing is unusable now... Sorry, but I can't offer a refund."); + } + } else { + cm.gainItem(item, 1); + cm.sendOk("There, the gloves are ready. Be careful, they're still hot."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040021.js b/scripts/npc/world0/2040021.js new file mode 100644 index 0000000000..3f5b22e70a --- /dev/null +++ b/scripts/npc/world0/2040021.js @@ -0,0 +1,228 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Tara + Ludibrium : Tara and Sarah's House (220000303) + + Refining NPC: + * Shoes - All classes, 30-50, stimulator (4130001) available on upgrades + * Price is 90% of locations on same items +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var stimulator = false; +var stimID = 4130001; + +function start() { + cm.getPlayer().setCS(true); + var selStr = "Hello, and welcome to the Ludibrium Shoe Store. How can I help you today??#b" + var options = new Array("What's a stimulator?","Create Warrior shoes","Create Bowman shoes","Create Magician shoes","Create Thief shoes", "Create Warrior shoes with a Stimulator","Create Bowman shoes with a Stimulator","Create Magician shoes with a Stimulator","Create Thief shoes with a Stimulator"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + cm.sendSimple(selStr); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + return; + } + status++; + if (status == 1) { + selectedType = selection; + var selStr; + var shoes; + if (selectedType > 4) { + stimulator = true; + selectedType -= 4; + } + else + stimulator = false; + if (selectedType == 0){ // what is stim + cm.sendNext("A stimulator is a special potion that I can add into the process of creating certain items. It gives it stats as though it had dropped from a monster. However, it is possible to have no change, and it is also possible for the item to be below average. There's also a 10% chance of not getting any item when using a stimulator, so please choose wisely.") + cm.dispose(); + } else if (selectedType == 1){ //warrior shoe + selStr = "Warrior shoes? Sure thing, which kind?#b"; + shoes = new Array ("Emerald Battle Grieve#k - Warrior Lv. 30#b","Mithril Battle Grieve#k - Warrior Lv. 30#b","Silver Battle Grieve#k - Warrior Lv. 30#b","Blood Battle Grieve#k - Warrior Lv. 30#b", "Steel Trigger#k - Warrior Lv. 35#b","Mithril Trigger#k - Warrior Lv. 35#b","Dark Trigger#k - Warrior Lv. 35#b", "Brown Jangoon Boots#k - Warrior Lv. 40#b","Maroon Jangoon Boots#k - Warrior Lv. 40#b","Blue Jangoon Boots#k - Warrior Lv. 40#b", "Emerald Hildon Boots#k - Warrior Lv. 50#b","Mithril Hildon Boots#k - Warrior Lv. 50#b","Orihalcon Hildon Boots#k - Warrior Lv. 50#b","Gold Hildon Boots#k - Warrior Lv. 50#b");; + } else if (selectedType == 2){ //bowman shoe + selStr = "Bowman shoes? Sure thing, which kind?#b"; + shoes = new Array ("Red Hunter Boots#k - Bowman Lv. 30#b","Blue Hunter Boots#k - Bowman Lv. 30#b","Green Hunter Boots#k - Bowman Lv. 30#b","Black Hunter Boots#k - Bowman Lv. 30#b", "Brown Hunter Boots#k - Bowman Lv. 30#b","Blue Silky Boots#k - Bowman Lv. 35#b","Green Silky Boots#k - Bowman Lv. 35#b","Red Silky Boots#k - Bowman Lv. 35#b", "Red Pierre Shoes#k - Bowman Lv. 40#b","Yellow Pierre Shoes#k - Bowman Lv. 40#b","Brown Pierre Shoes#k - Bowman Lv. 40#b","Blue Pierre Shoes#k - Bowman Lv. 40#b", "Brown Steel-Tipped Boots#k - Bowman Lv. 50#b","Green Steel-Tipped Boots#k - Bowman Lv. 50#b","Blue Steel-Tipped Boots#k - Bowman Lv. 50#b","Purple Steel-Tipped Boots#k - Bowman Lv. 50#b"); + } else if (selectedType == 3){ //magician shoe + selStr = "Magician shoes? Sure thing, which kind?#b"; + shoes = new Array ("Red Magicshoes#k - Magician Lv. 30#b","Blue Magicshoes#k - Magician Lv. 30#b","White Magicshoes#k - Magician Lv. 30#b","Black Magicshoes#k - Magician Lv. 30#b","Purple Salt Shoes#k - Magician Lv. 35#b","Red Salt Shoes#k - Magician Lv. 35#b","Black Salt Shoes#k - Magician Lv. 35#b","Red Moon Shoes#k - Magician Lv. 40#b","Blue Moon Shoes#k - Magician Lv. 40#b","Gold Moon Shoes#k - Magician Lv. 40#b","Dark Moon Shoes#k - Magician Lv. 40#b", "Pink Goldwind Shoes#k - Magician Lv. 50#b","Blue Goldwind Shoes#k - Magician Lv. 50#b","Purple Goldwind Shoes#k - Magician Lv. 50#b","Green Goldwind Shoes#k - Magician Lv. 50#b"); + } else if (selectedType == 4){ //thief shoe + selStr = "Thief shoes? Sure thing, which kind?#b"; + shoes = new Array ("Bronze Chain Boots#k - Thief Lv. 30#b","Iron Chain Boots#k - Thief Lv. 30#b","Silver Chain Boots#k - Thief Lv. 30#b","Gold Chain Boots#k - Thief Lv. 30#b", "Red White-Line Boots#k - Thief Lv. 35#b","Green White-Line Boots#k - Thief Lv. 35#b","Blue White-Line Boots#k - Thief Lv. 35#b", "Black Red-Lined Shoes#k - Thief Lv. 40#b","Black Green-Lined Shoes#k - Thief Lv. 40#b","Black Yellow-Lined Shoes#k - Thief Lv. 40#b","Black Blue-Lined Shoes#k - Thief Lv. 40#b","Blue Goni Shoes#k - Thief Lv. 50#b","Red Goni Shoes#k - Thief Lv. 50#b","Green Goni Shoes#k - Thief Lv. 50#b","Purple Goni Shoes#k - Thief Lv. 50#b"); + } + if (selectedType != 0) { + for (var i = 0; i < shoes.length; i++) + selStr += "\r\n#L" + i + "# " + shoes[i] + "#l"; + cm.sendSimple(selStr); + } + } + else if (status == 2) { + selectedItem = selection; + if (selectedType == 1){ //warrior shoe + var itemSet = new Array(1072003,1072039,1072040,1072041,1072002,1072112,1072113,1072000,1072126,1072127,1072132,1072133,1072134,1072135); + var matSet = new Array(new Array(4021003,4011001,4000021,4003000),new Array(4011002,4011001,4000021,4003000), + new Array(4011004,4011001,4000021,4003000),new Array(4021000,4011001,4000021,4003000),new Array(4011001,4021004,4000021,4000030,4003000),new Array(4011002,4021004,4000021,4000030,4003000),new Array(4021008,4021004,4000021,4000030,4003000), + new Array(4011003,4000021,4000030,4003000,4000103),new Array(4011005,4021007,4000030,4003000,4000104),new Array(4011002,4021007,4000030,4003000,4000105),new Array(4021008,4011001,4021003,4000030,4003000), + new Array(4021008,4011001,4011002,4000030,4003000),new Array(4021008,4011001,4011005,4000030,4003000),new Array(4021008,4011001,4011006,4000030,4003000)); + var matQtySet = new Array(new Array(4,2,45,15),new Array(4,2,45,15),new Array(4,2,45,15),new Array(4,2,45,15),new Array(3,1,30,20,25),new Array(3,1,30,20,25),new Array(2,1,30,20,25), + new Array(4,100,40,30,100),new Array(4,1,40,30,100),new Array(4,1,40,30,100),new Array(1,3,6,65,45),new Array(1,3,6,65,45),new Array(1,3,6,65,45),new Array(1,3,6,65,45)); + var costSet = new Array(20000,20000,20000,20000,22000,22000,25000,38000,38000,38000,50000,50000,50000,50000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //bowman shoe + var itemSet = new Array(1072079,1072080,1072081,1072082,1072083,1072101,1072102,1072103,1072118,1072119,1072120,1072121,1072122,1072123,1072124,1072125); + var matSet = new Array(new Array(4000021,4021000,4003000),new Array(4000021,4021005,4003000),new Array(4000021,4021003,4003000), + new Array(4000021,4021004,4003000),new Array(4000021,4021006,4003000),new Array(4021002,4021006,4000030,4000021,4003000),new Array(4021003,4021006,4000030,4000021,4003000),new Array(4021000,4021006,4000030,4000021,4003000), + new Array(4021000,4003000,4000030,4000106),new Array(4021006,4003000,4000030,4000107),new Array(4011003,4003000,4000030,4000108),new Array(4021002,4003000,4000030,4000099),new Array(4011001,4021006,4021008,4000030,4003000,4000033), + new Array(4011001,4021006,4021008,4000030,4003000,4000032),new Array(4011001,4021006,4021008,4000030,4003000,4000041),new Array(4011001,4021006,4021008,4000030,4003000,4000042)); + var matQtySet = new Array(new Array(50,2,15),new Array(50,2,15),new Array(50,2,15),new Array(50,2,15),new Array(50,2,15), + new Array(3,1,15,30,20),new Array(3,1,15,30,20),new Array(3,1,15,30,20),new Array(4,30,45,100),new Array(4,30,45,100),new Array(5,30,45,100),new Array(5,30,45,100), + new Array(3,3,1,60,35,80),new Array(3,3,1,60,35,150),new Array(3,3,1,60,35,100),new Array(3,3,1,60,35,250)); + var costSet = new Array(19000,19000,19000,19000,19000,19000,20000,20000,20000,32000,32000,40000,40000,50000,50000,50000,50000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //magician shoe + var itemSet = new Array(1072075,1072076,1072077,1072078,1072089,1072090,1072091,1072114,1072115,1072116,1072117,1072140,1072141,1072142,1072143,1072136,1072137,1072138,1072139); + var matSet = new Array(new Array(4021000,4000021,4003000),new Array(4021002,4000021,4003000),new Array(4011004,4000021,4003000),new Array(4021008,4000021,4003000),new Array(4021001,4021006,4000021,4000030,4003000),new Array(4021000,4021006,4000021,4000030,4003000), + new Array(4021008,4021006,4000021,4000030,4003000),new Array(4021000,4000030,4000110,4003000),new Array(4021005,4000030,4000111,4003000),new Array(4011006,4021007,4000030,4000100,4003000),new Array(4021008,4021007,4000030,4000112,4003000), + new Array(4021009,4011006,4021000,4000030,4003000),new Array(4021009,4011006,4021005,4000030,4003000),new Array(4021009,4011006,4021001,4000030,4003000),new Array(4021009,4011006,4021003,4000030,4003000)); + var matQtySet = new Array(new Array(2,50,15),new Array(2,50,15),new Array(2,50,15),new Array(1,50,15),new Array(3,1,30,15,20),new Array(3,1,30,15,20),new Array(2,1,40,25,20),new Array(4,40,100,25),new Array(4,40,100,25),new Array(2,1,40,100,25),new Array(2,1,40,100,30), + new Array(1,3,3,60,40),new Array(1,3,3,60,40),new Array(1,3,3,60,40),new Array(1,3,3,60,40)); + var costSet = new Array(18000,18000,18000,18000,20000,20000,22000,30000,30000,35000,40000,50000,50000,50000,50000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 4){ //thief shoe + var itemSet = new Array(1072032,1072033,1072035,1072036,1072104,1072105,1072106,1072107,1072108,1072109,1072110,1072128,1072130,1072129,1072131); + var matSet = new Array(new Array(4011000,4000021,4003000),new Array(4011001,4000021,4003000),new Array(4011004,4000021,4003000),new Array(4011006,4000021,4003000),new Array(4021000,4021004,4000021,4000030,4003000),new Array(4021003,4021004,4000021,4000030,4003000), + new Array(4021002,4021004,4000021,4000030,4003000),new Array(4021000,4000030,4000113,4003000),new Array(4021003,4000030,4000095,4003000),new Array(4021006,4000030,4000096,4003000),new Array(4021005,4000030,4000097,4003000),new Array(4011007,4021005,4000030,4000114,4003000), + new Array(4011007,4021000,4000030,4000115,4003000),new Array(4011007,4021003,4000030,4000109,4003000),new Array(4011007,4021001,4000030,4000036,4003000)); + var matQtySet = new Array(new Array(3,50,15),new Array(3,50,15),new Array(2,50,15),new Array(2,50,15),new Array(3,1,30,15,20),new Array(3,1,30,15,20),new Array(3,1,30,15,20), + new Array(5,45,100,30),new Array(4,45,100,30),new Array(4,45,100,30),new Array(4,45,100,30),new Array(2,3,50,100,35),new Array(2,3,50,100,35),new Array(2,3,50,100,35),new Array(2,3,50,80,35)); + var costSet = new Array(19000,19000,19000,21000,20000,20000,20000,40000,32000,35000,35000,50000,50000,50000,50000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + //Ludi fee is -10%, array not changed unlike 2040016 and 2040020 + cost *= .9; + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if(stimulator) + prompt += "\r\n#i"+stimID+"# 1 #t" + stimID + "#"; + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++) + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + } + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + cm.sendYesNo(prompt); + } else if (status == 3) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < (cost)){ + cm.sendOk("Sorry, we only accept meso."); + cm.dispose(); + return; + } + else { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /* + if (mats instanceof Array) { + for (var i = 0; complete && i < mats.length; i++) { + if (matQty[i] == 1){ + if (!cm.haveItem(mats[i])) + complete = false; + } else { + if (!cm.haveItem(mats[i],matQty[i])) + complete=false; + } + } + } else { + if (!cm.haveItem(mats,matQty)) + complete=false; + }*/ + } + if (stimulator){ //check for stimulator + if (!cm.haveItem(stimID)) { + complete = false; + } + } + if (!complete) + cm.sendOk("Sorry, but I have to have those items to get this exactly right. Perhaps next time."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } else + cm.gainItem(mats, -matQty); + cm.gainMeso(-cost); + if (stimulator){ //check for stimulator + cm.gainItem(stimID, -1); + var deleted = Math.floor(Math.random() * 10); + if (deleted != 0) { + addRandomItem(item); + cm.sendOk("There, the shoes are ready. Be careful, they're still hot."); + } else { + cm.sendOk("Eek! I think I accidently added too much stimulator and, well, the whole thing is unusable now... Sorry, but I can't offer a refund."); + } + } else { + cm.gainItem(item, 1); + cm.sendOk("There, the shoes are ready. Be careful, they're still hot."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040022.js b/scripts/npc/world0/2040022.js new file mode 100644 index 0000000000..59c4193846 --- /dev/null +++ b/scripts/npc/world0/2040022.js @@ -0,0 +1,266 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Rydole + Ludibrium : Toy Factory (220020600) + + Refining NPC: + * Level 30-50 weapons - Stimulator allowed +*/ +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var stimulator = false; +var stimID; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + var selStr = "Ah, you've found me! I spend most of my time here, working on weapons to make for travellers like yourself. Did you have a request?#b" + var options = new Array("What's a stimulator?","Create a Warrior weapon","Create a Bowman weapon","Create a Magician weapon","Create a Thief weapon", + "Create a Warrior weapon with a Stimulator","Create a Bowman weapon with a Stimulator","Create a Magician weapon with a Stimulator","Create a Thief weapon with a Stimulator"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } + else if (status == 1 && mode == 1) { + selectedType = selection; + var selStr; + var weapon; + if (selectedType > 4) + { + stimulator = true; + selectedType -= 4; + } + else + stimulator = false; + if (selectedType == 0) { //What's a stim? + cm.sendNext("A stimulator is a special potion that I can add into the process of creating certain items. It gives it stats as though it had dropped from a monster. However, it is possible to have no change, and it is also possible for the item to be below average. There's also a 10% chance of not getting any item when using a stimulator, so please choose wisely.") + cm.dispose(); + } + else if (selectedType == 1){ //warrior weapon + selStr = "Very well, then which Warrior weapon shall I work on?#b"; + weapon = new Array ("Gladius#k - Lv. 30 One-Handed Sword#b","Cutlus#k - Lv. 35 One-Handed Sword#b","Traus#k - Lv. 40 One-Handed Sword#b","Jeweled Katar#k - Lv. 50 One-Handed Sword#b","Fireman's Axe#k - Lv. 30 One-Handed Axe#b","Dankke#k - Lv. 35 One-Handed Axe#b","Blue Counter#k - Lv. 40 One-Handed Axe#b","Buck#k - Lv. 50 One-Handed Axe#b", + "War Hammer#k - Lv. 30 One-Handed BW#b","Heavy Hammer#k - Lv. 35 One-Handed BW#b","Jacker#k - Lv. 40 One-Handed BW#b","Knuckle Mace#k - Lv. 50 One-Handed BW#b","Scimitar#k - Lv. 30 Two-Handed Sword#b","Lionheart#k - Lv. 35 Two-Handed Sword#b","Zard#k - Lv. 40 Two-Handed Sword#b","Lion's Fang#k - Lv. 50 Two-Handed Sword#b", + "Blue Axe#k - Lv. 30 Two-Handed Axe#b","Niam#k - Lv. 35 Two-Handed Axe#b","Sabretooth#k - Lv. 40 Two-Handed Axe#b","The Rising#k - Lv. 50 Two-Handed Axe#b","Mithril Maul#k - Lv. 30 Two-Handed BW#b","Sledgehammer#k - Lv. 35 Two-Handed BW#b","Titan#k - Lv. 40 Two-Handed BW#b","Golden Mole#k - Lv. 50 Two-Handed BW#b", + "Forked Spear#k - Lv. 30 Spear#b","Nakimaki#k - Lv. 35 Spear#b","Zeco#k - Lv. 40 Spear#b","Serpent's Tongue#k - Lv. 50 Spear#b","Mithril Polearm#k - Lv. 30 Polearm#b","Axe Polearm#k - Lv. 35 Polearm#b","Crescent Polearm#k - Lv. 40 Polearm#b","The Nine Dragons#k - Lv. 50 Polearm#b"); + } + else if (selectedType == 2){ //bowman weapon + selStr = "Very well, then which Bowman weapon shall I work on?#b"; + weapon = new Array ("Ryden#k - Lv. 30 Bow#b","Red Viper#k - Lv. 35 Bow#b","Vaulter 2000#k - Lv. 40 Bow#b","Olympus#k - Lv. 50 Bow#b","Eagle Crow#k - Bowman Lv. 32#b","Heckler#k - Bowman Lv. 38#b","Silver Crow#k - Bowman Lv. 42#b","Rower#k - Bowman Lv. 50#b"); + } + else if (selectedType == 3){ //magician weapon + selStr = "Very well, then which Magician weapon shall I work on?#b"; + weapon = new Array ("Mithril Wand#k - Lv. 28 Wand#b","Wizard Wand#k - Lv. 33 Wand#b","Fairy Wand#k - Lv. 38 Wand#b","Cromi#k - Lv. 48 Wand#b","Wizard Staff#k - Lv. 25 Staff#b","Arc Staff#k - Lv. 45 Staff#b","Thorns#k - Lv. 55 Staff#b"); + } + else if (selectedType == 4){ //thief weapon; claws vary depending if stimulator is being used + selStr = "Very well, then which Thief weapon shall I work on?#b"; + if (!stimulator) + weapon = new Array ("Reef Claw#k - Lv. 30 LUK Dagger#b","Cass#k - Lv. 30 STR Dagger#b","Gephart#k - Lv. 35 LUK Dagger#b","Bazlud#k - Lv. 40 STR Dagger#b","Sai#k - Lv. 50 STR Dagger#b","Shinkita#k - Lv. 50 LUK Dagger#b", + "Steel Guards#k - Lv. 30 Claw#b","Bronze Guardian#k - Lv. 35 Claw#b","Steel Avarice#k - Lv. 40 Claw#b","Steel Slain#k - Lv. 50 Claw#b"); + else + weapon = new Array ("Reef Claw#k - Lv. 30 LUK Dagger#b","Cass#k - Lv. 30 STR Dagger#b","Gephart#k - Lv. 35 LUK Dagger#b","Bazlud#k - Lv. 40 STR Dagger#b","Sai#k - Lv. 50 STR Dagger#b","Shinkita#k - Lv. 50 LUK Dagger#b", + "Mithril Guards#k - Lv. 30 Claw#b","Adamantium Guards#k - Lv. 30 Claw#b","Silver Guardian#k - Lv. 35 Claw#b","Dark Guardian#k - Lv. 35 Claw#b","Blood Avarice#k - Lv. 40 Claw#b","Adamantium Avarice#k - Lv. 40 Claw#b", + "Dark Avarice#k - Lv. 40 Claw#b","Blood Slain#k - Lv. 50 Claw#b","Sapphire Slain#k - Lv. 50 Claw#b","Dark Slain#k - Lv. 50 Claw#b"); + } + + if (selectedType != 0) + { + for (var i = 0; i < weapon.length; i++){ + selStr += "\r\n#L" + i + "# " + weapon[i] + "#l"; + } + cm.sendSimple(selStr); + } + } + else if (status == 2 && mode == 1) { + selectedItem = selection; + if (selectedType == 1){ //warrior weapon + var itemSet = new Array(1302008,1302004,1302009,1302010,1312005,1312006,1312007,1312008,1322014,1322015,1322016,1322017,1402002,1402006,1402007,1402003,1412006,1412004,1412005,1412003,1422001,1422008,1422007,1422005,1432002,1432003,1432005,1432004,1442001,1442003,1442009,1442005); + var matSet = new Array(new Array(4131000,4011001,4011004,4003000),new Array(4131000,4011006,4011001,4021006,4003000),new Array(4131000,4011006,4011001,4021000,4003000),new Array(4131000,4005000,4021008,4011006,4021003,4003000), + new Array(4131001,4011001,4021000,4003000),new Array(4131001,4011001,4021000,4011004,4003000),new Array(4131001,4021005,4011001,4021001,4003000),new Array(4131001,4005000,4021008,4011004,4011001,4003000), + new Array(4131002,4011001,4011000,4003000),new Array(4131002,4011001,4011000,4011003,4003000),new Array(4131002,4011003,4011001,4011004,4003000),new Array(4131002,4005000,4021008,4011006,4011001,4003000), + new Array(4131003,4011001,4021000,4021004,4003000),new Array(4131003,4011006,4011001,4021004,4003000),new Array(4131003,4021003,4011000,4011001,4003000),new Array(4131003,4005000,4021007,4011006,4011001,4003000), + new Array(4131004,4021005,4011001,4003001,4003000),new Array(4131004,4011004,4011000,4021003,4003000),new Array(4131004,4011006,4011004,4011001,4003000),new Array(4131004,4005000,4021007,4011006,4021006,4003000), + new Array(4131005,4011001,4011004,4003000),new Array(4131005,4011001,4011000,4003001,4003000),new Array(4131005,4011001,4011004,4011006,4003000),new Array(4131005,4005000,4021008,4021006,4011006,4003000), + new Array(4131006,4011000,4011004,4003000),new Array(4131006,4011001,4011002,4021000,4003000),new Array(4131006,4011004,4011001,4011000,4003000),new Array(4131006,4005000,4021008,4011000,4021000,4003000), + new Array(4131007,4011000,4011002,4003000),new Array(4131007,4011001,4011002,4003000),new Array(4131007,4011006,4011002,4011001,4003000),new Array(4131007,4005000,4021007,4011001,4011002,4003000)); + var matQtySet = new Array(new Array(1,2,2,30),new Array(1,1,5,3,35),new Array(1,3,5,5,40),new Array(1,1,2,4,10,50), + new Array(1,2,2,30),new Array(1,5,5,3,35),new Array(1,7,5,5,40),new Array(1,1,2,8,10,50), + new Array(1,2,2,30),new Array(1,5,5,3,35),new Array(1,7,5,5,40),new Array(1,1,2,4,10,50), + new Array(1,2,1,2,35),new Array(1,1,5,5,40),new Array(1,7,5,5,45),new Array(1,1,2,4,10,55), + new Array(1,2,2,5,35),new Array(1,5,5,3,40),new Array(1,3,5,5,45),new Array(1,1,2,5,7,55), + new Array(1,2,3,35),new Array(1,5,5,10,40),new Array(1,5,5,3,45),new Array(1,1,2,7,5,55), + new Array(1,2,3,40),new Array(1,5,5,3,45),new Array(1,3,5,5,50),new Array(1,1,2,7,5,60), + new Array(1,2,3,40),new Array(1,5,5,40),new Array(1,3,5,5,50),new Array(1,1,2,7,5,60)); + var costSet = new Array(18000,35000,70000,200000,18000,35000,70000,200000,18000,35000,70000,200000,20000,37000,72000,220000,20000,37000,72000,220000,20000,37000,72000,220000,22000,39000,74000,240000,22000,39000,74000,240000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //bowman weapon + var itemSet = new Array(1452005,1452006,1452007,1452008,1462004,1462005,1462006,1462007); + var matSet = new Array(new Array(4131010,4011001,4011006,4021003,4021006,4003000),new Array(4131010,4011004,4021000,4021004,4003000),new Array(4131010,4021008,4011001,4011006,4003000,4000112),new Array(4131010,4005002,4021008,4011001,4021005,4003000), + new Array(4131011,4011001,4011005,4021006,4003001,4003000),new Array(4131011,4021008,4011001,4011006,4021006,4003000),new Array(4131011,4021008,4011004,4003001,4003000),new Array(4131011,4021008,4011006,4021006,4003001,4003000)); + var matQtySet = new Array(new Array(1,5,5,3,3,30),new Array(1,7,6,3,35),new Array(1,1,10,3,40,100),new Array(1,1,2,10,6,50),new Array(1,5,5,3,50,15),new Array(1,1,8,4,2,30),new Array(1,2,6,30,30),new Array(1,2,5,3,40,40)); + var costSet = new Array(15000,20000,40000,100000,15000,25000,41000,100000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 3){ //magician weapon + var itemSet = new Array(1372003,1372001,1372000,1372007,1382002,1382001,1382006); + var matSet = new Array(new Array(4131008,4011002,4021002,4003000),new Array(4131008,4021006,4011002,4011001,4003000),new Array(4131008,4021006,4021005,4021007,4003003,4003000),new Array(4131008,4011006,4021003,4021007,4021002,4003000), + new Array(4131009,4021006,4021001,4011001,4003000),new Array(4131009,4011001,4021006,4021001,4021005,4003000),new Array(4131009,4005001,4021008,4011006,4011004,4003000)); + var matQtySet = new Array(new Array(1,3,1,10),new Array(1,5,3,1,15),new Array(1,5,5,1,1,20),new Array(1,4,3,2,1,30),new Array(1,2,1,1,15),new Array(1,8,5,5,5,30),new Array(1,2,2,5,10,40)); + var costSet = new Array(15000,30000,60000,100000,10000,80000,200000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 4){ //thief weapon; claws vary depending if stimulator is being used + if (!stimulator){ + var itemSet = new Array(1332012,1332009,1332014,1332011,1332016,1332003,1472008,1472011,1472014,1472018); + var matSet = new Array(new Array(4131012,4011002,4011001,4003000),new Array(4131012,4021005,4011001,4003000),new Array(4131012,4021005,4011001,4011002,4003000),new Array(4131012,4011001,4011006,4021006,4003000),new Array(4131012,4005003,4021008,4011004,4011001,4003000),new Array(4131012,4005003,4021007,4011006,4011001,4003000), + new Array(4131013,4011000,4011001,4000021,4003000),new Array(4131013,4011000,4011001,4000021,4003000),new Array(4131013,4011000,4011001,4000021,4003000),new Array(4131013,4011000,4011001,4000030,4003000)); + var matQtySet = new Array(new Array(1,2,3,30),new Array(1,2,3,30),new Array(1,1,5,3,35),new Array(1,7,3,6,40),new Array(1,1,2,7,10,50),new Array(1,1,2,5,10,50),new Array(1,3,2,50,20),new Array(1,4,2,80,25),new Array(1,3,2,100,30),new Array(1,4,2,40,35)); + var costSet = new Array(20000,20000,33000,73000,230000,230000,15000,30000,40000,50000); + } + else{ + var itemSet = new Array(1332012,1332009,1332014,1332011,1332016,1332003,1472009,1472010,1472012,1472013,1472015,1472016,1472017,1472019,1472020,1472021); + var matSet = new Array(new Array(4131012,4011002,4011001,4003000),new Array(4131012,4021005,4011001,4003000),new Array(4131012,4021005,4011001,4011002,4003000),new Array(4131012,4011001,4011006,4021006,4003000),new Array(4131012,4005003,4021008,4011004,4011001,4003000),new Array(4131012,4005003,4021007,4011006,4011001,4003000), + new Array(4131013,1472008,4011002),new Array(4131013,1472008,4011003),new Array(4131013,1472011,4011004),new Array(4131013,1472011,4021008),new Array(4131013,1472014,4021000),new Array(4131013,1472014,4011003),new Array(4131013,1472014,4021008),new Array(4131013,1472018,4021000),new Array(4131013,1472018,4021005), + new Array(4131013,1472018,4005003,4021008)); + var matQtySet = new Array(new Array(1,2,3,30),new Array(1,2,3,30),new Array(1,1,5,3,35),new Array(1,7,3,6,40),new Array(1,1,2,7,10,50),new Array(1,1,2,5,10,50),new Array(1,1,3),new Array(1,1,3),new Array(1,1,4),new Array(1,1,1),new Array(1,1,5),new Array(1,1,5),new Array(1,1,2),new Array(1,1,6),new Array(1,1,6),new Array(1,1,1,3)); + var costSet = new Array(20000,20000,33000,73000,230000,230000,10000,15000,20000,25000,30000,30000,35000,40000,40000,50000); + } + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if(stimulator){ + stimID = mats[0] - 998; //stim ID for a weapon = manual ID for weapon - 998 + prompt += "\r\n#i"+stimID+"# 1 #t" + stimID + "#"; + } + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 3 && mode == 1) { + var complete = true; + + if (cm.getMeso() < cost) + { + cm.sendOk("I'm afraid my fees are non-negotiable.") + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + if (!cm.haveItem(mats[i],matQty[i] * selection)) complete=false; + } + } + } + else { + if (!cm.haveItem(mats,matQty * selection)) complete=false; + } + } + + if (stimulator){ //check for stimulator + if (!cm.haveItem(stimID)) + { + complete = false; + } + } + + if (!complete) + cm.sendOk("Sorry, but you're missing a required item. Possibly a manual? Or one of the ores?"); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } + else + cm.gainItem(mats, -matQty); + + cm.gainMeso(-cost); + if (stimulator){ //check for stimulator + cm.gainItem(stimID, -1); + var deleted = Math.floor(Math.random() * 10); + if (deleted != 0) + { + addRandomItem(item); + cm.sendOk("Heeere you go! What do you think? Marvellous, isn't it?"); + } + else + { + cm.sendOk("...ACK! My attention wandered, and before I knew it... Uh, sorry, but there's nothing I can do for you now."); + } + } + else //just give basic item + { + cm.gainItem(item, 1); + cm.sendOk("Heeere you go! What do you think? Marvellous, isn't it?"); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040024.js b/scripts/npc/world0/2040024.js new file mode 100644 index 0000000000..ed42648c56 --- /dev/null +++ b/scripts/npc/world0/2040024.js @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator, Moogra + NPC Name: First Eos Rock + Map(s): Ludibrium : Eos Tower 100th Floor (221024400) + Description: Brings you to 71st Floor +*/ + +function start() { + if (cm.haveItem(4001020)) + cm.sendYesNo("You can use #bEos Rock Scroll#k to activate #bFirst Eos Rock#k. Will you teleport to #bSecond Eos Rock#k at the 71st floor?"); + else { + cm.sendOk("There's a rock that will enable you to teleport to #bSecond Eos Rock#k, but it cannot be activated without the scroll."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) { + } else { + cm.gainItem(4001020, -1); + cm.warp(221022900, 3); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040025.js b/scripts/npc/world0/2040025.js new file mode 100644 index 0000000000..e09494a8ab --- /dev/null +++ b/scripts/npc/world0/2040025.js @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Second Eos Rock + Map(s): Ludibrium : Eos Tower 71st Floor (221022900) + Description: Brings you to 100th Floor or 71st Floor +*/ +var status = 0; +var map = 221024400; + +function start() { + if (cm.haveItem(4001020)) + cm.sendSimple("You can use #bEos Rock Scroll#k to activate #bSecond Eos Rock#k. Which of these rocks would you like to teleport to?#b\r\n#L0#First Eos Rock (100th Floor)#l\r\n#L1#Third Eos Rock (41st Floor)#l"); + else { + cm.sendOk("There's a rock that will enable you to teleport to #bFirst Eos Rock or Third Eos Rock#k, but it cannot be activated without the scroll."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (status >= 0 && mode == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 0) + cm.sendYesNo("You can use #bEos Rock Scroll#k to activate #bSecond Eos Rock#k. Will you teleport to #bFirst Eos Rock#k at the 100th Floor?"); + else { + cm.sendYesNo("You can use #bEos Rock Scroll#k to activate #bSecond Eos Rock#k. Will you teleport to #bThird Eos Rock#k at the 41st Floor?"); + map = 221021700; + } + } else if (status == 2) { + cm.gainItem(4001020, -1); + cm.warp(map, 3); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040026.js b/scripts/npc/world0/2040026.js new file mode 100644 index 0000000000..8449c45fcc --- /dev/null +++ b/scripts/npc/world0/2040026.js @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator, Moogra + NPC Name: Third Eos Rock + Map(s): Ludibrium : Eos Tower 41st Floor (221021700) + Description: Brings you to 71st Floor or 1st Floor +*/ +var status = 0; +var map; + +function start() { + if (cm.haveItem(4001020)) { + cm.sendSimple("You can use #bEos Rock Scroll#k to activate #bThird Eos Rock#k. Which of these rocks would you like to teleport to?#b\r\n#L0#Second Eos Rock (71st Floor)#l\r\n#L1#Fourth Eos Rock (1st Floor)#l"); + } else { + cm.sendOk("There's a rock that will enable you to teleport to #bSecond Eos Rock or Fourth Eos Rock#k, but it cannot be activated without the scroll."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) { + if (selection == 0) { + cm.sendYesNo("You can use #bEos Rock Scroll#k to activate #bThird Eos Rock#k. Will you teleport to #bSecond Eos Rock#k at the 71st Floor?"); + map = 221022900; + } else { + cm.sendYesNo("You can use #bEos Rock Scroll#k to activate #bThird Eos Rock#k. Will you teleport to #bFourth Eos Rock#k at the 1st Floor?"); + map = 221020000; + } + } else if (status == 2) { + cm.gainItem(4001020, -1); + cm.warp(map, map % 1000 == 900 ? 3 : 4); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040027.js b/scripts/npc/world0/2040027.js new file mode 100644 index 0000000000..c26a2c2f97 --- /dev/null +++ b/scripts/npc/world0/2040027.js @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator, Moogra + NPC Name: Fourth Eos Rock + Map(s): Ludibrium : Eos Tower 1st Floor (221020000) + Description: Brings you to 41st Floor +*/ + +function start() { + if (cm.haveItem(4001020)) + cm.sendYesNo("You can use #bEos Rock Scroll#k to activate #bFourth Eos Rock#k. Will you head over to #bThird Eos Rock#k at the 41st floor?"); + else { + cm.sendOk("There's a rock that will enable you to teleport to #bThird Eos Rock#k, but it cannot be activated without the scroll."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) { + } else { + cm.gainItem(4001020, -1); + cm.warp(221021700, 3); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040028.js b/scripts/npc/world0/2040028.js new file mode 100644 index 0000000000..dffbdd7bc0 --- /dev/null +++ b/scripts/npc/world0/2040028.js @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Guy in dollhouse map +*/ + +var greeting; + +function start() { + var greeting = "Thank you for finding the pendulum. Are you ready to return to Eos Tower?"; + if (cm.isQuestStarted(3230)) { + if (cm.haveItem(4031094)) { + cm.completeQuest(3230); + cm.gainItem(4031094, -1); + } else + greeting = "You haven't found the pendulum yet. Do you want to go back to Eos Tower?"; + } + cm.sendYesNo(greeting); +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(221024400,0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040032.js b/scripts/npc/world0/2040032.js new file mode 100644 index 0000000000..3a039a287c --- /dev/null +++ b/scripts/npc/world0/2040032.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Weaver - Ludibrium : Ludibrium Pet Walkway (220000006) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + cm.sendYesNo("This is the road where you can go take a walk with your pet. You can walk around with it, or you can train your pet to go through obstacles here. If you aren't too close with your pet yet, that may present a problem and he will not follow your command as much... So, what do you think? Wanna train your pet?"); +} + +function action(mode, type, selection) { + if (mode == -1){ + } else if (mode == 0) { + cm.sendNext("Hmmm ... too busy to do it right now? If you feel like doing it, though, come back and find me."); + } else if (mode == 1) { + if (cm.haveItem(4031128)) + cm.sendNext("Get that letter, jump over obstacles with your pet, and take that letter to my brother Trainer Frod. Give him the letter and something good is going to happen to your pet."); + else { + cm.gainItem(4031128, 1); + cm.sendOk("Ok, here's the letter. He wouldn't know I sent you if you just went there straight, so go through the obstacles with your pet, go to the very top, and then talk to Trainer Frod to give him the letter. It won't be hard if you pay attention to your pet while going through obstacles. Good luck!"); + } + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040033.js b/scripts/npc/world0/2040033.js new file mode 100644 index 0000000000..6374f16834 --- /dev/null +++ b/scripts/npc/world0/2040033.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Neru - Ludibrium : Ludibrium Pet Walkway (220000006) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Second Version by Moogra + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + if (cm.haveItem(4031128)) { + cm.sendNext("Eh, that's my brother's letter! Probably scolding me for thinking I'm not working and stuff...Eh? Ahhh...you followed my brother's advice and trained your pet and got up here, huh? Nice!! Since you worked hard to get here, I'll boost your intimacy level with your pet."); + } else { + cm.sendOk("My brother told me to take care of the pet obstacle course, but ... since I'm so far away from him, I can't help but wanting to goof around ...hehe, since I don't see him in sight, might as well just chill for a few minutes."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) { + } else if (cm.getPlayer().getNoPets() == 0) + cm.sendNextPrev("Hmmm ... did you really get here with your pet? These obstacles are for pets. What are you here for without it?? Get outta here!"); + else { + cm.gainItem(4031128, -1); + cm.gainCloseness(4); + cm.sendNextPrev("What do you think? Don't you think you have gotten much closer with your pet? If you have time, train your pet again on this obstacle course...of course, with my brother's permission."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040034.js b/scripts/npc/world0/2040034.js new file mode 100644 index 0000000000..5bc11803b9 --- /dev/null +++ b/scripts/npc/world0/2040034.js @@ -0,0 +1,106 @@ +/** + * @author: Eric + * @npc: Red Sign + * @map: 101st Floor Eos Tower (221024500) + * @func: Ludi PQ +*/ + +var status = 0; +var minLevel = 35; // according to Nexon it's 30, but it's actually a 50 requirement. +var maxLevel = 200; +var minPartySize = 5; +var maxPartySize = 6; + +var brokenGlassesCount = 0; // code custom quest data is on the todo list + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else if (mode == 0) { + if (status == 1) { + cm.sendNext((cm.getParty() == null ? "Remember that using the Party Search function (Hotkey O) will allow you to find a party anytime, anywhere." : "Send an invite to friends nearby. Remember that using the Party Search function (Hotkey O) will allow you to find a party anytime, anywhere.")); + cm.dispose(); + return; + } else { + status--; + } + } + if (status == 0) { + cm.sendSimple("#e#n\r\n\r\nYou can't go any higher because of the extremely dangerous creatures above. Would you like to collaborate with party members to complete the quest? If so, please have your #bparty leader#k talk to me.#b\r\n#L0#I want to participate in the party quest.\r\n#L1#I want to find party members.\r\n#L2#I want to receive the Broken Glasses.\r\n#L3#I would like to hear more details."); + } else if (status == 1) { + if (selection == 0) { + if (cm.getParty() == null) { + cm.sendOk("You can participate in the party quest only if you are in a party."); + cm.dispose(); + return; + } else if (!cm.getPlayer().isGM() && (cm.getParty().getMembers().size() < minPartySize || !cm.isLeader())) { + cm.sendOk("You cannot participate in the quest, because you do not have at least 3 party members."); + cm.dispose(); + return; + } else { + // Check if all party members are within PQ levels + var party = cm.getParty().getMembers(); + var mapId = cm.getMapId(); + var next = true; + var levelValid = 0; + var inMap = 0; + var it = party.iterator(); + + while (it.hasNext()) { + var cPlayer = it.next(); + if ((cPlayer.getLevel() >= minLevel) && (cPlayer.getLevel() <= maxLevel)) { + levelValid += 1; + } else { + next = false; + } + if (cPlayer.getMapId() == mapId) { + inMap += (cPlayer.getJobId() == 910 ? 6 : 1); + } + } + if (party.size() > maxPartySize || inMap < minPartySize) { + next = false; + } + if(cm.getPlayer().isGM()) + next = true; + if (next) { + var em = cm.getEventManager("LudiPQ"); + if (em == null) { + cm.sendOk("The Ludibrium PQ has encountered an error. Please report this on the forums, and with a screenshot."); + } else { + var prop = em.getProperty("LPQOpen"); + if (prop == null || prop.equals("true")) { + em.startInstance(cm.getParty(), cm.getPlayer().getMap()); + cm.removeAll(4001022); + cm.removeAll(4001023); + cm.dispose(); + return; + } else { + cm.sendOk("Another party has already entered the #rParty Quest#k in this channel. Please try another channel, or wait for the current party to finish."); + } + } + } else { + cm.sendYesNo("You cannot participate in the quest, because you do not have at least 3 party members. If you're having trouble finding party members, try Party Search."); + } + } + } else if (selection == 1) { + cm.sendOk("Try using a Super Megaphone or asking your buddies or guild to join!"); + cm.dispose(); + } else if (selection == 2) { // todo + cm.sendNext("I am offering 1 #i1022073:# #bBroken Glasses#k for every 20 times you help me. If you help me #b" + brokenGlassesCount + " more times, you can receive Broken Glasses.#k"); + cm.dispose(); + } else { + cm.sendOk("#e#n\r\nA Dimensional Schism has appeared in #b#m220000000#!#k We desperately need brave adventurers who can defeat the intruding monsters. Please, party with some dependable allies to save #m220000000#! You must pass through various stages by defeating monsters and solving quizzes, and ultimately defeat #r#o9300012##k.\r\n - #eLevel#n: 30 or above #r(Recommended Level: 60 ~ 69)#k\r\n - #eTime Limit#n: 20 min\r\n - #eNumber of Players#n: 3 to 6\r\n - #eReward#n: #i1022073:# Broken Glasses #b(obtained every 20 time(s) you participate)#k\r\n Various Use, Etc, and Equip items"); + cm.dispose(); + } + } else if (status == 2) { + if (mode > 0) { + //cm.findParty(); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040035.js b/scripts/npc/world0/2040035.js new file mode 100644 index 0000000000..6f92257cb1 --- /dev/null +++ b/scripts/npc/world0/2040035.js @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC Base + Map Name (Map ID) + Extra NPC info. + */ + +var prizes = Array(2040602, 2040602, 2040602, 2040601, 2040601, 2040601, 2040601, 2040802, 2040002, 2040402, + 2040505, 2040505, 2040505, 2040505, 2040502, 2044501, 2044601, 2044701, + 2041019, 2041016, 2041022, 2041013, 2041007, 2043301, 2040301, 2040801, 2040001, 2040504, + 2040501, 2040513, 2043101, 2044001, 2044401, 2040701, 2044301, 2043801, 2043701, 2040401, + 2040803, 2040804, 1102000, 1102001, 1102003, 1102004, 1102011, 1102012, 1102013, 1102014); +var item; +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + cm.sendNext("Congratulations on sealing the dimensional crack!"); + } else if(status == 1) { + if(cm.canHold(1102003) && cm.canHold(2040602)) { + item = prizes[Math.floor(Math.random() * prizes.length)]; + cm.sendNextPrev("For all of your hard work, I have a gift for you! Here take this prize."); + } else { + cm.sendOk("It seems you don't have a free slot in your #rEquip#k and #rUse#k inventories. Please make room and try again."); + cm.dispose(); + } + } else if(status == 2) { + cm.gainItem(item, 1, true); + cm.warp(221024500); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040036.js b/scripts/npc/world0/2040036.js new file mode 100644 index 0000000000..a74bb7b0bc --- /dev/null +++ b/scripts/npc/world0/2040036.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Red Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010100 +@ Function = LPQ - 1st Stage +@ +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose();//ExitChat + else if (mode == 0) + cm.dispose();//No + else{ //Regular Talk + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "1st"; + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendNext("Hi. Welcome to the " + nthtext + " stage."); + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + }else{ + if(gaveItems == null){ + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + } else if(cm.itemQuantity(4001022) >= 25){ + cm.sendOk("Good job! you have collected all 25 #b#t4001022#'s#k"); + }else{ + cm.sendOk("Sorry you don't have all 25 #b#t4001022#'s#k"); + cm.dispose(); + } + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + } + } + }else if (status == 1){ + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.removeAll(4001022); + cm.givePartyExp("LudiPQ1st"); + eim.setProperty("1stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.dispose(); + } + } +} + + +function isLeader(){ + if(cm.getParty() == null){ + return false; + }else{ + return cm.isLeader(); + } +} + + diff --git a/scripts/npc/world0/2040037.js b/scripts/npc/world0/2040037.js new file mode 100644 index 0000000000..6190d4c731 --- /dev/null +++ b/scripts/npc/world0/2040037.js @@ -0,0 +1,111 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Orange Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010200 +@ Function = LPQ - 2nd Stage +@ +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose();//ExitChat + }else if (mode == 0){ + cm.dispose();//No + }else{ //Regular Talk + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "2nd"; + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendNext("Hi. Welcome to the " + nthtext + " stage."); + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + }else{ + if(gaveItems == null){ + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + } else if(cm.itemQuantity(4001022) >= 15){ + cm.sendOk("Good job! you have collected all 15 #b#t4001022#'s#k"); + }else{ + cm.sendOk("Sorry you don't have all 15 #b#t4001022#'s#k"); + cm.dispose(); + } + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + } + } + }else if (status == 1){ + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.removeAll(4001022); + cm.givePartyExp("LudiPQ2nd"); + eim.setProperty("2stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.dispose(); + } + } +} + + +function isLeader(){ + if(cm.getParty() == null) + return false; + else + return cm.isLeader(); +} diff --git a/scripts/npc/world0/2040038.js b/scripts/npc/world0/2040038.js new file mode 100644 index 0000000000..0f6da2664c --- /dev/null +++ b/scripts/npc/world0/2040038.js @@ -0,0 +1,112 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Yellow Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010300 +@ Function = LPQ - 3rd Stage +@ +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose();//ExitChat + } else if (mode == 0) { + cm.dispose();//No + } else {//Regular Talk + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "3rd"; + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendNext("Hi. Welcome to the " + nthtext + " stage."); + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + } else { + if (!isLeader()) { + if (gaveItems == null) { + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + } else { + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + } else { + if (gaveItems == null) { + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + } else if (cm.itemQuantity(4001022) >= 32) { + cm.sendOk("Good job! you have collected all 32 #b#t4001022#'s#k"); + } else { + cm.sendOk("Sorry you don't have all 32 #b#t4001022#'s#k"); + cm.dispose(); + } + } else { + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + } + } + } else if (status == 1) { + cm.sendOk("You may continue to the next stage!"); + + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.removeAll(4001022); + cm.givePartyExp("LudiPQ3rd"); + eim.setProperty("3stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.dispose(); + } + } +} + +function isLeader(){ + if (cm.getParty() == null) + return false; + else + return cm.isLeader(); +} diff --git a/scripts/npc/world0/2040039.js b/scripts/npc/world0/2040039.js new file mode 100644 index 0000000000..97109adf87 --- /dev/null +++ b/scripts/npc/world0/2040039.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Lime Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010400 +@ Function = LPQ - 4th Stage +@ +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose();//ExitChat + }else if (mode == 0){ + cm.dispose();//No + }else{ //Regular Talk + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "4th"; + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendNext("Hi. Welcome to the " + nthtext + " stage."); + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + }else{ + if(gaveItems == null){ + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + } else if(cm.itemQuantity(4001022) >= 6){ + cm.sendOk("Good job! you have collected all 6 #b#t4001022#'s#k"); + }else{ + cm.sendOk("Sorry you don't have all 6 #b#t4001022#'s#k"); + cm.dispose(); + } + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + } + } + }else if (status == 1){ + cm.sendOk("You may continue to the next stage!"); + + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.removeAll(4001022); + cm.givePartyExp("LudiPQ4th"); + eim.setProperty("4stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.dispose(); + } + } +} + + +function isLeader(){ + if(cm.getParty() == null){ + return false; + }else{ + return cm.isLeader(); + } +} diff --git a/scripts/npc/world0/2040040.js b/scripts/npc/world0/2040040.js new file mode 100644 index 0000000000..945151e572 --- /dev/null +++ b/scripts/npc/world0/2040040.js @@ -0,0 +1,116 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Green Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010500 +@ Function = LPQ - 5th Stage +@ + */ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + + + if (mode == -1) { + cm.dispose();//ExitChat + }else if (mode == 0){ + cm.dispose();//No + }else{ //Regular Talk + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "5th"; + + + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendNext("Hi. Welcome to the " + nthtext + " stage. This is the 2nd stage, but everyone has to cooperate. There are 6 portals here. One is guarded by undefeatable monsters, and one is very high. I'd like you and your party to go in each one and break the boxes inside. Bring back the drops -- there should be 24.");//not 24! + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me."); + cm.dispose(); + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + }else{ + if(gaveItems == null){ + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + } else if(cm.itemQuantity(4001022) >= 24){ + cm.sendOk("Good job! you have collected all 24 #b#t4001022#'s#k"); + }else{ + cm.sendOk("Sorry you don't have all 24 #b#t4001022#'s#k"); + cm.dispose(); + } + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + }} + }else if (status == 1){ + cm.removeAll(4001022); + + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.givePartyExp("LudiPQ5th"); + eim.setProperty("5stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.dispose(); + } + } +} + + +function isLeader(){ + if(cm.getParty() == null){ + return false; + }else{ + return cm.isLeader(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040041.js b/scripts/npc/world0/2040041.js new file mode 100644 index 0000000000..2a1f833b5e --- /dev/null +++ b/scripts/npc/world0/2040041.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Moogra +@ NPC = Aqua Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010600 +@ Function = LPQ - 6th Stage +*/ + +function start() { + cm.sendOk("Try to find the right combination of numbers to reach the top."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040042.js b/scripts/npc/world0/2040042.js new file mode 100644 index 0000000000..6e417436c0 --- /dev/null +++ b/scripts/npc/world0/2040042.js @@ -0,0 +1,119 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Sky-Blue Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010700 +@ Function = LPQ - 7 Stage +@ +@ Description: You need a ranged person here. The ranged person must kill the three Ratz, and they'll trigger something. What's next is for you to find out! Get me 3 passes! +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + }else if (mode == 0){ + cm.dispose(); + }else{ + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "7th"; + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendOk("Hi. Welcome to the " + nthtext + " stage. You need a ranged person here. The ranged person must kill the three Ratz, and they'll trigger something. What's next is for you to find out! Get me 3 passes!"); + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.sendOk("Hurry, goto the next stage, the portal is open!"); + cm.dispose(); + } + } + if(gaveItems == null){ + cm.sendSimple("What's up?\r\n#L0#I've got your passes!#l\r\n"); // #L1#There's something wrong here.#l + } + } + }else if (status == 1){ + if (selection == 0) { + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + } else if(cm.itemQuantity(4001022) >= 3){ + cm.sendOk("Good job! you have collected all 3 #b#t4001022#'s#k"); + }else{ + cm.sendOk("Sorry you don't have all 3 #b#t4001022#'s#k"); + cm.dispose(); + } + } else if (selection == 1) { + if (cm.mapMobCount()==0) { + cm.sendOk("Good job! You've killed all the Rombards!"); + }else{ + cm.sendOk("What are you talking about? Kill those Rombards!"); + cm.dispose(); + } + } + }else if (status == 2){ + cm.removeAll(4001022); + + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.givePartyExp("LudiPQ7th"); + eim.setProperty("7stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.dispose(); + } + } +} + +function isLeader(){ + if(cm.getParty() == null) + return false; + else + return cm.isLeader(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040043.js b/scripts/npc/world0/2040043.js new file mode 100644 index 0000000000..75a7025b36 --- /dev/null +++ b/scripts/npc/world0/2040043.js @@ -0,0 +1,167 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Twdtwd +@ +@ NPC = Blue Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010800 +@ Function = LPQ - 8 Stage +@ +@ Description: Used to find the combo to unlock the next door. Players stand on 5 different crates to guess the combo. +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; +var nthtext = "8th"; + +function start() { + status = -1; + action(1, 0, 0); +} + +function generateCombo() { + var countPicked = 0; + var positions = Array(0,0,0,0,0,0,0,0,0); + while(countPicked < 5) { + var picked = Math.floor(Math.random() * positions.length); + if(positions[picked] == 1) // Don't let it pick one its already picked. + continue; + + positions[picked] = 1; + countPicked++; + } + + var returnString = ""; + for(var i = 0; i < positions.length; i++) { + returnString += positions[i]; + if(i != positions.length - 1) + returnString += ","; + } + + return returnString; + +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + }else if (mode == 0){ + cm.dispose(); + }else{ + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendOk("Hi. Welcome to the " + nthtext + " stage."); + eim.setProperty("leader" + nthtext + "preamble","done"); + eim.setProperty("stage" + nthtext + "combo", generateCombo()); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.sendOk("Hurry, go to the next stage, the portal is open!"); + cm.dispose(); + } + } + if(gaveItems == null){ + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayers().size()) { + cm.sendOk("Please wait for all of your party members to get here."); + cm.dispose(); + return; + } + objset = [0,0,0,0,0,0,0,0,0]; + var playersOnCombo = 0; + var map = cm.getPlayer().getMap(); + for (var i = 0; i < party.size(); i++) { + for (var y = 0; y < map.getAreas().size(); y++) { + if (map.getArea(y).contains(party.get(i).getPosition())) { + playersOnCombo++; + objset[y] = 1; + //cm.mapMessage(5, "Player found on " + (y + 1)); + break; + } + } + } + + if (playersOnCombo == 5 || cm.getPlayer().gmLevel() > 0) { + var combo = eim.getProperty("stage" + nthtext + "combo").split(','); + var correctCombo = true; + for (i = 0; i < objset.length && correctCombo; i++) + if (parseInt(combo[i]) != objset[i]) { + //cm.mapMessage(5, "Combo failed on " + (i + 1)); + correctCombo = false; + } + if (correctCombo || cm.getPlayer().gmLevel() > 0) { + clear(eim, cm); + cm.dispose(); + } else { // Wrong + //cm.sendOk(eim.getProperty("stage" + nthtext + "combo")); + failstage(eim, cm); + cm.dispose(); + } + } else { + cm.sendNext("It looks like you haven't found the 5 boxes just yet. Please think of a different combination of boxes Only 5 are allowed to stand on boxes, and if you move it may not count as an answer, so please keep that in mind. Keep going!"); + cm.dispose(); + } + } + } + } + } +} + +function clear(eim, cm) { + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + eim.setProperty("8stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + cm.givePartyExp("LudiPQ8th"); +} + +function failstage(eim, cm) { + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Failed")); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/wrong_kor")); +} + +function isLeader(){ + if(cm.getParty() == null) + return false; + else + return cm.isLeader(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040044.js b/scripts/npc/world0/2040044.js new file mode 100644 index 0000000000..22bffc14cd --- /dev/null +++ b/scripts/npc/world0/2040044.js @@ -0,0 +1,112 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Twdtwd +@ +@ NPC = Violet Balloon +@ Map = Hidden-Street +@ NPC MapId = 922010900 +@ Function = LPQ - Last Stage +@ +@ Description: Used after the boss is killed to trigger the bonus stage. +*/ + +importPackage(Packages.tools); + +var status = 0; +var party; +var preamble; +var gaveItems; +var nthtext = "last"; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + }else if (mode == 0){ + cm.dispose(); + }else{ + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + gaveItems = eim.getProperty("leader" + nthtext + "gaveItems"); + if (preamble == null) { + cm.sendOk("Hi. Welcome to the " + nthtext + " stage."); + eim.setProperty("leader" + nthtext + "preamble","done"); + cm.dispose(); + }else{ + if(!isLeader()){ + if(gaveItems == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.sendOk("Hurry, go to the next stage, the portal is open!"); + cm.dispose(); + } + } else if(gaveItems == null){ + cm.sendSimple("What's up?\r\n#L0#I've got your passes!#l\r\n"); // #L1#There's something wrong here.#l + } else { + cm.dispose(); + } + } + }else if (status == 1){ + if (selection == 0) { + if(cm.itemQuantity(4001023) >= 1) { + cm.sendOk("Good job! you have collected the #b#t4001023#!#k"); + }else{ + cm.sendOk("Sorry you don't have the #b#t4001023#.#k"); + cm.dispose(); + } + } + }else if (status == 2){ + cm.removeAll(4001023); + + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + //map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + + cm.givePartyExp("LudiPQLast"); + eim.setProperty("9stageclear","true"); + eim.setProperty("leader" + nthtext + "gaveItems","done"); + eim.schedule("startBonus", 1000); + cm.dispose(); + } + } +} + +function isLeader(){ + if(cm.getParty() == null) + return false; + else + return cm.isLeader(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2040045.js b/scripts/npc/world0/2040045.js new file mode 100644 index 0000000000..7fdc72e933 --- /dev/null +++ b/scripts/npc/world0/2040045.js @@ -0,0 +1,75 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Pink Balloon +@ Map = Hidden-Street +@ NPC MapId = 922011000 +@ Function = LPQ - B Stage +@ +*/ + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose();//ExitChat + }else if (mode == 0){ + cm.sendOk("Wise choice. Who wouldn't want free mesos from the #bBonus Stage#k."); + cm.dispose();//No + } else { + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + if (status == 0) + cm.sendYesNo("Would you like to leave the bonus?"); + else if (status == 1) { + if(isLeader()) + cm.sendOk("Ok, Your loss"); + else{ + cm.sendOk("Ask your #bParty-Leader#k to come talk to me."); + cm.dispose(); + } + }else if (status == 2) { + var map = eim.getMapInstance(922011100); + var party = eim.getPlayers(); + cm.warpMembers(map, "st00", party); + cm.dispose(); + } + } +} + +function isLeader(){ + if(cm.getParty() == null){ + return false; + }else{ + return cm.isLeader(); + } +} diff --git a/scripts/npc/world0/2040046.js b/scripts/npc/world0/2040046.js new file mode 100644 index 0000000000..afed8a51a6 --- /dev/null +++ b/scripts/npc/world0/2040046.js @@ -0,0 +1,74 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Robert Holly - Ludibrium: Ludibrium (220000000) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status == 0 && mode == 0) { + cm.sendNext("I see... you don't have as many friends as I thought you would. Hahaha, just kidding! Anyway if you feel like changing your mind, please feel free to come back and we'll talk business. If you make a lot of friends, then you know ... hehe ..."); + cm.dispose(); + return; + } else if (status >= 1 && mode == 0) { + cm.sendNext("I see... I don't think you don't have as many friends as I thought you would. If not, you just don't have 240,000 mesos with you right this minute? Anyway, if you ever change your mind, come back and we'll talk business. That is, of course, once you have get some financial relief. .. hehe ..."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendYesNo("I hope I can make as much as yesterday... well, hello! Don't you want to extend your buddy list? You look like someone who'd have a whole lot of friends... well, what do you think? With some money I can make it happen for you. Remember, though, it only applies to one character at a time, so it won't affect any of your other characters on your account. Do you want to extend your buddy list?"); + } else if (status == 1) { + cm.sendYesNo("Alright, good call! It's not that expensive actually. #b240,000 mesos and I'll add 5 more slots to your buddy list#k. And no, I won't be selling them individually. Once you buy it, it's going to be permanently on your buddy list. So if you're one of those that needs more space there, then you might as well do it. What do you think? Will you spend 240,000 mesos for it?"); + } else if (status == 2) { + var capacity = cm.getPlayer().getBuddylist().getCapacity(); + if (capacity >= 50 || cm.getMeso() < 240000){ + cm.sendNext("Hey... are you sure you have #b240,000 mesos#k? If so, then check and see if you have extended your buddy list to the max. Even if you pay up, the most you can have on your buddy list is #b50#k."); + cm.dispose(); + } else { + var newcapacity = capacity + 5; + cm.gainMeso(-240000); + cm.getPlayer().setBuddyCapacity(newcapacity) + cm.sendOk("Alright! Your buddy list will have 5 extra slots by now. Check and see for it yourself. And if you still need more room on your buddy list, you know who to find. Of course, it isn't going to be for free ... well, so long ..."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040047.js b/scripts/npc/world0/2040047.js new file mode 100644 index 0000000000..4964970b34 --- /dev/null +++ b/scripts/npc/world0/2040047.js @@ -0,0 +1,60 @@ +/** + * @author: Eric + * @npc: Sgt. Anderson + * @maps: Ludibrium PQ Maps + * @func: Ludi PQ (Warps you out) +*/ + +var status = -1; + +function start() { + if (cm.getMapId() != 922010000 && cm.getMapId() != 922010800) { + cm.sendYesNo("You'll have to start over from scratch if you want to take a crack at this quest after leaving this stage. Are you sure you want to leave this map?"); + } else if (cm.getMapId() == 922010800) { + cm.sendSimple("Do you need some help?#b\r\n#L0#I need Platform Puppet.#l\r\n#L1#I want to get out of here.#l#k"); + } else { + cm.removeAll(4001022); // pass of dimension + cm.removeAll(4001023); + cm.removeAll(4001454); // platform puppet + cm.warp(221024500, 0); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else if (mode == 0 && (status == 0 || status == -1)) { + cm.sendNext("I see. Gather up the strength of your party members and try harder!"); + cm.dispose(); + return; + } else + status--; + if (status == 0) { + if (cm.getMapId() == 922010800) { + if (selection == 0) { + cm.sendNext("You have received a Platform Puppet. If you place it on the platform, it will have the same effect as someone standing there.\r\nRemember, though, this is an item that can only be used in here."); + cm.gainItem(4001454, 1); + cm.dispose(); + } else { + cm.sendYesNo("You'll have to start over from scratch if you want to take a crack at this quest after leaving this stage. Are you sure you want to leave this map?"); + } + } else { + var eim = cm.getPlayer().getEventInstance(); + if(eim != null) { + eim.removePlayer(cm.getPlayer()); + } else { + cm.warp(922010000, 0); + } + cm.dispose(); + } + } else if (status == 1) { + var eim = cm.getPlayer().getEventInstance(); + if(eim != null) { + eim.removePlayer(cm.getPlayer()); + } else { + cm.warp(922010000, 0); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2040048.js b/scripts/npc/world0/2040048.js new file mode 100644 index 0000000000..7304b999fa --- /dev/null +++ b/scripts/npc/world0/2040048.js @@ -0,0 +1,90 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var pay = 1800; +var ticket = 4031134; +var msg; +var check; +var access = false; +var status = 0; + +function start() { + cm.sendSimple("Have you heard of the beach with a spectacular view of the ocean called #b#m110000000##k, located a little far from #m"+cm.getPlayer().getMapId()+"#? I can take you there right now for either #b"+pay+" mesos#k, or if you have #b#t"+ticket+"##k with you, in which case you'll be in for free.\r\n\r\n#L0##bI'll pay "+pay+" mesos.#k#l\r\n#L1##bI have #t"+ticket+"##k#l\r\n#L2##bWhat is #t"+ticket+"#?#k#l"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 0 && status == 1) { + cm.sendNext("You must have some buiness to take care of here. You must be tired from all that traveling and hunting. Go take some rest, and if you feel like changing your mind, then come talk to me."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 0 || selection == 1) { + check = selection; + if (selection == 0) + msg = "You want to pay #b"+pay+" mesos#k and leave for #m110000000#?"; + else if (selection == 1) + msg = "So you have #b#t"+ticket+"##k? You can always head over to #m110000000# with that."; + cm.sendYesNo(msg+" Okay!! Please beware that you may be running into some monsters around there though, so make sure not to get caught off-guard. Okat, would you like to head over to #m110000000# right now?"); + } else if (selection == 2) { + cm.sendNext("You must be curious about #b#t"+ticket+"##k. Yeah, I can see that. #t"+ticket+"# is an item where as long as you have in possession, you may make your way to #m110000000# for free. It's such a rare item that even we had to buy those, but unfortunately I lost mine a few weeks ago during a long weekend."); + status = 3; + } + } else if (status == 2) { + if (check == 0) { + if (cm.getPlayer().getMeso() < pay) { + cm.sendOk("I think you're lacking mesos. There are many ways to gather up some money, you know, like ... selling your armor ... defeating the monsters ... doing quests ... you know what I'm talking about."); + cm.dispose(); + } else { + cm.gainMeso(-pay); + access = true; + } + } else if (check == 1) { + if (!cm.haveItem(ticket)) { + cm.sendOk("Hmmm, so where exactly is #b#t"+ticket+"##k?? Are you sure you have them? Please double-check."); + cm.dispose(); + } else + access = true; + } + if (access == true) { + cm.getPlayer().saveLocation("FLORINA"); + cm.warp(110000000); + cm.dispose(); + } + } else if (status == 3) + cm.sendNext("You must be curious about #b#t"+ticket+"##k. Yeah, I can see that. #t"+ticket+"# is an item where as long as you have in possession, you may make your way to #m110000000# for free. It's such a rare item that even we had to buy those, but unfortunately I lost mine a few weeks ago during a long weekend."); + else if (status == 4) + cm.sendPrev("I came back without it, and it just feels awful not having it. Hopefully someone picked it up and put it somewhere safe. Anyway this is my story and who knows, you may be able to pick it up and put it to good use. If you have any questions, feel free to ask"); + else if (status == 5) + cm.dispose(); + } +} diff --git a/scripts/npc/world0/2040050.js b/scripts/npc/world0/2040050.js new file mode 100644 index 0000000000..4e5faa9a3e --- /dev/null +++ b/scripts/npc/world0/2040050.js @@ -0,0 +1,107 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Eurek the Alchemist - Multiple Place +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var menu = ""; +var set; +var makeitem; +var access = true; +var reqitem = new Array(); +var cost = 4000; +var makeditem = new Array(4006000,4006001); +var reqset = new Array([[[4000046,20],[4000027,20],[4021001,1]], + [[4000025,20],[4000049,20],[4021006,1]], + [[4000129,15],[4000130,15],[4021002,1]], + [[4000074,15],[4000057,15],[4021005,1]], + [[4000054,7],[4000053,7],[4021003,1]]], + + [[[4000046,20],[4000027,20],[4011001,1]], + [[4000014,20],[4000049,20],[4011003,1]], + [[4000132,15],[4000128,15],[4011005,1]], + [[4000074,15],[4000069,15],[4011002,1]], + [[4000080,7],[4000079,7],[4011004,1]]]); + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1 || (mode == 0 && (status ==1 || status == 2))) { + cm.dispose(); + return; + } + if(mode == 0) { + cm.sendNext("Not enough materials, huh? No worries. Just come see me once you gather up the necessary items. There are numerous ways to obtain them, whether it be hunting or purchasing it from others, so keep going."); + cm.dispose(); + } + if(mode == 1) { + status++; + } + if(status == 0) { + cm.sendNext("Alright, mix up the frog's tongue with the squirrel's tooth and ... oh yeah! Forgot to put in the sparkling white powder!! Man, that could have been really bad ... Whoa!! How long have you been standing there? I maaaay have been a little carried away with my work ... hehe."); + } else if(status == 1) { + cm.sendSimple("As you can see, I'm just a traveling alchemist. I may be in training, but I can still make a few things that you may need. Do you want to take a look?\r\n\r\n#L0##bMake Magic Rock#k#l\r\n#L1##bMake The Summoning Rock#k#l"); + } else if(status == 2) { + set = selection; + makeitem = makeditem[set]; + for(i=0; i < reqset[set].length; i++) { + menu += "\r\n#L"+i+"##bMake it using #t"+reqset[set][i][0][0]+"# and #t"+reqset[set][i][1][0]+"##k#l"; + } + cm.sendSimple("Haha... #b#t"+makeitem+"##k is a mystical rock that only I can make. Many travelers seems to need this for most powerful skills that require more than just MP and HP. There are 5 ways to make #t"+makeitem+"#. Which way do you want to make it?"+menu); + } else if(status == 3) { + set = reqset[set][selection]; + reqitem[0] = new Array(set[0][0],set[0][1]); + reqitem[1] = new Array(set[1][0],set[1][1]); + reqitem[2] = new Array(set[2][0],set[2][1]); + menu = ""; + for(i=0; i < reqitem.length; i++) { + menu += "\r\n#v"+reqitem[i][0]+"# #b"+reqitem[i][1]+" #t"+reqitem[i][0]+"#s#k"; + } + menu += "\r\n#i4031138# #b"+cost+" mesos#k"; + cm.sendYesNo("To make #b5 #t"+makeitem+"##k, I'll need the following items. Most of them can be obtained through hunting, so it won't be terriblt difficult for you to get them. What do you think? Do you want some?\r\n"+menu); + } else if(status == 4) { + for(i=0; i < reqitem.length; i++) { + if(!cm.haveItem(reqitem[i][0],reqitem[i][1])) + access = false; + } + if(access == false || !cm.canHold(makeitem) || cm.getMeso() < cost) { + cm.sendNext("Please check and see if you have all the items needed, or if your etc. inventory is full or not"); + } else { + cm.sendOk("Here, take the 5 pieces of #b#t"+makeitem+"##k. Even I have to admit, this is a masterpiece. Alright, if you need my help down the road, by all means come back and talk to me!"); + cm.gainItem(reqitem[0][0],-reqitem[0][1]); + cm.gainItem(reqitem[1][0],-reqitem[1][1]); + cm.gainItem(reqitem[2][0],-reqitem[2][1]); + cm.gainMeso(-cost); + cm.gainItem(makeitem,5); + } + cm.dispose(); + } +} diff --git a/scripts/npc/world0/2040052.js b/scripts/npc/world0/2040052.js new file mode 100644 index 0000000000..cf576afcb5 --- /dev/null +++ b/scripts/npc/world0/2040052.js @@ -0,0 +1,76 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Wiz the Librarian - Helios Tower (222020000) +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var questid = new Array(3615,3616,3617,3618,3630,3633,3639); +var questitem = new Array(4031235,4031236,4031237,4031238,4031270,4031280,4031298); +var counter = 0; +var books; +var i; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if(counter == 0) { + books = ""; + for(i=0; i < questid.length; i++) { + if(cm.isQuestCompleted(questid[i])) { + counter += 1; + books += "\r\n#v"+questitem[i]+"# #b#t"+questitem[i]+"##k"; + } + } + if(counter == 0) + counter = 99; + } + if(counter == 99) { + cm.sendOk("#b#h ##k has not returned a single storybook yet."); + cm.dispose(); + } else { + cm.sendNext("Let's see.. #b#h ##k have returned a total of #b"+counter+"#k books. The list of returned books is as follows:"+books); + } + } else if (status == 1) { + cm.sendNextPrev("The library is settling down now thanks chiefly to you, #b#h ##k's immense help. If the story gets mixed up once again, then I'll be counting on you to fix it once more."); + } else if (status == 2) { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2041000.js b/scripts/npc/world0/2041000.js new file mode 100644 index 0000000000..39a33752f8 --- /dev/null +++ b/scripts/npc/world0/2041000.js @@ -0,0 +1,32 @@ +function start() { + if(cm.haveItem(4031045)){ + var em = cm.getEventManager("Trains"); + if (em.getProperty("entry") == "true") + cm.sendYesNo("Do you want to go to Orbis?"); + else{ + cm.sendOk("The train to Orbis is already travelling, please be patient for the next one."); + cm.dispose(); + } + }else{ + cm.sendOk("Make sure you got a Orbis ticket to travel in this train. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + + var em = cm.getEventManager("Trains"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031045, -1); + cm.warp(220000111); + cm.dispose(); + } + else { + cm.sendOk("The train to Orbis is ready to take off, please be patient for the next one."); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2041001.js b/scripts/npc/world0/2041001.js new file mode 100644 index 0000000000..b5fe8f7adf --- /dev/null +++ b/scripts/npc/world0/2041001.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +Rosey (On Train) 2041001 +**/ + +var status = 0; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (status == 0) { + cm.sendYesNo("Do you wish to leave the train?"); + status++; + } else { + if ((status == 1 && type == 1 && selection == -1 && mode == 0) || mode == -1) { + cm.dispose(); + } else { + if (status == 1) { + cm.sendNext ("Alright, see you next time. Take care."); + status++; + } else if (status == 2) { + if (cm.getPlayer().getMapId() == 200000122) + cm.warp(200000121, 0);// back to orbis + else + cm.warp(220000110,0);// back to Ludi + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/2041007.js b/scripts/npc/world0/2041007.js new file mode 100644 index 0000000000..aa92e7e5b2 --- /dev/null +++ b/scripts/npc/world0/2041007.js @@ -0,0 +1,115 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Miyu + Ludibrium VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30030, 30020, 30000, 30250, 30190, 30150, 30050, 30280, 30240, 30300, 30160); +var fhair = Array(31040, 31000, 31150, 31280, 31160, 31120, 31290, 31270, 31030, 31230, 31010); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Welcome, welcome, welcome to the Ludibrium Hair Salon! Do you, by any chance, have a #b#t5150007##k or a #b#t5151007##k? If so, how about letting me take care of your hair? Please choose what you want to do with it...\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150007##t5150007##l\r\n#L2#Dye your hair: #i5151007##t5151007##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150007##t5150007##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151007##t5151007##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + } + } + cm.sendStyle("I can completely change the look of your hair. Aren't you ready for a change? With #b#t5150007##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can completely change the color of your hair. Aren't you ready for a change? With #b#t5151007##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150007) == true){ + cm.gainItem(5150007, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151007) == true){ + cm.gainItem(5151007, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150007, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151007, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2041008.js b/scripts/npc/world0/2041008.js new file mode 100644 index 0000000000..0b478a6abf --- /dev/null +++ b/scripts/npc/world0/2041008.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Seppy - Ludibrium : Ludibrium (220000000) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2041008); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2041009.js b/scripts/npc/world0/2041009.js new file mode 100644 index 0000000000..7ad8eb6dce --- /dev/null +++ b/scripts/npc/world0/2041009.js @@ -0,0 +1,113 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Mini + Ludibrium Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30250, 30190, 30150, 30050, 30280, 30240, 30300, 30160, 30650, 30540, 30640, 30680); +var fhair = Array(31150, 31280, 31160, 31120, 31290, 31270, 31030, 31230, 31010, 31640, 31540, 31680, 31600); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hi, I'm the assistant here. Don't worry, I'm plenty good enough for this. If you have #b#t5150012##k or #b#t5151006##k by any chance, then allow me to take care of the rest, alright?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150012##t5150012##l\r\n#L2#Dye your hair: #i5151006##t5151006##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150012##t5150012##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151006##t5151006##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that I came up with. Are you going to use #b#t5150010##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151006##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150012)){ + cm.gainItem(5150012, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } else if (beauty == 2){ + if (cm.haveItem(5151006)){ + cm.gainItem(5151006, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } else if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150012, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151006, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2041010.js b/scripts/npc/world0/2041010.js new file mode 100644 index 0000000000..f8878294a3 --- /dev/null +++ b/scripts/npc/world0/2041010.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Ellie + Ludibrium VIP Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Well, hello! Welcome to the Ludibrium Plastic Surgery! Would you like to transform your face into something new? With a #b#t5152007##k, you can let us take care of the rest and have the face you've always wanted~!\r\n#L1#I would like to buy a #b#t5152007##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152007, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + cm.sendStyle("Let's see... I can totally transform your face into something new. Don't you want to try it? For #b#t5152007##k, you can get the face of your liking. Take your time in choosing the face of your preference.", facenew); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152007)){ + cm.gainItem(5152007, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } + } +} diff --git a/scripts/npc/world0/2041013.js b/scripts/npc/world0/2041013.js new file mode 100644 index 0000000000..8920e28bc2 --- /dev/null +++ b/scripts/npc/world0/2041013.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var price = 1000000; +var skin = Array(0, 1, 2, 3, 4); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Oh, hello! Welcome to the Ludibrium Skin-Care! Are you interested in getting tanned and looking sexy? How about a beautiful, snow-white skin? If you have #b#t5153002##k, you can let us take care of the rest and have the kind of skin you've always dreamed of!\r\n#L1#I would like to buy a #b#t5153002##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5153002, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + cm.sendStyle("With our specialized machine, you can see the way you'll look after the treatment PRIOR to the procedure. What kind of a look are you looking for? Go ahead and choose the style of your liking~!", skin); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5153002) == true){ + cm.gainItem(5153002, -1); + cm.setSkin(skin[selection]); + cm.sendOk("Enjoy your new and improved skin!"); + } else { + cm.sendOk("Um...you don't have the skin-care coupon you need to receive the treatment. Sorry, but I am afraid we can't do it for you..."); + } + } + } +} diff --git a/scripts/npc/world0/2041023.js b/scripts/npc/world0/2041023.js new file mode 100644 index 0000000000..a44cba84e1 --- /dev/null +++ b/scripts/npc/world0/2041023.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//By Moogra + +function start() { + cm.sendOk("You seems to have no reason to meet element-based Thanatos."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2041025.js b/scripts/npc/world0/2041025.js new file mode 100644 index 0000000000..f34423d9da --- /dev/null +++ b/scripts/npc/world0/2041025.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//By Moogra + +function start() { + cm.sendYesNo("Beep... beep... you can make your escape to a safer place through me. Beep... beep... would you like to leave this place?"); +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(220080000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2042000.js b/scripts/npc/world0/2042000.js new file mode 100644 index 0000000000..e93563a233 --- /dev/null +++ b/scripts/npc/world0/2042000.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + if (cm.getPlayer().getParty() != null) + cm.sendCPQMapLists(); + else { + cm.sendOk("You must be in a party!"); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) { + if (cm.fieldTaken(selection)) { + if (cm.fieldLobbied(selection)) { + cm.challengeParty(selection); + cm.dispose(); + } else { + cm.sendOk("The room is taken."); + cm.dispose(); + } + } else { + cm.cpqLobby(selection); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2050004.js b/scripts/npc/world0/2050004.js new file mode 100644 index 0000000000..d266a7bbd1 --- /dev/null +++ b/scripts/npc/world0/2050004.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2050004); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2060005.js b/scripts/npc/world0/2060005.js new file mode 100644 index 0000000000..605a552eff --- /dev/null +++ b/scripts/npc/world0/2060005.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + if(cm.isQuestCompleted(6002)) + cm.sendOk("Thanks for saving the pork."); + else if(cm.getClient().getChannelServer().getMapFactory().getMap(923010000).getCharacters().size() > 0) + cm.sendOk("There is currently someone in this map, come back later."); + else if(cm.isQuestStarted(6002)) + cm.warp(923010000); + else cm.sendSimple("Only few adventurers, from a selected public, are eligible to protect the Watch Hog."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2060008.js b/scripts/npc/world0/2060008.js new file mode 100644 index 0000000000..2a1317b8a9 --- /dev/null +++ b/scripts/npc/world0/2060008.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2060008); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2060009.js b/scripts/npc/world0/2060009.js new file mode 100644 index 0000000000..c6880869da --- /dev/null +++ b/scripts/npc/world0/2060009.js @@ -0,0 +1,52 @@ +var status = 0; +var menu; +var payment = false; +var atHerbTown = false; + +function start() { + if(cm.getPlayer().getMap().getId() == 251000100)atHerbTown = true; + + if (cm.haveItem(4031242)){ + if(atHerbTown) + menu = "#L0##bI will use #t4031242##k to move to #b#m230030200##k.#l\r\n#L1#Go to #b#m230000000##k after paying #b10000mesos#k.#l"; + else + menu = "#L0##bI will use #t4031242##k to move to #b#m230030200##k.#l\r\n#L1#Go to #b#m251000000##k after paying #b10000mesos#k.#l"; + }else { + if(atHerbTown) + menu = "#L0#Go to #b#m230030200##k after paying #b1000mesos#k.#l\r\n#L1#Go to #b#m230000000##k after paying #b10000mesos#k.#l"; + else + menu = "#L0#Go to #b#m230030200##k after paying #b1000mesos#k.#l\r\n#L1#Go to #b#m251000000##k after paying #b10000mesos#k.#l"; + payment = true; + } + cm.sendSimple ("Ocean are all connected to each other. Place you can't reach by foot can easily reached oversea. How about taking #bDolphin Taxi#k with us today?\r\n"+menu); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + if (selection == 0) { + if(payment) { + if(cm.getPlayer().getMeso() < 1000) { + cm.sendOk("I don't think you have enough money..."); + cm.dispose(); + } else + cm.gainMeso(-1000); + } else + cm.gainItem(4031242,-1); + cm.warp(230030200); + cm.dispose(); + return; + }else if(selection == 1){ + if (cm.getPlayer().getMeso() < 10000) { + cm.sendOk("I don't think you have enough money..."); + cm.dispose(); + return; + }else{ + cm.gainMeso(-10000); + cm.warp(atHerbTown ? 230000000 : 251000100); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2060100.js b/scripts/npc/world0/2060100.js new file mode 100644 index 0000000000..f4de9b762f --- /dev/null +++ b/scripts/npc/world0/2060100.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//carta +function start(){ + if(cm.isQuestStarted(6301)) { + if (cm.haveItem(4000175)) + cm.warp(923000000) + else + cm.sendOk("In order to open the crack of dimension you will have to posess one piece of Miniature Pianus. Those could be gained by defeating a Pianus."); + } else + cm.sendOk("I'm #bCarta the sea-witch.#k Don't fool around with me, as I'm known for my habit of turning people into worms."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2070000.js b/scripts/npc/world0/2070000.js new file mode 100644 index 0000000000..14c470fd83 --- /dev/null +++ b/scripts/npc/world0/2070000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2070000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2080000.js b/scripts/npc/world0/2080000.js new file mode 100644 index 0000000000..f3b81fbdcc --- /dev/null +++ b/scripts/npc/world0/2080000.js @@ -0,0 +1,271 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var stimulator = false; +var item; +var mats; +var matQty; +var cost; +var stimID; + +function start() { + cm.getPlayer().setCS(true); + var selStr = "A dragon's power is not to be underestimated. If you like, I can add its power to one of your weapons. However, the weapon must be powerful enough to hold its potential...#b" + var options = new Array("What's a stimulator?","Create a Warrior weapon","Create a Bowman weapon","Create a Magician weapon","Create a Thief weapon","Create a Pirate Weapon", + "Create a Warrior weapon with a Stimulator","Create a Bowman weapon with a Stimulator","Create a Magician weapon with a Stimulator","Create a Thief weapon with a Stimulator","Create a Pirate Weapon with a Stimulator"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + cm.sendSimple(selStr); +} + +function action(mode, type, selection) { + if (mode > 0) + status++; + else { + cm.dispose(); + return; + } + if (status == 1) { + selectedType = selection; + if (selectedType > 5) { + stimulator = true; + selectedType -= 5; + } + else + stimulator = false; + if (selectedType == 0) { //What's a stim? + cm.sendNext("A stimulator is a special potion that I can add into the process of creating certain items. It gives it stats as though it had dropped from a monster. However, it is possible to have no change, and it is also possible for the item to be below average. There's also a 10% chance of not getting any item when using a stimulator, so please choose wisely.") + cm.dispose(); + } else if (selectedType == 1){ //warrior weapon + var selStr = "Very well, then which Warrior weapon shall recieve a dragon's power?#b"; + var weapon = new Array ("Dragon Carbella#k - Lv. 110 One-Handed Sword#b","Dragon Axe#k - Lv. 110 One-Handed Axe#b","Dragon Mace#k - Lv. 110 One-Handed BW#b","Dragon Claymore#k - Lv. 110 Two-Handed Sword#b","Dragon Battle Axe#k - Lv. 110 Two-Handed Axe#b","Dragon Flame#k - Lv. 110 Two-Handed BW#b", + "Dragon Faltizan#k - Lv. 110 Spear#b","Dragon Chelbird#k - Lv. 110 Polearm#b"); + for (var i = 0; i < weapon.length; i++){ + selStr += "\r\n#L" + i + "# " + weapon[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 2){ //bowman weapon + var selStr = "Very well, then which Bowman weapon shall recieve a dragon's power?#b"; + var weapon = new Array ("Dragon Shiner Bow#k - Lv. 110 Bow#b","Dragon Shiner Cross#k - Lv. 110 Crossbow#b"); + for (var i = 0; i < weapon.length; i++){ + selStr += "\r\n#L" + i + "# " + weapon[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 3){ //magician weapon + var selStr = "Very well, then which Magician weapon shall recieve a dragon's power?#b"; + var weapon = new Array ("Dragon Wand#k - Lv. 108 Wand#b","Dragon Staff#k - Lv. 110 Staff#b"); + for (var i = 0; i < weapon.length; i++){ + selStr += "\r\n#L" + i + "# " + weapon[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 4){ //thief weapon + var selStr = "Very well, then which Thief weapon shall recieve a dragon's power?#b"; + var weapon = new Array ("Dragon Kanzir#k - Lv. 110 STR Dagger#b","Dragon Kreda#k - Lv. 110 LUK Dagger#b","Dragon Green Sleve#k - Lv. 110 Claw#b"); + for (var i = 0; i < weapon.length; i++){ + selStr += "\r\n#L" + i + "# " + weapon[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (selectedType == 5){ //pirate weapon + var selStr = "Very well, then which Pirate weapon shall recieve a dragon's power?#b"; + var weapon = new Array ("Dragon Slash Claw#k - Lv. 110 Knuckle#b","Dragonfire Revolver#k - Lv. 110 Gun#b"); + for (var i = 0; i < weapon.length; i++){ + selStr += "\r\n#L" + i + "# " + weapon[i] + "#l"; + } + cm.sendSimple(selStr); + } + } else if (status == 2) { + selectedItem = selection; + if (selectedType == 1){ //warrior weapon + var itemSet = new Array(1302059,1312031,1322052,1402036,1412026,1422028,1432038,1442045); + var matSet = new Array(new Array(1302056,4000244,4000245,4005000),new Array(1312030,4000244,4000245,4005000),new Array(1322045,4000244,4000245,4005000),new Array(1402035,4000244,4000245,4005000), + new Array(1412021,4000244,4000245,4005000),new Array(1422027,4000244,4000245,4005000),new Array(1432030,4000244,4000245,4005000),new Array(1442044,4000244,4000245,4005000)); + var matQtySet = new Array(new Array(1,20,25,8),new Array(1,20,25,8),new Array(1,20,25,8),new Array(1,20,25,8),new Array(1,20,25,8),new Array(1,20,25,8),new Array(1,20,25,8),new Array(1,20,25,8)); + var costSet = new Array(120000,120000,120000,120000,120000,120000,120000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 2){ //bowman weapon + var itemSet = new Array(1452044,1462039); + var matSet = new Array(new Array(1452019,4000244,4000245,4005000,4005002),new Array(1462015,4000244,4000245,4005000,4005002)); + var matQtySet = new Array(new Array(1,20,25,3,5),new Array(1,20,25,5,3)); + var costSet = new Array(120000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 3){ //magician weapon + var itemSet = new Array(1372032,1382036); + var matSet = new Array(new Array(1372010,4000244,4000245,4005001,4005003),new Array(1382035,4000244,4000245,4005001,4005003)); + var matQtySet = new Array(new Array(1,20,25,6,2),new Array(1,20,25,6,2)); + var costSet = new Array(120000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 4){ //thief weapon + var itemSet = new Array(1332049,1332050,1472051); + var matSet = new Array(new Array(1332051,4000244,4000245,4005000,4005002),new Array(1332052,4000244,4000245,4005002,4005003),new Array(1472053,4000244,4000245,4005002,4005003)); + var matQtySet = new Array(new Array(1,20,25,5,3),new Array(1,20,25,3,5),new Array(1,20,25,2,6)); + var costSet = new Array(120000,120000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } else if (selectedType == 5){ //pirate weapon + var itemSet = new Array(1482013,1492013); + var matSet = new Array(new Array(1482012,4000244,4000245,4005000,4005002),new Array(1492012,4000244,4000245,4005000,4005002)); + var matQtySet = new Array(new Array(1,20,25,5,3),new Array(1,20,25,3,5)); + var costSet = new Array(120000,120000); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + var prompt = "You want me to make a #t" + item + "#? In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + if(stimulator){ + stimID = getStimID(item); + prompt += "\r\n#i"+stimID+"# 1 #t" + stimID + "#"; + } + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + } else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#"; + } + if (cost > 0) + prompt += "\r\n#i4031138# " + cost + " meso"; + cm.sendYesNo(prompt); + } else if (status == 3) { + var complete = true; + + if(!cm.canHold(item)) { + cm.sendOk("Check your inventory for a free slot first."); + cm.dispose(); + return; + } + else if (cm.getMeso() < cost) { + cm.sendOk("My fee is for the good of all of Leafre. If you cannot pay it, then begone."); + cm.dispose(); + return; + } else { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + } + else if (!cm.haveItem(mats, matQty)) + complete = false; + + /* if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) { + complete = false; + } + } else { + if (!cm.haveItem(mats[i], matQty[i])) + complete=false; + } + } + } else { + if (!cm.haveItem(mats,matQty)) + complete=false; + } + */ + } + if (stimulator){ //check for stimulator + if (!cm.haveItem(stimID)) { + complete = false; + } + } + if (!complete) + cm.sendOk("I'm afraid that without the correct items, the dragon's essence would... not make for a very reliable weapon. Please bring the correct items next time."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } else + cm.gainItem(mats, -matQty); + cm.gainMeso(-cost); + if (stimulator) { //check for stimulator + cm.gainItem(stimID, -1); + var deleted = Math.floor(Math.random() * 10); + if (deleted != 0) { + cm.gainItem(item, 1, true, true); + cm.sendOk("The process is complete. Treat your weapon well, lest you bring the wrath of the dragons upon you."); + } else { + cm.sendOk("Unfortunately, the dragon's essence has... conflicted with your weapon. My apologies for your loss."); + } + } + else {//just give basic item + cm.gainItem(item, 1); + cm.sendOk("The process is complete. Treat your weapon well, lest you bring the wrath of the dragons upon you."); + } + } + cm.dispose(); + } +} + +function getStimID(equipID){ + var cat = Math.floor(equipID / 10000); + switch (cat){ + case 130: //1h sword + return 4130002; + case 131: //1h axe + return 4130003; + case 132: //1h bw + return 4130004; + case 140: //2h sword + return 4130005; + case 141: //2h axe + return 4130006; + case 142: //2h bw + return 4130007; + case 143: //spear + return 4130008; + case 144: //polearm + return 4130009; + case 137: //wand + return 4130010; + case 138: //staff + return 4130011; + case 145: //bow + return 4130012; + case 146: //xbow + return 4130013; + case 148: // Knuckle + return 4130016; + case 149: + return 4130017; + case 133: //dagger + return 4130014; + case 147: //claw + return 4130015; + } + return 4130002; +} \ No newline at end of file diff --git a/scripts/npc/world0/2080005.js b/scripts/npc/world0/2080005.js new file mode 100644 index 0000000000..7b8e392557 --- /dev/null +++ b/scripts/npc/world0/2080005.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2080005); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2081000.js b/scripts/npc/world0/2081000.js new file mode 100644 index 0000000000..7afb529b34 --- /dev/null +++ b/scripts/npc/world0/2081000.js @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var temp; +var cost; + +var status = 0; + +function start() { + cm.sendSimple("...Can I help you?\r\n#L0##bBuy the Magic Seed#k#l\r\n#L1##bDo something for Leafre#k#l"); +} + +function action(mode, type, selection) { + if (mode == -1 || (mode == 0 && status < 3)) { + cm.dispose(); + return; + } else if (mode == 0) { + cm.sendOk("Please think carefully. Once you have made your decision, let me know."); + cm.dispose(); + return; + } + status++; + if(status == 1) { + if(selection == 0) { + cm.sendSimple("You don't seem to be from out town. How can I help you?#L0##bI would like some #t4031346#.#k#l"); + } else { + cm.sendNext("Under developing..."); + cm.dispose(); + } + } else if(status == 2) { + cm.sendGetNumber("#b#t4031346##k is a precious iteml I cannot give it to you just like that. How about doing me a little favor? Then I'll give it to you. I'll sell the #b#t4031346##k to you for #b30,000 mesos#k each. Are you willing to make the purchase? How many would you like, then?",0,0,99); + } else if(status == 3) { + if(selection == 0) { + cm.sendOk("I can't sell you 0."); + cm.dispose(); + } else { + temp = selection; + cost = temp * 30000; + cm.sendYesNo("Buying #b"+temp+" #t4031346#(s)#k will cost you #b"+cost+" mesos#k. Are you sure you want to make the purchase?"); + } + } else if(status == 4) { + if(cm.getMeso() < cost || !cm.canHold(4031346)) { + cm.sendOk("Please check and see if you have enough mesos to make the purchase. Also, I suggest you check the etc. inventory and see if you have enough space available to make the purchase."); + } else { + cm.sendOk("See you again~"); + cm.gainItem(4031346, temp); + cm.gainMeso(-cost); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2081005.js b/scripts/npc/world0/2081005.js new file mode 100644 index 0000000000..1317992d2a --- /dev/null +++ b/scripts/npc/world0/2081005.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//Fixed by Moogra +//Fixed grammar, javascript syntax +var status = 0; +var price = 100000; + +function start() { + cm.sendSimple("Welcome to Cave of Life - Entrance ! Would you like to go inside and fight #rHorntail#k ? If you want to fight him, you may might need some #b#v2000005##k, so you can recover some HP if you have been hit by #rHorntail#k.\r\n#L1#I would like to buy 10 for 100,000 Mesos!#l\r\n\#L2#No thanks, let me in now!#l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else if (selection == 1) { + if(cm.getMeso() >= price && cm.canHold(2000005)) { + cm.gainMeso(-price); + cm.gainItem(2000005, 10); + cm.sendOk("Thank you for buying the potion. Use it as well!"); + } else + cm.sendOk("Sorry, you don't have enough mesos to buy them!"); + cm.dispose(); + } else if (selection == 2) { + if (cm.getLevel() > 99) + cm.warp(240050000, 0); + else + cm.sendOk("I'm sorry. You need to be atleast level 100 or above to enter."); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2081009.js b/scripts/npc/world0/2081009.js new file mode 100644 index 0000000000..6f24cc2b69 --- /dev/null +++ b/scripts/npc/world0/2081009.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//Moose, Warps to exit + +function start() { + cm.warp(221000300,"mid00"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2081010.js b/scripts/npc/world0/2081010.js new file mode 100644 index 0000000000..e9efb7c974 --- /dev/null +++ b/scripts/npc/world0/2081010.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Moose +Warps to exit map etc. +*/ + +var status; +var exitMap = 221000300; +var exitPortal = "mid00"; + +function start() { + status = -1 + action(1,0,0); +} + +function action(mode, type, selection){ + if (mode <= 0 && status == 0)//I think I messed something up here, maybe. + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + var mapId = cm.getPlayer().getMapId(); + if (mapId == exitMap) { + if (status == 0) + cm.sendNext("See you next time."); + else { + cm.warp(103000000,"mid00"); + cm.dispose(); + } + } + else { + var outText = "Would you like to leave, " + cm.getPlayer().getName() + "? Once you leave the map, you'll have to restart the whole quest if you want to try it again, and Juudai will be sad. Do you still want to leave this map?"; + if (status == 0) + cm.sendYesNo(outText); + else if (mode == 1) { + var eim = cm.getPlayer().getEventInstance(); + if (eim == null) + cm.warp(221000300,0); + else if (cm.isLeader()) + eim.disbandParty(); + else + eim.leftParty(cm.getPlayer()); + cm.dispose(); + } else + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/2081100.js b/scripts/npc/world0/2081100.js new file mode 100644 index 0000000000..7463eb5930 --- /dev/null +++ b/scripts/npc/world0/2081100.js @@ -0,0 +1,86 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: Moogra + *@NPC: 4th Job Warrior Advancement NPC + *@Purpose: Handles 4th job. + */ + +function start() { + if(cm.getLevel() < 120 || Math.round(cm.getJobId() / 100) != 1) { + cm.sendOk("Please don't bother me right now, I am trying to concentrate."); + cm.dispose(); + } else if (!cm.isQuestCompleted(6904)) { + cm.sendOk("You have not yet passed my trials. I can not advance you until you do so."); + cm.dispose(); + } else if ( cm.getJobId() % 100 % 10 != 2) { + cm.sendYesNo("You did a marvellous job passing my test. Are you ready to advance to your 4th job?"); + } else { + cm.sendSimple("If I must, I can teach you the art of your class.\r\n#b#L0#Teach me the skills of my class.#l"); + //cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode >= 1 && cm.getJobId() % 100 % 10 != 2) { + cm.changeJobById(cm.getJobId() + 1); + if(cm.getJobId() == 112) { + cm.teachSkill(1121001, 0, 10, -1); + cm.teachSkill(1120004, 0, 10, -1); + cm.teachSkill(1121008, 0, 10, -1); + } else if(cm.getJobId() == 122) { + cm.teachSkill(1221001, 0, 10, -1); + cm.teachSkill(1220005, 0, 10, -1); + cm.teachSkill(1221009, 0, 10, -1); + } else if(cm.getJobId() == 132) { + cm.teachSkill(1321001, 0, 10, -1); + cm.teachSkill(1320005, 0, 10, -1); + cm.teachSkill(1321007, 0, 10, -1); + } + } else if(mode >= 0 && cm.getJobId() % 100 % 10 == 2) { + // TEMP until I can get the quest fixed... + if(cm.getJobId() == 112) { + if(cm.getPlayer().getSkillLevel(1121010) == 0) + cm.teachSkill(1121010 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(1120005) == 0) + cm.teachSkill(1120005 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(1121002) == 0) + cm.teachSkill(1121002 , 0, 10, -1); + } else if(cm.getJobId() == 122) { + if(cm.getPlayer().getSkillLevel(1221002) == 0) + cm.teachSkill(1221002, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(1221003) == 0) + cm.teachSkill(1221003, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(1221004) == 0) + cm.teachSkill(1221004, 0, 10, -1); + } else if(cm.getJobId() == 132) { + if(cm.getPlayer().getSkillLevel(1321002) == 0) + cm.teachSkill(1321002, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(1320008) == 0) + cm.teachSkill(1320008, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(1320009) == 0) + cm.teachSkill(1320009, 0, 10, -1); + } + cm.sendOk("It is done. Leave me now."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2081200.js b/scripts/npc/world0/2081200.js new file mode 100644 index 0000000000..7ea1cc53f4 --- /dev/null +++ b/scripts/npc/world0/2081200.js @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: Moogra + *@NPC: 4th Job Mage Advancement NPC + *@Purpose: Handles 4th job. + */ + + function start() { + if(cm.getLevel() < 120 || Math.round(cm.getJobId() / 100) != 2) { + cm.sendOk("Please don't bother me right now, I am trying to concentrate."); + cm.dispose(); + } else if (!cm.isQuestCompleted(6914)) { + cm.sendOk("You have not yet passed my trials. I can not advance you until you do so."); + cm.dispose(); + } else if ( cm.getJobId() % 100 % 10 != 2) { + cm.sendYesNo("You did a marvellous job passing my test. Are you ready to advance to your 4th job?"); + } else { + cm.sendSimple("If I must, I can teach you the art of your class.\r\n#b#L0#Teach me the skills of my class.#l"); + //cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode >= 1 && cm.getJobId() % 100 % 10 != 2) { + cm.changeJobById(cm.getJobId() + 1); + if(cm.getJobId() == 212) { + cm.teachSkill(2121001, 0, 10, -1); + cm.teachSkill(2121002, 0, 10, -1); + cm.teachSkill(2121006, 0, 10, -1); + } else if(cm.getJobId() == 222) { + cm.teachSkill(2221001, 0, 10, -1); + cm.teachSkill(2221002, 0, 10, -1); + cm.teachSkill(2221006, 0, 10, -1); + } else if(cm.getJobId() == 232) { + cm.teachSkill(2321001, 0, 10, -1); + cm.teachSkill(2321002, 0, 10, -1); + cm.teachSkill(2321005, 0, 10, -1); + } + } else if( mode >= 1 && cm.getJobId() % 100 % 10 == 2) { + if(cm.getJobId() == 212) { + if(cm.getPlayer().getSkillLevel(2121007) == 0) + cm.teachSkill(2121007 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(2121005) == 0) + cm.teachSkill(2121005 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(2121005) == 0) + cm.teachSkill(2121005 , 0, 10, -1); + } else if(cm.getJobId() == 222) { + if(cm.getPlayer().getSkillLevel(2221007) == 0) + cm.teachSkill(2221007 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(2221005) == 0) + cm.teachSkill(2221005 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(2221003) == 0) + cm.teachSkill(2221003 , 0, 10, -1); + } else if(cm.getJobId() == 232) { + if (cm.getPlayer().getSkillLevel(2321008) < 1) + cm.teachSkill(2321008, 0, 10,-1); // Genesis + if (cm.getPlayer().getSkillLevel(2321006) < 1) + cm.teachSkill(2321006, 0, 10,-1); // res + } + cm.sendOk("It is done. Leave me now."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2081300.js b/scripts/npc/world0/2081300.js new file mode 100644 index 0000000000..ea9934c0cd --- /dev/null +++ b/scripts/npc/world0/2081300.js @@ -0,0 +1,74 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: Moogra + *@NPC: 4th Job Bowman Advancement NPC + *@Purpose: Handles 4th job. + */ + +function start() { + if(cm.getLevel() < 120 || Math.round(cm.getJobId() / 100) != 3) { + cm.sendOk("Please don't bother me right now, I am trying to concentrate."); + cm.dispose(); + } else if (!cm.isQuestCompleted(6924)) { + cm.sendOk("You have not yet passed my trials. I can not advance you until you do so."); + cm.dispose(); + } else if ( cm.getJobId() % 100 % 10 != 2) { + cm.sendYesNo("You did a marvellous job passing my test. Are you ready to advance to your 4th job?"); + } else { + cm.sendSimple("If I must, I can teach you the art of your class.\r\n#b#L0#Teach me the skills of my class.#l"); + //cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode >= 1 && cm.getJobId() % 100 % 10 != 2) { + cm.changeJobById(cm.getJobId() + 1); + if(cm.getJobId() == 312) { + cm.teachSkill(3121002, 0, 10, -1); + cm.teachSkill(3120005, 0, 10, -1); + cm.teachSkill(3121007, 0, 10, -1); + } else if(cm.getJobId() == 322) { + cm.teachSkill(3221002, 0, 10, -1); + cm.teachSkill(3220004, 0, 10, -1); + cm.teachSkill(3221006, 0, 10, -1); + } + } else if(mode >= 0 && cm.getJobId() % 100 % 10 == 2) { + if(cm.getJobId() == 312) { + if(cm.getPlayer().getSkillLevel(3121008) == 0) + cm.teachSkill(3121008 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(3121006) == 0) + cm.teachSkill(3121006 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(3121004) == 0) + cm.teachSkill(3121004 , 0, 10, -1); + } else if(cm.getJobId() == 322) { + if(cm.getPlayer().getSkillLevel(3221007) == 0) + cm.teachSkill(3221007 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(3221005) == 0) + cm.teachSkill(3221005 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(3221001) == 0) + cm.teachSkill(3221001 , 0, 10, -1); + } + cm.sendOk("It is done. Leave me now."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2081400.js b/scripts/npc/world0/2081400.js new file mode 100644 index 0000000000..37c3fca857 --- /dev/null +++ b/scripts/npc/world0/2081400.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: Moogra + *@NPC: 4th Job Thief Advancement NPC + *@Purpose: Handles 4th job. + */ + +function start() { + if(cm.getLevel() < 120 || Math.round(cm.getJobId() / 100) != 4) { + cm.sendOk("Please don't bother me right now, I am trying to concentrate."); + cm.dispose(); + } else if (!cm.isQuestCompleted(6934)) { + cm.sendOk("You have not yet passed my trials. I can not advance you until you do so."); + cm.dispose(); + } else if ( cm.getJobId() % 100 % 10 != 2) { + cm.sendYesNo("You did a marvellous job passing my test. Are you ready to advance to your 4th job?"); + } else { + cm.sendSimple("If I must, I can teach you the art of your class.\r\n#b#L0#Teach me the skills of my class.#l"); + //cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode >= 1 && cm.getJobId() % 100 % 10 != 2) { + cm.changeJobById(cm.getJobId() + 1); + if(cm.getJobId() == 412) { + cm.teachSkill(4120002, 0, 10, -1); + cm.teachSkill(4120005, 0, 10, -1); + cm.teachSkill(4121006, 0, 10, -1); + } else if(cm.getJobId() == 422) { + cm.teachSkill(4220002, 0, 10, -1); + cm.teachSkill(4220005, 0, 10, -1); + cm.teachSkill(4221007, 0, 10, -1); + } + } else if(mode >= 1 && cm.getJobId() % 100 % 10 == 2) { + if(cm.getJobId() == 412) { + if(cm.getPlayer().getSkillLevel(4121008) == 0) + cm.teachSkill(4121008 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(4121004) == 0) + cm.teachSkill(4121004 , 0, 10, -1); + } else if(cm.getJobId() == 422) { + if(cm.getPlayer().getSkillLevel(4221004) == 0) + cm.teachSkill(4221004 , 0, 10, -1); + if(cm.getPlayer().getSkillLevel(4221001) == 0) + cm.teachSkill(4221001 , 0, 10, -1); + } + cm.sendOk("It is done. Leave me now."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2081500.js b/scripts/npc/world0/2081500.js new file mode 100644 index 0000000000..13383190a8 --- /dev/null +++ b/scripts/npc/world0/2081500.js @@ -0,0 +1,82 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author: Moogra + *@NPC: 4th Job Pirate Advancement NPC + *@Purpose: Handles 4th job. + */ + +function start() { + if(cm.getLevel() < 120 || Math.round(cm.getJobId() / 100) != 5) { + cm.sendOk("Please don't bother me right now, I am trying to concentrate."); + cm.dispose(); + } else if (!cm.isQuestCompleted(6944)) { + cm.sendOk("You have not yet passed my trials. I can not advance you until you do so."); + cm.dispose(); + } else if ( cm.getJobId() % 100 % 10 != 2) { + cm.sendYesNo("You did a marvellous job passing my test. Are you ready to advance to your 4th job?"); + } else { + cm.sendSimple("If I must, I can teach you the art of your class.\r\n#b#L0#Teach me the skills of my class.#l"); + //cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode >= 1 && cm.getJobId() % 100 % 10 != 2) { + cm.changeJobById(cm.getJobId() + 1); + if(cm.getJobId() == 512) { + cm.teachSkill(5121001, 0, 10, -1); + cm.teachSkill(5121002, 0, 10, -1); + cm.teachSkill(5121007, 0, 10, -1); + cm.teachSkill(5121009, 0, 10, -1); + } else if(cm.getJobId() == 522) { + cm.teachSkill(5220001, 0, 10, -1); + cm.teachSkill(5220002, 0, 10, -1); + cm.teachSkill(5221004, 0, 10, -1); + cm.teachSkill(5220011, 0, 10, -1); + } + } else if(mode >= 1 && cm.getJobId() % 100 % 10 == 2) { + if(cm.getJobId() == 512) { + if(cm.getPlayer().getSkillLevel(5121003) == 0) + cm.teachSkill(5121003, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5121004) == 0) + cm.teachSkill(5121004, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5121005) == 0) + cm.teachSkill(5121005, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5121010) == 0) + cm.teachSkill(5121010, 0, 10, -1); + } else if(cm.getJobId() == 522) { + if(cm.getPlayer().getSkillLevel(5221006) == 0) + cm.teachSkill(5221006, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5221007) == 0) + cm.teachSkill(5221007, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5221008) == 0) + cm.teachSkill(5221008, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5221009) == 0) + cm.teachSkill(5221009, 0, 10, -1); + if(cm.getPlayer().getSkillLevel(5221003) == 0) + cm.teachSkill(5221003, 0, 10, -1); + } + cm.sendOk("It is done. Leave me now."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2082000.js b/scripts/npc/world0/2082000.js new file mode 100644 index 0000000000..ca1ec50558 --- /dev/null +++ b/scripts/npc/world0/2082000.js @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Mue - Leafre Ticketing Booth(240000100) +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.2 - Cleanup by Moogra + 1.1 - Price like GMS [sadiq] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ +var status = 0; +var cost = 30000; + +function start() { + cm.sendYesNo("Hello, I'm in charge of selling tickets for the ship ride to Orbis Station of Ossyria. The ride to Orbis takes off every 10 minutes, beginning on the hour, and it'll cost you #b"+cost+" mesos#k. Are you sure you want to purchase #b#t4031045##k?"); +} + +function action(mode, type, selection) { + if(mode == -1) + cm.dispose(); + else { + if(mode == 1) + status++; + else { + cm.sendNext("You must have some business to take care of here, right?"); + cm.dispose(); + return; + } + if(status == 1) { + if(cm.getMeso() >= cost && cm.canHold(4031045)) { + cm.gainItem(4031045,1); + cm.gainMeso(-cost); + } else + cm.sendOk("Are you sure you have #b"+cost+" mesos#k? If so, then I urge you to check your etc. inventory, and see if it's full or not."); + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/2082001.js b/scripts/npc/world0/2082001.js new file mode 100644 index 0000000000..c9c48083d0 --- /dev/null +++ b/scripts/npc/world0/2082001.js @@ -0,0 +1,29 @@ +function start() { + if(cm.haveItem(4031045)){ + var em = cm.getEventManager("Cabin"); + if (em.getProperty("entry") == "true") { + cm.sendYesNo("Do you wish to board the flight?"); + } else { + cm.sendOk("The flight has not arrived yet. Come back soon."); + cm.dispose(); + } + } else { + cm.sendOk("Make sure you got an Orbis ticket to travel in this flight. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + var em = cm.getEventManager("Cabin"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031045, -1); + cm.warp(240000111); + } else { + cm.sendOk("The flight has not arrived yet. Come back soon."); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2082002.js b/scripts/npc/world0/2082002.js new file mode 100644 index 0000000000..ce18d00e9d --- /dev/null +++ b/scripts/npc/world0/2082002.js @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (status == 0) { + cm.sendYesNo("Do you wish to leave the flight?"); + status++; + } else { + if ((status == 1 && type == 1 && selection == -1 && mode == 0) || mode == -1) { + cm.dispose(); + } else { + if (status == 1) { + cm.sendNext ("Alright, see you next time. Take care."); + status++; + } else if (status == 2) { + cm.warp(240000110, 0);// back to Leafre + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/2082003.js b/scripts/npc/world0/2082003.js new file mode 100644 index 0000000000..c7ed3dda31 --- /dev/null +++ b/scripts/npc/world0/2082003.js @@ -0,0 +1,11 @@ +function start() { +cm.sendSimple("If you had wings, I'm sure you could go there. But, that alone won't be enough. If you want to fly though the wind that's sharper than a blade, you'll need tough scales as well. I'm the only Halfling left that knows the way back... If you want to go there, I can transform you. No matter what you are, for this moment, you will become a #bDragon#k...\r\n #L0##bI want to become a dragon.#k#l"); +} + +function action(m, t, s) { + if (m > 0){ + cm.useItem(2210016); + cm.warp(200090500, 0); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2083000.js b/scripts/npc/world0/2083000.js new file mode 100644 index 0000000000..c9fe3b6fb1 --- /dev/null +++ b/scripts/npc/world0/2083000.js @@ -0,0 +1,113 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*The encrypted slate + *@author Jvlaple + */ + +var status = 0; +var minLevel = 80; +var maxLevel = 255; +var minPlayers = 1; +var maxPlayers = 6; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + // Slate has no preamble, directly checks if you're in a party + if (cm.getParty() == null) { // no party + cm.sendOk("If you want to attempt the quest, try making a party and getting 6 People..."); + cm.dispose(); + return; + } + if (!cm.isLeader()) { // not party leader + cm.sendSimple("You are not the party leader."); + cm.dispose(); + } + else { + // Check teh partyy + var party = cm.getParty().getMembers(); + var mapId = cm.getPlayer().getMapId(); + var next = true; + var levelValid = 0; + var inMap = 0; + // Temp removal for testing + if (party.size() < minPlayers || party.size() > maxPlayers) + next = false; + else { + for (var i = 0; i < party.size() && next; i++) { + if ((party.get(i).getLevel() >= minLevel) && (party.get(i).getLevel() <= maxLevel)) + levelValid += 1; + if (party.get(i).getMapId() == mapId) + inMap += 1; + } + if (levelValid < party.size() || inMap < party.size()) + next = false; + } + if (next) { + // Kick it into action. Slate says nothing here, just warps you in. + var em = cm.getEventManager("HontalePQ"); + if (em == null) { + cm.dispose(); + } + else { + // Begin the PQ. + em.startInstance(cm.getParty(),cm.getPlayer().getMap()); + //force the two scripts on portals in the map + //eim = cm.getPlayer().getEventInstance(); + var map = eim.getMapInstance(240050100); + var bulbMap = eim.getMapInstance(240050200); + //map.getPortal(7).setScriptName("hontale_BtoB1"); + //map.getPortal(2).setScriptName("hontale_C"); + // Remove pass/coupons + party = cm.getPlayer().getEventInstance().getPlayers(); + } + cm.dispose(); + } + else { + cm.sendOk("Your party is not a party of six. Make sure all your members are present and qualified to participate in this quest. I see #b" + levelValid.toString() + " #kmembers are in the right level range, and #b" + inMap.toString() + "#k are in my map. If this seems wrong, #blog out and log back in,#k or reform the party."); + cm.dispose(); + } + } + } + else { + cm.sendOk("RAWR!?!?!?"); + cm.dispose(); + } + } +} + + diff --git a/scripts/npc/world0/2083001.js b/scripts/npc/world0/2083001.js new file mode 100644 index 0000000000..fb72459359 --- /dev/null +++ b/scripts/npc/world0/2083001.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + cm.warp(240050400); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2083002.js b/scripts/npc/world0/2083002.js new file mode 100644 index 0000000000..2f436df313 --- /dev/null +++ b/scripts/npc/world0/2083002.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** + *Crystal of Roots + *@Author: Moogra + *@NPC: Crystal of Roots + */ +function start() { + cm.sendYesNo("Do you wish to leave?"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + cm.warp(240040700); + if (cm.getPlayer().getMap().getCharacters().size() < 2){ + cm.getPlayer().getMap().killAllMonsters(); + cm.getPlayer().getMap().resetReactors(); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2083004.js b/scripts/npc/world0/2083004.js new file mode 100644 index 0000000000..d4043d726a --- /dev/null +++ b/scripts/npc/world0/2083004.js @@ -0,0 +1,155 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Mark of the Squad + *@author Even + *@author SharpAceX (Alan) + */ +/*TODO + * ADD A CHECK TO SEE IF PLAYERS HAVE BADGE + */ +importPackage(Packages.server.expeditions); +importPackage(Packages.tools); +importPackage(Packages.scripting.event); + +var status = 0; +var expedition; +var player; +var em; +var horntail = MapleExpeditionType.HORNTAIL; +var list = "What would you like to do?#b\r\n\r\n#L1#View current Expedition members#l\r\n#L2#Start the fight!#l\r\n#L3#Stop the expedition.#l"; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + + player = cm.getPlayer(); + expedition = cm.getExpedition(horntail); + em = cm.getEventManager("HorntailFight"); + + if (mode < 1) { + cm.dispose(); + return; + } + if (status == 0) { + //cm.removeExpedition(expedition); + if (player.getClient().getChannel() != 1) { //Only channel 1 + cm.sendOk("Sorry, Horntail may only be challenged on #bChannel 1#k."); + cm.dispose(); + } else if (player.getLevel() < horntail.getMinLevel() && player.getLevel() > horntail.getMaxLevel()) { //Don't fit requirement + cm.sendOk("You do not meet the criteria to take on Horntail!"); + cm.dispose(); + } else if (expedition == null) { //Start an expedition + cm.sendSimple("Would you like to assemble a team to take on the mighty #rHorntail#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); + status = 1; + } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped + cm.sendSimple(list); + status = 2; + } else if (expedition.isRegistering()) { //If the expedition is registering + if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient + cm.sendOk("You have already registered for the expedition. Please wait for " + expedition.getLeader().getName() + " to begin the expedition."); + cm.dispose(); + } else { //If you aren't in it, you're going to get added + cm.sendOk(expedition.addMember(cm.getPlayer())); + cm.dispose(); + } + } else if (expedition.isInProgress()) { //Only if the expedition is in progress + if (expedition.contains(player)) { //If you're registered, warp you in + em.getInstance("HorntailFight_" + player.getClient().getChannel()).registerPlayer(player); + cm.dispose(); + } else { //If you're not in by now, tough luck + cm.sendOk("Another expedition has taken the initiative to fight Horntail, lets pray for those brave souls."); + cm.dispose(); + } + } + } else if (status == 1) { + if (selection == 1) { + cm.createExpedition(horntail); + cm.sendOk("The #rHorntail Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + cm.dispose(); + return; + } else if (selection == 2) { + cm.sendOk("Sure, not everyone's up to challenging the might of Horntail."); + cm.dispose(); + return; + } + } else if (status == 2) { + if (selection == 1) { + if (expedition == null) { + cm.sendOk("The expedition could not be loaded."); + cm.dispose(); + return; + } + var size = expedition.getMembers().size(); + if (size == 1) { + cm.sendOk("You are the only member of the expedition."); + cm.dispose(); + return; + } + var text = "The following members make up your expedition (Click on them to expel them):\r\n"; + text += "\r\n\t\t1." + expedition.getLeader().getName(); + for (var i = 1; i < size; i++) { + text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedition.getMembers().get(i).getName() + "#l\n"; + } + cm.sendSimple(text); + status = 6; + } else if (selection == 2) { + cm.sendOk("The expedition will begin and you will be escorted to the #bCave of Trial I#k."); + status = 4; + } else if (selection == 3) { + cm.sendOk("The expedition has now ended. Sometimes the best strategy is to run away."); + player.getMap().broadcastMessage(MaplePacketCreator.removeClock()); + player.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, expedition.getLeader().getName() + " has ended the expedition.")); + cm.endExpedition(expedition); + cm.dispose(); + return; + } + } else if (status == 4) { + var min = 1; //horntail.getMinSize(); + var size = expedition.getMembers().size(); + if (size < min) { + cm.sendOk("You need at least " + min + " players registered in your expedition."); + cm.dispose(); + return; + } + if (em == null) { + cm.sendOk("The event could not be found, please report this on the forum."); + cm.dispose(); + return; + } + cm.sendOk("Good luck! All of Leafre is counting on you."); + em.setProperty("channel", player.getClient().getChannel()); + em.startInstance(expedition); + cm.dispose(); + return; + } else if (status == 6) { + if (selection > 0) { + var banned = expedition.getMembers().get(selection); + expedition.ban(banned); + cm.sendOk("You have banned " + banned.getName() + " from the expedition."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2090000.js b/scripts/npc/world0/2090000.js new file mode 100644 index 0000000000..bf5b4633d0 --- /dev/null +++ b/scripts/npc/world0/2090000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2090000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2090004.js b/scripts/npc/world0/2090004.js new file mode 100644 index 0000000000..05041a7f45 --- /dev/null +++ b/scripts/npc/world0/2090004.js @@ -0,0 +1,145 @@ +/* Author: aaroncsn(MapleSea Like)(Incomplete) + NPC Name: Mr. Do + Map(s): Mu Lung: Mu Lung(2500000000) + Description: Potion Creator +*/ +importPackage(Packages.client); + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0 && mode == 1) { + if (cm.isQuestActive(3821)) { + cm.forceCompleteQuest(3821); + cm.sendNext("Quest complete."); + cm.dispose(); + return; + } + var selStr = "I am a man of many talents. Let me know what you'd like to do. #b" + var options = new Array("Make a medicine","Make a scroll","Donate medicine ingredients","I want to forfeit the restoration of Portrait Scroll..."); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + + cm.sendSimple(selStr); + } else if (status == 1 && mode == 1) { + selectedType = selection; + var selStr; + var items; + if (selectedType == 0){ //Make a medicine + cm.sendNext("If you want to make a medicine, you must study the Book on Herbal Medicine first. Nothing is more dangerous than practicing a medicine without proper knowledge."); + cm.dispose(); + return; + } + else if(selectedType == 1){//Make a scroll + selStr = "What kind of scrolls are you interested in making?#b"; + items = new Array("Scroll for One-Handed Sword for ATT", "Scroll for One-Handed Axe for ATT", "Scroll for One-Handed BW for ATT", + "Scroll for Dagger for ATT","Scroll for Wand for Magic Att.","Scroll for Staff for Magic Att.", + "Scroll for Two-handed Sword for ATT.","Scroll for Two-handed Axe for ATT","Scroll for Two-handed BW for ATT", + "Scroll for Spear for ATT","Scroll for Pole Arm for ATT","Scroll for Bow for ATT","Scroll for Crossbow for ATT ", + "Scroll for Claw for ATT","Knuckle Attack Power Scroll","Gun Attack Power Scroll#k"); + } + else if(selectedType == 2){//Donate medicine ingredients + selStr = "So you wish to donate some medicine ingredients? This is great news! Donations will be accepted in the unit of #b100#k. The donator will receive a marble that enables one to make a scroll. Which of these would you like to donate? #b"; + items = new Array("Acorn","Thimble","Needle Pouch","Necki Flower","Necki Swimming Cap","Broken Piece of Pot","Ginseng-Boiled Water","Straw Doll","Wooden Doll","Bellflower Root","100-Year-Old Bellflower", + "Old Paper","Yellow Belt","Broken Deer Horn","Red Belt","Peach Seed","Mr. Alli's Leather","Cat Doll","Mark of the Pirate","Captain Hat#k"); + } + else {//I want to forfeit the restoration of Portrait Scroll... + cm.dispose(); + return; + } + for (var i = 0; i < items.length; i++){ + selStr += "\r\n#L" + i + "# " + items[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (status == 2 && mode == 1){ + selectedItem = selection; + if (selectedType == 1){ //Scrolls + var itemSet = new Array(2043000,2043100,2043200,2043300,2043700,2043800,2044000,2044100,2044200,2044300,2044400,2044500,2044600,2044700,2044800,2044900); + var matSet = new Array(new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001), + new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001), + new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001),new Array(4001124,4010001)); + var matQtySet = new Array(new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10), + new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10),new Array(100, 10), + new Array(100, 10)); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + var prompt = "You want to make #t" + item + "#? In order to make #t" + item +"#,You'll need #b100 Dr. Do's Marbles#k and #b10 Steel Ores.#k"; + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty + " #t" + mats + "#What do you think? Would you like to make on right now?"; + } + cm.sendYesNo(prompt); + } + else if(selectedType == 2){ + status = 3; + var itemSet = new Array(4000276,4000277,4000278,4000279,4000280,4000291,4000292,4000286,4000287,4000293, 4000294,4000298,4000284,4000288,4000285,4000282,4000295,4000289,4000296,4031435); + item = itemSet[selectedItem]; + var prompt = "Are you sure you want to donate #b100 #t " + item + "##k?"; + cm.sendYesNo(prompt); + } + } else if (status == 3 && mode == 1) { + var complete = false; + if (mats instanceof Array) { + for(var i = 0; i < mats.length; i++) { + if (matQty[i] == 1) { + if (!cm.haveItem(mats[i])) { + complete = false; + } + } + else { + var count = 0; + var iter = cm.getInventory(4).listById(mats[i]).iterator(); + while (iter.hasNext()) { + count += iter.next().getQuantity(); + } + if (count < matQty[i]) + complete = false; + } + } + } + else { + var count = 0; + var iter = cm.getInventory(4).listById(mats).iterator(); + while (iter.hasNext()) { + count += iter.next().getQuantity(); + } + if (count < matQty) + complete = false; + } + + if (!complete || !cm.canHold(2044900)) + cm.sendOk("Please make sure you are neither lacking ingredients or lacking space in your use inventory."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i]); + } + } + else + cm.gainItem(mats, -matQty); + } + + cm.dispose(); + } +} diff --git a/scripts/npc/world0/2090005.js b/scripts/npc/world0/2090005.js new file mode 100644 index 0000000000..252e483555 --- /dev/null +++ b/scripts/npc/world0/2090005.js @@ -0,0 +1,98 @@ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Hak - Cabin (200000141) / Mu Lung Temple(250000100) / Herb Town(251000000) +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Text and statement fix [Information] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +var menu = new Array("Mu Lung","Orbis","Herb Town","Mu Lung"); +var cost = new Array(1500,1500,500,1500); +var hak; +var slct; +var display = ""; +var btwmsg; +var method; + + +function start() { + status = -1; + hak = cm.getEventManager("Hak"); + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } else { + if(mode == 0 && status == 0) { + cm.dispose(); + return; + } else if(mode == 0) { + cm.sendNext("OK. If you ever change your mind, please let me know."); + cm.dispose(); + return; + } + status++; + if (status == 0) { + for(var i=0; i < menu.length; i++) { + if(cm.getPlayer().getMapId() == 200000141 && i < 1) { + display += "\r\n#L"+i+"##b"+menu[i]+"("+cost[i]+" mesos)#k"; + } else if(cm.getPlayer().getMapId() == 250000100 && i > 0 && i < 3) { + display += "\r\n#L"+i+"##b"+menu[i]+"("+cost[i]+" mesos)#k"; + } + } + if(cm.getPlayer().getMapId() == 200000141 || cm.getPlayer().getMapId() == 251000000) { + btwmsg = "#bOrbis#k to #bMu Lung#k"; + } else if(cm.getPlayer().getMapId() == 250000100) { + btwmsg = "#bMu Lung#k to #bOrbis#k"; + } + if(cm.getPlayer().getMapId() == 251000000) { + cm.sendYesNo("Hello there. How's the traveling so far? I've been transporting other travelers like you to #b"+menu[3]+"#k in no time, and... are you interested? It's not as stable as the ship, so you'll have to hold on tight, but i can get there much faster than the ship. I'll take you there as long as you pay #b"+cost[2]+" mesos#k."); + status++; + } else if(cm.getPlayer().getMapId() == 250000100) { + cm.sendSimple("Hello there. How's the traveling so far? I understand that walking on two legs is much harder to cover ground compared to someone like me that can navigate the skies. I've been transporting other travelers like you to other regions in no time, and... are you interested? If so, then select the town you'd like yo head to.\r\n"+display); + } else { + cm.sendSimple("Hello there. How's the traveling so far? I've been transporting other travelers like you to other regions in no time, and... are you interested? If so, then select the town you'd like to head to.\r\n"+display); + } + } else if(status == 1) { + slct = selection; + cm.sendYesNo("Will you move to #b"+menu[selection]+"#k now? If you have #b"+cost[selection]+" mesos#k, I'll take you there right now."); + + } else if(status == 2) { + if(slct == 2) { + if(cm.getMeso() < cost[2]) { + cm.sendNext("Are you sure you have enough mesos?"); + cm.dispose(); + } else { + cm.gainMeso(-cost[2]); + cm.warp(251000000); + cm.dispose(); + } + } + + else { + if(cm.getMeso() < cost[slct]) { + cm.sendNext("Are you sure you have enough mesos?"); + cm.dispose(); + } else { + if(cm.getPlayer().getMapId() == 251000000) { + cm.gainMeso(-cost[2]); + cm.warp(250000100); + cm.dispose(); + } else { + cm.gainMeso(-cost[slct]); + hak.newInstance("Hak"); + hak.setProperty("player", cm.getPlayer().getName()); + hak.startInstance(cm.getPlayer()); + cm.dispose(); + } + } + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2090100.js b/scripts/npc/world0/2090100.js new file mode 100644 index 0000000000..25cacd56c9 --- /dev/null +++ b/scripts/npc/world0/2090100.js @@ -0,0 +1,115 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Grandpa Luo + Mu Lung VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30250, 30350, 30270, 30150, 30300, 30600, 30160); +var fhair = Array(31040, 31250, 31310, 31220, 31300, 31680, 31160, 31030, 31230); +var hairnew = Array(); + +function start() { + cm.sendSimple("Welcome to the Mu Lung hair shop. If you have a #b#t5150025##k, or a #b#t5151020##k, allow me to take care of your hairdo. Please choose the one you want.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150025##t5150025##l\r\n#L2#Dye your hair: #i5151020##t5151020##l"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150025##t5150025##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151020##t5151020##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? With #b#t5150025##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t5151020##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150025)){ + cm.gainItem(5150025, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151020)){ + cm.gainItem(5151020, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150025, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151020, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2090101.js b/scripts/npc/world0/2090101.js new file mode 100644 index 0000000000..ec4afeccd6 --- /dev/null +++ b/scripts/npc/world0/2090101.js @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Lilishu + Mu Lung Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30250, 30350, 30270, 30150, 30300, 30600, 30160, 30700, 30720, 30420); +var fhair = Array(31040, 31250, 31310, 31220, 31300, 31680, 31160, 31030, 31230, 31690, 31210, 31170, 31450); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm a hair assistant in this shop. If you have #b#t5150024##k or #b#t5151019##k by any chance, then how about letting me change your hairdo?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150024##t5150024##l\r\n#L2#Dye your hair: #i5151019##t5151019##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150024##t5150024##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151019##t5151019##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that I came up with. Are you going to use #b#t5150024##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151019##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150024)){ + cm.gainItem(5150024, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151019)){ + cm.gainItem(5151019, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150024, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151019, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2090102.js b/scripts/npc/world0/2090102.js new file mode 100644 index 0000000000..4555708310 --- /dev/null +++ b/scripts/npc/world0/2090102.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Romi + Orbis Skin Change. +*/ +var status = 0; +var price = 1000000; +var skin = Array(0, 1, 2, 3, 4); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Well, hello! Welcome to the Mu Lung Skin-Care! Would you like to have a firm, tight, healthy looking skin like mine? With #b#t5153006##k, you can let us take care of the rest and have the kind of skin you've always wanted~!\r\n#L1#I would like to buy a #b#t5153006##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5153006, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + cm.sendStyle("With our specialized machine, you can see the way you'll look after the treatment PRIOR to the procedure. What kind of a look are you looking for? Go ahead and choose the style of your liking~!", skin); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5153006)){ + cm.gainItem(5153006, -1); + cm.setSkin(skin[selection]); + cm.sendOk("Enjoy your new and improved skin!"); + } else { + cm.sendOk("Um...you don't have the skin-care coupon you need to receive the treatment. Sorry, but I am afraid we can't do it for you..."); + } + } + } +} diff --git a/scripts/npc/world0/2090103.js b/scripts/npc/world0/2090103.js new file mode 100644 index 0000000000..b6d711934c --- /dev/null +++ b/scripts/npc/world0/2090103.js @@ -0,0 +1,117 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Pata + Mu Lung Random/VIP Eye Color Change. +*/ +var status = 0; +var beauty = 0; +var regprice = 1000000; +var vipprice = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hey, I'm Pata, and I am a cosmetic lens expert here in Mu Lung. I believe your eyes are the most important feature in your body, and with #b#t5152042##k or #b#t5152041##k, I can prescribe the right kind of cosmetic lenses for you. Now, what would you like to use?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Cosmetic Lenses: #i5152042##t5152042##l\r\n#L2#Cosmetic Lenses: #i5152041##t5152041##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Cosmetic Lenses for " + regprice + " mesos: #i5152042##t5152042##l\r\n#L1#Cosmetic Lenses for " + vipprice + " mesos: #i5152041##t5152041##l"); + } else if (selection == 1) { + beauty = 1; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() + % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() + % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use a #b#t5152042##k and really make the change to your eyes?"); + } else if (selection == 2) { + beauty = 2; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() + % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() + % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendStyle("With our new computer program, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Please choose the style of your liking.", colors); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5152042)){ + cm.gainItem(5152042, -1); + cm.setFace(colors[Math.floor(Math.random() * colors.length)]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + if (beauty == 2){ + if (cm.haveItem(5152041)){ + cm.gainItem(5152041, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= regprice) { + cm.gainMeso(-regprice); + cm.gainItem(5152042, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= vipprice) { + cm.gainMeso(-vipprice); + cm.gainItem(5152041, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2090104.js b/scripts/npc/world0/2090104.js new file mode 100644 index 0000000000..1691678971 --- /dev/null +++ b/scripts/npc/world0/2090104.js @@ -0,0 +1,128 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Noma + Mu Lung Random/VIP Eye Change. +*/ +var status = 0; +var beauty = 0; +var regprice = 1000000; +var vipprice = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012, 20014, 20009, 20010); +var fface = Array(21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21012, 21014, 21009, 21011); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hey, I'm Noma, and I am assiting Pata in changing faces into beautiful things here in Mu Lung. With #b#t5152027##k or #b#t5152028##k, I can change the way you look. Now, what would you like to use?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Plastic Surgery: #i5152027##t5152027##l\r\n#L2#Plastic Surgery: #i5152028##t5152028##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Plastic Surgery for " + regprice + " mesos: #i5152027##t5152027##l\r\n#L1#Plastic Surgery for " + vipprice + " mesos: #i5152028##t5152028##l"); + } else if (selection == 1) { + beauty = 1; + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152027##k?"); + } else if (selection == 2) { + beauty = 2; + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() + % 1000 - (cm.getPlayer().getFace() + % 100)); + } + } + cm.sendStyle("I can totally transform your face into something new... how about giving us a try? For #b#t5152028##k, you can get the face of your liking...take your time in choosing the face of your preference.", facenew); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5152027)){ + cm.gainItem(5152027, -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our plastic surgery coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + if (beauty == 2){ + if (cm.haveItem(5152028)){ + cm.gainItem(5152028, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our plastic surgery coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= regprice) { + cm.gainMeso(-regprice); + cm.gainItem(5152012, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= vipprice) { + cm.gainMeso(-vipprice); + cm.gainItem(5152028, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/2091005.js b/scripts/npc/world0/2091005.js new file mode 100644 index 0000000000..80d34af5d7 --- /dev/null +++ b/scripts/npc/world0/2091005.js @@ -0,0 +1,259 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +* @Author: Moogra, XxOsirisxX +* @NPC: 2091005 +* @Name: So Gong +* @Map(s): Dojo Hall +*/ +importPackage(Packages.server.maps); + +var disabled = false; +var belts = Array(1132000, 1132001, 1132002, 1132003, 1132004); +var belt_level = Array(25, 35, 45, 60, 75); +var belt_points = Array(200, 1800, 4000, 9200, 17000); + +var status = -1; +var selectedMenu = -1; + +function start() { + if(disabled) { + cm.sendOk("My master has requested that the dojo be #rclosed#k at this time so I can't let you in."); + cm.dispose(); + return; + } + + if (isRestingSpot(cm.getPlayer().getMap().getId())) { + var text = "I'm surprised you made it this far! But it won't be easy from here on out. You still want the challenge?\r\n\r\n#b#L0#I want to continue#l\r\n#L1#I want to leave#l\r\n"; + if (!cm.getPlayer().getDojoParty()) { + text += "#L2#I want to record my score up to this point#l"; + } + cm.sendSimple(text); + } else if (cm.getPlayer().getLevel() >= 25) { + if (cm.getPlayer().getMap().getId() == 925020001) { + cm.sendSimple("My master is the strongest person in Mu Lung, and you want to challenge him? Fine, but you'll regret it later.\r\n\r\n#b#L0#I want to challenge him alone.#l\r\n#L1#I want to challenge him with a party.#l\r\n\r\n#L2#I want to receive a belt.#l\r\n#L3#I want to reset my training points.#l\r\n#L4#I want to receive a medal.#l\r\n#L5#What is a Mu Lung Dojo?#l"); + } else { + cm.sendYesNo("What, you're giving up? You just need to get to the next level! Do you really want to quit and leave?"); + } + } else { + cm.sendOk("Hey! Are you mocking my master? Who do you think you are to challenge him? This is a joke! You should at least be level #b25#k."); + cm.dispose(); + } +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else if (cm.getPlayer().getMap().getId() == 925020001) { + if (mode >= 0) { + if (status == -1) + selectedMenu = selection; + status++; //there is no prev. + if (selectedMenu == 0) { //I want to challenge him alone. + if (!cm.getPlayer().hasEntered("dojang_Msg") && !cm.getPlayer().getFinishedDojoTutorial()) { //kind of hackish... + if (status == 0) { + cm.sendYesNo("Hey there! You! This is your first time, huh? Well, my master doesn't just meet with anyone. He's a busy man. And judging by your looks, I don't think he'd bother. Ha! But, today's your lucky day... I tell you what, if you can defeat me, I'll allow you to see my Master. So what do you say?"); + } else if (status == 1) { + if (mode == 0) { + cm.sendNext("Haha! Who are you trying to impress with a heart like that?\r\nGo back home where you belong!"); + } else { + if(cm.getClient().getChannelServer().getMapFactory().getMap(925020010).getCharacters().size() > 0) { + cm.sendOk("Someone is already in Dojo"); + cm.dispose(); + return; + } + cm.warp(925020010, 0); + cm.getPlayer().setFinishedDojoTutorial(); + } + cm.dispose(); + } + } else if (cm.getPlayer().getDojoStage() > 0) { + if (status == 0) { + cm.sendYesNo("The last time you took the challenge by yourself, you went up to level " + cm.getPlayer().getDojoStage() + ". I can take you there right now. Do you want to go there?"); + } else { + cm.warp(mode == 1 ? 925020000 + cm.getPlayer().getDojoStage() * 100 : 925020100, 0); + cm.dispose(); + } + } else { + for (var i = 1 ; i < 39; i++) { //only 32 stages, but 38 maps + if(cm.getClient().getChannelServer().getMapFactory().getMap(925020000 + 100 * i).getCharacters().size() > 0) { + cm.sendOk("Someone is already in the Dojo." + i); + cm.dispose(); + return; + } + } + cm.getClient().getChannelServer().getMapFactory().getMap(925020100).resetReactors(); + cm.getClient().getChannelServer().getMapFactory().getMap(925020100).killAllMonsters(); + cm.warp(925020100, 0); + cm.dispose(); + } + } else if (selectedMenu == 1) { //I want to challenge him with a party. + var party = cm.getPlayer().getParty(); + if (party == null) { + cm.sendNext("Where do you think you're going? You're not even the party leader! Go tell your party leader to talk to me."); + cm.dispose(); + return; + } + var lowest = cm.getPlayer().getLevel(); + var highest = lowest; + for (var x = 0; x < party.getMembers().size(); x++) { + var lvl = party.getMembers().get(x).getLevel(); + if (lvl > highest) + highest = lvl; + else if (lvl < lowest) + lowest = lvl; + } + var isBetween30 = highest - lowest < 30; + if (party.getLeader().getId() != cm.getPlayer().getId()) { + cm.sendNext("Where do you think you're going? You're not even the party leader! Go tell your party leader to talk to me."); + cm.dispose(); + } else if (party.getMembers().size() == 1) { + cm.sendNext("You're going to take on the challenge as a one-man party?"); + } else if (!isBetween30) { + cm.sendNext("Your partys level ranges are too broad to enter. Please make sure all of your party members are within #r30 levels#k of each other."); + } else { + for (var i = 1 ; i < 39; i++) { //only 32 stages, but 38 maps + if(cm.getClient().getChannelServer().getMapFactory().getMap(925020000 + 100 * i).getCharacters().size() > 0) { + cm.sendOk("Someone is already in the Dojo."); + cm.dispose(); + return; + } + } + cm.getClient().getChannelServer().getMapFactory().getMap(925020100).resetReactors(); + cm.getClient().getChannelServer().getMapFactory().getMap(925020100).killAllMonsters(); + cm.warpParty(925020100); + cm.dispose(); + } + cm.dispose(); + } else if (selectedMenu == 2) { //I want to receive a belt. + if (mode < 1) { + cm.dispose(); + return; + } + if (status == 0) { + var selStr = "You have #b" + cm.getPlayer().getDojoPoints() + "#k training points. Master prefers those with great talent. If you obtain more points than the average, you can receive a belt depending on your score.\r\n"; + for (var i = 0; i < belts.length; i++) { + if (cm.getPlayer().getItemQuantity(belts[i], true) > 0) { + selStr += "\r\n #i" + belts[i] + "# #t" + belts[i] + "#(Obtain)"; + } else + selStr += "\r\n#L" + i + "##i" + belts[i] + "# #t" + belts[i] + "#l"; + } + cm.sendSimple(selStr); + } else if (status == 1) { + var belt = belts[selection]; + var level = belt_level[selection]; + var points = belt_points[selection]; + if (cm.getPlayer().getDojoPoints() > points) { + if (cm.getPlayer().getLevel() > level) + cm.gainItem(belt, 1); + else + cm.sendNext("In order to receive #i" + belt + "# #b#t" + belt + "##k, you have to be at least over level #b" + level + "#k and you need to have earned at least #b" + points + " training points#k.\r\n\r\nIf you want to obtain this belt, you need #r" + (points - cm.getPlayer().getDojoPoints()) + "#k more training points."); + } else + cm.sendNext("In order to receive #i" + belt + "# #b#t" + belt + "##k, you have to be at least over level #b" + level + "#k and you need to have earned at least #b" + points + " training points#k.\r\n\r\nIf you want to obtain this belt, you need #r" + (points - cm.getPlayer().getDojoPoints()) + "#k more training points."); + cm.dispose(); + } + } else if (selectedMenu == 3) { //I want to reset my training points. + if (status == 0) { + cm.sendYesNo("You do know that if you reset your training points, it returns to 0, right? Although, that's not always a bad thing. If you can start earning training points again after you reset, you can receive the belts once more. Do you want to reset your training points now?"); + } else if (status == 1) { + if (mode == 0) { + cm.sendNext("Do you need to gather yourself or something? Come back after you take a deep breath."); + } else { + cm.getPlayer().setDojoPoints(0); + cm.sendNext("There! All your training points have been reset. Think of it as a new beginning and train hard!"); + } + cm.dispose(); + } + } else if (selectedMenu == 4) { //I want to receive a medal. + if (status == 0 && cm.getPlayer().getVanquisherStage() <= 0) { + cm.sendYesNo("You haven't attempted the medal yet? If you defeat one type of monster in Mu Lung Dojo #b100 times#k you can receive a title called #b#t" + (1142033 + cm.getPlayer().getVanquisherStage()) + "##k. It looks like you haven't even earned the #b#t" + (1142033 + cm.getPlayer().getVanquisherStage()) + "##k... Do you want to try out for the #b#t" + (1142033 + cm.getPlayer().getVanquisherStage()) + "##k?"); + } else if (status == 1 || cm.getPlayer().getVanquisherStage() > 0) { + if (mode == 0) { + cm.sendNext("If you don't want to, that's fine."); + cm.dispose(); + } else { + if (cm.getPlayer().getDojoStage() > 37) { + cm.sendNext("You have complete all medals challenges."); + } else if (cm.getPlayer().getVanquisherKills() < 100 && cm.getPlayer().getVanquisherStage() > 0) + cm.sendNext("You still need #b" + (100 - cm.getPlayer().getVanquisherKills()) + "#k in order to obtain the #b#t" + (1142032 + cm.getPlayer().getVanquisherStage()) + "##k. Please try a little harder. As a reminder, only the mosnters that have been summoned by our Master in Mu Lung Dojo are considered. Oh, and make sure you're not hunting the monsters and exiting!#r If you don't go to the next level after defeating the monster, it doesn't count as a win#k."); + else if (cm.getPlayer().getVanquisherStage() <= 0) { + cm.getPlayer().setVanquisherStage(1); + } else { + cm.sendNext("You have obtained #b#t" + (1142032 + cm.getPlayer().getVanquisherStage()) + "##k."); + cm.gainItem(1142033 + cm.getPlayer().getVanquisherStage(), 1); + cm.getPlayer().setVanquisherStage(cm.c.getPlayer().getVanquisherStage() + 1); + cm.getPlayer().setVanquisherKills(0); + } + } + cm.dispose(); + } + } else if (selectedMenu == 5) { //What is a Mu Lung Dojo? + cm.sendNext("Our master is the strongest person in Mu Lung. The place he built is called the Mu Lung Dojo, a building that is 38 stories tall! You can train yourself as you go up each level. Of course, it'll be hard for someone at your level to reach the top."); + cm.dispose(); + } + } else + cm.dispose(); + } else if (isRestingSpot(cm.getPlayer().getMap().getId())) { + if (selectedMenu == -1) + selectedMenu = selection; + status++; + if (selectedMenu == 0) { + cm.warp(cm.getPlayer().getMap().getId() + 100, 0); + cm.dispose(); + } else if (selectedMenu == 1) { //I want to leave + if (status == 0) { + cm.sendAcceptDecline("So, you're giving up? You're really going to leave?"); + } else { + if (mode == 1) { + cm.warp(925020002); + } + cm.dispose(); + } + } else if (selectedMenu == 2) { //I want to record my score up to this point + if (status == 0) { + cm.sendYesNo("If you record your score, you can start where you left off the next time. Isn't that convenient? Do you want to record your current score?"); + } else { + if (mode == 0) { + cm.sendNext("You think you can go even higher? Good luck!"); + } else if (925020000 + cm.getPlayer().getDojoStage() * 100 == cm.getMapId()) { + cm.sendOk("Looks like you came all the way up here without recording your score. Sorry, but you can't record now."); + } else { + cm.sendNext("I recorded your score. If you tell me the next time you go up, you'll be able to start where you left off."); + cm.getPlayer().setDojoStage((cm.getMapId() - 925020000) / 100); + } + cm.dispose(); + } + } + } else { + if (mode == 0) { + cm.sendNext("Stop changing your mind! Soon, you'll be crying, begging me to go back."); + } else if (mode == 1) { + cm.warp(925020002, 0); + cm.getPlayer().message("Can you make up your mind please?"); + } + cm.dispose(); + } +} + +function isRestingSpot(id) { + return (id / 100 - 9250200) % 6 == 0; +} diff --git a/scripts/npc/world0/2091006.js b/scripts/npc/world0/2091006.js new file mode 100644 index 0000000000..bd83ffc017 --- /dev/null +++ b/scripts/npc/world0/2091006.js @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: Traitor, XxOsirisxX, Moogra +*/ + +/** + * Dojo Entrance NPC + */ +var status = -2; +var readNotice = 0; + +function start() { + cm.sendSimple("#e< Notice >#n\r\nIf there is anyone who has the courage to challenge the Mu Lung Dojo, come to the Mu Lung Dojo. - Mu Gong -\r\n\r\n\r\n#b#L0#Challenge the Mu Lung Dojo.#l\r\n#L1#Read the notice in more detail.#l"); +} + +function action(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + if (mode >= 0) { + if (selection == 1 || readNotice == 1) { + if (status == -1) { + readNotice = 1; + cm.sendNext("#e< Notice : Take the challenge! >#n\r\nMy name is Mu Gong, the owner of the My Lung Dojo. Since long ago, I have been training in Mu Lung to the point where my skills have now reached the pinnacle. Starting today, I will take on any and all applicants for Mu Lung Dojo. The rights to the Mu Lung Dojo will be given only to the strongest person.\r\nIf there is anyone who wishes to learn from me, come take the challenge any time! If there is anyone who wishes to challenge me, you're welcome as well. I will make you fully aware of your own weakness."); + } else if (status == 0) + cm.sendPrev("PS:You can challenge me on your own. But if you don't have that kind of courage, go ahead and call all your friends."); + else + cm.dispose(); + } else { + if (status == -1 && mode == 1) { + cm.sendYesNo("(Once I had placed my hands on the bulletin board, a mysterious energy began to envelop me.)\r\n\r\nWould you like to go to Mu Lung Dojo?"); + } else if (status == 0) { + if (mode == 0) { + cm.sendNext("#b(As I took my hand off the bulletin board, the mysterious energy that was covering my disappeared as well.)"); + } else { + cm.getPlayer().saveLocation("DOJO"); + cm.warp(925020000, 4); + } + cm.dispose(); + } + } + } else + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2093003.js b/scripts/npc/world0/2093003.js new file mode 100644 index 0000000000..63004f238e --- /dev/null +++ b/scripts/npc/world0/2093003.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2093003); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2093004.js b/scripts/npc/world0/2093004.js new file mode 100644 index 0000000000..3aa4c7f861 --- /dev/null +++ b/scripts/npc/world0/2093004.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var menu; +var cost = 10000; + +function start() { + cm.sendYesNo("Will you move to #b#m230000000##k now? The price is #b"+cost+" mesos#k."); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0) { + cm.sendNext("Hmmm ... too busy to do it right now? If you feel like doing it, though, come back and find me."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if(cm.getPlayer().getMeso() < cost) + cm.sendOk("I don't think you have enough money..."); + else { + cm.gainMeso(-cost); + cm.warp(230000000); + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2094000.js b/scripts/npc/world0/2094000.js new file mode 100644 index 0000000000..fe56a6b316 --- /dev/null +++ b/scripts/npc/world0/2094000.js @@ -0,0 +1,97 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = 0; +var minLevel = 55; +var maxLevel = 100; +var minPlayers = 0; +var maxPlayers = 6; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if (cm.getParty() == null) { + cm.sendOk("Please come back to me after you've formed a party."); + cm.dispose(); + return; + } + if (!cm.isLeader()) { + cm.sendSimple("You are not the party leader."); + cm.dispose(); + } else { + var party = cm.getParty().getMembers(); + var mapId = cm.getPlayer().getMapId(); + var next = true; + var levelValid = 0; + var inMap = 0; + if (party.size() < minPlayers || party.size() > maxPlayers) + next = false; + else { + for (var i = 0; i < party.size() && next; i++) { + if ((party.get(i).getLevel() >= minLevel) && (party.get(i).getLevel() <= maxLevel)) + levelValid += 1; + if (party.get(i).getMapid() == mapId) + inMap += 1; + } + if (levelValid < minPlayers || inMap < minPlayers) + next = false; + } + if (next) { + var em = cm.getEventManager("PiratePQ"); + if (em == null) { + cm.sendOk("PiratePQ does not work."); + cm.dispose(); + } + else { + em.startInstance(cm.getParty(),cm.getPlayer().getMap()); + party = cm.getPlayer().getEventInstance().getPlayers(); + } + cm.dispose(); + } + else { + cm.sendOk("Your party is not a party of six. Make sure all your members are present and qualified to participate in this quest. I see #b" + levelValid.toString() + " #kmembers are in the right level range, and #b" + inMap.toString() + "#k are in my map. If this seems wrong, #blog out and log back in,#k or reform the party."); + cm.dispose(); + } + } + } + else { + cm.sendOk("PiratePQ does not exist."); + cm.dispose(); + } + } +} + + diff --git a/scripts/npc/world0/2094001.js b/scripts/npc/world0/2094001.js new file mode 100644 index 0000000000..8907244d80 --- /dev/null +++ b/scripts/npc/world0/2094001.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.warp(100000000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2100.js b/scripts/npc/world0/2100.js new file mode 100644 index 0000000000..cc555e3ed2 --- /dev/null +++ b/scripts/npc/world0/2100.js @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Sera + Map(s): Maple Road : Entrance - Mushroom Town Training Camp (0), Maple Road: Upper level of the Training Camp (1), Maple Road : Entrance - Mushroom Town Training Camp (3) + Description: First NPC +*/ + +var status = -1; + +function start() { + if (cm.c.getPlayer().getMapId() == 0 || cm.c.getPlayer().getMapId() == 3) + cm.sendYesNo("Welcome to the world of MapleStory. The purpose of this training camp is to help beginners. Would you like to enter this training camp? Some people start their journey without taking the training program. But I strongly recommend you take the training program first."); + else + cm.sendNext("This is the image room where your first training program begins. In this room, you will have an advance look into the job of your choice."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + if(mode == 0 && status == 0){ + cm.sendYesNo("Do you really want to start your journey right away?"); + return; + }else if(mode == 0 && status == 1 && type == 0){ + status -= 2; + start(); + return; + }else if(mode == 0 && status == 1 && type == 1) + cm.sendNext("Please talk to me again when you finally made your decision."); + cm.dispose(); + return; + } + if (cm.c.getPlayer().getMapId() == 0 || cm.c.getPlayer().getMapId() == 3){ + if(status == 0){ + cm.sendNext("Ok then, I will let you enter the training camp. Please follow your instructor's lead."); + }else if(status == 1 && type == 1){ + cm.sendNext("It seems like you want to start your journey without taking the training program. Then, I will let you move on to the training ground. Be careful~"); + }else if(status == 1){ + cm.warp(1); + dispose(); + }else{ + cm.warp(40000); + dispose(); + } + }else + if(status == 0) + cm.sendPrev("Once you train hard enough, you will be entitled to occupy a job. You can become a Bowman in Henesys, a Magician in Ellinia, a Warrior in Perion, and a Thief in Kerning City..."); + else + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2100000.js b/scripts/npc/world0/2100000.js new file mode 100644 index 0000000000..feb6c97526 --- /dev/null +++ b/scripts/npc/world0/2100000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2100000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2100001.js b/scripts/npc/world0/2100001.js new file mode 100644 index 0000000000..897ab6aeef --- /dev/null +++ b/scripts/npc/world0/2100001.js @@ -0,0 +1,295 @@ +/* Author: aaroncsn (MapleSea Like) + NPC Name: Muhammad + Map(s): Ariant:The Town of Ariant(260000200) + Description: Jewel Refiner +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode <= 0 && status == 0) { + cm.sendNext("If you aren't in a hurry, then please come back in a bit. As you can see, there's so much work going on right now that I can't possibly give them to you on time."); + cm.dispose(); + return; + } + if (mode <= 0 && status >= 1){ + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if(status == 0) + cm.sendYesNo("Are you here to refine the ores of a mineral or a jewel? It doesn't matter how many ores you have, if you don't have them refined by a master like me, then they won't see the light of day. What do you think, do you want to refine them right now?"); + if (status == 1 && mode == 1) { + var selStr = "I like your attitude! Let's just take care of this right now. What kind of ores would you like to refine? #b"; + var options = new Array("Refine mineral ore","Refine jewel ores","Refine crystal ores"); + for (var i = 0; i < options.length; i++){ + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + } + cm.sendSimple(selStr); + } + else if (status == 2 && mode == 1) { + selectedType = selection; + + if (selectedType == 0){ //mineral refine + var selStr = "Which mineral would you like to refine?#b"; + var minerals = new Array ("Bronze Plate","Steel Plate","Mithril Plate","Adamantium Plate","Silver Plate","Orihalcon Plate","Gold Plate","Lithium"); + for (var i = 0; i < minerals.length; i++){ + selStr += "\r\n#L" + i + "# " + minerals[i] + "#l"; + } + cm.sendSimple(selStr); + equip = false; + } + else if (selectedType == 1){ //jewel refine + var selStr = "Which jewel would you like to refine?#b"; + var jewels = new Array ("Garnet","Amethyst","Aquamarine","Emerald","Opal","Sapphire","Topaz","Diamond","Black Crystal"); + for (var i = 0; i < jewels.length; i++){ + selStr += "\r\n#L" + i + "# " + jewels[i] + "#l"; + } + cm.sendSimple(selStr); + equip = false; + } + else if (selectedType == 2){ //Crystal refine + var selStr = "A crystal? That's a rare item indeed. Don't worry, I can refine it just as well as others. Which crystal would you like to refine? #b"; + var crystals = new Array("Power Crystal","Wisdom Crystal","DEX Crystal","LUK Crystal"); + for (var i = 0; i < crystals.length; i++){ + selStr += "\r\n#L" + i + "# " + crystals[i] + "#l"; + } + cm.sendSimple(selStr); + equip = false; + } + } + else if (status == 3 && mode == 1) { + selectedItem = selection; + + if (selectedType == 0){ //mineral refine + var itemSet = new Array(4011000,4011001,4011002,4011003,4011004,4011005,4011006,4011008); + var matSet = new Array(4010000,4010001,4010002,4010003,4010004,4010005,4010006,4010007); + var matQtySet = new Array(10,10,10,10,10,10,10,10); + var costSet = new Array(270,270,270,450,450,450,720,270); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 1){ //jewel refine + var itemSet = new Array(4021000,4021001,4021002,4021003,4021004,4021005,4021006,4021007,4021008); + var matSet = new Array(4020000,4020001,4020002,4020003,4020004,4020005,4020006,4020007,4020008); + var matQtySet = new Array(10,10,10,10,10,10,10,10,10); + var costSet = new Array (450,450,450,450,450,450,450,900,2700); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + else if (selectedType == 2){ //Crystal refine + var itemSet = new Array(4005000,4005001,4005002,4005003); + var matSet = new Array(4004000,4004001,4004002,4004003); + var matQtySet = new Array(10,10,10,10); + var costSet = new Array (4500,4500,4500,4500); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "So, you want me to make some #t" + item + "#s? In that case, how many do you want me to make?"; + cm.sendGetNumber(prompt,1,1,100) + } + + else if (status == 4 && mode == 1) { + if (equip) + { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + var prompt = "You want me to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, I'm going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + cm.sendYesNo(prompt); + } + else if (status == 5 && mode == 1) { + var complete = true; + + if (cm.getMeso() < cost * qty) + { + cm.sendOk("I'm afraid you cannot afford my services.") + } + else + { + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + { + if (matQty[i] * qty == 1) { + if (!cm.haveItem(mats[i])) + { + complete = false; + } + } + else { + + if (cm.haveItem(mats[i],matQty[i]*qty))complete=false; + } + } + } + else { + if (!cm.haveItem(mats, matQty * qty))complete=false; + + } + } + + if (!complete) + cm.sendOk("Please check and see if you have all the necessary items with you. If so, then please check your etc. inventory and see if you have an empty space."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + + if (cost > 0) + cm.gainMeso(-cost * qty); + + if (item >= 2060000 && item <= 2060002) //bow arrows + cm.gainItem(item, 1000 - (item - 2060000) * 100); + else if (item >= 2061000 && item <= 2061002) //xbow arrows + cm.gainItem(item, 1000 - (item - 2061000) * 100); + else if (item == 4003000)//screws + cm.gainItem(4003000, 15 * qty); + else + cm.gainItem(item, qty); + cm.sendOk("There, finished. What do you think, a piece of art, isn't it? Well, if you need anything else, you know where to find me."); + } + cm.dispose(); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* + else if(status == 4 && mode == 1) { + if (equip) { + selectedItem = selection; + qty = 1; + } + else + qty = selection; + + var prompt = "To make #t" + item + "#s, I'll need the following materials:"; + + if (mats instanceof Array){ + for(var i = 0; i < mats.length; i++){ + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } + else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + + } + + else if (status == 5 && mode == 1) { + var complete = false; + + if (cm.getMeso() < cost * qty) { + cm.sendOk("I'm afraid you cannot afford my services.") + cm.dispose(); + return; + } + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++) { + complete = cm.haveItem(mats[i], matQty[i] * qty); + if (!complete) { + break; + } + } + } + else { + complete = cm.haveItem(mats, matQty * qty); + } + } + + if (!complete) + cm.sendNext("Please check and see if you have all the necessary items with you. If so, then please check your etc. inventory and see if you have an empty space."); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } + else + cm.gainItem(mats, -matQty * qty); + + cm.gainMeso(-cost * qty); + cm.gainItem(item,qty); + cm.sendOk("There, finished. What do you think, a piece of art, isn't it? Well, if you need anything else, you know where to find me."); + } + + cm.dispose(); + }*/ +} \ No newline at end of file diff --git a/scripts/npc/world0/2101.js b/scripts/npc/world0/2101.js new file mode 100644 index 0000000000..f5c6e1ef5a --- /dev/null +++ b/scripts/npc/world0/2101.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + cm.sendYesNo("Are you done with your training? If you wish, I will send you out from this training camp."); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0) + cm.sendOk("Haven't you finished the training program yet? If you want to leave this place, please do not hesitate to tell me."); + cm.dispose(); + return; + } + if (status == 0) + cm.sendNext("Then, I will send you out from here. Good job."); + else{ + cm.warp(40000); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2101000.js b/scripts/npc/world0/2101000.js new file mode 100644 index 0000000000..e41e8300d1 --- /dev/null +++ b/scripts/npc/world0/2101000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendOk ("Just dancing well is not enough for me. I want to do a marvelous brilliant dance!"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101001.js b/scripts/npc/world0/2101001.js new file mode 100644 index 0000000000..7291d863fe --- /dev/null +++ b/scripts/npc/world0/2101001.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendNext("I miss my sister... She's always working at the palace as the servant and I only get to see her on Sundays. The King and Queen are so selfish."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101004.js b/scripts/npc/world0/2101004.js new file mode 100644 index 0000000000..8e4ab9262e --- /dev/null +++ b/scripts/npc/world0/2101004.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Tigun + Palace Guard +*/ + +function start() { + cm.sendNext("This isn't much of a #bpalace#k but it'll do until we can get an even better palace built! Anyone's allowed to speak to the king and queen, but don't expect niceness from either of them. Well... maybe King Abdullah VIII, if you catch him in his non-lazy and not-paying-attention moods."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101005.js b/scripts/npc/world0/2101005.js new file mode 100644 index 0000000000..d0351c57ca --- /dev/null +++ b/scripts/npc/world0/2101005.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Byron + Excavator/Treasure Hunter +*/ + + +function start() { + cm.sendNext("I thought #rAriant#k was amazing, but Valvendale is just SUPERB! There are so many different landscapes and forms of life. Like #b#ethose weird slimes outside of town#n#k... those are just WEIRD!"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101006.js b/scripts/npc/world0/2101006.js new file mode 100644 index 0000000000..65203dc38a --- /dev/null +++ b/scripts/npc/world0/2101006.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* + Le Petit Prince + Son of King and Queen. +*/ + +function start() { + cm.sendNext("Home is so boring... my parents ignore me so much it's unbearable. And ever since we moved from #rAriant#k, they've been trying to get a new palace built so they don't have to live outdoors. But I love the outdoors..."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101007.js b/scripts/npc/world0/2101007.js new file mode 100644 index 0000000000..f9d14bcabb --- /dev/null +++ b/scripts/npc/world0/2101007.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* + Areda + Queen +*/ + + +function start() { + cm.sendNext("NO! Abdullah, I said 17 bedrooms, and 23 bathrooms! CALL THE CONSTRUCTION COMPANY AND CHANGE IT!"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101008.js b/scripts/npc/world0/2101008.js new file mode 100644 index 0000000000..e45295ace0 --- /dev/null +++ b/scripts/npc/world0/2101008.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Schegerazade + Palace Servant +*/ + + +function start() { + cm.sendNext("The King and Queen are so bossy and demanding lately. I only get to see my family every Sunday or whenever they come visit. But like me, they're poor and are in need of mesos... for some reason Tigun doesn't allow the poor to enter."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101009.js b/scripts/npc/world0/2101009.js new file mode 100644 index 0000000000..6fff99e58e --- /dev/null +++ b/scripts/npc/world0/2101009.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* + Abdullah VIII + King +*/ + +function start() { + cm.sendNext("Yawnnnn~!"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101010.js b/scripts/npc/world0/2101010.js new file mode 100644 index 0000000000..8004ae007f --- /dev/null +++ b/scripts/npc/world0/2101010.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.warp (670010200, 3); + cm.changeMusic("Bgm14/Ariant"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101011.js b/scripts/npc/world0/2101011.js new file mode 100644 index 0000000000..a8fbd2d88c --- /dev/null +++ b/scripts/npc/world0/2101011.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Jano + Right/Male Side + */ + +function start() { + cm.sendNext ("The light and dark always coexist..."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2101014.js b/scripts/npc/world0/2101014.js new file mode 100644 index 0000000000..0a3521dce3 --- /dev/null +++ b/scripts/npc/world0/2101014.js @@ -0,0 +1,101 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var sel; +empty = [false, false, false]; + +function start() { + if((cm.getPlayer().getLevel() < 19 || cm.getPlayer().getLevel() > 30) && !cm.getPlayer().isGM()){ + cm.sendNext("You're not between level 20 and 30. Sorry, you may not participate."); + cm.dispose(); + return; + } + var text = "What do you want?#b"; + for(var i = 0; i < 3; i += 1) + if (cm.getPlayerCount(980010100 + (i * 100)) > 0) + if(cm.getPlayerCount(980010101 + (i * 100)) > 0) + continue; + else + text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "([" + cm.getPlayerCount(980010100 + (i * 100)) + "/" + cm.getPlayer().getAriantSlotsRoom(i) + "] users" + cm.getPlayer().getAriantRoomLeaderName(i) + "/Lv 20~29 )#l"; + else{ + empty[i] = true; + text += "\r\n#L" + i + "# Battle Arena " + (i + 1) + "( Empty )#l"; + if(cm.getPlayer().getAriantRoomLeaderName(i) != "") + cm.getPlayer().removeAriantRoom(i); + } + cm.sendSimple(text + "\r\n#L3# I'd like to know more about the competition.#l"); +} + +function action(mode, type, selection){ + status++; + if(mode != 1){ + if(mode == 0 && type == 0) + status -= 2; + else{ + cm.dispose(); + return; + } + } + if (status == 0){ + if(sel == undefined) + sel = selection; + if(sel == 3) + cm.sendNext("What do you need to do? You must be new to this. Allow me explain in detail."); + else{ + if(cm.getPlayer().getAriantRoomLeaderName(sel) != "" && empty[sel]) + empty[sel] = false; + else if(cm.getPlayer().getAriantRoomLeaderName(sel) != ""){ + cm.warp(980010100 + (sel * 100)); + cm.dispose(); + return; + } + if(!empty[sel]){ + cm.sendNext("Another combatant has created the battle arena first. I advise you to either set up a new one, or join the battle arena that's already been set up."); + cm.dispose(); + return; + } + cm.sendGetNumber("Up to how many participants can join in this match? (2~6 ppl)", 0, 2, 6); + } + }else if (status == 1){ + if(sel == 3) + cm.sendNextPrev("It's really simple, actually. You'll receive #b#t2270002##k from me, and your task is to eliminate a set amount of HP from the monster, then use #b#t2270002##k to absorb its monstrous power."); + else{ + if(cm.getPlayer().getAriantRoomLeaderName(sel) != "" && empty[sel]) + empty[sel] = false; + if(!empty[sel]){ + cm.sendNext("Another combatant has created the battle arena first. I advise you to either set up a new one, or join the battle arena that's already been set up."); + cm.dispose(); + return; + } + cm.getPlayer().setAriantRoomLeader(sel, cm.getPlayer().getName()); + cm.getPlayer().setAriantSlotRoom(sel, selection); + cm.warp(980010100 + (sel * 100)); + cm.dispose(); + } + }else if (status == 2) + cm.sendNextPrev("It's simple. If you absorb the power of the monster #b#t2270002##k, then you'll make #b#t4031868##k, which is something Queen Areda loves. The combatant with the most jewels wins the match. It's actually a smart idea to prevent others from absorbing in order to win."); + else if (status == 3) + cm.sendNextPrev("One thing. #rYou may not use pets for this.#k Understood?~!"); + else if (status == 4) + cm.dispose(); +} diff --git a/scripts/npc/world0/2101017.js b/scripts/npc/world0/2101017.js new file mode 100644 index 0000000000..bb6e3013c1 --- /dev/null +++ b/scripts/npc/world0/2101017.js @@ -0,0 +1,140 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +importPackage(Packages.tools); +importPackage(Packages.client); + +status = -1; +var sel; + +function start() { + if((cm.getPlayer().getLevel() < 19 || cm.getPlayer().getLevel() > 30) && !cm.getPlayer().isGM()){ + cm.sendNext("You're not between level 20 and 30. Sorry, you may not participate."); + cm.dispose(); + return; + } + if(cm.getPlayer().getMapId() % 10 == 1) + cm.sendSimple("Do you have a request for me?\r\n#b#L0# Give me #t2270002# and #t2100067#.#l\r\n#L1# What should I do?#l\r\n#L2# Get me out of here.#l"); + else + cm.sendSimple(cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1) == cm.getPlayer().getName() ? "Would you like to start the match?#b\r\n#b#L3# Ready to enter the Battle Arena!!#l\r\n#L1# I'd like to kick another character.#l\r\n#L2# Get me out of here.#l" : "What do you want?#b\r\n#L2# Get me out of here.#l"); +} + +function action(mode, type, selection){ + status++; + if(mode != 1){ + if(mode == 0 && type == 0) + status -= 2; + else{ + cm.dispose(); + return; + } + } + if(cm.getPlayer().getMapId() % 10 == 1){ + if (status == 0){ + if (sel == undefined) + sel = selection; + if(sel == 0){ + if(cm.haveItem(2270002)) + cm.sendNext("You already have #b#t2270002##k."); + else if(cm.canHold(2270002) && cm.canHold(2100067)){ + if(cm.haveItem(2100067)) + cm.removeAll(2100067); + cm.gainItem(2270002, 32); + cm.gainItem(2100067, 5); + cm.sendNext("Now lower the HP of the monsters, and use #b#t2270002##k to absorb their power!"); + }else + cm.sendNext("Check and see if your Use inventory is full or not"); + cm.dispose(); + }else if(sel == 1) + cm.sendNext("What do you need to do? You must be new to this. Allow me explain in detail."); + else + cm.sendYesNo("Are you sure you want to leave?"); //No GMS like. + } else if (status == 1){ + if(type == 1){ + cm.warp(980010020); + cm.dispose(); + return; + } + cm.sendNextPrev("It's really simple, actually. You'll receive #b#t2270002##k from me, and your task is to eliminate a set amount of HP from the monster, then use #b#t2270002##k to absorb its monstrous power."); + } else if (status == 2) + cm.sendNextPrev("It's simple. If you absorb the power of the monster #b#t2270002##k, then you'll make #b#t4031868##k, which is something Queen Areda loves. The combatant with the most jewels wins the match. It's actually a smart idea to prevent others from absorbing in order to win."); + else if (status == 3) + cm.sendNextPrev("One thing. #rYou may not use pets for this.#k Understood?~!"); + else if (status == 4) + cm.dispose(); + }else{ + var nextchar = cm.getMap(cm.getPlayer().getMapId()).getCharacters().iterator(); + if(status == 0){ + if (sel == undefined) + sel = selection; + if(sel == 1) + if(cm.getPlayerCount(cm.getPlayer().getMapId()) > 1){ + var text = "Who would you like to kick from room?"; //Not GMS like text + var name; + for(var i = 0; nextchar.hasNext(); i++){ + name = nextchar.next().getName(); + if(!cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1).equals(name)) + text += "\r\n#b#L" + i + "#" + name + "#l"; + } + cm.sendSimple(text); + }else{ + cm.sendNext("There's no character that can be kicked right now."); + cm.dispose(); + } + else if(sel == 2){ + if(cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1) == cm.getPlayer().getName()) + cm.sendYesNo("Are you sure you want to leave? You're the leader of the Arena, so if you leave, the whole Battle Arena will close."); + else + cm.sendYesNo("Are you sure you want to leave?"); //No GMS like. + }else if(sel == 3) + if(cm.getPlayerCount(cm.getPlayer().getMapId()) > 1) + cm.sendYesNo("The room is all set, and no other character may join this Battle Arena. Do you want to start the game right now?"); + else{ + cm.sendNext("You'll need at least 2 participants inside in order to start the match."); + cm.dispose(); + } + }else if (status == 1){ + if(sel == 1){ + for(var i = 0; nextchar.hasNext(); i++) + if(i == selection){ + nextchar.next().changeMap(cm.getMap(980010000)); + break; + }else + nextchar.next(); + cm.sendNext("Player have been kicked out of the Arena."); //Not GMS like + }else if(sel == 2){ + if(cm.getPlayer().getAriantRoomLeaderName(((cm.getPlayer().getMapId() / 100) % 10) - 1) != cm.getPlayer().getName()) + cm.warp(980010000); + else{ + cm.getPlayer().removeAriantRoom((cm.getPlayer().getMapId() / 100) % 10); + cm.mapMessage(6, cm.getPlayer().getName() + " has left the Arena, so the Arena will now close."); + cm.warpMap(980010000); + } + }else{ + cm.warpMap(cm.getPlayer().getMapId() + 1); + //} + //cm.getPlayer().getMap().broadcastMessage(MaplePacketCreator.updateAriantPQRanking(cm.getPlayer().getName(), 0, true)); + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/2101018.js b/scripts/npc/world0/2101018.js new file mode 100644 index 0000000000..197a6269dc --- /dev/null +++ b/scripts/npc/world0/2101018.js @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +function start() { + if((cm.getPlayer().getLevel() < 19 || cm.getPlayer().getLevel() > 30) && !cm.getPlayer().isGM()){ + cm.sendNext("You're not between level 20 and 30. Sorry, you may not participate."); + cm.dispose(); + return; + } + action(1,0,0); +} + +function action(mode, type, selection){ + status++; + if (status == 4){ + cm.getPlayer().saveLocation("ARIANT"); + cm.warp(980010000, 3); + cm.dispose(); + } + if(mode != 1){ + if(mode == 0 && type == 0) + status -= 2; + else{ + cm.dispose(); + return; + } + } + if (status == 0) + cm.sendNext("I have prepared a huge festival here at Ariant for the great fighters of MapleStory. It's called #bThe Ariant Coliseum Challenge#k."); + else if (status == 1) + cm.sendNextPrev("The Ariant Coliseum Challenge is a competition that matches the skills of monster combat against others. In this competition, your object isn't to hunt the monster; rather, you need to #beliminate a set amount of HP from the monster, followed by absorbing it with a jewel#k. #bThe fighter that ends up with the most jewels will win the competition.#k"); + else if (status == 2) + cm.sendSimple("If you are a strong and brave warrior from #bPerion#k, training under Dances With Balrogs, then are you interested in participating in The Ariant Coliseum Challenge?!\r\n#b#L0# I'd love to participate in this great competition.#l"); + else if (status == 3) + cm.sendNext("Okay, now I'll send you to the battle arena. I'd like to see you emerge victorious!"); +} \ No newline at end of file diff --git a/scripts/npc/world0/2102000.js b/scripts/npc/world0/2102000.js new file mode 100644 index 0000000000..56bce8adf3 --- /dev/null +++ b/scripts/npc/world0/2102000.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + if(cm.haveItem(4031045)){ + var em = cm.getEventManager("Genie"); + if (em.getProperty("entry") == "true") { + cm.sendYesNo("This will not be a short flight, so you need to take care of some things, I suggest you do that first before getting on board. Do you still wish to board the genie?"); + } else { + cm.sendOk("This genie is getting ready for takeoff. I'm sorry, but you'll have to get on the next ride. The ride schedule is available through the guide at the ticketing booth."); + cm.dispose(); + } + } else { + cm.sendOk("Make sure you got an Ariant ticket to travel in this genie. Check your inventory."); + cm.dispose(); + } +} +function action(mode, type, selection) { + if (mode <= 0) { + cm.sendOk("Okay, talk to me if you change your mind!"); + cm.dispose(); + return; + } + + var em = cm.getEventManager("Genie"); + if (em.getProperty("entry") == "true") { + cm.gainItem(4031045, -1); + cm.warp(260000110); + } + else { + cm.sendOk("This genie is getting ready for takeoff. I'm sorry, but you'll have to get on the next ride. The ride schedule is available through the guide at the ticketing booth."); + } + + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2102001.js b/scripts/npc/world0/2102001.js new file mode 100644 index 0000000000..4396d58047 --- /dev/null +++ b/scripts/npc/world0/2102001.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = 0; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (status == 0) { + cm.sendYesNo("Do you wish to go to leave the genie?"); + status++; + } else { + if (mode < 1) { + cm.dispose(); + } else { + if (status == 1) { + cm.sendNext ("Alright, see you next time. Take care."); + status++; + } else if (status == 2) { + cm.warp(260000100, 0); + cm.dispose(); + } + } + } +} diff --git a/scripts/npc/world0/2102002.js b/scripts/npc/world0/2102002.js new file mode 100644 index 0000000000..b8e9153eb3 --- /dev/null +++ b/scripts/npc/world0/2102002.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var cost = 6000; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + } else { + if(mode == 1) { + status++; + } + if(mode == 0) { + cm.sendNext("You must have some business to take care of here, right?"); + cm.dispose(); + return; + } + if(status == 0) { + cm.sendYesNo("Hello, I'm in charge of selling tickets for the ship ride to Orbis Station of Ossyria. The ride to Orbis takes off every 10 minutes, beginning on the hour, and it'll cost you #b"+cost+" mesos#k. Are you sure you want to purchase #b#t4031045##k?"); + } else if(status == 1) { + if(cm.getMeso() >= cost && cm.canHold(4031045)) { + cm.gainItem(4031045,1); + cm.gainMeso(-cost); + } else { + cm.sendOk("Are you sure you have #b"+cost+" mesos#k? If so, then I urge you to check your etc. inventory, and see if it's full or not."); + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/2103000.js b/scripts/npc/world0/2103000.js new file mode 100644 index 0000000000..d259008ad4 --- /dev/null +++ b/scripts/npc/world0/2103000.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC Base + Map Name (Map ID) + Extra NPC info. + */ + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if(cm.isQuestStarted(3900) && cm.getPlayer().getQuestInfo(3900) != 5) { + cm.sendOk("#b(You drink the water from the oasis and feel refreshed.)", 2); + //TODO: Update quest progress. + cm.getPlayer().updateQuestInfo(3900, 5); + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/2103013.js b/scripts/npc/world0/2103013.js new file mode 100644 index 0000000000..1787fa1a33 --- /dev/null +++ b/scripts/npc/world0/2103013.js @@ -0,0 +1,184 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var selected = -1; +var party = 0; + +function start() { + status = -1; + var text = "You should NOT talk to this NPC in this map."; + if (cm.getMapId() == 926020001) + text = "Stop! You've succesfully passed Nett's test. By Nett's grace, you will now be given the opportunity to enter Pharaoh Yeti's Tomb. Do you wish to enter it now?\r\n\r\n#b#L0# Yes, I will go now.#l\r\n#L1# No, I will go later.#l"; + else if (cm.getMapId() == 926010000) + text = "I am Duarte.\r\n\r\n#b#L0# Ask about the Pyramid.#l\r\n#e#L1# Enter the Pyramid.#l#n\r\n\r\n#L2# Find a Party.#l\r\n\r\n#L3# Enter Pharaoh Yeti's Tomb.#l\r\n#L4# Ask about Pharaoh Yeti's treasures.#l\r\n#L5# Receive the Medal.#l"; + else + text = "Do you want to forfeit the challenge and leave?\r\n\r\n#b#L0# Leave#l"; + + cm.sendSimple(text); +} + +function action(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode < 0 || (type == 4 && mode == 0)) { + cm.dispose(); + return; + } else status++; + + if (cm.getMapId() == 926010000) { + if (status == 0) { + if (selection > -1) selected = selection; + if (selection == 0 || selected == 0) { + cm.sendNext("This is the pyramid of Nett, the god of chaos and revenge. For a long time, it was buried deep in the desert, but Nett has ordered it to rise above ground. If you are unafraid of chaos and possible death, you may challenge Pharaoh Yeti, who lies asleep inside the Pyramid. Whatever the outcome, the choice is yours to make."); + } else if (selection == 1) { + cm.sendSimple("You fools who know no fear of Nett's wrath, it is now time to choose your destiny! \r\n\r\n#b#L0# Enter alone.#l\r\n#L1# Enter with a party of 2 or more.#l"); + } else if (selection == 2) { + cm.openUI(0x16); + cm.showInfoText("Use the Party Search (Hotkey O) window to search for a party to join anytime and anywhere!"); + cm.dispose(); + } else if (selection == 3) { + cm.sendSimple("What gem have you brought?\r\n\r\n#L0##i4001322# #t4001322##l\r\n#L1##i4001323# #t4001323##l\r\n#L2##i4001324# #t4001324##l\r\n#L3##i4001325# #t4001325##l"); + } else if (selection == 4) { + cm.sendNext("Inside Pharaoh Yeti's Tomb, you can acquire a #e#b#t2022613##k#n by proving yourself capable of defeating the #bPharaoh Jr. Yeti#k, the Pharaoh's clone. Inside that box lies a very special treasure. It is the #e#b#t1132012##k#n.\r\n#i1132012:# #t1132012#\r\n\r\n And if you are somehow able to survive Hell Mode, you will receive the #e#b#t1132013##k#n.\r\n\r\n#i1132013:# #t1132013#\r\n\r\n Though, of course, Nett won't allow that to happen."); + } else if (selection == 5) { + var progress = cm.getQuestProgress(29932); + if (progress >= 50000) + cm.dispose(); + else + cm.sendNext(""); + + } + } else if (status == 1) { + if (selected == 0) { + cm.sendNextPrev("Once you enter the Pyramid, you will be faced with the wrath of Nett. Since you don't look too sharp, I will offer you some advice and rules to follow. Remember them well.#b\r\n\r\n1. Be careful that your #e#rAct Gauge#b#n does not decrease. The only way to maintain your Gauge level is to battle the monsters without stopping.\r\n2. Those who are unable will pay dearly. Be careful to not cause any #rMiss#b.\r\n3. Be wary of the Pharaoh Jr. Yeti with the #v04032424# mark. Make the mistake of attacking him and you will regret it.\r\n4. Be wise about using the skill that is given to you for Kill accomplishments."); + } else if (selected == 1) { + party = selection; + cm.sendSimple("You who lack fear of death's cruelty, make your decision!\r\n#L0##i3994115##l#L1##i3994116##l#L2##i3994117##l#L3##i3994118##l"); + } else if (selected == 3) { + if (selection == 0) { + if (cm.haveItem(4001322)) { + return; + } + } else if (selection == 1) { + if (cm.haveItem(4001323)) { + return; + } + } else if (selection == 2) { + if (cm.haveItem(4001324)) { + return; + } + } else if (selection == 3) { + if (cm.haveItem(4001325)) { + return; + } + } + cm.sendOk("You'll need a gem to enter Pharaoh Yeti's Tomb. Are you sure you have one?"); + cm.dispose(); + } else if (selected == 5) { + } else { + cm.dispose(); + } + } else if (status == 2) { + if (selected == 0) { + cm.sendNextPrev("Those who are able to withstand Nett's wrath will be honored, but those who fail will face destruction. This is all the advice I can give you. The rest is in your hands."); + } else if (selected == 1) { + var mode = "EASY"; + //Finish this + var pqparty = cm.getPlayer().getParty(); + if (party == 1) { + if (pqparty == null) { + cm.sendOk("Create a fucking party faggot.");//BE NICE + cm.dispose(); + return; + } else { + if (pqparty.getMembers().size() < 2) { + cm.sendOk("Get more members..."); + cm.dispose(); + return; + } else { + var i = 0; + for (var a = 0; a < pq.getMembers().size(); a++) { + var pqchar = pq.getMembers().get(a); + if (i > 1) break; + if (pqchar != null && pqchar.getMapId() == 926010000) i++; + } + if (i < 2) { + cm.sendOk("Make sure that 2 or more party members are in your map."); + cm.dispose(); + return; + } + } + } + } + + if (cm.getPlayer().getLevel() < 40) { + cm.sendOk("You must be Lv. 40+ to enter this PQ."); + cm.dispose(); + return; + } + if (selection < 3 && cm.getPlayer().getLevel() > 60) { + cm.sendOk("Only Hell mode is avaible for players that are over Lv. 60."); + cm.dispose(); + return; + } + if (selection == 1) mode = "NORMAL"; + else if (selection == 2) mode = "HARD"; + else if (selection == 3) mode = "HELL"; + + if (!cm.createPyramid(mode, party == 1)) { + cm.sendOk("All rooms are full for this mode, please try it again later or on another channel ):"); + } + cm.dispose(); + } + } else if (status == 3) { + cm.dispose(); + } + } else if (cm.getMapId() == 926020001) { + if (status == 0) { + if (selection == 0) + cm.dispose();//:( + else if (selection == 1) + cm.sendNext("I will give you Pharaoh Yeti's Gem. You will be able to enter Pharaoh Yeti's Tomb anytime with this Gem. Check to see if you have at least 1 empty slot in your Etc window."); + + } else if (status == 1) { + var itemid = 4001325; + if (cm.getPlayer().getLevel() >= 60) itemid = 4001325; + if (cm.canHold(itemid)) { + cm.gainItem(itemid); + cm.warp(926010000); + } else + cm.showInfoText("You must have at least 1 empty slot in your Etc window to receive the reward."); + + cm.dispose(); + } + } else { + cm.warp(926010000); + cm.getPlayer().setPartyQuest(null); + cm.dispose(); + } +}/*Do you want to forfeit the challenge and leave? + +Your allotted time has passed. Do you want to leave now? + + + +*/ \ No newline at end of file diff --git a/scripts/npc/world0/2110000.js b/scripts/npc/world0/2110000.js new file mode 100644 index 0000000000..d3e8e52153 --- /dev/null +++ b/scripts/npc/world0/2110000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 2110000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2110002.js b/scripts/npc/world0/2110002.js new file mode 100644 index 0000000000..59f5d868ab --- /dev/null +++ b/scripts/npc/world0/2110002.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Cloto + * + * Hidden Street : 1st Accompaniment <1st Stage> (103000800) + ~ 2nd, 3rd, 4th (801, 802, 803) + * Hidden Street : 1st Accompaniment (103000804) + * + * Kerning City Party Quest NPC +*/ + +function start() { + cm.showEffect("quest/party/clear"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2110005.js b/scripts/npc/world0/2110005.js new file mode 100644 index 0000000000..a15a154616 --- /dev/null +++ b/scripts/npc/world0/2110005.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Camel Cab - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.3 - Actually fixed by SharpAceX (Alan) + 1.2 - Fixed and recoded by Moogra + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U, who actually can't code at all +--------------------------------------------------------------------------------------------------- +*/ + +var toMagatia = "Would you like to take the #bCamel Cab#k to #bMagatia#k, the town of Alchemy? The fare is #b1500 mesos#k."; +var toAriant = "Would you like to take the #bCamel Cab#k to #bAriant#k, the town of Burning Roads? The fare is #b1500 mesos#k."; + +function start() { + cm.sendYesNo(cm.getPlayer().getMapId() == 260020000 ? toMagatia : toAriant); +} + +function action(mode, type, selection) { + if (mode == 1) { + if (cm.getMeso() < 1500) { + cm.sendNext("I am sorry, but I think you are short on mesos. I am afraid I can't let you ride this if you do not have enough money to do so. Please come back when you have enough money to use this."); + } else { + cm.warp(cm.getPlayer().getMapId() == 260020000 ? 261000000 : 260000000, 0); + cm.gainMeso(-1500); + cm.dispose(); + } + } else if (mode == 0) + cm.sendNext("Hmmm... too busy to do it right now? If you feel like doing it, though, come back and find me."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2111000.js b/scripts/npc/world0/2111000.js new file mode 100644 index 0000000000..6681d28eef --- /dev/null +++ b/scripts/npc/world0/2111000.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Carson - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ +function start() { + cm.sendNext("Alchemy....and Alchemist.....both of them are important. But more importantly, it is the Magatia that tolerate everything. The honor of Magatia should be protected by me."); + cm.dispose(); +} diff --git a/scripts/npc/world0/2111001.js b/scripts/npc/world0/2111001.js new file mode 100644 index 0000000000..506f32acd6 --- /dev/null +++ b/scripts/npc/world0/2111001.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Maed - Magatia (GMS Like) +-- By --------------------------------------------------------------------------------------------- + Maple4U +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Zenumist......I know what they say. They don't like combination the of life with machine. But it is about being fearful of machine only. Seeking Pure Alchemy won't achieve anyting."); + cm.dispose(); +} diff --git a/scripts/npc/world0/2111003.js b/scripts/npc/world0/2111003.js new file mode 100644 index 0000000000..9af3378da5 --- /dev/null +++ b/scripts/npc/world0/2111003.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Humanoid A - Magatia (GMS Like) +-- By --------------------------------------------------------------------------------------------- + Maple4U +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened 3x by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Emotion that I feel is real? Or just illusion coming from mechanical error?"); + cm.dispose(); +} diff --git a/scripts/npc/world0/2111004.js b/scripts/npc/world0/2111004.js new file mode 100644 index 0000000000..0ccc1bfd85 --- /dev/null +++ b/scripts/npc/world0/2111004.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Phyllia - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Even though Alchemists and Fairies have antipathy for each other, I can still be in this town because the Zenumist President has been protecting us."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2111005.js b/scripts/npc/world0/2111005.js new file mode 100644 index 0000000000..b062f0d026 --- /dev/null +++ b/scripts/npc/world0/2111005.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Keeny - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Almost all Magatian people are Alchemists. Everyone concentrates on Alchemy. So...Magatia is always quiet."); + cm.dispose(); +} diff --git a/scripts/npc/world0/2111006.js b/scripts/npc/world0/2111006.js new file mode 100644 index 0000000000..1ecba2467c --- /dev/null +++ b/scripts/npc/world0/2111006.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Parwen - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("uuuuhuk...Why only Ghost are around here?..."); + cm.dispose(); +} diff --git a/scripts/npc/world0/2111007.js b/scripts/npc/world0/2111007.js new file mode 100644 index 0000000000..9a790a5695 --- /dev/null +++ b/scripts/npc/world0/2111007.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Han the Broker - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Hm... Don't doubt it because I'm a back street broker. Dealing with me is trust... I keep up my credit."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2111008.js b/scripts/npc/world0/2111008.js new file mode 100644 index 0000000000..3cd6955fa5 --- /dev/null +++ b/scripts/npc/world0/2111008.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Bedin - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Make it clear of your position! Are you Zenumist or Alcadno?"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/2111009.js b/scripts/npc/world0/2111009.js new file mode 100644 index 0000000000..73dea742c2 --- /dev/null +++ b/scripts/npc/world0/2111009.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +-- Odin JavaScript -------------------------------------------------------------------------------- + Russellon - Magatia (GMS Like) +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Shortened by Moogra + 1.0 - First Version by Maple4U +--------------------------------------------------------------------------------------------------- +*/ + +function start() { + cm.sendOk("Definitely Alcadno is excluded.....Huhuhuhu.....Stupid people....cannot see the real important things.."); + cm.dispose(); +} diff --git a/scripts/npc/world0/22000.js b/scripts/npc/world0/22000.js new file mode 100644 index 0000000000..2c6e3b3225 --- /dev/null +++ b/scripts/npc/world0/22000.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Shanks + Map(s): Maple Road : Southperry (60000) + Description: Brings you to Victoria Island +*/ +var status = 0; + +function start() { + cm.sendYesNo("Take this ship and you'll head off to a bigger continent. For #e150 mesos#n, I'll take you to #bVictoria Island#k. The thing is, once you leave this place, you can't ever come back. What do you think? Do you want to go to Victoria Island?"); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + if(mode == 0 && type != 1) + status -= 2; + else if(type == 1 || (mode == -1 && type != 1)){ + if(mode == 0) + cm.sendOk("Hmm... I guess you still have things to do here?"); + cm.dispose(); + return; + } + } + if (status == 1) { + if (cm.haveItem(4031801)) + cm.sendNext("Okay, now give me 150 mesos... Hey, what's that? Is that the recommendation letter from Lucas, the chief of Amherst? Hey, you should have told me you had this. I, Shanks, recognize greatness when I see one, and since you have been recommended by Lucas, I see that you have a great, great potential as an adventurer. No way would I charge you for this trip!"); + else + cm.sendNext("Bored of this place? Here... Give me #e150 mesos#n first..."); + } else if (status == 2) { + if (cm.haveItem(4031801)) + cm.sendNextPrev("Since you have the recommendation letter, I won't charge you for this. Alright, buckle up, because we're going to head to Victoria Island right now, and it might get a bit turbulent!!"); + else + if (cm.getLevel() > 6) { + if (cm.getMeso() < 150) { + cm.sendOk("What? You're telling me you wanted to go without any money? You're one weirdo..."); + cm.dispose(); + } else + cm.sendNext("Awesome! #e150#n mesos accepted! Alright, off to Victoria Island!"); + } else { + cm.sendOk("Let's see... I don't think you are strong enough. You'll have to be at least Level 7 to go to Victoria Island."); + cm.dispose(); + } + } else if (status == 3) { + if (cm.haveItem(4031801)) + cm.gainItem(4031801, -1); + cm.warp(2010000); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000000.js b/scripts/npc/world0/9000000.js new file mode 100644 index 0000000000..50ef52b91b --- /dev/null +++ b/scripts/npc/world0/9000000.js @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator, Moogra + NPC Name: Paul + Map(s): Maple Road: Southperry (60000) + Description: Event Assistant +*/ +var status = 0; + +function start() { + cm.sendNext("Hey, I'm #bPaul#k, if you're not busy and all ... then can I hang out with you? I heard there are people gathering up around here for an #revent#k but I don't want to go there by myself ... Well, do you want to go check it out with me?"); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + } else { + status++; + if (status == 1) { + cm.sendSimple("Huh? What kind of an event? Well, that's...\r\n#L0##e1.#n#b What kind of an event is it?#k#l\r\n#L1##e2.#n#b Explain the event game to me.#k#l\r\n#L2##e3.#n#b Alright, let's go!#k#l"); + } else if (status == 2) { + if (selection == 0) { + cm.sendNext("All this month, MapleStory Global is celebrating its 3rd anniversary! The GM's will be holding surprise GM Events throughout the event, so stay on your toes and make sure to participate in at least one of the events for great prizes!"); + cm.dispose(); + } else if (selection == 1) { + cm.sendSimple("There are many games for this event. It will help you a lot to know how to play the game before you play it. Choose the one you want to know more of! #b\r\n#L0# Ola Ola#l\r\n#L1# MapleStory Maple Physical Fitness Test#l\r\n#L2# Snow Ball#l\r\n#L3# Coconut Harvest#l\r\n#L4# OX Quiz#l\r\n#L5# Treasure Hunt#l#k"); + } else if (selection == 2) { + cm.sendNext("Either the event has not been started, you already have the #bScroll of Secrets#k, or you have already participated in this event within the last 24 hours. Please try again later!"); + cm.dispose(); + } + } else if (status == 3) { + if (selection == 0) { + cm.sendNext("#b[Ola Ola]#k is a game where participants climb ladders to reach the top. Climb your way up and move to the next level by choosing the correct portal out of the numerous portals available. \r\n\r\nThe game consists of three levels, and the time limit is #b6 MINUTES#k. During [Ola Ola], you #bwon't be able to jump, teleport, haste, or boost your speed using potions or items#k. There are also trick portals that'll lead you to a strange place, so please be aware of those."); + cm.dispose(); + } else if (selection == 1) { + cm.sendNext("#b[MapleStory Physical Fitness Test] is a race through an obstacle course#k much like the Forest of Patience. You can win it by overcoming various obstacles and reach the final destination within the time limit. \r\n\r\nThe game consists of four levels, and the time limit is #b15 MINUTES#k. During [MapleStory Physical Fitness Test], you won't be able to use teleport or haste."); + cm.dispose(); + } else if (selection == 2) { + cm.sendNext("#b[Snowball]#k consists of two teams, Maple Team and Story Team, and the two teams duke it out to see #bwhich team rolled the snowball farther and bigger in a limited time#k. If the game cannot be decided within the time period, then the team that rolled the snowball farther wins. \r\n\r\nTo roll up the snow, attack it by pressing #bCtrl#k. All long-ranged attacks and skill-based attacks will not work here, #bonly the close-range attacks will work#k. \r\n\r\nIf a character touches the snowball, he/she'll be sent back to the starting point. Attack the snowman in front of the starting point to prevent the opposing team from rolling the snow forward. This is where a well-planned strategy works, as the team will decide whether to attack the snowball or the snowman."); + cm.dispose(); + } else if (selection == 3) { + cm.sendNext("#b[Coconut Harvest]#k consists of two teams, Maple Team and Story Team, and the two teams duke it out to see #bwhich team gathers up the most coconuts#k. The time limit is #b5 MINUTES#k. If the game ends in a tie, an additional 2 minutes will be awarded to determine the winner. If, for some reason, the score stays tied, then the game will end in a draw. \r\n\r\nAll long-range attacks and skill-based attacks will not work here, #bonly the close-range attacks will work#k. If you don't have a weapon for the close-range attacks, you can purchase them through an NPC within the event map. No matter the level of character, the weapon, or skills, all damages applied will be the same.\r\n\r\nBeware of the obstacles and traps within the map. If the character dies during the game, the character will be eliminated from the game. The player who strikes last before the coconut drops wins. Only the coconuts that hit the ground counts, which means the ones that do not fall off the tree, or the occasional explosion of the coconuts WILL NOT COUNT. There's also a hidden portal at one of the shells at the bottom of the map, so use that wisely!"); + cm.dispose(); + } else if (selection == 4) { + cm.sendNext("#b[OX Quiz]#k is a game of MapleStory smarts through X's and O's. Once you join the game, turn on the minimap by pressing #bM#k to see where the X and O are. A total of #r10 questions#k will be given, and the character that answers them all correctly wins the game. \r\n\r\nOnce the question is given, use the ladder to enter the area where the correct answer may be, be it X or O. If the character does not choose an answer or is hanging on the ladder past the time limit, the character will be eliminated. Please hold your position until [CORRECT] is off the screen before moving on. To prevent cheating of any kind, all types of chatting will be turned off during the OX Quiz."); + cm.dispose(); + } else if (selection == 5) { + cm.sendNext("#b[Treasure Hunt]#k is a game in which your goal is to find the #btreasure scrolls#k that are hidden all over the map #rin 10 minutes#k. There will be a number of mysterious treasure chests hidden away, and once you break them apart, many items will surface from the chest. Your job is to pick out the treasure scroll from those items. \r\nTreasure chests can be destroyed using #bregular attacks#k, and once you have the treasure scroll in possession, you can trade it for the Scroll of Secrets through an NPC that's in charge of trading items. The trading NPC can be found on the Treasure Hunt map, but you can also trade your scroll through #bVikin#k of Lith Harbor.\r\n\r\nThis game has its share of hidden portals and hidden teleporting spots. To use them, press the #bup arrow#k at a certain spot, and you'll be teleported to a different place. Try jumping around, for you may also run into hidden stairs or ropes. There will also be a treasure chest that'll take you to a hidden spot, and a hidden chest that can only be found through the hidden portal, so try looking around.\r\n\r\nDuring the game of Treasure Hunt, all attack skills will be #rdisabled#k, so please break the treasure chest with the regular attack."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000001.js b/scripts/npc/world0/9000001.js new file mode 100644 index 0000000000..2da75ddc4d --- /dev/null +++ b/scripts/npc/world0/9000001.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Edited by: kevintjuh93 + NPC Name: Jean + Map(s): Victoria Road : Lith Harbour (104000000) + Description: Event Assistant +*/ +var status = 0; + +function start() { + cm.sendNext("Hey, I'm #bJean#k. I am waiting for my brother #bPaul#k. He is supposed to be here by now..."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (status >= 2 && mode == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + cm.sendNextPrev("Hmm... What should I do? The event will start, soon... Many people went to participate in the event, so we better be hurry..."); + } else if (status == 2) { + cm.sendSimple("Hey... Why don't you go with me? I think my brother will come with other people.\r\n#L0##e1.#n#b What kind of an event is it?#k#l\r\n#L1##e2.#n#b Explain the event game to me.#k#l\r\n#L2##e3.#n#b Alright, let's go!#k#l"); + } else if (status == 3) { + if (selection == 0) { + cm.sendNext("All this month, MapleStory Global is celebrating its 3rd anniversary! The GM's will be holding surprise GM Events throughout the event, so stay on your toes and make sure to participate in at least one of the events for great prizes!"); + cm.dispose(); + } else if (selection == 1) { + cm.sendSimple("There are many games for this event. It will help you a lot to know how to play the game before you play it. Choose the one you want to know more of! #b\r\n#L0# Ola Ola#l\r\n#L1# MapleStory Maple Physical Fitness Test#l\r\n#L2# Snow Ball#l\r\n#L3# Coconut Harvest#l\r\n#L4# OX Quiz#l\r\n#L5# Treasure Hunt#l#k"); + } else if (selection == 2) { + if (cm.getEvent() != null && cm.getEvent().getLimit() > 0) { + cm.getPlayer().saveLocation("EVENT"); + if (cm.getEvent().getMapId() == 109080000 || cm.getEvent().getMapId() == 109060001) + cm.divideTeams(); + + cm.getEvent().minusLimit(); + cm.warp(cm.getEvent().getMapId()); + cm.dispose(); + } else { + cm.sendNext("Either the event has not been started, you already have the #bScroll of Secrets#k, or you have already participated in this event within the last 24 hours. Please try again later!"); + cm.dispose(); + } + } + } else if (status == 4) { + if (selection == 0) { + cm.sendNext("#b[Ola Ola]#k is a game where participants climb ladders to reach the top. Climb your way up and move to the next level by choosing the correct portal out of the numerous portals available. \r\n\r\nThe game consists of three levels, and the time limit is #b6 MINUTES#k. During [Ola Ola], you #bwon't be able to jump, teleport, haste, or boost your speed using potions or items#k. There are also trick portals that'll lead you to a strange place, so please be aware of those."); + cm.dispose(); + } else if (selection == 1) { + cm.sendNext("#b[MapleStory Physical Fitness Test] is a race through an obstacle course#k much like the Forest of Patience. You can win it by overcoming various obstacles and reach the final destination within the time limit. \r\n\r\nThe game consists of four levels, and the time limit is #b15 MINUTES#k. During [MapleStory Physical Fitness Test], you won't be able to use teleport or haste."); + cm.dispose(); + } else if (selection == 2) { + cm.sendNext("#b[Snowball]#k consists of two teams, Maple Team and Story Team, and the two teams duke it out to see #bwhich team rolled the snowball farther and bigger in a limited time#k. If the game cannot be decided within the time period, then the team that rolled the snowball farther wins. \r\n\r\nTo roll up the snow, attack it by pressing #bCtrl#k. All long-ranged attacks and skill-based attacks will not work here, #bonly the close-range attacks will work#k. \r\n\r\nIf a character touches the snowball, he/she'll be sent back to the starting point. Attack the snowman in front of the starting point to prevent the opposing team from rolling the snow forward. This is where a well-planned strategy works, as the team will decide whether to attack the snowball or the snowman."); + cm.dispose(); + } else if (selection == 3) { + cm.sendNext("#b[Coconut Harvest]#k consists of two teams, Maple Team and Story Team, and the two teams duke it out to see #bwhich team gathers up the most coconuts#k. The time limit is #b5 MINUTES#k. If the game ends in a tie, an additional 2 minutes will be awarded to determine the winner. If, for some reason, the score stays tied, then the game will end in a draw. \r\n\r\nAll long-range attacks and skill-based attacks will not work here, #bonly the close-range attacks will work#k. If you don't have a weapon for the close-range attacks, you can purchase them through an NPC within the event map. No matter the level of character, the weapon, or skills, all damages applied will be the same.\r\n\r\nBeware of the obstacles and traps within the map. If the character dies during the game, the character will be eliminated from the game. The player who strikes last before the coconut drops wins. Only the coconuts that hit the ground counts, which means the ones that do not fall off the tree, or the occasional explosion of the coconuts WILL NOT COUNT. There's also a hidden portal at one of the shells at the bottom of the map, so use that wisely!"); + cm.dispose(); + } else if (selection == 4) { + cm.sendNext("#b[OX Quiz]#k is a game of MapleStory smarts through X's and O's. Once you join the game, turn on the minimap by pressing #bM#k to see where the X and O are. A total of #r10 questions#k will be given, and the character that answers them all correctly wins the game. \r\n\r\nOnce the question is given, use the ladder to enter the area where the correct answer may be, be it X or O. If the character does not choose an answer or is hanging on the ladder past the time limit, the character will be eliminated. Please hold your position until [CORRECT] is off the screen before moving on. To prevent cheating of any kind, all types of chatting will be turned off during the OX Quiz."); + cm.dispose(); + } else if (selection == 5) { + cm.sendNext("#b[Treasure Hunt]#k is a game in which your goal is to find the #btreasure scrolls#k that are hidden all over the map #rin 10 minutes#k. There will be a number of mysterious treasure chests hidden away, and once you break them apart, many items will surface from the chest. Your job is to pick out the treasure scroll from those items. \r\nTreasure chests can be destroyed using #bregular attacks#k, and once you have the treasure scroll in possession, you can trade it for the Scroll of Secrets through an NPC that's in charge of trading items. The trading NPC can be found on the Treasure Hunt map, but you can also trade your scroll through #bVikin#k of Lith Harbor.\r\n\r\nThis game has its share of hidden portals and hidden teleporting spots. To use them, press the #bup arrow#k at a certain spot, and you'll be teleported to a different place. Try jumping around, for you may also run into hidden stairs or ropes. There will also be a treasure chest that'll take you to a hidden spot, and a hidden chest that can only be found through the hidden portal, so try looking around.\r\n\r\nDuring the game of Treasure Hunt, all attack skills will be #rdisabled#k, so please break the treasure chest with the regular attack."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000002.js b/scripts/npc/world0/9000002.js new file mode 100644 index 0000000000..30f65951f8 --- /dev/null +++ b/scripts/npc/world0/9000002.js @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + }else if (mode == 0){ + cm.dispose(); + }else{ + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendNext("Bam bam bam bam!! You have won the game from the \r\n#bEVENT#k. Congratulations on making it this far!"); + } else if (status == 1) { + cm.sendNext("You'll be awarded the #bScroll of Secrets#k as the winning prize. On the scroll, it has secret information written in ancient characters."); + } else if (status == 2) { + cm.sendNext("The Scroll of Secrets can be deciphered by #rChun Ji#k or \r\n#rGeanie#k at Ludibrium. Bring it with you and something good's bound to happen."); + } else if (status == 3) { + if (cm.canHold(4031019)) { + cm.gainItem(4031019); + cm.warp(cm.getPlayer().getSavedLocation("EVENT")); + cm.dispose(); + } else { + cm.sendNext("I think your Etc window is full. Please make room, then talk to me."); + } + } else if (status == 4) { + cm.dispose(); + } + } + } diff --git a/scripts/npc/world0/9000004.js b/scripts/npc/world0/9000004.js new file mode 100644 index 0000000000..3c520f4c01 --- /dev/null +++ b/scripts/npc/world0/9000004.js @@ -0,0 +1,100 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var party; +var preamble; +var mobcount; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + }else if (mode == 0){ + cm.dispose(); + }else{ + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + var nthtext = "last"; + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + mobcount = eim.getProperty("leader" + nthtext + "mobcount"); + if (preamble == null) { + cm.sendOk("Hi. Welcome to the " + nthtext + " stage. This is where you fight the #bboss#k. Shall we get started?"); + status = 9; + }else{ + if(!isLeader()){ + if(mobcount == null){ + cm.sendOk("Please tell your #bParty-Leader#k to come talk to me"); + cm.dispose(); + }else{ + cm.warp(109020001,0); + cm.dispose(); + } + } + if(mobcount == null){ + cm.sendYesNo("You're finished?!"); + } + } + }else if (status == 1){ + //if (cm.mobCount(600010000)==0) { + if (cm.mapMobCount() == 0) { + cm.sendOk("Good job! You've killed 'em!"); + }else{ + cm.sendOk("What are you talking about? Kill those creatures!!"); + cm.dispose(); + } + }else if (status == 2){ + cm.sendOk("You may continue to the next stage!"); + }else if (status == 3) { + cm.clear(); + eim.setProperty("leader" + nthtext + "mobcount","done"); + var map = eim.getMapInstance(109020001); + var members = eim.getPlayers(); + cm.warpMembers(map, members); + cm.givePartyExp(2500, eim.getPlayers()); + cm.dispose(); + }else if (status == 10){ + eim.setProperty("leader" + nthtext + "preamble","done"); +// cm.summonMobAtPosition(8220000,25000000,1500000,1,-762,-1307); +// cm.summonMobAtPosition(8220001,15000000,750000,1,-788,-851); +// cm.summonMobAtPosition(9410015,15000000,750000,1,128,-851); + cm.dispose(); + } + } +} + + +function isLeader(){ + if(cm.getParty() == null){ + return false; + }else{ + return cm.isLeader(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000009.js b/scripts/npc/world0/9000009.js new file mode 100644 index 0000000000..ebddd92d08 --- /dev/null +++ b/scripts/npc/world0/9000009.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator, Moogra + NPC Name: Vikin + Map(s): Victoria Road: Lith Harbor (104000000) +*/ + +function start() { + cm.sendOk("Hey hey!!! Find the Treasure Scroll! I lost the map\r\nsomewhere and I can't leave without it."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9000010.js b/scripts/npc/world0/9000010.js new file mode 100644 index 0000000000..a333fe08b4 --- /dev/null +++ b/scripts/npc/world0/9000010.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function start() { + cm.sendNext("I'm sorry but I'm afraid you didn't win the event. Try it again some other time. You can return to where you were through me."); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } + cm.warp(cm.getPlayer().getSavedLocation("EVENT")); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9000012.js b/scripts/npc/world0/9000012.js new file mode 100644 index 0000000000..1e873b68a5 --- /dev/null +++ b/scripts/npc/world0/9000012.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: kevintjuh93 + NPC Name: Harry + Map(s): + Description: Event Assistant +*/ +var status = 0; + +function start() { + status = -1; + cm.sendSimple("Man... It is hot!!!~ How can I help you?\r\n#L0##bLeave the event game.#l\r\n#L1#Buy the weapon (Wooden Club 1 meso)"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + }else if (mode == 0){ + cm.dispose(); + }else{ + if (mode == 1) + status++; + else + status--; + } + if (status == 0) { + if (selection == 0) { + cm.sendYesNo("If you leave now, you can't participate in this event for the next 24 hours. Are you sure you want to leave?"); + } else if (selection == 1) { + if (cm.getMesos < 1 && !cm.canHold(1322005)) { + cm.sendOk("You don't have enough mesos or you don't have any space in your inventory."); + cm.dispose(); + } else { + cm.gainItem(1322005); + cm.gainMeso(-1); + cm.dispose(); + } + } + } else if (status == 1) { + if (cm.getEvent() != null) { + cm.getEvent().addLimit(); + } + cm.warp(109050001); + cm.dispose(); + } +} + + \ No newline at end of file diff --git a/scripts/npc/world0/9000017.js b/scripts/npc/world0/9000017.js new file mode 100644 index 0000000000..7b7241119d --- /dev/null +++ b/scripts/npc/world0/9000017.js @@ -0,0 +1,125 @@ +/* Coco + Refining NPC: + * Chaos scroll SYNTHETIZER (rofl) + * + * By RonanLana +*/ + +var status = 0; +var selectedType = -1; +var selectedItem = -1; +var item; +var mats; +var matQty; +var cost; +var qty; +var equip; +var last_use; //last item is a use item + +function start() { + cm.getPlayer().setCS(true); + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else { + cm.sendOk("Oh, ok... Talk back to us when you want to make business."); + cm.dispose(); + return; + } + + if (status == 0) { + var selStr = "Hey traveler! Come, come closer... We offer a #bhuge opportunity of business#k to you. If you want to know what it is, keep listening..." + cm.sendNext(selStr); + } + else if (status == 1) { + var selStr = "We've got here the knowledge to synthetize the mighty #b#t2049100##k! Of course, making one is not an easy task... But worry not! Just gather some material to me and a fee of #b1,200,000 mesos#k for our services to #bobtain it#k. You still want to do it?" + cm.sendYesNo(selStr); + } + + else if (status == 2) { + //selectedItem = selection; + selectedItem = 0; + + var itemSet = new Array(2049100, 7777777); + var matSet = new Array(new Array(4031203,4001356,4000136,4000082,4001126,4030012,4000021,4003005)); + var matQtySet = new Array(new Array(10,10,5,4,2,20,10,5)); + var costSet = new Array(1200000, 7777777); + item = itemSet[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + + var prompt = "So, you want us to make some #t" + item + "#? In that case, how many do you want us to make?"; + cm.sendGetNumber(prompt,1,1,100) + } + + else if (status == 3) { + qty = selection; + last_use = false; + + var prompt = "You want us to make "; + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + + prompt += " In that case, we're going to need specific items from you in order to make it. Make sure you have room in your inventory, though!#b"; + + if (mats instanceof Array){ + for (var i = 0; i < mats.length; i++) { + prompt += "\r\n#i"+mats[i]+"# " + matQty[i] * qty + " #t" + mats[i] + "#"; + } + } else { + prompt += "\r\n#i"+mats+"# " + matQty * qty + " #t" + mats + "#"; + } + + if (cost > 0) { + prompt += "\r\n#i4031138# " + cost * qty + " meso"; + } + cm.sendYesNo(prompt); + } + + else if (status == 4) { + var complete = true; + + if (cm.getMeso() < cost * qty) { + cm.sendOk("Come on! We're not here doing you a favor! We all need money to live properly, so bring the cash so we make deal and start the synthesis."); + } + else if(!cm.canHold(item)) { + cm.sendOk("You didn't check if you got a slot to spare on your inventory before our business, no?"); + } + else { + if (mats instanceof Array) { + for (var i = 0; complete && i < mats.length; i++) { + if (matQty[i] * qty == 1) { + complete = cm.haveItem(mats[i]); + } else { + complete = cm.haveItem(mats[i], matQty[i] * qty); + } + } + } else { + complete = cm.haveItem(mats, matQty * qty); + } + + if (!complete) + cm.sendOk("You kidding, right? We won't be able to start the process without all the ingredients at hands. Go get all of them and then talk to us!"); + else { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++){ + cm.gainItem(mats[i], -matQty[i] * qty); + } + } else { + cm.gainItem(mats, -matQty * qty); + } + cm.gainMeso(-cost * qty); + cm.gainItem(item, qty); + cm.sendOk("Wow... can't believe it worked! To think for a moment that it could f... Ahem. Of course it worked, all work of ours are very efficient! Nice doing business with you."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000020.js b/scripts/npc/world0/9000020.js new file mode 100644 index 0000000000..237cd1c7a4 --- /dev/null +++ b/scripts/npc/world0/9000020.js @@ -0,0 +1,76 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +status = -1; + +function start() { + action(1,0,0); +} + +function action(mode, type, selection) { + status++; + if(mode != 1){ + if(mode == 0 && status == 4) + status -= 2; + else{ + cm.dispose(); + return; + } + } + if (cm.getPlayer().getMapId() == 800000000) { + if (status == 0) + cm.sendSimple("How's the traveling? Are you enjoying it?#b\r\n#L0#Yes, I'm done with traveling. Can I go back to #m" + cm.getPlayer().getSavedLocation("WORLDTOUR") + "#?\r\n#L1#No, I'd like to continue exploring this place."); + else if (status == 1) { + if (selection == 0) { + cm.sendNext("Alright. I'll take you back to where you were before the visit to Japan. If you ever feel like traveling again down the road, please let me know!"); + } else if (selection == 1) { + cm.sendOk("OK. If you ever change your mind, please let me know."); + cm.dispose(); + } + } else if (status == 2) { + var map = cm.getPlayer().getSavedLocation("WORLDTOUR"); + if (map == undefined) + map = 104000000; + cm.warp(map, parseInt(Math.random() * 5)); + cm.dispose(); + } + } else { + if (status == 0) + cm.sendNext("If you're tired of the monotonous daily life, how about getting out for a change? there's nothing quite like soaking up a new culture, learning something new by the minute! It's time for you to get out and travel. We, at the Maple Travel Agency recommend you going on a #bWorld Tour#k! Are you worried about the travel expense? You shouldn't be! We, the #bMaple Travel Agency#k, havecarefully come up with a plan to let you travel for ONLY #b3,000 mesos#k!"); + else if (status == 1) + cm.sendSimple("We currently offer this place for you traveling pleasure: #bMushroom Shrine of Japan#k. I'll be there serving you as the travel guide. Rest assured, the number of destinations will be increase over time. Now, would you like to head over to the Mushroom Shrine?#b\r\n#L0#Yes, take me to Mushroom Shrine (Japan)"); + else if (status == 2) + cm.sendNext("Would you like to travel to #bMushroom Shrine of Japan#k? If you desire to feel the essence of Japan, there's nothing like visiting the Shrine, a Japanese cultural melting pot. Mushroom Shrine is a mythical place that serves the incomparable Mushroom God from ancient times."); + else if (status == 3) { + if(cm.getMeso() < 3000){ + cm.sendNext("You don't have enough mesos to take the travel."); + cm.dispose(); + return; + } + cm.sendNextPrev("Check out the female shaman serving the Mushroom God, and I strongly recommend trying Takoyaki, Yakisoba, and other delocious food sold in the streets of Japan. Now, let's head over to #bMushroom Shrine#k, a mythical place if there ever was one."); + } else if (status == 4) { + cm.gainMeso(-3000); + cm.getPlayer().saveLocation("WORLDTOUR"); + cm.warp(800000000); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000021.js b/scripts/npc/world0/9000021.js new file mode 100644 index 0000000000..89c70b1442 --- /dev/null +++ b/scripts/npc/world0/9000021.js @@ -0,0 +1,70 @@ +/* + * Aran / Cygnus Job Advancer + * v83 MoopleDEV Rev 116 + * Author: ShEtY + */ + +var status = -1; +var ask = "Oh, I see you've grown stronger! Do you wish to job advance?"; +var job; +var koc = new Array(); + +function start() { + cm.sendNext("Hey #e#h ##n, I'm the Aran & Cygnus Job Advancer."); +} + +function action(m, t, s) { + status++; + if (m != 1) { + cm.dispose(); + return; + } + if (status == 0) { + if (cm.getJobId() < 1000 ||cm.getJobId() % 10 == 2) { + cm.dispose(); + } else if (cm.getJobId() % 10 == 1 && cm.getJobId() < 2000) { + cm.dispose(); + } else if (cm.getJobId() % 1000 == 0 && cm.getJobId() != 0 && cm.getLevel() >= 10) { + if (cm.getJobId() == 1000) { + for (var i = 1; i < 6; i++) + koc.push(cm.getJobId() + 100 * i); + var list = "What class of Cygnus Knight do you wish to advance to?"; + for (var k = 0; k < koc.length; k++) + list += "\r\n#L" + k + "#" + cm.getJobName(koc[k]) + "#l"; + cm.sendSimple(list); + } else if (cm.getJobId() == 2000) { + job = cm.getJobId() + 100; + cm.sendYesNo(ask); + } + else + cm.dispose(); + } else if (cm.getJobId() % 1000 != 0) { + if (cm.getJobId() % 100 == 0 && cm.getLevel() >= 30) { + job = cm.getJobId() + 10; + cm.sendYesNo(ask); + } else if (cm.getJobId() % 10 == 0 && cm.getLevel() >= 70) { + job = cm.getJobId() + 1; + cm.sendYesNo(ask); + } else if (cm.getJobId() % 10 == 1 && cm.getJobId() >= 2000 && cm.getLevel() >= 120) { + job = cm.getJobId() + 1; + cm.sendYesNo(ask); + } + } + } else if (status == 1) { + if (cm.getJobId() != 1000) { + if (cm.getJobId() == 2000) { + cm.changeJobById(job); + cm.maxMastery(); + cm.resetStats(); + cm.dispose(); + } else { + cm.changeJobById(job); + cm.dispose(); + } + } else if (cm.getJobId() == 1000) { + cm.changeJobById(koc[s]); + cm.resetStats(); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000036.js b/scripts/npc/world0/9000036.js new file mode 100644 index 0000000000..fed8e8c22d --- /dev/null +++ b/scripts/npc/world0/9000036.js @@ -0,0 +1,196 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC: Agent E (9000036) + Victoria Road : Henesys + + Refining NPC: + * Accessories refiner + * + * By Ronan Lana +*/ + +var status = -1; +var selectedType = -1; +var selectedItem = -1; +var item; +var items; +var mats; +var matQty; +var cost; +var qty = 1; +var equip; +var maxEqp = 0; + +function start() { + cm.getPlayer().setCS(true); + var selStr = "Hello, I am the #bAccessory NPC Crafter#k! My works are widely recognized to be too fine, to the point which all my items mimic not only the appearance but too the attributes of them! Everything I charge is some 'ingredients' to make them and, of course, a fee for my services. On what kind of equipment will you take a look?#b" + var options = ["Pendants","Face accessories","Eye accessories","Belts & medals","Rings","#t4032496#"]; + for (var i = 0; i < options.length; i++) + selStr += "\r\n#L" + i + "# " + options[i] + "#l"; + cm.sendSimple(selStr); +} + +function action(mode, type, selection) { + status++; + if (mode != 1){ + cm.dispose(); + return; + } + if (status == 0) { + if (selection == 0) { //pendants + var selStr = "Well, I've got these pendants on my repertoire:#b"; + items = [1122018,1122007,1122001,1122002,1122003,1122004,1122005,1122006,1122058]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##b"; + }else if (selection == 1) { //face accessory + var selStr = "Hmm, face accessories? There you go: #b"; + items = [1012181,1012182,1012183,1012184,1012185,1012186, 1012108, 1012109, 1012110, 1012111]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##b"; + }else if (selection == 2) { //eye accessory + var selStr = "Got hard sight? Okay, so which glasses do you want me to make?#b"; + items = [1022073, 1022088, 1022103, 1022089, 1022082]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##b"; + }else if (selection == 3) { //belt & medal + var selStr = "Hmm... For these, things get a little tricky. Since these items are too short and too similar one another, I don't really know what item will emerge when I finish the synthesis. Still wanna try for something?"; + items = []; + maxEqp = 0; + + for (var x = 1132005; x < 1132017; maxEqp++, x++) + items[maxEqp] = x; + + for (var x = 1142000; x < 1142102; maxEqp++, x++) + items[maxEqp] = x; + + for (var x = 1142107; x < 1142143; maxEqp++, x++) + items[maxEqp] = x; + selStr += "\r\n#L" + i + "##bTry it!#b"; + + }else if (selection == 4) { //ring refine + var selStr = "Rings, huh? These are my specialty, go check it yourself!#b"; + items = [1112407, 1112408, 1112401, 1112405, 1112413, 1112414, 1112402]; + + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##b"; + + }else if (selection == 5) { //make necklace + var selStr = "Need to make #t4032496#?#b"; + items = [4032496]; + for (var i = 0; i < items.length; i++) + selStr += "\r\n#L" + i + "##t" + items[i] + "##l"; + } + selectedType = selection; + cm.sendSimple(selStr); + }else if (status == 1) { + if (selectedType != 3) selectedItem = selection; + + if (selectedType == 0) { //pendant refine + var matSet = [[4003004, 4030012, 4001356, 4000026], [4000026, 4001356, 4000073, 4001006], [4001344, 4003001, 4003004, 4003005], [4001344, 4003001, 4003004, 4003005], [4001344, 4003001, 4003004, 4003005], [4001344, 4003001, 4003004, 4003005], [4001344, 4003001, 4003004, 4003005], [4001344, 4003001, 4003004, 4003005], [1122007, 4003002, 4032496]]; + var matQtySet = [[20, 20, 5, 1], [5, 5, 10, 1], [10, 4, 20, 4], [20, 8, 20, 8], [10, 4, 20, 4], [15, 6, 30, 6], [20, 8, 40, 8], [15, 6, 30, 6], [1, 1, 1]]; + var costSet = [150000, 500000, 200000, 400000, 200000, 300000, 400000, 300000, 2500000]; + }else if (selectedType == 1) { //face accessory refine + var matSet = [[4001343, 4003004],[4001343, 4003004,4000026],[4001343, 4003004,4000026,4000082,4003002],[4001343, 4003005],[4001343, 4003005,4000026],[4001343, 4003005,4000026,4000082,4003002],[4001006, 4011008],[4001006, 4011008],[4001006, 4011008],[4001006, 4011008]]; + var matQtySet = [[5,5],[5,5,5],[5,5,5,5,1],[5,5],[5,5,5],[5,5,5,5,1],[1,1],[1,1],[1,1],[1,1]]; + var costSet = [100000,200000,300000,125000,250000,375000,500000,500000,500000,500000, 25000, 25000, 25000, 25000]; + }else if (selectedType == 2) { //eye accessory refine + var matSet = [[4001006, 4003002, 4000082, 4031203], [4000073, 4011008], [4000073, 4011008], [4000073, 4011008, 4000082], [4001006, 4003002, 4003000, 4003001]]; + var matQtySet = [[2, 2, 5, 10], [50, 2], [75, 3], [75, 3, 10], [2, 2, 10, 5]]; + var costSet = [250000, 250000, 300000, 400000, 200000]; + }else if (selectedType == 3) { //belt & medals refine + var matSet = [[4001006, 4003005, 4003004], [7777, 7777]]; + var matQtySet = [[2, 5, 10], [7777, 7777]]; + var costSet = [15000, 7777]; + }else if (selectedType == 4) { //ring refine + var matSet = [[4003001, 4001344, 4001343], [4003001, 4001344, 4001343], [4021004, 4011008], [4011008, 4001006], [1112405, 2022039], [1112413, 4000176], [4011007, 4021009]]; + var matQtySet = [[2, 2, 2], [2, 2, 2], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]]; + var costSet = [10000, 10000, 10000, 20000, 15000, 15000, 10000]; + }else if (selectedType == 5) { //necklace refine + var matSet = [[4011007, 4011008, 4021009]]; + var matQtySet = [[1, 1, 1]]; + var costSet = [10000]; + } + + if (selectedType == 3) { + selectedItem = Math.floor(Math.random() * maxEqp); + item = items[selectedItem]; + mats = matSet[0]; + matQty = matQtySet[0]; + cost = costSet[0]; + } + else { + item = items[selectedItem]; + mats = matSet[selectedItem]; + matQty = matQtySet[selectedItem]; + cost = costSet[selectedItem]; + } + + var prompt = "You want me to make "; + if(selectedType != 3) { + if (qty == 1) + prompt += "a #t" + item + "#?"; + else + prompt += qty + " #t" + item + "#?"; + } + else prompt += "a #bbelt#k or a #bmedal#k?"; + + prompt += " Right! I will need some items to make that item. Make sure you have a #bfree slot#k in your inventory!#b"; + if (mats instanceof Array) + for(var i = 0; i < mats.length; i++) + prompt += "\r\n#i" + mats[i] + "# " + (matQty[i] * qty) + " #t" + mats[i] + "#"; + else + prompt += "\r\n#i" + mats + "# " + (matQty * qty) + " #t" + mats + "#"; + if (cost > 0) + prompt += "\r\n#i4031138# " + (cost * qty) + " meso"; + cm.sendYesNo(prompt); + }else if (status == 2) { + var complete = true; + if (cm.getMeso() < (cost * qty)) + cm.sendOk("This is the fee I charge to make my items! No credit."); + else{ + if (mats instanceof Array) { + for(var i = 0; complete && i < mats.length; i++) + if (!cm.haveItem(mats[i], matQty[i])) + complete = false; + }else if (!cm.haveItem(mats, matQty)) + complete = false; + } + if (!complete) + cm.sendOk("Are you sure you got all the items required? Double check it!"); + else { + if (cm.canHold(item)) { + if (mats instanceof Array) { + for (var i = 0; i < mats.length; i++) + cm.gainItem(mats[i], -(matQty[i] * qty)); + }else + cm.gainItem(mats, -(matQty * qty)); + cm.gainMeso(-(cost * qty)); + + cm.gainItem(item, qty); + cm.sendOk("The item is done! Take and try this piece of art yourself."); + }else { + cm.sendOk("You got no free slot on your inventory."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9000049.js b/scripts/npc/world0/9000049.js new file mode 100644 index 0000000000..c13142e39c --- /dev/null +++ b/scripts/npc/world0/9000049.js @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Fairytail Crackers + Witch Tower Entrance (980040000) + Used to warp into the Jump Quest. Currently only used for GM events. + + First revision by Twdtwd. + */ + +var status; +var stage = 1; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if(cm.getPlayer().isGM()) { + var event = "CLOSED"; + var stage = cm.getClient().getChannelServer().getStoredVar(9000049); + if(stage == 1) event = "EASY"; + if(stage == 2) event = "MEDIUM"; + if(stage == 3) event = "HARD"; + cm.sendSimple("Hello GM.\r\nThe event is currently: #r" + event + "#k\r\nWhat would you like to do?\r\n#b#L0#Enter the event#l\r\n#L1#Close the event#l\r\n#L2#Set the event to EASY#l\r\n#L3#Set the event to MEDIUM#l\r\n#L4#Set the event to HARD#l"); + } else { + var stage = cm.getClient().getChannelServer().getStoredVar(9000049); + if(stage == 0) { + cm.sendOk("It looks like the Tower isn't unlocked yet. Please wait for a GM to unlock it!"); + } else { + cm.warp(980040000 + stage * 1000); + } + cm.dispose(); + } + } else if(status == 1 && cm.getPlayer().isGM()) { + if(selection == 0) { + var stage = cm.getClient().getChannelServer().getStoredVar(9000049); + if(stage == 0) { + cm.sendOk("It looks like the Tower isn't unlocked yet. Please wait for a GM to unlock it!"); + } else { + cm.warp(980040000 + stage * 1000); + } + cm.dispose(); + return; + } + cm.getClient().getChannelServer().setStoredVar(9000049, selection - 1); + cm.dispose(); + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9001108.js b/scripts/npc/world0/9001108.js new file mode 100644 index 0000000000..ac655e0821 --- /dev/null +++ b/scripts/npc/world0/9001108.js @@ -0,0 +1,108 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** +* @Author : iAkira/Kevintjuh93 +**/ +var status = 0; +var selected = 0; + +function start() { + if (cm.getPlayer().getMapId() == 100000000) { + cm.sendNext("There! Did you see that? You didn't? A UFO just passed... there!! Look, someone is getting dragged into the UFO... arrrrrrgh, it's Gaga! #rGaga just got kidnapped by a UFO!#k"); + } else if (cm.getPlayer().getMapId() == 922240200) { + cm.sendSimple("Did you have something to say...? #b\b\r\n#L0#I want to rescue Gaga.#l\r\n#L1#I want to go to the Space Mine.#l"); + } else if (cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) { + cm.sendYesNo("Don't worry if you fail. You'll have 3 chances. Do you still want to give up?"); + } else if (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119) { + var text = "You went through so much trouble to rescue Gaga, but it looks like we're back to square one. "; + var rgaga = cm.getPlayer().getEvents().getGagaRescue(); + if (rgaga.getCompleted() == 10 || rgaga.getCompleted() == 20) { + text += "Please don't give up untill Gaga is rescued. To show you my appreciation for what you've accomplished thus far, I've given you a Spaceship. It's rather worn out, but it should still be operational. Check your #bSkill Window#k."; + rgaga.giveSkill(cm.getPlayer()); + } else + text += "Let's go back now."; + + cm.sendNext(text); + } +} + +function action(m,t,s) { + if (m > 0) { + status++; + if (cm.getPlayer().getMapId() == 100000000) { // warper completed + if (status == 1) { + if (cm.getPlayer().getLevel() >= 12) + cm.sendYesNo("What do we do now? It's just a rumor yet, but... I've heard that scary things happen to you if you get kidnapped by aliens... may be that's what happenning to Gaga right now! Please, please rescue Gaga! \r\n #bGaga may be a bit indetermined and clueless, but#k he has a really good heart. I can't let something terrible happen to him. Right! Grandpa from the moon might know how to rescue him! I will send you to the moon, so please go meet Grandpa and rescue Gaga"); + else + cm.sendOk("Oh! it seems you don't reach the level requirements to save Gaga. Please come back when you are level 12 or higher."); + + } else if (status == 2) + cm.sendNext("Thank you so much. Please rescue Gaga! Grandpa from the moon will help you."); + else if (status == 3) { + cm.warp(922240200); + cm.dispose(); + } + } else if (cm.getPlayer().getMapId() == 922240200) { + if (status == 1) { + if(s == 0) { + selected = 1; + cm.sendNext("Welcome! I heard what happened from Baby Moon Bunny I'm glad you came since I was Planning on requesting some help. Gaga is a friend of mine who has helped me before and often stops by to say hello. Unfortunaley, he was kidnapped by aliens."); + } else { + selected = 2; + cm.sendYesNo("At the Space Mine, you can find special ores called #bKrypto Crystals#k that contain the mysterious power of space. #bKrypto Crystals#l are usually emerald in color, but will turn brown if hit with the Spaceship's #bSpace Beam#k. Remember, in order to thwart this alien conspracy, #b10 Brown Krypto Crystal's and 10 Emerald Krypto Crystal's are needed. But since even #b1 Krypto Crystal#k can be of help, brign me as many as possible. Oh, and one more thing! The Space Mines are protected by the Space Mateons. They are extemely strong due to the power of the #Krypto Crystals#k, so don't try to defeat them. Simply concentrate on quickly collecting the crystals."); + } + } else if (status == 2) { + if(selected == 1) { + cm.sendYesNo("If we just leave Gaga with the aliens, something terrible will happen to him! I'll let you borrow a spaceship that the Moon Bunnies use for traveling so that you can rescue Gaga.#b Although he might appear a bit indecieve, slow, and immature at times#k, he's really a nice young man. Do you want to go rescue him now?"); + } else if(selected == 2) { + cm.sendOk("Not coded yet, f4."); + cm.dispose(); + } + } else if (status == 3) { + var number = -1; + for (var i = 0; i < 20; i++) { + var mapFactory = cm.getClient().getChannelServer().getMapFactory(); + if (mapFactory.getMap(922240000 + i).getCharacters().isEmpty()) { + number = i; + break; + } + } + if (number > -1) + cm.warp(922240000 + number); + else + cm.sendOk("There are currently no empty maps, please try again later."); + + cm.dispose(); + } + } else if ((cm.getPlayer().getMapId() >= 922240000 && cm.getPlayer().getMapId() <= 922240019) || (cm.getPlayer().getMapId() >= 922240100 && cm.getPlayer().getMapId() <= 922240119)) { + cm.warp(922240200); + cm.dispose(); + } + } else if (m < 1) { + if(m == 0) { + if (cm.getPlayer().getMapId() == 922240200) { + cm.sendOk("That's a shame, come back when your ready."); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9010003.js b/scripts/npc/world0/9010003.js new file mode 100644 index 0000000000..c6fa8d198f --- /dev/null +++ b/scripts/npc/world0/9010003.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + cm.dispose(); + /*var em = cm.getEventManager("lolcastle"); + if (em == null || !em.getProperty("entryPossible").equals("true")) { + cm.sendOk("I am Ria."); + cm.dispose(); + } else + cm.sendNext("I am Ria. For a small fee of #b1000000 meso#k I can send you to the #rField of Judgement#k."); +*/ +} + +function action(mode, type, selection) { + cm.dispose(); + /* if (mode == -1) + cm.dispose(); + else { + if (mode == 0) { + cm.sendOk("All right, see you next time."); + cm.dispose(); + return; + } + status++; + if (status == 1) + cm.sendYesNo("Do you wish to enter #rField of Judgement#k now?"); + else if (status == 2) { + var em = cm.getEventManager("lolcastle"); + if (cm.getMeso() < 1000000) { + cm.sendOk("You do not have enough mesos."); + cm.dispose(); + } else if (cm.getPlayer().getLevel() < 21) { + cm.sendOk("You have to be at least level 21 to enter #rField of Judgement.#k"); + cm.dispose(); + } else if (cm.getPlayer().getLevel() >= 21 && cm.getPlayer().getLevel() < 31) + em.getInstance("lolcastle1").registerPlayer(cm.getPlayer()); + else if (cm.getPlayer().getLevel() >= 31 && cm.getPlayer().getLevel() < 51) + em.getInstance("lolcastle2").registerPlayer(cm.getPlayer()); + else if (cm.getPlayer().getLevel() >= 51 && cm.getPlayer().getLevel() < 71) + em.getInstance("lolcastle3").registerPlayer(cm.getPlayer()); + else if (cm.getPlayer().getLevel() >= 71 && cm.getPlayer().getLevel() < 91) + em.getInstance("lolcastle4").registerPlayer(cm.getPlayer()); + else + em.getInstance("lolcastle5").registerPlayer(cm.getPlayer()); + cm.gainMeso(-1000000); + cm.dispose(); + } + }*/ +} diff --git a/scripts/npc/world0/9010022.js b/scripts/npc/world0/9010022.js new file mode 100644 index 0000000000..08ae2c97e9 --- /dev/null +++ b/scripts/npc/world0/9010022.js @@ -0,0 +1,80 @@ +importPackage(Packages.client); +importPackage(Packages.server.maps); + +var status; +var sel; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if (cm.getLevel() < 20) { + cm.sendDimensionalMirror("#-1# There is no place for you to transport to from here."); + cm.dispose(); + } else { + var selStr = ""; + if (cm.getLevel() >= 20 && cm.getLevel() <= 30) { + selStr += "#0# Ariant Coliseum"; + } + + if (cm.getLevel() >= 25) { + selStr += "#1# Mu Lung Dojo"; + } + + if (cm.getLevel() >= 30 && cm.getLevel() <= 50) { + selStr += "#2# Monster Carnival 1"; + } + + if (cm.getLevel() >= 51 && cm.getLevel() <= 70) { + selStr += "#3# Monster Carnival 2"; + } + + if (cm.getLevel() >= 40) { + selStr += "#5# Nett's Pyramid"; + } + + if (cm.getLevel() >= 25 && cm.getLevel() <= 30) { + selStr += "#6# Construction Site"; + } + cm.sendDimensionalMirror(selStr); + } + } else if (status == 1) { + cm.getPlayer().saveLocation("MIRROR"); + switch (selection) { + case 0: + cm.warp(980010000, 3); + break; + case 1: + cm.warp(925020000); + break; + case 2: + cm.warp(980000000, 3); + break; + case 3: + cm.warp(980030000, 3); + break; + case 5: + cm.warp(926010000); + break; + case 6: + cm.warp(910320000); + break; + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/9020000.js b/scripts/npc/world0/9020000.js new file mode 100644 index 0000000000..041df3cbac --- /dev/null +++ b/scripts/npc/world0/9020000.js @@ -0,0 +1,89 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Lakelis - Victoria Road: Kerning City (103000000) +-- By --------------------------------------------------------------------------------------------- + Stereo +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Stereo +--------------------------------------------------------------------------------------------------- +**/ + +var status; +var minLevel = 21; +var maxLevel = 255; +var minPlayers = 3; +var maxPlayers = 6; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else { + cm.dispose(); + return; + } + if (status == 0) { + if (cm.getParty() == null) { // No Party + cm.sendOk("How about you and your party members collectively beating a quest? Here you'll find obstacles and problems where you won't be able to beat it without great teamwork. If you want to try it, please tell the #bleader of your party#k to talk to me."); + cm.dispose(); + } else if (!cm.isLeader()) { // Not Party Leader + cm.sendOk("If you want to try the quest, please tell the #bleader of your party#k to talk to me."); + cm.dispose(); + } else { + var party = cm.getParty().getMembers(); + var inMap = cm.partyMembersInMap(); + var levelValid = 0; + for (var i = 0; i < party.size(); i++) { + if (party.get(i).getLevel() >= minLevel && party.get(i).getLevel() <= maxLevel) + levelValid++; + } + if (inMap < minPlayers || inMap > maxPlayers) { + cm.sendOk("Your party is not a party of "+minPlayers+". Please make sure all your members are present and qualified to participate in this quest."); + cm.dispose(); + } else if (levelValid != inMap) { + cm.sendOk("Please make sure all your members are present and qualified to participate in this quest. This PQ requires players ranging from level "+minLevel+" to level "+maxLevel+". I see #b" + levelValid + "#k members are in the right level range. If this seems wrong, #blog out and log back in,#k or reform the party."); + cm.dispose(); + } else { + var em = cm.getEventManager("KerningPQ"); + if (em == null) { + cm.sendOk("This PQ is currently unavailable."); + } else if (em.getProperty("KPQOpen").equals("true")) { + // Begin the PQ. + em.startInstance(cm.getParty(), cm.getPlayer().getMap()); + party = cm.getParty(); + cm.removePartyItems(4001008); + cm.removePartyItems(4001007); + em.setProperty("KPQOpen" , "false"); + } else { + cm.sendNext("There is already another party inside. Please wait !"); + } + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9020001.js b/scripts/npc/world0/9020001.js new file mode 100644 index 0000000000..b7892692a7 --- /dev/null +++ b/scripts/npc/world0/9020001.js @@ -0,0 +1,381 @@ +/*/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Cloto - Hidden Street : 1st Accompaniment +-- By --------------------------------------------------------------------------------------------- + Stereo +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Second Version by Moogra + 1.0 - First Version by Stereo +--------------------------------------------------------------------------------------------------- +**/ + +importPackage(Packages.tools); +importPackage(java.awt); + +var status; +var curMap; +var questions = Array("Here's the question. Collect the same number of coupons as the minimum level required to make the first job advancement as warrior.", + "Here's the question. Collect the same number of coupons as the minimum amount of STR needed to make the first job advancement as a warrior.", + "Here's the question. Collect the same number of coupons as the minimum amount of INT needed to make the first job advancement as a magician.", + "Here's the question. Collect the same number of coupons as the minimum amount of DEX needed to make the first job advancement as a bowman.", + "Here's the question. Collect the same number of coupons as the minimum amount of DEX needed to make the first job advancement as a thief.", + "Here's the question. Collect the same number of coupons as the minimum level required to advance to 2nd job.", + "Here's the question. Collect the same number of coupons as the minimum level required to make the first job advancement as a magician."); +var qanswers = Array(10, 35, 20, 25, 25, 30, 8); +var party; +var preamble; // we dont even need this mother fucker ! -- +var stage2Rects = Array(new Rectangle(-755,-132,4,218),new Rectangle(-721,-340,4,166),new Rectangle(-586,-326,4,150),new Rectangle(-483,-181,4,222)); +var stage3Rects = Array(new Rectangle(608,-180,140,50),new Rectangle(791,-117,140,45), + new Rectangle(958,-180,140,50),new Rectangle(876,-238,140,45), + new Rectangle(702,-238,140,45)); +var stage4Rects = Array(new Rectangle(910,-236,35,5),new Rectangle(877,-184,35,5), + new Rectangle(946,-184,35,5),new Rectangle(845,-132,35,5), + new Rectangle(910,-132,35,5),new Rectangle(981,-132,35,5)); +var stage2combos = Array(Array(0,1,1,1),Array(1,0,1,1),Array(1,1,0,1),Array(1,1,1,0)); +var stage3combos = Array(Array(0,0,1,1,1),Array(0,1,0,1,1),Array(0,1,1,0,1), + Array(0,1,1,1,0),Array(1,0,0,1,1),Array(1,0,1,0,1), + Array(1,0,1,1,0),Array(1,1,0,0,1),Array(1,1,0,1,0), + Array(1,1,1,0,0)); +var stage4combos = Array(Array(0,0,0,1,1,1),Array(0,0,1,0,1,1),Array(0,0,1,1,0,1), + Array(0,0,1,1,1,0),Array(0,1,0,0,1,1),Array(0,1,0,1,0,1), + Array(0,1,0,1,1,0),Array(0,1,1,0,0,1),Array(0,1,1,0,1,0), + Array(0,1,1,1,0,0),Array(1,0,0,0,1,1),Array(1,0,0,1,0,1), + Array(1,0,0,1,1,0),Array(1,0,1,0,0,1),Array(1,0,1,0,1,0), + Array(1,0,1,1,0,0),Array(1,1,0,0,0,1),Array(1,1,0,0,1,0), + Array(1,1,0,1,0,0),Array(1,1,1,0,0,0)); +var eye = 9300002; +var necki = 9300000; +var slime = 9300003; +var monsterIds = Array(eye, eye, eye, necki, necki, necki, necki, necki, necki, slime); +var prizeIdScroll = Array(2040502, 2040505,// Overall DEX and DEF + 2040802,// Gloves for DEX + 2040002, 2040402, 2040602);// Helmet, Topwear and Bottomwear for DEF +var prizeIdUse = Array(2000001, 2000002, 2000003, 2000006,// Orange, White and Blue Potions and Mana Elixir + 2000004, 2022000, 2022003);// Elixir, Pure Water and Unagi +var prizeQtyUse = Array(80, 80, 80, 50, 5, 15, 15); +var prizeIdEquip = Array(1032004, 1032005, 1032009,// Level 20-25 Earrings + 1032006, 1032007, 1032010,// Level 30 Earrings + 1032002,// Level 35 Earring + 1002026, 1002089, 1002090);// Bamboo Hats +var prizeIdEtc = Array(4010000, 4010001, 4010002, 4010003,// Mineral Ores + 4010004, 4010005, 4010006,// Mineral Ores + 4020000, 4020001, 4020002, 4020003,// Jewel Ores + 4020004, 4020005, 4020006,// Jewel Ores + 4020007, 4020008, 4003000); // Diamond and Black Crystal Ores and Screws +var prizeQtyEtc = Array(15, 15, 15, 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 30); +//500, 1000, 2000, 4000, 7500 = default +function start() { + status = -1; + curMap = cm.getPlayer().getMapId() - 103000799; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else if (type == 0 && mode == 0) + status--; + else { + cm.dispose(); + return; + } + if (curMap == 1) { // First Stage. + if (isLeader()) { + var eim = cm.getPlayer().getEventInstance(); + party = eim.getPlayers(); + preamble = eim.getProperty("leader1stpreamble"); + if (preamble == null) { + cm.sendNext("Hello. Welcome to the first stage. Look around and you'll see Ligators wandering around. When you defeat them, they will cough up a #bcoupon#k. Every member of the party other than the leader should talk to me, geta question, and gather up the same number of #bcoupons#k as the answer to the question I'll give to them.\r\nIf you gather up the right amount of #bcoupons#k, I'll give the #bpass#k to that player. Once all the party members other than the leader gather up the #bpasses#k and give them to the leader, the leader will hand over the #bpasses#k to me, clearing the stage in the process. The faster you take care of the stages, the more stages you'll be able to challenge. So I suggest you take care of things quickly and swiftly. Well then, best of luck to you."); + eim.setProperty("leader1stpreamble","done"); + cm.dispose(); + } else { + var complete = eim.getProperty(curMap + "stageclear"); + if (complete != null) { + cm.sendNext("Please hurry on to the next stage, the portal opened!"); + cm.dispose(); + } else { + var numpasses = party.size() - 1; // All the players in the party need to get a pass besides the leader. + var strpasses = "#b" + numpasses + " passes#k"; + if (!cm.haveItem(4001008, numpasses)) { + cm.sendNext("I'm sorry, but you are short on the number of passes. You need to give me the right number of passes; it should be the number of members of your party minus the leader, " + strpasses + " to clear the stage. Tell your party members to solve the questions, gather up the passes, and give them to you."); + cm.dispose(); + } else { + cm.sendNext("You gathered up " + strpasses + "! Congratulations on clearing the stage! I'll make the portal that sends you to the next stage. There's a time limit on getting there, so please hurry. Best of luck to you all!"); + clear(1, eim, cm); + cm.givePartyExp("KerningPQ1st"); + cm.gainItem(4001008, -numpasses); + cm.dispose(); + // TODO: Make the shiny thing flash + } + } + } + } else { // Not leader + var eim = cm.getPlayer().getEventInstance(); + pstring = "member1stpreamble" + cm.getPlayer().getId(); + preamble = eim.getProperty(pstring); + if (status == 0) { + if (preamble == null) { + var qstring = "member1st" + cm.getPlayer().getId(); + var question = eim.getProperty(qstring); + if (question == null) { + // Select a random question to ask the player. + var questionNum = Math.floor(Math.random() * questions.length); + eim.setProperty(qstring, questionNum); + } + cm.sendNext("Here, you need to collect #bcoupons#k by defeating the same number of Ligators as the answer to the questions asked individually."); + } else { // Otherwise, check for stage completed + var complete = eim.getProperty(curMap + "stageclear"); + if (complete != null) { // Strage completed + cm.sendNext("Please hurry on to the next stage, the portal is open!"); + cm.dispose(); + } else { + // Reply to player correct/incorrect response to the question they have been asked + var qstring = "member1st" + cm.getPlayer().getId(); + var qcompletestr = "member1stcom" + cm.getPlayer().getId(); + var numcoupons = qanswers[parseInt(eim.getProperty(qstring))]; + var qcorr = cm.itemQuantity(4001007); + if(eim.getProperty(qcompletestr) != null) { + cm.sendNext("Thanks for bringing me the coupons. Please hand the pass to your party leader to continue."); + cm.dispose(); + } else if (numcoupons == qcorr) { + cm.sendNext("That's the right answer! For that you have just received a #bpass#k. Please hand it to the leader of the party."); + cm.gainItem(4001007, -numcoupons); + cm.gainItem(4001008, 1); + eim.setProperty(qcompletestr, "done"); + cm.dispose(); + } else + cm.sendNext("I'm sorry, but that is not the right answer! Please have the correct number of coupons in your inventory."); + } + } + } else if (status == 1) { + if (preamble == null) { + var qstring = "member1st" + cm.getPlayer().getId(); + var question = parseInt(eim.getProperty(qstring)); + cm.sendNextPrev(questions[question]); + } else { + var qstring = "member1st" + cm.getPlayer().getId(); + var question = parseInt(eim.getProperty(qstring)); + cm.sendNextPrev(questions[question]); + cm.dispose(); + } + } else if (status == 2) { // Preamble completed + eim.setProperty(pstring,"done"); + cm.dispose(); + } + } // End first map scripts + }else if (2 <= curMap && 4 >= curMap) { + new Rectanglestages(cm); + }else if (curMap == 5) { // Final stage + var eim = cm.getPlayer().getEventInstance(); + if (eim.getProperty("5stageclear") == null) { //If no + if (isLeader()) { // Leader + if (cm.haveItem(4001008, 10)) { + // Clear stage + cm.sendNext("Here's the portal that leads you to the last, bonus stage. It's a stage that allows you to defeat regular monsters a little easier. You'll be given a set amount of time to hunt as much as possible, but you can always leave the stage in the middle of it through the NPC. Again, congratulations on clearing all the stages. Take care..."); + party = eim.getPlayers(); + cm.gainItem(4001008, -10); + clear(5, eim, cm); + cm.givePartyExp("KerningPQFinal"); + cm.dispose(); + } else { // Not done yet + cm.sendNext("Hello. Welcome to the 5th and final stage. Walk around the map and you'll be able to find some Boss monsters. Defeat all of them, gather up #bthe passes#k, and please get them to me. Once you earn your pass, the leader of your party will collect them, and then get them to me once the #bpasses#k are gathered up. The monsters may be familiar to you, but they may be much stronger than you think, so please be careful. Good luck!\r\nAs a result of complaints, it is now mandatory to kill all the Slimes! Do it!"); + } + cm.dispose(); + } else { // Members + cm.sendNext("Welcome to the 5th and final stage. Walk around the map and you will be able to find some Boss monsters. Defeat them all, gather up the #bpasses#k, and give them to your leader. Once you are done, return to me to collect your reward."); + cm.dispose(); + } + } else { // Give rewards and warp to bonus + if (status == 0) { + cm.sendNext("Incredible! You cleared all the stages to get to this point. Here's a small prize for your job well done. Before you accept it, however, please make sure your use and etc. inventories have empty slots available.\r\n#bYou will not receive a prize if you have no free slots!#k"); + } else if (status == 1) { + getPrize(eim,cm); + cm.dispose(); + } + } + } else { // No map found + cm.sendNext("Invalid map, this means the stage is incomplete."); + cm.dispose(); + } +} + +function clear(stage, eim, cm) { + eim.setProperty(stage + "stageclear", "true"); + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + map.broadcastMessage(MaplePacketCreator.environmentChange("gate", 2)); + var mf = eim.getMapFactory(); + map = mf.getMap(103000800 + stage); + var nextStage = eim.getMapInstance(103000800 + stage); + var portal = nextStage.getPortal("next00"); + if (portal != null) { + portal.setScriptName("kpq" + stage); + } +} + +function failstage(eim, cm) { + var map = eim.getMapInstance(cm.getPlayer().getMapId()); + map.broadcastMessage(MaplePacketCreator.playSound("Party1/Failed")); + map.broadcastMessage(MaplePacketCreator.showEffect("quest/party/wrong_kor")); +} + +function Rectanglestages (cm) { + var eim = cm.getPlayer().getEventInstance(); + var nthtext; + var nthobj; + var nthverb; + var nthpos; + var curArray; + var curCombo; + var objset; + if (curMap == 2) { + nthtext = "2nd"; + nthobj = "ropes"; + nthverb = "hang"; + nthpos = "hang on the ropes too low"; + curArray = stage2Rects; + curCombo = stage2combos; + objset = [0,0,0,0]; + } else if (curMap == 3) { + nthtext = "3rd"; + nthobj = "platforms"; + nthverb = "stand"; + nthpos = "stand too close to the edges"; + curArray = stage3Rects; + curCombo = stage3combos; + objset = [0,0,0,0,0]; + } else if (curMap == 4) { + nthtext = "4th"; + nthobj = "barrels"; + nthverb = "stand"; + nthpos = "stand too close to the edges"; + curArray = stage4Rects; + curCombo = stage4combos; + objset = [0,0,0,0,0,0]; + } + if (isLeader()) { // Check if player is leader + if (status == 0) { + party = eim.getPlayers(); + preamble = eim.getProperty("leader" + nthtext + "preamble"); + if (preamble == null) { // first time talking. + cm.sendNext("Hi. Welcome to the " + nthtext + " stage. Next to me, you'll see a number of " + nthobj + ". Out of these " + nthobj + ", #b3 are connected to the portal that sends you to the next stage#k. All you need to do is have #b3 party members find the correct " + nthobj + " and " + nthverb + " on them.#k\r\nBUT, it doesn't count as an answer if you " + nthpos + "; please be near the middle of the " + nthobj + " to be counted as a correct answer. Also, only 3 members of your party are allowed on the " + nthobj + ". Once they are " + nthverb + "ing on them, the leader of the party must #bdouble-click me to check and see if the answer's correct or not#k. Now, find the right " + nthobj + " to " + nthverb + " on!"); + eim.setProperty("leader" + nthtext + "preamble","done"); + var sequenceNum = Math.floor(Math.random() * curCombo.length); + eim.setProperty("stage" + nthtext + "combo", sequenceNum.toString()); + cm.dispose(); + } else { + if(cm.getPlayer().getMap().getCharacters().size() != eim.getPlayerCount()) { + cm.sendOk("Please make sure all of your party members are here before you continue."); + cm.dispose(); + return; + } + var complete = eim.getProperty(curMap + "stageclear"); + if (complete != null) { + cm.sendNext("Please hurry on to the next stage, the portal opened!"); + cm.dispose(); + } else { // Check for people on ropes and their positions + var playersOnCombo = 0; + for (var i = 0; i < party.size(); i++) { + for (var y = 0; y < curArray.length; y++) { + if (curArray[y].contains(party.get(i).getPosition())) { + playersOnCombo++; + objset[y] = 1; + break; + } + } + } + if (playersOnCombo == 3) { + var combo = curCombo[parseInt(eim.getProperty("stage" + nthtext + "combo"))]; + var correctCombo = true; + for (i = 0; i < objset.length && correctCombo; i++) + if (combo[i] != objset[i]) + correctCombo = false; + if (correctCombo) { + clear(curMap, eim, cm); + cm.givePartyExp("KerningPQ" + nthtext); + cm.dispose(); + } else { // Wrong + failstage(eim, cm); + cm.dispose(); + } + } else { + cm.sendNext("It looks like you haven't found the 3 " + nthobj + " just yet. Please think of a different combination of " + nthobj + ". Only 3 are allowed to " + nthverb + " on " + nthobj + ", and if you " + nthpos + " it may not count as an answer, so please keep that in mind. Keep going!"); + cm.dispose(); + } + } + } + } else { + var complete = eim.getProperty(curMap + "stageclear"); + if (complete != null) { + var target = eim.getMapInstance(103000800 + curMap); + var targetPortal = target.getPortal("st00"); + cm.getPlayer().changeMap(target, targetPortal); + } + cm.dispose(); + } + } else { // Not leader + var complete = eim.getProperty(curMap.toString() + "stageclear"); + if (complete != null) { + cm.sendNext("Please hurry on to the next stage, the portal opened!"); + } else { + cm.sendNext("Please have the party leader talk to me."); + } + cm.dispose(); + } +} + +function isLeader(){ + if(cm.getParty() == null) + return false; + else + return cm.isLeader(); +} + +function getPrize(eim,cm) { + var itemSetSel = Math.random(); + var itemSet; + var itemSetQty; + var hasQty = false; + if (itemSetSel < 0.3) + itemSet = prizeIdScroll; + else if (itemSetSel < 0.6) + itemSet = prizeIdEquip; + else if (itemSetSel < 0.9) { + itemSet = prizeIdUse; + itemSetQty = prizeQtyUse; + hasQty = true; + } else { + itemSet = prizeIdEtc; + itemSetQty = prizeQtyEtc; + hasQty = true; + } + var sel = Math.floor(Math.random()*itemSet.length); + var qty = 1; + if (hasQty) + qty = itemSetQty[sel]; + cm.gainItem(itemSet[sel], qty, true, true); + cm.getPlayer().changeMap(eim.getMapInstance(103000805)); +} \ No newline at end of file diff --git a/scripts/npc/world0/9020002.js b/scripts/npc/world0/9020002.js new file mode 100644 index 0000000000..c2e787e0ba --- /dev/null +++ b/scripts/npc/world0/9020002.js @@ -0,0 +1,76 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Nella - Hidden Street : 1st Accompaniment +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator +--------------------------------------------------------------------------------------------------- +**/ + +var status; + +function start() { + status = -1; + action(1,0,0); +} + +function action(mode, type, selection){ + if (mode == 1) + status++; + else { + cm.dispose(); + return; + } + var mapId = cm.getPlayer().getMapId(); + if (mapId == 103000890) { + if (status == 0) { + cm.sendNext("See you next time."); + } else { + cm.getPlayer().changeMap(103000000, cm.getClient().getChannelServer().getMapFactory().getMap(103000000).getRandomSpawnpoint()); + cm.removeAll(4001007); + cm.removeAll(4001008); + cm.dispose(); + } + } else { + if (status == 0) { + var outText = "Once you leave the map, you'll have to restart the whole quest if you want to try it again. Do you still want to leave this map?"; + if (mapId == 103000805) { + outText = "Are you ready to leave this map?"; + } + cm.sendYesNo(outText); + } else if (mode == 1) { + var eim = cm.getPlayer().getEventInstance(); // Remove them from the PQ! + if (eim == null) + cm.warp(103000890, "st00"); // Warp player + else if (cm.isLeader()) { + //cm.getEventManager("KerningPQ").setProperty("KPQOpen" , "true"); + eim.disbandParty(); + } + else + eim.leftParty(cm.getPlayer()); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9030000.js b/scripts/npc/world0/9030000.js new file mode 100644 index 0000000000..fc60929917 --- /dev/null +++ b/scripts/npc/world0/9030000.js @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Fredrick NPC (9030000) + * By kevintjuh93 + */ + +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) + status++; + else { + cm.dispose(); + return; + } + if (status == 0) + if (!cm.hasMerchant() && cm.hasMerchantItems()) { + cm.showFredrick(); + cm.dispose(); + } else { + if (cm.hasMerchant()) { + cm.sendOk("You have a Merchant open."); + cm.dispose(); + } else { + cm.sendOk("You don't have any items or mesos to be retrieved."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9030100.js b/scripts/npc/world0/9030100.js new file mode 100644 index 0000000000..a2ae750280 --- /dev/null +++ b/scripts/npc/world0/9030100.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 9030100); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040000.js b/scripts/npc/world0/9040000.js new file mode 100644 index 0000000000..14de75c41e --- /dev/null +++ b/scripts/npc/world0/9040000.js @@ -0,0 +1,122 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +* @Author Lerk +* +* Shuang, Victoria Road: Excavation Site (101030104) +* +* Start of Guild Quest +*/ + +var status = 0; +var GQItems = new Array(1032033, 4001024, 4001025, 4001026, 4001027, 4001028, 4001029, 4001030, 4001031, 4001032, 4001033, 4001034, 4001035, 4001037); + +function start() { + cm.sendSimple("The path to Sharenian starts here. What would you like to do? #b\r\n#L0#Start a Guild Quest#l\r\n#L1#Join your guild's Guild Quest#l"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 0) { //Start + if (cm.getPlayer().getGuildId() == 0 || cm.getPlayer().getGuildRank() >= 3) { //no guild or not guild master/jr. master + cm.sendNext("Only a Master or Jr. Master of the guild can start an instance."); + cm.dispose(); + } + else { + var em = cm.getEventManager("GuildQuest"); + if (em == null) + cm.sendOk("This trial is currently under construction."); + else { + if(em.getProperty("gpqOpen").equals("false")) { + cm.sendOk("Another guild has already registered for the quest. Please try again later."); + } else if (getEimForGuild(em, cm.getPlayer().getGuildId()) != null) + cm.sendOk("Your guild already is already registered."); + else { + var guildId = cm.getPlayer().getGuildId(); + var eim = em.newInstance(guildId); + em.startInstance(eim, cm.getPlayer().getName()); + em.setProperty("gpqOpen", "false"); + var map = eim.getMapInstance(990000000); + map.getPortal(5).setScriptName("guildwaitingenter"); + map.getPortal(4).setScriptName("guildwaitingexit"); + eim.registerPlayer(cm.getPlayer()); + cm.guildMessage(5, "The guild has been entered into the Guild Quest. Please report to Shuang at the Excavation Camp on channel " + cm.getClient().getChannel() + "."); + for (var i = 0; i < GQItems.length; i++) + cm.removeAll(GQItems[i]); + } + } + cm.dispose(); + } + } + else if (selection == 1) { //entering existing GQ + if (cm.getPlayer().getGuildId() == 0) { //no guild or not guild master/jr. master + cm.sendNext("You must be in a guild to join an instance."); + cm.dispose(); + } + else { + var em = cm.getEventManager("GuildQuest"); + if (em == null) + cm.sendOk("This trial is currently under construction."); + else { + var eim = getEimForGuild(em, cm.getPlayer().getGuildId()); + if (eim == null) + cm.sendOk("Your guild is currently not registered for the Guild Quest."); + else { + if ("true".equals(eim.getProperty("canEnter"))) { + eim.registerPlayer(cm.getPlayer()); + for (var i = 0; i < GQItems.length; i++) + cm.removeAll(GQItems[i]); + } + else + cm.sendOk("I'm sorry, but the guild has gone on without you. Try again later."); + } + } + cm.dispose(); + } + } + } + } +} + +function getEimForGuild(em, id) { + var stringId = "" + id; + return em.getInstance(stringId); +} + +function isGuildQuestOwner(em, id) { + var stringId = "" + id; + if(em.getProperty("curGuild").equals(stringId)) + return true; + + return false; +} \ No newline at end of file diff --git a/scripts/npc/world0/9040001.js b/scripts/npc/world0/9040001.js new file mode 100644 index 0000000000..8783cf5a5f --- /dev/null +++ b/scripts/npc/world0/9040001.js @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +* @Author Lerk +* +* Nuris, Sharenian: Returning Path (990001100) +* +* Exit of Guild Quest +*/ + +var GQItems = new Array(1032033, 4001024, 4001025, 4001026, 4001027, 4001028, 4001029, 4001030, 4001031, 4001032, 4001033, 4001034, 4001035, 4001037); + +function start() { + for (var i = 0; i < GQItems.length; i++) + cm.removeAll(GQItems[i]); + cm.warp(101030104); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040002.js b/scripts/npc/world0/9040002.js new file mode 100644 index 0000000000..41e29ea7db --- /dev/null +++ b/scripts/npc/world0/9040002.js @@ -0,0 +1,95 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Lerk + * + * Shawn, Victoria Road: Excavation Site (101030104) + * + * Guild Quest Info + */ + +var status; +var selectedOption; + +function start() { + selectedOption = -1; + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (mode == 1 && status == 3) { + status = 0; + } + if (status == 0) { + var prompt = "\r\n#b#L0# What's Sharenian?#l\r\n#b#L1# #t4001024#? What's that?#l\r\n#b#L2# Guild Quest?#l\r\n#b#L3# No, I'm fine now.#l"; + if (selectedOption == -1) { + prompt = "We, the Union of Guilds, have been trying to decipher 'Emerald Tablet,' a treasured old relic, for a long time. As a result, we have found out that Sharenian, the mysterious country from the past, lay asleep here. We also found out that clues of #t4001024#, a legendary, mythical jewelry, may be here at the remains of Sharenian. This is why the Union of Guilds have opened Guild Quest to ultimately find #t4001024#." + prompt; + } else { + prompt = "Do you have any other questions?" + prompt; + } + cm.sendSimple(prompt); + } + else if (status == 1) { + selectedOption = selection; + if (selectedOption == 0) { + cm.sendNext("Sharenian was a literate civilization from the past that had control over every area of the Victoria Island. The Temple of Golem, the Shrine in the deep part of the Dungeon, and other old architectural constructions where no one knows who built it are indeed made during the Sharenian times."); + } + else if (selectedOption == 1) { + cm.sendNext("#t4001024# is a legendary jewel that brings eternal youth to the one that possesses it. Ironically, it seems like everyone that had #t4001024# ended up downtrodden, which should explain the downfall of Sharenian."); + status = -1; + } + else if (selectedOption == 2) { + cm.sendNext("I've sent groups of explorers to Sharenian before, but none of them ever came back, which prompted us to start the Guild Quest. We've been waiting for guilds that are strong enough to take on tough challenges, guilds like yours."); + } + else if (selectedOption == 3) { + cm.sendOk("Really? If you have anything else to ask, please feel free to talk to me."); + cm.dispose(); + } + else { + cm.dispose(); + } + } + else if (status == 2) { //should only be available for options 0 and 2 + if (selectedOption == 0) { + cm.sendNextPrev("The last king of Sharenian was a gentleman named Sharen III, and apparently he was a very wise and compassionate king. But one day, the whole kingdom collapsed, and there was no explanation made for it."); + } + else if (selectedOption == 2) { + cm.sendNextPrev("The ultimate goal of this Guild Quest is to explore Sharenian and find #t4001024#. This is not a task where power solves everything. Teamwork is more important here."); + } + else { + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9040003.js b/scripts/npc/world0/9040003.js new file mode 100644 index 0000000000..1a7e5433e9 --- /dev/null +++ b/scripts/npc/world0/9040003.js @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @Author TheRamon + * + * Sharen III's Soul, Sharenian: Sharen III's Grave (990000700) + * + * Guild Quest - end of stage 4 + */ + +var status = 0; +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 1) + status++; + else + cm.dispose(); + if (status == 0) { + if (cm.getPlayer().getEventInstance().getProperty("leader").equals(cm.getPlayer().getName())) { + if (cm.getPlayer().getEventInstance().getProperty("stage4clear") != null && cm.getPlayer().getEventInstance().getProperty("stage4clear").equals("true")) + { + cm.sendOk("After what I thought would be an immortal sleep, I have finally found someone that will save Sharenian. I can truly rest in peace now."); + cm.dispose(); + } + else { + var prev = cm.getPlayer().getEventInstance().setProperty("stage4clear","true",true); + if (prev == null) { + cm.sendNext("After what I thought would be an immortal sleep, I have finally found someone that will save Sharenian. This old man will now pave the way for you to finish the quest." + mode); + } + else {//if not null, was set before, and Gp already gained + cm.sendOk("After what I thought would be an immortal sleep, I have finally found someone that will save Sharenian. I can truly rest in peace now."); + cm.dispose(); + } + } + } + else + { + if (cm.getPlayer().getEventInstance().getProperty("stage4clear") != null && cm.getPlayer().getEventInstance().getProperty("stage4clear").equals("true")) + cm.sendOk("After what I thought would be an immortal sleep, I have finally found someone that will save Sharenian. I can truly rest in peace now."); + else + cm.sendOk("I need the leader of your party to speak with me, nobody else."); + cm.dispose(); + } + } + else if (status == 1) { + cm.getGuild().gainGP(30); + cm.getPlayer().getMap().getReactorByName("ghostgate").hitReactor(cm.getClient()); + cm.showEffect("quest/party/clear"); + cm.playSound("Party1/Clear"); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9040004.js b/scripts/npc/world0/9040004.js new file mode 100644 index 0000000000..6520d7f0cf --- /dev/null +++ b/scripts/npc/world0/9040004.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Guild Rank Board */ + +function start() { + cm.displayGuildRanks(); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040005.js b/scripts/npc/world0/9040005.js new file mode 100644 index 0000000000..248998daee --- /dev/null +++ b/scripts/npc/world0/9040005.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendYesNo("Would you like to exit the Guild Quest?"); +} + +function action(mode, type, selection) { + if(mode == 1) { + var eim = cm.getPlayer().getEventInstance(); + if(eim != null) { + eim.removePlayer(cm.getPlayer()); + } + } + cm.dispose(); +} diff --git a/scripts/npc/world0/9040006.js b/scripts/npc/world0/9040006.js new file mode 100644 index 0000000000..6c95da6d15 --- /dev/null +++ b/scripts/npc/world0/9040006.js @@ -0,0 +1,262 @@ +/* @Author Lerk + * + * Guardian Statue - Sharenian: Fountain of the Wiseman (990000500) + * + * Guild Quest Stage 3 + */ + +importPackage(Packages.tools); + +function start() { + //everything can be done in one status, so let's do it here. + var eim = cm.getPlayer().getEventInstance(); + if (eim == null) { + cm.warp(990001100); + } else { + if (eim.getProperty("leader").equals(cm.getName())) { + if (cm.getPlayer().getMap().getReactorByName("watergate").getState() > 0){ + cm.sendOk("You may proceed."); + } else { + var currentCombo = eim.getProperty("stage3combo"); + if (currentCombo == null || currentCombo.equals("reset")) { + var newCombo = makeCombo(); + eim.setProperty("stage3combo",newCombo); + //cm.playerMessage("Debug: " + newCombo); + eim.setProperty("stage3attempt","1"); + cm.sendOk("This fountain guards the secret passage to the throne room. Offer items in the area to the vassals to proceed. The vassals shall tell you whether your offerings are accepted, and if not, which vassals are displeased. You have seven attempts. Good luck.") + } else { + var attempt = parseInt(eim.getProperty("stage3attempt")); + var combo = parseInt(currentCombo); + var guess = getGroundItems(); + if (guess != null) { + if (combo == guess) { + cm.getPlayer().getMap().getReactorByName("watergate").hitReactor(cm.getClient()); + cm.sendOk("You may proceed."); + + cm.getPlayer().getMap().broadcastMessage(MaplePacketCreator.showEffect("quest/party/clear")); + cm.getPlayer().getMap().broadcastMessage(MaplePacketCreator.playSound("Party1/Clear")); + var prev = eim.getProperty("stage3clear"); + eim.setProperty("stage3clear","true"); + if (prev == null) { + cm.getPlayer().getGuild().gainGP(100); + } + } else { + if (attempt < 7) { + //cm.playerMessage("Combo : " + combo); + //cm.playerMessage("Guess : " + guess); + var parsedCombo = parsePattern(combo); + var parsedGuess = parsePattern(guess); + var results = compare(parsedCombo, parsedGuess); + var string = ""; + //cm.playerMessage("Results - Correct: " + results[0] + " | Incorrect: " + results[1] + " | Unknown: " + results[2]); + if (results[0] != 0) { + if (results[0] == 1) { + string += "1 vassal is pleased with their offering.\r\n"; + } else { + string += results[0] + " vassals are pleased with their offerings.\r\n"; + } + } + if (results[1] != 0) { + if (results[1] == 1) { + string += "1 vassal has recieved an incorrect offering.\r\n"; + } else { + string += results[1] + " vassals have recieved incorrect offerings.\r\n"; + } + } + if (results[2] != 0) { + if (results[2] == 1) { + string += "1 vassal has recieved an unknown offering.\r\n"; + } else { + string += results[2] + " vassals have recieved unknown offerings.\r\n"; + } + } + string += "This is your "; + switch (attempt) { + case 1: + string += "1st"; + break; + case 2: + string += "2nd"; + break; + case 3: + string += "3rd"; + break; + default: + string += attempt + "th"; + break; + } + string += " attempt."; + + //spawn one black and one myst knight + spawnMob(9300036, -350, 150, cm.getPlayer().getMap()); + spawnMob(9300037, 400, 150, cm.getPlayer().getMap()); + + cm.sendOk(string); + eim.setProperty("stage3attempt",attempt + 1); + } else { + //reset the combo and mass spawn monsters + eim.setProperty("stage3combo","reset"); + cm.sendOk("You have failed the test. Please compose yourselves and try again later."); + + for (var i = 0; i < 6; i++) { + //keep getting new monsters, lest we spawn the same monster five times o.o! + spawnMob(9300036, randX(), 150, cm.getPlayer().getMap()); + spawnMob(9300037, randX(), 150, cm.getPlayer().getMap()); + } + } + } + } else { + cm.sendOk("Please make sure your attempt is properly set in front of the vassals and talk to me again."); + } + } + } + } else { + cm.sendOk("Please have your leader speak to me."); + } + } + cm.dispose(); +} + +function action(mode, type, selection) { +} + +function makeCombo() { + var combo = 0; + + for (var i = 0; i < 4; i++) { + combo += Math.floor(Math.random() * 4) * Math.pow(10, i); + } + + return combo; +} + +//check the items on ground and convert into an applicable string; null if items aren't proper +function getGroundItems() { + var items = cm.getPlayer().getMap().getMapObjectsInRange(cm.getPlayer().getPosition(), Packages.java.lang.Double.POSITIVE_INFINITY, Packages.java.util.Arrays.asList([Packages.server.maps.MapleMapObjectType.ITEM])); + var itemInArea = new Array(-1, -1, -1, -1); + + if (items.size() != 4) { + cm.getPlayer().dropMessage("There are too many items in the map. Please remove some"); + return null; + } + + var iter = items.iterator(); + while (iter.hasNext()) { + var item = iter.next(); + var id = item.getItem().getItemId(); + if (id < 4001027 || id > 4001030) { + cm.getPlayer().dropMessage("Some items in the map are not part of the 4 items needed"); + return null; + } else { + //check item location + for (var i = 0; i < 4; i++) { + if (cm.getPlayer().getMap().getArea(i).contains(item.getPosition())) { + itemInArea[i] = id - 4001027; + //cm.getPlayer().dropMessage("Item in area "+i+": " + id); + break; + } + } + } + } + + //guaranteed four items that are part of the stage 3 item set by this point, check to see if each area has an item + if (itemInArea[0] == -1 || itemInArea[1] == -1 || itemInArea[2] == -1 || itemInArea[3] == -1) { + cm.getPlayer().dropMessage("Please place these in correct positions: " + (itemInArea[0] == -1 ? "Statue 1, " : "") + (itemInArea[1] == -1 ? "Statue 2, " : "") + (itemInArea[2] == -1 ? "Statue 3, " : "") + (itemInArea[3] == -1 ? "Statue 4. " : "")); + /* for (var i = 0; i < 4; i++) { + cm.getPlayer().dropMessage("Item in area "+i+": " + itemInArea[i]); + }*/ + return null; + } + + return (itemInArea[0] * 1000 + itemInArea[1] * 100 + itemInArea[2] * 10 + itemInArea[3]); +} + +//convert an integer for answer or guess into int array for comparison +function parsePattern(pattern) { + var tempPattern = pattern; + var items = new Array(-1, -1, -1, -1); + for (var i = 0; i < 4; i++) { + items[i] = Math.floor(tempPattern / Math.pow(10, 3-i)); + tempPattern = tempPattern % Math.pow(10, 3-i); + } + return items; +} + +// compare two int arrays for the puzzle +function compare(answer, guess) { + var correct = 0; + var incorrect = 0; + /*var debugAnswer = "Combo : "; + var debugGuess = "Guess : "; + + for (var d = 0; d < answer.length; d++) { + debugAnswer += answer[d] + " "; + debugGuess += guess[d] + " "; + } + + cm.getPlayer().dropMessage(debugAnswer); + cm.getPlayer().dropMessage(debugGuess);*/ + + for (var i = 0; i < answer.length; i) { + if (answer[i] == guess[i]) { + correct++; + //cm.getPlayer().dropMessage("Item match : " + answer[i]); + + //pop the answer/guess at i + if (i != answer.length - 1) { + answer[i] = answer[answer.length - 1]; + guess[i] = guess[guess.length - 1]; + } + + answer.pop(); + guess.pop(); + + /*/debugAnswer = "Combo : "; + debugGuess = "Guess : "; + + for (var d = 0; d < answer.length; d++) { + debugAnswer += answer[d] + " "; + debugGuess += guess[d] + " "; + } + + cm.getPlayer().dropMessage(debugAnswer); + cm.getPlayer().dropMessage(debugGuess);*/ + } + else { + i++; + } + } + + //check remaining answers for "incorrect": correct item in incorrect position + var answerItems = new Array(0, 0, 0, 0); + var guessItems = new Array(0, 0, 0, 0); + + for (var j = 0; j < answer.length; j++) { + var aItem = answer[j]; + var gItem = guess[j] + answerItems[aItem]++; + guessItems[gItem]++; + } + + /*for (var d = 0; d < answer.length; d++) { + cm.getPlayer().dropMessage("Item " + d + " in combo: " + answerItems[d] + " | in guess: " + guessItems[d]); + }*/ + + for (var k = 0; k < answerItems.length; k++) { + var inc = Math.min(answerItems[k], guessItems[k]); + //cm.getPlayer().dropMessage("Incorrect for item " + k + ": " + inc); + incorrect += inc; + } + + return new Array(correct, incorrect, (4 - correct - incorrect)); +} + +//for mass spawn +function randX() { + return -350 + Math.floor(Math.random() * 750); +} + +function spawnMob(id, x, y, map) { + var mob = Packages.server.life.MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new Packages.java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040007.js b/scripts/npc/world0/9040007.js new file mode 100644 index 0000000000..2481694da6 --- /dev/null +++ b/scripts/npc/world0/9040007.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendOk("\"I fought the Rubian and I lost, and now I am imprisoned in the very gate that blocks my path, my body desecrated. However, my old clothing has holy power within. If you can return the clothing to my body, I should be able to open the gate. Please hurry! \r\n- Sharen III \r\n\r\nP.S. I know this is rather picky of me, but can you please return the clothes to my body #bbottom to top#k? Thank you for your services.\""); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040008.js b/scripts/npc/world0/9040008.js new file mode 100644 index 0000000000..6520d7f0cf --- /dev/null +++ b/scripts/npc/world0/9040008.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Guild Rank Board */ + +function start() { + cm.displayGuildRanks(); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040009.js b/scripts/npc/world0/9040009.js new file mode 100644 index 0000000000..2cb37ea73b --- /dev/null +++ b/scripts/npc/world0/9040009.js @@ -0,0 +1,154 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status; +var stage; + +function start() { + status = -1; + action (1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + var eim = cm.getPlayer().getEventInstance(); + if (eim == null) { + cm.warp(990001100); + } else { + if (eim.getProperty("leader").equals(cm.getPlayer().getName())) { + if (cm.getPlayer().getMap().getReactorByName("statuegate").getState() > 0){ + cm.sendOk("Proceed."); + cm.dispose(); + } else { + if (status == 0) { + if (eim.getProperty("stage1status") == null || eim.getProperty("stage1status").equals("waiting")) { + if (eim.getProperty("stage1phase") == null) { + stage = 1; + eim.setProperty("stage1phase",stage); + } else { + stage = parseInt(eim.getProperty("stage1phase")); + } + if (stage == 1) { + cm.sendOk("In this challenge, I shall show a pattern on the statues around me. When I give the word, repeat the pattern to me to proceed."); + } + else { + cm.sendOk("I shall now present a more difficult puzzle for you. Good luck.") + } + } + else if (eim.getProperty("stage1status").equals("active")) { + stage = parseInt(eim.getProperty("stage1phase")); + if (eim.getProperty("stage1combo").equals(eim.getProperty("stage1guess"))) { + if (stage == 3) { + cm.getPlayer().getMap().getReactorByName("statuegate").hitReactor(cm.getClient()); + cm.sendOk("Excellent work. Please proceed to the next stage."); + cm.showEffect("quest/party/clear"); + cm.playSound("Party1/Clear"); + var prev = eim.getProperty("stage1clear"); + eim.setProperty("stage1clear","true"); + if (prev == null) { + cm.getGuild().gainGP(15); + } + } else { + + cm.sendOk("Very good. You still have more to complete, however. Talk to me again when you're ready."); + eim.setProperty("stage1phase", stage + 1); + cm.mapMessage(5, "You have completed part " + stage + " of the Gatekeeper Test."); + } + + } else { + cm.sendOk("You have failed this test."); + cm.mapMessage(5, "You have failed the Gatekeeper Test."); + eim.setProperty("stage1phase","1") + } + eim.setProperty("stage1status", "waiting"); + cm.dispose(); + } + else { + cm.sendOk("Please wait."); + cm.dispose(); + } + } + else if (status == 1) { + var reactors = getReactors(); + var combo = makeCombo(reactors); + cm.mapMessage(5, "Please wait while the combination is revealed."); + var delay = 5000; + for (var i = 0; i < combo.length; i++) { + cm.getPlayer().getMap().getReactorByOid(combo[i]).delayedHitReactor(cm.getClient(), delay + 3500*i); + } + eim.setProperty("stage1status", "display"); + eim.setProperty("stage1combo",""); + cm.dispose(); + } + } + + } else { + cm.sendOk("I need the leader of your party to speak with me, nobody else."); + cm.dispose(); + } + } + } +} + +//method for getting the statue reactors on the map by oid +function getReactors() { + var reactors = new Array(); + + var iter = cm.getPlayer().getMap().getMapObjects().iterator(); + while (iter.hasNext()) { + var mo = iter.next(); + if (mo.getType() == Packages.server.maps.MapleMapObjectType.REACTOR && !mo.getName().equals("statuegate")) { + reactors.push(mo.getObjectId()); + } + } + + return reactors; +} + +function makeCombo(reactors) { + var combo = new Array(); + while (combo.length < (stage + 3)) { + var chosenReactor = reactors[Math.floor(Math.random() * reactors.length)]; + var repeat = false; + if (combo.length > 0) { + for (var i = 0; i < combo.length; i++) { + if (combo[i] == chosenReactor) { + repeat = true; + break; + } + } + } + if (!repeat) { + combo.push(chosenReactor); + } + } + return combo; +} \ No newline at end of file diff --git a/scripts/npc/world0/9040010.js b/scripts/npc/world0/9040010.js new file mode 100644 index 0000000000..5a3ca5c663 --- /dev/null +++ b/scripts/npc/world0/9040010.js @@ -0,0 +1,47 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + var eim = cm.getPlayer().getEventInstance(); + if (eim != null) { + if (eim.getProperty("leader").equals(cm.getPlayer().getName())) { + if (cm.haveItem(4001024)) { + cm.removeAll(4001024); + var prev = eim.setProperty("bossclear","true",true); + if (prev == null) { + var start = parseInt(eim.getProperty("entryTimestamp")); + var diff = Packages.java.lang.System.currentTimeMillis() - start; + var points = 1000 - Math.floor(diff / (100 * 60)); + if(points < 100) + points = 100; + cm.getGuild().gainGP(points); + } + eim.finishPQ(); + } + else { + cm.sendOk("This is your final challenge. Defeat the evil lurking within the Rubian and return it to me. That is all."); + } + } + } + else + cm.warp(990001100); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040011.js b/scripts/npc/world0/9040011.js new file mode 100644 index 0000000000..f576aa0d4b --- /dev/null +++ b/scripts/npc/world0/9040011.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.sendOk(" \r\n Are you part of a Guild that possesses an ample amount of courage and trust? Then take on the Guild Quest and challenge yourselves!\r\n\r\n#bTo Participate :#k\r\n1. The Guild must consist of at least 6 people!\r\n2. The leader of the Guild Quest must be a Master or a Jr. Master of the Guild!\r\n3. The Guild Quest may end early if the number of guild members participating falls below 6, or if the leader decides to end it early!"); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9040012.js b/scripts/npc/world0/9040012.js new file mode 100644 index 0000000000..2715a7a599 --- /dev/null +++ b/scripts/npc/world0/9040012.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * Armor Statue - Sharenian: Hall of the Knight (990000400) + * Guild Quest Stage 2 Info + */ + +function start() { + cm.sendOk("The plaque translates as follows: \r\n\"The knights of Sharenian are proud warriors. Their Longinus Spears are both formidable weapons and the key to the castle's defense: By removing them from their platforms at the highest points of this hall, they block off the entrance from invaders.\"\r\n\r\nSomething seems to be etched in English on the side, barely readable: \r\n\"evil stole spears, chained up behind obstacles. return to top of towers. large spear, grab from higher up.\"\r\n...Obviously whoever figured it out didn't have much time to live. Poor guy."); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9060000.js b/scripts/npc/world0/9060000.js new file mode 100644 index 0000000000..0c712cfb75 --- /dev/null +++ b/scripts/npc/world0/9060000.js @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = -1; + +function start() { + if (cm.haveItem(4031508, 5) && cm.haveItem(4031507,5)) { + cm.sendNext("Wow~ You have succeeded in collecting 5 of each #b#t4031508##k and #b#t4031507##k. Okay then, I will send you to Zoo. Please talk to me again when you get there."); + } else { + cm.sendYesNo("You haven't completed the requirements. Are you sure you want to leave?"); + } +} + +function action(mode, type, selection){ + status++; + if (mode != 1) { + cm.dispose(); + return; + } + + if(status == 0) cm.sendOk("Well okay, I will send you back."); + else { + cm.warp(923010100); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9101001.js b/scripts/npc/world0/9101001.js new file mode 100644 index 0000000000..c28470b404 --- /dev/null +++ b/scripts/npc/world0/9101001.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Peter + Map(s): Maple Road: Entrance - Mushroom Town Training Camp (3) + Description: Takes you out of Entrace of Mushroom Town Training Camp +*/ +var status = 0; + +function start() { + cm.sendNext("You have finished all your trainings. Good job. You seem to be ready to start with the journey right away! Good, I will let you move on to the next place."); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + } else { + status++; + if (status == 1) + cm.sendNextPrev("But remember, once you get out of here, you will enter a village full with monsters. Well them, good bye!"); + else if (status == 2) { + cm.warp(40000, 0); + cm.gainExp(3); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9102101.js b/scripts/npc/world0/9102101.js new file mode 100644 index 0000000000..00e71c696f --- /dev/null +++ b/scripts/npc/world0/9102101.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + ? - Victoria Road: Pet-Walking Road (100000202) +-- By --------------------------------------------------------------------------------------------- + Xterminator +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Xterminator + 2.0 - Second Version by Moogra +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + cm.sendYesNo("#b(I can see something covered in grass. Should I pull it out?)"); +} + +function action(mode, type, selection) { + if (mode == -1) { + } else if (mode == 0) { + cm.sendNext("#b(I didn't think much of it, so I didn't touch it.)"); + } else if (mode == 1) { + cm.sendNext("#b(Yuck... it's pet poop!)"); + cm.gainItem(4031922, 1); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9103000.js b/scripts/npc/world0/9103000.js new file mode 100644 index 0000000000..c1ce008b85 --- /dev/null +++ b/scripts/npc/world0/9103000.js @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author RMZero213 + * Ludibrium Maze Party Quest + * Do not release anywhere other than RaGEZONE. Give credit if used. + */ + +var status = 0; +var minimumCouponsNeeded = 200; +function start() { + status = -1; + action(1,0,0); +} + +function action(mode, type, selection){ + if (mode == -1|| (mode == 0 && status == 0)) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if (!isLeader()) { + cm.sendOk("Give any coupons to the leader of the party and tell them to talk to me."); + cm.dispose(); + } else { + cm.sendYesNo("Do you have all the coupons of the party and would like to get out of here?"); + } + } else if (status == 1) { + if (cm.itemQuantity(4001106) < minimumCouponsNeeded){ + cm.sendOk("Sorry, but you do not have at least " + minimumCouponsNeeded + " coupons! Talk to me again when you've collected more!"); + cm.dispose(); + return; + } + var party = cm.getPartyMembers(); + for (var i = 0; i < party.size(); i++) { + if (party.get(i).getMap().getId() != 809050015) { + cm.sendOk("A member of your party is not presently in the map."); + cm.dispose(); + return; + } + } + var members = cm.getPlayer().getEventInstance().getPlayers(); + //cm.removeFromParty(4001106, members); + cm.gainItem(4001106, -200); + cm.givePartyExp("LudiMazePQ"); + cm.warpParty(809050016); + cm.dispose(); + } + } +} + +function isLeader(){ + if(cm.getParty() == null) + return false; + else + return cm.isLeader(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9103001.js b/scripts/npc/world0/9103001.js new file mode 100644 index 0000000000..06abdade82 --- /dev/null +++ b/scripts/npc/world0/9103001.js @@ -0,0 +1,136 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = 9103001 - Rolly +@ Map = Ludibrium - +@ NPC MapId = 220000000 +@ Function = Start LMPQ +@ +*/ + +var status = 0; +var minlvl = 51; +var maxlvl = 200; +var minplayers = 3; +var maxplayers = 6; +var time = 15; +var open = true; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else if (mode == 0) { + cm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + cm.sendSimple("This is the entrance to the Ludibrium Maze. Enjoy!\r\n#b#L0#Enter the Lubidrium Maze#l\r\n#L1#What is the Ludibrium Maze?"); + + } else if (status == 1) { + var em = cm.getEventManager("LudiMazePQ"); + if(selection == 0) {//ENTER THE PQ + if (!hasParty()) {//NO PARTY + cm.sendOk("Try taking on the Maze Quest with your party. If you DO decide to tackle it, please have your Party Leader notify me!"); + } else if (!isLeader()) {//NOT LEADER + cm.sendOk("Try taking on the Maze Quest with your party. If you DO decide to tackle it, please have your Party Leader notify me!"); + } else if (!checkPartySize()) {//PARTY SIZE WRONG + cm.sendOk("Your party needs to consist of at least " + minplayers + " members in order to tackle this maze"); + } else if (!checkPartyLevels()) {//WRONG LEVELS + cm.sendOk("One of your party members has not met the level requirements of " + minlvl + "~" + maxlvl + "."); + } else if (em == null) {//EVENT ERROR + cm.sendOk("ERROR IN EVENT"); + } else if (!open){ + cm.sendOk("The PQ is #rclosed#k for now."); + } else { + //cm.sendOk("You may enter");//ENTER PQ + em.startInstance(cm.getParty(), cm.getPlayer().getMap()); + var party = cm.getPlayer().getEventInstance().getPlayers(); + cm.removeFromParty(4001106, party); + } + cm.dispose(); + } else if(selection == 1) { + cm.sendOk("This maze is available to all parties of " + minplayers + " or more members, and all participants must be between Level " + minlvl + "~" + maxlvl + ". You will be given " + time + " minutes to escape the maze. At the center of the room, there will be a Warp Portal set up to transport you to a different room. These portals will transport you to other rooms where you'll (hopefully) find the exit. Pietri will be waiting at the exit, so all you need to do is talk to him, and he'll let you out. Break all the boxes located in the room, and a monster inside the box will drop a coupon. After escaping the maze, you will be awarded with EXP based on the coupons collected. Additionally, if the leader possesses at least 200 coupons, then a special gift will be presented to the party. If you cannot escape the maze within the allotted " + time +" minutes, you will receive 0 EXP for your time in the maze. If you decide to log off while you're in the maze, you will be automatically kicked out of the maze. Even if the members of the party leave in the middle of the quest, the remaining members will be able to continue on with the quest. If you are in critical condition and unable to hunt down the monsters, you may avoid them to save yourself. Your fighting spirit and wits will be tested! Good luck!"); + cm.dispose(); + } + } + } +} + +function getPartySize(){ + if(cm.getPlayer().getParty() == null){ + return 0; + }else{ + return (cm.getPlayer().getParty().getMembers().size()); + } +} + +function isLeader(){ + return cm.isLeader(); +} + +function checkPartySize(){ + var size = 0; + if(cm.getPlayer().getParty() == null){ + size = 0; + }else{ + size = (cm.getPlayer().getParty().getMembers().size()); + } + if(size < minplayers || size > maxplayers){ + return false; + }else{ + return true; + } +} + +function checkPartyLevels(){ + var pass = true; + var party = cm.getPlayer().getParty().getMembers(); + if(cm.getPlayer().getParty() == null){ + pass = false; + }else{ + for (var i = 0; i < party.size() && pass; i++) { + if ((party.get(i).getLevel() < minlvl) || (party.get(i).getLevel() > maxlvl) || (party.get(i).getPlayer().getMapId() != cm.getPlayer().getMapId())) { + pass = false; + } + } + } + return pass; +} + +function hasParty(){ + if(cm.getPlayer().getParty() == null){ + return false; + }else{ + return true; + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9103002.js b/scripts/npc/world0/9103002.js new file mode 100644 index 0000000000..22e7f178e2 --- /dev/null +++ b/scripts/npc/world0/9103002.js @@ -0,0 +1,121 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author RMZero213 + * Ludibrium Maze Party Quest + * Do not release anywhere other than RaGEZONE. Give credit if used. + */ + +var status = 0; +var rewards = new Array( + 1442017, 1, //Blood Snowboard + 1322025, 1, //Emergency Rescue Tube + 1032013, 1, //Red-Hearted Earrings + 1302016, 1, //Yellow Umbrella + 1072263, 1, //Green Strap Shoes + 1032043, 1, //Cecelia's Earrings + 2000005, 1, //Power Elixir + 2000004, 5, //Elixir + 2001001, 5, //Ice Cream Pop + 2001002, 5, //Red Bean Sundae + 2020008, 20, //Fat Sausage + 2020010, 20, //Grape Juice + 2030008, 20, //Coffee Milk + 2030010, 20, //Fruit Milk + 2030009, 20, //Strawberry Milk + 2022000, 50, //Pure Water + 2001000, 50, //Watermelon + 2022019, 50, //Kinoko Ramen (Pig Head) + 2020007, 100, //Dried Squid + 2020006, 100, //Hot Dog Supreme + 2020009, 100, //Orange Juice + 2000006, 100, //Mana Elixir + 2040601, 1, //Scroll for Bottomwear for Def (60%) + 2040605, 1, //Dark Scroll for Bottomwear for DEF 30% + 2040602, 1, //Scroll for Bottomwear for DEF (10%) + 2041027, 1, //Dark Scroll for Cape for Magic Def 30% + 2041028, 1, //Dark Scroll for Cape for Weapon Def 70% + 2041004, 1, //Scroll for Cape for Weapon Def 60% + 2041029, 1, //Dark Scroll for Cape for Weapon Def 30% + 2041017, 1, //Scroll for Cape for INT 10% + 2041020, 1, //Scroll for Cape for DEX 10% + 2040008, 1, //Dark Scroll for Helmet for DEF 70% + 2040001, 1, //Scroll for Helmet for DEF 60% + 2040009, 1, //Dark Scroll for Helmet for DEF 30% + 2040002, 1, //Scroll for Helmet for DEF 10% + 2040504, 1, //Scroll for Overall Armor for DEF 60% + 2040511, 1, //Dark Scroll for Overall Armor for DEF 30% + 2040505, 1, //Scroll for Overall Armor for DEF 10% + 2040501, 1, //Scroll for Overall Armor for DEX 60% + 2040904, 1, //Dark Scroll for Shield for DEF 70% + 2040901, 1, //Scroll for Shield for DEF 60% + 2040905, 1, //Dark Scroll for Shield for DEF 30% + 2040902, 1, //Scroll for Shield for DEF 10% + 2040404, 1, //Dark Scroll for Topwear for DEF 70% + 2040401, 1, //Scroll for Topwear for DEF 60% + 2040405, 1, //Dark Scroll for Topwear for DEF 30% + 2040402, 1 //Scroll for Topwear for DEF 10% + ); + +function start() { + status = -1; + action(1,0,0); +} + +function action(mode, type, selection){ + if (mode == -1) { + cm.dispose(); + } + if (mode == 0) { + cm.dispose(); + return; + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + var index = Math.floor(Math.random()*rewards.length); + var reward; + var quantity; + if (index % 2 == 0){ //The index was an item id + reward = rewards[index]; + quantity = rewards[index + 1]; + } else { + reward = rewards[index - 1]; + quantity = rewards[index]; + } + if(!cm.canHold(reward)){ + cm.sendOk("Please make space in your inventory!"); + return; + } + cm.gainItem(reward, quantity); + var eim = cm.getPlayer().getEventInstance(); + if (eim != null) { + eim.unregisterPlayer(cm.getPlayer()); + } + cm.warp(220000000, 0); + cm.gainItem(4001106, -cm.itemQuantity(4001106)) + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9103003.js b/scripts/npc/world0/9103003.js new file mode 100644 index 0000000000..2fd6aa2146 --- /dev/null +++ b/scripts/npc/world0/9103003.js @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *@Author SharpAceX (Alan) + * Ludibrium Maze Party Quest + */ + +var status = 0; +function start() { + status = -1; + action(1,0,0); +} + +function action(mode, type, selection){ + var eim = cm.getPlayer().getEventInstance(); + if (eim != null) { + eim.unregisterPlayer(cm.getPlayer()); + } + cm.warp(220000000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9120003.js b/scripts/npc/world0/9120003.js new file mode 100644 index 0000000000..fb3e89c5e8 --- /dev/null +++ b/scripts/npc/world0/9120003.js @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Hikari - Showa Town(801000000) +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Information + 2.0 - Second Version by Moogra + 2.1 - Code revamped by Moogra +--------------------------------------------------------------------------------------------------- +**/ + +var price = 300; + +function start() { + cm.sendYesNo("Would you like to enter the bathhouse? That'll be " + price + " mesos for you."); +} + +function action(mode, type, selection) { + if (mode < 1) { + if (mode == 0) + cm.sendOk("Please come back some other time."); + cm.dispose(); + return; + } + if (cm.getMeso < price) + cm.sendOk("Please check and see if you have " + price + " mesos to enter this place."); + else { + cm.gainMeso(-price); + cm.warp(801000100 + 100 * cm.getPlayer().getGender()); + } + cm.dispose(); +} diff --git a/scripts/npc/world0/9120009.js b/scripts/npc/world0/9120009.js new file mode 100644 index 0000000000..baf67b1be4 --- /dev/null +++ b/scripts/npc/world0/9120009.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 9120009); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9120010.js b/scripts/npc/world0/9120010.js new file mode 100644 index 0000000000..c34d7752a9 --- /dev/null +++ b/scripts/npc/world0/9120010.js @@ -0,0 +1,94 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var eQuestChoices = new Array (4000064,4000065,4000066,4000075,4000077,4000089,4000090,4000091,4000092,4000093,4000094); +var eQuestPrizes = new Array(); +eQuestPrizes[0] = new Array ([2000000,1],[2000006,1],[2000003,5],[2000002,5],[4020006,2],[4020000,2],[4020004,2],[2000003,10],[2000003,20],[2000002,10],[2000002,20],[2022026,15],[2022024,15],[1002393,1]); // Pink Bandana +eQuestPrizes[1] = new Array ([2000006,1],[2000002,5],[4020006,2],[2000002,10],[2000003,10],[2000002,20],[2000003,20],[2022024,15],[2022026,15]); // Yakisoba +eQuestPrizes[2] = new Array ([2000006,1],[2000002,5],[2000003,5],[4020000,2],[2000003,10],[2000002,10],[2000003,20],[2000002,20],[2022024,15],[1002393,1]); // Pink Bandana +eQuestPrizes[3] = new Array ([2060003,1000],[4010004,2],[4010006,2],[2022022,5],[2022022,10],[2022022,15],[2022019,5],[2022019,10],[2022019,15],[2001002,15],[2001001,15],[1102040,1],[1102043,1]); // Brown Adventurer Cape +eQuestPrizes[4] = new Array ([2000003,1],[2022019,5],[2000006,5],[4010002,2],[4010003,2],[2000006,10],[2000006,15],[2022019,10],[2022019,15],[2060003,1000],[2061003,1000],[1082150,1],[1082149,1]); // Brown Work Gloves +eQuestPrizes[5] = new Array ([2000006,1],[2000003,5],[2000002,5],[2000003,10],[2000003,20],[2000002,10],[2000002,15],[2060003,1000],[2061003,1000], [2022026,15],[1002395,1]); +eQuestPrizes[6] = new Array ([2022019,5],[2000006,5],[4010003,2],[2022019,10],[2022019,15],[2000006,10],[2000006,15],[2060003,1000],[2061003,1000]); // Blue Arrow for Crossbow +eQuestPrizes[7] = new Array ([2000003,1], [2000006,1],[2022019,1],[2000006,5],[4010002,2],[4020001,2],[2022019,10],[2022019,15],[2000006,10],[2000006,15],[2060003,1000],[2061003,1000]); +eQuestPrizes[8] = new Array ([2022019,5],[2022022,5],[4010006,2],[2022019,10],[2022019,15],[2022022,10],[2022022,15],[2001002,15],[2001001,15],[1102043,1]); // Brown Adventurer Cape +eQuestPrizes[9] = new Array ([4010004,5],[2022019,5],[2022022,15],[2022019,15],[2001002,15],[2001001,15],[1102043,1]); // Brown Adventurer Cape +eQuestPrizes[10] = new Array([2000006,1],[4020008,15],[2022018,5],[2022018,10],[2022018,15],[2022000,10],[2022000,20],[2022025,15]); // Takoyaki (Jumbo) +var requiredItem = 0; +var lastSelection = 0; +var prizeItem = 0; +var prizeQuantity = 0; +var info; +var itemSet; +var reward; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.sendOk("Really? Let me know if you ever change your mind."); + cm.dispose(); + return; + } if (mode == 0 && status == 1) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + if (status == 0) { + cm.sendYesNo("If you're looking for someone that can pinpoint the characteristics of various items, you're looking at one right now. I'm currently looking for something. Would you like to hear my story?"); + } else if (status == 1) { + var eQuestChoice = makeChoices(eQuestChoices); + cm.sendSimple(eQuestChoice); + } else if (status == 2){ + requiredItem = eQuestChoices[selection]; + reward = eQuestPrizes[selection]; + itemSet = (Math.floor(Math.random() * reward.length)); + prizeItem = reward[itemSet][0]; + prizeQuantity = reward[itemSet][1]; + if (!cm.canHold(prizeItem)){ + cm.sendNext("I can't give you the reward if your equip, use, or etc. inventory is full. Please go take a look right now."); + } else if (hasItem(requiredItem, 100)){ // check they have >= 100 in Inventory + cm.gainItem(requiredItem,-100); + cm.gainItem(prizeItem,prizeQuantity); + cm.sendOk("Hmmm ... if not for this minor scratch ... sigh. I'm afaird I can only deem this a standard-quality item. Well, here's \r\n#t"+ prizeItem +"# for you."); + } else{ + cm.sendOk("Hey, what do you think you're doing? Go lie to someone that DOESN'T know what he's talking about. Not me!"); + } + cm.dispose(); + } + } +} + +function makeChoices(a){ + var result = "The items I'm looking for are 1,2,3 ... phew, too many to\r\nmention. Anyhow, if you gather up 100 of the same items,\r\nthen i may trade it with something similiar. What? You may\r\nnot know this, but i keep my end of the promise, so you\r\nneed not worry. Now, shall we trade?\r\n"; + for (var x = 0; x< a.length; x++){ + result += " #L" + x + "##v" + a[x] + "##t" + a[x] + "##l\r\n"; + } + return result; +} \ No newline at end of file diff --git a/scripts/npc/world0/9120013.js b/scripts/npc/world0/9120013.js new file mode 100644 index 0000000000..5e03eaa915 --- /dev/null +++ b/scripts/npc/world0/9120013.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//Boss Kitty + +var status; +var questions; +var answers; +var correctAnswer; +var questionNum; + +function start() { + status = -1; + questions = new Array("Which of these items does the Flaming Raccoon NOT drop?","Which NPC is responsible for transporting travellers from Kerning City to Zipangu, and back?","Which of the items sold at the Mushroom Shrine increases your attack power?","Which of these items do the Extras NOT drop?","Which of these items DO NOT exist??","What's the name of the vegetable store owner in Showa Town?","Which of these items DO exist?","What is the name of the strongest boss in the Mushroom Shrine?","Which one of these items has a mis-matched class or level description?","Which of these noodles are NOT being sold by Robo at the Mushroom Shrine?","Which of these NPCs do NOT stand in front of Showa Movie Theater?") + answers = new Array(new Array("Raccoon Firewood","Solid Horn","Red Brick"),new Array("Peli","Spinel","Poli"),new Array("Takoyaki","Yakisoba","Tempura"),new Array("Extra A's Badge","Extra B's Corset","Extra C's Necklace"),new Array("Frozen Tuna","Fan","Fly Swatter"),new Array("Sami","Kami","Umi"),new Array("Cloud Fox's Tooth","Ghost's Bouquet","Dark Cloud Fox's Tail"),new Array("Black Crow","Blue Mushmom","Himegami"),new Array("Bamboo Spear - Warrior-only Weapon","Pico-Pico Hammer - One-handed Sword","Mystic Cane - Level 51 equip"),new Array("Kinoko Ramen (Pig Skull)","Kinoko Ramen (Salt)","Mushroom Miso Ramen"),new Array("Skye","Furano","Shinta")); + correctAnswer = new Array(1,1,0,1,2,2,2,0,0,2,2); + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if (cm.isQuestStarted(8012) && !cm.haveItem(4031064)){ //quest in progress + cm.sendYesNo("Did you get them all? Are you going to try to answer all of my questions?"); + } + else { //quest not started or already completed + //cm.sendOk("Meeeoooowww!");//lol what's this? + cm.dispose(); + } + } + else if (status == 1 && mode == 1) { + var hasChicken = true; + if (!cm.haveItem(2020001,300)) hasChicken=false; + if (!hasChicken) { + cm.sendOk("What? No! 300! THREE. HUNDRED. No less. Hand over more if you want, but I need at least 300. Not all of us can be as big and as fed as you..."); + cm.dispose(); + } + else { + cm.gainItem(2020001, -300) + cm.sendNext("Good job! Now hold on a sec... Hey look! I got some food here! Help yourselves. Okay, now it's time for me to ask you some questions. I'm sure you're aware of this, but remember, if you're wrong, it's over. It's all or nothing!"); + } + } + else if (status == 7 && mode == 1) { //2-6 are the questions + if (selection != correctAnswer.pop()){ + cm.sendNext("Hmmm...all humans make mistakes anyway! If you want to take another crack at it, then bring me 300 Fried Chicken.") + cm.dispose(); + } + else { + cm.sendNext("Dang, you answered all the questions right. I may not like humans in general, but I HATE breaking a promise, so, as promised, here's the Orange Marble.") + } + } + else if (status == 8 && mode == 1) { //gain marble + cm.gainItem(4031064, 1); + cm.sendOk("Our business is concluded, thank you very much! You can leave now!"); + cm.dispose(); + } + else if (status >= 2 && status <= 6 && mode == 1) {//questions + var cont = true; + if (status > 2) { + if (selection != correctAnswer.pop()){ + cm.sendNext("Hmmm...all humans make mistakes anyway! If you want to take another crack at it, then bring me 300 Fried Chicken.") + cm.dispose(); + cont = false; + } + } + if (cont) { + questionNum = Math.floor(Math.random() * questions.length); + if (questionNum != (questions.length - 1)){ + var temp; + temp = questions[questionNum]; + questions[questionNum] = questions[questions.length - 1]; + questions[questions.length - 1] = temp; + temp = answers[questionNum]; + answers[questionNum] = answers[questions.length - 1]; + answers[questions.length - 1] = temp; + temp = correctAnswer[questionNum]; + correctAnswer[questionNum] = correctAnswer[questions.length - 1]; + correctAnswer[questions.length - 1] = temp; + } + var question = questions.pop(); + var answer = answers.pop(); + var prompt = "Question no." + (status - 1) + ": " + question; + for (var i = 0; i < answer.length; i++) + prompt += "\r\n#b#L" + i + "#" + answer[i] + "#l#k"; + cm.sendSimple(prompt); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9120015.js b/scripts/npc/world0/9120015.js new file mode 100644 index 0000000000..bb0a9642d0 --- /dev/null +++ b/scripts/npc/world0/9120015.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Konpei - Showa Town(801000000) +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.1 - Fixed by Moogra + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ +var status = 0; +function start() { + cm.sendSimple ("What do you want from me?\r #L0##bGather up some information on the hideout.#l\r\n#L1#Take me to the hideout#l\r\n#L2#Nothing#l#k"); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.dispose(); + } else { + status++; + if (status == 1) { + if (selection == 0) { + cm.sendNext("I can take you to the hideout, but the place is infested with thugs looking for trouble. You'll need to be both incredibly strong and brave to enter the premise. At the hideaway, you'll find the Boss that controls all the other bosses around this area. It's easy to get to the hideout, but the room on the top floor of the place can only be entered ONCE a day. The Boss's Room is not a place to mess around. I suggest you don't stay there for too long; you'll need to swiftly take care of the business once inside. The boss himself is a difficult foe, but you'll run into some incredibly powerful enemies on you way to meeting the boss! It ain't going to be easy."); + cm.dispose(); + } else if (selection == 1) + cm.sendNext("Oh, the brave one. I've been awaiting your arrival. If these\r\nthugs are left unchecked, there's no telling what going to\r\nhappen in this neighborhood. Before that happens, I hope\r\nyou take care of all them and beat the boss, who resides\r\non the 5th floor. You'll need to be on alert at all times, since\r\nthe boss is too tough for even wisemen to handle.\r\nLooking at your eyes, however, I can see that eye of the\r\ntiger, the eyes that tell me you can do this. Let's go!"); + else { + cm.sendOk("I'm a busy person! Leave me alone if that's all you need!"); + cm.dispose(); + } + } else { + cm.warp(801040000); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9120100.js b/scripts/npc/world0/9120100.js new file mode 100644 index 0000000000..4a546624fd --- /dev/null +++ b/scripts/npc/world0/9120100.js @@ -0,0 +1,115 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Tepei + Showa VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30230, 30030, 30260, 30280, 30240, 30290, 30020, 30270, 30340, 30710, 30810); +var fhair = Array(31310, 31300, 31050, 31040, 31160, 31100, 31410, 31030, 31790, 31550); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Welcome to the Showa hair shop. If you have a #b#t5150009##k, or a #b#t5151009##k, allow me to take care of your hairdo. Please choose the one you want.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150009##t5150009##l\r\n#L2#Dye your hair: #i5151009##t5151009##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150009##t5150009##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151009##t5151009##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + } + } + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? With #b#t5150009##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t5151009##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150009)){ + cm.gainItem(5150009, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151009)){ + cm.gainItem(5151009, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150009, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151009, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/9120101.js b/scripts/npc/world0/9120101.js new file mode 100644 index 0000000000..3ffe1372bd --- /dev/null +++ b/scripts/npc/world0/9120101.js @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Unkown + Showa Town VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30000, 30120, 30140, 30190, 30210, 30360, 30220, 30370, 30400, 30440, 30790, 30800, 30810, 30770, 30760); +var fhair = Array(31030, 31050, 31000, 31070, 31100, 31120, 31130, 31250, 31340, 31680, 31350, 31400, 31650, 31550, 31800); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm the head of Showa hair salon. If you have a #b#t5150009##k or a #b#t5151009##k allow me to take care of your hairdo. Please choose the one you want.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150009##t5150009##l\r\n#L2#Dye your hair: #i5151009##t5151009##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150009##t5150009##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151009##t5151009##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? If you have #b#t5150009##k I'll change it for you. Choose the one to your liking~.", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t51051009##k I'll change it for you. Choose the one to your liking.", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150009)){ + cm.gainItem(5150009, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151009)){ + cm.gainItem(5151009, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150009, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151009, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/9120200.js b/scripts/npc/world0/9120200.js new file mode 100644 index 0000000000..4d9bb231ad --- /dev/null +++ b/scripts/npc/world0/9120200.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + cm.sendYesNo("Here you are, right in front of the hideout! What? You want to\r\nreturn to #m801000000#?"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0) { + cm.sendOk("If you want to return to #m801000000#, then talk to me"); + cm.dispose(); + } if (mode == 1) { + status++; + } + if (status == 1) { + cm.warp(801000000); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9120201.js b/scripts/npc/world0/9120201.js new file mode 100644 index 0000000000..a4863d8156 --- /dev/null +++ b/scripts/npc/world0/9120201.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Konpei (9120201) +* Bain Armory Version +*/ + +function start() { + if (cm.getPlayerCount(801040100) == 0) + cm.resetMap(801040100); + cm.warp(801040100); + cm.dispose(); +} diff --git a/scripts/npc/world0/9120202.js b/scripts/npc/world0/9120202.js new file mode 100644 index 0000000000..92e3518ec8 --- /dev/null +++ b/scripts/npc/world0/9120202.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.warp(801040004, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9200100.js b/scripts/npc/world0/9200100.js new file mode 100644 index 0000000000..6b111048f5 --- /dev/null +++ b/scripts/npc/world0/9200100.js @@ -0,0 +1,104 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Dr. Lenu + Henesys Random/VIP Eye Color Change. +*/ +var status = 0; +var beauty = 0; +var regprice = 1000000; +var vipprice = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) + cm.dispose(); + if (mode == 1) + status++; + else + status--; + if (status == 0) + cm.sendSimple("Hi, there~! I'm Dr. Lenu, in charge of the cosmetic lenses here at the Henesys Plastic Surgery Shop! With #b#t5152010##k or #b#t5152013##k, you can let us take care of the rest and have the kind of beautiful look you've always craved~! Remember, the first thing everyone notices about you is the eyes, and we can help you find the cosmetic lens that most fits you! Now, what would you like to use?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Cosmetic Lenses: #i5152010##t5152010##l\r\n#L2#Cosmetic Lenses: #i5152013##t5152013##l"); + else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Cosmetic Lenses for " + regprice + " mesos: #i5152010##t5152010##l\r\n#L1#Cosmetic Lenses for " + vipprice + " mesos: #i5152013##t5152013##l"); + } else if (selection == 1) { + beauty = 1; + if (cm.getPlayer().getGender() == 0) + var current = cm.getPlayer().getFace()% 100 + 20000; + if (cm.getPlayer().getGender() == 1) + var current = cm.getPlayer().getFace()% 100 + 21000; + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use a #b#t5152010##k and really make the change to your eyes?"); + } else if (selection == 2) { + beauty = 2; + if (cm.getPlayer().getGender() == 0) + var current = cm.getPlayer().getFace()% 100 + 20000; + if (cm.getPlayer().getGender() == 1) + var current = cm.getPlayer().getFace() % 100 + 21000; + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendStyle("With our specialized machine, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Choose the style of your liking.", colors); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5152010) == true){ + cm.gainItem(5152010, -1); + cm.setFace(colors[Math.floor(Math.random() * colors.length)]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + if (beauty == 2){ + if (cm.haveItem(5152013) == true){ + cm.gainItem(5152013, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= regprice) { + cm.gainMeso(-regprice); + cm.gainItem(5152010, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= vipprice) { + cm.gainMeso(-vipprice); + cm.gainItem(5152013, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } +} diff --git a/scripts/npc/world0/9200101.js b/scripts/npc/world0/9200101.js new file mode 100644 index 0000000000..b9e0cf3082 --- /dev/null +++ b/scripts/npc/world0/9200101.js @@ -0,0 +1,117 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Dr. Rhomes + Orbis Random/VIP Eye Color Change. +*/ +var status = 0; +var beauty = 0; +var regprice = 1000000; +var vipprice = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hello, I'm Dr. Rhomes, head of the cosmetic lens department here at the Orbis Plastic Surgery Shop.\r\nMy goal here is to add personality to everyone's eyes through the wonders of cosmetic lenses, and with #b#t5152011##k or #b#t5152014##k, I can do the same for you, too! Now, what would you like to use?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Cosmetic Lenses: #i5152011##t5152011##l\r\n#L2#Cosmetic Lenses: #i5152014##t5152014##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Cosmetic Lenses for " + regprice + " mesos: #i5152011##t5152011##l\r\n#L1#Cosmetic Lenses for " + vipprice + " mesos: #i5152014##t5152014##l"); + } else if (selection == 1) { + beauty = 1; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() + % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() + % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use a #b#t5152011##k and really make the change to your eyes?"); + } else if (selection == 2) { + beauty = 2; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() + % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() + % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendStyle("With our new computer program, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Please choose the style of your liking.", colors); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5152011)){ + cm.gainItem(5152011, -1); + cm.setFace(colors[Math.floor(Math.random() * colors.length)]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + if (beauty == 2){ + if (cm.haveItem(5152014)){ + cm.gainItem(5152014, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= regprice) { + cm.gainMeso(-regprice); + cm.gainItem(5152011, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= vipprice) { + cm.gainMeso(-vipprice); + cm.gainItem(5152014, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/9200102.js b/scripts/npc/world0/9200102.js new file mode 100644 index 0000000000..0c4e241d92 --- /dev/null +++ b/scripts/npc/world0/9200102.js @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Dr. Bosch + Ludibrium Random/VIP Eye Color Change. + */ +var status = 0; +var beauty = 0; +var regprice = 1000000; +var vipprice = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Um... hi, I'm Dr. Bosch, and I am a cosmetic lens expert here at the Ludibrium Plastic Surgery Shop. I believe your eyes are the most important feature in your body, and with #b#t5152012##k or #b#t5152015##k, I can prescribe the right kind of cosmetic lenses for you. Now, what would you like to use?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Cosmetic Lenses: #i5152012##t5152012##l\r\n#L2#Cosmetic Lenses: #i5152015##t5152015##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Cosmetic Lenses for " + regprice + " mesos: #i5152012##t5152012##l\r\n#L1#Cosmetic Lenses for " + vipprice + " mesos: #i5152015##t5152015##l"); + } else if (selection == 1) { + beauty = 1; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use a #b#t5152012##k and really make the change to your eyes?"); + } else if (selection == 2) { + beauty = 2; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendStyle("With our new computer program, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Please choose the style of your liking.", colors); + } + } + else if (status == 2){ + if (beauty == 1){ + if (cm.haveItem(5152012) == true){ + cm.gainItem(5152012, -1); + cm.setFace(colors[Math.floor(Math.random() * colors.length)]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + cm.dispose(); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + cm.dispose(); + } + } + if (beauty == 2){ + if (cm.haveItem(5152015) == true){ + cm.gainItem(5152015, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + cm.dispose(); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + cm.dispose(); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= regprice) { + cm.gainMeso(-regprice); + cm.gainItem(5152012, 1); + cm.sendOk("Enjoy!"); + cm.dispose(); + } else if (selection == 1 && cm.getMeso() >= vipprice) { + cm.gainMeso(-vipprice); + cm.gainItem(5152015, 1); + cm.sendOk("Enjoy!"); + cm.dispose(); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201000.js b/scripts/npc/world0/9201000.js new file mode 100644 index 0000000000..9f5827aff7 --- /dev/null +++ b/scripts/npc/world0/9201000.js @@ -0,0 +1,141 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *Moony - 9201000.js + *@author Jvlaple + *For HurricaneMS v.59 + */ +//var numberOfLoves = 0; +//var ringSelection = -1; + +function start() { + // status = -1; + // action(1, 0, 0); + //} + + //function action(mode, type, selection) { + // if (mode == -1) { + // cm.dispose(); + // } else { + // if (mode == 0) { + // cm.dispose(); + // return; + // } + // if (mode == 1) { + // status++; + // } else { + // status--; + // } + // if (status == 0) { + // if (cm.getPlayer().getMarriageQuestLevel() == 0 && cm.getPlayer().getLevel() >= 10) { + // cm.sendNext("Hey, I'm Moony, and I make engagement rings for marriage."); + // } else if (cm.getPlayer().getMarriageQuestLevel() == 1) { + // for (var i = 4031367; i < 4031373; i++) + // numberOfLoves += cm.getPlayer().countItem(i); + // if (numberOfLoves >= 4) { + // cm.sendNext("Wow, you're back pretty early. Got the #bProof of Loves#k? Lets see..."); + // } else { + // cm.sendOk("Please come back when you got 4 different #bProof of Loves#k."); + // cm.dispose(); + // } + // } else if (cm.getPlayer().getMarriageQuestLevel() == 2) { + // cm.sendSimple("Hey, your'e back! Ready to choose your ring?\r\n#b#L0#Moonstone Ring#l\r\n#L1#Star Gem Ring#l\r\n#L2#Golden Heart Ring#l\r\n#L3#Silver Swan Ring#l#k"); + // } else { + cm.sendOk("I hate making rings..."); + cm.dispose(); +// } +// } else if (status == 1) { +// if (cm.getPlayer().getMarriageQuestLevel() == 0 && cm.getPlayer().getLevel() >= 10) { +// cm.sendYesNo("Hey, you look like you might want to be married! Want to make an engagement ring?"); +// } else if (cm.getPlayer().getMarriageQuestLevel() == 1) { +// cm.sendNext("Great work getting the #bProof of Loves#k! Now we can make the #bEngagement Ring#k."); +// } else if (cm.getPlayer().getMarriageQuestLevel() == 2) { +// ringSelection = selection; +// if (ringSelection == 0) { +// if (cm.haveItem(4011007, 1) && cm.haveItem(4021007, 1) && cm.getPlayer().getMeso() >= 3000000) { +// cm.gainItem(4011007, -1); +// cm.gainItem(4021007, -1); +// cm.gainMeso(-3000000); +// cm.gainItem(2240000, 1); +// cm.sendOk("Here's the ring as promised! Have fun!"); +// cm.getPlayer().setMarriageQuestLevel(50); +// cm.dispose(); +// } else { +// cm.sendNext("You did not get all the right materials. To make an engagement ring, I need one of the following:\r\n\r\n#e#dMoonstone Ring:#k\r\n#v4011007#Moon Rock 1,#v4021007#Diamond 1, 3,000,000 Meso\r\n#dStar Gem Ring:#k\r\n#v4021009#Star Rock 1,#v4021007#Diamond 1, 2,000,000 Meso\r\n#dGolden Heart Ring:#k\r\n#v4011006#Gold Plate 1,#v4021007#Diamond 1, 1,000,000 Meso\r\n#dSilver Swan Ring:#k\r\n#v4011004#Silver Plate 1,#v4021007#Diamond 1, 500,000 Meso\r\n"); +// cm.dispose(); +// } +// } else if (ringSelection == 1) { +// if (cm.haveItem(4021009, 1) && cm.haveItem(4021007, 1) && cm.getPlayer().getMeso() >= 2000000) { +// cm.gainItem(4021009, -1); +// cm.gainItem(4021007, -1); +// cm.gainMeso(-2000000); +// cm.gainItem(2240001, 1); +// cm.sendOk("Here's the ring as promised! Have fun!"); +// cm.getPlayer().setMarriageQuestLevel(50); +// cm.dispose(); +// } else { +// cm.sendNext("You did not get all the right materials. To make an engagement ring, I need one of the following:\r\n\r\n#e#dMoonstone Ring:#k\r\n#v4011007#Moon Rock 1,#v4021007#Diamond 1, 3,000,000 Meso\r\n#dStar Gem Ring:#k\r\n#v4021009#Star Rock 1,#v4021007#Diamond 1, 2,000,000 Meso\r\n#dGolden Heart Ring:#k\r\n#v4011006#Gold Plate 1,#v4021007#Diamond 1, 1,000,000 Meso\r\n#dSilver Swan Ring:#k\r\n#v4011004#Silver Plate 1,#v4021007#Diamond 1, 500,000 Meso\r\n"); +// cm.dispose(); +// } +// } else if (ringSelection == 2) { +// if (cm.haveItem(4011006, 1) && cm.haveItem(4021007, 1) && cm.getPlayer().getMeso() >= 1000000) { +// cm.gainItem(4011006, -1); +// cm.gainItem(4021007, -1); +// cm.gainMeso(-1000000); +// cm.gainItem(2240002, 1); +// cm.sendOk("Here's the ring as promised! Have fun!"); +// cm.getPlayer().setMarriageQuestLevel(50); +// cm.dispose(); +// } else { +// cm.sendNext("You did not get all the right materials. To make an engagement ring, I need one of the following:\r\n\r\n#e#dMoonstone Ring:#k\r\n#v4011007#Moon Rock 1,#v4021007#Diamond 1, 3,000,000 Meso\r\n#dStar Gem Ring:#k\r\n#v4021009#Star Rock 1,#v4021007#Diamond 1, 2,000,000 Meso\r\n#dGolden Heart Ring:#k\r\n#v4011006#Gold Plate 1,#v4021007#Diamond 1, 1,000,000 Meso\r\n#dSilver Swan Ring:#k\r\n#v4011004#Silver Plate 1,#v4021007#Diamond 1, 500,000 Meso\r\n"); +// cm.dispose(); +// } +// } else if (ringSelection == 3) { +// if (cm.haveItem(4011004, 1) && cm.haveItem(4021007, 1) && cm.getPlayer().getMeso() >= 500000) { +// cm.gainItem(4011004, -1); +// cm.gainItem(4021007, -1); +// cm.gainMeso(-500000); +// cm.gainItem(2240003, 1); +// cm.sendOk("Here's the ring as promised! Have fun!"); +// cm.getPlayer().setMarriageQuestLevel(50); +// cm.dispose(); +// } else { +// cm.sendNext("You did not get all the right materials. To make an engagement ring, I need one of the following:\r\n\r\n#e#dMoonstone Ring:#k\r\n#v4011007#Moon Rock 1,#v4021007#Diamond 1, 3,000,000 Meso\r\n#dStar Gem Ring:#k\r\n#v4021009#Star Rock 1,#v4021007#Diamond 1, 2,000,000 Meso\r\n#dGolden Heart Ring:#k\r\n#v4011006#Gold Plate 1,#v4021007#Diamond 1, 1,000,000 Meso\r\n#dSilver Swan Ring:#k\r\n#v4011004#Silver Plate 1,#v4021007#Diamond 1, 500,000 Meso\r\n"); +// cm.dispose(); +// } +// } +// } +// } else if (status == 2) { +// if (cm.getPlayer().getMarriageQuestLevel() == 0 && cm.getPlayer().getLevel() >= 10) { +// cm.getPlayer().addMarriageQuestLevel(); +// cm.sendOk("Okay, first bring me back any four colored #bProof of Loves#k. You can get them from talking to #bNana the Love Fairy#k in any town. Also, only one of you, either the Groom or Bride will do this quest."); +// cm.dispose(); +// } else if (cm.getPlayer().getMarriageQuestLevel() == 1) { +// for (var j = 4031367; j < 4031373; j++) +// cm.removeAll(j); +// cm.getPlayer().addMarriageQuestLevel(); +// cm.sendNextPrev("You need the following raw materials to make an\r\n#bEngagement Ring#k.\r\n\r\n#e#dMoonstone Ring:#k\r\n#v4011007#Moon Rock 1,#v4021007#Diamond 1, 3,000,000 Meso\r\n#dStar Gem Ring:#k\r\n#v4021009#Star Rock 1,#v4021007#Diamond 1, 2,000,000 Meso\r\n#dGolden Heart Ring:#k\r\n#v4011006#Gold Plate 1,#v4021007#Diamond 1, 1,000,000 Meso\r\n#dSilver Swan Ring:#k\r\n#v4011004#Silver Plate 1,#v4021007#Diamond 1, 500,000 Meso\r\n"); +// cm.dispose(); +// } +// } +// } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201001.js b/scripts/npc/world0/9201001.js new file mode 100644 index 0000000000..6c3a4ca1cb --- /dev/null +++ b/scripts/npc/world0/9201001.js @@ -0,0 +1,120 @@ +/* +Credits go to Travis of DeanMS ( xKillsAlotx on RaGEZONE) +Item Exchanger for scrolls + +Modified by SharpAceX (Alan) for MapleSolaxia +*/ + +importPackage(Packages.tools); + +var status = 0; +var leaf = 4001126; +var chairs = new Array(3010000, 3010001, 3010002, 3010003, 3010004, 3010005, 3010006, 3010007, 3010008, 3010009, 3010010, 3010011, 3010012, 3010013, 3010015, 3010016, 3010017, 3010018, 3010019, 3010022, 3010023, 3010024, 3010025, 3010026, 3010028, 3010040, 3010041, 3010043, 3010045, 3010046, 3010047,3010057,3010058,3010060,3010061,3010062,3010063, 3010064,3010065,3010066,3010067,3010069,3010071,3010072,3010073,3010080,3010081,3010082,3010083, 3010084,3010085,3010097,3010098,3010099,3010101,3010106,3010116,3011000,3012005,3012010,3012011); +var scrolls = new Array(2040603,2044503,2041024,2041025,2044703,2044603,2043303,2040807,2040806,2040006,2040007,2043103,2043203,2043003,2040506,2044403,2040903,2040709,2040710,2040711,2044303,2043803,2040403,2044103,2044203,2044003,2043703); +var weapons = new Array(1302020, 1302030, 1302033, 1302058, 1302064, 1302080, 1312032, 1322054, 1332025, 1332055, 1332056, 1372034, 1382009, 1382012, 1382039, 1402039, 1412011, 1412027, 1422014, 1422029, 1432012, 1432040, 1432046, 1442024, 1442030, 1442051, 1452016, 1452022, 1452045, 1462014, 1462019, 1462040, 1472030, 1472032, 1472055, 1482020, 1482021, 1482022, 1492020, 1492021, 1492022, 1092030, 1092045, 1092046, 1092047); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) + cm.dispose(); + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hello#b #h ##k, you currently have #b#c4001126# maple leaves.#k \r\nWhat would you like to do?\r\n#k#L1# Trade 1 leaf for 5,000 NX#l\r\n\#L2# Trade 1 leaf for 1 random chair #l\r\n\#L3# Trade 1 leaf for 3 random Maple Weapons #l\r\n\#L4# Trade 1 leaf for 3 Swiss Cheese and Onyx Apples#l\r\n#L5#Trade 1 leaf for a 10 day Hired Merchant#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.haveItem(leaf, 1)) { + cm.getPlayer().getCashShop().gainCash(1, 5000); + cm.getPlayer().announce(MaplePacketCreator.earnTitleMessage("You have earned 5,000 NX")); + cm.gainItem(leaf, -1); + cm.sendOk("Here is your 5,000 NX!"); + cm.logLeaf("5k NX"); + } else { + cm.sendOk("Sorry, you don't have a maple leaf!"); + } + cm.dispose(); + } else if (selection == 2) { + if(cm.haveItem(leaf, 1)) { + var chair1 = chairs[Math.floor(Math.random()*chairs.length)]; + if(cm.canHold(chair1)){ + cm.gainItem(chair1); + cm.gainItem(leaf, -1); + cm.sendOk("Here is your random chair!"); + cm.logLeaf("Chair ID: " + chair1); + } else { + cm.sendOk("Please make sure you have enough space to hold this chair!"); + } + } else { + cm.sendOk("Sorry, you don't have a maple leaf!"); + } + cm.dispose(); + } else if (selection == 3) { + if(cm.haveItem(leaf, 1)) { + var weapon1 = weapons[Math.floor(Math.random()*weapons.length)]; + var weapon2 = weapons[Math.floor(Math.random()*weapons.length)]; + var weapon3 = weapons[Math.floor(Math.random()*weapons.length)]; + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.EQUIP).isFull(3)) { + cm.gainItem(weapon1, 1, true, true); + cm.gainItem(weapon2, 1, true, true); + cm.gainItem(weapon3, 1, true, true); + cm.gainItem(leaf, -1); + cm.sendOk("Here are your 3 random weapons!"); + cm.logLeaf("Maple Weapons IDs: " + weapon1 + "," + weapon2 + "," + weapon3); + } else { + cm.sendOk("Please make sure you have enough space to hold these weapons!"); + } + } else { + cm.sendOk("Sorry, you don't have a maple leaf!"); + } + cm.dispose(); + } else if (selection == 4) { + if(cm.haveItem(leaf, 1)) { + var cheese = 2022273; + var apple = 2022179; + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.EQUIP).isFull(2)){ + cm.gainItem(apple, 3); + cm.gainItem(cheese, 3); + cm.gainItem(leaf, -1); + cm.sendOk("Here are your 3 cheeses and apples!"); + cm.logLeaf("3 cheeses and apples"); + } else { + cm.sendOk("Please make sure you have enough space to hold these items!"); + } + } else { + cm.sendOk("Sorry, you don't have a maple leaf!"); + } + cm.dispose(); + } else if(selection == 5) { + if(cm.haveItem(leaf, 1)) { + if(!cm.haveItem(5030000, 1)) { + if(!cm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.CASH).isFull(1)){ + cm.gainItem(5030000, 1, false, true, 1000 * 60 * 60 * 24 * 10); + cm.gainItem(leaf, -1); + cm.sendOk("Here is your Hired Merchant!"); + cm.logLeaf("10 day hired merchant"); + } else { + cm.sendOk("Please make sure you have enough space to hold these items!"); + } + } else { + cm.sendOk("I can't give you a merchant if you already have one!"); + } + } else { + cm.sendOk("Sorry, you don't have a maple leaf!"); + } + cm.dispose(); + } else { + cm.sendOk("Come back later!"); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201002.js b/scripts/npc/world0/9201002.js new file mode 100644 index 0000000000..82ce780301 --- /dev/null +++ b/scripts/npc/world0/9201002.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.warp(109030001, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201003.js b/scripts/npc/world0/9201003.js new file mode 100644 index 0000000000..b96fbb497e --- /dev/null +++ b/scripts/npc/world0/9201003.js @@ -0,0 +1,88 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *9201003.js - Mom and Dad + *@author Jvlaple + */ +var numberOfLoves = 0; +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (cm.getPlayer().getMarriageQuestLevel() == 51) { + if (status == 0) { + if (cm.getPlayer().getGender() == 0) { + cm.sendYesNo("Hello my child. Are you sure that you want to get married to this girl? I believe in love at first sight, but this is rather sudden... I don't think we are ready for this. Lets think about it. Do you really love this girl?"); + } else { + cm.sendYesNo("Hello my child. Are you sure that you want to get married to this man? I believe in love at first sight, but this is rather sudden... I don't think we are ready for this. Lets think about it. Do you really love this man?"); + } + } else if (status == 1) { + cm.getPlayer().addMarriageQuestLevel(); + cm.sendNext("Okay then. Go back to town and collect two more #bProof of Loves#k to prove it."); + cm.dispose(); + } + } else if (cm.getPlayer().getMarriageQuestLevel() == 52) { + if (status == 0) { + numberOfLoves += cm.getPlayer().countItem(4031367); + numberOfLoves += cm.getPlayer().countItem(4031368); + numberOfLoves += cm.getPlayer().countItem(4031369); + numberOfLoves += cm.getPlayer().countItem(4031370); + numberOfLoves += cm.getPlayer().countItem(4031371); + numberOfLoves += cm.getPlayer().countItem(4031372); + if (numberOfLoves >= 2) { + cm.sendNext("Wow, you really are serious! Okay then, here is our blessing."); + } else { + cm.sendNext("Come back when you get two #bProof of Loves#k."); + cm.dispose(); + } + } else if (status == 1) { + cm.getPlayer().addMarriageQuestLevel(); + cm.removeAll(4031367); + cm.removeAll(4031368); + cm.removeAll(4031369); + cm.removeAll(4031370); + cm.removeAll(4031371); + cm.removeAll(4031372); + cm.gainItem(4031373, 1); + cm.dispose(); + } + } else { + cm.sendOk("Hello we're Mom and Dad..."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201004.js b/scripts/npc/world0/9201004.js new file mode 100644 index 0000000000..cb21e30d7f --- /dev/null +++ b/scripts/npc/world0/9201004.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*9201091 - Ames + *@author Moogra +*/ + +function start() { + cm.warp(680000000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201005.js b/scripts/npc/world0/9201005.js new file mode 100644 index 0000000000..32f9524666 --- /dev/null +++ b/scripts/npc/world0/9201005.js @@ -0,0 +1,103 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + Nicole +-- By --------------------------------------------------------------------------------------------- + Angel (get31720 ragezone) +-- Extra Info ------------------------------------------------------------------------------------- + Fixed by [happydud3] & [XotiCraze] +--------------------------------------------------------------------------------------------------- +**/ + +var status; +var x; +var hasEngageRing = false; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1 || mode == 0) { + cm.sendOk("Goodbye then"); + cm.dispose(); + return; + } else if (mode == 1) { + status++; + } else { + status--; + } + var item = new Array(4031360, 4031358, 4031362, 4031364); + for (x = 0; x < item.length && !hasEngageRing; x++) { + if (cm.haveItem(item[x], 1)) + hasEngageRing = true; + } + if (status == 0) { + var text = "I'm here to assist you on weddings !"; + var choice = new Array("How do I prepare a wedding?", "I have an engagement ring and need invites for my guests", "I am the bride/groom and I'd like to start the wedding", "I am the guest and I'd like to go into the wedding"); + for (x = 0; x < choice.length; x++) { + text += "\r\n#L" + x + "##b" + choice[x] + "#l"; + } + cm.sendSimple(text); + } else if (status == 1) { + switch(selection) { + case 0: + cm.sendOk("Moony makes the engagement ring. The engagement ring is required throughout the wedding so never lose it. To invite your guests into the wedding you need to show me your engagement ring and then I'll give you 15 Gold Maple Leaves. They need 1 each to enter the wedding. Enjoy!"); + cm.dispose(); + break; + case 1: + if (cm.haveItem(4000313)) { + cm.sendOk("You already have a Gold Maple Leaf. Go give them to your guests before you go into the wedding."); + cm.dispose(); + } else if (hasEngageRing) { + cm.sendOk("You have recieved 15 Gold Maple Leaves."); + cm.gainItem(4000313,15); + cm.dispose(); + } else { + cm.sendOk("You do not have an engagement ring."); + cm.dispose(); + } + break; + case 2: + if (hasEngageRing) { + cm.warp(680000210, 2); + cm.sendOk("Talk to High Priest John when you're ready to be married."); + cm.dispose(); + } else { + cm.sendOk("You do not have an engagement ring."); + cm.dispose(); + } + break; + case 3: + if (cm.haveItem(4000313)) { + cm.warp(680000210); + cm.sendOk("Enjoy the wedding. Don't drop your Gold Maple Leaf or you won't be able to finish the whole wedding."); + cm.dispose(); + } else { + cm.sendOk("You do not have a Gold Maple Leaf"); + cm.dispose(); + } + break; + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201006.js b/scripts/npc/world0/9201006.js new file mode 100644 index 0000000000..2abb66c0e2 --- /dev/null +++ b/scripts/npc/world0/9201006.js @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + Debbie +-- By --------------------------------------------------------------------------------------------- + Angel (get31720 ragezone) +-- Extra Info ------------------------------------------------------------------------------------- + Fixed by [happydud3] & [XotiCraze] +--------------------------------------------------------------------------------------------------- +**/ + +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1 || mode == 0) { + cm.sendOk("Goodbye then"); + cm.dispose(); + return; + } else if (mode == 1) { + status++; + } else { + status--; + } + + switch (status) { + case 0: + cm.sendNext("I only warp out people who are here by accident."); + break; + case 1: + var engagementRings = new Array(4031360, 4031358, 4031362, 4031364); + var hasEngagement = false; + for (var x = 0; x < engagementRings.length && !hasEngagement; x++) { + if (cm.haveItem(engagementRings[x], 1)) + hasEngagement = true; + } + if (cm.haveItem(4000313) && hasEngagement) { + cm.sendOk("Please continue with the wedding."); + cm.dispose(); + } else { + cm.warp(680000000,0); + cm.dispose(); + } + break; + case 2: + cm.sendOk("You do not have the required item to continue through this wedding."); + break; + } +} diff --git a/scripts/npc/world0/9201007.js b/scripts/npc/world0/9201007.js new file mode 100644 index 0000000000..4f7e3e1ce8 --- /dev/null +++ b/scripts/npc/world0/9201007.js @@ -0,0 +1,96 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + Assistant Nancy +-- By --------------------------------------------------------------------------------------------- + Angel (get31720 ragezone) +-- Extra Info ------------------------------------------------------------------------------------- + Fixed by [happydud3] & [XotiCraze] +--------------------------------------------------------------------------------------------------- +**/ + +var status; +var i; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1 || mode == 0) { + cm.sendOk("Goodbye then"); + cm.dispose(); + return; + } else if (mode == 1) { + status++; + } else { + status--; + } + + var engagementRings = Array(4031360, 4031358, 4031362, 4031364); + var hasEngage = false; + for (i = 0; i < engagementRings.length && !hasEngage; i++) { + if (cm.haveItem(engagementRings[i])) + hasEngage = true; + } + var Rings = Array(1112806, 1112803, 1112807, 1112809); + var hasRing = false; + for (i = 0; i < Rings.length; i++) { + if (cm.haveItem(Rings[i])) { + hasRing = true; + } + } + + if (status == 0) { + if (cm.haveItem(4000313) && hasEngage) { + cm.sendOk("You can't leave yet! You need to click High Priest John and get married before I can let you leave."); + cm.dispose(); + } else if (cm.haveItem(4000313) && hasRing) { + var choice = Array("Go to the Cherished Visage Photos", "What should I be doing"); + var msg = "What can I help you with?"; + for (i = 0; i < choice.length; i++) { + msg += "\r\n#L" + i + "#" + choice[i] + "#l"; + } + cm.sendSimple(msg); + } else { + cm.sendNext("You don't seem to have a Gold Maple Leaf, engagement ring, or wedding ring. You must not belong here, so I will take you to Amoria."); + selection = 20; // Random. + } + } else if (status == 1) { + switch(selection) { + case 0: + cm.warp(680000300); + cm.sendOk("Enjoy! Cherish your Photos Forever!"); + cm.dispose(); + break; + case 1: + cm.sendOk("The Bride and Groom must click High Priest John to be wed. When you are ready you can click me to go to the Cherished Visage Photos"); + cm.dispose(); + break; + default: + cm.warp(680000000,0); + cm.dispose(); + break; + } + } +} diff --git a/scripts/npc/world0/9201010.js b/scripts/npc/world0/9201010.js new file mode 100644 index 0000000000..38c122af57 --- /dev/null +++ b/scripts/npc/world0/9201010.js @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + Assistant Travis +-- By --------------------------------------------------------------------------------------------- + Angel (get31720 ragezone) +-- Extra Info ------------------------------------------------------------------------------------- + Fixed by [happydud3] & [XotiCraze] +--------------------------------------------------------------------------------------------------- +**/ + +var status; + +function start() { + if (cm.haveItem(4000313)) { + cm.sendOk("You are a guest. Please continue with the wedding. I only warp out people who are here by accident."); + cm.dispose(); + } else + cm.sendNext("I warp people out. If you are the newly wed don't click next or you will not be able to collect your prize at the end."); +} + +function action(mode, type, selection) { + if (mode > 1) + cm.warp(680000000); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201013.js b/scripts/npc/world0/9201013.js new file mode 100644 index 0000000000..ba041d3b3c --- /dev/null +++ b/scripts/npc/world0/9201013.js @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* victora +by Angel (get31720 ragezone) + */ + +var wui = 0; + +function start() { + cm.sendSimple ("Welcome to the Cathedral. What would you like to do? \r\n#L0##bI need invitations for my guests#k #l\r\n#L1##bI'd like to prepare a wedding#k #l\r\n#L2##bCan you explain how I should prepare a wedding?#k #l\r\n#L3##bI am either the groom or bride and I'd like to go in#k #l\r\n#L4##bI am a guest and I'd like to go in#k #l"); +} + +function action(mode, type, selection) { + cm.dispose(); + if (selection == 0) { + if (cm.haveItem(4214002)) { + cm.sendNext("Alright here are you invitations make sure your guest have them or they can't come in!"); + cm.gainItem(4031395,10); + + } else { + cm.sendOk("Sorry but please make sure you have your premium wedding receipt or you won't be able to have your wedding"); + status = 9; + } + } else if (selection == 1) { + if (cm.haveItem(5251003)) { + cm.sendNext("Alright, I'll give you your premium wedding receipt and make sure you don't lose it! If you lose your receipt you won't be able to get invitations or enter the cathedral!"); + cm.gainItem(4214002,1); + } else if (selection == 2) { + cm.sendNext("Have both the bride and groom buy a premium cathedral wedding ticket from the cash shop. Then ask me to prepare your wedding and i'll give you a wedding receipt. Talk to me if you want invitations so other guests can join. When you're ready just have everyone come to me and i'll let you or the guests in. Inside Debbie will warp you out to Amoria if you chose to leave. Nicole will warp you to the next map."); + } else if (selection == 3) { + if (cm.haveItem(4214002)) { + cm.sendNext("Okay go on in. Once you're ready click the Priest and he'll get you married."); + cm.warp(680000210, 2); + } else { + cm.sendOk("Sorry but you don't have a wedding receipt."); + status = 9; + } + } else if (selection == 4) { + if (cm.haveItem(4031395)) { + cm.sendNext("Okay go on in. Once the bride and groom is ready click Nicole on the bottom to warp to the next map. Or use Debbie to leave to Amoria."); + cm.warp(680000210,0); + + } else { + cm.sendOk("Sorry but you don't have a premium wedding invitation."); + status = 9; + } + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201014.js b/scripts/npc/world0/9201014.js new file mode 100644 index 0000000000..5b1f37854f --- /dev/null +++ b/scripts/npc/world0/9201014.js @@ -0,0 +1,93 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + Pila Present +-- By --------------------------------------------------------------------------------------------- + Angel (get31720 ragezone) +-- Extra Info ------------------------------------------------------------------------------------- + Fixed by [happydud3] & [XotiCraze] +--------------------------------------------------------------------------------------------------- +**/ + +var status; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1 || mode == 0) { + cm.sendOk("Goodbye then"); + cm.dispose(); + return; + } else if (mode == 1) { + status++; + } else { + status--; + } + + if (status == 0) { + var msg = "Hello I exchange Onyx Chest for Bride and Groom and the Onyx Chest for prizes!"; + var choice1 = new Array("I have an Onyx Chest for Bride and Groom", "I have an Onyx Chest"); + for (var i = 0; i < choice1.length; i++) { + msg += "\r\n#L" + i + "#" + choice1[i] + "#l"; + } + cm.sendSimple(msg); + } else if (status == 1) { + if (selection == 0) { + if (cm.haveItem(4031424)) { + var rand = Math.floor(Math.random() * 4); + if (rand == 0) + cm.gainItem(2022179,10); + else if (rand == 1) + cm.gainItem(2022282,10); + else if (rand == 2) + cm.gainItem(2210005,5); + else if (rand == 3) + cm.gainItem(2210003,5); + cm.gainItem(4031424,-1); + } else { + cm.sendOk("You don't have an Onyx Chest for Bride and Groom."); + cm.dispose(); + } + } else if (selection == 1) { + if (cm.haveItem(4031423)) { + cm.sendSimple("You may choose your prize.\r\n#L0#Triangular Sushi#l\r\n#L1#50 power elixers#l\r\n#L2#10 Swiss Cheese#l\r\n#L3#3 Onyx Apples#l"); + } else { + cm.sendOk("You don't have an Onyx Chest"); + cm.dispose(); + } + } + } else if (status == 2) { + if (selection == 0) + cm.gainItem(2022011,10); + else if (selection == 1) + cm.gainItem(2000005,50); + else if (selection == 2) + cm.gainItem(2022273,10); + else if (selection == 3) + cm.gainItem(2022179,3); + cm.gainItem(4031423,-1); + cm.dispose(); + } +} diff --git a/scripts/npc/world0/9201015.js b/scripts/npc/world0/9201015.js new file mode 100644 index 0000000000..47e71d0dc3 --- /dev/null +++ b/scripts/npc/world0/9201015.js @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* Julius Styleman + Amoria VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30580, 30590, 30280, 30670, 30410, 30200, 30050, 30230, 30290, 30300, 30250); +var fhair = Array(31580, 31590, 31310, 31200, 31150, 31160, 31020, 31260, 31230, 31220, 31110); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Welcome to the Amoria hair shop. If you have a #b#t5150020##k, or a #b#t5151017##k, allow me to take care of your hairdo. Please choose the one you want.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150020##t5150020##l\r\n#L2#Dye your hair: #i5151017##t5151017##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150020##t5150020##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151017##t5151017##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? With #b#t5150020##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t5151017##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150020) == true){ + cm.gainItem(5150020, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151017) == true){ + cm.gainItem(5151017, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150020, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151017, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/9201016.js b/scripts/npc/world0/9201016.js new file mode 100644 index 0000000000..a30ee27124 --- /dev/null +++ b/scripts/npc/world0/9201016.js @@ -0,0 +1,215 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Salon Seamus + Amoria Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30570, 30690, 30250, 30230, 30050, 30280, 30410, 30290, 30300, 30580, 30590, 30200, 30450); +var fhair = Array(31490, 31570, 31150, 31590, 31310, 31220, 31260, 31020, 31160, 31110, 31230, 31580, 31480); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm Salon Seamus. If you have #b#t5150019##k or #b#t5151016##k by any chance, then how about letting me change your hairdo?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150019##t5150019##l\r\n#L2#Dye your hair: #i5151016##t5151016##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150019##t5150019##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151016##t5151016##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that even you didn't think was possible. Are you going to use #b#t5150019##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5150019##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150019) == true){ + cm.gainItem(5150019, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151016) == true){ + cm.gainItem(5151016, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150019, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151016, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} +/* Salon Seamus + Amoria Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30570, 30690, 30250, 30230, 30050, 30280, 30410, 30290, 30300, 30580, 30590, 30200, 30450); +var fhair = Array(31490, 31570, 31150, 31590, 31310, 31220, 31260, 31020, 31160, 31110, 31230, 31580, 31480); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm Salon Seamus. If you have #b#t5150019##k or #b#t5151016##k by any chance, then how about letting me change your hairdo?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150019##t5150019##l\r\n#L2#Dye your hair: #i5151016##t5151016##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150019##t5150019##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151016##t5151016##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() + % 10)); + } + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that even you didn't think was possible. Are you going to use #b#t5150019##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair() + /10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151016##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150019) == true){ + cm.gainItem(5150019, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151016) == true){ + cm.gainItem(5151016, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150019, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151016, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/9201017.js b/scripts/npc/world0/9201017.js new file mode 100644 index 0000000000..97d4557bf4 --- /dev/null +++ b/scripts/npc/world0/9201017.js @@ -0,0 +1,116 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Dr. Roberts + Amoria Random/VIP Eye Color Change. + */ +var status = 0; +var beauty = 0; +var regprice = 1000000; +var vipprice = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hi, there~! I'm Dr.Roberts, in charge of the cosmetic lenses here at the Amoria Plastic Surgery Shop! With #b#t5152025##k or #b#t5152026##k, you can let us take care of the rest and have the kind of beautiful look you've always craved~! Remember, the first thing everyone notices about you is the eyes, and we can help you find the cosmetic lens that most fits you! Now, what would you like to use?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Cosmetic Lenses: #i5152025##t5152025##l\r\n#L2#Cosmetic Lenses: #i5152026##t5152026##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Cosmetic Lenses for " + regprice + " mesos: #i5152025##t5152025##l\r\n#L1#Cosmetic Lenses for " + vipprice + " mesos: #i5152026##t5152026##l"); + } else if (selection == 1) { + beauty = 1; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use a #b#t5152025##k and really make the change to your eyes?"); + } else if (selection == 2) { + beauty = 2; + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendStyle("With our specialized machine, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Choose the style of your liking.", colors); + } + } + else if (status == 2){ + if (beauty == 1){ + if (cm.haveItem(5152025)){ + cm.gainItem(5152025, -1); + cm.setFace(colors[Math.floor(Math.random() * colors.length)]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + cm.dispose(); + } + } + if (beauty == 2){ + if (cm.haveItem(5152026)){ + cm.gainItem(5152026, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + cm.dispose(); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= regprice) { + cm.gainMeso(-regprice); + cm.gainItem(5152025, 1); + cm.sendOk("Enjoy!"); + cm.dispose(); + } else if (selection == 1 && cm.getMeso() >= vipprice) { + cm.gainMeso(-vipprice); + cm.gainItem(5152026, 1); + cm.sendOk("Enjoy!"); + cm.dispose(); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201018.js b/scripts/npc/world0/9201018.js new file mode 100644 index 0000000000..af680d832f --- /dev/null +++ b/scripts/npc/world0/9201018.js @@ -0,0 +1,87 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Dr. 90212 + Amoria VIP Eye Change. + */ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20003, 20004, 20005, 20006, 20007, 20008, 20018, 20019); +var fface = Array(21018, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21012, 21019); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Well, hello! Welcome to Amoria Plastic Surgery! Would you like to transform your face into something new? With a #b#t5152022##k, you can let us take care of the rest and have the face you've always wanted~!\r\n#L1#I would like to buy a #b#t5152022##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152022, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + } + } + cm.sendStyle("Let's see... I can totally transform your face into something new. Don't you want to try it? For #b#t5152022##k, you can get the face of your liking. Take your time in choosing the face of your preference.", facenew); + } + } + else if (status == 2){ + if (cm.haveItem(5152022) == true){ + cm.gainItem(5152022, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201019.js b/scripts/npc/world0/9201019.js new file mode 100644 index 0000000000..c9981ac595 --- /dev/null +++ b/scripts/npc/world0/9201019.js @@ -0,0 +1,87 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Intern Shakihands + Amoria Random Eye Change + */ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20003, 20004, 20005, 20006, 20007, 20008, 20018, 20019); +var fface = Array(21018, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21012, 21019); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hi, I pretty much shouldn't be doing this, but with a #b#t5152021##k, I will do it anyways for you. But don't forget, it will be random!\r\n#L1#I would like to buy a #b#t5152021##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152021, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) { + facenew.push(mface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + } + } + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152021##k?"); + } + } + else if (status == 2){ + if (cm.haveItem(5152021) == true){ + cm.gainItem(5152021, -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201021.js b/scripts/npc/world0/9201021.js new file mode 100644 index 0000000000..bdb5151c7c --- /dev/null +++ b/scripts/npc/world0/9201021.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; + +function start() { + cm.sendSimple("Hello, where would you like to go?\r\n#L0#Untamed Hearts Hunting Ground#l\r\n#L1#I have 7 keys. Bring me to smash boxes#l\r\n#L2#Please warp me out.#l"); +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.sendOk("Goodbye then"); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection < 1) + cm.warp(680000400); + else if (selection < 2) { + if (cm.haveItem(4031217,7)) + cm.gainItem(4031217, -7); + else + cm.sendOk("It seems like you don't have 7 Keys. Kill the cakes and candles in the Untamed Heart Hunting Ground to get keys. "); + } else if (selection > 1) { + cm.warp(680000500); + cm.sendOk("Goodbye. I hope you enjoyed the wedding!"); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201022.js b/scripts/npc/world0/9201022.js new file mode 100644 index 0000000000..45435d7803 --- /dev/null +++ b/scripts/npc/world0/9201022.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC: Thomas Swift + * Maps: 100000000, 680000000 + * Author: Moogra + * Purpose: Amoria warper. +*/ + +status = -1; + +function start() { + if (cm.getPlayer().getMapId() == 100000000) + cm.sendYesNo("I can take you to the Amoria Village. Are you ready to go?"); + else + cm.sendYesNo("I can take you back to Henesys. Are you ready to go?"); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + if (mode == 0) + cm.sendOk("Ok, feel free to hang around until you're ready to go!"); + cm.dispose(); + return; + } + if (status == 0) + cm.sendNext("I hope you had a great time! See you around!"); + else if (status == 1) { + if (cm.getPlayer().getMapId() == 100000000) + cm.warp(680000000, 0); + else + cm.warp(100000000, 5); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201023.js b/scripts/npc/world0/9201023.js new file mode 100644 index 0000000000..51a52a113a --- /dev/null +++ b/scripts/npc/world0/9201023.js @@ -0,0 +1,142 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *9201023 - Nana(K) + *@author Jvlaple + */ +var status = -1; + + +function start() { + cm.sendOk("Your skills have been added!"); + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (cm.getPlayer().getJob().getId() > 2000) { + if (cm.getPlayer().getSkillLevel(21001003) < 1) + cm.teachSkill(21001003, 0, 20,-1); // Pole Arm Booster + if (cm.getPlayer().getSkillLevel(21100004) < 1) + cm.teachSkill(21100004,0, 20,-1); // Combo Smash + if (cm.getPlayer().getSkillLevel(21100005) < 1) + cm.teachSkill(21100005,0, 20,-1); // Combo Drain + if (cm.getPlayer().getSkillLevel(21100000) < 1) + cm.teachSkill(21100000,0, 20,-1); // Pole Arm Mastery + if (cm.getPlayer().getSkillLevel(21100002) < 1) + cm.teachSkill(21100002,0, 30,-1); // Final Charge + if (cm.getPlayer().getSkillLevel(21110002) < 1) + cm.teachSkill(21110002,0, 20,-1); // Full Swing + if (cm.getPlayer().getSkillLevel(21110002) > 1) + cm.teachSkill(21110007, cm.getPlayer().getSkillLevel(21110002), 20,-1); // Full Swing + if (cm.getPlayer().getSkillLevel(21110002) > 1) + cm.teachSkill(21110008, cm.getPlayer().getSkillLevel(21110002), 20,-1); // Full Swing + } else if (cm.getPlayer().getJob().getId() == 232) { + if (cm.getPlayer().getSkillLevel(2321008) < 1) + cm.teachSkill(2321008, 0, 10,-1); // Genesis + if (cm.getPlayer().getSkillLevel(2321006) < 1) + cm.teachSkill(2321006, 0, 10,-1); // res + } else if (cm.getPlayer().getJob().getId() == 112) { + if (cm.getPlayer().getSkillLevel(1121006) < 1) + cm.teachSkill(1121006, 0, 10,-1); // pali rush + if (cm.getPlayer().getSkillLevel(1121002) < 1) + cm.teachSkill(1121002, 0, 10,-1); // power stance + } else if (cm.getPlayer().getJob().getId() == 122) { + if (cm.getPlayer().getSkillLevel(1221007) < 1) + cm.teachSkill(1221007, 0, 10,-1); // hero rush + if (cm.getPlayer().getSkillLevel(1221002) < 1) + cm.teachSkill(1221002, 0, 10,-1); // power stance + } else if (cm.getPlayer().getJob().getId() == 132) { + if (cm.getPlayer().getSkillLevel(1320006) < 1) + cm.teachSkill(1320006, 0, 10,-1); // Berzerk + if (cm.getPlayer().getSkillLevel(1321003) < 1) + cm.teachSkill(1321003, 0, 10,-1); // DrK Rush + if (cm.getPlayer().getSkillLevel(1321002) < 1) + cm.teachSkill(1321002, 0, 10,-1); // power stance + } else if (cm.getPlayer().getJob().getId() == 312) { + if (cm.getPlayer().getSkillLevel(3121008) < 1) + cm.teachSkill(3121008, 0, 10,-1); // Concentrate + } else if (cm.getPlayer().getJob().getId() == 512) { + if (cm.getPlayer().getSkillLevel(5121003) < 1) + cm.teachSkill(5121003, 0, 10,-1); // super transformation + if (cm.getPlayer().getSkillLevel(5121004) < 1) + cm.teachSkill(5121004, 0, 10,-1); // demo + if (cm.getPlayer().getSkillLevel(5121005) < 1) + cm.teachSkill(5121005, 0, 10,-1); // snatch + } else if (cm.getPlayer().getJob().getId() == 522) { + if (cm.getPlayer().getSkillLevel(5221006) < 1) + cm.teachSkill(5221006, 0, 10,-1); // ship + if (cm.getPlayer().getSkillLevel(5221007) < 1) + cm.teachSkill(5221007, 0, 10,-1); // cannon + if (cm.getPlayer().getSkillLevel(5221008) < 1) + cm.teachSkill(5221008, 0, 10,-1); // torpedo + if (cm.getPlayer().getSkillLevel(5221009) < 1) + cm.teachSkill(5221009, 0, 10,-1); // hypno + if (cm.getPlayer().getSkillLevel(5221003) < 1) + cm.teachSkill(5221003, 0, 10,-1); // air strike + } else if (cm.getPlayer().getJob().getId() == 422) { + if (cm.getPlayer().getSkillLevel(4221001) < 1) + cm.teachSkill(4221001, 0, 10,-1); // assassinate + if (cm.getPlayer().getSkillLevel(4221006) < 1) + cm.teachSkill(4221006, 0, 10,-1); // smoke screen + } else if (cm.getPlayer().getJob().getId() == 222) { + if (cm.getPlayer().getSkillLevel(2221007) < 1) + cm.teachSkill(2221007, 0, 10,-1); // blizzard + } else if (cm.getPlayer().getJob().getId() == 212) { + if (cm.getPlayer().getSkillLevel(2121007) < 1) + cm.teachSkill(2121007, 0, 10,-1); // meteor + + } + cm.dispose(); + /* + if (cm.getPlayer().getMarriageQuestLevel() == 1 || cm.getPlayer().getMarriageQuestLevel() == 52) { + if (!cm.haveItem(4000015, 40)) { + if (status == 0) { + cm.sendNext("Hey, you look like you need proofs of love? I can get them for you."); + } else if (status == 1) { + cm.sendNext("All you have to do is bring me 40 #bHorned Mushroom Caps#k."); + cm.dispose(); + } + } else { + if (status == 0) { + cm.sendNext("Wow, you were quick! Heres the proof of love..."); + cm.gainItem(4000015, -40) + cm.gainItem(4031367, 1); + cm.dispose(); + } + } + } else { + cm.sendOk("Hi, I'm Nana the love fairy... Hows it going?"); + cm.dispose(); + }*/ + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201024.js b/scripts/npc/world0/9201024.js new file mode 100644 index 0000000000..c70634b9da --- /dev/null +++ b/scripts/npc/world0/9201024.js @@ -0,0 +1,65 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *9201024 - Nana(E) + *@author Jvlaple + */ + +function start() { + cm.sendOk("Hi, I'm Nana the love fairy... How's it going?"); + cm.dispose(); +} +// +//function action(mode, type, selection) { +// if (mode == -1) { +// cm.dispose(); +// } else { +// if (mode == 0 && status == 0) { +// cm.dispose(); +// return; +// } +// if (mode == 1) +// status++; +// else +// status--; +// if (cm.getPlayer().getMarriageQuestLevel() == 1 || cm.getPlayer().getMarriageQuestLevel() == 52) { +// if (!cm.haveItem(4003005, 20)) { +// if (status == 0) { +// cm.sendNext("Hey, you look like you need proofs of love? I can get them for you."); +// } else if (status == 1) { +// cm.sendNext("All you have to do is bring me 20 #bSoft Feathers#k."); +// cm.dispose(); +// } +// } else { +// if (status == 0) { +// cm.sendNext("Wow, you were quick! Heres the proof of love..."); +// cm.gainItem(4003005, -20) +// cm.gainItem(4031368, 1); +// cm.dispose(); +// } +// } +// } else { +// cm.sendOk("Hi, I'm Nana the love fairy... Hows it going?"); +// cm.dispose(); +// } +// } +//} \ No newline at end of file diff --git a/scripts/npc/world0/9201025.js b/scripts/npc/world0/9201025.js new file mode 100644 index 0000000000..26b0e72564 --- /dev/null +++ b/scripts/npc/world0/9201025.js @@ -0,0 +1,65 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *9201025 - Nana(O) + *@author Jvlaple + */ + +function start() { + cm.sendOk("Hi, I'm Nana the love fairy... Hows it going?"); + cm.dispose(); +} +// +//function action(mode, type, selection) { +// if (mode == -1) { +// cm.dispose(); +// } else { +// if (mode == 0 && status == 0) { +// cm.dispose(); +// return; +// } +// if (mode == 1) +// status++; +// else +// status--; +// if (cm.getPlayer().getMarriageQuestLevel() == 1 || cm.getPlayer().getMarriageQuestLevel() == 52) { +// if (!cm.haveItem(4000083, 20)) { +// if (status == 0) { +// cm.sendNext("Hey, you look like you need proofs of love? I can get them for you."); +// } else if (status == 1) { +// cm.sendNext("All you have to do is bring me 20 #bJr. Sentinel Pieces.#k."); +// cm.dispose(); +// } +// } else { +// if (status == 0) { +// cm.sendNext("Wow, you were quick! Heres the proof of love..."); +// cm.gainItem(4000083, -20) +// cm.gainItem(4031369, 1); +// cm.dispose(); +// } +// } +// } else { +// cm.sendOk("Hi, I'm Nana the love fairy... Hows it going?"); +// cm.dispose(); +// } +// } +//} \ No newline at end of file diff --git a/scripts/npc/world0/9201026.js b/scripts/npc/world0/9201026.js new file mode 100644 index 0000000000..7e5a8b7610 --- /dev/null +++ b/scripts/npc/world0/9201026.js @@ -0,0 +1,65 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *9201026 - Nana(L) + *@author Jvlaple + */ + +function start() { + cm.sendOk("Hi, I'm Nana the love fairy... How's it going?"); + cm.dispose(); +} +// +//function action(mode, type, selection) { +// if (mode == -1) { +// cm.dispose(); +// } else { +// if (mode == 0 && status == 0) { +// cm.dispose(); +// return; +// } +// if (mode == 1) +// status++; +// else +// status--; +// if (cm.getPlayer().getMarriageQuestLevel() == 1 || cm.getPlayer().getMarriageQuestLevel() == 52) { +// if (!cm.haveItem(4000106, 30)) { +// if (status == 0) { +// cm.sendNext("Hey, you look like you need proofs of love? I can get them for you."); +// } else if (status == 1) { +// cm.sendNext("All you have to do is bring me 30 #bTeddy Cotton#k."); +// cm.dispose(); +// } +// } else { +// if (status == 0) { +// cm.sendNext("Wow, you were quick! Heres the proof of love..."); +// cm.gainItem(4000106, -30) +// cm.gainItem(4031370, 1); +// cm.dispose(); +// } +// } +// } else { +// cm.sendOk("Hi, I'm Nana the love fairy... Hows it going?"); +// cm.dispose(); +// } +// } +//} \ No newline at end of file diff --git a/scripts/npc/world0/9201027.js b/scripts/npc/world0/9201027.js new file mode 100644 index 0000000000..dba1fc6694 --- /dev/null +++ b/scripts/npc/world0/9201027.js @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *9201027 - Nana(P) + *@author Jvlaple + */ + +function start() { + cm.sendOk("Hi, I'm Nana the love fairy... How's it going?"); + cm.dispose(); +} + +//function action(mode, type, selection) { +// if (mode == -1) { +// cm.dispose(); +// } else { +// if (mode == 0 && status == 0) { +// cm.dispose(); +// return; +// } +// if (mode == 1) +// status++; +// else +// status--; +// if (cm.getPlayer().getMarriageQuestLevel() == 1 || cm.getPlayer().getMarriageQuestLevel() == 52) { +// if (!cm.haveItem(4000018, 40)) { +// if (status == 0) { +// cm.sendNext("Hey, you look like you need proofs of love? I can get them for you."); +// } else if (status == 1) { +// cm.sendOk("All you have to do is bring me 40 #bFirewood#k."); +// cm.dispose(); +// } +// } else { +// if (status == 0) { +// cm.sendNext("Wow, you were quick! Heres the proof of love..."); +// cm.gainItem(4000018, -40) +// cm.gainItem(4031371, 1); +// cm.dispose(); +// } +// } +// } +// else { +// cm.sendOk("Hi, I'm Nana the love fairy... Hows it going?"); +// cm.dispose(); +// } +// } +//} \ No newline at end of file diff --git a/scripts/npc/world0/9201039.js b/scripts/npc/world0/9201039.js new file mode 100644 index 0000000000..baf63f8692 --- /dev/null +++ b/scripts/npc/world0/9201039.js @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +var status = 0; +var mhair = Array(30270, 30240, 30020, 30000, 30132, 30192, 30032, 30112, 30162); +var fhair = Array(31150, 31250, 31310, 31050, 31050, 31030, 31070, 31091, 31001); +var hairnew = Array(); + +function start() { + if (cm.isQuestCompleted(8860) && !cm.haveItem(4031528)) { + cm.sendNext("I've already done your hair once as a trade-for-services, sport. You'll have to snag an EXP Hair coupon from the Cash Shop if you want to change it again!"); + cm.dispose(); + } else + cm.sendYesNo("Ready for an awesome hairdo? I think you are! Just say the word, and we'll get started!"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else if (mode == 0) { + cm.sendNext("Ok, I'll give you a minute."); + cm.dispose(); + return; + } + status++; + if (status == 1) { + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i]); + else + for(var j = 0; j < fhair.length; j++) + hairnew.push(fhair[j]); + cm.sendNext("Here we go!"); + } else { + if (cm.haveItem(4031528)) { + cm.gainItem(4031528, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendNextPrev("Not bad, if I do say so myself! I knew those books I studied would come in handy..."); + cm.dispose(); + } else { + cm.sendNext("Hmmm...are you sure you have our designated free coupon? Sorry but no haircut without it."); + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/9201042.js b/scripts/npc/world0/9201042.js new file mode 100644 index 0000000000..0b7d73002a --- /dev/null +++ b/scripts/npc/world0/9201042.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 9201042); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201043.js b/scripts/npc/world0/9201043.js new file mode 100644 index 0000000000..1e219a98ad --- /dev/null +++ b/scripts/npc/world0/9201043.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Amos the Strong - Entrance +**9201043 +**@author Jvlaple +*/ + +var status = 0; +var MySelection = -1; + +function start() { + cm.sendSimple("My name is Amos the Strong. What would you like to do?\r\n#b#L0#Enter the Amorian Challenge!!#l\r\n#L1#Trade 10 Keys for a Ticket!#l\r\n#k"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (status >= 0 && mode == 0) { + cm.sendOk("Ok come back when your'e ready."); + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1 && selection == 0) { + if (cm.haveItem(4031592, 1) && cm.isMarried()==1) { + cm.sendYesNo("So you would like to enter the #bEntrance#k?"); + MySelection = selection; + } else { + cm.sendOk("You must have an Entrance Ticket to enter, and you have to be married."); + cm.dispose(); + } + } else if (status == 1 && selection == 1) { + if (cm.haveItem(4031593, 10)) { + cm.sendYesNo("So you would like a Ticket?"); + MySelection = selection; + } else { + cm.sendOk("Please get me 10 Keys first!"); + cm.dispose(); + } + } else if (status == 2 && MySelection == 0) { + cm.warp(670010100, 0); + cm.gainItem(4031592, -1) + cm.dispose(); + } else if (status == 2 && MySelection == 1) { + cm.gainItem(4031593, -10); + cm.gainItem(4031592, 1); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201048.js b/scripts/npc/world0/9201048.js new file mode 100644 index 0000000000..70652ae6e1 --- /dev/null +++ b/scripts/npc/world0/9201048.js @@ -0,0 +1,71 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Jvlaple */ + +var minLevel = 40; +var maxLevel = 255; +var minPlayers = 0; +var maxPlayers = 6; +//var minMarried = 6; +//var minGirls = 1; +//var minBoys = 1; + +function start() { + if (cm.getParty() == null) { + cm.sendOk("Please come back to me after you've formed a party."); + cm.dispose(); + return; + } + if (!cm.isLeader()) { + cm.sendOk("You are not the party leader."); + cm.dispose(); + } else { + var party = cm.getParty().getMembers(); + var next = true; + var levelValid = 0; + var inMap = 0; + if (party.size() < minPlayers || party.size() > maxPlayers) + next = false; + else { + for (var i = 0; i < party.size() && next; i++) { + if ((party.get(i).getLevel() >= minLevel) && (party.get(i).getLevel() <= maxLevel)) + levelValid++; + if (party.get(i).getMapid() == cm.getPlayer().getMapId()) + inMap++; + } + if (levelValid < minPlayers || inMap < minPlayers) + next = false; + } + if (next) { + var em = cm.getEventManager("AmoriaPQ"); + if (em == null) + cm.dispose(); + else + em.startInstance(cm.getParty(),cm.getPlayer().getMap()); + cm.dispose(); + } + else { + cm.sendOk("Your party is not a party of six. Make sure all your members are present and qualified to participate in this quest. I see #b" + levelValid.toString() + " #kmembers are in the right level range, and #b" + inMap.toString() + "#k are in my map. If this seems wrong, #blog out and log back in,#k or reform the party."); + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201049.js b/scripts/npc/world0/9201049.js new file mode 100644 index 0000000000..eac86c25bd --- /dev/null +++ b/scripts/npc/world0/9201049.js @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + Ames the Wise +-- By --------------------------------------------------------------------------------------------- + Xelkin +-- Edited by -------------------------------------------------------------------------------------- + Angel (get31720 ragezone +-- Extra Info ------------------------------------------------------------------------------------- + Fixed by [happydud3 (BENG)] & [XotiCraze] +-- Fixed Dispose ---------------------------------------------------------------------------------- + Fixed by Moogra +--------------------------------------------------------------------------------------------------- +**/ +var status = -1; + +function start() { + var rings = new Array(1112806, 1112803, 1112807, 1112809); + var hasRing = false; + for (var x = 0; x < rings.length && !hasRing; x++) + if (cm.haveItem(rings[x])) { + hasRing = true; + break; + } + if (hasRing) + cm.sendNext("You've reached the end of the wedding. You will recieve an Onyx Chest for Bride and Groom and an Onyx Chest. Exchange them at Pila, she is at the top of Amoria."); + else if (cm.haveItem(4000313)) { + cm.sendNext("Wow the end of the wedding already ? Good bye then.!"); + status = 20; + } else { + cm.sendNext("You do not have the Gold Maple Leaf and you do not have a wedding ring so I will take you to Amoria."); + status = 21; + } +} + +function action(mode, type, selection) { + if (mode < 1) { + cm.sendOk("Goodbye then"); + cm.dispose(); + } else { + status++; + if (status == 1) { + cm.gainItem(4031424,1); + cm.gainItem(4031423,1); + cm.dispose(); + } else if (status == 21) { + cm.gainItem(4000313,-1); + cm.gainItem(4031423,1); + } + cm.warp(680000000); + cm.dispose(); + } +} diff --git a/scripts/npc/world0/9201050.js b/scripts/npc/world0/9201050.js new file mode 100644 index 0000000000..f687b4a389 --- /dev/null +++ b/scripts/npc/world0/9201050.js @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Icebyrd Slimm + Masteria: New Leaf City (600000000) + Handles the quiz quest. (4900) + */ + +var minlevel = 10; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if (!cm.isQuestStarted(4900)){ + var selStr = "What up! Name's Icebyrd Slimm, mayor of New Leaf City! Happy to see you accepted my invite. So, what can I do for you?#b" + var info = new Array("What is this place?","Who is Professor Foxwit?","What's a Foxwit Door?","Where are the MesoGears?","What is the Krakian Jungle?","What's a Gear Portal?","What do the street signs mean?","What's the deal with Jack Masque?","Lita Lawless looks like a tough cookie, what's her story?","When will new boroughs open up in the city?","I want to take the quiz!"); + for (var i = 0; i < info.length; i++) + selStr += "\r\n#L" + i + "# " + info[i] + "#l"; + cm.sendSimple(selStr); + } + else if (!cm.getQuestStarted(4911)){ + cm.sendNext("Good job! You've solved all of my questions about NLC. Enjoy of your trip!"); + cm.dispose(); + return; + } + else { + cm.sendNext("Hey, pay attention, I'm trying to quiz you on another question!"); + cm.dispose(); + return; + } + } else if(status == 1 && !cm.isQuestStarted(4900)) { + switch (selection) { + case 0: + cm.sendNext("I've always dreamed of building a city. Not just any city, but one where everyone was welcome. I used to live in Kerning City, so I decided to see if I could create a city. As I went along in finding the means to do so, I encountered many people, some of whom I've come to regard as friends. Like Professor Foxwit-he's our resident genius; saved him from a group of man-eating plants. Jack Masque is an old hunting buddy from Amoria-almost too smooth of a talker for his own good. Lita and I are old friends from Kerning City-she's saved me a few times with that weapon of hers; so I figured she was a perfect choice for Town Sheriff. It took a bit of persuasion, but she came to believe her destiny lies here. About our resident explorer, Barricade came searching for something; he agreed to bring whatever he found to the museum. I'd heard stories about him and his brother when I was still in Kerning City. And Elpam...well, let's just say he's not from around here. At all. We've spoken before, and he seems to mean well, so I've allowed him to stay. I just realized that I've rambled quite a bit! What else would you like to know?"); + status -= 2; + break; + case 1: + cm.sendNext("A pretty spry guy for being 97. He's a time-traveller I ran into outside the city one day. Old guy had a bit of trouble with some jungle creatures-like they tried to eat him. In return for me saving him, he agreed to build a time museum. I get the feeling that he's come here for another reason, as he's mentioned more than a few times that New Leaf City has an interesting role to play in the future. Maybe you can find out a bit more..."); + status -= 2; + break; + case 2: + cm.sendNext("Heh, I asked the same thing when I saw the Professor building them. They're warp points. Pressing Up will warp you to another location. I recommend getting the hang of them, they're our transport system."); + status -= 2; + break; + case 3: + cm.sendNext("The MesoGears are beneath Bigger Ben. It's a monster-infested section of Bigger Ben that Barricade discovered. It seems to reside in a separate section of the tower-quite strange if you ask me. I hear he needs a bit of help exploring it, you should see him. Be careful though, the Wolf Spiders in there are no joke."); + status -= 2; + break; + case 4: + cm.sendNext("Ah...well. The Krakian Jungle is located on the outskirts of New Leaf City. Many new and powerful creatures roam those areas, so you'd better be prepared to fight if you head out there. It's at the right end of town. Rumors abound that the Jungle leads to a lost city, but we haven't found anything yet."); + status -= 2; + break; + case 5: + cm.sendNext("Well, when John found himself in the MesoGears portion of Bigger Ben, he stood on one and went to another location. However, he could only head back and forth-they don't cycle through like the Foxwit Door. Ancient tech for you."); + status -= 2; + break; + case 6: + cm.sendNext("Well, you'll see them just about everywhere. They're areas under construction. The Red lights mean it's not finished, but the Green lights mean it's open. Check back often, we're always building!"); + status -= 2; + break; + case 7: + cm.sendNext("Ah, Jack. You know those guys that are too cool for school? The ones who always seem to get away with everything? AND get the girl? Well, that's Jack, but without the girl. He thinks he blew his chance, and began wearing that mask to hide his true identity. My lips are sealed about who he is, but he's from Amoria. He might tell you a bit more if you ask him."); + status -= 2; + break; + case 8: + cm.sendNext("I've known Lita for a while, though we've just recently rekindled our friendship. I didn't see her for quite a bit, but I understand why. She trained for a very, very long time as a Thief. Matter of fact, that's how we first met! I was besieged by a group of wayward Mushrooms, and she jumped in to help. When it was time to pick a sheriff, it was a no-brainer. She's made a promise to help others in their training and protect the city, so if you're interested in a bit of civic duty, speak with her."); + status -= 2; + break; + case 9: + cm.sendNext("Soon, my friend. Even though you can't see them, the city developers are hard at work. When they're ready, we'll open them. I know you're looking forward to it and so am I!"); + status -= 2; + break; + case 10: + if (cm.getLevel() >= minlevel) { + cm.sendNext("No problem. I'll give you something nice if you answer them correctly!"); + cm.startQuest(4900); + } + else + cm.sendNext("Eager, are we? How about you explore a bit more before I let you take the quiz?"); + cm.dispose(); + break; + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201056.js b/scripts/npc/world0/9201056.js new file mode 100644 index 0000000000..4ecb7d89e6 --- /dev/null +++ b/scripts/npc/world0/9201056.js @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +var status = 0; +var goToMansion = false; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode != 1) { + if (mode == 0) + cm.sendOk("Alright, see you next time."); + cm.dispose(); + } + else { + status++; + if (cm.getPlayer().getMapId() == 682000000) { + if (status == 0) + cm.sendSimple("Where to, boss? \r\n#L0#New Leaf City#l\r\n#L1#Haunted Mansion#l"); + else if (status == 1) { + if (selection == 0) + cm.sendYesNo("You want to go to New Leaf City?"); + else { + goToMansion = true; + cm.sendYesNo("You're sure you want to enter the Mansion?"); + } + } else if (status == 2) { + cm.warp(goToMansion ? 682000100 : 600000000, 0); + cm.dispose(); + } + } else { + if (status == 0) { + cm.sendYesNo("Would you like to go to the Haunted Mansion?"); + } else if (status == 1) { + cm.warp(682000000, 0); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201057.js b/scripts/npc/world0/9201057.js new file mode 100644 index 0000000000..0916b2f4e1 --- /dev/null +++ b/scripts/npc/world0/9201057.js @@ -0,0 +1,24 @@ +function start() { + if (cm.c.getPlayer().getMapId() == 103000100 || cm.c.getPlayer().getMapId() == 600010001) + cm.sendYesNo("The ride to " + (cm.c.getPlayer().getMapId() == 103000100 ? "New Leaf City of Masteria" : "Kerning City of Victoria Island") + " takes off every minute, beginning on the hour, and it'll cost you #b5000 mesos#k. Are you sure you want to purchase #b#t" + (4031711 + parseInt(cm.c.getPlayer().getMapId() / 300000000)) + "##k?"); + else if (cm.c.getPlayer().getMapId() == 600010002 || cm.c.getPlayer().getMapId() == 600010004) + cm.sendYesNo("Do you want to leave before the train start? There will be no refund."); +} + +function action(mode, type, selection) { + if(mode != 1){ + cm.dispose(); + return; + } + if (cm.c.getPlayer().getMapId() == 103000100 || cm.c.getPlayer().getMapId() == 600010001){ + if(cm.getMeso() >= 5000){ + cm.gainMeso(-5000); + cm.gainItem(4031711 + parseInt(cm.c.getPlayer().getMapId() / 300000000), 1); + cm.sendNext("There you go."); + }else + cm.sendNext("You don't have enough mesos."); + }else{ + cm.warp(cm.c.getPlayer().getMapId() == 600010002 ? 600010001 : 103000100); + } + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201061.js b/scripts/npc/world0/9201061.js new file mode 100644 index 0000000000..f5ad8c8a2a --- /dev/null +++ b/scripts/npc/world0/9201061.js @@ -0,0 +1,81 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Bomack + NLC Random Eye Color Change. +*/ +var status = 0; +var price = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hi, there~! I'm Bomack. If you have a #b#t5152035##k, I can prescribe the right kind of cosmetic lenses for you. Now, what would you like to do?\r\n#L1#I would like to buy a #b#t5152035##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152035, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use #b#t5152035##k and really make the change to your eyes?"); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152035) == true){ + cm.gainItem(5152035, -1); + cm.setFace(colors[Math.floor(Math.random() * colors.length)]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + } +} diff --git a/scripts/npc/world0/9201062.js b/scripts/npc/world0/9201062.js new file mode 100644 index 0000000000..e1e959d333 --- /dev/null +++ b/scripts/npc/world0/9201062.js @@ -0,0 +1,81 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* J.J. + NLC VIP Eye Color Change. +*/ +var status = 0; +var price = 1000000; +var colors = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Hey, there~! I'm J.J.! I'm in charge of the cosmetic lenses here at NLC Shop! If you have a #b#t5152036##k, I can get you the best cosmetic lenses you have ever had! Now, what would you like to do?\r\n#L1#I would like to buy a #b#t5152036##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); + } else if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152036, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + cm.dispose(); + } else if (selection == 2) { + if (cm.getPlayer().getGender() == 0) { + var current = cm.getPlayer().getFace() % 100 + 20000; + } + if (cm.getPlayer().getGender() == 1) { + var current = cm.getPlayer().getFace() % 100 + 21000; + } + colors = Array(); + colors = Array(current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700); + cm.sendStyle("With our specialized machine, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Choose the style of your liking.", colors); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152036) == true){ + cm.gainItem(5152036, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else { + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + } + } +} diff --git a/scripts/npc/world0/9201063.js b/scripts/npc/world0/9201063.js new file mode 100644 index 0000000000..028fbfcb67 --- /dev/null +++ b/scripts/npc/world0/9201063.js @@ -0,0 +1,115 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Ari + NLC Random Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30250, 30110, 30230, 30050, 30280, 30410, 30730, 30160, 30200, 30440, 30360, 30740, 30400); +var fhair = Array(31150, 31310, 31220, 31300, 31260, 31160, 31730, 31410, 31410, 31720, 31560, 31450); +var hairnew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("I'm Ari the assistant. If you have #b#t5150030##k or #b#t5151025##k by any chance, then how about letting me change your hairdo?\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150030##t5150030##l\r\n#L2#Dye your hair: #i5151025##t5151025##l"); + } else if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150030##t5150030##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151025##t5151025##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mhair.length; i++) { + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fhair.length; i++) { + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + } + } + cm.sendYesNo("If you use the EXP coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that I came up with. Are you going to use #b#t5150030##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) { + haircolor.push(current + i); + } + cm.sendYesNo("If you use a regular coupon your hair will change RANDOMLY. Do you still want to use #b#t5151025##k and change it up?"); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150030)){ + cm.gainItem(5150030, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + } + if (beauty == 2){ + if (cm.haveItem(5151025)){ + cm.gainItem(5151025, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else { + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150030, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151025, 1); + cm.sendOk("Enjoy!"); + } else { + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } + } +} diff --git a/scripts/npc/world0/9201064.js b/scripts/npc/world0/9201064.js new file mode 100644 index 0000000000..0e4955cc48 --- /dev/null +++ b/scripts/npc/world0/9201064.js @@ -0,0 +1,104 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Mani +NLC VIP Hair/Hair Color Change. +*/ +var status = 0; +var beauty = 0; +var hairprice = 1000000; +var haircolorprice = 1000000; +var mhair = Array(30250, 30110, 30230, 30050, 30280, 30410, 30730, 30160, 30200); +var fhair = Array(31150, 31310, 31220, 31300, 31260, 31160, 31730, 31410, 31410); +var hairnew = Array(); + +function start() { + cm.sendSimple("I'm the head of this hair salon Mani. If you have a #b#t5150031##k or a #b#t5151026##k, allow me to take care of your hairdo. Please choose the one you want.\r\n#L0#I want to buy a coupon!#l\r\n#L1#Haircut: #i5150031##t5150031##l\r\n#L2#Dye your hair: #i5151026##t5151026##l"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 0) { + beauty = 0; + cm.sendSimple("Which coupon would you like to buy?\r\n#L0#Haircut for " + hairprice + " mesos: #i5150031##t5150031##l\r\n#L1#Dye your hair for " + haircolorprice + " mesos: #i5151026##t5151026##l"); + } else if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + if (cm.getPlayer().getGender() == 1) + for(var i = 0; i < fhair.length; i++) + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + cm.sendStyle("I can totally change up your hairstyle and make it look so good. Why don't you change it up a bit? With #b#t5150031##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) + haircolor.push(current + i); + cm.sendStyle("I can totally change your haircolor and make it look so good. Why don't you change it up a bit? With #b#t5151026##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } + } + else if (status == 2){ + cm.dispose(); + if (beauty == 1){ + if (cm.haveItem(5150031)){ + cm.gainItem(5150031, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + if (beauty == 2){ + if (cm.haveItem(5151026) == true){ + cm.gainItem(5151026, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + if (beauty == 0){ + if (selection == 0 && cm.getMeso() >= hairprice) { + cm.gainMeso(-hairprice); + cm.gainItem(5150031, 1); + cm.sendOk("Enjoy!"); + } else if (selection == 1 && cm.getMeso() >= haircolorprice) { + cm.gainMeso(-haircolorprice); + cm.gainItem(5151026, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201065.js b/scripts/npc/world0/9201065.js new file mode 100644 index 0000000000..d4db084759 --- /dev/null +++ b/scripts/npc/world0/9201065.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Miranda +NLC Skin Change. +*/ +var status = 0; +var price = 1000000; +var skin = Array(0, 1, 2, 3, 4); + +function start() { + cm.sendSimple("Well, hello! Welcome to the NLC Skin-Care! Would you like to have a firm, tight, healthy looking skin like mine? With #b#t5153009##k, you can let us take care of the rest and have the kind of skin you've always wanted~!\r\n#L1#I would like to buy a #b#t5153009##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5153009, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + cm.dispose(); + } else if (selection == 2) + cm.sendStyle("With our specialized machine, you can see the way you'll look after the treatment PRIOR to the procedure. What kind of a look are you looking for? Go ahead and choose the style of your liking~!", skin); + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5153009)){ + cm.gainItem(5153009, -1); + cm.setSkin(skin[selection]); + cm.sendOk("Enjoy your new and improved skin!"); + } else + cm.sendOk("Um...you don't have the skin-care coupon you need to receive the treatment. Sorry, but I am afraid we can't do it for you..."); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201068.js b/scripts/npc/world0/9201068.js new file mode 100644 index 0000000000..c5b0098cdb --- /dev/null +++ b/scripts/npc/world0/9201068.js @@ -0,0 +1,54 @@ +status = -1; +close = false; +oldSelection = -1; +var em; + +function start() { + em = cm.getEventManager("Subway"); + var text = "Here's the ticket reader."; + var hasTicket = false; + if (cm.haveItem(4031713) && cm.getPlayer().getMapId() == 600010001){ + text += "\r\n#b#L0##t4031713#"; + hasTicket = true; + } + if(!hasTicket){ + cm.sendOk("It seems you don't have a ticket! You can buy one from Bell."); + cm.dispose(); + }else + cm.sendSimple(text); +} + +function action(mode, type, selection) { + status++; + if (mode != 1) { + if(mode == 0) + cm.sendNext("You must have some business to take care of here, right?"); + cm.dispose(); + return; + } + if (status == 0) { + if(selection == 0){ + if (em.getProperty("entry") == "true") + cm.sendYesNo("It looks like there's plenty of room for this ride. Please have your ticket ready so I can let you in. The ride will be long, but you'll get to your destination just fine. What do you think? Do you wants to get on this ride?"); + else{ + cm.sendNext("We will begin boarding 1 minute before the takeoff. Please be patient and wait for a few minutes. Be aware that the subway will take off right on time, and we stop receiving tickets 1 minute before that, so please make sure to be here on time."); + cm.dispose(); + } + } + oldSelection = selection; + }else if(status == 1){ + if (oldSelection == 0 && cm.haveItem(4031713)) { + if(em.getProperty("entry") == "true") { + cm.gainItem(4031713, -1); + cm.warp(600010002); + } + else { + cm.sendNext("We will begin boarding 1 minute before the takeoff. Please be patient and wait for a few minutes. Be aware that the subway will take off right on time, and we stop receiving tickets 1 minute before that, so please make sure to be here on time."); + } + } else { + cm.sendNext("Sorry, you need a ticket to enter!"); + } + + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201069.js b/scripts/npc/world0/9201069.js new file mode 100644 index 0000000000..92149e2eef --- /dev/null +++ b/scripts/npc/world0/9201069.js @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* V. Isage + NLC VIP Eye Change. +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012); +var fface = Array(21001, 21002, 21003, 21004, 21005, 21006, 21008, 21012, 21014, 21016); +var facenew = Array(); + +function start() { + cm.sendSimple("Well, hello! Welcome to the New Leaf City Plastic Surgery! Would you like to transform your face into something new? With a #b#t5152034##k, you can let us take care of the rest and have the face you've always wanted~!\r\n#L1#I would like to buy a #b#t5152034##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152034, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mface.length; i++) + facenew.push(mface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace()% 100)); + if (cm.getPlayer().getGender() == 1) + for(var i = 0; i < fface.length; i++) + facenew.push(fface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + cm.sendStyle("Let's see... I can totally transform your face into something new. Don't you want to try it? For #b#t5152034##k, you can get the face of your liking. Take your time in choosing the face of your preference.", facenew); + } + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152034)){ + cm.gainItem(5152034, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } +} diff --git a/scripts/npc/world0/9201070.js b/scripts/npc/world0/9201070.js new file mode 100644 index 0000000000..e3eed96002 --- /dev/null +++ b/scripts/npc/world0/9201070.js @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Nerbit + NLC Random Eye Change. +@TODO: Make this not sell tickets like in GMS +*/ +var status = 0; +var beauty = 0; +var price = 1000000; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012); +var fface = Array(21001, 21002, 21003, 21004, 21005, 21006, 21008, 21012, 21014, 21016); +var facenew = Array(); + +function start() { + cm.sendSimple("Hi, I pretty much shouldn't be doing this, but with a #b#t5152033##k, I will do it anyways for you. But don't forget, it will be random!\r\n#L1#I would like to buy a #b#t5152033##k for " + price + " mesos, please!#l\r\n\#L2#I already have a Coupon!#l"); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && status == 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 1) { + if (selection == 1) { + if(cm.getMeso() >= price) { + cm.gainMeso(-price); + cm.gainItem(5152033, 1); + cm.sendOk("Enjoy!"); + } else + cm.sendOk("You don't have enough mesos to buy a coupon!"); + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mface.length; i++) + facenew.push(mface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + if (cm.getPlayer().getGender() == 1) + for(var i = 0; i < fface.length; i++) + facenew.push(fface[i] + cm.getPlayer().getFace() % 1000 - (cm.getPlayer().getFace() % 100)); + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152033##k?"); + } + } else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152033)){ + cm.gainItem(5152033, -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } +} diff --git a/scripts/npc/world0/9201073.js b/scripts/npc/world0/9201073.js new file mode 100644 index 0000000000..2c23190e8e --- /dev/null +++ b/scripts/npc/world0/9201073.js @@ -0,0 +1,91 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@ Author : Raz +@ +@ NPC = Sgt.Anderson +@ Map = Abandoned Tower +@ NPC MapId = 922010100 +@ NPC Exit-MapId = 221024500 +@ + */ +//4001022 - PASS OF DIMENSION + +var status = 0; + +function start() { + cm.sendYesNo("Are you sure you want to leave?"); +} + +function action(mode, type, selection) { + if (mode == -1) //ExitChat + cm.dispose(); + else if (mode == 0) {//No + cm.sendOk("OK, Talk to me again if you want to leave here."); + cm.dispose(); + } else { //Regular Talk + if (mode == 1) + status++; + else + status--; + if (cm.getPlayer().getMap().getId() == 109050001) { + if(status == 0) + cm.sendNext("See ya."); + else if (status == 1){ + cm.warp(109060001); + cm.dispose(); + } + } else { + if (status == 1) + cm.sendNext("Ok, Bye!"); + else if (status == 2) { + var eim = cm.getPlayer().getEventInstance(); + if (eim == null) + cm.sendOk("Wait, Hey! how'd you get here?\r\nOh well you can leave anyways"); + else { + if(isLeader()){ + eim.disbandParty(); + cm.removeFromParty(4001008, eim.getPlayers()); + } else { + eim.leftParty(cm.getPlayer()); + cm.removeAll(4001008); + cm.removeAll(4031059); + cm.removeAll(4001102); + cm.removeAll(4001108); + } + cm.dispose(); + } + } else if (status == 3) { + cm.warp(109050001); + cm.removeAll(4001008); + cm.removeAll(4031059); + cm.removeAll(4001102); + cm.removeAll(4001108); + cm.dispose(); + } + } + } +} + +function isLeader(){ + return cm.getParty() == null ? false : cm.isLeader(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201079.js b/scripts/npc/world0/9201079.js new file mode 100644 index 0000000000..46d6decc60 --- /dev/null +++ b/scripts/npc/world0/9201079.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.warp(682000100, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201081.js b/scripts/npc/world0/9201081.js new file mode 100644 index 0000000000..3faf58d4a0 --- /dev/null +++ b/scripts/npc/world0/9201081.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 9201081); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201097.js b/scripts/npc/world0/9201097.js new file mode 100644 index 0000000000..5121900602 --- /dev/null +++ b/scripts/npc/world0/9201097.js @@ -0,0 +1,126 @@ +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Joko - Phantom Forest: Dead Man's Gorge(610010004) +-- By --------------------------------------------------------------------------------------------- + Ronan Lana +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Ronan Lana +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; +var eQuestChoices = new Array (4032007, 4032006, 4032009, 4032008, 4032007, 4032006, 4032009, 4032008); + +var eQuestPrizes = new Array(); + +eQuestPrizes[0] = new Array ([1002801,1], // Raven Ninja Bandana + [1462052,1], // Raven's Eye + [1462006,1], // Silver Crow + [1462009,1], // Gross Jaeger + [1452012,1], // Marine Arund + [1472031,1], // Black Mamba + [2044701,1], // Claw for ATT 60% + [2044501,1], // Bow for ATT 60% + [0, 750000]); // Mesos + +eQuestPrizes[1] = new Array ([1332077,1], // Raven's Beak + [1322062,1], // Crushed Skull + [1302068,1], // Onyx Blade + [4032016,1], // Tao of Sight + [2043001,1], // One Handed Sword for Att 60% + [2043201,1], // One Handed BW for Att 60% + [2044401,1], // Polearm for Att 60% + [2044301,1], // Spear for Att 60% + [0,1250000]); // Mesos + +eQuestPrizes[2] = new Array ([1472072,1], //Raven's Claw + [1332077,1], // Raven's Beak + [1402048,1], // Raven's Wing + [1302068,1], // Onyx Blade + [4032017,1], // Tao of Harmony + [4032015,1], // Tao of Shadows + [2043023,1], // One-Handed Sword for Att 100%[2] + [2043101,1], // One-Handed Axe for Att 60% + [2043301,1], // Dagger for Att 60% + [0,2500000]); // Mesos + +eQuestPrizes[3] = new Array ([1002801,1], //Raven Ninja Bandana + [1382008,1], // Kage + [1382006,1], // Thorns + [4032016,1], // Tao of Sight + [4032015,1], // Tao of Shadows + [2043701,1], // Wand for Magic Att 60% + [2043801,1], // Staff for Magic Att 60% + [0,1750000]); // Mesos + +eQuestPrizes[4] = new Array ([0,3500000]); // Mesos +eQuestPrizes[5] = new Array ([0,3500000]); // Mesos +eQuestPrizes[6] = new Array ([0,3500000]); // Mesos +eQuestPrizes[7] = new Array ([0,3500000]); // Mesos + +var requiredItem = 0; +var lastSelection = 0; +var prizeItem = 0; +var prizeQuantity = 0; +var itemSet; +var qnt; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 0) { + cm.sendOk("Hmmm...it shouldn't be a bad deal for you. Come see me at the right time and you may get a much better item to be offered. Anyway, let me know when you have a change of heart."); + cm.dispose(); + return; + } + + status++; + if (status == 0) { // first interaction with NPC + cm.sendNext("Hey, got a little bit of time? Well, my job is to collect items here and sell them elsewhere, but these days the monsters have become much more hostile so it's been difficult to getting good items ... What do you think? Do you want to do some business with me?"); + } else if (status == 1) { + cm.sendYesNo("The deal is simple. You get me something I need, I get you something you need. The problem is, I deal with a whole bunch of people, so the items I have to offer may change every time you see me. What do you think? Still want to do it?"); + } else if (status == 2) { + var eQuestChoice = makeChoices(eQuestChoices); + cm.sendSimple(eQuestChoice); + } else if (status == 3){ + lastSelection = selection; + requiredItem = eQuestChoices[selection]; + + if(selection / 4 == 0) qnt = 50; + else qnt=25; + + cm.sendYesNo("Let's see, you want to trade your #b" + qnt + " #t" + requiredItem + "##k with my stuff right? Before trading make sure you have an empty slot available on your use or etc. inventory. Now, do you want to trade with me?"); + }else if (status == 4){ + itemSet = (Math.floor(Math.random() * eQuestPrizes[lastSelection].length)); + reward = eQuestPrizes[lastSelection]; + prizeItem = reward[itemSet][0]; + prizeQuantity = reward[itemSet][1]; + if(!cm.haveItem(requiredItem,qnt)){ + cm.sendOk("Hmmm... are you sure you have #b" + qnt + " #t" + requiredItem + "##k? If so, then please check and see if your item inventory is full or not."); + } else if(prizeItem == 0) { + cm.gainItem(requiredItem,-qnt); + cm.gainMeso(prizeQuantity); + cm.sendOk("For your #b" + qnt + " #t"+requiredItem+"##k, here's #b" + prizeQuantity + " mesos#k. What do you think? Do you like the items I gave you in return? I plan on being here for a while, so if you gather up more items, I'm always open for a trade ..."); + } else if(!cm.canHold(prizeItem)){ + cm.sendOk("Your use and etc. inventory seems to be full. You need the free spaces to trade with me! Make room, and then find me."); + } else { + cm.gainItem(requiredItem,-qnt); + cm.gainItem(prizeItem, prizeQuantity); + cm.sendOk("For your #b" + qnt + " #t"+requiredItem+"##k, here's my #b"+prizeQuantity+" #t"+prizeItem+"##k. What do you think? Do you like the items I gave you in return? I plan on being here for a while, so if you gather up more items, I'm always open for a trade ..."); + } + cm.dispose(); + } +} + +function makeChoices(a){ + var result = "Ok! First you need to choose the item that you'll trade with. The better the item, the more likely the chance that I'll give you something much nicer in return.\r\n"; + var qnty = [50, 25]; + + for (var x = 0; x< a.length; x++){ + result += " #L" + x + "##v" + a[x] + "# #b#t" + a[x] + "# #kx " + qnty[Math.floor(x/4)] + "#l\r\n"; + } + return result; +} \ No newline at end of file diff --git a/scripts/npc/world0/9201113.js b/scripts/npc/world0/9201113.js new file mode 100644 index 0000000000..7eef263655 --- /dev/null +++ b/scripts/npc/world0/9201113.js @@ -0,0 +1,152 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Adobis + * + *@author SharpAceX (Alan) + */ +importPackage(Packages.server.expeditions); +importPackage(Packages.tools); +importPackage(Packages.scripting.event); + +var status = 0; +var expedition; +var player; +var em; +var cwkpq = MapleExpeditionType.CWKPQ; +var list = "What would you like to do?#b\r\n\r\n#L1#View current Expedition members#l\r\n#L2#Start the fight!#l\r\n#L3#Stop the expedition.#l"; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + + player = cm.getPlayer(); + expedition = cm.getExpedition(cwkpq); + em = cm.getEventManager("CWKPQ"); + + if (mode < 1) { + cm.dispose(); + return; + } + if (status == 0) { + if (player.getClient().getChannel() != 1) { //Only channel 1 + cm.sendOk("Sorry, Crimsonwood Keep Party Quest may only be attempted on #bChannel 1#k."); + cm.dispose(); + } else if (player.getLevel() < cwkpq.getMinLevel() && player.getLevel() > cwkpq.getMaxLevel()) { //Don't fit requirement + cm.sendOk("You do not meet the criteria to take attempt Crimsonwood Keep Party Quest!"); + cm.dispose(); + } else if (expedition == null) { //Start an expedition + cm.sendSimple("Would you like to assemble a team to attempt a #rCrimsonwood Keep Party Quest#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); + status = 1; + } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped + cm.sendSimple(list); + status = 2; + } else if (expedition.isRegistering()) { //If the expedition is registering + if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient + cm.sendOk("You have already registered for the expedition. Please wait for " + expedition.getLeader().getName() + " to begin the expedition."); + cm.dispose(); + } else { //If you aren't in it, you're going to get added + cm.sendOk(expedition.addMember(cm.getPlayer())); + cm.dispose(); + } + } else if (expedition.isInProgress()) { //Only if the expedition is in progress + if (expedition.contains(player)) { //If you're registered, warp you in + em.getInstance("CWKPQ_" + player.getClient().getChannel()).registerPlayer(player); + cm.dispose(); + } else { //If you're not in by now, tough luck + cm.sendOk("Another expedition has taken the initiative to complete the Crimsonwood Keep Party Quest, lets pray for those brave souls."); + cm.dispose(); + } + } + } else if (status == 1) { + if (selection == 1) { + cm.createExpedition(cwkpq); + cm.sendOk("The #rCrimsonwood Keep Party Quest Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + cm.dispose(); + return; + } else if (selection == 2) { + cm.sendOk("Sure, not everyone's up to attempting Crimsonwood Keep Party Quest."); + cm.dispose(); + return; + } + } else if (status == 2) { + if (selection == 1) { + if (expedition == null) { + cm.sendOk("The expedition could not be loaded."); + cm.dispose(); + return; + } + var size = expedition.getMembers().size(); + if (size == 1) { + cm.sendOk("You are the only member of the expedition."); + cm.dispose(); + return; + } + var text = "The following members make up your expedition (Click on them to expel them):\r\n"; + text += "\r\n\t\t1." + expedition.getLeader().getName(); + for (var i = 1; i < size; i++) { + text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedition.getMembers().get(i).getName() + "#l\n"; + } + cm.sendSimple(text); + status = 6; + } else if (selection == 2) { + cm.sendOk("The expedition will begin and you will now be escorted to the #bEntrance to cwkpq Altar#k."); + status = 4; + } else if (selection == 3) { + player.getMap().broadcastMessage(MaplePacketCreator.removeClock()); + player.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, expedition.getLeader().getName() + " has ended the expedition.")); + cm.endExpedition(expedition); + cm.sendOk("The expedition has now ended. Sometimes the best strategy is to run away."); + cm.dispose(); + return; + } + } else if (status == 4) { + var min = 1; //cwkpq.getMinSize(); + var size = expedition.getMembers().size(); + if (size < min) { + cm.sendOk("You need at least " + min + " players registered in your expedition."); + cm.dispose(); + return; + } + if (em == null) { + cm.sendOk("The event could not be found, please report this on the forum."); + cm.dispose(); + return; + } + cm.sendOk("Good luck! Crimsonwood Keep Party Quest is a worthy challenge!"); + em.setProperty("leader", player.getName()); + em.setProperty("channel", player.getClient().getChannel()); + em.startInstance(expedition); + cm.dispose(); + return; + } else if (status == 6) { + if (selection > 0) { + var banned = expedition.getMembers().get(selection); + expedition.ban(banned); + cm.sendOk("You have banned " + banned.getName() + " from the expedition."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201114.js b/scripts/npc/world0/9201114.js new file mode 100644 index 0000000000..fb4f7b4b67 --- /dev/null +++ b/scripts/npc/world0/9201114.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Door that warps you inside the CWKPQ start map. Needs GMS-like checks. + * + * @Author Alan (SharpAceX) + */ + +function start() { + cm.warp(610030020); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9201123.js b/scripts/npc/world0/9201123.js new file mode 100644 index 0000000000..c036d0d5ee --- /dev/null +++ b/scripts/npc/world0/9201123.js @@ -0,0 +1,36 @@ +//Warrior Statue by Wodian + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + + if (mode == -1) { + cm.dispose(); + } + else { + if (status >= 2 && mode == 0) { + cm.sendOk("Goodbye"); + cm.dispose(); + return; + } + + if (mode == 1) { + status++; + } + else { + status--; + } + if (status == 0) { + cm.sendNext("If you want to go to Perion press next!"); + } + else if (status == 1) { + cm.warp(102000000,0); + cm.dispose(); + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/9201124.js b/scripts/npc/world0/9201124.js new file mode 100644 index 0000000000..6f8ef08ec6 --- /dev/null +++ b/scripts/npc/world0/9201124.js @@ -0,0 +1,36 @@ +//Bowman Statue by Wodian + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + + if (mode == -1) { + cm.dispose(); + } + else { + if (status >= 2 && mode == 0) { + cm.sendOk("Goodbye"); + cm.dispose(); + return; + } + + if (mode == 1) { + status++; + } + else { + status--; + } + if (status == 0) { + cm.sendNext("If you want to go to Henesys press next!"); + } + else if (status == 1) { + cm.warp(100000000,0); + cm.dispose(); + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/9201125.js b/scripts/npc/world0/9201125.js new file mode 100644 index 0000000000..f044c75c63 --- /dev/null +++ b/scripts/npc/world0/9201125.js @@ -0,0 +1,36 @@ +//Magician Statue by Wodian + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + + if (mode == -1) { + cm.dispose(); + } + else { + if (status >= 2 && mode == 0) { + cm.sendOk("Goodbye"); + cm.dispose(); + return; + } + + if (mode == 1) { + status++; + } + else { + status--; + } + if (status == 0) { + cm.sendNext("If you want to go to Ellinia press next!"); + } + else if (status == 1) { + cm.warp(101000000,0); + cm.dispose(); + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/9201126.js b/scripts/npc/world0/9201126.js new file mode 100644 index 0000000000..a1b910c2ab --- /dev/null +++ b/scripts/npc/world0/9201126.js @@ -0,0 +1,36 @@ +//Thief Statue by Wodian + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + + if (mode == -1) { + cm.dispose(); + } + else { + if (status >= 2 && mode == 0) { + cm.sendOk("Goodbye"); + cm.dispose(); + return; + } + + if (mode == 1) { + status++; + } + else { + status--; + } + if (status == 0) { + cm.sendNext("If you want to go to Kerning City press next!"); + } + else if (status == 1) { + cm.warp(103000000,0); + cm.dispose(); + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/9201127.js b/scripts/npc/world0/9201127.js new file mode 100644 index 0000000000..326b615541 --- /dev/null +++ b/scripts/npc/world0/9201127.js @@ -0,0 +1,36 @@ +//Pirate Statue by Wodian + +var status = 0; + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + + if (mode == -1) { + cm.dispose(); + } + else { + if (status >= 2 && mode == 0) { + cm.sendOk("Goodbye"); + cm.dispose(); + return; + } + + if (mode == 1) { + status++; + } + else { + status--; + } + if (status == 0) { + cm.sendNext("If you want to go to Nautilus press next!"); + } + else if (status == 1) { + cm.warp(120000100,0);//guess so... lol? + cm.dispose(); + } + } + } \ No newline at end of file diff --git a/scripts/npc/world0/9201130.js b/scripts/npc/world0/9201130.js new file mode 100644 index 0000000000..3769faaef9 --- /dev/null +++ b/scripts/npc/world0/9201130.js @@ -0,0 +1,27 @@ +var status = -1; + +function start(mode, type, selection) { + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == 1) { + status++; + } else { + cm.dispose(); + return; + } + if (status == 0) { + if (cm.isQuestStarted(28219)) { + cm.sendYesNo("Would you like to move to Valefor's Strolling Place?"); + } else { + cm.sendOk("The entrance is blocked by a strange force."); + cm.dispose(); + } + } else { + if(cm.haveItem(4032485, 1)) cm.gainItem(4032485, -1); + if(cm.haveItem(4001355, 1)) cm.gainItem(4001355, -1); + cm.warp(677000008,0); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201134.js b/scripts/npc/world0/9201134.js new file mode 100644 index 0000000000..6b22ef7da5 --- /dev/null +++ b/scripts/npc/world0/9201134.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Aldol + * + * @Author Alan (SharpAceX) + */ + importPackage(Packages.server.expeditions); + +function start() { + cm.sendYesNo("If you leave now, you won't be able to return. Are you sure you want to leave?"); +} + +function action(mode, type, selection) { + var scarga = MapleExpeditionType.SCARGA; + var expedition = cm.getExpedition(scarga); + if (mode < 1) + cm.dispose(); + else { + if (cm.getPlayer().getMap().getCharacters().size() < 2){ + cm.getPlayer().getMap().killAllMonsters(); + cm.getPlayer().getMap().resetReactors(); + if (expedition != null){ + cm.endExpedition(expedition); + } + } + if (cm.getPlayer().getEventInstance() != null) + cm.getPlayer().getEventInstance().removePlayer(cm.getPlayer()); + else + cm.warp(551030100); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9201135.js b/scripts/npc/world0/9201135.js new file mode 100644 index 0000000000..66f6bb89d2 --- /dev/null +++ b/scripts/npc/world0/9201135.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var toMap = new Array(550000000, 551000000, 540000000,540000000); +var inMap = new Array(540000000, 540000000, 551000000, 550000000); +var cost = new Array(10000, 50000, 50000, 10000); +var location; +var text = "Where would you like to travel?\n\n"; +var status = 0; + +function start() { + if (cm.getPlayer().getMap().getId() != 540000000) { + for (var i = 0; i < toMap.length; i ++) { + if (inMap[i] == cm.getPlayer().getMap().getId()) { + location = i; + break; + } + } + text +="\t\r\n#b#L0##m" + toMap[location] + "# (" + cost[location] + "mesos)#l#k"; + } else { + text += "\t\r\n#b#L0##m" + toMap[0] + "# (" + cost[0] + "mesos)#l\n\t\r\n#L1##m" + toMap[1] + "# (" + cost[1] + "mesos)#l#k"; + } + cm.sendSimple(text); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + return; + } else if (mode == 0) { + cm.sendNext("You know where to come if you need a ride!"); + cm.dispose(); + return; + } else { + status++; + } + if (status == 1) { + if (cm.getPlayer().getMap().getId() == 540000000) { + location = selection; + } + if (toMap[location] == null) { + cm.dipose(); + return; + } + cm.sendYesNo("Would you like to travel to #b#m"+toMap[location]+"##k? To head over to #b#m"+toMap[location]+"##k, it'll cost you cost you #b" + cost[location] + "#k. Would you like to go right now?"); + } else if (status == 2) { + if (cm.getMeso() < cost[location]) { + cm.sendNext("You do not seem to have enough mesos."); + } else { + cm.warp(toMap[location]); + cm.gainMeso(-cost[location]); + } + cm.dispose(); + } +} diff --git a/scripts/npc/world0/9209000.js b/scripts/npc/world0/9209000.js new file mode 100644 index 0000000000..d20c84c109 --- /dev/null +++ b/scripts/npc/world0/9209000.js @@ -0,0 +1,88 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var sel; +var pickup = -1; + +function start() { + cm.sendSimple("I'm Abdula, and I am a merchant intermediary who deals with rare goods. What do you have for me?#b\r\n#L0#I want to sell goods.\r\n#L1#I want to know about current market prices.\r\n#L2#A merchant intermediary? What is that?"); +} + +function action(mode, type, selection) { + status++; + if(mode != 1){ + if(mode == 0 && status == 0){ + cm.dispose(); + return; + }else if(mode == 0 && sel == 0 && status == 2){ + cm.sendNext("You don't want to sell it right now? You can sell it later, but remember the Special Items are only valuable for a week."); + cm.dispose(); + return; + }else if(mode == 0 && sel == 2) + status -= 2; + } + if(status == 0){ + if(sel == undefined) + sel = selection; + if (selection == 0){ + var text = "Let's see what you brought...#b"; + for(var i = 0; i < 5; i++) + text += "\r\n#L" + i + "##t" + (3994090 + i) + "#"; + cm.sendSimple(text); + }else if (selection == 1){ + var text = ""; + for(var i = 0; i < 5; i++) + text += "The current market price for #t" + (i + 3994090) + "# is #rNOT DONE#k mesos\r\n"; + cm.sendNext(text); + cm.dispose(); + }else + cm.sendNext("I buy the products at the Maple 7th Day Market and sell them in other towns. I trade memorabilia, spices, taxidermy shark, and more... but no Lazy Daisy's eggs."); + }else if(status == 1){ + if(sel == 0){ + if(cm.haveItem(3994090 + selection)){ + pickup = 3994090 + selection; + cm.sendYesNo("The current price is 180 mesos. Would you like to sell it now?"); //Make a price changer by hour. + }else{ + cm.sendNext("You don't have anything. Stop wasting my time... I'm a busy person."); + cm.dispose(); + } + }else + cm.sendNextPrev("Maple 7th Day Market Sundays are my days off. If you need to see me, you're going to have to come Monday to Friday..."); + }else if(status == 2){ + if(sel == 0) + cm.sendGetNumber("How many would you like to sell?", 0, 0, 200); + else{ + cm.sendPrev("Oh, and the prices are subject to change. I can't get the short end of the stick, I have to stay in business! Check back with me frequently, my prices change by the hour!"); + } + }else if(status == 3){ + if(sel == 0) + if(selection != 1) + cm.sendNext("Something's not right. Check again."); + else{ + cm.sendNext("The transaction has been completed. See you next time."); + cm.gainMeso(180); + cm.gainItem(pickup, -1); + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9209001.js b/scripts/npc/world0/9209001.js new file mode 100644 index 0000000000..bc641f0449 --- /dev/null +++ b/scripts/npc/world0/9209001.js @@ -0,0 +1,88 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +status = -1; +var sel, sel2; + +function start() { + cm.sendSimple("Hello, the Maple 7th Day Market opens today.#b\r\n#L0#Move to Maple 7th Day Market map\r\n#L1#Listen for an explanation about the Maple 7th Day Market"); +} + +function action(mode, type, selection) { + status++; + if (status == 6 && mode == 1) { + sel2 = undefined; + status = 0; + } + if (mode != 1) { + if (mode == 0 && type == 0) + status -= 2; + else { + cm.dispose(); + return; + } + } + if (status == 0) { + if (sel == undefined) + sel = selection; + if (selection == 0) { + cm.sendNext("Okay, we will send you to the Maple 7th Day Market map."); + } else + cm.sendSimple("What would you like to know about the Maple 7th Day Market?#b\r\n#L0#Where does the Maple 7th Day Market take place?\r\n#L1#What can you do at the Maple 7th Day Market?\r\n#L2#I do not have any questions."); + } else if(status == 1) { + if (sel == 0) { + cm.getPlayer().saveLocation("EVENT"); + cm.warp(680100000 + parseInt(Math.random() * 3)); + cm.dispose(); + } else if (selection == 0) { + cm.sendNext("The Maple 7th Day Market opens only on Sundays. You can enter if you find me in any town, Henesys, New Leaf City, Leafre, Kerning City, Ludibrium, I'm just about everywhere!"); + status -= 2; + } else if (selection == 1) + cm.sendSimple("You can find rare goods that are hard to find elsewhere at the Maple 7th Day Market.#b\r\n#L0#Purchase Special Items\r\n#L1#Help the Poultry Farm Owner"); + else { + cm.sendNext("I guess you don't have any question. Please keep us in your thoughts, and ask if you are curious about anything."); + cm.dispose(); + } + } else if (status == 2) { + if (sel2 == undefined) + sel2 = selection; + if (sel2 == 0) + cm.sendNext("You can find many items at the Maple 7th Day Market. The prices are subject to change, so you'd better get them when they're cheap!"); + else + cm.sendNext("Aside from the merchants, you can also find the lazy daughter of the poultry farm owner at the Maple 7th Day Market. Help Mimi and hatch her egg until it grows to be a chicken!"); + } else if (status == 3) { + if (sel2 == 0) + cm.sendNextPrev("The purchases made here can be sold back to the merchant intermediary, Abdula. He won't accept anything more than a week old, so make sure you re-sell by Saturday!"); + else + cm.sendNextPrev("Since she can't just trust anyone with the egg, she'll ask for deposit money. Pay her the deposit and take good care of the egg."); + } else if (status == 4) { + if (sel2 == 0) + cm.sendNextPrev("Abdula adjusts his reselling rates as well, so it would be wise to sell when you can make the most profit. The prices tend to fluctuate hourly, so remember to check often."); + else + cm.sendNextPrev("If you manage to successfully grow the egg into a chicken and take it back to Mimi, Mimi will reward you. She may be lazy but she's not ungrateful."); + } else if (status == 5) { + if (sel2 == 0) + cm.sendNextPrev("Test your business wit by buying good at low prices in the Maple 7th Day Market and selling it to the merchant intermediary when its value goes up!"); + else + cm.sendNextPrev("You can click on the egg to check on its growth. You have to be diligent with the egg since the EXP you gain and the egg will grow together."); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9220005.js b/scripts/npc/world0/9220005.js new file mode 100644 index 0000000000..1419b7b6ed --- /dev/null +++ b/scripts/npc/world0/9220005.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Roudolph Happyville Warp NPC + By Moogra +*/ + +function start() { + cm.sendYesNo("Do you want to go to the Extra Frosty Snow Zone ?#l"); +} + +function action(mode, type, selection) { + if (mode > 0) + cm.warp(209080000, 0); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9250045.js b/scripts/npc/world0/9250045.js new file mode 100644 index 0000000000..93c9c172ec --- /dev/null +++ b/scripts/npc/world0/9250045.js @@ -0,0 +1,4 @@ +//Perion Maple TV +function action(mode, type, selection) { + cm.dispose(); //What the fuck +} \ No newline at end of file diff --git a/scripts/npc/world0/9270017.js b/scripts/npc/world0/9270017.js new file mode 100644 index 0000000000..05539d4df1 --- /dev/null +++ b/scripts/npc/world0/9270017.js @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Xinga - Pilot +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +var status = 0; + +function start() { + cm.sendYesNo("The plane will be taking off soon, Will you leave now? You will have buy the plane ticket again to come in here."); +} + +function action(mode, type, selection) { + if (mode != 1) { + if (mode == 0) + cm.sendOk("Please hold on for a sec, and plane will be taking off. Thanks for your patience."); + cm.dispose(); + return; + } + status++; + if (status == 1) { + cm.sendNext("I have already told you the ticket is not refunable~ hope to see you again~"); + } else if(status == 2){ + cm.warp(103000000); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9270018.js b/scripts/npc/world0/9270018.js new file mode 100644 index 0000000000..a5b6b0537a --- /dev/null +++ b/scripts/npc/world0/9270018.js @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + Kerny - Pilot +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if(mode == -1) { + cm.dispose(); + return; + } + if(mode == 1) { + status++; + } + if(mode == 0) { + cm.sendOk("Please hold on for a sec, and plane will be taking off. Thanks for your patience."); + cm.dispose(); + return; + } + if(status == 0) { + cm.sendYesNo("The plane will be taking off soon, Will you leave now? You will have buy the plane ticket again to come in here."); + } else if(status == 1) { + cm.sendNext("I have already told you the ticket is not refunable~ hope to see you again~"); + } else if(status == 2) { + cm.warp(540010000); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9270023.js b/scripts/npc/world0/9270023.js new file mode 100644 index 0000000000..fadd5ae962 --- /dev/null +++ b/scripts/npc/world0/9270023.js @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Noel + Singapore Random Face Changer + Credits to aaron and cody + Side note by aaron [If there is something wrong PM me on fMS] +*/ +var status = 0; +var beauty = 0; +var mface = Array(20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20012); +var fface = Array(21001, 21002, 21003, 21004, 21005, 21006, 21008, 21012, 21014, 21016); +var facenew = Array(); + +function start() { + cm.sendSimple("If you use this regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152037##k, I will do it anyways for you. But don't forget, it will be random!\r\n\#L2#OK!#l"); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) + cm.dispose(); + if (mode == 1) + status++; + else + status--; + if (status == 1) + cm.dispose(); + else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mface.length; i++) + facenew.push(mface[i] + cm.getPlayer().getFace()% 1000 - (cm.getPlayer().getFace()% 100)); + if (cm.getPlayer().getGender() == 1) + for(var i = 0; i < fface.length; i++) + facenew.push(fface[i] + cm.getPlayer().getFace()% 1000 - (cm.getPlayer().getFace()% 100)); + cm.sendYesNo("If you use the regular coupon, your face may transform into a random new look...do you still want to do it using #b#t5152037##k?"); + } else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152037)){ + cm.gainItem(5152037 , -1); + cm.setFace(facenew[Math.floor(Math.random() * facenew.length)]); + cm.sendOk("Enjoy your new and improved face!"); + } else + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } +} diff --git a/scripts/npc/world0/9270024.js b/scripts/npc/world0/9270024.js new file mode 100644 index 0000000000..287147ef28 --- /dev/null +++ b/scripts/npc/world0/9270024.js @@ -0,0 +1,75 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Kelvin + SingaPore VIP Face changer + Made by aaron and cody +*/ +var status = 0; +var beauty = 0; +var mface = Array(20109, 20110, 20106, 20108, 20112, 20013); +var fface = Array(21021, 21009, 21010, 21006, 21008, 21012); +var facenew = Array(); + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) + cm.dispose(); + else { + if (mode == 0 && status == 0) + cm.dispose(); + + if (mode == 1) + status++; + else + status--; + if (status == 0) { + cm.sendSimple("Let's see...I can totally transform your face into something new. Don't you want to try it? For #b#t5152038##k, you can get the face of your liking. Take your time in choosing the face of your preference...\r\n\#L2#Let me get my dream face!#l"); + cm.dispose(); + } else if (selection == 2) { + facenew = Array(); + if (cm.getPlayer().getGender() == 0) { + for(var i = 0; i < mface.length; i++) + facenew.push(mface[i] + cm.getPlayer().getFace()% 1000 - (cm.getPlayer().getFace()% 100)); + } + if (cm.getPlayer().getGender() == 1) { + for(var i = 0; i < fface.length; i++) { + facenew.push(fface[i] + cm.getPlayer().getFace()% 1000 - (cm.getPlayer().getFace()% 100)); + } + } + cm.sendStyle("Let's see... I can totally transform your face into something new. Don't you want to try it? For #b#t5152038##k, you can get the face of your liking. Take your time in choosing the face of your preference...", facenew); + } + else if (status == 2){ + cm.dispose(); + if (cm.haveItem(5152038)){ + cm.gainItem(5152038, -1); + cm.setFace(facenew[selection]); + cm.sendOk("Enjoy your new and improved face!"); + } else { + cm.sendOk("Hmm ... it looks like you don't have the coupon specifically for this place. Sorry to say this, but without the coupon, there's no plastic surgery for you..."); + } + } + } +} diff --git a/scripts/npc/world0/9270025.js b/scripts/npc/world0/9270025.js new file mode 100644 index 0000000000..79750771d8 --- /dev/null +++ b/scripts/npc/world0/9270025.js @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Xan + Lian Hua Hua Skin Care + by Moogra +*/ +var skin = Array(0, 1, 2, 3, 4); + +function start() { + cm.sendSimple("Well, hello! Welcome to the Lian Hua Hua Skin-Care! Would you like to have a firm, tight, healthy looking skin like mine? With #b#tCBD Skin Coupon##k, you can let us take care of the rest and have the kind of skin you've always wanted!\r\n\#L1#Sounds Good!#l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + if (selection == 1) + cm.sendStyle("With our specialized service, you can see the way you'll look after the treatment in advance. What kind of a skin-treatment would you like to do? Go ahead and choose the style of your liking...", skin); + else { + if (cm.haveItem(5153010)){ + cm.gainItem(5153010 , -1); + cm.setSkin(selection); + cm.sendOk("Enjoy your new and improved skin!"); + } else + cm.sendOk("It looks like you don't have the coupon you need to receive the treatment. I'm sorry but it looks like we cannot do it for you."); + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/9270026.js b/scripts/npc/world0/9270026.js new file mode 100644 index 0000000000..7a0c6a7009 --- /dev/null +++ b/scripts/npc/world0/9270026.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Sixx + Singa REG/VIP Eye Color Changer +*/ + +var status = 0; +var beauty = 0; +var colors = Array(); + +function start() { + cm.sendSimple("Hi, there! I'm Sixx, in charge of Da Yan Jing Lens Shop here at CBD! With #b#t5152039##k or #b#t5152040##k, you can let us take care of the rest and have the kind of beautiful look you've always craved! Remember, the first thing everyone notices about you are the eyes, and we can help you find the cosmetic lens that most fits you! Now, what would you like to use?\r\n#L1#Cosmetic Lenses: #i5152039##t5152039##l\r\n#L2#Cosmetic Lenses: #i5152040##t5152040##l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (status == 1) { + if (selection == 1) { + beauty = 1; + var current = cm.getPlayer().getFace()% 100 + 20000 + cm.getPlayer().getGender() * 1000; + cm.sendYesNo("If you use the regular coupon, you'll be awarded a random pair of cosmetic lenses. Are you going to use a #b#t5152039##k and really make the change to your eyes?"); + } else { + beauty = 2; + var current = cm.getPlayer().getFace()% 100 + 20000 + cm.getPlayer().getGender() * 1000; + colors = [current , current + 100, current + 200, current + 300, current +400, current + 500, current + 600, current + 700]; + cm.sendStyle("With our specialized machine, you can see yourself after the treatment in advance. What kind of lens would you like to wear? Choose the style of your liking.", colors); + } + } + else if (status == 2) { + if (beauty == 1){ + if (cm.haveItem(5152039)){ + cm.gainItem(5152039, -1); + cm.setFace(Math.floor(Math.random() * 8) * 100 + current); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } else if (beauty == 2){ + if (cm.haveItem(5152040)){ + cm.gainItem(5152040, -1); + cm.setFace(colors[selection]); + cm.sendOk("Enjoy your new and improved cosmetic lenses!"); + } else + cm.sendOk("I'm sorry, but I don't think you have our cosmetic lens coupon with you right now. Without the coupon, I'm afraid I can't do it for you.."); + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/9270033.js b/scripts/npc/world0/9270033.js new file mode 100644 index 0000000000..216614f76b --- /dev/null +++ b/scripts/npc/world0/9270033.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Engine room - Bob + * @author Moogra +*/ +function start() { + cm.warp(541010110); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9270036.js b/scripts/npc/world0/9270036.js new file mode 100644 index 0000000000..da6812c8c4 --- /dev/null +++ b/scripts/npc/world0/9270036.js @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Eric + Singapore VIP Hair/Color Changer + MADE BY AAron and Cody from the FlowsionMS Forums +*/ +var status = 0; +var beauty = 0; +var mhair = Array(30110, 30290, 30230, 30260, 30320, 30190, 30240, 30350, 30270, 30180); +var fhair = Array(31260, 31090, 31220, 31250, 31140, 31160, 31100, 31120, 31030, 31270, 31810); +var hairnew = Array(); + +function start() { + cm.sendSimple("Welcome to the Quick-Hand Hair-Salon!. Do you, by any chance, have #b#t5150033##k or #b#t5151028 ##k? If so, how about letting me take care of your hair? Please what you want to do with it.\r\n#L1#Haircut: #i5150033##t5150033##l\r\n#L2#Dye your hair: #i5151028##t5151028##l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (selection == 1) { + beauty = 1; + hairnew = Array(); + if (cm.getPlayer().getGender() == 0) + for(var i = 0; i < mhair.length; i++) + hairnew.push(mhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + else + for(var i = 0; i < fhair.length; i++) + hairnew.push(fhair[i] + parseInt(cm.getPlayer().getHair()% 10)); + cm.sendStyle("I can completely change the look of your hair. Aren't you ready for a change? With #b#t5150033##k, I'll take care of the rest for you. Choose the style of your liking!", hairnew); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) + haircolor.push(current + i); + cm.sendStyle("I can completely change the look of your hair. Aren't you ready for a change? With #b#t5151028##k, I'll take care of the rest. Choose the color of your liking!", haircolor); + } else if (status == 2) { + if (beauty == 1){ + if (cm.haveItem(5150033)){ + cm.gainItem(5150033, -1); + cm.setHair(hairnew[selection]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry."); + } + if (beauty == 2){ + if (cm.haveItem(5151028)){ + cm.gainItem(5151028, -1); + cm.setHair(haircolor[selection]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry."); + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/9270037.js b/scripts/npc/world0/9270037.js new file mode 100644 index 0000000000..40560af9cc --- /dev/null +++ b/scripts/npc/world0/9270037.js @@ -0,0 +1,74 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Jimmy + Singa Random Hair/Color Changer + Credits to Cody and AAron from FlowsionMS + */ +var status = 0; +var beauty = 0; +var mhair = Array(30110, 30290, 30230, 30260, 30320, 30190, 30240, 30350, 30270, 30180); +var fhair = Array(31260, 31090, 31220, 31250, 31140, 31160, 31100, 31120, 31030, 31270, 31810); +var hairnew = Array(); + +function start() { + cm.sendSimple("Hi, I'm the assistant here. Dont worry, I'm plenty good enough for this. If you have #b#t5150032##k or #b#t5151027##k by any chance, then allow me to take care of the rest?\r\n#L1#Haircut: #i5150032##t5150032##l\r\n#L2#Dye your hair: #i5151027##t5151027##l"); +} + +function action(mode, type, selection) { + if (mode < 1) + cm.dispose(); + else { + status++; + if (selection == 1) { + beauty = 1; + hairnew = Array(); + for (var id = 0; id < cm.getPlayer().getGender() == 0 ? mhair.length : fhair.length; id++) + hairnew.push(cm.getPlayer().getGender == 0 ? mhair[i] : fhair[i] + parseInt(cm.getPlayer().getHair() % 10)); + cm.sendYesNo("If you use the REG coupon your hair will change RANDOMLY with a chance to obtain a new experimental style that I came up with. Are you going to use #b#t5150032##k and really change your hairstyle?"); + } else if (selection == 2) { + beauty = 2; + haircolor = Array(); + var current = parseInt(cm.getPlayer().getHair()/10)*10; + for(var i = 0; i < 8; i++) + haircolor.push(current + i); + cm.sendYesNo("If you use the REG coupon your hair will change RANDOMLY. Do you still want to use #b#t5151027##k and change it up?"); + } else if (status == 2) { + if (beauty == 1){ + if (cm.haveItem(5150032)){ + cm.gainItem(5150032, -1); + cm.setHair(hairnew[Math.floor(Math.random() * hairnew.length)]); + cm.sendOk("Enjoy your new and improved hairstyle!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't give you a haircut without it. I'm sorry..."); + } + if (beauty == 2){ + if (cm.haveItem(5151027)){ + cm.gainItem(5151027, -1); + cm.setHair(haircolor[Math.floor(Math.random() * haircolor.length)]); + cm.sendOk("Enjoy your new and improved haircolor!"); + } else + cm.sendOk("Hmmm...it looks like you don't have our designated coupon...I'm afraid I can't dye your hair without it. I'm sorry..."); + } + cm.dispose(); + } + } +} diff --git a/scripts/npc/world0/9270038.js b/scripts/npc/world0/9270038.js new file mode 100644 index 0000000000..938528f46a --- /dev/null +++ b/scripts/npc/world0/9270038.js @@ -0,0 +1,41 @@ +status = -1; +oldSelection = -1; + +function start() { + cm.sendSimple("Hello, I am Shalon from Singapore Airport. I can assist you in getting you to Singapore in no time. Do you want to go to Singapore?\r\n#b#L0#I would like to buy a plane ticket to Kerning City\r\n#b#L1#Let me go in to the departure point."); +} + +function action(mode, type, selection) { + status++; + if (mode <= 0){ + oldSelection = -1; + cm.dispose(); + } + + if(status == 0){ + if(selection == 0){ + cm.sendYesNo("The ticket will cost you 5,000 mesos. Will you purchase the ticket?"); + }else if(selection == 1){ + cm.sendYesNo("Would you like to go in now? You will lose your ticket once you go in! Thank you for choosing Wizet Airline."); + } + oldSelection = selection; + }else if(status == 1){ + if(oldSelection == 0){ + cm.gainMeso(-5000); + cm.gainItem(4031732); + }else if(oldSelection == 1){ + if(cm.itemQuantity(4031732) > 0){ + var em = cm.getEventManager("AirPlane"); + if(em.getProperty("entry") == "true"){ + cm.warp(540010001); + cm.gainItem(4031732, -1); + }else{ + cm.sendOk("Sorry the plane has taken off, please wait a few minutes."); + } + }else{ + cm.sendOk("You need a #b#t4031732##k to get on the plane!"); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9270041.js b/scripts/npc/world0/9270041.js new file mode 100644 index 0000000000..6b8bd294f8 --- /dev/null +++ b/scripts/npc/world0/9270041.js @@ -0,0 +1,41 @@ +status = -1; +oldSelection = -1; + +function start() { + cm.sendSimple("Hello, I am Irene from Singapore Airport. I can assist you in getting you to Singapore in no time. Do you want to go to Singapore?\r\n#b#L0#I would like to buy a plane ticket to Singapore\r\n#b#L1#Let me go in to the departure point."); +} + +function action(mode, type, selection) { + status++; + if (mode <= 0){ + oldSelection = -1; + cm.dispose(); + } + + if(status == 0){ + if(selection == 0){ + cm.sendYesNo("The ticket will cost you 5,000 mesos. Will you purchase the ticket?"); + }else if(selection == 1){ + cm.sendYesNo("Would you like to go in now? You will lose your ticket once you go in! Thank you for choosing Wizet Airline."); + } + oldSelection = selection; + }else if(status == 1){ + if(oldSelection == 0){ + cm.gainMeso(-5000); + cm.gainItem(4031731); + }else if(oldSelection == 1){ + if(cm.itemQuantity(4031731) > 0){ + var em = cm.getEventManager("AirPlane"); + if(em.getProperty("entry") == "true"){ + cm.warp(540010100); + cm.gainItem(4031731, -1); + }else{ + cm.sendOk("Sorry the plane has taken off, please wait a few minutes."); + } + }else{ + cm.sendOk("You need a #b#t4031731##k to get on the plane!"); + } + } + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9270042.js b/scripts/npc/world0/9270042.js new file mode 100644 index 0000000000..0c05433a17 --- /dev/null +++ b/scripts/npc/world0/9270042.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 9270042); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9270043.js b/scripts/npc/world0/9270043.js new file mode 100644 index 0000000000..253e9152cc --- /dev/null +++ b/scripts/npc/world0/9270043.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +//Gachaphon + +var ids = [2000004,2020012,2000005,2030007,2022027,2040001,2041002, 2040805, 2040702, 2043802, 2040402, 2043702, 1302022, 1322021, 1322026, 1302026, 1442017, 1082147, 1102043, 1442016, 1402012, 1302027, 1322027, 1322025, 1312012, 1062000, 1332020, 1302028, 1372002, 1002033, 1092022, 1302021, 1102041, 1102042, 1322024, 1082148, 1002012, 1322012, 1322022, 1002020, 1302013, 1082146, 1442014, 1002096, 1302017, 1442012, 1322010, 1442011, 1442018, 1092011, 1092014, 1302003, 1432001, 1312011, 1002088, 1041020, 1322015, 1442004, 1422008, 1302056, 1432000, 1382001, 1041053, 1060014, 1050053, 1051032, 1050073, 1061036, 1002253, 1002034, 1051025, 1050067, 1051052, 1002072, 1002144, 1051054, 1050069, 1372007, 1050056, 1050074, 1002254, 1002274, 1002218, 1051055, 1382010, 1002246, 1050039, 1382007, 1372000, 1002013, 1050072, 1002036, 1002243, 1372008, 1382008, 1382011, 1092021, 1051034, 1050047, 1040019, 1041031, 1051033, 1002153, 1002252, 1051024, 1002153, 1050068, 1382003, 1382006, 1050055, 1051031, 1050025, 1002155, 1002245, 1452004, 1452023, 1060057, 1040071, 1002137, 1462009, 1452017, 1040025, 1041027, 1452005, 1452007, 1061057, 1472006, 1472019, 1060084, 1472028, 1002179, 1082074, 1332015, 1432001, 1060071, 1472007, 1472002, 1051009, 1061037, 1332016, 1332034, 1472020, 1102084, 1102086, 1102042, 1032026, 1082149]; +var status = 0; + +function start() { + if (cm.haveItem(5451000)) { + cm.gainItem(5451000, -1); + cm.processGachapon(ids, true); + cm.dispose(); + } else if (cm.haveItem(5220000)) + cm.sendYesNo("You may use Gachapon. Would you like to use your Gachapon ticket?"); + else { + cm.sendSimple("Welcome to the " + cm.getPlayer().getMap().getMapName() + " Gachapon. How may I help you?\r\n\r\n#L0#What is Gachapon?#l\r\n#L1#Where can you buy Gachapon tickets?#l"); + } +} + +function action(mode, type, selection){ + if (mode == 1 && cm.haveItem(5220000)) { + cm.processGachapon(ids, false); + cm.dispose(); + } else { + if (mode > 0) { + status++; + if (selection == 0) { + cm.sendNext("Play Gachapon to earn rare scrolls, equipment, chairs, mastery books, and other cool items! All you need is a #bGachapon Ticket#k to be the winner of a random mix of items."); + } else if (selection == 1) { + cm.sendNext("Gachapon Tickets are available in the #rCash Shop#k and can be purchased using NX or Maple Points. Click on the red SHOP at the lower right hand corner of the screen to visit the #rCash Shop #kwhere you can purchase tickets."); + cm.dispose(); + } else if (status == 2) { + cm.sendNext("You'll find a variety of items from the " + cm.getPlayer().getMap().getMapName() + " Gachapon, but you'll most likely find several related items and scrolls since " + cm.getPlayer().getMap().getMapName() + " is known as the town."); + cm.dispose(); + } + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9270047.js b/scripts/npc/world0/9270047.js new file mode 100644 index 0000000000..409c03e065 --- /dev/null +++ b/scripts/npc/world0/9270047.js @@ -0,0 +1,153 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Adobis + * + *@author SharpAceX (Alan) + */ +importPackage(Packages.server.expeditions); +importPackage(Packages.tools); +importPackage(Packages.scripting.event); + +var status = 0; +var expedition; +var player; +var em; +var scarga = MapleExpeditionType.SCARGA; +var list = "What would you like to do?#b\r\n\r\n#L1#View current Expedition members#l\r\n#L2#Start the fight!#l\r\n#L3#Stop the expedition.#l"; + +function start() { + action(1, 0, 0); +} + +function action(mode, type, selection) { + + player = cm.getPlayer(); + expedition = cm.getExpedition(scarga); + em = cm.getEventManager("ScargaBattle"); + + if (mode < 1) { + cm.dispose(); + return; + } + if (status == 0) { + //cm.removeExpedition(expedition); + if (player.getClient().getChannel() != 1) { //Only channel 1 + cm.sendOk("Sorry, Scarlion and Targa may only be challenged on #bChannel 1#k."); + cm.dispose(); + } else if (player.getLevel() < scarga.getMinLevel() && player.getLevel() > scarga.getMaxLevel()) { //Don't fit requirement + cm.sendOk("You do not meet the criteria to take on Scarlion and Targa!"); + cm.dispose(); + } else if (expedition == null) { //Start an expedition + cm.sendSimple("Would you like to assemble a team to take on #rScarlion and Targa#k?\r\n#b#L1#Lets get this going!#l\r\n\#L2#No, I think I'll wait a bit...#l"); + status = 1; + } else if (expedition.isLeader(player)) { //If you're the leader, manage the exped + cm.sendSimple(list); + status = 2; + } else if (expedition.isRegistering()) { //If the expedition is registering + if (expedition.contains(player)) { //If you're in it but it hasn't started, be patient + cm.sendOk("You have already registered for the expedition. Please wait for " + expedition.getLeader().getName() + " to begin the expedition."); + cm.dispose(); + } else { //If you aren't in it, you're going to get added + cm.sendOk(expedition.addMember(cm.getPlayer())); + cm.dispose(); + } + } else if (expedition.isInProgress()) { //Only if the expedition is in progress + if (expedition.contains(player)) { //If you're registered, warp you in + em.getInstance("ScargaBattle_" + player.getClient().getChannel()).registerPlayer(player); + cm.dispose(); + } else { //If you're not in by now, tough luck + cm.sendOk("Another expedition has taken the initiative to fight Scarlion and Targa, lets pray for those brave souls."); + cm.dispose(); + } + } + } else if (status == 1) { + if (selection == 1) { + cm.createExpedition(scarga); + cm.sendOk("The #rScarlion and Targa Expedition#k has been created.\r\n\r\nTalk to me again to view the current team, or start the fight!"); + cm.dispose(); + return; + } else if (selection == 2) { + cm.sendOk("Sure, not everyone's up to challenging the might of Scarlion and Targa."); + cm.dispose(); + return; + } + } else if (status == 2) { + if (selection == 1) { + if (expedition == null) { + cm.sendOk("The expedition could not be loaded."); + cm.dispose(); + return; + } + var size = expedition.getMembers().size(); + if (size == 1) { + cm.sendOk("You are the only member of the expedition."); + cm.dispose(); + return; + } + var text = "The following members make up your expedition (Click on them to expel them):\r\n"; + text += "\r\n\t\t1." + expedition.getLeader().getName(); + for (var i = 1; i < size; i++) { + text += "\r\n#b#L" + (i + 1) + "#" + (i + 1) + ". " + expedition.getMembers().get(i).getName() + "#l\n"; + } + cm.sendSimple(text); + status = 6; + } else if (selection == 2) { + cm.sendOk("The expedition will begin and you will now be escorted to the #bSpooky World#k."); + status = 4; + } else if (selection == 3) { + player.getMap().broadcastMessage(MaplePacketCreator.removeClock()); + player.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, expedition.getLeader().getName() + " has ended the expedition.")); + cm.endExpedition(expedition); + cm.sendOk("The expedition has now ended. Sometimes the best strategy is to run away."); + cm.dispose(); + return; + } + } else if (status == 4) { + var min = 1; //scarga.getMinSize(); + var size = expedition.getMembers().size(); + if (size < min) { + cm.sendOk("You need at least " + min + " players registered in your expedition."); + cm.dispose(); + return; + } + if (em == null) { + cm.sendOk("The event could not be found, please report this on the forum."); + cm.dispose(); + return; + } + cm.sendOk("Good luck! Scarlion and Targa are worthy foes!"); + em.setProperty("leader", player.getName()); + em.setProperty("channel", player.getClient().getChannel()); + em.startInstance(expedition); + cm.dispose(); + return; + } else if (status == 6) { + if (selection > 0) { + var banned = expedition.getMembers().get(selection); + expedition.ban(banned); + cm.sendOk("You have banned " + banned.getName() + " from the expedition."); + cm.dispose(); + } else { + cm.sendSimple(list); + status = 2; + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9270054.js b/scripts/npc/world0/9270054.js new file mode 100644 index 0000000000..4d637d6100 --- /dev/null +++ b/scripts/npc/world0/9270054.js @@ -0,0 +1,4 @@ +function start() { + cm.getPlayer().getStorage().sendStorage(cm.getClient(), 9270054); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/9900000.js b/scripts/npc/world0/9900000.js new file mode 100644 index 0000000000..2c139e4944 --- /dev/null +++ b/scripts/npc/world0/9900000.js @@ -0,0 +1,89 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @Name NimaKIN + * @Author: Signalize + * @NPC: 9900000 + * @Purpose: Hair/Face/Eye Changer -- May set job as GM too + * @GMSPurpose: Sets one's job as a GM. + * @Map: 180000000 + */ +var status = 0; +var beauty = 0; +var haircolor = Array(); +var skin = [0, 1, 2, 3, 4, 5, 9, 10]; +var fhair= [31000, 31010, 31020, 31030, 31040, 31050, 31060, 31070, 31080, 31090, 31100, 31110, 31120, 31130, 31140, 31150, 31160, 31170, 31180, 31190, 31200, 31210, 31220, 31230, 31240, 31250, 31260, 31270, 31280, 31290, 31300, 31310, 31320, 31330, 31340, 31350, 31400, 31410, 31420, 31440, 31450, 31460, 31470, 31480, 31490, 31510, 31520, 31530, 31540, 31550, 31560, 31570, 31580, 31590, 31600, 31610, 31620, 31630, 31640, 31650, 31670, 31680, 31690, 31700, 31710, 31720, 31730, 31740, 31750, 31760, 31770, 31780, 31790, 31800, 31810]; +var hair = [30000, 30010, 30020, 30030, 30040, 30050, 30060, 30070, 30080, 30090, 30110, 30120, 30130, 30140, 30150, 30160, 30170, 30180, 30190, 30200, 30210, 30220, 30230, 30240, 30250, 30260, 30270, 30280, 30290, 30300, 30310, 30320, 30330, 30340, 30350, 30360, 30370, 30400, 30410, 30420, 30440, 30450, 30460, 30470, 30480, 30490, 30510, 30520, 30530, 30540, 30550, 30560, 30570, 30580, 30590, 30600, 30610, 30620, 30630, 30640, 30650, 30660, 30670, 30680, 30690, 30700, 30710, 30720, 30730, 30740, 30750, 30760, 30770, 30780, 30790, 30800, 30810, 30820, 30840]; +var hairnew = Array(); +var face = [20000, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009, 20010, 20011, 20012, 20013, 20014, 20016, 20017, 20018, 20019, 20020, 20021, 20022, 20023, 20024, 20026]; +var fface = [21000, 21001, 21002, 21003, 21004, 21005, 21006, 21007, 21008, 21009, 21010, 21011, 21012, 21013, 21014, 21016, 21017, 21018, 21019, 21020, 21021, 21022, 21024, 21025]; +var facenew = Array(); +var colors = Array(); + +function start() { + cm.sendSimple("Hey there, I can change your look. What would you like to change?\r\n#L0#Skin#l\r\n#L1#Hair#l\r\n#L5#Female Hair#l\r\n#L2#Hair Color#l\r\n#L3#Eye#l\r\n#L6#Female Eyes#l\r\n#L4#Eye Color#l\r\n#L7#Set GM job#l"); +} + +function action(mode, type, selection) { + status++; + if (mode != 1 || cm.getPlayer().gmLevel() < 1){ + cm.dispose(); + return; + } + if (status == 1) { + beauty = selection + 1; + if (selection == 0) + cm.sendStyle("Pick one?", skin); + else if (selection == 1 || selection == 5) { + for each(var i in selection == 1 ? hair : fhair) + hairnew.push(i); + cm.sendStyle("Pick one?", hairnew); + } else if (selection == 2) { + for(var k = 0; k < 8; k++) + haircolor.push(cm.getPlayer().getHair() + k); + cm.sendStyle("Pick one?", haircolor); + } else if (selection == 3 || selection == 6) { + for each(var j in selection == 3 ? face : fface) + facenew.push(j); + cm.sendStyle("Pick one?", facenew); + } else if (selection == 4) { + for(var i = 0; i < 9; i++) + colors.push(cm.getPlayer().getFace() + (i*100)); + cm.sendStyle("Pick one?", colors); + } else if (selection == 7) { + cm.changeJobById(910); + cm.dispose(); + } + } else if (status == 2){ + if (beauty == 1) + cm.setSkin(skin[selection]); + if (beauty == 2 || beauty == 6) + cm.setHair(hairnew[selection]); + if (beauty == 3) + cm.setHair(haircolor[selection]); + if (beauty == 4 || beauty == 7) + cm.setFace(facenew[selection]); + if (beauty == 5) + cm.setFace(colors[selection]); + cm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/npc/world0/9900001.js b/scripts/npc/world0/9900001.js new file mode 100644 index 0000000000..cb5ffa3104 --- /dev/null +++ b/scripts/npc/world0/9900001.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @Name KIN + * @Author: Signalize + * @NPC: 9900001 + * @Purpose: Levels people up. + */ +function start() { + cm.sendYesNo("Do you want to level up?"); +} + +function action(i, am, pro) { + if (i > 0 && cm.getPlayer().gmLevel() > 0) + cm.getPlayer().levelUp(true); + cm.dispose(); +} \ No newline at end of file diff --git a/scripts/npc/world0/changeName.js b/scripts/npc/world0/changeName.js new file mode 100644 index 0000000000..b0b81f2b20 --- /dev/null +++ b/scripts/npc/world0/changeName.js @@ -0,0 +1,62 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Changes the players name. + Can only be accessed with the item 2430026. + */ + +function start() { + status = -1; + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if(cm.haveItem(2430026)) { + cm.sendYesNo("I can change your name for you if you would like?", 1); + } else { + cm.dispose(); + } + } else if(status == 1) { + cm.sendGetText("Please input your desired name below."); + } else if(status == 2) { + var text = cm.getText(); + var canCreate = Packages.client.MapleCharacter.canCreateChar(text); + if(canCreate) { + cm.getPlayer().setName(text); + cm.sendOk("Your name has been changed to #b" + text + "#k. You will have to login again for this to take effect.", 1); + cm.gainItem(2430026, -1); + } else { + cm.sendNext("I'm afraid you can't use the name #b" + text + "#k or it is already taken.", 1); + } + } else if(status == 3) { + cm.dispose(); + cm.getClient().disconnect(false, false); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/gachapon.js b/scripts/npc/world0/gachapon.js new file mode 100644 index 0000000000..a83e4c8661 --- /dev/null +++ b/scripts/npc/world0/gachapon.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC Base + Map Name (Map ID) + Extra NPC info. + */ + +var status; +var ticketId = 5220000; +var mapName = ["Henesys", "Ellinia", "Perion", "Kerning City", "Sleepywood", "Mushroom Shrine", "Showa Spa (M)", "Showa Spa (F)", "New Leaf City", "Nautilus"]; +var curMapName = ""; + +function start() { + status = -1; + curMapName = mapName[(cm.getNpc() != 9100117 && cm.getNpc() != 9100109) ? (cm.getNpc() - 9100100) : cm.getNpc() == 9100109 ? 8 : 9]; + + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if (status == 0 && mode == 1) { + if (cm.haveItem(ticketId)) { + cm.sendYesNo("You may use the " + curMapName + " Gachapon. Would you like to use your Gachapon ticket?"); + } else { + cm.sendSimple("Welcome to the " + curMapName + " Gachapon. How may I help you?\r\n\r\n#L0#What is Gachapon?#l\r\n#L1#Where can you buy Gachapon tickets?#l"); + } + } else if(status == 1 && cm.haveItem(ticketId)) { + if(cm.canHold(1302000) && cm.canHold(2000000) && cm.canHold(3010001) && cm.canHold(4000000)) { // One free slot in every inventory. + cm.gainItem(ticketId, -1); + cm.doGachapon(); + } else { + cm.sendOk("Please have at least one slot in your #rEQUIP, USE, SET-UP, #kand #rETC#k inventories free."); + } + cm.dispose(); + } else if(status == 1) { + if (selection == 0) { + cm.sendNext("Play Gachapon to earn rare scrolls, equipment, chairs, mastery books, and other cool items! All you need is a #bGachapon Ticket#k to be the winner of a random mix of items."); + } else { + cm.sendNext("Gachapon Tickets are available in the #rCash Shop#k and can be purchased using NX or Maple Points. Click on the red SHOP at the lower right hand corner of the screen to visit the #rCash Shop#k where you can purchase tickets."); + } + } else if(status == 2) { + cm.sendNextPrev("You'll find a variety of items from the " + curMapName + " Gachapon, but you'll most likely find items and scrolls related to " + curMapName + "."); + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/gachaponRemote.js b/scripts/npc/world0/gachaponRemote.js new file mode 100644 index 0000000000..994855da15 --- /dev/null +++ b/scripts/npc/world0/gachaponRemote.js @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* NPC Base + Map Name (Map ID) + Extra NPC info. + */ + +var status; +var ticketId = 5451000; +var mapName = ["Henesys", "Ellinia", "Perion", "Kerning City", "Sleepywood", "Mushroom Shrine", "Showa Spa (M)", "Showa Spa (F)", "New Leaf City", "Nautilus"]; +var curMapName = ""; + +function start() { + status = -1; + curMapName = mapName[(cm.getNpc() != 9100117 && cm.getNpc() != 9100109) ? (cm.getNpc() - 9100100) : cm.getNpc() == 9100109 ? 8 : 9]; + + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode < 0) + cm.dispose(); + else { + if (mode == 1) + status++; + else + status--; + if(status == 0 && cm.haveItem(ticketId)) { + if(cm.canHold(1302000) && cm.canHold(2000000) && cm.canHold(3010001) && cm.canHold(4000000)) { // One free slot in every inventory. + cm.gainItem(ticketId, -1); + cm.doGachapon(); + } else { + cm.sendOk("Please have at least one slot in your #rEQUIP, USE, SET-UP, #kand #rETC#k inventories free."); + } + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/gachaponold.js b/scripts/npc/world0/gachaponold.js new file mode 100644 index 0000000000..a8c3c413b9 --- /dev/null +++ b/scripts/npc/world0/gachaponold.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * Gachapon Script - Henesys, currently with Ellinia items + * @author Moogra + * @NPC : Gachapon - Henesys + * @NPC ID : 9100101 + * TODO: FINISH REAL TEXT, use sendSimpleNext for text selection +*/ + +var status = 0; +var remoteGachapon = false; +var ticketId = 5220000; + +function start() { + if(remoteGachapon) + ticketId = 5451000; + + if (cm.haveItem(ticketId)) { + cm.sendYesNo("You may use Gachapon. Would you like to use your Gachapon ticket?"); + } else { + cm.sendSimple("Welcome to the " + cm.getPlayer().getMap().getMapName() + " Gachapon. How may I help you?\r\n\r\n#L0#What is Gachapon?#l\r\n#L1#Where can you buy Gachapon tickets?#l"); + } +} + +function action(mode, type, selection){ + if(mode == -1) { + cm.dispose(); + } else if (mode == 1 && cm.haveItem(ticketId)) { + if(cm.canHold(1302000) && cm.canHold(2000000) && cm.canHold(3010001) && cm.canHold(4000000)) { // One free slot in every inventory. + cm.gainItem(ticketId, -1); + cm.doGachapon(cm.getNpc()); + } else { + cm.sendOk("Please have at least one slot in your #rEQUIP, USE, SET-UP, #kand #bETC#k inventories free."); + } + cm.dispose(); + } else { + if (mode > 0) { + status++; + if (selection == 0) { + cm.sendNext("Play Gachapon to earn rare scrolls, equipment, chairs, mastery books, and other cool items! All you need is a #bGachapon Ticket#k to be the winner of a random mix of items."); + } else if (selection == 1) { + cm.sendNext("Gachapon Tickets are available in the #rCash Shop#k and can be purchased using NX or Maple Points. Click on the red SHOP at the lower right hand corner of the screen to visit the #rCash Shop#k where you can purchase tickets."); + } else if (status == 2) { + cm.sendNext("You'll find a variety of items from the " + cm.getPlayer().getMap().getMapName() + " Gachapon, but you'll most likely find several related items and scrolls since " + cm.getPlayer().getMap().getMapName() + " is known as the town."); + cm.dispose(); + } else { + + } + } else { + cm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/npc/world0/unidentifiedNpc.js b/scripts/npc/world0/unidentifiedNpc.js new file mode 100644 index 0000000000..66ec4e2a18 --- /dev/null +++ b/scripts/npc/world0/unidentifiedNpc.js @@ -0,0 +1,3 @@ +function start() { + cm.sendOk("NPC: " + cm.getNpc() + " is not found, please report this."); +} \ No newline at end of file diff --git a/scripts/portal/Depart_ToKerning.js b/scripts/portal/Depart_ToKerning.js new file mode 100644 index 0000000000..fb775ffb92 --- /dev/null +++ b/scripts/portal/Depart_ToKerning.js @@ -0,0 +1,8 @@ +function enter(pi) { + pi.playPortalSound(); + var train = pi.getEventManager("KerningTrain"); + train.newInstance("KerningTrain"); + train.setProperty("player", pi.getPlayer().getName()); + train.startInstance(pi.getPlayer()); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Depart_TopFloor.js b/scripts/portal/Depart_TopFloor.js new file mode 100644 index 0000000000..b89a8f1862 --- /dev/null +++ b/scripts/portal/Depart_TopFloor.js @@ -0,0 +1,3 @@ +function enter(pi) { + pi.openNpc(1052125); //It is actually suppose to open the npc, because it leads to a boss map +} \ No newline at end of file diff --git a/scripts/portal/Depart_goBack00.js b/scripts/portal/Depart_goBack00.js new file mode 100644 index 0000000000..fcc1dd9f54 --- /dev/null +++ b/scripts/portal/Depart_goBack00.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(pi.getPlayer().getMap().getId() - 10,"left00"); +} \ No newline at end of file diff --git a/scripts/portal/Depart_goBack01.js b/scripts/portal/Depart_goBack01.js new file mode 100644 index 0000000000..ec229e784e --- /dev/null +++ b/scripts/portal/Depart_goBack01.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(pi.getPlayer().getMap().getId() -10,"left01"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Depart_goFoward0.js b/scripts/portal/Depart_goFoward0.js new file mode 100644 index 0000000000..e2e836afea --- /dev/null +++ b/scripts/portal/Depart_goFoward0.js @@ -0,0 +1,27 @@ +function enter(pi) { + if (pi.getPlayer().getMap().getId() == 103040410 && pi.isQuestCompleted(2287)) { + pi.playPortalSound(); + pi.warp(103040420, "right00"); + return true; + } else if (pi.getPlayer().getMap().getId() == 103040420 && pi.isQuestCompleted(2288)) { + pi.playPortalSound(); + pi.warp(103040430, "right00"); + return true; + } else if (pi.getPlayer().getMap().getId() == 103040410 && pi.isQuestStarted(2287)) { + pi.playPortalSound(); + pi.warp(103040420, "right00"); + return true; + } else if (pi.getPlayer().getMap().getId() == 103040420 && pi.isQuestStarted(2288)) { + pi.playPortalSound(); + pi.warp(103040430, "right00"); + return true; + } else { + if (pi.getPlayer().getMap().getId() == 103040440 || pi.getPlayer().getMap().getId() == 103040450) { + pi.playPortalSound(); + pi.warp(pi.getPlayer().getMap().getId() + 10, "right00"); + return true; + } + pi.getPlayer().dropMessage(5, "You cannot access this area."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/Depart_goFoward1.js b/scripts/portal/Depart_goFoward1.js new file mode 100644 index 0000000000..38d8774bbd --- /dev/null +++ b/scripts/portal/Depart_goFoward1.js @@ -0,0 +1,27 @@ +function enter(pi) { + if (pi.getPlayer().getMap().getId() == 103040410 && pi.isQuestCompleted(2287)) { + pi.playPortalSound(); + pi.warp(103040420, "right01"); + return true; + } else if (pi.getPlayer().getMap().getId() == 103040420 && pi.isQuestCompleted(2288)) { + pi.playPortalSound(); + pi.warp(103040430, "right01"); + return true; + } else if (pi.getPlayer().getMap().getId() == 103040410 && pi.isQuestStarted(2287)) { + pi.playPortalSound(); + pi.warp(103040420, "right01"); + return true; + } else if (pi.getPlayer().getMap().getId() == 103040420 && pi.isQuestStarted(2288)) { + pi.playPortalSound(); + pi.warp(103040430, "right01"); + return true; + } else { + if (pi.getPlayer().getMap().getId() == 103040440 || pi.getPlayer().getMap().getId() == 103040450) { + pi.playPortalSound(); + pi.warp(pi.getPlayer().getMap().getId() + 10, "right01"); + return true; + } + pi.getPlayer().dropMessage(5, "You cannot access this area."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/Depart_topOut.js b/scripts/portal/Depart_topOut.js new file mode 100644 index 0000000000..6c0da2e7f9 --- /dev/null +++ b/scripts/portal/Depart_topOut.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(103040300,0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/DragonEggNotice.js b/scripts/portal/DragonEggNotice.js new file mode 100644 index 0000000000..d859e609d0 --- /dev/null +++ b/scripts/portal/DragonEggNotice.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "egg=o")) { + return false; + } + pi.updateAreaInfo(22014, "egg=o;mo30=o;mo40=o;mo41=o;mo50=o;mo42=o;mo60=o"); + pi.sendImage("UI/tutorial/evan/8/0"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/EBoat1.js b/scripts/portal/EBoat1.js new file mode 100644 index 0000000000..5620378b26 --- /dev/null +++ b/scripts/portal/EBoat1.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + During The Ride To Ellinia +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.4 - Code clean up [Information] + 1.3 - Typo >.< [Information] + 1.2 - Update to support lastest script [Information] + 1.1 - The right statement to bring out the music [Information] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +function enter(pi) { + pi.warp(200090000, 4); + if(pi.getPlayer().getClient().getChannelServer().getEventSM().getEventManager("Boats").getProperty("haveBalrog").equals("true")) { + pi.changeMusic("Bgm04/ArabPirate"); + } + return true; +} diff --git a/scripts/portal/EBoat2.js b/scripts/portal/EBoat2.js new file mode 100644 index 0000000000..74f108e075 --- /dev/null +++ b/scripts/portal/EBoat2.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + During The Ride To Ellinia +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.4 - Code clean up [Information] + 1.3 - Typo >.< [Information] + 1.2 - Update to support lastest script [Information] + 1.1 - The right statement to bring out the music [Information] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +function enter(pi) { + pi.warp(200090000, 5); + if(pi.getPlayer().getClient().getChannelServer().getEventSM().getEventManager("Boats").getProperty("haveBalrog").equals("true")) { + pi.changeMusic("Bgm04/ArabPirate"); + } + return true; +} diff --git a/scripts/portal/MD_drakeroom.js b/scripts/portal/MD_drakeroom.js new file mode 100644 index 0000000000..f24f062c48 --- /dev/null +++ b/scripts/portal/MD_drakeroom.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Rabbit +*/ +var baseid = 105090311; +var dungeonid = 105090320; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_golem.js b/scripts/portal/MD_golem.js new file mode 100644 index 0000000000..ff4ff190db --- /dev/null +++ b/scripts/portal/MD_golem.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +MiniDungeon - Golem +*/ + +var baseid = 105040304; +var dungeonid = 105040320; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_mushroom.js b/scripts/portal/MD_mushroom.js new file mode 100644 index 0000000000..00959437c6 --- /dev/null +++ b/scripts/portal/MD_mushroom.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +MiniDungeon - Mushroom +*/ + +var baseid = 105050100; +var dungeonid = 105050101; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_pig.js b/scripts/portal/MD_pig.js new file mode 100644 index 0000000000..a658aa8ed2 --- /dev/null +++ b/scripts/portal/MD_pig.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +MiniDungeon - Pig +*/ + +var baseid = 100020000; +var dungeonid = 100020100; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_protect.js b/scripts/portal/MD_protect.js new file mode 100644 index 0000000000..f841266045 --- /dev/null +++ b/scripts/portal/MD_protect.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Newts +*/ +var baseid = 240040520; +var dungeonid = 240040900; +var dungeons = 19; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_rabbit.js b/scripts/portal/MD_rabbit.js new file mode 100644 index 0000000000..39fcc467b8 --- /dev/null +++ b/scripts/portal/MD_rabbit.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Rabbit +*/ +var baseid = 221023400; +var dungeonid = 221023401; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_remember.js b/scripts/portal/MD_remember.js new file mode 100644 index 0000000000..cf193984c4 --- /dev/null +++ b/scripts/portal/MD_remember.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Skele +*/ +var baseid = 240040511; +var dungeonid = 240040800; +var dungeons = 19; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_roundTable.js b/scripts/portal/MD_roundTable.js new file mode 100644 index 0000000000..4552b02add --- /dev/null +++ b/scripts/portal/MD_roundTable.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Rabbit +*/ +var baseid = 240020500; +var dungeonid = 240020512; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_sand.js b/scripts/portal/MD_sand.js new file mode 100644 index 0000000000..e5dc60524b --- /dev/null +++ b/scripts/portal/MD_sand.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Sand +*/ +var baseid = 260020600; +var dungeonid = 260020630; +var dungeons = 34; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/MD_treasure.js b/scripts/portal/MD_treasure.js new file mode 100644 index 0000000000..28fe853839 --- /dev/null +++ b/scripts/portal/MD_treasure.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +MiniDungeon - Pirate +*/ +var baseid = 251010402; +var dungeonid = 251010410; +var dungeons = 30; + +function enter(pi) { + if (pi.getMapId() == baseid) { + if (pi.getParty() != null) { + if (pi.isLeader()) { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warpParty(dungeonid + i); + return true; + } + } + } else { + pi.playerMessage(5, "You are not the leader of the party."); + return false; + } + } else { + for (var i = 0; i < dungeons; i++) { + if (pi.getPlayerCount(dungeonid + i) == 0) { + pi.warp(dungeonid + i); + return true; + } + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; + } else { + pi.playPortalSound(); + pi.warp(baseid, "MD00"); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/Masteria_B1_1.js b/scripts/portal/Masteria_B1_1.js new file mode 100644 index 0000000000..cdc0150b0e --- /dev/null +++ b/scripts/portal/Masteria_B1_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010005, "sU6_1"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_B2_1.js b/scripts/portal/Masteria_B2_1.js new file mode 100644 index 0000000000..cdc0150b0e --- /dev/null +++ b/scripts/portal/Masteria_B2_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010005, "sU6_1"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_B3_1.js b/scripts/portal/Masteria_B3_1.js new file mode 100644 index 0000000000..cdc0150b0e --- /dev/null +++ b/scripts/portal/Masteria_B3_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010005, "sU6_1"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CC1_A.js b/scripts/portal/Masteria_CC1_A.js new file mode 100644 index 0000000000..b3e5983c2b --- /dev/null +++ b/scripts/portal/Masteria_CC1_A.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + pi.warp(610020015, "CC6_A"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CC6_A.js b/scripts/portal/Masteria_CC6_A.js new file mode 100644 index 0000000000..492745e190 --- /dev/null +++ b/scripts/portal/Masteria_CC6_A.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + pi.warp(610020010, "CC1_A"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM1_A.js b/scripts/portal/Masteria_CM1_A.js new file mode 100644 index 0000000000..37ee3b9969 --- /dev/null +++ b/scripts/portal/Masteria_CM1_A.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020000, "CM1_B"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM1_B.js b/scripts/portal/Masteria_CM1_B.js new file mode 100644 index 0000000000..2d98cf1f85 --- /dev/null +++ b/scripts/portal/Masteria_CM1_B.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020000, "CM1_C"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM1_C.js b/scripts/portal/Masteria_CM1_C.js new file mode 100644 index 0000000000..5aaa69e145 --- /dev/null +++ b/scripts/portal/Masteria_CM1_C.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020000, "CM1_D"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM1_D.js b/scripts/portal/Masteria_CM1_D.js new file mode 100644 index 0000000000..d29e6720a6 --- /dev/null +++ b/scripts/portal/Masteria_CM1_D.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020000, "CM1_E"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM2_B.js b/scripts/portal/Masteria_CM2_B.js new file mode 100644 index 0000000000..109e582826 --- /dev/null +++ b/scripts/portal/Masteria_CM2_B.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020001, "CM2_C"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM2_C.js b/scripts/portal/Masteria_CM2_C.js new file mode 100644 index 0000000000..20c813b844 --- /dev/null +++ b/scripts/portal/Masteria_CM2_C.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020001, "CM2_D"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM2_D.js b/scripts/portal/Masteria_CM2_D.js new file mode 100644 index 0000000000..eb47f7d5d4 --- /dev/null +++ b/scripts/portal/Masteria_CM2_D.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020001, "CM2_E"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_CM2_E.js b/scripts/portal/Masteria_CM2_E.js new file mode 100644 index 0000000000..4c231f86c3 --- /dev/null +++ b/scripts/portal/Masteria_CM2_E.js @@ -0,0 +1,29 @@ +F/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992039)) { + pi.warp(610020001, "CM2_F"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_U2_1.js b/scripts/portal/Masteria_U2_1.js new file mode 100644 index 0000000000..70a4083aa7 --- /dev/null +++ b/scripts/portal/Masteria_U2_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010004, "U5_1"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_U3_1.js b/scripts/portal/Masteria_U3_1.js new file mode 100644 index 0000000000..178de9a798 --- /dev/null +++ b/scripts/portal/Masteria_U3_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010201, "sB2_1"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_U5_1.js b/scripts/portal/Masteria_U5_1.js new file mode 100644 index 0000000000..cb08e4cdbb --- /dev/null +++ b/scripts/portal/Masteria_U5_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010001, "sU2_1"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_U5_2.js b/scripts/portal/Masteria_U5_2.js new file mode 100644 index 0000000000..70a4083aa7 --- /dev/null +++ b/scripts/portal/Masteria_U5_2.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010004, "U5_1"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/Masteria_U6_1.js b/scripts/portal/Masteria_U6_1.js new file mode 100644 index 0000000000..1314174c78 --- /dev/null +++ b/scripts/portal/Masteria_U6_1.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +function enter(pi) { + if (pi.hasItem(3992040)) { + pi.warp(610010002, "sU3_1"); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/NextMap.js b/scripts/portal/NextMap.js new file mode 100644 index 0000000000..c0cbd12fe4 --- /dev/null +++ b/scripts/portal/NextMap.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(pi.getMapId() + 100); + return true; +} \ No newline at end of file diff --git a/scripts/portal/OBoat1.js b/scripts/portal/OBoat1.js new file mode 100644 index 0000000000..2904efbd5f --- /dev/null +++ b/scripts/portal/OBoat1.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + During The Ride To Orbis +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.4 - Code clean up [Information] + 1.4 - Remove event instance [Information] + 1.3 - Typo >.< [Information] + 1.2 - Update to support lastest script [Information] + 1.1 - The right statement to bring out the music [Information] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +function enter(pi) { + pi.warp(200090010, 4); + if(pi.getPlayer().getClient().getChannelServer().getEventSM().getEventManager("Boats").getProperty("haveBalrog").equals("true")) { + pi.changeMusic("Bgm04/ArabPirate"); + } + return true; +} diff --git a/scripts/portal/OBoat2.js b/scripts/portal/OBoat2.js new file mode 100644 index 0000000000..704e618f68 --- /dev/null +++ b/scripts/portal/OBoat2.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/** +-- Odin JavaScript -------------------------------------------------------------------------------- + During The Ride To Orbis +-- By --------------------------------------------------------------------------------------------- + Information +-- Version Info ----------------------------------------------------------------------------------- + 1.4 - Code clean up [Information] + 1.4 - Remove event instance [Information] + 1.3 - Typo >.< [Information] + 1.2 - Update to support lastest script [Information] + 1.1 - The right statement to bring out the music [Information] + 1.0 - First Version by Information +--------------------------------------------------------------------------------------------------- +**/ + +function enter(pi) { + pi.warp(200090010, 5); + if (pi.getPlayer().getClient().getChannelServer().getEventSM().getEventManager("Boats").getProperty("haveBalrog").equals("true")) + pi.changeMusic("Bgm04/ArabPirate"); + return true; +} diff --git a/scripts/portal/Pianus.js b/scripts/portal/Pianus.js new file mode 100644 index 0000000000..c8bf1801cf --- /dev/null +++ b/scripts/portal/Pianus.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(230040420, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Populatus00.js b/scripts/portal/Populatus00.js new file mode 100644 index 0000000000..09175ccdfa --- /dev/null +++ b/scripts/portal/Populatus00.js @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +function enter(pi) { + var papuMap = pi.getClient().getChannelServer().getMapFactory().getMap(220080001); + if (papuMap.getCharacters().size() == 0) { + pi.getPlayer().dropMessage("The room is empty. A perfect opportunity to challenge the boss."); + papuMap.resetReactors(); + } else { // someone is inside + for (var i = 0; i < 3; i++) { + if (papuMap.getMonsterById(8500000 + i) != null) { + pi.getPlayer().dropMessage("Someone is fighting Papulatus."); + return false; + } + } + } + pi.warp(220080001, "st00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out0.js b/scripts/portal/Spacegaga_out0.js new file mode 100644 index 0000000000..d05962657d --- /dev/null +++ b/scripts/portal/Spacegaga_out0.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) { + pi.warp(922240200); + pi.getPlayer().cancelEffect(2360002); + } else + pi.warp(pi.getPlayer().getMapId()); + + return true; +} \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out1.js b/scripts/portal/Spacegaga_out1.js new file mode 100644 index 0000000000..d05962657d --- /dev/null +++ b/scripts/portal/Spacegaga_out1.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) { + pi.warp(922240200); + pi.getPlayer().cancelEffect(2360002); + } else + pi.warp(pi.getPlayer().getMapId()); + + return true; +} \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out2.js b/scripts/portal/Spacegaga_out2.js new file mode 100644 index 0000000000..d05962657d --- /dev/null +++ b/scripts/portal/Spacegaga_out2.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) { + pi.warp(922240200); + pi.getPlayer().cancelEffect(2360002); + } else + pi.warp(pi.getPlayer().getMapId()); + + return true; +} \ No newline at end of file diff --git a/scripts/portal/Spacegaga_out3.js b/scripts/portal/Spacegaga_out3.js new file mode 100644 index 0000000000..d05962657d --- /dev/null +++ b/scripts/portal/Spacegaga_out3.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + if (pi.getPlayer().getEvents().getGagaRescue().fallAndGet() > 3) { + pi.warp(922240200); + pi.getPlayer().cancelEffect(2360002); + } else + pi.warp(pi.getPlayer().getMapId()); + + return true; +} \ No newline at end of file diff --git a/scripts/portal/TD_MC_Egate.js b/scripts/portal/TD_MC_Egate.js new file mode 100644 index 0000000000..88a7ca6401 --- /dev/null +++ b/scripts/portal/TD_MC_Egate.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(106021300, 0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/TD_MC_enterboss1.js b/scripts/portal/TD_MC_enterboss1.js new file mode 100644 index 0000000000..9f2d7ad6a6 --- /dev/null +++ b/scripts/portal/TD_MC_enterboss1.js @@ -0,0 +1,3 @@ +function enter(pi) { + pi.openNpc(1300013); +} \ No newline at end of file diff --git a/scripts/portal/TD_MC_enterboss2.js b/scripts/portal/TD_MC_enterboss2.js new file mode 100644 index 0000000000..41b63bcb0c --- /dev/null +++ b/scripts/portal/TD_MC_enterboss2.js @@ -0,0 +1,35 @@ +/* + This file is part of the ZeroFusion MapleStory Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + ZeroFusion organized by "RMZero213" + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var dungeonid = 106021600; +var dungeons = 10; + +function enter(pi) { + for(var i = 0; i < dungeons; i++) { + if (pi.getMap(dungeonid + i).getCharactersSize() == 0) { + pi.warp(dungeonid + i, 0); + return true; + } + } + pi.playerMessage(5, "All of the Mini-Dungeons are in use right now, please try again later."); + return false; +} diff --git a/scripts/portal/TD_MC_first.js b/scripts/portal/TD_MC_first.js new file mode 100644 index 0000000000..b9020c75ce --- /dev/null +++ b/scripts/portal/TD_MC_first.js @@ -0,0 +1,18 @@ +function enter(pi) { + if (pi.isQuestStarted(2301) || pi.isQuestCompleted(2301) + || pi.isQuestStarted(2302) || pi.isQuestCompleted(2302) + || pi.isQuestStarted(2303) || pi.isQuestCompleted(2303) + || pi.isQuestStarted(2304) || pi.isQuestCompleted(2304) + || pi.isQuestStarted(2305) || pi.isQuestCompleted(2305) + || pi.isQuestStarted(2306) || pi.isQuestCompleted(2306) + || pi.isQuestStarted(2307) || pi.isQuestCompleted(2307) + || pi.isQuestStarted(2308) || pi.isQuestCompleted(2308) + || pi.isQuestStarted(2309) || pi.isQuestCompleted(2309) + || pi.isQuestStarted(2310) || pi.isQuestCompleted(2310)) { + pi.playPortalSound(); + pi.warp(106020000, 0); + return true; + } + pi.playerMessage(5, "A strange force is blocking you from enetering"); + return false; +} \ No newline at end of file diff --git a/scripts/portal/TD_MC_jump.js b/scripts/portal/TD_MC_jump.js new file mode 100644 index 0000000000..f82ef0fc26 --- /dev/null +++ b/scripts/portal/TD_MC_jump.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(106020501, 0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/Zakum05.js b/scripts/portal/Zakum05.js new file mode 100644 index 0000000000..cf43e34f71 --- /dev/null +++ b/scripts/portal/Zakum05.js @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Zakum Entrance +*/ + +function enter(pi) { + if (!pi.haveItem(4001017)) { + pi.getPlayer().dropMessage(6,"You do not have the Eye of Fire. You may not face the boss."); + return false; + } + //var exped = pi.getEventManager("ZakumBattle").getInstance("ZakumBattle_" + pi.getPlayer().getClient().getChannel()); + //if (exped != null) { + // pi.getPlayer().dropMessage(6,"The battle at Zakum's Altar is currently underway."); + // return false; + //} + pi.warp(211042400,"west00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aMatchMove2.js b/scripts/portal/aMatchMove2.js new file mode 100644 index 0000000000..a73a1a4b65 --- /dev/null +++ b/scripts/portal/aMatchMove2.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author: Moogra + * @portal: aMatchMove2 + * @purpose: warps user out from Ariant PQ + */ + +function enter(pi) { + pi.warp(pi.getPlayer().getSavedLocation("MIRROR")); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice00.js b/scripts/portal/advice00.js new file mode 100644 index 0000000000..4d558a1ba9 --- /dev/null +++ b/scripts/portal/advice00.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("You can move by using the arrow keys.", 250, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice01.js b/scripts/portal/advice01.js new file mode 100644 index 0000000000..815d08171e --- /dev/null +++ b/scripts/portal/advice01.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Click \r\\#b#k", 100, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice02.js b/scripts/portal/advice02.js new file mode 100644 index 0000000000..affd42190e --- /dev/null +++ b/scripts/portal/advice02.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Press #e#b[Alt]#k#n to\r\\ JUMP.", 100, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice03.js b/scripts/portal/advice03.js new file mode 100644 index 0000000000..ec9e5fb8a4 --- /dev/null +++ b/scripts/portal/advice03.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Press #e#b[Up]#k on the arrow key#n to climb up the ladder or rope.", 350, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice04.js b/scripts/portal/advice04.js new file mode 100644 index 0000000000..dd6aae2b40 --- /dev/null +++ b/scripts/portal/advice04.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Click \r\\#b", 100, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice05.js b/scripts/portal/advice05.js new file mode 100644 index 0000000000..12fb021c1b --- /dev/null +++ b/scripts/portal/advice05.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Press #e#b[Q]#k#n to view the Quest window.", 250, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice06.js b/scripts/portal/advice06.js new file mode 100644 index 0000000000..c69c823a58 --- /dev/null +++ b/scripts/portal/advice06.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Press the #e#b[Up]#k arrow#n to use the portal \r\\and move to the next map.", 230, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice07.js b/scripts/portal/advice07.js new file mode 100644 index 0000000000..8a3f7b1b83 --- /dev/null +++ b/scripts/portal/advice07.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("You can view the World Map by pressing the #e#b[W]#k#nkey.", 350, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice08.js b/scripts/portal/advice08.js new file mode 100644 index 0000000000..194ea1328b --- /dev/null +++ b/scripts/portal/advice08.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("You can check your character's stats by pressing the #e#b[S]#k#nkey.", 350, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/advice09.js b/scripts/portal/advice09.js new file mode 100644 index 0000000000..754bad4d25 --- /dev/null +++ b/scripts/portal/advice09.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.showInstruction("Press #e#b[Down]#k on the arrow key#n and#e#b[Alt]#k#n at the same time to jump downwards.", 450, 6); + return true; +} \ No newline at end of file diff --git a/scripts/portal/adviceMap.js b/scripts/portal/adviceMap.js new file mode 100644 index 0000000000..79515a7ddd --- /dev/null +++ b/scripts/portal/adviceMap.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter (pi) { + pi.showInstruction("Press the #e#b[Up]#k arrow#n to use the portal and move to the next map.", 230, 5); + return true; +} diff --git a/scripts/portal/aqua_pq_boss_0.js b/scripts/portal/aqua_pq_boss_0.js new file mode 100644 index 0000000000..4aacce8e6f --- /dev/null +++ b/scripts/portal/aqua_pq_boss_0.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(230040420, 0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorAloneX.js b/scripts/portal/aranTutorAloneX.js new file mode 100644 index 0000000000..d8f61aeb26 --- /dev/null +++ b/scripts/portal/aranTutorAloneX.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.warp(914000100, 1); + return true; + } \ No newline at end of file diff --git a/scripts/portal/aranTutorArrow0.js b/scripts/portal/aranTutorArrow0.js new file mode 100644 index 0000000000..578ba659d4 --- /dev/null +++ b/scripts/portal/aranTutorArrow0.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "arr0=o")) { + return false; + } + pi.updateAreaInfo(21002, "arr0=o;mo1=o;mo2=o;mo3=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorArrow1.js b/scripts/portal/aranTutorArrow1.js new file mode 100644 index 0000000000..2d8e19ab62 --- /dev/null +++ b/scripts/portal/aranTutorArrow1.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "arr1=o")) { + return false; + } + pi.updateAreaInfo(21002, "normal=o;arr0=o;arr1=o;mo1=o;mo2=o;mo3=o;mo4=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorArrow2.js b/scripts/portal/aranTutorArrow2.js new file mode 100644 index 0000000000..8c640372fb --- /dev/null +++ b/scripts/portal/aranTutorArrow2.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "arr2=o")) { + return false; + } + pi.updateAreaInfo(21002, "normal=o;arr0=o;arr1=o;arr2=o;mo1=o;chain=o;mo2=o;mo3=o;mo4=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorArrow3.js b/scripts/portal/aranTutorArrow3.js new file mode 100644 index 0000000000..c4549c4c6d --- /dev/null +++ b/scripts/portal/aranTutorArrow3.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "arr3=o")) { + return false; + } + pi.updateAreaInfo(21002, "cmd=o;normal=o;arr0=o;arr1=o;arr2=o;arr3=o;mo1=o;chain=o;mo2=o;mo3=o;mo4=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorGuide0.js b/scripts/portal/aranTutorGuide0.js new file mode 100644 index 0000000000..6d73bcee23 --- /dev/null +++ b/scripts/portal/aranTutorGuide0.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "normal=o")) { + return false; + } + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialGuide1"); + pi.message("To use a Regular Attack on monsters, press the Ctrl key."); + pi.updateAreaInfo(21002, "normal=o;arr0=o;mo1=o;mo2=o;mo3=o"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorGuide1.js b/scripts/portal/aranTutorGuide1.js new file mode 100644 index 0000000000..b7931bb679 --- /dev/null +++ b/scripts/portal/aranTutorGuide1.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "chain=o")) { + return false; + } + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialGuide2"); + pi.message("You can use Consecutive Attacks by pressing the Ctrl key multiple times."); + pi.updateAreaInfo(21002, "normal=o;arr0=o;arr1=o;mo1=o;chain=o;mo2=o;mo3=o;mo4=o"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorGuide2.js b/scripts/portal/aranTutorGuide2.js new file mode 100644 index 0000000000..7612383cb5 --- /dev/null +++ b/scripts/portal/aranTutorGuide2.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "cmd=o")) { + return false; + } + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialGuide3"); + pi.message("You can use a Command Attack by pressing both the arrow key and the attack key after a Consecutive Attack."); + pi.updateAreaInfo(21002, "cmd=o;normal=o;arr0=o;arr1=o;arr2=o;mo1=o;chain=o;mo2=o;mo3=o;mo4=o"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorLost.js b/scripts/portal/aranTutorLost.js new file mode 100644 index 0000000000..6a21905230 --- /dev/null +++ b/scripts/portal/aranTutorLost.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "fin=o")) { + return false; + } + pi.updateAreaInfo(21002, "cmd=o;normal=o;arr0=o;arr1=o;arr2=o;arr3=o;fin=o;mo1=o;chain=o;mo2=o;mo3=o;mo4=o"); + pi.showIntro("Effect/Direction1.img/aranTutorial/ClickChild"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorMono0.js b/scripts/portal/aranTutorMono0.js new file mode 100644 index 0000000000..87d57dc264 --- /dev/null +++ b/scripts/portal/aranTutorMono0.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "mo1=o")) { + return false; + } + pi.updateAreaInfo(21002, "mo1=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/legendBalloon1"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorMono1.js b/scripts/portal/aranTutorMono1.js new file mode 100644 index 0000000000..025466aa8b --- /dev/null +++ b/scripts/portal/aranTutorMono1.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "mo2=o")) { + return false; + } + pi.playSound("Aran/balloon"); + pi.updateAreaInfo(21002, "mo1=o;mo2=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/legendBalloon2"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorMono2.js b/scripts/portal/aranTutorMono2.js new file mode 100644 index 0000000000..9e01844043 --- /dev/null +++ b/scripts/portal/aranTutorMono2.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "mo3=o")) { + return false; + } + pi.updateAreaInfo(21002, "mo1=o;mo2=o;mo3=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/legendBalloon3"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorMono3.js b/scripts/portal/aranTutorMono3.js new file mode 100644 index 0000000000..f3059917ec --- /dev/null +++ b/scripts/portal/aranTutorMono3.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(21002, "mo4=o")) { + return false; + } + pi.updateAreaInfo(21002, "normal=o;arr0=o;mo1=o;mo2=o;mo3=o;mo4=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/legendBalloon6"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorOut1.js b/scripts/portal/aranTutorOut1.js new file mode 100644 index 0000000000..92c08110d7 --- /dev/null +++ b/scripts/portal/aranTutorOut1.js @@ -0,0 +1,19 @@ +/* + @Author: kevintjuh93 +*/ +function enter(pi) { + if (pi.isQuestStarted(21000)) { + //lol nexon does this xD + pi.teachSkill(20000017, 0, -1, -1); + pi.teachSkill(20000018, 0, -1, -1); + //nexon sends updatePlayerStats MapleStat.AVAILABLESP 0 + pi.teachSkill(20000017, 1, 0, -1); + pi.teachSkill(20000018, 1, 0, -1); + //actually nexon does enableActions here :P + pi.warp(914000200, 1); + return true; + } else { + pi.message("You can only exit after you accept the quest from Athena Pierce, who is to your right."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/aranTutorOut2.js b/scripts/portal/aranTutorOut2.js new file mode 100644 index 0000000000..8bf246e5af --- /dev/null +++ b/scripts/portal/aranTutorOut2.js @@ -0,0 +1,11 @@ +function enter(pi) { + //lol nexon does this xD + pi.teachSkill(20000014, 0, -1, -1); + pi.teachSkill(20000015, 0, -1, -1); + //nexon sends updatePlayerStats MapleStat.AVAILABLESP 0 + pi.teachSkill(20000014, 1, 0, -1); + pi.teachSkill(20000015, 1, 0, -1); + //actually nexon does enableActions here :P + pi.warp(914000210, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/aranTutorOut3.js b/scripts/portal/aranTutorOut3.js new file mode 100644 index 0000000000..ea96fc05ad --- /dev/null +++ b/scripts/portal/aranTutorOut3.js @@ -0,0 +1,9 @@ +function enter(pi) { + //lol nexon does this xD + pi.teachSkill(20000016, 0, -1, -1); + //nexon sends updatePlayerStats MapleStat.AVAILABLESP 0 + pi.teachSkill(20000016, 1, 0, -1); + //actually nexon does enableActions here :P + pi.warp(914000220, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/ariantMout.js b/scripts/portal/ariantMout.js new file mode 100644 index 0000000000..8868b5f67c --- /dev/null +++ b/scripts/portal/ariantMout.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(980010020); + return true; +} \ No newline at end of file diff --git a/scripts/portal/ariantMout2.js b/scripts/portal/ariantMout2.js new file mode 100644 index 0000000000..6a264cda01 --- /dev/null +++ b/scripts/portal/ariantMout2.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(980010000); + return true; +} \ No newline at end of file diff --git a/scripts/portal/babyPigOut.js b/scripts/portal/babyPigOut.js new file mode 100644 index 0000000000..56559ffbe3 --- /dev/null +++ b/scripts/portal/babyPigOut.js @@ -0,0 +1,9 @@ +function enter(pi) { + if (pi.isQuestCompleted(22015)) { + pi.playPortalSound(); + pi.warp(100030300, 2); + } else { + pi.playerMessage(5, "Please rescue the baby pig!");//not gms like + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/bedroom_out.js b/scripts/portal/bedroom_out.js new file mode 100644 index 0000000000..e3629ea4ce --- /dev/null +++ b/scripts/portal/bedroom_out.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.isQuestStarted(2570)) { + pi.warp(120000101); + return true; + } + pi.earnTitle("You still got some stuff to take care of. I can see it in your eyes. Wait...no, those are eye boogers."); + return false; +} \ No newline at end of file diff --git a/scripts/portal/cannon_tuto_06.js b/scripts/portal/cannon_tuto_06.js new file mode 100644 index 0000000000..e1474fdaa1 --- /dev/null +++ b/scripts/portal/cannon_tuto_06.js @@ -0,0 +1,6 @@ +function enter(pi) { + pi.setDirectionStatus(true); + pi.lockUI2(); + pi.openNpc(3, 1096003); + return true; +} \ No newline at end of file diff --git a/scripts/portal/cannon_tuto_07.js b/scripts/portal/cannon_tuto_07.js new file mode 100644 index 0000000000..f61b04491b --- /dev/null +++ b/scripts/portal/cannon_tuto_07.js @@ -0,0 +1,11 @@ +function enter(pi) { + pi.setDirectionStatus(true); + pi.lockUI2(); + pi.spawnNPC(579711, 1096012, -51, -97, 0, true);//A2 01 01 7F D8 08 00 4C B9 10 00 CD FF 9F FF 01 8A 00 9B FF FF FF 01 + pi.setNPCValue(579711, "summon"); + pi.updateInfo("fly", "579711"); + pi.sendDirectionInfo(3, 0); + pi.sendDirectionInfo(3, 2); + pi.sendDirectionInfo(4, 0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/cannon_tuto_09.js b/scripts/portal/cannon_tuto_09.js new file mode 100644 index 0000000000..1ebd085a40 --- /dev/null +++ b/scripts/portal/cannon_tuto_09.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.openNpc(8, 1096005); + return true; +} \ No newline at end of file diff --git a/scripts/portal/cannon_tuto_10.js b/scripts/portal/cannon_tuto_10.js new file mode 100644 index 0000000000..17c8d94afb --- /dev/null +++ b/scripts/portal/cannon_tuto_10.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.unlockUI(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/captinsg00.js b/scripts/portal/captinsg00.js new file mode 100644 index 0000000000..32e638a27f --- /dev/null +++ b/scripts/portal/captinsg00.js @@ -0,0 +1,36 @@ +//importPackage(server.maps); +//importPackage(net.channel); +//importPackage(tools); +// +//function enter(pi) { +// var mapid = 541010100; +// var map = ChannelServer.getInstance(pi.getPlayer().getClient().getChannel()).getMapFactory().getMap(mapid); +// var mapchars = map.getCharacters(); +// if (mapchars.isEmpty()) { +// var mapobjects = map.getMapObjects(); +// var iter = mapobjects.iterator(); +// while (iter.hasNext()) { +// o = iter.next(); +// if (o.getType() == MapleMapObjectType.MONSTER){ +// map.removeMapObject(o); +// } +// } +// map.resetReactors(); +// } else { +// var mapobjects = map.getMapObjects(); +// var boss = null; +// var iter = mapobjects.iterator(); +// while (iter.hasNext()) { +// o = iter.next(); +// if (o.getType() == MapleMapObjectType.MONSTER){ +// boss = o; +// } +// } +// if (boss != null) { +// pi.getPlayer().dropMessage(5, "The battle against the boss has already begun, so you may not enter this place."); +// return false; +// } +// } +// pi.warp(541010100, "sp"); +// return true; +//} \ No newline at end of file diff --git a/scripts/portal/contactDragon.js b/scripts/portal/contactDragon.js new file mode 100644 index 0000000000..10e7ce248f --- /dev/null +++ b/scripts/portal/contactDragon.js @@ -0,0 +1,7 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.playPortalSound(); + pi.warp(900090100); + return true; +} \ No newline at end of file diff --git a/scripts/portal/davy_next0.js b/scripts/portal/davy_next0.js new file mode 100644 index 0000000000..16aa96d2da --- /dev/null +++ b/scripts/portal/davy_next0.js @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*********** +@Author Jvlaple +***********/ + +function enter(pi) { + var nextMap = 925100100; + var eim = pi.getPlayer().getEventInstance(); + var party = eim.getPlayers(); + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + var mobCount = pi.countMonster(); + var playerS = pi.isLeader(); + // only let people through if the eim is ready + if (playerS == false) { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "Only the party leader may enter this portal."); + return false; + }else if (mobCount < 1) { + eim.setProperty("entryTimeStamp", 1000 * 60 * 6); + for(var g=0; g + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author: kevintjuh93/moogra + * @portal: dojang_exit + * @purpose: warps user out + */ + +function enter(pi) { + var map = pi.getPlayer().getSavedLocation("MIRROR"); + if(map == -1) + map = 100000000; + pi.warp(map); + return true; +} \ No newline at end of file diff --git a/scripts/portal/dojang_next.js b/scripts/portal/dojang_next.js new file mode 100644 index 0000000000..09dfab4091 --- /dev/null +++ b/scripts/portal/dojang_next.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @Author Moogra + */ +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("door").getState() == 1) { + if ((pi.getPlayer().getMapId() / 100) % 100 != 38) { + if (pi.getPlayer().getMap().getCharacters().size() == 1) { + pi.resetMap(pi.getPlayer().getMapId()); + } + pi.getPlayer().message("You received " + pi.getPlayer().addDojoPointsByMap() + " training points. Your total training points score is now " + pi.getPlayer().getDojoPoints() + "."); + pi.warp(pi.getPlayer().getMap().getId() + 100, 0); + } else { + pi.warp(925020003, 0); + pi.getPlayer().gainExp(2000 * pi.getPlayer().getDojoPoints(), true, true, true); + } + return true; + } else { + pi.getPlayer().message("The door is not open yet."); + return false; + } +} diff --git a/scripts/portal/dojang_tuto.js b/scripts/portal/dojang_tuto.js new file mode 100644 index 0000000000..f18a85401a --- /dev/null +++ b/scripts/portal/dojang_tuto.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: Traitor + Map(s): So Gong's maps + Desc: doesn't do anything man. ANYTHING. +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getMonsterById(9300216) != null) { + pi.getPlayer().enteredScript("dojang_Msg", pi.getPlayer().getMap().getId()); + pi.warp(925020001, 0); + } else { + pi.getPlayer().message("So Gong: Haha! You're going to run away like a coward? I won't let you get away that easily!"); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/dojang_up.js b/scripts/portal/dojang_up.js new file mode 100644 index 0000000000..704e229086 --- /dev/null +++ b/scripts/portal/dojang_up.js @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author: Moogra + * @function: Warp character up and award player with dojo points + * @maps: All Dojo fighting maps +*/ + + +function enter(pi) { + try { + if (pi.getPlayer().getMap().getMonsterById(9300216) != null) { + pi.goDojoUp(); + pi.getPlayer().getMap().setReactorState(); + var stage = (pi.getPlayer().getMapId() / 100) % 100; + if ((stage - (stage / 6) | 0) == pi.getPlayer().getVanquisherStage() && !pi.getPlayer().getDojoParty()) // we can also try 5 * stage / 6 | 0 + 1 + pi.getPlayer().setVanquisherKills(pi.getPlayer().getVanquisherKills() + 1); + } else { + pi.getPlayer().message("There are still some monsters remaining."); + } + pi.enableActions(); + return true; + } catch(err) { + pi.getPlayer().dropMessage(err); + } +} diff --git a/scripts/portal/dracoout.js b/scripts/portal/dracoout.js new file mode 100644 index 0000000000..1d71f561e1 --- /dev/null +++ b/scripts/portal/dracoout.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(240000100, "east00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/dragonNest.js b/scripts/portal/dragonNest.js new file mode 100644 index 0000000000..319034d011 --- /dev/null +++ b/scripts/portal/dragonNest.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(240040611, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/dragoneyes.js b/scripts/portal/dragoneyes.js new file mode 100644 index 0000000000..dfd5b6e4d2 --- /dev/null +++ b/scripts/portal/dragoneyes.js @@ -0,0 +1,9 @@ +function enter(pi) { + if (pi.isQuestCompleted(22012)) { + return false; + } else { + pi.forceCompleteQuest(22012); + } + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/elevator.js b/scripts/portal/elevator.js new file mode 100644 index 0000000000..e9798b2631 --- /dev/null +++ b/scripts/portal/elevator.js @@ -0,0 +1,18 @@ +function enter(pi) { + try { + var elevator = pi.getEventManager("elevator"); + if (elevator == null) { + pi.getPlayer().dropMessage(5, "The elevator is under maintenance."); + } else if (elevator.getProperty(pi.getMapId() == 222020100 ? ("goingUp") : ("goingDown")).equals("false")) { + pi.warp(pi.getMapId() == 222020100 ? 222020110 : 222020210, 0); + //elevator.getIv().invokeFunction(pi.getMapId() == 222020110 ? "goUp" : "goDown"); + return true; + } else if (elevator.getProperty(pi.getMapId() == 222020100 ? ("goingUp") : ("goingDown")).equals("true")) { + pi.getPlayer().dropMessage(5, "The elevator is currently moving."); + } + else pi.getPlayer().dropMessage(5, "Dafuq is happening?!"); + } catch(e) { + pi.getPlayer().dropMessage(5, "Error: " + e); + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/eliza_Garden.js b/scripts/portal/eliza_Garden.js new file mode 100644 index 0000000000..aca77d0851 --- /dev/null +++ b/scripts/portal/eliza_Garden.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi){ + pi.warp(920020000); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterAchter.js b/scripts/portal/enterAchter.js new file mode 100644 index 0000000000..a88646b122 --- /dev/null +++ b/scripts/portal/enterAchter.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.warp(100000201, "out02"); + pi.playPortalSound(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterDisguise0.js b/scripts/portal/enterDisguise0.js new file mode 100644 index 0000000000..01d6f61cd3 --- /dev/null +++ b/scripts/portal/enterDisguise0.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Map(s): Empress' Road : Crossroads of Ereve + Description: Takes you to Training Forest I +*/ + +function enter(pi) { + if(pi.isQuestStarted(20301) || pi.isQuestStarted(20302) || pi.isQuestStarted(20303) || pi.isQuestStarted(20304) || pi.isQuestStarted(20305)) { + if(pi.hasItem(4032179)) { + pi.playPortalSound(); + pi.warp(130010000, "east00"); + } else { + pi.getPlayer().dropMessage(5, "Due to the lock down you can not enter without a permit."); + return false; + } + } else { + pi.playPortalSound(); + pi.warp(130010000, "east00"); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterDisguise1.js b/scripts/portal/enterDisguise1.js new file mode 100644 index 0000000000..28aac2d372 --- /dev/null +++ b/scripts/portal/enterDisguise1.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Map(s): Empress' Road : Training Forest I + Description: Takes you to Tino's Forest +*/ + +function enter(pi) { + if(pi.isQuestStarted(20301) || pi.isQuestStarted(20302) || pi.isQuestStarted(20303) || pi.isQuestStarted(20304) || pi.isQuestStarted(20305)) { + pi.warp(108010600, "out00"); + } else { + pi.warp(130010010, "out00"); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterDisguise2.js b/scripts/portal/enterDisguise2.js new file mode 100644 index 0000000000..8fbfb3bde1 --- /dev/null +++ b/scripts/portal/enterDisguise2.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Map(s): Empress' Road : Training Forest I + Description: Takes you to Tiv's Forest +*/ + +importPackage(Packages.server.life); + +function enter(pi) { + if(pi.isQuestStarted(20301) || pi.isQuestStarted(20302) || pi.isQuestStarted(20303) || pi.isQuestStarted(20304) || pi.isQuestStarted(20305)) { + var map = pi.getClient().getChannelServer().getMapFactory().getMap(108010610); + spawnMob(3345, -452, 9001009, map); + pi.warp(108010610, "out00"); + } else { + pi.warp(130010020, "out00"); + } + return true; +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/portal/enterDisguise3.js b/scripts/portal/enterDisguise3.js new file mode 100644 index 0000000000..eaf7f4c41a --- /dev/null +++ b/scripts/portal/enterDisguise3.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Map(s): Empress' Road : Training Forest II + Description: Takes you to Timu's Forest +*/ + +function enter(pi) { + if(pi.isQuestStarted(20301) || pi.isQuestStarted(20302) || pi.isQuestStarted(20303) || pi.isQuestStarted(20304) || pi.isQuestStarted(20305)) { + pi.warp(108010620, "out00"); + } else { + pi.warp(130010110, "out00"); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterDisguise4.js b/scripts/portal/enterDisguise4.js new file mode 100644 index 0000000000..4098c211dd --- /dev/null +++ b/scripts/portal/enterDisguise4.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Map(s): Empress' Road : Training Forest II + Description: Takes you to Timu's Forest +*/ + +function enter(pi) { + if(pi.isQuestStarted(20301) || pi.isQuestStarted(20302) || pi.isQuestStarted(20303) || pi.isQuestStarted(20304) || pi.isQuestStarted(20305)) { + pi.warp(108010630, "out00"); + } else { + pi.warp(130010120, "out00"); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterDisguise5.js b/scripts/portal/enterDisguise5.js new file mode 100644 index 0000000000..dbc5a5acee --- /dev/null +++ b/scripts/portal/enterDisguise5.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Map(s): Empress' Road : Training Forest III + Description: Takes you to Entrance to Drill Hall +*/ + +function enter(pi) { + pi.warp(130020000, "east00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterEvanRoom.js b/scripts/portal/enterEvanRoom.js new file mode 100644 index 0000000000..e572d271cd --- /dev/null +++ b/scripts/portal/enterEvanRoom.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(100030100); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterFirstDH.js b/scripts/portal/enterFirstDH.js new file mode 100644 index 0000000000..89d39caa44 --- /dev/null +++ b/scripts/portal/enterFirstDH.js @@ -0,0 +1,23 @@ +var mapp = -1; +var map = 0; +function enter(pi) { + if (pi.getQuestStatus(20701) == 1) { + map = 913000000; + } else if (pi.getQuestStatus(20702) == 1) { + map = 913000100; + } else if (pi.getQuestStatus(20703) == 1) { + map = 913000200; + } + if (map > 0) { + if (pi.getPlayerCount(map) == 0) { + var mapp = pi.getMap(map); + mapp.resetFully(); + mapp.respawn(true); + pi.warp(map, 0); + } else { + pi.playerMessage(5, "Someone is already in this map."); + } + } else { + pi.playerMessage(5, "Hall #1 can only be entered if you're engaged in Kiku's Acclimation Training."); + } +} \ No newline at end of file diff --git a/scripts/portal/enterGym.js b/scripts/portal/enterGym.js new file mode 100644 index 0000000000..2ed8834665 --- /dev/null +++ b/scripts/portal/enterGym.js @@ -0,0 +1,15 @@ + +function enter(pi) { + if (pi.isQuestStarted(21701)) { + pi.playPortalSound(); + pi.warp(914010000, 1); + } else if (pi.isQuestStarted(21702)) { + pi.playPortalSound(); + pi.warp(914010100, 1); + } else if (pi.isQuestStarted(21703)) { + pi.playPortalSound(); + pi.warp(914010200, 1); + } else { + pi.playerMessage(5, "Only if you are recieving a lesson from Puo, you will be allowed to enter the Pengiun Training Ground."); + } +} \ No newline at end of file diff --git a/scripts/portal/enterInfo.js b/scripts/portal/enterInfo.js new file mode 100644 index 0000000000..8b26f3ef55 --- /dev/null +++ b/scripts/portal/enterInfo.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(104000004, 1); +} \ No newline at end of file diff --git a/scripts/portal/enterMCave.js b/scripts/portal/enterMCave.js new file mode 100644 index 0000000000..85b236da4d --- /dev/null +++ b/scripts/portal/enterMCave.js @@ -0,0 +1,42 @@ +importPackage(Packages.server.quest); +importPackage(Packages.server.life); + +function enter(pi) { + if(pi.isQuestStarted(21201)) { // Second Job + for (var i = 108000700; i < 108000709; i++){ + if(pi.getPlayerCount(i) > 0 && pi.getPlayerCount(i + 10) > 0) + continue; + + pi.playPortalSound(); + pi.warp(i, "out00"); + pi.getPlayer().updateQuestInfo(21202, "0"); + //pi.getPlayer().announce(Packages.tools.MaplePacketCreator.questProgress(21203, "21203")); + return true; + } + pi.message("The mirror is blank due to all the players currently recalling their memories. Please wait and try again."); + return false; + } else if(pi.isQuestStarted(21302)) { // Third Job + if(pi.getPlayerCount(108010701) > 0 && pi.getPlayerCount(108010702) > 0) { + pi.message("The mirror is blank due to all the players currently recalling their memories. Please wait and try again."); + return false; + } else { + var map = pi.getClient().getChannelServer().getMapFactory().getMap(108010702); + spawnMob(-210, 454, 9001013, map); + + pi.playPortalSound(); + pi.getPlayer().updateQuestInfo(21203, "1"); + pi.warp(108010701, "out00"); + return true; + } + } else { + return false; + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/portal/enterMagiclibrar.js b/scripts/portal/enterMagiclibrar.js new file mode 100644 index 0000000000..c4307cb2f1 --- /dev/null +++ b/scripts/portal/enterMagiclibrar.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.playPortalSound(); + pi.warp(101000003, 8); + return true; +} diff --git a/scripts/portal/enterPort.js b/scripts/portal/enterPort.js new file mode 100644 index 0000000000..1cd05dac6b --- /dev/null +++ b/scripts/portal/enterPort.js @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +importPackage(Packages.server.life); + +function enter(pi) { + if(pi.isQuestStarted(21301)) { + if(pi.getPlayerCount(108010700) != 0) { + pi.message("The portal is blocked from the other side. I wonder if someone is already fighting the Thief Crow?"); + return false; + } else { + var map = pi.getClient().getChannelServer().getMapFactory().getMap(108010700); + spawnMob(2732, 3, 9001013, map); + + pi.playPortalSound(); + pi.warp(108010700, "west00"); + } + } else { + pi.warp(140020300, 1); + } + return true; +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/portal/enterRienFirst.js b/scripts/portal/enterRienFirst.js new file mode 100644 index 0000000000..46dd5f7ed8 --- /dev/null +++ b/scripts/portal/enterRienFirst.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getJob().getId() == 2000 && !pi.isQuestCompleted(21014)) + pi.warp(140000000, 1); + else + pi.warp(140000000, "west00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterSecondDH.js b/scripts/portal/enterSecondDH.js new file mode 100644 index 0000000000..70c023849e --- /dev/null +++ b/scripts/portal/enterSecondDH.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the second drill hall + */ +function enter(pi) { + var maps = [108000600, 108000601, 108000602]; + if(pi.isQuestStarted(20201) || pi.isQuestStarted(20202) || pi.isQuestStarted(20203) || pi.isQuestStarted(20204) || pi.isQuestStarted(20205)) { + var rand = Math.floor(Math.random() * maps.length); + pi.warp(maps[rand], 0); + return true; + } else { + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/enter_earth00.js b/scripts/portal/enter_earth00.js new file mode 100644 index 0000000000..e0d1f5376f --- /dev/null +++ b/scripts/portal/enter_earth00.js @@ -0,0 +1,9 @@ +function enter(pi) { + if (!pi.haveItem(4031890)) { + pi.getPlayer().dropMessage(6, "You need a warp card to activate this portal."); + return false; + } + + pi.warp(221000300,"earth00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enter_earth01.js b/scripts/portal/enter_earth01.js new file mode 100644 index 0000000000..551da057a7 --- /dev/null +++ b/scripts/portal/enter_earth01.js @@ -0,0 +1,9 @@ +function enter(pi) { + if (!pi.haveItem(4031890)) { + pi.getPlayer().dropMessage(6, "You need a warp card to activate this portal."); + return false; + } + + pi.warp(120000101,"earth01"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enter_nautil.js b/scripts/portal/enter_nautil.js new file mode 100644 index 0000000000..d33cccce36 --- /dev/null +++ b/scripts/portal/enter_nautil.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Nautilus Port portal +By xV1ral +*/ +function enter(pi) { + pi.warp(120010000, "nt01"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/enterfourthDH.js b/scripts/portal/enterfourthDH.js new file mode 100644 index 0000000000..151af69989 --- /dev/null +++ b/scripts/portal/enterfourthDH.js @@ -0,0 +1,18 @@ +function enter(pi) { + if (pi.hasItem(4032125) || pi.hasItem(4032126) || pi.hasItem(4032127) || pi.hasItem(4032128) || pi.hasItem(4032129)) { + pi.playerMessage(5, "You already have the proof of ability."); + return false; + } + if (pi.isQuestStarted(20611) || pi.isQuestStarted(20612) || pi.isQuestStarted(20613) || pi.isQuestStarted(20614) || pi.isQuestStarted(20615)) { + if (pi.getPlayerCount(913020300) == 0) { + var map = pi.getMap(913020300); + map.killAllMonsters(); + pi.warp(913020300, 0); + pi.spawnMonster(9300294, 87,88); + } else { + pi.playerMessage(5, "Someone is already attempting to defeat the boss. Better come back later."); + } + } else { + pi.playerMessage(5, "You cannot access this hall."); + } +} \ No newline at end of file diff --git a/scripts/portal/enterthirdDH.js b/scripts/portal/enterthirdDH.js new file mode 100644 index 0000000000..587e5813d6 --- /dev/null +++ b/scripts/portal/enterthirdDH.js @@ -0,0 +1,18 @@ +function enter(pi) { + if (pi.hasItem(4032120) || pi.hasItem(4032121) || pi.hasItem(4032122) || pi.hasItem(4032123) || pi.hasItem(4032124)) { + pi.playerMessage(5, "You already have the proof of qualification."); + return false; + } + if (pi.isQuestStarted(20601) || pi.isQuestStarted(20602) || pi.isQuestStarted(20603) || pi.isQuestStarted(20604) || pi.isQuestStarted(20605)) { + if (pi.getPlayerCount(913010200) == 0) { + var map = pi.getMap(913010200); + map.killAllMonsters(); + pi.warp(913010200, 0); + pi.spawnMonster(9300289, 0, 0); + } else { + pi.playerMessage(5, "Someone is already attempting to defeat the boss. Better come back later."); + } + } else { + pi.playerMessage(5, "The only way to enter the hall #3 is if you're training for the Level 100 skills."); + } +} \ No newline at end of file diff --git a/scripts/portal/entertraining.js b/scripts/portal/entertraining.js new file mode 100644 index 0000000000..4bd57042af --- /dev/null +++ b/scripts/portal/entertraining.js @@ -0,0 +1,15 @@ +function enter(pi) { + if (pi.isQuestStarted(1041)) + pi.warp(1010100, 4); + else if (pi.isQuestStarted(1042)) + pi.warp(1010200, 4); + else if (pi.isQuestStarted(1043)) + pi.warp(1010300, 4); + else if (pi.isQuestStarted(1044)) + pi.warp(1010400, 4); + else { + pi.message("Only the adventurers that have been trained by Mai may enter."); + return false; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanEntrance.js b/scripts/portal/evanEntrance.js new file mode 100644 index 0000000000..ddce568e35 --- /dev/null +++ b/scripts/portal/evanEntrance.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(100030400, "east00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanFall.js b/scripts/portal/evanFall.js new file mode 100644 index 0000000000..b098ff817e --- /dev/null +++ b/scripts/portal/evanFall.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(900090102); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanFarmCT.js b/scripts/portal/evanFarmCT.js new file mode 100644 index 0000000000..9ce0ef169e --- /dev/null +++ b/scripts/portal/evanFarmCT.js @@ -0,0 +1,8 @@ +function enter(pi) { + if(pi.isQuestStarted(22010) || pi.getPlayer().getJob().getId() != 2001) { + pi.warp(100030310); + } else { + pi.playerMessage(5, "Cannot enter the Lush Forest without a reason."); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanGarden0.js b/scripts/portal/evanGarden0.js new file mode 100644 index 0000000000..40cbc5844b --- /dev/null +++ b/scripts/portal/evanGarden0.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(100030200, "east00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanGarden1.js b/scripts/portal/evanGarden1.js new file mode 100644 index 0000000000..8857159fc5 --- /dev/null +++ b/scripts/portal/evanGarden1.js @@ -0,0 +1,8 @@ +function enter(pi) { + if(pi.isQuestStarted(22008)){ + pi.warp(100030103, "west00"); + } else { + pi.playerMessage(5, "You cannot go to the Back Yard without a reason"); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanRoom0.js b/scripts/portal/evanRoom0.js new file mode 100644 index 0000000000..7077149e3e --- /dev/null +++ b/scripts/portal/evanRoom0.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "mo30=o")) { + return false; + } + pi.updateAreaInfo(22014, "mo30=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon30"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanRoom1.js b/scripts/portal/evanRoom1.js new file mode 100644 index 0000000000..c8a946cf01 --- /dev/null +++ b/scripts/portal/evanRoom1.js @@ -0,0 +1,12 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "hand=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;dt01=o;mo00=o;mo01=o;mo10=o;mo02=o;mo20=o;hand=o;mo21=o"); + pi.sendImage("UI/tutorial/evan/0/0"); + pi.showIntro("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon70"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evanlivingRoom.js b/scripts/portal/evanlivingRoom.js new file mode 100644 index 0000000000..1c2ec4e115 --- /dev/null +++ b/scripts/portal/evanlivingRoom.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(100030102, "in00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk00.js b/scripts/portal/evantalk00.js new file mode 100644 index 0000000000..08092bd435 --- /dev/null +++ b/scripts/portal/evantalk00.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo00=o")) { + return false; + } + pi.updateAreaInfo(22013, "mo00=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk01.js b/scripts/portal/evantalk01.js new file mode 100644 index 0000000000..46f59ea97b --- /dev/null +++ b/scripts/portal/evantalk01.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo01=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;mo00=o;mo01=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon01"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk02.js b/scripts/portal/evantalk02.js new file mode 100644 index 0000000000..08bb244080 --- /dev/null +++ b/scripts/portal/evantalk02.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo02=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;mo00=o;mo01=o;mo02=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon02"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk10.js b/scripts/portal/evantalk10.js new file mode 100644 index 0000000000..113a7c3e0e --- /dev/null +++ b/scripts/portal/evantalk10.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo10=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;mo00=o;mo01=o;mo10=0;mo02=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon10"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk11.js b/scripts/portal/evantalk11.js new file mode 100644 index 0000000000..2389d08884 --- /dev/null +++ b/scripts/portal/evantalk11.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo11=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;dt01=o;mo00=o;mo01=o;mo10=o;mo02=o;mo11=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon11"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk20.js b/scripts/portal/evantalk20.js new file mode 100644 index 0000000000..890d5a23c2 --- /dev/null +++ b/scripts/portal/evantalk20.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo20=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;dt01=o;mo00=o;mo01=o;mo10=o;mo02=o;mo11=o;mo20=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon20"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk21.js b/scripts/portal/evantalk21.js new file mode 100644 index 0000000000..dc0fdd9fb1 --- /dev/null +++ b/scripts/portal/evantalk21.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "mo21=o")) { + return false; + } + pi.updateAreaInfo(22013, "dt00=o;dt01=o;mo00=o;mo01=o;mo10=o;mo02=o;mo11=o;mo20=o;mo21=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon21"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk40.js b/scripts/portal/evantalk40.js new file mode 100644 index 0000000000..558dbd9aa6 --- /dev/null +++ b/scripts/portal/evantalk40.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "mo40=o")) { + return false; + } + pi.updateAreaInfo(22014, "mo30=o;mo40=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon40"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk41.js b/scripts/portal/evantalk41.js new file mode 100644 index 0000000000..f39ecff873 --- /dev/null +++ b/scripts/portal/evantalk41.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "mo41=o")) { + return false; + } + pi.updateAreaInfo(22014, "mo30=o;mo40=o;mo41=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon41"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk42.js b/scripts/portal/evantalk42.js new file mode 100644 index 0000000000..026dcd27bf --- /dev/null +++ b/scripts/portal/evantalk42.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "mo42=o")) { + return false; + } + pi.updateAreaInfo(22014, "mo30=o;mo40=o;mo41=o;mo42=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon42"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk50.js b/scripts/portal/evantalk50.js new file mode 100644 index 0000000000..696d144b5c --- /dev/null +++ b/scripts/portal/evantalk50.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "mo50=o")) { + return false; + } + pi.updateAreaInfo(22014, "mo30=o;mo40=o;mo41=o;mo50=o;mo42=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon50"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/evantalk60.js b/scripts/portal/evantalk60.js new file mode 100644 index 0000000000..391f99ed74 --- /dev/null +++ b/scripts/portal/evantalk60.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22014, "mo60=o")) { + return false; + } + pi.updateAreaInfo(22014, "mo30=o;mo40=o;mo41=o;mo50=o;mo42=o;mo60=o"); + pi.showInfo("Effect/OnUserEff.img/guideEffect/evanTutorial/evanBalloon60"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/female00.js b/scripts/portal/female00.js new file mode 100644 index 0000000000..6ee3fcf42d --- /dev/null +++ b/scripts/portal/female00.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + /** + *female00.js + */ + var gender = pi.getPlayer().getGender(); + if (gender == 1) { + pi.warp(670010200, 4); + return true; + } else { + pi.getPlayer().dropMessage(5, "You cannot proceed past here."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/foxLaidy_map.js b/scripts/portal/foxLaidy_map.js new file mode 100644 index 0000000000..0e2dba1f13 --- /dev/null +++ b/scripts/portal/foxLaidy_map.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.warp(222010200, "east00"); + return true; +} diff --git a/scripts/portal/gaga_success.js b/scripts/portal/gaga_success.js new file mode 100644 index 0000000000..2fb39cccc5 --- /dev/null +++ b/scripts/portal/gaga_success.js @@ -0,0 +1,8 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.getPlayer().getEvents().getGagaRescue().complete(); + pi.warp(922240100 + (pi.getPlayer().getMapId() - 922240000)); + pi.getPlayer().cancelEffect(2360002); + return true; +} \ No newline at end of file diff --git a/scripts/portal/ghostgate_open.js b/scripts/portal/ghostgate_open.js new file mode 100644 index 0000000000..e34073ba71 --- /dev/null +++ b/scripts/portal/ghostgate_open.js @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Sharen III's Grave Exit - Guild Quest + +@Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("ghostgate").getState() == 1) { + pi.warp(990000800); + return true; + } + else { + pi.playerMessage(5, "This way forward is not open yet."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/glTutoMsg0.js b/scripts/portal/glTutoMsg0.js new file mode 100644 index 0000000000..12d0e149b0 --- /dev/null +++ b/scripts/portal/glTutoMsg0.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + pi.showInstruction("Once you leave this area you won't be able to return.", 150, 5); + return true; +} \ No newline at end of file diff --git a/scripts/portal/gotocastle.js b/scripts/portal/gotocastle.js new file mode 100644 index 0000000000..acd1a84654 --- /dev/null +++ b/scripts/portal/gotocastle.js @@ -0,0 +1,9 @@ +function enter(pi) { + if (pi.isQuestActive(2324)) { + pi.forceCompleteQuest(2324); + pi.removeAll(2430015); + pi.playerMessage("Quest complete."); + } + pi.warp(106020501,0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/gryphius.js b/scripts/portal/gryphius.js new file mode 100644 index 0000000000..c6561f2b16 --- /dev/null +++ b/scripts/portal/gryphius.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(240020101, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/guild1F00.js b/scripts/portal/guild1F00.js new file mode 100644 index 0000000000..ca991ee27c --- /dev/null +++ b/scripts/portal/guild1F00.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Return from Sharen III's Grave - Guild Quest + +@Author Lerk +*/ + +function enter(pi) { + pi.warp(990000600, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/guild1F01.js b/scripts/portal/guild1F01.js new file mode 100644 index 0000000000..4c2a435176 --- /dev/null +++ b/scripts/portal/guild1F01.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Warp to Sharen III's Grave - Guild Quest +Give guild points if holding appropriate item and not gained already +Save location to return. + +@Author Lerk +*/ + +function enter(pi) { + pi.warp(990000700, "st00"); + return true; +} diff --git a/scripts/portal/guild1F02.js b/scripts/portal/guild1F02.js new file mode 100644 index 0000000000..4c2a435176 --- /dev/null +++ b/scripts/portal/guild1F02.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Warp to Sharen III's Grave - Guild Quest +Give guild points if holding appropriate item and not gained already +Save location to return. + +@Author Lerk +*/ + +function enter(pi) { + pi.warp(990000700, "st00"); + return true; +} diff --git a/scripts/portal/guild1F03.js b/scripts/portal/guild1F03.js new file mode 100644 index 0000000000..4c2a435176 --- /dev/null +++ b/scripts/portal/guild1F03.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Warp to Sharen III's Grave - Guild Quest +Give guild points if holding appropriate item and not gained already +Save location to return. + +@Author Lerk +*/ + +function enter(pi) { + pi.warp(990000700, "st00"); + return true; +} diff --git a/scripts/portal/guild1F04.js b/scripts/portal/guild1F04.js new file mode 100644 index 0000000000..4c2a435176 --- /dev/null +++ b/scripts/portal/guild1F04.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Warp to Sharen III's Grave - Guild Quest +Give guild points if holding appropriate item and not gained already +Save location to return. + +@Author Lerk +*/ + +function enter(pi) { + pi.warp(990000700, "st00"); + return true; +} diff --git a/scripts/portal/guildwaitingenter.js b/scripts/portal/guildwaitingenter.js new file mode 100644 index 0000000000..1dd12dd79a --- /dev/null +++ b/scripts/portal/guildwaitingenter.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * Guild Quest Waiting Room - Entry Portal (map 990000000) + */ + +function enter(pi) { + if (pi.getPlayer().getEventInstance() == null) { + pi.warp(101030104); + return true; + } + else { + if (pi.getPlayer().getEventInstance().getProperty("canEnter").equals("false")) { + pi.warp(990000100); + return true; + } + else { //cannot proceed while allies can still enter + pi.playerMessage(5, "The portal is not open yet."); + return false; + } + } +} \ No newline at end of file diff --git a/scripts/portal/guildwaitingexit.js b/scripts/portal/guildwaitingexit.js new file mode 100644 index 0000000000..1e8895518d --- /dev/null +++ b/scripts/portal/guildwaitingexit.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getEventInstance() != null) { + pi.getPlayer().getEventInstance().removePlayer(pi.getPlayer()); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/halloween_Omni1.js b/scripts/portal/halloween_Omni1.js new file mode 100644 index 0000000000..93d7e2c2a8 --- /dev/null +++ b/scripts/portal/halloween_Omni1.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.playerMessage(5, "It seems to be locked."); + return true; +} \ No newline at end of file diff --git a/scripts/portal/halloween_enter.js b/scripts/portal/halloween_enter.js new file mode 100644 index 0000000000..f8f0395825 --- /dev/null +++ b/scripts/portal/halloween_enter.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(682000100, "st00"); + return true; +} diff --git a/scripts/portal/highposition.js b/scripts/portal/highposition.js new file mode 100644 index 0000000000..75b838464a --- /dev/null +++ b/scripts/portal/highposition.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* + * Author: kevintjuh93 + * +*/ +function start(ms) { + ms.touchTheSky(); +} \ No newline at end of file diff --git a/scripts/portal/hontale_BR.js b/scripts/portal/hontale_BR.js new file mode 100644 index 0000000000..eb2eaaf2f8 --- /dev/null +++ b/scripts/portal/hontale_BR.js @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() == 240060000) { + var nextMap = 240060100; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("head1"); + if (avail != "yes") { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door."); + return false; + }else { + pi.getPlayer().changeMap(target, targetPortal); + if (eim.getProperty("head2spawned") != "yes") { + eim.setProperty("head2spawned", "yes"); + eim.schedule("headTwo", 5000); + } + return true; + } + } else if (pi.getPlayer().getMapId() == 240060100) { + var nextMap = 240060200; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("head2"); + if (avail != "yes") { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door."); + return false; + }else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/hontale_Bopen.js b/scripts/portal/hontale_Bopen.js new file mode 100644 index 0000000000..a465517ac2 --- /dev/null +++ b/scripts/portal/hontale_Bopen.js @@ -0,0 +1,102 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* The five caves + * @author Jvlaple + */ +function enter(pi) { + if (pi.getPlayer().getMapId() == 240050101) { + var nextMap = 240050102; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("2stageclear"); + if (avail == null) { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "This door is closed."); + return false; + }else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } + } + else if (pi.getPlayer().getMapId() == 240050102) { + var nextMap = 240050103; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("3stageclear"); + if (avail == null) { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "This door is closed."); + return false; + }else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } + } + else if (pi.getPlayer().getMapId() == 240050103) { + var nextMap = 240050104; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("4stageclear"); + if (avail == null) { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "This door is closed."); + return false; + }else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } + } + else if (pi.getPlayer().getMapId() == 240050104) { + var nextMap = 240050105; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("5stageclear"); + if (avail == null) { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "This door is closed."); + return false; + }else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } + } + else if (pi.getPlayer().getMapId() == 240050105) { + if (pi.haveItem(4001091, 6) && pi.isLeader()) { + pi.gainItem(4001091, -6); + pi.getPlayer().dropMessage(6, "The six keys break the seal for a flash..."); + pi.warp(240050100, "st00"); + return true; + } else { + pi.getPlayer().dropMessage(6, "Horntail\'s Seal is blocking this door."); + return false; + } + } + return true; +} diff --git a/scripts/portal/hontale_BtoB1.js b/scripts/portal/hontale_BtoB1.js new file mode 100644 index 0000000000..d318c86bb6 --- /dev/null +++ b/scripts/portal/hontale_BtoB1.js @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +@Author Jvlaple +*/ + +function enter(pi) { + var nextMap = 240050101; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("sp"); + // only let people through if the eim is ready + var avail = eim.getProperty("1stageclear"); + if (!pi.haveItem(4001092, 1)) { + // do nothing; send message to player + pi.getPlayer().dropMessage(6, "Horntail\'s Seal is Blocking this Door."); + return false; + }else { + pi.gainItem(4001092, -1); + pi.getPlayer().dropMessage(6, "The key disentegrates as Horntail\'s Seal is broken for a flash..."); + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/hontale_C.js b/scripts/portal/hontale_C.js new file mode 100644 index 0000000000..9595ec0df7 --- /dev/null +++ b/scripts/portal/hontale_C.js @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Portal for the LightBulb Map... + +**hontale_c.js +@author Jvlaple +*/ +function enter(pi) { + + if (pi.isLeader() == true) { + var eim = pi.getPlayer().getEventInstance(); + var party = eim.getPlayers(); + var target; + var theWay = eim.getProperty("theWay"); + var target; + if (theWay != null) { + if (theWay = "light") { + target = eim.getMapInstance(240050300); //light + } else { + target = eim.getMapInstance(240050310); //dark + } + } else { + pi.playerMessage(5, "Hit the Lightbulb to determine your fate!"); + return false; + } + var targetPortal = target.getPortal("sp"); + //Warp the full party into the map... + var partyy = pi.getPlayer().getEventInstance().getPlayers(); + for (var i = 0; i < partyy.size(); i++) { + party.get(i).changeMap(target, targetPortal); + } + return true; + } else { + pi.playerMessage(6, "You are not the party leader. Only the party leader may proceed through this portal."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/hontale_morph2.js b/scripts/portal/hontale_morph2.js new file mode 100644 index 0000000000..eee7a92738 --- /dev/null +++ b/scripts/portal/hontale_morph2.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +Leave the Cave of Life - Entrance Map and go back to the Peak of the Big Nest (240040600) should probably cancel the HT morph buff +*/ + +function enter(pi) { + pi.warp(240040600, "st00"); + return true; +} diff --git a/scripts/portal/hontale_out1.js b/scripts/portal/hontale_out1.js new file mode 100644 index 0000000000..749360cede --- /dev/null +++ b/scripts/portal/hontale_out1.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(240060000, "st00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/in2159011.js b/scripts/portal/in2159011.js new file mode 100644 index 0000000000..91a1167f64 --- /dev/null +++ b/scripts/portal/in2159011.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.openNpc(2159011); + return true; +} \ No newline at end of file diff --git a/scripts/portal/inDragonEgg.js b/scripts/portal/inDragonEgg.js new file mode 100644 index 0000000000..44a1008f05 --- /dev/null +++ b/scripts/portal/inDragonEgg.js @@ -0,0 +1,9 @@ +function enter(pi) { + pi.playPortalSound(); + if(pi.isQuestStarted(22005)){ + pi.warp(900020100); + } else{ + pi.warp(100030301); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/inERShip.js b/scripts/portal/inERShip.js new file mode 100644 index 0000000000..980335af62 --- /dev/null +++ b/scripts/portal/inERShip.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(101000400, 0); + return true; +} diff --git a/scripts/portal/infoAttack.js b/scripts/portal/infoAttack.js new file mode 100644 index 0000000000..d3fadb0bd3 --- /dev/null +++ b/scripts/portal/infoAttack.js @@ -0,0 +1,7 @@ +function enter(pi) { + if (pi.isQuestStarted(1035)) + pi.showInfo("UI/tutorial.img/20"); + + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/infoMinimap.js b/scripts/portal/infoMinimap.js new file mode 100644 index 0000000000..e48498e4e6 --- /dev/null +++ b/scripts/portal/infoMinimap.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + if (pi.isQuestStarted(1031)) + pi.showInfo("UI/tutorial.img/25"); + + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/infoPickup.js b/scripts/portal/infoPickup.js new file mode 100644 index 0000000000..519b38e6a3 --- /dev/null +++ b/scripts/portal/infoPickup.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + if (pi.isQuestStarted(1035)) + pi.showInfo("UI/tutorial.img/21"); + + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/infoReactor.js b/scripts/portal/infoReactor.js new file mode 100644 index 0000000000..60f71d3f7d --- /dev/null +++ b/scripts/portal/infoReactor.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + if (pi.isQuestCompleted(1008)) + pi.showInfo("UI/tutorial.img/22"); + else if (pi.isQuestCompleted(1020)) + pi.showInfo("UI/tutorial.img/27"); + + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/infoSkill.js b/scripts/portal/infoSkill.js new file mode 100644 index 0000000000..f4ef8ba00c --- /dev/null +++ b/scripts/portal/infoSkill.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +By kevintjuh93 +*/ +function enter(pi) { + if (pi.isQuestCompleted(1035)) + pi.showInfo("UI/tutorial.img/23"); + + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/infoWorldmap.js b/scripts/portal/infoWorldmap.js new file mode 100644 index 0000000000..0943e19cac --- /dev/null +++ b/scripts/portal/infoWorldmap.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.showInfo("UI/tutorial.img/26"); + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/kinggate2_open.js b/scripts/portal/kinggate2_open.js new file mode 100644 index 0000000000..62e05fb205 --- /dev/null +++ b/scripts/portal/kinggate2_open.js @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Stage 5: Door before Ergoth - Guild Quest + +@Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("kinggate").getState() == 1) { + pi.warp(990000900, 2); + if (pi.getPlayer().getEventInstance().getProperty("boss") != null && pi.getPlayer().getEventInstance().getProperty("boss").equals("true")) { + pi.changeMusic("Bgm10/Eregos"); + } + return true; + } + else { + pi.playerMessage(5, "This crack appears to be blocked off by the door nearby."); + return false; + } +} diff --git a/scripts/portal/kinggate_open.js b/scripts/portal/kinggate_open.js new file mode 100644 index 0000000000..a49e287130 --- /dev/null +++ b/scripts/portal/kinggate_open.js @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Stage 5: Door before Ergoth - Guild Quest + +@Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("kinggate").getState() == 1) { + pi.warp(990000900); + if (pi.getPlayer().getEventInstance().getProperty("boss") != null && pi.getPlayer().getEventInstance().getProperty("boss").equals("true")) { + pi.changeMusic("Bgm10/Eregos"); + } + return true; + } + else { + pi.playerMessage(5, "This door is closed."); + return false; + } +} diff --git a/scripts/portal/kpq0.js b/scripts/portal/kpq0.js new file mode 100644 index 0000000000..2bb1813258 --- /dev/null +++ b/scripts/portal/kpq0.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +Kerning PQ: 1st stage to 2nd stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance(); + var target = eim.getMapInstance(103000801); + + if (eim.getProperty("1stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/kpq1.js b/scripts/portal/kpq1.js new file mode 100644 index 0000000000..5b82b61fdb --- /dev/null +++ b/scripts/portal/kpq1.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +Kerning PQ: 2nd stage to 3rd stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance(); + var target = eim.getMapInstance(103000802); + if (eim.getProperty("2stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/kpq2.js b/scripts/portal/kpq2.js new file mode 100644 index 0000000000..e4c4c5491f --- /dev/null +++ b/scripts/portal/kpq2.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Kerning PQ: 3rd stage to 4th stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance(); + var target = eim.getMapInstance(103000803); + if (eim.getProperty("3stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/kpq3.js b/scripts/portal/kpq3.js new file mode 100644 index 0000000000..46b4c6e19f --- /dev/null +++ b/scripts/portal/kpq3.js @@ -0,0 +1,35 @@ +/* +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Kerning PQ: 3rd stage to 4th stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance(); + var target = eim.getMapInstance(103000804); + if (eim.getProperty("4stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/kpq4.js b/scripts/portal/kpq4.js new file mode 100644 index 0000000000..ce063c40c0 --- /dev/null +++ b/scripts/portal/kpq4.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Kerning PQ: 4th stage to final stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance(); + var target = eim.getMapInstance(103000805); + if (eim.getProperty("4stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/lionCastle_enter.js b/scripts/portal/lionCastle_enter.js new file mode 100644 index 0000000000..efdc31b6d9 --- /dev/null +++ b/scripts/portal/lionCastle_enter.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(211060010, "west00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/lpq1.js b/scripts/portal/lpq1.js new file mode 100644 index 0000000000..56aeb5afe3 --- /dev/null +++ b/scripts/portal/lpq1.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +Ludi PQ: 1st stage to 2nd stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(922010200); + if (eim.getProperty("1stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true + } else + return false; +} diff --git a/scripts/portal/lpq2.js b/scripts/portal/lpq2.js new file mode 100644 index 0000000000..3255865171 --- /dev/null +++ b/scripts/portal/lpq2.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010300; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + var avail = eim.getProperty("2stageclear"); + if (avail == null) { + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; + } + else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/lpq3.js b/scripts/portal/lpq3.js new file mode 100644 index 0000000000..2837b6473f --- /dev/null +++ b/scripts/portal/lpq3.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010400; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + // only let people through if the eim is ready + var avail = eim.getProperty("3stageclear"); + if (avail == null) { + // can't go thru eh? + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; } + else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/lpq4.js b/scripts/portal/lpq4.js new file mode 100644 index 0000000000..8416da5f5d --- /dev/null +++ b/scripts/portal/lpq4.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010500; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + // only let people through if the eim is ready + var avail = eim.getProperty("4stageclear"); + if (avail == null) { + // can't go thru eh? + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; } + else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/lpq5.js b/scripts/portal/lpq5.js new file mode 100644 index 0000000000..205f9bfdbf --- /dev/null +++ b/scripts/portal/lpq5.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010600; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + // only let people through if the eim is ready + var avail = eim.getProperty("5stageclear"); + if (avail == null) { + // can't go thru eh? + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; } + else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/lpq6.js b/scripts/portal/lpq6.js new file mode 100644 index 0000000000..d25aa0678f --- /dev/null +++ b/scripts/portal/lpq6.js @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010700; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + // only let people through if the eim is ready + var avail = eim.getProperty("5stageclear"); + if (avail == null) { + // can't go thru eh? + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; } + else { + if(eim.getProperty("6stageclear") == null) { + eim.setProperty("6stageclear", "done"); + pi.givePartyExp("LudiPQ6th"); + } + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/lpq7.js b/scripts/portal/lpq7.js new file mode 100644 index 0000000000..6640e19d37 --- /dev/null +++ b/scripts/portal/lpq7.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +Ludi PQ: 5th stage to 6th stage portal +*/ + +function enter(pi) { + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(922010800); + if (eim.getProperty("7stageclear") != null) { + pi.getPlayer().changeMap(target, target.getPortal("st00")); + return true; + } else + return false; +} \ No newline at end of file diff --git a/scripts/portal/lpq8.js b/scripts/portal/lpq8.js new file mode 100644 index 0000000000..4ef2f890da --- /dev/null +++ b/scripts/portal/lpq8.js @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010900; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + // only let people through if the eim is ready + var avail = eim.getProperty("8stageclear"); + if (avail == null) { + // can't go thru eh? + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; } + else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/lpqboss.js b/scripts/portal/lpqboss.js new file mode 100644 index 0000000000..b430aad849 --- /dev/null +++ b/scripts/portal/lpqboss.js @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +LudiPQ - 1 - 2 Portal +@author Jvlaple +*/ + +function enter(pi) { + var nextMap = 922010900; + var eim = pi.getPlayer().getEventInstance() + var target = eim.getMapInstance(nextMap); + var targetPortal = target.getPortal("st00"); + // only let people through if the eim is ready + var avail = eim.getProperty("8stageclear"); + if (avail == null) { + // can't go thru eh? + pi.getPlayer().dropMessage(5, "Some seal is blocking this door."); + return false; } + else { + pi.getPlayer().changeMap(target, targetPortal); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/male00.js b/scripts/portal/male00.js new file mode 100644 index 0000000000..7c48935397 --- /dev/null +++ b/scripts/portal/male00.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + /** + *Male00.js + */ + var gender = pi.getPlayer().getGender(); + if (gender == 0) { + pi.warp(670010200, 3); + return true; + } else { + pi.getPlayer().dropMessage(5, "You cannot proceed past here."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/mapleMarket7_out.js b/scripts/portal/mapleMarket7_out.js new file mode 100644 index 0000000000..3b356f4b52 --- /dev/null +++ b/scripts/portal/mapleMarket7_out.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(pi.getPlayer().getSavedLocation("EVENT")); + return true; +} \ No newline at end of file diff --git a/scripts/portal/market00.js b/scripts/portal/market00.js new file mode 100644 index 0000000000..dd6bd5603f --- /dev/null +++ b/scripts/portal/market00.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + try { + pi.warp(pi.getPlayer().getSavedLocation("FREE_MARKET")); + } catch(err) { + pi.warp(100000000); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/market01.js b/scripts/portal/market01.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market01.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market02.js b/scripts/portal/market02.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market02.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market03.js b/scripts/portal/market03.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market03.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market04.js b/scripts/portal/market04.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market04.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market05.js b/scripts/portal/market05.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market05.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market06.js b/scripts/portal/market06.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market06.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market07.js b/scripts/portal/market07.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market07.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market08.js b/scripts/portal/market08.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market08.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market09.js b/scripts/portal/market09.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market09.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market10.js b/scripts/portal/market10.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market10.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market11.js b/scripts/portal/market11.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market11.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market12.js b/scripts/portal/market12.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market12.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market13.js b/scripts/portal/market13.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market13.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market14.js b/scripts/portal/market14.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market14.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market15.js b/scripts/portal/market15.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market15.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market16.js b/scripts/portal/market16.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market16.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market17.js b/scripts/portal/market17.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market17.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market18.js b/scripts/portal/market18.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market18.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market19.js b/scripts/portal/market19.js new file mode 100644 index 0000000000..70221fc1f0 --- /dev/null +++ b/scripts/portal/market19.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market20.js b/scripts/portal/market20.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market20.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market21.js b/scripts/portal/market21.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market21.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market22.js b/scripts/portal/market22.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market22.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market23.js b/scripts/portal/market23.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market23.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market24.js b/scripts/portal/market24.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market24.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market26.js b/scripts/portal/market26.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market26.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market52.js b/scripts/portal/market52.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market52.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market53.js b/scripts/portal/market53.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market53.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market54.js b/scripts/portal/market54.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market54.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market55.js b/scripts/portal/market55.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market55.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/market56.js b/scripts/portal/market56.js new file mode 100644 index 0000000000..8a16b3899c --- /dev/null +++ b/scripts/portal/market56.js @@ -0,0 +1,8 @@ +function enter(pi) { + if (pi.getPlayer().getMapId() != 910000000) { + pi.getPlayer().saveLocation("FREE_MARKET"); + pi.warp(910000000, "out00"); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/mayong.js b/scripts/portal/mayong.js new file mode 100644 index 0000000000..360bf054ee --- /dev/null +++ b/scripts/portal/mayong.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(240020401, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/mc_out.js b/scripts/portal/mc_out.js new file mode 100644 index 0000000000..f440db2612 --- /dev/null +++ b/scripts/portal/mc_out.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Author: kevintjuh93 +*/ + +function enter(pi) { + pi.warp(pi.getPlayer().getSavedLocation("MIRROR")); + return true; +} \ No newline at end of file diff --git a/scripts/portal/met_in.js b/scripts/portal/met_in.js new file mode 100644 index 0000000000..152c33bcf0 --- /dev/null +++ b/scripts/portal/met_in.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.warp(910320000, 2); + return true; +} \ No newline at end of file diff --git a/scripts/portal/met_out.js b/scripts/portal/met_out.js new file mode 100644 index 0000000000..0ebc23e249 --- /dev/null +++ b/scripts/portal/met_out.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Author: kevintjuh93 +*/ + +function enter(pi) { + var mapId = pi.getPlayer().getSavedLocation("MIRROR"); + + if(mapId == -1) pi.warp(102040000, 12); + else pi.warp(mapId); + + //pi.warp(102040000, 12); + + return true; +} \ No newline at end of file diff --git a/scripts/portal/metalgate_open.js b/scripts/portal/metalgate_open.js new file mode 100644 index 0000000000..c2298242b2 --- /dev/null +++ b/scripts/portal/metalgate_open.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Stage 2: Door guarded by Dark Muscle Golems - Guild Quest + +@Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("metalgate").getState() == 1) { + pi.warp(990000431); + return true; + } + pi.playerMessage(5, "This way forward is not open yet."); + return false; +} diff --git a/scripts/portal/metro_Chat00.js b/scripts/portal/metro_Chat00.js new file mode 100644 index 0000000000..1759a1e9f1 --- /dev/null +++ b/scripts/portal/metro_Chat00.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.showWZEffect("Effect/Direction2.img/metro/Im"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/metro_in00.js b/scripts/portal/metro_in00.js new file mode 100644 index 0000000000..986dc066f1 --- /dev/null +++ b/scripts/portal/metro_in00.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.openNpc(1052115); + return true; +} \ No newline at end of file diff --git a/scripts/portal/minar_elli.js b/scripts/portal/minar_elli.js new file mode 100644 index 0000000000..aa002c71ce --- /dev/null +++ b/scripts/portal/minar_elli.js @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (!pi.haveItem(4031346)) { + pi.getPlayer().dropMessage(6, "You need a magic seed to use this portal."); + return false; + } + if (pi.getPlayer().getMapId() == 240010100) { + pi.gainItem(4031346, -1); + pi.warp(101010000, "minar00"); + return true; + } else if (pi.getPlayer().getMapId() == 101010000) { + pi.gainItem(4031346, -1); + pi.warp(240010100, "elli00"); + return true; + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/minar_job4.js b/scripts/portal/minar_job4.js new file mode 100644 index 0000000000..4166ccdf95 --- /dev/null +++ b/scripts/portal/minar_job4.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(240010501, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/mirtalk00.js b/scripts/portal/mirtalk00.js new file mode 100644 index 0000000000..81aab3f7b8 --- /dev/null +++ b/scripts/portal/mirtalk00.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "dt00=o")) { + return false; + } + pi.mapEffect("evan/dragonTalk00"); + pi.updateAreaInfo(22013, "dt00=o;mo00=o"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/mirtalk01.js b/scripts/portal/mirtalk01.js new file mode 100644 index 0000000000..e7c238f9d6 --- /dev/null +++ b/scripts/portal/mirtalk01.js @@ -0,0 +1,11 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.blockPortal(); + if (pi.containsAreaInfo(22013, "dt01=o")) { + return false; + } + pi.mapEffect("evan/dragonTalk01"); + pi.updateAreaInfo(22013, "dt00=o;dt01=o;mo00=o;mo01=o;mo10=o;mo02=o"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/moveBefore.js b/scripts/portal/moveBefore.js new file mode 100644 index 0000000000..a7b4d6a4b3 --- /dev/null +++ b/scripts/portal/moveBefore.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(pi.getMapId() - 10, "west00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/moveNext.js b/scripts/portal/moveNext.js new file mode 100644 index 0000000000..1e6f92b2ce --- /dev/null +++ b/scripts/portal/moveNext.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.playPortalSound(); + pi.warp(pi.getMapId() + 10, "east00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/move_elin.js b/scripts/portal/move_elin.js new file mode 100644 index 0000000000..2bf5ea4689 --- /dev/null +++ b/scripts/portal/move_elin.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(300000100, "out00"); + pi.playerMessage(5, "Now passing the Time Gate."); + return true; +} diff --git a/scripts/portal/nets_out.js b/scripts/portal/nets_out.js new file mode 100644 index 0000000000..f440db2612 --- /dev/null +++ b/scripts/portal/nets_out.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Author: kevintjuh93 +*/ + +function enter(pi) { + pi.warp(pi.getPlayer().getSavedLocation("MIRROR")); + return true; +} \ No newline at end of file diff --git a/scripts/portal/outArchterMap.js b/scripts/portal/outArchterMap.js new file mode 100644 index 0000000000..b95d5fabbc --- /dev/null +++ b/scripts/portal/outArchterMap.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.warp(100000000, "Achter00"); + pi.playPortalSound(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/outChild.js b/scripts/portal/outChild.js new file mode 100644 index 0000000000..3465a711aa --- /dev/null +++ b/scripts/portal/outChild.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (!pi.isQuestStarted(21001)) { + pi.warp(914000220, 2); + return true; + } else { + pi.warp(914000400, 2); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/outMaha.js b/scripts/portal/outMaha.js new file mode 100644 index 0000000000..cf2fa5f62b --- /dev/null +++ b/scripts/portal/outMaha.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.warp(140000000); + return true; +} \ No newline at end of file diff --git a/scripts/portal/outTemple.js b/scripts/portal/outTemple.js new file mode 100644 index 0000000000..706dfc889f --- /dev/null +++ b/scripts/portal/outTemple.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.useItem(2210016); + pi.warp(200090510); + return true; +} \ No newline at end of file diff --git a/scripts/portal/party3_r4pt.js b/scripts/portal/party3_r4pt.js new file mode 100644 index 0000000000..83a5f8761c --- /dev/null +++ b/scripts/portal/party3_r4pt.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *@author Jvlaple + *party3_r4pt + */ + +function enter(pi) { + pi.warp(920010600, Math.random() * 3 > 1 ? 14 : 2); + return true; +} \ No newline at end of file diff --git a/scripts/portal/party3_r4pt1.js b/scripts/portal/party3_r4pt1.js new file mode 100644 index 0000000000..ab8b370940 --- /dev/null +++ b/scripts/portal/party3_r4pt1.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *@author Jvlaple + *party3_r4pt + */ + +function enter(pi) { + pi.warp(920010600, Math.random() * 3 > 1 ? 1 : 2); + return true; +} \ No newline at end of file diff --git a/scripts/portal/q2073.js b/scripts/portal/q2073.js new file mode 100644 index 0000000000..598147147f --- /dev/null +++ b/scripts/portal/q2073.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author Twdtwd + * @purpose Warps to Utah's Pig Farm for the quest Camila's Gem. + */ +function enter(pi) { + if(pi.isQuestStarted(2073)) { + pi.playPortalSound(); + pi.warp(900000000, 0); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/rankRoom.js b/scripts/portal/rankRoom.js new file mode 100644 index 0000000000..88f7f7b948 --- /dev/null +++ b/scripts/portal/rankRoom.js @@ -0,0 +1,29 @@ +function enter(pi) { + pi.playPortalSound(); + + switch (pi.getPlayer().getMapId()) { + case 130000000: + pi.warp(130000100, 5); //or 130000101 + break; + case 130000200: + pi.warp(130000100, 4); //or 130000101 + break; + case 140010100: + pi.warp(140010110, 0); //or 140010111 + break; + case 120000101: + pi.warp(120000105, 0); + break; + case 103000003: + pi.warp(103000008, 0); //or 103000009 + break; + case 100000201: + pi.warp(100000204, 0); //or 100000205 + break; + default: + pi.warp(pi.getMapId() + 1, 0); //or + 2 + break; + } + + return true; +} \ No newline at end of file diff --git a/scripts/portal/reundodraco.js b/scripts/portal/reundodraco.js new file mode 100644 index 0000000000..553ab9c030 --- /dev/null +++ b/scripts/portal/reundodraco.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienCaveEnter.js b/scripts/portal/rienCaveEnter.js new file mode 100644 index 0000000000..60e058d13d --- /dev/null +++ b/scripts/portal/rienCaveEnter.js @@ -0,0 +1,11 @@ +function enter(pi) { + if (pi.isQuestStarted(21201) || pi.isQuestStarted(21302)) { //aran first job + pi.playPortalSound(); + pi.warp(140030000, 1); + return true; + } else { + pi.playerMessage(5, "Something seems to be blocking this portal!"); + return false; + } + +} \ No newline at end of file diff --git a/scripts/portal/rienTutor1.js b/scripts/portal/rienTutor1.js new file mode 100644 index 0000000000..36306b0455 --- /dev/null +++ b/scripts/portal/rienTutor1.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (!pi.isQuestCompleted(21010)) { + pi.message("You must complete the quest before proceeding to the next map."); + return false; + } + pi.warp(140090200, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor2.js b/scripts/portal/rienTutor2.js new file mode 100644 index 0000000000..f37c4cb1c8 --- /dev/null +++ b/scripts/portal/rienTutor2.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (!pi.isQuestCompleted(21011)) { + pi.message("You must complete the quest before proceeding to the next map.."); + return false; + } + pi.warp(140090300, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor3.js b/scripts/portal/rienTutor3.js new file mode 100644 index 0000000000..d301997822 --- /dev/null +++ b/scripts/portal/rienTutor3.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (!pi.isQuestCompleted(21012)) { + pi.message("You must complete the quest before proceeding to the next map.."); + return false; + } + pi.warp(140090400, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor4.js b/scripts/portal/rienTutor4.js new file mode 100644 index 0000000000..658af2d667 --- /dev/null +++ b/scripts/portal/rienTutor4.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (!pi.isQuestCompleted(21013)) { + pi.message("You must complete the quest before proceeding to the next map.."); + return false; + } + pi.warp(140090500, 1); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor5.js b/scripts/portal/rienTutor5.js new file mode 100644 index 0000000000..dacb173594 --- /dev/null +++ b/scripts/portal/rienTutor5.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + pi.talkGuide("You're very close to town. I'll head over there first since I have some things to take care of. You take your time."); + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor6.js b/scripts/portal/rienTutor6.js new file mode 100644 index 0000000000..7ac474e8c8 --- /dev/null +++ b/scripts/portal/rienTutor6.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + pi.removeGuide(); + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor7.js b/scripts/portal/rienTutor7.js new file mode 100644 index 0000000000..7c87a307ca --- /dev/null +++ b/scripts/portal/rienTutor7.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (pi.getPlayer().getJob().getId() == 2000 && !pi.isQuestCompleted(21014)) { + pi.showInfoText("The town of Rien is to the right. Take the portal on the right and go into town to meet Lilin."); + } else { + pi.playPortalSound(); + pi.warp(140010100, 2); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/rienTutor8.js b/scripts/portal/rienTutor8.js new file mode 100644 index 0000000000..4cf3327e92 --- /dev/null +++ b/scripts/portal/rienTutor8.js @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author: kevintjuh93 +*/ +function enter(pi) { + if (pi.getPlayer().getJob().getId() == 2000) { + if (pi.isQuestStarted(21015)) { + pi.showInfoText("You must exit to the right in order to find Murupas."); + return; + } else if (pi.isQuestStarted(21016)) { + pi.showInfoText("You must exit to the right in order to find Murupias."); + return; + } else if (pi.isQuestStarted(21017)) { + pi.showInfoText("You must exit to the right in order to find MuruMurus."); + return; + } + } + pi.playPortalSound(); + pi.warp(140010000, 2); + return true; +} \ No newline at end of file diff --git a/scripts/portal/s4berserk.js b/scripts/portal/s4berserk.js new file mode 100644 index 0000000000..5b61db9cc2 --- /dev/null +++ b/scripts/portal/s4berserk.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6153)) { + pi.warp(910500200, 0); + return true; + } else { + pi.getPlayer().message("A mysterious force won't let you in."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/s4berserk_move.js b/scripts/portal/s4berserk_move.js new file mode 100644 index 0000000000..b3bed0629b --- /dev/null +++ b/scripts/portal/s4berserk_move.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if (pi.getPlayer().getEventInstance().getProperty("canWarp")) { + pi.warp(910500200, "out01"); + return true; + } + pi.getPlayer().dropMessage(5, "You must defeat all the monsters first."); + return true; +} \ No newline at end of file diff --git a/scripts/portal/s4firehawk.js b/scripts/portal/s4firehawk.js new file mode 100644 index 0000000000..d0ee73cd38 --- /dev/null +++ b/scripts/portal/s4firehawk.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6240)) { + pi.warp(921100200, 0); + return true; + } else { + pi.getPlayer().message("A mysterious force won't let you in."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/s4hitman.js b/scripts/portal/s4hitman.js new file mode 100644 index 0000000000..558c9d041b --- /dev/null +++ b/scripts/portal/s4hitman.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6202)) { + pi.getPlayer().getClient().getChannelServer().getMapFactory().getMap(910200000).resetReactors(); // Make sure they actually can do what they need... + pi.warp(910200000, 0); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/s4iceeagle.js b/scripts/portal/s4iceeagle.js new file mode 100644 index 0000000000..6400c1f3a0 --- /dev/null +++ b/scripts/portal/s4iceeagle.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6242)) { + pi.warp(921100210, 0); + return true; + } else { + pi.getPlayer().message("A mysterious force won't let you in."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/s4nest.js b/scripts/portal/s4nest.js new file mode 100644 index 0000000000..d3262f3e3e --- /dev/null +++ b/scripts/portal/s4nest.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + pi.warp(924000100, 0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/s4resur_enter.js b/scripts/portal/s4resur_enter.js new file mode 100644 index 0000000000..70e8e19b8a --- /dev/null +++ b/scripts/portal/s4resur_enter.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6134)) { + pi.warp(922020000, 0); + return true; + } else { + pi.getPlayer().message("A mysterious force won't let you in."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/s4resur_out.js b/scripts/portal/s4resur_out.js new file mode 100644 index 0000000000..37a08be4f1 --- /dev/null +++ b/scripts/portal/s4resur_out.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author DiscoveryMS (Twdtwd) + * @purpose Warps to the Forgotten Passage and gives you the needed item for the resurection. + */ +function enter(pi) { + if(pi.isQuestStarted(6134)) { + pi.warp(220070400, 3); + pi.gainItem(4031448, 1); + return true; + } else { + pi.warp(220070400, 3); + return true; + } +} \ No newline at end of file diff --git a/scripts/portal/s4resurrection.js b/scripts/portal/s4resurrection.js new file mode 100644 index 0000000000..72b6c61044 --- /dev/null +++ b/scripts/portal/s4resurrection.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author DiscoveryMS (Twdtwd) + * @purpose Warps to the Cold Cave for Resurection. + */ +function enter(pi) { + pi.warp(923000100, 0); + return true; +} \ No newline at end of file diff --git a/scripts/portal/s4rush.js b/scripts/portal/s4rush.js new file mode 100644 index 0000000000..c0e6465301 --- /dev/null +++ b/scripts/portal/s4rush.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6110)) { + pi.warp(910500100, 0); + return true; + } else { + pi.getPlayer().message("A mysterious force won't let you in."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/s4tornado_enter.js b/scripts/portal/s4tornado_enter.js new file mode 100644 index 0000000000..39ae8177ac --- /dev/null +++ b/scripts/portal/s4tornado_enter.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev v83 (Moogra) + * @purpose Warps to the Junior Balrog map for the Rush Skill. + */ +function enter(pi) { + if(pi.isQuestStarted(6230) || pi.haveItem(4001110)) { + pi.warp(922020200, 1); + return true; + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/secretgate1_open.js b/scripts/portal/secretgate1_open.js new file mode 100644 index 0000000000..e7d6c07b57 --- /dev/null +++ b/scripts/portal/secretgate1_open.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Stage 4: Mark of Evil Door - Guild Quest + @Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("secretgate1").getState() == 1) { + pi.warp(990000611,1); + return true; + } else { + pi.playerMessage(5, "This door is closed."); + return false; + } +} diff --git a/scripts/portal/secretgate2_open.js b/scripts/portal/secretgate2_open.js new file mode 100644 index 0000000000..226e8bf9e5 --- /dev/null +++ b/scripts/portal/secretgate2_open.js @@ -0,0 +1,34 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* + Stage 4: Mark of Evil Door - Guild Quest + @Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("secretgate2").getState() == 1) { + pi.warp(990000631,1); + return true; + } else { + pi.getPlayer().dropMessage(5, "This door is closed."); + return false; + } +} diff --git a/scripts/portal/secretgate3_open.js b/scripts/portal/secretgate3_open.js new file mode 100644 index 0000000000..dfb1853ade --- /dev/null +++ b/scripts/portal/secretgate3_open.js @@ -0,0 +1,34 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* + Stage 4: Mark of Evil Door - Guild Quest + @Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("secretgate3").getState() == 1) { + pi.warp(990000641,1); + return true; + } else { + pi.getPlayer().dropMessage(5, "This door is closed."); + return false; + } +} diff --git a/scripts/portal/space_return.js b/scripts/portal/space_return.js new file mode 100644 index 0000000000..27966a28cd --- /dev/null +++ b/scripts/portal/space_return.js @@ -0,0 +1,6 @@ +//Author: kevintjuh93 + +function enter(pi) { + pi.warp(pi.getPlayer().getSavedLocation("EVENT")); + return true; +} \ No newline at end of file diff --git a/scripts/portal/speargate_open.js b/scripts/portal/speargate_open.js new file mode 100644 index 0000000000..0b826b2ec2 --- /dev/null +++ b/scripts/portal/speargate_open.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Stage 2: Exit Door - Guild Quest + @Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("speargate").getState() == 4) { + pi.warp(990000401); + return true; + } else { + pi.getPlayer().dropMessage(5, "This way forward is not open yet."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/statuegate_open.js b/scripts/portal/statuegate_open.js new file mode 100644 index 0000000000..00563c43ab --- /dev/null +++ b/scripts/portal/statuegate_open.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Stage 1: Gatekeeper door - Guild Quest + @Author Lerk +*/ +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("statuegate").getState() == 1) { + pi.warp(990000301); + return true; + } else { + pi.getPlayer().dropMessage(5, "The gate is closed."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/stonegate_open.js b/scripts/portal/stonegate_open.js new file mode 100644 index 0000000000..b8de3a333b --- /dev/null +++ b/scripts/portal/stonegate_open.js @@ -0,0 +1,33 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* + Stage 2: Key door - Guild Quest + @Author Lerk +*/ +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("stonegate").getState() == 1) { + pi.warp(990000430); + return true; + } else { + pi.getPlayer().dropMessage(5, "The door is still blocked."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/subway_in2.js b/scripts/portal/subway_in2.js new file mode 100644 index 0000000000..a6d091fedd --- /dev/null +++ b/scripts/portal/subway_in2.js @@ -0,0 +1,4 @@ +function enter(pi) { + pi.openNpc(1052007); + return true; +} \ No newline at end of file diff --git a/scripts/portal/tamepig_out2.js b/scripts/portal/tamepig_out2.js new file mode 100644 index 0000000000..e055c35f9b --- /dev/null +++ b/scripts/portal/tamepig_out2.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + if(!(pi.haveItem(4031507, 5) && pi.haveItem(4031508, 5) && pi.isQuestStarted(6002))) { + pi.removeAll(4031507); + pi.removeAll(4031508); + } + + if (pi.getClient().getChannelServer().getMapFactory().getMap(923010000).getCharacters().size() < 1) + pi.getClient().getChannelServer().getMapFactory().getMap(923010000).killAllMonsters(); + pi.warp(230000003, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/templeenter.js b/scripts/portal/templeenter.js new file mode 100644 index 0000000000..81962ab647 --- /dev/null +++ b/scripts/portal/templeenter.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.cancelItem(2210016); + pi.warp(270000100, "out00"); + return true; +} \ No newline at end of file diff --git a/scripts/portal/timeQuest.js b/scripts/portal/timeQuest.js new file mode 100644 index 0000000000..3f4b357d28 --- /dev/null +++ b/scripts/portal/timeQuest.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author Moogra + */ +function enter(pi) { + var mapid = pi.getPlayer().getMapId(); + pi.playPortalSound(); + var map = (mapid - 270010000) / 100; + //pi.getPlayer().dropMessage(5, map + " " + pi.isQuestCompleted(3534)); + if(map < 5 && pi.isQuestCompleted(3500 + map)) { + pi.warp(mapid + 10, "out00"); + } else if(map == 5 && pi.isQuestCompleted(3502 + map)) { + pi.warp(270020000, "out00"); + } else if(map > 100 && map < 105 && pi.isQuestCompleted(3407 + map)) { + pi.warp(mapid + 10, "out00"); + } else if(map == 105 && pi.isQuestCompleted(3514)) { + pi.warp(270030000, "out00"); + } else if(map > 200 && map < 205 && pi.isQuestCompleted(3314 + map)) { + pi.warp(mapid + 10, "out00"); + } else if(map == 205 && pi.isQuestCompleted(3519)) { + pi.warp(270040000, "out00"); + } else if(map == 300 && (pi.haveItem(4032002) || pi.isQuestCompleted(3522))) { + pi.warp(270040100, "out00"); + } else { + if(map > 200) { + pi.warp(270030000, "in00"); + } else if(map > 100) { + pi.warp(270020000, "in00"); + } else { + pi.warp(270010000, "in00"); + } + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/tutoChatNPC.js b/scripts/portal/tutoChatNPC.js new file mode 100644 index 0000000000..1e890201fe --- /dev/null +++ b/scripts/portal/tutoChatNPC.js @@ -0,0 +1,7 @@ +function enter(pi) { + if (pi.hasLevel30Character()) { + pi.openNpc(2007); + } + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/tutorHelper.js b/scripts/portal/tutorHelper.js new file mode 100644 index 0000000000..620860c5d0 --- /dev/null +++ b/scripts/portal/tutorHelper.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author kevintjuh93 + */ +function enter(pi) { + pi.spawnGuide(); + pi.talkGuide("Welcome to Maple World! I'm Mimo. I'm in charge of guiding you until you reach Lv. 10 and become a Knight-In-Training. Double-click for further information!"); + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/tutorMinimap.js b/scripts/portal/tutorMinimap.js new file mode 100644 index 0000000000..3e0e58dc98 --- /dev/null +++ b/scripts/portal/tutorMinimap.js @@ -0,0 +1,5 @@ +function enter(pi) { + pi.guideHint(1); + pi.blockPortal(); + return true; +} \ No newline at end of file diff --git a/scripts/portal/tutorialNPC.js b/scripts/portal/tutorialNPC.js new file mode 100644 index 0000000000..158c71891d --- /dev/null +++ b/scripts/portal/tutorialNPC.js @@ -0,0 +1,24 @@ +function enter(pi) { + if (pi.getPlayer().getLevel() <= 10 && pi.getPlayer().getJob().getId() == 0) { + var m = pi.getPlayer().getMap().getId(); + var npcid = 0; + + if (m == 120000101) { // Navigation Room, The Nautilus + npcid = 1090000; // Maybe 1090000? + } else if (m == 102000003) { // Warrior's Sanctuary + npcid = 1022000; + }else if (m == 103000003) { // Thieves' Hideout + npcid = 1052001; + }else if (m == 100000201) { // Bowman Instructional School + npcid = 1012100; + } else if (m == 101000003) { // Magic Library + npcid = 1032001; + } + + if (npcid != 0) { + pi.openNpc(npcid); + return true; + } + } + return false; +} \ No newline at end of file diff --git a/scripts/portal/tutorquest.js b/scripts/portal/tutorquest.js new file mode 100644 index 0000000000..b889cadc93 --- /dev/null +++ b/scripts/portal/tutorquest.js @@ -0,0 +1,16 @@ +function enter(pi) { + if(pi.getPlayer().getMapId() == 130030001){ + if(pi.isQuestStarted(20010)){ + pi.warp(130030002); + } else { + pi.message("Please click on the NPC first to receive a quest"); + } + } else if(pi.getPlayer().getMapId() == 130030002){ + pi.warp(130030003); + } else if(pi.getPlayer().getMapId() == 130030003){ + pi.warp(130030004); + } else if(pi.getPlayer().getMapId() == 130030004){ + pi.warp(130030005); + } + return true; +} \ No newline at end of file diff --git a/scripts/portal/under30gate.js b/scripts/portal/under30gate.js new file mode 100644 index 0000000000..c65b01c079 --- /dev/null +++ b/scripts/portal/under30gate.js @@ -0,0 +1,37 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/* +Warp to Sharen III's Grave - Guild Quest +Give guild points if holding appropriate item and not gained already +Save location to return. + +@Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getLevel() <= 30) { + pi.warp(990000640, 1); + return true; + } else { + pi.getPlayer().dropMessage(5, "You cannot proceed past this point."); + return false; + } +} \ No newline at end of file diff --git a/scripts/portal/undodraco.js b/scripts/portal/undodraco.js new file mode 100644 index 0000000000..f3b92f0770 --- /dev/null +++ b/scripts/portal/undodraco.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function enter(pi) { + pi.cancelItem(2210016); + pi.warp(240000110, 2); + return true; +} \ No newline at end of file diff --git a/scripts/portal/watergate_open.js b/scripts/portal/watergate_open.js new file mode 100644 index 0000000000..557d2e7733 --- /dev/null +++ b/scripts/portal/watergate_open.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +Stage 3: Exit Door - Guild Quest +@Author Lerk +*/ + +function enter(pi) { + if (pi.getPlayer().getMap().getReactorByName("watergate").getState() == 1) { + pi.warp(990000600); + return true; + } else + pi.getPlayer().dropMessage(5, "This way forward is not open yet."); + return false; +} diff --git a/scripts/quest/1021.js b/scripts/quest/1021.js new file mode 100644 index 0000000000..434a2b6c34 --- /dev/null +++ b/scripts/quest/1021.js @@ -0,0 +1,96 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator (Modified by XxOsirisxX) + NPC Name: Roger + Map(s): Maple Road : Lower level of the Training Camp (2) + Description: Quest - Roger's Apple +*/ +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendNext("Hey, Man~ What's up? Haha! I am Roger who can teach you adorable new Maplers lots of information."); + else if (status == 1) + qm.sendNextPrev("You are asking who made me do this? Ahahahaha!\r\nMyself! I wanted to do this and just be kind to you new travellers."); + else if (status == 2) + qm.sendAcceptDecline("So..... Let me just do this for fun! Abaracadabra~!"); + else if (status == 3) { + if (qm.c.getPlayer().getHp() >= 50) { + qm.c.getPlayer().setHp(25); + qm.c.getPlayer().updateSingleStat(MapleStat.HP, 25); + } + if (!qm.haveItem(2010007)) + qm.gainItem(2010007, 1); + qm.forceStartQuest(); + qm.sendNext("Surprised? If HP becomes 0, then you are in trouble. Now, I will give you #rRoger's Apple#k. Please take it. You will feel stronger. Open the Item window and double click to consume. Hey, it's very simple to open the Item window. Just press #bI#k on your keyboard."); + } else if (status == 4) { + qm.sendNextPrev("Please take all Roger's Apples that I gave you. You will be able to see the HP bar increasing. Please talk to me again when you recover your HP 100%."); + } else if (status == 5) { + qm.showInfo("UI/tutorial.img/28"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + if (qm.c.getPlayer().getHp() < 50) { + qm.sendNext("Hey, your HP is not fully recovered yet. Did you take all the Roger's Apple that I gave you? Are you sure?"); + qm.dispose(); + } else + qm.sendNext("How easy is it to consume the item? Simple, right? You can set a #bhotkey#k on the right bottom slot. Haha you didn't know that! right? Oh, and if you are a beginner, HP will automatically recover itself as time goes by. Well it takes time but this is one of the strategies for the beginners."); + else if (status == 1) + qm.sendNextPrev("Alright! Now that you have learned alot, I will give you a present. This is a must for your travel in Maple World, so thank me! Please use this under emergency cases!"); + else if (status == 2) + qm.sendNextPrev("Okay, this is all I can teach you. I know it's sad but it is time to say good bye. Well take care if yourself and Good luck my friend!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v2010000# 3 #t2010000#\r\n#v2010009# 3 #t2010009#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 10 exp"); + else if (status == 3) { + if(qm.isQuestCompleted(1021)) + qm.dropMessage(1,"Unknown Error"); + else if(qm.canHold(2010000) && qm.canHold(2010009)){ + qm.gainExp(10); + qm.gainItem(2010000, 3); + qm.gainItem(2010009, 3); + qm.forceCompleteQuest(); + }else + qm.dropMessage(1,"Your inventory is full"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/10940.js b/scripts/quest/10940.js new file mode 100644 index 0000000000..d7a5ca2b59 --- /dev/null +++ b/scripts/quest/10940.js @@ -0,0 +1,23 @@ +//credits to kevintjuh93 + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode > 0) + status++; + else + qm.dispose(); + if (status == 0) + qm.sendAcceptDecline("Hello, #h0#. Welcome to Maple World. It's currently event season, and we're welcome new characters with a gift. Would you like your gift now?"); + else if (status == 1) { + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.gainItem(2430191, 1, true); + qm.sendOk("Open your inventory and double-click on it! These gifts will make you look stylish. Oh, one more thing! You'll get another gift at level 30. Good luck!"); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20000.js b/scripts/quest/20000.js new file mode 100644 index 0000000000..04ff4c6183 --- /dev/null +++ b/scripts/quest/20000.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Generic + NPC Name: Cygnus + Map(s): Ereve: Empress' Road + Description: Quest - Greetings from the Young Empress + Quest ID : 20000 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode > 0) + status++; + else + status--; + if (status == 0) + qm.sendNext("Ah, you've come... this is exhilarating. I am grateful for your decision to become a Cygnus Knight. I have been waiting a long time for someone like you. Someone that is courageous enough to face the Black Mage and not flinch..."); + else if (status == 1) + qm.sendNext("The battle against the evil nature of the Black Mage who wants to swallow up Maple World as a whole, the cunning nature of his disciples, and the physical battle against the crazy monsters will await you. There will also come a time where even you may turn against yourself into an enemy and torment you ..."); + else if (status == 2) + qm.sendOk("But I won't worry about that. I am confident that you will be able to fight through all that and protect Maple World from the Black Mage. Of course, you'll have to become a bit stronger than you are right now, right?"); + else if (status == 3) { + qm.gainItem(1142065, 1); // Noblesse Medal * 1 + qm.gainExp(20); //gain 20 exp!! + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20001.js b/scripts/quest/20001.js new file mode 100644 index 0000000000..ea56d76153 --- /dev/null +++ b/scripts/quest/20001.js @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Generic + NPC Name: Neinheart + Map(s): Ereve: Empress' Road + Description: Quest - Neinheart the Tactician + Quest ID: 20001 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) + qm.sendNext("Hello, #h #. I formally welcome you to the Cygnus Knights. My name is Neinheart Von Rubistein, the Head Tactician for the young Empress. I will be seeing you often from here on out, so I suggest you remember my name. Haha..."); + else if (status == 1) + qm.sendNextPrev("I understand that you didn't have enough time and exposure to figure out what you really need to do as a Cygnus Knight. I will eplain it to you in detail, one by one. I will explain where you are, who the young Empress is, and what our duties are..."); + else if (status == 2) + qm.sendNextPrev("You're standing on an island called Ereve, the only land that's governed by the young Empress that also happens to float in the air. Yes, we're floating in the air as we speak. We stay here out of necessity, but it usually works as a ship that floats all over Maple World, for the sake of the young Empress..."); + else if (status == 3) + qm.sendNextPrev("The young Empress is indeed the ruler of Maple World, the one and only governer of this world. What? You've never heard of such a thing? Ahhh, that's understandable. The young Empress may govern this world, but she's not a dictator that looms over everyone. She uses Ereve as a way for her to oversee the world as an observer without having to be too hands-on. That's how it usually is, anyway..."); + else if (status == 4) + qm.sendNextPrev("But situations arise every now and then where she'll have to take control. The evil Black Mage has been showing signs of resurrection all over the world. The very king of destruction that threatened to destroy the world as we know it is trying to reappear into our lives."); + else if (status == 5) + qm.sendNextPrev("The problem is, no one is aware of it. It's been so long since the Black Mage disappeared, that people have become used to peace in the world, not necessarily knowing what to do if a crisis like this reaches. If this keeps up, our world will be in grave danger in no time."); + else if (status == 6) + qm.sendNextPrev("That's when the young Empress decided to step forward and take control of this potential crisis before it revealed itself. She decided to create a group of Knights that will prevent the Black Mage from being fully resurrected. I'm sure you know of what happens afterwards since you volunteered to become a Knight yourself."); + else if (status == 7) + qm.sendNextPrev("Our duties are simple. We need to make ourselves more powerful; much more powerful than the state we're in right now, so that when the Black Mage returns, we'll battle him and eliminate him once and for all before he puts the whole world in grave danger. That is our goal, our mission, and therefore yours as well"); + else if (status == 8) + qm.sendAcceptDecline("This is the basic overview of this situation. Understood?"); + else if (status == 9) { + if (qm.isQuestCompleted(20001)) { + qm.gainExp(40); + qm.gainItem(1052177, 1); // fancy noblesse robe + } + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.sendNext("I'm glad you understand what I've told you but... did you know? Based on your current level, you won't be able to face the Black Mage. Heck you won't be able to face off his disciple's slave's monster's pet's dummy! Are you sure you are ready to protect Maple World like that?"); + } else if (status == 10) + qm.sendNextPrev("You may be a member of the Cygnus Knights, but that doesn't mean you're a knight. Forget being the official knight. You're not even a Knight-in-Training, yet. A lot of time will pass where you will just sit around here, doing paperwork for the Cygnus Knights, but..."); + else if (status == 11) + qm.sendNextPrev("But then again, no one is born strong, anyway. The Empress also prefers that she creates an enviroment where a string of powerful knights can be nurtured and created, as opposed to finding a supernaturally-gifted knight. For now, you'll have to become a Knight-in-Training, and make yourself much more powerful so you'll become useful later on. We'll talk about the duties of being a Cygnus Knight once you reach that level of competency."); + else if (status == 12) + qm.sendPrev("Take the portal on the left side and go straight, and you'll head towards #b Training Forest I # . There, you'll find the training instructor for the Knights, Kiku. The next time I see you, I'd like for you to be atleast at level 10."); + } +} \ No newline at end of file diff --git a/scripts/quest/20002.js b/scripts/quest/20002.js new file mode 100644 index 0000000000..fd11746411 --- /dev/null +++ b/scripts/quest/20002.js @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Generic + NPC Name: Kiku + Map(s): Empress' Road : Training Forest I + Description: Quest - Kiku the Training Instructor + Quest ID : 20002 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode > 0) + status++; + else + status--; + if (status == 0) + qm.sendNext("What? Neinheart sent you here? Ahh, you must be a rookie. Welcome, welcome. My name is Kiku, and my job is to train and mold kids like you into bonafide knights. Hmmm.. Why are you looking at me like that... Ahh, you must have never seen Piyos before."); + else if (status == 1) + qm.sendNext("We belong to a race called Piyos. You've talked to Shinsoo before, right? The one that stands next to the Empress. Yeah, Shinsoo is a Piyo, too. He may be of a different class, but... oh well. Piyos are only found in Ereve, so you may find us a bit odd at first, but you'll get used to us."); + else if (status == 2) + qm.sendAcceptDecline("Ah, I don't know if you are aware of this, but you won't find any monsters here in Ereve. Any form of evil will not be able to set foot on this island. Don't worry, you'll still have your opportunity to train here. Shinsoo created a fantasy creature called Mimi, which will be used as your training partners. Shall we begin?"); + else if (status == 3) { + qm.gainExp(60); + qm.gainItem(2000020, 10); // Red Potion for Noblesse * 10 + qm.gainItem(2000021, 10); // Blue Potion for Noblesse * 10 + qm.gainItem(1002869, 1); // Elegant Noblesse Hat * 1 + qm.sendOk("Ha, I like your enthusiasm, but you must prepare yourself for the training first before we start things off. Make sure that you are equipped with weapons, and that your skills are calibrated and ready to be used. I also gave you some potions, so have it ready just in case. Let me know when you're ready. You're going to wish that you didn't sign up to become a Cygnus Knight."); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20008.js b/scripts/quest/20008.js new file mode 100644 index 0000000000..dca016c829 --- /dev/null +++ b/scripts/quest/20008.js @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Generic + NPC Name: Kiku + Map(s): Empress' Road : Training Forest I + Description: Quest - The Path of a Knight + Quest ID : 20000 +*/ + +var status = -1; +var choice1; + +function start(mode, type, selection) { + if (mode < 1) { + qm.dispose(); + } + if (mode > 0) + status++; + if (status == 0) + qm.sendSimple("Are you ready to take on a mission? If you can't pass this test, then you won't be able to call yourself a real Knight. Are you sure you can do this? If you are afraid to do this, let me know. I won't tell Neinheart. \r\n #L0#I'll try this later.#l \r\n #L1#I'm not afraid. Let's do this.#l"); + else if (selection == 0) { + qm.sendNext("If you call yourself a Knight, then do not hesitate. Show everyone how much courage you have in you."); + qm.dispose(); + } else if (selection == 1) { + choice1 = selection; + qm.sendSimple("I'm glad you didn't run away, but... are you sure you want to become a Knight-in-Training? What I am asking is whether you're okay with being a Cygnus Knight, and therefore being tied to the Empress at all times? She may be an Empress, but she's also still just a kid. Are you sure you can fight for her? I won't let Neinheart know so just tell me what you really feel. \r\n #L2#If the Empress wants peace in the Maple World, then I'm down for whatever.#l \r\n #L3#As long as I can become a knight I'll endure whatever #l"); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } +} \ No newline at end of file diff --git a/scripts/quest/2001.js b/scripts/quest/2001.js new file mode 100644 index 0000000000..49669f72c4 --- /dev/null +++ b/scripts/quest/2001.js @@ -0,0 +1,54 @@ +importPackage(Packages.client); + +var item; +var stance; +var status = -1; +var vecItem; + +function end(mode, type, selection) { + if(mode == 0) { + qm.dispose(); + return; + } + status++; + + if(status == 0) { + qm.sendNext("THIS is the deed to the land that my son lost! And you even brought all the necessary materials to build the house! Thank you so much ... my relatives can all move in and live in #m102000000#! As a sign of appreciation ..."); + } + + else if(status == 1) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.USE).getNumFreeSlot() < 1) { + qm.getPlayer().dropMessage(1, "USE inventory full."); + qm.dispose(); + return; + } + + var talkStr = "Okay, now choose the scroll of your liking ... The odds of winning are 10% each. \r\n\r\n#rSELECT A ITEM\r\n#b"; + stance = qm.getPlayer().getJobStyle(); + + if(stance == Packages.client.MapleJob.WARRIOR || stance == Packages.client.MapleJob.BEGINNER) vecItem = new Array(2043002, 2043102, 2043202, 2044002, 2044102, 2044202, 2044402, 2044302); + else if(stance == Packages.client.MapleJob.MAGICIAN) vecItem = new Array(2043702, 2043802); + else if(stance == Packages.client.MapleJob.BOWMAN || stance == Packages.client.MapleJob.CROSSBOWMAN) vecItem = new Array(2044502, 2044602); + else if(stance == Packages.client.MapleJob.THIEF) vecItem = new Array(2043302, 2044702); + else vecItem = new Array(2044802, 2044902); + + for (var i = 0; i < vecItem.length; i++) + talkStr += "\r\n#L" + i + "# #i" + vecItem[i] + "# #t" + vecItem[i] + "#"; + qm.sendSimple(talkStr); + } + + else if(status == 2) { + item = vecItem[selection]; + qm.gainItem(item, 1); + qm.gainItem(4000022, -100); + qm.gainItem(4003000, -30); + qm.gainItem(4003001, -30); + qm.gainItem(4001004, -1); + qm.gainExp(20000 * qm.getPlayer().getExpRate()); + qm.gainMeso(15000 * qm.getPlayer().getMesoRate()); + qm.gainFame(2); + qm.completeQuest(); + + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20010.js b/scripts/quest/20010.js new file mode 100644 index 0000000000..39b48c4447 --- /dev/null +++ b/scripts/quest/20010.js @@ -0,0 +1,50 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.sendNext("Whoa, whoa! Are you really declining my offer? Well, you'll be able to #blevel-up quicker #kwith our help, so let me know if you change your mind. Even if you've declined a Quest, you can receive the Quest again if you just come and talk to me."); + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendNext("Welcome to Ereve! And you are? Oh, you're #b#h ##k! \r\nGood to meet you. I've been waiting. You've come to become a Cygnus Knight, right? My name is Kimu, and I'm currently guiding Noblesses like you at the request of Empress Cygnus."); + } else if (status == 1) { + qm.sendNextPrev("If you want to officially become a part of Cygnus Knights, you must first meet the Empress. She's at the center of this island, accompained by Shinsoo. My brothers and I would like to share with you a few things that are considered #bBasic Knowledge#k in Maple World before you go. Would that be okay?"); + } else if (status == 2) { + qm.sendOk("Oh, let me warn you that this is a Quest. You may have noticed that NPCs around Maple World occasionally ask you for various favors. A favor of that sort is called a #bQuest#k. You will receive reward items or EXP upon completing Quests, so I strongly suggest you diligently fulfill the favors of Maple NPCs."); + } else if (status == 3) { + qm.sendAcceptDecline("Would you like to meet #bKizan#k, who can tell you about hunting? You can find Kizan by following the arrow to the left."); + } else if (status == 4) { + qm.forceStartQuest(); + qm.guideHint(2); + qm.dispose(); + } + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + qm.dispose(); + } else { + if (status == 0) { + qm.sendNext("Are you the Noblesse my brother Kimu sent? Nice to meet you! I'm Kizan. I'll give you the reward Kimu asked me to give you. Remember, you can check your Inventory by pressing the #bI key#k. Red potions help you recover HP, and blue ones help recover MP. It's a good idea to learn how to use them beforehand so you'll be ready with them when you're in danger. \r\n\r\n#fUI/UIWindow.img/Quest/reward# \r\n\r\n#v2000020# #z2000020# \r\n#v2000021# #z2000021# \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0#15 exp"); + } else if (status == 1) { + if(qm.canHold(2000022) && qm.canHold(2000023)){ + if(!qm.isQuestCompleted(21010)) { + qm.gainItem(2000020, 5); + qm.gainItem(2000021, 5); + qm.gainExp(15); + } + qm.guideHint(3); + qm.forceCompleteQuest(); + } else + qm.dropMessage(1, "Your inventory is full"); + + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20011.js b/scripts/quest/20011.js new file mode 100644 index 0000000000..d2badd1bec --- /dev/null +++ b/scripts/quest/20011.js @@ -0,0 +1,50 @@ +/* + NPC Name: Kisan + Description: Quest - Cygnus tutorial helper +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("You don't want to? It's not even that hard, and you'll receive special equipment as a reward! Well, give it some thought and let me know if you change your mind."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("There are a number of ways to hunt, but the most basic way is with your #bRegular Attack#k. All you need is a weapon in your hand, since it's a simple matter of just swinging your weapon at monsters."); + } else if (status == 1) { + qm.sendNextPrev("Press the #bC#k to use your Regular Attack. Usually the C is located #bat the bottom left of the keyboard#k, but you don't need me to tell you that, right? Find the C and try it out!"); + } else if (status == 2) { + qm.sendAcceptDecline("Now that you've tried it, we've got to test it out. In this area, you can find the weakest #r#o100120##ks in Ereve, which is perfect for you. Try hunting #r1#k. I'll give you a reward when you get back."); + } else if (status == 3) { + qm.forceStartQuest(); + qm.guideHint(4); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 1) { + status++; + } else { + status--; + } + if (status == 0) { + qm.sendNext("Ah, it seems like you've successfully hunted a #o100120#. Pretty simple, right? Regular Attacks may be easy to use, but they are pretty weak. Don't worry, though. #p1102006# will teach you how to use more powerful skills. Wait, let me give you a well-deserved quest reward before you go."); + } else if (status == 1) { + qm.sendNextPrev("This equipment is for Noblesses. It's much cooler than what you're wearing right now, isn''t it? Follow the arrows to your left to meet my younger brother #b#p1102006##k. How about you change into your new Noblesse outfit before you go? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1002869# #t1002869# - 1 \r\n#i1052177# #t1052177# - 1 \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 30 exp"); + } else if (status == 2) { + qm.gainItem(1002869, 1); + qm.gainItem(1052177, 1); + qm.forceCompleteQuest(); + qm.gainExp(30); + qm.guideHint(6); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20012.js b/scripts/quest/20012.js new file mode 100644 index 0000000000..eb12ce63b2 --- /dev/null +++ b/scripts/quest/20012.js @@ -0,0 +1,46 @@ +/* + NPC Name: Kinu + Description: Quest - Cygnus tutorial helper +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("Regular Attacks are basic skills that are easy to use. It is important to remember that real hunting is done using your Skills. I suggest you reconsider."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("I've been waiting for you, #h0#. My name is #p1102006# and I'm the third brother you are going to meet. So, you've learned about using Regular Attacks, correct? Well, next you'll be learning about your #bSkills#k, which you will find very helpful in Maple World."); + } else if (status == 1) { + qm.sendNextPrev("You earn Skill Points every time you level up, which means you probably have a few saved up already. Press the #bK key#k to see your skills. Invest your Skill Points in the skill you wish to strengthen and don't forget to #bplace the skill in a Quick Slot for easy use#k."); + } else if (status == 2) { + qm.sendAcceptDecline("Time to practice before you forget. You will find a lot of #o100121#s in this area. Why don't you hunt #r3 #o100121#s#k using your #bThree Snails#b skill and bring me 1 #b#t4000483##k as proof? I'll wait for you here."); + } else if (status == 3) { + qm.forceStartQuest(); + qm.guideHint(8); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 1) { + status++; + } else { + status--; + } + if (status == 0) { + qm.sendNext("You've successfully defeated the #o100121#s and brought me a #t4000483#. That's very impressive! #bYou earn 3 Skill Points every time you level up, after you officially become a knight, that is. Keep following the arrow to the left, and you''ll meet #b#p1102007##k, who will guide you through the next step.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 40 exp"); + } else if (status == 1) { + qm.gainItem(4000483, -1); + qm.forceCompleteQuest(); + qm.gainExp(40); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20013.js b/scripts/quest/20013.js new file mode 100644 index 0000000000..9c07a2da36 --- /dev/null +++ b/scripts/quest/20013.js @@ -0,0 +1,59 @@ +/* + NPC Name: Kia + Description: Quest - Cygnus tutorial helper +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("Hmm, was that too much to ask? Is it because you don''t know how to break Boxes? I'll tell you how if you accept my Quest. Let me know if you change your mind."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("#b(*clang clang*)#k"); + } else if (status == 1) { + qm.sendNextPrev("Whoa! Hey! You scared me. I didn't know I had a visitor. You must be the Noblesse #p1102006# was talking about. Welcome! I''m #p1102007#, and my hobby is making #bChairs#k. I'm thinking about making you one as a welcome present."); + } else if (status == 2) { + qm.sendNextPrev("But wait, I can't make you one because I don''t have enough materials. Could you find me the materials I need? Around this area, you will find a lot of Boxes with items inside. Could you bring me back a #t4032267# and a #t4032268# found inside those Boxes?"); + } else if (status == 3) { + qm.sendNextPrev("Do you know how to get items from boxes? All you have to do is break the Boxes like you're attacking a monster. The difference is that you can attack monsters using your Skills, but you can #bonly use Regular Attacks to break Boxes#k."); + } else if (status == 4) { + qm.sendAcceptDecline("Please bring me 1 #b#t4032267##k and 1 #b#t4032268##k found inside those Boxes. I'll make you an awesome Chair as soon as I have what I need. I'll wait here!"); + } else if (status == 5) { + qm.forceStartQuest(); + qm.guideHint(9); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 1) { + status++; + } else { + status--; + } + if (status == 0) { + qm.sendNext("Did you bring me a Building Stone and a Drape? Let's see. Ah, these are just what I need! They indeed are a #t4032267# and a #t4032268#! I'll make you a Chair right away."); + } else if (status == 1) { + qm.sendNextPrev("Here it is, a #t3010060#. What do you think? Nifty, huh? You can #bquickly recover your HP by sitting in this Chair#k. It will be stored in the #bSet-up#k window in your Inventory, so confirm that you've received the chair and head over to #b#p1102008##k. You'll see him if you keep following the arrow to the left. \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i3010060# 1 #t3010060# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 95 exp"); + } else if (status == 2) { + qm.gainItem(4032267, -1); + qm.gainItem(4032268, -1); + qm.gainItem(3010060, 1); + qm.forceCompleteQuest(); + qm.forceCompleteQuest(20000); + qm.forceCompleteQuest(20001); + qm.forceCompleteQuest(20002); + qm.forceCompleteQuest(20015); + qm.gainExp(95); + qm.guideHint(10); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20016.js b/scripts/quest/20016.js new file mode 100644 index 0000000000..8388d72410 --- /dev/null +++ b/scripts/quest/20016.js @@ -0,0 +1,55 @@ +/* + NPC Name: Nineheart + Description: Quest - Do you know the black Magician? +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 8) { + qm.sendNext("Oh, do you still have some questions? Talk to me again and I'll explain it to you from the very beginning."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("Hello, #h0#. Welcome to #p1101000# Knights. My name is #p1101002# and I am currently serving as the young Empress's Tactician. We'd better get acquainted since we'll be seeing a lot of each other. Haha!"); + } else if (status == 1) { + qm.sendNextPrev("I'm sure you have a lot of questions since everything happened so quickly. I'll explain it all, one by one, from where you are to what you're here to do."); + } else if (status == 2) { + qm.sendNextPrev("This island is called Ereve. Thanks to the Empress's magic, this island usually floats around like a boat in the sky and patrols around Maple World. Right now, however, we've stopped here for a reason."); + } else if (status == 3) { + qm.sendNextPrev("The young Empress is the ruler of Maple World. What? This is the first time you've heard of her? Ah, yes. Well, she's the ruler of Maple World but she doesn't like to control it. She watches from afar to make sure that all is well. Well, at least that's her usual role."); + } else if (status == 4) { + qm.sendNextPrev("But that's not the case right now. We've been finding signs all over Maple World that foreshadow the revival of the Black Mage. We can't have the Black Mage come back to terrorize Maple World as he has in the past!"); + } else if (status == 5) { + qm.sendNextPrev("But that was ages ago and people today don't realize how scary the Black Mage is. We've all become spoiled by the peaceful Maple World we enjoy today and forgotten how chaotic and frightening Maple World once was. If we don't do something, the Black Mage will once again rule Maple World!"); + } else if (status == 6) { + qm.sendNextPrev("This is why the young Empress has decided to take matters into her own hands. She's forming a knighthood of brave Maplers to defeat the Black Mage once and for all. You know what you need to do, right? I''m sure you have an idea since you, yourself, signed up to be a Knight."); + } else if (status == 7) { + qm.sendNextPrev("We have to get stronger so we can defeat the Black Mage if he revives. Our primary goal is to prevent him from destroying Maple World, and you will play a prominent role in that."); + } else if (status == 8) { + qm.sendAcceptDecline("That concludes my explanation. Have I answered all your questions? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 380 exp"); + } else if (status == 9) { + if (!qm.isQuestStarted(20016)) { + qm.forceStartQuest(); + qm.gainExp(380); + } + qm.sendNext("I'm glad you're clear about our current situation, but you know, at your current level, you're not even strong enough to face the Black Mage's minions, let alone the Black Mage himself. Not even his minions' minions, as a matter of fact. How will you protect Maple World at your current level?"); + } else if (status == 10) { + qm.sendNextPrev("Although you've been accepted into the knighthood, you cannot be recognized as a knight yet. You are not an Official Knight because you're not even a Knight-in-Training. If you remain at your current level, you'll be nothing more than the handyman of #p1101000# Knights."); + } else if (status == 11) { + qm.sendNextPrev("But no one starts as a strong Knight on day one. The Empress didn''t want someone strong. She wanted someone with courage whom she could develop into a strong Knight through rigorous training. So, you should first become a Knight-in-Training. We'll talk about your missions when you get to that point."); + } else if (status == 12) { + qm.sendPrev("Take the portal on the left to reach the Training Forest. There, you will find #p1102000#, the Training Instructor, who will teach you how to become stronger. I don''t want to find you wandering around aimlessly until you reach Lv. 10, you hear?"); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { +} \ No newline at end of file diff --git a/scripts/quest/20017.js b/scripts/quest/20017.js new file mode 100644 index 0000000000..cb5fafa9f8 --- /dev/null +++ b/scripts/quest/20017.js @@ -0,0 +1,37 @@ +/* + NPC Name: Cygnus + Description: Quest - Encounter with the Young Queen +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("Hmm, there is nothing to worry about. This will be a breeze for someone your level. Muster your courage and let me know when you're ready."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("Hmm? #p1101002# sent you, huh? You must be the newbie that recently joined Cygnus Knights. Welcome, and nice to meet you! My name is #p1102000#. I''m the Training Instructor who trains all Noblesses like yourself. Of course, I'm not a human as you can tell."); + } else if (status == 1) { + qm.sendNextPrev("We are called Piyos. You''ve seen #p1101001# who is at the Empress''s side all the time, haven't you? Piyos are of the same family as #p1101001#, but we belong to different types. Of course, you haven't seen any of us since we only live in Ereve. You'll get used to Piyos in no time."); + } else if (status == 2) { + qm.sendNextPrev("Oh, and did you know that there are no monsters in Ereve? Not even a smidgeon of evil dare enter Ereve. But don't you worry. You'll be able to train with illusory monsters created by #p1101001# called Mimis."); + } else if (status == 3) { + qm.sendAcceptDecline("You seem prepared! Looking at what you've accomplished, I think you should jump right into hunting more advanced Mimis. How about you hunt #b15 #r#o100122#s in #m130010100##k#k? Use the portal on the left to reach the #bTraining Forest II#k."); + } else if (status == 4) { + qm.guideHint(12); + qm.forceStartQuest(20020); + qm.forceCompleteQuest(20100); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { +} \ No newline at end of file diff --git a/scripts/quest/20100.js b/scripts/quest/20100.js new file mode 100644 index 0000000000..883ac2875b --- /dev/null +++ b/scripts/quest/20100.js @@ -0,0 +1,47 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Traitor + NPC Name: Neinheart + Map(s): Ereve + Description: Quest - Time to Choose + Quest ID : 20100 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode > 0) + status++; + else { + qm.dispose(); + return; + } + if (status == 0) + qm.sendAcceptDecline("Ahhh, you're back. I can see that you're at level 10 now. It looks like you're flashing a glimmer of hope towards becoming a Knight. The basic training has now ended, and it's time for you to make the decision."); + else if (status == 1) { + qm.sendOk("Now look to the left. The leaders of the Knights will be waiting for you. There will be 5 paths for you to choose from. All you need to do is choose one of them. All 5 of them will lead you to the path of a Knight, so... I suggest you pay attention to what each path offers, and select the one you'd most like to take."); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20101.js b/scripts/quest/20101.js new file mode 100644 index 0000000000..5768b1fe97 --- /dev/null +++ b/scripts/quest/20101.js @@ -0,0 +1,41 @@ +/* + * Cygnus 1st Job advancement - Soul + */ + +importPackage(Packages.client); + +var status = -1; + +function end(mode, type, selection) { + if (mode == 0) { + if (status == 0) { + qm.sendNext("This is an important decision to make."); + qm.dispose(); + return; + } + status--; + } else { + status++; + } + if (status == 0) { + qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Soul Master?"); + } else if (status == 1) { + qm.sendNext("I have just molded your body to make it perfect for a Soul Master. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you arn't sure what to raise, just click on #bAuto#k."); + if (qm.getPlayer().getJob().getId() != 1100) { + qm.gainItem(1302077, 1); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.DAWNWARRIOR1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); + } else if (status == 2) { + qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); + } else if (status == 3) { + qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); + } else if (status == 4) { + qm.sendNextPrev("Unlike your time as a Nobless, once you become the Soul Master, you will lost a portion of your EXP when you run out of HP, okay?"); + } else if (status == 5) { + qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20102.js b/scripts/quest/20102.js new file mode 100644 index 0000000000..dad1a0766e --- /dev/null +++ b/scripts/quest/20102.js @@ -0,0 +1,41 @@ +/* + * Cygnus 1st Job advancement - Flame Wizard + */ + +importPackage(Packages.client); + +var status = -1; + +function end(mode, type, selection) { + if (mode == 0) { + if (status == 0) { + qm.sendNext("This is an important decision to make."); + qm.dispose(); + return; + } + status--; + } else { + status++; + } + if (status == 0) { + qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Flame Wizard?"); + } else if (status == 1) { + qm.sendNext("I have just molded your body to make it perfect for a Soul Master. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you arn't sure what to raise, just click on #bAuto#k."); + if (qm.getPlayer().getJob().getId() != 1200) { + qm.gainItem(1372043, 1); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.BLAZEWIZARD1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); + } else if (status == 2) { + qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); + } else if (status == 3) { + qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); + } else if (status == 4) { + qm.sendNextPrev("Unlike your time as a Nobless, once you become the Soul Master, you will lost a portion of your EXP when you run out of HP, okay?"); + } else if (status == 5) { + qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20103.js b/scripts/quest/20103.js new file mode 100644 index 0000000000..e7e15d8515 --- /dev/null +++ b/scripts/quest/20103.js @@ -0,0 +1,41 @@ +/* + * Cygnus 1st Job advancement - Wind Breaker + */ +importPackage(Packages.client); + +var status = -1; + +function end(mode, type, selection) { + if (mode == 0) { + if (status == 0) { + qm.sendNext("This is an important decision to make."); + qm.dispose(); + return; + } + status--; + } else { + status++; + } + if (status == 0) { + qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Wind Breaker?"); + } else if (status == 1) { + qm.sendNext("I have just molded your body to make it perfect for a Soul Master. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you arn't sure what to raise, just click on #bAuto#k."); + if (qm.getPlayer().getJob().getId() != 1300) { + qm.gainItem(2060000, 2000); + qm.gainItem(1452051, 1); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.WINDARCHER1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); + } else if (status == 2) { + qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); + } else if (status == 3) { + qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); + } else if (status == 4) { + qm.sendNextPrev("Unlike your time as a Nobless, once you become the Soul Master, you will lost a portion of your EXP when you run out of HP, okay?"); + } else if (status == 5) { + qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20104.js b/scripts/quest/20104.js new file mode 100644 index 0000000000..33fbf4a4dd --- /dev/null +++ b/scripts/quest/20104.js @@ -0,0 +1,42 @@ +/* + * Cygnus 1st Job advancement - Night Walker + */ +importPackage(Packages.client); + +var status = -1; + +function end(mode, type, selection) { + if (mode == 0) { + if (status == 0) { + qm.sendNext("This is an important decision to make."); + qm.dispose(); + return; + } + status--; + } else { + status++; + } + if (status == 0) { + qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Night Walker?"); + } else if (status == 1) { + qm.sendNext("I have just molded your body to make it perfect for a Soul Master. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you arn't sure what to raise, just click on #bAuto#k."); + if (qm.getPlayer().getJob().getId() != 1400) { + qm.gainItem(1472061, 1); + qm.gainItem(2070015, 800); + qm.gainItem(2070015, 800); + qm.gainItem(1142066, 1); + qm.changeJob(MapleJob.NIGHTWALKER1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); + } else if (status == 2) { + qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); + } else if (status == 3) { + qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); + } else if (status == 4) { + qm.sendNextPrev("Unlike your time as a Nobless, once you become the Soul Master, you will lost a portion of your EXP when you run out of HP, okay?"); + } else if (status == 5) { + qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20105.js b/scripts/quest/20105.js new file mode 100644 index 0000000000..c00334d597 --- /dev/null +++ b/scripts/quest/20105.js @@ -0,0 +1,41 @@ +/* + * Cygnus 1st Job advancement - Striker + */ +importPackage(Packages.client); + + +var status = -1; + +function end(mode, type, selection) { + if (mode == 0) { + if (status == 0) { + qm.sendNext("This is an important decision to make."); + qm.dispose(); + return; + } + status--; + } else { + status++; + } + if (status == 0) { + qm.sendYesNo("Have you made your decision? The decision will be final, so think carefully before deciding what to do. Are you sure you want to become a Striker?"); + } else if (status == 1) { + qm.sendNext("I have just molded your body to make it perfect for a Soul Master. If you wish to become more powerful, use Stat Window (S) to raise the appropriate stats. If you arn't sure what to raise, just click on #bAuto#k."); + if (qm.getplayer().getJob().getId() != 1500) { + qm.gainItem(1482014, 1); + qm.gainItem(1142066, 1); + qm.getplayer().changeJob(MapleJob.THUNDERBREAKER1); + qm.getPlayer().resetStats(); + } + qm.forceCompleteQuest(); + } else if (status == 2) { + qm.sendNextPrev("I have also expanded your inventory slot counts for your equipment and etc. inventory. Use those slots wisely and fill them up with items required for Knights to carry."); + } else if (status == 3) { + qm.sendNextPrev("I have also given you a hint of #bSP#k, so open the #bSkill Menu#k to acquire new skills. Of course, you can't raise them at all once, and there are some skills out there where you won't be able to acquire them unless you master the basic skills first."); + } else if (status == 4) { + qm.sendNextPrev("Unlike your time as a Nobless, once you become the Soul Master, you will lost a portion of your EXP when you run out of HP, okay?"); + } else if (status == 5) { + qm.sendNextPrev("Now... I want you to go out there and show the world how the Knights of Cygnus operate."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2017.js b/scripts/quest/2017.js new file mode 100644 index 0000000000..18ad69354b --- /dev/null +++ b/scripts/quest/2017.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Blue + NPC Name: Arwen + Map(s): Ellinia + Description: Quest - Arwen and the Glass Shoe + Quest ID: 2017 +*/ + +function start(mode, type, selection) { + + qm.forceCompleteQuest(); +} \ No newline at end of file diff --git a/scripts/quest/20200.js b/scripts/quest/20200.js new file mode 100644 index 0000000000..a8e6afb236 --- /dev/null +++ b/scripts/quest/20200.js @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Neinheart + Map(s): Empress' Road : Ereve (130000000) + Description: Quest - The End of Knight-in-Training +*/ +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 0 && mode == 0) { + qm.sendNext("Hmmm... do you feel like you still have missions to take care of as a trainee? I commend your level of patience, but this has gone too far. Cygnus Knights is in dire need of new, more powerful knights."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendAcceptDecline("#h0#? Wow, your level has sky-rocketed since the last time I saw you. You also look like you've taken care of a number of missions as well... You seem much more ready to move on now than the last time I saw you. What do you think? Are you interested in taking the #bKnighthood Exam#k? It's time for you to grow out of the Knight-in-Training and become a bonafide Knight, right?"); + } else if (status == 1) { + qm.startQuest(); + qm.completeQuest(); + qm.sendOk("If you wish to take the Knighthood Exam, please come to Ereve. Each Chief Knight will test your abilities, and if you meet their standards, then you will officially become a Knight."); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20201.js b/scripts/quest/20201.js new file mode 100644 index 0000000000..3a19a62fdb --- /dev/null +++ b/scripts/quest/20201.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Mihile + Map(s): Empress' Road : Ereve (130000000) + Description: Quest - Knighthood Exam: Dawn Warrior +*/ +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 0 && mode == 0) { + qm.sendNext("I guess you are not ready to tackle on the responsibilities of an official knight."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendYesNo("So you brought all of #t4032096#... Okay, I believe that your are now qualified to become an official knight. Do you want to become one?"); + } else if (status == 1) { + if (qm.getPlayer().getJob().getId() == 1100 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) { + qm.sendNext("You have too much #bSP#k with you. Use some more on the 1st-level skill."); + qm.dispose(); + } else { + if (qm.getPlayer().getJob().getId() != 1110) { + if (!qm.canHold(1142067)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + return; + } + qm.gainItem(4032096, -30); + qm.gainItem(1142067, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.DAWNWARRIOR2); + qm.completeQuest(); + } + qm.sendNext("You are a Knight-in-Training no more. You are now an official knight of the Cygnus Knights."); + } + } else if (status == 2) { + qm.sendNextPrev("I have given you some #bSP#k. I have also given you a number of skills for a Dawn Warrior that's only available to knights, so I want you to work on it and hopefully cultivate it as much as your soul."); + } else if (status == 3) { + qm.sendPrev("Now that you are officially a Cygnus Knight, act like one so you will keep the Empress's name up high."); + } else if (status == 4) { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20202.js b/scripts/quest/20202.js new file mode 100644 index 0000000000..81f667696d --- /dev/null +++ b/scripts/quest/20202.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Oz + Map(s): Empress' Road : Ereve (130000000) + Description: Quest - Knighthood Exam: Blaze Wizard +*/ +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 0 && mode == 0) { + qm.sendNext("Eh? Why? Is there something wrong?"); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendYesNo("You managed to bring all of #t4032097#!!! Okay, I believe that your are now qualified to become an official knight! Do you want to become one?"); + } else if (status == 1) { + if (qm.getPlayer().getJob().getId() == 1200 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) { + qm.sendNext("Wa, wait... you have way too much #bSP#k with you. You'll need to spend more SP on 1st-level skills to become an official knight."); + qm.dispose(); + } else { + if (qm.getPlayer().getJob().getId() != 1210) { + if (!qm.canHold(1142067)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + return; + } + qm.gainItem(4032097, -30); + qm.gainItem(1142067, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.BLAZEWIZARD2); + qm.completeQuest(); + } + qm.sendNext("You are no longer a Knight-in-Training. You are now an official Cygnus Knight!"); + } + } else if (status == 2) { + qm.sendNextPrev("I have given you some #bSP#k. I have also given you some skills of Blaze Wizards that are only available to official knights, so keep working!"); + } else if (status == 3) { + qm.sendPrev("Now that you have officially become one, I want you to keep that fire in you that you had when you first started this journey, but this time, as a proud member of the Cygnus Knights!"); + } else if (status == 4) { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20203.js b/scripts/quest/20203.js new file mode 100644 index 0000000000..ab3a264cd4 --- /dev/null +++ b/scripts/quest/20203.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Irena + Map(s): Empress' Road : Ereve (130000000) + Description: Quest - Knighthood Exam: Wind Archer +*/ +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 0 && mode == 0) { + qm.sendNext("Is there actually a reason why you should stay as a Knight-in-Training?"); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendYesNo("#t4032098#... I checked them all. I can tell you are now ready to make the leap as an official knight. Do you want to become one?"); + } else if (status == 1) { + if (qm.getPlayer().getJob().getId() == 1300 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) { + qm.sendNext("You have way too much #bSP#k with you. You'll need to spend more SP on 1st-level skills to become an official knight."); + qm.dispose(); + } else { + if (qm.getPlayer().getJob().getId() != 1310) { + if (!qm.canHold(1142067)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + return; + } + qm.gainItem(4032098, -30); + qm.gainItem(1142067, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.WINDARCHER2); + qm.completeQuest(); + } + qm.sendNext("You are no longer a Knight-in-Training. You are now officially a Cygnus Knight."); + } + } else if (status == 2) { + qm.sendNextPrev("I have given you some #bSP#k. I have also given you some skills of Wind Archer that are only available to official knights, so keep working!"); + } else if (status == 3) { + qm.sendPrev("As an official Cygnus Knight, you should always keep yourself level-headed."); + } else if (status == 4) { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20204.js b/scripts/quest/20204.js new file mode 100644 index 0000000000..496abb1d95 --- /dev/null +++ b/scripts/quest/20204.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Eckhart + Map(s): Empress' Road : Ereve (130000000) + Description: Quest - Knighthood Exam: Night Walker +*/ +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 0 && mode == 0) { + qm.sendNext("What's holding you back?"); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendYesNo("So you brought all the #t4032099#s with you. This is much b... way, I shouldn't congratulate you for doing something that you should be doing. At least, I can tell that you are now qualified to become an official knight. Do you want to become one right now?"); + } else if (status == 1) { + if (qm.getPlayer().getJob().getId() == 1400 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) { + qm.sendNext("What's with all this #bSP#k lying around? Use more SP on your 1st-level skills."); + qm.dispose(); + } else { + if (qm.getPlayer().getJob().getId() != 1410) { + if (!qm.canHold(1142067)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + return; + } + qm.gainItem(4032099, -30); + qm.gainItem(1142067, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.NIGHTWALKER2); + qm.completeQuest(); + } + qm.sendNext("You are no longer a Knight-in-Training. You have officially become a Cygnus Knight."); + } + } else if (status == 2) { + qm.sendNextPrev("I have given you some #bSP#k. I have also given you some skills of Night Walker that are only available to official knights, so keep working!"); + } else if (status == 3) { + qm.sendPrev("As a member of the Cygnus Knights, I hope you remain unaffected by temptations and stay strong."); + } else if (status == 4) { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20205.js b/scripts/quest/20205.js new file mode 100644 index 0000000000..d842fb9e5f --- /dev/null +++ b/scripts/quest/20205.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Xterminator + NPC Name: Hawkeye + Map(s): Empress' Road : Ereve (130000000) + Description: Quest - Knighthood Exam: Thunder Breaker +*/ +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 0 && mode == 0) { + qm.sendNext("Hmm? Why? What's holding you back?"); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendYesNo("Oh, you brought all #t4032100#s! Ahaha, I knew you'd be good at it. Tell you what, I now commend that you're now ready to become an official knight. Do you want to become one right now?"); + } else if (status == 1) { + if (qm.getPlayer().getJob().getId() == 1500 && qm.getPlayer().getRemainingSp() > ((qm.getPlayer().getLevel() - 30) * 3)) { + qm.sendNext("Hey, how did you manage to hunt all that? You have way too much #bSP#k lying around unused! You can't become an official knight like this! Use more SP on the 1st level skill."); + qm.dispose(); + } else { + if (qm.getPlayer().getJob().getId() != 1510) { + if (!qm.canHold(1142067)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + return; + } + qm.gainItem(4032100, -30); + qm.gainItem(1142067, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.THUNDERBREAKER2); + qm.completeQuest(); + } + qm.sendNext("You are now no longer a Knight-in-Training. You have now officially become a Cygnus Knight."); + } + } else if (status == 2) { + qm.sendNextPrev("I have also given you some #bSP#k and the accompanying skills of a Thunder Breakers that are only available to the official knights. These skills are lightning-based, so use them wisely!"); + } else if (status == 3) { + qm.sendPrev("Well, personally, I hope you don't lose your enthusiasm even after becoming the Cygnus Knights. Always seek out the positive even if you're in the midst of a barrage of negative items."); + } else if (status == 4) { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/20311.js b/scripts/quest/20311.js new file mode 100644 index 0000000000..4e381e94c0 --- /dev/null +++ b/scripts/quest/20311.js @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: ThreeStep + NPC Name: Mihile (1101003) + Description: Dawn Warrior 3rd job advancement + Quest: Shinsoo's Teardrop +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 1 && mode == 0) { + qm.sendNext("Come back when you are ready."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendNext("The jevel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us."); + } else if (status == 1) { + qm.sendYesNo("For your effort in preventing a potentially serious disaster, the Empress has decided to present you with a new title. Are you ready to accept it?"); + } else if (status == 2) { + nPSP = (qm.getPlayer().getLevel() - 70) * 3; + if (qm.getPlayer().getRemainingSp() > nPSP) { + qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); + qm.dispose(); + } else { + if (!qm.canHold(1142068)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + } else { + qm.gainItem(1142068, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.DAWNWARRIOR3); + qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you shall carry yourself with dignity and respect befitting your new title, an Advanced Knight of Cygnus Knights. May your glory continue to shine as bright as this moment."); + qm.completeQuest(); + qm.dispose(); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/quest/20312.js b/scripts/quest/20312.js new file mode 100644 index 0000000000..a636fbe50d --- /dev/null +++ b/scripts/quest/20312.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: ThreeStep + NPC Name: Oz (1101004) + Description: Blaze Wizard 3rd job advancement + Quest: Shinsoo's Teardrop +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 1 && mode == 0) { + qm.sendNext("Come back when you are ready."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendNext("The jevel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us."); + } else if (status == 1) { + qm.sendYesNo("As a token of her appreciation for your effort in preventing potentially serious matter, the Empress has decided to present you with a new title. Are you ready to accept it?"); + } else if (status == 2) { + nPSP = (qm.getPlayer().getLevel() - 70) * 3; + if (qm.getPlayer().getRemainingSp() > nPSP) { + qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); + qm.dispose(); + } else { + if (!qm.canHold(1142068)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + } else { + qm.gainItem(1142068, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.BLAZEWIZARD3); + qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you will train yourself with fervor as you will lead your group of Knights for the safety of this world. That fervor will provide you with plenty of courage."); + qm.completeQuest(); + qm.dispose(); + } + } + + } + } +} \ No newline at end of file diff --git a/scripts/quest/20313.js b/scripts/quest/20313.js new file mode 100644 index 0000000000..2616641c6c --- /dev/null +++ b/scripts/quest/20313.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: ThreeStep + NPC Name: Irena (1101005) + Description: Wind Archer 3rd job advancement + Quest: Shinsoo's Teardrop +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 1 && mode == 0) { + qm.sendNext("Come back when you are ready."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendNext("The jevel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us."); + } else if (status == 1) { + qm.sendYesNo("As a token of her appreciation for your work on this, the Empress has decided to present you with a new title. Would you like to receive that title?"); + } else if (status == 2) { + nPSP = (qm.getPlayer().getLevel() - 70) * 3; + if (qm.getPlayer().getRemainingSp() > nPSP) { + qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); + qm.dispose(); + } else { + if (!qm.canHold(1142068)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + } else { + qm.gainItem(1142068, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.WINDARCHER3); + qm.sendOk("#h #, as of this moment, you are an Advanced Knight. From this moment on, you will be carrying a while lot of responsibility befitting your new title as an Advanced Knight of Cygnus Knights. You may view the world in a carefree mode, but please remember what your mission is."); + qm.completeQuest(); + qm.dispose(); + } + } + + } + } +} \ No newline at end of file diff --git a/scripts/quest/20314.js b/scripts/quest/20314.js new file mode 100644 index 0000000000..dd7f4dd62d --- /dev/null +++ b/scripts/quest/20314.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: ThreeStep + NPC Name: Eckhart (1101006) + Description: Night Walker 3rd job advancement + Quest: Shinsoo's Teardrop +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 1 && mode == 0) { + qm.sendNext("Come back when you are ready."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendNext("The jevel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us."); + } else if (status == 1) { + qm.sendYesNo("The Empress thought highly of your accomplishment and granted you a new title. Would you like to receive it?"); + } else if (status == 2) { + nPSP = (qm.getPlayer().getLevel() - 70) * 3; + if (qm.getPlayer().getRemainingSp() > nPSP) { + qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); + qm.dispose(); + } else { + if (!qm.canHold(1142068)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + } else { + qm.gainItem(1142068, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.NIGHTWALKER3); + qm.sendOk("#h #, from here on out, you are an Advanced Knight of Cygnus Knights. The title comes with a newfound broad view on everything. You may encounter temptations here and there, but I want you to keep your faith and beliefs intact and do not succumb to the darkness."); + qm.completeQuest(); + qm.dispose(); + } + } + + } + } +} \ No newline at end of file diff --git a/scripts/quest/20315.js b/scripts/quest/20315.js new file mode 100644 index 0000000000..a9bf2e97df --- /dev/null +++ b/scripts/quest/20315.js @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: ThreeStep + NPC Name: Hawkeye (1101007) + Description: Thunder breaker 3rd job advancement + Quest: Shinsoo's Teardrop +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (status == 1 && mode == 0) { + qm.sendNext("Come back when you are ready."); + qm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.sendNext("The jevel you brought back from the Master of Disguise is Shinsoo's Teardrop. It is the crystalization of Shinsoo's powers. If the Black Mage gets his hands on this, then this spells doom for all of us."); + } else if (status == 1) { + qm.sendYesNo("Because of that, the Empress gave you a new title! Can you believe that? Do you want the title?"); + } else if (status == 2) { + nPSP = (qm.getPlayer().getLevel() - 70) * 3; + if (qm.getPlayer().getRemainingSp() > nPSP) { + qm.sendNext("You still have way too much #bSP#k with you. You can't earn a new title like that, I strongly urge you to use more SP on your 1st and 2nd level skills."); + qm.dispose(); + } else { + if (!qm.canHold(1142068)) { + qm.sendNext("If you wish to receive the medal befitting the title, you may want to make some room in your equipment inventory."); + qm.dispose(); + } else { + qm.gainItem(1142068, 1); + qm.getPlayer().changeJob(Packages.client.MapleJob.THUNDERBREAKER3); + qm.sendOk("#h #, from here on out, you will become an Advanced Knight of the Knights of Cygnus! As your standing rises, so does the difficulty of the tasks you will be receiving. But challenge is good, right? You have to enjoy life. Enjoy what's given to you!"); + qm.completeQuest(); + qm.dispose(); + } + } + + } + } +} \ No newline at end of file diff --git a/scripts/quest/2034.js b/scripts/quest/2034.js new file mode 100644 index 0000000000..b20c41ee7d --- /dev/null +++ b/scripts/quest/2034.js @@ -0,0 +1,44 @@ +importPackage(Packages.client); + +var item; +var stance; +var status = -1; +var item; + +function end(mode, type, selection) { + if(mode == 0) { + qm.dispose(); + return; + } + status++; + + if(status == 0) { + qm.sendNext("I knew it ... I knew you could get it done with, quickly! You did your job well last time, and here you are again, taking care of business!! Alright, since you have done it so well, I should reward you well. #b#p1051000##k is giving you a pair of shoes in hopes of helping you out on your future traveling."); + } + + else if(status == 1) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.EQUIP).getNumFreeSlot() < 1) { + qm.sendOk("Please free a EQUIP inventory slot to receive the reward."); + qm.dispose(); + return; + } + + stance = qm.getPlayer().getJobStyle(); + + if(stance == Packages.client.MapleJob.WARRIOR) item = 1072003; + else if(stance == Packages.client.MapleJob.MAGICIAN) item = 1072077; + else if(stance == Packages.client.MapleJob.BOWMAN || stance == Packages.client.MapleJob.CROSSBOWMAN) item = 1072081; + else if(stance == Packages.client.MapleJob.THIEF) item = 1072035; + else if(stance == Packages.client.MapleJob.BRAWLER || stance == Packages.client.MapleJob.GUNSLINGER) item = 1072294; + else item = 1072018; + + qm.gainItem(item, 1); + qm.gainItem(4000007, -150); + + qm.gainExp(2200 * qm.getPlayer().getExpRate()); + qm.completeQuest(); + + qm.sendOk("Alright, if you need work sometime down the road, feel free to come back and see me. This town sure can use a person like you for help~"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20520.js b/scripts/quest/20520.js new file mode 100644 index 0000000000..e507450baf --- /dev/null +++ b/scripts/quest/20520.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Biscuit +*/ +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) { + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + + if (status == 0) { + qm.sendNext("Wow, you have already reach Level 50, yet why are you still walking around like that? I mean, you've reached Level 50, but you are still walking around with your own feet. That's unusual behavior for a Knight like you."); + } else if (status == 1) { + qm.sendAcceptDecline("Well, I suppose it's up to you, but by doing that, you also risk marring the pride and honor of the Empress. This is why I am here to give you a helpful pointer. It's called #bMonster Riding#k. Of course you're interested in this, right?"); + } else if (status == 2) { + qm.forceStartQuest(); + qm.forceCompleteQuest(); + qm.sendOk("There's a special mount that only the Cygnus Knights can enjoy. If you are interested, visit #bEreve#k. I will give you more information on it."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/20522.js b/scripts/quest/20522.js new file mode 100644 index 0000000000..4ebfcc26a3 --- /dev/null +++ b/scripts/quest/20522.js @@ -0,0 +1,86 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Ronan Lana +*/ +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + return; + } + + else if (status >= 2 && mode == 0) { + qm.dispose(); + return; + } + + if(mode == 1) status++; + else status--; + + if (status == 0) { + qm.sendNext("The riding for Knights are a bit different from the rides available for regular folks. The takes place through a creature that is of the Mimi race that can be found on this island; they are called #bMimianas#k. Instead of riding monsters, the Knights ride Mimiana. There's one thing that you should never, ever forget."); + } else if (status == 1) { + qm.sendNextPrev("Dont't think of this as just a form of mount or transportation. These mounts can be your friend, your comrade, your colleague... all of the above. Even a friend close enough to entrust your life! That's why the Knights of Ereve actually grow their own mounts."); + } else if (status == 2) { + qm.sendAcceptDecline("Now, here's a Mimiana egg. Are you ready to raise a Mimiana and have it as your traveling companion for the rest of its life?"); + } else if (status == 3) { + if(!qm.haveItem(4220137) && !qm.canHold(4220137)) { + qm.sendOk("Make up a room on your ETC tab so I can give you the Mimiana egg."); + qm.dispose(); + return; + } + + qm.forceStartQuest(); + if(!qm.haveItem(4220137)) qm.gainItem(4220137); + qm.sendOk("Mimiana's egg can be raised by #bsharing your daily experiences with it#k. Once Mimiana fully grows up, please come see me."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode != 1) { + qm.dispose(); + return; + } + + status++; + if (status == 0) { + qm.sendNext("Hey there! How's Mimiana's egg?"); + } else if (status == 1) { //pretty sure there would need to have an egg EXP condition... Whatever. + if(!qm.haveItem(4220137)) { + qm.sendOk("I see, you lost your egg... You need to be more careful when raising a baby Mimiana!"); + qm.dispose(); + return; + } + + qm.sendOk("Oh, were you able to awaken Mimiana Egg? That's amazing... Most knights can't even dream of awakening it in such a short amount of time."); + + qm.forceCompleteQuest(); + qm.gainItem(4220137, -1); + qm.gainExp(37600 * qm.getPlayer().getExpRate()); + + qm.dispose(); + } +} + diff --git a/scripts/quest/20600.js b/scripts/quest/20600.js new file mode 100644 index 0000000000..76a86566ed --- /dev/null +++ b/scripts/quest/20600.js @@ -0,0 +1,22 @@ +/* + * Cygnus Skill - Training Never ends + */ + +var status = -1; + +function start(mode, type, selection) { + status++; + + if (status == 0) { + qm.sendAcceptDecline("#h0#. Have you been slacking off on training since reaching Level 100? We all know how powerful you are, but the training is not complete. Take a look at these Knight Commanders. They train day and night, preparing themselves for the possible encounter with the Black Mage."); + } else { + if (mode == 1) { + qm.forceStartQuest(); + } + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/20610.js b/scripts/quest/20610.js new file mode 100644 index 0000000000..3da0a28c20 --- /dev/null +++ b/scripts/quest/20610.js @@ -0,0 +1,24 @@ +/* + * Cygnus Skill - + */ + +var status = -1; + +function start(mode, type, selection) { + status++; + + if (status == 0) { + qm.sendAcceptDecline("Have you been mastering your skills? I am sure you've mastered all your skills, which means... it's time for you to learn a #bnew skill#k, right?"); + } else if (status == 1) { + if (mode == 0) { + qm.sendOk("Well, what you're doing right now doesn't make you look like someone that's humble. You just look complacent by doing that, and that's never a good thing."); + } else { + qm.forceStartQuest(); + } + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/20700.js b/scripts/quest/20700.js new file mode 100644 index 0000000000..e813374bec --- /dev/null +++ b/scripts/quest/20700.js @@ -0,0 +1,35 @@ +/* + NPC Name: Nineheart + Description: Quest - Are you sure you can leave? +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 1) { + qm.sendNext("When will you realize how weak you are... When you get yourself in trouble in Victoria Island?"); + qm.safeDispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("You have finally become a Knight-in-Training. I'd like to give you a mission right away, but you still look miles away from even being able to handle a task on your own. Are you sure you can even go to Victoria Island like this?"); + } else if (status == 1) { + qm.askAcceptDecline("It's up to you to head over to Victoria Island, but a Knight-in-Training that can't take care of one''s self in battles is likely to cause harm to the Empress''s impeccable reputation. As the Head Tactician of this island, I can't let that happen, period. I want you to keep training until the right time comes."); + } else if (status == 2) { + qm.forceCompleteQuest(); + qm.sendNext("#p1102000#, the Training Instructor, will help you train into a serviceable knight. Once you reach Level 13, I'll assign you a mission or two. So until then, keep training."); + } else if (status == 3) { + qm.sendPrev("Oh, and are you aware that if you strike a conversation with #p1101001#, she'll give you a blessing? The blessing will definitely help you on your journey."); + } else if (status == 4) { + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21000.js b/scripts/quest/21000.js new file mode 100644 index 0000000000..711d31c3a8 --- /dev/null +++ b/scripts/quest/21000.js @@ -0,0 +1,63 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 + Map(s): Aran Training Map 2 + Description: Quest - Help Kid + Quest ID : 21000 +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendNext("No, Aran... We can't leave a kid behind. I know it's a lot to ask, but please reconsider. Please!"); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("Oh, no! I think there's still a child in the forest! Aran, I'm very sorry, but could you rescue the child? I know you're injured, but I don't have anyone else to ask!"); + else if (status == 1) { + qm.forceStartQuest(); + qm.sendNext("#bThe child is probably lost deep inside the forest!#k We have to escape before the Black Mage finds us. You must rush into the forest and bring the child back with you!"); + } else if (status == 2) { + qm.sendNextPrev("Don't panic, Aran. If you wish to check the status of the \r\nquest, press #bQ#k and view the Quest window."); + } else if (status == 3) { + qm.sendNextPrev("Please, Aran! I'm begging you. I can't bear to lose another person to the Black Mage!"); + } else if (status == 4) { + qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1"); + qm.dispose(); + } + } + + +function end(mode, type, selection) { + qm.forceCompleteQuest(); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21001.js b/scripts/quest/21001.js new file mode 100644 index 0000000000..6c1c632a82 --- /dev/null +++ b/scripts/quest/21001.js @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 15 && mode == 0) { + qm.sendNext("*Sob* Aran has declined my request!"); + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + if (status == 0) { + qm.sendAcceptDecline("*Sniff sniff* I was so scared... Please take me to Athena Pierce."); + } else if (status == 1) { + qm.gainItem(4001271, 1); + qm.forceStartQuest(); + qm.warp(914000300); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if (type == 1 && mode == 0) { + qm.sendNext("What about the child? Please give me the child!"); + } + qm.dispose(); + return; + } + if (status == 0) + qm.sendYesNo("You made it back safely! What about the child?! Did you bring the child with you?!"); + else if (status == 1) { + qm.gainItem(4001271, -1); + qm.removeEquipFromSlot(-11); + qm.forceCompleteQuest(); + qm.sendNext("Oh, what a relief. I'm so glad...", 9); + } else if (status == 2) + qm.sendNextPrev("Hurry and board the ship! We don't have much time!", 3); + else if (status == 3) + qm.sendNextPrev("We don't have any time to waste. The Black Mage's forces are getting closer and closer! We're doomed if we don't leave right right this moment!", 9); + else if (status == 4) + qm.sendNextPrev("Leave, now!", 3); + else if (status == 5) + qm.sendNextPrev("Aran, please! I know you want to stay and fight the Black Mage, but it's too late! Leave it to the others and come to Victoria Island with us!", 9); + else if (status == 6) + qm.sendNextPrev("No, I can't!", 3); + else if (status == 7) { + qm.sendNextPrev("Athena Pierce, why don't you leave for Victoria Island first? I promise I'll come for you later. I'll be alright. I must fight the Black Mage with the other heroes!", 3); + } else if (status == 8) { + qm.forceCompleteQuest(); + qm.warp(914090010); // Initialize Aran Tutorial Scenes + qm.dispose(); + } + } \ No newline at end of file diff --git a/scripts/quest/21010.js b/scripts/quest/21010.js new file mode 100644 index 0000000000..cdc4dd3c85 --- /dev/null +++ b/scripts/quest/21010.js @@ -0,0 +1,100 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 +*/ +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 15 && mode == 0) { + qm.sendNext("Oh, no need to decline my offer. It's no big deal. It's just a potion. Well, let me know if you change your mind."); + qm.dispose(); + return; + } + //status -= 2; + } + + if (status == 0) { + qm.sendNext("Hm, what's a human doing on this island? Wait, it's #p1201000#. What are you doing here, #p1201000#? And who's that beside you? Is it someone you know, #p1201000#? What? The hero, you say?"); + } else if (status == 1) { + qm.sendNextPrev(" #i4001170#");//gms like + } else if (status == 2) { + qm.sendNextPrev("Ah, this must be the hero you and your clan have been waiting for. Am I right, #p1201000#? Ah, I knew you weren't just accompanying an average passerby..."); + } else if (status == 3) { + qm.sendAcceptDecline("Oh, but it seems our hero has become very weak since the Black Mage's curse. It's only makes sense, considering that the hero has been asleep for hundreds of years. #bHere, I'll give you a HP Recovery Potion.#k");//nexon probably forgot to remove the '.' before '#k', lol + } else if (status == 4) { + if (qm.c.getPlayer().getHp() >= 50) { + qm.c.getPlayer().setHp(25); + qm.c.getPlayer().updateSingleStat(MapleStat.HP, 25); + } + if (!qm.isQuestStarted(21010) && !qm.isQuestCompleted(21010)) { + qm.gainItem(2000022, 1); + qm.forceStartQuest(); + } + qm.sendNext("Drink it first. Then we'll talk.", 9); + } else if (status == 5) { + qm.sendNextPrev("#b(How do I drink the potion? I don't remember..)", 3); + } else if (status == 6) { + qm.guideHint(14); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + qm.dispose(); + else{ + qm.dispose(); + return; + } + } + if (status == 0) { + if (qm.c.getPlayer().getHp() < 50) { + qm.sendNext("You have't drank the potion yet."); + qm.dispose(); + } else { + qm.sendNext("We've been digging and digging inside the Ice Cave in the hope of finding a hero, but I never thought I'd actually see the day... The prophecy was true! You were right, #p1201000#! Now that one of the legendary heroes has returned, we have no reason to fear the Black Mage!"); + } + } else if (status == 1) { + qm.sendNextPrev("Oh, I've kept you too long. I'm sorry, I got a little carried away. I'm sure the other Penguins feel the same way. I know you're busy, but could you #bstop and talk to the other Penguins#k on your way to town? They would be so honored.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i2000022# 5 #t2000022#\r\n#i2000023# 5 #t2000023#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 16 exp"); + } else if (status == 2) { + if(qm.isQuestStarted(21010) && !qm.isQuestCompleted(21010)) { + qm.gainExp(16); + qm.gainItem(2000022, 3); + qm.gainItem(2000023, 3); + qm.forceCompleteQuest(); + } + qm.sendNextPrev("Oh, you've leveled up! You may have even received some skill points. In Maple World, you can acquire 3 skill points every time you level up. Press the #bK key #kto view the Skill window.", 9); + } else if (status == 3) { + qm.sendNextPrev("#b(Everyone's been so nice to me, but I just can't remember anything. Am I really a hero? I should check my skills and see. But how do I check them?)", 3); + } else if (status == 4) { + qm.guideHint(15); + qm.dispose(); + } + } + diff --git a/scripts/quest/21011.js b/scripts/quest/21011.js new file mode 100644 index 0000000000..4275db3e1e --- /dev/null +++ b/scripts/quest/21011.js @@ -0,0 +1,90 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 +*/ +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) { + qm.sendOk("Ah, okay. I understand. Heroes are very busy. *Sniff...* If you ever get any free time, though..."); + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + + if (status == 0) + qm.sendNext("Wait, are you... No way.... Are you the hero that #p1201000# has been talking about all this time?! #p1201000#! Don't just nod... Tell me! Is this the hero you've been waiting for?! ") + else if (status == 1) { + qm.sendNextPrev(" #i4001171#"); + } else if (status == 2) { + qm.sendNextPrev("I'm sorry. I'm just so overcome with emotions... *Sniff sniff* My goodness, I'm starting to tear up. You must be so happy, #p1201000#."); + } else if (status == 3) { + qm.sendAcceptDecline("Wait a minute... You're not carrying any weapons. From what I've heard, each of the heroes had a special weapon. Oh, you must have lost it during the battle against the Black Mage."); + } else if (status == 4) { + qm.forceStartQuest(); + qm.sendOk("My brother #bPuir #kis just down the street, and he's been dying to meet you! I know you're busy, but could you please stop by and say hello to Puir? Please..."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) { + qm.sendNext("*sniff sniff* Isn't this sword good enough for you, just for now? I'd be so honored..."); + qm.dispose(); + }else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendNext("Wait, are you... No way... Are you the hero that Lilin has been talking about all this time?! Lilin! Don't just nod... Tell me! Is this the hero you've been waiting for?!"); + else if (status == 1) { + qm.sendNextPrev("#i4001171#"); + } else if (status == 2) { + qm.sendNextPrev("I'm sorry. I'm just so overcome with emotions... *Sniff sniff* My goodness, I'm starting to tear up. You must be so happy, Lilin."); + } else if (status == 3) { + qm.sendNextPrev("Wait a minute... You're not carrying any weapons. From what I've hear, each of the heroes had a special weapon. Oh, you must have lost it during the battle against the Black Mage."); + } else if (status == 4) { + qm.sendYesNo("This isn't good enough to replace your weapon, but #bcarry this sword with you for now#k. It's my gift to you. A hero can't be walking around empty-handed.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v1302000# 1 #t1302000#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 35 exp"); + } else if (status == 5) { + if(qm.isQuestCompleted(21011)) + qm.dropMessage(1,"Unknown Error"); + else if(qm.canHold(1302000)){ + qm.gainItem(1302000, 1); + qm.gainExp(35); + qm.forceCompleteQuest(); + qm.sendNext("#b(Your skills are nowhere close to being hero-like... But a sword? Have you ever even held a sword in your lifetime? You can't remember... How do you even equip it?)", 3); + }else + qm.dropMessage(1,"Your inventory is full"); + } else if (status == 6) { + qm.guideHint(16); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21012.js b/scripts/quest/21012.js new file mode 100644 index 0000000000..52c716052a --- /dev/null +++ b/scripts/quest/21012.js @@ -0,0 +1,84 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 +*/ +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 2 && mode == 0) { + qm.sendOk("Hm... You don't think that would help? Think about it. It could help, you know..."); + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendNext("Welcome, hero! What's that? You want to know how I knew who you were? That's easy. I eavesdropped on some people talking loudly next to me. I'm sure the rumor has spread through the entire island already. Everyone knows that you've returned!") + else if (status == 1) { + qm.sendNextPrev("Hm, how about trying out that sword? Wouldn't that bring back some memories? How about #bfighthing some monsters#k?"); + } else if (status == 2) { + qm.sendAcceptDecline("Ah, I'm so sorry. I was so happy to have finally met you that I guess I got a little carried away. Whew, deep breaths. Deep breaths. Okay, I feel better now. But um...can I ask you a favor? Please?"); + } else if (status == 3) { + qm.forceStartQuest(); + qm.sendNext("It just so happens that there are a lot of #rTutorial Murus #knear here. How about defeating just #r3 #kof them? It could help you remember a thing or two."); + } else if (status == 4) { + qm.sendNextPrev("Ah, you've also forgotten how to use your skills? #bPlace skills in the quick slots for easy access. #kYou can also place consumable items in the slots, so use the slots to your advantage.") ; + } else if (status == 5) { + qm.guideHint(17); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) { + qm.sendNext("What? You don't want the potion?"); + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendYesNo("Hm... Your expression tells me that the exercise didn't jog any memories. But don't you worry. They'll come back, eventually. Here, drink this potion and power up!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v2000022# 10 #t2000022#\r\n#v2000023# 10 #t2000023#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 57 exp"); + else if (status == 1) { + if(qm.isQuestCompleted(21012)) + qm.dropMessage(1,"Unknown Error"); + else if(qm.canHold(2000022) && qm.canHold(2000023)){ + qm.gainExp(57); + qm.gainItem(2000022, 10); + qm.gainItem(2000023, 10); + qm.forceCompleteQuest(); + qm.sendOk("#b(Even if you're really the hero everyone says you are... What good are you without any skills?)", 3); + qm.dispose(); + }else + qm.dropMessage(1,"Your inventory is full"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21013.js b/scripts/quest/21013.js new file mode 100644 index 0000000000..bfe81c8a50 --- /dev/null +++ b/scripts/quest/21013.js @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 +*/ +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) { + qm.sendNext("I'm sure it will come in handy during your journey. Please, don't decline my offer."); + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + + if (status == 0) + qm.sendSimple("Ah, you're the hero. I've been dying to meet you. \r\n#b#L0#(Seems a bit shy...)#l"); + else if (status == 1) { + qm.sendAcceptDecline("I have something I've been wanting to give you as a gift for a very long time... I know you're busy, especially since you're on your way to town, but will you accept my gift?"); + } else if (status == 2) { + qm.forceStartQuest(); + qm.sendNext("The parts of the gift have been packed inside a box nearby. Sorry to trouble you, but could you break the box and bring me a #b#t4032309##k and some #b#t4032310##k? I'll assemble them for you right away.", 9); + } else if (status == 3) { + qm.guideHint(18); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) { + qm.sendNext("What? You don't want the potion?"); + qm.dispose(); + return; + }else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendYesNo("Ah, you've brought all the components. Give me a few seconds to assemble them.. Like this.. And like that.. and...\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v3010062# 1 #t3010062#\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 95 exp"); + else if (status == 1) { + if(qm.isQuestCompleted(21013)) { + qm.dropMessage(1,"Unknown Error"); + } + qm.forceCompleteQuest(); + qm.gainExp(95); + qm.gainItem(4032309, -1); + qm.gainItem(4032310, -1); + qm.gainItem(3010062, 1); + qm.sendNextPrev("Here, a fully-assembled chair, just for you! I've always wanted to give you a chair as a gift, because I know a hero can occasionally use some good rest. Tee hee.", 9); + } else if (status == 2) { + qm.sendNext("A hero is not invincible. A hero is human. I'm sure you will face challenges and even fatter at times. But you are a hero because you have what it takes to overcome any obstacles you may encounter.", 9); + } else if (status == 3) { + qm.guideHint(19); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21015.js b/scripts/quest/21015.js new file mode 100644 index 0000000000..4734f8d890 --- /dev/null +++ b/scripts/quest/21015.js @@ -0,0 +1,30 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Alright, I've done enough explaining for now. Let's move on to the next stage. What's the next stage, you ask? I just told you. Train as hard as you can until you become strong enough to defeat the Black Mage with a single blow."); + } else if (status == 1) { + qm.sendNextPrev("You may have been a hero in the past, but that was hundreds of years ago. Even if it weren't for the curse of the Black Mage, all those years you spent frozen in time have stiffened your body. You must loosen up a bit and slowly regain your agility. How do you do that, you ask?"); + } else if (status == 2) { + qm.sendAcceptDecline("Don't you know that you must first master the fundamentals? So the wise thing to do is to begin with #bBasic Training#k. Oh, of course, I forgot that you lost your memory. Well, that's why I'm here. You'll just have to experience it yourself. Shall we begin?"); + } else if (status == 3) { + if (mode == 0) { + qm.sendNext("What are you so hesitant about? You're a hero! You gotta strike while the iron is hot! Come on, let's do this!"); + qm.dispose(); + } else { + qm.forceStartQuest(); + qm.sendNext("The population of Rien may be mostly Penguins, but even this island has monsters. You'll find #o0100131#s if you go to #b#m140020000##k, located on the right side of the town. Please defeat #r10 of those #o0100131#s#k. I'm sure you'll have no trouble defeating the #o0100131#s that even the slowest penguins here can defeat.", 1); + } + } else if (status == 4) { + qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21016.js b/scripts/quest/21016.js new file mode 100644 index 0000000000..73dafa4cdd --- /dev/null +++ b/scripts/quest/21016.js @@ -0,0 +1,26 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendAcceptDecline("Shall we continue with your Basic Training? Before accepting, please make sure you have properly equipped your sword and your skills and potions are readily accessible."); + } else if (status == 1) { + if (mode == 0) { + qm.sendNext("Are you not ready to hunt the #o0100132#s yet? Always proceed if and only if you are fully ready. There's nothing worse than engaging in battles without sufficient preparation."); + qm.dispose(); + } else { + qm.forceStartQuest(); + qm.sendNext("Alright. This time, let's have you defeat #r#o0100132#s#k, which are slightly more powerful than #o0100131#s. Head over to #b#m140020100##k and defeat #r15#k of them. That should help you build your strength. Alright! Let's do this!", 1); + } + } else if (status == 2) { + qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21017.js b/scripts/quest/21017.js new file mode 100644 index 0000000000..7de05461fe --- /dev/null +++ b/scripts/quest/21017.js @@ -0,0 +1,40 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("It seems like you're warmed up now. This is when rigorous training can really help you build a strong foundation. Let's proceed with the Basic Training, shall we?", 8); + } else if (status == 1) { + qm.sendNextPrev("Go defeat some #r#o0100133#s#k in #b#m140020200##k this time. I think about #r20#k should do it. Go on ahead and... Hm? Do you have something you'd like to say?", 8); + } else if (status == 2) { + qm.sendNextPrev("Isn't the number getting bigger and bigger?", 2); + } else if (status == 3) { + qm.sendNextPrev("Of course it is. What, are you not happy with 20? Would you like to defeat 100 of them instead? Oh, how about 999 of them? Someone in Sleepywood would be able to do it easily. After all, we are training...", 8); + } else if (status == 4) { + qm.sendNextPrev("Oh no, no, no. Twenty is plenty.", 2); + } else if (status == 5) { + qm.sendAcceptDecline("You don't have to be so modest. I understand your desire to quickly become the hero you once were. This sort of attitude is what makes you a hero."); + } else if (status == 6) { + if (mode == 0 && type == 15) { + qm.sendNext("#b(You declined out of fear, but it's not like you can run away like this. Take a big breath, calm down, and try again.)#k", 2); + qm.dispose(); + } else { + if (!qm.isQuestStarted(21017)) { + qm.forceStartQuest(); + } + qm.sendNext("#b(You accepted, thinking you might end up having to 999 of them if you let her keep talking.)#k", 2); + } + } else if (status == 7) { + qm.sendNextPrev("Please go ahead and slay 20 #o0100133#s.", 8); + } else if (status == 8) { + qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow3"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21018.js b/scripts/quest/21018.js new file mode 100644 index 0000000000..6497efa92d --- /dev/null +++ b/scripts/quest/21018.js @@ -0,0 +1,28 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Now, you will undergo a test that will determine whether you're fit or not. All you have to do is take on the most powerful monster on this island, #o0100134#s. About #r50#k of them would suffice, but..."); + } else if (status == 1) { + qm.sendAcceptDecline("We can't have you wipe out the entire population of #o0100134#s, since they aren't many of them out there. How about 5 of them? You're here to train, not to destroy the ecosystem."); + } else if (status == 2) { + if (mode == 0 && type == 15) { + qm.sendNext("Oh, is 5 not enough? If you feel the need to train further, please feel free to slay more than that. If you slay all of them, I'll just have to look the other way even if it breaks my heart, since they will have been sacrificed for a good cause..."); + qm.dispose(); + } else { + qm.forceStartQuest(); + qm.sendNext("#o0100134#s can be found in deeper parts of the island. Continue going left until you reach #b#m140010200##k, and defeat #r5 #o0100134#s#k."); + } + } else if (status == 3) { + qm.showInfo("Effect/OnUserEff.img/guideEffect/aranTutorial/tutorialArrow1"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21100.js b/scripts/quest/21100.js new file mode 100644 index 0000000000..e176ba666e --- /dev/null +++ b/scripts/quest/21100.js @@ -0,0 +1,36 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("There isn't much record left of the heores that fought against the Black Mage. Even in the Book of Prophecy, the only information available is that there were five of them. There is nothing about who they were or what they looked like. Is there anything you remember? Anything at all?", 8); + } else if (status == 1) { + qm.sendNextPrev("I don't remember a thing...", 2); + } else if (status == 2) { + qm.sendNextPrev("As I expected. Of course, the curse of the Black Mage was strong enough to wipe out all of your memory. But even if that's the case, there has got to be a point where the past will uncover, especially now that we are certain you are one of the heroes. I know you've lost your armor and weapon during the battle but... Oh, yes, yes. I almost forgot! Your #bweapon#k!", 8); + } else if (status == 3) { + qm.sendNextPrev("My weapon?", 2); + } else if (status == 4) { + qm.sendNextPrev("I found an incredible weapon while digging through blocks of ice a while back. I figured the weapon belonged to a hero, so I brought it to town and placed it somewhere in the center of the town. Haven't you seen it? #bThe #p1201001##k... \r\r#i4032372#\r\rIt looks like this...", 8); + } else if (status == 5) { + qm.sendNextPrev("Come to think of it, I did see a #p1201001# in town.", 2); + } else if (status == 6) { + qm.sendAcceptDecline("Yes, that's it. According to what's been recorded, the weapon of a hero will recognize its rightful owner, and if you're the hero that used the #p1201001#, the #p1201001# will react when you grab the #p1201001#. Please go find the #b#p1201001# and click on it.#k"); + } else if (status == 7) { + if (mode == 0 && type == 15) { + qm.sendNext("What's stopping you? I promise, I won't be disappointed even if the #p1201001# shows no reaction to you. Please, rush over there and grab the #p1201001#. Just #bclick#k on it.", 8); + } else { + qm.forceCompleteQuest(); + qm.sendOk("If the #p1201001# reacts to you, then we'll know that you're #bAran#k, the hero that wielded a #p1201001#.", 8); + qm.showIntro("Effect/Direction1.img/aranTutorial/ClickPoleArm"); + } + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21101.js b/scripts/quest/21101.js new file mode 100644 index 0000000000..9db6ca9be6 --- /dev/null +++ b/scripts/quest/21101.js @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +importPackage(Packages.client); + +status = -1; + +function start(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + else if (mode != 1) { + if (mode == 0) + qm.sendNext("#b(You need to think about this for a second...)#k"); + qm.dispose(); + return; + } + if (status == 0) { + qm.sendYesNo("#b(Are you certain that you were the hero that wielded the #p1201001#? Yes, you're sure. You better grab the #p1201001# really tightly. Surely it will react to you.)#k"); + } else if (status == 1) { + if (qm.getPlayer().getJob().getId() == 2000) { + if(!qm.canHold(1142129)) { + cm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest."); + qm.dispose(); + return; + } + qm.gainItem(1142129, true); + qm.completeQuest(); + qm.changeJobById(2100); + qm.getPlayer().setStr(35); + qm.getPlayer().setDex(4); + qm.getPlayer().setRemainingAp((qm.getPlayer().getLevel() - 1) * 5 - 22); + qm.getPlayer().setRemainingSp((qm.getPlayer().getLevel() - 10) * 3 + 1); + qm.getPlayer().setMaxHp(qm.getPlayer().getMaxHp() + 275); + qm.getPlayer().setMaxMp(qm.getPlayer().getMaxMp() + 15); + qm.teachSkill(21000000, 0, 10, -1); + qm.teachSkill(21001003, 0, 20, -1); + //qm.getPlayer().changeSkillLevel(SkillFactory.getSkill(20009000), 0, -1); + //qm.getPlayer().changeSkillLevel(SkillFactory.getSkill(20009000), 1, 0); + //qm.showInfo("You have acquired the Pig's Weakness skill."); + qm.sendNextPrev("#b(You might be starting to remember something...)#k", 3); + } + } else if (status == 2) { + //qm.warp(914090100); + qm.dispose(); + } +} + +function end(mode, type, selection) { +} \ No newline at end of file diff --git a/scripts/quest/21200.js b/scripts/quest/21200.js new file mode 100644 index 0000000000..90a134f61f --- /dev/null +++ b/scripts/quest/21200.js @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1){ + if (mode == 0 && type == 12) + qm.sendNext("Come back again when you have took your desition wisely."); + qm.dispose(); + return; + } + if(status == 0) + qm.sendAcceptDecline("How is the training going? Wow, you've reached such a high level! That's amazing. I knew you would do just fine on Victoria Island... Oh, look at me. I'm wasting your time. I know you're busy, but you'll have to return to the island for a bit."); + else if(status == 1){ + qm.sendOk("Your #b#p1201001##k in #b#m140000000##k is acting strange all of a sudden. According to the records, the Polearm acts this way when it is calling for its master. #bPerhaps it's calling for you#k. Please return to the island and check things out."); + qm.startQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1){ + if (mode == 0 && type == 1) + qm.sendNext("Hey! At least say you tried!"); + qm.dispose(); + return; + } + if (status == 0) + qm.sendNext("Voom voom voom voom voom...."); //Giant Polearm + else if (status == 1) + qm.sendNextPrev("#b(The #p1201001# is producing an undulating echo. But who is that boy standing over there?)", 2); + else if (status == 2) + qm.sendNextPrev("#b(You've never seen him before. He doesn't look human.)", 2); + else if (status == 3) + qm.sendNextPrev("Yo, Aran! Do you not hear me? I said, do you not hear me! Ugh, how frustating!"); + else if (status == 4) + qm.sendNextPrev("#b(Hm? Who's voice was that? It sounds like an angry boy...)", 2); + else if (status == 5) + qm.sendNextPrev("Ugh, my only master had to end up trapped in ice for hundreds of years, abandoning me completeley, and is now completely ignoring me."); + else if (status == 6) + qm.sendNextPrev("Who...are you?", 2); + else if (status == 7) + qm.sendNextPrev("Aran? Do you hear me now? It's me! Don't you recognize me? I'm your weapon, #b#p1201002# the Polearm#k!"); + else if (status == 8) + qm.sendNextPrev("#b(...#p1201002#? A #p1201001# can talk?)", 2); + else if (status == 9) + qm.sendNextPrev("What's with that suspicious look on your face? I know you've lost your memory, but did you forgot about me, too? How could you?!"); + else if (status == 10) + qm.sendNextPrev("I'm so sorry, but I can't remember a thing.", 2); + else if (status == 11) + qm.sendYesNo("Sorry doesn't cut it! Do you know how lonely and bored I was for hundreds of years? I don't care what it takes! Remember me! Remember me now!"); + else if (status == 12){ + qm.completeQuest(); + qm.sendNext("#b(The voice that claims to be #p1201002# the #p1201001# is yelling in frustration. You don't think this conversation is going anywhere. You better go talk to #p1201000# first.)", 2); + //qm.sendNoExit("#b(The voice that claims to be #p1201002# the #p1201001# is yelling in frustration. You don't think this conversation is going anywhere. You better go talk to #p1201000# first.)", true); + }else if (status == 13){ + //qm.showVideo("Maha"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21201.js b/scripts/quest/21201.js new file mode 100644 index 0000000000..134aa6b5be --- /dev/null +++ b/scripts/quest/21201.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +importPackage(Packages.client); + +var status = -1; + +function end(mode, type, selection) { + status++; + if (mode != 1){ + if (mode == 0 && type == 1) + qm.sendNext("Hey! At least say you tried!"); + qm.dispose(); + return; + } + if (status == 0) + qm.sendNext("First you promise to defeat the Black Mage and make me a famous weapon, then you abandon me for hundreds of years, and now you're telling me you don't remember who I am? What the...?! Do you think I will let you get away with that? You're the one who begged and pined for me!"); //Giant Polearm + else if (status == 1) + qm.sendNextPrev("I did tell #p1203000# to make a pole arm for me if I could prove my worth.", 2); + else if (status == 2) + qm.sendNextPrev("After all that begging, shouldn't you treat me with a little more love and respect? Ya know, a weapon like me's a rare and wonderful thing. I am the ultimate #p1201001# that can help you defeat the Black Mage. How could you ditch me for hundreds of years?"); + else if (status == 3) + qm.sendNextPrev("Hey, I never begged for you.", 2); + else if (status == 4) + qm.sendNextPrev("What? You never begged for me? Ha! #p1203000# told me you got on your knees, begged for me in tears, and... Wait a sec. Aran! Did you just remember who I am?"); + else if (status == 5) + qm.sendNextPrev("Maybe a little bit...", 2); + else if (status == 6) + qm.sendNextPrev("Aran, it is you! *Sniff sniff* Wait, *ahem* I didn't get emotional, it's just allergies. I know the Black Mage has stripped you of your abilities so you probably don't even have the strength to lift me... but at least you remember me! I'm glad that your memory's starting to return."); + else if (status == 7) + qm.sendAcceptDecline("Even though you've lost your memory, you're still my master. You endured some very tough training in the past, and I'm sure your body still remembers the skills you got through those hard times. Alright, I'll restore your abilities!"); + else if (status == 8) { + if(!qm.isQuestCompleted(21201)) { + if(!qm.canHold(1142130)) { + cm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest."); + qm.dispose(); + return; + } + + qm.gainItem(1142130, true); + qm.getPlayer().setMaxMp(qm.getPlayer().getMaxMp() + 275); + qm.changeJobById(2110); + qm.teachSkill(21100000, 0, 20, -1); + qm.teachSkill(21100002, 0, 30, -1); + qm.teachSkill(21100004, 0, 20, -1); + qm.teachSkill(21100005, 0, 20, -1); + qm.completeQuest(); + } + qm.sendNext("Your level isn't what it used to be back in your glory days, so I can't restore all of your old abilities. But the few I can restore should help you level up faster. Now hurry up and train so you can return to the old you."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21202.js b/scripts/quest/21202.js new file mode 100644 index 0000000000..8b38f0a767 --- /dev/null +++ b/scripts/quest/21202.js @@ -0,0 +1,75 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1){ + if (mode == 0 && type == 1) + qm.sendNext("Do you not want to put in the work to get the ultimate weapon?"); + qm.dispose(); + return; + } + if (status == 0) { + qm.sendNext("Hmm.. What's a young person like you doing in this secluded place?"); + } else if(status == 1) { + qm.sendNextPrev("I've come to get the best Polearm there is!", 2); + } else if(status == 2) { + qm.sendNextPrev("The best Polearm? You should be able to purchase it in some town or other place.."); + } else if(status == 3) { + qm.sendNextPrev("I hear you are the best blacksmith in all of Maple World! I want nothing less than a weapon made by you!", 2); + } else if(status == 4) { + qm.sendAcceptDecline("I'm too old to make weapons now, but.. I do have a Polearm that I made way back when. It's still in excellent shape. But I can't give it to you because that Polearm is extremely sharp, so sharp it could hurt its master. Do you still want it?"); + } else if(status == 5) { + qm.sendOk("Well, if you say so.. I can't object to that. I'll tell you what. I'll give you a quick test, and if you pass it, the Giant Polearm is yours. Head over to the #bTraining Center#k and take on the #rScarred Bears#k that are there. Your job is to bring back #b30 Sign of Acceptances#k."); + qm.startQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1){ + if (mode == 0 && type == 1) + qm.sendNext("Hm? Are you hesitant to take it now after all that? Well, give it more thought if you'd like. It'll be yours in the end anyways."); + qm.dispose(); + return; + } + if (status == 0) { + if(qm.haveItem(4032311, 30)) + qm.sendNext("Oh, have you brought me the #t4032311#? You're stronger than I thought! But more importantly, I am impressed with the amount of courage you displayed when you agreed to take this dangerous weapon without any hesitation. You deserve it. The #p1201001# is yours."); + else{ + qm.sendNext("Go for the #t4032311#."); + qm.dispose(); + } + }else if (status == 1) + qm.sendNextPrev("#b(After a long time passed, #p1203000# handed you the #p1201001#, which was carefully wrapped in cloth.)"); + else if (status == 2) + qm.sendYesNo("Here, this is #p1201002#, the Polearm you've asked for. Please take good care of it."); + else if (status == 3){ + //qm.showVideo("Polearm"); + qm.completeQuest(); + qm.removeAll(4032311); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2124.js b/scripts/quest/2124.js new file mode 100644 index 0000000000..079a61dadb --- /dev/null +++ b/scripts/quest/2124.js @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Ronan Lana +*/ + +function end(mode, type, selection) { + + if(!qm.haveItem(4031619, 1)) { + qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k..."); + } + else { + qm.gainItem(4031619, -1); + qm.sendOk("Oh, you brought #p2012019#'s box! Thank you."); + qm.forceCompleteQuest(); + } + + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2126.js b/scripts/quest/2126.js new file mode 100644 index 0000000000..079a61dadb --- /dev/null +++ b/scripts/quest/2126.js @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Ronan Lana +*/ + +function end(mode, type, selection) { + + if(!qm.haveItem(4031619, 1)) { + qm.sendOk("Please bring me the box with the supplies that lies with #b#p2012019##k..."); + } + else { + qm.gainItem(4031619, -1); + qm.sendOk("Oh, you brought #p2012019#'s box! Thank you."); + qm.forceCompleteQuest(); + } + + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2127.js b/scripts/quest/2127.js new file mode 100644 index 0000000000..482e0fbdaf --- /dev/null +++ b/scripts/quest/2127.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Ronan Lana +*/ + +function end(mode, type, selection) { + qm.sendOk("I see you're ready for the task. Now, pay heed to the details of your mission..."); + qm.forceCompleteQuest(); + + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21300.js b/scripts/quest/21300.js new file mode 100644 index 0000000000..002ea062f9 --- /dev/null +++ b/scripts/quest/21300.js @@ -0,0 +1,23 @@ +var status = -1; + +function start(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + else if (mode != 1) { + //if (mode == 0) + qm.sendNext("#b(You need to think about this for a second...)#k"); + qm.dispose(); + return; + } + + if (status == 0) { + qm.sendNext("How's the training going? Hmmm... Level 70... That's still not much, but you have really made some strides since the first time I met you fresh out of ice. Keep training, and I am sure one day you'll be able to regain your pre-battle form."); + } else if (status == 1) { + qm.sendAcceptDecline("But before doing that, I'll need you back in Rein for a bit. #bYour pole arm is reacting strange once again. It looks like it has something it wants to tell you. #kIt might be able to awaken your hidden powers, so please come immediately."); + } else if (status == 2) { + qm.sendOk("Anyway, I thought it was really something that a weapon has its own identity, but seriously... this weapon does not stop talking. It first kept on crying because I wasn't really paying attention to its needs, and... ahh, please keep this a secret from the pole arm. I don't think it's a good idea to upset the weapon any further."); + qm.forceStartQuest(); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21301.js b/scripts/quest/21301.js new file mode 100644 index 0000000000..f09d16ba32 --- /dev/null +++ b/scripts/quest/21301.js @@ -0,0 +1,31 @@ +var status = -1; + +function end(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + else if (mode != 1) { + //if (mode == 0) + qm.sendNext("#b(You need to think about this for a second...)#k"); + qm.dispose(); + return; + } + + if (status == 0) { + qm.sendNext("Did you manage to slay #o9001013#? Hahaha... you're my master, indeed. Okay, now give me the Red Jade that you found there. I'll have to put it back on the body, and... wait, why aren't you saying a word? Don't tell me... that you didn't bring that back!"); + } else if (status == 1) { + qm.sendNextPrev("What?! You really didn't bring back the Red Jade? Why? Did you just completely forget it? Ahh... even with the curse of the Black Mage, and the amount of time that has passed and all, never did I think my master would turn out to be stupid..."); + } else if (status == 2) { + qm.sendNextPrev("No, no, I can't let this put me in despair. This is when I should remain calm and in control, unlike my master...\r\noosah..." ); + } else if (status == 3) { + qm.sendNextPrev("Even if you go back there now, the thief probably made its way out of there. This means you'll have to make the Red Jade anew. You've made one before, so you do remember the materials required to make one, right? Now go..."); + } else if (status == 4) { + qm.sendNextPrev("\r\n\r\n\r\nTHIS GUY HAS DEFINITELY LOST ALL MEMORIES!"); + } else if (status == 5) { + qm.sendNextPrev("...No hope, no dreams... Nooooo!!"); + } else if (status == 6) { + qm.sendNextPrev("#b(Maha is beginning to really get hysterical. I better leave right this minute. Maybe Lirin can do something about it.)", 2); + qm.completeQuest(); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21302.js b/scripts/quest/21302.js new file mode 100644 index 0000000000..7871a5cf1d --- /dev/null +++ b/scripts/quest/21302.js @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +importPackage(Packages.client); + +var status = -1; + +function end(mode, type, selection) { + status++; + if (mode != 1){ + if (mode == 0 && type == 1) + qm.sendNext("Hey! At least say you tried!"); + qm.dispose(); + return; + } + if (status == 0) + qm.sendNext("Wait.. Isn't that.. Did you remember how to make Red Jade?\r\nWow... you may be stupid and prone to amnesia, but this is why I can't abandon you. Now give me the jade!"); //Giant Polearm + else if (status == 1) + qm.sendNextPrev("Okay, now that I have the Red Jade back on, let me work on reawakening more of your abilities. I mean, your level's gone much higher since the last time we met, so I am sure I can work my magic a bit more this time!"); + else if (status == 2) { + if(!qm.isQuestCompleted(21302)) { + if(!qm.canHold(1142131)) { + cm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest."); + qm.dispose(); + return; + } + + qm.gainItem(1142131, true); + qm.getPlayer().setMaxMp(qm.getPlayer().getMaxMp() + 275); + qm.getPlayer().setMaxHp(qm.getPlayer().getMaxHp() + 275); + qm.changeJobById(2111); + qm.teachSkill(21110002, 0, 20, -1); + qm.completeQuest(); + } + qm.sendNext("Come on, keep training so you can get all your abilities back, and that way we can explore together once more!"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21400.js b/scripts/quest/21400.js new file mode 100644 index 0000000000..363d87b00e --- /dev/null +++ b/scripts/quest/21400.js @@ -0,0 +1,21 @@ +var status = -1; + +function start(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + else if (mode != 1) { + //if (mode == 0) + qm.sendNext("#b(You need to think about this for a second...)#k"); + qm.dispose(); + return; + } + + if (status == 0) { + qm.sendAcceptDecline("How is the training going? I know you're busy, but please come to #bRien#k immediately. The #bMaha#k has started to act weird again... But its even weirder now. It's different from before. It's... darker than usual."); + } else if (status == 1) { + qm.sendOk("I have a bad feeling about this. Please come back here. I've never seen or herd Maha like this, but I can sense the suffering its going through. #bOnly you, the master of Maha, can do something about it!"); + qm.startQuest(); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21401.js b/scripts/quest/21401.js new file mode 100644 index 0000000000..8c943de7ab --- /dev/null +++ b/scripts/quest/21401.js @@ -0,0 +1,78 @@ +importPackage(Packages.server.life); + +var status = -1; + +function start(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + else if (mode != 1) { + //if (mode == 0) + qm.sendNext("#b(You need to think about this for a second...)#k"); + qm.dispose(); + return; + } + + if (status == 0) { + qm.sendNext("Why do I look like this, you ask? I don't want to talk about it, but I suppose I can't hide from you since you're my master."); + } else if (status == 1) { + qm.sendNextPrev("While you were trapped inside ice for hundreds of years, I, too, was frozen. It was a long time to be away from you. That's when the seed of darkness was planted in my heart."); + } else if (status == 2) { + qm.sendNextPrev("But since you awoke, I thought the darkness had gone away. I thought things would return to the way they were. But I was mistaken..."); + } else if (status == 3) { + qm.sendAcceptDecline("Please, Aran. Please stop me from becoming enraged. Only you can control me. It's getting out of my hands now. Please do whatever it takes to #rstop me from going berserk#k!"); + } else if (status == 4) { + qm.startQuest(); + + var map = qm.getClient().getChannelServer().getMapFactory().getMap(914020000); + spawnMob(-365, 86, 9001014, map); + qm.warp(914020000); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if(mode == 0 && type == 0) + status -= 2; + else if (mode != 1) { + //if (mode == 0) + qm.sendNext("#b(You need to think about this for a second...)#k"); + qm.dispose(); + return; + } + + if (status == 0) { + qm.sendNext("Thank you, Aran. If it weren't for you, I would have become enraged and who knows what could have happened. Thank you, NOT! It's only your duty as my master..."); + } else if(status == 1) { + qm.sendYesNo("Anyway, I just noticed how high of a level you've reached. If you were able to control me in my state of rage, I think you're ready to handle more abilities."); + } else if(status == 2) { + if(!qm.isQuestCompleted(21401)) { + if(!qm.canHold(1142132)) { + cm.sendOk("Wow, your #bequip#k inventory is full. I need you to make at least 1 empty slot to complete this quest."); + qm.dispose(); + return; + } + + qm.gainItem(1142132, true); + qm.changeJobById(2112); + + + qm.teachSkill(21121000, 0, 10, -1); + qm.teachSkill(21120001, 0, 10, -1); + qm.teachSkill(21121003, 0, 10, -1); + qm.teachSkill(21120002, 0, 10, -1); + + qm.completeQuest(); + } + qm.sendNext("Your skills have been restored. Those skills have been dormant for so long that you'll have to re-train yourself, but you'll be as good as new once you complete your training."); + } +} + +function spawnMob(x, y, id, map) { + if(map.getMonsterById(id) != null) + return; + + var mob = MapleLifeFactory.getMonster(id); + map.spawnMonsterOnGroudBelow(mob, new java.awt.Point(x, y)); +} \ No newline at end of file diff --git a/scripts/quest/2148.js b/scripts/quest/2148.js new file mode 100644 index 0000000000..e333dafc56 --- /dev/null +++ b/scripts/quest/2148.js @@ -0,0 +1,10 @@ +var status = -1; + +function start(mode, type, selection) { + qm.sendNext("Some bats seems to accompany this tree wherever it goes. Creepy..."); + qm.forceCompleteQuest(); + qm.dispose(); +} +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2149.js b/scripts/quest/2149.js new file mode 100644 index 0000000000..9088a2d9cd --- /dev/null +++ b/scripts/quest/2149.js @@ -0,0 +1,10 @@ +var status = -1; + +function start(mode, type, selection) { + qm.sendNext("It is said that a old tree gets alive whenever something sinister disturbs this land... We need a hero that fends our village of that creature!"); + qm.forceCompleteQuest(); + qm.dispose(); +} +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2150.js b/scripts/quest/2150.js new file mode 100644 index 0000000000..a7d30cf455 --- /dev/null +++ b/scripts/quest/2150.js @@ -0,0 +1,10 @@ +var status = -1; + +function start(mode, type, selection) { + qm.sendNext("The tree has a scarf upon its branches, I tell you."); + qm.forceCompleteQuest(); + qm.dispose(); +} +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2151.js b/scripts/quest/2151.js new file mode 100644 index 0000000000..49d470f73e --- /dev/null +++ b/scripts/quest/2151.js @@ -0,0 +1,10 @@ +var status = -1; + +function start(mode, type, selection) { + qm.sendNext("The tree has a strange carving that resembles a scary face."); + qm.forceCompleteQuest(); + qm.dispose(); +} +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2152.js b/scripts/quest/2152.js new file mode 100644 index 0000000000..845e647770 --- /dev/null +++ b/scripts/quest/2152.js @@ -0,0 +1,10 @@ +var status = -1; + +function start(mode, type, selection) { + qm.sendNext("That tree... I've heard of it before, I even studied its behavior! If I recall correctly, the #bStumpy#k comes alive when the soil deems infertile by some sort of magic, and those stumps who evolves under these conditions starts to drain these suspicious magical sources instead of water and minerals for living, which makes them very threathening to people and villages nearby."); + qm.forceCompleteQuest(); + qm.dispose(); +} +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/2156.js b/scripts/quest/2156.js new file mode 100644 index 0000000000..7b64e2eaf7 --- /dev/null +++ b/scripts/quest/2156.js @@ -0,0 +1,12 @@ +var status = -1; + +function end(mode, type, selection) { + qm.sendNext("Oh, you brought it back! Thank you so much!"); + + qm.gainItem(2210006, -1); + qm.gainExp(7500 * qm.getPlayer().getExpRate()); + qm.gainMeso(30000 * qm.getPlayer().getMesoRate()); + qm.gainFame(3); + qm.forceCompleteQuest(); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21700.js b/scripts/quest/21700.js new file mode 100644 index 0000000000..259778c77d --- /dev/null +++ b/scripts/quest/21700.js @@ -0,0 +1,38 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 4) { + qm.sendNext("No? Are you saying you can train on your own? I'm just letting you know that you'll get better results if you train with an instructor. You can't live in this world alone. You must learn to get along with other people."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("It seems like you've started to remember things. Your Polearm must have recognized you. This means you are surely #bAran, the wielder of Polearms#k. Is there anything else you remember? Skills you used with the Polearm perhaps? Anything?"); + } else if (status == 1) { + qm.sendNextPrev("#b(You tell her that you remember a few skills.)#k", 2); + } else if (status == 2) { + qm.sendNextPrev("That's not a lot, but it's progress. Our focus, then, should be to get you back to the state before you were frozen. You may have lost your memory, but I'm sure it won't take long for you to recover the abilities that your body remembers."); + } else if (status == 3) { + qm.sendNextPrev('How do I recover my abilities?', 2); + } else if (status == 4) { + qm.sendAcceptDecline("There is only one way to do that. Train! Train! Train! Train! If you continue to train, your body will instinctively remember its abilities. To help you through the process, I'll introduce you to an instructor."); + } else if (status == 5) { + qm.sendNext("I gave you a #bPolearm#k because I figured it would be best for you to use a weapon you're familiar with. It will be useful in your training."); + if (!qm.isQuestStarted(21700) && !qm.isQuestCompleted(21700)) { + qm.gainItem(1442000,1); + qm.forceStartQuest(); + } + } else if (status == 6) { + qm.sendPrev("You'll find a Training Center if you exit to the #bleft#k. There, you''ll meet #b#p1202006##k. I'm a bit worried because I think he may be struggling with bouts of Alzheimer's, but he spent a long time researching skills to help you. I'm sure you'll learn a thing or two from him."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21703.js b/scripts/quest/21703.js new file mode 100644 index 0000000000..accd64b952 --- /dev/null +++ b/scripts/quest/21703.js @@ -0,0 +1,68 @@ + +importPackage(Packages.client); +var status = -1; + + + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 6) { + qm.sendNext("I know it takes an incredible amount of strength and will to outdo your instructor, but you weren't meant to let yourself wither away. You must move on to bigger and better things! You must do everything you can to embrace your heroic nature!"); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("Your abilities are really beginning to take shape. I am surprised that an old man like me was able to help you. I''m tearing up just thinking about how happy it makes me to have been of assistance to you. *Sniff sniff*"); + } else if (status == 1) { + qm.sendNextPrev("#b(You didn't even train that long with him... Why is he crying?)#k", 2); + } else if (status == 2) { + qm.sendNextPrev("Alright, here''s the third and the final stage of training. Your last opponent is... #r#o9300343#s#k! Do you know anything about #o1210100#s?"); + } else if (status == 3) { + qm.sendNextPrev('Well, a little bit...', 2); + } else if (status == 4) { + qm.sendNextPrev("They are natural warriors! They''re born with a voracious appetite for food. They devour any food that''s visible the moment they sweep by. Terrifying, isn''t it?"); + } else if (status == 5) { + qm.sendNextPrev("#b(Is that really true?)#k", 2); + } else if (status == 6) { + qm.sendAcceptDecline("Okay, now... #bEnter the Training Center again#k, defeat #r30#k #o9300343#s, and show me what you're made of! You'll have to exert all your energy to defeat them! Go, go, go! Rise above me!"); + } else if (status == 7) { + qm.forceStartQuest(); + qm.sendOk("Now go and take on those monstrous #o9300343#s!"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("Are you reluctant to leave your instructor? *Sniff sniff* I'm so moved, but you can't stop here. You are destined for bigger and better things!"); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("Ah, you've come back after defeating all 30 #o9300343#s. I knew you had it in you... Even though you have no memories and few abilities, I could see that you were different! How? Because you're carrying around a Polearm, obviously!"); + } else if (status == 1) { + qm.sendNextPrev("#b(Is he pulling your leg?)#k'", 2); + } else if (status == 2) { + qm.sendYesNo("I have nothing more to teach you, as you've surpassed my level of skill. Go now! Don't look back! This old man is happy to have served as your instructor."); + } else if (status == 3) { + if (qm.isQuestStarted(21703)) { + qm.forceCompleteQuest(); + qm.teachSkill(21000000, qm.getPlayer().getSkillLevel(21000000), 10, -1); // Combo Ability Skill + qm.gainExp(2800); + } + qm.sendNext("(You remembered the #bCombo Ability#k skill! You were skeptical of the training at first, since the old man suffers from Alzheimer's and all, but boy, was it effective!)", 2); + qm.showInfo("Effect/BasicEff.img/AranGetSkill"); + } else if (status == 4) { + qm.sendPrev("Now report back to #p1201000#. I know she'll be ecstatic when she sees the progress you've made!"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/21704.js b/scripts/quest/21704.js new file mode 100644 index 0000000000..1a35cb86b4 --- /dev/null +++ b/scripts/quest/21704.js @@ -0,0 +1,28 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("How did the training go? The Penguin Teacher #p1202006# likes to exaggerate and it worried me knowing that he has bouts of Alzheimer's, but I'm sure he helped you. He's been studying the skills of heroes for a very long time."); + } else if (status == 1) { + qm.sendNextPrev("#b(You tell her that you were able to remember the Combo Ability skill.)#k", 2); + } else if (status == 2) { + qm.sendAcceptDecline("That's great! Honestly, though, I think it has less to do with the method of #p1202006#'s training and more to do with your body remembering its old abilities. #bI'm sure your body will remember more skills as you continue to train#k! \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 500 exp"); + } else if (status == 3) { + qm.forceCompleteQuest(); + qm.gainExp(500); + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21712.js b/scripts/quest/21712.js new file mode 100644 index 0000000000..9402e9f2e7 --- /dev/null +++ b/scripts/quest/21712.js @@ -0,0 +1,29 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("You still don't understand what's going on? I'll explain it to you again if you talk to me one more time."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("#t4032315#... #rThis puppet is making a strange noise#k. You can't hear it with your ears, of course, since it can only be heard by the #o1210102#s. I believe it's this noise that changed the personality of the #o1210102#s."); + } else if (status == 1) { + qm.sendAcceptDecline("The #o1210102#s that have been affected by the noise have turned cynical. They've started fighting the non-affected #o1210102#s, which has made all #o1210102#s prepare for combat. #bThe reason for all these changes in the #o1210102#s is this puppet#k! Do you understand?"); + } else if (status == 2) { + qm.forceStartQuest(); + qm.sendNext("I wonder what triggered this in the first place. There is no way this puppet was naturally created, which means someone planned this. I should keep an eye on the #o1210102#s.", 9); + } else if (status == 3) { + qm.sendPrev("#b(You were able to find out what caused the changes in the #o1210102#s. You should report to #p1002104# and deliver the information you''ve gathered.)#k", 2); + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21716.js b/scripts/quest/21716.js new file mode 100644 index 0000000000..f764ed8b8b --- /dev/null +++ b/scripts/quest/21716.js @@ -0,0 +1,32 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.sendNext("What? I don''t think there are any suspects besides that kid. Please think again."); + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("What did #p1032112# say?", 8); + } else if (status == 1) { + qm.sendNextPrev("#b(You tell her what #p1032112# observed.)#k", 2); + } else if (status == 2) { + qm.sendAcceptDecline("A kid with a puppet? That seems very suspicious. I am sure that kid is the reason the Green Mushrooms have suddenly turned violent."); + } else if (status == 3) { + qm.forceStartQuest(); + qm.sendNext("How dare this kid wreak havoc in the South Forest. Who knows how long it will take to restore the forest... I''ll have to devote most of my time cleaning up the mess.", 2); + } else if (status == 4) { + qm.sendPrev("#b(You were able to find out what caused the changes in the Green Mushrooms. You should report #p1002104# and deliver the information you''ve collected.)#k", 2); + } else if (status == 5) { + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21719.js b/scripts/quest/21719.js new file mode 100644 index 0000000000..dcd3074386 --- /dev/null +++ b/scripts/quest/21719.js @@ -0,0 +1,28 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 2) { + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("Aren''t you the one that used to be in #m101000000# until not too long ago? I finally found you! Do you know how long it took for me to finally find you?", 8); + } else if (status == 1) { + qm.sendNextPrev("Who are you?", 2); + } else if (status == 2) { + qm.sendAcceptDecline("Me? If you want to know, stop by my cave. I'll even send you an invitation. You'll be directly sent to my cave as soon as you accept. Look forward to seeing you there."); + } else if (status == 3) { + qm.forceCompleteQuest(); + qm.warp(910510200, 0); + qm.dispose(); + } +} + +function end(mode, type, selection) { + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/21720.js b/scripts/quest/21720.js new file mode 100644 index 0000000000..a3dce6cdec --- /dev/null +++ b/scripts/quest/21720.js @@ -0,0 +1,48 @@ +var status = -1; + +function start(mode, type, selection) { + qm.dispose(); +} + +function end(mode, type, selection) { + if (mode == 1) { + status++; + } else { + if (status == 6) { + qm.dispose(); + return; + } + status--; + } + if (status == 0) { + qm.sendNext("What can I do for you? Tru sent me a message saying that you've been training diligently in Victoria Island while helping him with his work. What is it? What? The Black Wings?", 8); + } else if (status == 1) { + qm.sendNextPrev("#b(You tell her about the Puppeteer and the Black Wings, and about their mission.)#k", 2); + } else if (status == 2) { + qm.sendNextPrev("I see... I didn''t know there was a group called the Black Wings... They must be fools if they''re trying to revive the Black Mage, knowing how dangerous he is.", 8); + } else if (status == 3) { + qm.sendNextPrev("That...that''s true...\r\r#b(She''s definitely not afraid to speak her mind.)#k", 2); + } else if (status == 4) { + qm.sendNextPrev("The Book of Prophecy states that the hero will revive and fight against the Black Mage. I wasn''t sure if that was true, but this confirms that the Black Mage is still around.", 8); + } else if (status == 5) { + qm.sendNextPrev("Aren't you scared?", 2); + } else if (status == 6) { + qm.sendYesNo("Scared? Pfft. Who cares if the Black Mage appears. You'll be here to protect us. If anything, this makes me want to prepare you for the big battle. Ah, that reminds me, I found a #bskill#k. Would you like to see it?"); + } else if (status == 7) { + if (qm.getQuestStatus(21720) == 0) { + qm.forceCompleteQuest(); + qm.teachSkill(21001003, qm.getPlayer().getSkillLevel(21001003), 20, -1); + qm.gainExp(3900); + } + qm.showIntro("Effect/BasicEff.img/AranGetSkill"); + qm.sendNext('#b(You remembered the Polearm Booster skill!)#k', 2); + } else if (status == 8) { + qm.sendNextPrev("This skill was found in an ancient incomprehensible script. I had a hunch it might be a skill you used in the past, and I think I was right. You're not as strong as you used to be, but you'll get there, in time.", 8); + } else if (status == 9) { + qm.sendNextPrev("You are steadily becoming more powerful, and I''ll be here to keep motivating you. You have nothing to be afraid of. You will not lose the battle. You didn''t emerge from ice only to lose to the Black Mage, did you? This time, you''ll finish him, once and for all!", 8); + } else if (status == 10) { + qm.sendPrev("To do so, there''s only one thing you can do. Train, train, train. Head to Victoria Island and continue training. Let''s make sure you become so powerful that the Black Mage doesn''t stand a chance!", 8); + } else if (status == 11) { + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2186.js b/scripts/quest/2186.js new file mode 100644 index 0000000000..aa91a92299 --- /dev/null +++ b/scripts/quest/2186.js @@ -0,0 +1,40 @@ +/* + Author: BubblesDev 0.75 + Quest: Abel Glasses Quest +*/ + +function end(mode, type, selection){ + if(!qm.isQuestCompleted(2186)) { + if(qm.haveItem(4031853)){ + if(qm.canHold(2030019)) { + qm.gainItem(4031853, -1); + qm.gainExp(1700 * qm.getPlayer().getExpRate()); + qm.gainItem(2030019, 10); + + qm.sendOk("Geez, you found my glasses! Thank you, thank you so much. Now I'm able to see everything again!"); + qm.forceCompleteQuest(); + } + else { + qm.sendOk("I need you to have an USE slot available to reward you properly!"); + } + }else if(qm.haveItem(4031854) || qm.haveItem(4031855)){ //When I figure out how to make a completance with just a pickup xD + if(qm.canHold(2030019)) { + if(qm.haveItem(4031854)) + qm.gainItem(4031854, -1); + else + qm.gainItem(4031855, -1); + + qm.gainExp(1000 * qm.getPlayer().getExpRate()); + qm.gainItem(2030019, 5); + + qm.sendOk("Hm, those aren't my glasses... But alas, I'll take it anyway. Thanks."); + qm.forceCompleteQuest(); + } + else { + qm.sendOk("I need you to have an USE slot available to reward you properly!"); + } + } + } + + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/22000.js b/scripts/quest/22000.js new file mode 100644 index 0000000000..814ac72d33 --- /dev/null +++ b/scripts/quest/22000.js @@ -0,0 +1,62 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Did you sleep well, Evan?"); + } else if (status == 1) { + qm.sendNextPrev("#bYes, what about you, Mom?", 2); + } else if (status == 2) { + qm.sendNextPrev("I did as well, but you seem so tired. Are you sure you slept okay? Did the thunder and lightning last night keep you up?"); + } else if (status == 3) { + qm.sendNextPrev("#bOh, no. It's not that, Mom. I just had a strange dream last night.", 2); + } else if (status == 4) { + qm.sendNextPrev("A strange dream? What kind of strange dream?"); + } else if (status == 5) { + qm.sendNextPrev("#bWell...", 2); + } else if (status == 6) { + qm.sendNextPrev("#b(You explain that you met a dragon in your dream.)", 2); + } else if (status == 7) { + qm.sendAcceptDecline("Hahaha, a dragon? That's incredible. I'm glad he didn't swallow you whole! You should tell #p1013101# about your dream. I'm sure he'll enjoy it."); + } else if (status == 8) { + if (mode == 0) {//decline + qm.sendNext("Hm? Don't you want to tell #p1013101#? You have to be nice to your brother, dear.");//guess + qm.dispose();//get the message xd + } else {//accept + qm.forceStartQuest(); + qm.sendNext("#b#p1013101##k went to the #b#m100030102##k to feed the Bull Dog. You'll see him right outside."); + } + } else if (status == 9) { + qm.sendImage("UI/tutorial/evan/1/0"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Hey, Evan. You up? What's with the dark circles under your eyes? Didn't sleep well? Huh? A strange dream? What was it about? Whoa? A dream about a dragon?"); + } else if (status == 1) { + qm.sendNextPrev("Muahahahahaha, a dragon? Are you serious? I don't know how to interpret dreams, but that sounds like a good one! Did you see a dog in your dream, too? Hahaha! \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 20 exp"); + } else if (status == 2) { + qm.forceCompleteQuest(); + qm.gainExp(20); + qm.sendImage("UI/tutorial/evan/2/0"); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/22001.js b/scripts/quest/22001.js new file mode 100644 index 0000000000..d869634657 --- /dev/null +++ b/scripts/quest/22001.js @@ -0,0 +1,31 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Haha. I had a good laugh. Hahaha. But enough with that nonsense. Feed #p1013102#, would you?"); + } else if (status == 1) { + qm.sendNextPrev("#bWhat? That's #p1013101#'s job!", 2); + } else if (status == 2) { + qm.sendAcceptDecline("You little brat! I told you to call me Older Brother! You know how much #p1013102# hates me. He'll bite me if I go near him. You feed him. He likes you."); + } else if (status == 3) { + if (mode == 0) { + qm.sendNext("Stop being lazy. Do you want to see your brother bitten by a dog? Hurry up! Talk to me again and accept the quest!"); + qm.dispose(); + } else {//accept + qm.gainItem(4032447, true); + qm.forceStartQuest(); + qm.sendNext("Hurry up and head #bleft#k to feed #b#p1013102##k. He's been barking to be fed all morning."); + } + } else if (status == 4) { + qm.sendPrev("Feed #p1013102# and come back to see me."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22002.js b/scripts/quest/22002.js new file mode 100644 index 0000000000..0ab83b73d6 --- /dev/null +++ b/scripts/quest/22002.js @@ -0,0 +1,51 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Did you feed #p1013102#? You should have some breakfast now then, Evan. Today's breakfast is a #t2022620#. I've brought it with me. Hee hee. I was going to eat it myself if you didn't agree to feed #p1013102#."); + } else if (status == 1) { + qm.sendAcceptDecline("Here, I'll give you this #bSandwich#k, so #bgo talk to mom when you finish eating#k. She says she has something to tell you."); + } else if (status == 2) { + if (mode == 0) {//decline + qm.sendNext("Oh, what? Aren't you going to have breakfast? Breakfast is the most important meal of the day! Talk to me again if you change your mind. If you don't, I'm going to eat it myself."); + qm.dispose(); + } else { + qm.gainItem(2022620, true); + qm.forceStartQuest(); + qm.sendNext("#b(Mom has something to say? Eat your #t2022620# and head back inside the house.)#k"); + } + } else if (status == 3) { + qm.sendImage("UI/tutorial/evan/3/0"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Did you eat your breakfast, Evan? Then, will you do me a favor? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1003028# 1 #t1003028# \r\n#i2022621# 5 #t2022621#s \r\n#i2022622# 5 #t2022622# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 60 exp"); + } else if (status == 1) { + qm.gainItem(1003028, 1, true); + qm.gainItem(2022621, 5, true); + qm.gainItem(2022622, 5, true); + qm.forceCompleteQuest(); + qm.gainExp(60); + qm.sendImage("UI/tutorial/evan/4/0"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22003.js b/scripts/quest/22003.js new file mode 100644 index 0000000000..90ec2a4570 --- /dev/null +++ b/scripts/quest/22003.js @@ -0,0 +1,33 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendAcceptDecline("Your #bDad#k forgot his Lunch Box when he left for the farm this morning. Will you #bdeliver this Lunch Box#k to your Dad in #b#m100030300##k, honey?"); + } else if (status == 1) { + if (mode == 0 && type == 15) {//decline + qm.sendNext("Good kids listen to their mothers. Now, Evan, be a good kid and talk to me again."); + qm.dispose(); + } else { + if (!qm.isQuestStarted(22003)) { + if (!qm.haveItem(4032448)) { + qm.gainItem(4032448, true); + } + qm.forceStartQuest(); + } + qm.sendNext("Heehee, my Evan is such a good kid! Head #bleft after you exit the house#k. Rush over to your dad. I'm sure he's starving."); + } + } else if (status == 2) { + qm.sendNextPrev("Come back to me if you happen to lose the Lunch Box. I'll make his lunch again."); + } else if (status == 3) { + qm.sendImage("UI/tutorial/evan/5/0"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22004.js b/scripts/quest/22004.js new file mode 100644 index 0000000000..0852b9afaa --- /dev/null +++ b/scripts/quest/22004.js @@ -0,0 +1,52 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("The #o1210100#s at the farm have been acting strange these past couple days. They've been angry and irritable for no reason. I was worried so I came out to the farm early this morning and sure enough, it seems like a few of these #o1210100#s got past the fence."); + } else if (status == 1) { + qm.sendAcceptDecline("Before I go and find the #o1210100#s, I should mend the broken fence. Luckily, it wasn't damaged too badly. I just need a few #t4032498#es to fix it right up. Will you bring me #b3#k #b#t4032498#es#k, Evan?"); + } else if (status == 2) { + if (mode == 0) {//decline + qm.sendNext("Hm, #p1013101# would have done it at the drop of a hat."); + qm.dispose(); + } else { + qm.forceStartQuest(); + qm.sendNext("Oh, that's very nice of you. You'll be able to find #b#t4032498#es#k from the nearby #r#o0130100#s#k. They're not too strong, but use your skills and items when you find yourself in danger."); + } + } else if (status == 3) { + qm.sendImage("UI/tutorial/evan/6/0"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Ah, did you bring all the #t4032498#es? That's my kid! What shall I give you as a reward... Let's see... Oh, right! \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i3010097# 1 #t3010097# \r\n#i2022621# 15 #t2022621#s \r\n#i2022622# 15 #t2022622#s \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 210 exp"); + } else if (status == 1) { + if (!qm.isQuestCompleted(22004)) { + qm.gainItem(3010097, true); + qm.forceCompleteQuest(); + qm.gainExp(210); + } + qm.sendNextPrev("Here. I made this new chair from the wooden boards I had left over after fixing the fence. It may not seem like much, but it's sturdy. I'm sure it'll come in handy."); + } else if (status == 2) { + qm.sendImage("UI/tutorial/evan/7/0"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22007.js b/scripts/quest/22007.js new file mode 100644 index 0000000000..9ecdb28ade --- /dev/null +++ b/scripts/quest/22007.js @@ -0,0 +1,27 @@ +var status = -1; + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Oh, did you bring the #t4032451#? Here, give it to me. I'll give you the Incubator then."); + } else if (status == 1) { + qm.sendYesNo("Alright, here you go. I have no idea how you use it, but it's yours... \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 360 exp"); + } else if (status == 2) { + if (mode == 0) {//decline + qm.sendNext("Hm? That's strange. The Incubator wasn't installed properly. Try again."); + } else { + qm.gainItem(4032451, -1); + qm.forceCompleteQuest(); + qm.gainExp(360); + qm.sendImage("UI/tutorial/evan/9/0"); + } + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22008.js b/scripts/quest/22008.js new file mode 100644 index 0000000000..b59b031a8a --- /dev/null +++ b/scripts/quest/22008.js @@ -0,0 +1,74 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendAcceptDecline("It's strange. The chickens are acting funny. They used to hatch way more #t4032451#s. Do you think the Foxes have something to do with it? If so, we better hurry up and do something."); + } else if (status == 1) { + if (mode == 0) {//decline + qm.sendNext("Oh what... Are you scared of the #o9300385#es? Don't tell anyone you're related to me. That's shameful."); + qm.dispose(); + } else { + qm.forceStartQuest(); + qm.sendNext("Right? Let us go and defeat those Foxes. Go on ahead and defeat #r10 #o9300385#es#k in #b#m100030103##k first. I'll follow you and take care of what's left behind. Now, hurry over to #m100030103#!"); + } + } else if (status == 2) { + qm.sendImage("UI/tutorial/evan/10/0"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Did you defeat the #o9300385#es?"); + } else if (status == 1) { + qm.sendNextPrev("#bWhat happened to slaying the Foxes left behind?", 2); + } else if (status == 2) { + qm.sendNextPrev("Oh, that? Haha. I did chase them, sort of, but I wanted to make sure that they catch up to you. I wouldn't want you eaten by a #o9300385# or anything. So I just let them be."); + } else if (status == 3) { + qm.sendNextPrev("#bAre you sure you weren't just hiding because you were scared of the Foxes?", 2); + } else if (status == 4) { + qm.sendNextPrev("What? No way! Sheesh, I fear nothing!"); + } else if (status == 5) { + qm.sendNextPrev("#bWatch out! There's a #o9300385# right behind you!", 2); + } else if (status == 6) { + qm.sendNextPrev("Eeeek! Mommy!"); + } else if (status == 7) { + qm.sendNextPrev("#b...", 2); + } else if (status == 8) { + qm.sendNextPrev("..."); + } else if (status == 9) { + qm.sendNextPrev("You little brat! I'm your older brother. Don't you mess with me! Your brother has a weak heart, you know. Don't surprise me like that!"); + } else if (status == 10) { + qm.sendNextPrev("#b(This is why I don't want to call you Older Brother...)", 2); + } else if (status == 11) { + qm.sendNextPrev("Hmph! Anyway, I'm glad you were able to defeat the #o9300385#es. As a reward, I'll give you something an adventurer gave me a long time ago. Here you are. \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#i1372043# 1 #t1372043# \r\n#i2022621# 25 #t2022621# \r\n#i2022622# 25 #t2022622#s \r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 910 exp"); + } else if (status == 12) { + if (!qm.isQuestCompleted(22008)) { + qm.gainItem(1372043, true); + qm.gainItem(2022621, 25, true); + qm.gainItem(2022622, 25, true); + qm.forceCompleteQuest(); + qm.gainExp(910); + } + qm.sendNextPrev("#bThis is a weapon that Magicians use. It's a Wand#k. You probably won't really need it, but it'll make you look important if you carry it around. Hahahahaha."); + } else if (status == 13) { + qm.sendPrev("Anyway, the Foxes have increased, right? How weird is that? Why are they growing day by day? We should really look into it and get to the bottom of this."); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2230.js b/scripts/quest/2230.js new file mode 100644 index 0000000000..e16da4d081 --- /dev/null +++ b/scripts/quest/2230.js @@ -0,0 +1,80 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Generic + NPC Name: Mar the Fairy + Map(s): Everywhere + Description: Quest - A Mysterious Small Egg + Quest ID: 2230 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) + qm.sendNext("I put this small, precious life in your hands...Guard it with your life..."); + else if (status == 1) + qm.sendYesNo("Looking after another life...That is the inevitable mission given to you...Follow the force that leads you to me."); + else if (status == 2) { + qm.sendOk("Put your hand in your pocket. I think your friend has already found you.\r\nThe purple bellflower that soaks in the sun in between the skyscraping trees...Follow the path to the unknown that leads you to the bellflower. I will wait for you here."); + qm.forceStartQuest(); + qm.gainItem(4032086, 1); // Mysterious Egg * 1 + } + } +} + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) + qm.sendSimple("Hello, traveler... You have finally come to see me. Have you fulfilled your duties? \r\n #b#L0#What duties? Who are you?#l#k"); + else if (selection == 0 && status == 1) { + qm.sendNext("Have you found a small egg in your pocket? That egg is your duty, your responsibility. Life is hard when you're all by yourself. In times like this, there's nothing quite like having a friend that will be there for you at all times. Have you heard of a #bpet#k?\r\nPeople raise pets to ease the burden, sorrow, and loneliness, because knowing that you have someone, or something in this matter, on your side will really bring a peace of mind. But everything has consequences, and with it comes responsibility..."); + } else if (status == 2) { + qm.sendNextPrev("Raising a pet requires a huge amount of responsibility. Remember a pet is a form of life, as well, so you'll need to feed it, name it, share your thoughts with it, and ultimately form a bond. That's how the owners get attached to these pets."); + } else if (status == 3) { + qm.sendNextPrev("I wanted to instill this in you, and that's why I sent you a baby that I cherish. The egg you have brought is #bRune Snail#k, a creature that is born through the power of Mana. Since you took great care of it as you brought the egg here, the egg will hatch soon."); + } else if (status == 4) { + qm.sendNextPrev("Rune Snail is a pet of many skills. It'll pick up items, feed you with potions, and do other things that will astound you. The downside is that since Rune Snail was born out of power of Mana, it's lifespan is very short. Once it turns into a doll, it'll never be able to be revived."); + } else if (status == 5) { + qm.sendYesNo("Now do you understand? Every action comes with consequences, and pets are no exception. The egg of the snail shall hatch soon."); + } else if (status == 6) { + qm.gainItem(5000054, 1); // rune snail * 1 + qm.gainItem(4032086, -1); // Mysterious Egg * -1 + qm.forceCompleteQuest(); + qm.sendNext("This snail will only be alive for #b5 hours#k. Shower it with love. Your love will be reciprocated in the end."); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/22500.js b/scripts/quest/22500.js new file mode 100644 index 0000000000..13fb1166ad --- /dev/null +++ b/scripts/quest/22500.js @@ -0,0 +1,54 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("I'm finally here! *inhales* Ah, this must be air I'm breathing. And that, that must be the sun! And that, a tree! And that, a plant! And that, a flower! Woohahahaha! This is incredible! This is much better than I imagined the world to be while I was trapped inside the egg. And you... Are you my master? Hm, I pictured you differently."); + } else if (status == 1) { + qm.sendNextPrev("#bWhoooooa, it talks!", 2); + } else if (status == 2) { + qm.sendNextPrev("My master is strange. I guess I can't do anything about it now, since the pact has been made. *sigh* Well, good to meet you. We'll be seeing a lot of each other."); + } else if (status == 3) { + qm.sendNextPrev("#bEh? What do you mean? We'll be seeing a lot of each other? What pact?", 2); + } else if (status == 4) { + qm.sendNextPrev("What do you mean what do I mean?! You woke me from the Egg. You're my master! So of course it's your responsibility to take care of me and train me and help me become a strong Dragon. Obviously!"); + } else if (status == 5) { + qm.sendNextPrev("#bWhaaat? A Dragon? You're a Dragon?! I don't get it... Why am I your master? What are you talking about?", 2); + } else if (status == 6) { + qm.sendNextPrev("What are YOU talking about? Your spirit made a pact with my spirit! We're pretty much the same person now. Do I really have to explain? As a result, you've become my master. We're bound by the pact. You can't change your mind... The pact cannot be broken."); + } else if (status == 7) { + qm.sendNextPrev("#bWait, wait, wait. Let me get this straight. You're saying I have no choice but to help you?", 2); + } else if (status == 8) { + qm.sendNextPrev("Yuuup! Heeeey...! What's with the face? You...don't want to be my master?"); + } else if (status == 9) { + qm.sendNextPrev("#bNo... It's not that... I just don't know if I'm ready for a pet.", 2); + } else if (status == 10) { + qm.sendNextPrev("A p-p-pet?! Did you just call me a pet?! How dare... Why, I'm a Dragon! The strongest being in the world!"); + } else if (status == 11) { + qm.sendNextPrev("#b...#b(You stare at him skeptically. He looks like a lizard. A puny little one, at that.)#k", 2); + } else if (status == 12) { + qm.sendAcceptDecline("Why are you looking at me like that?! Just watch! See what I can do with my power. Ready?"); + } else if (status == 13) { + if (mode == 0 && type == 15) { + qm.sendNext("You don't believe me? Grrrrr, you're getting me mad!"); + qm.dispose(); + } else { + if (!qm.isQuestStarted(22500)) { + qm.forceStartQuest(); + } + qm.sendNext("Command me to slay the #r#o1210100##ks! Do it now! I'll show you how fast a Dragon can defeat the #o1210100#s! Goooo, charge!"); + } + } else if (status == 14) { + qm.sendNextPrev("Wait a minute! Did you distribute your AP? I'm heavily affected by my master's #bINT and LUK#k! If you really want to see what I can do, distribute your AP and #bequip your Magician equipment#k before you use the skill!"); + } else if (status == 15) { + qm.sendImage("UI/tutorial/evan/11/0"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22501.js b/scripts/quest/22501.js new file mode 100644 index 0000000000..129d3d1e9c --- /dev/null +++ b/scripts/quest/22501.js @@ -0,0 +1,30 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Yo, master. Now that I've shown you what I can do, it's your turn. Prove to me...that you can find food! I'm starving. You can use my power now, so you have to take care of me."); + } else if (status == 1) { + qm.sendNextPrev("Eh, I still don't get what's going on, but I can't let a poor little critter like you starve, right? Food, you say? What do you want to eat?", 2); + } else if (status == 2) { + qm.sendNextPrev("Hi, I was just born a few minutes ago. How would I know what I eat? All I know is that I'm a Dragon... I'm YOUR Dragon. And you're my master. You have to treat me well!"); + } else if (status == 3) { + qm.sendAcceptDecline("I guess we're supposed to learn together. But I'm hungry. Master, I want food. Remember, I'm a baby! I'll start crying soon!"); + } else if (status == 4) { + if (mode == 0) { + qm.sendNext("*gasp* How can you refuse to feed your Dragon? This is child abuse! "); + qm.dispose(); + } else { + qm.forceStartQuest(); + qm.sendOk("#b#b(#p1013000# the baby Dragon appears to be extremely hungry. You must feed him. Maybe your Dad can give you advice on what dragons eat.)"); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/22502.js b/scripts/quest/22502.js new file mode 100644 index 0000000000..af95553b7a --- /dev/null +++ b/scripts/quest/22502.js @@ -0,0 +1,23 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendAcceptDecline("Wouldn't a lizard enjoy a #b#t4032452##k, like a cow? There are a lot of #bHaystacks#k nearby, so try feeding it that."); + } else if (status == 1) { + if (mode == 0) { + qm.sendNext("Hm, you never know unless you try. That lizard is big enough to be on Maple's Believe It Or Not. It might eat hay."); + } else { + qm.forceStartQuest(); + qm.sendImage("UI/tutorial/evan/12/0"); + } + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22503.js b/scripts/quest/22503.js new file mode 100644 index 0000000000..851808fa56 --- /dev/null +++ b/scripts/quest/22503.js @@ -0,0 +1,27 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("No, no, no. This isn't what I need. I need something more nutritious, master!"); + } else if (status == 1) { + qm.sendNextPrev("#bHm... So you're not a herbivore. You might be a carnivore. You're a Dragon, after all. How does some #t4032453# sound?", 2); + } else if (status == 2) { + qm.sendAcceptDecline("What's a...#t4032453#? Never heard of it, but if it's yummy, I accept! Just feed me something tasty. Anything but plants!"); + } else if (status == 3) { + if (mode == 0) { + qm.sendNext("How can you starve me like this. I'm just a baby. This is wrong!"); + } else { + qm.forceStartQuest(); + qm.sendNext("#b#b(Try giving #p1013000# some #t4032453#. You have to hunt a few #o1210100#s at the farm. Ten should be plenty...)"); + } + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/22504.js b/scripts/quest/22504.js new file mode 100644 index 0000000000..118850099d --- /dev/null +++ b/scripts/quest/22504.js @@ -0,0 +1,26 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Ugh. This isn't going to work. I need something else. No plants. No meat. What, you have no idea? But you're the master, and you're older than me, too. You must know what'd be good for me!"); + } else if (status == 1) { + qm.sendNextPrev("#bBut I don't. It's not like age has anything to do with this...", 2); + } else if (status == 2) { + qm.sendAcceptDecline("Since you're older, you must be more experienced in the world, too. Makes sense that you'd know more than me. Oh, fine. I'll ask someone who's even older than you, master!"); + } else if (status == 3) { + if (mode == 0) { + qm.sendNext("No use trying to find an answer to this on my own. I'd better look for #bsomeone older and wiser than master#k!"); + } else { + qm.forceStartQuest(); + qm.sendNext("#b#b(You already asked Dad once, but you don't have any better ideas. Time to ask him again!)"); + } + } +} \ No newline at end of file diff --git a/scripts/quest/22507.js b/scripts/quest/22507.js new file mode 100644 index 0000000000..8e3319f496 --- /dev/null +++ b/scripts/quest/22507.js @@ -0,0 +1,58 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("I knew it! I knew we were connected, master! When you get stronger, I get stronger, too. And when I get stronger, you can use my strength! That's our pact. I knew I picked a good master!"); + } else if (status == 1) { + qm.sendNextPrev("#bI see. How did we end up in this pact anyway?", 2); + } else if (status == 2) { + qm.sendNextPrev("I don't know. I was just an egg. I can't really remember...though I faintly recall you, master, walking toward me in a foggy forest. I remember your surprise upon seeing me. And I was calling out to you in return."); + } else if (status == 3) { + qm.sendNextPrev("#b#b(Wait! That sounds just like that one dream you had... Did the two of you meet in a dream? Is it possible that the giant Dragon you saw in that dream was...#p1013000#?)", 2); + } else if (status == 4) { + qm.sendNextPrev("Master, you and I are one in spirit. I knew it the moment I saw you. That's why I wanted to make the pact with you. No one else. You had to pay the price I set, of course."); + } else if (status == 5) { + qm.sendNextPrev("#bI paid a price?", 2); + } else if (status == 6) { + qm.sendNextPrev("Don't you remember? When you recognized me and touched me? That was the one condition I set. The moment you touched my egg, you and I became one in spirit."); + } else if (status == 7) { + qm.sendNextPrev("#bOne in...spirit?", 2); + } else if (status == 8) { + qm.sendNextPrev("Yes! The Spirit Pact! You and I have seperate bodies, but we share one spirit. That's why you get stronger when I get stronger, and vice versa! Awesome, right? At least, I think so."); + } else if (status == 9) { + qm.sendNextPrev("#bI have no idea what you're talking about, but it sounds like a pretty big deal.", 2); + } else if (status == 10) { + qm.sendNextPrev("Of course it's a big deal, silly master! You never have to worry about monsters again. You have me to protect you now! Go ahead and test me. In fact, let's go right now!"); + } else if (status == 11) { + qm.sendNextPrev("#bBut it's peaceful here. There are no dangerous monsters around.", 2); + } else if (status == 12) { + qm.sendNextPrev("WHAT?! That's no fun! Don't you like adventuring, master? Fighting monsters on behalf of your people, defeating evil, rescuing the innocent, and all that? You're not into that kind of thing?"); + } else if (status == 13) { + qm.sendNextPrev("#bIt's not part of my five year plan. I'm just kidding, but seriously, I'm a farmer's kid...", 2); + } else if (status == 14) { + qm.sendAcceptDecline("Bah, well let me tell you this. It's impossible for a Dragon Master to live a peaceful life. I'll have plenty of chances to prove my skills. Trust me, our life will be one big adventure. Promise me that you'll stick with me, okay?\r\n\r\n#fUI/UIWindow.img/QuestIcon/8/0# 810 exp"); + } else if (status == 15) { + if (mode == 0) { + qm.sendNext("Uh, you're kidding me, right? Tell me your finger slipped! Go ahead and accept the quest."); + } else { + if (!qm.isQuestCompleted(22507)) { + qm.forceCompleteQuest(); + qm.gainExp(810); + } + qm.sendNext("Hehehe, alrighty then, master. Let's get to it!"); + } + } else if (status == 16) { + qm.sendNextPrev("#b(You're a bit confused, but you are now traveling with Mir the Dragon. Perhaps you'll go on an adventure together, like he said.)", 2); + } else if (status == 17) { + qm.sendPrev("#b#b(You still have an errand to run. Your dad needs to talk to you, so go and see him now.)"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2301.js b/scripts/quest/2301.js new file mode 100644 index 0000000000..6973579675 --- /dev/null +++ b/scripts/quest/2301.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/23011.js b/scripts/quest/23011.js new file mode 100644 index 0000000000..2ca307f30e --- /dev/null +++ b/scripts/quest/23011.js @@ -0,0 +1,32 @@ +var status = -1; + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendYesNo("So you've finally decided to become a Battle Mage, eh? Well, you can still change your mind. Just stop our conversation, forfeit this quest, and talk to another class trainer. So, you sure you want to become a Battle Mage? I'm not interested in teaching you unless you're a hundred percent sure..."); + } else if (status == 1) { + if (mode == 0) { + qm.sendNext("Think carefully before you make your decision."); + } else { + if (!qm.isQuestCompleted(23011)) { + qm.gainItem(1382100); + qm.gainItem(1142242); + qm.forceCompleteQuest(); + qm.changeJobById(3200); + qm.showItemGain(1382100, 1142242); + } + qm.sendNext("Okay, okay. Welcome to the Resistance, kid. From now on, you will play the role of a Battle Mage, a fierce Magician always ready to lead your party into battle."); + } + } else if (status == 2) { + qm.sendNextPrev("But don't go spreading it around that you're a Battle Mage, hm? No need to tempt the Black Wings to come after you. From now on, I'll be your teacher. If anyone asks, you're visiting me just as a regular student, not as a member of the Resistance. I'll give you special lessons now and then. You better not fall asleep in class, hear? "); + } else if (status == 3) { + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2302.js b/scripts/quest/2302.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2302.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2303.js b/scripts/quest/2303.js new file mode 100644 index 0000000000..b48ba6a804 --- /dev/null +++ b/scripts/quest/2303.js @@ -0,0 +1,63 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2304.js b/scripts/quest/2304.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2304.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2305.js b/scripts/quest/2305.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2305.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2306.js b/scripts/quest/2306.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2306.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2307.js b/scripts/quest/2307.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2307.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2308.js b/scripts/quest/2308.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2308.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2309.js b/scripts/quest/2309.js new file mode 100644 index 0000000000..244a97bc18 --- /dev/null +++ b/scripts/quest/2309.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} diff --git a/scripts/quest/2310.js b/scripts/quest/2310.js new file mode 100644 index 0000000000..f07db2d890 --- /dev/null +++ b/scripts/quest/2310.js @@ -0,0 +1,64 @@ +/* =========================================================== + Resonance + NPC Name: Maple Administrator + Description: Quest - Kingdom of Mushroom in Danger +============================================================= +Version 1.0 - Script Done.(17/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + //if(status == 0){ + qm.sendOk("Really? It's an urgent matter, so if you have some time, please see me."); + qm.dispose(); + return; + //} else if(status == 3){ + //qm.sendNext("Okay. In that case, I'll just give you the routes to the Kingdom of Mushroom. #bNear the west entrance of Henesys,#k you'll find an #bempty house#k. Enter the house, and turn left to enter#b#k. That's the entrance to the Kingdom of Mushroom. There's not much time!"); + //qm.forceStartQuest(); + //return; + } + } + //} + if(status == 0) + qm.sendAcceptDecline("Now that you have made the job advancement, you look like you're ready for this. I have something I'd like to ask you for help. Are you willing to listen?"); + if(status == 1) + qm.sendNext("What happened is that the #bKingdom of Mushroom#k is currently in disarray. Kingdom of Mushroom is located near Henesys, featuring the peace-loving, intelligent King Mush. Recently, he began to feel ill, so he decided to appoint his only daughter #bPrincess Violetta#k. Something must have happened since then for the kingdom to be in its current state."); + if(status == 2) + qm.sendNext("I am not aware of the exact details, but it's obvious something terrible had taken place, so I think it'll be better if you go there and assess the damage yourself. An explorer like you seem more than capable of saving Kingdom of Mushroom. I have just written you a #brecommendation letter#k, so I suggest you head over to Kingdom of Mushroom immediately and look for the #bHead Patrol Officer#k.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v4032375# #t4032375#"); + if(status == 3) + qm.sendYesNo("By the way, do you know where Kingdom of Mushroom is located? It'll be okay if you can find your way there, but if you don't mind, I can take you straight to the entrance."); + if(status == 4){ + qm.gainItem(4032375, 1); + qm.forceStartQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if(status == 0) + qm.sendNext("Hmmm? Is that a #brecommendation letter from the job instructor#k??! What is this, are you the one that came to save us, the Kingdom of Mushroom?"); + if(status == 1) + qm.sendNextPrev("Hmmm... okay. Since the letter is from the job instructor, I suppose you are really the one. I apologize for not introducing myself to you earlier. I'm the #bHead Security Officer#k in charge of protecting King Mush. As you can see, this temporary hideout is protected by the team of security and soldiers. Our situation may be dire, but nevertheless, welcome to Kingdom of Mushroom."); + if(status == 2){ + qm.forceCompleteQuest(); + qm.gainItem(4032375, -1); + qm.forceStartQuest(2312); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/2314.js b/scripts/quest/2314.js new file mode 100644 index 0000000000..e3d5384f8a --- /dev/null +++ b/scripts/quest/2314.js @@ -0,0 +1,57 @@ +/* =========================================================== + Resonance + NPC Name: Minister of Home Affairs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Exploring Mushroom Forest(1) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendNext("Please do not lose faith in our Kingdom of Mushroom."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendYesNo("In order to rescue the princess, you must first navigate the Mushroom Forest. King Pepe set up a powerful barrier forbidding anyone from entering the castle. Please investigate this matter for us."); + if (status == 1) + qm.sendNext("You'll run into the barrier at the Mushroom Forest by heading east of where you are standing right now. Please be careful. I hear that the area is infested with crazy, fear-inducing monsters."); + if(status == 2){ + //qm.forceStartQuest(); + //qm.forceStartQuest(2314,"1"); + qm.gainExp(8300); + qm.sendOk("I see, so it was indeed not a regular barrier by any means. Great work there. If not for you help, we wouldn't have had a clue as to what that was all about."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("I see that you have thoroughly investigated the barrier at the Mushroom Forest. What was it like?"); + if (status == 1){ + qm.gainExp(8300); + qm.sendOk("I see, so it was indeed not a regular barrier by any means. Great work there. If not for you help, we wouldn't have had a clue as to what that was all about."); + qm.forceCompleteQuest(); + qm.dispose(); + } + } + \ No newline at end of file diff --git a/scripts/quest/2315.js b/scripts/quest/2315.js new file mode 100644 index 0000000000..e345ab6e2a --- /dev/null +++ b/scripts/quest/2315.js @@ -0,0 +1,54 @@ +/* =========================================================== + Resonance + NPC Name: Minister of Home Affairs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Exploring Mushroom Forest(2) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("Please do not forget our plea for help."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("A powerful barrier of magic, huh? Then what should we do...? If we can't find a way to break that barrier, then we can't save the princess. If it's impossible to physically break through, as you mentioned, then how about requesting help from our #bMinister of Magic#k?"); + if (status == 1){ + qm.forceStartQuest(); + qm.sendOk("Please go see him immediately. The #bMinister of Magic#k may seem a bit on the edge, but he's very knowledgeable, and I'm sure he'll know what to do."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("What? You investigated the barrier at the Mushroom Forest?"); + if (status == 1){ + qm.gainExp(4000); + qm.sendOk("Hmmm...this is interesting. It's a barrier set up by someone with a powerful force of magic, which means there's no way we can manually break through it."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2316.js b/scripts/quest/2316.js new file mode 100644 index 0000000000..3b15ff46e8 --- /dev/null +++ b/scripts/quest/2316.js @@ -0,0 +1,54 @@ +/* =========================================================== + Resonance + NPC Name: Minister of Magic + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Exploring Mushroom Forest(3) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("Why did you even ask if you were going to say no to this?#"); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("I think i've heard of a potion that breaks these kinds of barriers. I think it's called #bKiller Mushroom Spores#k? Hmmm... outside, you'll find the Mushroom Scholar #bScarrs#k waiting outside. #bScarrs#k is an expert on mushrooms, so go talk to him."); + if (status == 1){ + qm.forceStartQuest(); + qm.sendOk("I am confident #kScarrs#k will do everything to help you."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("Ah, so you're the explorer people were talking about. I'm #bScarrs, the Royal Mushroom Scholar#k representing the Kingdom of Mushroom. So you need some #kKiller Mushroom Spores#k?"); + if (status == 1){ + qm.gainExp(4200); + qm.sendOk("#kKiller Mushroom Spores#k... I think i've heard of them before..."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2317.js b/scripts/quest/2317.js new file mode 100644 index 0000000000..359cd2b951 --- /dev/null +++ b/scripts/quest/2317.js @@ -0,0 +1,55 @@ +/* =========================================================== + Resonance + NPC Name: Scarrs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Killer Mushroom Spores(1) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("Breaking through the barrier will require the Poison Mushroom Cap. Talk to me when you change your mind."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("Ah! If I am not mistaken, I saw the #bKiller Mushroom Spores#k way back when I was a kid in a book. Now I remember... it's made out of extracts of powerful poisons from Poison Mushrooms, which means you'll need some Poison Mushroom Caps. If you can get me those, I think I'll be able to make it."); + if (status == 1){ + qm.forceStartQuest(); + qm.sendOk("Please defeat #bPoison Mushrooms#k and bring back #b100 Poison Mushroom Caps#k in return."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("Have you gathered up the 100 Poison Mushroom Caps like I asked you to get?"); + if (status == 1){ + qm.gainExp(13500); + qm.gainItem(4000500, -100); + qm.sendOk("I am amazed that you were able to gather up these 100 Poison Mushroom Caps, which is considered a difficult feat. I think I'll be able to make #bKiller Mushroom Spores#k our of these."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2318.js b/scripts/quest/2318.js new file mode 100644 index 0000000000..3babb9a864 --- /dev/null +++ b/scripts/quest/2318.js @@ -0,0 +1,58 @@ +/* =========================================================== + Resonance + NPC Name: Scarrs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Killer Mushroom Spores(2) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("I understand it's not an easy task, but I can't make #bKiller Mushroom Spores#k without them. Please reconsider."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("Hmmm... I looked into the making of the Spores while you were gathering up the Poison Mushroom Caps, and realised that we'll need more materials for it. I want you to gather up one more set of items. Can you do it?"); + if (status == 1){ + qm.forceStartQuest(); + qm.sendOk("Okay, I want you to defeat the Regenade Spores and bring back #b50 Mutated Spores#k in return."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("Did you gather up all the necessary ingredients for it?") + if (status == 1){ + qm.gainExp(11500); + qm.gainItem(4000499, -50); + qm.sendNext("Okay, these should be enough for me to make the #bKiller Mushroom Spores.#k Please hold on for a bit."); + qm.forceCompleteQuest(); + qm.gainItem(2430014, 1); + } if(status == 2){ + qm.sendPrev("Okay, here are the Killer Mushroom Spores. Hopefully this will be enough for you to save our princess and help regain our kingdom. Good luck!"); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2319.js b/scripts/quest/2319.js new file mode 100644 index 0000000000..8f5e650664 --- /dev/null +++ b/scripts/quest/2319.js @@ -0,0 +1,56 @@ +/* =========================================================== + Resonance + NPC Name: Scarrs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Killer Mushroom Spores(3) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("I know it's not a tough task, so come back to me if you're ready."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("Oh, I almost forgot! What was I thinking? I need you to hand this #bSample of Killer Mushroom Spores#k to #bMinister of Magic#k and report the results."); + if (status == 1){ + qm.forceStartQuest(); + qm.gainItem(4032389, 1); + qm.sendOk("The #bMinister of Magic#k told me once the #bKiller Mushroom Spores#k is complete, that he'll want a sample of it as well. I'll give you the sample; now go please hand it in to our #bMinister of Magic.#k"); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("Are the #bKiller Mushroom Spores#k finally completed?"); + if (status == 1){ + qm.gainExp(4200); + qm.gainItem(4032389, -1); + qm.sendOk("Okay, so this is the #bKiller Mushroom Spores.#k Thank you, thank you, and please tell #bScarrs#k the same."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2320.js b/scripts/quest/2320.js new file mode 100644 index 0000000000..cf5e5d389f --- /dev/null +++ b/scripts/quest/2320.js @@ -0,0 +1,56 @@ +/* =========================================================== + Resonance + NPC Name: Scarrs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - A Friendship with Bruce +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("I wanted you to personally give this piece of good news to #bBruce#k, but I understand if you're busy."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("I have just one more request for you. Would you like to take a listen?"); + if (status == 1){ + qm.forceStartQuest(); + qm.gainItem(4032389, 1); + qm.sendOk("To be honest, these #bKiller Mushroom Spores#k are not completely out of my own work. Do you remember #bBruce#k from #bHenesys#k? I have been friends with him since childhood, and #bKiller Mushroom Spores#k was completed after he shared the results of his studies with me. This was all thanks to him, so I'd like for you to give this to him for me."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("Oh! You're here on behalf of #bScarrs#k? \r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0# \r\n#fUI/UIWindow.img/QuestIcon/8/0# 8800 exp"); + if (status == 1){ + qm.gainExp(8800); + qm.gainItem(4032389, -1); + qm.sendOk("Ahh, so this is the #bKiller Mushroom Spores#k that I was working on in the past. I had a tough time gathering up the ingredients, so I left it in theory only, but he was able to complete it, with a sample to show for as well. Please tell him I appreciate his good work."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2321.js b/scripts/quest/2321.js new file mode 100644 index 0000000000..8b54b52f23 --- /dev/null +++ b/scripts/quest/2321.js @@ -0,0 +1,54 @@ +/* =========================================================== + Resonance + NPC Name: Minister of Magic + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Over the Castle Wall (1) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendOk("You don't seem to follow instructions well. Come see me when you are ready."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendAcceptDecline("Now you'll be able to penetrate the spiny vine barrier of Mushroom Forest, but before that, #bMinister of Home Affairs#k wants to have a word with you. Please go see him immediately."); + if (status == 1){ + qm.forceStartQuest(); + qm.sendOk("Good luck."); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("I have been keeping up on your fabulour work. I am aware that you have successfully created the #bKiller Mushroom Spores#k, which penetrates through the unpenetrable barrier of the forest. Congratulations!"); + if (status == 1){ + qm.gainExp(2500); + qm.sendOk("The problem now is to figure out how to enter the castle."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2322.js b/scripts/quest/2322.js new file mode 100644 index 0000000000..fd114c25d1 --- /dev/null +++ b/scripts/quest/2322.js @@ -0,0 +1,59 @@ +/* =========================================================== + Resonance + NPC Name: Minister of Home Affairs + Map(s): Mushroom Castle: Corner of Mushroom Forest(106020000) + Description: Quest - Over the Castle Wall (2) +============================================================= +Version 1.0 - Script Done.(18/7/2010) +============================================================= +*/ + +importPackage(Packages.client); + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.sendNext("Really? Is there another way you can penetrate the castle? If you don't know of one, then just come see me."); + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendYesNo("Like I told you, just breaking the barrier cannot be a cause for celebration. That's because our castle for the Kingdom of Mushroom completely denies entry of anyone outside our kingdom, so it'll be hard for you to do that. Hmmm... to figure out a way to enter, can you...investigate the outer walls of the castle first?"); + if (status == 1) + qm.sendNext("Walk past the Mushroom Forest and when you reach the #bSplit Road of Choice#k, just walk towards the castle. Good luck."); + if (status == 2){ + //qm.forceStartQuest(); + //qm.forceStartQuest(2322, "1"); + qm.gainExp(11000); + qm.sendOk("Good job navigating through the area."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) + qm.sendOk("Hmmm I see... so they have completely shut off the entrance and everything."); + if (status == 1){ + qm.gainExp(11000); + qm.sendOk("Good job navigating through the area."); + qm.forceCompleteQuest(); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2560.js b/scripts/quest/2560.js new file mode 100644 index 0000000000..d784079e1b --- /dev/null +++ b/scripts/quest/2560.js @@ -0,0 +1,27 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Ooook! Ook! Ook!"); + } else if (status == 1) { + qm.sendNextPrev("Well, that hit the spot, but... I still don't understand what happened. Where's the ship? Hey, do you know what happened to me?", 2); + } else if (status == 2) { + qm.sendAcceptDecline("Oook! (The monkey nods. Does he really know what's going on? Couldn't hurt to ask.)"); + } else if (status == 3) { + if (mode == 0) {//decline + qm.sendNext("Ook! Ook! (The monkey looks very dissatisfied.)"); + } else { + qm.forceStartQuest(); + } + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2561.js b/scripts/quest/2561.js new file mode 100644 index 0000000000..37b23ae534 --- /dev/null +++ b/scripts/quest/2561.js @@ -0,0 +1,42 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Ook, ook! Oook! Ook! Ook! Ook?!"); + } else if (status == 1) { + qm.sendNextPrev("I remember...I was on my way to Maple Island, to become an Explorer... What happened? What's going on?", 2); + } else if (status == 2) { + qm.sendNextPrev("Oook! Ook! Ook! Oooook!"); + } else if (status == 3) { + qm.sendNextPrev("I was talking to the captain, and admiring the scenery, and... Balrog! Balrog attacked the ship! So... Did I fall overboard? Then, why am I alive? I know #bI can swim#k, but can I swim while unconscious? Maybe I can. Maybe I'm a natural swimmer!", 2); + } else if (status == 4) { + qm.sendNext("Ooook! Ook! Ook! (Huh, a little monkey...tapping its foot angrily. Actually, when I first woke up, that monkey was the only thing I saw...)"); + } else if (status == 5) { + qm.sendNextPrev("Huh? Why are you waving your arms like that? Are you trying to tell me something? (The monkey took an apple out of the nearby chest. It looks delicious. But, what is he trying to tell you?)\r\n\r\n#i2010000#", 2); + } else if (status == 6) { + qm.sendAcceptDecline("Ook ook! Om nom nom! (The monkey looks frustrated that you don't understand him. He pretends to eat the apple. Wait, does he want YOU to eat it? That must be it! What a nice monkey.)"); + } else if (status == 7) { + if (mode == 0) {//decline + qm.sendNext("The thing is, I don't like apples... Sorry, but no thanks.", 2); + qm.dispose(); + } else { + if (!qm.isQuestStarted(2561)) {//seems that hp is not changed o.o + qm.gainItem(2010000, true); + qm.forceStartQuest(); + } + qm.sendNext("(You have received a delicious-looking apple. You should eat it. Now...how do you open your Inventory? Was it the #bI#k key...?)", 2); + } + } else if (status == 8) { + qm.showInfo("UI/tutorial.img/28"); + qm.dispose(); + } +} + \ No newline at end of file diff --git a/scripts/quest/2568.js b/scripts/quest/2568.js new file mode 100644 index 0000000000..6f2c64f01f --- /dev/null +++ b/scripts/quest/2568.js @@ -0,0 +1,38 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendAcceptDecline("You're back! Great. I got the Ignition Device all hooked up, so we can get back to civilization. Nothing left to do here, right? Let's roll!"); + } else if (status == 1) { + if (mode == 0) {//decline + + } else { + qm.forceStartQuest(); + qm.warp(912060200); + } + qm.dispose(); + } +} + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext(""); + } +} + \ No newline at end of file diff --git a/scripts/quest/2570.js b/scripts/quest/2570.js new file mode 100644 index 0000000000..f8b698d85b --- /dev/null +++ b/scripts/quest/2570.js @@ -0,0 +1,55 @@ +var status = -1; + +function end(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Good to see you, #h0#. So...you're the one that helped Cutter return. I saw you were hurt when you first arrived...are you okay now? You must be made of stern stuff. No wonder Cutter regards you so highly. My name is Kyrin. I'm captain of the Nautilus, as well as the Job Instructor for Pirates."); + } else if (status == 1) { + qm.sendNextPrev("Cutter told you that he wants you to become a #bCannoneer#k, right? I agree with him, but I'm worried that your heart might not be in it. Maybe if you knew more about the pirates, you would be more interested. Let me tell you a little about us."); + } else if (status == 2) { + qm.sendNextPrev("I brought the pirates together to start working against the Black Mage, the great evil that threatens all of Maple World. Turns out the hero business is more profitable than looting and pillaging!"); + } else if (status == 3) { + qm.sendNextPrev("If you become a Pirate, you can help investigate the Black Mage's plots, and assist in the defense of Maple World. Keep in mind that I won't make you do anything...I'm primarily a Job Instructor, and just guide the pirates in a general sense."); + } else if (status == 4) { + qm.sendNextPrev("But, I know you would help us fight the Black Mage. You have that gleam in your eye that all heroes do. Anyway, I've said my piece."); + } else if (status == 5) { + qm.sendAcceptDecline("Now, it's all up to you. Do you wish to join the pirates? I would be quite pleased if you became a Cannoneer. "); + } else if (status == 6) { + if (mode == 0 && qm.isQuestCompleted(2570)) {//decline + qm.sendNext("Oh. So...you want to be something else? I understand...but Cutter might not..."); + qm.dispose(); + } else { + if (!qm.isQuestCompleted(2570)) { + qm.gainItem(1532000); + qm.gainItem(1002610); + qm.gainItem(1052095); + qm.changeJobById(501); + qm.forceCompleteQuest(); + qm.forceCompleteQuest(29900); + qm.teachSkill(109, 1, 1, -1); + qm.teachSkill(110, 0, -1, -1);//? blessing + qm.teachSkill(111, 1, 1, -1); + qm.showItemGain(1532000, 1002610, 1052095); + } + qm.sendNext("Well, you are truly one of us now. Open up your Skill window and check out your new Pirate abilities. I also gave you a few extra SP, so you can go ahead and boost some of your new skills. You'll get more skills at higher levels, so I suggest you have a plan for your training."); + } + } else if (status == 7) { + qm.sendNextPrev("Skills alone do not make you a great pirate. You have to distribute your stats like a pirate, too! If you're hoping to become a Cannoneer, invest heavily in STR so you can hold that heavy cannon of yours. And if you just have no idea, use the #bauto-distribute#k option. Simple, and effective."); + } else if (status == 8) { + qm.sendNextPrev("Oh, I gave you a little gift, too. I expanded a few slots in your Equip and ETC Item tabs, so you should have plenty of room for your spoils!"); + } else if (status == 9) { + qm.sendNextPrev("Now, there is one last thing that you need to remember. More than anything else, you need to keep your HP up. If you fall in battle, you'll lose some of your EXP. And I'm SURE you don't want that, right?"); + } else if (status == 10) { + qm.sendNextPrev("Well, that's it! I have taught you everything you need to know. I also gave you a few decent weapons, so make good use of them. Now, go forth, grow stronger, and kick around the Black Mage's minions, if you get the chance!"); + qm.forceStartQuest(2945, "1"); + } else if (status == 11) { + qm.dispose();//let them go back :P + } +} \ No newline at end of file diff --git a/scripts/quest/2573.js b/scripts/quest/2573.js new file mode 100644 index 0000000000..c221de1cf5 --- /dev/null +++ b/scripts/quest/2573.js @@ -0,0 +1,26 @@ +var status = -1; + +function start(mode, type, selection) { + if (mode == 0 && type == 0) { + status--; + } else if (mode == -1) { + qm.dispose(); + return; + } else { + status++; + } + if (status == 0) { + qm.sendNext("Greetings! Isn't this just the perfect weather for a journey? I'm Skipper, the captain of this fine ship. You must be a new Explorer, eh? Nice to meet you."); + } else if (status == 1) { + qm.sendAcceptDecline("We're not quite ready to leave, so feel free to look around the ship while we're waiting."); + } else if (status == 2) { + if (mode == 0) {//decline + qm.sendNext("Hey, take it easy! Sometimes you just gotta wait."); + } else { + qm.sendNext("Looks like we're all set! I think this is going to be a great voyage. Let's get underway."); + qm.warp(3000000); + qm.forceCompleteQuest(); + } + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/29002.js b/scripts/quest/29002.js new file mode 100644 index 0000000000..4f5339f9c2 --- /dev/null +++ b/scripts/quest/29002.js @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Generic (http://cronusemu.net) + NPC Name: Dalair + Map(s): Every town + Description: Quest - Title Challenge - Celebrity! + Quest ID : 29002 +*/ +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.sendNext("Come back when you're ready."); + qm.dispose(); + } else { + if (mode > 0) + status++; + else + status--; + if (status == 0) {// Picture of Celebrity Medal(+blue text "Celebrity Medal" + qm.sendAcceptDecline("#v1142003# #e#b#t1142003##k \r\n- Time Limit 30 Days \r\n- Popularity 1000Increase \r\n#nDo you want to test your skills to see if you're worthy of this title?"); + } else if (status == 1) { + qm.sendNext("I'll give you 30 days to reach your goal. Once you're finished, come back and see me. Remember that you have to come back and see me within the time limit in order for it to be approved. Also, unless you complete this challenge or quit first, you can't try out for another title."); + qm.forceStartQuest(); + } + + } + +} \ No newline at end of file diff --git a/scripts/quest/29400.js b/scripts/quest/29400.js new file mode 100644 index 0000000000..cffc6f23d5 --- /dev/null +++ b/scripts/quest/29400.js @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 + Description: Quest - Veteran Hunter + Quest ID : 29400 +*/ + +var status = -1; + +function start(mode, type, selection) { + status++; + if (mode != 1) { + qm.sendNext("Come back when you're ready."); + + qm.dispose(); + return; + } + if (status == 0) + qm.sendAcceptDecline("#v1142004# #e#b#t1142004##k\r\n\r - Time Limit 30 Days\r - Hunt 100,000 Monsters\r #n *Only monsters that are at your level or higher are approved.\r\nDo you want to test your skills to see if you're worthy of this title?"); + else if (status == 1) { + qm.sendNext("Current Ranking \r\n1. #bMoople#k : #r538,673#k monsters\r\n2. #bZeroQuanta#k : #r111,421#k monsters\r\nDon't forget that the record resets at the beginning of each month.");//TODO + } else if (status == 2) { + qm.sendNextPrev("I'll give you 30 days to reach your hunting goal. Once you are finished, come back and see me. Remember, you have to come back and see me within the time limit in order to be approved. Also, you are prohibited from trying out for another title unless you first complete or forfeit this challenge."); + } else if (status == 3) { + qm.forceStartQuest(); + qm.dispose(); + } +} + + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) return; + else{ + qm.dispose(); + return; + } + if (status == 0) { + qm.sendOk("Not coded yet."); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/29900.js b/scripts/quest/29900.js new file mode 100644 index 0000000000..5a06f3b0c6 --- /dev/null +++ b/scripts/quest/29900.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 + Description: Quest - Beginner Adventurer + Quest ID : 29900 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (qm.forceStartQuest()) qm.showInfoText("You have earned the title. You can receive a Medal from NPC Dalair."); + qm.dispose(); +} + + +function end(mode, type, selection) { + status++; + if (mode != 1) + qm.dispose(); + else { + if (status == 0) + qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142107:# #t1142107# 1"); + else if (status == 1) { + if (qm.canHold(1142107)) { + qm.gainItem(1142107); + qm.forceCompleteQuest(); + } else + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + + qm.dispose(); + } + } + +} \ No newline at end of file diff --git a/scripts/quest/29901.js b/scripts/quest/29901.js new file mode 100644 index 0000000000..91f9acb3d4 --- /dev/null +++ b/scripts/quest/29901.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 + Description: Quest - Junior Adventurer + Quest ID : 29901 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (qm.forceStartQuest()) qm.showInfoText("You have earned the title. You can receive a Medal from NPC Dalair."); + qm.dispose(); +} + + +function end(mode, type, selection) { + status++; + if (mode != 1) + qm.dispose(); + else { + if (status == 0) + qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142108:# #t1142108# 1"); + else if (status == 1) { + if (qm.canHold(1142108)) { + qm.gainItem(1142108); + qm.forceCompleteQuest(); + } else + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + + qm.dispose(); + } + } + +} \ No newline at end of file diff --git a/scripts/quest/29902.js b/scripts/quest/29902.js new file mode 100644 index 0000000000..144dea0f8c --- /dev/null +++ b/scripts/quest/29902.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 + Description: Quest - Veteran Adventurer + Quest ID : 29902 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (qm.forceStartQuest()) qm.showInfoText("You have earned the title. You can receive a Medal from NPC Dalair."); + qm.dispose(); +} + + +function end(mode, type, selection) { + status++; + if (mode != 1) + qm.dispose(); + else { + if (status == 0) + qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142109:# #t1142109# 1"); + else if (status == 1) { + if (qm.canHold(1142109)) { + qm.gainItem(1142109); + qm.forceCompleteQuest(); + } else + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + + qm.dispose(); + } + } + +} \ No newline at end of file diff --git a/scripts/quest/29903.js b/scripts/quest/29903.js new file mode 100644 index 0000000000..9b29ae4a02 --- /dev/null +++ b/scripts/quest/29903.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : kevintjuh93 + Description: Quest - Master Adventurer + Quest ID : 29903 +*/ + +var status = -1; + +function start(mode, type, selection) { + if (qm.forceStartQuest()) qm.showInfoText("You have earned the title. You can receive a Medal from NPC Dalair."); + qm.dispose(); +} + + +function end(mode, type, selection) { + status++; + if (mode != 1) + qm.dispose(); + else { + if (status == 0) + qm.sendNext("Congratulations on earning your honorable #b#k title. I wish you the best of luck in your future endeavors! Keep up the good work.\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n #v1142110:# #t1142110# 1"); + else if (status == 1) { + if (qm.canHold(1142110)) { + qm.gainItem(1142110); + qm.forceCompleteQuest(); + } else + qm.sendNext("Please make room in your inventory");//NOT GMS LIKE + + qm.dispose(); + } + } + +} \ No newline at end of file diff --git a/scripts/quest/29906.js b/scripts/quest/29906.js new file mode 100644 index 0000000000..37661b120a --- /dev/null +++ b/scripts/quest/29906.js @@ -0,0 +1,15 @@ +function start(mode, type, selection) { + if (qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() < 2000) { + qm.forceStartQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142066) && !qm.hasItem(1142066) && (qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() < 2000)) { + qm.gainItem(1142066,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29907.js b/scripts/quest/29907.js new file mode 100644 index 0000000000..5bee23d4d6 --- /dev/null +++ b/scripts/quest/29907.js @@ -0,0 +1,18 @@ + +var status = -1; + +function start(mode, type, selection) { + if ((qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() < 2000) && qm.getPlayer().getJob().getId() % 100 == 10) { + qm.forceStartQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142067) && !qm.haveItem(1142067) && qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() % 100 > 0 && qm.getPlayer().getJob().getId() < 2000) { + qm.gainItem(1142067,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29908.js b/scripts/quest/29908.js new file mode 100644 index 0000000000..b988a6c249 --- /dev/null +++ b/scripts/quest/29908.js @@ -0,0 +1,18 @@ + +var status = -1; + +function start(mode, type, selection) { + if (qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() % 10 > 0 && qm.getPlayer().getJob().getId() < 2000) { + qm.forceStartQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142068) && !qm.haveItem(1142068) && qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() % 10 > 0 && qm.getPlayer().getJob().getId() < 2000) { + qm.gainItem(1142068,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29909.js b/scripts/quest/29909.js new file mode 100644 index 0000000000..4b9e11eb97 --- /dev/null +++ b/scripts/quest/29909.js @@ -0,0 +1,18 @@ + +var status = -1; + +function start(mode, type, selection) { + if (qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() % 10 > 1 && qm.getPlayer().getJob().getId() < 2000) { + qm.forceStartQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142069) && !qm.haveItem(1142069) && qm.getPlayer().getJob().getId() > 1000 && qm.getPlayer().getJob().getId() % 10 > 1 && qm.getPlayer().getJob().getId() < 2000) { + qm.gainItem(1142069,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29924.js b/scripts/quest/29924.js new file mode 100644 index 0000000000..84c9c0010e --- /dev/null +++ b/scripts/quest/29924.js @@ -0,0 +1,20 @@ + +var status = -1; + +function start(mode, type, selection) { + if (qm.canHold(1142129) && !qm.haveItem(1142129) && qm.getPlayer().getLevel() >= 10 && ((qm.getPlayer().getJob().getId() / 100) | 0) == 21) { + qm.gainItem(1142129,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142129) && !qm.haveItem(1142129) && qm.getPlayer().getLevel() >= 10 && ((qm.getPlayer().getJob().getId() / 100) | 0) == 21) { + qm.gainItem(1142129,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29925.js b/scripts/quest/29925.js new file mode 100644 index 0000000000..0c1dfe868e --- /dev/null +++ b/scripts/quest/29925.js @@ -0,0 +1,20 @@ + +var status = -1; + +function start(mode, type, selection) { + if (qm.canHold(1142130) && !qm.haveItem(1142130,1) && qm.getPlayer().getLevel() >= 30 && ((qm.getPlayer().getJob() / 100) | 0) == 21) { + qm.gainItem(1142130,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142130) && !qm.haveItem(1142130,1) && qm.getPlayer().getLevel() >= 30 && ((qm.getPlayer().getJob() / 100) | 0) == 21) { + qm.gainItem(1142130,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29926.js b/scripts/quest/29926.js new file mode 100644 index 0000000000..5f89f981d8 --- /dev/null +++ b/scripts/quest/29926.js @@ -0,0 +1,20 @@ + +var status = -1; + +function start(mode, type, selection) { + if (qm.canHold(1142131) && !qm.haveItem(1142131,1) && qm.getPlayer().getLevel() >= 70 && ((qm.getPlayer().getJob() / 100) | 0) == 21) { + qm.gainItem(1142131,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142131) && !qm.haveItem(1142131,1) && qm.getPlayer().getLevel() >= 70 && ((qm.getPlayer().getJob() / 100) | 0) == 21) { + qm.gainItem(1142131,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/29928.js b/scripts/quest/29928.js new file mode 100644 index 0000000000..16170cf73c --- /dev/null +++ b/scripts/quest/29928.js @@ -0,0 +1,20 @@ + +var status = -1; + +function start(mode, type, selection) { + if (qm.canHold(1142133) && !qm.haveItem(1142133,1) && qm.getPlayer().getLevel() >= 200 && ((qm.getPlayer().getJob() / 100) | 0) == 21) { + qm.gainItem(1142133,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} + +function end(mode, type, selection) { + if (qm.canHold(1142133) && !qm.haveItem(1142133,1) && qm.getPlayer().getLevel() >= 200 && ((qm.getPlayer().getJob() / 100) | 0) == 21) { + qm.gainItem(1142133,1); + qm.forceStartQuest(); + qm.forceCompleteQuest(); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3239.js b/scripts/quest/3239.js new file mode 100644 index 0000000000..3ddb3f7084 --- /dev/null +++ b/scripts/quest/3239.js @@ -0,0 +1,30 @@ +importPackage(Packages.tools); + +function end(mode, type, selection) { + var rnd; + + if (mode != 1) { + qm.dispose(); + } else { + if(qm.haveItem(4031092, 10)) { + if(qm.canHold(4031092)) { + qm.sendOk("Well done! You brought back all the #t4031092# the were missing. Here, get this scroll as a token of my gratitude..."); + qm.gainItem(4031092, -10); + + rnd = Math.floor(Math.random() * 4); + if(rnd == 0) qm.gainItem(2040704, 1); + else if(rnd == 1) qm.gainItem(2040705, 1); + else if(rnd == 2) qm.gainItem(2040707, 1); + else qm.gainItem(2040708, 1); + + qm.gainExp(2700 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + else { + qm.sendOk("Free a space on your USE inventory before receiving your prize."); + } + } + + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/3301.js b/scripts/quest/3301.js new file mode 100644 index 0000000000..5d1c8747b5 --- /dev/null +++ b/scripts/quest/3301.js @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + NPC Name: Han the Broker + Map(s): Magatia + Description: Quest - Test from the Head of Zenumist Society +*/ + +var status = -1; +var oreArray; + +function start(mode, type, selection) { +} + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + oreArray = getOreArray(); + if (status == -1) { + if (oreArray.length > 0) { + status++; + qm.sendSimple("Oh, looks like someone's ready to make a deal. You want to join Zenumist so badly, huh? I really don't understand you, but that's just fine. What will you give me in return?\r\n" + getOreString(oreArray)); + } else { + qm.sendOk("What is this, you don't have the ores with you. No ore, no deal."); + qm.dispose(); + } + } else if (status == 0) { + qm.gainItem(oreArray[selection], -2); // Take 2 ores + qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Zanumist."); + qm.forceCompleteQuest(); + qm.dispose(); + } else { + qm.dispose(); + } + } +} + +function getOreArray() { + var ores = new Array(); + var y = 0; + for (var x = 4020000; x <= 4020008; x++) { + if (qm.haveItem(x, 2)) { + ores[y] = x; + y++; + } + } + return ores; +} + +function getOreString(ids) { // Parameter 'ids' is just the array of getOreArray() + var thestring = "#b"; + var extra; + for (x = 0; x < ids.length; x++) { + extra = "#L" + x + "##t" + ids[x] + "##l\r\n"; + thestring += extra; + } + thestring += "#k"; + return thestring; +} diff --git a/scripts/quest/3303.js b/scripts/quest/3303.js new file mode 100644 index 0000000000..792a352030 --- /dev/null +++ b/scripts/quest/3303.js @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + NPC Name: Han the Broker + Map(s): Magatia + Description: Quest - Test from the Head of Alcadno Society +*/ + +var status = -1; +var oreArray; + +function start(mode, type, selection) { +} + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + oreArray = getOreArray(); + if (status == -1) { + if (oreArray.length > 0) { + status++; + qm.sendSimple("Oh, looks like someone's ready to make a deal. You want to join Alcadno so badly, huh? I really don't understand you, but that's just fine. What will you give me in return?\r\n" + getOreString(oreArray)); + } else { + qm.sendOk("What is this, you don't have the ores with you. No ore, no deal."); + qm.dispose(); + } + } else if (status == 0) { + qm.gainItem(oreArray[selection], -2); // Take 2 ores + qm.sendNext("Then wait for awhile. I'll go and get the stuff to help you pass the test of Chief Alcadno."); + qm.forceCompleteQuest(); + qm.dispose(); + } else { + qm.dispose(); + } + } +} + +function getOreArray() { + var ores = new Array(); + var y = 0; + for (var x = 4020000; x <= 4020008; x++) { + if (qm.haveItem(x, 2)) { + ores[y] = x; + y++; + } + } + return ores; +} + +function getOreString(ids) { // Parameter 'ids' is just the array of getOreArray() + var thestring = "#b"; + var extra; + for (x = 0; x < ids.length; x++) { + extra = "#L" + x + "##t" + ids[x] + "##l\r\n"; + thestring += extra; + } + thestring += "#k"; + return thestring; +} diff --git a/scripts/quest/3360.js b/scripts/quest/3360.js new file mode 100644 index 0000000000..b967ba6a21 --- /dev/null +++ b/scripts/quest/3360.js @@ -0,0 +1,76 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + NPC Name: Parwen + Description: Quest - Verifying the password +*/ +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) { + status++; + } else { + qm.sendNext("Come on, hurry up. Get your pen and paper out if you're not that smart!"); + qm.dispose(); + return; + } + + if (status == 0) { + qm.sendNext("Oh! Finally you have come! I'm glad you are here in time. I have the master key for you to open the secert passage! Hahahaha! Isn't it amazing? Say it amazing!"); + } else if (status == 1) { + qm.sendAcceptDecline("All right, now, this key is very long and complex. I need you to memorize it very well. I won't say again, so you'd better write it down somewhere. Are you ready?"); + } else if (status == 2) { + var pass = generateString(); + qm.sendOk("The key code is #b"+pass+"#k. Got that? Put the key into the door of the secret passage, and you will be able to walk around the passage freely."); + qm.forceStartQuest(pass); + qm.dispose(); + } + } +} + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + qm.dispose(); + } + } +} + +function generateString() { + var thestring = ""; + var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + var rnum; + for (var i = 0; i < 10; i++) { + rnum = Math.floor(Math.random() * chars.length); + thestring += chars.substring(rnum, rnum+1); + } + return thestring; +} diff --git a/scripts/quest/3414.js b/scripts/quest/3414.js new file mode 100644 index 0000000000..acd2aa4e76 --- /dev/null +++ b/scripts/quest/3414.js @@ -0,0 +1,52 @@ +importPackage(Packages.client); + +var item; +var stance; +var status = -1; +var vecItem; + +function end(mode, type, selection) { + if(mode == 0) { + qm.dispose(); + return; + } + status++; + + if(status == 0) { + qm.sendNext("Whoa... this is it!!! With this sample, the studies that are taking place in Omega Sector will be reinvigorated with results! I am also at a loss for words for finding someone that is more talented than me at hunting. I'll have to get back on track! Anyway, for your job well done, I'll have to reward you accordingly."); + } + + else if(status == 1) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.USE).getNumFreeSlot() < 1) { + qm.getPlayer().dropMessage(1, "USE inventory full."); + qm.dispose(); + return; + } + + var talkStr = "Here, please select the scroll of your choice. All success rates are at 10%. \r\n\r\n#rSELECT A ITEM\r\n#b" + stance = qm.getPlayer().getJobStyle(); + + if(stance == Packages.client.MapleJob.WARRIOR || stance == Packages.client.MapleJob.BEGINNER) vecItem = new Array(2043002, 2043102, 2043202, 2044002, 2044102, 2044202, 2044402, 2044302); + else if(stance == Packages.client.MapleJob.MAGICIAN) vecItem = new Array(2043702, 2043802); + else if(stance == Packages.client.MapleJob.BOWMAN || stance == Packages.client.MapleJob.CROSSBOWMAN) vecItem = new Array(2044502, 2044602); + else if(stance == Packages.client.MapleJob.THIEF) vecItem = new Array(2043302, 2044702); + else vecItem = new Array(2044802, 2044902); + + for (var i = 0; i < vecItem.length; i++) + talkStr += "\r\n#L" + i + "# #i" + vecItem[i] + "# #t" + vecItem[i] + "#"; + qm.sendSimple(talkStr); + } + + else if(status == 2) { + item = vecItem[selection]; + qm.gainItem(item, 1); + qm.gainItem(4031103, -1); + qm.gainItem(4031104, -1); + qm.gainItem(4031105, -1); + qm.gainItem(4031106, -1); + qm.gainExp(12000 * qm.getPlayer().getExpRate()); + qm.completeQuest(); + + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/3414_free10rate.js b/scripts/quest/3414_free10rate.js new file mode 100644 index 0000000000..fa84eab33f --- /dev/null +++ b/scripts/quest/3414_free10rate.js @@ -0,0 +1,45 @@ +importPackage(Packages.client); + +var item; +var stance; +var status = -1; +var vecItem; + +function end(mode, type, selection) { + if(mode == 0) { + qm.dispose(); + return; + } + status++; + + if(status == 0) { + qm.sendNext("Whoa... this is it!!! With this sample, the studies that are taking place in Omega Sector will be reinvigorated with results! I am also at a loss for words for finding someone that is more talented than me at hunting. I'll have to get back on track! Anyway, for your job well done, I'll have to reward you accordingly."); + } + + else if(status == 1) { + var talkStr = "Here, please select the scroll of your choice. All success rates are at 10%. \r\n\r\n#rSELECT A ITEM\r\n#b" + stance = qm.getPlayer().getJobStyle(); + + if(stance == Packages.client.MapleJob.WARRIOR || stance == Packages.client.MapleJob.BEGINNER) vecItem = new Array(2043002, 2043102, 2043202, 2044002, 2044102, 2044202, 2044402, 2044302); + else if(stance == Packages.client.MapleJob.MAGICIAN) vecItem = new Array(2043702, 2043802); + else if(stance == Packages.client.MapleJob.BOWMAN || stance == Packages.client.MapleJob.CROSSBOWMAN) vecItem = new Array(2044502, 2044602); + else if(stance == Packages.client.MapleJob.THIEF) vecItem = new Array(2043302, 2044702); + else vecItem = new Array(2044802, 2044902); + + for (var i = 0; i < vecItem.length; i++) + talkStr += "\r\n#L" + i + "# #i" + vecItem[i] + "# #t" + vecItem[i] + "#"; + qm.sendSimple(talkStr); + } + + else if(status == 2) { + item = vecItem[selection]; + item = qm.gainItem(item, 1); + + if (item != null) { + qm.gainExp(12000); + qm.completeQuest(); + } + + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/3437.js b/scripts/quest/3437.js new file mode 100644 index 0000000000..986e7f591e --- /dev/null +++ b/scripts/quest/3437.js @@ -0,0 +1,49 @@ +importPackage(Packages.client); + +var item; +var stance; +var status = -1; +var item; + +function end(mode, type, selection) { + if(mode == 0) { + qm.dispose(); + return; + } + status++; + + if(status == 0) { + qm.sendNext("What the? Are you telling me you've already taken out 150 #o4230120#s? And these ... yes, these really are 120 #t4000122#s. I was wondering how you were going to complete this mission all by yourself, but you took care of it just fine. Alright, here ... this is a very important item for me, but please take it."); + } + + else if(status == 1) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.EQUIP).getNumFreeSlot() < 1) { + qm.sendOk("Please free a EQUIP inventory slot to receive the reward."); + qm.dispose(); + return; + } + + var talkStr = "Do you like the glove? I've kept this for a while, and I was planning on using it someday, but it looks much better on you. Please put it to good use; besides, I got so much stuff from the Sector, that I don't need it anymore."; + stance = qm.getPlayer().getJobStyle(); + + if(stance == Packages.client.MapleJob.WARRIOR) item = 1082024; + else if(stance == Packages.client.MapleJob.MAGICIAN) item = 1082063; + else if(stance == Packages.client.MapleJob.BOWMAN || stance == Packages.client.MapleJob.CROSSBOWMAN) item = 1082072; + else if(stance == Packages.client.MapleJob.THIEF) item = 1082076; + else if(stance == Packages.client.MapleJob.BRAWLER || stance == Packages.client.MapleJob.GUNSLINGER) item = 1082195; + else item = 1082149; + + qm.sendNext(talkStr); + } + + if(status == 2) { + qm.gainItem(item, 1); + qm.gainItem(4000122, -120); + + qm.gainExp(6100 * qm.getPlayer().getExpRate()); + qm.completeQuest(); + + qm.sendOk("Thank you so much for fulfilling your missions as one of the Mesorangers. I've told the Sector about your successful story, and the Sector seems to be very pleased with you, too. Hopefully you'll keep working with us. Bye~"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/3452.js b/scripts/quest/3452.js new file mode 100644 index 0000000000..82c02a1ab2 --- /dev/null +++ b/scripts/quest/3452.js @@ -0,0 +1,28 @@ +importPackage(Packages.tools); + +var status = -1; + +function end(mode, type, selection) { + status++; + if (mode != 1) { + qm.dispose(); + } + else { + if (status == 0) { + qm.sendNext("Take these #bMana Elixir Pills#k as a token of my gratitude."); + } + else if (status == 1) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.USE).getNumFreeSlot() >= 1) { + qm.gainItem(4000099, -1); + qm.gainItem(2000011, 50); + qm.gainExp(8000); + qm.forceCompleteQuest(); + } + else { + qm.sendNext("Hm? It looks like your inventory is full."); + } + + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/3514.js b/scripts/quest/3514.js new file mode 100644 index 0000000000..70e0a29e17 --- /dev/null +++ b/scripts/quest/3514.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * The sorcerer who sells emotions +*/ + +function end(mode, type, selection) { + if(qm.haveItem(2022337)) { + qm.sendOk("Are you scared to drink the potion? I can assure you it's only a minor #rside effect#k."); + } else { + qm.sendOk("It seems the potion worked and your emotions are no longer frozen."); + qm.completeQuest(3514); + } + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3523.js b/scripts/quest/3523.js new file mode 100644 index 0000000000..1ed260e28e --- /dev/null +++ b/scripts/quest/3523.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * In search for the lost memory - warrior +*/ + +function start(mode, type, selection) { + qm.startQuest(); + qm.getPlayer().updateQuestInfo(3507, 1); + qm.completeQuest(); + qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3524.js b/scripts/quest/3524.js new file mode 100644 index 0000000000..c06b98f18e --- /dev/null +++ b/scripts/quest/3524.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * In search for the lost memory - mage +*/ + +function start(mode, type, selection) { + qm.startQuest(); + qm.getPlayer().updateQuestInfo(3507, 1); + qm.completeQuest(); + qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3525.js b/scripts/quest/3525.js new file mode 100644 index 0000000000..8d7f0a7d42 --- /dev/null +++ b/scripts/quest/3525.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * In search for the lost memory - bowman +*/ + +function start(mode, type, selection) { + qm.startQuest(); + qm.getPlayer().updateQuestInfo(3507, 1); + qm.completeQuest(); + qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3526.js b/scripts/quest/3526.js new file mode 100644 index 0000000000..0519eb59f2 --- /dev/null +++ b/scripts/quest/3526.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * In search for the lost memory - thief +*/ + +function start(mode, type, selection) { + qm.startQuest(); + qm.getPlayer().updateQuestInfo(3507, 1); + qm.completeQuest(); + qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3527.js b/scripts/quest/3527.js new file mode 100644 index 0000000000..e6176463f3 --- /dev/null +++ b/scripts/quest/3527.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * In search for the lost memory - pirate +*/ + +function start(mode, type, selection) { + qm.startQuest(); + qm.getPlayer().updateQuestInfo(3507, 1); + qm.completeQuest(); + qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3539.js b/scripts/quest/3539.js new file mode 100644 index 0000000000..e6176463f3 --- /dev/null +++ b/scripts/quest/3539.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: PurpleMadness + * In search for the lost memory - pirate +*/ + +function start(mode, type, selection) { + qm.startQuest(); + qm.getPlayer().updateQuestInfo(3507, 1); + qm.completeQuest(); + qm.sendOk("You have regained your memories and are now allowed to go to #m270020000#."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/quest/3833.js b/scripts/quest/3833.js new file mode 100644 index 0000000000..b7d8fabf9f --- /dev/null +++ b/scripts/quest/3833.js @@ -0,0 +1,62 @@ +importPackage(Packages.tools); + +var status = -1; + +function end(mode, type, selection) { + status++; + if (mode != 1) { + qm.dispose(); + } else { + if (status == 0) { + qm.sendOk("Great! You managed to get the herb I need. As a #btoken of gratitude#k, take this item to help on your journey."); + } else if (status == 1) { + if(qm.getPlayer().getInventory(Packages.client.inventory.MapleInventoryType.USE).getNumFreeSlot() >= 2) { + if(qm.haveItem(4000294, 1000)) { + qm.gainItem(4000294, -1000); + qm.gainItem(2040501, 1); + qm.gainItem(2000005, 50); + qm.gainExp(54000 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + + else if(qm.haveItem(4000294, 600)) { + qm.gainItem(4000294, -600); + qm.gainItem(2020013, 50); + qm.gainExp(54000 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + + else if(qm.haveItem(4000294, 500)) { + qm.gainItem(4000294, -500); + qm.gainExp(54000 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + + else if(qm.haveItem(4000294, 100)) { + qm.gainItem(4000294, -100); + qm.gainExp(45000 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + + else if(qm.haveItem(4000294, 50)) { + qm.gainItem(4000294, -50); + qm.gainItem(2020007, 50); + qm.gainExp(10000 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + + else if(qm.haveItem(4000294, 1)) { + qm.gainItem(4000294, -1); + qm.gainItem(2000000, 1); + qm.gainExp(10 * qm.getPlayer().getExpRate()); + qm.forceCompleteQuest(); + } + } + else { + qm.sendOk("Could you make #b2 slots available#k on your USE inventory before receiving your reward?"); + } + + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/4647.js b/scripts/quest/4647.js new file mode 100644 index 0000000000..e0930e6936 --- /dev/null +++ b/scripts/quest/4647.js @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +* +* @author Blue +*/ + +var status = -1; + +function start(mode, type, selection) { + qm.dispose(); +} + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if(qm.haveItem(5460000)) { + qm.sendOk("You got the Pet Snack! Thanks! You can use these to feed multiple pets at once!"); + qm.teachSkill(0008, 1, 1); + qm.gainItem(5460000, -1, false); + qm.completeQuest(); + qm.dispose(); + } else { + qm.sendOk("Get me the Pet Snack! It can be found in a very big shop...."); + qm.dispose(); + } + } else { + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/4659.js b/scripts/quest/4659.js new file mode 100644 index 0000000000..e83f82e675 --- /dev/null +++ b/scripts/quest/4659.js @@ -0,0 +1,109 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Moogra + NPC Name: ????????????? + Map(s): New Leaf City + Description: Quest - Pet Evolution +*/ +importPackage(Packages.client); +importPackage(Packages.server); + +var status = -1; + +function start(mode, type, selection) { +//nothing here? +} + +function end(mode, type, selection) { + status++; + if (mode != 1) { + if(type == 1 && mode == 0) + status -= 2; + else{ + qm.dispose(); + return; + } + } + if (status == 0) { + if(qm.getMeso() < 10000) { + qm.sendOk("Hey! I need #b10,000 mesos#k to do your pet's evolution!"); + qm.dispose(); + return; + } + qm.sendNext("Great job on finding your evolution materials. I will now give you a robot."); + } + else if (status == 1) { + if (qm.isQuestCompleted(4659)) + qm.dropMessage(1, "how did this get here?"); + else if (qm.canHold(5000048)){ + var pet = 0; + var after; + var i; + + for(i = 0; i < 3; i++) { + if(qm.getPlayer().getPet(i) != null && qm.getPlayer().getPet(i).getItemId() == 5000048) { + pet = qm.getPlayer().getPet(i); + break; + } + } + if(i == 3) { + qm.getPlayer().message("Pet could not be evolved."); + qm.dispose(); + return; + } + + var closeness = pet.getCloseness(); + var level = pet.getLevel(); + var fullness = pet.getFullness(); + var name = pet.getName(); + + var rand = 1 + Math.floor(Math.random() * 9); + + if (rand >= 1 && rand <= 2) { + after = 5000049; + } else if (rand >= 3 && rand <= 4) { + after = 5000050; + } else if (rand >= 5 && rand <= 6) { + after = 5000051; + } else if (rand >= 7 && rand <= 8) { + after = 5000052; + } else if (rand == 9) { + after = 5000053; + } else { + qm.sendOk("Something wrong. Try again."); + qm.dispose(); + return; + } + + //qm.gainItem(5000048 + rand); + qm.gainItem(5380000, -1); + qm.gainMeso(-10000); + + qm.evolvePet(i, after); +// var petId = MaplePet.createPet(rand + 5000049, level, closeness, fullness); +// if (petId == -1) return; +// MapleInventoryManipulator.addById(qm.getClient(), rand+5000049, 1, null, petId); + } else + qm.dropMessage(1,"Your inventory is full"); + qm.dispose(); + } +} \ No newline at end of file diff --git a/scripts/quest/8185.js b/scripts/quest/8185.js new file mode 100644 index 0000000000..f3629d5ae7 --- /dev/null +++ b/scripts/quest/8185.js @@ -0,0 +1,106 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Blue + Name: Garnox + Map(s): New Leaf City : Town Center + Description: Quest - Pet Evolution2 +*/ + +importPackage (Packages.net.server.channel.handlers); + +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if(qm.getMeso() < 10000) { + qm.sendOk("Hey! I need #b10,000 mesos#k to do your pet's evolution!"); + qm.dispose(); + return; + } + + qm.sendNextPrev("#e#bHey, you did it!#n#k \r\n#rWow!#k Now I could complete my studies on your pet!"); + } else if (status == 1) { + if (mode == 0) { + qm.sendOk("I see... Come back when you wish to do it. I'm really excited to do this."); + qm.dispose(); + } else { + qm.sendNextPrev("Just saying, your new dragon's color is gonna be #e#rrandom#k#n! It's either gonna be #ggreen, #bblue, #rred, #dor very rarely#k, black. \r\n\r\n#fUI/UIWindow.img/QuestIcon/5/0# \r\n\r If you happen to not like your pet's new color, or if you ever wish to change your pet color again, #eyou can change it!#n Simply just #dbuy another Rock of Evolution, 10,000 mesos, #kand #dequip your new pet#k before talking to me again, but of course, I cannot return your pet as a baby dragon, only to another adult dragon."); + } + } else if (status == 2) { + qm.sendYesNo("Now let me try to evolve your pet. You ready? Wanna see your cute baby dragon turn into either a matured dark black, blue, calm green, or fiery red adult dragon? It'll still have the same closeness, level, name, fullness, hunger, and equipment in case you're worried. \r\n\r #b#eDo you wish to continue or do you have some last-minute things to do first?#k#n"); + } else if (status == 3) { + qm.sendNextPrev("Alright, here we go...! #rHYAHH!#k"); + } else if (status == 4) { + var rand = 1 + Math.floor(Math.random() * 10); + var after = 0; + var i = 0; + + for(i = 0; i < 3; i++) { + if(qm.getPlayer().getPet(i) != null && qm.getPlayer().getPet(i).getItemId() == 5000029) { + var pet = qm.getPlayer().getPet(i); + break; + } + } + if(i == 3) { + qm.getPlayer().message("Pet could not be evolved."); + qm.dispose(); + return; + } + + + if (rand >= 1 && rand <= 3) { + after = 5000030; + } else if (rand >= 4 && rand <= 6) { + after = 5000031; + } else if (rand >= 7 && rand <= 9) { + after = 5000032; + } else if (rand == 10) { + after = 5000033; + } else { + qm.sendOk("Something wrong. Try again."); + qm.dispose(); + return; + } + + /* if (name.equals(MapleItemInformationProvider.getInstance().getName(id))) { + name = MapleItemInformationProvider.getInstance().getName(after); + } */ + + //qm.unequipPet(qm.getC()); + qm.gainItem(5380000, -1); + qm.gainMeso(-10000); + qm.evolvePet(i, after); + + //SpawnPetHandler.evolve(qm.getPlayer().getClient(), 5000029, after); + + qm.sendOk("#bSWEET! IT WORKED!#k Your dragon has grown beautifully! #rYou may find your new pet under your 'CASH' inventory.\r #kIt used to be a #b #i5000029##t5000029##k, and now it's \r a #b#i" + after + "##t" + after + "##k!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v"+after+"# #t"+after+"#"); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/8189.js b/scripts/quest/8189.js new file mode 100644 index 0000000000..f14d596084 --- /dev/null +++ b/scripts/quest/8189.js @@ -0,0 +1,94 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Author: Blue + Name: Garnox + Map(s): New Leaf City : Town Center + Description: Quest - Pet Re-Evolution +*/ +importPackage(Packages.server); + +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if (mode == 1) + status++; + else + status--; + if (status == 0) { + if(qm.getMeso() < 10000) { + qm.sendOk("Hey! I need #b10,000 mesos#k to do your pet's re-evolution!"); + qm.dispose(); + return; + } + + qm.sendYesNo("Alright then, let's do this again, shall we? As usual, it's going to be random, and I'm going to take away one of your Rock of Evolutions. \r\n\r #r#eReady?#n#k"); + } else if (status == 1) { + qm.sendNextPrev("Then here we go...! #rHYAHH!#k"); + } else if (status == 2) { + var pet = 0; + if (qm.getPlayer().getPet(0).getItemId() >= 5000029 && qm.getPlayer().getPet(0).getItemId() <= 5000033) { + var pet = 0; + } else if (qm.getPlayer().getPet(1).getItemId() >= 5000029 && qm.getPlayer().getPet(1).getItemId() <= 5000033) { + var pet = 1; + } else if (qm.getPlayer().getPet(2).getItemId() >= 5000029 && qm.getPlayer().getPet(2).getItemId() <= 5000033) { + var pet = 2; + } else { + qm.sendOk("Something wrong, try again."); + qm.dispose(); + return; + } + var id = qm.getPlayer().getPet(pet).getItemId(); + if (id < 5000029 || id > 5000033) { + qm.sendOk("Something wrong, try again."); + qm.dispose(); + } + var rand = 1 + Math.floor(Math.random() * 10); + var after = 0; + if (rand >= 1 && rand <= 3) { + after = 5000030; + } else if (rand >= 4 && rand <= 6) { + after = 5000031; + } else if (rand >= 7 && rand <= 9) { + after = 5000032; + } else if (rand == 10) { + after = 5000033; + } else { + qm.sendOk("Something wrong. Try again."); + qm.dispose(); + } + + /*if (name.equals(MapleItemInformationProvider.getInstance().getName(id))) { + name = MapleItemInformationProvider.getInstance().getName(after); + } */ + + qm.gainMeso(-10000); + qm.gainItem(5380000, -1); + qm.evolvePet(pet, after); + + qm.sendOk("Woo! It worked again! #rYou may find your new pet under your 'CASH' inventory.\r #kIt used to be a #b#i" + id + "##t" + id + "##k, and now it's \r a#b #i" + after + "##t" + after + "##k! \r\n Come back with 10,000 mesos and another Rock of Evolution if you don't like it!\r\n\r\n#fUI/UIWindow.img/QuestIcon/4/0#\r\n#v"+after+"# #t"+after+"#"); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/8248.js b/scripts/quest/8248.js new file mode 100644 index 0000000000..510827acf5 --- /dev/null +++ b/scripts/quest/8248.js @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + Author : Blue + NPC Name: Maple 7th Day Market Chick + Map(s): Everywhere + Description: Quest - Maple 7th Day Market + Quest ID: 8248 +*/ + +function start(mode, type, selection) { + qm.forceStartQuest(); + qm.forceCompleteQuest(); +} + +function end(mode, type, selection) { + qm.forceCompleteQuest(); +} \ No newline at end of file diff --git a/scripts/quest/unidentifiedQuest.js b/scripts/quest/unidentifiedQuest.js new file mode 100644 index 0000000000..cbeb9b83c0 --- /dev/null +++ b/scripts/quest/unidentifiedQuest.js @@ -0,0 +1,4 @@ +function start() { + qm.getPlayer().dropMessage("Quest: " + qm.getQuest() + " is not found, please report this."); + qm.dispose(); +} \ No newline at end of file diff --git a/scripts/reactor/1002008.js b/scripts/reactor/1002008.js new file mode 100644 index 0000000000..3cb8c5265c --- /dev/null +++ b/scripts/reactor/1002008.js @@ -0,0 +1,3 @@ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/1002009.js b/scripts/reactor/1002009.js new file mode 100644 index 0000000000..0c067cf268 --- /dev/null +++ b/scripts/reactor/1002009.js @@ -0,0 +1,3 @@ +function act() { + rm.dropItems(true, 2, 8, 15); +} \ No newline at end of file diff --git a/scripts/reactor/1012000.js b/scripts/reactor/1012000.js new file mode 100644 index 0000000000..d121c23f1b --- /dev/null +++ b/scripts/reactor/1012000.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 1012000.js: Ellinia Plant - drops meso, tree branches, red pots, and Plant Samples (quest item) +*/ + +function act() { + rm.dropItems(true, 2, 20, 40); +} \ No newline at end of file diff --git a/scripts/reactor/1022002.js b/scripts/reactor/1022002.js new file mode 100644 index 0000000000..cee0e0ad84 --- /dev/null +++ b/scripts/reactor/1022002.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Ronan + * + * 1022002.js: Construction Site North of Kerning City - Fire Hydrant +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/1050000.js b/scripts/reactor/1050000.js new file mode 100644 index 0000000000..910abbb8b8 --- /dev/null +++ b/scripts/reactor/1050000.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Crovy + * + * 1050000.js: Berserk 4th job quest rock - drops a shield or punts you from map. +*/ + +function act() { + if (Math.random() > 0.7) + rm.dropItems(); + else + rm.warp(105090200); +} \ No newline at end of file diff --git a/scripts/reactor/1072000.js b/scripts/reactor/1072000.js new file mode 100644 index 0000000000..73fa5c64c9 --- /dev/null +++ b/scripts/reactor/1072000.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * 1072000.js: Kerning Swamp Plant - drops Witchgrass Leaves +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/1102000.js b/scripts/reactor/1102000.js new file mode 100644 index 0000000000..a77931d4ae --- /dev/null +++ b/scripts/reactor/1102000.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 1102000.js: Florina Beach Coconut - drops a coconut +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/1102001.js b/scripts/reactor/1102001.js new file mode 100644 index 0000000000..88d1f4dbf5 --- /dev/null +++ b/scripts/reactor/1102001.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 1102001.js: Florina Beach Coconut - drops a coconut +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/1102002.js b/scripts/reactor/1102002.js new file mode 100644 index 0000000000..d356b78424 --- /dev/null +++ b/scripts/reactor/1102002.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 1102002.js: Florina Beach Coconut - drops a coconut +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/1209001.js b/scripts/reactor/1209001.js new file mode 100644 index 0000000000..043e73a235 --- /dev/null +++ b/scripts/reactor/1209001.js @@ -0,0 +1,3 @@ +function act() { + rm.dropItems(true, 2, 8, 15, 1); +} \ No newline at end of file diff --git a/scripts/reactor/1302000.js b/scripts/reactor/1302000.js new file mode 100644 index 0000000000..18e254a639 --- /dev/null +++ b/scripts/reactor/1302000.js @@ -0,0 +1,7 @@ +/* +Queen's Path : Forest of the Start 5 +*/ + +function act(){ + rm.dropItems(true, 2, 8, 12, 2); +} \ No newline at end of file diff --git a/scripts/reactor/1402000.js b/scripts/reactor/1402000.js new file mode 100644 index 0000000000..6a0dcfa603 --- /dev/null +++ b/scripts/reactor/1402000.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @Author kevintjuh93 +*/ + +function act() { + rm.dropItems(true, 2, 8, 15); +} \ No newline at end of file diff --git a/scripts/reactor/2000.js b/scripts/reactor/2000.js new file mode 100644 index 0000000000..c0ec407181 --- /dev/null +++ b/scripts/reactor/2000.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * 2000.js: Maple Island Box - drops various items, notably quest items Old Wooden Board and Rusty Screw +*/ + +function act() { + rm.dropItems(true, 2, 8, 15, 1); +} \ No newline at end of file diff --git a/scripts/reactor/2001.js b/scripts/reactor/2001.js new file mode 100644 index 0000000000..713f23b1bc --- /dev/null +++ b/scripts/reactor/2001.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk Hi :() + * + * 2001.js: Maple Island Box - drops various items, notably quest items Old Wooden Board and Rusty Screw +*/ + +function act() { + rm.dropItems(true, 2, 8, 15, 1); +} \ No newline at end of file diff --git a/scripts/reactor/2001000.js b/scripts/reactor/2001000.js new file mode 100644 index 0000000000..1c474cc07a --- /dev/null +++ b/scripts/reactor/2001000.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*@author Jvlaple + *Nependath Pot - Spawns Nependath or Dark Nependath + */ + +function act() { + rm.spawnMonster(Math.random() > .6 ? 9300049 : 9300048); +} \ No newline at end of file diff --git a/scripts/reactor/2002000.js b/scripts/reactor/2002000.js new file mode 100644 index 0000000000..11b90871ca --- /dev/null +++ b/scripts/reactor/2002000.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * 2002000.js: Orbis Box - drops meso, orange/white pots, and Empty Potion Bottles (quest item) +*/ + +function act() { + rm.dropItems(true, 2, 60, 80); +} \ No newline at end of file diff --git a/scripts/reactor/2002001.js b/scripts/reactor/2002001.js new file mode 100644 index 0000000000..14bd0318bc --- /dev/null +++ b/scripts/reactor/2002001.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*@author Jvlaple + *2002001.js + *Drops Cloud Piece... + */ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002002.js b/scripts/reactor/2002002.js new file mode 100644 index 0000000000..27fde2a57e --- /dev/null +++ b/scripts/reactor/2002002.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *OPQ Reactor - Drops 5th small piece + *@author Jvlaple + */ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002003.js b/scripts/reactor/2002003.js new file mode 100644 index 0000000000..3772693a1b --- /dev/null +++ b/scripts/reactor/2002003.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*2002003.js - Pot of life + *@author Jvlaple + */ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002004.js b/scripts/reactor/2002004.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002004.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002005.js b/scripts/reactor/2002005.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002005.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002006.js b/scripts/reactor/2002006.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002006.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002007.js b/scripts/reactor/2002007.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002007.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002008.js b/scripts/reactor/2002008.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002008.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002009.js b/scripts/reactor/2002009.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002009.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002010.js b/scripts/reactor/2002010.js new file mode 100644 index 0000000000..35aadc1b2f --- /dev/null +++ b/scripts/reactor/2002010.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * OPQ Lobby Reactor +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002011.js b/scripts/reactor/2002011.js new file mode 100644 index 0000000000..2045bbd6c9 --- /dev/null +++ b/scripts/reactor/2002011.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *OPQ Reactor - Drops 3rd Piece + *@author Jvlaple + */ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002012.js b/scripts/reactor/2002012.js new file mode 100644 index 0000000000..01f3076f93 --- /dev/null +++ b/scripts/reactor/2002012.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *OPQ Reactor - Drops 4th piece + *@author Jvlaple + */ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2002014.js b/scripts/reactor/2002014.js new file mode 100644 index 0000000000..4e6bb3b5b5 --- /dev/null +++ b/scripts/reactor/2002014.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*@author Jvlaple + *Reactor : Orbis PQ Bonus Reactor - 2002014.js + * Drops all the Bonus Items + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*@author Jvlaple + * Spawns Eak When 20 Clouds are Dropped. + *2006000.js + */ + +function act() { + rm.mapMessage(5, "As the light flickers, someone appears out of the light."); + rm.spawnNpc(2013001); +} \ No newline at end of file diff --git a/scripts/reactor/2006001.js b/scripts/reactor/2006001.js new file mode 100644 index 0000000000..c5adf0fd0f --- /dev/null +++ b/scripts/reactor/2006001.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *2006001.js - Spawns Minevra + *@author Jvlaple + */ + +function act() { + rm.spawnNpc(2013002); +} \ No newline at end of file diff --git a/scripts/reactor/2110000.js b/scripts/reactor/2110000.js new file mode 100644 index 0000000000..97bda41145 --- /dev/null +++ b/scripts/reactor/2110000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2110000.js: Zakum Party Quest Chest - action go280010000 +*/ + +function act(){ + rm.playerMessage(5, "An unknown force has returned you to the starting point."); + rm.warp(280010000); +} \ No newline at end of file diff --git a/scripts/reactor/2111000.js b/scripts/reactor/2111000.js new file mode 100644 index 0000000000..dce93be801 --- /dev/null +++ b/scripts/reactor/2111000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2111000.js: Zakum Party Quest Chest - summons 3 "Mimics" +*/ + +function act(){ + rm.playerMessage(5, "Oh noes! Monsters in the chest!"); + rm.spawnMonster(9300004,3); +} \ No newline at end of file diff --git a/scripts/reactor/2111001.js b/scripts/reactor/2111001.js new file mode 100644 index 0000000000..309ae2b9e7 --- /dev/null +++ b/scripts/reactor/2111001.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act() { + if(rm.getPlayer().getEventInstance() != null){ + rm.getPlayer().getEventInstance().setProperty("summoned", "true"); + rm.getPlayer().getEventInstance().setProperty("canEnter", "false"); + } + rm.changeMusic("Bgm06/FinalFight"); + rm.spawnFakeMonster(8800000); + for (i=8800003; i<8800011; i++) + rm.spawnMonster(i); + rm.createMapMonitor(280030000,"ps00"); + rm.mapMessage(5, "Zakum is summoned by the force of Eye of Fire."); +} diff --git a/scripts/reactor/2112000.js b/scripts/reactor/2112000.js new file mode 100644 index 0000000000..452b327e09 --- /dev/null +++ b/scripts/reactor/2112000.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112000.js: Zakum Party Quest Chest - drops an item (elixir) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112001.js b/scripts/reactor/2112001.js new file mode 100644 index 0000000000..bafeb2d765 --- /dev/null +++ b/scripts/reactor/2112001.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112001.js: Zakum Party Quest Chest - drops an item (fried chicken) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112003.js b/scripts/reactor/2112003.js new file mode 100644 index 0000000000..a03d81a8ec --- /dev/null +++ b/scripts/reactor/2112003.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112003.js: Zakum Party Quest Chest - drops an item (power elixir) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112004.js b/scripts/reactor/2112004.js new file mode 100644 index 0000000000..43abe5f150 --- /dev/null +++ b/scripts/reactor/2112004.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112004.js: Zakum Party Quest Chest - drops a key +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112005.js b/scripts/reactor/2112005.js new file mode 100644 index 0000000000..f1b68f0933 --- /dev/null +++ b/scripts/reactor/2112005.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112005.js: Zakum Party Quest Chest - drops a document +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112006.js b/scripts/reactor/2112006.js new file mode 100644 index 0000000000..17293a23a6 --- /dev/null +++ b/scripts/reactor/2112006.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112006.js: Zakum Party Quest Chest - drops an item (10k+ meso sack in Global) +*/ + +function act(){ + rm.dropItems(true, 1, 500, 800); +} \ No newline at end of file diff --git a/scripts/reactor/2112007.js b/scripts/reactor/2112007.js new file mode 100644 index 0000000000..07ba55ce11 --- /dev/null +++ b/scripts/reactor/2112007.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112007.js: Zakum Party Quest Rock - drops an item (red bean porridge) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112008.js b/scripts/reactor/2112008.js new file mode 100644 index 0000000000..a2caeb172c --- /dev/null +++ b/scripts/reactor/2112008.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112008.js: Zakum Party Quest Rock - drops an item (elixir) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112009.js b/scripts/reactor/2112009.js new file mode 100644 index 0000000000..431c01330a --- /dev/null +++ b/scripts/reactor/2112009.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112009.js: Zakum Party Quest Rock - drops an item (fried chicken) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112010.js b/scripts/reactor/2112010.js new file mode 100644 index 0000000000..e8a9c58dfb --- /dev/null +++ b/scripts/reactor/2112010.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112010.js: Zakum Party Quest Rock - drops an item (power elixir) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112011.js b/scripts/reactor/2112011.js new file mode 100644 index 0000000000..028d322b7b --- /dev/null +++ b/scripts/reactor/2112011.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112011.js: Zakum Party Quest Rock - drops a key +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112012.js b/scripts/reactor/2112012.js new file mode 100644 index 0000000000..ba291e30f3 --- /dev/null +++ b/scripts/reactor/2112012.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112012.js: Zakum Party Quest Rock - drops a document +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112013.js b/scripts/reactor/2112013.js new file mode 100644 index 0000000000..a988250045 --- /dev/null +++ b/scripts/reactor/2112013.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112013.js: Zakum Party Quest Rock - drops an item (~100 meso bundle in Global) +*/ + +function act(){ + rm.dropItems(true, 1, 125, 175); +} \ No newline at end of file diff --git a/scripts/reactor/2112014.js b/scripts/reactor/2112014.js new file mode 100644 index 0000000000..723ad07c70 --- /dev/null +++ b/scripts/reactor/2112014.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112014.js: Zakum Party Quest Giant Chest - drops a Fire Ore when 7 Keys are dropped in front of it +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112016.js b/scripts/reactor/2112016.js new file mode 100644 index 0000000000..34c51a2bee --- /dev/null +++ b/scripts/reactor/2112016.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112016.js: Phoenix Egg in El Nath Lava - part of the Phoenix quest (4th job Bowmaster) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2112017.js b/scripts/reactor/2112017.js new file mode 100644 index 0000000000..81d3ea4c0d --- /dev/null +++ b/scripts/reactor/2112017.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2112017.js: Frostprey Egg in El Nath Mountains - part of the Frostprey quest (4th job Marksman) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2119000.js b/scripts/reactor/2119000.js new file mode 100644 index 0000000000..f321108de8 --- /dev/null +++ b/scripts/reactor/2119000.js @@ -0,0 +1,24 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act() { + rm.spawnMonster(9400711, 1); +} \ No newline at end of file diff --git a/scripts/reactor/2200000.js b/scripts/reactor/2200000.js new file mode 100644 index 0000000000..abb0118f74 --- /dev/null +++ b/scripts/reactor/2200000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2200000.js: Fake Dollhouse: Returns player to Eos Tower 100th Floor [221023200] +*/ + +function act(){ + rm.playerMessage(5, "Gotcha! Try again next time!"); + rm.warp(221023200); +} \ No newline at end of file diff --git a/scripts/reactor/2200001.js b/scripts/reactor/2200001.js new file mode 100644 index 0000000000..7c8117f80f --- /dev/null +++ b/scripts/reactor/2200001.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2200001.js: Warps player into one of two Secret Factories + * +*/ + +function act(){ + rm.playerMessage(5,"You have found a secret factory!"); + rm.warp(Math.random() < .5 ? 922000020 : 922000021); +} \ No newline at end of file diff --git a/scripts/reactor/2200002.js b/scripts/reactor/2200002.js new file mode 100644 index 0000000000..e9cea88d2b --- /dev/null +++ b/scripts/reactor/2200002.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Stage 2 Box For LPQ + *@Author Jvlaple + */ + +function act(){ + rm.mapMessage(5, "An unknown force has warped you into a trap."); + rm.warpMap(922010201); +} \ No newline at end of file diff --git a/scripts/reactor/2201000.js b/scripts/reactor/2201000.js new file mode 100644 index 0000000000..822d0f2e11 --- /dev/null +++ b/scripts/reactor/2201000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2201000.js: Summons alternate Toy Trojans (no drops except for the Maintenance Manual quest item) + * +*/ + +function act(){ + rm.spawnMonster(9300011, 10); +} \ No newline at end of file diff --git a/scripts/reactor/2201001.js b/scripts/reactor/2201001.js new file mode 100644 index 0000000000..4cbda5e73a --- /dev/null +++ b/scripts/reactor/2201001.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*@Author Jvlaple + *2201001.js - 3 Blocktopus + */ + +function act() { + for (var i=0; i<3; i++) { + rm.spawnMonster(9300007); + } +} \ No newline at end of file diff --git a/scripts/reactor/2201002.js b/scripts/reactor/2201002.js new file mode 100644 index 0000000000..cd15c5cf2d --- /dev/null +++ b/scripts/reactor/2201002.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Ludi PQ Stage 7 Reactor - 2201002.js + *@Author Jvlaple + */ + +function act() { + rm.mapMessage(5, "Rombard has been summoned somewhere in the map."); + rm.spawnMonster(9300010, 1, -211); +} \ No newline at end of file diff --git a/scripts/reactor/2201003.js b/scripts/reactor/2201003.js new file mode 100644 index 0000000000..497069d9e9 --- /dev/null +++ b/scripts/reactor/2201003.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* Ludi PQ Crack Reactor ^_^ + *@Author Jvlaple + *2201003.js + */ + +function act() { + if (rm.getPlayer().getMapId() == 922010900) { + rm.mapMessage(5, "Alishar has been summoned."); + rm.spawnMonster(9300012, 941, 184); + } else if(rm.getPlayer().getMapId() == 922010700) { + rm.mapMessage(5, "Rombard has been summoned somewhere in the map."); + rm.spawnMonster(9300010, 1, -211); + } +} \ No newline at end of file diff --git a/scripts/reactor/2201004.js b/scripts/reactor/2201004.js new file mode 100644 index 0000000000..0381326ca0 --- /dev/null +++ b/scripts/reactor/2201004.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act(){ + rm.mapMessage(5, "The dimensional hole has been filled by the ."); + rm.changeMusic("Bgm09/TimeAttack"); + rm.spawnMonster(8500000, -410, -400); + rm.createMapMonitor(220080001,"in00"); +} \ No newline at end of file diff --git a/scripts/reactor/2202000.js b/scripts/reactor/2202000.js new file mode 100644 index 0000000000..b4689b48e7 --- /dev/null +++ b/scripts/reactor/2202000.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2202000.js: Real Dollhouse: Drops Pendulum (Quest Item) +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2202001.js b/scripts/reactor/2202001.js new file mode 100644 index 0000000000..add766f206 --- /dev/null +++ b/scripts/reactor/2202001.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2202001.js: Ludibirum Jump Quest Barrel: Drops item +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2202002.js b/scripts/reactor/2202002.js new file mode 100644 index 0000000000..d7bd70079d --- /dev/null +++ b/scripts/reactor/2202002.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Ronan + * + * 2202002.js: Box - Toy Factory + * +*/ + +function act(){ + rm.warp(922000009); +} \ No newline at end of file diff --git a/scripts/reactor/2202003.js b/scripts/reactor/2202003.js new file mode 100644 index 0000000000..ff27efc5fe --- /dev/null +++ b/scripts/reactor/2202003.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*2202003.js - Drops pass + *@Author Jvlaple + */ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2202004.js b/scripts/reactor/2202004.js new file mode 100644 index 0000000000..402482c624 --- /dev/null +++ b/scripts/reactor/2202004.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*@author Jvlaple + *Reactor : LudiPQ Bonus Reactor - 2202004.js + * Drops all the Bonus Items + */ + +function act() { + rand = Math.floor(Math.random() * 3); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * 2212000.js: Plateon Field reactors - Parts 2, Meso, White Pots +*/ + +function act(){ + rm.dropItems(true, 2, 80, 100); +} \ No newline at end of file diff --git a/scripts/reactor/2212001.js b/scripts/reactor/2212001.js new file mode 100644 index 0000000000..567cecaa75 --- /dev/null +++ b/scripts/reactor/2212001.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * 2212001.js: Mecateon Field reactors - Parts 1, Meso, White Pots + * +*/ + +function act(){ + rm.dropItems(true, 2, 80, 100); +} \ No newline at end of file diff --git a/scripts/reactor/2212002.js b/scripts/reactor/2212002.js new file mode 100644 index 0000000000..52526e0756 --- /dev/null +++ b/scripts/reactor/2212002.js @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * 2212002.js: Mateon Field reactors - Parts 3, Meso, White Pots + * +*/ + +function act(){ + rm.dropItems(true, 2, 80, 100); +} \ No newline at end of file diff --git a/scripts/reactor/2212003.js b/scripts/reactor/2212003.js new file mode 100644 index 0000000000..6ea101cdde --- /dev/null +++ b/scripts/reactor/2212003.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2212003.js: Dogon's HQ reactor - Dogon's Report, Meso + * +*/ + +function act(){ + rm.dropItems(true, 2, 80, 100); +} \ No newline at end of file diff --git a/scripts/reactor/2212004.js b/scripts/reactor/2212004.js new file mode 100644 index 0000000000..f8ba50960f --- /dev/null +++ b/scripts/reactor/2212004.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2212004.js: Silo reactor - Secret Document, Meso, Orange Pots + * +*/ + +function act(){ + rm.dropItems(true, 2, 80, 100); +} \ No newline at end of file diff --git a/scripts/reactor/2212005.js b/scripts/reactor/2212005.js new file mode 100644 index 0000000000..2b79bd12ff --- /dev/null +++ b/scripts/reactor/2212005.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2212005.js: Silo reactor - Gray's Document + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2221000.js b/scripts/reactor/2221000.js new file mode 100644 index 0000000000..840529b5fd --- /dev/null +++ b/scripts/reactor/2221000.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2221000.js: KFT Reactor - Yellow King Goblin + * +*/ + +function act(){ + rm.spawnMonster(7130400); + rm.mapMessage(5, "Here comes Yellow King Goblin!"); +} \ No newline at end of file diff --git a/scripts/reactor/2221001.js b/scripts/reactor/2221001.js new file mode 100644 index 0000000000..a2b32058e2 --- /dev/null +++ b/scripts/reactor/2221001.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2221001.js: KFT Reactor - Blue King Goblin + * +*/ + +function act(){ + rm.spawnMonster(7130401); + rm.mapMessage(5, "Here comes Blue King Goblin!"); +} \ No newline at end of file diff --git a/scripts/reactor/2221002.js b/scripts/reactor/2221002.js new file mode 100644 index 0000000000..2ba634e2d0 --- /dev/null +++ b/scripts/reactor/2221002.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2221002.js: KFT Reactor - Green King Goblin + * +*/ + +function act(){ + rm.spawnMonster(7130402, -340, 100); + rm.mapMessage(5, "Here comes Green King Goblin!"); +} \ No newline at end of file diff --git a/scripts/reactor/2221003.js b/scripts/reactor/2221003.js new file mode 100644 index 0000000000..ec6fcc38dd --- /dev/null +++ b/scripts/reactor/2221003.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2221003.js: KFT Reactor - Hongbu Gourd + * Note that Gourd (should) drop both Hongbu and Nolbu's quest items; in Global you would only see the quest item that you need, + * and nobody would see the other unless they had the other quest started and were in your party. +*/ + +function act(){ + rm.spawnMonster(9500400); +} \ No newline at end of file diff --git a/scripts/reactor/2221004.js b/scripts/reactor/2221004.js new file mode 100644 index 0000000000..f7cfd40503 --- /dev/null +++ b/scripts/reactor/2221004.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2221004.js: KFT Reactor - Nolbu Gourd + * Note that Gourd (should) drop both Hongu and Nolbu's quest items; in Global you would only see the quest item that you need, + * and nobody would see the other unless they had the other quest started and were in your party. +*/ + +function act(){ + rm.spawnMonster(9500400); +} \ No newline at end of file diff --git a/scripts/reactor/2222000.js b/scripts/reactor/2222000.js new file mode 100644 index 0000000000..ac708568c3 --- /dev/null +++ b/scripts/reactor/2222000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2222000.js: KFT Reactor - Plant - Drops Artemisia (quest item) and Chrysanthemum (unknown quest item) + * +*/ + +function act(){ + rm.dropItems(true, 2, 80, 120); +} \ No newline at end of file diff --git a/scripts/reactor/2302000.js b/scripts/reactor/2302000.js new file mode 100644 index 0000000000..75dc844c5e --- /dev/null +++ b/scripts/reactor/2302000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2302000.js: Aqua Road Reactor - Treasure Chest - Drops Piece of Paper A-E rarely, plus Air Bubbles, Orange Pots, meso + * +*/ + +function act(){ + //rm.dropItems(true, 2, 75, 90); +} \ No newline at end of file diff --git a/scripts/reactor/2302001.js b/scripts/reactor/2302001.js new file mode 100644 index 0000000000..df9ae16bf2 --- /dev/null +++ b/scripts/reactor/2302001.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2302001.js: Deep Aqua Road Reactor - Treasure Chest - Drops white pots, meso, air bubbles + * +*/ + +function act(){ + //rm.dropItems(true, 2, 105, 140); +} \ No newline at end of file diff --git a/scripts/reactor/2302002.js b/scripts/reactor/2302002.js new file mode 100644 index 0000000000..2c3ade962a --- /dev/null +++ b/scripts/reactor/2302002.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2302002.js: Aqua Road Reactor - Shell - Drops Air Bubbles, Orange Pots, meso + * +*/ + +function act(){ + rm.dropItems(true, 2, 55, 70); +} \ No newline at end of file diff --git a/scripts/reactor/2302003.js b/scripts/reactor/2302003.js new file mode 100644 index 0000000000..6cb19d90c2 --- /dev/null +++ b/scripts/reactor/2302003.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2302003.js: Aqua Road Reactor - Cauldron for Resurrection Quest (4th job Bishop) + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2302005.js b/scripts/reactor/2302005.js new file mode 100644 index 0000000000..5e56388e82 --- /dev/null +++ b/scripts/reactor/2302005.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2302005.js: Aqua Road Reactor - Treasure Chest for Mount quest + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2401000.js b/scripts/reactor/2401000.js new file mode 100644 index 0000000000..ef5f9e266c --- /dev/null +++ b/scripts/reactor/2401000.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Aexr + * 2401000.js: Horntail's Cave - Summons Horntail. +*/ + +function act() { + rm.changeMusic("Bgm14/HonTale"); + if (rm.getReactor().getMap().getMonsterById(8810026) == null) { + rm.spawnMonster(8810026,71,260); + } + rm.mapMessage(6, "From the depths of his cave, here comes Horntail!"); +} \ No newline at end of file diff --git a/scripts/reactor/2401001.js b/scripts/reactor/2401001.js new file mode 100644 index 0000000000..186fc61114 --- /dev/null +++ b/scripts/reactor/2401001.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2401001.js: Leafre Reactor - Egg for Phoenix Quest (4th job Bowmaster) + * +*/ + +function act(){ + rm.spawnMonster(9300089); +} \ No newline at end of file diff --git a/scripts/reactor/2401002.js b/scripts/reactor/2401002.js new file mode 100644 index 0000000000..57c77de9a2 --- /dev/null +++ b/scripts/reactor/2401002.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2401002.js: Leafre Reactor - Egg for Frostprey Quest (4th job Marksman) + * +*/ + +function act(){ + rm.spawnMonster(9300090); +} \ No newline at end of file diff --git a/scripts/reactor/2408002.js b/scripts/reactor/2408002.js new file mode 100644 index 0000000000..d66a504b75 --- /dev/null +++ b/scripts/reactor/2408002.js @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *2408002.js + *Key Warp for Horn Tail PQ [HTPQ] + *@author Jvlaple +*/ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + var party = rm.getPlayer().getEventInstance().getPlayers(); + var womanfred = eim.getMapFactory().getMap(240050100); + var vvpMap = rm.getPlayer().getMapId(); + var vvpKey; + var vvpOrig = 4001087; + var vvpStage = -1; + rm.mapMessage(6, "The key is teleported somewhere..."); + switch (vvpMap) { + case 240050101 : { + vvpKey = vvpOrig; + vvpStage = 2; + break; + } + case 240050102 : { + vvpKey = vvpOrig + 1; + vvpStage = 3; + break; + } + case 240050103 : { + vvpKey = vvpOrig + 2; + vvpStage = 4; + break; + } + case 240050104 : { + vvpKey = vvpOrig + 3; + vvpStage = 5; + break; + } + default : { + vvpKey = -1; + break; + } + } + var tehWomanfred = new client.Item(vvpKey, 0, 1); + var theWomanfred = womanfred.getReactorByName("keyDrop1"); + var dropper = eim.getPlayers().get(0); + womanfred.spawnItemDrop(theWomanfred, dropper, tehWomanfred, theWomanfred.getPosition(), true, true); + womanfred.dropMessage(5, "A bright flash of light, then a key suddenly appears somewhere in the map."); +} + + \ No newline at end of file diff --git a/scripts/reactor/2408003.js b/scripts/reactor/2408003.js new file mode 100644 index 0000000000..61776a7e85 --- /dev/null +++ b/scripts/reactor/2408003.js @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + *2408003.js + *Horntail Head spawn + *@author Even +*/ +//240060000 for 8810000 +//240060100 for 8810001 + +function touch() { + if (rm.getPlayer().getEventInstance() != null) { + rm.getPlayer().getEventInstance().setProperty("summoned", "true"); + rm.getPlayer().getEventInstance().setProperty("canEnter", "false"); + } + rm.spawnFakeMonster(8800000); + rm.mapMessage(6, "A gigantic creature is approaching from the deep cave."); + //rm.createMapMonitor(rm.getPlayer().getMap().getId(),"ps00"); + switch (rm.getPlayer().getMap().getId()) { + case 240060000: + rm.spawnMonster(8810000, 960, 0); + break; + case 240060100: + rm.spawnMonster(8810001, 0, 0); //needs correct positions + break; + } +} + + \ No newline at end of file diff --git a/scripts/reactor/2502000.js b/scripts/reactor/2502000.js new file mode 100644 index 0000000000..7763fde992 --- /dev/null +++ b/scripts/reactor/2502000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2502000.js: Mu Lung Reactor - Peach + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2502001.js b/scripts/reactor/2502001.js new file mode 100644 index 0000000000..e5b7256e22 --- /dev/null +++ b/scripts/reactor/2502001.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 2502001.js: Mu Lung Reactor - Peach + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2502002.js b/scripts/reactor/2502002.js new file mode 100644 index 0000000000..6f9c4928f9 --- /dev/null +++ b/scripts/reactor/2502002.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Ronan + * + * 2502002.js: Mu Lung Reactor - Wild bear 1 + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/2508000.js b/scripts/reactor/2508000.js new file mode 100644 index 0000000000..a5f3a66ab9 --- /dev/null +++ b/scripts/reactor/2508000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act(){ + if (rm.getPlayer().getMap().getId() / 100 % 100 != 38) + rm.warp(rm.getPlayer().getMap().getId() + 100); +} \ No newline at end of file diff --git a/scripts/reactor/2511000.js b/scripts/reactor/2511000.js new file mode 100644 index 0000000000..2b17b1482b --- /dev/null +++ b/scripts/reactor/2511000.js @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* +2511000- Reactor for PPQ [Pirate PQ] +@author Jvlaple +*/ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + var now = eim.getProperty("openedBoxes"); + var nextNum = now + 1; + eim.setProperty("openedBoxes", nextNum); + rm.spawnMonster(9300109, 3); + rm.spawnMonster(9300110, 5); + rm.mapMessage(5, "Some monsters are summoned."); +} \ No newline at end of file diff --git a/scripts/reactor/2511001.js b/scripts/reactor/2511001.js new file mode 100644 index 0000000000..7b68add2ba --- /dev/null +++ b/scripts/reactor/2511001.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*Pirate PQ Reactor - Spawns 6 of each Pirate when opened. + *@author Jvlaple + *2511001.js + */ + +function act() { + for (var i = 0; i < 6; i++) { + rm.spawnMonster(9300124); + rm.spawnMonster(9300125); + } +} \ No newline at end of file diff --git a/scripts/reactor/2512000.js b/scripts/reactor/2512000.js new file mode 100644 index 0000000000..33ef3bd9db --- /dev/null +++ b/scripts/reactor/2512000.js @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*2512000.js + *@Author Jvlaple + *Pirate PQ Reactor + */ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + var now = parseInt(eim.getProperty("openedBoxes")); + var nextNum = now + 1; + eim.setProperty("openedBoxes", nextNum); + rm.dropItems(true, 1, 30, 60, 15); +} \ No newline at end of file diff --git a/scripts/reactor/2516000.js b/scripts/reactor/2516000.js new file mode 100644 index 0000000000..5fad9fd911 --- /dev/null +++ b/scripts/reactor/2516000.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/*2516000.js - Reactor used to summon Wu Yang. + *@author Jvlaple + */ + +function act() { + rm.mapMessage(5, "As Lord Pirate dies, Wu Yang is released!"); + rm.spawnNpc(2094001); +} \ No newline at end of file diff --git a/scripts/reactor/3102000.js b/scripts/reactor/3102000.js new file mode 100644 index 0000000000..9073313cda --- /dev/null +++ b/scripts/reactor/3102000.js @@ -0,0 +1,3 @@ +function act() { + rm.dropItems(false, 0, 0, 0, 3); +} \ No newline at end of file diff --git a/scripts/reactor/5411000.js b/scripts/reactor/5411000.js new file mode 100644 index 0000000000..c4a84b2fd4 --- /dev/null +++ b/scripts/reactor/5411000.js @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act(){ + rm.changeMusic("Bgm09/TimeAttack"); + rm.spawnMonster(9420513, -146, 225); + rm.mapMessage(5, "As you wish, here comes Capt Latanica."); +} \ No newline at end of file diff --git a/scripts/reactor/5511000.js b/scripts/reactor/5511000.js new file mode 100644 index 0000000000..4d92c36bcc --- /dev/null +++ b/scripts/reactor/5511000.js @@ -0,0 +1,11 @@ +/* @Author SharpAceX +* 5511000.js: Summons Targa. +*/ + +function act() { + if (rm.getReactor().getMap().getMonsterById(9420542) == null) { + rm.spawnMonster(9420542,-527,637); + rm.changeMusic("Bgm09/TimeAttack"); + rm.mapMessage(6, "Beware! The furious Targa has shown himself!"); + } +} \ No newline at end of file diff --git a/scripts/reactor/5511001.js b/scripts/reactor/5511001.js new file mode 100644 index 0000000000..0c4985fdf0 --- /dev/null +++ b/scripts/reactor/5511001.js @@ -0,0 +1,11 @@ +/* @Author SharpAceX +* 5511001.js: Summons Scarlion. +*/ + +function act() { + if (rm.getReactor().getMap().getMonsterById(9420547) == null) { + rm.spawnMonster(9420547,-238,636); + rm.changeMusic("Bgm09/TimeAttack"); + rm.mapMessage(6, "Beware! The furious Scarlion has shown himself!"); + } +} \ No newline at end of file diff --git a/scripts/reactor/6702000.js b/scripts/reactor/6702000.js new file mode 100644 index 0000000000..74e1b6be6f --- /dev/null +++ b/scripts/reactor/6702000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Jvlaple + * + * The Magik Mirror + * +*/ + +function act(){ + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/6702001.js b/scripts/reactor/6702001.js new file mode 100644 index 0000000000..704bcac717 --- /dev/null +++ b/scripts/reactor/6702001.js @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *6702001.js - Door of APQ + *@author Jvlaple + */ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + var party = eim.getPlayers(); + var numOpen = Integer.parseInt(eim.getProperty("openedDoors")); + var mf = eim.getMapFactory(); + var map = mf.getMap(670010600); + eim.setProperty("openedDoors", numOpen + 1); + for (var i = 0; i < party.size(); i++) { + party.get(i).changeMap(map, map.getPortal((numOpen + 1) * 2)); + } +} + \ No newline at end of file diff --git a/scripts/reactor/6702003.js b/scripts/reactor/6702003.js new file mode 100644 index 0000000000..19b156a46a --- /dev/null +++ b/scripts/reactor/6702003.js @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + *AmoriaPQ Bonus Reactor + *6702003.js + */ + +function act() { + rand = Math.floor(Math.random() * 4); + if (rand < 1) rand = 1; + //We'll make it drop a lot of crap :D + for (var i = 0; i + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act(){ + for (var i = 0; i < 3; i++) { + rm.spawnMonster(9400506); + rm.spawnMonster(9400507); + } + rm.spawnMonster(9400507); +} \ No newline at end of file diff --git a/scripts/reactor/6802001.js b/scripts/reactor/6802001.js new file mode 100644 index 0000000000..0424252522 --- /dev/null +++ b/scripts/reactor/6802001.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act(){ + for (var i = 0; i < 5; i++) + rm.spawnMonster(9400506); + for (var j = 0; j < 7; j++) + rm.spawnMonster(9400507); +} \ No newline at end of file diff --git a/scripts/reactor/6829000.js b/scripts/reactor/6829000.js new file mode 100644 index 0000000000..17e886fa86 --- /dev/null +++ b/scripts/reactor/6829000.js @@ -0,0 +1,25 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +function act(){ //wtf is this? + rm.playerMessage(5, "Enjoy Halloween!"); + rm.spawnMonster(9400202, 10); +} \ No newline at end of file diff --git a/scripts/reactor/8091000.js b/scripts/reactor/8091000.js new file mode 100644 index 0000000000..aac3060672 --- /dev/null +++ b/scripts/reactor/8091000.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*Author : Raz + * + * LMPQ Maze - Reactor - Spawn Monster +*/ + +function act(){ + rm.spawnMonster(9400210, 2); + rm.spawnMonster(9400209, 2); +} \ No newline at end of file diff --git a/scripts/reactor/8091001.js b/scripts/reactor/8091001.js new file mode 100644 index 0000000000..3a4e17224e --- /dev/null +++ b/scripts/reactor/8091001.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*Author : Raz + * + * LMPQ Maze - Reactor - Spawn Monster +*/ + +function act(){ + rm.spawnMonster(9400211, 2); + rm.spawnMonster(9400212, 2); +} \ No newline at end of file diff --git a/scripts/reactor/8091002.js b/scripts/reactor/8091002.js new file mode 100644 index 0000000000..ad6c65e701 --- /dev/null +++ b/scripts/reactor/8091002.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*Author : Raz + * + * LMPQ Maze - Reactor - Spawn Monster +*/ + +function act(){ + rm.spawnMonster(9400213, 2); + rm.spawnMonster(9400214, 2); +} \ No newline at end of file diff --git a/scripts/reactor/8091003.js b/scripts/reactor/8091003.js new file mode 100644 index 0000000000..2f74a05063 --- /dev/null +++ b/scripts/reactor/8091003.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*Author : Raz + * + * LMPQ Maze - Reactor - Spawn Monster +*/ + +function act(){ + rm.spawnMonster(9400215, 2); + rm.spawnMonster(9400216, 2); +} \ No newline at end of file diff --git a/scripts/reactor/8091004.js b/scripts/reactor/8091004.js new file mode 100644 index 0000000000..58b8ddab41 --- /dev/null +++ b/scripts/reactor/8091004.js @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/*Author : Raz + * + * LMPQ Maze - Reactor - Spawn Monster +*/ + +function act(){ + rm.spawnMonster(9400217, 2); + rm.spawnMonster(9400218, 2); +} \ No newline at end of file diff --git a/scripts/reactor/8098000.js b/scripts/reactor/8098000.js new file mode 100644 index 0000000000..231b5f174a --- /dev/null +++ b/scripts/reactor/8098000.js @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* + * @author RMZero213 (base) + * @author Moogra (fixed, clean up) + */ +function act() { + var map = rm.getPlayer().getMapId(); + var b = Math.abs(rm.getPlayer().getMapId() - 809050005); + if (map != 809050000 && map != 809050010 && map != 809050014) { + rm.spawnMonster(9400217 - b, 2); + rm.spawnMonster(9400218 - b, 3); + } else { + rm.spawnMonster(9400209, 6); + rm.spawnMonster(9400210, 9); + } + rm.mapMessage(5, "Some monsters are summoned."); +} \ No newline at end of file diff --git a/scripts/reactor/9018000.js b/scripts/reactor/9018000.js new file mode 100644 index 0000000000..109d93c0e9 --- /dev/null +++ b/scripts/reactor/9018000.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Flower 1 + */ +function act() { +} \ No newline at end of file diff --git a/scripts/reactor/9018001.js b/scripts/reactor/9018001.js new file mode 100644 index 0000000000..30fa6f5a5b --- /dev/null +++ b/scripts/reactor/9018001.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Flower 2 + */ +function act() { +} \ No newline at end of file diff --git a/scripts/reactor/9018002.js b/scripts/reactor/9018002.js new file mode 100644 index 0000000000..76b6f4dec8 --- /dev/null +++ b/scripts/reactor/9018002.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Flower 3 + */ +function act() { +} \ No newline at end of file diff --git a/scripts/reactor/9018003.js b/scripts/reactor/9018003.js new file mode 100644 index 0000000000..e9eafeecec --- /dev/null +++ b/scripts/reactor/9018003.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Flower 4 + */ +function act() { +} \ No newline at end of file diff --git a/scripts/reactor/9018004.js b/scripts/reactor/9018004.js new file mode 100644 index 0000000000..c7b38b32b7 --- /dev/null +++ b/scripts/reactor/9018004.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Flower 5 + */ +function act() { +} \ No newline at end of file diff --git a/scripts/reactor/9018005.js b/scripts/reactor/9018005.js new file mode 100644 index 0000000000..eef6f54d61 --- /dev/null +++ b/scripts/reactor/9018005.js @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Flower 6 + */ +function act() { +} \ No newline at end of file diff --git a/scripts/reactor/9101000.js b/scripts/reactor/9101000.js new file mode 100644 index 0000000000..10fc373076 --- /dev/null +++ b/scripts/reactor/9101000.js @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +/** + * @author BubblesDev + * @purpose + * [x]Full Moon, + * [/]Summons Moon Bunny, + * [x]shows animation, + * [x]makes stirges and stuff appear + */ +importPackage(Packages.tools); + +function act() { + rm.spawnMonster(9300061, 1, 0, 0); // (0, 0) is temp position + rm.getClient().getMap().startMapEffect("Protect the Moon Bunny that's pounding the mill, and gather up 10 Moon Bunny's Rice Cakes!", 5120016, 7000); + rm.getClient().getMap().broadcastMessage(MaplePacketCreator.bunnyPacket()); // Protect the Moon Bunny! + rm.getClient().getMap().broadcastMessage(MaplePacketCreator.showHPQMoon()); + rm.getClient().getMap().showAllMonsters(); + +} \ No newline at end of file diff --git a/scripts/reactor/9102000.js b/scripts/reactor/9102000.js new file mode 100644 index 0000000000..0b7c8a5a8f --- /dev/null +++ b/scripts/reactor/9102000.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Blue Primrose Seeds (4001100) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102001.js b/scripts/reactor/9102001.js new file mode 100644 index 0000000000..83819c9b26 --- /dev/null +++ b/scripts/reactor/9102001.js @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * Box of Magic Library + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102002.js b/scripts/reactor/9102002.js new file mode 100644 index 0000000000..a0681afe96 --- /dev/null +++ b/scripts/reactor/9102002.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Brown, Purple Primrose Seeds (4001096, 4001098) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102003.js b/scripts/reactor/9102003.js new file mode 100644 index 0000000000..740fef5ad0 --- /dev/null +++ b/scripts/reactor/9102003.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Purple Seeds (4001096) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102004.js b/scripts/reactor/9102004.js new file mode 100644 index 0000000000..fdb04dae03 --- /dev/null +++ b/scripts/reactor/9102004.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Pink Primrose Seeds (4001097) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102005.js b/scripts/reactor/9102005.js new file mode 100644 index 0000000000..c2b58b6665 --- /dev/null +++ b/scripts/reactor/9102005.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Brown Primrose Seeds (4001098) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102006.js b/scripts/reactor/9102006.js new file mode 100644 index 0000000000..8dd83a5658 --- /dev/null +++ b/scripts/reactor/9102006.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Yellow Primrose Seeds (4001099) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9102007.js b/scripts/reactor/9102007.js new file mode 100644 index 0000000000..fa3667e637 --- /dev/null +++ b/scripts/reactor/9102007.js @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/** + * @author BubblesDev + * @purpose Drops Yellow, Blue, Pink Primrose Seeds (4001099, 4001100) + * @map Primrose Hill + */ +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9108000.js b/scripts/reactor/9108000.js new file mode 100644 index 0000000000..c0fef9b91f --- /dev/null +++ b/scripts/reactor/9108000.js @@ -0,0 +1,17 @@ + +function act() { + var em = rm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + rm.getParty().getLeader().getName()); + if (em != null) { + var react = rm.getReactor().getMap().getReactorByName("fullmoon"); + var stage = parseInt(em.getProperty("stage")) + 1; + var newStage = stage.toString(); + em.setProperty("stage", newStage); + react.forceHitReactor(react.getState() + 1); + if (em.getProperty("stage").equals("6")) { + rm.mapMessage(6, "Protect the Moon Bunny!!!"); + var map = em.getMapInstance(rm.getReactor().getMap().getId()); + map.allowSummonState(true); + map.spawnMonsterOnGroudBelow(9300061, -183, -433); + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9108001.js b/scripts/reactor/9108001.js new file mode 100644 index 0000000000..c0fef9b91f --- /dev/null +++ b/scripts/reactor/9108001.js @@ -0,0 +1,17 @@ + +function act() { + var em = rm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + rm.getParty().getLeader().getName()); + if (em != null) { + var react = rm.getReactor().getMap().getReactorByName("fullmoon"); + var stage = parseInt(em.getProperty("stage")) + 1; + var newStage = stage.toString(); + em.setProperty("stage", newStage); + react.forceHitReactor(react.getState() + 1); + if (em.getProperty("stage").equals("6")) { + rm.mapMessage(6, "Protect the Moon Bunny!!!"); + var map = em.getMapInstance(rm.getReactor().getMap().getId()); + map.allowSummonState(true); + map.spawnMonsterOnGroudBelow(9300061, -183, -433); + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9108002.js b/scripts/reactor/9108002.js new file mode 100644 index 0000000000..c0fef9b91f --- /dev/null +++ b/scripts/reactor/9108002.js @@ -0,0 +1,17 @@ + +function act() { + var em = rm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + rm.getParty().getLeader().getName()); + if (em != null) { + var react = rm.getReactor().getMap().getReactorByName("fullmoon"); + var stage = parseInt(em.getProperty("stage")) + 1; + var newStage = stage.toString(); + em.setProperty("stage", newStage); + react.forceHitReactor(react.getState() + 1); + if (em.getProperty("stage").equals("6")) { + rm.mapMessage(6, "Protect the Moon Bunny!!!"); + var map = em.getMapInstance(rm.getReactor().getMap().getId()); + map.allowSummonState(true); + map.spawnMonsterOnGroudBelow(9300061, -183, -433); + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9108003.js b/scripts/reactor/9108003.js new file mode 100644 index 0000000000..c0fef9b91f --- /dev/null +++ b/scripts/reactor/9108003.js @@ -0,0 +1,17 @@ + +function act() { + var em = rm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + rm.getParty().getLeader().getName()); + if (em != null) { + var react = rm.getReactor().getMap().getReactorByName("fullmoon"); + var stage = parseInt(em.getProperty("stage")) + 1; + var newStage = stage.toString(); + em.setProperty("stage", newStage); + react.forceHitReactor(react.getState() + 1); + if (em.getProperty("stage").equals("6")) { + rm.mapMessage(6, "Protect the Moon Bunny!!!"); + var map = em.getMapInstance(rm.getReactor().getMap().getId()); + map.allowSummonState(true); + map.spawnMonsterOnGroudBelow(9300061, -183, -433); + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9108004.js b/scripts/reactor/9108004.js new file mode 100644 index 0000000000..c0fef9b91f --- /dev/null +++ b/scripts/reactor/9108004.js @@ -0,0 +1,17 @@ + +function act() { + var em = rm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + rm.getParty().getLeader().getName()); + if (em != null) { + var react = rm.getReactor().getMap().getReactorByName("fullmoon"); + var stage = parseInt(em.getProperty("stage")) + 1; + var newStage = stage.toString(); + em.setProperty("stage", newStage); + react.forceHitReactor(react.getState() + 1); + if (em.getProperty("stage").equals("6")) { + rm.mapMessage(6, "Protect the Moon Bunny!!!"); + var map = em.getMapInstance(rm.getReactor().getMap().getId()); + map.allowSummonState(true); + map.spawnMonsterOnGroudBelow(9300061, -183, -433); + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9108005.js b/scripts/reactor/9108005.js new file mode 100644 index 0000000000..c0fef9b91f --- /dev/null +++ b/scripts/reactor/9108005.js @@ -0,0 +1,17 @@ + +function act() { + var em = rm.getEventManager("HenesysPQ").getInstance("HenesysPQ_" + rm.getParty().getLeader().getName()); + if (em != null) { + var react = rm.getReactor().getMap().getReactorByName("fullmoon"); + var stage = parseInt(em.getProperty("stage")) + 1; + var newStage = stage.toString(); + em.setProperty("stage", newStage); + react.forceHitReactor(react.getState() + 1); + if (em.getProperty("stage").equals("6")) { + rm.mapMessage(6, "Protect the Moon Bunny!!!"); + var map = em.getMapInstance(rm.getReactor().getMap().getId()); + map.allowSummonState(true); + map.spawnMonsterOnGroudBelow(9300061, -183, -433); + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9201000.js b/scripts/reactor/9201000.js new file mode 100644 index 0000000000..42ffc3f108 --- /dev/null +++ b/scripts/reactor/9201000.js @@ -0,0 +1,32 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Lerk + * + * spawn for Jr. Gargoyle (9300033) for Mark of Evil (4001035), Sharenian: Waterway Maze (990000630) + * + * Guild Quest - part of stage 4 + */ + +function act(){ + rm.spawnMonster(9300033, 8, -100, 50); +} diff --git a/scripts/reactor/9201001.js b/scripts/reactor/9201001.js new file mode 100644 index 0000000000..6f17fbd517 --- /dev/null +++ b/scripts/reactor/9201001.js @@ -0,0 +1,33 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* + * @Author Lerk + * + * spawn for Sharen III's Soul, Sharenian: Sharen III's Grave (990000700) + * + * Guild Quest - end of stage 4 + */ + +function act(){ + rm.mapMessage(5, "A bright flash of light, then someone familiar appears in front of the blocked gate."); + rm.spawnNpc(9040003); +} diff --git a/scripts/reactor/9201002.js b/scripts/reactor/9201002.js new file mode 100644 index 0000000000..a45a87d364 --- /dev/null +++ b/scripts/reactor/9201002.js @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 9201002.js: Guild Quest - Ergoth Reactor + * +*/ + +function act() { + rm.changeMusic("Bgm10/Eregos"); + rm.spawnMonster(9300028); + rm.spawnMonster(9300031, 130, 90); + rm.spawnMonster(9300032, 540, 90); + rm.spawnMonster(9300029, 130, 150); + rm.spawnMonster(9300030, 540, 150); +} \ No newline at end of file diff --git a/scripts/reactor/9202000.js b/scripts/reactor/9202000.js new file mode 100644 index 0000000000..64b625b2d8 --- /dev/null +++ b/scripts/reactor/9202000.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 9202000.js: Guild Quest - Protector Rock + * Drops the Protector Rock earrings necessary (normally) to stay alive in the Guild Quest + * +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9202001.js b/scripts/reactor/9202001.js new file mode 100644 index 0000000000..c3519bdc7d --- /dev/null +++ b/scripts/reactor/9202001.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202001.js: Guild Quest - Chained Spear + * Drops the Longinus Spear (4001025) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202002.js b/scripts/reactor/9202002.js new file mode 100644 index 0000000000..2191710330 --- /dev/null +++ b/scripts/reactor/9202002.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202002.js: Guild Quest - Buried Box + * Drops the Rusty Key (4001037) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202003.js b/scripts/reactor/9202003.js new file mode 100644 index 0000000000..8cda94d2ba --- /dev/null +++ b/scripts/reactor/9202003.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202003.js: Guild Quest - Dining Hall Cover + * Drops the Rotten Food (4001029) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202004.js b/scripts/reactor/9202004.js new file mode 100644 index 0000000000..eb1c8a914d --- /dev/null +++ b/scripts/reactor/9202004.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202004.js: Guild Quest - Pantry Box + * Drops the Jr. Necki Wine (4001030) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202005.js b/scripts/reactor/9202005.js new file mode 100644 index 0000000000..6e68bdffcf --- /dev/null +++ b/scripts/reactor/9202005.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202005.js: Guild Quest - Clothing Box + * Drops the Sharen III Pants (4001031) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202006.js b/scripts/reactor/9202006.js new file mode 100644 index 0000000000..0f7fd22496 --- /dev/null +++ b/scripts/reactor/9202006.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202006.js: Guild Quest - Clothing Box + * Drops the Sharen III Shoes (4001032) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202007.js b/scripts/reactor/9202007.js new file mode 100644 index 0000000000..4d2b97f46e --- /dev/null +++ b/scripts/reactor/9202007.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202007.js: Guild Quest - Clothing Box + * Drops the Sharen III Top (4001033) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202008.js b/scripts/reactor/9202008.js new file mode 100644 index 0000000000..ed496f0fcc --- /dev/null +++ b/scripts/reactor/9202008.js @@ -0,0 +1,31 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202008.js: Guild Quest - Clothing Box + * Drops the Sharen III Crown (4001034) + * +*/ + +function act() { + rm.dropItems(); +} diff --git a/scripts/reactor/9202009.js b/scripts/reactor/9202009.js new file mode 100644 index 0000000000..563caf0558 --- /dev/null +++ b/scripts/reactor/9202009.js @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +/* @Author Lerk + * + * 9202009.js: Guild Quest - Protector Rock + * Drops the Protector Rock earrings necessary (normally) to stay alive in the Guild Quest + * +*/ + +function act() { + rm.dropItems(); +} \ No newline at end of file diff --git a/scripts/reactor/9202012.js b/scripts/reactor/9202012.js new file mode 100644 index 0000000000..1690ea5b55 --- /dev/null +++ b/scripts/reactor/9202012.js @@ -0,0 +1,30 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9202012.js: Guild Quest - Bonus Box + * +*/ + +function act() { + rm.dropItems(true, 1, 30, 60, 10); +} diff --git a/scripts/reactor/9208000.js b/scripts/reactor/9208000.js new file mode 100644 index 0000000000..c0f1941cdc --- /dev/null +++ b/scripts/reactor/9208000.js @@ -0,0 +1,53 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9208000.js: Guild Quest - Gatekeeper Puzzle Reactor + * +*/ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + if (eim != null) { + var status = eim.getProperty("stage1status"); + if (status != null && !status.equals("waiting")) { + var stage = parseInt(eim.getProperty("stage1phase")); + if (status.equals("display")) { + var prevCombo = eim.getProperty("stage1combo"); + prevCombo += rm.getReactor().getObjectId(); + rm.mapMessage(6,"Current Combo: " + prevCombo); + eim.setProperty("stage1combo",prevCombo); + if (prevCombo.length == (3 * (stage + 3))) { //end of displaying + eim.setProperty("stage1status","active"); + rm.mapMessage(5, "The combo has been displayed; Proceed with caution."); + eim.setProperty("stage1guess",""); + } + } else { //active + var prevGuess = eim.getProperty("stage1guess"); + if (prevGuess.length != (3 * (stage + 3))) { + prevGuess += rm.getReactor().getObjectId(); + eim.setProperty("stage1guess",prevGuess); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9208001.js b/scripts/reactor/9208001.js new file mode 100644 index 0000000000..522a7bc421 --- /dev/null +++ b/scripts/reactor/9208001.js @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +/* @Author Lerk + * + * 9208000.js: Guild Quest - Gatekeeper Puzzle Reactor + * +*/ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + if (eim != null) { + var status = eim.getProperty("stage1status"); + if (status != null && !status.equals("waiting")) { + var stage = parseInt(eim.getProperty("stage1phase")); + //rm.mapMessage(6,"Stage " + stage); + if (status.equals("display")) { + var prevCombo = eim.getProperty("stage1combo"); + prevCombo += rm.getReactor().getObjectId(); + eim.setProperty("stage1combo",prevCombo); + if (prevCombo.length == (3 * (stage + 3))) { //end of displaying + eim.setProperty("stage1status","active"); + rm.mapMessage(5, "The combo has been displayed; Proceed with caution."); + eim.setProperty("stage1guess",""); + } + } else { //active + var prevGuess = eim.getProperty("stage1guess"); + if (prevGuess.length != (3 * (stage + 3))) { + prevGuess += rm.getReactor().getObjectId(); + eim.setProperty("stage1guess",prevGuess); + } + //rm.mapMessage(6,"Current Guess: " + prevGuess); + } + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9208002.js b/scripts/reactor/9208002.js new file mode 100644 index 0000000000..93a2d467b5 --- /dev/null +++ b/scripts/reactor/9208002.js @@ -0,0 +1,52 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* @Author Lerk + * + * 9208000.js: Guild Quest - Gatekeeper Puzzle Reactor + * +*/ + +function act() { + var eim = rm.getPlayer().getEventInstance(); + if (eim != null) { + var status = eim.getProperty("stage1status"); + if (status != null && !status.equals("waiting")) { + var stage = parseInt(eim.getProperty("stage1phase")); + if (status.equals("display")) { + var prevCombo = eim.getProperty("stage1combo"); + prevCombo += rm.getReactor().getObjectId(); + eim.setProperty("stage1combo",prevCombo); + if (prevCombo.length == (3 * (stage + 3))) { //end of displaying + eim.setProperty("stage1status","active"); + rm.mapMessage(5, "The combo has been displayed; Proceed with caution."); + eim.setProperty("stage1guess",""); + } + } else { //active + var prevGuess = eim.getProperty("stage1guess"); + if (prevGuess.length != (3 * stage + 9)) { + prevGuess += rm.getReactor().getObjectId(); + eim.setProperty("stage1guess",prevGuess); + } + } + } + } +} \ No newline at end of file diff --git a/scripts/reactor/9208004.js b/scripts/reactor/9208004.js new file mode 100644 index 0000000000..8eeceacbee --- /dev/null +++ b/scripts/reactor/9208004.js @@ -0,0 +1,26 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +// Stage 2 GP for Guild Quest + +function act() { + rm.getGuild().gainGP(20); +} diff --git a/scripts/reactor/9208007.js b/scripts/reactor/9208007.js new file mode 100644 index 0000000000..913f74ea94 --- /dev/null +++ b/scripts/reactor/9208007.js @@ -0,0 +1,30 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* +Stage 2: Spear destinations - Guild Quest + +@Author Lerk +*/ + +function act() { + rm.getPlayer().getEventInstance().getMapInstance(990000400).getReactorByName("speargate").hitReactor(rm.getPlayer().getClient()); +} \ No newline at end of file diff --git a/scripts/reactor/9980000.js b/scripts/reactor/9980000.js new file mode 100644 index 0000000000..2524923a6e --- /dev/null +++ b/scripts/reactor/9980000.js @@ -0,0 +1,28 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* +@Author kevintjuh93 +*/ + +function act() { + rm.getReactor().removeMonsterStatus(); +} \ No newline at end of file diff --git a/scripts/reactor/9980001.js b/scripts/reactor/9980001.js new file mode 100644 index 0000000000..2524923a6e --- /dev/null +++ b/scripts/reactor/9980001.js @@ -0,0 +1,28 @@ +/* + * This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +/* +@Author kevintjuh93 +*/ + +function act() { + rm.getReactor().removeMonsterStatus(); +} \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql new file mode 100644 index 0000000000..dc5e8f1edb --- /dev/null +++ b/sql/db_database.sql @@ -0,0 +1,20885 @@ +#YOU MUST EXECUTE NEXT SQL: 'drops.sql' + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +CREATE DATABASE IF NOT EXISTS `maplesolaxia` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; +USE `maplesolaxia`; + +CREATE TABLE IF NOT EXISTS `accounts` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(13) NOT NULL DEFAULT '', + `password` varchar(128) NOT NULL DEFAULT '', + `salt` varchar(128) DEFAULT NULL, + `pin` varchar(10) DEFAULT NULL, + `pic` varchar(26) DEFAULT NULL, + `loggedin` tinyint(4) NOT NULL DEFAULT '0', + `lastlogin` timestamp NULL DEFAULT NULL, + `createdat` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `birthday` date NOT NULL DEFAULT '0000-00-00', + `banned` tinyint(1) NOT NULL DEFAULT '0', + `banreason` text, + `gm` tinyint(1) NOT NULL DEFAULT '0', + `macs` tinytext, + `nxCredit` int(11) DEFAULT NULL, + `maplePoint` int(11) DEFAULT NULL, + `nxPrepaid` int(11) DEFAULT NULL, + `characterslots` tinyint(2) NOT NULL DEFAULT '5', + `gender` tinyint(2) NOT NULL DEFAULT '10', + `tempban` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + `greason` tinyint(4) NOT NULL DEFAULT '0', + `tos` tinyint(1) NOT NULL DEFAULT '0', + `sitelogged` text, + `webadmin` int(1) DEFAULT '0', + `nick` varchar(20) DEFAULT NULL, + `mute` int(1) DEFAULT '0', + `email` varchar(45) DEFAULT NULL, + `ip` text, + `rewardpoints` int(11) NOT NULL DEFAULT '0', + `hwid` varchar(12) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`), + KEY `ranking1` (`id`,`banned`,`gm`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `alliance` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(13) NOT NULL, + `notice` varchar(128) NOT NULL DEFAULT '', + `capacity` int(10) unsigned NOT NULL DEFAULT '2', + `rank_title1` varchar(45) NOT NULL DEFAULT 'Master', + `rank_title2` varchar(45) NOT NULL DEFAULT 'Jr.Master', + `rank_title3` varchar(45) NOT NULL DEFAULT 'Member', + `rank_title4` varchar(45) NOT NULL DEFAULT 'Member', + `rank_title5` varchar(45) NOT NULL DEFAULT 'Member', + `guild1` int(10) NOT NULL DEFAULT '-1', + `guild2` int(10) NOT NULL DEFAULT '-1', + `guild3` int(10) NOT NULL DEFAULT '-1', + `guild4` int(10) NOT NULL DEFAULT '-1', + `guild5` int(10) NOT NULL DEFAULT '-1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `area_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `charid` int(11) NOT NULL, + `area` int(11) NOT NULL, + `info` varchar(200) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `bbs_replies` ( + `replyid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `threadid` int(10) unsigned NOT NULL, + `postercid` int(10) unsigned NOT NULL, + `timestamp` bigint(20) unsigned NOT NULL, + `content` varchar(26) NOT NULL DEFAULT '', + PRIMARY KEY (`replyid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `bbs_threads` ( + `threadid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `postercid` int(10) unsigned NOT NULL, + `name` varchar(26) NOT NULL DEFAULT '', + `timestamp` bigint(20) unsigned NOT NULL, + `icon` smallint(5) unsigned NOT NULL, + `replycount` smallint(5) unsigned NOT NULL DEFAULT '0', + `startpost` text NOT NULL, + `guildid` int(10) unsigned NOT NULL, + `localthreadid` int(10) unsigned NOT NULL, + PRIMARY KEY (`threadid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `buddies` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `buddyid` int(11) NOT NULL, + `pending` tinyint(4) NOT NULL DEFAULT '0', + `group` varchar(17) DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `characters` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `accountid` int(11) NOT NULL DEFAULT '0', + `world` int(11) NOT NULL DEFAULT '0', + `name` varchar(13) NOT NULL DEFAULT '', + `level` int(11) NOT NULL DEFAULT '1', + `exp` int(11) NOT NULL DEFAULT '0', + `gachaexp` int(11) NOT NULL DEFAULT '0', + `str` int(11) NOT NULL DEFAULT '12', + `dex` int(11) NOT NULL DEFAULT '5', + `luk` int(11) NOT NULL DEFAULT '4', + `int` int(11) NOT NULL DEFAULT '4', + `hp` int(11) NOT NULL DEFAULT '50', + `mp` int(11) NOT NULL DEFAULT '5', + `maxhp` int(11) NOT NULL DEFAULT '50', + `maxmp` int(11) NOT NULL DEFAULT '5', + `meso` int(11) NOT NULL DEFAULT '0', + `hpMpUsed` int(11) unsigned NOT NULL DEFAULT '0', + `job` int(11) NOT NULL DEFAULT '0', + `skincolor` int(11) NOT NULL DEFAULT '0', + `gender` int(11) NOT NULL DEFAULT '0', + `fame` int(11) NOT NULL DEFAULT '0', + `fquest` int(11) NOT NULL DEFAULT '0', + `hair` int(11) NOT NULL DEFAULT '0', + `face` int(11) NOT NULL DEFAULT '0', + `ap` int(11) NOT NULL DEFAULT '0', + `sp` varchar(128) NOT NULL DEFAULT '0,0,0,0,0,0,0,0,0,0', + `map` int(11) NOT NULL DEFAULT '0', + `spawnpoint` int(11) NOT NULL DEFAULT '0', + `gm` tinyint(1) NOT NULL DEFAULT '0', + `party` int(11) NOT NULL DEFAULT '0', + `buddyCapacity` int(11) NOT NULL DEFAULT '25', + `createdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `rank` int(10) unsigned NOT NULL DEFAULT '1', + `rankMove` int(11) NOT NULL DEFAULT '0', + `jobRank` int(10) unsigned NOT NULL DEFAULT '1', + `jobRankMove` int(11) NOT NULL DEFAULT '0', + `guildid` int(10) unsigned NOT NULL DEFAULT '0', + `guildrank` int(10) unsigned NOT NULL DEFAULT '5', + `messengerid` int(10) unsigned NOT NULL DEFAULT '0', + `messengerposition` int(10) unsigned NOT NULL DEFAULT '4', + `mountlevel` int(9) NOT NULL DEFAULT '1', + `mountexp` int(9) NOT NULL DEFAULT '0', + `mounttiredness` int(9) NOT NULL DEFAULT '0', + `omokwins` int(11) NOT NULL DEFAULT '0', + `omoklosses` int(11) NOT NULL DEFAULT '0', + `omokties` int(11) NOT NULL DEFAULT '0', + `matchcardwins` int(11) NOT NULL DEFAULT '0', + `matchcardlosses` int(11) NOT NULL DEFAULT '0', + `matchcardties` int(11) NOT NULL DEFAULT '0', + `MerchantMesos` int(11) DEFAULT '0', + `HasMerchant` tinyint(1) DEFAULT '0', + `equipslots` int(11) NOT NULL DEFAULT '24', + `useslots` int(11) NOT NULL DEFAULT '24', + `setupslots` int(11) NOT NULL DEFAULT '24', + `etcslots` int(11) NOT NULL DEFAULT '24', + `familyId` int(11) NOT NULL DEFAULT '-1', + `monsterbookcover` int(11) NOT NULL DEFAULT '0', + `allianceRank` int(10) NOT NULL DEFAULT '5', + `vanquisherStage` int(11) unsigned NOT NULL DEFAULT '0', + `dojoPoints` int(11) unsigned NOT NULL DEFAULT '0', + `lastDojoStage` int(10) unsigned NOT NULL DEFAULT '0', + `finishedDojoTutorial` tinyint(1) unsigned NOT NULL DEFAULT '0', + `vanquisherKills` int(11) unsigned NOT NULL DEFAULT '0', + `summonValue` int(11) unsigned NOT NULL DEFAULT '0', + `partnerId` int(11) NOT NULL DEFAULT '0', + `reborns` int(5) NOT NULL DEFAULT '0', + `PQPoints` int(11) NOT NULL DEFAULT '0', + `dataString` varchar(64) NOT NULL DEFAULT '', + `lastLogoutTime` timestamp NOT NULL DEFAULT '2015-01-01 05:00:00', + `pendantExp` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `accountid` (`accountid`), + KEY `party` (`party`), + KEY `ranking1` (`level`,`exp`), + KEY `ranking2` (`gm`,`job`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=30000 ; + +CREATE TABLE IF NOT EXISTS `cooldowns` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `charid` int(11) NOT NULL, + `SkillID` int(11) NOT NULL, + `length` bigint(20) unsigned NOT NULL, + `StartTime` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `temp_data` ( + `id` bigint(20) NOT NULL, + `dropperid` int(11) NOT NULL, + `itemid` int(11) NOT NULL DEFAULT '0', + `minimum_quantity` int(11) NOT NULL DEFAULT '1', + `maximum_quantity` int(11) NOT NULL DEFAULT '1', + `questid` int(11) NOT NULL DEFAULT '0', + `chance` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`dropperid`, `itemid`), + KEY `mobid` (`dropperid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ; + +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(1, 9400121, 4000138, 1, 1, 0, 600000), +(2, 9400121, 4010006, 1, 1, 0, 45000), +(3, 9400121, 2000006, 1, 1, 0, 999999), +(4, 9400121, 2000011, 1, 1, 0, 100000), +(5, 9400121, 2020016, 1, 1, 0, 100000), +(6, 9400121, 2022024, 1, 1, 0, 100000), +(7, 9400121, 2022026, 1, 1, 0, 100000), +(8, 9400121, 2043705, 1, 1, 0, 1500), +(9, 9400121, 2040716, 1, 1, 0, 1500), +(10, 9400121, 2040908, 1, 1, 0, 1500), +(11, 9400121, 2040510, 1, 1, 0, 1500), +(12, 9400121, 1072239, 1, 1, 0, 4000), +(13, 9400121, 1422013, 1, 1, 0, 3500), +(14, 9400121, 1402016, 1, 1, 0, 3500), +(15, 9400121, 1442020, 1, 1, 0, 3500), +(16, 9400121, 1432011, 1, 1, 0, 2500), +(17, 9400121, 1332022, 1, 1, 0, 2500), +(18, 9400121, 1312015, 1, 1, 0, 3500), +(19, 9400121, 1382010, 1, 1, 0, 3500), +(20, 9400121, 1372009, 1, 1, 0, 3500), +(21, 9400121, 1082085, 1, 1, 0, 5000), +(22, 9400121, 1332022, 1, 1, 0, 2500), +(23, 9400121, 1472033, 1, 1, 0, 2500), +(24, 8810018, 4001094, 1, 1, 0, 999999), +(25, 8810018, 2290125, 1, 1, 0, 100000), +(26, 8800002, 1372049, 1, 1, 0, 999999), +(27, 9400013, 4000225, 1, 1, 0, 600000), +(28, 9400013, 2000006, 1, 1, 0, 20000), +(29, 9400013, 2000004, 1, 1, 0, 20000), +(30, 9400013, 2070013, 1, 1, 0, 1500), +(31, 9400013, 2002005, 1, 1, 0, 20000), +(32, 9400013, 2022018, 1, 1, 0, 20000), +(33, 9400013, 2040306, 1, 1, 0, 300), +(34, 9400013, 2043704, 1, 1, 0, 300), +(35, 9400013, 2044605, 1, 1, 0, 300), +(36, 9400013, 2041034, 1, 1, 0, 300), +(37, 9400013, 1032019, 1, 1, 0, 1000), +(38, 9400013, 1102013, 1, 1, 0, 1000), +(39, 9400013, 1322026, 1, 1, 0, 700), +(40, 9400013, 1092015, 1, 1, 0, 700), +(41, 9400013, 1382016, 1, 1, 0, 700), +(42, 9400013, 1002276, 1, 1, 0, 1500), +(43, 9400013, 1002403, 1, 1, 0, 1500), +(44, 9400013, 1472027, 1, 1, 0, 500), +(45, 9400113, 4000140, 1, 1, 0, 600000), +(46, 9400113, 2022027, 1, 1, 0, 200000), +(47, 9400113, 2022027, 1, 1, 0, 200000), +(48, 9400113, 2000004, 1, 1, 0, 999999), +(49, 9400113, 2000004, 1, 1, 0, 999999), +(50, 9400113, 2002008, 1, 1, 0, 200000), +(51, 9400113, 2002008, 1, 1, 0, 200000), +(52, 9400300, 4000141, 1, 1, 0, 600000), +(53, 9400300, 2000004, 1, 1, 0, 999999), +(54, 9400300, 2040813, 1, 1, 0, 3000), +(55, 9400300, 2041030, 1, 1, 0, 3000), +(56, 9400300, 2041040, 1, 1, 0, 3000), +(57, 9400300, 1072238, 1, 1, 0, 8000), +(58, 9400300, 1032026, 1, 1, 0, 10000), +(59, 9400300, 1372011, 1, 1, 0, 7000), +(60, 9400112, 4000139, 1, 1, 0, 600000), +(61, 9400112, 2002011, 1, 1, 0, 200000), +(62, 9400112, 2002011, 1, 1, 0, 200000), +(63, 9400112, 2002011, 1, 1, 0, 200000), +(64, 9400112, 2000004, 1, 1, 0, 999999), +(65, 9400112, 2000004, 1, 1, 0, 999999), +(66, 9400545, 4032024, 1, 1, 0, 50000), +(67, 9400545, 4032025, 1, 1, 0, 600000), +(68, 9400545, 4020006, 1, 1, 0, 9000), +(69, 9400545, 4020008, 1, 1, 0, 9000), +(70, 9400545, 4010001, 1, 1, 0, 9000), +(71, 9400545, 4004001, 1, 1, 0, 10000), +(72, 9400545, 2070006, 1, 1, 0, 200), +(73, 9400545, 2044404, 1, 1, 0, 300), +(74, 9400545, 2044702, 1, 1, 0, 300), +(75, 9400545, 2044305, 1, 1, 0, 300), +(76, 9400545, 1102029, 1, 1, 0, 1000), +(77, 9400545, 1032023, 1, 1, 0, 1000), +(78, 9400545, 1402004, 1, 1, 0, 700), +(79, 9400545, 1072210, 1, 1, 0, 800), +(80, 9400545, 1040104, 1, 1, 0, 800), +(81, 9400545, 1060092, 1, 1, 0, 800), +(82, 9400545, 1082129, 1, 1, 0, 1000), +(83, 9400545, 1442008, 1, 1, 0, 700), +(84, 9400545, 1072178, 1, 1, 0, 800), +(85, 9400545, 1050092, 1, 1, 0, 700), +(86, 9400545, 1002271, 1, 1, 0, 1500), +(87, 9400545, 1051053, 1, 1, 0, 700), +(88, 9400545, 1382008, 1, 1, 0, 700), +(89, 9400545, 1002275, 1, 1, 0, 1500), +(90, 9400545, 1051082, 1, 1, 0, 700), +(91, 9400545, 1050064, 1, 1, 0, 700), +(92, 9400545, 1472028, 1, 1, 0, 500), +(93, 9400545, 1072193, 1, 1, 0, 800), +(94, 9400545, 1072172, 1, 1, 0, 800), +(95, 9400545, 1002285, 1, 1, 0, 1500), +(96, 100100, 4000019, 1, 1, 0, 600000), +(97, 100100, 2000000, 1, 1, 0, 20000), +(98, 100100, 2040002, 1, 1, 0, 300), +(99, 100100, 2041001, 1, 1, 0, 300), +(100, 100100, 2060000, 1, 1, 0, 30000), +(101, 100100, 4010000, 1, 1, 0, 9000), +(102, 100100, 4020000, 1, 1, 0, 9000), +(103, 100100, 2061000, 1, 1, 0, 30000), +(104, 100100, 1002067, 1, 1, 0, 1500), +(105, 100100, 2010009, 1, 1, 0, 20000), +(106, 100101, 4000000, 1, 1, 0, 600000), +(107, 100101, 2041006, 1, 1, 0, 300), +(108, 100101, 2000000, 1, 1, 0, 20000), +(109, 100101, 4020001, 1, 1, 0, 9000), +(110, 100101, 2060000, 1, 1, 0, 30000), +(111, 100101, 4010001, 1, 1, 0, 9000), +(112, 100101, 2061000, 1, 1, 0, 30000), +(113, 100101, 1040013, 1, 1, 0, 800), +(114, 100101, 1041012, 1, 1, 0, 800), +(115, 100101, 1060004, 1, 1, 0, 800), +(116, 100101, 1040017, 1, 1, 0, 800), +(117, 100101, 1060013, 1, 1, 0, 800), +(118, 100101, 2010009, 1, 1, 0, 20000), +(119, 1110100, 4000012, 1, 1, 0, 600000), +(120, 1110100, 2000000, 1, 1, 0, 20000), +(121, 1110100, 2043102, 1, 1, 0, 300), +(122, 1110100, 2000003, 1, 1, 0, 20000), +(123, 1110100, 4020003, 1, 1, 0, 9000), +(124, 1110100, 1322000, 1, 1, 0, 700), +(125, 1110100, 2060000, 1, 1, 0, 30000), +(126, 1110100, 1041044, 1, 1, 0, 800), +(127, 1110100, 1061037, 1, 1, 0, 800), +(128, 1110100, 4010004, 1, 1, 0, 9000), +(129, 1110100, 1092008, 1, 1, 0, 700), +(130, 1110100, 1041017, 1, 1, 0, 800), +(131, 1110100, 1061012, 1, 1, 0, 800), +(132, 1110100, 1462002, 1, 1, 0, 500), +(133, 1110100, 2061000, 1, 1, 0, 30000), +(134, 1110100, 1041063, 1, 1, 0, 800), +(135, 1110100, 1061059, 1, 1, 0, 800), +(136, 1110100, 1452003, 1, 1, 0, 500), +(137, 1110100, 2048000, 1, 1, 0, 300), +(138, 1110100, 1002033, 1, 1, 0, 1500), +(139, 1110100, 1302007, 1, 1, 0, 700), +(140, 1110100, 4020002, 1, 1, 0, 9000), +(141, 1110100, 1032001, 1, 1, 0, 1000), +(142, 1110100, 1002010, 1, 1, 0, 1500), +(143, 1110100, 2000001, 1, 1, 0, 20000), +(144, 1110100, 1002143, 1, 1, 0, 1500), +(145, 1110100, 1432005, 1, 1, 0, 500), +(146, 1110100, 1412012, 1, 1, 0, 700), +(147, 1110100, 1072285, 1, 1, 0, 800), +(148, 1110100, 1482001, 1, 1, 0, 500), +(149, 1110101, 4000005, 1, 1, 0, 600000), +(150, 1110101, 2000000, 1, 1, 0, 20000), +(151, 1110101, 2040802, 1, 1, 0, 300), +(152, 1110101, 1092003, 1, 1, 0, 700), +(153, 1110101, 1002039, 1, 1, 0, 1500), +(154, 1110101, 1442000, 1, 1, 0, 700), +(155, 1110101, 1041061, 1, 1, 0, 800), +(156, 1110101, 1061057, 1, 1, 0, 800), +(157, 1110101, 1041018, 1, 1, 0, 800), +(158, 1110101, 1061013, 1, 1, 0, 800), +(159, 1110101, 2060000, 1, 1, 0, 30000), +(160, 1110101, 4010001, 1, 1, 0, 9000), +(161, 1110101, 4020000, 1, 1, 0, 9000), +(162, 1110101, 2061000, 1, 1, 0, 30000), +(163, 1110101, 1032001, 1, 1, 0, 1000), +(164, 1110101, 1382000, 1, 1, 0, 700), +(165, 1110101, 1302006, 1, 1, 0, 700), +(166, 1110101, 2000001, 1, 1, 0, 20000), +(167, 1110101, 2000003, 1, 1, 0, 20000), +(168, 1110101, 1482000, 1, 1, 0, 500), +(169, 1110101, 1002613, 1, 1, 0, 1500), +(170, 1120100, 4000006, 1, 1, 0, 600000), +(171, 1120100, 2000000, 1, 1, 0, 20000), +(172, 1120100, 2043002, 1, 1, 0, 300), +(173, 1120100, 1032001, 1, 1, 0, 1000), +(174, 1120100, 1422000, 1, 1, 0, 700), +(175, 1120100, 1092000, 1, 1, 0, 700), +(176, 1120100, 2060000, 1, 1, 0, 30000), +(177, 1120100, 4010003, 1, 1, 0, 9000), +(178, 1120100, 4020002, 1, 1, 0, 9000), +(179, 1120100, 2000003, 1, 1, 0, 20000), +(180, 1120100, 1041026, 1, 1, 0, 800), +(181, 1120100, 1061022, 1, 1, 0, 800), +(182, 1120100, 2061000, 1, 1, 0, 30000), +(183, 1120100, 1040037, 1, 1, 0, 800), +(184, 1120100, 1060027, 1, 1, 0, 800), +(185, 1120100, 1482001, 1, 1, 0, 500), +(186, 1130100, 4000018, 1, 1, 0, 600000), +(187, 1130100, 2000000, 1, 1, 0, 20000), +(188, 1130100, 2043202, 1, 1, 0, 300), +(189, 1130100, 1372001, 1, 1, 0, 700), +(190, 1130100, 2000003, 1, 1, 0, 20000), +(191, 1130100, 1072008, 1, 1, 0, 800), +(192, 1130100, 2060000, 1, 1, 0, 30000), +(193, 1130100, 4010005, 1, 1, 0, 9000), +(194, 1130100, 4020004, 1, 1, 0, 9000), +(195, 1130100, 1312016, 1, 1, 0, 700), +(196, 1130100, 1402001, 1, 1, 0, 700), +(197, 1130100, 1032003, 1, 1, 0, 1000), +(198, 1130100, 1092007, 1, 1, 0, 700), +(199, 1130100, 1040019, 1, 1, 0, 800), +(200, 1130100, 1060015, 1, 1, 0, 800), +(201, 1130100, 1041045, 1, 1, 0, 800), +(202, 1130100, 1061038, 1, 1, 0, 800), +(203, 1130100, 2061000, 1, 1, 0, 30000), +(204, 1130100, 1002118, 1, 1, 0, 1500), +(205, 1130100, 1382004, 1, 1, 0, 700), +(206, 1130100, 1402009, 1, 1, 0, 700), +(207, 1130100, 1492001, 1, 1, 0, 500), +(208, 1140100, 2000000, 1, 1, 0, 20000), +(209, 1140100, 2000003, 1, 1, 0, 20000), +(210, 1140100, 4000195, 1, 1, 0, 600000), +(211, 1140100, 2060000, 1, 1, 0, 30000), +(212, 1140100, 2061000, 1, 1, 0, 30000), +(213, 1140100, 4010000, 1, 1, 0, 9000), +(214, 1140100, 4020007, 1, 1, 0, 9000), +(215, 1140100, 4010004, 1, 1, 0, 9000), +(216, 1140100, 2040501, 1, 1, 0, 300), +(217, 1140100, 2040801, 1, 1, 0, 300), +(218, 1140100, 1041062, 1, 1, 0, 800), +(219, 1140100, 1061058, 1, 1, 0, 800), +(220, 1140100, 1050010, 1, 1, 0, 700), +(221, 1140100, 2048001, 1, 1, 0, 300), +(222, 1140100, 1041029, 1, 1, 0, 800), +(223, 1140100, 1061027, 1, 1, 0, 800), +(224, 1140100, 1072046, 1, 1, 0, 800), +(225, 1140100, 1072066, 1, 1, 0, 800), +(226, 1140100, 1082018, 1, 1, 0, 1000), +(227, 1140100, 1002107, 1, 1, 0, 1500), +(228, 1140100, 1002113, 1, 1, 0, 1500), +(229, 1140100, 1050003, 1, 1, 0, 700), +(230, 1140100, 1412012, 1, 1, 0, 700), +(231, 1140100, 1082180, 1, 1, 0, 1000), +(232, 1140100, 2044802, 1, 1, 0, 300), +(233, 120100, 4000011, 1, 1, 0, 600000), +(234, 120100, 2041007, 1, 1, 0, 300), +(235, 120100, 2000000, 1, 1, 0, 20000), +(236, 120100, 4020002, 1, 1, 0, 9000), +(237, 120100, 4010002, 1, 1, 0, 9000), +(238, 120100, 2060000, 1, 1, 0, 30000), +(239, 120100, 1332006, 1, 1, 0, 500), +(240, 120100, 2061000, 1, 1, 0, 30000), +(241, 120100, 1062000, 1, 1, 0, 800), +(242, 120100, 1060007, 1, 1, 0, 800), +(243, 120100, 1061009, 1, 1, 0, 800), +(244, 120100, 2010009, 1, 1, 0, 20000), +(245, 120100, 1002610, 1, 1, 0, 1500), +(246, 1210100, 4000017, 1, 1, 0, 40000), +(247, 1210100, 2041021, 1, 1, 0, 300), +(248, 1210100, 2000000, 1, 1, 0, 20000), +(249, 1210100, 2040702, 1, 1, 0, 300), +(250, 1210100, 1002008, 1, 1, 0, 1500), +(251, 1210100, 1062002, 1, 1, 0, 800), +(252, 1210100, 1422000, 1, 1, 0, 700), +(253, 1210100, 2060000, 1, 1, 0, 30000), +(254, 1210100, 4010006, 1, 1, 0, 9000), +(255, 1210100, 4020006, 1, 1, 0, 9000), +(256, 1210100, 1472000, 1, 1, 0, 500), +(257, 1210100, 4000021, 1, 1, 0, 50000), +(258, 1210100, 2061000, 1, 1, 0, 30000), +(259, 1210100, 1061028, 1, 1, 0, 800), +(260, 1210100, 1041014, 1, 1, 0, 800), +(261, 1210100, 1040034, 1, 1, 0, 800), +(262, 1210100, 2010009, 1, 1, 0, 20000), +(263, 1210100, 1002610, 1, 1, 0, 1500), +(264, 1210101, 4000002, 1, 1, 0, 600000), +(265, 1210101, 2000000, 1, 1, 0, 20000), +(266, 1210101, 4003004, 1, 1, 0, 200000), +(267, 1210101, 2040902, 1, 1, 0, 300), +(268, 1210101, 1040011, 1, 1, 0, 800), +(269, 1210101, 1040034, 1, 1, 0, 800), +(270, 1210101, 1060024, 1, 1, 0, 800), +(271, 1210101, 2060000, 1, 1, 0, 30000), +(272, 1210101, 4010002, 1, 1, 0, 9000), +(273, 1210101, 4020001, 1, 1, 0, 9000), +(274, 1210101, 4000021, 1, 1, 0, 50000), +(275, 1210101, 2061000, 1, 1, 0, 30000), +(276, 1210101, 1402018, 1, 1, 0, 700), +(277, 1210101, 1032003, 1, 1, 0, 1000), +(278, 1210101, 1041012, 1, 1, 0, 800), +(279, 1210101, 1040014, 1, 1, 0, 800), +(280, 1210101, 1492000, 1, 1, 0, 500), +(281, 1210101, 1052098, 1, 1, 0, 700), +(282, 1210101, 1072285, 1, 1, 0, 800), +(283, 1210102, 4000001, 1, 1, 0, 600000), +(284, 1210102, 2000000, 1, 1, 0, 20000), +(285, 1210102, 2040705, 1, 1, 0, 300), +(286, 1210102, 1072004, 1, 1, 0, 800), +(287, 1210102, 1002043, 1, 1, 0, 1500), +(288, 1210102, 1432000, 1, 1, 0, 500), +(289, 1210102, 1312000, 1, 1, 0, 700), +(290, 1210102, 2060000, 1, 1, 0, 30000), +(291, 1210102, 4010000, 1, 1, 0, 9000), +(292, 1210102, 4020007, 1, 1, 0, 9000), +(293, 1210102, 2061000, 1, 1, 0, 30000), +(294, 1210102, 1082012, 1, 1, 0, 1000), +(295, 1210102, 1072015, 1, 1, 0, 800), +(296, 1210102, 1072031, 1, 1, 0, 800), +(297, 1210102, 1052095, 1, 1, 0, 700), +(298, 1210102, 2330000, 1, 1, 0, 500), +(299, 1210103, 2000000, 1, 1, 0, 20000), +(300, 1210103, 2041015, 1, 1, 0, 300), +(301, 1210103, 2043302, 1, 1, 0, 300), +(302, 1210103, 2041004, 1, 1, 0, 300), +(303, 1210103, 2000003, 1, 1, 0, 20000), +(304, 1210103, 4020005, 1, 1, 0, 9000), +(305, 1210103, 4010002, 1, 1, 0, 9000), +(306, 1210103, 2060000, 1, 1, 0, 30000), +(307, 1210103, 2061000, 1, 1, 0, 30000), +(308, 1210103, 4000037, 1, 1, 0, 600000), +(309, 1210103, 1002075, 1, 1, 0, 1500), +(310, 1210103, 1432000, 1, 1, 0, 500), +(311, 1210103, 1040035, 1, 1, 0, 800), +(312, 1210103, 1060025, 1, 1, 0, 800), +(313, 1210103, 1041062, 1, 1, 0, 800), +(314, 1210103, 1061058, 1, 1, 0, 800), +(315, 1210103, 1402018, 1, 1, 0, 700), +(316, 1210103, 1072019, 1, 1, 0, 800), +(317, 1210103, 1432008, 1, 1, 0, 500), +(318, 1210103, 4006000, 1, 1, 0, 10000), +(319, 1210103, 2048001, 1, 1, 0, 300), +(320, 1210103, 1412012, 1, 1, 0, 700), +(321, 1210103, 1082180, 1, 1, 0, 1000), +(322, 1210103, 1492001, 1, 1, 0, 500), +(323, 1210103, 2330000, 1, 1, 0, 500), +(324, 130100, 4000003, 1, 1, 0, 600000), +(325, 130100, 2041008, 1, 1, 0, 300), +(326, 130100, 2000000, 1, 1, 0, 20000), +(327, 130100, 2040402, 1, 1, 0, 300), +(328, 130100, 4020003, 1, 1, 0, 9000), +(329, 130100, 2060000, 1, 1, 0, 30000), +(330, 130100, 4010003, 1, 1, 0, 9000), +(331, 130100, 1332000, 1, 1, 0, 500), +(332, 130100, 2061000, 1, 1, 0, 30000), +(333, 130100, 1072007, 1, 1, 0, 800), +(334, 130100, 1082003, 1, 1, 0, 1000), +(335, 130100, 1452003, 1, 1, 0, 500), +(336, 130100, 2010009, 1, 1, 0, 20000), +(337, 130100, 1061014, 1, 1, 0, 800), +(338, 130100, 1492000, 1, 1, 0, 500), +(339, 130101, 4000016, 1, 1, 0, 600000), +(340, 130101, 2041009, 1, 1, 0, 300), +(341, 130101, 2000000, 1, 1, 0, 20000), +(342, 130101, 2040502, 1, 1, 0, 300), +(343, 130101, 1402001, 1, 1, 0, 700), +(344, 130101, 1322007, 1, 1, 0, 700), +(345, 130101, 2060000, 1, 1, 0, 30000), +(346, 130101, 4010004, 1, 1, 0, 9000), +(347, 130101, 4020004, 1, 1, 0, 9000), +(348, 130101, 2061000, 1, 1, 0, 30000), +(349, 130101, 1372002, 1, 1, 0, 700), +(350, 130101, 1082029, 1, 1, 0, 1000), +(351, 130101, 1072060, 1, 1, 0, 800), +(352, 130101, 1032003, 1, 1, 0, 1000), +(353, 130101, 1061029, 1, 1, 0, 800), +(354, 130101, 2010009, 1, 1, 0, 20000), +(355, 130101, 1052095, 1, 1, 0, 700), +(356, 2100100, 2000001, 1, 1, 0, 20000), +(357, 2100100, 2000003, 1, 1, 0, 20000), +(358, 2100100, 2060000, 1, 1, 0, 30000), +(359, 2100100, 2061000, 1, 1, 0, 30000), +(360, 2100100, 4000324, 1, 1, 0, 600000), +(361, 2100100, 4020006, 1, 1, 0, 9000), +(362, 2100100, 4010001, 1, 1, 0, 9000), +(363, 2100100, 2040601, 1, 1, 0, 300), +(364, 2100100, 1382002, 1, 1, 0, 700), +(365, 2100100, 1002119, 1, 1, 0, 1500), +(366, 2100100, 1332010, 1, 1, 0, 500), +(367, 2100100, 1050025, 1, 1, 0, 700), +(368, 2100100, 1082002, 1, 1, 0, 1000), +(369, 2100100, 1072007, 1, 1, 0, 800), +(370, 2100100, 1032009, 1, 1, 0, 1000), +(371, 2100100, 1050005, 1, 1, 0, 700), +(372, 2100100, 4003004, 1, 1, 0, 200000), +(373, 2100100, 4010007, 1, 1, 0, 9000), +(374, 2100100, 1072288, 1, 1, 0, 800), +(375, 2100100, 2040420, 1, 1, 0, 300), +(376, 2100100, 2049000, 1, 1, 0, 150), +(377, 2100101, 2000001, 1, 1, 0, 20000), +(378, 2100101, 2000003, 1, 1, 0, 20000), +(379, 2100101, 2060000, 1, 1, 0, 30000), +(380, 2100101, 2061000, 1, 1, 0, 30000), +(381, 2100101, 4000325, 1, 1, 0, 600000), +(382, 2100101, 2002002, 1, 1, 0, 20000), +(383, 2100101, 4010006, 1, 1, 0, 9000), +(384, 2100101, 4020001, 1, 1, 0, 9000), +(385, 2100101, 2044602, 1, 1, 0, 300), +(386, 2100101, 1092021, 1, 1, 0, 700), +(387, 2100101, 1472006, 1, 1, 0, 500), +(388, 2100101, 1060017, 1, 1, 0, 800), +(389, 2100101, 1061028, 1, 1, 0, 800), +(390, 2100101, 1002129, 1, 1, 0, 1500), +(391, 2100101, 1041027, 1, 1, 0, 800), +(392, 2100101, 1061025, 1, 1, 0, 800), +(393, 2100101, 4003004, 1, 1, 0, 200000), +(394, 2100101, 4010007, 1, 1, 0, 9000), +(395, 2100101, 1082183, 1, 1, 0, 1000), +(396, 2100101, 2044210, 1, 1, 0, 300), +(397, 2100102, 2000001, 1, 1, 0, 20000), +(398, 2100102, 2000003, 1, 1, 0, 20000), +(399, 2100102, 2060000, 1, 1, 0, 30000), +(400, 2100102, 2061000, 1, 1, 0, 30000), +(401, 2100102, 4000329, 1, 1, 0, 600000), +(402, 2100102, 4010002, 1, 1, 0, 9000), +(403, 2100102, 4020004, 1, 1, 0, 9000), +(404, 2100102, 2040705, 1, 1, 0, 300), +(405, 2100102, 2044102, 1, 1, 0, 300), +(406, 2100102, 1051004, 1, 1, 0, 700), +(407, 2100102, 1050024, 1, 1, 0, 700), +(408, 2100102, 1032006, 1, 1, 0, 1000), +(409, 2100102, 1002048, 1, 1, 0, 1500), +(410, 2100102, 1072027, 1, 1, 0, 800), +(411, 2100102, 1040044, 1, 1, 0, 800), +(412, 2100102, 1060033, 1, 1, 0, 800), +(413, 2100102, 1462003, 1, 1, 0, 500), +(414, 2100102, 2022155, 1, 1, 0, 20000), +(415, 2100102, 4010007, 1, 1, 0, 9000), +(416, 2100102, 1082183, 1, 1, 0, 1000), +(417, 2100102, 1082186, 1, 1, 0, 1000), +(418, 2100102, 2044901, 1, 1, 0, 300), +(419, 2100102, 2043212, 1, 1, 0, 300), +(420, 2100103, 2000001, 1, 1, 0, 20000), +(421, 2100103, 2000003, 1, 1, 0, 20000), +(422, 2100103, 2060000, 1, 1, 0, 30000), +(423, 2100103, 2061000, 1, 1, 0, 30000), +(424, 2100103, 4000330, 1, 1, 0, 600000), +(425, 2100103, 4010003, 1, 1, 0, 9000), +(426, 2100103, 4020004, 1, 1, 0, 9000), +(427, 2100103, 2040501, 1, 1, 0, 300), +(428, 2100103, 1322009, 1, 1, 0, 700), +(429, 2100103, 1092002, 1, 1, 0, 700), +(430, 2100103, 1432002, 1, 1, 0, 500), +(431, 2100103, 1072054, 1, 1, 0, 800), +(432, 2100103, 1082016, 1, 1, 0, 1000), +(433, 2100103, 1072078, 1, 1, 0, 800), +(434, 2100103, 1061054, 1, 1, 0, 800), +(435, 2100103, 1041058, 1, 1, 0, 800), +(436, 2100103, 1002096, 1, 1, 0, 1500), +(437, 2100103, 1050011, 1, 1, 0, 700), +(438, 2100103, 2022155, 1, 1, 0, 20000), +(439, 2100103, 4010007, 1, 1, 0, 9000), +(440, 2100103, 1072291, 1, 1, 0, 800), +(441, 2100103, 2044314, 1, 1, 0, 300), +(442, 2100104, 2000001, 1, 1, 0, 20000), +(443, 2100104, 2000003, 1, 1, 0, 20000), +(444, 2100104, 2060000, 1, 1, 0, 30000), +(445, 2100104, 2061000, 1, 1, 0, 30000), +(446, 2100104, 4000331, 1, 1, 0, 600000), +(447, 2100104, 2002003, 1, 1, 0, 20000), +(448, 2100104, 4020006, 1, 1, 0, 9000), +(449, 2100104, 4020005, 1, 1, 0, 9000), +(450, 2100104, 4004001, 1, 1, 0, 10000), +(451, 2100104, 2041002, 1, 1, 0, 300), +(452, 2100104, 1442001, 1, 1, 0, 700), +(453, 2100104, 1322003, 1, 1, 0, 700), +(454, 2100104, 1092019, 1, 1, 0, 700), +(455, 2100104, 1072087, 1, 1, 0, 800), +(456, 2100104, 1040068, 1, 1, 0, 800), +(457, 2100104, 1060057, 1, 1, 0, 800), +(458, 2100104, 1082052, 1, 1, 0, 1000), +(459, 2100104, 1002004, 1, 1, 0, 1500), +(460, 2100104, 2022155, 1, 1, 0, 20000), +(461, 2100104, 4010007, 1, 1, 0, 9000), +(462, 2100104, 1082186, 1, 1, 0, 1000), +(463, 2100104, 2043214, 1, 1, 0, 300), +(464, 2100105, 2000001, 1, 1, 0, 20000), +(465, 2100105, 2000003, 1, 1, 0, 20000), +(466, 2100105, 2060000, 1, 1, 0, 30000), +(467, 2100105, 2061000, 1, 1, 0, 30000), +(468, 2100105, 4000328, 1, 1, 0, 600000), +(469, 2100105, 4010004, 1, 1, 0, 9000), +(470, 2100105, 4006001, 1, 1, 0, 10000), +(471, 2100105, 2040902, 1, 1, 0, 300), +(472, 2100105, 2044002, 1, 1, 0, 300), +(473, 2100105, 1452003, 1, 1, 0, 500), +(474, 2100105, 1302006, 1, 1, 0, 700), +(475, 2100105, 1372004, 1, 1, 0, 700), +(476, 2100105, 1002013, 1, 1, 0, 1500), +(477, 2100105, 1072086, 1, 1, 0, 800), +(478, 2100105, 1002119, 1, 1, 0, 1500), +(479, 2100105, 1072007, 1, 1, 0, 800), +(480, 2100105, 1082020, 1, 1, 0, 1000), +(481, 2100105, 4010007, 1, 1, 0, 9000), +(482, 2100105, 1052101, 1, 1, 0, 700), +(483, 2100105, 1482003, 1, 1, 0, 500), +(484, 2100105, 2330000, 1, 1, 0, 500), +(485, 2100105, 2040316, 1, 1, 0, 300), +(486, 2100105, 2040319, 1, 1, 0, 300), +(487, 2100105, 2044412, 1, 1, 0, 300), +(488, 2100106, 2000001, 1, 1, 0, 20000), +(489, 2100106, 2000003, 1, 1, 0, 20000), +(490, 2100106, 2060000, 1, 1, 0, 30000), +(491, 2100106, 2061000, 1, 1, 0, 30000), +(492, 2100106, 4000326, 1, 1, 0, 600000), +(493, 2100106, 2002004, 1, 1, 0, 20000), +(494, 2100106, 4020007, 1, 1, 0, 9000), +(495, 2100106, 4020000, 1, 1, 0, 9000), +(496, 2100106, 2044501, 1, 1, 0, 300), +(497, 2100106, 1402002, 1, 1, 0, 700), +(498, 2100106, 1032004, 1, 1, 0, 1000), +(499, 2100106, 1050001, 1, 1, 0, 700), +(500, 2100106, 1002055, 1, 1, 0, 1500), +(501, 2100106, 1040049, 1, 1, 0, 800), +(502, 2100106, 1060037, 1, 1, 0, 800), +(503, 2100106, 1082068, 1, 1, 0, 1000), +(504, 2100106, 1432001, 1, 1, 0, 500), +(505, 2100106, 4010007, 1, 1, 0, 9000), +(506, 2100106, 1492002, 1, 1, 0, 500), +(507, 2100106, 2330000, 1, 1, 0, 500), +(508, 2100106, 2040926, 1, 1, 0, 300), +(509, 2100107, 2000001, 1, 1, 0, 20000), +(510, 2100107, 2000003, 1, 1, 0, 20000), +(511, 2100107, 2060000, 1, 1, 0, 30000), +(512, 2100107, 2061000, 1, 1, 0, 30000), +(513, 2100107, 4000327, 1, 1, 0, 600000), +(514, 2100107, 4020003, 1, 1, 0, 9000), +(515, 2100107, 4020002, 1, 1, 0, 9000), +(516, 2100107, 2048001, 1, 1, 0, 300), +(517, 2100107, 2070002, 1, 1, 0, 500), +(518, 2100107, 1332004, 1, 1, 0, 500), +(519, 2100107, 1382017, 1, 1, 0, 700), +(520, 2100107, 1041054, 1, 1, 0, 800), +(521, 2100107, 1061050, 1, 1, 0, 800), +(522, 2100107, 1002141, 1, 1, 0, 1500), +(523, 2100107, 1051011, 1, 1, 0, 700), +(524, 2100107, 1040059, 1, 1, 0, 800), +(525, 2100107, 1060045, 1, 1, 0, 800), +(526, 2100107, 4010007, 1, 1, 0, 9000), +(527, 2100107, 1492003, 1, 1, 0, 500), +(528, 2100108, 2000001, 1, 1, 0, 20000), +(529, 2100108, 2000003, 1, 1, 0, 20000), +(530, 2100108, 2060000, 1, 1, 0, 30000), +(531, 2100108, 2061000, 1, 1, 0, 30000), +(532, 2100108, 4000333, 1, 1, 0, 600000), +(533, 2100108, 2002005, 1, 1, 0, 20000), +(534, 2100108, 4010002, 1, 1, 0, 9000), +(535, 2100108, 4010001, 1, 1, 0, 9000), +(536, 2100108, 4004002, 1, 1, 0, 10000), +(537, 2100108, 2043002, 1, 1, 0, 300), +(538, 2100108, 2043701, 1, 1, 0, 300), +(539, 2100108, 1332009, 1, 1, 0, 500), +(540, 2100108, 1412004, 1, 1, 0, 700), +(541, 2100108, 1040062, 1, 1, 0, 800), +(542, 2100108, 1060051, 1, 1, 0, 800), +(543, 2100108, 1050029, 1, 1, 0, 700), +(544, 2100108, 1002164, 1, 1, 0, 1500), +(545, 2100108, 1082005, 1, 1, 0, 1000), +(546, 2100108, 4003004, 1, 1, 0, 200000), +(547, 2100108, 4010007, 1, 1, 0, 9000), +(548, 2100108, 1482003, 1, 1, 0, 500), +(549, 2100108, 2044801, 1, 1, 0, 300), +(550, 2100108, 2044014, 1, 1, 0, 300), +(551, 2100108, 2044214, 1, 1, 0, 300), +(552, 210100, 4000004, 1, 1, 0, 600000), +(553, 210100, 2041018, 1, 1, 0, 300), +(554, 210100, 4000010, 1, 1, 0, 600000), +(555, 210100, 2000000, 1, 1, 0, 20000), +(556, 210100, 2040602, 1, 1, 0, 300), +(557, 210100, 1002019, 1, 1, 0, 1500), +(558, 210100, 1412001, 1, 1, 0, 700), +(559, 210100, 2060000, 1, 1, 0, 30000), +(560, 210100, 4010005, 1, 1, 0, 9000), +(561, 210100, 4020005, 1, 1, 0, 9000), +(562, 210100, 2061000, 1, 1, 0, 30000), +(563, 210100, 1432001, 1, 1, 0, 500), +(564, 210100, 1082019, 1, 1, 0, 1000), +(565, 210100, 1072023, 1, 1, 0, 800), +(566, 210100, 1322007, 1, 1, 0, 700), +(567, 210100, 1412012, 1, 1, 0, 700), +(568, 210100, 2010009, 1, 1, 0, 20000), +(569, 210100, 1482000, 1, 1, 0, 500), +(570, 2110200, 4000015, 1, 1, 0, 600000), +(571, 2110200, 2000001, 1, 1, 0, 20000), +(572, 2110200, 2002003, 1, 1, 0, 20000), +(573, 2110200, 2044102, 1, 1, 0, 300), +(574, 2110200, 1002005, 1, 1, 0, 1500), +(575, 2110200, 1041008, 1, 1, 0, 800), +(576, 2110200, 1061006, 1, 1, 0, 800), +(577, 2110200, 1072073, 1, 1, 0, 800), +(578, 2110200, 1050006, 1, 1, 0, 700), +(579, 2110200, 2060000, 1, 1, 0, 30000), +(580, 2110200, 4010000, 1, 1, 0, 9000), +(581, 2110200, 4020006, 1, 1, 0, 9000), +(582, 2110200, 2000003, 1, 1, 0, 20000), +(583, 2110200, 1462004, 1, 1, 0, 500), +(584, 2110200, 1040044, 1, 1, 0, 800), +(585, 2110200, 1060033, 1, 1, 0, 800), +(586, 2110200, 2061000, 1, 1, 0, 30000), +(587, 2110200, 1060002, 1, 1, 0, 800), +(588, 2110200, 1082000, 1, 1, 0, 1000), +(589, 2110200, 1002038, 1, 1, 0, 1500), +(590, 2110200, 1092000, 1, 1, 0, 700), +(591, 2110200, 1302004, 1, 1, 0, 700), +(592, 2110200, 1442001, 1, 1, 0, 700), +(593, 2110200, 1492002, 1, 1, 0, 500), +(594, 2110200, 1052104, 1, 1, 0, 700), +(595, 2110200, 2330000, 1, 1, 0, 500), +(596, 2110200, 2043214, 1, 1, 0, 300), +(597, 2110300, 2000001, 1, 1, 0, 20000), +(598, 2110300, 2000003, 1, 1, 0, 20000), +(599, 2110300, 2060000, 1, 1, 0, 30000), +(600, 2110300, 2061000, 1, 1, 0, 30000), +(601, 2110300, 2002004, 1, 1, 0, 20000), +(602, 2110300, 4020007, 1, 1, 0, 9000), +(603, 2110300, 4020000, 1, 1, 0, 9000), +(604, 2110300, 2044501, 1, 1, 0, 300), +(605, 2110300, 1402002, 1, 1, 0, 700), +(606, 2110300, 1032004, 1, 1, 0, 1000), +(607, 2110300, 1050001, 1, 1, 0, 700), +(608, 2110300, 1002055, 1, 1, 0, 1500), +(609, 2110300, 1040049, 1, 1, 0, 800), +(610, 2110300, 1060037, 1, 1, 0, 800), +(611, 2110300, 1082068, 1, 1, 0, 1000), +(612, 2110300, 1432001, 1, 1, 0, 500), +(613, 2110300, 4010007, 1, 1, 0, 9000), +(614, 2110300, 4000350, 1, 1, 0, 600000), +(615, 2110300, 1002619, 1, 1, 0, 1500), +(616, 2110300, 2043214, 1, 1, 0, 300), +(617, 2110301, 2000001, 1, 1, 0, 20000), +(618, 2110301, 2000003, 1, 1, 0, 20000), +(619, 2110301, 2060000, 1, 1, 0, 30000), +(620, 2110301, 2061000, 1, 1, 0, 30000), +(621, 2110301, 2002005, 1, 1, 0, 20000), +(622, 2110301, 4010002, 1, 1, 0, 9000), +(623, 2110301, 4010001, 1, 1, 0, 9000), +(624, 2110301, 4004002, 1, 1, 0, 10000), +(625, 2110301, 2043002, 1, 1, 0, 300), +(626, 2110301, 2043701, 1, 1, 0, 300), +(627, 2110301, 1332009, 1, 1, 0, 500), +(628, 2110301, 1412004, 1, 1, 0, 700), +(629, 2110301, 1040062, 1, 1, 0, 800), +(630, 2110301, 1060051, 1, 1, 0, 800), +(631, 2110301, 1050029, 1, 1, 0, 700), +(632, 2110301, 1002164, 1, 1, 0, 1500), +(633, 2110301, 1082005, 1, 1, 0, 1000), +(634, 2110301, 4010007, 1, 1, 0, 9000), +(635, 2110301, 4000351, 1, 1, 0, 600000), +(636, 2110301, 1492003, 1, 1, 0, 500), +(637, 2110301, 2330001, 1, 1, 0, 500), +(638, 2110301, 2043114, 1, 1, 0, 300), +(639, 2130100, 4000018, 1, 1, 0, 600000), +(640, 2130100, 2000001, 1, 1, 0, 20000), +(641, 2130100, 2012002, 1, 1, 0, 6000), +(642, 2130100, 2044202, 1, 1, 0, 300), +(643, 2130100, 1051003, 1, 1, 0, 700), +(644, 2130100, 1061006, 1, 1, 0, 800), +(645, 2130100, 1041028, 1, 1, 0, 800), +(646, 2130100, 1061026, 1, 1, 0, 800), +(647, 2130100, 2060000, 1, 1, 0, 30000), +(648, 2130100, 4010001, 1, 1, 0, 9000), +(649, 2130100, 4020007, 1, 1, 0, 9000), +(650, 2130100, 2000003, 1, 1, 0, 20000), +(651, 2130100, 1472006, 1, 1, 0, 500), +(652, 2130100, 1072085, 1, 1, 0, 800), +(653, 2130100, 1002097, 1, 1, 0, 1500), +(654, 2130100, 1472009, 1, 1, 0, 500), +(655, 2130100, 1472012, 1, 1, 0, 500), +(656, 2130100, 2061000, 1, 1, 0, 30000), +(657, 2130100, 1051004, 1, 1, 0, 700), +(658, 2130100, 1072087, 1, 1, 0, 800), +(659, 2130100, 4006001, 1, 1, 0, 10000), +(660, 2130100, 2070009, 1, 1, 0, 500), +(661, 2130100, 4000215, 1, 1, 0, 600000), +(662, 2130100, 1002616, 1, 1, 0, 1500), +(663, 2130100, 2044012, 1, 1, 0, 300), +(664, 2130100, 2044210, 1, 1, 0, 300), +(665, 2130103, 4000034, 1, 1, 0, 600000), +(666, 2130103, 2000001, 1, 1, 0, 20000), +(667, 2130103, 2040902, 1, 1, 0, 300), +(668, 2130103, 4010002, 1, 1, 0, 9000), +(669, 2130103, 4020006, 1, 1, 0, 9000), +(670, 2130103, 2010003, 1, 1, 0, 20000), +(671, 2130103, 1332008, 1, 1, 0, 500), +(672, 2130103, 1072069, 1, 1, 0, 800), +(673, 2130103, 1002027, 1, 1, 0, 1500), +(674, 2130103, 1050005, 1, 1, 0, 700), +(675, 2130103, 1061028, 1, 1, 0, 800), +(676, 2130103, 1041031, 1, 1, 0, 800), +(677, 2130103, 1041021, 1, 1, 0, 800), +(678, 2130103, 1061018, 1, 1, 0, 800), +(679, 2130103, 2048003, 1, 1, 0, 300), +(680, 2130103, 1482002, 1, 1, 0, 500), +(681, 2130103, 2040617, 1, 1, 0, 300), +(682, 2130103, 2049100, 1, 1, 0, 150), +(683, 2220000, 4000000, 1, 1, 0, 600000), +(684, 2220000, 4000000, 1, 1, 0, 600000), +(685, 2220000, 4000000, 1, 1, 0, 600000), +(686, 2220000, 4000016, 1, 1, 0, 600000), +(687, 2220000, 4000016, 1, 1, 0, 600000), +(688, 2220000, 4000016, 1, 1, 0, 600000), +(689, 2220000, 4000019, 1, 1, 0, 600000), +(690, 2220000, 4000019, 1, 1, 0, 600000), +(691, 2220000, 4000019, 1, 1, 0, 600000), +(692, 2220000, 4010000, 1, 1, 0, 90000), +(693, 2220000, 4020000, 1, 1, 0, 90000), +(694, 2220000, 2000000, 1, 1, 0, 200000), +(695, 2220000, 2010009, 1, 1, 0, 200000), +(696, 2220000, 2020014, 1, 1, 0, 200000), +(697, 2220000, 2040001, 1, 1, 0, 3000), +(698, 2220000, 2040301, 1, 1, 0, 3000), +(699, 2220000, 2040401, 1, 1, 0, 3000), +(700, 2220000, 2043201, 1, 1, 0, 3000), +(701, 2220000, 2043701, 1, 1, 0, 3000), +(702, 2220000, 2041016, 1, 1, 0, 3000), +(703, 2220000, 2043801, 1, 1, 0, 3000), +(704, 2220000, 2044001, 1, 1, 0, 3000), +(705, 2220000, 2040501, 1, 1, 0, 3000), +(706, 2220000, 2040601, 1, 1, 0, 3000), +(707, 2220000, 2060000, 1, 1, 0, 300000), +(708, 2220000, 2061000, 1, 1, 0, 300000), +(709, 2220000, 2070000, 1, 1, 0, 5000), +(710, 2220000, 1002049, 1, 1, 0, 15000), +(711, 2220000, 1002073, 1, 1, 0, 15000), +(712, 2220000, 1002159, 1, 1, 0, 15000), +(713, 2220000, 1002150, 1, 1, 0, 15000), +(714, 2220000, 1040041, 1, 1, 0, 8000), +(715, 2220000, 1041024, 1, 1, 0, 8000), +(716, 2220000, 1050025, 1, 1, 0, 7000), +(717, 2220000, 1051005, 1, 1, 0, 7000), +(718, 2220000, 1040023, 1, 1, 0, 8000), +(719, 2220000, 1041033, 1, 1, 0, 8000), +(720, 2220000, 1040050, 1, 1, 0, 8000), +(721, 2220000, 1041060, 1, 1, 0, 8000), +(722, 2220000, 1082001, 1, 1, 0, 10000), +(723, 2220000, 1082028, 1, 1, 0, 10000), +(724, 2220000, 1082018, 1, 1, 0, 10000), +(725, 2220000, 1082039, 1, 1, 0, 10000), +(726, 2220000, 1072052, 1, 1, 0, 8000), +(727, 2220000, 1072074, 1, 1, 0, 8000), +(728, 2220000, 1072069, 1, 1, 0, 8000), +(729, 2220000, 1072087, 1, 1, 0, 8000), +(730, 2220000, 2040002, 1, 1, 0, 3000), +(731, 2220000, 2040302, 1, 1, 0, 3000), +(732, 2220000, 2040402, 1, 1, 0, 3000), +(733, 2220000, 2043302, 1, 1, 0, 3000), +(734, 2220000, 2043702, 1, 1, 0, 3000), +(735, 2220000, 2210006, 1, 1, 0, 999999), +(736, 2220000, 1002619, 1, 1, 0, 15000), +(737, 2220000, 1052104, 1, 1, 0, 7000), +(738, 2220000, 1082186, 1, 1, 0, 10000), +(739, 2220000, 1072291, 1, 1, 0, 8000), +(740, 2220000, 2330000, 1, 1, 0, 5000), +(741, 2220000, 2044801, 1, 1, 0, 3000), +(742, 2220000, 2044902, 1, 1, 0, 3000), +(743, 2220000, 2040418, 1, 1, 0, 3000), +(744, 2220000, 2040928, 1, 1, 0, 3000), +(745, 2220000, 2043114, 1, 1, 0, 3000), +(746, 2220000, 2044414, 1, 1, 0, 3000), +(747, 2220100, 4000009, 1, 1, 0, 600000), +(748, 2220100, 2000001, 1, 1, 0, 20000), +(749, 2220100, 2002002, 1, 1, 0, 20000), +(750, 2220100, 2044002, 1, 1, 0, 300), +(751, 2220100, 1332006, 1, 1, 0, 500), +(752, 2220100, 1051000, 1, 1, 0, 700), +(753, 2220100, 1002127, 1, 1, 0, 1500), +(754, 2220100, 2060000, 1, 1, 0, 30000), +(755, 2220100, 4010006, 1, 1, 0, 9000), +(756, 2220100, 4020005, 1, 1, 0, 9000), +(757, 2220100, 2000003, 1, 1, 0, 20000), +(758, 2220100, 1442001, 1, 1, 0, 700), +(759, 2220100, 1041027, 1, 1, 0, 800), +(760, 2220100, 1061025, 1, 1, 0, 800), +(761, 2220100, 1040012, 1, 1, 0, 800), +(762, 2220100, 1060010, 1, 1, 0, 800), +(763, 2220100, 2061000, 1, 1, 0, 30000), +(764, 2220100, 1072020, 1, 1, 0, 800), +(765, 2220100, 1432001, 1, 1, 0, 500), +(766, 2220100, 4020006, 1, 1, 0, 9000), +(767, 2220100, 2000002, 1, 1, 0, 20000), +(768, 2220100, 1072011, 1, 1, 0, 800), +(769, 2220100, 1332001, 1, 1, 0, 500), +(770, 2220100, 1382002, 1, 1, 0, 700), +(771, 2220100, 1002178, 1, 1, 0, 1500), +(772, 2220100, 1412012, 1, 1, 0, 700), +(773, 2220100, 1002613, 1, 1, 0, 1500), +(774, 2220100, 1002616, 1, 1, 0, 1500), +(775, 2220100, 1002619, 1, 1, 0, 1500), +(776, 2230100, 4000007, 1, 1, 0, 600000), +(777, 2230100, 2000001, 1, 1, 0, 20000), +(778, 2230100, 2002001, 1, 1, 0, 20000), +(779, 2230100, 2044402, 1, 1, 0, 300), +(780, 2230100, 1032009, 1, 1, 0, 1000), +(781, 2230100, 1041060, 1, 1, 0, 800), +(782, 2230100, 1061056, 1, 1, 0, 800), +(783, 2230100, 1002047, 1, 1, 0, 1500), +(784, 2230100, 1032008, 1, 1, 0, 1000), +(785, 2230100, 2060000, 1, 1, 0, 30000), +(786, 2230100, 4010004, 1, 1, 0, 9000), +(787, 2230100, 4020005, 1, 1, 0, 9000), +(788, 2230100, 1302004, 1, 1, 0, 700), +(789, 2230100, 1050026, 1, 1, 0, 700), +(790, 2230100, 2000003, 1, 1, 0, 20000), +(791, 2230100, 1051012, 1, 1, 0, 700), +(792, 2230100, 2061000, 1, 1, 0, 30000), +(793, 2230100, 1041032, 1, 1, 0, 800), +(794, 2230100, 1062006, 1, 1, 0, 800), +(795, 2230100, 1432002, 1, 1, 0, 500), +(796, 2230100, 1040021, 1, 1, 0, 800), +(797, 2230100, 4020007, 1, 1, 0, 9000), +(798, 2230100, 2000002, 1, 1, 0, 20000), +(799, 2230100, 1041007, 1, 1, 0, 800), +(800, 2230100, 1422001, 1, 1, 0, 700), +(801, 2230100, 1060071, 1, 1, 0, 800), +(802, 2230100, 1482003, 1, 1, 0, 500), +(803, 2230100, 2040823, 1, 1, 0, 300), +(804, 2230100, 2044010, 1, 1, 0, 300), +(805, 2230101, 4000008, 1, 1, 0, 600000), +(806, 2230101, 2000001, 1, 1, 0, 20000), +(807, 2230101, 2002000, 1, 1, 0, 20000), +(808, 2230101, 2044302, 1, 1, 0, 300), +(809, 2230101, 1032000, 1, 1, 0, 1000), +(810, 2230101, 1032004, 1, 1, 0, 1000), +(811, 2230101, 1452001, 1, 1, 0, 500), +(812, 2230101, 1412002, 1, 1, 0, 700), +(813, 2230101, 2060000, 1, 1, 0, 30000), +(814, 2230101, 4010002, 1, 1, 0, 9000), +(815, 2230101, 4020003, 1, 1, 0, 9000), +(816, 2230101, 1002158, 1, 1, 0, 1500), +(817, 2230101, 2000003, 1, 1, 0, 20000), +(818, 2230101, 1040048, 1, 1, 0, 800), +(819, 2230101, 2061000, 1, 1, 0, 30000), +(820, 2230101, 1060038, 1, 1, 0, 800), +(821, 2230101, 1372003, 1, 1, 0, 700), +(822, 2230101, 1060018, 1, 1, 0, 800), +(823, 2230101, 1040026, 1, 1, 0, 800), +(824, 2230101, 1040009, 1, 1, 0, 800), +(825, 2230101, 4010003, 1, 1, 0, 9000), +(826, 2230101, 2000002, 1, 1, 0, 20000), +(827, 2230101, 1050030, 1, 1, 0, 700), +(828, 2230101, 1050031, 1, 1, 0, 700), +(829, 2230101, 1432003, 1, 1, 0, 500), +(830, 2230101, 1002035, 1, 1, 0, 1500), +(831, 2230101, 1312007, 1, 1, 0, 700), +(832, 2230101, 1040021, 1, 1, 0, 800), +(833, 2230101, 1082183, 1, 1, 0, 1000), +(834, 2230101, 1492003, 1, 1, 0, 500), +(835, 2230101, 2049100, 1, 1, 0, 150), +(836, 2230102, 4000020, 1, 1, 0, 600000), +(837, 2230102, 2000001, 1, 1, 0, 20000), +(838, 2230102, 2002004, 1, 1, 0, 20000), +(839, 2230102, 2060000, 1, 1, 0, 30000), +(840, 2230102, 4003004, 1, 1, 0, 200000), +(841, 2230102, 1032000, 1, 1, 0, 1000), +(842, 2230102, 1041013, 1, 1, 0, 800), +(843, 2230102, 1061024, 1, 1, 0, 800), +(844, 2230102, 1051005, 1, 1, 0, 700), +(845, 2230102, 1032002, 1, 1, 0, 1000), +(846, 2230102, 4010003, 1, 1, 0, 9000), +(847, 2230102, 4020004, 1, 1, 0, 9000), +(848, 2230102, 1002064, 1, 1, 0, 1500), +(849, 2230102, 2000003, 1, 1, 0, 20000), +(850, 2230102, 1072039, 1, 1, 0, 800), +(851, 2230102, 1072033, 1, 1, 0, 800), +(852, 2230102, 4000021, 1, 1, 0, 50000), +(853, 2230102, 1432003, 1, 1, 0, 500), +(854, 2230102, 1402006, 1, 1, 0, 700), +(855, 2230102, 2061000, 1, 1, 0, 30000), +(856, 2230102, 1382017, 1, 1, 0, 700), +(857, 2230102, 1040079, 1, 1, 0, 800), +(858, 2230102, 1060069, 1, 1, 0, 800), +(859, 2230102, 1002151, 1, 1, 0, 1500), +(860, 2230102, 1060050, 1, 1, 0, 800), +(861, 2230102, 1452005, 1, 1, 0, 500), +(862, 2230102, 1462004, 1, 1, 0, 500), +(863, 2230102, 1002166, 1, 1, 0, 1500), +(864, 2230102, 1412005, 1, 1, 0, 700), +(865, 2230102, 1082186, 1, 1, 0, 1000), +(866, 2230102, 2330001, 1, 1, 0, 500), +(867, 2230103, 4000097, 1, 1, 0, 600000), +(868, 2230103, 4131000, 1, 1, 0, 6000), +(869, 2230103, 2060000, 1, 1, 0, 30000), +(870, 2230103, 2061000, 1, 1, 0, 30000), +(871, 2230103, 2002006, 1, 1, 0, 20000), +(872, 2230103, 4010003, 1, 1, 0, 9000), +(873, 2230103, 4004003, 1, 1, 0, 10000), +(874, 2230103, 2000001, 1, 1, 0, 20000), +(875, 2230103, 2000003, 1, 1, 0, 20000), +(876, 2230103, 2040900, 1, 1, 0, 300), +(877, 2230103, 1332020, 1, 1, 0, 500), +(878, 2230103, 1402010, 1, 1, 0, 700), +(879, 2230103, 1302003, 1, 1, 0, 700), +(880, 2230103, 1312003, 1, 1, 0, 700), +(881, 2230103, 1082017, 1, 1, 0, 1000), +(882, 2230103, 1002020, 1, 1, 0, 1500), +(883, 2230103, 1050023, 1, 1, 0, 700), +(884, 2230103, 2070000, 1, 1, 0, 500), +(885, 2230103, 1462003, 1, 1, 0, 500), +(886, 2230103, 1072288, 1, 1, 0, 800), +(887, 2230103, 1072291, 1, 1, 0, 800), +(888, 2230103, 2044802, 1, 1, 0, 300), +(889, 2230103, 2040319, 1, 1, 0, 300), +(890, 2230103, 2044114, 1, 1, 0, 300), +(891, 2230104, 4000098, 1, 1, 0, 600000), +(892, 2230104, 4131010, 1, 1, 0, 6000), +(893, 2230104, 2060000, 1, 1, 0, 30000), +(894, 2230104, 2061000, 1, 1, 0, 30000), +(895, 2230104, 2002007, 1, 1, 0, 20000), +(896, 2230104, 4010001, 1, 1, 0, 9000), +(897, 2230104, 4010002, 1, 1, 0, 9000), +(898, 2230104, 4004002, 1, 1, 0, 10000), +(899, 2230104, 2000002, 1, 1, 0, 20000), +(900, 2230104, 2000003, 1, 1, 0, 20000), +(901, 2230104, 2040601, 1, 1, 0, 300), +(902, 2230104, 1332010, 1, 1, 0, 500), +(903, 2230104, 1061034, 1, 1, 0, 800), +(904, 2230104, 1041041, 1, 1, 0, 800), +(905, 2230104, 1382002, 1, 1, 0, 700), +(906, 2230104, 1082043, 1, 1, 0, 1000), +(907, 2230104, 1002162, 1, 1, 0, 1500), +(908, 2230104, 1050028, 1, 1, 0, 700), +(909, 2230104, 2070002, 1, 1, 0, 500), +(910, 2230104, 1082042, 1, 1, 0, 1000), +(911, 2230104, 1052104, 1, 1, 0, 700), +(912, 2230104, 2040929, 1, 1, 0, 300), +(913, 2230104, 2043112, 1, 1, 0, 300), +(914, 2230105, 4000161, 1, 1, 0, 600000), +(915, 2230105, 4131000, 1, 1, 0, 6000), +(916, 2230105, 2060000, 1, 1, 0, 30000), +(917, 2230105, 2061000, 1, 1, 0, 30000), +(918, 2230105, 2002004, 1, 1, 0, 20000), +(919, 2230105, 4010001, 1, 1, 0, 9000), +(920, 2230105, 4004003, 1, 1, 0, 10000), +(921, 2230105, 2000001, 1, 1, 0, 20000), +(922, 2230105, 2000003, 1, 1, 0, 20000), +(923, 2230105, 2040900, 1, 1, 0, 300), +(924, 2230105, 1312003, 1, 1, 0, 700), +(925, 2230105, 1322004, 1, 1, 0, 700), +(926, 2230105, 1041042, 1, 1, 0, 800), +(927, 2230105, 1061035, 1, 1, 0, 800), +(928, 2230105, 1072007, 1, 1, 0, 800), +(929, 2230105, 1072046, 1, 1, 0, 800), +(930, 2230105, 1050011, 1, 1, 0, 700), +(931, 2230105, 1082016, 1, 1, 0, 1000), +(932, 2230105, 2070000, 1, 1, 0, 500), +(933, 2230105, 1032005, 1, 1, 0, 1000), +(934, 2230105, 1492002, 1, 1, 0, 500), +(935, 2230105, 2040617, 1, 1, 0, 300), +(936, 2230105, 2043015, 1, 1, 0, 300), +(937, 2230106, 4000163, 1, 1, 0, 600000), +(938, 2230106, 2000001, 1, 1, 0, 20000), +(939, 2230106, 2002001, 1, 1, 0, 20000), +(940, 2230106, 2060000, 1, 1, 0, 30000), +(941, 2230106, 2002005, 1, 1, 0, 20000), +(942, 2230106, 2040001, 1, 1, 0, 300), +(943, 2230106, 4010003, 1, 1, 0, 9000), +(944, 2230106, 4020004, 1, 1, 0, 9000), +(945, 2230106, 1332013, 1, 1, 0, 500), +(946, 2230106, 1041040, 1, 1, 0, 800), +(947, 2230106, 1061033, 1, 1, 0, 800), +(948, 2230106, 2000003, 1, 1, 0, 20000), +(949, 2230106, 1002146, 1, 1, 0, 1500), +(950, 2230106, 1002158, 1, 1, 0, 1500), +(951, 2230106, 2040401, 1, 1, 0, 300), +(952, 2230106, 1041050, 1, 1, 0, 800), +(953, 2230106, 1061046, 1, 1, 0, 800), +(954, 2230106, 2061000, 1, 1, 0, 30000), +(955, 2230106, 1332009, 1, 1, 0, 500), +(956, 2230106, 1040040, 1, 1, 0, 800), +(957, 2230106, 1060060, 1, 1, 0, 800), +(958, 2230106, 1052104, 1, 1, 0, 700), +(959, 2230106, 2040417, 1, 1, 0, 300), +(960, 2230107, 4000162, 1, 1, 0, 600000), +(961, 2230107, 2000001, 1, 1, 0, 20000), +(962, 2230107, 2002000, 1, 1, 0, 20000), +(963, 2230107, 2044302, 1, 1, 0, 300), +(964, 2230107, 1402000, 1, 1, 0, 700), +(965, 2230107, 1082026, 1, 1, 0, 1000), +(966, 2230107, 2041004, 1, 1, 0, 300), +(967, 2230107, 1041034, 1, 1, 0, 800), +(968, 2230107, 1062006, 1, 1, 0, 800), +(969, 2230107, 2060000, 1, 1, 0, 30000), +(970, 2230107, 4010002, 1, 1, 0, 9000), +(971, 2230107, 4020005, 1, 1, 0, 9000), +(972, 2230107, 1072051, 1, 1, 0, 800), +(973, 2230107, 2000003, 1, 1, 0, 20000), +(974, 2230107, 1332004, 1, 1, 0, 500), +(975, 2230107, 2061000, 1, 1, 0, 30000), +(976, 2230107, 1041051, 1, 1, 0, 800), +(977, 2230107, 1061047, 1, 1, 0, 800), +(978, 2230107, 1061054, 1, 1, 0, 800), +(979, 2230107, 1041058, 1, 1, 0, 800), +(980, 2230107, 1072288, 1, 1, 0, 800), +(981, 2230107, 2043110, 1, 1, 0, 300), +(982, 2230108, 4000160, 1, 1, 0, 600000), +(983, 2230108, 2000001, 1, 1, 0, 20000), +(984, 2230108, 2002003, 1, 1, 0, 20000), +(985, 2230108, 2044202, 1, 1, 0, 300), +(986, 2230108, 1072065, 1, 1, 0, 800), +(987, 2230108, 1041027, 1, 1, 0, 800), +(988, 2230108, 1061025, 1, 1, 0, 800), +(989, 2230108, 1002131, 1, 1, 0, 1500), +(990, 2230108, 2060000, 1, 1, 0, 30000), +(991, 2230108, 4010000, 1, 1, 0, 9000), +(992, 2230108, 4020007, 1, 1, 0, 9000), +(993, 2230108, 2000003, 1, 1, 0, 20000), +(994, 2230108, 1072054, 1, 1, 0, 800), +(995, 2230108, 1002119, 1, 1, 0, 1500), +(996, 2230108, 2061000, 1, 1, 0, 30000), +(997, 2230108, 1051005, 1, 1, 0, 700), +(998, 2230108, 1050024, 1, 1, 0, 700), +(999, 2230108, 4006001, 1, 1, 0, 10000), +(1000, 2230108, 1032004, 1, 1, 0, 1000), +(1001, 2230108, 1052101, 1, 1, 0, 700), +(1002, 2230108, 2040623, 1, 1, 0, 300), +(1003, 2230109, 4000164, 1, 1, 0, 600000), +(1004, 2230109, 4131010, 1, 1, 0, 6000), +(1005, 2230109, 2060000, 1, 1, 0, 30000), +(1006, 2230109, 2061000, 1, 1, 0, 30000), +(1007, 2230109, 2002002, 1, 1, 0, 20000), +(1008, 2230109, 4010004, 1, 1, 0, 9000), +(1009, 2230109, 4020003, 1, 1, 0, 9000), +(1010, 2230109, 1032007, 1, 1, 0, 1000), +(1011, 2230109, 4004002, 1, 1, 0, 10000), +(1012, 2230109, 2000002, 1, 1, 0, 20000), +(1013, 2230109, 2000003, 1, 1, 0, 20000), +(1014, 2230109, 2040701, 1, 1, 0, 300), +(1015, 2230109, 1002034, 1, 1, 0, 1500), +(1016, 2230109, 1372003, 1, 1, 0, 700), +(1017, 2230109, 1040041, 1, 1, 0, 800), +(1018, 2230109, 1060030, 1, 1, 0, 800), +(1019, 2230109, 1072054, 1, 1, 0, 800), +(1020, 2230109, 1072027, 1, 1, 0, 800), +(1021, 2230109, 1050021, 1, 1, 0, 700), +(1022, 2230109, 2070002, 1, 1, 0, 500), +(1023, 2230109, 1051007, 1, 1, 0, 700), +(1024, 2230109, 1002065, 1, 1, 0, 1500), +(1025, 2230109, 1002619, 1, 1, 0, 1500), +(1026, 2230110, 2060000, 1, 1, 0, 30000), +(1027, 2230110, 2061000, 1, 1, 0, 30000), +(1028, 2230110, 4000196, 1, 1, 0, 600000), +(1029, 2230110, 2000001, 1, 1, 0, 20000), +(1030, 2230110, 2000003, 1, 1, 0, 20000), +(1031, 2230110, 4020001, 1, 1, 0, 9000), +(1032, 2230110, 4020002, 1, 1, 0, 9000), +(1033, 2230110, 4010000, 1, 1, 0, 9000), +(1034, 2230110, 2002003, 1, 1, 0, 20000), +(1035, 2230110, 2041016, 1, 1, 0, 300), +(1036, 2230110, 1002121, 1, 1, 0, 1500), +(1037, 2230110, 1002058, 1, 1, 0, 1500), +(1038, 2230110, 2040901, 1, 1, 0, 300), +(1039, 2230110, 1002131, 1, 1, 0, 1500), +(1040, 2230110, 1040020, 1, 1, 0, 800), +(1041, 2230110, 1060014, 1, 1, 0, 800), +(1042, 2230110, 1072087, 1, 1, 0, 800), +(1043, 2230110, 1072053, 1, 1, 0, 800), +(1044, 2230110, 1082043, 1, 1, 0, 1000), +(1045, 2230110, 1332010, 1, 1, 0, 500), +(1046, 2230110, 1082006, 1, 1, 0, 1000), +(1047, 2230110, 1082026, 1, 1, 0, 1000), +(1048, 2230110, 1002616, 1, 1, 0, 1500), +(1049, 2230110, 2330000, 1, 1, 0, 500), +(1050, 2230110, 2044312, 1, 1, 0, 300), +(1051, 2230110, 2044805, 1, 1, 0, 300), +(1052, 2230111, 2000001, 1, 1, 0, 20000), +(1053, 2230111, 2000003, 1, 1, 0, 20000), +(1054, 2230111, 4000197, 1, 1, 0, 600000), +(1055, 2230111, 2002000, 1, 1, 0, 20000), +(1056, 2230111, 4010005, 1, 1, 0, 9000), +(1057, 2230111, 4010001, 1, 1, 0, 9000), +(1058, 2230111, 4020003, 1, 1, 0, 9000), +(1059, 2230111, 2060000, 1, 1, 0, 30000), +(1060, 2230111, 2061000, 1, 1, 0, 30000), +(1061, 2230111, 2040301, 1, 1, 0, 300), +(1062, 2230111, 2044301, 1, 1, 0, 300), +(1063, 2230111, 1302002, 1, 1, 0, 700), +(1064, 2230111, 1372004, 1, 1, 0, 700), +(1065, 2230111, 1040042, 1, 1, 0, 800), +(1066, 2230111, 1060031, 1, 1, 0, 800), +(1067, 2230111, 1041023, 1, 1, 0, 800), +(1068, 2230111, 1061019, 1, 1, 0, 800), +(1069, 2230111, 2043801, 1, 1, 0, 300), +(1070, 2230111, 1452005, 1, 1, 0, 500), +(1071, 2230111, 1082049, 1, 1, 0, 1000), +(1072, 2230111, 1082051, 1, 1, 0, 1000), +(1073, 2230111, 2049000, 1, 1, 0, 150), +(1074, 2230200, 4000165, 1, 1, 0, 600000), +(1075, 2230200, 2044601, 1, 1, 0, 300), +(1076, 2230200, 2000001, 1, 1, 0, 20000), +(1077, 2230200, 2000003, 1, 1, 0, 20000), +(1078, 2230200, 4010006, 1, 1, 0, 9000), +(1079, 2230200, 4020002, 1, 1, 0, 9000), +(1080, 2230200, 4004000, 1, 1, 0, 10000), +(1081, 2230200, 1040072, 1, 1, 0, 800), +(1082, 2230200, 1060061, 1, 1, 0, 800), +(1083, 2230200, 1422001, 1, 1, 0, 700), +(1084, 2230200, 1412000, 1, 1, 0, 700), +(1085, 2230200, 1072086, 1, 1, 0, 800), +(1086, 2230200, 1002160, 1, 1, 0, 1500), +(1087, 2230200, 1040062, 1, 1, 0, 800), +(1088, 2230200, 1060051, 1, 1, 0, 800), +(1089, 2230200, 2061000, 1, 1, 0, 30000), +(1090, 2230200, 2060000, 1, 1, 0, 30000), +(1091, 2230200, 2040501, 1, 1, 0, 300), +(1092, 2230200, 4006000, 1, 1, 0, 10000), +(1093, 2230200, 1412006, 1, 1, 0, 700), +(1094, 2230200, 1072291, 1, 1, 0, 800), +(1095, 2300100, 4000042, 1, 1, 0, 600000), +(1096, 2300100, 2060000, 1, 1, 0, 30000), +(1097, 2300100, 2061000, 1, 1, 0, 30000), +(1098, 2300100, 2000001, 1, 1, 0, 20000), +(1099, 2300100, 2000003, 1, 1, 0, 20000), +(1100, 2300100, 4010001, 1, 1, 0, 9000), +(1101, 2300100, 4020000, 1, 1, 0, 9000), +(1102, 2300100, 2010004, 1, 1, 0, 20000), +(1103, 2300100, 4003004, 1, 1, 0, 200000), +(1104, 2300100, 1040009, 1, 1, 0, 800), +(1105, 2300100, 1060009, 1, 1, 0, 800), +(1106, 2300100, 1040043, 1, 1, 0, 800), +(1107, 2300100, 1060032, 1, 1, 0, 800), +(1108, 2300100, 1041039, 1, 1, 0, 800), +(1109, 2300100, 1061041, 1, 1, 0, 800), +(1110, 2300100, 1082002, 1, 1, 0, 1000), +(1111, 2300100, 2048004, 1, 1, 0, 300), +(1112, 2300100, 2041002, 1, 1, 0, 300), +(1113, 2300100, 1002119, 1, 1, 0, 1500), +(1114, 2300100, 1452005, 1, 1, 0, 500), +(1115, 2300100, 1052098, 1, 1, 0, 700), +(1116, 2300100, 1052101, 1, 1, 0, 700), +(1117, 2300100, 2044801, 1, 1, 0, 300), +(1118, 2300100, 2040024, 1, 1, 0, 300), +(1119, 2300100, 2043112, 1, 1, 0, 300), +(1120, 3000000, 4000063, 1, 1, 0, 600000), +(1121, 3000000, 2041016, 1, 1, 0, 300), +(1122, 3000000, 2000001, 1, 1, 0, 20000), +(1123, 3000000, 2000003, 1, 1, 0, 20000), +(1124, 3000000, 4020004, 1, 1, 0, 9000), +(1125, 3000000, 4010002, 1, 1, 0, 9000), +(1126, 3000000, 4004000, 1, 1, 0, 10000), +(1127, 3000000, 1382018, 1, 1, 0, 700), +(1128, 3000000, 1312016, 1, 1, 0, 700), +(1129, 3000000, 1312005, 1, 1, 0, 700), +(1130, 3000000, 1040021, 1, 1, 0, 800), +(1131, 3000000, 1060017, 1, 1, 0, 800), +(1132, 3000000, 1002137, 1, 1, 0, 1500), +(1133, 3000000, 1032006, 1, 1, 0, 1000), +(1134, 3000000, 1060050, 1, 1, 0, 800), +(1135, 3000000, 1040061, 1, 1, 0, 800), +(1136, 3000000, 2061000, 1, 1, 0, 30000), +(1137, 3000000, 2060000, 1, 1, 0, 30000), +(1138, 3000000, 2041005, 1, 1, 0, 300), +(1139, 3000000, 4006000, 1, 1, 0, 10000), +(1140, 3000000, 1082037, 1, 1, 0, 1000), +(1141, 3000000, 1002622, 1, 1, 0, 1500), +(1142, 3000000, 2040316, 1, 1, 0, 300), +(1143, 3000000, 2040620, 1, 1, 0, 300), +(1144, 3000001, 4000068, 1, 1, 0, 600000), +(1145, 3000001, 2000001, 1, 1, 0, 20000), +(1146, 3000001, 2000003, 1, 1, 0, 20000), +(1147, 3000001, 4020004, 1, 1, 0, 9000), +(1148, 3000001, 4010002, 1, 1, 0, 9000), +(1149, 3000001, 2050000, 1, 1, 0, 50000), +(1150, 3000001, 2050001, 1, 1, 0, 50000), +(1151, 3000001, 2050002, 1, 1, 0, 50000), +(1152, 3000001, 2050003, 1, 1, 0, 50000), +(1153, 3000001, 2050004, 1, 1, 0, 50000), +(1154, 3000005, 4000106, 1, 1, 0, 600000), +(1155, 3000005, 4131003, 1, 1, 0, 6000), +(1156, 3000005, 2060000, 1, 1, 0, 30000), +(1157, 3000005, 2061000, 1, 1, 0, 30000), +(1158, 3000005, 4010001, 1, 1, 0, 9000), +(1159, 3000005, 4020000, 1, 1, 0, 9000), +(1160, 3000005, 4004001, 1, 1, 0, 10000), +(1161, 3000005, 2000002, 1, 1, 0, 20000), +(1162, 3000005, 2000003, 1, 1, 0, 20000), +(1163, 3000005, 2040701, 1, 1, 0, 300), +(1164, 3000005, 1462000, 1, 1, 0, 500), +(1165, 3000005, 1322014, 1, 1, 0, 700), +(1166, 3000005, 1050030, 1, 1, 0, 700), +(1167, 3000005, 1040058, 1, 1, 0, 800), +(1168, 3000005, 1060044, 1, 1, 0, 800), +(1169, 3000005, 1041058, 1, 1, 0, 800), +(1170, 3000005, 1061054, 1, 1, 0, 800), +(1171, 3000005, 1072101, 1, 1, 0, 800), +(1172, 3000005, 1002013, 1, 1, 0, 1500), +(1173, 3000005, 1052107, 1, 1, 0, 700), +(1174, 3000006, 4000166, 1, 1, 0, 600000), +(1175, 3000006, 4131003, 1, 1, 0, 6000), +(1176, 3000006, 2060000, 1, 1, 0, 30000), +(1177, 3000006, 2061000, 1, 1, 0, 30000), +(1178, 3000006, 4010005, 1, 1, 0, 9000), +(1179, 3000006, 4020001, 1, 1, 0, 9000), +(1180, 3000006, 4004001, 1, 1, 0, 10000), +(1181, 3000006, 2000002, 1, 1, 0, 20000), +(1182, 3000006, 2000003, 1, 1, 0, 20000), +(1183, 3000006, 2040601, 1, 1, 0, 300), +(1184, 3000006, 1082046, 1, 1, 0, 1000), +(1185, 3000006, 1382017, 1, 1, 0, 700), +(1186, 3000006, 1082005, 1, 1, 0, 1000), +(1187, 3000006, 1050002, 1, 1, 0, 700), +(1188, 3000006, 1072086, 1, 1, 0, 800), +(1189, 3000006, 1072103, 1, 1, 0, 800), +(1190, 3000006, 1462000, 1, 1, 0, 500), +(1191, 3000006, 1040040, 1, 1, 0, 800), +(1192, 3000006, 1060060, 1, 1, 0, 800), +(1193, 3000006, 1041052, 1, 1, 0, 800), +(1194, 3000006, 1061048, 1, 1, 0, 800), +(1195, 3000006, 1082189, 1, 1, 0, 1000), +(1196, 3000006, 2040422, 1, 1, 0, 300), +(1197, 3000006, 2040530, 1, 1, 0, 300), +(1198, 3100101, 2000003, 1, 1, 0, 20000), +(1199, 3100101, 2060000, 1, 1, 0, 30000), +(1200, 3100101, 2061000, 1, 1, 0, 30000), +(1201, 3100101, 2000002, 1, 1, 0, 20000), +(1202, 3100101, 4000334, 1, 1, 0, 600000), +(1203, 3100101, 4010005, 1, 1, 0, 9000), +(1204, 3100101, 4020000, 1, 1, 0, 9000), +(1205, 3100101, 4006000, 1, 1, 0, 10000), +(1206, 3100101, 2044701, 1, 1, 0, 300), +(1207, 3100101, 1332020, 1, 1, 0, 500), +(1208, 3100101, 1040000, 1, 1, 0, 800), +(1209, 3100101, 1060075, 1, 1, 0, 800), +(1210, 3100101, 1402010, 1, 1, 0, 700), +(1211, 3100101, 1032007, 1, 1, 0, 1000), +(1212, 3100101, 1072078, 1, 1, 0, 800), +(1213, 3100101, 1082046, 1, 1, 0, 1000), +(1214, 3100101, 1002156, 1, 1, 0, 1500), +(1215, 3100101, 4010007, 1, 1, 0, 9000), +(1216, 3100101, 1002622, 1, 1, 0, 1500), +(1217, 3100101, 4130005, 1, 1, 0, 6000), +(1218, 3100101, 4130009, 1, 1, 0, 6000), +(1219, 3100102, 2000003, 1, 1, 0, 20000), +(1220, 3100102, 2060000, 1, 1, 0, 30000), +(1221, 3100102, 2061000, 1, 1, 0, 30000), +(1222, 3100102, 2000002, 1, 1, 0, 20000), +(1223, 3100102, 4000335, 1, 1, 0, 600000), +(1224, 3100102, 4020002, 1, 1, 0, 9000), +(1225, 3100102, 4006000, 1, 1, 0, 10000), +(1226, 3100102, 2040401, 1, 1, 0, 300), +(1227, 3100102, 2041018, 1, 1, 0, 300), +(1228, 3100102, 1462004, 1, 1, 0, 500), +(1229, 3100102, 1472011, 1, 1, 0, 500), +(1230, 3100102, 1002181, 1, 1, 0, 1500), +(1231, 3100102, 1050022, 1, 1, 0, 700), +(1232, 3100102, 1061048, 1, 1, 0, 800), +(1233, 3100102, 1041052, 1, 1, 0, 800), +(1234, 3100102, 1082069, 1, 1, 0, 1000), +(1235, 3100102, 4003004, 1, 1, 0, 200000), +(1236, 3100102, 4010007, 1, 1, 0, 9000), +(1237, 3100102, 1072294, 1, 1, 0, 800), +(1238, 3110100, 2000002, 1, 1, 0, 20000), +(1239, 3110100, 2000003, 1, 1, 0, 20000), +(1240, 3110100, 4010002, 1, 1, 0, 9000), +(1241, 3110100, 4020002, 1, 1, 0, 9000), +(1242, 3110100, 1322009, 1, 1, 0, 700), +(1243, 3110100, 1332014, 1, 1, 0, 500), +(1244, 3110100, 4000032, 1, 1, 0, 600000), +(1245, 3110100, 2041002, 1, 1, 0, 300), +(1246, 3110100, 4006000, 1, 1, 0, 10000), +(1247, 3110100, 1051013, 1, 1, 0, 700), +(1248, 3110100, 1082049, 1, 1, 0, 1000), +(1249, 3110100, 1422001, 1, 1, 0, 700), +(1250, 3110100, 1041051, 1, 1, 0, 800), +(1251, 3110100, 1061047, 1, 1, 0, 800), +(1252, 3110100, 1082046, 1, 1, 0, 1000), +(1253, 3110100, 1072112, 1, 1, 0, 800), +(1254, 3110100, 1092012, 1, 1, 0, 700), +(1255, 3110100, 1432005, 1, 1, 0, 500), +(1256, 3110100, 1002622, 1, 1, 0, 1500), +(1257, 3110100, 2044802, 1, 1, 0, 300), +(1258, 3110100, 4130002, 1, 1, 0, 6000), +(1259, 3110100, 4130008, 1, 1, 0, 6000), +(1260, 3110100, 4130010, 1, 1, 0, 6000), +(1261, 3110101, 4000107, 1, 1, 0, 600000), +(1262, 3110101, 4131001, 1, 1, 0, 6000), +(1263, 3110101, 2002009, 1, 1, 0, 20000), +(1264, 3110101, 2060000, 1, 1, 0, 30000), +(1265, 3110101, 2061000, 1, 1, 0, 30000), +(1266, 3110101, 4020001, 1, 1, 0, 9000), +(1267, 3110101, 4004001, 1, 1, 0, 10000), +(1268, 3110101, 2000002, 1, 1, 0, 20000), +(1269, 3110101, 2000003, 1, 1, 0, 20000), +(1270, 3110101, 2041017, 1, 1, 0, 300), +(1271, 3110101, 1092007, 1, 1, 0, 700), +(1272, 3110101, 1041055, 1, 1, 0, 800), +(1273, 3110101, 1061051, 1, 1, 0, 800), +(1274, 3110101, 1082007, 1, 1, 0, 1000), +(1275, 3110101, 1072077, 1, 1, 0, 800), +(1276, 3110101, 1462004, 1, 1, 0, 500), +(1277, 3110101, 1050002, 1, 1, 0, 700), +(1278, 3110101, 1040062, 1, 1, 0, 800), +(1279, 3110101, 1060051, 1, 1, 0, 800), +(1280, 3110101, 1082035, 1, 1, 0, 1000), +(1281, 3110101, 1072090, 1, 1, 0, 800), +(1282, 3110101, 1472014, 1, 1, 0, 500), +(1283, 3110101, 1082189, 1, 1, 0, 1000), +(1284, 3110101, 2330001, 1, 1, 0, 500), +(1285, 3110101, 2044012, 1, 1, 0, 300), +(1286, 3110101, 4130002, 1, 1, 0, 6000), +(1287, 3110102, 4000095, 1, 1, 0, 600000), +(1288, 3110102, 4000021, 1, 1, 0, 50000), +(1289, 3110102, 4131002, 1, 1, 0, 6000), +(1290, 3110102, 2060000, 1, 1, 0, 30000), +(1291, 3110102, 2061000, 1, 1, 0, 30000), +(1292, 3110102, 4010001, 1, 1, 0, 9000), +(1293, 3110102, 4010005, 1, 1, 0, 9000), +(1294, 3110102, 4020002, 1, 1, 0, 9000), +(1295, 3110102, 4004000, 1, 1, 0, 10000), +(1296, 3110102, 2000002, 1, 1, 0, 20000), +(1297, 3110102, 2000003, 1, 1, 0, 20000), +(1298, 3110102, 2044401, 1, 1, 0, 300), +(1299, 3110102, 1002173, 1, 1, 0, 1500), +(1300, 3110102, 1002164, 1, 1, 0, 1500), +(1301, 3110102, 1082051, 1, 1, 0, 1000), +(1302, 3110102, 1072035, 1, 1, 0, 800), +(1303, 3110102, 1332009, 1, 1, 0, 500), +(1304, 3110102, 1040029, 1, 1, 0, 800), +(1305, 3110102, 1060020, 1, 1, 0, 800), +(1306, 3110102, 1082068, 1, 1, 0, 1000), +(1307, 3110102, 1312006, 1, 1, 0, 700), +(1308, 3110102, 1322016, 1, 1, 0, 700), +(1309, 3110102, 1072294, 1, 1, 0, 800), +(1310, 3110102, 2044210, 1, 1, 0, 300), +(1311, 3110102, 4130003, 1, 1, 0, 6000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(1312, 3110102, 4130004, 1, 1, 0, 6000), +(1313, 3110102, 4130011, 1, 1, 0, 6000), +(1314, 3110300, 2000003, 1, 1, 0, 20000), +(1315, 3110300, 2060000, 1, 1, 0, 30000), +(1316, 3110300, 2061000, 1, 1, 0, 30000), +(1317, 3110300, 2000002, 1, 1, 0, 20000), +(1318, 3110300, 4010005, 1, 1, 0, 9000), +(1319, 3110300, 4020000, 1, 1, 0, 9000), +(1320, 3110300, 4006000, 1, 1, 0, 10000), +(1321, 3110300, 2044701, 1, 1, 0, 300), +(1322, 3110300, 1332020, 1, 1, 0, 500), +(1323, 3110300, 1040000, 1, 1, 0, 800), +(1324, 3110300, 1060075, 1, 1, 0, 800), +(1325, 3110300, 1402010, 1, 1, 0, 700), +(1326, 3110300, 1032007, 1, 1, 0, 1000), +(1327, 3110300, 1072078, 1, 1, 0, 800), +(1328, 3110300, 1082046, 1, 1, 0, 1000), +(1329, 3110300, 1002156, 1, 1, 0, 1500), +(1330, 3110300, 4010007, 1, 1, 0, 9000), +(1331, 3110300, 4000353, 1, 1, 0, 600000), +(1332, 3110300, 1072294, 1, 1, 0, 800), +(1333, 3110300, 2040530, 1, 1, 0, 300), +(1334, 3110300, 2044410, 1, 1, 0, 300), +(1335, 3110300, 2049100, 1, 1, 0, 150), +(1336, 3110300, 4130002, 1, 1, 0, 6000), +(1337, 3110300, 4130009, 1, 1, 0, 6000), +(1338, 3110300, 4130013, 1, 1, 0, 6000), +(1339, 3110301, 2000003, 1, 1, 0, 20000), +(1340, 3110301, 2060000, 1, 1, 0, 30000), +(1341, 3110301, 2061000, 1, 1, 0, 30000), +(1342, 3110301, 2000002, 1, 1, 0, 20000), +(1343, 3110301, 4010005, 1, 1, 0, 9000), +(1344, 3110301, 4020000, 1, 1, 0, 9000), +(1345, 3110301, 4006000, 1, 1, 0, 10000), +(1346, 3110301, 2044701, 1, 1, 0, 300), +(1347, 3110301, 1332020, 1, 1, 0, 500), +(1348, 3110301, 1040000, 1, 1, 0, 800), +(1349, 3110301, 1060075, 1, 1, 0, 800), +(1350, 3110301, 1402010, 1, 1, 0, 700), +(1351, 3110301, 1032007, 1, 1, 0, 1000), +(1352, 3110301, 1072078, 1, 1, 0, 800), +(1353, 3110301, 1082046, 1, 1, 0, 1000), +(1354, 3110301, 1002156, 1, 1, 0, 1500), +(1355, 3110301, 4010007, 1, 1, 0, 9000), +(1356, 3110301, 4000352, 1, 1, 0, 600000), +(1357, 3110301, 1082189, 1, 1, 0, 1000), +(1358, 3110301, 2040420, 1, 1, 0, 300), +(1359, 3110301, 4130001, 1, 1, 0, 6000), +(1360, 3110301, 4130006, 1, 1, 0, 6000), +(1361, 3110302, 2000002, 1, 1, 0, 20000), +(1362, 3110302, 2002005, 1, 1, 0, 20000), +(1363, 3110302, 2044502, 1, 1, 0, 300), +(1364, 3110302, 2000003, 1, 1, 0, 20000), +(1365, 3110302, 1322003, 1, 1, 0, 700), +(1366, 3110302, 2060000, 1, 1, 0, 30000), +(1367, 3110302, 4010005, 1, 1, 0, 9000), +(1368, 3110302, 4020006, 1, 1, 0, 9000), +(1369, 3110302, 2061000, 1, 1, 0, 30000), +(1370, 3110302, 1040021, 1, 1, 0, 800), +(1371, 3110302, 1060016, 1, 1, 0, 800), +(1372, 3110302, 1002180, 1, 1, 0, 1500), +(1373, 3110302, 1002143, 1, 1, 0, 1500), +(1374, 3110302, 1060052, 1, 1, 0, 800), +(1375, 3110302, 1040063, 1, 1, 0, 800), +(1376, 3110302, 1432003, 1, 1, 0, 500), +(1377, 3110302, 1051025, 1, 1, 0, 700), +(1378, 3110302, 1002025, 1, 1, 0, 1500), +(1379, 3110302, 1040079, 1, 1, 0, 800), +(1380, 3110302, 1060069, 1, 1, 0, 800), +(1381, 3110302, 4000356, 1, 1, 0, 600000), +(1382, 3110302, 1072297, 1, 1, 0, 800), +(1383, 3110302, 2040324, 1, 1, 0, 300), +(1384, 3110302, 2044210, 1, 1, 0, 300), +(1385, 3110302, 4130010, 1, 1, 0, 6000), +(1386, 3110302, 4130015, 1, 1, 0, 6000), +(1387, 3110303, 2060000, 1, 1, 0, 30000), +(1388, 3110303, 2061000, 1, 1, 0, 30000), +(1389, 3110303, 4010001, 1, 1, 0, 9000), +(1390, 3110303, 4004003, 1, 1, 0, 10000), +(1391, 3110303, 4020005, 1, 1, 0, 9000), +(1392, 3110303, 2000002, 1, 1, 0, 20000), +(1393, 3110303, 2000003, 1, 1, 0, 20000), +(1394, 3110303, 2040302, 1, 1, 0, 300), +(1395, 3110303, 1382018, 1, 1, 0, 700), +(1396, 3110303, 1472012, 1, 1, 0, 500), +(1397, 3110303, 1432003, 1, 1, 0, 500), +(1398, 3110303, 1462005, 1, 1, 0, 500), +(1399, 3110303, 1002183, 1, 1, 0, 1500), +(1400, 3110303, 1002167, 1, 1, 0, 1500), +(1401, 3110303, 1040086, 1, 1, 0, 800), +(1402, 3110303, 1060075, 1, 1, 0, 800), +(1403, 3110303, 1041076, 1, 1, 0, 800), +(1404, 3110303, 1061071, 1, 1, 0, 800), +(1405, 3110303, 1072000, 1, 1, 0, 800), +(1406, 3110303, 1032018, 1, 1, 0, 1000), +(1407, 3110303, 1082082, 1, 1, 0, 1000), +(1408, 3110303, 1082085, 1, 1, 0, 1000), +(1409, 3110303, 1072129, 1, 1, 0, 800), +(1410, 3110303, 1082010, 1, 1, 0, 1000), +(1411, 3110303, 4000356, 1, 1, 0, 600000), +(1412, 3110303, 1072297, 1, 1, 0, 800), +(1413, 3110303, 2330001, 1, 1, 0, 500), +(1414, 3110303, 2040417, 1, 1, 0, 300), +(1415, 3110303, 2044112, 1, 1, 0, 300), +(1416, 3110303, 2044310, 1, 1, 0, 300), +(1417, 3110303, 2044809, 1, 1, 0, 300), +(1418, 3110303, 4130001, 1, 1, 0, 6000), +(1419, 3110303, 4130002, 1, 1, 0, 6000), +(1420, 3110303, 4130016, 1, 1, 0, 6000), +(1421, 3210100, 4000021, 1, 1, 0, 50000), +(1422, 3210100, 2070001, 1, 1, 0, 500), +(1423, 3210100, 2000002, 1, 1, 0, 20000), +(1424, 3210100, 2000003, 1, 1, 0, 20000), +(1425, 3210100, 4000024, 1, 1, 0, 600000), +(1426, 3210100, 4020000, 1, 1, 0, 9000), +(1427, 3210100, 4010001, 1, 1, 0, 9000), +(1428, 3210100, 1332020, 1, 1, 0, 500), +(1429, 3210100, 4020007, 1, 1, 0, 9000), +(1430, 3210100, 1452005, 1, 1, 0, 500), +(1431, 3210100, 1040026, 1, 1, 0, 800), +(1432, 3210100, 1060019, 1, 1, 0, 800), +(1433, 3210100, 1082044, 1, 1, 0, 1000), +(1434, 3210100, 1072079, 1, 1, 0, 800), +(1435, 3210100, 1082052, 1, 1, 0, 1000), +(1436, 3210100, 1472012, 1, 1, 0, 500), +(1437, 3210100, 1072091, 1, 1, 0, 800), +(1438, 3210100, 1002178, 1, 1, 0, 1500), +(1439, 3210100, 1072103, 1, 1, 0, 800), +(1440, 3210100, 1462005, 1, 1, 0, 500), +(1441, 3210100, 1372012, 1, 1, 0, 700), +(1442, 3210100, 1002141, 1, 1, 0, 1500), +(1443, 3210100, 4010002, 1, 1, 0, 9000), +(1444, 3210100, 1372003, 1, 1, 0, 700), +(1445, 3210100, 2000001, 1, 1, 0, 20000), +(1446, 3210100, 1052107, 1, 1, 0, 700), +(1447, 3210100, 4130011, 1, 1, 0, 6000), +(1448, 3210100, 4130016, 1, 1, 0, 6000), +(1449, 3210100, 4130017, 1, 1, 0, 6000), +(1450, 3210200, 4000073, 1, 1, 0, 600000), +(1451, 3210200, 4000021, 1, 1, 0, 50000), +(1452, 3210200, 2000002, 1, 1, 0, 20000), +(1453, 3210200, 2000003, 1, 1, 0, 20000), +(1454, 3210200, 4003004, 1, 1, 0, 200000), +(1455, 3210200, 4020000, 1, 1, 0, 9000), +(1456, 3210200, 4020001, 1, 1, 0, 9000), +(1457, 3210200, 4004000, 1, 1, 0, 10000), +(1458, 3210200, 2070001, 1, 1, 0, 500), +(1459, 3210200, 2044701, 1, 1, 0, 300), +(1460, 3210200, 1322009, 1, 1, 0, 700), +(1461, 3210200, 2050003, 1, 1, 0, 50000), +(1462, 3210200, 1002174, 1, 1, 0, 1500), +(1463, 3210200, 1002038, 1, 1, 0, 1500), +(1464, 3210200, 1082042, 1, 1, 0, 1000), +(1465, 3210200, 1072041, 1, 1, 0, 800), +(1466, 3210200, 1412006, 1, 1, 0, 700), +(1467, 3210200, 1032008, 1, 1, 0, 1000), +(1468, 3210200, 1072002, 1, 1, 0, 800), +(1469, 3210200, 1332014, 1, 1, 0, 500), +(1470, 3210200, 1040073, 1, 1, 0, 800), +(1471, 3210200, 1060062, 1, 1, 0, 800), +(1472, 3210200, 1050035, 1, 1, 0, 700), +(1473, 3210200, 1462005, 1, 1, 0, 500), +(1474, 3210200, 1002145, 1, 1, 0, 1500), +(1475, 3210200, 1052107, 1, 1, 0, 700), +(1476, 3210200, 4130007, 1, 1, 0, 6000), +(1477, 3210200, 4130016, 1, 1, 0, 6000), +(1478, 3210201, 4000073, 1, 1, 0, 600000), +(1479, 3210201, 4000021, 1, 1, 0, 50000), +(1480, 3210201, 2000002, 1, 1, 0, 20000), +(1481, 3210201, 2000003, 1, 1, 0, 20000), +(1482, 3210201, 4003004, 1, 1, 0, 200000), +(1483, 3210201, 4020003, 1, 1, 0, 9000), +(1484, 3210201, 4010002, 1, 1, 0, 9000), +(1485, 3210201, 4004001, 1, 1, 0, 10000), +(1486, 3210201, 2044501, 1, 1, 0, 300), +(1487, 3210201, 4006001, 1, 1, 0, 10000), +(1488, 3210201, 4020007, 1, 1, 0, 9000), +(1489, 3210201, 1442001, 1, 1, 0, 700), +(1490, 3210201, 1332012, 1, 1, 0, 500), +(1491, 3210201, 1072083, 1, 1, 0, 800), +(1492, 3210201, 1002172, 1, 1, 0, 1500), +(1493, 3210201, 1472013, 1, 1, 0, 500), +(1494, 3210201, 1072089, 1, 1, 0, 800), +(1495, 3210201, 1082070, 1, 1, 0, 1000), +(1496, 3210201, 1051016, 1, 1, 0, 700), +(1497, 3210201, 1050036, 1, 1, 0, 700), +(1498, 3210201, 1051024, 1, 1, 0, 700), +(1499, 3210201, 1492004, 1, 1, 0, 500), +(1500, 3210201, 2043114, 1, 1, 0, 300), +(1501, 3210201, 4130003, 1, 1, 0, 6000), +(1502, 3210201, 4130004, 1, 1, 0, 6000), +(1503, 3210201, 4130012, 1, 1, 0, 6000), +(1504, 3210202, 4000073, 1, 1, 0, 600000), +(1505, 3210202, 4000021, 1, 1, 0, 50000), +(1506, 3210202, 2000002, 1, 1, 0, 20000), +(1507, 3210202, 2000003, 1, 1, 0, 20000), +(1508, 3210202, 4003004, 1, 1, 0, 200000), +(1509, 3210202, 4020005, 1, 1, 0, 9000), +(1510, 3210202, 4010001, 1, 1, 0, 9000), +(1511, 3210202, 4004003, 1, 1, 0, 10000), +(1512, 3210202, 4006000, 1, 1, 0, 10000), +(1513, 3210202, 2043701, 1, 1, 0, 300), +(1514, 3210202, 2070003, 1, 1, 0, 500), +(1515, 3210202, 1302017, 1, 1, 0, 700), +(1516, 3210202, 1002037, 1, 1, 0, 1500), +(1517, 3210202, 1002163, 1, 1, 0, 1500), +(1518, 3210202, 1040028, 1, 1, 0, 800), +(1519, 3210202, 1332001, 1, 1, 0, 500), +(1520, 3210202, 1041053, 1, 1, 0, 800), +(1521, 3210202, 1061049, 1, 1, 0, 800), +(1522, 3210202, 1060020, 1, 1, 0, 800), +(1523, 3210202, 1041066, 1, 1, 0, 800), +(1524, 3210202, 1061061, 1, 1, 0, 800), +(1525, 3210202, 1082045, 1, 1, 0, 1000), +(1526, 3210202, 1322015, 1, 1, 0, 700), +(1527, 3210202, 1032011, 1, 1, 0, 1000), +(1528, 3210202, 1492004, 1, 1, 0, 500), +(1529, 3210202, 1002628, 1, 1, 0, 1500), +(1530, 3210202, 2043110, 1, 1, 0, 300), +(1531, 3210202, 2044807, 1, 1, 0, 300), +(1532, 3210202, 4130006, 1, 1, 0, 6000), +(1533, 3210202, 4130012, 1, 1, 0, 6000), +(1534, 3210203, 4000108, 1, 1, 0, 600000), +(1535, 3210203, 4131009, 1, 1, 0, 6000), +(1536, 3210203, 2002008, 1, 1, 0, 20000), +(1537, 3210203, 2060000, 1, 1, 0, 30000), +(1538, 3210203, 2061000, 1, 1, 0, 30000), +(1539, 3210203, 4010002, 1, 1, 0, 9000), +(1540, 3210203, 4004003, 1, 1, 0, 10000), +(1541, 3210203, 2000002, 1, 1, 0, 20000), +(1542, 3210203, 2000003, 1, 1, 0, 20000), +(1543, 3210203, 2044501, 1, 1, 0, 300), +(1544, 3210203, 1060018, 1, 1, 0, 800), +(1545, 3210203, 1040021, 1, 1, 0, 800), +(1546, 3210203, 1072080, 1, 1, 0, 800), +(1547, 3210203, 1051006, 1, 1, 0, 700), +(1548, 3210203, 1050039, 1, 1, 0, 700), +(1549, 3210203, 1002153, 1, 1, 0, 1500), +(1550, 3210203, 1002166, 1, 1, 0, 1500), +(1551, 3210203, 1082025, 1, 1, 0, 1000), +(1552, 3210203, 1072126, 1, 1, 0, 800), +(1553, 3210203, 1072115, 1, 1, 0, 800), +(1554, 3210203, 1312007, 1, 1, 0, 700), +(1555, 3210203, 1332031, 1, 1, 0, 500), +(1556, 3210203, 1482005, 1, 1, 0, 500), +(1557, 3210203, 2040923, 1, 1, 0, 300), +(1558, 3210203, 2043212, 1, 1, 0, 300), +(1559, 3210203, 2049100, 1, 1, 0, 150), +(1560, 3210203, 4130003, 1, 1, 0, 6000), +(1561, 3210204, 4000109, 1, 1, 0, 600000), +(1562, 3210204, 4003004, 1, 1, 0, 200000), +(1563, 3210204, 4003005, 1, 1, 0, 200000), +(1564, 3210204, 2060000, 1, 1, 0, 30000), +(1565, 3210204, 2061000, 1, 1, 0, 30000), +(1566, 3210204, 4010004, 1, 1, 0, 9000), +(1567, 3210204, 4020006, 1, 1, 0, 9000), +(1568, 3210204, 4004002, 1, 1, 0, 10000), +(1569, 3210204, 2000002, 1, 1, 0, 20000), +(1570, 3210204, 2000003, 1, 1, 0, 20000), +(1571, 3210204, 2043202, 1, 1, 0, 300), +(1572, 3210204, 1040070, 1, 1, 0, 800), +(1573, 3210204, 1060059, 1, 1, 0, 800), +(1574, 3210204, 1040060, 1, 1, 0, 800), +(1575, 3210204, 1060046, 1, 1, 0, 800), +(1576, 3210204, 1082053, 1, 1, 0, 1000), +(1577, 3210204, 1050031, 1, 1, 0, 700), +(1578, 3210204, 1002004, 1, 1, 0, 1500), +(1579, 3210204, 1050021, 1, 1, 0, 700), +(1580, 3210204, 1072002, 1, 1, 0, 800), +(1581, 3210204, 1082071, 1, 1, 0, 1000), +(1582, 3210204, 1332011, 1, 1, 0, 500), +(1583, 3210204, 1052110, 1, 1, 0, 700), +(1584, 3210204, 2040617, 1, 1, 0, 300), +(1585, 3210204, 4130000, 1, 1, 0, 6000), +(1586, 3210204, 4130015, 1, 1, 0, 6000), +(1587, 3210204, 4130017, 1, 1, 0, 6000), +(1588, 3210205, 4000096, 1, 1, 0, 600000), +(1589, 3210205, 4000021, 1, 1, 0, 50000), +(1590, 3210205, 2002010, 1, 1, 0, 20000), +(1591, 3210205, 2060000, 1, 1, 0, 30000), +(1592, 3210205, 2061000, 1, 1, 0, 30000), +(1593, 3210205, 4020005, 1, 1, 0, 9000), +(1594, 3210205, 4004002, 1, 1, 0, 10000), +(1595, 3210205, 2000002, 1, 1, 0, 20000), +(1596, 3210205, 2000003, 1, 1, 0, 20000), +(1597, 3210205, 2040703, 1, 1, 0, 300), +(1598, 3210205, 2050001, 1, 1, 0, 50000), +(1599, 3210205, 1041043, 1, 1, 0, 800), +(1600, 3210205, 1061036, 1, 1, 0, 800), +(1601, 3210205, 1040057, 1, 1, 0, 800), +(1602, 3210205, 1060043, 1, 1, 0, 800), +(1603, 3210205, 1002048, 1, 1, 0, 1500), +(1604, 3210205, 1002136, 1, 1, 0, 1500), +(1605, 3210205, 1040076, 1, 1, 0, 800), +(1606, 3210205, 1060065, 1, 1, 0, 800), +(1607, 3210205, 1051015, 1, 1, 0, 700), +(1608, 3210205, 1050037, 1, 1, 0, 700), +(1609, 3210205, 1082075, 1, 1, 0, 1000), +(1610, 3210205, 1382019, 1, 1, 0, 700), +(1611, 3210205, 1082192, 1, 1, 0, 1000), +(1612, 3210205, 1052113, 1, 1, 0, 700), +(1613, 3210205, 4130001, 1, 1, 0, 6000), +(1614, 3210205, 4130004, 1, 1, 0, 6000), +(1615, 3210205, 4130014, 1, 1, 0, 6000), +(1616, 3210206, 4000103, 1, 1, 0, 600000), +(1617, 3210206, 4131006, 1, 1, 0, 6000), +(1618, 3210206, 2060000, 1, 1, 0, 30000), +(1619, 3210206, 2061000, 1, 1, 0, 30000), +(1620, 3210206, 4010003, 1, 1, 0, 9000), +(1621, 3210206, 4020005, 1, 1, 0, 9000), +(1622, 3210206, 4004000, 1, 1, 0, 10000), +(1623, 3210206, 2000002, 1, 1, 0, 20000), +(1624, 3210206, 2000003, 1, 1, 0, 20000), +(1625, 3210206, 2043001, 1, 1, 0, 300), +(1626, 3210206, 1332020, 1, 1, 0, 500), +(1627, 3210206, 2070003, 1, 1, 0, 500), +(1628, 3210206, 1072036, 1, 1, 0, 800), +(1629, 3210206, 1072082, 1, 1, 0, 800), +(1630, 3210206, 1072003, 1, 1, 0, 800), +(1631, 3210206, 1002179, 1, 1, 0, 1500), +(1632, 3210206, 1072103, 1, 1, 0, 800), +(1633, 3210206, 1051026, 1, 1, 0, 700), +(1634, 3210206, 1002168, 1, 1, 0, 1500), +(1635, 3210206, 1040000, 1, 1, 0, 800), +(1636, 3210206, 1060000, 1, 1, 0, 800), +(1637, 3210206, 1040081, 1, 1, 0, 800), +(1638, 3210206, 1060070, 1, 1, 0, 800), +(1639, 3210206, 1051032, 1, 1, 0, 700), +(1640, 3210206, 1002207, 1, 1, 0, 1500), +(1641, 3210206, 1072132, 1, 1, 0, 800), +(1642, 3210206, 1002212, 1, 1, 0, 1500), +(1643, 3210206, 1492005, 1, 1, 0, 500), +(1644, 3210206, 4130015, 1, 1, 0, 6000), +(1645, 3210206, 4130016, 1, 1, 0, 6000), +(1646, 3210207, 4000113, 1, 1, 0, 600000), +(1647, 3210207, 4131011, 1, 1, 0, 6000), +(1648, 3210207, 2060000, 1, 1, 0, 30000), +(1649, 3210207, 2061000, 1, 1, 0, 30000), +(1650, 3210207, 4020000, 1, 1, 0, 9000), +(1651, 3210207, 4020002, 1, 1, 0, 9000), +(1652, 3210207, 4004000, 1, 1, 0, 10000), +(1653, 3210207, 2000002, 1, 1, 0, 20000), +(1654, 3210207, 2000003, 1, 1, 0, 20000), +(1655, 3210207, 2041018, 1, 1, 0, 300), +(1656, 3210207, 2043102, 1, 1, 0, 300), +(1657, 3210207, 2070008, 1, 1, 0, 500), +(1658, 3210207, 4020007, 1, 1, 0, 9000), +(1659, 3210207, 1082048, 1, 1, 0, 1000), +(1660, 3210207, 1072076, 1, 1, 0, 800), +(1661, 3210207, 1372001, 1, 1, 0, 700), +(1662, 3210207, 1002139, 1, 1, 0, 1500), +(1663, 3210207, 1002178, 1, 1, 0, 1500), +(1664, 3210207, 1041069, 1, 1, 0, 800), +(1665, 3210207, 1061064, 1, 1, 0, 800), +(1666, 3210207, 1082055, 1, 1, 0, 1000), +(1667, 3210207, 1050038, 1, 1, 0, 700), +(1668, 3210207, 1082024, 1, 1, 0, 1000), +(1669, 3210207, 1072107, 1, 1, 0, 800), +(1670, 3210207, 1412005, 1, 1, 0, 700), +(1671, 3210207, 1072297, 1, 1, 0, 800), +(1672, 3210207, 2043214, 1, 1, 0, 300), +(1673, 3210207, 2049000, 1, 1, 0, 150), +(1674, 3210207, 4130007, 1, 1, 0, 6000), +(1675, 3210207, 4130008, 1, 1, 0, 6000), +(1676, 3210208, 4000168, 1, 1, 0, 600000), +(1677, 3210208, 4131009, 1, 1, 0, 6000), +(1678, 3210208, 2002005, 1, 1, 0, 20000), +(1679, 3210208, 2060000, 1, 1, 0, 30000), +(1680, 3210208, 2061000, 1, 1, 0, 30000), +(1681, 3210208, 4010002, 1, 1, 0, 9000), +(1682, 3210208, 4004003, 1, 1, 0, 10000), +(1683, 3210208, 2000002, 1, 1, 0, 20000), +(1684, 3210208, 2000003, 1, 1, 0, 20000), +(1685, 3210208, 2044501, 1, 1, 0, 300), +(1686, 3210208, 1382018, 1, 1, 0, 700), +(1687, 3210208, 1002173, 1, 1, 0, 1500), +(1688, 3210208, 1041052, 1, 1, 0, 800), +(1689, 3210208, 1061048, 1, 1, 0, 800), +(1690, 3210208, 1002048, 1, 1, 0, 1500), +(1691, 3210208, 1032008, 1, 1, 0, 1000), +(1692, 3210208, 1041065, 1, 1, 0, 800), +(1693, 3210208, 1061060, 1, 1, 0, 800), +(1694, 3210208, 1051008, 1, 1, 0, 700), +(1695, 3210208, 1082072, 1, 1, 0, 1000), +(1696, 3210208, 1082076, 1, 1, 0, 1000), +(1697, 3210208, 1072117, 1, 1, 0, 800), +(1698, 3210208, 1072127, 1, 1, 0, 800), +(1699, 3210208, 1052110, 1, 1, 0, 700), +(1700, 3210208, 1082195, 1, 1, 0, 1000), +(1701, 3210208, 4130006, 1, 1, 0, 6000), +(1702, 3210208, 4130008, 1, 1, 0, 6000), +(1703, 3210450, 4000153, 1, 1, 0, 600000), +(1704, 3210450, 4131008, 1, 1, 0, 6000), +(1705, 3210450, 2060000, 1, 1, 0, 30000), +(1706, 3210450, 2061000, 1, 1, 0, 30000), +(1707, 3210450, 4020000, 1, 1, 0, 9000), +(1708, 3210450, 4020001, 1, 1, 0, 9000), +(1709, 3210450, 2000002, 1, 1, 0, 20000), +(1710, 3210450, 2000003, 1, 1, 0, 20000), +(1711, 3210450, 2022040, 1, 1, 0, 20000), +(1712, 3210450, 1041042, 1, 1, 0, 800), +(1713, 3210450, 1061035, 1, 1, 0, 800), +(1714, 3210450, 1002023, 1, 1, 0, 1500), +(1715, 3210450, 1002163, 1, 1, 0, 1500), +(1716, 3210450, 1032010, 1, 1, 0, 1000), +(1717, 3210450, 1040062, 1, 1, 0, 800), +(1718, 3210450, 1060051, 1, 1, 0, 800), +(1719, 3210450, 1051015, 1, 1, 0, 700), +(1720, 3210450, 1302004, 1, 1, 0, 700), +(1721, 3210450, 1332014, 1, 1, 0, 500), +(1722, 3210450, 1072119, 1, 1, 0, 800), +(1723, 3210450, 1072110, 1, 1, 0, 800), +(1724, 3210450, 1082063, 1, 1, 0, 1000), +(1725, 3210450, 1002625, 1, 1, 0, 1500), +(1726, 3210450, 2330001, 1, 1, 0, 500), +(1727, 3210450, 4130000, 1, 1, 0, 6000), +(1728, 3210450, 4130014, 1, 1, 0, 6000), +(1729, 3210450, 4130017, 1, 1, 0, 6000), +(1730, 3210800, 4000026, 1, 1, 0, 600000), +(1731, 3210800, 4003004, 1, 1, 0, 200000), +(1732, 3210800, 2041010, 1, 1, 0, 300), +(1733, 3210800, 2000003, 1, 1, 0, 20000), +(1734, 3210800, 4000021, 1, 1, 0, 50000), +(1735, 3210800, 2070003, 1, 1, 0, 500), +(1736, 3210800, 4020003, 1, 1, 0, 9000), +(1737, 3210800, 4010004, 1, 1, 0, 9000), +(1738, 3210800, 4000029, 1, 1, 0, 600000), +(1739, 3210800, 1402010, 1, 1, 0, 700), +(1740, 3210800, 2070008, 1, 1, 0, 500), +(1741, 3210800, 1002038, 1, 1, 0, 1500), +(1742, 3210800, 1002172, 1, 1, 0, 1500), +(1743, 3210800, 1041050, 1, 1, 0, 800), +(1744, 3210800, 1061046, 1, 1, 0, 800), +(1745, 3210800, 1002136, 1, 1, 0, 1500), +(1746, 3210800, 1040075, 1, 1, 0, 800), +(1747, 3210800, 1060064, 1, 1, 0, 800), +(1748, 3210800, 1051014, 1, 1, 0, 700), +(1749, 3210800, 1072109, 1, 1, 0, 800), +(1750, 3210800, 1072116, 1, 1, 0, 800), +(1751, 3210800, 1092013, 1, 1, 0, 700), +(1752, 3210800, 1472017, 1, 1, 0, 500), +(1753, 3210800, 4020004, 1, 1, 0, 9000), +(1754, 3210800, 1302003, 1, 1, 0, 700), +(1755, 3210800, 1041094, 1, 1, 0, 800), +(1756, 3210800, 2000002, 1, 1, 0, 20000), +(1757, 3210800, 1082192, 1, 1, 0, 1000), +(1758, 3210800, 1072300, 1, 1, 0, 800), +(1759, 3210800, 2044414, 1, 1, 0, 300), +(1760, 3210800, 4130001, 1, 1, 0, 6000), +(1761, 3210800, 4130008, 1, 1, 0, 6000), +(1762, 3210800, 4130010, 1, 1, 0, 6000), +(1763, 3220000, 4000003, 1, 1, 0, 600000), +(1764, 3220000, 4000003, 1, 1, 0, 600000), +(1765, 3220000, 4000003, 1, 1, 0, 600000), +(1766, 3220000, 4000005, 1, 1, 0, 600000), +(1767, 3220000, 4000005, 1, 1, 0, 600000), +(1768, 3220000, 4000005, 1, 1, 0, 600000), +(1769, 3220000, 4000018, 1, 1, 0, 600000), +(1770, 3220000, 4000018, 1, 1, 0, 600000), +(1771, 3220000, 4000018, 1, 1, 0, 600000), +(1772, 3220000, 4000195, 1, 1, 0, 600000), +(1773, 3220000, 4000195, 1, 1, 0, 600000), +(1774, 3220000, 4000195, 1, 1, 0, 600000), +(1775, 3220000, 4010000, 1, 1, 0, 90000), +(1776, 3220000, 4020001, 1, 1, 0, 90000), +(1777, 3220000, 2000001, 1, 1, 0, 200000), +(1778, 3220000, 2000003, 1, 1, 0, 200000), +(1779, 3220000, 2012002, 1, 1, 0, 60000), +(1780, 3220000, 2040701, 1, 1, 0, 3000), +(1781, 3220000, 2040801, 1, 1, 0, 3000), +(1782, 3220000, 2040901, 1, 1, 0, 3000), +(1783, 3220000, 2041001, 1, 1, 0, 3000), +(1784, 3220000, 2043001, 1, 1, 0, 3000), +(1785, 3220000, 2043101, 1, 1, 0, 3000), +(1786, 3220000, 2041010, 1, 1, 0, 3000), +(1787, 3220000, 2043201, 1, 1, 0, 3000), +(1788, 3220000, 2041004, 1, 1, 0, 3000), +(1789, 3220000, 2060000, 1, 1, 0, 300000), +(1790, 3220000, 2061000, 1, 1, 0, 300000), +(1791, 3220000, 2041017, 1, 1, 0, 3000), +(1792, 3220000, 2040402, 1, 1, 0, 3000), +(1793, 3220000, 2044002, 1, 1, 0, 3000), +(1794, 3220000, 2040502, 1, 1, 0, 3000), +(1795, 3220000, 2040602, 1, 1, 0, 3000), +(1796, 3220000, 2041016, 1, 1, 0, 3000), +(1797, 3220000, 2070009, 1, 1, 0, 5000), +(1798, 3220000, 1002098, 1, 1, 0, 15000), +(1799, 3220000, 1002154, 1, 1, 0, 15000), +(1800, 3220000, 1002170, 1, 1, 0, 15000), +(1801, 3220000, 1002185, 1, 1, 0, 15000), +(1802, 3220000, 1040085, 1, 1, 0, 8000), +(1803, 3220000, 1041086, 1, 1, 0, 8000), +(1804, 3220000, 1050039, 1, 1, 0, 7000), +(1805, 3220000, 1051026, 1, 1, 0, 7000), +(1806, 3220000, 1040080, 1, 1, 0, 8000), +(1807, 3220000, 1041083, 1, 1, 0, 8000), +(1808, 3220000, 1040084, 1, 1, 0, 8000), +(1809, 3220000, 1041076, 1, 1, 0, 8000), +(1810, 3220000, 1082025, 1, 1, 0, 10000), +(1811, 3220000, 1082064, 1, 1, 0, 10000), +(1812, 3220000, 1082073, 1, 1, 0, 10000), +(1813, 3220000, 1082074, 1, 1, 0, 10000), +(1814, 3220000, 1072126, 1, 1, 0, 8000), +(1815, 3220000, 1072117, 1, 1, 0, 8000), +(1816, 3220000, 1072118, 1, 1, 0, 8000), +(1817, 3220000, 1072107, 1, 1, 0, 8000), +(1818, 3220000, 1002628, 1, 1, 0, 15000), +(1819, 3220000, 1052113, 1, 1, 0, 7000), +(1820, 3220000, 1082195, 1, 1, 0, 10000), +(1821, 3220000, 1072300, 1, 1, 0, 8000), +(1822, 3220000, 1322027, 1, 1, 0, 7000), +(1823, 3220000, 2044112, 1, 1, 0, 3000), +(1824, 3220000, 2044412, 1, 1, 0, 3000), +(1825, 3220001, 4000329, 1, 1, 0, 600000), +(1826, 3220001, 4000329, 1, 1, 0, 600000), +(1827, 3220001, 4000329, 1, 1, 0, 600000), +(1828, 3220001, 4000331, 1, 1, 0, 600000), +(1829, 3220001, 4000331, 1, 1, 0, 600000), +(1830, 3220001, 4000331, 1, 1, 0, 600000), +(1831, 3220001, 4000330, 1, 1, 0, 600000), +(1832, 3220001, 4000330, 1, 1, 0, 600000), +(1833, 3220001, 4000330, 1, 1, 0, 600000), +(1834, 3220001, 4010002, 1, 1, 0, 90000), +(1835, 3220001, 4020003, 1, 1, 0, 90000), +(1836, 3220001, 4010007, 1, 1, 0, 90000), +(1837, 3220001, 2022155, 1, 1, 0, 200000), +(1838, 3220001, 2000001, 1, 1, 0, 200000), +(1839, 3220001, 2000003, 1, 1, 0, 200000), +(1840, 3220001, 2040004, 1, 1, 0, 3000), +(1841, 3220001, 2040501, 1, 1, 0, 3000), +(1842, 3220001, 2040504, 1, 1, 0, 3000), +(1843, 3220001, 2040801, 1, 1, 0, 3000), +(1844, 3220001, 2041007, 1, 1, 0, 3000), +(1845, 3220001, 2041004, 1, 1, 0, 3000), +(1846, 3220001, 2043801, 1, 1, 0, 3000), +(1847, 3220001, 2044001, 1, 1, 0, 3000), +(1848, 3220001, 2044201, 1, 1, 0, 3000), +(1849, 3220001, 2044601, 1, 1, 0, 3000), +(1850, 3220001, 2044801, 1, 1, 0, 3000), +(1851, 3220001, 1082073, 1, 1, 0, 10000), +(1852, 3220001, 1082025, 1, 1, 0, 10000), +(1853, 3220001, 1082064, 1, 1, 0, 10000), +(1854, 3220001, 1082074, 1, 1, 0, 10000), +(1855, 3220001, 1082195, 1, 1, 0, 10000), +(1856, 3220001, 1032013, 1, 1, 0, 10000), +(1857, 3220001, 1302063, 1, 1, 0, 7000), +(1858, 3230100, 4000013, 1, 1, 0, 600000), +(1859, 3230100, 2000002, 1, 1, 0, 20000), +(1860, 3230100, 2002005, 1, 1, 0, 20000), +(1861, 3230100, 2044502, 1, 1, 0, 300), +(1862, 3230100, 2000003, 1, 1, 0, 20000), +(1863, 3230100, 1322003, 1, 1, 0, 700), +(1864, 3230100, 2060000, 1, 1, 0, 30000), +(1865, 3230100, 4010005, 1, 1, 0, 9000), +(1866, 3230100, 4020006, 1, 1, 0, 9000), +(1867, 3230100, 2061000, 1, 1, 0, 30000), +(1868, 3230100, 1040021, 1, 1, 0, 800), +(1869, 3230100, 1060016, 1, 1, 0, 800), +(1870, 3230100, 1002180, 1, 1, 0, 1500), +(1871, 3230100, 1002143, 1, 1, 0, 1500), +(1872, 3230100, 1060052, 1, 1, 0, 800), +(1873, 3230100, 1040063, 1, 1, 0, 800), +(1874, 3230100, 1432003, 1, 1, 0, 500), +(1875, 3230100, 1051025, 1, 1, 0, 700), +(1876, 3230100, 1002025, 1, 1, 0, 1500), +(1877, 3230100, 1040079, 1, 1, 0, 800), +(1878, 3230100, 1060069, 1, 1, 0, 800), +(1879, 3230100, 1482005, 1, 1, 0, 500), +(1880, 3230100, 1492006, 1, 1, 0, 500), +(1881, 3230100, 2330001, 1, 1, 0, 500), +(1882, 3230100, 2044902, 1, 1, 0, 300), +(1883, 3230100, 4130006, 1, 1, 0, 6000), +(1884, 3230100, 4130012, 1, 1, 0, 6000), +(1885, 3230100, 4130017, 1, 1, 0, 6000), +(1886, 3230101, 2000002, 1, 1, 0, 20000), +(1887, 3230101, 2040005, 1, 1, 0, 300), +(1888, 3230101, 2070002, 1, 1, 0, 500), +(1889, 3230101, 4010003, 1, 1, 0, 9000), +(1890, 3230101, 4020004, 1, 1, 0, 9000), +(1891, 3230101, 4000035, 1, 1, 0, 600000), +(1892, 3230101, 2048002, 1, 1, 0, 300), +(1893, 3230101, 1452000, 1, 1, 0, 500), +(1894, 3230101, 1051010, 1, 1, 0, 700), +(1895, 3230101, 1050022, 1, 1, 0, 700), +(1896, 3230101, 1051008, 1, 1, 0, 700), +(1897, 3230101, 1082069, 1, 1, 0, 1000), +(1898, 3230101, 1082056, 1, 1, 0, 1000), +(1899, 3230101, 1082047, 1, 1, 0, 1000), +(1900, 3230101, 1412004, 1, 1, 0, 700), +(1901, 3230101, 1072114, 1, 1, 0, 800), +(1902, 3230101, 1072118, 1, 1, 0, 800), +(1903, 3230101, 1472016, 1, 1, 0, 500), +(1904, 3230101, 1492005, 1, 1, 0, 500), +(1905, 3230101, 2040027, 1, 1, 0, 300), +(1906, 3230101, 4130007, 1, 1, 0, 6000), +(1907, 3230101, 4130014, 1, 1, 0, 6000), +(1908, 3230102, 4000043, 1, 1, 0, 600000), +(1909, 3230102, 2000003, 1, 1, 0, 20000), +(1910, 3230102, 2000002, 1, 1, 0, 20000), +(1911, 3230102, 4020000, 1, 1, 0, 9000), +(1912, 3230102, 4010005, 1, 1, 0, 9000), +(1913, 3230102, 2043301, 1, 1, 0, 300), +(1914, 3230102, 1302017, 1, 1, 0, 700), +(1915, 3230102, 2048005, 1, 1, 0, 300), +(1916, 3230102, 1332020, 1, 1, 0, 500), +(1917, 3230102, 4006001, 1, 1, 0, 10000), +(1918, 3230102, 1452005, 1, 1, 0, 500), +(1919, 3230102, 1442001, 1, 1, 0, 700), +(1920, 3230102, 1382017, 1, 1, 0, 700), +(1921, 3230102, 1072113, 1, 1, 0, 800), +(1922, 3230102, 1082056, 1, 1, 0, 1000), +(1923, 3230102, 1050000, 1, 1, 0, 700), +(1924, 3230102, 1050038, 1, 1, 0, 700), +(1925, 3230102, 1092014, 1, 1, 0, 700), +(1926, 3230102, 1072121, 1, 1, 0, 800), +(1927, 3230102, 1082074, 1, 1, 0, 1000), +(1928, 3230102, 1040080, 1, 1, 0, 800), +(1929, 3230102, 1060068, 1, 1, 0, 800), +(1930, 3230102, 1041074, 1, 1, 0, 800), +(1931, 3230102, 1061069, 1, 1, 0, 800), +(1932, 3230102, 1072297, 1, 1, 0, 800), +(1933, 3230102, 1482006, 1, 1, 0, 500), +(1934, 3230102, 2044802, 1, 1, 0, 300), +(1935, 3230102, 2040024, 1, 1, 0, 300), +(1936, 3230102, 2040423, 1, 1, 0, 300), +(1937, 3230102, 4130011, 1, 1, 0, 6000), +(1938, 3230102, 4130015, 1, 1, 0, 6000), +(1939, 3230103, 4000100, 1, 1, 0, 600000), +(1940, 3230103, 4131013, 1, 1, 0, 6000), +(1941, 3230103, 2002007, 1, 1, 0, 20000), +(1942, 3230103, 2060000, 1, 1, 0, 30000), +(1943, 3230103, 2061000, 1, 1, 0, 30000), +(1944, 3230103, 4020001, 1, 1, 0, 9000), +(1945, 3230103, 4020003, 1, 1, 0, 9000), +(1946, 3230103, 4004000, 1, 1, 0, 10000), +(1947, 3230103, 2000002, 1, 1, 0, 20000), +(1948, 3230103, 2000003, 1, 1, 0, 20000), +(1949, 3230103, 2040302, 1, 1, 0, 300), +(1950, 3230103, 2048002, 1, 1, 0, 300), +(1951, 3230103, 1082035, 1, 1, 0, 1000), +(1952, 3230103, 1072105, 1, 1, 0, 800), +(1953, 3230103, 1472011, 1, 1, 0, 500), +(1954, 3230103, 1452006, 1, 1, 0, 500), +(1955, 3230103, 1442003, 1, 1, 0, 700), +(1956, 3230103, 1002093, 1, 1, 0, 1500), +(1957, 3230103, 1002154, 1, 1, 0, 1500), +(1958, 3230103, 1040083, 1, 1, 0, 800), +(1959, 3230103, 1060072, 1, 1, 0, 800), +(1960, 3230103, 1032011, 1, 1, 0, 1000), +(1961, 3230103, 1041082, 1, 1, 0, 800), +(1962, 3230103, 1061081, 1, 1, 0, 800), +(1963, 3230103, 1050045, 1, 1, 0, 700), +(1964, 3230103, 1002625, 1, 1, 0, 1500), +(1965, 3230103, 2044112, 1, 1, 0, 300), +(1966, 3230103, 4130001, 1, 1, 0, 6000), +(1967, 3230103, 4130011, 1, 1, 0, 6000), +(1968, 3230104, 2000002, 1, 1, 0, 20000), +(1969, 3230104, 2040801, 1, 1, 0, 300), +(1970, 3230104, 2070002, 1, 1, 0, 500), +(1971, 3230104, 4020000, 1, 1, 0, 9000), +(1972, 3230104, 4010001, 1, 1, 0, 9000), +(1973, 3230104, 1382018, 1, 1, 0, 700), +(1974, 3230104, 4000167, 1, 1, 0, 600000), +(1975, 3230104, 2040701, 1, 1, 0, 300), +(1976, 3230104, 1332020, 1, 1, 0, 500), +(1977, 3230104, 1002023, 1, 1, 0, 1500), +(1978, 3230104, 1041050, 1, 1, 0, 800), +(1979, 3230104, 1061046, 1, 1, 0, 800), +(1980, 3230104, 1041056, 1, 1, 0, 800), +(1981, 3230104, 1061052, 1, 1, 0, 800), +(1982, 3230104, 1061048, 1, 1, 0, 800), +(1983, 3230104, 1041052, 1, 1, 0, 800), +(1984, 3230104, 1002135, 1, 1, 0, 1500), +(1985, 3230104, 1051014, 1, 1, 0, 700), +(1986, 3230104, 1402006, 1, 1, 0, 700), +(1987, 3230104, 1082023, 1, 1, 0, 1000), +(1988, 3230104, 1072114, 1, 1, 0, 800), +(1989, 3230104, 1002184, 1, 1, 0, 1500), +(1990, 3230104, 1082073, 1, 1, 0, 1000), +(1991, 3230104, 1482004, 1, 1, 0, 500), +(1992, 3230104, 2044212, 1, 1, 0, 300), +(1993, 3230104, 4130000, 1, 1, 0, 6000), +(1994, 3230104, 4130003, 1, 1, 0, 6000), +(1995, 3230104, 4130005, 1, 1, 0, 6000), +(1996, 3230200, 4000059, 1, 1, 0, 600000), +(1997, 3230200, 4003004, 1, 1, 0, 200000), +(1998, 3230200, 2041012, 1, 1, 0, 300), +(1999, 3230200, 2000002, 1, 1, 0, 20000), +(2000, 3230200, 2000003, 1, 1, 0, 20000), +(2001, 3230200, 1092008, 1, 1, 0, 700), +(2002, 3230200, 2040902, 1, 1, 0, 300), +(2003, 3230200, 2041005, 1, 1, 0, 300), +(2004, 3230200, 1302017, 1, 1, 0, 700), +(2005, 3230200, 2060000, 1, 1, 0, 30000), +(2006, 3230200, 2061000, 1, 1, 0, 30000), +(2007, 3230200, 4004001, 1, 1, 0, 10000), +(2008, 3230200, 4020000, 1, 1, 0, 9000), +(2009, 3230200, 1432008, 1, 1, 0, 500), +(2010, 3230200, 4006000, 1, 1, 0, 10000), +(2011, 3230200, 4010001, 1, 1, 0, 9000), +(2012, 3230200, 1082050, 1, 1, 0, 1000), +(2013, 3230200, 1082005, 1, 1, 0, 1000), +(2014, 3230200, 1072106, 1, 1, 0, 800), +(2015, 3230200, 1092007, 1, 1, 0, 700), +(2016, 3230200, 1072102, 1, 1, 0, 800), +(2017, 3230200, 1002176, 1, 1, 0, 1500), +(2018, 3230200, 1041065, 1, 1, 0, 800), +(2019, 3230200, 1061060, 1, 1, 0, 800), +(2020, 3230200, 1051027, 1, 1, 0, 700), +(2021, 3230200, 1302009, 1, 1, 0, 700), +(2022, 3230200, 1452007, 1, 1, 0, 500), +(2023, 3230200, 1002152, 1, 1, 0, 1500), +(2024, 3230200, 1002625, 1, 1, 0, 1500), +(2025, 3230200, 2044807, 1, 1, 0, 300), +(2026, 3230200, 4130009, 1, 1, 0, 6000), +(2027, 3230200, 4130014, 1, 1, 0, 6000), +(2028, 3230300, 4000067, 1, 1, 0, 400000), +(2029, 3230300, 2000002, 1, 1, 0, 20000), +(2030, 3230300, 2000003, 1, 1, 0, 20000), +(2031, 3230300, 4020000, 1, 1, 0, 9000), +(2032, 3230300, 4010001, 1, 1, 0, 9000), +(2033, 3230300, 4004000, 1, 1, 0, 10000), +(2034, 3230300, 4004001, 1, 1, 0, 10000), +(2035, 3230300, 4004002, 1, 1, 0, 10000), +(2036, 3230300, 4004003, 1, 1, 0, 10000), +(2037, 3230302, 4000099, 1, 1, 0, 600000), +(2038, 3230302, 4131008, 1, 1, 0, 6000), +(2039, 3230302, 2060000, 1, 1, 0, 30000), +(2040, 3230302, 2061000, 1, 1, 0, 30000), +(2041, 3230302, 4010006, 1, 1, 0, 9000), +(2042, 3230302, 4020004, 1, 1, 0, 9000), +(2043, 3230302, 4004003, 1, 1, 0, 10000), +(2044, 3230302, 2000002, 1, 1, 0, 20000), +(2045, 3230302, 2000003, 1, 1, 0, 20000), +(2046, 3230302, 2041023, 1, 1, 0, 300), +(2047, 3230302, 1072040, 1, 1, 0, 800), +(2048, 3230302, 1072078, 1, 1, 0, 800), +(2049, 3230302, 1472010, 1, 1, 0, 500), +(2050, 3230302, 1002141, 1, 1, 0, 1500), +(2051, 3230302, 1040075, 1, 1, 0, 800), +(2052, 3230302, 1060064, 1, 1, 0, 800), +(2053, 3230302, 1051009, 1, 1, 0, 700), +(2054, 3230302, 1442009, 1, 1, 0, 700), +(2055, 3230302, 1040082, 1, 1, 0, 800), +(2056, 3230302, 1060071, 1, 1, 0, 800), +(2057, 3230302, 1462006, 1, 1, 0, 500), +(2058, 3230302, 1052110, 1, 1, 0, 700), +(2059, 3230302, 4130005, 1, 1, 0, 6000), +(2060, 3230302, 4130012, 1, 1, 0, 6000), +(2061, 3230302, 4130013, 1, 1, 0, 6000), +(2062, 3230303, 4000104, 1, 1, 0, 600000), +(2063, 3230303, 1092021, 1, 1, 0, 700), +(2064, 3230303, 4131007, 1, 1, 0, 6000), +(2065, 3230303, 2060000, 1, 1, 0, 30000), +(2066, 3230303, 2061000, 1, 1, 0, 30000), +(2067, 3230303, 4010005, 1, 1, 0, 9000), +(2068, 3230303, 4020004, 1, 1, 0, 9000), +(2069, 3230303, 4004001, 1, 1, 0, 10000), +(2070, 3230303, 2000002, 1, 1, 0, 20000), +(2071, 3230303, 2000003, 1, 1, 0, 20000), +(2072, 3230303, 2043301, 1, 1, 0, 300), +(2073, 3230303, 1372003, 1, 1, 0, 700), +(2074, 3230303, 1312005, 1, 1, 0, 700), +(2075, 3230303, 1322003, 1, 1, 0, 700), +(2076, 3230303, 1402010, 1, 1, 0, 700), +(2077, 3230303, 1072104, 1, 1, 0, 800), +(2078, 3230303, 1072091, 1, 1, 0, 800), +(2079, 3230303, 1082046, 1, 1, 0, 1000), +(2080, 3230303, 1041084, 1, 1, 0, 800), +(2081, 3230303, 1061083, 1, 1, 0, 800), +(2082, 3230303, 1041081, 1, 1, 0, 800), +(2083, 3230303, 1061080, 1, 1, 0, 800), +(2084, 3230303, 1002181, 1, 1, 0, 1500), +(2085, 3230303, 1002092, 1, 1, 0, 1500), +(2086, 3230303, 1082080, 1, 1, 0, 1000), +(2087, 3230303, 1472018, 1, 1, 0, 500), +(2088, 3230303, 1462007, 1, 1, 0, 500), +(2089, 3230303, 1402003, 1, 1, 0, 700), +(2090, 3230303, 1002145, 1, 1, 0, 1500), +(2091, 3230303, 1482005, 1, 1, 0, 500), +(2092, 3230303, 2044312, 1, 1, 0, 300), +(2093, 3230303, 4130009, 1, 1, 0, 6000), +(2094, 3230303, 4130010, 1, 1, 0, 6000), +(2095, 3230303, 4130012, 1, 1, 0, 6000), +(2096, 3230304, 4000105, 1, 1, 0, 600000), +(2097, 3230304, 4131005, 1, 1, 0, 6000), +(2098, 3230304, 2060000, 1, 1, 0, 30000), +(2099, 3230304, 2061000, 1, 1, 0, 30000), +(2100, 3230304, 4010001, 1, 1, 0, 9000), +(2101, 3230304, 4004003, 1, 1, 0, 10000), +(2102, 3230304, 4020005, 1, 1, 0, 9000), +(2103, 3230304, 2000002, 1, 1, 0, 20000), +(2104, 3230304, 2000003, 1, 1, 0, 20000), +(2105, 3230304, 2040302, 1, 1, 0, 300), +(2106, 3230304, 1382018, 1, 1, 0, 700), +(2107, 3230304, 1472012, 1, 1, 0, 500), +(2108, 3230304, 1432003, 1, 1, 0, 500), +(2109, 3230304, 1462005, 1, 1, 0, 500), +(2110, 3230304, 1002183, 1, 1, 0, 1500), +(2111, 3230304, 1002167, 1, 1, 0, 1500), +(2112, 3230304, 1040086, 1, 1, 0, 800), +(2113, 3230304, 1060075, 1, 1, 0, 800), +(2114, 3230304, 1041076, 1, 1, 0, 800), +(2115, 3230304, 1061071, 1, 1, 0, 800), +(2116, 3230304, 1072000, 1, 1, 0, 800), +(2117, 3230304, 1032018, 1, 1, 0, 1000), +(2118, 3230304, 1082082, 1, 1, 0, 1000), +(2119, 3230304, 1082085, 1, 1, 0, 1000), +(2120, 3230304, 1072129, 1, 1, 0, 800), +(2121, 3230304, 1082010, 1, 1, 0, 1000), +(2122, 3230304, 1052110, 1, 1, 0, 700), +(2123, 3230304, 2040316, 1, 1, 0, 300), +(2124, 3230304, 2049000, 1, 1, 0, 150), +(2125, 3230304, 4130002, 1, 1, 0, 6000), +(2126, 3230304, 4130017, 1, 1, 0, 6000), +(2127, 3230305, 4000110, 1, 1, 0, 600000), +(2128, 3230305, 4000003, 1, 1, 0, 600000), +(2129, 3230305, 4000018, 1, 1, 0, 600000), +(2130, 3230305, 2060000, 1, 1, 0, 30000), +(2131, 3230305, 2061000, 1, 1, 0, 30000), +(2132, 3230305, 4020003, 1, 1, 0, 9000), +(2133, 3230305, 4004001, 1, 1, 0, 10000), +(2134, 3230305, 2000002, 1, 1, 0, 20000), +(2135, 3230305, 2000003, 1, 1, 0, 20000), +(2136, 3230305, 2041001, 1, 1, 0, 300), +(2137, 3230305, 1032002, 1, 1, 0, 1000), +(2138, 3230305, 1041066, 1, 1, 0, 800), +(2139, 3230305, 1061061, 1, 1, 0, 800), +(2140, 3230305, 1040029, 1, 1, 0, 800), +(2141, 3230305, 1060020, 1, 1, 0, 800), +(2142, 3230305, 1002184, 1, 1, 0, 1500), +(2143, 3230305, 1002099, 1, 1, 0, 1500), +(2144, 3230305, 1082064, 1, 1, 0, 1000), +(2145, 3230305, 1082075, 1, 1, 0, 1000), +(2146, 3230305, 1072119, 1, 1, 0, 800), +(2147, 3230305, 1442009, 1, 1, 0, 700), +(2148, 3230305, 1051033, 1, 1, 0, 700), +(2149, 3230305, 1492005, 1, 1, 0, 500), +(2150, 3230305, 2330001, 1, 1, 0, 500), +(2151, 3230305, 2040926, 1, 1, 0, 300), +(2152, 3230305, 4130003, 1, 1, 0, 6000), +(2153, 3230305, 4130004, 1, 1, 0, 6000), +(2154, 3230305, 4130014, 1, 1, 0, 6000), +(2155, 3230306, 4000115, 1, 1, 0, 600000), +(2156, 3230306, 1092021, 1, 1, 0, 700), +(2157, 3230306, 2002006, 1, 1, 0, 20000), +(2158, 3230306, 2060000, 1, 1, 0, 30000), +(2159, 3230306, 2061000, 1, 1, 0, 30000), +(2160, 3230306, 4010006, 1, 1, 0, 9000), +(2161, 3230306, 4004002, 1, 1, 0, 10000), +(2162, 3230306, 4010001, 1, 1, 0, 9000), +(2163, 3230306, 2000002, 1, 1, 0, 20000), +(2164, 3230306, 2000003, 1, 1, 0, 20000), +(2165, 3230306, 2043702, 1, 1, 0, 300), +(2166, 3230306, 2044201, 1, 1, 0, 300), +(2167, 3230306, 4006000, 1, 1, 0, 10000), +(2168, 3230306, 1072032, 1, 1, 0, 800), +(2169, 3230306, 1072041, 1, 1, 0, 800), +(2170, 3230306, 1051006, 1, 1, 0, 700), +(2171, 3230306, 1082069, 1, 1, 0, 1000), +(2172, 3230306, 1072089, 1, 1, 0, 800), +(2173, 3230306, 1041069, 1, 1, 0, 800), +(2174, 3230306, 1061064, 1, 1, 0, 800), +(2175, 3230306, 1002182, 1, 1, 0, 1500), +(2176, 3230306, 1002155, 1, 1, 0, 1500), +(2177, 3230306, 1040085, 1, 1, 0, 800), +(2178, 3230306, 1060074, 1, 1, 0, 800), +(2179, 3230306, 1492005, 1, 1, 0, 500), +(2180, 3230306, 2044901, 1, 1, 0, 300), +(2181, 3230306, 4130000, 1, 1, 0, 6000), +(2182, 3230306, 4130010, 1, 1, 0, 6000), +(2183, 3230307, 4000123, 1, 1, 0, 600000), +(2184, 3230307, 2060000, 1, 1, 0, 30000), +(2185, 3230307, 2061000, 1, 1, 0, 30000), +(2186, 3230307, 4004001, 1, 1, 0, 10000), +(2187, 3230307, 4020008, 1, 1, 0, 9000), +(2188, 3230307, 4010001, 1, 1, 0, 9000), +(2189, 3230307, 2000002, 1, 1, 0, 20000), +(2190, 3230307, 2000003, 1, 1, 0, 20000), +(2191, 3230307, 4003004, 1, 1, 0, 200000), +(2192, 3230307, 4000003, 1, 1, 0, 600000), +(2193, 3230307, 1051004, 1, 1, 0, 700), +(2194, 3230307, 1332004, 1, 1, 0, 500), +(2195, 3230307, 1040069, 1, 1, 0, 800), +(2196, 3230307, 1060058, 1, 1, 0, 800), +(2197, 3230307, 1002036, 1, 1, 0, 1500), +(2198, 3230307, 1312005, 1, 1, 0, 700), +(2199, 3230307, 1082008, 1, 1, 0, 1000), +(2200, 3230307, 1072104, 1, 1, 0, 800), +(2201, 3230307, 1302004, 1, 1, 0, 700), +(2202, 3230307, 1002183, 1, 1, 0, 1500), +(2203, 3230307, 1002152, 1, 1, 0, 1500), +(2204, 3230307, 1072120, 1, 1, 0, 800), +(2205, 3230307, 1082023, 1, 1, 0, 1000), +(2206, 3230307, 1482004, 1, 1, 0, 500), +(2207, 3230307, 2040929, 1, 1, 0, 300), +(2208, 3230307, 2044110, 1, 1, 0, 300), +(2209, 3230307, 4130010, 1, 1, 0, 6000), +(2210, 3230307, 4130013, 1, 1, 0, 6000), +(2211, 3230308, 4000116, 1, 1, 0, 600000), +(2212, 3230308, 2002008, 1, 1, 0, 20000), +(2213, 3230308, 2060000, 1, 1, 0, 30000), +(2214, 3230308, 2061000, 1, 1, 0, 30000), +(2215, 3230308, 4020008, 1, 1, 0, 9000), +(2216, 3230308, 4004002, 1, 1, 0, 10000), +(2217, 3230308, 2000002, 1, 1, 0, 20000), +(2218, 3230308, 2000003, 1, 1, 0, 20000), +(2219, 3230308, 4020001, 1, 1, 0, 9000), +(2220, 3230308, 2040902, 1, 1, 0, 300), +(2221, 3230308, 1322003, 1, 1, 0, 700), +(2222, 3230308, 4003005, 1, 1, 0, 200000), +(2223, 3230308, 4000003, 1, 1, 0, 600000), +(2224, 3230308, 1402006, 1, 1, 0, 700), +(2225, 3230308, 1422008, 1, 1, 0, 700), +(2226, 3230308, 1372000, 1, 1, 0, 700), +(2227, 3230308, 1072107, 1, 1, 0, 800), +(2228, 3230308, 1072120, 1, 1, 0, 800), +(2229, 3230308, 1072115, 1, 1, 0, 800), +(2230, 3230308, 1092012, 1, 1, 0, 700), +(2231, 3230308, 1082073, 1, 1, 0, 1000), +(2232, 3230308, 1041085, 1, 1, 0, 800), +(2233, 3230308, 1061084, 1, 1, 0, 800), +(2234, 3230308, 1051033, 1, 1, 0, 700), +(2235, 3230308, 1082065, 1, 1, 0, 1000), +(2236, 3230308, 1082010, 1, 1, 0, 1000), +(2237, 3230308, 1082083, 1, 1, 0, 1000), +(2238, 3230308, 1482005, 1, 1, 0, 500), +(2239, 3230308, 2043210, 1, 1, 0, 300), +(2240, 3230308, 4130004, 1, 1, 0, 6000), +(2241, 3230308, 4130006, 1, 1, 0, 6000), +(2242, 3230308, 4130015, 1, 1, 0, 6000), +(2243, 3230400, 4000127, 1, 1, 0, 600000), +(2244, 3230400, 2000002, 1, 1, 0, 20000), +(2245, 3230400, 2000003, 1, 1, 0, 20000), +(2246, 3230400, 2060000, 1, 1, 0, 30000), +(2247, 3230400, 2061000, 1, 1, 0, 30000), +(2248, 3230400, 4010001, 1, 1, 0, 9000), +(2249, 3230400, 4020007, 1, 1, 0, 9000), +(2250, 3230400, 4006001, 1, 1, 0, 10000), +(2251, 3230400, 4004004, 1, 1, 0, 10000), +(2252, 3230400, 1092008, 1, 1, 0, 700), +(2253, 3230400, 2070002, 1, 1, 0, 500), +(2254, 3230400, 1302013, 1, 1, 0, 700), +(2255, 3230400, 1402008, 1, 1, 0, 700), +(2256, 3230400, 1041033, 1, 1, 0, 800), +(2257, 3230400, 1062006, 1, 1, 0, 800), +(2258, 3230400, 1041049, 1, 1, 0, 800), +(2259, 3230400, 1061045, 1, 1, 0, 800), +(2260, 3230400, 1050011, 1, 1, 0, 700), +(2261, 3230400, 1082053, 1, 1, 0, 1000), +(2262, 3230400, 1040074, 1, 1, 0, 800), +(2263, 3230400, 1060063, 1, 1, 0, 800), +(2264, 3230400, 1002144, 1, 1, 0, 1500), +(2265, 3230400, 1372000, 1, 1, 0, 700), +(2266, 3230400, 1492004, 1, 1, 0, 500), +(2267, 3230400, 2044901, 1, 1, 0, 300), +(2268, 3230400, 2044414, 1, 1, 0, 300), +(2269, 3230400, 2049100, 1, 1, 0, 150), +(2270, 3230400, 4130001, 1, 1, 0, 6000), +(2271, 3230400, 4130008, 1, 1, 0, 6000), +(2272, 3230400, 4130015, 1, 1, 0, 6000), +(2273, 3230405, 4000154, 1, 1, 0, 600000), +(2274, 3230405, 2002005, 1, 1, 0, 20000), +(2275, 3230405, 4131005, 1, 1, 0, 6000), +(2276, 3230405, 2060000, 1, 1, 0, 30000), +(2277, 3230405, 2061000, 1, 1, 0, 30000), +(2278, 3230405, 4010001, 1, 1, 0, 9000), +(2279, 3230405, 1372012, 1, 1, 0, 700), +(2280, 3230405, 4010000, 1, 1, 0, 9000), +(2281, 3230405, 4020002, 1, 1, 0, 9000), +(2282, 3230405, 2000002, 1, 1, 0, 20000), +(2283, 3230405, 2000003, 1, 1, 0, 20000), +(2284, 3230405, 2040302, 1, 1, 0, 300), +(2285, 3230405, 1082054, 1, 1, 0, 1000), +(2286, 3230405, 1060062, 1, 1, 0, 800), +(2287, 3230405, 1040073, 1, 1, 0, 800), +(2288, 3230405, 1002177, 1, 1, 0, 1500), +(2289, 3230405, 1051023, 1, 1, 0, 700), +(2290, 3230405, 1302009, 1, 1, 0, 700), +(2291, 3230405, 1312007, 1, 1, 0, 700), +(2292, 3230405, 1332011, 1, 1, 0, 500), +(2293, 3230405, 1332031, 1, 1, 0, 500), +(2294, 3230405, 1072122, 1, 1, 0, 800), +(2295, 3230405, 1072128, 1, 1, 0, 800), +(2296, 3230405, 1082009, 1, 1, 0, 1000), +(2297, 3230405, 1082192, 1, 1, 0, 1000), +(2298, 3230405, 2044410, 1, 1, 0, 300), +(2299, 3230405, 4130009, 1, 1, 0, 6000), +(2300, 3230405, 4130013, 1, 1, 0, 6000), +(2301, 4110300, 2000002, 1, 1, 0, 20000), +(2302, 4110300, 2000003, 1, 1, 0, 20000), +(2303, 4110300, 4010006, 1, 1, 0, 9000), +(2304, 4110300, 4020007, 1, 1, 0, 9000), +(2305, 4110300, 2000004, 1, 1, 0, 20000), +(2306, 4110300, 2060000, 1, 1, 0, 30000), +(2307, 4110300, 2061000, 1, 1, 0, 30000), +(2308, 4110300, 4004004, 1, 1, 0, 10000), +(2309, 4110300, 2041019, 1, 1, 0, 300), +(2310, 4110300, 1002045, 1, 1, 0, 1500), +(2311, 4110300, 1061062, 1, 1, 0, 800), +(2312, 4110300, 1041067, 1, 1, 0, 800), +(2313, 4110300, 1050037, 1, 1, 0, 700), +(2314, 4110300, 1041076, 1, 1, 0, 800), +(2315, 4110300, 1060073, 1, 1, 0, 800), +(2316, 4110300, 1412005, 1, 1, 0, 700), +(2317, 4110300, 1452007, 1, 1, 0, 500), +(2318, 4110300, 1002213, 1, 1, 0, 1500), +(2319, 4110300, 1002085, 1, 1, 0, 1500), +(2320, 4110300, 1032012, 1, 1, 0, 1000), +(2321, 4110300, 1040096, 1, 1, 0, 800), +(2322, 4110300, 1060085, 1, 1, 0, 800), +(2323, 4110300, 4000357, 1, 1, 0, 600000), +(2324, 4110300, 1052116, 1, 1, 0, 700), +(2325, 4110300, 2330002, 1, 1, 0, 500), +(2326, 4110300, 4130002, 1, 1, 0, 6000), +(2327, 4110300, 4130012, 1, 1, 0, 6000), +(2328, 4110300, 4130013, 1, 1, 0, 6000), +(2329, 4110301, 2000002, 1, 1, 0, 20000), +(2330, 4110301, 2000003, 1, 1, 0, 20000), +(2331, 4110301, 4010002, 1, 1, 0, 9000), +(2332, 4110301, 4010004, 1, 1, 0, 9000), +(2333, 4110301, 4004000, 1, 1, 0, 10000), +(2334, 4110301, 2060000, 1, 1, 0, 30000), +(2335, 4110301, 2061000, 1, 1, 0, 30000), +(2336, 4110301, 2040504, 1, 1, 0, 300), +(2337, 4110301, 2044002, 1, 1, 0, 300), +(2338, 4110301, 1002085, 1, 1, 0, 1500), +(2339, 4110301, 1382001, 1, 1, 0, 700), +(2340, 4110301, 1082010, 1, 1, 0, 1000), +(2341, 4110301, 1041077, 1, 1, 0, 800), +(2342, 4110301, 4000358, 1, 1, 0, 600000), +(2343, 4110301, 4130007, 1, 1, 0, 6000), +(2344, 4110301, 4130012, 1, 1, 0, 6000), +(2345, 4110302, 2000002, 1, 1, 0, 20000), +(2346, 4110302, 2000003, 1, 1, 0, 20000), +(2347, 4110302, 4020000, 1, 1, 0, 9000), +(2348, 4110302, 4020006, 1, 1, 0, 9000), +(2349, 4110302, 4130012, 1, 1, 0, 6000), +(2350, 4110302, 2044102, 1, 1, 0, 300), +(2351, 4110302, 1372007, 1, 1, 0, 700), +(2352, 4110302, 1002215, 1, 1, 0, 1500), +(2353, 4110302, 4006001, 1, 1, 0, 10000), +(2354, 4110302, 1040089, 1, 1, 0, 800), +(2355, 4110302, 1050045, 1, 1, 0, 700), +(2356, 4110302, 4004002, 1, 1, 0, 10000), +(2357, 4110302, 2040001, 1, 1, 0, 300), +(2358, 4110302, 4000359, 1, 1, 0, 600000), +(2359, 4110302, 1082198, 1, 1, 0, 1000), +(2360, 4130100, 4000014, 1, 1, 0, 600000), +(2361, 4130100, 4020008, 1, 1, 0, 9000), +(2362, 4130100, 2000002, 1, 1, 0, 20000), +(2363, 4130100, 2000004, 1, 1, 0, 20000), +(2364, 4130100, 4010005, 1, 1, 0, 9000), +(2365, 4130100, 4000030, 1, 1, 0, 60000), +(2366, 4130100, 2000003, 1, 1, 0, 20000), +(2367, 4130100, 4006001, 1, 1, 0, 10000), +(2368, 4130100, 1050022, 1, 1, 0, 700), +(2369, 4130100, 1002138, 1, 1, 0, 1500), +(2370, 4130100, 1322016, 1, 1, 0, 700), +(2371, 4130100, 1082064, 1, 1, 0, 1000), +(2372, 4130100, 1060069, 1, 1, 0, 800), +(2373, 4130100, 1040079, 1, 1, 0, 800), +(2374, 4130100, 1002045, 1, 1, 0, 1500), +(2375, 4130100, 1382001, 1, 1, 0, 700), +(2376, 4130100, 1050046, 1, 1, 0, 700), +(2377, 4130100, 1302010, 1, 1, 0, 700), +(2378, 4130100, 1332016, 1, 1, 0, 500), +(2379, 4130100, 1072133, 1, 1, 0, 800), +(2380, 4130100, 1072125, 1, 1, 0, 800), +(2381, 4130100, 1052113, 1, 1, 0, 700), +(2382, 4130100, 2040025, 1, 1, 0, 300), +(2383, 4130100, 2040621, 1, 1, 0, 300), +(2384, 4130100, 2044014, 1, 1, 0, 300), +(2385, 4130100, 2049100, 1, 1, 0, 150), +(2386, 4130100, 4130006, 1, 1, 0, 6000), +(2387, 4130100, 4130016, 1, 1, 0, 6000), +(2388, 4130101, 4000045, 1, 1, 0, 600000), +(2389, 4130101, 2041013, 1, 1, 0, 300), +(2390, 4130101, 2000002, 1, 1, 0, 20000), +(2391, 4130101, 2000004, 1, 1, 0, 20000), +(2392, 4130101, 2000003, 1, 1, 0, 20000), +(2393, 4130101, 4020001, 1, 1, 0, 9000), +(2394, 4130101, 4010002, 1, 1, 0, 9000), +(2395, 4130101, 2040805, 1, 1, 0, 300), +(2396, 4130101, 1472016, 1, 1, 0, 500), +(2397, 4130101, 1002152, 1, 1, 0, 1500), +(2398, 4130101, 1002183, 1, 1, 0, 1500), +(2399, 4130101, 1041081, 1, 1, 0, 800), +(2400, 4130101, 1061080, 1, 1, 0, 800), +(2401, 4130101, 1402003, 1, 1, 0, 700), +(2402, 4130101, 1092004, 1, 1, 0, 700), +(2403, 4130101, 1072124, 1, 1, 0, 800), +(2404, 4130101, 1072142, 1, 1, 0, 800), +(2405, 4130101, 1061088, 1, 1, 0, 800), +(2406, 4130101, 1041089, 1, 1, 0, 800), +(2407, 4130101, 1061078, 1, 1, 0, 800), +(2408, 4130101, 1041079, 1, 1, 0, 800), +(2409, 4130101, 1072303, 1, 1, 0, 800), +(2410, 4130101, 2040923, 1, 1, 0, 300), +(2411, 4130101, 4130003, 1, 1, 0, 6000), +(2412, 4130101, 4130005, 1, 1, 0, 6000), +(2413, 4130101, 4130009, 1, 1, 0, 6000), +(2414, 4130102, 4000062, 1, 1, 0, 600000), +(2415, 4130102, 2041014, 1, 1, 0, 300), +(2416, 4130102, 4004004, 1, 1, 0, 10000), +(2417, 4130102, 2000002, 1, 1, 0, 20000), +(2418, 4130102, 2000004, 1, 1, 0, 20000), +(2419, 4130102, 2000003, 1, 1, 0, 20000), +(2420, 4130102, 4020006, 1, 1, 0, 9000), +(2421, 4130102, 4010003, 1, 1, 0, 9000), +(2422, 4130102, 4004000, 1, 1, 0, 10000), +(2423, 4130102, 1302013, 1, 1, 0, 700), +(2424, 4130102, 2044201, 1, 1, 0, 300), +(2425, 4130102, 4006001, 1, 1, 0, 10000), +(2426, 4130102, 1051027, 1, 1, 0, 700), +(2427, 4130102, 1002092, 1, 1, 0, 1500), +(2428, 4130102, 1040080, 1, 1, 0, 800), +(2429, 4130102, 1060068, 1, 1, 0, 800), +(2430, 4130102, 1072110, 1, 1, 0, 800), +(2431, 4130102, 1082063, 1, 1, 0, 1000), +(2432, 4130102, 1041087, 1, 1, 0, 800), +(2433, 4130102, 1061086, 1, 1, 0, 800), +(2434, 4130102, 1040095, 1, 1, 0, 800), +(2435, 4130102, 1060084, 1, 1, 0, 800), +(2436, 4130102, 1082084, 1, 1, 0, 1000), +(2437, 4130102, 1072132, 1, 1, 0, 800), +(2438, 4130102, 4130000, 1, 1, 0, 6000), +(2439, 4130102, 4130003, 1, 1, 0, 6000), +(2440, 4130102, 4130013, 1, 1, 0, 6000), +(2441, 4130103, 4000124, 1, 1, 0, 600000), +(2442, 4130103, 2060000, 1, 1, 0, 300000), +(2443, 4130103, 2061000, 1, 1, 0, 300000), +(2444, 4130103, 2000002, 1, 1, 0, 200000), +(2445, 4130103, 2000004, 1, 1, 0, 999999), +(2446, 4130103, 4131009, 1, 1, 0, 60000), +(2447, 4130103, 4010000, 1, 1, 0, 90000), +(2448, 4130103, 4005002, 1, 1, 0, 10000), +(2449, 4130103, 2040902, 1, 1, 0, 3000), +(2450, 4130103, 4020007, 1, 1, 0, 90000), +(2451, 4130103, 4020000, 1, 1, 0, 90000), +(2452, 4130103, 4006000, 1, 1, 0, 100000), +(2453, 4130103, 1060052, 1, 1, 0, 8000), +(2454, 4130103, 1040063, 1, 1, 0, 8000), +(2455, 4130103, 1442009, 1, 1, 0, 7000), +(2456, 4130103, 1082071, 1, 1, 0, 10000), +(2457, 4130103, 1462006, 1, 1, 0, 5000), +(2458, 4130103, 1051032, 1, 1, 0, 7000), +(2459, 4130103, 1372007, 1, 1, 0, 7000), +(2460, 4130103, 1472019, 1, 1, 0, 5000), +(2461, 4130103, 1072129, 1, 1, 0, 8000), +(2462, 4130103, 1432004, 1, 1, 0, 5000), +(2463, 4130103, 1072140, 1, 1, 0, 8000), +(2464, 4130103, 1082085, 1, 1, 0, 10000), +(2465, 4130103, 1312008, 1, 1, 0, 7000), +(2466, 4130103, 1492007, 1, 1, 0, 5000), +(2467, 4130103, 2043210, 1, 1, 0, 3000), +(2468, 4130103, 4130002, 1, 1, 0, 60000), +(2469, 4130103, 4130004, 1, 1, 0, 60000), +(2470, 4130103, 4130012, 1, 1, 0, 60000), +(2471, 4220000, 4000166, 1, 1, 0, 600000), +(2472, 4220000, 4000166, 1, 1, 0, 600000), +(2473, 4220000, 4000166, 1, 1, 0, 600000), +(2474, 4220000, 4000167, 1, 1, 0, 600000), +(2475, 4220000, 4000167, 1, 1, 0, 600000), +(2476, 4220000, 4000167, 1, 1, 0, 600000), +(2477, 4220000, 4010003, 1, 1, 0, 90000), +(2478, 4220000, 4020004, 1, 1, 0, 90000), +(2479, 4220000, 2000002, 1, 1, 0, 200000), +(2480, 4220000, 2000003, 1, 1, 0, 200000), +(2481, 4220000, 2040301, 1, 1, 0, 3000), +(2482, 4220000, 2040302, 1, 1, 0, 3000), +(2483, 4220000, 2040516, 1, 1, 0, 3000), +(2484, 4220000, 2040517, 1, 1, 0, 3000), +(2485, 4220000, 2040704, 1, 1, 0, 3000), +(2486, 4220000, 2040705, 1, 1, 0, 3000), +(2487, 4220000, 2040804, 1, 1, 0, 3000), +(2488, 4220000, 2040805, 1, 1, 0, 3000), +(2489, 4220000, 2041007, 1, 1, 0, 3000), +(2490, 4220000, 2041008, 1, 1, 0, 3000), +(2491, 4220000, 1302010, 1, 1, 0, 7000), +(2492, 4220000, 1312008, 1, 1, 0, 7000), +(2493, 4220000, 1322017, 1, 1, 0, 7000), +(2494, 4220000, 1402003, 1, 1, 0, 7000), +(2495, 4220000, 1412003, 1, 1, 0, 7000), +(2496, 4220000, 1422005, 1, 1, 0, 7000), +(2497, 4220000, 1432004, 1, 1, 0, 5000), +(2498, 4220000, 1442005, 1, 1, 0, 7000), +(2499, 4220000, 1452008, 1, 1, 0, 5000), +(2500, 4220000, 1462007, 1, 1, 0, 5000), +(2501, 4220000, 1332003, 1, 1, 0, 5000), +(2502, 4220000, 1472020, 1, 1, 0, 5000), +(2503, 4220000, 1332016, 1, 1, 0, 5000), +(2504, 4220000, 1482007, 1, 1, 0, 5000), +(2505, 4220000, 1492007, 1, 1, 0, 5000), +(2506, 4220000, 1382006, 1, 1, 0, 7000), +(2507, 4220000, 1372007, 1, 1, 0, 7000), +(2508, 4220000, 1442039, 1, 1, 0, 7000), +(2509, 4220000, 2040029, 1, 1, 0, 3000), +(2510, 4220000, 2040326, 1, 1, 0, 3000), +(2511, 4220000, 2044809, 1, 1, 0, 3000), +(2512, 4220000, 2049100, 1, 1, 0, 3000), +(2513, 4230100, 4000023, 1, 1, 0, 600000), +(2514, 4230100, 2040001, 1, 1, 0, 300), +(2515, 4230100, 2000002, 1, 1, 0, 20000), +(2516, 4230100, 4010006, 1, 1, 0, 9000), +(2517, 4230100, 2000003, 1, 1, 0, 20000), +(2518, 4230100, 4010001, 1, 1, 0, 9000), +(2519, 4230100, 1002103, 1, 1, 0, 1500), +(2520, 4230100, 2070010, 1, 1, 0, 500), +(2521, 4230100, 1462004, 1, 1, 0, 500), +(2522, 4230100, 1472013, 1, 1, 0, 500), +(2523, 4230100, 1412004, 1, 1, 0, 700), +(2524, 4230100, 1072090, 1, 1, 0, 800), +(2525, 4230100, 1472017, 1, 1, 0, 500), +(2526, 4230100, 1002166, 1, 1, 0, 1500), +(2527, 4230100, 1002098, 1, 1, 0, 1500), +(2528, 4230100, 1002169, 1, 1, 0, 1500), +(2529, 4230100, 1041075, 1, 1, 0, 800), +(2530, 4230100, 1061070, 1, 1, 0, 800), +(2531, 4230100, 1072132, 1, 1, 0, 800), +(2532, 4230100, 1072140, 1, 1, 0, 800), +(2533, 4230100, 1082066, 1, 1, 0, 1000), +(2534, 4230100, 1032008, 1, 1, 0, 1000), +(2535, 4230100, 4010005, 1, 1, 0, 9000), +(2536, 4230100, 1060057, 1, 1, 0, 800), +(2537, 4230100, 2000006, 1, 1, 0, 20000), +(2538, 4230100, 2044412, 1, 1, 0, 300), +(2539, 4230100, 2049100, 1, 1, 0, 150), +(2540, 4230100, 4130004, 1, 1, 0, 6000), +(2541, 4230100, 4130005, 1, 1, 0, 6000), +(2542, 4230100, 4130009, 1, 1, 0, 6000), +(2543, 4230101, 2000002, 1, 1, 0, 20000), +(2544, 4230101, 4003004, 1, 1, 0, 200000), +(2545, 4230101, 2000003, 1, 1, 0, 20000), +(2546, 4230101, 4010005, 1, 1, 0, 9000), +(2547, 4230101, 4020001, 1, 1, 0, 9000), +(2548, 4230101, 1462006, 1, 1, 0, 500), +(2549, 4230101, 4000031, 1, 1, 0, 600000), +(2550, 4230101, 1051009, 1, 1, 0, 700), +(2551, 4230101, 1051001, 1, 1, 0, 700), +(2552, 4230101, 1040074, 1, 1, 0, 800), +(2553, 4230101, 1060063, 1, 1, 0, 800), +(2554, 4230101, 1050039, 1, 1, 0, 700), +(2555, 4230101, 1002185, 1, 1, 0, 1500), +(2556, 4230101, 1002151, 1, 1, 0, 1500), +(2557, 4230101, 1041086, 1, 1, 0, 800), +(2558, 4230101, 1061085, 1, 1, 0, 800), +(2559, 4230101, 1472015, 1, 1, 0, 500), +(2560, 4230101, 1382001, 1, 1, 0, 700), +(2561, 4230101, 1462007, 1, 1, 0, 500), +(2562, 4230101, 1442005, 1, 1, 0, 700), +(2563, 4230101, 1332003, 1, 1, 0, 500), +(2564, 4230101, 1040000, 1, 1, 0, 800), +(2565, 4230101, 1082037, 1, 1, 0, 1000), +(2566, 4230101, 1041068, 1, 1, 0, 800), +(2567, 4230101, 1002628, 1, 1, 0, 1500), +(2568, 4230101, 2044314, 1, 1, 0, 300), +(2569, 4230101, 4130000, 1, 1, 0, 6000), +(2570, 4230101, 4130005, 1, 1, 0, 6000), +(2571, 4230101, 4130012, 1, 1, 0, 6000), +(2572, 4230102, 4000036, 1, 1, 0, 600000), +(2573, 4230102, 4004004, 1, 1, 0, 10000), +(2574, 4230102, 2000002, 1, 1, 0, 20000), +(2575, 4230102, 2000004, 1, 1, 0, 20000), +(2576, 4230102, 2000003, 1, 1, 0, 20000), +(2577, 4230102, 4010001, 1, 1, 0, 9000), +(2578, 4230102, 4020000, 1, 1, 0, 9000), +(2579, 4230102, 1302013, 1, 1, 0, 700), +(2580, 4230102, 4006001, 1, 1, 0, 10000), +(2581, 4230102, 1032008, 1, 1, 0, 1000), +(2582, 4230102, 1060050, 1, 1, 0, 800), +(2583, 4230102, 1040061, 1, 1, 0, 800), +(2584, 4230102, 1040085, 1, 1, 0, 800), +(2585, 4230102, 1060074, 1, 1, 0, 800), +(2586, 4230102, 1002099, 1, 1, 0, 1500), +(2587, 4230102, 1002207, 1, 1, 0, 1500), +(2588, 4230102, 1002211, 1, 1, 0, 1500), +(2589, 4230102, 1002215, 1, 1, 0, 1500), +(2590, 4230102, 1002212, 1, 1, 0, 1500), +(2591, 4230102, 1082066, 1, 1, 0, 1000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(2592, 4230102, 1072141, 1, 1, 0, 800), +(2593, 4230102, 1072303, 1, 1, 0, 800), +(2594, 4230102, 2330002, 1, 1, 0, 500), +(2595, 4230102, 2040026, 1, 1, 0, 300), +(2596, 4230102, 4130007, 1, 1, 0, 6000), +(2597, 4230102, 4130008, 1, 1, 0, 6000), +(2598, 4230103, 4000039, 1, 1, 0, 600000), +(2599, 4230103, 2000002, 1, 1, 0, 20000), +(2600, 4230103, 2000003, 1, 1, 0, 20000), +(2601, 4230103, 4020005, 1, 1, 0, 9000), +(2602, 4230103, 4010003, 1, 1, 0, 9000), +(2603, 4230103, 2000004, 1, 1, 0, 20000), +(2604, 4230103, 2060000, 1, 1, 0, 30000), +(2605, 4230103, 2061000, 1, 1, 0, 30000), +(2606, 4230103, 1332001, 1, 1, 0, 500), +(2607, 4230103, 1312006, 1, 1, 0, 700), +(2608, 4230103, 1002179, 1, 1, 0, 1500), +(2609, 4230103, 1092014, 1, 1, 0, 700), +(2610, 4230103, 1072121, 1, 1, 0, 800), +(2611, 4230103, 1072114, 1, 1, 0, 800), +(2612, 4230103, 1082076, 1, 1, 0, 1000), +(2613, 4230103, 1002151, 1, 1, 0, 1500), +(2614, 4230103, 1051034, 1, 1, 0, 700), +(2615, 4230103, 1472019, 1, 1, 0, 500), +(2616, 4230103, 1322017, 1, 1, 0, 700), +(2617, 4230103, 1050051, 1, 1, 0, 700), +(2618, 4230103, 2040027, 1, 1, 0, 300), +(2619, 4230103, 4130007, 1, 1, 0, 6000), +(2620, 4230103, 4130008, 1, 1, 0, 6000), +(2621, 4230104, 4000044, 1, 1, 0, 600000), +(2622, 4230104, 2000004, 1, 1, 0, 20000), +(2623, 4230104, 2000003, 1, 1, 0, 20000), +(2624, 4230104, 4010003, 1, 1, 0, 9000), +(2625, 4230104, 4020002, 1, 1, 0, 9000), +(2626, 4230104, 1302016, 1, 1, 0, 700), +(2627, 4230104, 2043201, 1, 1, 0, 300), +(2628, 4230104, 1040083, 1, 1, 0, 800), +(2629, 4230104, 1060072, 1, 1, 0, 800), +(2630, 4230104, 1061081, 1, 1, 0, 800), +(2631, 4230104, 1041082, 1, 1, 0, 800), +(2632, 4230104, 1002025, 1, 1, 0, 1500), +(2633, 4230104, 1382001, 1, 1, 0, 700), +(2634, 4230104, 1002217, 1, 1, 0, 1500), +(2635, 4230104, 1002085, 1, 1, 0, 1500), +(2636, 4230104, 1041087, 1, 1, 0, 800), +(2637, 4230104, 1061086, 1, 1, 0, 800), +(2638, 4230104, 1060084, 1, 1, 0, 800), +(2639, 4230104, 1040095, 1, 1, 0, 800), +(2640, 4230104, 1412003, 1, 1, 0, 700), +(2641, 4230104, 1482007, 1, 1, 0, 500), +(2642, 4230104, 2040427, 1, 1, 0, 300), +(2643, 4230104, 4130005, 1, 1, 0, 6000), +(2644, 4230104, 4130015, 1, 1, 0, 6000), +(2645, 4230104, 4130017, 1, 1, 0, 6000), +(2646, 4230105, 4000058, 1, 1, 0, 600000), +(2647, 4230105, 2041011, 1, 1, 0, 300), +(2648, 4230105, 2000002, 1, 1, 0, 20000), +(2649, 4230105, 2000003, 1, 1, 0, 20000), +(2650, 4230105, 4020003, 1, 1, 0, 9000), +(2651, 4230105, 4010000, 1, 1, 0, 9000), +(2652, 4230105, 4004003, 1, 1, 0, 10000), +(2653, 4230105, 2041001, 1, 1, 0, 300), +(2654, 4230105, 1332020, 1, 1, 0, 500), +(2655, 4230105, 1072103, 1, 1, 0, 800), +(2656, 4230105, 1002182, 1, 1, 0, 1500), +(2657, 4230105, 1002098, 1, 1, 0, 1500), +(2658, 4230105, 1041083, 1, 1, 0, 800), +(2659, 4230105, 1061082, 1, 1, 0, 800), +(2660, 4230105, 1040083, 1, 1, 0, 800), +(2661, 4230105, 1060072, 1, 1, 0, 800), +(2662, 4230105, 1382019, 1, 1, 0, 700), +(2663, 4230105, 1472015, 1, 1, 0, 500), +(2664, 4230105, 1050048, 1, 1, 0, 700), +(2665, 4230105, 1051038, 1, 1, 0, 700), +(2666, 4230105, 1082011, 1, 1, 0, 1000), +(2667, 4230105, 1072130, 1, 1, 0, 800), +(2668, 4230105, 2022039, 1, 1, 0, 20000), +(2669, 4230105, 4130004, 1, 1, 0, 6000), +(2670, 4230105, 4130013, 1, 1, 0, 6000), +(2671, 4230106, 4000060, 1, 1, 0, 600000), +(2672, 4230106, 4003004, 1, 1, 0, 200000), +(2673, 4230106, 2000002, 1, 1, 0, 20000), +(2674, 4230106, 2000003, 1, 1, 0, 20000), +(2675, 4230106, 4020005, 1, 1, 0, 9000), +(2676, 4230106, 4010004, 1, 1, 0, 9000), +(2677, 4230106, 4004001, 1, 1, 0, 10000), +(2678, 4230106, 2060000, 1, 1, 0, 30000), +(2679, 4230106, 2061000, 1, 1, 0, 30000), +(2680, 4230106, 1302016, 1, 1, 0, 700), +(2681, 4230106, 2070002, 1, 1, 0, 500), +(2682, 4230106, 4006000, 1, 1, 0, 10000), +(2683, 4230106, 2040705, 1, 1, 0, 300), +(2684, 4230106, 1082036, 1, 1, 0, 1000), +(2685, 4230106, 1082045, 1, 1, 0, 1000), +(2686, 4230106, 1040081, 1, 1, 0, 800), +(2687, 4230106, 1060070, 1, 1, 0, 800), +(2688, 4230106, 1060075, 1, 1, 0, 800), +(2689, 4230106, 1040086, 1, 1, 0, 800), +(2690, 4230106, 1072118, 1, 1, 0, 800), +(2691, 4230106, 1051032, 1, 1, 0, 700), +(2692, 4230106, 1002216, 1, 1, 0, 1500), +(2693, 4230106, 1002210, 1, 1, 0, 1500), +(2694, 4230106, 1041080, 1, 1, 0, 800), +(2695, 4230106, 1061079, 1, 1, 0, 800), +(2696, 4230106, 1050052, 1, 1, 0, 700), +(2697, 4230106, 1002628, 1, 1, 0, 1500), +(2698, 4230106, 2040319, 1, 1, 0, 300), +(2699, 4230106, 2044114, 1, 1, 0, 300), +(2700, 4230106, 2044214, 1, 1, 0, 300), +(2701, 4230106, 4130003, 1, 1, 0, 6000), +(2702, 4230106, 4130007, 1, 1, 0, 6000), +(2703, 4230106, 4130009, 1, 1, 0, 6000), +(2704, 4230107, 4000076, 1, 1, 0, 600000), +(2705, 4230107, 2000002, 1, 1, 0, 20000), +(2706, 4230107, 2000003, 1, 1, 0, 20000), +(2707, 4230107, 4003004, 1, 1, 0, 200000), +(2708, 4230107, 4010005, 1, 1, 0, 9000), +(2709, 4230107, 4020004, 1, 1, 0, 9000), +(2710, 4230107, 1332020, 1, 1, 0, 500), +(2711, 4230107, 2043202, 1, 1, 0, 300), +(2712, 4230107, 2041014, 1, 1, 0, 300), +(2713, 4230107, 4004002, 1, 1, 0, 10000), +(2714, 4230107, 4006000, 1, 1, 0, 10000), +(2715, 4230107, 4020007, 1, 1, 0, 9000), +(2716, 4230107, 1040030, 1, 1, 0, 800), +(2717, 4230107, 1060020, 1, 1, 0, 800), +(2718, 4230107, 1060061, 1, 1, 0, 800), +(2719, 4230107, 1040072, 1, 1, 0, 800), +(2720, 4230107, 1050035, 1, 1, 0, 700), +(2721, 4230107, 1060071, 1, 1, 0, 800), +(2722, 4230107, 1040082, 1, 1, 0, 800), +(2723, 4230107, 1082072, 1, 1, 0, 1000), +(2724, 4230107, 1082063, 1, 1, 0, 1000), +(2725, 4230107, 1051030, 1, 1, 0, 700), +(2726, 4230107, 1072134, 1, 1, 0, 800), +(2727, 4230107, 1072129, 1, 1, 0, 800), +(2728, 4230107, 1452008, 1, 1, 0, 500), +(2729, 4230107, 4130005, 1, 1, 0, 6000), +(2730, 4230107, 4130015, 1, 1, 0, 6000), +(2731, 4230108, 4000078, 1, 1, 0, 600000), +(2732, 4230108, 2000002, 1, 1, 0, 20000), +(2733, 4230108, 2000003, 1, 1, 0, 20000), +(2734, 4230108, 4010001, 1, 1, 0, 9000), +(2735, 4230108, 4020006, 1, 1, 0, 9000), +(2736, 4230108, 4004003, 1, 1, 0, 10000), +(2737, 4230108, 4000021, 1, 1, 0, 50000), +(2738, 4230108, 4003004, 1, 1, 0, 200000), +(2739, 4230108, 2041017, 1, 1, 0, 300), +(2740, 4230108, 2070002, 1, 1, 0, 500), +(2741, 4230108, 1432008, 1, 1, 0, 500), +(2742, 4230108, 2060000, 1, 1, 0, 30000), +(2743, 4230108, 2061000, 1, 1, 0, 30000), +(2744, 4230108, 1050031, 1, 1, 0, 700), +(2745, 4230108, 1072113, 1, 1, 0, 800), +(2746, 4230108, 1072108, 1, 1, 0, 800), +(2747, 4230108, 1082073, 1, 1, 0, 1000), +(2748, 4230108, 1422007, 1, 1, 0, 700), +(2749, 4230108, 1041082, 1, 1, 0, 800), +(2750, 4230108, 1061081, 1, 1, 0, 800), +(2751, 4230108, 1472018, 1, 1, 0, 500), +(2752, 4230108, 1442005, 1, 1, 0, 700), +(2753, 4230108, 1002209, 1, 1, 0, 1500), +(2754, 4230108, 1002218, 1, 1, 0, 1500), +(2755, 4230108, 1002086, 1, 1, 0, 1500), +(2756, 4230108, 2040623, 1, 1, 0, 300), +(2757, 4230108, 4130010, 1, 1, 0, 6000), +(2758, 4230108, 4130011, 1, 1, 0, 6000), +(2759, 4230109, 4000101, 1, 1, 0, 600000), +(2760, 4230109, 2060000, 1, 1, 0, 30000), +(2761, 4230109, 2061000, 1, 1, 0, 30000), +(2762, 4230109, 4010001, 1, 1, 0, 9000), +(2763, 4230109, 4004002, 1, 1, 0, 10000), +(2764, 4230109, 2000002, 1, 1, 0, 20000), +(2765, 4230109, 2000003, 1, 1, 0, 20000), +(2766, 4230109, 2040901, 1, 1, 0, 300), +(2767, 4230109, 1032018, 1, 1, 0, 1000), +(2768, 4230109, 1402002, 1, 1, 0, 700), +(2769, 4230109, 1002180, 1, 1, 0, 1500), +(2770, 4230109, 1082070, 1, 1, 0, 1000), +(2771, 4230109, 1051024, 1, 1, 0, 700), +(2772, 4230109, 1002154, 1, 1, 0, 1500), +(2773, 4230109, 1002167, 1, 1, 0, 1500), +(2774, 4230109, 1472017, 1, 1, 0, 500), +(2775, 4230109, 1072117, 1, 1, 0, 800), +(2776, 4230109, 1040087, 1, 1, 0, 800), +(2777, 4230109, 1060076, 1, 1, 0, 800), +(2778, 4230109, 1462007, 1, 1, 0, 500), +(2779, 4230109, 1092004, 1, 1, 0, 700), +(2780, 4230109, 1482006, 1, 1, 0, 500), +(2781, 4230109, 2043212, 1, 1, 0, 300), +(2782, 4230109, 2044414, 1, 1, 0, 300), +(2783, 4230109, 4130000, 1, 1, 0, 6000), +(2784, 4230109, 4130005, 1, 1, 0, 6000), +(2785, 4230109, 4130014, 1, 1, 0, 6000), +(2786, 4230110, 4000102, 1, 1, 0, 600000), +(2787, 4230110, 2060000, 1, 1, 0, 30000), +(2788, 4230110, 2061000, 1, 1, 0, 30000), +(2789, 4230110, 4020008, 1, 1, 0, 9000), +(2790, 4230110, 4004000, 1, 1, 0, 10000), +(2791, 4230110, 2000002, 1, 1, 0, 20000), +(2792, 4230110, 2000004, 1, 1, 0, 20000), +(2793, 4230110, 2040504, 1, 1, 0, 300), +(2794, 4230110, 2044002, 1, 1, 0, 300), +(2795, 4230110, 2044301, 1, 1, 0, 300), +(2796, 4230110, 1302013, 1, 1, 0, 700), +(2797, 4230110, 1002004, 1, 1, 0, 1500), +(2798, 4230110, 1041067, 1, 1, 0, 800), +(2799, 4230110, 1061062, 1, 1, 0, 800), +(2800, 4230110, 1002144, 1, 1, 0, 1500), +(2801, 4230110, 1002170, 1, 1, 0, 1500), +(2802, 4230110, 1002181, 1, 1, 0, 1500), +(2803, 4230110, 1040082, 1, 1, 0, 800), +(2804, 4230110, 1060071, 1, 1, 0, 800), +(2805, 4230110, 1061083, 1, 1, 0, 800), +(2806, 4230110, 1041084, 1, 1, 0, 800), +(2807, 4230110, 1040088, 1, 1, 0, 800), +(2808, 4230110, 1060077, 1, 1, 0, 800), +(2809, 4230110, 1082081, 1, 1, 0, 1000), +(2810, 4230110, 1082083, 1, 1, 0, 1000), +(2811, 4230110, 1072135, 1, 1, 0, 800), +(2812, 4230110, 1082195, 1, 1, 0, 1000), +(2813, 4230110, 2044902, 1, 1, 0, 300), +(2814, 4230110, 2040618, 1, 1, 0, 300), +(2815, 4230110, 2040627, 1, 1, 0, 300), +(2816, 4230110, 2040931, 1, 1, 0, 300), +(2817, 4230110, 2044014, 1, 1, 0, 300), +(2818, 4230110, 4130002, 1, 1, 0, 6000), +(2819, 4230110, 4130010, 1, 1, 0, 6000), +(2820, 4230110, 4130011, 1, 1, 0, 6000), +(2821, 4230111, 4000111, 1, 1, 0, 600000), +(2822, 4230111, 2060000, 1, 1, 0, 30000), +(2823, 4230111, 2061000, 1, 1, 0, 30000), +(2824, 4230111, 4010002, 1, 1, 0, 9000), +(2825, 4230111, 4010004, 1, 1, 0, 9000), +(2826, 4230111, 4004001, 1, 1, 0, 10000), +(2827, 4230111, 2000002, 1, 1, 0, 20000), +(2828, 4230111, 2000003, 1, 1, 0, 20000), +(2829, 4230111, 2040602, 1, 1, 0, 300), +(2830, 4230111, 2043302, 1, 1, 0, 300), +(2831, 4230111, 1041051, 1, 1, 0, 800), +(2832, 4230111, 1061047, 1, 1, 0, 800), +(2833, 4230111, 1051007, 1, 1, 0, 700), +(2834, 4230111, 1050021, 1, 1, 0, 700), +(2835, 4230111, 1002021, 1, 1, 0, 1500), +(2836, 4230111, 1002153, 1, 1, 0, 1500), +(2837, 4230111, 1002168, 1, 1, 0, 1500), +(2838, 4230111, 1072116, 1, 1, 0, 800), +(2839, 4230111, 1072127, 1, 1, 0, 800), +(2840, 4230111, 1072123, 1, 1, 0, 800), +(2841, 4230111, 1302010, 1, 1, 0, 700), +(2842, 4230111, 1472018, 1, 1, 0, 500), +(2843, 4230111, 1002628, 1, 1, 0, 1500), +(2844, 4230111, 2040926, 1, 1, 0, 300), +(2845, 4230111, 2044010, 1, 1, 0, 300), +(2846, 4230111, 4130003, 1, 1, 0, 6000), +(2847, 4230111, 4130006, 1, 1, 0, 6000), +(2848, 4230111, 4130015, 1, 1, 0, 6000), +(2849, 4230112, 4000112, 1, 1, 0, 600000), +(2850, 4230112, 2060000, 1, 1, 0, 30000), +(2851, 4230112, 2061000, 1, 1, 0, 30000), +(2852, 4230112, 4004001, 1, 1, 0, 10000), +(2853, 4230112, 2002008, 1, 1, 0, 20000), +(2854, 4230112, 2000002, 1, 1, 0, 20000), +(2855, 4230112, 2000004, 1, 1, 0, 20000), +(2856, 4230112, 2040004, 1, 1, 0, 300), +(2857, 4230112, 2040502, 1, 1, 0, 300), +(2858, 4230112, 1302016, 1, 1, 0, 700), +(2859, 4230112, 1302010, 1, 1, 0, 700), +(2860, 4230112, 1072101, 1, 1, 0, 800), +(2861, 4230112, 1051026, 1, 1, 0, 700), +(2862, 4230112, 1072000, 1, 1, 0, 800), +(2863, 4230112, 1072110, 1, 1, 0, 800), +(2864, 4230112, 1082025, 1, 1, 0, 1000), +(2865, 4230112, 1002169, 1, 1, 0, 1500), +(2866, 4230112, 1472020, 1, 1, 0, 500), +(2867, 4230112, 1412003, 1, 1, 0, 700), +(2868, 4230112, 1402003, 1, 1, 0, 700), +(2869, 4230112, 1040097, 1, 1, 0, 800), +(2870, 4230112, 1060086, 1, 1, 0, 800), +(2871, 4230112, 1002214, 1, 1, 0, 1500), +(2872, 4230112, 1492007, 1, 1, 0, 500), +(2873, 4230112, 2049000, 1, 1, 0, 150), +(2874, 4230112, 4130003, 1, 1, 0, 6000), +(2875, 4230112, 4130010, 1, 1, 0, 6000), +(2876, 4230113, 4000114, 1, 1, 0, 600000), +(2877, 4230113, 2060000, 1, 1, 0, 30000), +(2878, 4230113, 2061000, 1, 1, 0, 30000), +(2879, 4230113, 4010003, 1, 1, 0, 9000), +(2880, 4230113, 4004003, 1, 1, 0, 10000), +(2881, 4230113, 2000002, 1, 1, 0, 20000), +(2882, 4230113, 2000003, 1, 1, 0, 20000), +(2883, 4230113, 1382019, 1, 1, 0, 700), +(2884, 4230113, 2040401, 1, 1, 0, 300), +(2885, 4230113, 2044701, 1, 1, 0, 300), +(2886, 4230113, 1002047, 1, 1, 0, 1500), +(2887, 4230113, 1002139, 1, 1, 0, 1500), +(2888, 4230113, 1002142, 1, 1, 0, 1500), +(2889, 4230113, 1040061, 1, 1, 0, 800), +(2890, 4230113, 1060050, 1, 1, 0, 800), +(2891, 4230113, 1051025, 1, 1, 0, 700), +(2892, 4230113, 1082071, 1, 1, 0, 1000), +(2893, 4230113, 1082023, 1, 1, 0, 1000), +(2894, 4230113, 1072108, 1, 1, 0, 800), +(2895, 4230113, 1032018, 1, 1, 0, 1000), +(2896, 4230113, 1372007, 1, 1, 0, 700), +(2897, 4230113, 1332016, 1, 1, 0, 500), +(2898, 4230113, 1322017, 1, 1, 0, 700), +(2899, 4230113, 1052113, 1, 1, 0, 700), +(2900, 4230113, 4130008, 1, 1, 0, 6000), +(2901, 4230113, 4130013, 1, 1, 0, 6000), +(2902, 4230113, 4130017, 1, 1, 0, 6000), +(2903, 4230114, 4000115, 1, 1, 0, 600000), +(2904, 4230114, 2060000, 1, 1, 0, 30000), +(2905, 4230114, 2061000, 1, 1, 0, 30000), +(2906, 4230114, 4020007, 1, 1, 0, 9000), +(2907, 4230114, 2002010, 1, 1, 0, 20000), +(2908, 4230114, 4004000, 1, 1, 0, 10000), +(2909, 4230114, 2000002, 1, 1, 0, 20000), +(2910, 4230114, 2000003, 1, 1, 0, 20000), +(2911, 4230114, 2040804, 1, 1, 0, 300), +(2912, 4230114, 1402007, 1, 1, 0, 700), +(2913, 4230114, 1092029, 1, 1, 0, 700), +(2914, 4230114, 1002176, 1, 1, 0, 1500), +(2915, 4230114, 1002143, 1, 1, 0, 1500), +(2916, 4230114, 1040076, 1, 1, 0, 800), +(2917, 4230114, 1060065, 1, 1, 0, 800), +(2918, 4230114, 1050036, 1, 1, 0, 700), +(2919, 4230114, 1040085, 1, 1, 0, 800), +(2920, 4230114, 1060074, 1, 1, 0, 800), +(2921, 4230114, 1082074, 1, 1, 0, 1000), +(2922, 4230114, 1072116, 1, 1, 0, 800), +(2923, 4230114, 1092013, 1, 1, 0, 700), +(2924, 4230114, 1432004, 1, 1, 0, 500), +(2925, 4230114, 1312008, 1, 1, 0, 700), +(2926, 4230114, 1052113, 1, 1, 0, 700), +(2927, 4230114, 4130006, 1, 1, 0, 6000), +(2928, 4230114, 4130016, 1, 1, 0, 6000), +(2929, 4230114, 4130017, 1, 1, 0, 6000), +(2930, 4230115, 4000115, 1, 1, 0, 600000), +(2931, 4230115, 2060000, 1, 1, 0, 30000), +(2932, 4230115, 2061000, 1, 1, 0, 30000), +(2933, 4230115, 2002010, 1, 1, 0, 20000), +(2934, 4230115, 4020000, 1, 1, 0, 9000), +(2935, 4230115, 4020006, 1, 1, 0, 9000), +(2936, 4230115, 4004003, 1, 1, 0, 10000), +(2937, 4230115, 2000002, 1, 1, 0, 20000), +(2938, 4230115, 2000004, 1, 1, 0, 20000), +(2939, 4230115, 2043802, 1, 1, 0, 300), +(2940, 4230115, 2044102, 1, 1, 0, 300), +(2941, 4230115, 4006001, 1, 1, 0, 10000), +(2942, 4230115, 2070004, 1, 1, 0, 500), +(2943, 4230115, 1082069, 1, 1, 0, 1000), +(2944, 4230115, 1072000, 1, 1, 0, 800), +(2945, 4230115, 1072118, 1, 1, 0, 800), +(2946, 4230115, 1060069, 1, 1, 0, 800), +(2947, 4230115, 1040079, 1, 1, 0, 800), +(2948, 4230115, 1050049, 1, 1, 0, 700), +(2949, 4230115, 1041088, 1, 1, 0, 800), +(2950, 4230115, 1061087, 1, 1, 0, 800), +(2951, 4230115, 1082065, 1, 1, 0, 1000), +(2952, 4230115, 1072141, 1, 1, 0, 800), +(2953, 4230115, 1422005, 1, 1, 0, 700), +(2954, 4230115, 1472021, 1, 1, 0, 500), +(2955, 4230115, 1482007, 1, 1, 0, 500), +(2956, 4230115, 2040029, 1, 1, 0, 300), +(2957, 4230115, 2040617, 1, 1, 0, 300), +(2958, 4230115, 2040931, 1, 1, 0, 300), +(2959, 4230115, 2044214, 1, 1, 0, 300), +(2960, 4230115, 4130011, 1, 1, 0, 6000), +(2961, 4230115, 4130015, 1, 1, 0, 6000), +(2962, 4230115, 4130016, 1, 1, 0, 6000), +(2963, 4230116, 4000117, 1, 1, 0, 600000), +(2964, 4230116, 2002009, 1, 1, 0, 20000), +(2965, 4230116, 2000002, 1, 1, 0, 20000), +(2966, 4230116, 2000003, 1, 1, 0, 20000), +(2967, 4230116, 4010001, 1, 1, 0, 9000), +(2968, 4230116, 4010004, 1, 1, 0, 9000), +(2969, 4230116, 4004002, 1, 1, 0, 10000), +(2970, 4230116, 2041005, 1, 1, 0, 300), +(2971, 4230116, 1302016, 1, 1, 0, 700), +(2972, 4230116, 2060000, 1, 1, 0, 30000), +(2973, 4230116, 2061000, 1, 1, 0, 30000), +(2974, 4230116, 4020007, 1, 1, 0, 9000), +(2975, 4230116, 1372001, 1, 1, 0, 700), +(2976, 4230116, 1322015, 1, 1, 0, 700), +(2977, 4230116, 1402006, 1, 1, 0, 700), +(2978, 4230116, 1092007, 1, 1, 0, 700), +(2979, 4230116, 1072109, 1, 1, 0, 800), +(2980, 4230116, 1072120, 1, 1, 0, 800), +(2981, 4230116, 1082062, 1, 1, 0, 1000), +(2982, 4230116, 1040084, 1, 1, 0, 800), +(2983, 4230116, 1060073, 1, 1, 0, 800), +(2984, 4230116, 1050047, 1, 1, 0, 700), +(2985, 4230116, 1002211, 1, 1, 0, 1500), +(2986, 4230116, 1002028, 1, 1, 0, 1500), +(2987, 4230116, 1082195, 1, 1, 0, 1000), +(2988, 4230116, 4130007, 1, 1, 0, 6000), +(2989, 4230116, 4130017, 1, 1, 0, 6000), +(2990, 4230117, 4000118, 1, 1, 0, 600000), +(2991, 4230117, 4010003, 1, 1, 0, 9000), +(2992, 4230117, 4020007, 1, 1, 0, 9000), +(2993, 4230117, 2002007, 1, 1, 0, 20000), +(2994, 4230117, 4004000, 1, 1, 0, 10000), +(2995, 4230117, 2000002, 1, 1, 0, 20000), +(2996, 4230117, 2000003, 1, 1, 0, 20000), +(2997, 4230117, 2040707, 1, 1, 0, 300), +(2998, 4230117, 2060000, 1, 1, 0, 30000), +(2999, 4230117, 2061000, 1, 1, 0, 30000), +(3000, 4230117, 1092020, 1, 1, 0, 700), +(3001, 4230117, 2070002, 1, 1, 0, 500), +(3002, 4230117, 1082047, 1, 1, 0, 1000), +(3003, 4230117, 1082008, 1, 1, 0, 1000), +(3004, 4230117, 1041085, 1, 1, 0, 800), +(3005, 4230117, 1061084, 1, 1, 0, 800), +(3006, 4230117, 1060068, 1, 1, 0, 800), +(3007, 4230117, 1040080, 1, 1, 0, 800), +(3008, 4230117, 1050049, 1, 1, 0, 700), +(3009, 4230117, 1002208, 1, 1, 0, 1500), +(3010, 4230117, 1002212, 1, 1, 0, 1500), +(3011, 4230117, 1002217, 1, 1, 0, 1500), +(3012, 4230117, 1312008, 1, 1, 0, 700), +(3013, 4230117, 1332003, 1, 1, 0, 500), +(3014, 4230117, 1492006, 1, 1, 0, 500), +(3015, 4230117, 4130009, 1, 1, 0, 6000), +(3016, 4230117, 4130010, 1, 1, 0, 6000), +(3017, 4230118, 4000119, 1, 1, 0, 600000), +(3018, 4230118, 2002009, 1, 1, 0, 20000), +(3019, 4230118, 4010002, 1, 1, 0, 9000), +(3020, 4230118, 4020006, 1, 1, 0, 9000), +(3021, 4230118, 4004001, 1, 1, 0, 10000), +(3022, 4230118, 2040802, 1, 1, 0, 300), +(3023, 4230118, 2000002, 1, 1, 0, 20000), +(3024, 4230118, 2000004, 1, 1, 0, 20000), +(3025, 4230118, 2060000, 1, 1, 0, 30000), +(3026, 4230118, 2061000, 1, 1, 0, 30000), +(3027, 4230118, 2070004, 1, 1, 0, 500), +(3028, 4230118, 1041068, 1, 1, 0, 800), +(3029, 4230118, 1061063, 1, 1, 0, 800), +(3030, 4230118, 1050038, 1, 1, 0, 700), +(3031, 4230118, 1002155, 1, 1, 0, 1500), +(3032, 4230118, 1061070, 1, 1, 0, 800), +(3033, 4230118, 1041075, 1, 1, 0, 800), +(3034, 4230118, 1082024, 1, 1, 0, 1000), +(3035, 4230118, 1040000, 1, 1, 0, 800), +(3036, 4230118, 1060075, 1, 1, 0, 800), +(3037, 4230118, 1002024, 1, 1, 0, 1500), +(3038, 4230118, 1032012, 1, 1, 0, 1000), +(3039, 4230118, 1072143, 1, 1, 0, 800), +(3040, 4230118, 1422005, 1, 1, 0, 700), +(3041, 4230118, 1472021, 1, 1, 0, 500), +(3042, 4230118, 1072300, 1, 1, 0, 800), +(3043, 4230118, 2040031, 1, 1, 0, 300), +(3044, 4230118, 2040931, 1, 1, 0, 300), +(3045, 4230118, 4130004, 1, 1, 0, 6000), +(3046, 4230119, 4000120, 1, 1, 0, 600000), +(3047, 4230119, 2000002, 1, 1, 0, 20000), +(3048, 4230119, 2002006, 1, 1, 0, 20000), +(3049, 4230119, 2000003, 1, 1, 0, 20000), +(3050, 4230119, 4020002, 1, 1, 0, 9000), +(3051, 4230119, 4010005, 1, 1, 0, 9000), +(3052, 4230119, 4004003, 1, 1, 0, 10000), +(3053, 4230119, 2040804, 1, 1, 0, 300), +(3054, 4230119, 2060000, 1, 1, 0, 30000), +(3055, 4230119, 2061000, 1, 1, 0, 30000), +(3056, 4230119, 4131004, 1, 1, 0, 6000), +(3057, 4230119, 1092019, 1, 1, 0, 700), +(3058, 4230119, 1002178, 1, 1, 0, 1500), +(3059, 4230119, 1051016, 1, 1, 0, 700), +(3060, 4230119, 1082068, 1, 1, 0, 1000), +(3061, 4230119, 1072002, 1, 1, 0, 800), +(3062, 4230119, 1050035, 1, 1, 0, 700), +(3063, 4230119, 1041075, 1, 1, 0, 800), +(3064, 4230119, 1061070, 1, 1, 0, 800), +(3065, 4230119, 1061083, 1, 1, 0, 800), +(3066, 4230119, 1041084, 1, 1, 0, 800), +(3067, 4230119, 1082080, 1, 1, 0, 1000), +(3068, 4230119, 1072124, 1, 1, 0, 800), +(3069, 4230119, 1082067, 1, 1, 0, 1000), +(3070, 4230119, 1082195, 1, 1, 0, 1000), +(3071, 4230119, 2330001, 1, 1, 0, 500), +(3072, 4230119, 2044110, 1, 1, 0, 300), +(3073, 4230119, 4130001, 1, 1, 0, 6000), +(3074, 4230119, 4130006, 1, 1, 0, 6000), +(3075, 4230120, 4000121, 1, 1, 0, 600000), +(3076, 4230120, 4131004, 1, 1, 0, 6000), +(3077, 4230120, 4020003, 1, 1, 0, 9000), +(3078, 4230120, 4004001, 1, 1, 0, 10000), +(3079, 4230120, 2040804, 1, 1, 0, 300), +(3080, 4230120, 2000002, 1, 1, 0, 20000), +(3081, 4230120, 2000004, 1, 1, 0, 20000), +(3082, 4230120, 2060000, 1, 1, 0, 30000), +(3083, 4230120, 2061000, 1, 1, 0, 30000), +(3084, 4230120, 4006001, 1, 1, 0, 10000), +(3085, 4230120, 1002141, 1, 1, 0, 1500), +(3086, 4230120, 1002135, 1, 1, 0, 1500), +(3087, 4230120, 1041086, 1, 1, 0, 800), +(3088, 4230120, 1061085, 1, 1, 0, 800), +(3089, 4230120, 1061080, 1, 1, 0, 800), +(3090, 4230120, 1041081, 1, 1, 0, 800), +(3091, 4230120, 1040084, 1, 1, 0, 800), +(3092, 4230120, 1061071, 1, 1, 0, 800), +(3093, 4230120, 1051030, 1, 1, 0, 700), +(3094, 4230120, 1051039, 1, 1, 0, 700), +(3095, 4230120, 1082084, 1, 1, 0, 1000), +(3096, 4230120, 1072131, 1, 1, 0, 800), +(3097, 4230120, 1432004, 1, 1, 0, 500), +(3098, 4230120, 1452008, 1, 1, 0, 500), +(3099, 4230120, 1482007, 1, 1, 0, 500), +(3100, 4230120, 2040324, 1, 1, 0, 300), +(3101, 4230120, 2040530, 1, 1, 0, 300), +(3102, 4230120, 4130001, 1, 1, 0, 6000), +(3103, 4230120, 4130002, 1, 1, 0, 6000), +(3104, 4230121, 4000122, 1, 1, 0, 600000), +(3105, 4230121, 4131012, 1, 1, 0, 6000), +(3106, 4230121, 4020004, 1, 1, 0, 9000), +(3107, 4230121, 4020005, 1, 1, 0, 9000), +(3108, 4230121, 4004000, 1, 1, 0, 10000), +(3109, 4230121, 2043802, 1, 1, 0, 300), +(3110, 4230121, 2000002, 1, 1, 0, 20000), +(3111, 4230121, 2000004, 1, 1, 0, 20000), +(3112, 4230121, 2060000, 1, 1, 0, 30000), +(3113, 4230121, 2061000, 1, 1, 0, 30000), +(3114, 4230121, 1041053, 1, 1, 0, 800), +(3115, 4230121, 1061049, 1, 1, 0, 800), +(3116, 4230121, 1051015, 1, 1, 0, 700), +(3117, 4230121, 1082047, 1, 1, 0, 1000), +(3118, 4230121, 1051024, 1, 1, 0, 700), +(3119, 4230121, 1002155, 1, 1, 0, 1500), +(3120, 4230121, 1002184, 1, 1, 0, 1500), +(3121, 4230121, 1082072, 1, 1, 0, 1000), +(3122, 4230121, 1372007, 1, 1, 0, 700), +(3123, 4230121, 1040089, 1, 1, 0, 800), +(3124, 4230121, 1060078, 1, 1, 0, 800), +(3125, 4230121, 1061076, 1, 1, 0, 800), +(3126, 4230121, 1041077, 1, 1, 0, 800), +(3127, 4230121, 1412003, 1, 1, 0, 700), +(3128, 4230121, 1082198, 1, 1, 0, 1000), +(3129, 4230121, 2044901, 1, 1, 0, 300), +(3130, 4230121, 4130000, 1, 1, 0, 6000), +(3131, 4230121, 4130006, 1, 1, 0, 6000), +(3132, 4230121, 4130013, 1, 1, 0, 6000), +(3133, 4230123, 4000156, 1, 1, 0, 600000), +(3134, 4230123, 2000002, 1, 1, 0, 20000), +(3135, 4230123, 2000003, 1, 1, 0, 20000), +(3136, 4230123, 4000157, 1, 1, 0, 100000), +(3137, 4230123, 4020008, 1, 1, 0, 9000), +(3138, 4230123, 4020004, 1, 1, 0, 9000), +(3139, 4230123, 4004003, 1, 1, 0, 10000), +(3140, 4230123, 4003004, 1, 1, 0, 200000), +(3141, 4230123, 2048004, 1, 1, 0, 300), +(3142, 4230123, 2070002, 1, 1, 0, 500), +(3143, 4230123, 2044501, 1, 1, 0, 300), +(3144, 4230123, 1442009, 1, 1, 0, 700), +(3145, 4230123, 2060000, 1, 1, 0, 30000), +(3146, 4230123, 2061000, 1, 1, 0, 30000), +(3147, 4230123, 1452008, 1, 1, 0, 500), +(3148, 4230123, 1002024, 1, 1, 0, 1500), +(3149, 4230123, 1472017, 1, 1, 0, 500), +(3150, 4230123, 1041083, 1, 1, 0, 800), +(3151, 4230123, 1061082, 1, 1, 0, 800), +(3152, 4230123, 1082198, 1, 1, 0, 1000), +(3153, 4230123, 2044801, 1, 1, 0, 300), +(3154, 4230123, 2044805, 1, 1, 0, 300), +(3155, 4230123, 4130008, 1, 1, 0, 6000), +(3156, 4230124, 4000155, 1, 1, 0, 600000), +(3157, 4230124, 2000002, 1, 1, 0, 20000), +(3158, 4230124, 2000003, 1, 1, 0, 20000), +(3159, 4230124, 4000157, 1, 1, 0, 100000), +(3160, 4230124, 4010006, 1, 1, 0, 9000), +(3161, 4230124, 4020007, 1, 1, 0, 9000), +(3162, 4230124, 2000004, 1, 1, 0, 20000), +(3163, 4230124, 2060000, 1, 1, 0, 30000), +(3164, 4230124, 2061000, 1, 1, 0, 30000), +(3165, 4230124, 4004004, 1, 1, 0, 10000), +(3166, 4230124, 2041019, 1, 1, 0, 300), +(3167, 4230124, 1002045, 1, 1, 0, 1500), +(3168, 4230124, 1061062, 1, 1, 0, 800), +(3169, 4230124, 1041067, 1, 1, 0, 800), +(3170, 4230124, 1050037, 1, 1, 0, 700), +(3171, 4230124, 1041076, 1, 1, 0, 800), +(3172, 4230124, 1060073, 1, 1, 0, 800), +(3173, 4230124, 1412005, 1, 1, 0, 700), +(3174, 4230124, 1452007, 1, 1, 0, 500), +(3175, 4230124, 1002213, 1, 1, 0, 1500), +(3176, 4230124, 1002085, 1, 1, 0, 1500), +(3177, 4230124, 1032012, 1, 1, 0, 1000), +(3178, 4230124, 1040096, 1, 1, 0, 800), +(3179, 4230124, 1060085, 1, 1, 0, 800), +(3180, 4230124, 1002631, 1, 1, 0, 1500), +(3181, 4230124, 4130008, 1, 1, 0, 6000), +(3182, 4230124, 4130012, 1, 1, 0, 6000), +(3183, 4230124, 4130014, 1, 1, 0, 6000), +(3184, 4230125, 4000204, 1, 1, 0, 600000), +(3185, 4230125, 2000002, 1, 1, 0, 20000), +(3186, 4230125, 2000003, 1, 1, 0, 20000), +(3187, 4230125, 4020007, 1, 1, 0, 9000), +(3188, 4230125, 4010004, 1, 1, 0, 9000), +(3189, 4230125, 4010000, 1, 1, 0, 9000), +(3190, 4230125, 2060000, 1, 1, 0, 30000), +(3191, 4230125, 2061000, 1, 1, 0, 30000), +(3192, 4230125, 1002047, 1, 1, 0, 1500), +(3193, 4230125, 1002081, 1, 1, 0, 1500), +(3194, 4230125, 1002144, 1, 1, 0, 1500), +(3195, 4230125, 1002178, 1, 1, 0, 1500), +(3196, 4230125, 1422007, 1, 1, 0, 700), +(3197, 4230125, 1382019, 1, 1, 0, 700), +(3198, 4230125, 1332016, 1, 1, 0, 500), +(3199, 4230125, 1050052, 1, 1, 0, 700), +(3200, 4230125, 1072118, 1, 1, 0, 800), +(3201, 4230125, 1072108, 1, 1, 0, 800), +(3202, 4230125, 1072126, 1, 1, 0, 800), +(3203, 4230125, 2070002, 1, 1, 0, 500), +(3204, 4230125, 4006000, 1, 1, 0, 10000), +(3205, 4230125, 2044301, 1, 1, 0, 300), +(3206, 4230125, 2040705, 1, 1, 0, 300), +(3207, 4230125, 2040824, 1, 1, 0, 300), +(3208, 4230125, 2040929, 1, 1, 0, 300), +(3209, 4230125, 4130002, 1, 1, 0, 6000), +(3210, 4230125, 4130011, 1, 1, 0, 6000), +(3211, 4230126, 4000205, 1, 1, 0, 600000), +(3212, 4230126, 2041014, 1, 1, 0, 300), +(3213, 4230126, 4020003, 1, 1, 0, 9000), +(3214, 4230126, 2000002, 1, 1, 0, 20000), +(3215, 4230126, 2000004, 1, 1, 0, 20000), +(3216, 4230126, 2000003, 1, 1, 0, 20000), +(3217, 4230126, 4020006, 1, 1, 0, 9000), +(3218, 4230126, 4010003, 1, 1, 0, 9000), +(3219, 4230126, 2060000, 1, 1, 0, 30000), +(3220, 4230126, 2061000, 1, 1, 0, 30000), +(3221, 4230126, 1041084, 1, 1, 0, 800), +(3222, 4230126, 1060075, 1, 1, 0, 800), +(3223, 4230126, 1041082, 1, 1, 0, 800), +(3224, 4230126, 1060069, 1, 1, 0, 800), +(3225, 4230126, 1050048, 1, 1, 0, 700), +(3226, 4230126, 1051032, 1, 1, 0, 700), +(3227, 4230126, 1082010, 1, 1, 0, 1000), +(3228, 4230126, 2044201, 1, 1, 0, 300), +(3229, 4230126, 1082066, 1, 1, 0, 1000), +(3230, 4230126, 1082092, 1, 1, 0, 1000), +(3231, 4230126, 1082089, 1, 1, 0, 1000), +(3232, 4230126, 1082059, 1, 1, 0, 1000), +(3233, 4230126, 4006001, 1, 1, 0, 10000), +(3234, 4230126, 1002631, 1, 1, 0, 1500), +(3235, 4230126, 2040419, 1, 1, 0, 300), +(3236, 4230126, 2040425, 1, 1, 0, 300), +(3237, 4230126, 2049000, 1, 1, 0, 150), +(3238, 4230126, 4130004, 1, 1, 0, 6000), +(3239, 4230126, 4130008, 1, 1, 0, 6000), +(3240, 4230126, 4130012, 1, 1, 0, 6000), +(3241, 4230200, 2000002, 1, 1, 0, 20000), +(3242, 4230200, 2022040, 1, 1, 0, 20000), +(3243, 4230200, 2000003, 1, 1, 0, 20000), +(3244, 4230200, 4010002, 1, 1, 0, 9000), +(3245, 4230200, 4010003, 1, 1, 0, 9000), +(3246, 4230200, 4004001, 1, 1, 0, 10000), +(3247, 4230200, 2040001, 1, 1, 0, 300), +(3248, 4230200, 2040704, 1, 1, 0, 300), +(3249, 4230200, 4000158, 1, 1, 0, 600000), +(3250, 4230200, 1072112, 1, 1, 0, 800), +(3251, 4230200, 1051027, 1, 1, 0, 700), +(3252, 4230200, 1002170, 1, 1, 0, 1500), +(3253, 4230200, 1040000, 1, 1, 0, 800), +(3254, 4230200, 1060000, 1, 1, 0, 800), +(3255, 4230200, 1432005, 1, 1, 0, 500), +(3256, 4230200, 1472014, 1, 1, 0, 500), +(3257, 4230200, 1462006, 1, 1, 0, 500), +(3258, 4230200, 1002207, 1, 1, 0, 1500), +(3259, 4230200, 1002215, 1, 1, 0, 1500), +(3260, 4230200, 1040094, 1, 1, 0, 800), +(3261, 4230200, 1060083, 1, 1, 0, 800), +(3262, 4230200, 1051038, 1, 1, 0, 700), +(3263, 4230200, 1041088, 1, 1, 0, 800), +(3264, 4230200, 1061087, 1, 1, 0, 800), +(3265, 4230200, 1072300, 1, 1, 0, 800), +(3266, 4230200, 2040620, 1, 1, 0, 300), +(3267, 4230200, 2044310, 1, 1, 0, 300), +(3268, 4230200, 4130003, 1, 1, 0, 6000), +(3269, 4230200, 4130007, 1, 1, 0, 6000), +(3270, 4230201, 4000159, 1, 1, 0, 600000), +(3271, 4230201, 2002004, 1, 1, 0, 20000), +(3272, 4230201, 2000002, 1, 1, 0, 20000), +(3273, 4230201, 2000003, 1, 1, 0, 20000), +(3274, 4230201, 2022040, 1, 1, 0, 20000), +(3275, 4230201, 4020003, 1, 1, 0, 9000), +(3276, 4230201, 4010004, 1, 1, 0, 9000), +(3277, 4230201, 4004002, 1, 1, 0, 10000), +(3278, 4230201, 2040801, 1, 1, 0, 300), +(3279, 4230201, 2040901, 1, 1, 0, 300), +(3280, 4230201, 2060000, 1, 1, 0, 30000), +(3281, 4230201, 2061000, 1, 1, 0, 30000), +(3282, 4230201, 1072106, 1, 1, 0, 800), +(3283, 4230201, 1072102, 1, 1, 0, 800), +(3284, 4230201, 1082055, 1, 1, 0, 1000), +(3285, 4230201, 1002137, 1, 1, 0, 1500), +(3286, 4230201, 1072126, 1, 1, 0, 800), +(3287, 4230201, 1082024, 1, 1, 0, 1000), +(3288, 4230201, 1041074, 1, 1, 0, 800), +(3289, 4230201, 1061069, 1, 1, 0, 800), +(3290, 4230201, 1051031, 1, 1, 0, 700), +(3291, 4230201, 1041078, 1, 1, 0, 800), +(3292, 4230201, 1061077, 1, 1, 0, 800), +(3293, 4230201, 1051037, 1, 1, 0, 700), +(3294, 4230201, 1072140, 1, 1, 0, 800), +(3295, 4230201, 1082011, 1, 1, 0, 1000), +(3296, 4230201, 2040417, 1, 1, 0, 300), +(3297, 4230201, 4130006, 1, 1, 0, 6000), +(3298, 4230201, 4130016, 1, 1, 0, 6000), +(3299, 4230300, 4000169, 1, 1, 0, 600000), +(3300, 4230300, 4000021, 1, 1, 0, 50000), +(3301, 4230300, 2000002, 1, 1, 0, 20000), +(3302, 4230300, 2000003, 1, 1, 0, 20000), +(3303, 4230300, 4020005, 1, 1, 0, 9000), +(3304, 4230300, 4010004, 1, 1, 0, 9000), +(3305, 4230300, 4004001, 1, 1, 0, 10000), +(3306, 4230300, 2060000, 1, 1, 0, 30000), +(3307, 4230300, 2061000, 1, 1, 0, 30000), +(3308, 4230300, 1302016, 1, 1, 0, 700), +(3309, 4230300, 1082072, 1, 1, 0, 1000), +(3310, 4230300, 1072109, 1, 1, 0, 800), +(3311, 4230300, 1072112, 1, 1, 0, 800), +(3312, 4230300, 1092014, 1, 1, 0, 700), +(3313, 4230300, 1032011, 1, 1, 0, 1000), +(3314, 4230300, 1312007, 1, 1, 0, 700), +(3315, 4230300, 2070002, 1, 1, 0, 500), +(3316, 4230300, 1102001, 1, 1, 0, 1000), +(3317, 4230300, 4006000, 1, 1, 0, 10000), +(3318, 4230300, 2040705, 1, 1, 0, 300), +(3319, 4230300, 1482006, 1, 1, 0, 500), +(3320, 4230300, 2040029, 1, 1, 0, 300), +(3321, 4230300, 2040417, 1, 1, 0, 300), +(3322, 4230300, 4130009, 1, 1, 0, 6000), +(3323, 4230300, 4130015, 1, 1, 0, 6000), +(3324, 4230300, 4130017, 1, 1, 0, 6000), +(3325, 4230400, 4000178, 1, 1, 0, 600000), +(3326, 4230400, 2044001, 1, 1, 0, 300), +(3327, 4230400, 2060000, 1, 1, 0, 30000), +(3328, 4230400, 2061000, 1, 1, 0, 30000), +(3329, 4230400, 4020008, 1, 1, 0, 9000), +(3330, 4230400, 4010001, 1, 1, 0, 9000), +(3331, 4230400, 2000002, 1, 1, 0, 20000), +(3332, 4230400, 2000003, 1, 1, 0, 20000), +(3333, 4230400, 2000004, 1, 1, 0, 20000), +(3334, 4230400, 1002184, 1, 1, 0, 1500), +(3335, 4230400, 1032018, 1, 1, 0, 1000), +(3336, 4230400, 1041082, 1, 1, 0, 800), +(3337, 4230400, 1061081, 1, 1, 0, 800), +(3338, 4230400, 1050047, 1, 1, 0, 700), +(3339, 4230400, 1082071, 1, 1, 0, 1000), +(3340, 4230400, 1072116, 1, 1, 0, 800), +(3341, 4230400, 1072126, 1, 1, 0, 800), +(3342, 4230400, 4020007, 1, 1, 0, 9000), +(3343, 4230400, 2040923, 1, 1, 0, 300), +(3344, 4230400, 4130001, 1, 1, 0, 6000), +(3345, 4230400, 4130010, 1, 1, 0, 6000), +(3346, 4230400, 4130011, 1, 1, 0, 6000), +(3347, 4230500, 4000276, 1, 1, 0, 600000), +(3348, 4230500, 4000021, 1, 1, 0, 50000), +(3349, 4230500, 2060000, 1, 1, 0, 30000), +(3350, 4230500, 2061000, 1, 1, 0, 30000), +(3351, 4230500, 2040001, 1, 1, 0, 300), +(3352, 4230500, 2000002, 1, 1, 0, 20000), +(3353, 4230500, 4010006, 1, 1, 0, 9000), +(3354, 4230500, 2000003, 1, 1, 0, 20000), +(3355, 4230500, 1002023, 1, 1, 0, 1500), +(3356, 4230500, 4010001, 1, 1, 0, 9000), +(3357, 4230500, 1002103, 1, 1, 0, 1500), +(3358, 4230500, 1002092, 1, 1, 0, 1500), +(3359, 4230500, 1002155, 1, 1, 0, 1500), +(3360, 4230500, 1051016, 1, 1, 0, 700), +(3361, 4230500, 1061061, 1, 1, 0, 800), +(3362, 4230500, 1041066, 1, 1, 0, 800), +(3363, 4230500, 1050038, 1, 1, 0, 700), +(3364, 4230500, 1041095, 1, 1, 0, 800), +(3365, 4230500, 1061094, 1, 1, 0, 800), +(3366, 4230500, 1482006, 1, 1, 0, 500), +(3367, 4230500, 2330001, 1, 1, 0, 500), +(3368, 4230500, 4130004, 1, 1, 0, 6000), +(3369, 4230500, 4130014, 1, 1, 0, 6000), +(3370, 4230500, 4130016, 1, 1, 0, 6000), +(3371, 4230501, 4000277, 1, 1, 0, 600000), +(3372, 4230501, 2060000, 1, 1, 0, 30000), +(3373, 4230501, 2061000, 1, 1, 0, 30000), +(3374, 4230501, 4010001, 1, 1, 0, 9000), +(3375, 4230501, 2000002, 1, 1, 0, 20000), +(3376, 4230501, 2000003, 1, 1, 0, 20000), +(3377, 4230501, 2040901, 1, 1, 0, 300), +(3378, 4230501, 1472018, 1, 1, 0, 500), +(3379, 4230501, 1032018, 1, 1, 0, 1000), +(3380, 4230501, 1072110, 1, 1, 0, 800), +(3381, 4230501, 1051026, 1, 1, 0, 700), +(3382, 4230501, 1061076, 1, 1, 0, 800), +(3383, 4230501, 1002217, 1, 1, 0, 1500), +(3384, 4230501, 4004002, 1, 1, 0, 10000), +(3385, 4230501, 1072300, 1, 1, 0, 800), +(3386, 4230501, 2040420, 1, 1, 0, 300), +(3387, 4230501, 2049000, 1, 1, 0, 150), +(3388, 4230501, 4130000, 1, 1, 0, 6000), +(3389, 4230501, 4130009, 1, 1, 0, 6000), +(3390, 4230501, 4130011, 1, 1, 0, 6000), +(3391, 4230502, 4000278, 1, 1, 0, 600000), +(3392, 4230502, 2000002, 1, 1, 0, 20000), +(3393, 4230502, 2000003, 1, 1, 0, 20000), +(3394, 4230502, 4020008, 1, 1, 0, 9000), +(3395, 4230502, 4020004, 1, 1, 0, 9000), +(3396, 4230502, 4004003, 1, 1, 0, 10000), +(3397, 4230502, 2048004, 1, 1, 0, 300), +(3398, 4230502, 2070002, 1, 1, 0, 500), +(3399, 4230502, 2044501, 1, 1, 0, 300), +(3400, 4230502, 1442009, 1, 1, 0, 700), +(3401, 4230502, 2060000, 1, 1, 0, 30000), +(3402, 4230502, 2061000, 1, 1, 0, 30000), +(3403, 4230502, 1452008, 1, 1, 0, 500), +(3404, 4230502, 1002024, 1, 1, 0, 1500), +(3405, 4230502, 1041083, 1, 1, 0, 800), +(3406, 4230502, 1061082, 1, 1, 0, 800), +(3407, 4230502, 1072303, 1, 1, 0, 800), +(3408, 4230502, 2040823, 1, 1, 0, 300), +(3409, 4230502, 2043114, 1, 1, 0, 300), +(3410, 4230502, 4130003, 1, 1, 0, 6000), +(3411, 4230502, 4130009, 1, 1, 0, 6000), +(3412, 4230502, 4130017, 1, 1, 0, 6000), +(3413, 4230503, 4000281, 1, 1, 0, 600000), +(3414, 4230503, 2000002, 1, 1, 0, 20000), +(3415, 4230503, 2000003, 1, 1, 0, 20000), +(3416, 4230503, 4020005, 1, 1, 0, 9000), +(3417, 4230503, 4010004, 1, 1, 0, 9000), +(3418, 4230503, 4004001, 1, 1, 0, 10000), +(3419, 4230503, 2060000, 1, 1, 0, 30000), +(3420, 4230503, 2061000, 1, 1, 0, 30000), +(3421, 4230503, 1032008, 1, 1, 0, 1000), +(3422, 4230503, 1002081, 1, 1, 0, 1500), +(3423, 4230503, 1040089, 1, 1, 0, 800), +(3424, 4230503, 1060078, 1, 1, 0, 800), +(3425, 4230503, 1050052, 1, 1, 0, 700), +(3426, 4230503, 1102001, 1, 1, 0, 1000), +(3427, 4230503, 2040705, 1, 1, 0, 300), +(3428, 4230503, 4000280, 1, 1, 0, 600000), +(3429, 4230503, 1492006, 1, 1, 0, 500), +(3430, 4230503, 2044410, 1, 1, 0, 300), +(3431, 4230503, 4130001, 1, 1, 0, 6000), +(3432, 4230503, 4130007, 1, 1, 0, 6000), +(3433, 4230504, 4000281, 1, 1, 0, 600000), +(3434, 4230504, 2000002, 1, 1, 0, 20000), +(3435, 4230504, 2000003, 1, 1, 0, 20000), +(3436, 4230504, 4010002, 1, 1, 0, 9000), +(3437, 4230504, 4010004, 1, 1, 0, 9000), +(3438, 4230504, 4004000, 1, 1, 0, 10000), +(3439, 4230504, 2060000, 1, 1, 0, 30000), +(3440, 4230504, 2061000, 1, 1, 0, 30000), +(3441, 4230504, 2040504, 1, 1, 0, 300), +(3442, 4230504, 2044002, 1, 1, 0, 300), +(3443, 4230504, 1002085, 1, 1, 0, 1500), +(3444, 4230504, 1382001, 1, 1, 0, 700), +(3445, 4230504, 1082010, 1, 1, 0, 1000), +(3446, 4230504, 1041077, 1, 1, 0, 800), +(3447, 4230504, 4000279, 1, 1, 0, 600000), +(3448, 4230504, 1002631, 1, 1, 0, 1500), +(3449, 4230504, 2330002, 1, 1, 0, 500), +(3450, 4230504, 2044310, 1, 1, 0, 300), +(3451, 4230504, 4130002, 1, 1, 0, 6000), +(3452, 4230504, 4130013, 1, 1, 0, 6000), +(3453, 4230505, 4000291, 1, 1, 0, 600000), +(3454, 4230505, 2000002, 1, 1, 0, 20000), +(3455, 4230505, 2000003, 1, 1, 0, 20000), +(3456, 4230505, 4020000, 1, 1, 0, 9000), +(3457, 4230505, 4020006, 1, 1, 0, 9000), +(3458, 4230505, 2044102, 1, 1, 0, 300), +(3459, 4230505, 1372007, 1, 1, 0, 700), +(3460, 4230505, 1002215, 1, 1, 0, 1500), +(3461, 4230505, 4006001, 1, 1, 0, 10000), +(3462, 4230505, 1040089, 1, 1, 0, 800), +(3463, 4230505, 1050045, 1, 1, 0, 700), +(3464, 4230505, 4004002, 1, 1, 0, 10000), +(3465, 4230505, 2040001, 1, 1, 0, 300), +(3466, 4230505, 1052116, 1, 1, 0, 700), +(3467, 4230505, 2330002, 1, 1, 0, 500), +(3468, 4230505, 4130001, 1, 1, 0, 6000), +(3469, 4230505, 4130014, 1, 1, 0, 6000), +(3470, 4230505, 4130016, 1, 1, 0, 6000), +(3471, 4230506, 4000292, 1, 1, 0, 600000), +(3472, 4230506, 2000002, 1, 1, 0, 20000), +(3473, 4230506, 2000003, 1, 1, 0, 20000), +(3474, 4230506, 4010001, 1, 1, 0, 9000), +(3475, 4230506, 4020000, 1, 1, 0, 9000), +(3476, 4230506, 1041086, 1, 1, 0, 800), +(3477, 4230506, 1061085, 1, 1, 0, 800), +(3478, 4230506, 1302013, 1, 1, 0, 700), +(3479, 4230506, 1002083, 1, 1, 0, 1500), +(3480, 4230506, 1032007, 1, 1, 0, 1000), +(3481, 4230506, 1041080, 1, 1, 0, 800), +(3482, 4230506, 1061079, 1, 1, 0, 800), +(3483, 4230506, 1002212, 1, 1, 0, 1500), +(3484, 4230506, 1041092, 1, 1, 0, 800), +(3485, 4230506, 1061091, 1, 1, 0, 800), +(3486, 4230506, 1102003, 1, 1, 0, 1000), +(3487, 4230506, 4006001, 1, 1, 0, 10000), +(3488, 4230506, 1492007, 1, 1, 0, 500), +(3489, 4230506, 2040622, 1, 1, 0, 300), +(3490, 4230506, 2044110, 1, 1, 0, 300), +(3491, 4230506, 2044312, 1, 1, 0, 300), +(3492, 4230506, 2049100, 1, 1, 0, 150), +(3493, 4230506, 4130000, 1, 1, 0, 6000), +(3494, 4230506, 4130017, 1, 1, 0, 6000), +(3495, 4230600, 2000003, 1, 1, 0, 20000), +(3496, 4230600, 2060000, 1, 1, 0, 30000), +(3497, 4230600, 2061000, 1, 1, 0, 30000), +(3498, 4230600, 2000002, 1, 1, 0, 20000), +(3499, 4230600, 4000332, 1, 1, 0, 600000), +(3500, 4230600, 4020001, 1, 1, 0, 9000), +(3501, 4230600, 4004003, 1, 1, 0, 10000), +(3502, 4230600, 4006001, 1, 1, 0, 10000), +(3503, 4230600, 2044401, 1, 1, 0, 300), +(3504, 4230600, 2070003, 1, 1, 0, 500), +(3505, 4230600, 1372012, 1, 1, 0, 700), +(3506, 4230600, 1432003, 1, 1, 0, 500), +(3507, 4230600, 1452007, 1, 1, 0, 500), +(3508, 4230600, 1102000, 1, 1, 0, 1000), +(3509, 4230600, 1002210, 1, 1, 0, 1500), +(3510, 4230600, 1072002, 1, 1, 0, 800), +(3511, 4230600, 1082055, 1, 1, 0, 1000), +(3512, 4230600, 1041082, 1, 1, 0, 800), +(3513, 4230600, 1061081, 1, 1, 0, 800), +(3514, 4230600, 4010007, 1, 1, 0, 9000), +(3515, 4230600, 1492006, 1, 1, 0, 500), +(3516, 4230600, 2044802, 1, 1, 0, 300), +(3517, 4230600, 2040823, 1, 1, 0, 300), +(3518, 4230600, 2044412, 1, 1, 0, 300), +(3519, 4230600, 4130000, 1, 1, 0, 6000), +(3520, 4230600, 4130016, 1, 1, 0, 6000), +(3521, 4240000, 4000125, 1, 1, 0, 600000), +(3522, 4240000, 2060000, 1, 1, 0, 30000), +(3523, 4240000, 2061000, 1, 1, 0, 30000), +(3524, 4240000, 2000002, 1, 1, 0, 20000), +(3525, 4240000, 2000004, 1, 1, 0, 20000), +(3526, 4240000, 2002008, 1, 1, 0, 20000), +(3527, 4240000, 1102016, 1, 1, 0, 1000), +(3528, 4240000, 4010006, 1, 1, 0, 9000), +(3529, 4240000, 4020008, 1, 1, 0, 9000), +(3530, 4240000, 4004003, 1, 1, 0, 10000), +(3531, 4240000, 2043801, 1, 1, 0, 300), +(3532, 4240000, 4006001, 1, 1, 0, 10000), +(3533, 4240000, 4021009, 1, 1, 0, 9000), +(3534, 4240000, 1322016, 1, 1, 0, 700), +(3535, 4240000, 1041074, 1, 1, 0, 800), +(3536, 4240000, 1061069, 1, 1, 0, 800), +(3537, 4240000, 1041083, 1, 1, 0, 800), +(3538, 4240000, 1061082, 1, 1, 0, 800), +(3539, 4240000, 1332003, 1, 1, 0, 500), +(3540, 4240000, 1072122, 1, 1, 0, 800), +(3541, 4240000, 1072130, 1, 1, 0, 800), +(3542, 4240000, 1072133, 1, 1, 0, 800), +(3543, 4240000, 1082080, 1, 1, 0, 1000), +(3544, 4240000, 1072125, 1, 1, 0, 800), +(3545, 4240000, 1002216, 1, 1, 0, 1500), +(3546, 4240000, 1002101, 1, 1, 0, 1500), +(3547, 4240000, 2040029, 1, 1, 0, 300), +(3548, 4240000, 2040619, 1, 1, 0, 300), +(3549, 4240000, 2044114, 1, 1, 0, 300), +(3550, 4240000, 4130006, 1, 1, 0, 6000), +(3551, 4240000, 4130011, 1, 1, 0, 6000), +(3552, 4250000, 4000436, 1, 1, 0, 600000), +(3553, 4250000, 2000002, 1, 1, 0, 20000), +(3554, 4250000, 2000003, 1, 1, 0, 20000), +(3555, 4250000, 4010005, 1, 1, 0, 9000), +(3556, 4250000, 4020004, 1, 1, 0, 9000), +(3557, 4250000, 2040004, 1, 1, 0, 300), +(3558, 4250000, 1002025, 1, 1, 0, 1500), +(3559, 4250000, 1051025, 1, 1, 0, 700), +(3560, 4250000, 1082083, 1, 1, 0, 1000), +(3561, 4250000, 1072109, 1, 1, 0, 800), +(3562, 4250000, 1492006, 1, 1, 0, 500), +(3563, 4250000, 4130005, 1, 1, 0, 6000), +(3564, 4250000, 4130015, 1, 1, 0, 6000), +(3565, 4250000, 4130017, 1, 1, 0, 6000), +(3566, 4250001, 2000002, 1, 1, 0, 20000), +(3567, 4250001, 2000003, 1, 1, 0, 20000), +(3568, 4250001, 4010004, 1, 1, 0, 9000), +(3569, 4250001, 4020005, 1, 1, 0, 9000), +(3570, 4250001, 2040627, 1, 1, 0, 300), +(3571, 4250001, 1002215, 1, 1, 0, 1500), +(3572, 4250001, 1051038, 1, 1, 0, 700), +(3573, 4250001, 1082066, 1, 1, 0, 1000), +(3574, 4250001, 1072303, 1, 1, 0, 800), +(3575, 4250001, 1442005, 1, 1, 0, 700), +(3576, 4250001, 4000438, 1, 1, 0, 600000), +(3577, 4250001, 4130014, 1, 1, 0, 6000), +(3578, 5090000, 4000413, 1, 1, 0, 600000), +(3579, 5090001, 4000412, 1, 1, 0, 600000), +(3580, 5100000, 4000048, 1, 1, 0, 600000), +(3581, 5100000, 4003005, 1, 1, 0, 200000), +(3582, 5100000, 4000021, 1, 1, 0, 50000), +(3583, 5100000, 2000002, 1, 1, 0, 20000), +(3584, 5100000, 2000003, 1, 1, 0, 20000), +(3585, 5100000, 2000004, 1, 1, 0, 20000), +(3586, 5100000, 4020001, 1, 1, 0, 9000), +(3587, 5100000, 4010002, 1, 1, 0, 9000), +(3588, 5100000, 1072089, 1, 1, 0, 800), +(3589, 5100000, 1082038, 1, 1, 0, 1000), +(3590, 5100000, 1452006, 1, 1, 0, 500), +(3591, 5100000, 1442009, 1, 1, 0, 700), +(3592, 5100000, 1051044, 1, 1, 0, 700), +(3593, 5100000, 1051045, 1, 1, 0, 700), +(3594, 5100000, 2044602, 1, 1, 0, 300), +(3595, 5100000, 1041096, 1, 1, 0, 800), +(3596, 5100000, 1061095, 1, 1, 0, 800), +(3597, 5100000, 2040804, 1, 1, 0, 300), +(3598, 5100000, 4004002, 1, 1, 0, 10000), +(3599, 5100000, 1051037, 1, 1, 0, 700), +(3600, 5100000, 1052116, 1, 1, 0, 700), +(3601, 5100000, 2040321, 1, 1, 0, 300), +(3602, 5100000, 2040933, 1, 1, 0, 300), +(3603, 5100000, 2040925, 1, 1, 0, 300), +(3604, 5100000, 2043019, 1, 1, 0, 300), +(3605, 5100000, 2043110, 1, 1, 0, 300), +(3606, 5100000, 4130010, 1, 1, 0, 6000), +(3607, 5100000, 4130011, 1, 1, 0, 6000), +(3608, 5100002, 4000081, 1, 1, 0, 600000), +(3609, 5100002, 2000002, 1, 1, 0, 20000), +(3610, 5100002, 2000003, 1, 1, 0, 20000), +(3611, 5100002, 4010001, 1, 1, 0, 9000), +(3612, 5100002, 4020000, 1, 1, 0, 9000), +(3613, 5100002, 4004000, 1, 1, 0, 10000), +(3614, 5100002, 2041010, 1, 1, 0, 300), +(3615, 5100002, 2070003, 1, 1, 0, 500), +(3616, 5100002, 4006000, 1, 1, 0, 10000), +(3617, 5100002, 1051025, 1, 1, 0, 700), +(3618, 5100002, 1302009, 1, 1, 0, 700), +(3619, 5100002, 1041076, 1, 1, 0, 800), +(3620, 5100002, 1061071, 1, 1, 0, 800), +(3621, 5100002, 1332016, 1, 1, 0, 500), +(3622, 5100002, 1322017, 1, 1, 0, 700), +(3623, 5100002, 1002209, 1, 1, 0, 1500), +(3624, 5100002, 1002214, 1, 1, 0, 1500), +(3625, 5100002, 1040087, 1, 1, 0, 800), +(3626, 5100002, 1060076, 1, 1, 0, 800), +(3627, 5100002, 1072150, 1, 1, 0, 800), +(3628, 5100002, 1002242, 1, 1, 0, 1500), +(3629, 5100002, 1492007, 1, 1, 0, 500), +(3630, 5100002, 2040326, 1, 1, 0, 300), +(3631, 5100002, 2049000, 1, 1, 0, 150), +(3632, 5100002, 4130001, 1, 1, 0, 6000), +(3633, 5100002, 4130007, 1, 1, 0, 6000), +(3634, 5100003, 4000170, 1, 1, 0, 600000), +(3635, 5100003, 4000021, 1, 1, 0, 50000), +(3636, 5100003, 2000002, 1, 1, 0, 20000), +(3637, 5100003, 2000003, 1, 1, 0, 20000), +(3638, 5100003, 2000004, 1, 1, 0, 20000), +(3639, 5100003, 4020001, 1, 1, 0, 9000), +(3640, 5100003, 4010002, 1, 1, 0, 9000), +(3641, 5100003, 1332011, 1, 1, 0, 500), +(3642, 5100003, 1072118, 1, 1, 0, 800), +(3643, 5100003, 1051038, 1, 1, 0, 700), +(3644, 5100003, 2040901, 1, 1, 0, 300), +(3645, 5100003, 2002003, 1, 1, 0, 20000), +(3646, 5100003, 1322017, 1, 1, 0, 700), +(3647, 5100003, 2044602, 1, 1, 0, 300), +(3648, 5100003, 1041088, 1, 1, 0, 800), +(3649, 5100003, 1060077, 1, 1, 0, 800), +(3650, 5100003, 2040804, 1, 1, 0, 300), +(3651, 5100003, 4004002, 1, 1, 0, 10000), +(3652, 5100003, 1312008, 1, 1, 0, 700), +(3653, 5100003, 1082198, 1, 1, 0, 1000), +(3654, 5100003, 2044805, 1, 1, 0, 300), +(3655, 5100003, 4130003, 1, 1, 0, 6000), +(3656, 5100003, 4130008, 1, 1, 0, 6000), +(3657, 5100003, 4130016, 1, 1, 0, 6000), +(3658, 5100004, 4000172, 1, 1, 0, 600000), +(3659, 5100004, 4000021, 1, 1, 0, 50000), +(3660, 5100004, 4004004, 1, 1, 0, 10000), +(3661, 5100004, 2000003, 1, 1, 0, 20000), +(3662, 5100004, 2000004, 1, 1, 0, 20000), +(3663, 5100004, 4020004, 1, 1, 0, 9000), +(3664, 5100004, 4010005, 1, 1, 0, 9000), +(3665, 5100004, 1032021, 1, 1, 0, 1000), +(3666, 5100004, 1072134, 1, 1, 0, 800), +(3667, 5100004, 1082066, 1, 1, 0, 1000), +(3668, 5100004, 1050058, 1, 1, 0, 700), +(3669, 5100004, 1051046, 1, 1, 0, 700), +(3670, 5100004, 2043801, 1, 1, 0, 300), +(3671, 5100004, 1082081, 1, 1, 0, 1000), +(3672, 5100004, 1432006, 1, 1, 0, 500), +(3673, 5100004, 1040099, 1, 1, 0, 800), +(3674, 5100004, 1060088, 1, 1, 0, 800), +(3675, 5100004, 4004002, 1, 1, 0, 10000), +(3676, 5100004, 1040087, 1, 1, 0, 800), +(3677, 5100004, 1060076, 1, 1, 0, 800), +(3678, 5100004, 2043701, 1, 1, 0, 300), +(3679, 5100004, 1052119, 1, 1, 0, 700), +(3680, 5100004, 2040420, 1, 1, 0, 300), +(3681, 5100004, 4130003, 1, 1, 0, 6000), +(3682, 5100004, 4130005, 1, 1, 0, 6000), +(3683, 5100004, 4130011, 1, 1, 0, 6000), +(3684, 5100005, 4000171, 1, 1, 0, 600000), +(3685, 5100005, 2000002, 1, 1, 0, 20000), +(3686, 5100005, 4000021, 1, 1, 0, 50000), +(3687, 5100005, 2000004, 1, 1, 0, 20000), +(3688, 5100005, 2000003, 1, 1, 0, 20000), +(3689, 5100005, 4010005, 1, 1, 0, 9000), +(3690, 5100005, 4010001, 1, 1, 0, 9000), +(3691, 5100005, 4004003, 1, 1, 0, 10000), +(3692, 5100005, 4006000, 1, 1, 0, 10000), +(3693, 5100005, 2041023, 1, 1, 0, 300), +(3694, 5100005, 1402006, 1, 1, 0, 700), +(3695, 5100005, 2044201, 1, 1, 0, 300), +(3696, 5100005, 1051045, 1, 1, 0, 700), +(3697, 5100005, 2070004, 1, 1, 0, 500), +(3698, 5100005, 1422007, 1, 1, 0, 700), +(3699, 5100005, 1040095, 1, 1, 0, 800), +(3700, 5100005, 1060084, 1, 1, 0, 800), +(3701, 5100005, 1041079, 1, 1, 0, 800), +(3702, 5100005, 1061078, 1, 1, 0, 800), +(3703, 5100005, 2044901, 1, 1, 0, 300), +(3704, 5100005, 2040316, 1, 1, 0, 300), +(3705, 5100005, 2040621, 1, 1, 0, 300), +(3706, 5100005, 4130008, 1, 1, 0, 6000), +(3707, 5100005, 4130009, 1, 1, 0, 6000), +(3708, 5110300, 2000002, 1, 1, 0, 20000), +(3709, 5110300, 2000003, 1, 1, 0, 20000), +(3710, 5110300, 4004002, 1, 1, 0, 10000), +(3711, 5110300, 4020005, 1, 1, 0, 9000), +(3712, 5110300, 1332011, 1, 1, 0, 500), +(3713, 5110300, 1072118, 1, 1, 0, 800), +(3714, 5110300, 1051038, 1, 1, 0, 700), +(3715, 5110300, 2040901, 1, 1, 0, 300), +(3716, 5110300, 2002003, 1, 1, 0, 20000), +(3717, 5110300, 2044602, 1, 1, 0, 300), +(3718, 5110300, 1041088, 1, 1, 0, 800), +(3719, 5110300, 1060077, 1, 1, 0, 800), +(3720, 5110300, 1312008, 1, 1, 0, 700), +(3721, 5110300, 4000360, 1, 1, 0, 600000), +(3722, 5110300, 1482007, 1, 1, 0, 500), +(3723, 5110300, 2044902, 1, 1, 0, 300), +(3724, 5110300, 1052116, 1, 1, 0, 700), +(3725, 5110300, 2040027, 1, 1, 0, 300), +(3726, 5110300, 2040317, 1, 1, 0, 300), +(3727, 5110300, 4130000, 1, 1, 0, 6000), +(3728, 5110300, 4130004, 1, 1, 0, 6000), +(3729, 5110300, 4130006, 1, 1, 0, 6000), +(3730, 5110301, 4004004, 1, 1, 0, 10000), +(3731, 5110301, 2000002, 1, 1, 0, 20000), +(3732, 5110301, 2000003, 1, 1, 0, 20000), +(3733, 5110301, 4020005, 1, 1, 0, 9000), +(3734, 5110301, 1002159, 1, 1, 0, 1500), +(3735, 5110301, 1040057, 1, 1, 0, 800), +(3736, 5110301, 1082004, 1, 1, 0, 1000), +(3737, 5110301, 1040096, 1, 1, 0, 800), +(3738, 5110301, 1060085, 1, 1, 0, 800), +(3739, 5110301, 1050052, 1, 1, 0, 700), +(3740, 5110301, 1040087, 1, 1, 0, 800), +(3741, 5110301, 1060076, 1, 1, 0, 800), +(3742, 5110301, 1040091, 1, 1, 0, 800), +(3743, 5110301, 1060080, 1, 1, 0, 800), +(3744, 5110301, 4000364, 1, 1, 0, 600000), +(3745, 5110301, 1492008, 1, 1, 0, 500), +(3746, 5110301, 2040323, 1, 1, 0, 300), +(3747, 5110301, 2040422, 1, 1, 0, 300), +(3748, 5110301, 2043017, 1, 1, 0, 300), +(3749, 5110301, 4130001, 1, 1, 0, 6000), +(3750, 5110301, 4130005, 1, 1, 0, 6000), +(3751, 5110301, 4130006, 1, 1, 0, 6000), +(3752, 5110302, 2000003, 1, 1, 0, 20000), +(3753, 5110302, 2000002, 1, 1, 0, 20000), +(3754, 5110302, 2000004, 1, 1, 0, 20000), +(3755, 5110302, 4010006, 1, 1, 0, 9000), +(3756, 5110302, 1082066, 1, 1, 0, 1000), +(3757, 5110302, 1072146, 1, 1, 0, 800), +(3758, 5110302, 1041077, 1, 1, 0, 800), +(3759, 5110302, 1061076, 1, 1, 0, 800), +(3760, 5110302, 1051037, 1, 1, 0, 700), +(3761, 5110302, 1002029, 1, 1, 0, 1500), +(3762, 5110302, 1002248, 1, 1, 0, 1500), +(3763, 5110302, 1002269, 1, 1, 0, 1500), +(3764, 5110302, 2040804, 1, 1, 0, 300), +(3765, 5110302, 2040901, 1, 1, 0, 300), +(3766, 5110302, 4000365, 1, 1, 0, 600000), +(3767, 5110302, 1082201, 1, 1, 0, 1000), +(3768, 5110302, 2040425, 1, 1, 0, 300), +(3769, 5110302, 2040923, 1, 1, 0, 300), +(3770, 5110302, 2044114, 1, 1, 0, 300), +(3771, 5110302, 4130008, 1, 1, 0, 6000), +(3772, 5110302, 4130009, 1, 1, 0, 6000), +(3773, 5120000, 4000061, 1, 1, 0, 600000), +(3774, 5120000, 4003005, 1, 1, 0, 200000), +(3775, 5120000, 2041017, 1, 1, 0, 300), +(3776, 5120000, 4004004, 1, 1, 0, 10000), +(3777, 5120000, 2000002, 1, 1, 0, 20000), +(3778, 5120000, 2000004, 1, 1, 0, 20000), +(3779, 5120000, 2000003, 1, 1, 0, 20000), +(3780, 5120000, 4020002, 1, 1, 0, 9000), +(3781, 5120000, 4010006, 1, 1, 0, 9000), +(3782, 5120000, 4004000, 1, 1, 0, 10000), +(3783, 5120000, 1092007, 1, 1, 0, 700), +(3784, 5120000, 2070002, 1, 1, 0, 500), +(3785, 5120000, 4006001, 1, 1, 0, 10000), +(3786, 5120000, 2040504, 1, 1, 0, 300), +(3787, 5120000, 1002185, 1, 1, 0, 1500), +(3788, 5120000, 1060070, 1, 1, 0, 800), +(3789, 5120000, 1040081, 1, 1, 0, 800), +(3790, 5120000, 1422007, 1, 1, 0, 700), +(3791, 5120000, 1051033, 1, 1, 0, 700), +(3792, 5120000, 1002086, 1, 1, 0, 1500), +(3793, 5120000, 1040088, 1, 1, 0, 800), +(3794, 5120000, 1060077, 1, 1, 0, 800), +(3795, 5120000, 1072134, 1, 1, 0, 800), +(3796, 5120000, 1072128, 1, 1, 0, 800), +(3797, 5120000, 1072144, 1, 1, 0, 800), +(3798, 5120000, 1082086, 1, 1, 0, 1000), +(3799, 5120000, 1082201, 1, 1, 0, 1000), +(3800, 5120000, 2330002, 1, 1, 0, 500), +(3801, 5120000, 2040324, 1, 1, 0, 300), +(3802, 5120000, 2040423, 1, 1, 0, 300), +(3803, 5120000, 2043017, 1, 1, 0, 300), +(3804, 5120000, 4130010, 1, 1, 0, 6000), +(3805, 5120001, 4000070, 1, 1, 0, 600000), +(3806, 5120001, 4003005, 1, 1, 0, 200000), +(3807, 5120001, 2000002, 1, 1, 0, 20000), +(3808, 5120001, 2000004, 1, 1, 0, 20000), +(3809, 5120001, 2000003, 1, 1, 0, 20000), +(3810, 5120001, 4020000, 1, 1, 0, 9000), +(3811, 5120001, 4010005, 1, 1, 0, 9000), +(3812, 5120001, 4004000, 1, 1, 0, 10000), +(3813, 5120001, 4006000, 1, 1, 0, 10000), +(3814, 5120001, 2041012, 1, 1, 0, 300), +(3815, 5120001, 2043002, 1, 1, 0, 300), +(3816, 5120001, 1072115, 1, 1, 0, 800), +(3817, 5120001, 1072126, 1, 1, 0, 800), +(3818, 5120001, 1082074, 1, 1, 0, 1000), +(3819, 5120001, 1402007, 1, 1, 0, 700), +(3820, 5120001, 1002028, 1, 1, 0, 1500), +(3821, 5120001, 1032013, 1, 1, 0, 1000), +(3822, 5120001, 1040094, 1, 1, 0, 800), +(3823, 5120001, 1060083, 1, 1, 0, 800), +(3824, 5120001, 1041089, 1, 1, 0, 800), +(3825, 5120001, 1061088, 1, 1, 0, 800), +(3826, 5120001, 1050054, 1, 1, 0, 700), +(3827, 5120001, 1050058, 1, 1, 0, 700), +(3828, 5120001, 1072306, 1, 1, 0, 800), +(3829, 5120001, 2331000, 1, 1, 0, 500), +(3830, 5120001, 2040933, 1, 1, 0, 300), +(3831, 5120001, 2044212, 1, 1, 0, 300), +(3832, 5120001, 4130000, 1, 1, 0, 6000), +(3833, 5120001, 4130008, 1, 1, 0, 6000), +(3834, 5120001, 4130009, 1, 1, 0, 6000), +(3835, 5120002, 4000071, 1, 1, 0, 600000), +(3836, 5120002, 4003005, 1, 1, 0, 200000), +(3837, 5120002, 2000002, 1, 1, 0, 20000), +(3838, 5120002, 2000004, 1, 1, 0, 20000), +(3839, 5120002, 2000003, 1, 1, 0, 20000), +(3840, 5120002, 4020003, 1, 1, 0, 9000), +(3841, 5120002, 4010002, 1, 1, 0, 9000), +(3842, 5120002, 4004001, 1, 1, 0, 10000), +(3843, 5120002, 4006001, 1, 1, 0, 10000), +(3844, 5120002, 2041017, 1, 1, 0, 300), +(3845, 5120002, 2044001, 1, 1, 0, 300), +(3846, 5120002, 1312007, 1, 1, 0, 700), +(3847, 5120002, 1040084, 1, 1, 0, 800), +(3848, 5120002, 1060073, 1, 1, 0, 800), +(3849, 5120002, 1002045, 1, 1, 0, 1500), +(3850, 5120002, 1002024, 1, 1, 0, 1500), +(3851, 5120002, 1302010, 1, 1, 0, 700), +(3852, 5120002, 1082009, 1, 1, 0, 1000), +(3853, 5120002, 1082081, 1, 1, 0, 1000), +(3854, 5120002, 1072123, 1, 1, 0, 800), +(3855, 5120002, 1072131, 1, 1, 0, 800), +(3856, 5120002, 1051041, 1, 1, 0, 700), +(3857, 5120002, 1002267, 1, 1, 0, 1500), +(3858, 5120002, 1002631, 1, 1, 0, 1500), +(3859, 5120002, 2330002, 1, 1, 0, 500), +(3860, 5120002, 2044212, 1, 1, 0, 300), +(3861, 5120002, 2049100, 1, 1, 0, 150), +(3862, 5120002, 4130002, 1, 1, 0, 6000), +(3863, 5120002, 4130014, 1, 1, 0, 6000), +(3864, 5120003, 4000072, 1, 1, 0, 600000), +(3865, 5120003, 4003005, 1, 1, 0, 200000), +(3866, 5120003, 2000002, 1, 1, 0, 20000), +(3867, 5120003, 2000004, 1, 1, 0, 20000), +(3868, 5120003, 2000003, 1, 1, 0, 20000), +(3869, 5120003, 4020005, 1, 1, 0, 9000), +(3870, 5120003, 4010001, 1, 1, 0, 9000), +(3871, 5120003, 4004003, 1, 1, 0, 10000), +(3872, 5120003, 4006000, 1, 1, 0, 10000), +(3873, 5120003, 2041023, 1, 1, 0, 300), +(3874, 5120003, 1032019, 1, 1, 0, 1000), +(3875, 5120003, 2070004, 1, 1, 0, 500); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(3876, 5120003, 2070010, 1, 1, 0, 500), +(3877, 5120003, 1002153, 1, 1, 0, 1500), +(3878, 5120003, 1002181, 1, 1, 0, 1500), +(3879, 5120003, 1032011, 1, 1, 0, 1000), +(3880, 5120003, 1041085, 1, 1, 0, 800), +(3881, 5120003, 1061084, 1, 1, 0, 800), +(3882, 5120003, 1051034, 1, 1, 0, 700), +(3883, 5120003, 1061077, 1, 1, 0, 800), +(3884, 5120003, 1041078, 1, 1, 0, 800), +(3885, 5120003, 1050052, 1, 1, 0, 700), +(3886, 5120003, 1072135, 1, 1, 0, 800), +(3887, 5120003, 1082082, 1, 1, 0, 1000), +(3888, 5120003, 1332015, 1, 1, 0, 500), +(3889, 5120003, 1322018, 1, 1, 0, 700), +(3890, 5120003, 1002634, 1, 1, 0, 1500), +(3891, 5120003, 2332000, 1, 1, 0, 500), +(3892, 5120003, 2040323, 1, 1, 0, 300), +(3893, 5120003, 2040924, 1, 1, 0, 300), +(3894, 5120003, 4130005, 1, 1, 0, 6000), +(3895, 5120003, 4130012, 1, 1, 0, 6000), +(3896, 5120100, 4000126, 1, 1, 0, 600000), +(3897, 5120100, 2060000, 1, 1, 0, 300000), +(3898, 5120100, 2061000, 1, 1, 0, 300000), +(3899, 5120100, 2000002, 1, 1, 0, 200000), +(3900, 5120100, 2000004, 1, 1, 0, 999999), +(3901, 5120100, 2002010, 1, 1, 0, 200000), +(3902, 5120100, 1032014, 1, 1, 0, 10000), +(3903, 5120100, 4004000, 1, 1, 0, 100000), +(3904, 5120100, 4020001, 1, 1, 0, 90000), +(3905, 5120100, 4010006, 1, 1, 0, 90000), +(3906, 5120100, 4020007, 1, 1, 0, 90000), +(3907, 5120100, 4011007, 1, 1, 0, 90000), +(3908, 5120100, 2044602, 1, 1, 0, 3000), +(3909, 5120100, 1041082, 1, 1, 0, 8000), +(3910, 5120100, 1061081, 1, 1, 0, 8000), +(3911, 5120100, 1002154, 1, 1, 0, 15000), +(3912, 5120100, 1082010, 1, 1, 0, 10000), +(3913, 5120100, 1082067, 1, 1, 0, 10000), +(3914, 5120100, 1072142, 1, 1, 0, 8000), +(3915, 5120100, 1040096, 1, 1, 0, 8000), +(3916, 5120100, 1060085, 1, 1, 0, 8000), +(3917, 5120100, 1002211, 1, 1, 0, 15000), +(3918, 5120100, 1402011, 1, 1, 0, 7000), +(3919, 5120100, 1092010, 1, 1, 0, 7000), +(3920, 5120100, 1412007, 1, 1, 0, 7000), +(3921, 5120100, 2043017, 1, 1, 0, 3000), +(3922, 5120100, 4130004, 1, 1, 0, 60000), +(3923, 5120100, 4130013, 1, 1, 0, 60000), +(3924, 5120500, 4000283, 1, 1, 0, 600000), +(3925, 5120500, 4000284, 1, 1, 0, 600000), +(3926, 5120500, 4000021, 1, 1, 0, 50000), +(3927, 5120500, 4003005, 1, 1, 0, 200000), +(3928, 5120500, 4004004, 1, 1, 0, 10000), +(3929, 5120500, 2000003, 1, 1, 0, 20000), +(3930, 5120500, 2000002, 1, 1, 0, 20000), +(3931, 5120500, 4020004, 1, 1, 0, 9000), +(3932, 5120500, 4010005, 1, 1, 0, 9000), +(3933, 5120500, 1032021, 1, 1, 0, 1000), +(3934, 5120500, 1072134, 1, 1, 0, 800), +(3935, 5120500, 1082066, 1, 1, 0, 1000), +(3936, 5120500, 1050058, 1, 1, 0, 700), +(3937, 5120500, 1082081, 1, 1, 0, 1000), +(3938, 5120500, 1040099, 1, 1, 0, 800), +(3939, 5120500, 1060088, 1, 1, 0, 800), +(3940, 5120500, 4004002, 1, 1, 0, 10000), +(3941, 5120500, 2043801, 1, 1, 0, 300), +(3942, 5120500, 1432006, 1, 1, 0, 500), +(3943, 5120500, 2043701, 1, 1, 0, 300), +(3944, 5120500, 1082201, 1, 1, 0, 1000), +(3945, 5120500, 2330002, 1, 1, 0, 500), +(3946, 5120500, 2040031, 1, 1, 0, 300), +(3947, 5120500, 2040515, 1, 1, 0, 300), +(3948, 5120500, 2049100, 1, 1, 0, 150), +(3949, 5120500, 4130000, 1, 1, 0, 6000), +(3950, 5120500, 4130009, 1, 1, 0, 6000), +(3951, 5120501, 4000293, 1, 1, 0, 600000), +(3952, 5120501, 2000002, 1, 1, 0, 20000), +(3953, 5120501, 2000003, 1, 1, 0, 20000), +(3954, 5120501, 4020005, 1, 1, 0, 9000), +(3955, 5120501, 4010001, 1, 1, 0, 9000), +(3956, 5120501, 4004003, 1, 1, 0, 10000), +(3957, 5120501, 4006000, 1, 1, 0, 10000), +(3958, 5120501, 2041023, 1, 1, 0, 300), +(3959, 5120501, 1050052, 1, 1, 0, 700), +(3960, 5120501, 1051037, 1, 1, 0, 700), +(3961, 5120501, 1032019, 1, 1, 0, 1000), +(3962, 5120501, 1040102, 1, 1, 0, 800), +(3963, 5120501, 1060090, 1, 1, 0, 800), +(3964, 5120501, 1051041, 1, 1, 0, 700), +(3965, 5120501, 1482008, 1, 1, 0, 500), +(3966, 5120501, 2040423, 1, 1, 0, 300), +(3967, 5120501, 2044310, 1, 1, 0, 300), +(3968, 5120501, 4130016, 1, 1, 0, 6000), +(3969, 5120501, 4130017, 1, 1, 0, 6000), +(3970, 5120502, 4000294, 1, 1, 0, 600000), +(3971, 5120502, 4004004, 1, 1, 0, 10000), +(3972, 5120502, 2000002, 1, 1, 0, 20000), +(3973, 5120502, 2000003, 1, 1, 0, 20000), +(3974, 5120502, 4020005, 1, 1, 0, 9000), +(3975, 5120502, 1002159, 1, 1, 0, 1500), +(3976, 5120502, 1040057, 1, 1, 0, 800), +(3977, 5120502, 1082004, 1, 1, 0, 1000), +(3978, 5120502, 1040096, 1, 1, 0, 800), +(3979, 5120502, 1060085, 1, 1, 0, 800), +(3980, 5120502, 1050052, 1, 1, 0, 700), +(3981, 5120502, 1040087, 1, 1, 0, 800), +(3982, 5120502, 1060076, 1, 1, 0, 800), +(3983, 5120502, 4006000, 1, 1, 0, 10000), +(3984, 5120502, 1040091, 1, 1, 0, 800), +(3985, 5120502, 1060080, 1, 1, 0, 800), +(3986, 5120502, 1052116, 1, 1, 0, 700), +(3987, 5120502, 2040425, 1, 1, 0, 300), +(3988, 5120502, 2040927, 1, 1, 0, 300), +(3989, 5120502, 4130000, 1, 1, 0, 6000), +(3990, 5120502, 4130003, 1, 1, 0, 6000), +(3991, 5120502, 4130005, 1, 1, 0, 6000), +(3992, 5120503, 4000286, 1, 1, 0, 600000), +(3993, 5120503, 2000002, 1, 1, 0, 20000), +(3994, 5120503, 2000003, 1, 1, 0, 20000), +(3995, 5120503, 4004002, 1, 1, 0, 10000), +(3996, 5120503, 4020005, 1, 1, 0, 9000), +(3997, 5120503, 1332011, 1, 1, 0, 500), +(3998, 5120503, 1072118, 1, 1, 0, 800), +(3999, 5120503, 1051038, 1, 1, 0, 700), +(4000, 5120503, 2040901, 1, 1, 0, 300), +(4001, 5120503, 2002003, 1, 1, 0, 20000), +(4002, 5120503, 2044602, 1, 1, 0, 300), +(4003, 5120503, 1041088, 1, 1, 0, 800), +(4004, 5120503, 1060077, 1, 1, 0, 800), +(4005, 5120503, 1312008, 1, 1, 0, 700), +(4006, 5120503, 1072303, 1, 1, 0, 800), +(4007, 5120503, 2040026, 1, 1, 0, 300), +(4008, 5120503, 2040422, 1, 1, 0, 300), +(4009, 5120503, 2040925, 1, 1, 0, 300), +(4010, 5120503, 2040927, 1, 1, 0, 300), +(4011, 5120503, 4130002, 1, 1, 0, 6000), +(4012, 5120503, 4130010, 1, 1, 0, 6000), +(4013, 5120503, 4130013, 1, 1, 0, 6000), +(4014, 5120504, 4000287, 1, 1, 0, 600000), +(4015, 5120504, 2000002, 1, 1, 0, 20000), +(4016, 5120504, 2000003, 1, 1, 0, 20000), +(4017, 5120504, 4020002, 1, 1, 0, 9000), +(4018, 5120504, 4010006, 1, 1, 0, 9000), +(4019, 5120504, 4004000, 1, 1, 0, 10000), +(4020, 5120504, 1002215, 1, 1, 0, 1500), +(4021, 5120504, 1040097, 1, 1, 0, 800), +(4022, 5120504, 1060086, 1, 1, 0, 800), +(4023, 5120504, 1092007, 1, 1, 0, 700), +(4024, 5120504, 1072072, 1, 1, 0, 800), +(4025, 5120504, 1040105, 1, 1, 0, 800), +(4026, 5120504, 1060093, 1, 1, 0, 800), +(4027, 5120504, 4006001, 1, 1, 0, 10000), +(4028, 5120504, 2040504, 1, 1, 0, 300), +(4029, 5120504, 1002634, 1, 1, 0, 1500), +(4030, 5120504, 2330002, 1, 1, 0, 500), +(4031, 5120504, 2040619, 1, 1, 0, 300), +(4032, 5120504, 2040825, 1, 1, 0, 300), +(4033, 5120504, 2040931, 1, 1, 0, 300), +(4034, 5120504, 4130007, 1, 1, 0, 6000), +(4035, 5120504, 4130012, 1, 1, 0, 6000), +(4036, 5120505, 4000021, 1, 1, 0, 50000), +(4037, 5120505, 4003005, 1, 1, 0, 200000), +(4038, 5120505, 2000003, 1, 1, 0, 20000), +(4039, 5120505, 2000002, 1, 1, 0, 20000), +(4040, 5120505, 2000004, 1, 1, 0, 20000), +(4041, 5120505, 4010006, 1, 1, 0, 9000), +(4042, 5120505, 1082066, 1, 1, 0, 1000), +(4043, 5120505, 1072146, 1, 1, 0, 800), +(4044, 5120505, 1041077, 1, 1, 0, 800), +(4045, 5120505, 1061076, 1, 1, 0, 800), +(4046, 5120505, 1051037, 1, 1, 0, 700), +(4047, 5120505, 1002029, 1, 1, 0, 1500), +(4048, 5120505, 1002248, 1, 1, 0, 1500), +(4049, 5120505, 1002269, 1, 1, 0, 1500), +(4050, 5120505, 4000288, 1, 1, 0, 600000), +(4051, 5120505, 2040804, 1, 1, 0, 300), +(4052, 5120505, 2040901, 1, 1, 0, 300), +(4053, 5120505, 1052119, 1, 1, 0, 700), +(4054, 5120505, 2040421, 1, 1, 0, 300), +(4055, 5120505, 2040534, 1, 1, 0, 300), +(4056, 5120505, 2040928, 1, 1, 0, 300), +(4057, 5120505, 2049000, 1, 1, 0, 150), +(4058, 5120505, 4130004, 1, 1, 0, 6000), +(4059, 5120505, 4130008, 1, 1, 0, 6000), +(4060, 5120505, 4130009, 1, 1, 0, 6000), +(4061, 5120506, 4000298, 1, 1, 0, 600000), +(4062, 5120506, 2000002, 1, 1, 0, 20000), +(4063, 5120506, 2000003, 1, 1, 0, 20000), +(4064, 5120506, 4020008, 1, 1, 0, 9000), +(4065, 5120506, 4010006, 1, 1, 0, 9000), +(4066, 5120506, 1002168, 1, 1, 0, 1500), +(4067, 5120506, 1002092, 1, 1, 0, 1500), +(4068, 5120506, 1040086, 1, 1, 0, 800), +(4069, 5120506, 1072127, 1, 1, 0, 800), +(4070, 5120506, 1402006, 1, 1, 0, 700), +(4071, 5120506, 2044201, 1, 1, 0, 300), +(4072, 5120506, 1040095, 1, 1, 0, 800), +(4073, 5120506, 1060084, 1, 1, 0, 800), +(4074, 5120506, 1452004, 1, 1, 0, 500), +(4075, 5120506, 1412007, 1, 1, 0, 700), +(4076, 5120506, 1050059, 1, 1, 0, 700), +(4077, 5120506, 1442010, 1, 1, 0, 700), +(4078, 5120506, 4000299, 1, 1, 0, 600000), +(4079, 5120506, 1492007, 1, 1, 0, 500), +(4080, 5120506, 2330002, 1, 1, 0, 500), +(4081, 5120506, 2040317, 1, 1, 0, 300), +(4082, 5120506, 2040617, 1, 1, 0, 300), +(4083, 5120506, 2040825, 1, 1, 0, 300), +(4084, 5120506, 2040927, 1, 1, 0, 300), +(4085, 5120506, 4130006, 1, 1, 0, 6000), +(4086, 5120506, 4130014, 1, 1, 0, 6000), +(4087, 5130100, 4000014, 1, 1, 0, 600000), +(4088, 5130100, 2000002, 1, 1, 0, 20000), +(4089, 5130100, 2002004, 1, 1, 0, 20000), +(4090, 5130100, 2012000, 1, 1, 0, 20000), +(4091, 5130100, 2012003, 1, 1, 0, 20000), +(4092, 5130100, 4010006, 1, 1, 0, 9000), +(4093, 5130100, 4020007, 1, 1, 0, 9000), +(4094, 5130100, 4000030, 1, 1, 0, 60000), +(4095, 5130100, 2000004, 1, 1, 0, 20000), +(4096, 5130100, 2070003, 1, 1, 0, 500), +(4097, 5130100, 1452007, 1, 1, 0, 500), +(4098, 5130100, 1432005, 1, 1, 0, 500), +(4099, 5130100, 1072108, 1, 1, 0, 800), +(4100, 5130100, 1072116, 1, 1, 0, 800), +(4101, 5130100, 1412005, 1, 1, 0, 700), +(4102, 5130100, 1051030, 1, 1, 0, 700), +(4103, 5130100, 1051037, 1, 1, 0, 700), +(4104, 5130100, 1040089, 1, 1, 0, 800), +(4105, 5130100, 1060078, 1, 1, 0, 800), +(4106, 5130100, 1041077, 1, 1, 0, 800), +(4107, 5130100, 1061076, 1, 1, 0, 800), +(4108, 5130100, 1082083, 1, 1, 0, 1000), +(4109, 5130100, 1382006, 1, 1, 0, 700), +(4110, 5130100, 1092008, 1, 1, 0, 700), +(4111, 5130100, 1462004, 1, 1, 0, 500), +(4112, 5130100, 2002001, 1, 1, 0, 20000), +(4113, 5130100, 4010004, 1, 1, 0, 9000), +(4114, 5130100, 1002631, 1, 1, 0, 1500), +(4115, 5130100, 2040422, 1, 1, 0, 300), +(4116, 5130100, 4130004, 1, 1, 0, 6000), +(4117, 5130100, 4130009, 1, 1, 0, 6000), +(4118, 5130100, 4130015, 1, 1, 0, 6000), +(4119, 5130101, 4000022, 1, 1, 0, 600000), +(4120, 5130101, 4020008, 1, 1, 0, 9000), +(4121, 5130101, 2000004, 1, 1, 0, 20000), +(4122, 5130101, 1092002, 1, 1, 0, 700), +(4123, 5130101, 2000003, 1, 1, 0, 20000), +(4124, 5130101, 2044501, 1, 1, 0, 300), +(4125, 5130101, 2044601, 1, 1, 0, 300), +(4126, 5130101, 1372012, 1, 1, 0, 700), +(4127, 5130101, 1082025, 1, 1, 0, 1000), +(4128, 5130101, 1082076, 1, 1, 0, 1000), +(4129, 5130101, 1072121, 1, 1, 0, 800), +(4130, 5130101, 1072143, 1, 1, 0, 800), +(4131, 5130101, 1041080, 1, 1, 0, 800), +(4132, 5130101, 1061079, 1, 1, 0, 800), +(4133, 5130101, 1002086, 1, 1, 0, 1500), +(4134, 5130101, 1050048, 1, 1, 0, 700), +(4135, 5130101, 1002247, 1, 1, 0, 1500), +(4136, 5130101, 1041091, 1, 1, 0, 800), +(4137, 5130101, 1061090, 1, 1, 0, 800), +(4138, 5130101, 1312009, 1, 1, 0, 700), +(4139, 5130101, 1452005, 1, 1, 0, 500), +(4140, 5130101, 1032002, 1, 1, 0, 1000), +(4141, 5130101, 2070003, 1, 1, 0, 500), +(4142, 5130101, 2000006, 1, 1, 0, 20000), +(4143, 5130101, 1040084, 1, 1, 0, 800), +(4144, 5130101, 1072303, 1, 1, 0, 800), +(4145, 5130101, 4130010, 1, 1, 0, 6000), +(4146, 5130101, 4130013, 1, 1, 0, 6000), +(4147, 5130102, 1050039, 1, 1, 0, 700), +(4148, 5130102, 4000025, 1, 1, 0, 600000), +(4149, 5130102, 4004004, 1, 1, 0, 10000), +(4150, 5130102, 2000003, 1, 1, 0, 20000), +(4151, 5130102, 2000004, 1, 1, 0, 20000), +(4152, 5130102, 4020008, 1, 1, 0, 9000), +(4153, 5130102, 2070004, 1, 1, 0, 500), +(4154, 5130102, 2044201, 1, 1, 0, 300), +(4155, 5130102, 1040085, 1, 1, 0, 800), +(4156, 5130102, 1060074, 1, 1, 0, 800), +(4157, 5130102, 1061069, 1, 1, 0, 800), +(4158, 5130102, 1041074, 1, 1, 0, 800), +(4159, 5130102, 1072120, 1, 1, 0, 800), +(4160, 5130102, 1002209, 1, 1, 0, 1500), +(4161, 5130102, 1002214, 1, 1, 0, 1500), +(4162, 5130102, 1082009, 1, 1, 0, 1000), +(4163, 5130102, 1002022, 1, 1, 0, 1500), +(4164, 5130102, 1032021, 1, 1, 0, 1000), +(4165, 5130102, 1082088, 1, 1, 0, 1000), +(4166, 5130102, 1072139, 1, 1, 0, 800), +(4167, 5130102, 1102018, 1, 1, 0, 1000), +(4168, 5130102, 1002249, 1, 1, 0, 1500), +(4169, 5130102, 1040091, 1, 1, 0, 800), +(4170, 5130102, 1060080, 1, 1, 0, 800), +(4171, 5130102, 1050059, 1, 1, 0, 700), +(4172, 5130102, 1382007, 1, 1, 0, 700), +(4173, 5130102, 1492008, 1, 1, 0, 500), +(4174, 5130102, 2044802, 1, 1, 0, 300), +(4175, 5130102, 2040425, 1, 1, 0, 300), +(4176, 5130102, 2040618, 1, 1, 0, 300), +(4177, 5130102, 4130000, 1, 1, 0, 6000), +(4178, 5130102, 4130016, 1, 1, 0, 6000), +(4179, 5130102, 4130017, 1, 1, 0, 6000), +(4180, 5130103, 4000033, 1, 1, 0, 600000), +(4181, 5130103, 2000002, 1, 1, 0, 20000), +(4182, 5130103, 2000004, 1, 1, 0, 20000), +(4183, 5130103, 2000003, 1, 1, 0, 20000), +(4184, 5130103, 4010000, 1, 1, 0, 9000), +(4185, 5130103, 4020004, 1, 1, 0, 9000), +(4186, 5130103, 4020007, 1, 1, 0, 9000), +(4187, 5130103, 1332031, 1, 1, 0, 500), +(4188, 5130103, 1382019, 1, 1, 0, 700), +(4189, 5130103, 1050046, 1, 1, 0, 700), +(4190, 5130103, 1002218, 1, 1, 0, 1500), +(4191, 5130103, 1002210, 1, 1, 0, 1500), +(4192, 5130103, 1051038, 1, 1, 0, 700), +(4193, 5130103, 1041079, 1, 1, 0, 800), +(4194, 5130103, 1061078, 1, 1, 0, 800), +(4195, 5130103, 1040098, 1, 1, 0, 800), +(4196, 5130103, 1060087, 1, 1, 0, 800), +(4197, 5130103, 1092009, 1, 1, 0, 700), +(4198, 5130103, 1082092, 1, 1, 0, 1000), +(4199, 5130103, 1052119, 1, 1, 0, 700), +(4200, 5130103, 2044801, 1, 1, 0, 300), +(4201, 5130103, 2040027, 1, 1, 0, 300), +(4202, 5130103, 2043212, 1, 1, 0, 300), +(4203, 5130103, 2044212, 1, 1, 0, 300), +(4204, 5130103, 4130007, 1, 1, 0, 6000), +(4205, 5130103, 4130011, 1, 1, 0, 6000), +(4206, 5130104, 4000051, 1, 1, 0, 600000), +(4207, 5130104, 4003004, 1, 1, 0, 200000), +(4208, 5130104, 2041019, 1, 1, 0, 300), +(4209, 5130104, 4000021, 1, 1, 0, 50000), +(4210, 5130104, 2000003, 1, 1, 0, 20000), +(4211, 5130104, 2000004, 1, 1, 0, 20000), +(4212, 5130104, 4020001, 1, 1, 0, 9000), +(4213, 5130104, 4010001, 1, 1, 0, 9000), +(4214, 5130104, 2070003, 1, 1, 0, 500), +(4215, 5130104, 2060000, 1, 1, 0, 30000), +(4216, 5130104, 2061000, 1, 1, 0, 30000), +(4217, 5130104, 4004003, 1, 1, 0, 10000), +(4218, 5130104, 1102000, 1, 1, 0, 1000), +(4219, 5130104, 1082064, 1, 1, 0, 1000), +(4220, 5130104, 1082075, 1, 1, 0, 1000), +(4221, 5130104, 1072119, 1, 1, 0, 800), +(4222, 5130104, 1072127, 1, 1, 0, 800), +(4223, 5130104, 1002213, 1, 1, 0, 1500), +(4224, 5130104, 1002215, 1, 1, 0, 1500), +(4225, 5130104, 1040097, 1, 1, 0, 800), +(4226, 5130104, 1060086, 1, 1, 0, 800), +(4227, 5130104, 1050052, 1, 1, 0, 700), +(4228, 5130104, 1332017, 1, 1, 0, 500), +(4229, 5130104, 1422009, 1, 1, 0, 700), +(4230, 5130104, 1462008, 1, 1, 0, 500), +(4231, 5130104, 1482007, 1, 1, 0, 500), +(4232, 5130104, 2040326, 1, 1, 0, 300), +(4233, 5130104, 2044110, 1, 1, 0, 300), +(4234, 5130104, 2044809, 1, 1, 0, 300), +(4235, 5130104, 4130002, 1, 1, 0, 6000), +(4236, 5130104, 4130015, 1, 1, 0, 6000), +(4237, 5130104, 4130017, 1, 1, 0, 6000), +(4238, 5130105, 4000055, 1, 1, 0, 600000), +(4239, 5130105, 4003004, 1, 1, 0, 200000), +(4240, 5130105, 4004004, 1, 1, 0, 10000), +(4241, 5130105, 4000021, 1, 1, 0, 50000), +(4242, 5130105, 2000003, 1, 1, 0, 20000), +(4243, 5130105, 2000004, 1, 1, 0, 20000), +(4244, 5130105, 4020004, 1, 1, 0, 9000), +(4245, 5130105, 4010005, 1, 1, 0, 9000), +(4246, 5130105, 4004002, 1, 1, 0, 10000), +(4247, 5130105, 2043701, 1, 1, 0, 300), +(4248, 5130105, 1041086, 1, 1, 0, 800), +(4249, 5130105, 1061085, 1, 1, 0, 800), +(4250, 5130105, 1041082, 1, 1, 0, 800), +(4251, 5130105, 1061081, 1, 1, 0, 800), +(4252, 5130105, 1002208, 1, 1, 0, 1500), +(4253, 5130105, 1002216, 1, 1, 0, 1500), +(4254, 5130105, 1032021, 1, 1, 0, 1000), +(4255, 5130105, 1382006, 1, 1, 0, 700), +(4256, 5130105, 1102015, 1, 1, 0, 1000), +(4257, 5130105, 1072151, 1, 1, 0, 800), +(4258, 5130105, 1072138, 1, 1, 0, 800), +(4259, 5130105, 1082059, 1, 1, 0, 1000), +(4260, 5130105, 1082090, 1, 1, 0, 1000), +(4261, 5130105, 1092010, 1, 1, 0, 700), +(4262, 5130105, 1040102, 1, 1, 0, 800), +(4263, 5130105, 1060090, 1, 1, 0, 800), +(4264, 5130105, 2040027, 1, 1, 0, 300), +(4265, 5130105, 2040317, 1, 1, 0, 300), +(4266, 5130105, 2044112, 1, 1, 0, 300), +(4267, 5130105, 4130007, 1, 1, 0, 6000), +(4268, 5130105, 4130017, 1, 1, 0, 6000), +(4269, 5130107, 4000069, 1, 1, 0, 600000), +(4270, 5130107, 2000003, 1, 1, 0, 20000), +(4271, 5130107, 2000004, 1, 1, 0, 20000), +(4272, 5130107, 2000002, 1, 1, 0, 20000), +(4273, 5130107, 4010000, 1, 1, 0, 9000), +(4274, 5130107, 4020006, 1, 1, 0, 9000), +(4275, 5130107, 4004000, 1, 1, 0, 10000), +(4276, 5130107, 1082062, 1, 1, 0, 1000), +(4277, 5130107, 1082071, 1, 1, 0, 1000), +(4278, 5130107, 1072109, 1, 1, 0, 800), +(4279, 5130107, 1072117, 1, 1, 0, 800), +(4280, 5130107, 1322016, 1, 1, 0, 700), +(4281, 5130107, 1312008, 1, 1, 0, 700), +(4282, 5130107, 1051039, 1, 1, 0, 700), +(4283, 5130107, 1040094, 1, 1, 0, 800), +(4284, 5130107, 1060083, 1, 1, 0, 800), +(4285, 5130107, 1032019, 1, 1, 0, 1000), +(4286, 5130107, 1002244, 1, 1, 0, 1500), +(4287, 5130107, 1102016, 1, 1, 0, 1000), +(4288, 5130107, 1040092, 1, 1, 0, 800), +(4289, 5130107, 1060081, 1, 1, 0, 800), +(4290, 5130107, 1002269, 1, 1, 0, 1500), +(4291, 5130107, 1002247, 1, 1, 0, 1500), +(4292, 5130107, 1040105, 1, 1, 0, 800), +(4293, 5130107, 1060093, 1, 1, 0, 800), +(4294, 5130107, 1482008, 1, 1, 0, 500), +(4295, 5130107, 2040026, 1, 1, 0, 300), +(4296, 5130107, 2040515, 1, 1, 0, 300), +(4297, 5130107, 4130001, 1, 1, 0, 6000), +(4298, 5130107, 4130006, 1, 1, 0, 6000), +(4299, 5130107, 4130011, 1, 1, 0, 6000), +(4300, 5130108, 4000069, 1, 1, 0, 600000), +(4301, 5130108, 4000082, 1, 1, 0, 40000), +(4302, 5130108, 2000003, 1, 1, 0, 20000), +(4303, 5130108, 2000004, 1, 1, 0, 20000), +(4304, 5130108, 2000002, 1, 1, 0, 20000), +(4305, 5130108, 4010001, 1, 1, 0, 9000), +(4306, 5130108, 4020004, 1, 1, 0, 9000), +(4307, 5130108, 4004002, 1, 1, 0, 10000), +(4308, 5130108, 2040402, 1, 1, 0, 300), +(4309, 5130108, 1002169, 1, 1, 0, 1500), +(4310, 5130108, 1002155, 1, 1, 0, 1500), +(4311, 5130108, 1041084, 1, 1, 0, 800), +(4312, 5130108, 1061083, 1, 1, 0, 800), +(4313, 5130108, 1332011, 1, 1, 0, 500), +(4314, 5130108, 1032018, 1, 1, 0, 1000), +(4315, 5130108, 1072130, 1, 1, 0, 800), +(4316, 5130108, 1072133, 1, 1, 0, 800), +(4317, 5130108, 1072141, 1, 1, 0, 800), +(4318, 5130108, 1051046, 1, 1, 0, 700), +(4319, 5130108, 1102017, 1, 1, 0, 1000), +(4320, 5130108, 1051043, 1, 1, 0, 700), +(4321, 5130108, 1092011, 1, 1, 0, 700), +(4322, 5130108, 1082094, 1, 1, 0, 1000), +(4323, 5130108, 1002084, 1, 1, 0, 1500), +(4324, 5130108, 1002243, 1, 1, 0, 1500), +(4325, 5130108, 1041100, 1, 1, 0, 800), +(4326, 5130108, 1061099, 1, 1, 0, 800), +(4327, 5130108, 2040029, 1, 1, 0, 300), +(4328, 5130108, 2040419, 1, 1, 0, 300), +(4329, 5130108, 4130002, 1, 1, 0, 6000), +(4330, 5130108, 4130014, 1, 1, 0, 6000), +(4331, 5130108, 4130015, 1, 1, 0, 6000), +(4332, 5140000, 4000052, 1, 1, 0, 600000), +(4333, 5140000, 4003005, 1, 1, 0, 200000), +(4334, 5140000, 4000021, 1, 1, 0, 50000), +(4335, 5140000, 2000003, 1, 1, 0, 20000), +(4336, 5140000, 2000004, 1, 1, 0, 20000), +(4337, 5140000, 2070004, 1, 1, 0, 500), +(4338, 5140000, 4020007, 1, 1, 0, 9000), +(4339, 5140000, 4020000, 1, 1, 0, 9000), +(4340, 5140000, 2060000, 1, 1, 0, 30000), +(4341, 5140000, 2040901, 1, 1, 0, 300), +(4342, 5140000, 4004001, 1, 1, 0, 10000), +(4343, 5140000, 4006001, 1, 1, 0, 10000), +(4344, 5140000, 2061000, 1, 1, 0, 30000), +(4345, 5140000, 1422008, 1, 1, 0, 700), +(4346, 5140000, 1472014, 1, 1, 0, 500), +(4347, 5140000, 1082072, 1, 1, 0, 1000), +(4348, 5140000, 1072114, 1, 1, 0, 800), +(4349, 5140000, 1072127, 1, 1, 0, 800), +(4350, 5140000, 1082066, 1, 1, 0, 1000), +(4351, 5140000, 1072134, 1, 1, 0, 800), +(4352, 5140000, 1050051, 1, 1, 0, 700), +(4353, 5140000, 1041077, 1, 1, 0, 800), +(4354, 5140000, 1061076, 1, 1, 0, 800), +(4355, 5140000, 1050053, 1, 1, 0, 700), +(4356, 5140000, 1032014, 1, 1, 0, 1000), +(4357, 5140000, 1412007, 1, 1, 0, 700), +(4358, 5140000, 1050059, 1, 1, 0, 700), +(4359, 5140000, 1002029, 1, 1, 0, 1500), +(4360, 5140000, 1072151, 1, 1, 0, 800), +(4361, 5140000, 1102021, 1, 1, 0, 1000), +(4362, 5140000, 1041097, 1, 1, 0, 800), +(4363, 5140000, 1061096, 1, 1, 0, 800), +(4364, 5140000, 1002634, 1, 1, 0, 1500), +(4365, 5140000, 2040024, 1, 1, 0, 300), +(4366, 5140000, 2044214, 1, 1, 0, 300), +(4367, 5140000, 4130001, 1, 1, 0, 6000), +(4368, 5140000, 4130003, 1, 1, 0, 6000), +(4369, 5140000, 4130013, 1, 1, 0, 6000), +(4370, 5150000, 4000177, 1, 1, 0, 600000), +(4371, 5150000, 2060000, 1, 1, 0, 30000), +(4372, 5150000, 2061000, 1, 1, 0, 30000), +(4373, 5150000, 1082066, 1, 1, 0, 1000), +(4374, 5150000, 1072146, 1, 1, 0, 800), +(4375, 5150000, 1082087, 1, 1, 0, 1000), +(4376, 5150000, 4010006, 1, 1, 0, 9000), +(4377, 5150000, 2000004, 1, 1, 0, 20000), +(4378, 5150000, 1041077, 1, 1, 0, 800), +(4379, 5150000, 1061076, 1, 1, 0, 800), +(4380, 5150000, 2000003, 1, 1, 0, 20000), +(4381, 5150000, 2000002, 1, 1, 0, 20000), +(4382, 5150000, 1051037, 1, 1, 0, 700), +(4383, 5150000, 1041094, 1, 1, 0, 800), +(4384, 5150000, 1061093, 1, 1, 0, 800), +(4385, 5150000, 1040092, 1, 1, 0, 800), +(4386, 5150000, 1060081, 1, 1, 0, 800), +(4387, 5150000, 2040804, 1, 1, 0, 300), +(4388, 5150000, 2040901, 1, 1, 0, 300), +(4389, 5150000, 1002029, 1, 1, 0, 1500), +(4390, 5150000, 1002248, 1, 1, 0, 1500), +(4391, 5150000, 1002269, 1, 1, 0, 1500), +(4392, 5150000, 1372014, 1, 1, 0, 700), +(4393, 5150000, 1072306, 1, 1, 0, 800), +(4394, 5150000, 2040824, 1, 1, 0, 300), +(4395, 5150000, 2040928, 1, 1, 0, 300), +(4396, 5150000, 4130005, 1, 1, 0, 6000), +(4397, 5150000, 4130007, 1, 1, 0, 6000), +(4398, 5150001, 4000206, 1, 1, 0, 600000), +(4399, 5150001, 2000003, 1, 1, 0, 20000), +(4400, 5150001, 2000004, 1, 1, 0, 20000), +(4401, 5150001, 4020004, 1, 1, 0, 9000), +(4402, 5150001, 4010005, 1, 1, 0, 9000), +(4403, 5150001, 1072122, 1, 1, 0, 800), +(4404, 5150001, 1072132, 1, 1, 0, 800), +(4405, 5150001, 1072140, 1, 1, 0, 800), +(4406, 5150001, 1072128, 1, 1, 0, 800), +(4407, 5150001, 2043801, 1, 1, 0, 300), +(4408, 5150001, 1040092, 1, 1, 0, 800), +(4409, 5150001, 1060081, 1, 1, 0, 800), +(4410, 5150001, 1040098, 1, 1, 0, 800), +(4411, 5150001, 1060087, 1, 1, 0, 800), +(4412, 5150001, 1050059, 1, 1, 0, 700), +(4413, 5150001, 1051045, 1, 1, 0, 700), +(4414, 5150001, 1002030, 1, 1, 0, 1500), +(4415, 5150001, 1002252, 1, 1, 0, 1500), +(4416, 5150001, 1002281, 1, 1, 0, 1500), +(4417, 5150001, 1002287, 1, 1, 0, 1500), +(4418, 5150001, 2044701, 1, 1, 0, 300), +(4419, 5150001, 2043701, 1, 1, 0, 300), +(4420, 5150001, 1072306, 1, 1, 0, 800), +(4421, 5150001, 2043210, 1, 1, 0, 300), +(4422, 5150001, 2044312, 1, 1, 0, 300), +(4423, 5150001, 4130003, 1, 1, 0, 6000), +(4424, 5150001, 4130010, 1, 1, 0, 6000), +(4425, 5200000, 4000083, 1, 1, 0, 600000), +(4426, 5200000, 4010000, 1, 1, 0, 9000), +(4427, 5200000, 4020006, 1, 1, 0, 9000), +(4428, 5200000, 4004003, 1, 1, 0, 10000), +(4429, 5200000, 2044102, 1, 1, 0, 300), +(4430, 5200000, 2000001, 1, 1, 0, 20000), +(4431, 5200000, 2000003, 1, 1, 0, 20000), +(4432, 5200000, 1002129, 1, 1, 0, 1500), +(4433, 5200000, 1322002, 1, 1, 0, 700), +(4434, 5200000, 1322004, 1, 1, 0, 700), +(4435, 5200000, 1040016, 1, 1, 0, 800), +(4436, 5200000, 1060011, 1, 1, 0, 800), +(4437, 5200000, 1041048, 1, 1, 0, 800), +(4438, 5200000, 1061044, 1, 1, 0, 800), +(4439, 5200000, 2070000, 1, 1, 0, 500), +(4440, 5200000, 2060001, 1, 1, 0, 30000), +(4441, 5200000, 2061001, 1, 1, 0, 30000), +(4442, 5200000, 1482002, 1, 1, 0, 500), +(4443, 5200000, 2044212, 1, 1, 0, 300), +(4444, 5200001, 4000084, 1, 1, 0, 600000), +(4445, 5200001, 4020002, 1, 1, 0, 9000), +(4446, 5200001, 4010002, 1, 1, 0, 9000), +(4447, 5200001, 4004001, 1, 1, 0, 10000), +(4448, 5200001, 4006000, 1, 1, 0, 10000), +(4449, 5200001, 2041016, 1, 1, 0, 300), +(4450, 5200001, 2000001, 1, 1, 0, 20000), +(4451, 5200001, 2000003, 1, 1, 0, 20000), +(4452, 5200001, 1002142, 1, 1, 0, 1500), +(4453, 5200001, 1040024, 1, 1, 0, 800), +(4454, 5200001, 1062006, 1, 1, 0, 800), +(4455, 5200001, 1322009, 1, 1, 0, 700), +(4456, 5200001, 1061043, 1, 1, 0, 800), +(4457, 5200001, 1041047, 1, 1, 0, 800), +(4458, 5200001, 1442003, 1, 1, 0, 700), +(4459, 5200001, 1050026, 1, 1, 0, 700), +(4460, 5200001, 2060001, 1, 1, 0, 30000), +(4461, 5200001, 2061001, 1, 1, 0, 30000), +(4462, 5200001, 2049000, 1, 1, 0, 150), +(4463, 5200002, 4000085, 1, 1, 0, 600000), +(4464, 5200002, 4020000, 1, 1, 0, 9000), +(4465, 5200002, 4010005, 1, 1, 0, 9000), +(4466, 5200002, 4004001, 1, 1, 0, 10000), +(4467, 5200002, 4006000, 1, 1, 0, 10000), +(4468, 5200002, 2040805, 1, 1, 0, 300), +(4469, 5200002, 2000001, 1, 1, 0, 20000), +(4470, 5200002, 2000003, 1, 1, 0, 20000), +(4471, 5200002, 1082052, 1, 1, 0, 1000), +(4472, 5200002, 1041059, 1, 1, 0, 800), +(4473, 5200002, 1061055, 1, 1, 0, 800), +(4474, 5200002, 1041054, 1, 1, 0, 800), +(4475, 5200002, 1061050, 1, 1, 0, 800), +(4476, 5200002, 1032009, 1, 1, 0, 1000), +(4477, 5200002, 1041064, 1, 1, 0, 800), +(4478, 5200002, 1072089, 1, 1, 0, 800), +(4479, 5200002, 1452006, 1, 1, 0, 500), +(4480, 5200002, 1050000, 1, 1, 0, 700), +(4481, 5200002, 2060001, 1, 1, 0, 30000), +(4482, 5200002, 2061001, 1, 1, 0, 30000), +(4483, 5200002, 2040926, 1, 1, 0, 300), +(4484, 5220000, 4000043, 1, 1, 0, 600000), +(4485, 5220000, 4000043, 1, 1, 0, 600000), +(4486, 5220000, 4000043, 1, 1, 0, 600000), +(4487, 5220000, 4000044, 1, 1, 0, 600000), +(4488, 5220000, 4000044, 1, 1, 0, 600000), +(4489, 5220000, 4000044, 1, 1, 0, 600000), +(4490, 5220000, 4010003, 1, 1, 0, 90000), +(4491, 5220000, 4020005, 1, 1, 0, 90000), +(4492, 5220000, 2000002, 1, 1, 0, 200000), +(4493, 5220000, 2000003, 1, 1, 0, 200000), +(4494, 5220000, 2001001, 1, 1, 0, 200000), +(4495, 5220000, 2002000, 1, 1, 0, 200000), +(4496, 5220000, 2041022, 1, 1, 0, 3000), +(4497, 5220000, 2044601, 1, 1, 0, 3000), +(4498, 5220000, 2041013, 1, 1, 0, 3000), +(4499, 5220000, 2044701, 1, 1, 0, 3000), +(4500, 5220000, 2048001, 1, 1, 0, 3000), +(4501, 5220000, 2040707, 1, 1, 0, 3000), +(4502, 5220000, 2040004, 1, 1, 0, 3000), +(4503, 5220000, 2040513, 1, 1, 0, 3000), +(4504, 5220000, 2040704, 1, 1, 0, 3000), +(4505, 5220000, 2040804, 1, 1, 0, 3000), +(4506, 5220000, 2040702, 1, 1, 0, 3000), +(4507, 5220000, 2040802, 1, 1, 0, 3000), +(4508, 5220000, 2040902, 1, 1, 0, 3000), +(4509, 5220000, 2041002, 1, 1, 0, 3000), +(4510, 5220000, 2043002, 1, 1, 0, 3000), +(4511, 5220000, 2060000, 1, 1, 0, 300000), +(4512, 5220000, 2061000, 1, 1, 0, 300000), +(4513, 5220000, 1002029, 1, 1, 0, 15000), +(4514, 5220000, 1002246, 1, 1, 0, 15000), +(4515, 5220000, 1002270, 1, 1, 0, 15000), +(4516, 5220000, 1002249, 1, 1, 0, 15000), +(4517, 5220000, 1040093, 1, 1, 0, 8000), +(4518, 5220000, 1041092, 1, 1, 0, 8000), +(4519, 5220000, 1050056, 1, 1, 0, 7000), +(4520, 5220000, 1051047, 1, 1, 0, 7000), +(4521, 5220000, 1050060, 1, 1, 0, 7000), +(4522, 5220000, 1051041, 1, 1, 0, 7000), +(4523, 5220000, 1040100, 1, 1, 0, 8000), +(4524, 5220000, 1041095, 1, 1, 0, 8000), +(4525, 5220000, 1082061, 1, 1, 0, 10000), +(4526, 5220000, 1082088, 1, 1, 0, 10000), +(4527, 5220000, 1082091, 1, 1, 0, 10000), +(4528, 5220000, 1082094, 1, 1, 0, 10000), +(4529, 5220000, 1072149, 1, 1, 0, 8000), +(4530, 5220000, 1072136, 1, 1, 0, 8000), +(4531, 5220000, 1072144, 1, 1, 0, 8000), +(4532, 5220000, 1072152, 1, 1, 0, 8000), +(4533, 5220000, 1002634, 1, 1, 0, 15000), +(4534, 5220000, 1052119, 1, 1, 0, 7000), +(4535, 5220000, 1082201, 1, 1, 0, 10000), +(4536, 5220000, 1072306, 1, 1, 0, 8000), +(4537, 5220000, 3010008, 1, 1, 0, 5000), +(4538, 5220002, 4000029, 1, 1, 0, 600000), +(4539, 5220002, 4000029, 1, 1, 0, 600000), +(4540, 5220002, 4000029, 1, 1, 0, 600000), +(4541, 5220002, 4000031, 1, 1, 0, 600000), +(4542, 5220002, 4000031, 1, 1, 0, 600000), +(4543, 5220002, 4000031, 1, 1, 0, 600000), +(4544, 5220002, 4000021, 1, 1, 0, 500000), +(4545, 5220002, 4000021, 1, 1, 0, 500000), +(4546, 5220002, 4000021, 1, 1, 0, 500000), +(4547, 5220002, 4000026, 1, 1, 0, 600000), +(4548, 5220002, 4000026, 1, 1, 0, 600000), +(4549, 5220002, 4000026, 1, 1, 0, 600000), +(4550, 5220002, 4010005, 1, 1, 0, 90000), +(4551, 5220002, 4020005, 1, 1, 0, 90000), +(4552, 5220002, 2000002, 1, 1, 0, 200000), +(4553, 5220002, 2000003, 1, 1, 0, 200000), +(4554, 5220002, 2002002, 1, 1, 0, 200000), +(4555, 5220002, 2002003, 1, 1, 0, 200000), +(4556, 5220002, 2040301, 1, 1, 0, 3000), +(4557, 5220002, 2040504, 1, 1, 0, 3000), +(4558, 5220002, 2040707, 1, 1, 0, 3000), +(4559, 5220002, 2040801, 1, 1, 0, 3000), +(4560, 5220002, 2040901, 1, 1, 0, 3000), +(4561, 5220002, 2041016, 1, 1, 0, 3000), +(4562, 5220002, 2043801, 1, 1, 0, 3000), +(4563, 5220002, 2044101, 1, 1, 0, 3000), +(4564, 5220002, 2044601, 1, 1, 0, 3000), +(4565, 5220002, 2044701, 1, 1, 0, 3000), +(4566, 5220002, 2040514, 1, 1, 0, 3000), +(4567, 5220002, 2041002, 1, 1, 0, 3000), +(4568, 5220002, 2041017, 1, 1, 0, 3000), +(4569, 5220002, 2043702, 1, 1, 0, 3000), +(4570, 5220002, 2044302, 1, 1, 0, 3000), +(4571, 5220002, 2060000, 1, 1, 0, 300000), +(4572, 5220002, 2061000, 1, 1, 0, 300000), +(4573, 5220002, 1302010, 1, 1, 0, 7000), +(4574, 5220002, 1312008, 1, 1, 0, 7000), +(4575, 5220002, 1322017, 1, 1, 0, 7000), +(4576, 5220002, 1332003, 1, 1, 0, 5000), +(4577, 5220002, 1372007, 1, 1, 0, 7000), +(4578, 5220002, 1382006, 1, 1, 0, 7000), +(4579, 5220002, 1402003, 1, 1, 0, 7000), +(4580, 5220002, 1412003, 1, 1, 0, 7000), +(4581, 5220002, 1422005, 1, 1, 0, 7000), +(4582, 5220002, 1432004, 1, 1, 0, 5000), +(4583, 5220002, 1442005, 1, 1, 0, 7000), +(4584, 5220002, 1452008, 1, 1, 0, 5000), +(4585, 5220002, 1462007, 1, 1, 0, 5000), +(4586, 5220002, 1472021, 1, 1, 0, 5000), +(4587, 5220002, 1482007, 1, 1, 0, 5000), +(4588, 5220002, 1492007, 1, 1, 0, 5000), +(4589, 5220002, 2044802, 1, 1, 0, 3000), +(4590, 5220002, 2044901, 1, 1, 0, 3000), +(4591, 5220002, 1432039, 1, 1, 0, 5000), +(4592, 5220002, 2040931, 1, 1, 0, 3000), +(4593, 5220002, 2040928, 1, 1, 0, 3000), +(4594, 5220003, 4000113, 1, 1, 0, 600000), +(4595, 5220003, 4000113, 1, 1, 0, 600000), +(4596, 5220003, 4000113, 1, 1, 0, 600000), +(4597, 5220003, 4000114, 1, 1, 0, 600000), +(4598, 5220003, 4000114, 1, 1, 0, 600000), +(4599, 5220003, 4000114, 1, 1, 0, 600000), +(4600, 5220003, 4000115, 1, 1, 0, 600000), +(4601, 5220003, 4000115, 1, 1, 0, 600000), +(4602, 5220003, 4000115, 1, 1, 0, 600000), +(4603, 5220003, 4004001, 1, 1, 0, 100000), +(4604, 5220003, 4010003, 1, 1, 0, 90000), +(4605, 5220003, 4020006, 1, 1, 0, 90000), +(4606, 5220003, 2000002, 1, 1, 0, 200000), +(4607, 5220003, 2000003, 1, 1, 0, 200000), +(4608, 5220003, 2002002, 1, 1, 0, 200000), +(4609, 5220003, 2002003, 1, 1, 0, 200000), +(4610, 5220003, 2040401, 1, 1, 0, 3000), +(4611, 5220003, 2040516, 1, 1, 0, 3000), +(4612, 5220003, 2040704, 1, 1, 0, 3000), +(4613, 5220003, 2040804, 1, 1, 0, 3000), +(4614, 5220003, 2041013, 1, 1, 0, 3000), +(4615, 5220003, 2041016, 1, 1, 0, 3000), +(4616, 5220003, 2043201, 1, 1, 0, 3000), +(4617, 5220003, 2043701, 1, 1, 0, 3000), +(4618, 5220003, 2044201, 1, 1, 0, 3000), +(4619, 5220003, 2044301, 1, 1, 0, 3000), +(4620, 5220003, 2040302, 1, 1, 0, 3000), +(4621, 5220003, 2040502, 1, 1, 0, 3000), +(4622, 5220003, 2041002, 1, 1, 0, 3000), +(4623, 5220003, 2043802, 1, 1, 0, 3000), +(4624, 5220003, 2044502, 1, 1, 0, 3000), +(4625, 5220003, 2060000, 1, 1, 0, 300000), +(4626, 5220003, 2061000, 1, 1, 0, 300000), +(4627, 5220003, 1302011, 1, 1, 0, 7000), +(4628, 5220003, 1312009, 1, 1, 0, 7000), +(4629, 5220003, 1322018, 1, 1, 0, 7000), +(4630, 5220003, 1332015, 1, 1, 0, 5000), +(4631, 5220003, 1332017, 1, 1, 0, 5000), +(4632, 5220003, 1372014, 1, 1, 0, 7000), +(4633, 5220003, 1382007, 1, 1, 0, 7000), +(4634, 5220003, 1402011, 1, 1, 0, 7000), +(4635, 5220003, 1412007, 1, 1, 0, 7000), +(4636, 5220003, 1422009, 1, 1, 0, 7000), +(4637, 5220003, 1432006, 1, 1, 0, 5000), +(4638, 5220003, 1442010, 1, 1, 0, 7000), +(4639, 5220003, 1452004, 1, 1, 0, 5000), +(4640, 5220003, 1462008, 1, 1, 0, 5000), +(4641, 5220003, 1472025, 1, 1, 0, 5000), +(4642, 5220003, 1482008, 1, 1, 0, 5000), +(4643, 5220003, 1492008, 1, 1, 0, 5000), +(4644, 5220003, 2044801, 1, 1, 0, 3000), +(4645, 5220003, 2044902, 1, 1, 0, 3000), +(4646, 5220003, 1372033, 1, 1, 0, 7000), +(4647, 5220003, 2040627, 1, 1, 0, 3000), +(4648, 5220003, 2040825, 1, 1, 0, 3000), +(4649, 5220003, 2040933, 1, 1, 0, 3000), +(4650, 5220003, 2044114, 1, 1, 0, 3000), +(4651, 5220003, 2044807, 1, 1, 0, 3000), +(4652, 5220004, 2040001, 1, 1, 0, 3000), +(4653, 5220004, 2040004, 1, 1, 0, 3000), +(4654, 5220004, 2040301, 1, 1, 0, 3000), +(4655, 5220004, 2040401, 1, 1, 0, 3000), +(4656, 5220004, 2040501, 1, 1, 0, 3000), +(4657, 5220004, 2040504, 1, 1, 0, 3000), +(4658, 5220004, 2040601, 1, 1, 0, 3000), +(4659, 5220004, 2040701, 1, 1, 0, 3000), +(4660, 5220004, 2040704, 1, 1, 0, 3000), +(4661, 5220004, 2040707, 1, 1, 0, 3000), +(4662, 5220004, 2040801, 1, 1, 0, 3000), +(4663, 5220004, 2041001, 1, 1, 0, 3000), +(4664, 5220004, 2041004, 1, 1, 0, 3000), +(4665, 5220004, 2040804, 1, 1, 0, 3000), +(4666, 5220004, 2040901, 1, 1, 0, 3000), +(4667, 5220004, 2070005, 1, 1, 0, 4000), +(4668, 5220004, 1102002, 1, 1, 0, 10000), +(4669, 5220004, 1032013, 1, 1, 0, 10000), +(4670, 5220004, 2000005, 1, 1, 0, 999999), +(4671, 5220004, 1452009, 1, 1, 0, 5000), +(4672, 5220004, 1382007, 1, 1, 0, 7000), +(4673, 5220004, 1462009, 1, 1, 0, 5000), +(4674, 5220004, 1322019, 1, 1, 0, 7000), +(4675, 5220004, 1312010, 1, 1, 0, 7000), +(4676, 5220004, 1412008, 1, 1, 0, 7000), +(4677, 5220004, 1422010, 1, 1, 0, 7000), +(4678, 5220004, 1472026, 1, 1, 0, 5000), +(4679, 5220004, 1432007, 1, 1, 0, 5000), +(4680, 5220004, 1442008, 1, 1, 0, 7000), +(4681, 5220004, 1302012, 1, 1, 0, 7000), +(4682, 5220004, 1402012, 1, 1, 0, 7000), +(4683, 5220004, 1332018, 1, 1, 0, 5000), +(4684, 5220004, 1332019, 1, 1, 0, 5000), +(4685, 5220004, 2043001, 1, 1, 0, 3000), +(4686, 5220004, 2043101, 1, 1, 0, 3000), +(4687, 5220004, 2043201, 1, 1, 0, 3000), +(4688, 5220004, 2043301, 1, 1, 0, 3000), +(4689, 5220004, 2043701, 1, 1, 0, 3000), +(4690, 5220004, 2043801, 1, 1, 0, 3000), +(4691, 5220004, 2044001, 1, 1, 0, 3000), +(4692, 5220004, 2044101, 1, 1, 0, 3000), +(4693, 5220004, 2044201, 1, 1, 0, 3000), +(4694, 5220004, 2044301, 1, 1, 0, 3000), +(4695, 5220004, 2044401, 1, 1, 0, 3000), +(4696, 5220004, 2044501, 1, 1, 0, 3000), +(4697, 5220004, 2044601, 1, 1, 0, 3000), +(4698, 5220004, 2044701, 1, 1, 0, 3000), +(4699, 5220004, 2000004, 1, 1, 0, 999999), +(4700, 5220004, 1092017, 1, 1, 0, 7000), +(4701, 5250000, 2000002, 1, 1, 0, 20000), +(4702, 5250000, 2000003, 1, 1, 0, 20000), +(4703, 5250000, 4010002, 1, 1, 0, 9000), +(4704, 5250000, 4020002, 1, 1, 0, 9000), +(4705, 5250000, 2044312, 1, 1, 0, 300), +(4706, 5250000, 1002208, 1, 1, 0, 1500), +(4707, 5250000, 1052116, 1, 1, 0, 700), +(4708, 5250000, 1082010, 1, 1, 0, 1000), +(4709, 5250000, 1072143, 1, 1, 0, 800), +(4710, 5250000, 1452004, 1, 1, 0, 500), +(4711, 5250000, 4000437, 1, 1, 0, 600000), +(4712, 5250000, 4130003, 1, 1, 0, 6000), +(4713, 5250000, 4130014, 1, 1, 0, 6000), +(4714, 5250000, 4130017, 1, 1, 0, 6000), +(4715, 5250001, 2000002, 1, 1, 0, 20000), +(4716, 5250001, 2000003, 1, 1, 0, 20000), +(4717, 5250001, 4010000, 1, 1, 0, 9000), +(4718, 5250001, 4020000, 1, 1, 0, 9000), +(4719, 5250001, 2041014, 1, 1, 0, 300), +(4720, 5250001, 1002214, 1, 1, 0, 1500), +(4721, 5250001, 1040096, 1, 1, 0, 800), +(4722, 5250001, 1041079, 1, 1, 0, 800), +(4723, 5250001, 1082198, 1, 1, 0, 1000), +(4724, 5250001, 1072133, 1, 1, 0, 800), +(4725, 5250001, 1372007, 1, 1, 0, 700), +(4726, 5250001, 4000439, 1, 1, 0, 600000), +(4727, 5250001, 4130015, 1, 1, 0, 6000), +(4728, 5250001, 4130016, 1, 1, 0, 6000), +(4729, 5250002, 4000440, 1, 1, 0, 600000), +(4730, 5250002, 2000002, 1, 1, 0, 20000), +(4731, 5250002, 2000003, 1, 1, 0, 20000), +(4732, 5250002, 4010001, 1, 1, 0, 9000), +(4733, 5250002, 4020003, 1, 1, 0, 9000), +(4734, 5250002, 2044802, 1, 1, 0, 300), +(4735, 5250002, 1002634, 1, 1, 0, 1500), +(4736, 5250002, 1040092, 1, 1, 0, 800), +(4737, 5250002, 1041093, 1, 1, 0, 800), +(4738, 5250002, 1082087, 1, 1, 0, 1000), +(4739, 5250002, 1072145, 1, 1, 0, 800), +(4740, 5250002, 1332015, 1, 1, 0, 500), +(4741, 5250002, 4130001, 1, 1, 0, 6000), +(4742, 5250002, 4130014, 1, 1, 0, 6000), +(4743, 5300000, 4000086, 1, 1, 0, 600000), +(4744, 5300000, 4010001, 1, 1, 0, 9000), +(4745, 5300000, 4020003, 1, 1, 0, 9000), +(4746, 5300000, 4004000, 1, 1, 0, 10000), +(4747, 5300000, 4006001, 1, 1, 0, 10000), +(4748, 5300000, 2000002, 1, 1, 0, 20000), +(4749, 5300000, 2000003, 1, 1, 0, 20000), +(4750, 5300000, 2050001, 1, 1, 0, 50000), +(4751, 5300000, 2070001, 1, 1, 0, 500), +(4752, 5300000, 4020007, 1, 1, 0, 9000), +(4753, 5300000, 1082016, 1, 1, 0, 1000), +(4754, 5300000, 1002035, 1, 1, 0, 1500), +(4755, 5300000, 1002165, 1, 1, 0, 1500), +(4756, 5300000, 1041048, 1, 1, 0, 800), +(4757, 5300000, 1061044, 1, 1, 0, 800), +(4758, 5300000, 1072081, 1, 1, 0, 800), +(4759, 5300000, 1072075, 1, 1, 0, 800), +(4760, 5300000, 1382017, 1, 1, 0, 700), +(4761, 5300000, 1032002, 1, 1, 0, 1000), +(4762, 5300000, 1040030, 1, 1, 0, 800), +(4763, 5300000, 1060020, 1, 1, 0, 800), +(4764, 5300000, 1082054, 1, 1, 0, 1000), +(4765, 5300000, 2040705, 1, 1, 0, 300), +(4766, 5300000, 1482004, 1, 1, 0, 500), +(4767, 5300000, 4130000, 1, 1, 0, 6000), +(4768, 5300000, 4130005, 1, 1, 0, 6000), +(4769, 5300000, 4130011, 1, 1, 0, 6000), +(4770, 5300001, 4000087, 1, 1, 0, 600000), +(4771, 5300001, 4010000, 1, 1, 0, 9000), +(4772, 5300001, 4020004, 1, 1, 0, 9000), +(4773, 5300001, 4004001, 1, 1, 0, 10000), +(4774, 5300001, 4006001, 1, 1, 0, 10000), +(4775, 5300001, 2040402, 1, 1, 0, 300), +(4776, 5300001, 2000002, 1, 1, 0, 20000), +(4777, 5300001, 2000003, 1, 1, 0, 20000), +(4778, 5300001, 2050000, 1, 1, 0, 50000), +(4779, 5300001, 1002175, 1, 1, 0, 1500), +(4780, 5300001, 1402002, 1, 1, 0, 700), +(4781, 5300001, 1050029, 1, 1, 0, 700), +(4782, 5300001, 1002138, 1, 1, 0, 1500), +(4783, 5300001, 1041068, 1, 1, 0, 800), +(4784, 5300001, 1061063, 1, 1, 0, 800), +(4785, 5300001, 1082036, 1, 1, 0, 1000), +(4786, 5300001, 1072105, 1, 1, 0, 800), +(4787, 5300001, 1332014, 1, 1, 0, 500), +(4788, 5300001, 1051023, 1, 1, 0, 700), +(4789, 5300001, 1002625, 1, 1, 0, 1500), +(4790, 5300001, 2040623, 1, 1, 0, 300), +(4791, 5300001, 4130013, 1, 1, 0, 6000), +(4792, 5300001, 4130016, 1, 1, 0, 6000), +(4793, 5300100, 4000041, 1, 1, 0, 600000), +(4794, 5300100, 4004004, 1, 1, 0, 10000), +(4795, 5300100, 2000002, 1, 1, 0, 20000), +(4796, 5300100, 2000003, 1, 1, 0, 20000), +(4797, 5300100, 4020008, 1, 1, 0, 9000), +(4798, 5300100, 4010006, 1, 1, 0, 9000), +(4799, 5300100, 2000004, 1, 1, 0, 20000), +(4800, 5300100, 4006000, 1, 1, 0, 10000), +(4801, 5300100, 1002168, 1, 1, 0, 1500), +(4802, 5300100, 1002092, 1, 1, 0, 1500), +(4803, 5300100, 1040086, 1, 1, 0, 800), +(4804, 5300100, 1060000, 1, 1, 0, 800), +(4805, 5300100, 1051031, 1, 1, 0, 700), +(4806, 5300100, 1051039, 1, 1, 0, 700), +(4807, 5300100, 1082011, 1, 1, 0, 1000), +(4808, 5300100, 1452008, 1, 1, 0, 500), +(4809, 5300100, 1072143, 1, 1, 0, 800), +(4810, 5300100, 1472020, 1, 1, 0, 500), +(4811, 5300100, 1032019, 1, 1, 0, 1000), +(4812, 5300100, 1040090, 1, 1, 0, 800), +(4813, 5300100, 1060079, 1, 1, 0, 800), +(4814, 5300100, 1452004, 1, 1, 0, 500), +(4815, 5300100, 1072137, 1, 1, 0, 800), +(4816, 5300100, 1082093, 1, 1, 0, 1000), +(4817, 5300100, 1082198, 1, 1, 0, 1000), +(4818, 5300100, 4130006, 1, 1, 0, 6000), +(4819, 5300100, 4130010, 1, 1, 0, 6000), +(4820, 5300100, 4130016, 1, 1, 0, 6000), +(4821, 5400000, 4000088, 1, 1, 0, 600000), +(4822, 5400000, 4020005, 1, 1, 0, 9000), +(4823, 5400000, 4010003, 1, 1, 0, 9000), +(4824, 5400000, 4004003, 1, 1, 0, 10000), +(4825, 5400000, 4006000, 1, 1, 0, 10000), +(4826, 5400000, 2043801, 1, 1, 0, 300), +(4827, 5400000, 2000002, 1, 1, 0, 20000), +(4828, 5400000, 2000003, 1, 1, 0, 20000), +(4829, 5400000, 2050002, 1, 1, 0, 50000), +(4830, 5400000, 1432008, 1, 1, 0, 500), +(4831, 5400000, 2070002, 1, 1, 0, 500), +(4832, 5400000, 2060001, 1, 1, 0, 30000), +(4833, 5400000, 2061001, 1, 1, 0, 30000), +(4834, 5400000, 1060045, 1, 1, 0, 800), +(4835, 5400000, 1040059, 1, 1, 0, 800), +(4836, 5400000, 1002177, 1, 1, 0, 1500), +(4837, 5400000, 1041067, 1, 1, 0, 800), +(4838, 5400000, 1061062, 1, 1, 0, 800), +(4839, 5400000, 1051001, 1, 1, 0, 700), +(4840, 5400000, 1422008, 1, 1, 0, 700), +(4841, 5400000, 1002021, 1, 1, 0, 1500), +(4842, 5400000, 1082062, 1, 1, 0, 1000), +(4843, 5400000, 1072108, 1, 1, 0, 800), +(4844, 5400000, 1422007, 1, 1, 0, 700), +(4845, 5400000, 1082192, 1, 1, 0, 1000), +(4846, 5400000, 2044801, 1, 1, 0, 300), +(4847, 5400000, 2044809, 1, 1, 0, 300), +(4848, 5400000, 4130002, 1, 1, 0, 6000), +(4849, 5400000, 4130011, 1, 1, 0, 6000), +(4850, 5400000, 4130014, 1, 1, 0, 6000), +(4851, 6090000, 4000336, 1, 1, 0, 600000), +(4852, 6090001, 4000415, 1, 1, 0, 600000), +(4853, 6090003, 4000416, 1, 1, 0, 600000), +(4854, 6090004, 4000419, 1, 1, 0, 600000), +(4855, 6110300, 2000006, 1, 1, 0, 20000), +(4856, 6110300, 4020007, 1, 1, 0, 9000), +(4857, 6110300, 4010000, 1, 1, 0, 9000), +(4858, 6110300, 4004000, 1, 1, 0, 10000), +(4859, 6110300, 1041078, 1, 1, 0, 800), +(4860, 6110300, 1041089, 1, 1, 0, 800), +(4861, 6110300, 1002022, 1, 1, 0, 1500), +(4862, 6110300, 1032019, 1, 1, 0, 1000), +(4863, 6110300, 1051047, 1, 1, 0, 700), +(4864, 6110300, 1040099, 1, 1, 0, 800), +(4865, 6110300, 1060088, 1, 1, 0, 800), +(4866, 6110300, 1432006, 1, 1, 0, 500), +(4867, 6110300, 1462008, 1, 1, 0, 500), +(4868, 6110300, 1472024, 1, 1, 0, 500), +(4869, 6110300, 1102022, 1, 1, 0, 1000), +(4870, 6110300, 1382007, 1, 1, 0, 700), +(4871, 6110300, 1472026, 1, 1, 0, 500), +(4872, 6110300, 1082107, 1, 1, 0, 1000), +(4873, 6110300, 1040104, 1, 1, 0, 800), +(4874, 6110300, 1060092, 1, 1, 0, 800), +(4875, 6110300, 1072157, 1, 1, 0, 800), +(4876, 6110300, 1032020, 1, 1, 0, 1000), +(4877, 6110300, 1051062, 1, 1, 0, 700), +(4878, 6110300, 4000354, 1, 1, 0, 600000), +(4879, 6110300, 1072306, 1, 1, 0, 800), +(4880, 6110300, 2040933, 1, 1, 0, 300), +(4881, 6110300, 2049100, 1, 1, 0, 150), +(4882, 6110300, 4130004, 1, 1, 0, 6000), +(4883, 6110300, 4130009, 1, 1, 0, 6000), +(4884, 6110300, 4130011, 1, 1, 0, 6000), +(4885, 6110301, 2000002, 1, 1, 0, 20000), +(4886, 6110301, 2000006, 1, 1, 0, 20000), +(4887, 6110301, 2000004, 1, 1, 0, 20000), +(4888, 6110301, 4020005, 1, 1, 0, 9000), +(4889, 6110301, 4010002, 1, 1, 0, 9000), +(4890, 6110301, 4004001, 1, 1, 0, 10000), +(4891, 6110301, 1092015, 1, 1, 0, 700), +(4892, 6110301, 1472027, 1, 1, 0, 500), +(4893, 6110301, 1050088, 1, 1, 0, 700), +(4894, 6110301, 1072080, 1, 1, 0, 800), +(4895, 6110301, 1072085, 1, 1, 0, 800), +(4896, 6110301, 1032015, 1, 1, 0, 1000), +(4897, 6110301, 1050081, 1, 1, 0, 700), +(4898, 6110301, 1051078, 1, 1, 0, 700), +(4899, 6110301, 1002289, 1, 1, 0, 1500), +(4900, 6110301, 1462008, 1, 1, 0, 500), +(4901, 6110301, 1322018, 1, 1, 0, 700), +(4902, 6110301, 2043302, 1, 1, 0, 300), +(4903, 6110301, 4000363, 1, 1, 0, 600000), +(4904, 6110301, 1072309, 1, 1, 0, 800), +(4905, 6110301, 2330003, 1, 1, 0, 500), +(4906, 6110301, 2040621, 1, 1, 0, 300), +(4907, 6110301, 2049000, 1, 1, 0, 150), +(4908, 6110301, 4130001, 1, 1, 0, 6000), +(4909, 6110301, 4130007, 1, 1, 0, 6000), +(4910, 6130100, 4000014, 1, 1, 0, 600000), +(4911, 6130100, 2000006, 1, 1, 0, 20000), +(4912, 6130100, 2000004, 1, 1, 0, 20000), +(4913, 6130100, 4020007, 1, 1, 0, 9000), +(4914, 6130100, 4010005, 1, 1, 0, 9000), +(4915, 6130100, 2070005, 1, 1, 0, 400), +(4916, 6130100, 4000030, 1, 1, 0, 60000), +(4917, 6130100, 1060068, 1, 1, 0, 800), +(4918, 6130100, 1040080, 1, 1, 0, 800), +(4919, 6130100, 1040083, 1, 1, 0, 800), +(4920, 6130100, 1060072, 1, 1, 0, 800), +(4921, 6130100, 1041080, 1, 1, 0, 800), +(4922, 6130100, 1061079, 1, 1, 0, 800), +(4923, 6130100, 1082067, 1, 1, 0, 1000), +(4924, 6130100, 1092004, 1, 1, 0, 700), +(4925, 6130100, 1050056, 1, 1, 0, 700), +(4926, 6130100, 1372014, 1, 1, 0, 700), +(4927, 6130100, 1002246, 1, 1, 0, 1500), +(4928, 6130100, 1002248, 1, 1, 0, 1500), +(4929, 6130100, 1072136, 1, 1, 0, 800), +(4930, 6130100, 1072146, 1, 1, 0, 800), +(4931, 6130100, 1072148, 1, 1, 0, 800), +(4932, 6130100, 1040100, 1, 1, 0, 800), +(4933, 6130100, 1060089, 1, 1, 0, 800), +(4934, 6130100, 1102022, 1, 1, 0, 1000), +(4935, 6130100, 1060091, 1, 1, 0, 800), +(4936, 6130100, 1040103, 1, 1, 0, 800), +(4937, 6130100, 1072160, 1, 1, 0, 800), +(4938, 6130100, 1072162, 1, 1, 0, 800), +(4939, 6130100, 1082106, 1, 1, 0, 1000), +(4940, 6130100, 1482008, 1, 1, 0, 500), +(4941, 6130100, 2331000, 1, 1, 0, 500), +(4942, 6130100, 2040319, 1, 1, 0, 300), +(4943, 6130100, 4130004, 1, 1, 0, 6000), +(4944, 6130100, 4130014, 1, 1, 0, 6000), +(4945, 6130101, 4000040, 1, 1, 0, 600000), +(4946, 6130101, 1092012, 1, 1, 0, 7000), +(4947, 6130101, 2070006, 1, 1, 0, 2000), +(4948, 6130101, 2040001, 1, 1, 0, 3000), +(4949, 6130101, 2040004, 1, 1, 0, 3000), +(4950, 6130101, 2040301, 1, 1, 0, 3000), +(4951, 6130101, 2040401, 1, 1, 0, 3000), +(4952, 6130101, 2040501, 1, 1, 0, 3000), +(4953, 6130101, 2040504, 1, 1, 0, 3000), +(4954, 6130101, 2040601, 1, 1, 0, 3000), +(4955, 6130101, 2040701, 1, 1, 0, 3000), +(4956, 6130101, 2040704, 1, 1, 0, 3000), +(4957, 6130101, 2040707, 1, 1, 0, 3000), +(4958, 6130101, 2040801, 1, 1, 0, 3000), +(4959, 6130101, 2041001, 1, 1, 0, 3000), +(4960, 6130101, 2041004, 1, 1, 0, 3000), +(4961, 6130101, 2040804, 1, 1, 0, 3000), +(4962, 6130101, 2040901, 1, 1, 0, 3000), +(4963, 6130101, 1032019, 1, 1, 0, 10000), +(4964, 6130101, 1382006, 1, 1, 0, 7000), +(4965, 6130101, 2331000, 1, 1, 0, 5000), +(4966, 6130101, 2040427, 1, 1, 0, 3000), +(4967, 6130101, 2040618, 1, 1, 0, 3000), +(4968, 6130101, 2040619, 1, 1, 0, 3000), +(4969, 6130101, 2040024, 1, 1, 0, 3000), +(4970, 6130101, 2043212, 1, 1, 0, 3000), +(4971, 6130103, 4000050, 1, 1, 0, 600000), +(4972, 6130103, 2000006, 1, 1, 0, 20000), +(4973, 6130103, 2000004, 1, 1, 0, 20000), +(4974, 6130103, 4020008, 1, 1, 0, 9000), +(4975, 6130103, 4010001, 1, 1, 0, 9000), +(4976, 6130103, 2040401, 1, 1, 0, 300), +(4977, 6130103, 4004002, 1, 1, 0, 10000), +(4978, 6130103, 1050045, 1, 1, 0, 700), +(4979, 6130103, 1040087, 1, 1, 0, 800), +(4980, 6130103, 1060076, 1, 1, 0, 800), +(4981, 6130103, 1040097, 1, 1, 0, 800), +(4982, 6130103, 1060086, 1, 1, 0, 800), +(4983, 6130103, 1002170, 1, 1, 0, 1500), +(4984, 6130103, 1002025, 1, 1, 0, 1500), +(4985, 6130103, 1040093, 1, 1, 0, 800), +(4986, 6130103, 1060082, 1, 1, 0, 800), +(4987, 6130103, 1072150, 1, 1, 0, 800), +(4988, 6130103, 1072138, 1, 1, 0, 800), +(4989, 6130103, 1082060, 1, 1, 0, 1000), +(4990, 6130103, 1072145, 1, 1, 0, 800), +(4991, 6130103, 1102024, 1, 1, 0, 1000), +(4992, 6130103, 1072157, 1, 1, 0, 800), +(4993, 6130103, 1002286, 1, 1, 0, 1500), +(4994, 6130103, 1302012, 1, 1, 0, 700), +(4995, 6130103, 1082095, 1, 1, 0, 1000), +(4996, 6130103, 2040418, 1, 1, 0, 300), +(4997, 6130103, 4130008, 1, 1, 0, 6000), +(4998, 6130103, 4130015, 1, 1, 0, 6000), +(4999, 6130200, 4000128, 1, 1, 0, 600000), +(5000, 6130200, 4010001, 1, 1, 0, 9000), +(5001, 6130200, 2000006, 1, 1, 0, 20000), +(5002, 6130200, 2000004, 1, 1, 0, 20000), +(5003, 6130200, 4020008, 1, 1, 0, 9000), +(5004, 6130200, 4010005, 1, 1, 0, 9000), +(5005, 6130200, 2043701, 1, 1, 0, 300), +(5006, 6130200, 2043801, 1, 1, 0, 300), +(5007, 6130200, 2041001, 1, 1, 0, 300), +(5008, 6130200, 4004001, 1, 1, 0, 10000), +(5009, 6130200, 1002182, 1, 1, 0, 1500), +(5010, 6130200, 1002093, 1, 1, 0, 1500), +(5011, 6130200, 1050046, 1, 1, 0, 700), +(5012, 6130200, 1032012, 1, 1, 0, 1000), +(5013, 6130200, 1040088, 1, 1, 0, 800), +(5014, 6130200, 1060077, 1, 1, 0, 800), +(5015, 6130200, 1072122, 1, 1, 0, 800), +(5016, 6130200, 1082094, 1, 1, 0, 1000), +(5017, 6130200, 1082061, 1, 1, 0, 1000), +(5018, 6130200, 1082087, 1, 1, 0, 1000), +(5019, 6130200, 1072152, 1, 1, 0, 800), +(5020, 6130200, 1051042, 1, 1, 0, 700), +(5021, 6130200, 1302011, 1, 1, 0, 700), +(5022, 6130200, 1102015, 1, 1, 0, 1000), +(5023, 6130200, 1452009, 1, 1, 0, 500), +(5024, 6130200, 1082098, 1, 1, 0, 1000), +(5025, 6130200, 1312010, 1, 1, 0, 700), +(5026, 6130200, 1072163, 1, 1, 0, 800), +(5027, 6130200, 1052122, 1, 1, 0, 700), +(5028, 6130200, 2043112, 1, 1, 0, 300), +(5029, 6130200, 2044312, 1, 1, 0, 300), +(5030, 6130200, 4130004, 1, 1, 0, 6000), +(5031, 6130200, 4130012, 1, 1, 0, 6000), +(5032, 6130200, 4130015, 1, 1, 0, 6000), +(5033, 6130202, 4000173, 1, 1, 0, 600000), +(5034, 6130202, 2000006, 1, 1, 0, 20000), +(5035, 6130202, 2000004, 1, 1, 0, 20000), +(5036, 6130202, 4020008, 1, 1, 0, 9000), +(5037, 6130202, 4010001, 1, 1, 0, 9000), +(5038, 6130202, 1432004, 1, 1, 0, 500), +(5039, 6130202, 1442009, 1, 1, 0, 700), +(5040, 6130202, 1452008, 1, 1, 0, 500), +(5041, 6130202, 1462006, 1, 1, 0, 500), +(5042, 6130202, 1082086, 1, 1, 0, 1000), +(5043, 6130202, 1082093, 1, 1, 0, 1000), +(5044, 6130202, 1072144, 1, 1, 0, 800), +(5045, 6130202, 2040401, 1, 1, 0, 300), +(5046, 6130202, 1060088, 1, 1, 0, 800), +(5047, 6130202, 1040099, 1, 1, 0, 800), +(5048, 6130202, 1102018, 1, 1, 0, 1000), +(5049, 6130202, 1041091, 1, 1, 0, 800), +(5050, 6130202, 1061090, 1, 1, 0, 800), +(5051, 6130202, 2040004, 1, 1, 0, 300), +(5052, 6130202, 4004002, 1, 1, 0, 10000), +(5053, 6130202, 2040501, 1, 1, 0, 300), +(5054, 6130202, 1040089, 1, 1, 0, 800), +(5055, 6130202, 1060078, 1, 1, 0, 800), +(5056, 6130202, 4130002, 1, 1, 0, 6000), +(5057, 6130203, 4000283, 1, 1, 0, 600000), +(5058, 6130203, 4000285, 1, 1, 0, 600000), +(5059, 6130203, 4000021, 1, 1, 0, 50000), +(5060, 6130203, 4003005, 1, 1, 0, 200000), +(5061, 6130203, 2000006, 1, 1, 0, 20000), +(5062, 6130203, 2000004, 1, 1, 0, 20000), +(5063, 6130203, 4020007, 1, 1, 0, 9000), +(5064, 6130203, 4010005, 1, 1, 0, 9000), +(5065, 6130203, 2070005, 1, 1, 0, 400), +(5066, 6130203, 1041083, 1, 1, 0, 800), +(5067, 6130203, 1061082, 1, 1, 0, 800), +(5068, 6130203, 1072090, 1, 1, 0, 800), +(5069, 6130203, 1041079, 1, 1, 0, 800), +(5070, 6130203, 1061078, 1, 1, 0, 800), +(5071, 6130203, 1002215, 1, 1, 0, 1500), +(5072, 6130203, 1102015, 1, 1, 0, 1000), +(5073, 6130203, 1050056, 1, 1, 0, 700), +(5074, 6130203, 1002637, 1, 1, 0, 1500), +(5075, 6130203, 2040622, 1, 1, 0, 300), +(5076, 6130203, 2043112, 1, 1, 0, 300), +(5077, 6130203, 2044014, 1, 1, 0, 300), +(5078, 6130203, 4130002, 1, 1, 0, 6000), +(5079, 6130203, 4130005, 1, 1, 0, 6000), +(5080, 6130203, 4130013, 1, 1, 0, 6000), +(5081, 6130204, 4000295, 1, 1, 0, 600000), +(5082, 6130204, 4003005, 1, 1, 0, 200000), +(5083, 6130204, 4000021, 1, 1, 0, 50000), +(5084, 6130204, 2000002, 1, 1, 0, 20000), +(5085, 6130204, 2000006, 1, 1, 0, 20000), +(5086, 6130204, 2000004, 1, 1, 0, 20000), +(5087, 6130204, 4020004, 1, 1, 0, 9000), +(5088, 6130204, 4010006, 1, 1, 0, 9000), +(5089, 6130204, 1040093, 1, 1, 0, 800), +(5090, 6130204, 1060082, 1, 1, 0, 800), +(5091, 6130204, 1051064, 1, 1, 0, 700), +(5092, 6130204, 1051065, 1, 1, 0, 700), +(5093, 6130204, 1082062, 1, 1, 0, 1000), +(5094, 6130204, 1040104, 1, 1, 0, 800), +(5095, 6130204, 1060092, 1, 1, 0, 800), +(5096, 6130204, 4004000, 1, 1, 0, 10000), +(5097, 6130204, 1040107, 1, 1, 0, 800), +(5098, 6130204, 1060095, 1, 1, 0, 800), +(5099, 6130204, 2040301, 1, 1, 0, 300), +(5100, 6130204, 2043001, 1, 1, 0, 300), +(5101, 6130204, 1402011, 1, 1, 0, 700), +(5102, 6130204, 1402003, 1, 1, 0, 700), +(5103, 6130204, 1052119, 1, 1, 0, 700), +(5104, 6130204, 2330003, 1, 1, 0, 500), +(5105, 6130204, 2044802, 1, 1, 0, 300), +(5106, 6130204, 2040421, 1, 1, 0, 300), +(5107, 6130204, 2049000, 1, 1, 0, 150), +(5108, 6130204, 4130000, 1, 1, 0, 6000), +(5109, 6130204, 4130012, 1, 1, 0, 6000), +(5110, 6130207, 4000282, 1, 1, 0, 600000), +(5111, 6130207, 4000021, 1, 1, 0, 50000), +(5112, 6130207, 4003005, 1, 1, 0, 200000), +(5113, 6130207, 2000002, 1, 1, 0, 20000), +(5114, 6130207, 2000006, 1, 1, 0, 20000), +(5115, 6130207, 4020004, 1, 1, 0, 9000), +(5116, 6130207, 1040109, 1, 1, 0, 800), +(5117, 6130207, 1060098, 1, 1, 0, 800), +(5118, 6130207, 1032011, 1, 1, 0, 1000), +(5119, 6130207, 1102017, 1, 1, 0, 1000), +(5120, 6130207, 1051030, 1, 1, 0, 700), +(5121, 6130207, 1002210, 1, 1, 0, 1500), +(5122, 6130207, 1051046, 1, 1, 0, 700), +(5123, 6130207, 1452008, 1, 1, 0, 500), +(5124, 6130207, 2043701, 1, 1, 0, 300), +(5125, 6130207, 1072309, 1, 1, 0, 800), +(5126, 6130207, 2330003, 1, 1, 0, 500), +(5127, 6130207, 2040328, 1, 1, 0, 300), +(5128, 6130207, 2044112, 1, 1, 0, 300), +(5129, 6130207, 4130006, 1, 1, 0, 6000), +(5130, 6130207, 4130007, 1, 1, 0, 6000), +(5131, 6130208, 4000296, 1, 1, 0, 600000), +(5132, 6130208, 2000002, 1, 1, 0, 20000), +(5133, 6130208, 2000006, 1, 1, 0, 20000), +(5134, 6130208, 2000004, 1, 1, 0, 20000), +(5135, 6130208, 4020005, 1, 1, 0, 9000), +(5136, 6130208, 4010002, 1, 1, 0, 9000), +(5137, 6130208, 4004001, 1, 1, 0, 10000), +(5138, 6130208, 1092015, 1, 1, 0, 700), +(5139, 6130208, 1472027, 1, 1, 0, 500), +(5140, 6130208, 1050088, 1, 1, 0, 700), +(5141, 6130208, 1072080, 1, 1, 0, 800), +(5142, 6130208, 1072085, 1, 1, 0, 800), +(5143, 6130208, 1032015, 1, 1, 0, 1000), +(5144, 6130208, 1050081, 1, 1, 0, 700), +(5145, 6130208, 1051078, 1, 1, 0, 700), +(5146, 6130208, 1002289, 1, 1, 0, 1500), +(5147, 6130208, 1462008, 1, 1, 0, 500), +(5148, 6130208, 1322018, 1, 1, 0, 700), +(5149, 6130208, 2043302, 1, 1, 0, 300), +(5150, 6130208, 1082204, 1, 1, 0, 1000), +(5151, 6130208, 2044902, 1, 1, 0, 300), +(5152, 6130208, 4130006, 1, 1, 0, 6000), +(5153, 6130208, 4130008, 1, 1, 0, 6000), +(5154, 6130208, 4130012, 1, 1, 0, 6000), +(5155, 6130209, 4000289, 1, 1, 0, 600000), +(5156, 6130209, 4000021, 1, 1, 0, 50000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(5157, 6130209, 4003005, 1, 1, 0, 200000), +(5158, 6130209, 4020004, 1, 1, 0, 9000), +(5159, 6130209, 4020002, 1, 1, 0, 9000), +(5160, 6130209, 2000002, 1, 1, 0, 20000), +(5161, 6130209, 2000004, 1, 1, 0, 20000), +(5162, 6130209, 4004003, 1, 1, 0, 10000), +(5163, 6130209, 1032014, 1, 1, 0, 1000), +(5164, 6130209, 1040096, 1, 1, 0, 800), +(5165, 6130209, 1060085, 1, 1, 0, 800), +(5166, 6130209, 1092015, 1, 1, 0, 700), +(5167, 6130209, 1332019, 1, 1, 0, 500), +(5168, 6130209, 4006000, 1, 1, 0, 10000), +(5169, 6130209, 2040301, 1, 1, 0, 300), +(5170, 6130209, 1492008, 1, 1, 0, 500), +(5171, 6130209, 2040925, 1, 1, 0, 300), +(5172, 6130209, 2043017, 1, 1, 0, 300), +(5173, 6130209, 2043110, 1, 1, 0, 300), +(5174, 6130209, 4130014, 1, 1, 0, 6000), +(5175, 6130209, 4130017, 1, 1, 0, 6000), +(5176, 6220000, 4000032, 1, 1, 0, 600000), +(5177, 6220000, 4000032, 1, 1, 0, 600000), +(5178, 6220000, 4000032, 1, 1, 0, 600000), +(5179, 6220000, 4000033, 1, 1, 0, 600000), +(5180, 6220000, 4000033, 1, 1, 0, 600000), +(5181, 6220000, 4000033, 1, 1, 0, 600000), +(5182, 6220000, 4000021, 1, 1, 0, 500000), +(5183, 6220000, 4000021, 1, 1, 0, 500000), +(5184, 6220000, 4000021, 1, 1, 0, 500000), +(5185, 6220000, 4010002, 1, 1, 0, 90000), +(5186, 6220000, 4020003, 1, 1, 0, 90000), +(5187, 6220000, 2000002, 1, 1, 0, 200000), +(5188, 6220000, 2000003, 1, 1, 0, 200000), +(5189, 6220000, 2002000, 1, 1, 0, 200000), +(5190, 6220000, 2002001, 1, 1, 0, 200000), +(5191, 6220000, 2040004, 1, 1, 0, 3000), +(5192, 6220000, 2040501, 1, 1, 0, 3000), +(5193, 6220000, 2040516, 1, 1, 0, 3000), +(5194, 6220000, 2040804, 1, 1, 0, 3000), +(5195, 6220000, 2041001, 1, 1, 0, 3000), +(5196, 6220000, 2043301, 1, 1, 0, 3000), +(5197, 6220000, 2044001, 1, 1, 0, 3000), +(5198, 6220000, 2044401, 1, 1, 0, 3000), +(5199, 6220000, 2044601, 1, 1, 0, 3000), +(5200, 6220000, 2044701, 1, 1, 0, 3000), +(5201, 6220000, 2040702, 1, 1, 0, 3000), +(5202, 6220000, 2041008, 1, 1, 0, 3000), +(5203, 6220000, 2044502, 1, 1, 0, 3000), +(5204, 6220000, 2044702, 1, 1, 0, 3000), +(5205, 6220000, 2048002, 1, 1, 0, 3000), +(5206, 6220000, 2060000, 1, 1, 0, 300000), +(5207, 6220000, 2061000, 1, 1, 0, 300000), +(5208, 6220000, 1302012, 1, 1, 0, 7000), +(5209, 6220000, 1312010, 1, 1, 0, 7000), +(5210, 6220000, 1322019, 1, 1, 0, 7000), +(5211, 6220000, 1332018, 1, 1, 0, 5000), +(5212, 6220000, 1372015, 1, 1, 0, 7000), +(5213, 6220000, 1382010, 1, 1, 0, 7000), +(5214, 6220000, 1402012, 1, 1, 0, 7000), +(5215, 6220000, 1412008, 1, 1, 0, 7000), +(5216, 6220000, 1422010, 1, 1, 0, 7000), +(5217, 6220000, 1432007, 1, 1, 0, 5000), +(5218, 6220000, 1442008, 1, 1, 0, 7000), +(5219, 6220000, 1452011, 1, 1, 0, 5000), +(5220, 6220000, 1462009, 1, 1, 0, 5000), +(5221, 6220000, 1472029, 1, 1, 0, 5000), +(5222, 6220000, 1482009, 1, 1, 0, 5000), +(5223, 6220000, 1492009, 1, 1, 0, 5000), +(5224, 6220000, 2040031, 1, 1, 0, 3000), +(5225, 6220000, 2040627, 1, 1, 0, 3000), +(5226, 6220000, 2044312, 1, 1, 0, 3000), +(5227, 6220000, 2044807, 1, 1, 0, 3000), +(5228, 6220001, 4000117, 1, 1, 0, 600000), +(5229, 6220001, 4000118, 1, 1, 0, 600000), +(5230, 6220001, 4000119, 1, 1, 0, 600000), +(5231, 6220001, 4004001, 1, 1, 0, 100000), +(5232, 6220001, 4004000, 1, 1, 0, 100000), +(5233, 6220001, 2000002, 1, 1, 0, 200000), +(5234, 6220001, 2000003, 1, 1, 0, 200000), +(5235, 6220001, 2040516, 1, 1, 0, 3000), +(5236, 6220001, 2040707, 1, 1, 0, 3000), +(5237, 6220001, 2040804, 1, 1, 0, 3000), +(5238, 6220001, 2041016, 1, 1, 0, 3000), +(5239, 6220001, 2043101, 1, 1, 0, 3000), +(5240, 6220001, 2043301, 1, 1, 0, 3000), +(5241, 6220001, 2044401, 1, 1, 0, 3000), +(5242, 6220001, 2044301, 1, 1, 0, 3000), +(5243, 6220001, 2044901, 1, 1, 0, 3000), +(5244, 6220001, 2330003, 1, 1, 0, 5000), +(5245, 6220001, 2070004, 1, 1, 0, 5000), +(5246, 6220001, 1002024, 1, 1, 0, 15000), +(5247, 6220001, 1002095, 1, 1, 0, 15000), +(5248, 6220001, 1002254, 1, 1, 0, 15000), +(5249, 6220001, 1002289, 1, 1, 0, 15000), +(5250, 6220001, 1002285, 1, 1, 0, 15000), +(5251, 6220001, 1002637, 1, 1, 0, 15000), +(5252, 6220001, 1302049, 1, 1, 0, 7000), +(5253, 6220001, 2040425, 1, 1, 0, 3000), +(5254, 6220001, 2040925, 1, 1, 0, 3000), +(5255, 6220001, 2043214, 1, 1, 0, 3000), +(5256, 6220001, 2049000, 1, 1, 0, 1500), +(5257, 6230100, 4000027, 1, 1, 0, 600000), +(5258, 6230100, 2000006, 1, 1, 0, 20000), +(5259, 6230100, 4020008, 1, 1, 0, 9000), +(5260, 6230100, 4010006, 1, 1, 0, 9000), +(5261, 6230100, 2043701, 1, 1, 0, 300), +(5262, 6230100, 2070004, 1, 1, 0, 500), +(5263, 6230100, 1422005, 1, 1, 0, 700), +(5264, 6230100, 1002218, 1, 1, 0, 1500), +(5265, 6230100, 2000005, 1, 1, 0, 20000), +(5266, 6230100, 1002021, 1, 1, 0, 1500), +(5267, 6230100, 1002166, 1, 1, 0, 1500), +(5268, 6230100, 1050047, 1, 1, 0, 700), +(5269, 6230100, 1040095, 1, 1, 0, 800), +(5270, 6230100, 1060084, 1, 1, 0, 800), +(5271, 6230100, 1041087, 1, 1, 0, 800), +(5272, 6230100, 1061086, 1, 1, 0, 800), +(5273, 6230100, 1051045, 1, 1, 0, 700), +(5274, 6230100, 1082061, 1, 1, 0, 1000), +(5275, 6230100, 1050060, 1, 1, 0, 700), +(5276, 6230100, 1082090, 1, 1, 0, 1000), +(5277, 6230100, 1072148, 1, 1, 0, 800), +(5278, 6230100, 1472023, 1, 1, 0, 500), +(5279, 6230100, 1442010, 1, 1, 0, 700), +(5280, 6230100, 1102016, 1, 1, 0, 1000), +(5281, 6230100, 1051054, 1, 1, 0, 700), +(5282, 6230100, 1082106, 1, 1, 0, 1000), +(5283, 6230100, 1072154, 1, 1, 0, 800), +(5284, 6230100, 1041103, 1, 1, 0, 800), +(5285, 6230100, 1061102, 1, 1, 0, 800), +(5286, 6230100, 1082204, 1, 1, 0, 1000), +(5287, 6230100, 2040323, 1, 1, 0, 300), +(5288, 6230100, 2040823, 1, 1, 0, 300), +(5289, 6230100, 2043212, 1, 1, 0, 300), +(5290, 6230100, 2044809, 1, 1, 0, 300), +(5291, 6230100, 2049100, 1, 1, 0, 150), +(5292, 6230100, 4130011, 1, 1, 0, 6000), +(5293, 6230100, 4130012, 1, 1, 0, 6000), +(5294, 6230100, 4130016, 1, 1, 0, 6000), +(5295, 6230200, 4000057, 1, 1, 0, 600000), +(5296, 6230200, 4004004, 1, 1, 0, 10000), +(5297, 6230200, 2000006, 1, 1, 0, 20000), +(5298, 6230200, 2000004, 1, 1, 0, 20000), +(5299, 6230200, 4020000, 1, 1, 0, 9000), +(5300, 6230200, 4010004, 1, 1, 0, 9000), +(5301, 6230200, 4004003, 1, 1, 0, 10000), +(5302, 6230200, 4006000, 1, 1, 0, 10000), +(5303, 6230200, 1002218, 1, 1, 0, 1500), +(5304, 6230200, 1472020, 1, 1, 0, 500), +(5305, 6230200, 1002100, 1, 1, 0, 1500), +(5306, 6230200, 1050055, 1, 1, 0, 700), +(5307, 6230200, 1002268, 1, 1, 0, 1500), +(5308, 6230200, 1082087, 1, 1, 0, 1000), +(5309, 6230200, 1041094, 1, 1, 0, 800), +(5310, 6230200, 1061093, 1, 1, 0, 800), +(5311, 6230200, 1102018, 1, 1, 0, 1000), +(5312, 6230200, 1092011, 1, 1, 0, 700), +(5313, 6230200, 1472025, 1, 1, 0, 500), +(5314, 6230200, 1082088, 1, 1, 0, 1000), +(5315, 6230200, 1332017, 1, 1, 0, 500), +(5316, 6230200, 1472023, 1, 1, 0, 500), +(5317, 6230200, 1051052, 1, 1, 0, 700), +(5318, 6230200, 1072164, 1, 1, 0, 800), +(5319, 6230200, 1072155, 1, 1, 0, 800), +(5320, 6230200, 1072161, 1, 1, 0, 800), +(5321, 6230200, 2040419, 1, 1, 0, 300), +(5322, 6230200, 2040620, 1, 1, 0, 300), +(5323, 6230200, 4130005, 1, 1, 0, 6000), +(5324, 6230200, 4130013, 1, 1, 0, 6000), +(5325, 6230300, 4000129, 1, 1, 0, 600000), +(5326, 6230300, 4020008, 1, 1, 0, 9000), +(5327, 6230300, 4010006, 1, 1, 0, 9000), +(5328, 6230300, 2000002, 1, 1, 0, 20000), +(5329, 6230300, 2000004, 1, 1, 0, 20000), +(5330, 6230300, 4004003, 1, 1, 0, 10000), +(5331, 6230300, 2040301, 1, 1, 0, 300), +(5332, 6230300, 4006000, 1, 1, 0, 10000), +(5333, 6230300, 4004004, 1, 1, 0, 10000), +(5334, 6230300, 1051031, 1, 1, 0, 700), +(5335, 6230300, 1082065, 1, 1, 0, 1000), +(5336, 6230300, 1072125, 1, 1, 0, 800), +(5337, 6230300, 1040089, 1, 1, 0, 800), +(5338, 6230300, 1060078, 1, 1, 0, 800), +(5339, 6230300, 1002101, 1, 1, 0, 1500), +(5340, 6230300, 1002242, 1, 1, 0, 1500), +(5341, 6230300, 1040099, 1, 1, 0, 800), +(5342, 6230300, 1060088, 1, 1, 0, 800), +(5343, 6230300, 1051042, 1, 1, 0, 700), +(5344, 6230300, 1082060, 1, 1, 0, 1000), +(5345, 6230300, 1102024, 1, 1, 0, 1000), +(5346, 6230300, 1050061, 1, 1, 0, 700), +(5347, 6230300, 1432007, 1, 1, 0, 500), +(5348, 6230300, 1082096, 1, 1, 0, 1000), +(5349, 6230300, 1072158, 1, 1, 0, 800), +(5350, 6230300, 1032015, 1, 1, 0, 1000), +(5351, 6230300, 1482008, 1, 1, 0, 500), +(5352, 6230300, 2044801, 1, 1, 0, 300), +(5353, 6230300, 2040318, 1, 1, 0, 300), +(5354, 6230300, 2040622, 1, 1, 0, 300), +(5355, 6230300, 4130001, 1, 1, 0, 6000), +(5356, 6230400, 4000143, 1, 1, 0, 600000), +(5357, 6230400, 2000002, 1, 1, 0, 20000), +(5358, 6230400, 2000004, 1, 1, 0, 20000), +(5359, 6230400, 2043802, 1, 1, 0, 300), +(5360, 6230400, 2040804, 1, 1, 0, 300), +(5361, 6230400, 2002000, 1, 1, 0, 20000), +(5362, 6230400, 4004000, 1, 1, 0, 10000), +(5363, 6230400, 4010000, 1, 1, 0, 9000), +(5364, 6230400, 4020003, 1, 1, 0, 9000), +(5365, 6230400, 1051034, 1, 1, 0, 700), +(5366, 6230400, 1002085, 1, 1, 0, 1500), +(5367, 6230400, 1002210, 1, 1, 0, 1500), +(5368, 6230400, 1051037, 1, 1, 0, 700), +(5369, 6230400, 1040096, 1, 1, 0, 800), +(5370, 6230400, 1060085, 1, 1, 0, 800), +(5371, 6230400, 1372014, 1, 1, 0, 700), +(5372, 6230400, 1082091, 1, 1, 0, 1000), +(5373, 6230400, 1082093, 1, 1, 0, 1000), +(5374, 6230400, 1082086, 1, 1, 0, 1000), +(5375, 6230400, 1072149, 1, 1, 0, 800), +(5376, 6230400, 1472024, 1, 1, 0, 500), +(5377, 6230400, 1102017, 1, 1, 0, 1000), +(5378, 6230400, 1322018, 1, 1, 0, 700), +(5379, 6230400, 1032020, 1, 1, 0, 1000), +(5380, 6230400, 1002281, 1, 1, 0, 1500), +(5381, 6230400, 1002286, 1, 1, 0, 1500), +(5382, 6230400, 1082099, 1, 1, 0, 1000), +(5383, 6230400, 1041098, 1, 1, 0, 800), +(5384, 6230400, 1061097, 1, 1, 0, 800), +(5385, 6230400, 1032014, 1, 1, 0, 1000), +(5386, 6230400, 1492009, 1, 1, 0, 500), +(5387, 6230400, 2044902, 1, 1, 0, 300), +(5388, 6230400, 2040422, 1, 1, 0, 300), +(5389, 6230400, 2040530, 1, 1, 0, 300), +(5390, 6230400, 2040924, 1, 1, 0, 300), +(5391, 6230400, 2044414, 1, 1, 0, 300), +(5392, 6230400, 4130012, 1, 1, 0, 6000), +(5393, 6230400, 4130013, 1, 1, 0, 6000), +(5394, 6230401, 2040515, 1, 1, 0, 300), +(5395, 6230401, 2044410, 1, 1, 0, 300), +(5396, 6230401, 4130009, 1, 1, 0, 6000), +(5397, 6230401, 4130010, 1, 1, 0, 6000), +(5398, 6230401, 4130014, 1, 1, 0, 6000), +(5399, 6230500, 4000144, 1, 1, 0, 600000), +(5400, 6230500, 4000021, 1, 1, 0, 50000), +(5401, 6230500, 2000002, 1, 1, 0, 20000), +(5402, 6230500, 2000004, 1, 1, 0, 20000), +(5403, 6230500, 4010006, 1, 1, 0, 9000), +(5404, 6230500, 4020006, 1, 1, 0, 9000), +(5405, 6230500, 4006000, 1, 1, 0, 10000), +(5406, 6230500, 4004004, 1, 1, 0, 10000), +(5407, 6230500, 2041022, 1, 1, 0, 300), +(5408, 6230500, 2043301, 1, 1, 0, 300), +(5409, 6230500, 1050049, 1, 1, 0, 700), +(5410, 6230500, 1072123, 1, 1, 0, 800), +(5411, 6230500, 1082085, 1, 1, 0, 1000), +(5412, 6230500, 1050056, 1, 1, 0, 700), +(5413, 6230500, 1002084, 1, 1, 0, 1500), +(5414, 6230500, 1002249, 1, 1, 0, 1500), +(5415, 6230500, 1002270, 1, 1, 0, 1500), +(5416, 6230500, 1002244, 1, 1, 0, 1500), +(5417, 6230500, 1040091, 1, 1, 0, 800), +(5418, 6230500, 1060080, 1, 1, 0, 800), +(5419, 6230500, 1072161, 1, 1, 0, 800), +(5420, 6230500, 1072166, 1, 1, 0, 800), +(5421, 6230500, 1082103, 1, 1, 0, 1000), +(5422, 6230500, 1332019, 1, 1, 0, 500), +(5423, 6230500, 1072159, 1, 1, 0, 800), +(5424, 6230500, 1002637, 1, 1, 0, 1500), +(5425, 6230500, 2040620, 1, 1, 0, 300), +(5426, 6230500, 4130001, 1, 1, 0, 6000), +(5427, 6230500, 4130007, 1, 1, 0, 6000), +(5428, 6230600, 4000185, 1, 1, 0, 600000), +(5429, 6230600, 2000006, 1, 1, 0, 20000), +(5430, 6230600, 2000004, 1, 1, 0, 20000), +(5431, 6230600, 4000030, 1, 1, 0, 60000), +(5432, 6230600, 4010006, 1, 1, 0, 9000), +(5433, 6230600, 4010004, 1, 1, 0, 9000), +(5434, 6230600, 4020005, 1, 1, 0, 9000), +(5435, 6230600, 1040094, 1, 1, 0, 800), +(5436, 6230600, 1060083, 1, 1, 0, 800), +(5437, 6230600, 1041085, 1, 1, 0, 800), +(5438, 6230600, 1061083, 1, 1, 0, 800), +(5439, 6230600, 1040091, 1, 1, 0, 800), +(5440, 6230600, 1060080, 1, 1, 0, 800), +(5441, 6230600, 1041091, 1, 1, 0, 800), +(5442, 6230600, 1061090, 1, 1, 0, 800), +(5443, 6230600, 1051043, 1, 1, 0, 700), +(5444, 6230600, 1051046, 1, 1, 0, 700), +(5445, 6230600, 1082095, 1, 1, 0, 1000), +(5446, 6230600, 1082098, 1, 1, 0, 1000), +(5447, 6230600, 1072158, 1, 1, 0, 800), +(5448, 6230600, 1472024, 1, 1, 0, 500), +(5449, 6230600, 4006000, 1, 1, 0, 10000), +(5450, 6230600, 1462008, 1, 1, 0, 500), +(5451, 6230600, 4020007, 1, 1, 0, 9000), +(5452, 6230600, 1002634, 1, 1, 0, 1500), +(5453, 6230600, 2332000, 1, 1, 0, 500), +(5454, 6230600, 2040317, 1, 1, 0, 300), +(5455, 6230600, 2040328, 1, 1, 0, 300), +(5456, 6230600, 2040928, 1, 1, 0, 300), +(5457, 6230600, 2044112, 1, 1, 0, 300), +(5458, 6230600, 2044414, 1, 1, 0, 300), +(5459, 6230600, 4130006, 1, 1, 0, 6000), +(5460, 6230600, 4130011, 1, 1, 0, 6000), +(5461, 6230600, 4130015, 1, 1, 0, 6000), +(5462, 6230601, 4000186, 1, 1, 0, 600000), +(5463, 6230601, 4020008, 1, 1, 0, 9000), +(5464, 6230601, 2041001, 1, 1, 0, 300), +(5465, 6230601, 2000002, 1, 1, 0, 20000), +(5466, 6230601, 2000004, 1, 1, 0, 20000), +(5467, 6230601, 4010003, 1, 1, 0, 9000), +(5468, 6230601, 4010005, 1, 1, 0, 9000), +(5469, 6230601, 4000030, 1, 1, 0, 60000), +(5470, 6230601, 2041004, 1, 1, 0, 300), +(5471, 6230601, 2040401, 1, 1, 0, 300), +(5472, 6230601, 1002242, 1, 1, 0, 1500), +(5473, 6230601, 1002247, 1, 1, 0, 1500), +(5474, 6230601, 1002208, 1, 1, 0, 1500), +(5475, 6230601, 1092017, 1, 1, 0, 700), +(5476, 6230601, 1442010, 1, 1, 0, 700), +(5477, 6230601, 1432007, 1, 1, 0, 500), +(5478, 6230601, 1412008, 1, 1, 0, 700), +(5479, 6230601, 1082109, 1, 1, 0, 1000), +(5480, 6230601, 1041097, 1, 1, 0, 800), +(5481, 6230601, 1061096, 1, 1, 0, 800), +(5482, 6230601, 2040001, 1, 1, 0, 300), +(5483, 6230601, 1061100, 1, 1, 0, 800), +(5484, 6230601, 1041101, 1, 1, 0, 800), +(5485, 6230601, 1072172, 1, 1, 0, 800), +(5486, 6230601, 1372015, 1, 1, 0, 700), +(5487, 6230601, 4020007, 1, 1, 0, 9000), +(5488, 6230601, 1052122, 1, 1, 0, 700), +(5489, 6230601, 2040024, 1, 1, 0, 300), +(5490, 6230601, 2040625, 1, 1, 0, 300), +(5491, 6230601, 4130007, 1, 1, 0, 6000), +(5492, 6230601, 4130015, 1, 1, 0, 6000), +(5493, 6230602, 4000207, 1, 1, 0, 600000), +(5494, 6230602, 2000002, 1, 1, 0, 20000), +(5495, 6230602, 2000004, 1, 1, 0, 20000), +(5496, 6230602, 2043802, 1, 1, 0, 300), +(5497, 6230602, 2040804, 1, 1, 0, 300), +(5498, 6230602, 2002000, 1, 1, 0, 20000), +(5499, 6230602, 4010000, 1, 1, 0, 9000), +(5500, 6230602, 4020003, 1, 1, 0, 9000), +(5501, 6230602, 1082010, 1, 1, 0, 1000), +(5502, 6230602, 1082065, 1, 1, 0, 1000), +(5503, 6230602, 1082082, 1, 1, 0, 1000), +(5504, 6230602, 1082085, 1, 1, 0, 1000), +(5505, 6230602, 1092011, 1, 1, 0, 700), +(5506, 6230602, 1302011, 1, 1, 0, 700), +(5507, 6230602, 1332017, 1, 1, 0, 500), +(5508, 6230602, 1472023, 1, 1, 0, 500), +(5509, 6230602, 1002084, 1, 1, 0, 1500), +(5510, 6230602, 1002246, 1, 1, 0, 1500), +(5511, 6230602, 1002248, 1, 1, 0, 1500), +(5512, 6230602, 1002269, 1, 1, 0, 1500), +(5513, 6230602, 1082103, 1, 1, 0, 1000), +(5514, 6230602, 1082106, 1, 1, 0, 1000), +(5515, 6230602, 1082098, 1, 1, 0, 1000), +(5516, 6230602, 1082096, 1, 1, 0, 1000), +(5517, 6230602, 1482009, 1, 1, 0, 500), +(5518, 6230602, 2330002, 1, 1, 0, 500), +(5519, 6230602, 2040328, 1, 1, 0, 300), +(5520, 6230602, 2040417, 1, 1, 0, 300), +(5521, 6230602, 2040423, 1, 1, 0, 300), +(5522, 6230602, 2040928, 1, 1, 0, 300), +(5523, 6230602, 4130000, 1, 1, 0, 6000), +(5524, 6230602, 4130010, 1, 1, 0, 6000), +(5525, 6230602, 4130016, 1, 1, 0, 6000), +(5526, 6300000, 4000049, 1, 1, 0, 600000), +(5527, 6300000, 4003005, 1, 1, 0, 200000), +(5528, 6300000, 4000021, 1, 1, 0, 50000), +(5529, 6300000, 2000006, 1, 1, 0, 20000), +(5530, 6300000, 4020007, 1, 1, 0, 9000), +(5531, 6300000, 4010000, 1, 1, 0, 9000), +(5532, 6300000, 4004000, 1, 1, 0, 10000), +(5533, 6300000, 1041078, 1, 1, 0, 800), +(5534, 6300000, 1041089, 1, 1, 0, 800), +(5535, 6300000, 1002022, 1, 1, 0, 1500), +(5536, 6300000, 1032019, 1, 1, 0, 1000), +(5537, 6300000, 1051047, 1, 1, 0, 700), +(5538, 6300000, 1040099, 1, 1, 0, 800), +(5539, 6300000, 1060088, 1, 1, 0, 800), +(5540, 6300000, 1432006, 1, 1, 0, 500), +(5541, 6300000, 1462008, 1, 1, 0, 500), +(5542, 6300000, 1472024, 1, 1, 0, 500), +(5543, 6300000, 1102022, 1, 1, 0, 1000), +(5544, 6300000, 1382007, 1, 1, 0, 700), +(5545, 6300000, 1472026, 1, 1, 0, 500), +(5546, 6300000, 1082107, 1, 1, 0, 1000), +(5547, 6300000, 1040104, 1, 1, 0, 800), +(5548, 6300000, 1060092, 1, 1, 0, 800), +(5549, 6300000, 1072157, 1, 1, 0, 800), +(5550, 6300000, 1032020, 1, 1, 0, 1000), +(5551, 6300000, 1051062, 1, 1, 0, 700), +(5552, 6300005, 4000176, 1, 1, 0, 600000), +(5553, 6300005, 1032014, 1, 1, 0, 10000), +(5554, 6300005, 1102024, 1, 1, 0, 10000), +(5555, 6300005, 2070006, 1, 1, 0, 2000), +(5556, 6300005, 2043101, 1, 1, 0, 3000), +(5557, 6300005, 2043201, 1, 1, 0, 3000), +(5558, 6300005, 2043301, 1, 1, 0, 3000), +(5559, 6300005, 2043701, 1, 1, 0, 3000), +(5560, 6300005, 2043801, 1, 1, 0, 3000), +(5561, 6300005, 2044001, 1, 1, 0, 3000), +(5562, 6300005, 2044101, 1, 1, 0, 3000), +(5563, 6300005, 2044201, 1, 1, 0, 3000), +(5564, 6300005, 2044301, 1, 1, 0, 3000), +(5565, 6300005, 2044401, 1, 1, 0, 3000), +(5566, 6300005, 2044501, 1, 1, 0, 3000), +(5567, 6300005, 2044601, 1, 1, 0, 3000), +(5568, 6300005, 2044701, 1, 1, 0, 3000), +(5569, 6300005, 2048001, 1, 1, 0, 3000), +(5570, 6300005, 2048004, 1, 1, 0, 3000), +(5571, 6300005, 2043001, 1, 1, 0, 3000), +(5572, 6300005, 1092010, 1, 1, 0, 7000), +(5573, 6300005, 2332000, 1, 1, 0, 5000), +(5574, 6300005, 2044801, 1, 1, 0, 3000), +(5575, 6300005, 2044901, 1, 1, 0, 3000), +(5576, 6300005, 2040422, 1, 1, 0, 3000), +(5577, 6300005, 2043019, 1, 1, 0, 3000), +(5578, 6300100, 4000130, 1, 1, 0, 600000), +(5579, 6300100, 2041022, 1, 1, 0, 300), +(5580, 6300100, 4004004, 1, 1, 0, 10000), +(5581, 6300100, 2000001, 1, 1, 0, 20000), +(5582, 6300100, 2000004, 1, 1, 0, 20000), +(5583, 6300100, 4020003, 1, 1, 0, 9000), +(5584, 6300100, 4010006, 1, 1, 0, 9000), +(5585, 6300100, 4004001, 1, 1, 0, 10000), +(5586, 6300100, 1040098, 1, 1, 0, 800), +(5587, 6300100, 1060087, 1, 1, 0, 800), +(5588, 6300100, 1072139, 1, 1, 0, 800), +(5589, 6300100, 1041093, 1, 1, 0, 800), +(5590, 6300100, 1061092, 1, 1, 0, 800), +(5591, 6300100, 1072158, 1, 1, 0, 800), +(5592, 6300100, 1082097, 1, 1, 0, 1000), +(5593, 6300100, 1051065, 1, 1, 0, 700), +(5594, 6300100, 1061097, 1, 1, 0, 800), +(5595, 6300100, 1041098, 1, 1, 0, 800), +(5596, 6300100, 1082108, 1, 1, 0, 1000), +(5597, 6300100, 1040106, 1, 1, 0, 800), +(5598, 6300100, 1060094, 1, 1, 0, 800), +(5599, 6300100, 1472027, 1, 1, 0, 500), +(5600, 6300100, 1452010, 1, 1, 0, 500), +(5601, 6300100, 1442008, 1, 1, 0, 700), +(5602, 6300100, 1072172, 1, 1, 0, 800), +(5603, 6300100, 1082122, 1, 1, 0, 1000), +(5604, 6300100, 1082109, 1, 1, 0, 1000), +(5605, 6300100, 1050082, 1, 1, 0, 700), +(5606, 6300100, 1492010, 1, 1, 0, 500), +(5607, 6300100, 2040421, 1, 1, 0, 300), +(5608, 6300100, 2040825, 1, 1, 0, 300), +(5609, 6300100, 4130003, 1, 1, 0, 6000), +(5610, 6300100, 4130004, 1, 1, 0, 6000), +(5611, 6400000, 4000056, 1, 1, 0, 600000), +(5612, 6400000, 4003004, 1, 1, 0, 200000), +(5613, 6400000, 2041022, 1, 1, 0, 300), +(5614, 6400000, 4004004, 1, 1, 0, 10000), +(5615, 6400000, 4000021, 1, 1, 0, 50000), +(5616, 6400000, 2000002, 1, 1, 0, 20000), +(5617, 6400000, 2000004, 1, 1, 0, 20000), +(5618, 6400000, 4020003, 1, 1, 0, 9000), +(5619, 6400000, 4010006, 1, 1, 0, 9000), +(5620, 6400000, 4003002, 1, 1, 0, 200000), +(5621, 6400000, 4004001, 1, 1, 0, 10000), +(5622, 6400000, 1082084, 1, 1, 0, 1000), +(5623, 6400000, 1072142, 1, 1, 0, 800), +(5624, 6400000, 1442005, 1, 1, 0, 700), +(5625, 6400000, 1472019, 1, 1, 0, 500), +(5626, 6400000, 1051045, 1, 1, 0, 700), +(5627, 6400000, 1002245, 1, 1, 0, 1500), +(5628, 6400000, 1050060, 1, 1, 0, 700), +(5629, 6400000, 1040092, 1, 1, 0, 800), +(5630, 6400000, 1060081, 1, 1, 0, 800), +(5631, 6400000, 1041096, 1, 1, 0, 800), +(5632, 6400000, 1061095, 1, 1, 0, 800), +(5633, 6400000, 1002030, 1, 1, 0, 1500), +(5634, 6400000, 1032015, 1, 1, 0, 1000), +(5635, 6400000, 1061096, 1, 1, 0, 800), +(5636, 6400000, 1041097, 1, 1, 0, 800), +(5637, 6400000, 1072166, 1, 1, 0, 800), +(5638, 6400000, 1082097, 1, 1, 0, 1000), +(5639, 6400000, 1002271, 1, 1, 0, 1500), +(5640, 6400000, 1002338, 1, 1, 0, 1500), +(5641, 6400100, 4000131, 1, 1, 0, 600000), +(5642, 6400100, 2000002, 1, 1, 0, 20000), +(5643, 6400100, 2000004, 1, 1, 0, 20000), +(5644, 6400100, 4020003, 1, 1, 0, 9000), +(5645, 6400100, 4010006, 1, 1, 0, 9000), +(5646, 6400100, 4004004, 1, 1, 0, 10000), +(5647, 6400100, 2002008, 1, 1, 0, 20000), +(5648, 6400100, 2044001, 1, 1, 0, 300), +(5649, 6400100, 2041013, 1, 1, 0, 300), +(5650, 6400100, 1051046, 1, 1, 0, 700), +(5651, 6400100, 1002268, 1, 1, 0, 1500), +(5652, 6400100, 1072149, 1, 1, 0, 800), +(5653, 6400100, 1002282, 1, 1, 0, 1500), +(5654, 6400100, 1041099, 1, 1, 0, 800), +(5655, 6400100, 1061098, 1, 1, 0, 800), +(5656, 6400100, 1050061, 1, 1, 0, 700), +(5657, 6400100, 1082098, 1, 1, 0, 1000), +(5658, 6400100, 1092017, 1, 1, 0, 700), +(5659, 6400100, 1472029, 1, 1, 0, 500), +(5660, 6400100, 1002289, 1, 1, 0, 1500), +(5661, 6400100, 1002252, 1, 1, 0, 1500), +(5662, 6400100, 1040106, 1, 1, 0, 800), +(5663, 6400100, 1060094, 1, 1, 0, 800), +(5664, 6400100, 1412008, 1, 1, 0, 700), +(5665, 6400100, 1032022, 1, 1, 0, 1000), +(5666, 6400100, 1051058, 1, 1, 0, 700), +(5667, 6400100, 1050077, 1, 1, 0, 700), +(5668, 6400100, 1072173, 1, 1, 0, 800), +(5669, 6400100, 1082116, 1, 1, 0, 1000), +(5670, 6400100, 1082207, 1, 1, 0, 1000), +(5671, 6400100, 2040321, 1, 1, 0, 300), +(5672, 6400100, 2040534, 1, 1, 0, 300), +(5673, 6400100, 2043114, 1, 1, 0, 300), +(5674, 6400100, 4130000, 1, 1, 0, 6000), +(5675, 6400100, 4130002, 1, 1, 0, 6000), +(5676, 6400100, 4130013, 1, 1, 0, 6000), +(5677, 7090000, 4000411, 1, 1, 0, 600000), +(5678, 7110300, 2000006, 1, 1, 0, 20000), +(5679, 7110300, 4020001, 1, 1, 0, 9000), +(5680, 7110300, 4010003, 1, 1, 0, 9000), +(5681, 7110300, 2043701, 1, 1, 0, 300), +(5682, 7110300, 2044701, 1, 1, 0, 300), +(5683, 7110300, 4004000, 1, 1, 0, 10000), +(5684, 7110300, 4006000, 1, 1, 0, 10000), +(5685, 7110300, 2040302, 1, 1, 0, 300), +(5686, 7110300, 1050055, 1, 1, 0, 700), +(5687, 7110300, 1041094, 1, 1, 0, 800), +(5688, 7110300, 1061093, 1, 1, 0, 800), +(5689, 7110300, 1050069, 1, 1, 0, 700), +(5690, 7110300, 1040102, 1, 1, 0, 800), +(5691, 7110300, 1060090, 1, 1, 0, 800), +(5692, 7110300, 1082100, 1, 1, 0, 1000), +(5693, 7110300, 1041102, 1, 1, 0, 800), +(5694, 7110300, 1061101, 1, 1, 0, 800), +(5695, 7110300, 1002254, 1, 1, 0, 1500), +(5696, 7110300, 1002288, 1, 1, 0, 1500), +(5697, 7110300, 1092015, 1, 1, 0, 700), +(5698, 7110300, 1332018, 1, 1, 0, 500), +(5699, 7110300, 1402012, 1, 1, 0, 700), +(5700, 7110300, 1472029, 1, 1, 0, 500), +(5701, 7110300, 1322020, 1, 1, 0, 700), +(5702, 7110300, 1002273, 1, 1, 0, 1500), +(5703, 7110300, 1002339, 1, 1, 0, 1500), +(5704, 7110300, 1051066, 1, 1, 0, 700), +(5705, 7110300, 1041105, 1, 1, 0, 800), +(5706, 7110300, 1061104, 1, 1, 0, 800), +(5707, 7110300, 4000362, 1, 1, 0, 600000), +(5708, 7110300, 1082204, 1, 1, 0, 1000), +(5709, 7110300, 2330003, 1, 1, 0, 500), +(5710, 7110300, 2040026, 1, 1, 0, 300), +(5711, 7110300, 2040319, 1, 1, 0, 300), +(5712, 7110300, 4130009, 1, 1, 0, 6000), +(5713, 7110300, 4130015, 1, 1, 0, 6000), +(5714, 7110301, 2000006, 1, 1, 0, 20000), +(5715, 7110301, 2000004, 1, 1, 0, 20000), +(5716, 7110301, 4010004, 1, 1, 0, 9000), +(5717, 7110301, 4020006, 1, 1, 0, 9000), +(5718, 7110301, 4004003, 1, 1, 0, 10000), +(5719, 7110301, 2044601, 1, 1, 0, 300), +(5720, 7110301, 1051044, 1, 1, 0, 700), +(5721, 7110301, 1002029, 1, 1, 0, 1500), +(5722, 7110301, 1002248, 1, 1, 0, 1500), +(5723, 7110301, 1051041, 1, 1, 0, 700), +(5724, 7110301, 1072147, 1, 1, 0, 800), +(5725, 7110301, 1072150, 1, 1, 0, 800), +(5726, 7110301, 1072145, 1, 1, 0, 800), +(5727, 7110301, 1051053, 1, 1, 0, 700), +(5728, 7110301, 1002094, 1, 1, 0, 1500), +(5729, 7110301, 1002253, 1, 1, 0, 1500), +(5730, 7110301, 1051062, 1, 1, 0, 700), +(5731, 7110301, 1040105, 1, 1, 0, 800), +(5732, 7110301, 1060093, 1, 1, 0, 800), +(5733, 7110301, 1050063, 1, 1, 0, 700), +(5734, 7110301, 1402012, 1, 1, 0, 700), +(5735, 7110301, 1040108, 1, 1, 0, 800), +(5736, 7110301, 1060097, 1, 1, 0, 800), +(5737, 7110301, 1072210, 1, 1, 0, 800), +(5738, 7110301, 1002275, 1, 1, 0, 1500), +(5739, 7110301, 1072177, 1, 1, 0, 800), +(5740, 7110301, 4000361, 1, 1, 0, 600000), +(5741, 7110301, 1482010, 1, 1, 0, 500), +(5742, 7110301, 2044801, 1, 1, 0, 300), +(5743, 7110301, 2040025, 1, 1, 0, 300), +(5744, 7110301, 2040621, 1, 1, 0, 300), +(5745, 7110301, 2040933, 1, 1, 0, 300), +(5746, 7110301, 4130004, 1, 1, 0, 6000), +(5747, 7110301, 4130005, 1, 1, 0, 6000), +(5748, 7110301, 4130007, 1, 1, 0, 6000), +(5749, 7130000, 4000074, 1, 1, 0, 600000), +(5750, 7130000, 2050004, 1, 1, 0, 50000), +(5751, 7130000, 2000006, 1, 1, 0, 20000), +(5752, 7130000, 2000004, 1, 1, 0, 20000), +(5753, 7130000, 4010004, 1, 1, 0, 9000), +(5754, 7130000, 4020006, 1, 1, 0, 9000), +(5755, 7130000, 4006001, 1, 1, 0, 10000), +(5756, 7130000, 4004003, 1, 1, 0, 10000), +(5757, 7130000, 2044601, 1, 1, 0, 300), +(5758, 7130000, 1051044, 1, 1, 0, 700), +(5759, 7130000, 1002029, 1, 1, 0, 1500), +(5760, 7130000, 1002248, 1, 1, 0, 1500), +(5761, 7130000, 1051041, 1, 1, 0, 700), +(5762, 7130000, 1072147, 1, 1, 0, 800), +(5763, 7130000, 1072150, 1, 1, 0, 800), +(5764, 7130000, 1072145, 1, 1, 0, 800), +(5765, 7130000, 1051053, 1, 1, 0, 700), +(5766, 7130000, 1002094, 1, 1, 0, 1500), +(5767, 7130000, 1002253, 1, 1, 0, 1500), +(5768, 7130000, 1051062, 1, 1, 0, 700), +(5769, 7130000, 1040105, 1, 1, 0, 800), +(5770, 7130000, 1060093, 1, 1, 0, 800), +(5771, 7130000, 1050063, 1, 1, 0, 700), +(5772, 7130000, 1402012, 1, 1, 0, 700), +(5773, 7130000, 1040108, 1, 1, 0, 800), +(5774, 7130000, 1060097, 1, 1, 0, 800), +(5775, 7130000, 1072210, 1, 1, 0, 800), +(5776, 7130000, 1002275, 1, 1, 0, 1500), +(5777, 7130000, 1072177, 1, 1, 0, 800), +(5778, 7130000, 4161021, 1, 1, 0, 6000), +(5779, 7130000, 1072312, 1, 1, 0, 800), +(5780, 7130000, 2044901, 1, 1, 0, 300), +(5781, 7130000, 2040419, 1, 1, 0, 300), +(5782, 7130000, 2040427, 1, 1, 0, 300), +(5783, 7130000, 4130008, 1, 1, 0, 6000), +(5784, 7130000, 4130010, 1, 1, 0, 6000), +(5785, 7130000, 4130011, 1, 1, 0, 6000), +(5786, 7130001, 4000079, 1, 1, 0, 600000), +(5787, 7130001, 2050000, 1, 1, 0, 50000), +(5788, 7130001, 2000006, 1, 1, 0, 20000), +(5789, 7130001, 2000004, 1, 1, 0, 20000), +(5790, 7130001, 4020007, 1, 1, 0, 9000), +(5791, 7130001, 4010004, 1, 1, 0, 9000), +(5792, 7130001, 2044301, 1, 1, 0, 300), +(5793, 7130001, 2041021, 1, 1, 0, 300), +(5794, 7130001, 1312009, 1, 1, 0, 700), +(5795, 7130001, 1332015, 1, 1, 0, 500), +(5796, 7130001, 1402011, 1, 1, 0, 700), +(5797, 7130001, 1002246, 1, 1, 0, 1500), +(5798, 7130001, 1032014, 1, 1, 0, 1000), +(5799, 7130001, 1041095, 1, 1, 0, 800), +(5800, 7130001, 1061094, 1, 1, 0, 800), +(5801, 7130001, 1072146, 1, 1, 0, 800), +(5802, 7130001, 1051054, 1, 1, 0, 700), +(5803, 7130001, 1372015, 1, 1, 0, 700), +(5804, 7130001, 1050070, 1, 1, 0, 700), +(5805, 7130001, 1050069, 1, 1, 0, 700), +(5806, 7130001, 1072165, 1, 1, 0, 800), +(5807, 7130001, 1082105, 1, 1, 0, 1000), +(5808, 7130001, 1082108, 1, 1, 0, 1000), +(5809, 7130001, 1041102, 1, 1, 0, 800), +(5810, 7130001, 1061101, 1, 1, 0, 800), +(5811, 7130001, 1002095, 1, 1, 0, 1500), +(5812, 7130001, 1032016, 1, 1, 0, 1000), +(5813, 7130001, 1372016, 1, 1, 0, 700), +(5814, 7130001, 1492009, 1, 1, 0, 500), +(5815, 7130001, 2040618, 1, 1, 0, 300), +(5816, 7130001, 4130002, 1, 1, 0, 6000), +(5817, 7130001, 4130003, 1, 1, 0, 6000), +(5818, 7130002, 4000236, 1, 1, 0, 600000), +(5819, 7130002, 2000006, 1, 1, 0, 20000), +(5820, 7130002, 2000004, 1, 1, 0, 20000), +(5821, 7130002, 4010000, 1, 1, 0, 9000), +(5822, 7130002, 4020001, 1, 1, 0, 9000), +(5823, 7130002, 2040902, 1, 1, 0, 300), +(5824, 7130002, 2040801, 1, 1, 0, 300), +(5825, 7130002, 4006000, 1, 1, 0, 10000), +(5826, 7130002, 4004001, 1, 1, 0, 10000), +(5827, 7130002, 1040103, 1, 1, 0, 800), +(5828, 7130002, 1060091, 1, 1, 0, 800), +(5829, 7130002, 1082100, 1, 1, 0, 1000), +(5830, 7130002, 1072184, 1, 1, 0, 800), +(5831, 7130002, 1002285, 1, 1, 0, 1500), +(5832, 7130002, 1302012, 1, 1, 0, 700), +(5833, 7130002, 1332019, 1, 1, 0, 500), +(5834, 7130002, 1382007, 1, 1, 0, 700), +(5835, 7130002, 1092011, 1, 1, 0, 700), +(5836, 7130002, 1002640, 1, 1, 0, 1500), +(5837, 7130002, 2330003, 1, 1, 0, 500), +(5838, 7130002, 2040625, 1, 1, 0, 300), +(5839, 7130002, 2044014, 1, 1, 0, 300), +(5840, 7130002, 4130000, 1, 1, 0, 6000), +(5841, 7130002, 4130005, 1, 1, 0, 6000), +(5842, 7130003, 4000237, 1, 1, 0, 600000), +(5843, 7130003, 2000006, 1, 1, 0, 20000), +(5844, 7130003, 2000004, 1, 1, 0, 20000), +(5845, 7130003, 4010003, 1, 1, 0, 9000), +(5846, 7130003, 4020003, 1, 1, 0, 9000), +(5847, 7130003, 2044101, 1, 1, 0, 300), +(5848, 7130003, 2041002, 1, 1, 0, 300), +(5849, 7130003, 4006000, 1, 1, 0, 10000), +(5850, 7130003, 4004003, 1, 1, 0, 10000), +(5851, 7130003, 2070005, 1, 1, 0, 400), +(5852, 7130003, 1072156, 1, 1, 0, 800), +(5853, 7130003, 1002253, 1, 1, 0, 1500), +(5854, 7130003, 1051063, 1, 1, 0, 700), +(5855, 7130003, 1082096, 1, 1, 0, 1000), +(5856, 7130003, 1092016, 1, 1, 0, 700), +(5857, 7130003, 1432007, 1, 1, 0, 500), +(5858, 7130003, 1372015, 1, 1, 0, 700), +(5859, 7130003, 1412008, 1, 1, 0, 700), +(5860, 7130003, 1002640, 1, 1, 0, 1500), +(5861, 7130003, 2040423, 1, 1, 0, 300), +(5862, 7130003, 4130001, 1, 1, 0, 6000), +(5863, 7130003, 4130010, 1, 1, 0, 6000), +(5864, 7130003, 4130013, 1, 1, 0, 6000), +(5865, 7130004, 4000231, 1, 1, 0, 600000), +(5866, 7130004, 2000006, 1, 1, 0, 20000), +(5867, 7130004, 2000004, 1, 1, 0, 20000), +(5868, 7130004, 4010004, 1, 1, 0, 9000), +(5869, 7130004, 4020004, 1, 1, 0, 9000), +(5870, 7130004, 2041008, 1, 1, 0, 300), +(5871, 7130004, 2044401, 1, 1, 0, 300), +(5872, 7130004, 4006001, 1, 1, 0, 10000), +(5873, 7130004, 4004004, 1, 1, 0, 10000), +(5874, 7130004, 1002338, 1, 1, 0, 1500), +(5875, 7130004, 1050074, 1, 1, 0, 700), +(5876, 7130004, 1082107, 1, 1, 0, 1000), +(5877, 7130004, 1072161, 1, 1, 0, 800), +(5878, 7130004, 1102029, 1, 1, 0, 1000), +(5879, 7130004, 1452010, 1, 1, 0, 500), +(5880, 7130004, 1402012, 1, 1, 0, 700), +(5881, 7130004, 1322028, 1, 1, 0, 700), +(5882, 7130004, 1032022, 1, 1, 0, 1000), +(5883, 7130004, 1072312, 1, 1, 0, 800), +(5884, 7130004, 2330003, 1, 1, 0, 500), +(5885, 7130010, 4000147, 1, 1, 0, 600000), +(5886, 7130010, 2050004, 1, 1, 0, 50000), +(5887, 7130010, 2000006, 1, 1, 0, 20000), +(5888, 7130010, 2000002, 1, 1, 0, 20000), +(5889, 7130010, 2002005, 1, 1, 0, 20000), +(5890, 7130010, 2020015, 1, 1, 0, 20000), +(5891, 7130010, 4020008, 1, 1, 0, 9000), +(5892, 7130010, 4020005, 1, 1, 0, 9000), +(5893, 7130010, 4004002, 1, 1, 0, 10000), +(5894, 7130010, 4006001, 1, 1, 0, 10000), +(5895, 7130010, 2040601, 1, 1, 0, 300), +(5896, 7130010, 2041016, 1, 1, 0, 300), +(5897, 7130010, 1302016, 1, 1, 0, 700), +(5898, 7130010, 1051065, 1, 1, 0, 700), +(5899, 7130010, 1072154, 1, 1, 0, 800), +(5900, 7130010, 1041101, 1, 1, 0, 800), +(5901, 7130010, 1061100, 1, 1, 0, 800), +(5902, 7130010, 1452010, 1, 1, 0, 500), +(5903, 7130010, 1102030, 1, 1, 0, 1000), +(5904, 7130010, 1050073, 1, 1, 0, 700), +(5905, 7130010, 1412009, 1, 1, 0, 700), +(5906, 7130010, 1332022, 1, 1, 0, 500), +(5907, 7130010, 1082123, 1, 1, 0, 1000), +(5908, 7130010, 1082118, 1, 1, 0, 1000), +(5909, 7130010, 1051078, 1, 1, 0, 700), +(5910, 7130010, 1072184, 1, 1, 0, 800), +(5911, 7130010, 1002328, 1, 1, 0, 1500), +(5912, 7130010, 1051077, 1, 1, 0, 700), +(5913, 7130010, 1050088, 1, 1, 0, 700), +(5914, 7130010, 1072196, 1, 1, 0, 800), +(5915, 7130010, 1072209, 1, 1, 0, 800), +(5916, 7130010, 1082142, 1, 1, 0, 1000), +(5917, 7130010, 1372016, 1, 1, 0, 700), +(5918, 7130010, 1082207, 1, 1, 0, 1000), +(5919, 7130010, 2040025, 1, 1, 0, 300), +(5920, 7130010, 2040418, 1, 1, 0, 300), +(5921, 7130010, 2040923, 1, 1, 0, 300), +(5922, 7130010, 2040928, 1, 1, 0, 300), +(5923, 7130010, 2044412, 1, 1, 0, 300), +(5924, 7130010, 4130002, 1, 1, 0, 6000), +(5925, 7130010, 4130004, 1, 1, 0, 6000), +(5926, 7130010, 4130006, 1, 1, 0, 6000), +(5927, 7130020, 4000179, 1, 1, 0, 600000), +(5928, 7130020, 2050004, 1, 1, 0, 50000), +(5929, 7130020, 2000006, 1, 1, 0, 20000), +(5930, 7130020, 2000002, 1, 1, 0, 20000), +(5931, 7130020, 2002003, 1, 1, 0, 20000), +(5932, 7130020, 2020015, 1, 1, 0, 20000), +(5933, 7130020, 2022040, 1, 1, 0, 20000), +(5934, 7130020, 1072164, 1, 1, 0, 800), +(5935, 7130020, 4020008, 1, 1, 0, 9000), +(5936, 7130020, 4010001, 1, 1, 0, 9000), +(5937, 7130020, 4004003, 1, 1, 0, 10000), +(5938, 7130020, 4006001, 1, 1, 0, 10000), +(5939, 7130020, 1002329, 1, 1, 0, 1500), +(5940, 7130020, 2044701, 1, 1, 0, 300), +(5941, 7130020, 1002287, 1, 1, 0, 1500), +(5942, 7130020, 1041101, 1, 1, 0, 800), +(5943, 7130020, 1061100, 1, 1, 0, 800), +(5944, 7130020, 1051095, 1, 1, 0, 700), +(5945, 7130020, 1051078, 1, 1, 0, 700), +(5946, 7130020, 1072152, 1, 1, 0, 800), +(5947, 7130020, 2048001, 1, 1, 0, 300), +(5948, 7130020, 1422012, 1, 1, 0, 700), +(5949, 7130020, 1002323, 1, 1, 0, 1500), +(5950, 7130020, 1102032, 1, 1, 0, 1000), +(5951, 7130020, 1072194, 1, 1, 0, 800), +(5952, 7130020, 1102035, 1, 1, 0, 1000), +(5953, 7130020, 1072312, 1, 1, 0, 800), +(5954, 7130020, 2044901, 1, 1, 0, 300), +(5955, 7130020, 2040324, 1, 1, 0, 300), +(5956, 7130020, 2040421, 1, 1, 0, 300), +(5957, 7130020, 4130010, 1, 1, 0, 6000), +(5958, 7130020, 4130013, 1, 1, 0, 6000), +(5959, 7130100, 2000006, 1, 1, 0, 20000), +(5960, 7130100, 2000004, 1, 1, 0, 20000), +(5961, 7130100, 4010006, 1, 1, 0, 9000), +(5962, 7130100, 4000028, 1, 1, 0, 600000), +(5963, 7130100, 2070005, 1, 1, 0, 400), +(5964, 7130100, 2043101, 1, 1, 0, 300), +(5965, 7130100, 4006000, 1, 1, 0, 10000), +(5966, 7130100, 1041093, 1, 1, 0, 800), +(5967, 7130100, 1061092, 1, 1, 0, 800), +(5968, 7130100, 1040100, 1, 1, 0, 800), +(5969, 7130100, 1060089, 1, 1, 0, 800), +(5970, 7130100, 1050067, 1, 1, 0, 700), +(5971, 7130100, 1051055, 1, 1, 0, 700), +(5972, 7130100, 1002095, 1, 1, 0, 1500), +(5973, 7130100, 1002287, 1, 1, 0, 1500), +(5974, 7130100, 1002283, 1, 1, 0, 1500), +(5975, 7130100, 1051064, 1, 1, 0, 700), +(5976, 7130100, 1072163, 1, 1, 0, 800), +(5977, 7130100, 1322019, 1, 1, 0, 700), +(5978, 7130100, 1452009, 1, 1, 0, 500), +(5979, 7130100, 1472026, 1, 1, 0, 500), +(5980, 7130100, 1102027, 1, 1, 0, 1000), +(5981, 7130100, 1082115, 1, 1, 0, 1000), +(5982, 7130100, 1072184, 1, 1, 0, 800), +(5983, 7130100, 1002272, 1, 1, 0, 1500), +(5984, 7130100, 1082118, 1, 1, 0, 1000), +(5985, 7130100, 1002637, 1, 1, 0, 1500), +(5986, 7130100, 2040421, 1, 1, 0, 300), +(5987, 7130100, 2049000, 1, 1, 0, 150), +(5988, 7130100, 4130008, 1, 1, 0, 6000), +(5989, 7130100, 4130014, 1, 1, 0, 6000), +(5990, 7130101, 2000005, 1, 1, 0, 20000), +(5991, 7130101, 4020008, 1, 1, 0, 9000), +(5992, 7130101, 4010003, 1, 1, 0, 9000), +(5993, 7130101, 2044101, 1, 1, 0, 300), +(5994, 7130101, 4000046, 1, 1, 0, 600000), +(5995, 7130101, 4006001, 1, 1, 0, 10000), +(5996, 7130101, 1051047, 1, 1, 0, 700), +(5997, 7130101, 1041091, 1, 1, 0, 800), +(5998, 7130101, 1061090, 1, 1, 0, 800), +(5999, 7130101, 1412008, 1, 1, 0, 700), +(6000, 7130101, 1452011, 1, 1, 0, 500), +(6001, 7130101, 1422010, 1, 1, 0, 700), +(6002, 7130101, 1082100, 1, 1, 0, 1000), +(6003, 7130101, 1072167, 1, 1, 0, 800), +(6004, 7130101, 1041103, 1, 1, 0, 800), +(6005, 7130101, 1061102, 1, 1, 0, 800), +(6006, 7130101, 1092016, 1, 1, 0, 700), +(6007, 7130101, 1051063, 1, 1, 0, 700), +(6008, 7130101, 1002284, 1, 1, 0, 1500), +(6009, 7130101, 1082104, 1, 1, 0, 1000), +(6010, 7130101, 1102028, 1, 1, 0, 1000), +(6011, 7130101, 1382010, 1, 1, 0, 700), +(6012, 7130101, 1051056, 1, 1, 0, 700), +(6013, 7130101, 1002327, 1, 1, 0, 1500), +(6014, 7130101, 1050077, 1, 1, 0, 700), +(6015, 7130101, 1072211, 1, 1, 0, 800), +(6016, 7130101, 1482009, 1, 1, 0, 500), +(6017, 7130101, 2044114, 1, 1, 0, 300), +(6018, 7130101, 4130008, 1, 1, 0, 6000), +(6019, 7130101, 4130012, 1, 1, 0, 6000), +(6020, 7130101, 4130014, 1, 1, 0, 6000), +(6021, 7130102, 4000050, 1, 1, 0, 600000), +(6022, 7130102, 2041020, 1, 1, 0, 300), +(6023, 7130102, 2000006, 1, 1, 0, 20000), +(6024, 7130102, 2000004, 1, 1, 0, 20000), +(6025, 7130102, 4020008, 1, 1, 0, 9000), +(6026, 7130102, 4010001, 1, 1, 0, 9000), +(6027, 7130102, 2043801, 1, 1, 0, 300), +(6028, 7130102, 2044702, 1, 1, 0, 300), +(6029, 7130102, 2070010, 1, 1, 0, 500), +(6030, 7130102, 4004002, 1, 1, 0, 10000), +(6031, 7130102, 2041005, 1, 1, 0, 300), +(6032, 7130102, 1002185, 1, 1, 0, 1500), +(6033, 7130102, 1041081, 1, 1, 0, 800), +(6034, 7130102, 1061080, 1, 1, 0, 800), +(6035, 7130102, 1050047, 1, 1, 0, 700), +(6036, 7130102, 1002028, 1, 1, 0, 1500), +(6037, 7130102, 1072124, 1, 1, 0, 800), +(6038, 7130102, 1072128, 1, 1, 0, 800), +(6039, 7130102, 1082081, 1, 1, 0, 1000), +(6040, 7130102, 1082010, 1, 1, 0, 1000), +(6041, 7130102, 1432006, 1, 1, 0, 500), +(6042, 7130102, 1472022, 1, 1, 0, 500), +(6043, 7130102, 1082091, 1, 1, 0, 1000), +(6044, 7130102, 1442010, 1, 1, 0, 700), +(6045, 7130102, 1102023, 1, 1, 0, 1000), +(6046, 7130102, 1072137, 1, 1, 0, 800), +(6047, 7130102, 1050068, 1, 1, 0, 700), +(6048, 7130102, 1002030, 1, 1, 0, 1500), +(6049, 7130102, 1002282, 1, 1, 0, 1500), +(6050, 7130102, 1050063, 1, 1, 0, 700), +(6051, 7130102, 1492008, 1, 1, 0, 500), +(6052, 7130102, 2044901, 1, 1, 0, 300), +(6053, 7130102, 2040625, 1, 1, 0, 300), +(6054, 7130102, 4130010, 1, 1, 0, 6000), +(6055, 7130102, 4130017, 1, 1, 0, 6000), +(6056, 7130102, 4000049, 1, 1, 0, 600000), +(6057, 7130102, 4130003, 1, 1, 0, 6000), +(6058, 7130102, 4003005, 1, 1, 0, 200000), +(6059, 7130102, 2041023, 1, 1, 0, 300), +(6060, 7130102, 4000021, 1, 1, 0, 50000), +(6061, 7130102, 4020005, 1, 1, 0, 9000), +(6062, 7130102, 4010005, 1, 1, 0, 9000), +(6063, 7130102, 1050069, 1, 1, 0, 700), +(6064, 7130102, 1051054, 1, 1, 0, 700), +(6065, 7130102, 2044101, 1, 1, 0, 300), +(6066, 7130102, 1402012, 1, 1, 0, 700), +(6067, 7130102, 1422009, 1, 1, 0, 700), +(6068, 7130102, 2070005, 1, 1, 0, 400), +(6069, 7130102, 1050074, 1, 1, 0, 700), +(6070, 7130102, 1051058, 1, 1, 0, 700), +(6071, 7130102, 1032011, 1, 1, 0, 1000), +(6072, 7130102, 1092006, 1, 1, 0, 700), +(6073, 7130102, 1332015, 1, 1, 0, 500), +(6074, 7130102, 1002084, 1, 1, 0, 1500), +(6075, 7130102, 4004000, 1, 1, 0, 10000), +(6076, 7130102, 1452011, 1, 1, 0, 500), +(6077, 7130102, 2040025, 1, 1, 0, 300), +(6078, 7130102, 2043017, 1, 1, 0, 300), +(6079, 7130102, 2043210, 1, 1, 0, 300), +(6080, 7130102, 2044214, 1, 1, 0, 300), +(6081, 7130103, 4000208, 1, 1, 0, 600000), +(6082, 7130103, 2002003, 1, 1, 0, 20000), +(6083, 7130103, 2002004, 1, 1, 0, 20000), +(6084, 7130103, 2000006, 1, 1, 0, 20000), +(6085, 7130103, 2000004, 1, 1, 0, 20000), +(6086, 7130103, 4020007, 1, 1, 0, 9000), +(6087, 7130103, 4020002, 1, 1, 0, 9000), +(6088, 7130103, 4020001, 1, 1, 0, 9000), +(6089, 7130103, 4006001, 1, 1, 0, 10000), +(6090, 7130103, 2040301, 1, 1, 0, 300), +(6091, 7130103, 2040516, 1, 1, 0, 300), +(6092, 7130103, 1040092, 1, 1, 0, 800), +(6093, 7130103, 1060081, 1, 1, 0, 800), +(6094, 7130103, 1041092, 1, 1, 0, 800), +(6095, 7130103, 1061091, 1, 1, 0, 800), +(6096, 7130103, 1041095, 1, 1, 0, 800), +(6097, 7130103, 1061094, 1, 1, 0, 800), +(6098, 7130103, 1050061, 1, 1, 0, 700), +(6099, 7130103, 1051063, 1, 1, 0, 700), +(6100, 7130103, 1051054, 1, 1, 0, 700), +(6101, 7130103, 1092023, 1, 1, 0, 700), +(6102, 7130103, 1072182, 1, 1, 0, 800), +(6103, 7130103, 1072172, 1, 1, 0, 800), +(6104, 7130103, 1072210, 1, 1, 0, 800), +(6105, 7130103, 1072177, 1, 1, 0, 800), +(6106, 7130103, 1082207, 1, 1, 0, 1000), +(6107, 7130103, 2040418, 1, 1, 0, 300), +(6108, 7130103, 4130001, 1, 1, 0, 6000), +(6109, 7130103, 4130004, 1, 1, 0, 6000), +(6110, 7130103, 4130012, 1, 1, 0, 6000), +(6111, 7130104, 2000002, 1, 1, 0, 20000), +(6112, 7130104, 2000006, 1, 1, 0, 20000), +(6113, 7130104, 2000004, 1, 1, 0, 20000), +(6114, 7130104, 4010001, 1, 1, 0, 9000), +(6115, 7130104, 4020000, 1, 1, 0, 9000), +(6116, 7130104, 4006001, 1, 1, 0, 10000), +(6117, 7130104, 4004000, 1, 1, 0, 10000), +(6118, 7130104, 1002095, 1, 1, 0, 1500), +(6119, 7130104, 1051054, 1, 1, 0, 700), +(6120, 7130104, 1082110, 1, 1, 0, 1000), +(6121, 7130104, 1072163, 1, 1, 0, 800), +(6122, 7130104, 1472028, 1, 1, 0, 500), +(6123, 7130104, 1032020, 1, 1, 0, 1000), +(6124, 7130104, 1102023, 1, 1, 0, 1000), +(6125, 7130104, 2040002, 1, 1, 0, 300), +(6126, 7130104, 2040705, 1, 1, 0, 300), +(6127, 7130104, 1332018, 1, 1, 0, 500), +(6128, 7130104, 1422010, 1, 1, 0, 700), +(6129, 7130104, 4000297, 1, 1, 0, 600000), +(6130, 7130104, 1082204, 1, 1, 0, 1000), +(6131, 7130104, 2040427, 1, 1, 0, 300), +(6132, 7130104, 2040824, 1, 1, 0, 300), +(6133, 7130104, 2049100, 1, 1, 0, 150), +(6134, 7130104, 4130000, 1, 1, 0, 6000), +(6135, 7130104, 4130017, 1, 1, 0, 6000), +(6136, 7130200, 4000053, 1, 1, 0, 600000), +(6137, 7130200, 2000006, 1, 1, 0, 20000), +(6138, 7130200, 4020001, 1, 1, 0, 9000), +(6139, 7130200, 4010003, 1, 1, 0, 9000), +(6140, 7130200, 2043701, 1, 1, 0, 300), +(6141, 7130200, 2044701, 1, 1, 0, 300), +(6142, 7130200, 4004000, 1, 1, 0, 10000), +(6143, 7130200, 4006000, 1, 1, 0, 10000), +(6144, 7130200, 2040302, 1, 1, 0, 300), +(6145, 7130200, 1050055, 1, 1, 0, 700), +(6146, 7130200, 1041094, 1, 1, 0, 800), +(6147, 7130200, 1061093, 1, 1, 0, 800), +(6148, 7130200, 1050069, 1, 1, 0, 700), +(6149, 7130200, 1040102, 1, 1, 0, 800), +(6150, 7130200, 1060090, 1, 1, 0, 800), +(6151, 7130200, 1082100, 1, 1, 0, 1000), +(6152, 7130200, 1041102, 1, 1, 0, 800), +(6153, 7130200, 1061101, 1, 1, 0, 800), +(6154, 7130200, 1002254, 1, 1, 0, 1500), +(6155, 7130200, 1002288, 1, 1, 0, 1500), +(6156, 7130200, 1092015, 1, 1, 0, 700), +(6157, 7130200, 1332018, 1, 1, 0, 500), +(6158, 7130200, 1402012, 1, 1, 0, 700), +(6159, 7130200, 1472029, 1, 1, 0, 500), +(6160, 7130200, 1322020, 1, 1, 0, 700), +(6161, 7130200, 1002273, 1, 1, 0, 1500), +(6162, 7130200, 1002339, 1, 1, 0, 1500), +(6163, 7130200, 1051066, 1, 1, 0, 700), +(6164, 7130200, 1041105, 1, 1, 0, 800), +(6165, 7130200, 1061104, 1, 1, 0, 800), +(6166, 7130200, 1072309, 1, 1, 0, 800), +(6167, 7130200, 2040031, 1, 1, 0, 300), +(6168, 7130200, 4130006, 1, 1, 0, 6000), +(6169, 7130200, 4130009, 1, 1, 0, 6000), +(6170, 7130200, 4130014, 1, 1, 0, 6000), +(6171, 7130300, 4000148, 1, 1, 0, 600000), +(6172, 7130300, 2000005, 1, 1, 0, 20000), +(6173, 7130300, 2000004, 1, 1, 0, 20000), +(6174, 7130300, 2002004, 1, 1, 0, 20000), +(6175, 7130300, 4006001, 1, 1, 0, 10000), +(6176, 7130300, 4010006, 1, 1, 0, 9000), +(6177, 7130300, 4020006, 1, 1, 0, 9000), +(6178, 7130300, 2044301, 1, 1, 0, 300), +(6179, 7130300, 2041009, 1, 1, 0, 300), +(6180, 7130300, 1002284, 1, 1, 0, 1500), +(6181, 7130300, 1002253, 1, 1, 0, 1500), +(6182, 7130300, 1072155, 1, 1, 0, 800), +(6183, 7130300, 1072167, 1, 1, 0, 800), +(6184, 7130300, 1050074, 1, 1, 0, 700), +(6185, 7130300, 1302018, 1, 1, 0, 700), +(6186, 7130300, 1002274, 1, 1, 0, 1500), +(6187, 7130300, 1002276, 1, 1, 0, 1500), +(6188, 7130300, 1041107, 1, 1, 0, 800), +(6189, 7130300, 1061106, 1, 1, 0, 800), +(6190, 7130300, 1050080, 1, 1, 0, 700), +(6191, 7130300, 1051068, 1, 1, 0, 700), +(6192, 7130300, 1072212, 1, 1, 0, 800), +(6193, 7130300, 1082110, 1, 1, 0, 1000), +(6194, 7130300, 1041121, 1, 1, 0, 800), +(6195, 7130300, 1061120, 1, 1, 0, 800), +(6196, 7130300, 1072203, 1, 1, 0, 800), +(6197, 7130300, 1072206, 1, 1, 0, 800), +(6198, 7130300, 1082143, 1, 1, 0, 1000), +(6199, 7130300, 1072312, 1, 1, 0, 800), +(6200, 7130300, 2040031, 1, 1, 0, 300), +(6201, 7130300, 2040823, 1, 1, 0, 300), +(6202, 7130300, 2043210, 1, 1, 0, 300), +(6203, 7130300, 4130000, 1, 1, 0, 6000), +(6204, 7130400, 4010001, 1, 1, 0, 90000), +(6205, 7130400, 4020001, 1, 1, 0, 90000), +(6206, 7130400, 4004003, 1, 1, 0, 100000), +(6207, 7130400, 4006001, 1, 1, 0, 100000), +(6208, 7130400, 2000006, 1, 1, 0, 999999), +(6209, 7130400, 2000004, 1, 1, 0, 999999), +(6210, 7130400, 2002003, 1, 1, 0, 200000), +(6211, 7130400, 2040504, 1, 1, 0, 3000), +(6212, 7130400, 1050058, 1, 1, 0, 7000), +(6213, 7130400, 1041094, 1, 1, 0, 8000), +(6214, 7130400, 1061093, 1, 1, 0, 8000), +(6215, 7130400, 2040302, 1, 1, 0, 3000), +(6216, 7130400, 1092016, 1, 1, 0, 7000), +(6217, 7130400, 1102021, 1, 1, 0, 10000), +(6218, 7130400, 1462009, 1, 1, 0, 5000), +(6219, 7130400, 1472024, 1, 1, 0, 5000), +(6220, 7130400, 1040102, 1, 1, 0, 8000), +(6221, 7130400, 1060090, 1, 1, 0, 8000), +(6222, 7130400, 1072309, 1, 1, 0, 8000), +(6223, 7130400, 4130002, 1, 1, 0, 60000), +(6224, 7130400, 4130005, 1, 1, 0, 60000), +(6225, 7130400, 4130015, 1, 1, 0, 60000), +(6226, 7130401, 4010004, 1, 1, 0, 90000), +(6227, 7130401, 4020000, 1, 1, 0, 90000), +(6228, 7130401, 4004002, 1, 1, 0, 100000), +(6229, 7130401, 4006001, 1, 1, 0, 100000), +(6230, 7130401, 2000006, 1, 1, 0, 999999), +(6231, 7130401, 2000004, 1, 1, 0, 999999), +(6232, 7130401, 2002000, 1, 1, 0, 200000), +(6233, 7130401, 2040601, 1, 1, 0, 3000), +(6234, 7130401, 2040701, 1, 1, 0, 3000), +(6235, 7130401, 1051041, 1, 1, 0, 7000), +(6236, 7130401, 1442010, 1, 1, 0, 7000), +(6237, 7130401, 1072158, 1, 1, 0, 8000), +(6238, 7130401, 1072163, 1, 1, 0, 8000), +(6239, 7130401, 1412008, 1, 1, 0, 7000), +(6240, 7130401, 1040106, 1, 1, 0, 8000), +(6241, 7130401, 1060094, 1, 1, 0, 8000), +(6242, 7130401, 1422009, 1, 1, 0, 7000), +(6243, 7130401, 1032022, 1, 1, 0, 10000), +(6244, 7130401, 1452010, 1, 1, 0, 5000), +(6245, 7130401, 2070007, 1, 1, 0, 2000), +(6246, 7130401, 1482009, 1, 1, 0, 5000), +(6247, 7130401, 2040620, 1, 1, 0, 3000), +(6248, 7130401, 2044012, 1, 1, 0, 3000), +(6249, 7130401, 4130006, 1, 1, 0, 60000), +(6250, 7130401, 4130015, 1, 1, 0, 60000), +(6251, 7130402, 4010006, 1, 1, 0, 90000), +(6252, 7130402, 4020006, 1, 1, 0, 90000), +(6253, 7130402, 4004001, 1, 1, 0, 100000), +(6254, 7130402, 4006000, 1, 1, 0, 100000), +(6255, 7130402, 2000006, 1, 1, 0, 999999), +(6256, 7130402, 2000004, 1, 1, 0, 999999), +(6257, 7130402, 2002006, 1, 1, 0, 200000), +(6258, 7130402, 2041007, 1, 1, 0, 3000), +(6259, 7130402, 1032019, 1, 1, 0, 10000), +(6260, 7130402, 1082090, 1, 1, 0, 10000), +(6261, 7130402, 1041092, 1, 1, 0, 8000), +(6262, 7130402, 1061091, 1, 1, 0, 8000), +(6263, 7130402, 2043001, 1, 1, 0, 3000), +(6264, 7130402, 1032022, 1, 1, 0, 10000), +(6265, 7130402, 1402012, 1, 1, 0, 7000), +(6266, 7130402, 1072155, 1, 1, 0, 8000), +(6267, 7130402, 1422005, 1, 1, 0, 7000), +(6268, 7130402, 1041101, 1, 1, 0, 8000), +(6269, 7130402, 1061100, 1, 1, 0, 8000), +(6270, 7130402, 2070007, 1, 1, 0, 2000), +(6271, 7130402, 1002637, 1, 1, 0, 15000), +(6272, 7130402, 2330003, 1, 1, 0, 5000), +(6273, 7130402, 2040024, 1, 1, 0, 3000), +(6274, 7130402, 2040534, 1, 1, 0, 3000), +(6275, 7130402, 2043112, 1, 1, 0, 3000), +(6276, 7130402, 4130017, 1, 1, 0, 60000), +(6277, 7130500, 4000226, 1, 1, 0, 600000), +(6278, 7130500, 2000006, 1, 1, 0, 20000), +(6279, 7130500, 2000004, 1, 1, 0, 20000), +(6280, 7130500, 4010001, 1, 1, 0, 9000), +(6281, 7130500, 4020000, 1, 1, 0, 9000), +(6282, 7130500, 2040002, 1, 1, 0, 300), +(6283, 7130500, 2040705, 1, 1, 0, 300), +(6284, 7130500, 4006001, 1, 1, 0, 10000), +(6285, 7130500, 4004000, 1, 1, 0, 10000), +(6286, 7130500, 1002095, 1, 1, 0, 1500), +(6287, 7130500, 1051054, 1, 1, 0, 700), +(6288, 7130500, 1082110, 1, 1, 0, 1000), +(6289, 7130500, 1072163, 1, 1, 0, 800), +(6290, 7130500, 1332018, 1, 1, 0, 500), +(6291, 7130500, 1422010, 1, 1, 0, 700), +(6292, 7130500, 1472028, 1, 1, 0, 500), +(6293, 7130500, 1032020, 1, 1, 0, 1000), +(6294, 7130500, 1102023, 1, 1, 0, 1000), +(6295, 7130500, 4000227, 1, 1, 0, 600000), +(6296, 7130500, 4000228, 1, 1, 0, 600000), +(6297, 7130500, 1052122, 1, 1, 0, 700), +(6298, 7130500, 2040326, 1, 1, 0, 300), +(6299, 7130500, 2040623, 1, 1, 0, 300), +(6300, 7130500, 2040824, 1, 1, 0, 300), +(6301, 7130500, 4130007, 1, 1, 0, 6000), +(6302, 7130500, 4130011, 1, 1, 0, 6000), +(6303, 7130500, 4130015, 1, 1, 0, 6000), +(6304, 7130501, 4000229, 1, 1, 0, 600000), +(6305, 7130501, 2000006, 1, 1, 0, 20000), +(6306, 7130501, 2000004, 1, 1, 0, 20000), +(6307, 7130501, 4010002, 1, 1, 0, 9000), +(6308, 7130501, 4020002, 1, 1, 0, 9000), +(6309, 7130501, 2040505, 1, 1, 0, 300), +(6310, 7130501, 2043002, 1, 1, 0, 300), +(6311, 7130501, 4006001, 1, 1, 0, 10000), +(6312, 7130501, 4004002, 1, 1, 0, 10000), +(6313, 7130501, 1082105, 1, 1, 0, 1000), +(6314, 7130501, 1072178, 1, 1, 0, 800), +(6315, 7130501, 1002276, 1, 1, 0, 1500), +(6316, 7130501, 1041103, 1, 1, 0, 800), +(6317, 7130501, 1061102, 1, 1, 0, 800), +(6318, 7130501, 1472027, 1, 1, 0, 500), +(6319, 7130501, 1302018, 1, 1, 0, 700), +(6320, 7130501, 2070005, 1, 1, 0, 400), +(6321, 7130501, 1102027, 1, 1, 0, 1000), +(6322, 7130501, 1092016, 1, 1, 0, 700), +(6323, 7130501, 4000230, 1, 1, 0, 600000), +(6324, 7130501, 1052122, 1, 1, 0, 700), +(6325, 7130501, 2040321, 1, 1, 0, 300), +(6326, 7130501, 2040515, 1, 1, 0, 300), +(6327, 7130501, 2040625, 1, 1, 0, 300), +(6328, 7130501, 4130008, 1, 1, 0, 6000), +(6329, 7130501, 4130010, 1, 1, 0, 6000), +(6330, 7130600, 2000006, 1, 1, 0, 20000), +(6331, 7130600, 2000004, 1, 1, 0, 20000), +(6332, 7130600, 4010001, 1, 1, 0, 9000), +(6333, 7130600, 4010000, 1, 1, 0, 9000), +(6334, 7130600, 2044101, 1, 1, 0, 300), +(6335, 7130600, 2041008, 1, 1, 0, 300), +(6336, 7130600, 4006001, 1, 1, 0, 10000), +(6337, 7130600, 4004002, 1, 1, 0, 10000), +(6338, 7130600, 1051062, 1, 1, 0, 700), +(6339, 7130600, 1002287, 1, 1, 0, 1500), +(6340, 7130600, 1082119, 1, 1, 0, 1000), +(6341, 7130600, 1072211, 1, 1, 0, 800), +(6342, 7130600, 1332019, 1, 1, 0, 500), +(6343, 7130600, 1452009, 1, 1, 0, 500), +(6344, 7130600, 4000260, 1, 1, 0, 600000), +(6345, 7130600, 2040512, 1, 1, 0, 300), +(6346, 7130600, 2044010, 1, 1, 0, 300), +(6347, 7130600, 4130001, 1, 1, 0, 6000), +(6348, 7130600, 4130005, 1, 1, 0, 6000), +(6349, 7130600, 4130017, 1, 1, 0, 6000), +(6350, 7130601, 2000006, 1, 1, 0, 20000), +(6351, 7130601, 2000004, 1, 1, 0, 20000), +(6352, 7130601, 4020007, 1, 1, 0, 9000), +(6353, 7130601, 4020001, 1, 1, 0, 9000), +(6354, 7130601, 2044602, 1, 1, 0, 300), +(6355, 7130601, 2043701, 1, 1, 0, 300), +(6356, 7130601, 4006000, 1, 1, 0, 10000), +(6357, 7130601, 4004003, 1, 1, 0, 10000), +(6358, 7130601, 1040106, 1, 1, 0, 800), +(6359, 7130601, 1060094, 1, 1, 0, 800), +(6360, 7130601, 1002252, 1, 1, 0, 1500), +(6361, 7130601, 1082125, 1, 1, 0, 1000), +(6362, 7130601, 1072212, 1, 1, 0, 800), +(6363, 7130601, 1462009, 1, 1, 0, 500), +(6364, 7130601, 1322019, 1, 1, 0, 700), +(6365, 7130601, 4000261, 1, 1, 0, 600000), +(6366, 7130601, 1052125, 1, 1, 0, 700), +(6367, 7130601, 2044802, 1, 1, 0, 300), +(6368, 7130601, 2040927, 1, 1, 0, 300), +(6369, 7130601, 4130003, 1, 1, 0, 6000), +(6370, 7130601, 4130011, 1, 1, 0, 6000), +(6371, 7130601, 4130016, 1, 1, 0, 6000), +(6372, 7140000, 4000132, 1, 1, 0, 600000), +(6373, 7140000, 2000006, 1, 1, 0, 20000), +(6374, 7140000, 4004001, 1, 1, 0, 10000), +(6375, 7140000, 4020002, 1, 1, 0, 9000), +(6376, 7140000, 4010002, 1, 1, 0, 9000), +(6377, 7140000, 2041001, 1, 1, 0, 300), +(6378, 7140000, 2040502, 1, 1, 0, 300), +(6379, 7140000, 1040107, 1, 1, 0, 800), +(6380, 7140000, 1060095, 1, 1, 0, 800), +(6381, 7140000, 1002094, 1, 1, 0, 1500), +(6382, 7140000, 1002287, 1, 1, 0, 1500), +(6383, 7140000, 1040108, 1, 1, 0, 800), +(6384, 7140000, 1060097, 1, 1, 0, 800), +(6385, 7140000, 1050082, 1, 1, 0, 700), +(6386, 7140000, 1002273, 1, 1, 0, 1500), +(6387, 7140000, 1002277, 1, 1, 0, 1500), +(6388, 7140000, 1002338, 1, 1, 0, 1500), +(6389, 7140000, 1072182, 1, 1, 0, 800), +(6390, 7140000, 1082114, 1, 1, 0, 1000), +(6391, 7140000, 1092025, 1, 1, 0, 700), +(6392, 7140000, 1462011, 1, 1, 0, 500), +(6393, 7140000, 1432010, 1, 1, 0, 500), +(6394, 7140000, 1050089, 1, 1, 0, 700), +(6395, 7140000, 1072192, 1, 1, 0, 800), +(6396, 7140000, 1072207, 1, 1, 0, 800), +(6397, 7140000, 1082128, 1, 1, 0, 1000), +(6398, 7140000, 1002640, 1, 1, 0, 1500), +(6399, 7140000, 2040924, 1, 1, 0, 300), +(6400, 7140000, 2043015, 1, 1, 0, 300), +(6401, 7140000, 4130001, 1, 1, 0, 6000), +(6402, 7140000, 4130005, 1, 1, 0, 6000), +(6403, 7160000, 4000133, 1, 1, 0, 600000), +(6404, 7160000, 2000006, 1, 1, 0, 20000), +(6405, 7160000, 2000002, 1, 1, 0, 20000), +(6406, 7160000, 4020008, 1, 1, 0, 9000), +(6407, 7160000, 4010003, 1, 1, 0, 9000), +(6408, 7160000, 2044401, 1, 1, 0, 300), +(6409, 7160000, 4006001, 1, 1, 0, 10000), +(6410, 7160000, 4004000, 1, 1, 0, 10000), +(6411, 7160000, 4131007, 1, 1, 0, 6000), +(6412, 7160000, 2070005, 1, 1, 0, 400), +(6413, 7160000, 1050070, 1, 1, 0, 700), +(6414, 7160000, 1452011, 1, 1, 0, 500), +(6415, 7160000, 1082103, 1, 1, 0, 1000), +(6416, 7160000, 1040107, 1, 1, 0, 800), +(6417, 7160000, 1060095, 1, 1, 0, 800), +(6418, 7160000, 1051057, 1, 1, 0, 700), +(6419, 7160000, 1002330, 1, 1, 0, 1500), +(6420, 7160000, 1002272, 1, 1, 0, 1500), +(6421, 7160000, 1032016, 1, 1, 0, 1000), +(6422, 7160000, 1041105, 1, 1, 0, 800), +(6423, 7160000, 1061104, 1, 1, 0, 800), +(6424, 7160000, 1050075, 1, 1, 0, 700), +(6425, 7160000, 1051077, 1, 1, 0, 700), +(6426, 7160000, 1051066, 1, 1, 0, 700), +(6427, 7160000, 1072173, 1, 1, 0, 800), +(6428, 7160000, 1082116, 1, 1, 0, 1000), +(6429, 7160000, 1082109, 1, 1, 0, 1000), +(6430, 7160000, 1082121, 1, 1, 0, 1000), +(6431, 7160000, 1041115, 1, 1, 0, 800), +(6432, 7160000, 1061114, 1, 1, 0, 800), +(6433, 7160000, 1072197, 1, 1, 0, 800), +(6434, 7160000, 1082125, 1, 1, 0, 1000), +(6435, 7160000, 1082131, 1, 1, 0, 1000), +(6436, 7160000, 2330003, 1, 1, 0, 500), +(6437, 7160000, 1492010, 1, 1, 0, 500), +(6438, 7160000, 2040619, 1, 1, 0, 300), +(6439, 7160000, 4130003, 1, 1, 0, 6000), +(6440, 7160000, 4130007, 1, 1, 0, 6000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(6441, 7160000, 4130011, 1, 1, 0, 6000), +(6442, 7220000, 4000284, 1, 1, 0, 600000), +(6443, 7220000, 4000284, 1, 1, 0, 600000), +(6444, 7220000, 4000284, 1, 1, 0, 600000), +(6445, 7220000, 4000285, 1, 1, 0, 600000), +(6446, 7220000, 4000285, 1, 1, 0, 600000), +(6447, 7220000, 4000285, 1, 1, 0, 600000), +(6448, 7220000, 4000021, 1, 1, 0, 500000), +(6449, 7220000, 4000021, 1, 1, 0, 500000), +(6450, 7220000, 4000021, 1, 1, 0, 500000), +(6451, 7220000, 4000283, 1, 1, 0, 600000), +(6452, 7220000, 4000283, 1, 1, 0, 600000), +(6453, 7220000, 4000283, 1, 1, 0, 600000), +(6454, 7220000, 4004000, 1, 1, 0, 100000), +(6455, 7220000, 4010001, 1, 1, 0, 90000), +(6456, 7220000, 4020006, 1, 1, 0, 90000), +(6457, 7220000, 2000002, 1, 1, 0, 200000), +(6458, 7220000, 2000003, 1, 1, 0, 200000), +(6459, 7220000, 2002004, 1, 1, 0, 200000), +(6460, 7220000, 2002011, 1, 1, 0, 200000), +(6461, 7220000, 2022142, 1, 1, 0, 200000), +(6462, 7220000, 2040901, 1, 1, 0, 3000), +(6463, 7220000, 2041001, 1, 1, 0, 3000), +(6464, 7220000, 2043801, 1, 1, 0, 3000), +(6465, 7220000, 2043101, 1, 1, 0, 3000), +(6466, 7220000, 2041010, 1, 1, 0, 3000), +(6467, 7220000, 2043301, 1, 1, 0, 3000), +(6468, 7220000, 2044101, 1, 1, 0, 3000), +(6469, 7220000, 2044501, 1, 1, 0, 3000), +(6470, 7220000, 2041022, 1, 1, 0, 3000), +(6471, 7220000, 2044601, 1, 1, 0, 3000), +(6472, 7220000, 2048005, 1, 1, 0, 3000), +(6473, 7220000, 2040005, 1, 1, 0, 3000), +(6474, 7220000, 2040514, 1, 1, 0, 3000), +(6475, 7220000, 2040705, 1, 1, 0, 3000), +(6476, 7220000, 2040805, 1, 1, 0, 3000), +(6477, 7220000, 2060001, 1, 1, 0, 300000), +(6478, 7220000, 2061001, 1, 1, 0, 300000), +(6479, 7220000, 2070004, 1, 1, 0, 5000), +(6480, 7220000, 1302012, 1, 1, 0, 7000), +(6481, 7220000, 1312010, 1, 1, 0, 7000), +(6482, 7220000, 1322019, 1, 1, 0, 7000), +(6483, 7220000, 1332018, 1, 1, 0, 5000), +(6484, 7220000, 1372015, 1, 1, 0, 7000), +(6485, 7220000, 1382010, 1, 1, 0, 7000), +(6486, 7220000, 1402012, 1, 1, 0, 7000), +(6487, 7220000, 1412008, 1, 1, 0, 7000), +(6488, 7220000, 1422010, 1, 1, 0, 7000), +(6489, 7220000, 1432007, 1, 1, 0, 5000), +(6490, 7220000, 1442008, 1, 1, 0, 7000), +(6491, 7220000, 1452011, 1, 1, 0, 5000), +(6492, 7220000, 1462009, 1, 1, 0, 5000), +(6493, 7220000, 1472029, 1, 1, 0, 5000), +(6494, 7220000, 1482009, 1, 1, 0, 5000), +(6495, 7220000, 1492009, 1, 1, 0, 5000), +(6496, 7220000, 2044801, 1, 1, 0, 3000), +(6497, 7220000, 2040025, 1, 1, 0, 3000), +(6498, 7220000, 2040825, 1, 1, 0, 3000), +(6499, 7220000, 2043019, 1, 1, 0, 3000), +(6500, 7220000, 2044014, 1, 1, 0, 3000), +(6501, 7220000, 2044312, 1, 1, 0, 3000), +(6502, 7220000, 2044412, 1, 1, 0, 3000), +(6503, 7220000, 2049100, 1, 1, 0, 3000), +(6504, 7220001, 4000172, 1, 1, 0, 600000), +(6505, 7220001, 4000172, 1, 1, 0, 600000), +(6506, 7220001, 4000172, 1, 1, 0, 600000), +(6507, 7220001, 4000172, 1, 1, 0, 600000), +(6508, 7220001, 4000172, 1, 1, 0, 600000), +(6509, 7220001, 4000172, 1, 1, 0, 600000), +(6510, 7220001, 4000172, 1, 1, 0, 600000), +(6511, 7220001, 4000172, 1, 1, 0, 600000), +(6512, 7220001, 4000021, 1, 1, 0, 500000), +(6513, 7220001, 4004002, 1, 1, 0, 100000), +(6514, 7220001, 4010004, 1, 1, 0, 90000), +(6515, 7220001, 4020004, 1, 1, 0, 90000), +(6516, 7220001, 2000002, 1, 1, 0, 200000), +(6517, 7220001, 2000003, 1, 1, 0, 200000), +(6518, 7220001, 2002002, 1, 1, 0, 200000), +(6519, 7220001, 2002000, 1, 1, 0, 200000), +(6520, 7220001, 2040301, 1, 1, 0, 3000), +(6521, 7220001, 2040501, 1, 1, 0, 3000), +(6522, 7220001, 2040513, 1, 1, 0, 3000), +(6523, 7220001, 2040701, 1, 1, 0, 3000), +(6524, 7220001, 2040804, 1, 1, 0, 3000), +(6525, 7220001, 2041010, 1, 1, 0, 3000), +(6526, 7220001, 2043301, 1, 1, 0, 3000), +(6527, 7220001, 2043801, 1, 1, 0, 3000), +(6528, 7220001, 2044501, 1, 1, 0, 3000), +(6529, 7220001, 2041016, 1, 1, 0, 3000), +(6530, 7220001, 2041017, 1, 1, 0, 3000), +(6531, 7220001, 2043702, 1, 1, 0, 3000), +(6532, 7220001, 2044702, 1, 1, 0, 3000), +(6533, 7220001, 2040902, 1, 1, 0, 3000), +(6534, 7220001, 2040602, 1, 1, 0, 3000), +(6535, 7220001, 2060001, 1, 1, 0, 300000), +(6536, 7220001, 2061001, 1, 1, 0, 300000), +(6537, 7220001, 2070005, 1, 1, 0, 4000), +(6538, 7220001, 1002095, 1, 1, 0, 15000), +(6539, 7220001, 1002254, 1, 1, 0, 15000), +(6540, 7220001, 1002289, 1, 1, 0, 15000), +(6541, 7220001, 1002285, 1, 1, 0, 15000), +(6542, 7220001, 1040103, 1, 1, 0, 8000), +(6543, 7220001, 1041099, 1, 1, 0, 8000), +(6544, 7220001, 1050070, 1, 1, 0, 7000), +(6545, 7220001, 1051055, 1, 1, 0, 7000), +(6546, 7220001, 1050064, 1, 1, 0, 7000), +(6547, 7220001, 1051065, 1, 1, 0, 7000), +(6548, 7220001, 1040107, 1, 1, 0, 8000), +(6549, 7220001, 1041100, 1, 1, 0, 8000), +(6550, 7220001, 1082105, 1, 1, 0, 10000), +(6551, 7220001, 1082100, 1, 1, 0, 10000), +(6552, 7220001, 1082108, 1, 1, 0, 10000), +(6553, 7220001, 1082097, 1, 1, 0, 10000), +(6554, 7220001, 1072156, 1, 1, 0, 8000), +(6555, 7220001, 1072160, 1, 1, 0, 8000), +(6556, 7220001, 1072167, 1, 1, 0, 8000), +(6557, 7220001, 1072161, 1, 1, 0, 8000), +(6558, 7220001, 1002637, 1, 1, 0, 15000), +(6559, 7220001, 1052122, 1, 1, 0, 7000), +(6560, 7220001, 1082204, 1, 1, 0, 10000), +(6561, 7220001, 1072309, 1, 1, 0, 8000), +(6562, 7220001, 2044802, 1, 1, 0, 3000), +(6563, 7220001, 2044901, 1, 1, 0, 3000), +(6564, 7220001, 2040025, 1, 1, 0, 3000), +(6565, 7220001, 2040427, 1, 1, 0, 3000), +(6566, 7220001, 2040625, 1, 1, 0, 3000), +(6567, 7220001, 2040933, 1, 1, 0, 3000), +(6568, 7220001, 2043017, 1, 1, 0, 3000), +(6569, 7220002, 4000298, 1, 1, 0, 600000), +(6570, 7220002, 4000298, 1, 1, 0, 600000), +(6571, 7220002, 4000298, 1, 1, 0, 600000), +(6572, 7220002, 4000289, 1, 1, 0, 600000), +(6573, 7220002, 4000289, 1, 1, 0, 600000), +(6574, 7220002, 4000289, 1, 1, 0, 600000), +(6575, 7220002, 4003005, 1, 1, 0, 200000), +(6576, 7220002, 4004004, 1, 1, 0, 100000), +(6577, 7220002, 4010005, 1, 1, 0, 90000), +(6578, 7220002, 4020008, 1, 1, 0, 90000), +(6579, 7220002, 2000002, 1, 1, 0, 200000), +(6580, 7220002, 2000003, 1, 1, 0, 200000), +(6581, 7220002, 2002002, 1, 1, 0, 200000), +(6582, 7220002, 2002003, 1, 1, 0, 200000), +(6583, 7220002, 2022149, 1, 1, 0, 200000), +(6584, 7220002, 2040004, 1, 1, 0, 3000), +(6585, 7220002, 2040504, 1, 1, 0, 3000), +(6586, 7220002, 2040601, 1, 1, 0, 3000), +(6587, 7220002, 2040701, 1, 1, 0, 3000), +(6588, 7220002, 2040707, 1, 1, 0, 3000), +(6589, 7220002, 2040801, 1, 1, 0, 3000), +(6590, 7220002, 2041010, 1, 1, 0, 3000), +(6591, 7220002, 2043101, 1, 1, 0, 3000), +(6592, 7220002, 2044001, 1, 1, 0, 3000), +(6593, 7220002, 2044601, 1, 1, 0, 3000), +(6594, 7220002, 2040402, 1, 1, 0, 3000), +(6595, 7220002, 2040514, 1, 1, 0, 3000), +(6596, 7220002, 2040702, 1, 1, 0, 3000), +(6597, 7220002, 2041005, 1, 1, 0, 3000), +(6598, 7220002, 2044302, 1, 1, 0, 3000), +(6599, 7220002, 2060001, 1, 1, 0, 300000), +(6600, 7220002, 2061001, 1, 1, 0, 300000), +(6601, 7220002, 1302018, 1, 1, 0, 7000), +(6602, 7220002, 1312011, 1, 1, 0, 7000), +(6603, 7220002, 1322028, 1, 1, 0, 7000), +(6604, 7220002, 1332023, 1, 1, 0, 5000), +(6605, 7220002, 1372016, 1, 1, 0, 7000), +(6606, 7220002, 1382008, 1, 1, 0, 7000), +(6607, 7220002, 1402004, 1, 1, 0, 7000), +(6608, 7220002, 1412009, 1, 1, 0, 7000), +(6609, 7220002, 1422012, 1, 1, 0, 7000), +(6610, 7220002, 1432010, 1, 1, 0, 5000), +(6611, 7220002, 1442019, 1, 1, 0, 7000), +(6612, 7220002, 1452015, 1, 1, 0, 5000), +(6613, 7220002, 1462013, 1, 1, 0, 5000), +(6614, 7220002, 1472031, 1, 1, 0, 5000), +(6615, 7220002, 1482010, 1, 1, 0, 5000), +(6616, 7220002, 1492010, 1, 1, 0, 5000), +(6617, 7220002, 2044902, 1, 1, 0, 3000), +(6618, 7220002, 2040619, 1, 1, 0, 3000), +(6619, 7220002, 2044414, 1, 1, 0, 3000), +(6620, 7220002, 2049000, 1, 1, 0, 1500), +(6621, 8090000, 4000418, 1, 1, 0, 600000), +(6622, 8110300, 2000006, 1, 1, 0, 20000), +(6623, 8110300, 2000005, 1, 1, 0, 20000), +(6624, 8110300, 4010005, 1, 1, 0, 9000), +(6625, 8110300, 4020005, 1, 1, 0, 9000), +(6626, 8110300, 2044602, 1, 1, 0, 300), +(6627, 8110300, 2041005, 1, 1, 0, 300), +(6628, 8110300, 4006000, 1, 1, 0, 10000), +(6629, 8110300, 4004000, 1, 1, 0, 10000), +(6630, 8110300, 2000002, 1, 1, 0, 20000), +(6631, 8110300, 2070005, 1, 1, 0, 400), +(6632, 8110300, 1082114, 1, 1, 0, 1000), +(6633, 8110300, 1072158, 1, 1, 0, 800), +(6634, 8110300, 1002288, 1, 1, 0, 1500), +(6635, 8110300, 1040107, 1, 1, 0, 800), +(6636, 8110300, 1060095, 1, 1, 0, 800), +(6637, 8110300, 1452011, 1, 1, 0, 500), +(6638, 8110300, 1442008, 1, 1, 0, 700), +(6639, 8110300, 1312010, 1, 1, 0, 700), +(6640, 8110300, 1102031, 1, 1, 0, 1000), +(6641, 8110300, 4000355, 1, 1, 0, 600000), +(6642, 8110300, 2044902, 1, 1, 0, 300), +(6643, 8110300, 2044807, 1, 1, 0, 300), +(6644, 8110300, 4130012, 1, 1, 0, 6000), +(6645, 8110300, 4130013, 1, 1, 0, 6000), +(6646, 8130100, 4021008, 1, 1, 0, 90000), +(6647, 8130100, 2000005, 1, 1, 0, 999999), +(6648, 8130100, 1452009, 1, 1, 0, 5000), +(6649, 8130100, 1382007, 1, 1, 0, 7000), +(6650, 8130100, 1462009, 1, 1, 0, 5000), +(6651, 8130100, 1322019, 1, 1, 0, 7000), +(6652, 8130100, 1312010, 1, 1, 0, 7000), +(6653, 8130100, 1412008, 1, 1, 0, 7000), +(6654, 8130100, 1422010, 1, 1, 0, 7000), +(6655, 8130100, 1472026, 1, 1, 0, 5000), +(6656, 8130100, 1432007, 1, 1, 0, 5000), +(6657, 8130100, 1442008, 1, 1, 0, 7000), +(6658, 8130100, 1302012, 1, 1, 0, 7000), +(6659, 8130100, 1402012, 1, 1, 0, 7000), +(6660, 8130100, 1332018, 1, 1, 0, 5000), +(6661, 8130100, 1332019, 1, 1, 0, 5000), +(6662, 8130100, 2043001, 1, 1, 0, 3000), +(6663, 8130100, 2043101, 1, 1, 0, 3000), +(6664, 8130100, 2043201, 1, 1, 0, 3000), +(6665, 8130100, 2043301, 1, 1, 0, 3000), +(6666, 8130100, 2043701, 1, 1, 0, 3000), +(6667, 8130100, 2043801, 1, 1, 0, 3000), +(6668, 8130100, 2044001, 1, 1, 0, 3000), +(6669, 8130100, 2044101, 1, 1, 0, 3000), +(6670, 8130100, 2044201, 1, 1, 0, 3000), +(6671, 8130100, 2044301, 1, 1, 0, 3000), +(6672, 8130100, 2044401, 1, 1, 0, 3000), +(6673, 8130100, 2044501, 1, 1, 0, 3000), +(6674, 8130100, 2044601, 1, 1, 0, 3000), +(6675, 8130100, 2044701, 1, 1, 0, 3000), +(6676, 8130100, 2000004, 1, 1, 0, 999999), +(6677, 8130100, 1092016, 1, 1, 0, 7000), +(6678, 8130100, 2070007, 1, 1, 0, 2000), +(6679, 8130100, 1482009, 1, 1, 0, 5000), +(6680, 8130100, 1492009, 1, 1, 0, 5000), +(6681, 8130100, 2044801, 1, 1, 0, 3000), +(6682, 8130100, 2044901, 1, 1, 0, 3000), +(6683, 8130100, 2040419, 1, 1, 0, 3000), +(6684, 8130100, 2040622, 1, 1, 0, 3000), +(6685, 8130100, 2049000, 1, 1, 0, 1500), +(6686, 8140000, 4000054, 1, 1, 0, 600000), +(6687, 8140000, 4003005, 1, 1, 0, 200000), +(6688, 8140000, 1402004, 1, 1, 0, 700), +(6689, 8140000, 2040902, 1, 1, 0, 300), +(6690, 8140000, 2070006, 1, 1, 0, 200), +(6691, 8140000, 4010001, 1, 1, 0, 9000), +(6692, 8140000, 4020008, 1, 1, 0, 9000), +(6693, 8140000, 4010003, 1, 1, 0, 9000), +(6694, 8140000, 4004001, 1, 1, 0, 10000), +(6695, 8140000, 4006001, 1, 1, 0, 10000), +(6696, 8140000, 4020006, 1, 1, 0, 9000), +(6697, 8140000, 1051053, 1, 1, 0, 700), +(6698, 8140000, 1442008, 1, 1, 0, 700), +(6699, 8140000, 1002285, 1, 1, 0, 1500), +(6700, 8140000, 1040104, 1, 1, 0, 800), +(6701, 8140000, 1060092, 1, 1, 0, 800), +(6702, 8140000, 1050064, 1, 1, 0, 700), +(6703, 8140000, 1472028, 1, 1, 0, 500), +(6704, 8140000, 1102029, 1, 1, 0, 1000), +(6705, 8140000, 1002271, 1, 1, 0, 1500), +(6706, 8140000, 1002275, 1, 1, 0, 1500), +(6707, 8140000, 1072172, 1, 1, 0, 800), +(6708, 8140000, 1072178, 1, 1, 0, 800), +(6709, 8140000, 1072210, 1, 1, 0, 800), +(6710, 8140000, 1032023, 1, 1, 0, 1000), +(6711, 8140000, 1050092, 1, 1, 0, 700), +(6712, 8140000, 1051082, 1, 1, 0, 700), +(6713, 8140000, 1072193, 1, 1, 0, 800), +(6714, 8140000, 1082129, 1, 1, 0, 1000), +(6715, 8140000, 1482010, 1, 1, 0, 500), +(6716, 8140000, 2040825, 1, 1, 0, 300), +(6717, 8140000, 2040933, 1, 1, 0, 300), +(6718, 8140000, 2044010, 1, 1, 0, 300), +(6719, 8140000, 4130007, 1, 1, 0, 6000), +(6720, 8140001, 4000238, 1, 1, 0, 600000), +(6721, 8140001, 2000006, 1, 1, 0, 20000), +(6722, 8140001, 2000005, 1, 1, 0, 20000), +(6723, 8140001, 4010005, 1, 1, 0, 9000), +(6724, 8140001, 4020005, 1, 1, 0, 9000), +(6725, 8140001, 2044602, 1, 1, 0, 300), +(6726, 8140001, 2041005, 1, 1, 0, 300), +(6727, 8140001, 4006000, 1, 1, 0, 10000), +(6728, 8140001, 4004000, 1, 1, 0, 10000), +(6729, 8140001, 2000002, 1, 1, 0, 20000), +(6730, 8140001, 2070005, 1, 1, 0, 400), +(6731, 8140001, 1082114, 1, 1, 0, 1000), +(6732, 8140001, 1072158, 1, 1, 0, 800), +(6733, 8140001, 1002288, 1, 1, 0, 1500), +(6734, 8140001, 1040107, 1, 1, 0, 800), +(6735, 8140001, 1060095, 1, 1, 0, 800), +(6736, 8140001, 1452011, 1, 1, 0, 500), +(6737, 8140001, 1442008, 1, 1, 0, 700), +(6738, 8140001, 1312010, 1, 1, 0, 700), +(6739, 8140001, 1102031, 1, 1, 0, 1000), +(6740, 8140001, 1492010, 1, 1, 0, 500), +(6741, 8140001, 2040318, 1, 1, 0, 300), +(6742, 8140001, 2040824, 1, 1, 0, 300), +(6743, 8140001, 2044310, 1, 1, 0, 300), +(6744, 8140001, 2044805, 1, 1, 0, 300), +(6745, 8140001, 4130004, 1, 1, 0, 6000), +(6746, 8140001, 4130015, 1, 1, 0, 6000), +(6747, 8140001, 4130016, 1, 1, 0, 6000), +(6748, 8140002, 4000239, 1, 1, 0, 600000), +(6749, 8140002, 2000006, 1, 1, 0, 20000), +(6750, 8140002, 2000005, 1, 1, 0, 20000), +(6751, 8140002, 4010006, 1, 1, 0, 9000), +(6752, 8140002, 4020007, 1, 1, 0, 9000), +(6753, 8140002, 2040707, 1, 1, 0, 300), +(6754, 8140002, 2043301, 1, 1, 0, 300), +(6755, 8140002, 4006001, 1, 1, 0, 10000), +(6756, 8140002, 4004001, 1, 1, 0, 10000), +(6757, 8140002, 2000002, 1, 1, 0, 20000), +(6758, 8140002, 1102030, 1, 1, 0, 1000), +(6759, 8140002, 1002339, 1, 1, 0, 1500), +(6760, 8140002, 1051057, 1, 1, 0, 700), +(6761, 8140002, 1082112, 1, 1, 0, 1000), +(6762, 8140002, 1072173, 1, 1, 0, 800), +(6763, 8140002, 1472029, 1, 1, 0, 500), +(6764, 8140002, 1382010, 1, 1, 0, 700), +(6765, 8140002, 1462012, 1, 1, 0, 500), +(6766, 8140002, 2070005, 1, 1, 0, 400), +(6767, 8140002, 1032022, 1, 1, 0, 1000), +(6768, 8140002, 4000240, 1, 1, 0, 600000), +(6769, 8140002, 1052125, 1, 1, 0, 700), +(6770, 8140002, 2330003, 1, 1, 0, 500), +(6771, 8140002, 2040026, 1, 1, 0, 300), +(6772, 8140002, 2040316, 1, 1, 0, 300), +(6773, 8140002, 2043015, 1, 1, 0, 300), +(6774, 8140002, 2049000, 1, 1, 0, 150), +(6775, 8140002, 4130000, 1, 1, 0, 6000), +(6776, 8140002, 4130002, 1, 1, 0, 6000), +(6777, 8140002, 4130010, 1, 1, 0, 6000), +(6778, 8140100, 4000057, 1, 1, 0, 600000), +(6779, 8140100, 4004004, 1, 1, 0, 10000), +(6780, 8140100, 2000006, 1, 1, 0, 20000), +(6781, 8140100, 2000004, 1, 1, 0, 20000), +(6782, 8140100, 4020007, 1, 1, 0, 9000), +(6783, 8140100, 4010003, 1, 1, 0, 9000), +(6784, 8140100, 2070004, 1, 1, 0, 500), +(6785, 8140100, 4004003, 1, 1, 0, 10000), +(6786, 8140100, 4006000, 1, 1, 0, 10000), +(6787, 8140100, 1002217, 1, 1, 0, 1500), +(6788, 8140100, 1032013, 1, 1, 0, 1000), +(6789, 8140100, 1072131, 1, 1, 0, 800), +(6790, 8140100, 1050055, 1, 1, 0, 700), +(6791, 8140100, 1422009, 1, 1, 0, 700), +(6792, 8140100, 1072152, 1, 1, 0, 800), +(6793, 8140100, 1002267, 1, 1, 0, 1500), +(6794, 8140100, 1041092, 1, 1, 0, 800), +(6795, 8140100, 1061091, 1, 1, 0, 800), +(6796, 8140100, 1092009, 1, 1, 0, 700), +(6797, 8140100, 1102021, 1, 1, 0, 1000), +(6798, 8140100, 1032020, 1, 1, 0, 1000), +(6799, 8140100, 1462009, 1, 1, 0, 500), +(6800, 8140100, 1302012, 1, 1, 0, 700), +(6801, 8140100, 1082095, 1, 1, 0, 1000), +(6802, 8140100, 1082099, 1, 1, 0, 1000), +(6803, 8140100, 1002283, 1, 1, 0, 1500), +(6804, 8140100, 2040328, 1, 1, 0, 300), +(6805, 8140100, 2040512, 1, 1, 0, 300), +(6806, 8140100, 4130002, 1, 1, 0, 6000), +(6807, 8140100, 4130003, 1, 1, 0, 6000), +(6808, 8140100, 4130009, 1, 1, 0, 6000), +(6809, 8140100, 4000056, 1, 1, 0, 600000), +(6810, 8140100, 4003004, 1, 1, 0, 200000), +(6811, 8140100, 4004004, 1, 1, 0, 10000), +(6812, 8140100, 4010001, 1, 1, 0, 9000), +(6813, 8140100, 4020002, 1, 1, 0, 9000), +(6814, 8140100, 1072127, 1, 1, 0, 800), +(6815, 8140100, 1412007, 1, 1, 0, 700), +(6816, 8140100, 1332019, 1, 1, 0, 500), +(6817, 8140100, 1472022, 1, 1, 0, 500), +(6818, 8140100, 1302011, 1, 1, 0, 700), +(6819, 8140100, 2044001, 1, 1, 0, 300), +(6820, 8140100, 2043801, 1, 1, 0, 300), +(6821, 8140100, 1051030, 1, 1, 0, 700), +(6822, 8140100, 1051031, 1, 1, 0, 700), +(6823, 8140100, 1051034, 1, 1, 0, 700), +(6824, 8140100, 1412003, 1, 1, 0, 700), +(6825, 8140100, 1302018, 1, 1, 0, 700), +(6826, 8140100, 4004001, 1, 1, 0, 10000), +(6827, 8140100, 1040100, 1, 1, 0, 800), +(6828, 8140100, 1060089, 1, 1, 0, 800), +(6829, 8140100, 1492009, 1, 1, 0, 500), +(6830, 8140100, 2044802, 1, 1, 0, 300), +(6831, 8140100, 2040318, 1, 1, 0, 300), +(6832, 8140100, 2040619, 1, 1, 0, 300), +(6833, 8140100, 2040927, 1, 1, 0, 300), +(6834, 8140100, 2044012, 1, 1, 0, 300), +(6835, 8140100, 4130004, 1, 1, 0, 6000), +(6836, 8140101, 4000234, 1, 1, 0, 600000), +(6837, 8140101, 2000006, 1, 1, 0, 20000), +(6838, 8140101, 2000005, 1, 1, 0, 20000), +(6839, 8140101, 4010003, 1, 1, 0, 9000), +(6840, 8140101, 4020001, 1, 1, 0, 9000), +(6841, 8140101, 2048004, 1, 1, 0, 300), +(6842, 8140101, 2040901, 1, 1, 0, 300), +(6843, 8140101, 4006001, 1, 1, 0, 10000), +(6844, 8140101, 4004003, 1, 1, 0, 10000), +(6845, 8140101, 2000002, 1, 1, 0, 20000), +(6846, 8140101, 1082117, 1, 1, 0, 1000), +(6847, 8140101, 1072179, 1, 1, 0, 800), +(6848, 8140101, 1002328, 1, 1, 0, 1500), +(6849, 8140101, 1040109, 1, 1, 0, 800), +(6850, 8140101, 1060098, 1, 1, 0, 800), +(6851, 8140101, 1452014, 1, 1, 0, 500), +(6852, 8140101, 1382008, 1, 1, 0, 700), +(6853, 8140101, 1032023, 1, 1, 0, 1000), +(6854, 8140101, 1092026, 1, 1, 0, 700), +(6855, 8140101, 1312030, 1, 1, 0, 700), +(6856, 8140101, 1402035, 1, 1, 0, 700), +(6857, 8140101, 1472053, 1, 1, 0, 500), +(6858, 8140101, 1002640, 1, 1, 0, 1500), +(6859, 8140101, 2040825, 1, 1, 0, 300), +(6860, 8140101, 4130001, 1, 1, 0, 6000), +(6861, 8140101, 4130007, 1, 1, 0, 6000), +(6862, 8140102, 4000232, 1, 1, 0, 600000), +(6863, 8140102, 2000006, 1, 1, 0, 20000), +(6864, 8140102, 2000005, 1, 1, 0, 20000), +(6865, 8140102, 4010001, 1, 1, 0, 9000), +(6866, 8140102, 4020000, 1, 1, 0, 9000), +(6867, 8140102, 2040805, 1, 1, 0, 300), +(6868, 8140102, 2040703, 1, 1, 0, 300), +(6869, 8140102, 4006000, 1, 1, 0, 10000), +(6870, 8140102, 4004004, 1, 1, 0, 10000), +(6871, 8140102, 2000002, 1, 1, 0, 20000), +(6872, 8140102, 1072211, 1, 1, 0, 800), +(6873, 8140102, 1002274, 1, 1, 0, 1500), +(6874, 8140102, 1051068, 1, 1, 0, 700), +(6875, 8140102, 1082118, 1, 1, 0, 1000), +(6876, 8140102, 1402004, 1, 1, 0, 700), +(6877, 8140102, 1332023, 1, 1, 0, 500), +(6878, 8140102, 1032022, 1, 1, 0, 1000), +(6879, 8140102, 1092023, 1, 1, 0, 700), +(6880, 8140102, 1422027, 1, 1, 0, 700), +(6881, 8140102, 1452019, 1, 1, 0, 500), +(6882, 8140102, 1382035, 1, 1, 0, 700), +(6883, 8140102, 1432004, 1, 1, 0, 500), +(6884, 8140102, 4161015, 1, 1, 0, 6000), +(6885, 8140102, 1002643, 1, 1, 0, 1500), +(6886, 8140102, 2331000, 1, 1, 0, 500), +(6887, 8140102, 2040321, 1, 1, 0, 300), +(6888, 8140102, 2040622, 1, 1, 0, 300), +(6889, 8140102, 2044807, 1, 1, 0, 300), +(6890, 8140102, 4130000, 1, 1, 0, 6000), +(6891, 8140102, 4130002, 1, 1, 0, 6000), +(6892, 8140102, 4130013, 1, 1, 0, 6000), +(6893, 8140103, 4000233, 1, 1, 0, 600000), +(6894, 8140103, 2000006, 1, 1, 0, 20000), +(6895, 8140103, 2000005, 1, 1, 0, 20000), +(6896, 8140103, 4010000, 1, 1, 0, 9000), +(6897, 8140103, 4020001, 1, 1, 0, 9000), +(6898, 8140103, 2040004, 1, 1, 0, 300), +(6899, 8140103, 2043701, 1, 1, 0, 300), +(6900, 8140103, 4006000, 1, 1, 0, 10000), +(6901, 8140103, 4004002, 1, 1, 0, 10000), +(6902, 8140103, 2000002, 1, 1, 0, 20000), +(6903, 8140103, 1082116, 1, 1, 0, 1000), +(6904, 8140103, 1072177, 1, 1, 0, 800), +(6905, 8140103, 1002277, 1, 1, 0, 1500), +(6906, 8140103, 1041106, 1, 1, 0, 800), +(6907, 8140103, 1061105, 1, 1, 0, 800), +(6908, 8140103, 1412009, 1, 1, 0, 700), +(6909, 8140103, 1452013, 1, 1, 0, 500), +(6910, 8140103, 1442019, 1, 1, 0, 700), +(6911, 8140103, 1102032, 1, 1, 0, 1000), +(6912, 8140103, 1332051, 1, 1, 0, 500), +(6913, 8140103, 1322045, 1, 1, 0, 700), +(6914, 8140103, 1412021, 1, 1, 0, 700), +(6915, 8140103, 1432011, 1, 1, 0, 500), +(6916, 8140103, 4161016, 1, 1, 0, 6000), +(6917, 8140103, 1492010, 1, 1, 0, 500), +(6918, 8140103, 2332000, 1, 1, 0, 500), +(6919, 8140103, 2044314, 1, 1, 0, 300), +(6920, 8140103, 4130005, 1, 1, 0, 6000), +(6921, 8140103, 4130011, 1, 1, 0, 6000), +(6922, 8140103, 4130017, 1, 1, 0, 6000), +(6923, 8140110, 4000241, 1, 1, 0, 600000), +(6924, 8140110, 2000006, 1, 1, 0, 20000), +(6925, 8140110, 2000005, 1, 1, 0, 20000), +(6926, 8140110, 4020008, 1, 1, 0, 9000), +(6927, 8140110, 4010006, 1, 1, 0, 9000), +(6928, 8140110, 2044702, 1, 1, 0, 300), +(6929, 8140110, 2043802, 1, 1, 0, 300), +(6930, 8140110, 4006000, 1, 1, 0, 10000), +(6931, 8140110, 4004002, 1, 1, 0, 10000), +(6932, 8140110, 2000002, 1, 1, 0, 20000), +(6933, 8140110, 1050083, 1, 1, 0, 700), +(6934, 8140110, 1082119, 1, 1, 0, 1000), +(6935, 8140110, 1072185, 1, 1, 0, 800), +(6936, 8140110, 1002330, 1, 1, 0, 1500), +(6937, 8140110, 1092027, 1, 1, 0, 700), +(6938, 8140110, 1452015, 1, 1, 0, 500), +(6939, 8140110, 1462013, 1, 1, 0, 500), +(6940, 8140110, 1432010, 1, 1, 0, 500), +(6941, 8140110, 1302056, 1, 1, 0, 700), +(6942, 8140110, 1372010, 1, 1, 0, 700), +(6943, 8140110, 1332052, 1, 1, 0, 500), +(6944, 8140110, 1482010, 1, 1, 0, 500), +(6945, 8140110, 2044801, 1, 1, 0, 300), +(6946, 8140111, 4000242, 1, 1, 0, 600000), +(6947, 8140111, 2000006, 1, 1, 0, 20000), +(6948, 8140111, 2000005, 1, 1, 0, 20000), +(6949, 8140111, 4010003, 1, 1, 0, 9000), +(6950, 8140111, 4020003, 1, 1, 0, 9000), +(6951, 8140111, 2041014, 1, 1, 0, 300), +(6952, 8140111, 2044001, 1, 1, 0, 300), +(6953, 8140111, 4006001, 1, 1, 0, 10000), +(6954, 8140111, 4004003, 1, 1, 0, 10000), +(6955, 8140111, 2000002, 1, 1, 0, 20000), +(6956, 8140111, 2070006, 1, 1, 0, 200), +(6957, 8140111, 1051080, 1, 1, 0, 700), +(6958, 8140111, 1082122, 1, 1, 0, 1000), +(6959, 8140111, 1072183, 1, 1, 0, 800), +(6960, 8140111, 1002328, 1, 1, 0, 1500), +(6961, 8140111, 1092025, 1, 1, 0, 700), +(6962, 8140111, 1372016, 1, 1, 0, 700), +(6963, 8140111, 1472031, 1, 1, 0, 500), +(6964, 8140111, 1032023, 1, 1, 0, 1000), +(6965, 8140111, 1432030, 1, 1, 0, 500), +(6966, 8140111, 1442044, 1, 1, 0, 700), +(6967, 8140111, 1462015, 1, 1, 0, 500), +(6968, 8140111, 2330003, 1, 1, 0, 500), +(6969, 8140111, 1482010, 1, 1, 0, 500), +(6970, 8140111, 2040323, 1, 1, 0, 300), +(6971, 8140111, 2043214, 1, 1, 0, 300), +(6972, 8140111, 4130001, 1, 1, 0, 6000), +(6973, 8140111, 4130007, 1, 1, 0, 6000), +(6974, 8140111, 4130012, 1, 1, 0, 6000), +(6975, 8140200, 4000145, 1, 1, 0, 600000), +(6976, 8140200, 4010001, 1, 1, 0, 9000), +(6977, 8140200, 4020001, 1, 1, 0, 9000), +(6978, 8140200, 4004003, 1, 1, 0, 10000), +(6979, 8140200, 4006001, 1, 1, 0, 10000), +(6980, 8140200, 2000006, 1, 1, 0, 20000), +(6981, 8140200, 2000004, 1, 1, 0, 20000), +(6982, 8140200, 2002003, 1, 1, 0, 20000), +(6983, 8140200, 2040302, 1, 1, 0, 300), +(6984, 8140200, 2040802, 1, 1, 0, 300), +(6985, 8140200, 2020014, 1, 1, 0, 20000), +(6986, 8140200, 1050054, 1, 1, 0, 700), +(6987, 8140200, 1002270, 1, 1, 0, 1500), +(6988, 8140200, 1040093, 1, 1, 0, 800), +(6989, 8140200, 1060082, 1, 1, 0, 800), +(6990, 8140200, 1082059, 1, 1, 0, 1000), +(6991, 8140200, 1072144, 1, 1, 0, 800), +(6992, 8140200, 1050058, 1, 1, 0, 700), +(6993, 8140200, 1472022, 1, 1, 0, 500), +(6994, 8140200, 1051052, 1, 1, 0, 700), +(6995, 8140200, 1072162, 1, 1, 0, 800), +(6996, 8140200, 1082104, 1, 1, 0, 1000), +(6997, 8140200, 1072159, 1, 1, 0, 800), +(6998, 8140200, 1051062, 1, 1, 0, 700), +(6999, 8140200, 1032015, 1, 1, 0, 1000), +(7000, 8140200, 1322019, 1, 1, 0, 700), +(7001, 8140200, 1032022, 1, 1, 0, 1000), +(7002, 8140200, 1050073, 1, 1, 0, 700), +(7003, 8140200, 1072182, 1, 1, 0, 800), +(7004, 8140200, 1082114, 1, 1, 0, 1000), +(7005, 8140200, 1482009, 1, 1, 0, 500), +(7006, 8140200, 2040318, 1, 1, 0, 300), +(7007, 8140200, 2040925, 1, 1, 0, 300), +(7008, 8140200, 4130000, 1, 1, 0, 6000), +(7009, 8140200, 4130014, 1, 1, 0, 6000), +(7010, 8140200, 4130016, 1, 1, 0, 6000), +(7011, 8140300, 4000146, 1, 1, 0, 600000), +(7012, 8140300, 2000006, 1, 1, 0, 20000), +(7013, 8140300, 2000004, 1, 1, 0, 20000), +(7014, 8140300, 4020007, 1, 1, 0, 9000), +(7015, 8140300, 4010005, 1, 1, 0, 9000), +(7016, 8140300, 4006000, 1, 1, 0, 10000), +(7017, 8140300, 4004004, 1, 1, 0, 10000), +(7018, 8140300, 2040513, 1, 1, 0, 300), +(7019, 8140300, 2044602, 1, 1, 0, 300), +(7020, 8140300, 1051043, 1, 1, 0, 700), +(7021, 8140300, 1041096, 1, 1, 0, 800), +(7022, 8140300, 1061095, 1, 1, 0, 800), +(7023, 8140300, 1040090, 1, 1, 0, 800), +(7024, 8140300, 1060079, 1, 1, 0, 800), +(7025, 8140300, 1051055, 1, 1, 0, 700), +(7026, 8140300, 1060095, 1, 1, 0, 800), +(7027, 8140300, 1040107, 1, 1, 0, 800), +(7028, 8140300, 1002252, 1, 1, 0, 1500), +(7029, 8140300, 1002289, 1, 1, 0, 1500), +(7030, 8140300, 1072160, 1, 1, 0, 800), +(7031, 8140300, 1041099, 1, 1, 0, 800), +(7032, 8140300, 1061098, 1, 1, 0, 800), +(7033, 8140300, 1002288, 1, 1, 0, 1500), +(7034, 8140300, 1472027, 1, 1, 0, 500), +(7035, 8140300, 1322020, 1, 1, 0, 700), +(7036, 8140300, 1382010, 1, 1, 0, 700), +(7037, 8140300, 1051057, 1, 1, 0, 700), +(7038, 8140300, 1040109, 1, 1, 0, 800), +(7039, 8140300, 1060098, 1, 1, 0, 800), +(7040, 8140300, 1002277, 1, 1, 0, 1500), +(7041, 8140300, 1002340, 1, 1, 0, 1500), +(7042, 8140300, 2070005, 1, 1, 0, 400), +(7043, 8140300, 1492009, 1, 1, 0, 500), +(7044, 8140300, 2040622, 1, 1, 0, 300), +(7045, 8140300, 2040623, 1, 1, 0, 300), +(7046, 8140300, 2043110, 1, 1, 0, 300), +(7047, 8140300, 4130016, 1, 1, 0, 6000), +(7048, 8140300, 4130017, 1, 1, 0, 6000), +(7049, 8140500, 4000080, 1, 1, 0, 600000), +(7050, 8140500, 4003005, 1, 1, 0, 200000), +(7051, 8140500, 2000006, 1, 1, 0, 20000), +(7052, 8140500, 2000005, 1, 1, 0, 20000), +(7053, 8140500, 4020007, 1, 1, 0, 9000), +(7054, 8140500, 4020001, 1, 1, 0, 9000), +(7055, 8140500, 4004000, 1, 1, 0, 10000), +(7056, 8140500, 2044001, 1, 1, 0, 300), +(7057, 8140500, 2041022, 1, 1, 0, 300), +(7058, 8140500, 1050070, 1, 1, 0, 700), +(7059, 8140500, 1072156, 1, 1, 0, 800), +(7060, 8140500, 1072164, 1, 1, 0, 800), +(7061, 8140500, 1082096, 1, 1, 0, 1000), +(7062, 8140500, 1312011, 1, 1, 0, 700), +(7063, 8140500, 1082111, 1, 1, 0, 1000), +(7064, 8140500, 1082117, 1, 1, 0, 1000), +(7065, 8140500, 1082121, 1, 1, 0, 1000), +(7066, 8140500, 1092024, 1, 1, 0, 700), +(7067, 8140500, 1072174, 1, 1, 0, 800), +(7068, 8140500, 1050078, 1, 1, 0, 700), +(7069, 8140500, 1060098, 1, 1, 0, 800), +(7070, 8140500, 1040109, 1, 1, 0, 800), +(7071, 8140500, 1002340, 1, 1, 0, 1500), +(7072, 8140500, 1452014, 1, 1, 0, 500), +(7073, 8140500, 1060104, 1, 1, 0, 800), +(7074, 8140500, 1040115, 1, 1, 0, 800), +(7075, 8140500, 1072208, 1, 1, 0, 800), +(7076, 8140500, 1082126, 1, 1, 0, 1000), +(7077, 8140500, 1032017, 1, 1, 0, 1000), +(7078, 8140500, 1072195, 1, 1, 0, 800), +(7079, 8140500, 1052125, 1, 1, 0, 700), +(7080, 8140500, 4130006, 1, 1, 0, 6000), +(7081, 8140500, 4130014, 1, 1, 0, 6000), +(7082, 8140600, 4000182, 1, 1, 0, 600000), +(7083, 8140600, 2000006, 1, 1, 0, 20000), +(7084, 8140600, 2000005, 1, 1, 0, 20000), +(7085, 8140600, 2020015, 1, 1, 0, 20000), +(7086, 8140600, 2020013, 1, 1, 0, 20000), +(7087, 8140600, 4020007, 1, 1, 0, 9000), +(7088, 8140600, 4020001, 1, 1, 0, 9000), +(7089, 8140600, 4004000, 1, 1, 0, 10000), +(7090, 8140600, 2040401, 1, 1, 0, 300), +(7091, 8140600, 2040501, 1, 1, 0, 300), +(7092, 8140600, 1472028, 1, 1, 0, 500), +(7093, 8140600, 2040513, 1, 1, 0, 300), +(7094, 8140600, 1452013, 1, 1, 0, 500), +(7095, 8140600, 1472023, 1, 1, 0, 500), +(7096, 8140600, 1462008, 1, 1, 0, 500), +(7097, 8140600, 1102030, 1, 1, 0, 1000), +(7098, 8140600, 1040111, 1, 1, 0, 800), +(7099, 8140600, 1060100, 1, 1, 0, 800), +(7100, 8140600, 1060098, 1, 1, 0, 800), +(7101, 8140600, 1040109, 1, 1, 0, 800), +(7102, 8140600, 1082108, 1, 1, 0, 1000), +(7103, 8140600, 1082117, 1, 1, 0, 1000), +(7104, 8140600, 1032017, 1, 1, 0, 1000), +(7105, 8140600, 1072160, 1, 1, 0, 800), +(7106, 8140600, 1002324, 1, 1, 0, 1500), +(7107, 8140600, 1072194, 1, 1, 0, 800), +(7108, 8140600, 1072205, 1, 1, 0, 800), +(7109, 8140600, 1052128, 1, 1, 0, 700), +(7110, 8140600, 2040929, 1, 1, 0, 300), +(7111, 8140600, 2049100, 1, 1, 0, 150), +(7112, 8140600, 4130010, 1, 1, 0, 6000), +(7113, 8140600, 4130015, 1, 1, 0, 6000), +(7114, 8140600, 4130016, 1, 1, 0, 6000), +(7115, 8140700, 2000006, 1, 1, 0, 20000), +(7116, 8140700, 2000005, 1, 1, 0, 20000), +(7117, 8140700, 4020007, 1, 1, 0, 9000), +(7118, 8140700, 4020001, 1, 1, 0, 9000), +(7119, 8140700, 4004000, 1, 1, 0, 10000), +(7120, 8140700, 1002528, 1, 1, 0, 1500), +(7121, 8140700, 1040117, 1, 1, 0, 800), +(7122, 8140700, 1060106, 1, 1, 0, 800), +(7123, 8140700, 1041120, 1, 1, 0, 800), +(7124, 8140700, 1061119, 1, 1, 0, 800), +(7125, 8140700, 1082134, 1, 1, 0, 1000), +(7126, 8140700, 1072204, 1, 1, 0, 800), +(7127, 8140700, 1372009, 1, 1, 0, 700), +(7128, 8140700, 1472033, 1, 1, 0, 500), +(7129, 8140700, 2043801, 1, 1, 0, 300), +(7130, 8140700, 2041022, 1, 1, 0, 300), +(7131, 8140700, 4000262, 1, 1, 0, 600000), +(7132, 8140700, 4000244, 1, 1, 0, 2000), +(7133, 8140700, 4000245, 1, 1, 0, 2000), +(7134, 8140700, 1082207, 1, 1, 0, 1000), +(7135, 8140700, 2044902, 1, 1, 0, 300), +(7136, 8140700, 2290106, 1, 1, 0, 500), +(7137, 8140700, 2040515, 1, 1, 0, 300), +(7138, 8140700, 2044314, 1, 1, 0, 300), +(7139, 8140700, 2044805, 1, 1, 0, 300), +(7140, 8140700, 4130007, 1, 1, 0, 6000), +(7141, 8140700, 4130012, 1, 1, 0, 6000), +(7142, 8140701, 2000006, 1, 1, 0, 20000), +(7143, 8140701, 2000005, 1, 1, 0, 20000), +(7144, 8140701, 4010001, 1, 1, 0, 9000), +(7145, 8140701, 4020005, 1, 1, 0, 9000), +(7146, 8140701, 4004001, 1, 1, 0, 10000), +(7147, 8140701, 1002365, 1, 1, 0, 1500), +(7148, 8140701, 1040111, 1, 1, 0, 800), +(7149, 8140701, 1060100, 1, 1, 0, 800), +(7150, 8140701, 1051096, 1, 1, 0, 700), +(7151, 8140701, 1082144, 1, 1, 0, 1000), +(7152, 8140701, 1072197, 1, 1, 0, 800), +(7153, 8140701, 1302023, 1, 1, 0, 700), +(7154, 8140701, 1332027, 1, 1, 0, 500), +(7155, 8140701, 2044601, 1, 1, 0, 300), +(7156, 8140701, 2044101, 1, 1, 0, 300), +(7157, 8140701, 4000263, 1, 1, 0, 600000), +(7158, 8140701, 4000244, 1, 1, 0, 2000), +(7159, 8140701, 4000245, 1, 1, 0, 2000), +(7160, 8140701, 1082210, 1, 1, 0, 1000), +(7161, 8140701, 2290122, 1, 1, 0, 500), +(7162, 8140701, 2040925, 1, 1, 0, 300), +(7163, 8140701, 4130003, 1, 1, 0, 6000), +(7164, 8140701, 4130008, 1, 1, 0, 6000), +(7165, 8140702, 2000006, 1, 1, 0, 20000), +(7166, 8140702, 2000005, 1, 1, 0, 20000), +(7167, 8140702, 4020003, 1, 1, 0, 9000), +(7168, 8140702, 4020008, 1, 1, 0, 9000), +(7169, 8140702, 4004002, 1, 1, 0, 10000), +(7170, 8140702, 1002403, 1, 1, 0, 1500), +(7171, 8140702, 1050092, 1, 1, 0, 700), +(7172, 8140702, 1041117, 1, 1, 0, 800), +(7173, 8140702, 1061116, 1, 1, 0, 800), +(7174, 8140702, 1050106, 1, 1, 0, 700), +(7175, 8140702, 1082139, 1, 1, 0, 1000), +(7176, 8140702, 1072206, 1, 1, 0, 800), +(7177, 8140702, 1312015, 1, 1, 0, 700), +(7178, 8140702, 1452017, 1, 1, 0, 500), +(7179, 8140702, 2044701, 1, 1, 0, 300), +(7180, 8140702, 2040602, 1, 1, 0, 300), +(7181, 8140702, 4000264, 1, 1, 0, 600000), +(7182, 8140702, 4000244, 1, 1, 0, 2000), +(7183, 8140702, 4000245, 1, 1, 0, 2000), +(7184, 8140702, 1492011, 1, 1, 0, 500), +(7185, 8140702, 2290112, 1, 1, 0, 500), +(7186, 8140702, 2040621, 1, 1, 0, 300), +(7187, 8140702, 2043015, 1, 1, 0, 300), +(7188, 8140702, 4130004, 1, 1, 0, 6000), +(7189, 8140702, 4130005, 1, 1, 0, 6000), +(7190, 8140702, 4130015, 1, 1, 0, 6000), +(7191, 8140703, 2000006, 1, 1, 0, 20000), +(7192, 8140703, 2000005, 1, 1, 0, 20000), +(7193, 8140703, 4020008, 1, 1, 0, 9000), +(7194, 8140703, 4020006, 1, 1, 0, 9000), +(7195, 8140703, 4004003, 1, 1, 0, 10000), +(7196, 8140703, 1002325, 1, 1, 0, 1500), +(7197, 8140703, 1050090, 1, 1, 0, 700), +(7198, 8140703, 1051082, 1, 1, 0, 700), +(7199, 8140703, 1082151, 1, 1, 0, 1000), +(7200, 8140703, 1040120, 1, 1, 0, 800), +(7201, 8140703, 1060109, 1, 1, 0, 800), +(7202, 8140703, 1072212, 1, 1, 0, 800), +(7203, 8140703, 1322029, 1, 1, 0, 700), +(7204, 8140703, 1442020, 1, 1, 0, 700), +(7205, 8140703, 2043801, 1, 1, 0, 300), +(7206, 8140703, 2040901, 1, 1, 0, 300), +(7207, 8140703, 4000265, 1, 1, 0, 600000), +(7208, 8140703, 4000244, 1, 1, 0, 2000), +(7209, 8140703, 4000245, 1, 1, 0, 2000), +(7210, 8140703, 1082159, 1, 1, 0, 1000), +(7211, 8140703, 2290088, 1, 1, 0, 500), +(7212, 8140703, 1002643, 1, 1, 0, 1500), +(7213, 8140703, 2044801, 1, 1, 0, 300), +(7214, 8140703, 2290099, 1, 1, 0, 500), +(7215, 8141000, 4000134, 1, 1, 0, 600000), +(7216, 8141000, 2000002, 1, 1, 0, 20000), +(7217, 8141000, 2000006, 1, 1, 0, 20000), +(7218, 8141000, 4010001, 1, 1, 0, 9000), +(7219, 8141000, 4020008, 1, 1, 0, 9000), +(7220, 8141000, 4004000, 1, 1, 0, 10000), +(7221, 8141000, 2044602, 1, 1, 0, 300), +(7222, 8141000, 2070006, 1, 1, 0, 200), +(7223, 8141000, 1051063, 1, 1, 0, 700), +(7224, 8141000, 1002254, 1, 1, 0, 1500), +(7225, 8141000, 1002285, 1, 1, 0, 1500), +(7226, 8141000, 1422010, 1, 1, 0, 700), +(7227, 8141000, 1050074, 1, 1, 0, 700), +(7228, 8141000, 1050072, 1, 1, 0, 700), +(7229, 8141000, 1322028, 1, 1, 0, 700), +(7230, 8141000, 1002327, 1, 1, 0, 1500), +(7231, 8141000, 1002278, 1, 1, 0, 1500), +(7232, 8141000, 1050083, 1, 1, 0, 700), +(7233, 8141000, 1041106, 1, 1, 0, 800), +(7234, 8141000, 1061105, 1, 1, 0, 800), +(7235, 8141000, 1050076, 1, 1, 0, 700), +(7236, 8141000, 1082115, 1, 1, 0, 1000), +(7237, 8141000, 1051068, 1, 1, 0, 700), +(7238, 8141000, 1051079, 1, 1, 0, 700), +(7239, 8141000, 1040112, 1, 1, 0, 800), +(7240, 8141000, 1060101, 1, 1, 0, 800), +(7241, 8141000, 1041117, 1, 1, 0, 800), +(7242, 8141000, 1061116, 1, 1, 0, 800), +(7243, 8141000, 1082132, 1, 1, 0, 1000), +(7244, 8141000, 2290082, 1, 1, 0, 500), +(7245, 8141000, 1072315, 1, 1, 0, 800), +(7246, 8141000, 2044802, 1, 1, 0, 300), +(7247, 8141000, 2290097, 1, 1, 0, 500), +(7248, 8141000, 2040317, 1, 1, 0, 300), +(7249, 8141000, 2040929, 1, 1, 0, 300), +(7250, 8141000, 2044809, 1, 1, 0, 300), +(7251, 8141000, 2049000, 1, 1, 0, 150), +(7252, 8141000, 4130013, 1, 1, 0, 6000), +(7253, 8141100, 4000135, 1, 1, 0, 600000), +(7254, 8141100, 2000006, 1, 1, 0, 20000), +(7255, 8141100, 2000005, 1, 1, 0, 20000), +(7256, 8141100, 4020008, 1, 1, 0, 9000), +(7257, 8141100, 4004004, 1, 1, 0, 10000), +(7258, 8141100, 2043002, 1, 1, 0, 300), +(7259, 8141100, 2040902, 1, 1, 0, 300), +(7260, 8141100, 4131003, 1, 1, 0, 6000), +(7261, 8141100, 4006001, 1, 1, 0, 10000), +(7262, 8141100, 1082105, 1, 1, 0, 1000), +(7263, 8141100, 1072165, 1, 1, 0, 800), +(7264, 8141100, 1051058, 1, 1, 0, 700), +(7265, 8141100, 1402015, 1, 1, 0, 700), +(7266, 8141100, 1050081, 1, 1, 0, 700), +(7267, 8141100, 1050077, 1, 1, 0, 700), +(7268, 8141100, 1002329, 1, 1, 0, 1500), +(7269, 8141100, 1051080, 1, 1, 0, 700), +(7270, 8141100, 1072185, 1, 1, 0, 800), +(7271, 8141100, 1082119, 1, 1, 0, 1000), +(7272, 8141100, 1462012, 1, 1, 0, 500), +(7273, 8141100, 1050093, 1, 1, 0, 700), +(7274, 8141100, 1051083, 1, 1, 0, 700), +(7275, 8141100, 1061115, 1, 1, 0, 800), +(7276, 8141100, 1041116, 1, 1, 0, 800), +(7277, 8141100, 1082134, 1, 1, 0, 1000), +(7278, 8141100, 2040025, 1, 1, 0, 300), +(7279, 8141100, 2040031, 1, 1, 0, 300), +(7280, 8141100, 2040418, 1, 1, 0, 300), +(7281, 8141100, 2040427, 1, 1, 0, 300), +(7282, 8141100, 4130000, 1, 1, 0, 6000), +(7283, 8141100, 4130010, 1, 1, 0, 6000), +(7284, 8141100, 4130016, 1, 1, 0, 6000), +(7285, 8141300, 4000183, 1, 1, 0, 600000), +(7286, 8141300, 2000005, 1, 1, 0, 20000), +(7287, 8141300, 2020013, 1, 1, 0, 20000), +(7288, 8141300, 2002001, 1, 1, 0, 20000), +(7289, 8141300, 2000002, 1, 1, 0, 20000), +(7290, 8141300, 4020006, 1, 1, 0, 9000), +(7291, 8141300, 4004004, 1, 1, 0, 10000), +(7292, 8141300, 4006000, 1, 1, 0, 10000), +(7293, 8141300, 2020015, 1, 1, 0, 20000), +(7294, 8141300, 4010006, 1, 1, 0, 9000), +(7295, 8141300, 2040601, 1, 1, 0, 300), +(7296, 8141300, 2040701, 1, 1, 0, 300), +(7297, 8141300, 1072207, 1, 1, 0, 800), +(7298, 8141300, 1032020, 1, 1, 0, 1000), +(7299, 8141300, 1002271, 1, 1, 0, 1500), +(7300, 8141300, 1072183, 1, 1, 0, 800), +(7301, 8141300, 1102026, 1, 1, 0, 1000), +(7302, 8141300, 1041119, 1, 1, 0, 800), +(7303, 8141300, 1061118, 1, 1, 0, 800), +(7304, 8141300, 1452011, 1, 1, 0, 500), +(7305, 8141300, 1442008, 1, 1, 0, 700), +(7306, 8141300, 1432007, 1, 1, 0, 500), +(7307, 8141300, 1050089, 1, 1, 0, 700), +(7308, 8141300, 1051083, 1, 1, 0, 700), +(7309, 8141300, 1092027, 1, 1, 0, 700), +(7310, 8141300, 1002365, 1, 1, 0, 1500), +(7311, 8141300, 1072224, 1, 1, 0, 800), +(7312, 8141300, 1482011, 1, 1, 0, 500), +(7313, 8141300, 2290098, 1, 1, 0, 500), +(7314, 8141300, 2040618, 1, 1, 0, 300), +(7315, 8141300, 2040512, 1, 1, 0, 300), +(7316, 8141300, 2040627, 1, 1, 0, 300), +(7317, 8141300, 4130006, 1, 1, 0, 6000), +(7318, 8141300, 4130008, 1, 1, 0, 6000), +(7319, 8141300, 4130014, 1, 1, 0, 6000), +(7320, 8142000, 4000149, 1, 1, 0, 600000), +(7321, 8142000, 2000005, 1, 1, 0, 20000), +(7322, 8142000, 2002001, 1, 1, 0, 20000), +(7323, 8142000, 2000002, 1, 1, 0, 20000), +(7324, 8142000, 4020003, 1, 1, 0, 9000), +(7325, 8142000, 4004004, 1, 1, 0, 10000), +(7326, 8142000, 4006000, 1, 1, 0, 10000), +(7327, 8142000, 2020015, 1, 1, 0, 20000), +(7328, 8142000, 2044001, 1, 1, 0, 300), +(7329, 8142000, 2041022, 1, 1, 0, 300), +(7330, 8142000, 1432007, 1, 1, 0, 500), +(7331, 8142000, 1082107, 1, 1, 0, 1000), +(7332, 8142000, 1051056, 1, 1, 0, 700), +(7333, 8142000, 1332023, 1, 1, 0, 500), +(7334, 8142000, 1082112, 1, 1, 0, 1000), +(7335, 8142000, 1082116, 1, 1, 0, 1000), +(7336, 8142000, 1040110, 1, 1, 0, 800), +(7337, 8142000, 1060099, 1, 1, 0, 800), +(7338, 8142000, 1050076, 1, 1, 0, 700), +(7339, 8142000, 1072212, 1, 1, 0, 800), +(7340, 8142000, 1002339, 1, 1, 0, 1500), +(7341, 8142000, 1051078, 1, 1, 0, 700), +(7342, 8142000, 1452013, 1, 1, 0, 500), +(7343, 8142000, 1051067, 1, 1, 0, 700), +(7344, 8142000, 1051096, 1, 1, 0, 700), +(7345, 8142000, 1050091, 1, 1, 0, 700), +(7346, 8142000, 1040111, 1, 1, 0, 800), +(7347, 8142000, 1060100, 1, 1, 0, 800), +(7348, 8142000, 1082133, 1, 1, 0, 1000), +(7349, 8142000, 1492011, 1, 1, 0, 500), +(7350, 8142000, 2040427, 1, 1, 0, 300), +(7351, 8142000, 4130003, 1, 1, 0, 6000), +(7352, 8142000, 4130009, 1, 1, 0, 6000), +(7353, 8142100, 4000184, 1, 1, 0, 600000), +(7354, 8142100, 2000006, 1, 1, 0, 20000), +(7355, 8142100, 2000005, 1, 1, 0, 20000), +(7356, 8142100, 4010004, 1, 1, 0, 9000), +(7357, 8142100, 4020004, 1, 1, 0, 9000), +(7358, 8142100, 4004001, 1, 1, 0, 10000), +(7359, 8142100, 4006000, 1, 1, 0, 10000), +(7360, 8142100, 1412009, 1, 1, 0, 700), +(7361, 8142100, 2040801, 1, 1, 0, 300), +(7362, 8142100, 2040804, 1, 1, 0, 300), +(7363, 8142100, 1422010, 1, 1, 0, 700), +(7364, 8142100, 1092025, 1, 1, 0, 700), +(7365, 8142100, 1072197, 1, 1, 0, 800), +(7366, 8142100, 1040110, 1, 1, 0, 800), +(7367, 8142100, 1060099, 1, 1, 0, 800), +(7368, 8142100, 1032017, 1, 1, 0, 1000), +(7369, 8142100, 1041118, 1, 1, 0, 800), +(7370, 8142100, 1061117, 1, 1, 0, 800), +(7371, 8142100, 1050090, 1, 1, 0, 700), +(7372, 8142100, 1051084, 1, 1, 0, 700), +(7373, 8142100, 1050095, 1, 1, 0, 700), +(7374, 8142100, 1051097, 1, 1, 0, 700), +(7375, 8142100, 4006001, 1, 1, 0, 10000), +(7376, 8142100, 1092026, 1, 1, 0, 700), +(7377, 8142100, 1002325, 1, 1, 0, 1500), +(7378, 8142100, 1092028, 1, 1, 0, 700), +(7379, 8142100, 1072220, 1, 1, 0, 800), +(7380, 8142100, 2290032, 1, 1, 0, 500), +(7381, 8142100, 2290114, 1, 1, 0, 500), +(7382, 8142100, 2040318, 1, 1, 0, 300), +(7383, 8142100, 2043019, 1, 1, 0, 300), +(7384, 8142100, 4130000, 1, 1, 0, 6000), +(7385, 8142100, 4130009, 1, 1, 0, 6000), +(7386, 8143000, 4000150, 1, 1, 0, 600000), +(7387, 8143000, 2000002, 1, 1, 0, 20000), +(7388, 8143000, 2000005, 1, 1, 0, 20000), +(7389, 8143000, 2022003, 1, 1, 0, 20000), +(7390, 8143000, 2002002, 1, 1, 0, 20000), +(7391, 8143000, 4010001, 1, 1, 0, 9000), +(7392, 8143000, 4006001, 1, 1, 0, 10000), +(7393, 8143000, 4010002, 1, 1, 0, 9000), +(7394, 8143000, 2044702, 1, 1, 0, 300), +(7395, 8143000, 2040401, 1, 1, 0, 300), +(7396, 8143000, 1002283, 1, 1, 0, 1500), +(7397, 8143000, 1050064, 1, 1, 0, 700), +(7398, 8143000, 1092016, 1, 1, 0, 700), +(7399, 8143000, 1422012, 1, 1, 0, 700), +(7400, 8143000, 1462010, 1, 1, 0, 500), +(7401, 8143000, 1082122, 1, 1, 0, 1000), +(7402, 8143000, 1082120, 1, 1, 0, 1000), +(7403, 8143000, 1072183, 1, 1, 0, 800), +(7404, 8143000, 1082117, 1, 1, 0, 1000), +(7405, 8143000, 1072179, 1, 1, 0, 800), +(7406, 8143000, 1002328, 1, 1, 0, 1500), +(7407, 8143000, 1051094, 1, 1, 0, 700), +(7408, 8143000, 1002402, 1, 1, 0, 1500), +(7409, 8143000, 1061118, 1, 1, 0, 800), +(7410, 8143000, 1041119, 1, 1, 0, 800), +(7411, 8143000, 1040116, 1, 1, 0, 800), +(7412, 8143000, 1060105, 1, 1, 0, 800), +(7413, 8143000, 1051084, 1, 1, 0, 700), +(7414, 8143000, 1082130, 1, 1, 0, 1000), +(7415, 8143000, 2043019, 1, 1, 0, 300), +(7416, 8143000, 4130011, 1, 1, 0, 6000), +(7417, 8143000, 4130016, 1, 1, 0, 6000), +(7418, 8143000, 4130017, 1, 1, 0, 6000), +(7419, 8150000, 2040002, 1, 1, 0, 3000), +(7420, 8150000, 2040005, 1, 1, 0, 3000), +(7421, 8150000, 2040302, 1, 1, 0, 3000), +(7422, 8150000, 2040402, 1, 1, 0, 3000), +(7423, 8150000, 2040502, 1, 1, 0, 3000), +(7424, 8150000, 2040505, 1, 1, 0, 3000), +(7425, 8150000, 2040602, 1, 1, 0, 3000), +(7426, 8150000, 2040702, 1, 1, 0, 3000), +(7427, 8150000, 2040705, 1, 1, 0, 3000), +(7428, 8150000, 2040708, 1, 1, 0, 3000), +(7429, 8150000, 2040802, 1, 1, 0, 3000), +(7430, 8150000, 2040805, 1, 1, 0, 3000), +(7431, 8150000, 2040902, 1, 1, 0, 3000), +(7432, 8150000, 2043002, 1, 1, 0, 3000), +(7433, 8150000, 2043102, 1, 1, 0, 3000), +(7434, 8150000, 2043202, 1, 1, 0, 3000), +(7435, 8150000, 2043302, 1, 1, 0, 3000), +(7436, 8150000, 2043702, 1, 1, 0, 3000), +(7437, 8150000, 2043802, 1, 1, 0, 3000), +(7438, 8150000, 2044002, 1, 1, 0, 3000), +(7439, 8150000, 2044102, 1, 1, 0, 3000), +(7440, 8150000, 2044202, 1, 1, 0, 3000), +(7441, 8150000, 2044302, 1, 1, 0, 3000), +(7442, 8150000, 2044402, 1, 1, 0, 3000), +(7443, 8150000, 2044502, 1, 1, 0, 3000), +(7444, 8150000, 2044602, 1, 1, 0, 3000), +(7445, 8150000, 2044702, 1, 1, 0, 3000), +(7446, 8150000, 2070007, 1, 1, 0, 2000), +(7447, 8150000, 2044802, 1, 1, 0, 3000), +(7448, 8150000, 2044902, 1, 1, 0, 3000), +(7449, 8150000, 2040029, 1, 1, 0, 3000), +(7450, 8150000, 2040425, 1, 1, 0, 3000), +(7451, 8150000, 2043212, 1, 1, 0, 3000), +(7452, 8150000, 2044012, 1, 1, 0, 3000), +(7453, 8150000, 2044212, 1, 1, 0, 3000), +(7454, 8150100, 4000180, 1, 1, 0, 600000), +(7455, 8150100, 2000006, 1, 1, 0, 20000), +(7456, 8150100, 2022003, 1, 1, 0, 20000), +(7457, 8150100, 4006000, 1, 1, 0, 10000), +(7458, 8150100, 2000005, 1, 1, 0, 20000), +(7459, 8150100, 4006001, 1, 1, 0, 10000), +(7460, 8150100, 2020013, 1, 1, 0, 20000), +(7461, 8150100, 4004002, 1, 1, 0, 10000), +(7462, 8150100, 4010005, 1, 1, 0, 9000), +(7463, 8150100, 2040901, 1, 1, 0, 300), +(7464, 8150100, 2041001, 1, 1, 0, 300), +(7465, 8150100, 1082142, 1, 1, 0, 1000), +(7466, 8150100, 1072192, 1, 1, 0, 800), +(7467, 8150100, 1072204, 1, 1, 0, 800), +(7468, 8150100, 1032017, 1, 1, 0, 1000), +(7469, 8150100, 1040112, 1, 1, 0, 800), +(7470, 8150100, 1060101, 1, 1, 0, 800), +(7471, 8150100, 1322028, 1, 1, 0, 700), +(7472, 8150100, 1332022, 1, 1, 0, 500), +(7473, 8150100, 1002405, 1, 1, 0, 1500), +(7474, 8150100, 2041013, 1, 1, 0, 300), +(7475, 8150100, 1002366, 1, 1, 0, 1500), +(7476, 8150100, 1072214, 1, 1, 0, 800), +(7477, 8150100, 4161018, 1, 1, 0, 6000), +(7478, 8150100, 1072315, 1, 1, 0, 800), +(7479, 8150100, 1052131, 1, 1, 0, 700), +(7480, 8150100, 2044902, 1, 1, 0, 300), +(7481, 8150100, 2290118, 1, 1, 0, 500), +(7482, 8150100, 4130006, 1, 1, 0, 6000), +(7483, 8150100, 4130007, 1, 1, 0, 6000), +(7484, 8150101, 4000181, 1, 1, 0, 600000), +(7485, 8150101, 2000006, 1, 1, 0, 20000), +(7486, 8150101, 2022003, 1, 1, 0, 20000), +(7487, 8150101, 4006000, 1, 1, 0, 10000), +(7488, 8150101, 2000005, 1, 1, 0, 20000), +(7489, 8150101, 4006001, 1, 1, 0, 10000), +(7490, 8150101, 2020013, 1, 1, 0, 20000), +(7491, 8150101, 4010002, 1, 1, 0, 9000), +(7492, 8150101, 4020007, 1, 1, 0, 9000), +(7493, 8150101, 2041022, 1, 1, 0, 300), +(7494, 8150101, 2043001, 1, 1, 0, 300), +(7495, 8150101, 1082143, 1, 1, 0, 1000), +(7496, 8150101, 1072193, 1, 1, 0, 800), +(7497, 8150101, 1072203, 1, 1, 0, 800), +(7498, 8150101, 1002403, 1, 1, 0, 1500), +(7499, 8150101, 1040117, 1, 1, 0, 800), +(7500, 8150101, 1060106, 1, 1, 0, 800), +(7501, 8150101, 1302018, 1, 1, 0, 700), +(7502, 8150101, 1312011, 1, 1, 0, 700), +(7503, 8150101, 1032023, 1, 1, 0, 1000), +(7504, 8150101, 2040301, 1, 1, 0, 300), +(7505, 8150101, 1002326, 1, 1, 0, 1500), +(7506, 8150101, 1072223, 1, 1, 0, 800), +(7507, 8150101, 2290042, 1, 1, 0, 500), +(7508, 8150101, 2290052, 1, 1, 0, 500), +(7509, 8150101, 4161018, 1, 1, 0, 6000), +(7510, 8150101, 1072318, 1, 1, 0, 800), +(7511, 8150101, 2290102, 1, 1, 0, 500), +(7512, 8150101, 2040420, 1, 1, 0, 300), +(7513, 8150101, 2040931, 1, 1, 0, 300), +(7514, 8150101, 2049100, 1, 1, 0, 150), +(7515, 8150101, 4130009, 1, 1, 0, 6000), +(7516, 8150101, 4130010, 1, 1, 0, 6000), +(7517, 8150200, 2000006, 1, 1, 0, 20000), +(7518, 8150200, 2000005, 1, 1, 0, 20000), +(7519, 8150200, 2022003, 1, 1, 0, 20000), +(7520, 8150200, 2020015, 1, 1, 0, 20000), +(7521, 8150200, 4010005, 1, 1, 0, 9000), +(7522, 8150200, 4010002, 1, 1, 0, 9000), +(7523, 8150200, 4004004, 1, 1, 0, 10000), +(7524, 8150200, 1002529, 1, 1, 0, 1500), +(7525, 8150200, 1050102, 1, 1, 0, 700), +(7526, 8150200, 1051105, 1, 1, 0, 700), +(7527, 8150200, 1051092, 1, 1, 0, 700), +(7528, 8150200, 1082135, 1, 1, 0, 1000), +(7529, 8150200, 1072194, 1, 1, 0, 800), +(7530, 8150200, 1092026, 1, 1, 0, 700), +(7531, 8150200, 1402005, 1, 1, 0, 700), +(7532, 8150200, 1462018, 1, 1, 0, 500), +(7533, 8150200, 2040001, 1, 1, 0, 300), +(7534, 8150200, 2043301, 1, 1, 0, 300), +(7535, 8150200, 4000266, 1, 1, 0, 600000), +(7536, 8150200, 4000244, 1, 1, 0, 2000), +(7537, 8150200, 4000245, 1, 1, 0, 2000), +(7538, 8150200, 1082210, 1, 1, 0, 1000), +(7539, 8150200, 1002646, 1, 1, 0, 1500), +(7540, 8150200, 2290100, 1, 1, 0, 500), +(7541, 8150200, 2040425, 1, 1, 0, 300), +(7542, 8150200, 4130005, 1, 1, 0, 6000), +(7543, 8150201, 2000006, 1, 1, 0, 20000), +(7544, 8150201, 2000005, 1, 1, 0, 20000), +(7545, 8150201, 2022003, 1, 1, 0, 20000), +(7546, 8150201, 2020013, 1, 1, 0, 20000), +(7547, 8150201, 4010001, 1, 1, 0, 9000), +(7548, 8150201, 4020002, 1, 1, 0, 9000), +(7549, 8150201, 4004004, 1, 1, 0, 10000), +(7550, 8150201, 1002530, 1, 1, 0, 1500), +(7551, 8150201, 1050098, 1, 1, 0, 700), +(7552, 8150201, 1041122, 1, 1, 0, 800), +(7553, 8150201, 1061121, 1, 1, 0, 800), +(7554, 8150201, 1051101, 1, 1, 0, 700), +(7555, 8150201, 1082158, 1, 1, 0, 1000), +(7556, 8150201, 1072208, 1, 1, 0, 800), +(7557, 8150201, 1092027, 1, 1, 0, 700), +(7558, 8150201, 1402016, 1, 1, 0, 700), +(7559, 8150201, 1382035, 1, 1, 0, 700), +(7560, 8150201, 2040302, 1, 1, 0, 300), +(7561, 8150201, 2040501, 1, 1, 0, 300), +(7562, 8150201, 4000267, 1, 1, 0, 600000), +(7563, 8150201, 4000244, 1, 1, 0, 2000), +(7564, 8150201, 4000245, 1, 1, 0, 2000), +(7565, 8150201, 1082136, 1, 1, 0, 1000), +(7566, 8150201, 2290004, 1, 1, 0, 500), +(7567, 8150201, 2290006, 1, 1, 0, 500), +(7568, 8150201, 2290024, 1, 1, 0, 500), +(7569, 8150201, 2290036, 1, 1, 0, 500), +(7570, 8150201, 2290056, 1, 1, 0, 500), +(7571, 8150201, 2290072, 1, 1, 0, 500), +(7572, 8150201, 2290078, 1, 1, 0, 500), +(7573, 8150201, 1492012, 1, 1, 0, 500), +(7574, 8150201, 2044802, 1, 1, 0, 300), +(7575, 8150201, 2290117, 1, 1, 0, 500), +(7576, 8150201, 2040618, 1, 1, 0, 300), +(7577, 8150201, 2044012, 1, 1, 0, 300), +(7578, 8150201, 2044210, 1, 1, 0, 300), +(7579, 8150201, 2049100, 1, 1, 0, 150), +(7580, 8150201, 4130002, 1, 1, 0, 6000), +(7581, 8150201, 4130015, 1, 1, 0, 6000), +(7582, 8150201, 4130017, 1, 1, 0, 6000), +(7583, 8150300, 2000006, 1, 1, 0, 20000), +(7584, 8150300, 2000005, 1, 1, 0, 20000), +(7585, 8150300, 4004002, 1, 1, 0, 10000), +(7586, 8150300, 4010001, 1, 1, 0, 9000), +(7587, 8150300, 4020000, 1, 1, 0, 9000), +(7588, 8150300, 4006001, 1, 1, 0, 10000), +(7589, 8150300, 1002365, 1, 1, 0, 1500), +(7590, 8150300, 1050089, 1, 1, 0, 700), +(7591, 8150300, 1041118, 1, 1, 0, 800), +(7592, 8150300, 1061116, 1, 1, 0, 800), +(7593, 8150300, 1082129, 1, 1, 0, 1000), +(7594, 8150300, 1072223, 1, 1, 0, 800), +(7595, 8150300, 1452017, 1, 1, 0, 500), +(7596, 8150300, 2040701, 1, 1, 0, 300), +(7597, 8150300, 2040516, 1, 1, 0, 300), +(7598, 8150300, 2043002, 1, 1, 0, 300), +(7599, 8150300, 4000268, 1, 1, 0, 600000), +(7600, 8150300, 4000244, 1, 1, 0, 2000), +(7601, 8150300, 4000245, 1, 1, 0, 2000), +(7602, 8150300, 1052128, 1, 1, 0, 700), +(7603, 8150300, 2044901, 1, 1, 0, 300), +(7604, 8150300, 2290120, 1, 1, 0, 500), +(7605, 8150300, 2043114, 1, 1, 0, 300), +(7606, 8150300, 4130002, 1, 1, 0, 6000), +(7607, 8150300, 4130005, 1, 1, 0, 6000), +(7608, 8150300, 4130013, 1, 1, 0, 6000), +(7609, 8150301, 4000269, 1, 1, 0, 600000), +(7610, 8150301, 2000006, 1, 1, 0, 20000), +(7611, 8150301, 2022003, 1, 1, 0, 20000), +(7612, 8150301, 4006000, 1, 1, 0, 10000), +(7613, 8150301, 2000005, 1, 1, 0, 20000), +(7614, 8150301, 4004003, 1, 1, 0, 10000), +(7615, 8150301, 4020005, 1, 1, 0, 9000), +(7616, 8150301, 4010004, 1, 1, 0, 9000), +(7617, 8150301, 1002532, 1, 1, 0, 1500), +(7618, 8150301, 1050094, 1, 1, 0, 700), +(7619, 8150301, 1051105, 1, 1, 0, 700), +(7620, 8150301, 1082143, 1, 1, 0, 1000), +(7621, 8150301, 1072227, 1, 1, 0, 800), +(7622, 8150301, 1422013, 1, 1, 0, 700), +(7623, 8150301, 1372010, 1, 1, 0, 700), +(7624, 8150301, 2040401, 1, 1, 0, 300), +(7625, 8150301, 2040001, 1, 1, 0, 300), +(7626, 8150301, 2044001, 1, 1, 0, 300), +(7627, 8150301, 4000244, 1, 1, 0, 2000), +(7628, 8150301, 4000245, 1, 1, 0, 2000), +(7629, 8150301, 1082213, 1, 1, 0, 1000), +(7630, 8150301, 2290101, 1, 1, 0, 500), +(7631, 8150301, 2040924, 1, 1, 0, 300), +(7632, 8150301, 4130004, 1, 1, 0, 6000), +(7633, 8150301, 4130013, 1, 1, 0, 6000), +(7634, 8150302, 4000270, 1, 1, 0, 600000), +(7635, 8150302, 2000006, 1, 1, 0, 20000), +(7636, 8150302, 2000005, 1, 1, 0, 20000), +(7637, 8150302, 2022003, 1, 1, 0, 20000), +(7638, 8150302, 2020013, 1, 1, 0, 20000), +(7639, 8150302, 4004000, 1, 1, 0, 10000), +(7640, 8150302, 4020002, 1, 1, 0, 9000), +(7641, 8150302, 4010005, 1, 1, 0, 9000), +(7642, 8150302, 4006001, 1, 1, 0, 10000), +(7643, 8150302, 4006000, 1, 1, 0, 10000), +(7644, 8150302, 1002531, 1, 1, 0, 1500), +(7645, 8150302, 1040115, 1, 1, 0, 800), +(7646, 8150302, 1060107, 1, 1, 0, 800), +(7647, 8150302, 1051095, 1, 1, 0, 700), +(7648, 8150302, 1082127, 1, 1, 0, 1000), +(7649, 8150302, 1072214, 1, 1, 0, 800), +(7650, 8150302, 1332027, 1, 1, 0, 500), +(7651, 8150302, 1442020, 1, 1, 0, 700), +(7652, 8150302, 2040302, 1, 1, 0, 300), +(7653, 8150302, 2044301, 1, 1, 0, 300), +(7654, 8150302, 2044402, 1, 1, 0, 300), +(7655, 8150302, 4131004, 1, 1, 0, 6000), +(7656, 8150302, 4000244, 1, 1, 0, 2000), +(7657, 8150302, 4000245, 1, 1, 0, 2000), +(7658, 8150302, 2290010, 1, 1, 0, 500), +(7659, 8150302, 2290019, 1, 1, 0, 500), +(7660, 8150302, 2290026, 1, 1, 0, 500), +(7661, 8150302, 2290076, 1, 1, 0, 500), +(7662, 8150302, 1482012, 1, 1, 0, 500), +(7663, 8150302, 2290119, 1, 1, 0, 500), +(7664, 8150302, 4130009, 1, 1, 0, 6000), +(7665, 8150302, 4130014, 1, 1, 0, 6000), +(7666, 8150302, 4130017, 1, 1, 0, 6000), +(7667, 8160000, 4000151, 1, 1, 0, 600000), +(7668, 8160000, 2000006, 1, 1, 0, 20000), +(7669, 8160000, 2022003, 1, 1, 0, 20000), +(7670, 8160000, 4006000, 1, 1, 0, 10000), +(7671, 8160000, 4010001, 1, 1, 0, 9000), +(7672, 8160000, 4020002, 1, 1, 0, 9000), +(7673, 8160000, 4004003, 1, 1, 0, 10000), +(7674, 8160000, 2040705, 1, 1, 0, 300), +(7675, 8160000, 2040602, 1, 1, 0, 300), +(7676, 8160000, 1092015, 1, 1, 0, 700), +(7677, 8160000, 1462009, 1, 1, 0, 500), +(7678, 8160000, 1472028, 1, 1, 0, 500), +(7679, 8160000, 1050062, 1, 1, 0, 700), +(7680, 8160000, 1442019, 1, 1, 0, 700), +(7681, 8160000, 1472031, 1, 1, 0, 500), +(7682, 8160000, 1452015, 1, 1, 0, 500), +(7683, 8160000, 1050081, 1, 1, 0, 700), +(7684, 8160000, 1002329, 1, 1, 0, 1500), +(7685, 8160000, 1072179, 1, 1, 0, 800), +(7686, 8160000, 1082123, 1, 1, 0, 1000), +(7687, 8160000, 1051079, 1, 1, 0, 700), +(7688, 8160000, 1032023, 1, 1, 0, 1000), +(7689, 8160000, 1051095, 1, 1, 0, 700), +(7690, 8160000, 1092026, 1, 1, 0, 700), +(7691, 8160000, 1002403, 1, 1, 0, 1500), +(7692, 8160000, 1040118, 1, 1, 0, 800), +(7693, 8160000, 1060107, 1, 1, 0, 800), +(7694, 8160000, 1061119, 1, 1, 0, 800), +(7695, 8160000, 1041120, 1, 1, 0, 800), +(7696, 8160000, 1072213, 1, 1, 0, 800), +(7697, 8160000, 1052131, 1, 1, 0, 700), +(7698, 8160000, 2040924, 1, 1, 0, 300), +(7699, 8160000, 4130003, 1, 1, 0, 6000), +(7700, 8160000, 4130004, 1, 1, 0, 6000), +(7701, 8160000, 4130014, 1, 1, 0, 6000), +(7702, 8170000, 4000152, 1, 1, 0, 600000), +(7703, 8170000, 4010004, 1, 1, 0, 9000), +(7704, 8170000, 4010005, 1, 1, 0, 9000), +(7705, 8170000, 2000006, 1, 1, 0, 20000), +(7706, 8170000, 2000005, 1, 1, 0, 20000), +(7707, 8170000, 4004004, 1, 1, 0, 10000), +(7708, 8170000, 4006001, 1, 1, 0, 10000), +(7709, 8170000, 2040702, 1, 1, 0, 300), +(7710, 8170000, 2040802, 1, 1, 0, 300), +(7711, 8170000, 4020008, 1, 1, 0, 9000), +(7712, 8170000, 2002001, 1, 1, 0, 20000), +(7713, 8170000, 1002281, 1, 1, 0, 1500), +(7714, 8170000, 1092017, 1, 1, 0, 700), +(7715, 8170000, 1332018, 1, 1, 0, 500), +(7716, 8170000, 1332019, 1, 1, 0, 500), +(7717, 8170000, 1050072, 1, 1, 0, 700), +(7718, 8170000, 1452012, 1, 1, 0, 500), +(7719, 8170000, 1072177, 1, 1, 0, 800), +(7720, 8170000, 1041107, 1, 1, 0, 800), +(7721, 8170000, 1061106, 1, 1, 0, 800), +(7722, 8170000, 1050083, 1, 1, 0, 700), +(7723, 8170000, 1051069, 1, 1, 0, 700); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(7724, 8170000, 1072211, 1, 1, 0, 800), +(7725, 8170000, 1072178, 1, 1, 0, 800), +(7726, 8170000, 1462013, 1, 1, 0, 500), +(7727, 8170000, 1102031, 1, 1, 0, 1000), +(7728, 8170000, 1050095, 1, 1, 0, 700), +(7729, 8170000, 1092027, 1, 1, 0, 700), +(7730, 8170000, 1002404, 1, 1, 0, 1500), +(7731, 8170000, 1032017, 1, 1, 0, 1000), +(7732, 8170000, 1040113, 1, 1, 0, 800), +(7733, 8170000, 1060102, 1, 1, 0, 800), +(7734, 8170000, 1072227, 1, 1, 0, 800), +(7735, 8170000, 2040512, 1, 1, 0, 300), +(7736, 8170000, 4130001, 1, 1, 0, 6000), +(7737, 8170000, 4130003, 1, 1, 0, 6000), +(7738, 8170000, 4130008, 1, 1, 0, 6000), +(7739, 8180000, 2000005, 1, 1, 0, 999999), +(7740, 8180000, 2000004, 1, 1, 0, 999999), +(7741, 8180000, 1302056, 1, 1, 0, 7000), +(7742, 8180000, 1312030, 1, 1, 0, 7000), +(7743, 8180000, 1322045, 1, 1, 0, 7000), +(7744, 8180000, 1332051, 1, 1, 0, 5000), +(7745, 8180000, 1332052, 1, 1, 0, 5000), +(7746, 8180000, 1372010, 1, 1, 0, 7000), +(7747, 8180000, 1382035, 1, 1, 0, 7000), +(7748, 8180000, 1402035, 1, 1, 0, 7000), +(7749, 8180000, 1412021, 1, 1, 0, 7000), +(7750, 8180000, 1422027, 1, 1, 0, 7000), +(7751, 8180000, 1432030, 1, 1, 0, 5000), +(7752, 8180000, 1442044, 1, 1, 0, 7000), +(7753, 8180000, 1452019, 1, 1, 0, 5000), +(7754, 8180000, 1462015, 1, 1, 0, 5000), +(7755, 8180000, 1472053, 1, 1, 0, 5000), +(7756, 8180000, 2043001, 1, 1, 0, 3000), +(7757, 8180000, 2043101, 1, 1, 0, 3000), +(7758, 8180000, 2043201, 1, 1, 0, 3000), +(7759, 8180000, 2043301, 1, 1, 0, 3000), +(7760, 8180000, 2043701, 1, 1, 0, 3000), +(7761, 8180000, 2043801, 1, 1, 0, 3000), +(7762, 8180000, 2044001, 1, 1, 0, 3000), +(7763, 8180000, 2044101, 1, 1, 0, 3000), +(7764, 8180000, 2044301, 1, 1, 0, 3000), +(7765, 8180000, 2044201, 1, 1, 0, 3000), +(7766, 8180000, 2044401, 1, 1, 0, 3000), +(7767, 8180000, 2044501, 1, 1, 0, 3000), +(7768, 8180000, 2044601, 1, 1, 0, 3000), +(7769, 8180000, 2044701, 1, 1, 0, 3000), +(7770, 8180000, 2040805, 1, 1, 0, 3000), +(7771, 8180000, 4004000, 1, 1, 0, 100000), +(7772, 8180000, 4004001, 1, 1, 0, 100000), +(7773, 8180000, 4004002, 1, 1, 0, 100000), +(7774, 8180000, 4004003, 1, 1, 0, 100000), +(7775, 8180000, 4000235, 1, 1, 0, 600000), +(7776, 8180000, 4000244, 1, 1, 0, 20000), +(7777, 8180000, 4000245, 1, 1, 0, 20000), +(7778, 8180000, 2290003, 1, 1, 0, 5000), +(7779, 8180000, 2290015, 1, 1, 0, 5000), +(7780, 8180000, 2290030, 1, 1, 0, 5000), +(7781, 8180000, 2290035, 1, 1, 0, 5000), +(7782, 8180000, 2290036, 1, 1, 0, 5000), +(7783, 8180000, 2290063, 1, 1, 0, 5000), +(7784, 8180000, 2290080, 1, 1, 0, 5000), +(7785, 8180000, 1482012, 1, 1, 0, 5000), +(7786, 8180000, 1492012, 1, 1, 0, 5000), +(7787, 8180000, 2044801, 1, 1, 0, 3000), +(7788, 8180000, 2044901, 1, 1, 0, 3000), +(7789, 8180000, 2290098, 1, 1, 0, 5000), +(7790, 8180000, 2290101, 1, 1, 0, 5000), +(7791, 8180000, 2290117, 1, 1, 0, 5000), +(7792, 8180000, 2040328, 1, 1, 0, 3000), +(7793, 8180000, 2040824, 1, 1, 0, 3000), +(7794, 8180000, 2043112, 1, 1, 0, 3000), +(7795, 8180000, 2044014, 1, 1, 0, 3000), +(7796, 8180000, 2049000, 1, 1, 0, 1500), +(7797, 8180001, 2000005, 1, 1, 0, 999999), +(7798, 8180001, 2000004, 1, 1, 0, 999999), +(7799, 8180001, 1302056, 1, 1, 0, 7000), +(7800, 8180001, 1312030, 1, 1, 0, 7000), +(7801, 8180001, 1322045, 1, 1, 0, 7000), +(7802, 8180001, 1332051, 1, 1, 0, 5000), +(7803, 8180001, 1332052, 1, 1, 0, 5000), +(7804, 8180001, 1372010, 1, 1, 0, 7000), +(7805, 8180001, 1382035, 1, 1, 0, 7000), +(7806, 8180001, 1402035, 1, 1, 0, 7000), +(7807, 8180001, 1412021, 1, 1, 0, 7000), +(7808, 8180001, 1422027, 1, 1, 0, 7000), +(7809, 8180001, 1432030, 1, 1, 0, 5000), +(7810, 8180001, 1442044, 1, 1, 0, 7000), +(7811, 8180001, 1452019, 1, 1, 0, 5000), +(7812, 8180001, 1462015, 1, 1, 0, 5000), +(7813, 8180001, 1472053, 1, 1, 0, 5000), +(7814, 8180001, 2040002, 1, 1, 0, 3000), +(7815, 8180001, 2040005, 1, 1, 0, 3000), +(7816, 8180001, 2040302, 1, 1, 0, 3000), +(7817, 8180001, 2040402, 1, 1, 0, 3000), +(7818, 8180001, 2040502, 1, 1, 0, 3000), +(7819, 8180001, 2040505, 1, 1, 0, 3000), +(7820, 8180001, 2040513, 1, 1, 0, 3000), +(7821, 8180001, 2040516, 1, 1, 0, 3000), +(7822, 8180001, 2040602, 1, 1, 0, 3000), +(7823, 8180001, 2040702, 1, 1, 0, 3000), +(7824, 8180001, 2040705, 1, 1, 0, 3000), +(7825, 8180001, 2040708, 1, 1, 0, 3000), +(7826, 8180001, 2040802, 1, 1, 0, 3000), +(7827, 8180001, 2040902, 1, 1, 0, 3000), +(7828, 8180001, 4004000, 1, 1, 0, 100000), +(7829, 8180001, 4004001, 1, 1, 0, 100000), +(7830, 8180001, 4004002, 1, 1, 0, 100000), +(7831, 8180001, 4004003, 1, 1, 0, 100000), +(7832, 8180001, 4000243, 1, 1, 0, 600000), +(7833, 8180001, 4000244, 1, 1, 0, 20000), +(7834, 8180001, 4000245, 1, 1, 0, 20000), +(7835, 8180001, 2290018, 1, 1, 0, 5000), +(7836, 8180001, 2290019, 1, 1, 0, 5000), +(7837, 8180001, 2290032, 1, 1, 0, 5000), +(7838, 8180001, 2290042, 1, 1, 0, 5000), +(7839, 8180001, 2290059, 1, 1, 0, 5000), +(7840, 8180001, 2290069, 1, 1, 0, 5000), +(7841, 8180001, 2290072, 1, 1, 0, 5000), +(7842, 8180001, 2290092, 1, 1, 0, 5000), +(7843, 8180001, 1482012, 1, 1, 0, 5000), +(7844, 8180001, 1492012, 1, 1, 0, 5000), +(7845, 8180001, 2290100, 1, 1, 0, 5000), +(7846, 8180001, 2290102, 1, 1, 0, 5000), +(7847, 8180001, 2290119, 1, 1, 0, 5000), +(7848, 8180001, 2040618, 1, 1, 0, 3000), +(7849, 8180001, 2040532, 1, 1, 0, 3000), +(7850, 8180001, 2040925, 1, 1, 0, 3000), +(7851, 8180001, 2043114, 1, 1, 0, 3000), +(7852, 8180001, 2043214, 1, 1, 0, 3000), +(7853, 8180001, 2044112, 1, 1, 0, 3000), +(7854, 8180001, 2049100, 1, 1, 0, 3000), +(7855, 8190000, 4000272, 1, 1, 0, 600000), +(7856, 8190000, 2000006, 1, 1, 0, 20000), +(7857, 8190000, 2000005, 1, 1, 0, 20000), +(7858, 8190000, 2022003, 1, 1, 0, 20000), +(7859, 8190000, 2020013, 1, 1, 0, 20000), +(7860, 8190000, 4004001, 1, 1, 0, 10000), +(7861, 8190000, 4010000, 1, 1, 0, 9000), +(7862, 8190000, 4020004, 1, 1, 0, 9000), +(7863, 8190000, 4006001, 1, 1, 0, 10000), +(7864, 8190000, 4006000, 1, 1, 0, 10000), +(7865, 8190000, 1002398, 1, 1, 0, 1500), +(7866, 8190000, 1040111, 1, 1, 0, 800), +(7867, 8190000, 1060102, 1, 1, 0, 800), +(7868, 8190000, 1051092, 1, 1, 0, 700), +(7869, 8190000, 1082158, 1, 1, 0, 1000), +(7870, 8190000, 1072228, 1, 1, 0, 800), +(7871, 8190000, 1332052, 1, 1, 0, 500), +(7872, 8190000, 1402016, 1, 1, 0, 700), +(7873, 8190000, 2044702, 1, 1, 0, 300), +(7874, 8190000, 2040004, 1, 1, 0, 300), +(7875, 8190000, 4000244, 1, 1, 0, 2000), +(7876, 8190000, 4000245, 1, 1, 0, 2000), +(7877, 8190000, 2290030, 1, 1, 0, 500), +(7878, 8190000, 2290044, 1, 1, 0, 500), +(7879, 8190000, 2290054, 1, 1, 0, 500), +(7880, 8190000, 2290066, 1, 1, 0, 500), +(7881, 8190000, 2290092, 1, 1, 0, 500), +(7882, 8190000, 2290103, 1, 1, 0, 500), +(7883, 8190000, 1002646, 1, 1, 0, 1500), +(7884, 8190000, 2040419, 1, 1, 0, 300), +(7885, 8190000, 2044110, 1, 1, 0, 300), +(7886, 8190000, 2049000, 1, 1, 0, 150), +(7887, 8190000, 4130004, 1, 1, 0, 6000), +(7888, 8190000, 4130006, 1, 1, 0, 6000), +(7889, 8190000, 4130008, 1, 1, 0, 6000), +(7890, 8190002, 4000271, 1, 1, 0, 600000), +(7891, 8190002, 2022003, 1, 1, 0, 20000), +(7892, 8190002, 2000006, 1, 1, 0, 20000), +(7893, 8190002, 2000005, 1, 1, 0, 20000), +(7894, 8190002, 4004003, 1, 1, 0, 10000), +(7895, 8190002, 4020007, 1, 1, 0, 9000), +(7896, 8190002, 4010005, 1, 1, 0, 9000), +(7897, 8190002, 4006001, 1, 1, 0, 10000), +(7898, 8190002, 4006000, 1, 1, 0, 10000), +(7899, 8190002, 1002406, 1, 1, 0, 1500), +(7900, 8190002, 1051101, 1, 1, 0, 700), +(7901, 8190002, 1050097, 1, 1, 0, 700), +(7902, 8190002, 1082139, 1, 1, 0, 1000), +(7903, 8190002, 1072225, 1, 1, 0, 800), +(7904, 8190002, 1032023, 1, 1, 0, 1000), +(7905, 8190002, 1412021, 1, 1, 0, 700), +(7906, 8190002, 1452019, 1, 1, 0, 500), +(7907, 8190002, 2043801, 1, 1, 0, 300), +(7908, 8190002, 2041023, 1, 1, 0, 300), +(7909, 8190002, 2040707, 1, 1, 0, 300), +(7910, 8190002, 4130013, 1, 1, 0, 6000), +(7911, 8190002, 4000244, 1, 1, 0, 2000), +(7912, 8190002, 4000245, 1, 1, 0, 2000), +(7913, 8190002, 1082152, 1, 1, 0, 1000), +(7914, 8190002, 2290000, 1, 1, 0, 500), +(7915, 8190002, 2290008, 1, 1, 0, 500), +(7916, 8190002, 2290018, 1, 1, 0, 500), +(7917, 8190002, 2290038, 1, 1, 0, 500), +(7918, 8190002, 2290060, 1, 1, 0, 500), +(7919, 8190002, 2290080, 1, 1, 0, 500), +(7920, 8190002, 1492012, 1, 1, 0, 500), +(7921, 8190002, 2290124, 1, 1, 0, 500), +(7922, 8190002, 1082213, 1, 1, 0, 1000), +(7923, 8190002, 2044901, 1, 1, 0, 300), +(7924, 8190003, 4000274, 1, 1, 0, 600000), +(7925, 8190003, 2022003, 1, 1, 0, 20000), +(7926, 8190003, 2000006, 1, 1, 0, 20000), +(7927, 8190003, 2000005, 1, 1, 0, 20000), +(7928, 8190003, 4004001, 1, 1, 0, 10000), +(7929, 8190003, 4010001, 1, 1, 0, 9000), +(7930, 8190003, 4020001, 1, 1, 0, 9000), +(7931, 8190003, 4006001, 1, 1, 0, 10000), +(7932, 8190003, 4006000, 1, 1, 0, 10000), +(7933, 8190003, 1002377, 1, 1, 0, 1500), +(7934, 8190003, 1050107, 1, 1, 0, 700), +(7935, 8190003, 1050103, 1, 1, 0, 700), +(7936, 8190003, 1082135, 1, 1, 0, 1000), +(7937, 8190003, 1072221, 1, 1, 0, 800), +(7938, 8190003, 1032017, 1, 1, 0, 1000), +(7939, 8190003, 1422027, 1, 1, 0, 700), +(7940, 8190003, 1332051, 1, 1, 0, 500), +(7941, 8190003, 2044602, 1, 1, 0, 300), +(7942, 8190003, 2043301, 1, 1, 0, 300), +(7943, 8190003, 2040805, 1, 1, 0, 300), +(7944, 8190003, 4000244, 1, 1, 0, 2000), +(7945, 8190003, 4000245, 1, 1, 0, 2000), +(7946, 8190003, 1082140, 1, 1, 0, 1000), +(7947, 8190003, 2290012, 1, 1, 0, 500), +(7948, 8190003, 2290014, 1, 1, 0, 500), +(7949, 8190003, 2290050, 1, 1, 0, 500), +(7950, 8190003, 2290062, 1, 1, 0, 500), +(7951, 8190003, 2290070, 1, 1, 0, 500), +(7952, 8190003, 2290086, 1, 1, 0, 500), +(7953, 8190003, 1482011, 1, 1, 0, 500), +(7954, 8190003, 1072318, 1, 1, 0, 800), +(7955, 8190003, 2044902, 1, 1, 0, 300), +(7956, 8190003, 2290108, 1, 1, 0, 500), +(7957, 8190003, 2040534, 1, 1, 0, 300), +(7958, 8190003, 2040627, 1, 1, 0, 300), +(7959, 8190003, 2049000, 1, 1, 0, 150), +(7960, 8190003, 4130001, 1, 1, 0, 6000), +(7961, 8190003, 4130014, 1, 1, 0, 6000), +(7962, 8190004, 4000273, 1, 1, 0, 600000), +(7963, 8190004, 2022003, 1, 1, 0, 20000), +(7964, 8190004, 2000006, 1, 1, 0, 20000), +(7965, 8190004, 2000005, 1, 1, 0, 20000), +(7966, 8190004, 4004004, 1, 1, 0, 10000), +(7967, 8190004, 4020006, 1, 1, 0, 9000), +(7968, 8190004, 4020002, 1, 1, 0, 9000), +(7969, 8190004, 4006001, 1, 1, 0, 10000), +(7970, 8190004, 4006000, 1, 1, 0, 10000), +(7971, 8190004, 1002380, 1, 1, 0, 1500), +(7972, 8190004, 1051102, 1, 1, 0, 700), +(7973, 8190004, 1040121, 1, 1, 0, 800), +(7974, 8190004, 1060109, 1, 1, 0, 800), +(7975, 8190004, 1082151, 1, 1, 0, 1000), +(7976, 8190004, 1072215, 1, 1, 0, 800), +(7977, 8190004, 1322045, 1, 1, 0, 700), +(7978, 8190004, 1302056, 1, 1, 0, 700), +(7979, 8190004, 2041004, 1, 1, 0, 300), +(7980, 8190004, 2041013, 1, 1, 0, 300), +(7981, 8190004, 2044201, 1, 1, 0, 300), +(7982, 8190004, 4000244, 1, 1, 0, 2000), +(7983, 8190004, 4000245, 1, 1, 0, 2000), +(7984, 8190004, 2290002, 1, 1, 0, 500), +(7985, 8190004, 2290009, 1, 1, 0, 500), +(7986, 8190004, 2290034, 1, 1, 0, 500), +(7987, 8190004, 2290058, 1, 1, 0, 500), +(7988, 8190004, 2290068, 1, 1, 0, 500), +(7989, 8190004, 2290090, 1, 1, 0, 500), +(7990, 8190004, 2290053, 1, 1, 0, 500), +(7991, 8190004, 1482012, 1, 1, 0, 500), +(7992, 8190004, 2044801, 1, 1, 0, 300), +(7993, 8190004, 2290121, 1, 1, 0, 500), +(7994, 8190004, 2040326, 1, 1, 0, 300), +(7995, 8190004, 2040530, 1, 1, 0, 300), +(7996, 8190004, 2040924, 1, 1, 0, 300), +(7997, 8190004, 2044214, 1, 1, 0, 300), +(7998, 8190004, 4130010, 1, 1, 0, 6000), +(7999, 8200000, 4000443, 1, 1, 0, 600000), +(8000, 8200000, 1002640, 1, 1, 0, 1500), +(8001, 8200000, 1041107, 1, 1, 0, 800), +(8002, 8200000, 1040110, 1, 1, 0, 800), +(8003, 8200000, 1082112, 1, 1, 0, 1000), +(8004, 8200000, 1072179, 1, 1, 0, 800), +(8005, 8200000, 1102028, 1, 1, 0, 1000), +(8006, 8200000, 1402015, 1, 1, 0, 700), +(8007, 8200000, 1452011, 1, 1, 0, 500), +(8008, 8200000, 4004002, 1, 1, 0, 10000), +(8009, 8200000, 4010000, 1, 1, 0, 9000), +(8010, 8200000, 4020000, 1, 1, 0, 9000), +(8011, 8200000, 4130000, 1, 1, 0, 6000), +(8012, 8200000, 4130013, 1, 1, 0, 6000), +(8013, 8200000, 2330004, 1, 1, 0, 500), +(8014, 8200000, 2040532, 1, 1, 0, 300), +(8015, 8200000, 2044112, 1, 1, 0, 300), +(8016, 8200000, 2044807, 1, 1, 0, 300), +(8017, 8200001, 4000444, 1, 1, 0, 600000), +(8018, 8200001, 4000446, 1, 1, 0, 10000), +(8019, 8200001, 2000006, 1, 1, 0, 20000), +(8020, 8200001, 2022003, 1, 1, 0, 20000), +(8021, 8200001, 4004003, 1, 1, 0, 10000), +(8022, 8200001, 4010001, 1, 1, 0, 9000), +(8023, 8200001, 4020001, 1, 1, 0, 9000), +(8024, 8200001, 1002532, 1, 1, 0, 1500), +(8025, 8200001, 1072205, 1, 1, 0, 800), +(8026, 8200001, 1082144, 1, 1, 0, 1000), +(8027, 8200001, 1052128, 1, 1, 0, 700), +(8028, 8200001, 1051097, 1, 1, 0, 700), +(8029, 8200001, 1382035, 1, 1, 0, 700), +(8030, 8200001, 1402005, 1, 1, 0, 700), +(8031, 8200001, 1312015, 1, 1, 0, 700), +(8032, 8200001, 4130001, 1, 1, 0, 6000), +(8033, 8200001, 4130014, 1, 1, 0, 6000), +(8034, 8200001, 2043301, 1, 1, 0, 300), +(8035, 8200001, 2040321, 1, 1, 0, 300), +(8036, 8200001, 2040029, 1, 1, 0, 300), +(8037, 8200001, 2290050, 1, 1, 0, 500), +(8038, 8200002, 4000445, 1, 1, 0, 600000), +(8039, 8200002, 4000446, 1, 1, 0, 10000), +(8040, 8200002, 2000006, 1, 1, 0, 20000), +(8041, 8200002, 2022003, 1, 1, 0, 20000), +(8042, 8200002, 4004000, 1, 1, 0, 10000), +(8043, 8200002, 4010002, 1, 1, 0, 9000), +(8044, 8200002, 4020002, 1, 1, 0, 9000), +(8045, 8200002, 1040113, 1, 1, 0, 800), +(8046, 8200002, 1060102, 1, 1, 0, 800), +(8047, 8200002, 1002366, 1, 1, 0, 1500), +(8048, 8200002, 1072195, 1, 1, 0, 800), +(8049, 8200002, 1082210, 1, 1, 0, 1000), +(8050, 8200002, 1051085, 1, 1, 0, 700), +(8051, 8200002, 1452017, 1, 1, 0, 500), +(8052, 8200002, 1402016, 1, 1, 0, 700), +(8053, 8200002, 1442044, 1, 1, 0, 700), +(8054, 8200002, 1092027, 1, 1, 0, 700), +(8055, 8200002, 4130002, 1, 1, 0, 6000), +(8056, 8200002, 4130015, 1, 1, 0, 6000), +(8057, 8200002, 2330004, 1, 1, 0, 500), +(8058, 8200002, 2040707, 1, 1, 0, 300), +(8059, 8200002, 2044212, 1, 1, 0, 300), +(8060, 8200002, 2044401, 1, 1, 0, 300), +(8061, 8200002, 2290066, 1, 1, 0, 500), +(8062, 8200003, 4000447, 1, 1, 0, 600000), +(8063, 8200003, 4000459, 1, 1, 0, 20000), +(8064, 8200003, 2000006, 1, 1, 0, 20000), +(8065, 8200003, 2022003, 1, 1, 0, 20000), +(8066, 8200003, 4004001, 1, 1, 0, 10000), +(8067, 8200003, 4010006, 1, 1, 0, 9000), +(8068, 8200003, 4020006, 1, 1, 0, 9000), +(8069, 8200003, 1082130, 1, 1, 0, 1000), +(8070, 8200003, 1050095, 1, 1, 0, 700), +(8071, 8200003, 1002405, 1, 1, 0, 1500), +(8072, 8200003, 1072315, 1, 1, 0, 800), +(8073, 8200003, 1041118, 1, 1, 0, 800), +(8074, 8200003, 1061117, 1, 1, 0, 800), +(8075, 8200003, 1332027, 1, 1, 0, 500), +(8076, 8200003, 1482012, 1, 1, 0, 500), +(8077, 8200003, 1412010, 1, 1, 0, 700), +(8078, 8200003, 4130003, 1, 1, 0, 6000), +(8079, 8200003, 4130016, 1, 1, 0, 6000), +(8080, 8200003, 2330004, 1, 1, 0, 500), +(8081, 8200003, 2044412, 1, 1, 0, 300), +(8082, 8200003, 2044702, 1, 1, 0, 300), +(8083, 8200003, 2040927, 1, 1, 0, 300), +(8084, 8200003, 2290056, 1, 1, 0, 500), +(8085, 8200004, 4000448, 1, 1, 0, 600000), +(8086, 8200004, 4000459, 1, 1, 0, 20000), +(8087, 8200004, 2000006, 1, 1, 0, 20000), +(8088, 8200004, 2022003, 1, 1, 0, 20000), +(8089, 8200004, 2020015, 1, 1, 0, 20000), +(8090, 8200004, 4004001, 1, 1, 0, 10000), +(8091, 8200004, 4010001, 1, 1, 0, 9000), +(8092, 8200004, 4020008, 1, 1, 0, 9000), +(8093, 8200004, 1072198, 1, 1, 0, 800), +(8094, 8200004, 1082132, 1, 1, 0, 1000), +(8095, 8200004, 1050091, 1, 1, 0, 700), +(8096, 8200004, 1002326, 1, 1, 0, 1500), +(8097, 8200004, 1041121, 1, 1, 0, 800), +(8098, 8200004, 1061120, 1, 1, 0, 800), +(8099, 8200004, 1482011, 1, 1, 0, 500), +(8100, 8200004, 1302056, 1, 1, 0, 700), +(8101, 8200004, 1422013, 1, 1, 0, 700), +(8102, 8200004, 1092036, 1, 1, 0, 700), +(8103, 8200004, 4130004, 1, 1, 0, 6000), +(8104, 8200004, 4130017, 1, 1, 0, 6000), +(8105, 8200004, 2040025, 1, 1, 0, 300), +(8106, 8200004, 2044312, 1, 1, 0, 300), +(8107, 8200004, 2044901, 1, 1, 0, 300), +(8108, 8200004, 2290073, 1, 1, 0, 500), +(8109, 8200005, 4000449, 1, 1, 0, 600000), +(8110, 8200005, 4000451, 1, 1, 0, 10000), +(8111, 8200005, 2000006, 1, 1, 0, 20000), +(8112, 8200005, 2022003, 1, 1, 0, 20000), +(8113, 8200005, 2020013, 1, 1, 0, 20000), +(8114, 8200005, 4004000, 1, 1, 0, 10000), +(8115, 8200005, 4010004, 1, 1, 0, 9000), +(8116, 8200005, 4020001, 1, 1, 0, 9000), +(8117, 8200005, 1072207, 1, 1, 0, 800), +(8118, 8200005, 1082127, 1, 1, 0, 1000), +(8119, 8200005, 1040118, 1, 1, 0, 800), +(8120, 8200005, 1060107, 1, 1, 0, 800), +(8121, 8200005, 1002643, 1, 1, 0, 1500), +(8122, 8200005, 1051103, 1, 1, 0, 700), +(8123, 8200005, 1302023, 1, 1, 0, 700), +(8124, 8200005, 1322029, 1, 1, 0, 700), +(8125, 8200005, 4130005, 1, 1, 0, 6000), +(8126, 8200005, 2044012, 1, 1, 0, 300), +(8127, 8200005, 2040931, 1, 1, 0, 300), +(8128, 8200005, 2290079, 1, 1, 0, 500), +(8129, 8200006, 4000450, 1, 1, 0, 600000), +(8130, 8200006, 4000451, 1, 1, 0, 10000), +(8131, 8200006, 2000006, 1, 1, 0, 20000), +(8132, 8200006, 2000005, 1, 1, 0, 20000), +(8133, 8200006, 2022003, 1, 1, 0, 20000), +(8134, 8200006, 4004003, 1, 1, 0, 10000), +(8135, 8200006, 4010003, 1, 1, 0, 9000), +(8136, 8200006, 4020003, 1, 1, 0, 9000), +(8137, 8200006, 1002378, 1, 1, 0, 1500), +(8138, 8200006, 1072227, 1, 1, 0, 800), +(8139, 8200006, 1082135, 1, 1, 0, 1000), +(8140, 8200006, 1052131, 1, 1, 0, 700), +(8141, 8200006, 1051107, 1, 1, 0, 700), +(8142, 8200006, 1382035, 1, 1, 0, 700), +(8143, 8200006, 1462017, 1, 1, 0, 500), +(8144, 8200006, 1412021, 1, 1, 0, 700), +(8145, 8200006, 1032023, 1, 1, 0, 1000), +(8146, 8200006, 4130006, 1, 1, 0, 6000), +(8147, 8200006, 2040317, 1, 1, 0, 300), +(8148, 8200006, 2040824, 1, 1, 0, 300), +(8149, 8200006, 2290077, 1, 1, 0, 500), +(8150, 8200007, 4000452, 1, 1, 0, 600000), +(8151, 8200007, 4000459, 1, 1, 0, 20000), +(8152, 8200007, 2000006, 1, 1, 0, 20000), +(8153, 8200007, 2022003, 1, 1, 0, 20000), +(8154, 8200007, 4004002, 1, 1, 0, 10000), +(8155, 8200007, 4010004, 1, 1, 0, 9000), +(8156, 8200007, 4020004, 1, 1, 0, 9000), +(8157, 8200007, 1040121, 1, 1, 0, 800), +(8158, 8200007, 1041124, 1, 1, 0, 800), +(8159, 8200007, 1002400, 1, 1, 0, 1500), +(8160, 8200007, 1072214, 1, 1, 0, 800), +(8161, 8200007, 1082213, 1, 1, 0, 1000), +(8162, 8200007, 1051091, 1, 1, 0, 700), +(8163, 8200007, 1462018, 1, 1, 0, 500), +(8164, 8200007, 1332052, 1, 1, 0, 500), +(8165, 8200007, 1422027, 1, 1, 0, 700), +(8166, 8200007, 4130007, 1, 1, 0, 6000), +(8167, 8200007, 2040701, 1, 1, 0, 300), +(8168, 8200007, 2044301, 1, 1, 0, 300), +(8169, 8200007, 2040302, 1, 1, 0, 300), +(8170, 8200007, 2290007, 1, 1, 0, 500), +(8171, 8200008, 4000453, 1, 1, 0, 600000), +(8172, 8200008, 4000459, 1, 1, 0, 20000), +(8173, 8200008, 2000006, 1, 1, 0, 20000), +(8174, 8200008, 2022003, 1, 1, 0, 20000), +(8175, 8200008, 4004000, 1, 1, 0, 10000), +(8176, 8200008, 4010005, 1, 1, 0, 9000), +(8177, 8200008, 4020005, 1, 1, 0, 9000), +(8178, 8200008, 1082140, 1, 1, 0, 1000), +(8179, 8200008, 1050104, 1, 1, 0, 700), +(8180, 8200008, 1002407, 1, 1, 0, 1500), +(8181, 8200008, 1072318, 1, 1, 0, 800), +(8182, 8200008, 1060111, 1, 1, 0, 800), +(8183, 8200008, 1061123, 1, 1, 0, 800), +(8184, 8200008, 1472033, 1, 1, 0, 500), +(8185, 8200008, 1442020, 1, 1, 0, 700), +(8186, 8200008, 1472053, 1, 1, 0, 500), +(8187, 8200008, 4130008, 1, 1, 0, 6000), +(8188, 8200008, 2044101, 1, 1, 0, 300), +(8189, 8200008, 2044501, 1, 1, 0, 300), +(8190, 8200008, 2290006, 1, 1, 0, 500), +(8191, 8200009, 4000454, 1, 1, 0, 600000), +(8192, 8200009, 4000456, 1, 1, 0, 10000), +(8193, 8200009, 2000006, 1, 1, 0, 20000), +(8194, 8200009, 2022003, 1, 1, 0, 20000), +(8195, 8200009, 4004001, 1, 1, 0, 10000), +(8196, 8200009, 4010000, 1, 1, 0, 9000), +(8197, 8200009, 4020007, 1, 1, 0, 9000), +(8198, 8200009, 1072221, 1, 1, 0, 800), +(8199, 8200009, 1082153, 1, 1, 0, 1000), +(8200, 8200009, 1050108, 1, 1, 0, 700), +(8201, 8200009, 1002381, 1, 1, 0, 1500), +(8202, 8200009, 1492011, 1, 1, 0, 500), +(8203, 8200009, 1432011, 1, 1, 0, 500), +(8204, 8200009, 1402035, 1, 1, 0, 700), +(8205, 8200009, 4130000, 1, 1, 0, 6000), +(8206, 8200009, 4130009, 1, 1, 0, 6000), +(8207, 8200009, 2044601, 1, 1, 0, 300), +(8208, 8200009, 2044001, 1, 1, 0, 300), +(8209, 8200009, 2040924, 1, 1, 0, 300), +(8210, 8200009, 2290039, 1, 1, 0, 500), +(8211, 8200010, 4000455, 1, 1, 0, 600000), +(8212, 8200010, 4000456, 1, 1, 0, 10000), +(8213, 8200010, 2000006, 1, 1, 0, 20000), +(8214, 8200010, 2000005, 1, 1, 0, 20000), +(8215, 8200010, 2022003, 1, 1, 0, 20000), +(8216, 8200010, 4004003, 1, 1, 0, 10000), +(8217, 8200010, 4010002, 1, 1, 0, 9000), +(8218, 8200010, 4020000, 1, 1, 0, 9000), +(8219, 8200010, 1072225, 1, 1, 0, 800), +(8220, 8200010, 1082158, 1, 1, 0, 1000), +(8221, 8200010, 1050099, 1, 1, 0, 700), +(8222, 8200010, 1002646, 1, 1, 0, 1500), +(8223, 8200010, 1432030, 1, 1, 0, 500), +(8224, 8200010, 1312030, 1, 1, 0, 700), +(8225, 8200010, 4130001, 1, 1, 0, 6000), +(8226, 8200010, 4130010, 1, 1, 0, 6000), +(8227, 8200010, 2043801, 1, 1, 0, 300), +(8228, 8200010, 2041022, 1, 1, 0, 300), +(8229, 8200010, 2290089, 1, 1, 0, 500), +(8230, 8200011, 4000457, 1, 1, 0, 600000), +(8231, 8200011, 4000459, 1, 1, 0, 20000), +(8232, 8200011, 2000006, 1, 1, 0, 20000), +(8233, 8200011, 2000005, 1, 1, 0, 20000), +(8234, 8200011, 2022003, 1, 1, 0, 20000), +(8235, 8200011, 4004002, 1, 1, 0, 10000), +(8236, 8200011, 4010003, 1, 1, 0, 9000), +(8237, 8200011, 4020002, 1, 1, 0, 9000), +(8238, 8200011, 1002379, 1, 1, 0, 1500), +(8239, 8200011, 1072229, 1, 1, 0, 800), +(8240, 8200011, 1082138, 1, 1, 0, 1000), +(8241, 8200011, 1052131, 1, 1, 0, 700), +(8242, 8200011, 1372010, 1, 1, 0, 700), +(8243, 8200011, 1322045, 1, 1, 0, 700), +(8244, 8200011, 4130002, 1, 1, 0, 6000), +(8245, 8200011, 4130011, 1, 1, 0, 6000), +(8246, 8200011, 2044201, 1, 1, 0, 300), +(8247, 8200011, 2041008, 1, 1, 0, 300), +(8248, 8200011, 2044602, 1, 1, 0, 300), +(8249, 8200011, 2290046, 1, 1, 0, 500), +(8250, 8200012, 4000458, 1, 1, 0, 600000), +(8251, 8200012, 4000459, 1, 1, 0, 20000), +(8252, 8200012, 2000006, 1, 1, 0, 20000), +(8253, 8200012, 2000005, 1, 1, 0, 20000), +(8254, 8200012, 2022003, 1, 1, 0, 20000), +(8255, 8200012, 4004002, 1, 1, 0, 10000), +(8256, 8200012, 4010000, 1, 1, 0, 9000), +(8257, 8200012, 4020000, 1, 1, 0, 9000), +(8258, 8200012, 1040122, 1, 1, 0, 800), +(8259, 8200012, 1060111, 1, 1, 0, 800), +(8260, 8200012, 1002401, 1, 1, 0, 1500), +(8261, 8200012, 1072216, 1, 1, 0, 800), +(8262, 8200012, 1082213, 1, 1, 0, 1000), +(8263, 8200012, 1452021, 1, 1, 0, 500), +(8264, 8200012, 1322045, 1, 1, 0, 700), +(8265, 8200012, 4130003, 1, 1, 0, 6000), +(8266, 8200012, 4130012, 1, 1, 0, 6000), +(8267, 8200012, 2040501, 1, 1, 0, 300), +(8268, 8200012, 2043701, 1, 1, 0, 300), +(8269, 8200012, 2290093, 1, 1, 0, 500), +(8270, 8220000, 4000073, 1, 1, 0, 600000), +(8271, 8220000, 4000073, 1, 1, 0, 600000), +(8272, 8220000, 4000073, 1, 1, 0, 600000), +(8273, 8220000, 4000074, 1, 1, 0, 600000), +(8274, 8220000, 4000074, 1, 1, 0, 600000), +(8275, 8220000, 4000074, 1, 1, 0, 600000), +(8276, 8220000, 4000021, 1, 1, 0, 500000), +(8277, 8220000, 4000021, 1, 1, 0, 500000), +(8278, 8220000, 4000021, 1, 1, 0, 500000), +(8279, 8220000, 4006000, 1, 1, 0, 100000), +(8280, 8220000, 4004004, 1, 1, 0, 100000), +(8281, 8220000, 4010006, 1, 1, 0, 90000), +(8282, 8220000, 4020008, 1, 1, 0, 90000), +(8283, 8220000, 2000004, 1, 1, 0, 999999), +(8284, 8220000, 2000006, 1, 1, 0, 999999), +(8285, 8220000, 2002003, 1, 1, 0, 200000), +(8286, 8220000, 2012001, 1, 1, 0, 200000), +(8287, 8220000, 2040707, 1, 1, 0, 3000), +(8288, 8220000, 2041007, 1, 1, 0, 3000), +(8289, 8220000, 2043701, 1, 1, 0, 3000), +(8290, 8220000, 2044301, 1, 1, 0, 3000), +(8291, 8220000, 2041019, 1, 1, 0, 3000), +(8292, 8220000, 2044401, 1, 1, 0, 3000), +(8293, 8220000, 2040001, 1, 1, 0, 3000), +(8294, 8220000, 2040301, 1, 1, 0, 3000), +(8295, 8220000, 2040401, 1, 1, 0, 3000), +(8296, 8220000, 2043301, 1, 1, 0, 3000), +(8297, 8220000, 2044302, 1, 1, 0, 3000), +(8298, 8220000, 2041020, 1, 1, 0, 3000), +(8299, 8220000, 2044402, 1, 1, 0, 3000), +(8300, 8220000, 2040002, 1, 1, 0, 3000), +(8301, 8220000, 2040302, 1, 1, 0, 3000), +(8302, 8220000, 2060001, 1, 1, 0, 300000), +(8303, 8220000, 2061001, 1, 1, 0, 300000), +(8304, 8220000, 1002532, 1, 1, 0, 15000), +(8305, 8220000, 1002366, 1, 1, 0, 15000), +(8306, 8220000, 1002405, 1, 1, 0, 15000), +(8307, 8220000, 1002326, 1, 1, 0, 15000), +(8308, 8220000, 1040113, 1, 1, 0, 8000), +(8309, 8220000, 1041121, 1, 1, 0, 8000), +(8310, 8220000, 1050095, 1, 1, 0, 7000), +(8311, 8220000, 1051097, 1, 1, 0, 7000), +(8312, 8220000, 1050091, 1, 1, 0, 7000), +(8313, 8220000, 1051085, 1, 1, 0, 7000), +(8314, 8220000, 1040117, 1, 1, 0, 8000), +(8315, 8220000, 1041117, 1, 1, 0, 8000), +(8316, 8220000, 1082130, 1, 1, 0, 10000), +(8317, 8220000, 1082134, 1, 1, 0, 10000), +(8318, 8220000, 1082127, 1, 1, 0, 10000), +(8319, 8220000, 1082144, 1, 1, 0, 10000), +(8320, 8220000, 1072198, 1, 1, 0, 8000), +(8321, 8220000, 1072209, 1, 1, 0, 8000), +(8322, 8220000, 1072205, 1, 1, 0, 8000), +(8323, 8220000, 1072194, 1, 1, 0, 8000), +(8324, 8220000, 1002643, 1, 1, 0, 15000), +(8325, 8220000, 1052128, 1, 1, 0, 7000), +(8326, 8220000, 1082210, 1, 1, 0, 10000), +(8327, 8220000, 1072315, 1, 1, 0, 8000), +(8328, 8220000, 2043017, 1, 1, 0, 3000), +(8329, 8220000, 2044114, 1, 1, 0, 3000), +(8330, 8220000, 2044214, 1, 1, 0, 3000), +(8331, 8220001, 4000048, 1, 1, 0, 600000), +(8332, 8220001, 4000049, 1, 1, 0, 600000), +(8333, 8220001, 4000051, 1, 1, 0, 600000), +(8334, 8220001, 4000257, 1, 1, 0, 600000), +(8335, 8220001, 4000021, 1, 1, 0, 500000), +(8336, 8220001, 4004002, 1, 1, 0, 100000), +(8337, 8220001, 4010004, 1, 1, 0, 90000), +(8338, 8220001, 4020004, 1, 1, 0, 90000), +(8339, 8220001, 2000004, 1, 1, 0, 999999), +(8340, 8220001, 2000006, 1, 1, 0, 999999), +(8341, 8220001, 2022001, 1, 1, 0, 200000), +(8342, 8220001, 2022186, 1, 1, 0, 200000), +(8343, 8220001, 2043701, 1, 1, 0, 3000), +(8344, 8220001, 2041016, 1, 1, 0, 3000), +(8345, 8220001, 2043801, 1, 1, 0, 3000), +(8346, 8220001, 2040804, 1, 1, 0, 3000), +(8347, 8220001, 2040501, 1, 1, 0, 3000), +(8348, 8220001, 2040601, 1, 1, 0, 3000), +(8349, 8220001, 2040701, 1, 1, 0, 3000), +(8350, 8220001, 2040801, 1, 1, 0, 3000), +(8351, 8220001, 2040901, 1, 1, 0, 3000), +(8352, 8220001, 2041001, 1, 1, 0, 3000), +(8353, 8220001, 2041008, 1, 1, 0, 3000), +(8354, 8220001, 2043302, 1, 1, 0, 3000), +(8355, 8220001, 2043702, 1, 1, 0, 3000), +(8356, 8220001, 2041017, 1, 1, 0, 3000), +(8357, 8220001, 2043802, 1, 1, 0, 3000), +(8358, 8220001, 2060001, 1, 1, 0, 300000), +(8359, 8220001, 2061001, 1, 1, 0, 300000), +(8360, 8220001, 2070008, 1, 1, 0, 5000), +(8361, 8220001, 1302023, 1, 1, 0, 7000), +(8362, 8220001, 1312015, 1, 1, 0, 7000), +(8363, 8220001, 1322029, 1, 1, 0, 7000), +(8364, 8220001, 1332027, 1, 1, 0, 5000), +(8365, 8220001, 1382035, 1, 1, 0, 7000), +(8366, 8220001, 1402016, 1, 1, 0, 7000), +(8367, 8220001, 1412010, 1, 1, 0, 7000), +(8368, 8220001, 1422013, 1, 1, 0, 7000), +(8369, 8220001, 1432011, 1, 1, 0, 5000), +(8370, 8220001, 1442020, 1, 1, 0, 7000), +(8371, 8220001, 1452017, 1, 1, 0, 5000), +(8372, 8220001, 1462018, 1, 1, 0, 5000), +(8373, 8220001, 1472033, 1, 1, 0, 5000), +(8374, 8220001, 1032017, 1, 1, 0, 10000), +(8375, 8220001, 1092028, 1, 1, 0, 7000), +(8376, 8220001, 1482011, 1, 1, 0, 5000), +(8377, 8220001, 1492011, 1, 1, 0, 5000), +(8378, 8220001, 2044802, 1, 1, 0, 3000), +(8379, 8220001, 2040026, 1, 1, 0, 3000), +(8380, 8220001, 2040323, 1, 1, 0, 3000), +(8381, 8220001, 2040927, 1, 1, 0, 3000), +(8382, 8220001, 2044314, 1, 1, 0, 3000), +(8383, 8220001, 2049100, 1, 1, 0, 3000), +(8384, 8220002, 4000364, 1, 1, 0, 600000), +(8385, 8220002, 4000364, 1, 1, 0, 600000), +(8386, 8220002, 4000364, 1, 1, 0, 600000), +(8387, 8220002, 4000365, 1, 1, 0, 600000), +(8388, 8220002, 4000365, 1, 1, 0, 600000), +(8389, 8220002, 4000365, 1, 1, 0, 600000), +(8390, 8220002, 4000356, 1, 1, 0, 600000), +(8391, 8220002, 4000356, 1, 1, 0, 600000), +(8392, 8220002, 4000356, 1, 1, 0, 600000), +(8393, 8220002, 4004004, 1, 1, 0, 100000), +(8394, 8220002, 4010005, 1, 1, 0, 90000), +(8395, 8220002, 4020008, 1, 1, 0, 90000), +(8396, 8220002, 2000004, 1, 1, 0, 999999), +(8397, 8220002, 2000006, 1, 1, 0, 999999), +(8398, 8220002, 2040301, 1, 1, 0, 3000), +(8399, 8220002, 2040501, 1, 1, 0, 3000), +(8400, 8220002, 2040504, 1, 1, 0, 3000), +(8401, 8220002, 2040513, 1, 1, 0, 3000), +(8402, 8220002, 2040516, 1, 1, 0, 3000), +(8403, 8220002, 2041007, 1, 1, 0, 3000), +(8404, 8220002, 2041013, 1, 1, 0, 3000), +(8405, 8220002, 2041016, 1, 1, 0, 3000), +(8406, 8220002, 2041019, 1, 1, 0, 3000), +(8407, 8220002, 2041022, 1, 1, 0, 3000), +(8408, 8220002, 1372009, 1, 1, 0, 7000), +(8409, 8220002, 1302023, 1, 1, 0, 7000), +(8410, 8220002, 1312015, 1, 1, 0, 7000), +(8411, 8220002, 1322029, 1, 1, 0, 7000), +(8412, 8220002, 1402005, 1, 1, 0, 7000), +(8413, 8220002, 1402016, 1, 1, 0, 7000), +(8414, 8220002, 1412010, 1, 1, 0, 7000), +(8415, 8220002, 1422013, 1, 1, 0, 7000), +(8416, 8220002, 1432011, 1, 1, 0, 5000), +(8417, 8220002, 1442020, 1, 1, 0, 7000), +(8418, 8220002, 1452017, 1, 1, 0, 5000), +(8419, 8220002, 1462018, 1, 1, 0, 5000), +(8420, 8220002, 1332027, 1, 1, 0, 5000), +(8421, 8220002, 1472033, 1, 1, 0, 5000), +(8422, 8220002, 1332026, 1, 1, 0, 5000), +(8423, 8220002, 1482011, 1, 1, 0, 5000), +(8424, 8220002, 1492011, 1, 1, 0, 5000), +(8425, 8220002, 1382008, 1, 1, 0, 7000), +(8426, 8220002, 2070007, 1, 1, 0, 2000), +(8427, 8220002, 2330003, 1, 1, 0, 5000), +(8428, 8220002, 2040326, 1, 1, 0, 3000), +(8429, 8220002, 2040422, 1, 1, 0, 3000), +(8430, 8220002, 2040532, 1, 1, 0, 3000), +(8431, 8220002, 2040931, 1, 1, 0, 3000), +(8432, 8220003, 4000268, 1, 1, 0, 600000), +(8433, 8220003, 4000268, 1, 1, 0, 600000), +(8434, 8220003, 4000268, 1, 1, 0, 600000), +(8435, 8220003, 4000269, 1, 1, 0, 600000), +(8436, 8220003, 4000269, 1, 1, 0, 600000), +(8437, 8220003, 4000269, 1, 1, 0, 600000), +(8438, 8220003, 4000270, 1, 1, 0, 600000), +(8439, 8220003, 4000270, 1, 1, 0, 600000), +(8440, 8220003, 4000270, 1, 1, 0, 600000), +(8441, 8220003, 4006001, 1, 1, 0, 100000), +(8442, 8220003, 4006000, 1, 1, 0, 100000), +(8443, 8220003, 2000005, 1, 1, 0, 999999), +(8444, 8220003, 2000006, 1, 1, 0, 999999), +(8445, 8220003, 2020013, 1, 1, 0, 999999), +(8446, 8220003, 2290006, 1, 1, 0, 5000), +(8447, 8220003, 2290031, 1, 1, 0, 5000), +(8448, 8220003, 2290033, 1, 1, 0, 5000), +(8449, 8220003, 2290061, 1, 1, 0, 5000), +(8450, 8220003, 2290077, 1, 1, 0, 5000), +(8451, 8220003, 2290105, 1, 1, 0, 5000), +(8452, 8220003, 2290118, 1, 1, 0, 5000), +(8453, 8220003, 1382035, 1, 1, 0, 7000), +(8454, 8220003, 1372010, 1, 1, 0, 7000), +(8455, 8220003, 1302056, 1, 1, 0, 7000), +(8456, 8220003, 1312030, 1, 1, 0, 7000), +(8457, 8220003, 1322045, 1, 1, 0, 7000), +(8458, 8220003, 1402035, 1, 1, 0, 7000), +(8459, 8220003, 1412021, 1, 1, 0, 7000), +(8460, 8220003, 1422027, 1, 1, 0, 7000), +(8461, 8220003, 1432030, 1, 1, 0, 5000), +(8462, 8220003, 1442044, 1, 1, 0, 7000), +(8463, 8220003, 1452019, 1, 1, 0, 5000), +(8464, 8220003, 1462015, 1, 1, 0, 5000), +(8465, 8220003, 1332052, 1, 1, 0, 5000), +(8466, 8220003, 1472053, 1, 1, 0, 5000), +(8467, 8220003, 1332051, 1, 1, 0, 5000), +(8468, 8220003, 1482012, 1, 1, 0, 5000), +(8469, 8220003, 1492012, 1, 1, 0, 5000), +(8470, 8220003, 2040824, 1, 1, 0, 3000), +(8471, 8220003, 2044212, 1, 1, 0, 3000), +(8472, 8220004, 4000460, 1, 1, 0, 600000), +(8473, 8220004, 4006001, 1, 1, 0, 100000), +(8474, 8220004, 4006000, 1, 1, 0, 100000), +(8475, 8220004, 2000005, 1, 1, 0, 999999), +(8476, 8220004, 2000006, 1, 1, 0, 999999), +(8477, 8220004, 2020013, 1, 1, 0, 999999), +(8478, 8220004, 2290018, 1, 1, 0, 5000), +(8479, 8220004, 2290019, 1, 1, 0, 5000), +(8480, 8220004, 2290025, 1, 1, 0, 5000), +(8481, 8220004, 2290059, 1, 1, 0, 5000), +(8482, 8220004, 2290077, 1, 1, 0, 5000), +(8483, 8220004, 2290106, 1, 1, 0, 5000), +(8484, 8220004, 1082141, 1, 1, 0, 10000), +(8485, 8220004, 1050105, 1, 1, 0, 7000), +(8486, 8220004, 1002405, 1, 1, 0, 15000), +(8487, 8220004, 1072318, 1, 1, 0, 8000), +(8488, 8220004, 1051093, 1, 1, 0, 7000), +(8489, 8220004, 1332052, 1, 1, 0, 5000), +(8490, 8220004, 1322045, 1, 1, 0, 7000), +(8491, 8220004, 1372010, 1, 1, 0, 7000), +(8492, 8220004, 2049000, 1, 1, 0, 1500), +(8493, 8220004, 2330004, 1, 1, 0, 5000), +(8494, 8220004, 2040326, 1, 1, 0, 3000), +(8495, 8220004, 2040924, 1, 1, 0, 3000), +(8496, 8220004, 2040025, 1, 1, 0, 3000), +(8497, 8220004, 2040532, 1, 1, 0, 3000), +(8498, 8220004, 2040029, 1, 1, 0, 3000), +(8499, 8220005, 4000461, 1, 1, 0, 600000), +(8500, 8220005, 4006001, 1, 1, 0, 100000), +(8501, 8220005, 4006000, 1, 1, 0, 100000), +(8502, 8220005, 2000005, 1, 1, 0, 999999), +(8503, 8220005, 2000006, 1, 1, 0, 999999), +(8504, 8220005, 2020013, 1, 1, 0, 999999), +(8505, 8220005, 2290003, 1, 1, 0, 5000), +(8506, 8220005, 2290037, 1, 1, 0, 5000), +(8507, 8220005, 2290055, 1, 1, 0, 5000), +(8508, 8220005, 2290080, 1, 1, 0, 5000), +(8509, 8220005, 2290099, 1, 1, 0, 5000), +(8510, 8220005, 1072222, 1, 1, 0, 8000), +(8511, 8220005, 1082154, 1, 1, 0, 10000), +(8512, 8220005, 1050108, 1, 1, 0, 7000), +(8513, 8220005, 1002382, 1, 1, 0, 15000), +(8514, 8220005, 1051104, 1, 1, 0, 7000), +(8515, 8220005, 1482012, 1, 1, 0, 5000), +(8516, 8220005, 1402035, 1, 1, 0, 7000), +(8517, 8220005, 1452021, 1, 1, 0, 5000), +(8518, 8220005, 2049000, 1, 1, 0, 1500), +(8519, 8220005, 2040317, 1, 1, 0, 3000), +(8520, 8220005, 2040321, 1, 1, 0, 3000), +(8521, 8220005, 2040931, 1, 1, 0, 3000), +(8522, 8220005, 2040927, 1, 1, 0, 3000), +(8523, 8220006, 4000462, 1, 1, 0, 600000), +(8524, 8220006, 4006001, 1, 1, 0, 100000), +(8525, 8220006, 4006000, 1, 1, 0, 100000), +(8526, 8220006, 2000005, 1, 1, 0, 999999), +(8527, 8220006, 2000006, 1, 1, 0, 999999), +(8528, 8220006, 2020013, 1, 1, 0, 999999), +(8529, 8220006, 2290013, 1, 1, 0, 5000), +(8530, 8220006, 2290043, 1, 1, 0, 5000), +(8531, 8220006, 2290061, 1, 1, 0, 5000), +(8532, 8220006, 2290120, 1, 1, 0, 5000), +(8533, 8220006, 2290090, 1, 1, 0, 5000), +(8534, 8220006, 1072226, 1, 1, 0, 8000), +(8535, 8220006, 1082160, 1, 1, 0, 10000), +(8536, 8220006, 1050099, 1, 1, 0, 7000), +(8537, 8220006, 1002646, 1, 1, 0, 15000), +(8538, 8220006, 1051107, 1, 1, 0, 7000), +(8539, 8220006, 1432030, 1, 1, 0, 5000), +(8540, 8220006, 1462017, 1, 1, 0, 5000), +(8541, 8220006, 1472053, 1, 1, 0, 5000), +(8542, 8220006, 1492012, 1, 1, 0, 5000), +(8543, 8220006, 2049100, 1, 1, 0, 3000), +(8544, 8220006, 2043701, 1, 1, 0, 3000), +(8545, 8220006, 2044701, 1, 1, 0, 3000), +(8546, 8220006, 2044301, 1, 1, 0, 3000), +(8547, 8220006, 2044501, 1, 1, 0, 3000), +(8548, 8220006, 2044801, 1, 1, 0, 3000), +(8549, 8220006, 2044901, 1, 1, 0, 3000), +(8550, 8220007, 2000005, 1, 1, 0, 999999), +(8551, 8220007, 2000004, 1, 1, 0, 999999), +(8552, 8220007, 1032030, 1, 1, 0, 10000), +(8553, 8220007, 1382007, 1, 1, 0, 7000), +(8554, 8220007, 1322019, 1, 1, 0, 7000), +(8555, 8220007, 1312010, 1, 1, 0, 7000), +(8556, 8220007, 1412008, 1, 1, 0, 7000), +(8557, 8220007, 1432007, 1, 1, 0, 5000), +(8558, 8220007, 1302012, 1, 1, 0, 7000), +(8559, 8220007, 1332018, 1, 1, 0, 5000), +(8560, 8220007, 1332019, 1, 1, 0, 5000), +(8561, 8220007, 2043001, 1, 1, 0, 3000), +(8562, 8220007, 2043101, 1, 1, 0, 3000), +(8563, 8220007, 2043301, 1, 1, 0, 3000), +(8564, 8220007, 2043701, 1, 1, 0, 3000), +(8565, 8220007, 2044001, 1, 1, 0, 3000), +(8566, 8220007, 2044201, 1, 1, 0, 3000), +(8567, 8220007, 2044301, 1, 1, 0, 3000), +(8568, 8220007, 2044501, 1, 1, 0, 3000), +(8569, 8220007, 2044601, 1, 1, 0, 3000), +(8570, 8220007, 2044701, 1, 1, 0, 3000), +(8571, 8220009, 2000005, 1, 1, 0, 999999), +(8572, 8220009, 1452009, 1, 1, 0, 5000), +(8573, 8220009, 1382007, 1, 1, 0, 7000), +(8574, 8220009, 1462009, 1, 1, 0, 5000), +(8575, 8220009, 1322019, 1, 1, 0, 7000), +(8576, 8220009, 1312010, 1, 1, 0, 7000), +(8577, 8220009, 1412008, 1, 1, 0, 7000), +(8578, 8220009, 1422010, 1, 1, 0, 7000), +(8579, 8220009, 1472026, 1, 1, 0, 5000), +(8580, 8220009, 1432007, 1, 1, 0, 5000), +(8581, 8220009, 1442008, 1, 1, 0, 7000), +(8582, 8220009, 1302012, 1, 1, 0, 7000), +(8583, 8220009, 1402012, 1, 1, 0, 7000), +(8584, 8220009, 1332018, 1, 1, 0, 5000), +(8585, 8220009, 1332019, 1, 1, 0, 5000), +(8586, 8220009, 2043001, 1, 1, 0, 3000), +(8587, 8220009, 2043101, 1, 1, 0, 3000), +(8588, 8220009, 2043201, 1, 1, 0, 3000), +(8589, 8220009, 2043301, 1, 1, 0, 3000), +(8590, 8220009, 2043701, 1, 1, 0, 3000), +(8591, 8220009, 2043801, 1, 1, 0, 3000), +(8592, 8220009, 2044001, 1, 1, 0, 3000), +(8593, 8220009, 2044101, 1, 1, 0, 3000), +(8594, 8220009, 2044201, 1, 1, 0, 3000), +(8595, 8220009, 2044301, 1, 1, 0, 3000), +(8596, 8220009, 2044401, 1, 1, 0, 3000), +(8597, 8220009, 2044501, 1, 1, 0, 3000), +(8598, 8220009, 2044601, 1, 1, 0, 3000), +(8599, 8220009, 2044701, 1, 1, 0, 3000), +(8600, 8220009, 2000004, 1, 1, 0, 999999), +(8601, 8220009, 1092017, 1, 1, 0, 7000), +(8602, 8500002, 2020013, 1, 1, 0, 999999), +(8603, 8500002, 2020015, 1, 1, 0, 999999), +(8604, 8500002, 2000005, 1, 1, 0, 999999), +(8605, 8500002, 1312015, 1, 1, 0, 7000), +(8606, 8500002, 1332026, 1, 1, 0, 5000), +(8607, 8500002, 1332027, 1, 1, 0, 5000), +(8608, 8500002, 1462018, 1, 1, 0, 5000), +(8609, 8500002, 1372009, 1, 1, 0, 7000), +(8610, 8500002, 2041013, 1, 1, 0, 3000), +(8611, 8500002, 2041016, 1, 1, 0, 3000), +(8612, 8500002, 2041019, 1, 1, 0, 3000), +(8613, 8500002, 2041022, 1, 1, 0, 3000), +(8614, 8500002, 2290006, 1, 1, 0, 5000), +(8615, 8500002, 2290011, 1, 1, 0, 5000), +(8616, 8500002, 2290013, 1, 1, 0, 5000), +(8617, 8500002, 2290028, 1, 1, 0, 5000), +(8618, 8500002, 2290037, 1, 1, 0, 5000), +(8619, 8500002, 2290043, 1, 1, 0, 5000), +(8620, 8500002, 2290051, 1, 1, 0, 5000), +(8621, 8500002, 2290056, 1, 1, 0, 5000), +(8622, 8500002, 2290061, 1, 1, 0, 5000), +(8623, 8500002, 2290066, 1, 1, 0, 5000), +(8624, 8500002, 2290071, 1, 1, 0, 5000), +(8625, 8500002, 2290078, 1, 1, 0, 5000), +(8626, 8500002, 2290089, 1, 1, 0, 5000), +(8627, 8500002, 2290091, 1, 1, 0, 5000), +(8628, 8500002, 2000004, 1, 1, 0, 999999), +(8629, 8500002, 1072213, 1, 1, 0, 8000), +(8630, 8500002, 1072224, 1, 1, 0, 8000), +(8631, 8500002, 1072227, 1, 1, 0, 8000), +(8632, 8500002, 1072220, 1, 1, 0, 8000), +(8633, 8500002, 1040120, 1, 1, 0, 8000), +(8634, 8500002, 1060109, 1, 1, 0, 8000), +(8635, 8500002, 1041122, 1, 1, 0, 8000), +(8636, 8500002, 1061121, 1, 1, 0, 8000), +(8637, 8500002, 1050106, 1, 1, 0, 7000), +(8638, 8500002, 1051105, 1, 1, 0, 7000), +(8639, 8500002, 1050102, 1, 1, 0, 7000), +(8640, 8500002, 1051101, 1, 1, 0, 7000), +(8641, 8500002, 1050098, 1, 1, 0, 7000), +(8642, 8500002, 1051092, 1, 1, 0, 7000), +(8643, 8500002, 1002377, 1, 1, 0, 15000), +(8644, 8500002, 1082158, 1, 1, 0, 10000), +(8645, 8500002, 1072221, 1, 1, 0, 8000), +(8646, 8500002, 1482011, 1, 1, 0, 5000), +(8647, 8500002, 1002646, 1, 1, 0, 15000), +(8648, 8500002, 1052131, 1, 1, 0, 7000), +(8649, 8500002, 1082213, 1, 1, 0, 10000), +(8650, 8500002, 1072318, 1, 1, 0, 8000), +(8651, 8500002, 2290104, 1, 1, 0, 5000), +(8652, 8500002, 2290107, 1, 1, 0, 5000), +(8653, 8500002, 2290121, 1, 1, 0, 5000), +(8654, 8500002, 2290123, 1, 1, 0, 5000), +(8655, 8500002, 2040318, 1, 1, 0, 3000), +(8656, 8500002, 2040321, 1, 1, 0, 3000), +(8657, 8500002, 2040419, 1, 1, 0, 3000), +(8658, 8500002, 2040421, 1, 1, 0, 3000), +(8659, 8500002, 2044809, 1, 1, 0, 3000), +(8660, 8500002, 2049100, 1, 1, 0, 3000), +(8661, 8510000, 2020013, 1, 1, 0, 999999), +(8662, 8510000, 2020015, 1, 1, 0, 999999), +(8663, 8510000, 2000005, 1, 1, 0, 999999), +(8664, 8510000, 2000004, 1, 1, 0, 999999), +(8665, 8510000, 1302023, 1, 1, 0, 7000), +(8666, 8510000, 1322029, 1, 1, 0, 7000), +(8667, 8510000, 1402005, 1, 1, 0, 7000), +(8668, 8510000, 1412010, 1, 1, 0, 7000), +(8669, 8510000, 1040121, 1, 1, 0, 8000), +(8670, 8510000, 1060110, 1, 1, 0, 8000), +(8671, 8510000, 1050103, 1, 1, 0, 7000), +(8672, 8510000, 1051102, 1, 1, 0, 7000), +(8673, 8510000, 1050097, 1, 1, 0, 7000), +(8674, 8510000, 1051091, 1, 1, 0, 7000), +(8675, 8510000, 1041123, 1, 1, 0, 8000), +(8676, 8510000, 1061122, 1, 1, 0, 8000), +(8677, 8510000, 1050107, 1, 1, 0, 7000), +(8678, 8510000, 1051106, 1, 1, 0, 7000), +(8679, 8510000, 2040513, 1, 1, 0, 3000), +(8680, 8510000, 2040516, 1, 1, 0, 3000), +(8681, 8510000, 2040501, 1, 1, 0, 3000), +(8682, 8510000, 2040504, 1, 1, 0, 3000), +(8683, 8510000, 2040401, 1, 1, 0, 3000), +(8684, 8510000, 4001085, 1, 1, 0, 600000), +(8685, 8510000, 4000175, 1, 1, 0, 600000), +(8686, 8510000, 1492011, 1, 1, 0, 5000), +(8687, 8510000, 1052131, 1, 1, 0, 7000), +(8688, 8510000, 2290000, 1, 1, 0, 5000), +(8689, 8510000, 2290001, 1, 1, 0, 5000), +(8690, 8510000, 2290004, 1, 1, 0, 5000), +(8691, 8510000, 2290005, 1, 1, 0, 5000), +(8692, 8510000, 2290024, 1, 1, 0, 5000), +(8693, 8510000, 2290025, 1, 1, 0, 5000), +(8694, 8510000, 2290026, 1, 1, 0, 5000), +(8695, 8510000, 2290027, 1, 1, 0, 5000), +(8696, 8510000, 2290052, 1, 1, 0, 5000), +(8697, 8510000, 2290053, 1, 1, 0, 5000), +(8698, 8510000, 2290054, 1, 1, 0, 5000), +(8699, 8510000, 2290055, 1, 1, 0, 5000), +(8700, 8510000, 2290076, 1, 1, 0, 5000), +(8701, 8510000, 2290077, 1, 1, 0, 5000), +(8702, 8510000, 2290082, 1, 1, 0, 5000), +(8703, 8510000, 2290083, 1, 1, 0, 5000), +(8704, 8510000, 2290097, 1, 1, 0, 5000), +(8705, 8510000, 2290099, 1, 1, 0, 5000), +(8706, 8510000, 2290106, 1, 1, 0, 5000), +(8707, 8510000, 2290108, 1, 1, 0, 5000), +(8708, 8510000, 2290112, 1, 1, 0, 5000), +(8709, 8510000, 2290114, 1, 1, 0, 5000), +(8710, 8510000, 2290122, 1, 1, 0, 5000), +(8711, 8510000, 2290124, 1, 1, 0, 5000), +(8712, 8800002, 2020013, 1, 1, 0, 999999), +(8713, 8800002, 2020015, 1, 1, 0, 999999), +(8714, 8800002, 2000005, 1, 1, 0, 999999), +(8715, 8800002, 1002357, 1, 1, 0, 999999), +(8716, 8800002, 1002357, 1, 1, 0, 999999), +(8717, 8800002, 1002357, 1, 1, 0, 300000), +(8718, 8800002, 1002357, 1, 1, 0, 300000), +(8719, 8800002, 1002357, 1, 1, 0, 300000), +(8720, 8800002, 2280007, 1, 1, 0, 1350000), +(8721, 8800002, 2280008, 1, 1, 0, 1350000), +(8722, 8800002, 2280009, 1, 1, 0, 1350000), +(8723, 8800002, 2280010, 1, 1, 0, 1350000), +(8724, 8800002, 2290007, 1, 1, 0, 22500), +(8725, 8800002, 2290016, 1, 1, 0, 22500), +(8726, 8800002, 2290020, 1, 1, 0, 22500), +(8727, 8800002, 2290022, 1, 1, 0, 22500), +(8728, 8800002, 2290029, 1, 1, 0, 22500), +(8729, 8800002, 2290040, 1, 1, 0, 22500), +(8730, 8800002, 2290046, 1, 1, 0, 22500), +(8731, 8800002, 2290048, 1, 1, 0, 22500), +(8732, 8800002, 2290057, 1, 1, 0, 22500), +(8733, 8800002, 2290064, 1, 1, 0, 22500), +(8734, 8800002, 2290067, 1, 1, 0, 22500), +(8735, 8800002, 2290074, 1, 1, 0, 22500), +(8736, 8800002, 2290079, 1, 1, 0, 22500), +(8737, 8800002, 2290084, 1, 1, 0, 22500), +(8738, 8800002, 2290094, 1, 1, 0, 22500), +(8739, 8800002, 1302056, 1, 1, 0, 31500), +(8740, 8800002, 1312030, 1, 1, 0, 31500), +(8741, 8800002, 1322045, 1, 1, 0, 31500), +(8742, 8800002, 1332051, 1, 1, 0, 22500), +(8743, 8800002, 1332052, 1, 1, 0, 22500), +(8744, 8800002, 1372010, 1, 1, 0, 31500), +(8745, 8800002, 1382035, 1, 1, 0, 31500), +(8746, 8800002, 1402035, 1, 1, 0, 31500), +(8747, 8800002, 1412021, 1, 1, 0, 31500), +(8748, 8800002, 1422027, 1, 1, 0, 31500), +(8749, 8800002, 1432030, 1, 1, 0, 22500), +(8750, 8800002, 1442044, 1, 1, 0, 31500), +(8751, 8800002, 1452019, 1, 1, 0, 22500), +(8752, 8800002, 1452020, 1, 1, 0, 22500), +(8753, 8800002, 1462015, 1, 1, 0, 22500), +(8754, 8800002, 1462016, 1, 1, 0, 22500), +(8755, 8800002, 1472053, 1, 1, 0, 22500), +(8756, 8800002, 2000004, 1, 1, 0, 999999), +(8757, 8800002, 1482012, 1, 1, 0, 22500), +(8758, 8800002, 1492012, 1, 1, 0, 22500), +(8759, 8800002, 2290110, 1, 1, 0, 22500), +(8760, 8800002, 2290115, 1, 1, 0, 22500), +(8761, 8800002, 2040026, 1, 1, 0, 13500), +(8762, 8800002, 2040031, 1, 1, 0, 13500), +(8763, 8800002, 2040321, 1, 1, 0, 13500), +(8764, 8800002, 2040328, 1, 1, 0, 13500), +(8765, 8800002, 2040512, 1, 1, 0, 13500), +(8766, 8800002, 2049000, 1, 1, 0, 6750), +(8767, 8800002, 2049100, 1, 1, 0, 13500), +(8768, 8810018, 2020013, 1, 1, 0, 999999), +(8769, 8810018, 2020015, 1, 1, 0, 999999), +(8770, 8810018, 2000005, 1, 1, 0, 999999), +(8771, 8810018, 2000006, 1, 1, 0, 999999), +(8772, 8810018, 2000004, 1, 1, 0, 999999), +(8773, 8810018, 1302056, 1, 1, 0, 1512000), +(8774, 8810018, 1312030, 1, 1, 0, 1512000), +(8775, 8810018, 1322045, 1, 1, 0, 1512000), +(8776, 8810018, 1332051, 1, 1, 0, 1080000), +(8777, 8810018, 1332052, 1, 1, 0, 1080000), +(8778, 8810018, 1372010, 1, 1, 0, 1512000), +(8779, 8810018, 1382035, 1, 1, 0, 1512000), +(8780, 8810018, 1402035, 1, 1, 0, 1512000), +(8781, 8810018, 1412021, 1, 1, 0, 1512000), +(8782, 8810018, 1422027, 1, 1, 0, 1512000), +(8783, 8810018, 1432030, 1, 1, 0, 1080000), +(8784, 8810018, 1442044, 1, 1, 0, 1512000), +(8785, 8810018, 1452019, 1, 1, 0, 1080000), +(8786, 8810018, 1452020, 1, 1, 0, 1080000), +(8787, 8810018, 1452021, 1, 1, 0, 1080000), +(8788, 8810018, 1462015, 1, 1, 0, 1080000), +(8789, 8810018, 1462016, 1, 1, 0, 1080000), +(8790, 8810018, 1462017, 1, 1, 0, 1080000), +(8791, 8810018, 1472053, 1, 1, 0, 1080000), +(8792, 8810018, 1372032, 1, 1, 0, 1512000), +(8793, 8810018, 1302059, 1, 1, 0, 1512000), +(8794, 8810018, 1312031, 1, 1, 0, 1512000), +(8795, 8810018, 1322052, 1, 1, 0, 1512000), +(8796, 8810018, 1332049, 1, 1, 0, 1080000), +(8797, 8810018, 1332050, 1, 1, 0, 1080000), +(8798, 8810018, 1382036, 1, 1, 0, 1512000), +(8799, 8810018, 1402036, 1, 1, 0, 1512000), +(8800, 8810018, 1412026, 1, 1, 0, 1512000), +(8801, 8810018, 1422028, 1, 1, 0, 1512000), +(8802, 8810018, 1432038, 1, 1, 0, 1080000), +(8803, 8810018, 1442045, 1, 1, 0, 1512000), +(8804, 8810018, 1452044, 1, 1, 0, 1080000), +(8805, 8810018, 1462039, 1, 1, 0, 1080000), +(8806, 8810018, 1472051, 1, 1, 0, 1080000), +(8807, 8810018, 1472052, 1, 1, 0, 1080000), +(8808, 8810018, 1122000, 1, 1, 0, 999999), +(8809, 8810018, 1122000, 1, 1, 0, 999999), +(8810, 8810018, 1122000, 1, 1, 0, 300000), +(8811, 8810018, 1122000, 1, 1, 0, 300000), +(8812, 8810018, 2290017, 1, 1, 0, 1080000), +(8813, 8810018, 2290021, 1, 1, 0, 1080000), +(8814, 8810018, 2290023, 1, 1, 0, 1080000), +(8815, 8810018, 2290041, 1, 1, 0, 1080000), +(8816, 8810018, 2290047, 1, 1, 0, 1080000), +(8817, 8810018, 2290049, 1, 1, 0, 1080000), +(8818, 8810018, 2290065, 1, 1, 0, 1080000), +(8819, 8810018, 2290075, 1, 1, 0, 1080000), +(8820, 8810018, 2290085, 1, 1, 0, 1080000), +(8821, 8810018, 2290095, 1, 1, 0, 1080000), +(8822, 8810018, 2290096, 1, 1, 0, 800000), +(8823, 8810018, 1482012, 1, 1, 0, 1080000), +(8824, 8810018, 1492012, 1, 1, 0, 1080000), +(8825, 8810018, 1482013, 1, 1, 0, 1080000), +(8826, 8810018, 1492013, 1, 1, 0, 1080000), +(8827, 8810018, 2290111, 1, 1, 0, 1080000), +(8828, 8810018, 2290116, 1, 1, 0, 1080000), +(8829, 8810018, 2040317, 1, 1, 0, 648000), +(8830, 8810018, 2040418, 1, 1, 0, 648000), +(8831, 8810018, 2040421, 1, 1, 0, 648000), +(8832, 8810018, 2040512, 1, 1, 0, 648000), +(8833, 8810018, 2040515, 1, 1, 0, 648000), +(8834, 8810018, 2040625, 1, 1, 0, 648000), +(8835, 8810018, 2049000, 1, 1, 0, 324000), +(8836, 8810018, 2049100, 1, 1, 0, 648000), +(8837, 9300003, 1072369, 1, 1, 0, 300000), +(8838, 9300012, 4001023, 1, 1, 0, 999999), +(8839, 9300028, 4001024, 1, 1, 0, 999999), +(8840, 9300039, 4001054, 1, 1, 0, 600000), +(8841, 9300119, 2000002, 1, 1, 0, 200000), +(8842, 9300119, 2000004, 1, 1, 0, 999999), +(8843, 9300119, 2000006, 1, 1, 0, 999999), +(8844, 9300119, 2020013, 1, 1, 0, 999999), +(8845, 9300119, 2020014, 1, 1, 0, 200000), +(8846, 9300119, 2020015, 1, 1, 0, 999999), +(8847, 9300119, 2041010, 1, 1, 0, 3000), +(8848, 9300119, 2040502, 1, 1, 0, 3000), +(8849, 9300119, 2044201, 1, 1, 0, 3000), +(8850, 9300119, 2040001, 1, 1, 0, 3000), +(8851, 9300119, 2040601, 1, 1, 0, 3000), +(8852, 9300119, 2040505, 1, 1, 0, 3000), +(8853, 9300119, 2040002, 1, 1, 0, 3000), +(8854, 9300119, 2040401, 1, 1, 0, 3000), +(8855, 9300119, 2043201, 1, 1, 0, 3000), +(8856, 9300119, 2044101, 1, 1, 0, 3000), +(8857, 9300119, 2043101, 1, 1, 0, 3000), +(8858, 9300119, 2040801, 1, 1, 0, 3000), +(8859, 9300139, 2000002, 1, 1, 0, 200000), +(8860, 9300139, 2000004, 1, 1, 0, 999999), +(8861, 9300139, 2000006, 1, 1, 0, 999999), +(8862, 9300139, 2020013, 1, 1, 0, 999999), +(8863, 9300139, 2020014, 1, 1, 0, 200000), +(8864, 9300139, 2020015, 1, 1, 0, 999999), +(8865, 9300139, 2044601, 1, 1, 0, 3000), +(8866, 9300139, 2040707, 1, 1, 0, 3000), +(8867, 9300139, 2044401, 1, 1, 0, 3000), +(8868, 9300139, 2040504, 1, 1, 0, 3000), +(8869, 9300139, 2044501, 1, 1, 0, 3000), +(8870, 9300139, 2044001, 1, 1, 0, 3000), +(8871, 9300139, 2043701, 1, 1, 0, 3000), +(8872, 9300139, 2043001, 1, 1, 0, 3000), +(8873, 9300139, 2040004, 1, 1, 0, 3000), +(8874, 9300139, 2044701, 1, 1, 0, 3000), +(8875, 9300139, 2043801, 1, 1, 0, 3000), +(8876, 9300139, 2043301, 1, 1, 0, 3000), +(8877, 9300182, 4001164, 1, 1, 0, 600000), +(8878, 9300182, 2000002, 1, 1, 0, 200000), +(8879, 9300182, 2000006, 1, 1, 0, 999999), +(8880, 9300182, 2020013, 1, 1, 0, 999999), +(8881, 9300182, 2020014, 1, 1, 0, 200000), +(8882, 9300182, 2020015, 1, 1, 0, 999999), +(8883, 9300182, 2043001, 1, 1, 0, 3000), +(8884, 9300182, 2043101, 1, 1, 0, 3000), +(8885, 9300182, 2043201, 1, 1, 0, 3000), +(8886, 9300182, 2043301, 1, 1, 0, 3000), +(8887, 9300182, 2043701, 1, 1, 0, 3000), +(8888, 9300182, 2043801, 1, 1, 0, 3000), +(8889, 9300182, 2044001, 1, 1, 0, 3000), +(8890, 9300182, 2044101, 1, 1, 0, 3000), +(8891, 9300182, 2044201, 1, 1, 0, 3000), +(8892, 9300182, 2044301, 1, 1, 0, 3000), +(8893, 9300182, 2044401, 1, 1, 0, 3000), +(8894, 9300182, 2044501, 1, 1, 0, 3000), +(8895, 9300182, 2044601, 1, 1, 0, 3000), +(8896, 9300182, 2044701, 1, 1, 0, 3000), +(8897, 9300182, 2049000, 1, 1, 0, 1500), +(8898, 9300215, 2022413, 1, 1, 0, 200000), +(8899, 9300215, 2022414, 1, 1, 0, 200000), +(8900, 9300215, 2022415, 1, 1, 0, 200000), +(8901, 9300215, 2022416, 1, 1, 0, 200000), +(8902, 9300215, 2022417, 1, 1, 0, 200000), +(8903, 9300215, 2022418, 1, 1, 0, 200000), +(8904, 9300215, 2022419, 1, 1, 0, 200000), +(8905, 9300215, 2022420, 1, 1, 0, 200000), +(8906, 9300215, 2022421, 1, 1, 0, 200000), +(8907, 9300274, 4000001, 1, 1, 0, 600000), +(8908, 9300274, 2000000, 1, 1, 0, 20000), +(8909, 9300274, 2040705, 1, 1, 0, 300), +(8910, 9300274, 1072004, 1, 1, 0, 800), +(8911, 9300274, 1002043, 1, 1, 0, 1500), +(8912, 9300274, 1432000, 1, 1, 0, 500), +(8913, 9300274, 1312000, 1, 1, 0, 700), +(8914, 9300274, 2060000, 1, 1, 0, 30000), +(8915, 9300274, 4010000, 1, 1, 0, 9000), +(8916, 9300274, 4020007, 1, 1, 0, 9000), +(8917, 9300274, 2061000, 1, 1, 0, 30000), +(8918, 9300274, 1082012, 1, 1, 0, 1000), +(8919, 9300274, 1072015, 1, 1, 0, 800), +(8920, 9300274, 1072031, 1, 1, 0, 800), +(8921, 9300274, 4030001, 1, 1, 0, 300), +(8922, 9300274, 1052095, 1, 1, 0, 700), +(8923, 9300274, 2330000, 1, 1, 0, 500), +(8924, 9500317, 4001141, 1, 1, 0, 600000), +(8925, 9500317, 2022279, 1, 1, 0, 200000), +(8926, 8830000, 1302112, 1, 1, 0, 7000), +(8927, 8830000, 1302113, 1, 1, 0, 7000), +(8928, 8830000, 1312042, 1, 1, 0, 7000), +(8929, 8830000, 1312043, 1, 1, 0, 7000), +(8930, 8830000, 1322068, 1, 1, 0, 7000), +(8931, 8830000, 1322069, 1, 1, 0, 7000), +(8932, 8830000, 1332084, 1, 1, 0, 5000), +(8933, 8830000, 1332085, 1, 1, 0, 5000), +(8934, 8830000, 1332086, 1, 1, 0, 5000), +(8935, 8830000, 1332087, 1, 1, 0, 5000), +(8936, 8830000, 1372050, 1, 1, 0, 7000), +(8937, 8830000, 1382066, 1, 1, 0, 7000), +(8938, 8830000, 1382067, 1, 1, 0, 7000), +(8939, 8830000, 1402056, 1, 1, 0, 7000), +(8940, 8830000, 1402057, 1, 1, 0, 7000), +(8941, 8830000, 1402058, 1, 1, 0, 7000), +(8942, 8830000, 1402059, 1, 1, 0, 7000), +(8943, 8830000, 1412038, 1, 1, 0, 7000), +(8944, 8830000, 1412039, 1, 1, 0, 7000), +(8945, 8830000, 1422042, 1, 1, 0, 7000), +(8946, 8830000, 1422043, 1, 1, 0, 7000), +(8947, 8830000, 1432054, 1, 1, 0, 5000), +(8948, 8830000, 1432055, 1, 1, 0, 5000), +(8949, 8830000, 1442074, 1, 1, 0, 7000), +(8950, 8830000, 1442075, 1, 1, 0, 7000), +(8951, 8830000, 1452066, 1, 1, 0, 5000), +(8952, 8830000, 1452067, 1, 1, 0, 5000), +(8953, 8830000, 1452068, 1, 1, 0, 5000), +(8954, 8830000, 1452069, 1, 1, 0, 5000), +(8955, 8830000, 1452070, 1, 1, 0, 5000), +(8956, 8830000, 1462059, 1, 1, 0, 5000), +(8957, 8830000, 1462060, 1, 1, 0, 5000), +(8958, 8830000, 1462061, 1, 1, 0, 5000), +(8959, 8830000, 1462062, 1, 1, 0, 5000), +(8960, 8830000, 1462063, 1, 1, 0, 5000), +(8961, 8830000, 1472083, 1, 1, 0, 5000), +(8962, 8830000, 1472084, 1, 1, 0, 5000), +(8963, 8830000, 1482031, 1, 1, 0, 5000), +(8964, 8830000, 1482032, 1, 1, 0, 5000), +(8965, 8830000, 1492035, 1, 1, 0, 5000), +(8966, 8830000, 1492036, 1, 1, 0, 5000), +(8967, 8830000, 2000004, 1, 1, 0, 999999), +(8968, 8830000, 2000005, 1, 1, 0, 999999), +(8969, 8830000, 2000006, 1, 1, 0, 999999), +(8970, 8830000, 2030000, 1, 1, 0, 200000), +(8971, 8830000, 2050004, 1, 1, 0, 500000), +(8972, 8830000, 2020001, 1, 1, 0, 200000), +(8973, 8830000, 2020000, 1, 1, 0, 200000), +(8974, 8830000, 2000016, 1, 1, 0, 200000), +(8975, 8830000, 2020005, 1, 1, 0, 200000), +(8976, 8830000, 2020003, 1, 1, 0, 200000), +(8977, 8830000, 2020009, 1, 1, 0, 200000), +(8978, 8830000, 2020006, 1, 1, 0, 200000), +(8979, 8830000, 2020007, 1, 1, 0, 200000), +(8980, 8830000, 2022000, 1, 1, 0, 200000), +(8981, 8830000, 2020010, 1, 1, 0, 200000), +(8982, 8830000, 2001000, 1, 1, 0, 200000), +(8983, 8830000, 2001002, 1, 1, 0, 200000), +(8984, 8830000, 2020012, 1, 1, 0, 200000), +(8985, 8830000, 2020013, 1, 1, 0, 999999), +(8986, 8830000, 2020014, 1, 1, 0, 200000), +(8987, 8830000, 2020015, 1, 1, 0, 999999), +(8988, 8830000, 2049100, 1, 1, 0, 3000), +(8989, 8830000, 2049000, 1, 1, 0, 1500); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(8990, 8830000, 2040739, 1, 1, 0, 3000), +(8991, 8830000, 1072376, 1, 1, 0, 8000), +(8992, 8830000, 4001261, 1, 1, 0, 600000), +(8993, 8830000, 2330005, 1, 1, 0, 5000), +(8994, 8830000, 1382068, 1, 1, 0, 7000), +(8995, 8830000, 1402062, 1, 1, 0, 7000), +(8996, 8830000, 1472086, 1, 1, 0, 5000), +(8997, 8830000, 1442078, 1, 1, 0, 7000), +(8998, 8830000, 1452071, 1, 1, 0, 5000), +(8999, 8830000, 1492037, 1, 1, 0, 5000), +(9000, 100134, 4000497, 1, 1, 0, 600000), +(9001, 100134, 2000000, 1, 1, 0, 20000), +(9002, 100134, 2010009, 1, 1, 0, 20000), +(9003, 100134, 4010002, 1, 1, 0, 9000), +(9004, 100134, 4020002, 1, 1, 0, 9000), +(9005, 100134, 2040500, 1, 1, 0, 300), +(9006, 100134, 2044400, 1, 1, 0, 300), +(9007, 100134, 1002042, 1, 1, 0, 1500), +(9008, 100134, 1002051, 1, 1, 0, 1500), +(9009, 100134, 1032003, 1, 1, 0, 1000), +(9010, 100134, 1040009, 1, 1, 0, 800), +(9011, 100134, 1060009, 1, 1, 0, 800), +(9012, 100134, 1051000, 1, 1, 0, 700), +(9013, 100134, 1072050, 1, 1, 0, 800), +(9014, 100133, 4000496, 1, 1, 0, 600000), +(9015, 100133, 2000000, 1, 1, 0, 20000), +(9016, 100133, 2010009, 1, 1, 0, 20000), +(9017, 100133, 4010001, 1, 1, 0, 9000), +(9018, 100133, 4020003, 1, 1, 0, 9000), +(9019, 100133, 2048000, 1, 1, 0, 300), +(9020, 100133, 2041004, 1, 1, 0, 300), +(9021, 100133, 1002041, 1, 1, 0, 1500), +(9022, 100133, 1002007, 1, 1, 0, 1500), +(9023, 100133, 1032001, 1, 1, 0, 1000), +(9024, 100133, 1040038, 1, 1, 0, 800), +(9025, 100133, 1060028, 1, 1, 0, 800), +(9026, 100133, 1041064, 1, 1, 0, 800), +(9027, 100133, 1061023, 1, 1, 0, 800), +(9028, 100133, 1072009, 1, 1, 0, 800), +(9029, 100133, 1082000, 1, 1, 0, 1000), +(9030, 100133, 1442006, 1, 1, 0, 700), +(9031, 100132, 4000495, 1, 1, 0, 600000), +(9032, 100132, 2000000, 1, 1, 0, 20000), +(9033, 100132, 2010009, 1, 1, 0, 20000), +(9034, 100132, 4010000, 1, 1, 0, 9000), +(9035, 100132, 4020007, 1, 1, 0, 9000), +(9036, 100132, 2040823, 1, 1, 0, 300), +(9037, 100132, 2041018, 1, 1, 0, 300), +(9038, 100132, 1002001, 1, 1, 0, 1500), +(9039, 100132, 1002003, 1, 1, 0, 1500), +(9040, 100132, 1040014, 1, 1, 0, 800), +(9041, 100132, 1040015, 1, 1, 0, 800), +(9042, 100132, 1060008, 1, 1, 0, 800), +(9043, 100132, 1041014, 1, 1, 0, 800), +(9044, 100132, 1061014, 1, 1, 0, 800), +(9045, 100132, 1072004, 1, 1, 0, 800), +(9046, 100132, 1082003, 1, 1, 0, 1000), +(9047, 100132, 1442000, 1, 1, 0, 700), +(9048, 100131, 4000494, 1, 1, 0, 600000), +(9049, 100131, 2000000, 1, 1, 0, 20000), +(9050, 100131, 2010009, 1, 1, 0, 20000), +(9051, 100131, 4010006, 1, 1, 0, 9000), +(9052, 100131, 4020006, 1, 1, 0, 9000), +(9053, 100131, 2040400, 1, 1, 0, 300), +(9054, 100131, 2040618, 1, 1, 0, 300), +(9055, 100131, 1002019, 1, 1, 0, 1500), +(9056, 100131, 1002002, 1, 1, 0, 1500), +(9057, 100131, 1040013, 1, 1, 0, 800), +(9058, 100131, 1041012, 1, 1, 0, 800), +(9059, 100131, 1060004, 1, 1, 0, 800), +(9060, 100131, 1072005, 1, 1, 0, 800), +(9061, 100130, 4000493, 1, 1, 0, 600000), +(9062, 100130, 2010000, 1, 1, 0, 20000), +(9063, 100130, 2010009, 1, 1, 0, 20000), +(9064, 100130, 4010005, 1, 1, 0, 9000), +(9065, 100130, 4020005, 1, 1, 0, 9000), +(9066, 100130, 2040003, 1, 1, 0, 300), +(9067, 100130, 1002008, 1, 1, 0, 1500), +(9068, 100130, 1040010, 1, 1, 0, 800), +(9069, 100130, 1041004, 1, 1, 0, 800), +(9070, 100130, 1060007, 1, 1, 0, 800), +(9071, 1110130, 4000012, 1, 1, 0, 600000), +(9072, 1110130, 2000000, 1, 1, 0, 20000), +(9073, 1110130, 2043102, 1, 1, 0, 300), +(9074, 1110130, 2000003, 1, 1, 0, 20000), +(9075, 1110130, 4020003, 1, 1, 0, 9000), +(9076, 1110130, 1322000, 1, 1, 0, 700), +(9077, 1110130, 2060000, 1, 1, 0, 30000), +(9078, 1110130, 1041044, 1, 1, 0, 800), +(9079, 1110130, 1061037, 1, 1, 0, 800), +(9080, 1110130, 4010004, 1, 1, 0, 9000), +(9081, 1110130, 1092008, 1, 1, 0, 700), +(9082, 1110130, 1041017, 1, 1, 0, 800), +(9083, 1110130, 1061012, 1, 1, 0, 800), +(9084, 1110130, 1462002, 1, 1, 0, 500), +(9085, 1110130, 2061000, 1, 1, 0, 30000), +(9086, 1110130, 1041063, 1, 1, 0, 800), +(9087, 1110130, 1061059, 1, 1, 0, 800), +(9088, 1110130, 1452003, 1, 1, 0, 500), +(9089, 1110130, 2048000, 1, 1, 0, 300), +(9090, 1110130, 1002033, 1, 1, 0, 1500), +(9091, 1110130, 1302007, 1, 1, 0, 700), +(9092, 1110130, 4020002, 1, 1, 0, 9000), +(9093, 1110130, 1032001, 1, 1, 0, 1000), +(9094, 1110130, 1002010, 1, 1, 0, 1500), +(9095, 1110130, 2000001, 1, 1, 0, 20000), +(9096, 1110130, 1002143, 1, 1, 0, 1500), +(9097, 1110130, 1432005, 1, 1, 0, 500), +(9098, 1110130, 1412012, 1, 1, 0, 700), +(9099, 1110130, 1072285, 1, 1, 0, 800), +(9100, 1110130, 1482001, 1, 1, 0, 500), +(9101, 1140130, 2000000, 1, 1, 0, 20000), +(9102, 1140130, 2000003, 1, 1, 0, 20000), +(9103, 1140130, 4000195, 1, 1, 0, 600000), +(9104, 1140130, 2060000, 1, 1, 0, 30000), +(9105, 1140130, 2061000, 1, 1, 0, 30000), +(9106, 1140130, 4010000, 1, 1, 0, 9000), +(9107, 1140130, 4020007, 1, 1, 0, 9000), +(9108, 1140130, 4010004, 1, 1, 0, 9000), +(9109, 1140130, 2040501, 1, 1, 0, 300), +(9110, 1140130, 2040801, 1, 1, 0, 300), +(9111, 1140130, 1041062, 1, 1, 0, 800), +(9112, 1140130, 1061058, 1, 1, 0, 800), +(9113, 1140130, 1050010, 1, 1, 0, 700), +(9114, 1140130, 2048001, 1, 1, 0, 300), +(9115, 1140130, 1041029, 1, 1, 0, 800), +(9116, 1140130, 1061027, 1, 1, 0, 800), +(9117, 1140130, 1072046, 1, 1, 0, 800), +(9118, 1140130, 1072066, 1, 1, 0, 800), +(9119, 1140130, 1082018, 1, 1, 0, 1000), +(9120, 1140130, 1002107, 1, 1, 0, 1500), +(9121, 1140130, 1002113, 1, 1, 0, 1500), +(9122, 1140130, 1050003, 1, 1, 0, 700), +(9123, 1140130, 1412012, 1, 1, 0, 700), +(9124, 1140130, 1082180, 1, 1, 0, 1000), +(9125, 1140130, 2044802, 1, 1, 0, 300), +(9126, 2230131, 4000008, 1, 1, 0, 600000), +(9127, 2230131, 2000001, 1, 1, 0, 20000), +(9128, 2230131, 2002000, 1, 1, 0, 20000), +(9129, 2230131, 2044302, 1, 1, 0, 300), +(9130, 2230131, 1032000, 1, 1, 0, 1000), +(9131, 2230131, 1032004, 1, 1, 0, 1000), +(9132, 2230131, 1452001, 1, 1, 0, 500), +(9133, 2230131, 1412002, 1, 1, 0, 700), +(9134, 2230131, 2060000, 1, 1, 0, 30000), +(9135, 2230131, 4010002, 1, 1, 0, 9000), +(9136, 2230131, 4020003, 1, 1, 0, 9000), +(9137, 2230131, 1002158, 1, 1, 0, 1500), +(9138, 2230131, 2000003, 1, 1, 0, 20000), +(9139, 2230131, 1040048, 1, 1, 0, 800), +(9140, 2230131, 2061000, 1, 1, 0, 30000), +(9141, 2230131, 1060038, 1, 1, 0, 800), +(9142, 2230131, 1372003, 1, 1, 0, 700), +(9143, 2230131, 1060018, 1, 1, 0, 800), +(9144, 2230131, 1040026, 1, 1, 0, 800), +(9145, 2230131, 1040009, 1, 1, 0, 800), +(9146, 2230131, 4010003, 1, 1, 0, 9000), +(9147, 2230131, 2000002, 1, 1, 0, 20000), +(9148, 2230131, 1050030, 1, 1, 0, 700), +(9149, 2230131, 1050031, 1, 1, 0, 700), +(9150, 2230131, 1432003, 1, 1, 0, 500), +(9151, 2230131, 1002035, 1, 1, 0, 1500), +(9152, 2230131, 1312007, 1, 1, 0, 700), +(9153, 2230131, 1040021, 1, 1, 0, 800), +(9154, 2230131, 1082183, 1, 1, 0, 1000), +(9155, 2230131, 1492003, 1, 1, 0, 500), +(9156, 2230131, 2049100, 1, 1, 0, 300), +(9157, 3300000, 2000003, 1, 1, 0, 20000), +(9158, 3300000, 2060000, 1, 1, 0, 30000), +(9159, 3300000, 2061000, 1, 1, 0, 30000), +(9160, 3300000, 2000002, 1, 1, 0, 20000), +(9161, 3300000, 4010005, 1, 1, 0, 9000), +(9162, 3300000, 4020000, 1, 1, 0, 9000), +(9163, 3300000, 2044701, 1, 1, 0, 300), +(9164, 3300000, 1332020, 1, 1, 0, 500), +(9165, 3300000, 1040000, 1, 1, 0, 800), +(9166, 3300000, 1060075, 1, 1, 0, 800), +(9167, 3300000, 1402010, 1, 1, 0, 700), +(9168, 3300000, 1032007, 1, 1, 0, 1000), +(9169, 3300000, 1072078, 1, 1, 0, 800), +(9170, 3300000, 1082046, 1, 1, 0, 1000), +(9171, 3300000, 1002156, 1, 1, 0, 1500), +(9172, 3300000, 1002622, 1, 1, 0, 1500), +(9173, 3300000, 4130005, 1, 1, 0, 6000), +(9174, 3300000, 4130009, 1, 1, 0, 6000), +(9175, 3300000, 4130021, 1, 1, 0, 6000), +(9176, 3300000, 4000499, 1, 1, 0, 600000), +(9177, 3300000, 2043216, 1, 1, 0, 300), +(9178, 3300000, 2043311, 1, 1, 0, 300), +(9179, 3300000, 2382092, 1, 1, 0, 20000), +(9180, 3300003, 4131008, 1, 1, 0, 6000), +(9181, 3300003, 2060000, 1, 1, 0, 30000), +(9182, 3300003, 2061000, 1, 1, 0, 30000), +(9183, 3300003, 4020000, 1, 1, 0, 9000), +(9184, 3300003, 4020001, 1, 1, 0, 9000), +(9185, 3300003, 2000002, 1, 1, 0, 20000), +(9186, 3300003, 2000003, 1, 1, 0, 20000), +(9187, 3300003, 1041042, 1, 1, 0, 800), +(9188, 3300003, 1061035, 1, 1, 0, 800), +(9189, 3300003, 1002023, 1, 1, 0, 1500), +(9190, 3300003, 1002163, 1, 1, 0, 1500), +(9191, 3300003, 1032010, 1, 1, 0, 1000), +(9192, 3300003, 1040062, 1, 1, 0, 800), +(9193, 3300003, 1060051, 1, 1, 0, 800), +(9194, 3300003, 1051015, 1, 1, 0, 700), +(9195, 3300003, 1302004, 1, 1, 0, 700), +(9196, 3300003, 1332014, 1, 1, 0, 500), +(9197, 3300003, 1072119, 1, 1, 0, 800), +(9198, 3300003, 1072110, 1, 1, 0, 800), +(9199, 3300003, 1082063, 1, 1, 0, 1000), +(9200, 3300003, 1002625, 1, 1, 0, 1500), +(9201, 3300003, 2330001, 1, 1, 0, 500), +(9202, 3300003, 4130000, 1, 1, 0, 6000), +(9203, 3300003, 4130014, 1, 1, 0, 6000), +(9204, 3300003, 4130017, 1, 1, 0, 6000), +(9205, 3300003, 4000502, 1, 1, 0, 600000), +(9206, 3300003, 2044416, 1, 1, 0, 300), +(9207, 3300003, 2043711, 1, 1, 0, 300), +(9208, 3300003, 2382095, 1, 1, 0, 20000), +(9209, 3300002, 4131003, 1, 1, 0, 6000), +(9210, 3300002, 2060000, 1, 1, 0, 30000), +(9211, 3300002, 2061000, 1, 1, 0, 30000), +(9212, 3300002, 4010001, 1, 1, 0, 9000), +(9213, 3300002, 4020000, 1, 1, 0, 9000), +(9214, 3300002, 4004001, 1, 1, 0, 10000), +(9215, 3300002, 2000002, 1, 1, 0, 20000), +(9216, 3300002, 2000003, 1, 1, 0, 20000), +(9217, 3300002, 2040701, 1, 1, 0, 300), +(9218, 3300002, 1462000, 1, 1, 0, 500), +(9219, 3300002, 1322014, 1, 1, 0, 700), +(9220, 3300002, 1050030, 1, 1, 0, 700), +(9221, 3300002, 1040058, 1, 1, 0, 800), +(9222, 3300002, 1060044, 1, 1, 0, 800), +(9223, 3300002, 1041058, 1, 1, 0, 800), +(9224, 3300002, 1061054, 1, 1, 0, 800), +(9225, 3300002, 1072101, 1, 1, 0, 800), +(9226, 3300002, 1002013, 1, 1, 0, 1500), +(9227, 3300002, 1052107, 1, 1, 0, 700), +(9228, 3300002, 4000501, 1, 1, 0, 600000), +(9229, 3300002, 2044216, 1, 1, 0, 300), +(9230, 3300002, 2044316, 1, 1, 0, 300), +(9231, 3300002, 2382094, 1, 1, 0, 20000), +(9232, 3300001, 2000003, 1, 1, 0, 20000), +(9233, 3300001, 2060000, 1, 1, 0, 30000), +(9234, 3300001, 2061000, 1, 1, 0, 30000), +(9235, 3300001, 2000002, 1, 1, 0, 20000), +(9236, 3300001, 4010005, 1, 1, 0, 9000), +(9237, 3300001, 4020000, 1, 1, 0, 9000), +(9238, 3300001, 2044701, 1, 1, 0, 300), +(9239, 3300001, 1332020, 1, 1, 0, 500), +(9240, 3300001, 1040000, 1, 1, 0, 800), +(9241, 3300001, 1060075, 1, 1, 0, 800), +(9242, 3300001, 1402010, 1, 1, 0, 700), +(9243, 3300001, 1032007, 1, 1, 0, 1000), +(9244, 3300001, 1072078, 1, 1, 0, 800), +(9245, 3300001, 1082046, 1, 1, 0, 1000), +(9246, 3300001, 1002156, 1, 1, 0, 1500), +(9247, 3300001, 4010007, 1, 1, 0, 9000), +(9248, 3300001, 1002622, 1, 1, 0, 1500), +(9249, 3300001, 4130005, 1, 1, 0, 6000), +(9250, 3300001, 4130009, 1, 1, 0, 6000), +(9251, 3300001, 4130021, 1, 1, 0, 6000), +(9252, 3300001, 4000500, 1, 1, 0, 600000), +(9253, 3300001, 4000507, 1, 1, 0, 600000), +(9254, 3300001, 2044024, 1, 1, 0, 300), +(9255, 3300001, 2044116, 1, 1, 0, 300), +(9256, 3300001, 2382093, 1, 1, 0, 20000), +(9257, 3300004, 4131008, 1, 1, 0, 6000), +(9258, 3300004, 2060000, 1, 1, 0, 30000), +(9259, 3300004, 2061000, 1, 1, 0, 30000), +(9260, 3300004, 4020000, 1, 1, 0, 9000), +(9261, 3300004, 4020001, 1, 1, 0, 9000), +(9262, 3300004, 2000002, 1, 1, 0, 20000), +(9263, 3300004, 2000003, 1, 1, 0, 20000), +(9264, 3300004, 1041042, 1, 1, 0, 800), +(9265, 3300004, 1061035, 1, 1, 0, 800), +(9266, 3300004, 1002023, 1, 1, 0, 1500), +(9267, 3300004, 1002163, 1, 1, 0, 1500), +(9268, 3300004, 1032010, 1, 1, 0, 1000), +(9269, 3300004, 1040062, 1, 1, 0, 800), +(9270, 3300004, 1060051, 1, 1, 0, 800), +(9271, 3300004, 1051015, 1, 1, 0, 700), +(9272, 3300004, 1302004, 1, 1, 0, 700), +(9273, 3300004, 1332014, 1, 1, 0, 500), +(9274, 3300004, 1072119, 1, 1, 0, 800), +(9275, 3300004, 1072110, 1, 1, 0, 800), +(9276, 3300004, 1082063, 1, 1, 0, 1000), +(9277, 3300004, 1002625, 1, 1, 0, 1500), +(9278, 3300004, 2330001, 1, 1, 0, 500), +(9279, 3300004, 4130000, 1, 1, 0, 6000), +(9280, 3300004, 4130014, 1, 1, 0, 6000), +(9281, 3300004, 4130017, 1, 1, 0, 6000), +(9282, 3300004, 4000503, 1, 1, 0, 600000), +(9283, 3300004, 2044611, 1, 1, 0, 300), +(9284, 3300004, 2044711, 1, 1, 0, 300), +(9285, 3300004, 2044816, 1, 1, 0, 300), +(9286, 3300004, 2382096, 1, 1, 0, 20000), +(9287, 3300005, 2022570, 1, 1, 0, 20000), +(9288, 3300005, 2022571, 1, 1, 0, 20000), +(9289, 3300005, 2022572, 1, 1, 0, 20000), +(9290, 3300005, 2022573, 1, 1, 0, 20000), +(9291, 3300005, 2022574, 1, 1, 0, 20000), +(9292, 3300005, 2000001, 1, 1, 0, 20000), +(9293, 3300005, 2000003, 1, 1, 0, 20000), +(9294, 3300005, 2040004, 1, 1, 0, 300), +(9295, 3300005, 2040501, 1, 1, 0, 300), +(9296, 3300005, 2040504, 1, 1, 0, 300), +(9297, 3300005, 2040801, 1, 1, 0, 300), +(9298, 3300005, 2041007, 1, 1, 0, 300), +(9299, 3300005, 2041004, 1, 1, 0, 300), +(9300, 3300005, 2043801, 1, 1, 0, 300), +(9301, 3300005, 2044001, 1, 1, 0, 300), +(9302, 3300005, 2044201, 1, 1, 0, 300), +(9303, 3300005, 2044601, 1, 1, 0, 300), +(9304, 3300005, 2044801, 1, 1, 0, 300), +(9305, 3300005, 1082073, 1, 1, 0, 1000), +(9306, 3300005, 1082025, 1, 1, 0, 1000), +(9307, 3300005, 1082064, 1, 1, 0, 1000), +(9308, 3300005, 1082074, 1, 1, 0, 1000), +(9309, 3300005, 1082195, 1, 1, 0, 1000), +(9310, 3300005, 1032013, 1, 1, 0, 1000), +(9311, 3300005, 4000504, 1, 1, 0, 600000), +(9312, 3300005, 2043216, 1, 1, 0, 300), +(9313, 3300005, 2043311, 1, 1, 0, 300), +(9314, 3300005, 2044024, 1, 1, 0, 300), +(9315, 3300005, 2044116, 1, 1, 0, 300), +(9316, 3300005, 2044216, 1, 1, 0, 300), +(9317, 3300005, 2044316, 1, 1, 0, 300), +(9318, 3300005, 2044416, 1, 1, 0, 300), +(9319, 3300005, 2043711, 1, 1, 0, 300), +(9320, 3300005, 2043811, 1, 1, 0, 300), +(9321, 3300005, 2044511, 1, 1, 0, 300), +(9322, 3300005, 2044611, 1, 1, 0, 300), +(9323, 3300005, 2044711, 1, 1, 0, 300), +(9324, 3300005, 2044816, 1, 1, 0, 300), +(9325, 3300005, 2388067, 1, 1, 0, 20000), +(9326, 3300006, 2022575, 1, 1, 0, 20000), +(9327, 3300006, 2022576, 1, 1, 0, 20000), +(9328, 3300006, 2022577, 1, 1, 0, 20000), +(9329, 3300006, 2022578, 1, 1, 0, 20000), +(9330, 3300006, 2022579, 1, 1, 0, 20000), +(9331, 3300006, 2000001, 1, 1, 0, 20000), +(9332, 3300006, 2000003, 1, 1, 0, 20000), +(9333, 3300006, 2040701, 1, 1, 0, 300), +(9334, 3300006, 2040801, 1, 1, 0, 300), +(9335, 3300006, 2040901, 1, 1, 0, 300), +(9336, 3300006, 2041001, 1, 1, 0, 300), +(9337, 3300006, 2043001, 1, 1, 0, 300), +(9338, 3300006, 2043101, 1, 1, 0, 300), +(9339, 3300006, 2041010, 1, 1, 0, 300), +(9340, 3300006, 2043201, 1, 1, 0, 300), +(9341, 3300006, 2041004, 1, 1, 0, 300), +(9342, 3300006, 2060000, 1, 1, 0, 30000), +(9343, 3300006, 2061000, 1, 1, 0, 30000), +(9344, 3300006, 2041017, 1, 1, 0, 300), +(9345, 3300006, 2040402, 1, 1, 0, 300), +(9346, 3300006, 2044002, 1, 1, 0, 300), +(9347, 3300006, 2040502, 1, 1, 0, 300), +(9348, 3300006, 2040602, 1, 1, 0, 300), +(9349, 3300006, 2041016, 1, 1, 0, 300), +(9350, 3300006, 2070009, 1, 1, 0, 500), +(9351, 3300006, 1002098, 1, 1, 0, 1500), +(9352, 3300006, 1002154, 1, 1, 0, 1500), +(9353, 3300006, 1002170, 1, 1, 0, 1500), +(9354, 3300006, 1002185, 1, 1, 0, 1500), +(9355, 3300006, 1040085, 1, 1, 0, 800), +(9356, 3300006, 1041086, 1, 1, 0, 800), +(9357, 3300006, 1050039, 1, 1, 0, 700), +(9358, 3300006, 1051026, 1, 1, 0, 700), +(9359, 3300006, 1040080, 1, 1, 0, 800), +(9360, 3300006, 1041083, 1, 1, 0, 800), +(9361, 3300006, 1040084, 1, 1, 0, 800), +(9362, 3300006, 1041076, 1, 1, 0, 800), +(9363, 3300006, 1082025, 1, 1, 0, 1000), +(9364, 3300006, 1082064, 1, 1, 0, 1000), +(9365, 3300006, 1082073, 1, 1, 0, 1000), +(9366, 3300006, 1082074, 1, 1, 0, 1000), +(9367, 3300006, 1072126, 1, 1, 0, 800), +(9368, 3300006, 1072117, 1, 1, 0, 800), +(9369, 3300006, 1072118, 1, 1, 0, 800), +(9370, 3300006, 1072107, 1, 1, 0, 800), +(9371, 3300006, 1002628, 1, 1, 0, 1500), +(9372, 3300006, 1052113, 1, 1, 0, 700), +(9373, 3300006, 1082195, 1, 1, 0, 1000), +(9374, 3300006, 1072300, 1, 1, 0, 800), +(9375, 3300006, 2044112, 1, 1, 0, 300), +(9376, 3300006, 2044412, 1, 1, 0, 300), +(9377, 3300006, 4000506, 1, 1, 0, 600000), +(9378, 3300006, 2043216, 1, 1, 0, 300), +(9379, 3300006, 2043311, 1, 1, 0, 300), +(9380, 3300006, 2044024, 1, 1, 0, 300), +(9381, 3300006, 2044116, 1, 1, 0, 300), +(9382, 3300006, 2044216, 1, 1, 0, 300), +(9383, 3300006, 2044316, 1, 1, 0, 300), +(9384, 3300006, 2044416, 1, 1, 0, 300), +(9385, 3300006, 2043711, 1, 1, 0, 300), +(9386, 3300006, 2043811, 1, 1, 0, 300), +(9387, 3300006, 2044511, 1, 1, 0, 300), +(9388, 3300006, 2044611, 1, 1, 0, 300), +(9389, 3300006, 2044711, 1, 1, 0, 300), +(9390, 3300006, 2044816, 1, 1, 0, 300), +(9391, 3300006, 2388068, 1, 1, 0, 20000), +(9392, 3300007, 2022580, 1, 1, 0, 20000), +(9393, 3300007, 2022581, 1, 1, 0, 20000), +(9394, 3300007, 2022582, 1, 1, 0, 20000), +(9395, 3300007, 2022583, 1, 1, 0, 20000), +(9396, 3300007, 2022584, 1, 1, 0, 20000), +(9397, 3300007, 4010000, 1, 1, 0, 9000), +(9398, 3300007, 4020000, 1, 1, 0, 9000), +(9399, 3300007, 2000000, 1, 1, 0, 20000), +(9400, 3300007, 2010009, 1, 1, 0, 20000), +(9401, 3300007, 2020014, 1, 1, 0, 20000), +(9402, 3300007, 2040001, 1, 1, 0, 300), +(9403, 3300007, 2040301, 1, 1, 0, 300), +(9404, 3300007, 2040401, 1, 1, 0, 300), +(9405, 3300007, 2043201, 1, 1, 0, 300), +(9406, 3300007, 2043701, 1, 1, 0, 300), +(9407, 3300007, 2041016, 1, 1, 0, 300), +(9408, 3300007, 2043801, 1, 1, 0, 300), +(9409, 3300007, 2044001, 1, 1, 0, 300), +(9410, 3300007, 2040501, 1, 1, 0, 300), +(9411, 3300007, 2040601, 1, 1, 0, 300), +(9412, 3300007, 2060000, 1, 1, 0, 30000), +(9413, 3300007, 2061000, 1, 1, 0, 30000), +(9414, 3300007, 2070000, 1, 1, 0, 500), +(9415, 3300007, 1002049, 1, 1, 0, 1500), +(9416, 3300007, 1002073, 1, 1, 0, 1500), +(9417, 3300007, 1002159, 1, 1, 0, 1500), +(9418, 3300007, 1002150, 1, 1, 0, 1500), +(9419, 3300007, 1040041, 1, 1, 0, 800), +(9420, 3300007, 1041024, 1, 1, 0, 800), +(9421, 3300007, 1050025, 1, 1, 0, 700), +(9422, 3300007, 1051005, 1, 1, 0, 700), +(9423, 3300007, 1040023, 1, 1, 0, 800), +(9424, 3300007, 1041033, 1, 1, 0, 800), +(9425, 3300007, 1040050, 1, 1, 0, 800), +(9426, 3300007, 1041060, 1, 1, 0, 800), +(9427, 3300007, 1082001, 1, 1, 0, 1000), +(9428, 3300007, 1082028, 1, 1, 0, 1000), +(9429, 3300007, 1082018, 1, 1, 0, 1000), +(9430, 3300007, 1082039, 1, 1, 0, 1000), +(9431, 3300007, 1072052, 1, 1, 0, 800), +(9432, 3300007, 1072074, 1, 1, 0, 800), +(9433, 3300007, 1072069, 1, 1, 0, 800), +(9434, 3300007, 1072087, 1, 1, 0, 800), +(9435, 3300007, 2040002, 1, 1, 0, 300), +(9436, 3300007, 2040302, 1, 1, 0, 300), +(9437, 3300007, 2040402, 1, 1, 0, 300), +(9438, 3300007, 2043302, 1, 1, 0, 300), +(9439, 3300007, 2043702, 1, 1, 0, 300), +(9440, 3300007, 1002619, 1, 1, 0, 1500), +(9441, 3300007, 1052104, 1, 1, 0, 700), +(9442, 3300007, 1082186, 1, 1, 0, 1000), +(9443, 3300007, 1072291, 1, 1, 0, 800), +(9444, 3300007, 2330000, 1, 1, 0, 500), +(9445, 3300007, 2044801, 1, 1, 0, 300), +(9446, 3300007, 2044902, 1, 1, 0, 300), +(9447, 3300007, 2040418, 1, 1, 0, 300), +(9448, 3300007, 2040928, 1, 1, 0, 300), +(9449, 3300007, 2043114, 1, 1, 0, 300), +(9450, 3300007, 2044414, 1, 1, 0, 300), +(9451, 3300007, 4000505, 1, 1, 0, 600000), +(9452, 3300007, 2043216, 1, 1, 0, 300), +(9453, 3300007, 2043311, 1, 1, 0, 300), +(9454, 3300007, 2044024, 1, 1, 0, 300), +(9455, 3300007, 2044116, 1, 1, 0, 300), +(9456, 3300007, 2044216, 1, 1, 0, 300), +(9457, 3300007, 2044316, 1, 1, 0, 300), +(9458, 3300007, 2044416, 1, 1, 0, 300), +(9459, 3300007, 2043711, 1, 1, 0, 300), +(9460, 3300007, 2043811, 1, 1, 0, 300), +(9461, 3300007, 2044511, 1, 1, 0, 300), +(9462, 3300007, 2044611, 1, 1, 0, 300), +(9463, 3300007, 2044711, 1, 1, 0, 300), +(9464, 3300007, 2044816, 1, 1, 0, 300), +(9465, 3300007, 2388069, 1, 1, 0, 20000), +(9466, 3300008, 4001318, 1, 1, 0, 600000), +(9467, 3300008, 4010005, 1, 1, 0, 90000), +(9468, 3300008, 4020005, 1, 1, 0, 90000), +(9469, 3300008, 2000002, 1, 1, 0, 200000), +(9470, 3300008, 2000003, 1, 1, 0, 200000), +(9471, 3300008, 2002002, 1, 1, 0, 200000), +(9472, 3300008, 2002003, 1, 1, 0, 200000), +(9473, 3300008, 2040301, 1, 1, 0, 3000), +(9474, 3300008, 2040504, 1, 1, 0, 3000), +(9475, 3300008, 2040707, 1, 1, 0, 3000), +(9476, 3300008, 2040801, 1, 1, 0, 3000), +(9477, 3300008, 2040901, 1, 1, 0, 3000), +(9478, 3300008, 2041016, 1, 1, 0, 3000), +(9479, 3300008, 2043801, 1, 1, 0, 3000), +(9480, 3300008, 2044101, 1, 1, 0, 3000), +(9481, 3300008, 2044601, 1, 1, 0, 3000), +(9482, 3300008, 2044701, 1, 1, 0, 3000), +(9483, 3300008, 2040514, 1, 1, 0, 3000), +(9484, 3300008, 2041002, 1, 1, 0, 3000), +(9485, 3300008, 2041017, 1, 1, 0, 3000), +(9486, 3300008, 2043702, 1, 1, 0, 3000), +(9487, 3300008, 2044302, 1, 1, 0, 3000), +(9488, 3300008, 2060000, 1, 1, 0, 300000), +(9489, 3300008, 2061000, 1, 1, 0, 300000), +(9490, 3300008, 1302010, 1, 1, 0, 7000), +(9491, 3300008, 1312008, 1, 1, 0, 7000), +(9492, 3300008, 1322017, 1, 1, 0, 7000), +(9493, 3300008, 1332003, 1, 1, 0, 5000), +(9494, 3300008, 1372007, 1, 1, 0, 7000), +(9495, 3300008, 1382006, 1, 1, 0, 7000), +(9496, 3300008, 1402003, 1, 1, 0, 7000), +(9497, 3300008, 1412003, 1, 1, 0, 7000), +(9498, 3300008, 1422005, 1, 1, 0, 7000), +(9499, 3300008, 1432004, 1, 1, 0, 5000), +(9500, 3300008, 1442005, 1, 1, 0, 7000), +(9501, 3300008, 1452008, 1, 1, 0, 5000), +(9502, 3300008, 1462007, 1, 1, 0, 5000), +(9503, 3300008, 1472021, 1, 1, 0, 5000), +(9504, 3300008, 1482007, 1, 1, 0, 5000), +(9505, 3300008, 1492007, 1, 1, 0, 5000), +(9506, 3300008, 2044802, 1, 1, 0, 3000), +(9507, 3300008, 2044901, 1, 1, 0, 3000), +(9508, 3300008, 2040931, 1, 1, 0, 3000), +(9509, 3300008, 2040928, 1, 1, 0, 3000), +(9510, 3300008, 2043216, 1, 1, 0, 3000), +(9511, 3300008, 2043311, 1, 1, 0, 3000), +(9512, 3300008, 2044024, 1, 1, 0, 3000), +(9513, 3300008, 2044116, 1, 1, 0, 3000), +(9514, 3300008, 2044216, 1, 1, 0, 3000), +(9515, 3300008, 2044316, 1, 1, 0, 3000), +(9516, 3300008, 2044416, 1, 1, 0, 3000), +(9517, 3300008, 2043711, 1, 1, 0, 3000), +(9518, 3300008, 2043811, 1, 1, 0, 3000), +(9519, 3300008, 2044511, 1, 1, 0, 3000), +(9520, 3300008, 2044611, 1, 1, 0, 3000), +(9521, 3300008, 2044711, 1, 1, 0, 3000), +(9522, 3300008, 2044816, 1, 1, 0, 3000), +(9523, 100100, 2380000, 1, 1, 0, 1000), +(9524, 100101, 2380001, 1, 1, 0, 1000), +(9525, 130100, 2380003, 1, 1, 0, 1000), +(9526, 130101, 2380004, 1, 1, 0, 1000), +(9527, 210100, 2380005, 1, 1, 0, 1000), +(9528, 1210100, 2380006, 1, 1, 0, 1000), +(9529, 1210102, 2380007, 1, 1, 0, 1000), +(9530, 1110101, 2380008, 1, 1, 0, 1000), +(9531, 1210101, 2380009, 1, 1, 0, 1000), +(9532, 1120100, 2380010, 1, 1, 0, 1000), +(9533, 1110100, 2380011, 1, 1, 0, 1000), +(9534, 1210103, 2380012, 1, 1, 0, 1000), +(9535, 1130100, 2381000, 1, 1, 0, 1000), +(9536, 1140100, 2381001, 1, 1, 0, 1000), +(9537, 2220100, 2381002, 1, 1, 0, 1000), +(9538, 2300100, 2381003, 1, 1, 0, 1000), +(9539, 2130103, 2381006, 1, 1, 0, 1000), +(9540, 2110200, 2381007, 1, 1, 0, 1000), +(9541, 2130100, 2381008, 1, 1, 0, 1000), +(9542, 2230108, 2381009, 1, 1, 0, 1000), +(9543, 2100102, 2381010, 1, 1, 0, 1000), +(9544, 2230103, 2381011, 1, 1, 0, 1000), +(9545, 5200000, 2381012, 1, 1, 0, 1000), +(9546, 2230105, 2381013, 1, 1, 0, 1000), +(9547, 2230110, 2381014, 1, 1, 0, 1000), +(9548, 2100105, 2381015, 1, 1, 0, 1000), +(9549, 2230101, 2381016, 1, 1, 0, 1000), +(9550, 2230107, 2381017, 1, 1, 0, 1000), +(9551, 2230111, 2381018, 1, 1, 0, 1000), +(9552, 2100106, 2381019, 1, 1, 0, 1000), +(9553, 2110300, 2381020, 1, 1, 0, 1000), +(9554, 2230106, 2381021, 1, 1, 0, 1000), +(9555, 2230102, 2381022, 1, 1, 0, 1000), +(9556, 2100103, 2381023, 1, 1, 0, 1000), +(9557, 2230100, 2381024, 1, 1, 0, 1000), +(9558, 2100107, 2381025, 1, 1, 0, 1000), +(9559, 2230109, 2381026, 1, 1, 0, 1000), +(9560, 2230104, 2381027, 1, 1, 0, 1000), +(9561, 2100104, 2381028, 1, 1, 0, 1000), +(9562, 2230200, 2381029, 1, 1, 0, 1000), +(9563, 2110301, 2381031, 1, 1, 0, 1000), +(9564, 3000000, 2381032, 1, 1, 0, 1000), +(9565, 3000005, 2381034, 1, 1, 0, 1000), +(9566, 3000006, 2381035, 1, 1, 0, 1000), +(9567, 3100102, 2381036, 1, 1, 0, 1000), +(9568, 5200001, 2381037, 1, 1, 0, 1000), +(9569, 5200002, 2381038, 1, 1, 0, 1000), +(9570, 3230307, 2382000, 1, 1, 0, 1000), +(9571, 3110100, 2382002, 1, 1, 0, 1000), +(9572, 3110101, 2382004, 1, 1, 0, 1000), +(9573, 3110102, 2382005, 1, 1, 0, 1000), +(9574, 5300000, 2382006, 1, 1, 0, 1000), +(9575, 3230104, 2382007, 1, 1, 0, 1000), +(9576, 3110300, 2382009, 1, 1, 0, 1000), +(9577, 3210200, 2382011, 1, 1, 0, 1000), +(9578, 3210201, 2382012, 1, 1, 0, 1000), +(9579, 3210202, 2382013, 1, 1, 0, 1000), +(9580, 5300001, 2382014, 1, 1, 0, 1000), +(9581, 3210204, 2382015, 1, 1, 0, 1000), +(9582, 3210205, 2382016, 1, 1, 0, 1000), +(9583, 3210207, 2382017, 1, 1, 0, 1000), +(9584, 3230100, 2382018, 1, 1, 0, 1000), +(9585, 3230101, 2382019, 1, 1, 0, 1000), +(9586, 3230200, 2382020, 1, 1, 0, 1000), +(9587, 3230302, 2382022, 1, 1, 0, 1000), +(9588, 5400000, 2382023, 1, 1, 0, 1000), +(9589, 3110302, 2382024, 1, 1, 0, 1000), +(9590, 3210203, 2382025, 1, 1, 0, 1000), +(9591, 3210206, 2382026, 1, 1, 0, 1000), +(9592, 3210450, 2382027, 1, 1, 0, 1000), +(9593, 3210208, 2382028, 1, 1, 0, 1000), +(9594, 3210800, 2382029, 1, 1, 0, 1000), +(9595, 3230102, 2382030, 1, 1, 0, 1000), +(9596, 3230303, 2382031, 1, 1, 0, 1000), +(9597, 3230306, 2382032, 1, 1, 0, 1000), +(9598, 3230103, 2382033, 1, 1, 0, 1000), +(9599, 3230304, 2382034, 1, 1, 0, 1000), +(9600, 3230405, 2382035, 1, 1, 0, 1000), +(9601, 3110303, 2382036, 1, 1, 0, 1000), +(9602, 3230308, 2382037, 1, 1, 0, 1000), +(9603, 3230305, 2382038, 1, 1, 0, 1000), +(9604, 4230100, 2382039, 1, 1, 0, 1000), +(9605, 4230101, 2382040, 1, 1, 0, 1000), +(9606, 4230113, 2382041, 1, 1, 0, 1000), +(9607, 4230200, 2382043, 1, 1, 0, 1000), +(9608, 4230201, 2382044, 1, 1, 0, 1000), +(9609, 4230500, 2382045, 1, 1, 0, 1000), +(9610, 4230107, 2382047, 1, 1, 0, 1000), +(9611, 4230111, 2382048, 1, 1, 0, 1000), +(9612, 4230114, 2382049, 1, 1, 0, 1000), +(9613, 4230119, 2382050, 1, 1, 0, 1000), +(9614, 4230501, 2382051, 1, 1, 0, 1000), +(9615, 4230105, 2382052, 1, 1, 0, 1000), +(9616, 4230103, 2382053, 1, 1, 0, 1000), +(9617, 4230109, 2382054, 1, 1, 0, 1000), +(9618, 4230124, 2382056, 1, 1, 0, 1000), +(9619, 4110300, 2382057, 1, 1, 0, 1000), +(9620, 4230108, 2382058, 1, 1, 0, 1000), +(9621, 4230123, 2382059, 1, 1, 0, 1000), +(9622, 4230502, 2382060, 1, 1, 0, 1000), +(9623, 4230120, 2382061, 1, 1, 0, 1000), +(9624, 4230112, 2382062, 1, 1, 0, 1000), +(9625, 4230125, 2382063, 1, 1, 0, 1000), +(9626, 4230106, 2382064, 1, 1, 0, 1000), +(9627, 4130100, 2382065, 1, 1, 0, 1000), +(9628, 4230110, 2382066, 1, 1, 0, 1000), +(9629, 4230300, 2382068, 1, 1, 0, 1000), +(9630, 4230400, 2382069, 1, 1, 0, 1000), +(9631, 4230503, 2382070, 1, 1, 0, 1000), +(9632, 4230504, 2382071, 1, 1, 0, 1000), +(9633, 4110301, 2382072, 1, 1, 0, 1000), +(9634, 4250000, 2382076, 1, 1, 0, 1000), +(9635, 4230121, 2383000, 1, 1, 0, 1000), +(9636, 4130101, 2383001, 1, 1, 0, 1000), +(9637, 4230115, 2383002, 1, 1, 0, 1000), +(9638, 4130102, 2383003, 1, 1, 0, 1000), +(9639, 4130103, 2383004, 1, 1, 0, 25000), +(9640, 4230505, 2383006, 1, 1, 0, 1000), +(9641, 9300255, 2383007, 1, 1, 0, 1000), +(9642, 4230102, 2383008, 1, 1, 0, 1000), +(9643, 4230104, 2383009, 1, 1, 0, 1000), +(9644, 4230506, 2383010, 1, 1, 0, 1000), +(9645, 5130100, 2383012, 1, 1, 0, 1000), +(9646, 5100000, 2383013, 1, 1, 0, 1000), +(9647, 5100003, 2383014, 1, 1, 0, 1000), +(9648, 5120503, 2383015, 1, 1, 0, 1000), +(9649, 9300144, 2383016, 1, 1, 0, 1000), +(9650, 5100002, 2383017, 1, 1, 0, 1000), +(9651, 5120504, 2383018, 1, 1, 0, 1000), +(9652, 5130103, 2383019, 1, 1, 0, 1000), +(9653, 5120001, 2383021, 1, 1, 0, 1000), +(9654, 5120002, 2383022, 1, 1, 0, 1000), +(9655, 5120003, 2383023, 1, 1, 0, 1000), +(9656, 5100005, 2383024, 1, 1, 0, 1000), +(9657, 5120501, 2383025, 1, 1, 0, 1000), +(9658, 5120100, 2383026, 1, 1, 0, 25000), +(9659, 5120502, 2383027, 1, 1, 0, 1000), +(9660, 9300149, 2383028, 1, 1, 0, 1000), +(9661, 5300100, 2383029, 1, 1, 0, 1000), +(9662, 5130101, 2383030, 1, 1, 0, 1000), +(9663, 5130104, 2383031, 1, 1, 0, 1000), +(9664, 5120506, 2383032, 1, 1, 0, 1000), +(9665, 5130105, 2383033, 1, 1, 0, 1000), +(9666, 5120500, 2383035, 1, 1, 0, 1000), +(9667, 5150001, 2383036, 1, 1, 0, 1000), +(9668, 5130107, 2383037, 1, 1, 0, 1000), +(9669, 5130108, 2383038, 1, 1, 0, 1000), +(9670, 5130102, 2383039, 1, 1, 0, 1000), +(9671, 5140000, 2383040, 1, 1, 0, 1000), +(9672, 5120505, 2383041, 1, 1, 0, 1000), +(9673, 5110302, 2383042, 1, 1, 0, 1000), +(9674, 5150000, 2383043, 1, 1, 0, 1000), +(9675, 6130100, 2383044, 1, 1, 0, 1000), +(9676, 6130103, 2383045, 1, 1, 0, 1000), +(9677, 6130201, 2383046, 1, 1, 0, 1000), +(9678, 6130203, 2383047, 1, 1, 0, 1000), +(9679, 5090000, 2383048, 1, 1, 0, 25000), +(9680, 5090001, 2383049, 1, 1, 0, 25000), +(9681, 4250001, 2383056, 1, 1, 0, 1000), +(9682, 5250000, 2383057, 1, 1, 0, 1000), +(9683, 5250002, 2383058, 1, 1, 0, 1000), +(9684, 5250001, 2383059, 1, 1, 0, 1000), +(9685, 6130200, 2384000, 1, 1, 0, 1000), +(9686, 9400201, 2384001, 1, 1, 0, 1000), +(9687, 6130207, 2384002, 1, 1, 0, 1000), +(9688, 6230602, 2384003, 1, 1, 0, 1000), +(9689, 6230400, 2384004, 1, 1, 0, 1000), +(9690, 6230600, 2384006, 1, 1, 0, 1000), +(9691, 6230200, 2384007, 1, 1, 0, 1000), +(9692, 6130204, 2384008, 1, 1, 0, 1000), +(9693, 6300000, 2384009, 1, 1, 0, 1000), +(9694, 6090000, 2384010, 1, 1, 0, 25000), +(9695, 6110300, 2384011, 1, 1, 0, 1000), +(9696, 6230300, 2384012, 1, 1, 0, 1000), +(9697, 6130209, 2384013, 1, 1, 0, 1000), +(9698, 6230500, 2384014, 1, 1, 0, 1000), +(9699, 6230601, 2384015, 1, 1, 0, 1000), +(9700, 6400000, 2384016, 1, 1, 0, 1000), +(9701, 6130208, 2384017, 1, 1, 0, 1000), +(9702, 9300146, 2384018, 1, 1, 0, 1000), +(9703, 8140200, 2384019, 1, 1, 0, 1000), +(9704, 7130100, 2384020, 1, 1, 0, 1000), +(9705, 7130400, 2384021, 1, 1, 0, 25000), +(9706, 7130401, 2384022, 1, 1, 0, 25000), +(9707, 7130402, 2384023, 1, 1, 0, 25000), +(9708, 7130500, 2384024, 1, 1, 0, 1000), +(9709, 7130104, 2384025, 1, 1, 0, 1000), +(9710, 7130001, 2384026, 1, 1, 0, 1000), +(9711, 7130002, 2384027, 1, 1, 0, 1000), +(9712, 7130600, 2384028, 1, 1, 0, 1000), +(9713, 7130103, 2384029, 1, 1, 0, 1000), +(9714, 6300100, 2384032, 1, 1, 0, 1000), +(9715, 7130501, 2384033, 1, 1, 0, 1000), +(9716, 7130200, 2384035, 1, 1, 0, 1000), +(9717, 7130101, 2384036, 1, 1, 0, 1000), +(9718, 6090001, 2384037, 1, 1, 0, 25000), +(9719, 7090000, 2384038, 1, 1, 0, 25000), +(9720, 6090003, 2384039, 1, 1, 0, 25000), +(9721, 6090004, 2384040, 1, 1, 0, 25000), +(9722, 8140300, 2385000, 1, 1, 0, 1000), +(9723, 7130003, 2385001, 1, 1, 0, 1000), +(9724, 7130601, 2385002, 1, 1, 0, 1000), +(9725, 6400100, 2385003, 1, 1, 0, 1000), +(9726, 7130102, 2385004, 1, 1, 0, 1000), +(9727, 7130004, 2385005, 1, 1, 0, 1000), +(9728, 8140000, 2385006, 1, 1, 0, 1000), +(9729, 8140001, 2385007, 1, 1, 0, 1000), +(9730, 8110300, 2385008, 1, 1, 0, 1000), +(9731, 8140100, 2385009, 1, 1, 0, 1000), +(9732, 8140002, 2385011, 1, 1, 0, 1000), +(9733, 7130010, 2385012, 1, 1, 0, 1000), +(9734, 7130020, 2385013, 1, 1, 0, 1000), +(9735, 8140110, 2385014, 1, 1, 0, 1000), +(9736, 8140101, 2385016, 1, 1, 0, 1000), +(9737, 8140102, 2385017, 1, 1, 0, 1000), +(9738, 8140103, 2385018, 1, 1, 0, 1000), +(9739, 8140111, 2385019, 1, 1, 0, 1000), +(9740, 7130300, 2385020, 1, 1, 0, 1000), +(9741, 8140500, 2385021, 1, 1, 0, 1000), +(9742, 8140700, 2385022, 1, 1, 0, 1000), +(9743, 8090000, 2385023, 1, 1, 0, 25000), +(9744, 8200000, 2385025, 1, 1, 0, 1000), +(9745, 8140600, 2386000, 1, 1, 0, 1000), +(9746, 8140701, 2386001, 1, 1, 0, 1000), +(9747, 9300324, 2386002, 1, 1, 0, 25000), +(9748, 8141300, 2386003, 1, 1, 0, 1000), +(9749, 8142000, 2386004, 1, 1, 0, 1000), +(9750, 8140702, 2386005, 1, 1, 0, 1000), +(9751, 8140703, 2386006, 1, 1, 0, 1000), +(9752, 8142100, 2386007, 1, 1, 0, 1000), +(9753, 8150300, 2386008, 1, 1, 0, 1000), +(9754, 9500136, 2386009, 1, 1, 0, 1000), +(9755, 9500137, 2386010, 1, 1, 0, 1000), +(9756, 8150200, 2386011, 1, 1, 0, 1000), +(9757, 8150100, 2386012, 1, 1, 0, 1000), +(9758, 8150301, 2386013, 1, 1, 0, 1000), +(9759, 8150101, 2386014, 1, 1, 0, 1000), +(9760, 8150302, 2386015, 1, 1, 0, 1000), +(9761, 8150201, 2386016, 1, 1, 0, 1000), +(9762, 8190000, 2386017, 1, 1, 0, 1000), +(9763, 8200001, 2386021, 1, 1, 0, 1000), +(9764, 8200002, 2386022, 1, 1, 0, 1000), +(9765, 8200003, 2386023, 1, 1, 0, 1000), +(9766, 8200004, 2386024, 1, 1, 0, 1000), +(9767, 8160000, 2387000, 1, 1, 0, 1000), +(9768, 8170000, 2387001, 1, 1, 0, 1000), +(9769, 8190003, 2387002, 1, 1, 0, 1000), +(9770, 8190004, 2387003, 1, 1, 0, 1000), +(9771, 8190002, 2387004, 1, 1, 0, 1000), +(9772, 8200005, 2387006, 1, 1, 0, 1000), +(9773, 8200006, 2387007, 1, 1, 0, 1000), +(9774, 8200007, 2387008, 1, 1, 0, 1000), +(9775, 8200008, 2387009, 1, 1, 0, 1000), +(9776, 8200009, 2387010, 1, 1, 0, 1000), +(9777, 8200010, 2387011, 1, 1, 0, 1000), +(9778, 8200011, 2387012, 1, 1, 0, 1000), +(9779, 8200012, 2387013, 1, 1, 0, 1000), +(9780, 9300184, 2388000, 1, 1, 0, 25000), +(9781, 9300003, 2388001, 1, 1, 0, 1000), +(9782, 5220002, 2388002, 1, 1, 0, 25000), +(9783, 5220000, 2388003, 1, 1, 0, 25000), +(9784, 9300012, 2388004, 1, 1, 0, 25000), +(9785, 5220003, 2388005, 1, 1, 0, 25000), +(9786, 6130101, 2388006, 1, 1, 0, 25000), +(9787, 6220000, 2388007, 1, 1, 0, 25000), +(9788, 6300005, 2388008, 1, 1, 0, 25000), +(9789, 7220001, 2388009, 1, 1, 0, 25000), +(9790, 7220000, 2388010, 1, 1, 0, 25000), +(9791, 9300119, 2388011, 1, 1, 0, 25000), +(9792, 9300039, 2388012, 1, 1, 0, 25000), +(9793, 7220002, 2388013, 1, 1, 0, 25000), +(9794, 9300139, 2388014, 1, 1, 0, 25000), +(9795, 8220001, 2388016, 1, 1, 0, 25000), +(9796, 8150000, 2388017, 1, 1, 0, 25000), +(9797, 8180000, 2388018, 1, 1, 0, 25000), +(9798, 8180001, 2388019, 1, 1, 0, 25000), +(9799, 8510000, 2388020, 1, 1, 0, 25000), +(9800, 9300028, 2388021, 1, 1, 0, 25000), +(9801, 8500002, 2388022, 1, 1, 0, 25000), +(9802, 3220000, 2388025, 1, 1, 0, 25000), +(9803, 8130100, 2388026, 1, 1, 0, 25000), +(9804, 9500317, 2388028, 1, 1, 0, 25000), +(9805, 3220001, 2388029, 1, 1, 0, 25000), +(9806, 4220000, 2388030, 1, 1, 0, 25000), +(9807, 6220001, 2388031, 1, 1, 0, 25000), +(9808, 8220003, 2388033, 1, 1, 0, 25000), +(9809, 8220004, 2388040, 1, 1, 0, 25000), +(9810, 8220005, 2388041, 1, 1, 0, 25000), +(9811, 8220006, 2388042, 1, 1, 0, 25000), +(9812, 8820000, 2388043, 1, 1, 0, 25000), +(9813, 9300274, 2380013, 1, 1, 0, 1000), +(9814, 8830000, 2388055, 1, 1, 0, 25000), +(9815, 1110130, 2380014, 1, 1, 0, 1000), +(9816, 100130, 2380015, 1, 1, 0, 1000), +(9817, 100131, 2380016, 1, 1, 0, 1000), +(9818, 100132, 2380017, 1, 1, 0, 1000), +(9819, 100133, 2380018, 1, 1, 0, 1000), +(9820, 100134, 2380019, 1, 1, 0, 1000), +(9821, 2230131, 2381083, 1, 1, 0, 1000), +(9822, 3300001, 2382093, 1, 1, 0, 1000), +(9823, 3300002, 2382094, 1, 1, 0, 1000), +(9824, 3300003, 2382095, 1, 1, 0, 1000), +(9825, 3300004, 2382096, 1, 1, 0, 1000), +(9826, 5220004, 2388052, 1, 1, 0, 25000), +(9827, 8220007, 2388053, 1, 1, 0, 25000), +(9828, 8220009, 2388054, 1, 1, 0, 25000), +(9829, 3300006, 2388068, 1, 1, 0, 1000), +(9830, 3300007, 2388069, 1, 1, 0, 1000), +(9831, 8170000, 0, 664, 996, 0, 400000), +(9832, 8160000, 0, 664, 996, 0, 400000), +(9833, 8141000, 0, 625, 926, 0, 400000), +(9834, 8142000, 0, 622, 948, 0, 400000), +(9835, 8142100, 0, 638, 944, 0, 400000), +(9836, 9420516, 0, 638, 944, 0, 400000), +(9837, 9420515, 0, 600, 900, 0, 400000), +(9838, 8141100, 0, 646, 959, 0, 400000), +(9839, 8143000, 0, 416, 623, 0, 400000), +(9840, 9400013, 0, 697, 1020, 0, 400000), +(9841, 6400000, 0, 333, 493, 0, 400000), +(9842, 6230200, 0, 325, 486, 0, 400000), +(9843, 7140000, 0, 361, 540, 0, 400000), +(9844, 7130010, 0, 364, 545, 0, 400000), +(9845, 7160000, 0, 400, 600, 0, 400000), +(9846, 7130300, 0, 408, 610, 0, 400000), +(9847, 8140500, 0, 640, 960, 0, 400000), +(9848, 7130001, 0, 344, 516, 0, 400000), +(9849, 7130600, 0, 347, 515, 0, 400000), +(9850, 6300100, 0, 320, 480, 0, 400000), +(9851, 7130501, 0, 352, 528, 0, 400000), +(9852, 7130101, 0, 409, 599, 0, 400000), +(9853, 7130200, 0, 417, 548, 0, 400000), +(9854, 8140300, 0, 468, 960, 0, 400000), +(9855, 6400100, 0, 334, 497, 0, 400000), +(9856, 6300000, 0, 417, 548, 0, 400000), +(9857, 8130100, 0, 1621, 2387, 0, 400000), +(9858, 6130200, 0, 312, 468, 0, 400000), +(9859, 9400201, 0, 320, 463, 0, 400000), +(9860, 6230400, 0, 328, 492, 0, 400000), +(9861, 6230602, 0, 328, 492, 0, 400000), +(9862, 6230600, 0, 324, 486, 0, 400000), +(9863, 5100000, 0, 330, 490, 0, 400000), +(9864, 6230300, 0, 320, 480, 0, 400000), +(9865, 6230500, 0, 332, 498, 0, 400000), +(9866, 6230601, 0, 332, 498, 0, 400000), +(9867, 7130100, 0, 340, 500, 0, 400000), +(9868, 8140200, 0, 336, 509, 0, 400000), +(9869, 5100002, 0, 212, 381, 0, 400000), +(9870, 5120504, 0, 208, 312, 0, 400000), +(9871, 5130103, 0, 224, 336, 0, 400000), +(9872, 5120000, 0, 224, 336, 0, 400000), +(9873, 5120001, 0, 235, 348, 0, 400000), +(9874, 5120002, 0, 235, 348, 0, 400000), +(9875, 5120003, 0, 235, 348, 0, 400000), +(9876, 5100005, 0, 232, 348, 0, 400000), +(9877, 5120100, 0, 324, 486, 0, 400000), +(9878, 5130101, 0, 256, 348, 0, 400000), +(9879, 5130104, 0, 254, 386, 0, 400000), +(9880, 5300100, 0, 251, 359, 0, 400000), +(9881, 9400204, 0, 200, 305, 0, 400000), +(9882, 5100004, 0, 268, 402, 0, 400000), +(9883, 5130107, 0, 273, 408, 0, 400000), +(9884, 5150001, 0, 272, 408, 0, 400000), +(9885, 5140000, 0, 280, 420, 0, 400000), +(9886, 5130102, 0, 280, 420, 0, 400000), +(9887, 5150000, 0, 296, 447, 0, 400000), +(9888, 9400003, 0, 280, 420, 0, 400000), +(9889, 6130100, 0, 304, 456, 0, 400000), +(9890, 6130101, 0, 800, 1196, 0, 400000), +(9891, 6130202, 0, 304, 456, 0, 400000), +(9892, 100100, 0, 4, 6, 0, 400000), +(9893, 100101, 0, 8, 12, 0, 400000), +(9894, 120100, 0, 8, 12, 0, 400000), +(9895, 130100, 0, 12, 18, 0, 400000), +(9896, 130101, 0, 12, 18, 0, 400000), +(9897, 210100, 0, 12, 18, 0, 400000), +(9898, 1210100, 0, 14, 21, 0, 400000), +(9899, 1210102, 0, 16, 24, 0, 400000), +(9900, 1210101, 0, 20, 30, 0, 400000), +(9901, 1110101, 0, 20, 30, 0, 400000), +(9902, 1120100, 0, 24, 36, 0, 400000), +(9903, 1210103, 0, 24, 36, 0, 400000), +(9904, 1110100, 0, 28, 42, 0, 400000), +(9905, 1130100, 0, 32, 48, 0, 400000), +(9906, 1140100, 0, 34, 47, 0, 400000), +(9907, 2220100, 0, 36, 54, 0, 400000), +(9908, 2300100, 0, 32, 48, 0, 400000), +(9909, 2130103, 0, 33, 49, 0, 400000), +(9910, 2110200, 0, 36, 54, 0, 400000), +(9911, 2130100, 0, 40, 60, 0, 400000), +(9912, 2230108, 0, 40, 60, 0, 400000), +(9913, 9600002, 0, 43, 65, 0, 400000), +(9914, 2100102, 0, 40, 60, 0, 400000), +(9915, 5200000, 0, 60, 90, 0, 400000), +(9916, 2230103, 0, 47, 62, 0, 400000), +(9917, 2070010, 0, 44, 66, 0, 400000), +(9918, 2100105, 0, 44, 63, 0, 400000), +(9919, 2230101, 0, 44, 66, 0, 400000), +(9920, 2230102, 0, 44, 66, 0, 400000), +(9921, 9400000, 0, 40, 60, 0, 400000), +(9922, 7130500, 0, 337, 501, 0, 400000), +(9923, 2230100, 0, 48, 72, 0, 400000), +(9924, 2230106, 0, 44, 66, 0, 400000), +(9925, 9600003, 0, 58, 81, 0, 400000), +(9926, 2100103, 0, 49, 66, 0, 400000), +(9927, 2230104, 0, 56, 78, 0, 400000), +(9928, 2230109, 0, 52, 78, 0, 400000), +(9929, 2100104, 0, 52, 77, 0, 400000), +(9930, 2230200, 0, 52, 78, 0, 400000), +(9931, 3000002, 0, 80, 120, 0, 400000), +(9932, 9400010, 0, 52, 78, 0, 400000), +(9933, 5200001, 0, 64, 96, 0, 400000), +(9934, 5200002, 0, 64, 96, 0, 400000), +(9935, 3000000, 0, 52, 78, 0, 400000), +(9936, 9400002, 0, 52, 78, 0, 400000), +(9937, 3230400, 0, 97, 139, 0, 400000), +(9938, 3000006, 0, 56, 84, 0, 400000), +(9939, 9600004, 0, 64, 99, 0, 400000), +(9940, 3230307, 0, 100, 144, 0, 400000), +(9941, 3110300, 0, 70, 114, 0, 400000), +(9942, 3110100, 0, 74, 144, 0, 400000), +(9943, 3210100, 0, 76, 114, 0, 400000), +(9944, 3110102, 0, 80, 120, 0, 400000), +(9945, 3110101, 0, 80, 120, 0, 400000), +(9946, 3230104, 0, 56, 84, 0, 400000), +(9947, 5300000, 0, 68, 102, 0, 400000), +(9948, 5300001, 0, 72, 108, 0, 400000), +(9949, 3210200, 0, 80, 120, 0, 400000), +(9950, 3210201, 0, 80, 120, 0, 400000), +(9951, 3210202, 0, 80, 120, 0, 400000), +(9952, 9600006, 0, 83, 116, 0, 400000), +(9953, 9400509, 0, 232, 348, 0, 400000), +(9954, 3210205, 0, 84, 126, 0, 400000), +(9955, 3210204, 0, 84, 126, 0, 400000), +(9956, 3210207, 0, 84, 126, 0, 400000), +(9957, 3230100, 0, 60, 90, 0, 400000), +(9958, 3230101, 0, 56, 84, 0, 400000), +(9959, 3230200, 0, 56, 84, 0, 400000), +(9960, 3230300, 0, 94, 144, 0, 400000), +(9961, 5400000, 0, 76, 114, 0, 400000), +(9962, 3230302, 0, 76, 114, 0, 400000), +(9963, 9600005, 0, 93, 138, 0, 400000), +(9964, 3210206, 0, 76, 114, 0, 400000), +(9965, 3210203, 0, 76, 114, 0, 400000), +(9966, 3210208, 0, 76, 114, 0, 400000), +(9967, 3210450, 0, 75, 114, 0, 400000), +(9968, 3230405, 0, 96, 114, 0, 400000), +(9969, 3230102, 0, 92, 138, 0, 400000), +(9970, 3210800, 0, 88, 132, 0, 400000), +(9971, 3230303, 0, 96, 144, 0, 400000), +(9972, 3230306, 0, 96, 144, 0, 400000), +(9973, 9600008, 0, 43, 60, 0, 400000), +(9974, 3230103, 0, 96, 144, 0, 400000), +(9975, 3230304, 0, 96, 144, 0, 400000), +(9976, 9600007, 0, 136, 162, 0, 400000), +(9977, 3230308, 0, 96, 144, 0, 400000), +(9978, 3230305, 0, 96, 144, 0, 400000), +(9979, 4230100, 0, 96, 144, 0, 400000), +(9980, 4230101, 0, 104, 156, 0, 400000), +(9981, 4230113, 0, 108, 162, 0, 400000), +(9982, 4230200, 0, 104, 156, 0, 400000), +(9983, 4230201, 0, 108, 162, 0, 400000), +(9984, 4230116, 0, 108, 162, 0, 400000), +(9985, 9400011, 0, 95, 135, 0, 400000), +(9986, 4230500, 0, 96, 144, 0, 400000), +(9987, 4230107, 0, 112, 168, 0, 400000), +(9988, 4230111, 0, 116, 174, 0, 400000), +(9989, 4230114, 0, 117, 174, 0, 400000), +(9990, 4230119, 0, 116, 174, 0, 400000), +(9991, 4230501, 0, 128, 192, 0, 400000), +(9992, 4230105, 0, 120, 180, 0, 400000), +(9993, 4230103, 0, 120, 180, 0, 400000), +(9994, 4230109, 0, 123, 190, 0, 400000), +(9995, 4230124, 0, 120, 180, 0, 400000), +(9996, 4230117, 0, 128, 192, 0, 400000), +(9997, 4230108, 0, 132, 198, 0, 400000), +(9998, 4230123, 0, 132, 198, 0, 400000), +(9999, 4230112, 0, 140, 210, 0, 400000), +(10000, 4230120, 0, 140, 210, 0, 400000), +(10001, 4230106, 0, 114, 216, 0, 400000), +(10002, 4130100, 0, 160, 240, 0, 400000), +(10003, 4230110, 0, 164, 246, 0, 400000), +(10004, 4000077, 0, 148, 222, 0, 400000), +(10005, 4230118, 0, 164, 246, 0, 400000), +(10006, 4230300, 0, 160, 240, 0, 400000), +(10007, 4130101, 0, 168, 252, 0, 400000), +(10008, 4230115, 0, 172, 258, 0, 400000), +(10009, 4230121, 0, 164, 246, 0, 400000), +(10010, 4130102, 0, 172, 258, 0, 400000), +(10011, 4230126, 0, 172, 258, 0, 400000), +(10012, 9400101, 0, 88, 132, 0, 400000), +(10013, 4230505, 0, 177, 258, 0, 400000), +(10014, 4230506, 0, 180, 268, 0, 400000), +(10015, 4230102, 0, 176, 246, 0, 400000), +(10016, 4230104, 0, 176, 246, 0, 400000), +(10017, 5130100, 0, 200, 300, 0, 400000), +(10018, 5100003, 0, 200, 300, 0, 400000), +(10019, 5120503, 0, 208, 312, 0, 400000), +(10020, 5110301, 0, 240, 360, 0, 400000), +(10021, 5110302, 0, 288, 432, 0, 400000), +(10022, 9400121, 0, 1000, 5000, 0, 400000), +(10023, 9400112, 0, 10000, 20000, 0, 400000), +(10024, 9400112, 0, 10000, 20000, 0, 400000), +(10025, 9400113, 0, 20000, 50000, 0, 400000), +(10026, 9400113, 0, 20000, 50000, 0, 400000), +(10027, 9400300, 0, 20000, 30000, 0, 400000), +(10028, 9400300, 0, 20000, 30000, 0, 400000), +(10029, 9400300, 0, 20000, 30000, 0, 400000), +(10030, 9410009, 0, 50, 90, 0, 400000), +(10031, 9410011, 0, 50, 90, 0, 400000), +(10032, 9420540, 0, 500, 700, 0, 400000), +(10033, 9400014, 0, 1000, 5000, 0, 400000), +(10034, 8180001, 0, 3000, 6000, 0, 400000), +(10035, 8180000, 0, 3000, 6000, 0, 400000), +(10036, 8140102, 0, 500, 800, 0, 400000), +(10037, 8140103, 0, 500, 800, 0, 400000), +(10038, 8140101, 0, 500, 800, 0, 400000), +(10039, 8140700, 0, 500, 800, 0, 400000), +(10040, 8140701, 0, 600, 900, 0, 400000), +(10041, 9400551, 0, 1000, 5000, 0, 400000), +(10042, 8190003, 0, 697, 1020, 0, 400000), +(10043, 8190004, 0, 750, 1150, 0, 400000), +(10044, 8190005, 0, 800, 1200, 0, 400000), +(10045, 8140110, 0, 500, 800, 0, 400000), +(10046, 8140111, 0, 600, 900, 0, 400000), +(10047, 9400575, 0, 1000, 5000, 0, 400000), +(10048, 8190000, 0, 800, 1200, 0, 400000), +(10049, 8190002, 0, 900, 1300, 0, 400000), +(10050, 9400545, 0, 600, 900, 0, 400000), +(10051, 9001000, 0, 200, 400, 0, 400000), +(10052, 9001001, 0, 200, 400, 0, 400000), +(10053, 9001002, 0, 200, 400, 0, 400000), +(10054, 9001003, 0, 200, 400, 0, 400000), +(10055, 9420500, 0, 36, 54, 0, 400000), +(10056, 9420502, 0, 30, 42, 0, 400000), +(10057, 9420506, 0, 56, 69, 0, 400000), +(10058, 9420503, 0, 76, 114, 0, 400000), +(10059, 9420501, 0, 92, 138, 0, 400000), +(10060, 9420504, 0, 208, 312, 0, 400000), +(10061, 9420505, 0, 232, 348, 0, 400000), +(10062, 9420508, 0, 254, 364, 0, 400000), +(10063, 9420509, 0, 280, 420, 0, 400000), +(10064, 9420510, 0, 329, 482, 0, 400000), +(10065, 9420511, 0, 304, 456, 0, 400000), +(10066, 9420512, 0, 332, 495, 0, 400000), +(10067, 9420513, 0, 1059, 2941, 0, 400000), +(10068, 6130208, 0, 312, 475, 0, 400000), +(10069, 7130104, 0, 332, 495, 0, 400000), +(10070, 8810018, 0, 40000, 50000, 0, 400000), +(10071, 8140001, 0, 500, 700, 0, 400000), +(10072, 8140002, 0, 600, 800, 0, 400000), +(10073, 4110302, 0, 180, 270, 0, 400000), +(10074, 2220000, 0, 30, 70, 0, 400000), +(10075, 9420519, 0, 700, 750, 0, 400000), +(10076, 9420517, 0, 750, 850, 0, 400000), +(10077, 8220002, 0, 300, 600, 0, 400000), +(10078, 8220004, 0, 12000, 14000, 0, 400000), +(10079, 8200011, 0, 750, 1050, 0, 400000), +(10080, 8220001, 0, 700, 900, 0, 400000), +(10081, 8820001, 0, 40000, 50000, 0, 400000), +(10082, 100120, 0, 1, 5, 0, 400000), +(10083, 100121, 0, 10, 14, 0, 400000), +(10084, 7130020, 0, 300, 450, 0, 400000), +(10085, 9300328, 0, 4, 6, 0, 400000), +(10086, 9400569, 0, 500, 800, 0, 400000), +(10087, 9500168, 0, 500, 800, 0, 400000), +(10088, 9500169, 0, 500, 800, 0, 400000), +(10089, 9500170, 0, 500, 800, 0, 400000), +(10090, 9500171, 0, 500, 800, 0, 400000), +(10091, 9500172, 0, 500, 800, 0, 400000), +(10092, 9500173, 0, 500, 800, 0, 400000), +(10093, 9500174, 0, 500, 800, 0, 400000), +(10094, 9500175, 0, 500, 800, 0, 400000), +(10095, 9500176, 0, 500, 800, 0, 400000), +(10096, 8220000, 0, 500, 800, 0, 400000), +(10097, 9420544, 0, 2000, 5000, 0, 400000), +(10098, 9420549, 0, 2000, 5000, 0, 400000), +(10099, 8200000, 0, 400, 600, 0, 400000), +(10100, 8200001, 0, 640, 920, 0, 400000), +(10101, 8200002, 0, 650, 930, 0, 400000), +(10102, 8200003, 0, 640, 950, 0, 400000), +(10103, 8200004, 0, 640, 956, 0, 400000), +(10104, 8200005, 0, 650, 980, 0, 400000), +(10105, 8200006, 0, 680, 1050, 0, 400000), +(10106, 8200007, 0, 680, 990, 0, 400000), +(10107, 8200008, 0, 690, 1020, 0, 400000), +(10108, 8200009, 0, 700, 1060, 0, 400000), +(10109, 8200010, 0, 710, 1070, 0, 400000), +(10110, 8200012, 0, 760, 1070, 0, 400000), +(10111, 6110301, 0, 330, 500, 0, 400000), +(10112, 9400110, 0, 171, 227, 0, 400000), +(10113, 9400111, 0, 175, 240, 0, 400000), +(10114, 9400100, 0, 64, 96, 0, 400000), +(10115, 9400101, 0, 88, 112, 0, 400000), +(10116, 9400102, 0, 88, 132, 0, 400000), +(10117, 9400103, 0, 200, 300, 0, 400000), +(10118, 9420522, 0, 1000, 2000, 0, 400000), +(10119, 9420522, 0, 1000, 2000, 0, 400000), +(10120, 9420522, 0, 1000, 2000, 0, 400000), +(10121, 9420522, 0, 1000, 2000, 0, 400000), +(10122, 9420522, 0, 1000, 2000, 0, 400000), +(10123, 9420522, 0, 1000, 2000, 0, 400000), +(10124, 8810018, 0, 30000, 40000, 0, 700000), +(10125, 8810018, 0, 30000, 40000, 0, 700000), +(10126, 8810018, 0, 30000, 40000, 0, 700000), +(10127, 8810018, 0, 30000, 40000, 0, 700000), +(10128, 8810018, 0, 30000, 40000, 0, 700000), +(10129, 8810018, 0, 30000, 40000, 0, 700000), +(10130, 8810018, 0, 30000, 40000, 0, 700000), +(10131, 8810018, 0, 30000, 40000, 0, 700000), +(10132, 8810018, 0, 30000, 40000, 0, 700000), +(10133, 8810018, 0, 30000, 40000, 0, 700000), +(10134, 8800002, 0, 10000, 15000, 0, 700000), +(10135, 8800002, 0, 10000, 15000, 0, 700000), +(10136, 8800002, 0, 10000, 15000, 0, 700000), +(10137, 8800002, 0, 10000, 15000, 0, 700000), +(10138, 8800002, 0, 10000, 15000, 0, 700000), +(10139, 8800002, 0, 10000, 15000, 0, 700000), +(10140, 8800002, 0, 10000, 15000, 0, 700000), +(10141, 8800002, 0, 10000, 15000, 0, 700000), +(10142, 8800002, 0, 10000, 15000, 0, 700000), +(10143, 8800002, 0, 10000, 15000, 0, 700000), +(10144, 8510000, 0, 10000, 20000, 0, 400000), +(10145, 8510000, 0, 10000, 20000, 0, 400000), +(10146, 8510000, 0, 10000, 20000, 0, 400000), +(10147, 8510000, 0, 10000, 20000, 0, 400000), +(10148, 8510000, 0, 10000, 20000, 0, 400000), +(10149, 8520000, 0, 10000, 20000, 0, 400000), +(10150, 8520000, 0, 10000, 20000, 0, 400000), +(10151, 8520000, 0, 10000, 20000, 0, 400000), +(10152, 8520000, 0, 10000, 20000, 0, 400000), +(10153, 8520000, 0, 10000, 20000, 0, 400000), +(10154, 8500002, 0, 10000, 20000, 0, 400000), +(10155, 8500002, 0, 10000, 20000, 0, 400000), +(10156, 8500002, 0, 10000, 20000, 0, 400000), +(10157, 8500002, 0, 10000, 20000, 0, 400000), +(10158, 8500002, 0, 10000, 20000, 0, 400000), +(10159, 9400409, 0, 10000, 20000, 0, 400000), +(10160, 9400409, 0, 10000, 20000, 0, 400000), +(10161, 9400409, 0, 10000, 20000, 0, 400000), +(10162, 9400409, 0, 10000, 20000, 0, 400000), +(10163, 9400409, 0, 10000, 20000, 0, 400000), +(10164, 6230100, 4031213, 1, 1, 2097, 200000), +(10165, 7130100, 4031214, 1, 1, 2097, 200000), +(10166, 7220001, 4031793, 1, 1, 3647, 999999), +(10167, 7130101, 4031215, 1, 1, 2097, 200000), +(10168, 210100, 4031273, 1, 1, 2104, 500000), +(10169, 2220100, 2022016, 1, 1, 8164, 100000), +(10170, 2130100, 4031153, 1, 1, 2070, 10000), +(10171, 2230106, 4031268, 1, 1, 3629, 30000), +(10172, 2230105, 4031259, 1, 1, 3080, 30000), +(10173, 2230106, 4031260, 1, 1, 3080, 30000), +(10174, 2230108, 4031261, 1, 1, 3080, 30000), +(10175, 2230200, 4031262, 1, 1, 3081, 30000), +(10176, 3230104, 4031263, 1, 1, 3081, 30000), +(10177, 2230109, 4031264, 1, 1, 3081, 30000), +(10178, 4230200, 4031265, 1, 1, 3082, 30000), +(10179, 4230123, 4031266, 1, 1, 3082, 30000), +(10180, 4230124, 4031267, 1, 1, 3082, 30000), +(10181, 4230116, 4031103, 1, 1, 3414, 100000), +(10182, 4230117, 4031104, 1, 1, 3414, 100000), +(10183, 4230118, 4031105, 1, 1, 3414, 100000), +(10184, 4240000, 4031106, 1, 1, 3414, 100000), +(10185, 7130400, 4031232, 1, 1, 3611, 1000000), +(10186, 7130401, 4031233, 1, 1, 3611, 1000000), +(10187, 7130402, 4031234, 1, 1, 3611, 1000000), +(10188, 5100004, 4031790, 1, 1, 3642, 100000), +(10189, 4230113, 4031675, 1, 1, 4917, 1000000), +(10190, 9400546, 4031681, 1, 1, 4915, 1000000), +(10191, 9600005, 4000191, 1, 1, 0, 1000000), +(10192, 9600006, 4000192, 1, 1, 0, 1000000), +(10193, 8500002, 4031196, 1, 1, 0, 1000000), +(10194, 8500002, 4031196, 1, 1, 0, 1000000), +(10195, 8500002, 4031196, 1, 1, 0, 187500), +(10196, 8500002, 4031196, 1, 1, 0, 125000), +(10197, 3000006, 4031209, 1, 1, 0, 500000), +(10198, 2230109, 4031209, 1, 1, 0, 500000), +(10199, 2230200, 4031209, 1, 1, 0, 500000), +(10200, 3230104, 4031209, 1, 1, 0, 500000), +(10201, 3230306, 4031159, 1, 1, 2074, 500000), +(10202, 9500400, 4031224, 1, 1, 3607, 1000000), +(10203, 9500400, 4031223, 1, 1, 3607, 1000000), +(10204, 9420003, 4031400, 1, 1, 8761, 1000000), +(10205, 9420001, 4031401, 1, 1, 8761, 1000000), +(10206, 9300097, 4031472, 1, 1, 6301, 100000), +(10207, 9300098, 4031472, 1, 1, 6301, 100000), +(10208, 9300099, 4031472, 1, 1, 6301, 100000), +(10209, 5300100, 4031925, 1, 1, 2223, 100000), +(10210, 1110100, 4031146, 1, 1, 2065, 1000000), +(10211, 1130100, 4031147, 1, 1, 2065, 1000000), +(10212, 2230102, 4031155, 1, 1, 2071, 1000000), +(10213, 3230100, 4031239, 1, 1, 2099, 50000), +(10214, 4230100, 4031212, 1, 1, 2096, 500000), +(10215, 5300000, 4031311, 1, 1, 3093, 1000000), +(10216, 8140600, 4031256, 1, 1, 3076, 100000), +(10217, 8140600, 4031251, 1, 1, 3076, 300000), +(10218, 8510000, 4031253, 1, 1, 3076, 1000000), +(10219, 8520000, 4031253, 1, 1, 3076, 1000000), +(10220, 5130107, 4031218, 1, 1, 3071, 10000), +(10221, 5130108, 4031218, 1, 1, 3071, 10000), +(10222, 3230200, 4031309, 1, 1, 3088, 500000), +(10223, 4230106, 4031309, 1, 1, 3088, 500000), +(10224, 5120000, 4031309, 1, 1, 3088, 500000), +(10225, 8150100, 4031252, 1, 1, 3078, 10000), +(10226, 8150101, 4031252, 1, 1, 3078, 10000), +(10227, 8150100, 4031254, 1, 1, 3078, 10000), +(10228, 8150101, 4031254, 1, 1, 3078, 10000), +(10229, 8150100, 4031255, 1, 1, 3078, 10000), +(10230, 8150101, 4031255, 1, 1, 3078, 10000), +(10231, 4240000, 4031926, 1, 1, 3454, 1000000), +(10232, 4230118, 4031926, 1, 1, 3454, 10000), +(10233, 4230117, 4031926, 1, 1, 3454, 10000), +(10234, 4230116, 4031926, 1, 1, 3454, 10000), +(10235, 6130202, 4031222, 1, 1, 3621, 100000), +(10236, 3230302, 4031089, 1, 1, 3223, 100000), +(10237, 4230119, 4031090, 1, 1, 3227, 100000), +(10238, 3210205, 4031093, 1, 1, 3229, 1000000), +(10239, 3110102, 4031129, 1, 1, 3207, 1000000), +(10240, 4230119, 4031206, 1, 1, 3441, 50000), +(10241, 3230400, 4031140, 1, 1, 3440, 100000), +(10242, 3230400, 4031135, 1, 1, 3438, 100000), +(10243, 3210208, 4031279, 1, 1, 3632, 1000000), +(10244, 2230106, 4031269, 1, 1, 3629, 1000000), +(10245, 4230300, 4031241, 1, 1, 3606, 1000000), +(10246, 4230112, 4031115, 1, 1, 3416, 100000), +(10247, 4240000, 4031102, 1, 1, 3413, 1000000), +(10248, 6230300, 4031189, 1, 1, 3448, 100000), +(10249, 6230300, 4031195, 1, 1, 3449, 500000), +(10250, 130101, 4031846, 1, 1, 2173, 50000), +(10251, 1210100, 4031846, 1, 1, 2173, 50000), +(10252, 8180001, 4031464, 1, 1, 6303, 1000000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(10253, 7130104, 4031436, 1, 1, 3828, 1000000), +(10254, 3110302, 4031694, 1, 1, 3312, 50000), +(10255, 3110303, 4031694, 1, 1, 3312, 100000), +(10256, 5120506, 4031432, 1, 1, 3810, 1000000), +(10257, 6130209, 4031433, 1, 1, 3804, 100000), +(10258, 9400110, 4031139, 1, 1, 8005, 100000), +(10259, 9400111, 4031139, 1, 1, 8005, 100000), +(10260, 9600002, 4000188, 1, 1, 0, 1000000), +(10261, 9600001, 4000187, 1, 1, 0, 1000000), +(10262, 9420005, 4000252, 1, 1, 0, 1000000), +(10263, 9420005, 4000253, 1, 1, 0, 1000000), +(10264, 3110100, 4031405, 1, 1, 8732, 500000), +(10265, 9600007, 4000193, 1, 1, 0, 1000000), +(10266, 9400543, 4031680, 1, 1, 4914, 300000), +(10267, 9420003, 4000251, 1, 1, 0, 1000000), +(10268, 4230116, 4031674, 1, 1, 4916, 300000), +(10269, 9600003, 4000189, 1, 1, 0, 1000000), +(10270, 9600004, 4000190, 1, 1, 0, 1000000), +(10271, 9420002, 4000248, 1, 1, 0, 1000000), +(10272, 3110100, 4031164, 1, 1, 2084, 300000), +(10274, 2000, 4031161, 1, 1, 1008, 1000000), +(10275, 2000, 4031162, 1, 1, 1008, 1000000), +(10276, 6130200, 4031170, 1, 1, 7100, 500000), +(10277, 6230300, 4031170, 1, 1, 7100, 500000), +(10278, 6230400, 4031170, 1, 1, 7100, 500000), +(10279, 6230500, 4031170, 1, 1, 7100, 500000), +(10280, 6300100, 4031170, 1, 1, 7100, 500000), +(10281, 6400100, 4031170, 1, 1, 7100, 500000), +(10282, 7130010, 4031170, 1, 1, 7100, 500000), +(10283, 7130300, 4031170, 1, 1, 7100, 500000), +(10284, 7140000, 4031170, 1, 1, 7100, 500000), +(10285, 8140200, 4031170, 1, 1, 7100, 500000), +(10286, 8140300, 4031170, 1, 1, 7100, 500000), +(10287, 8141000, 4031170, 1, 1, 7100, 500000), +(10288, 8141100, 4031170, 1, 1, 7100, 500000), +(10289, 8142000, 4031170, 1, 1, 7100, 500000), +(10290, 8143000, 4031170, 1, 1, 7100, 500000), +(10291, 8160000, 4031170, 1, 1, 7100, 500000), +(10292, 8170000, 4031170, 1, 1, 7100, 500000), +(10293, 9500127, 4031170, 1, 1, 7100, 500000), +(10294, 9500135, 4031170, 1, 1, 7100, 500000), +(10295, 9500136, 4031170, 1, 1, 7100, 500000), +(10296, 9500137, 4031170, 1, 1, 7100, 500000), +(10297, 7130300, 4031171, 1, 1, 7101, 400000), +(10298, 7160000, 4031171, 1, 1, 7101, 400000), +(10299, 6130200, 4031175, 1, 1, 7101, 300000), +(10300, 6230300, 4031175, 1, 1, 7101, 300000), +(10301, 6230400, 4031175, 1, 1, 7101, 300000), +(10302, 6230500, 4031175, 1, 1, 7101, 300000), +(10303, 6300100, 4031175, 1, 1, 7101, 350000), +(10304, 6400100, 4031175, 1, 1, 7101, 350000), +(10305, 7130010, 4031175, 1, 1, 7101, 400000), +(10306, 7130300, 4031175, 1, 1, 7101, 400000), +(10307, 7140000, 4031175, 1, 1, 7101, 400000), +(10308, 8140200, 4031175, 1, 1, 7101, 350000), +(10309, 8140300, 4031175, 1, 1, 7101, 350000), +(10310, 8141000, 4031175, 1, 1, 7101, 450000), +(10311, 8141100, 4031175, 1, 1, 7101, 450000), +(10312, 8142000, 4031175, 1, 1, 7101, 450000), +(10313, 8143000, 4031175, 1, 1, 7101, 450000), +(10314, 8160000, 4031175, 1, 1, 7101, 600000), +(10315, 8170000, 4031175, 1, 1, 7101, 600000), +(10316, 9500127, 4031175, 1, 1, 7101, 300000), +(10317, 9500135, 4031175, 1, 1, 7101, 400000), +(10318, 9500136, 4031175, 1, 1, 7101, 450000), +(10319, 9500137, 4031175, 1, 1, 7101, 450000), +(10320, 8141100, 4031176, 1, 1, 7104, 50000), +(10321, 8143000, 4031176, 1, 1, 7104, 50000), +(10322, 9500136, 4031176, 1, 1, 7104, 50000), +(10323, 9500137, 4031176, 1, 1, 7104, 50000), +(10324, 8141100, 4031177, 1, 1, 7104, 100000), +(10325, 8143000, 4031177, 1, 1, 7104, 100000), +(10326, 9500136, 4031177, 1, 1, 7104, 100000), +(10327, 9500137, 4031177, 1, 1, 7104, 100000), +(10328, 8141100, 4031178, 1, 1, 7104, 10000), +(10329, 8143000, 4031178, 1, 1, 7104, 10000), +(10330, 9500136, 4031178, 1, 1, 7104, 10000), +(10331, 9500137, 4031178, 1, 1, 7104, 10000), +(10332, 8160000, 4031172, 1, 1, 7103, 50000), +(10333, 8170000, 4031172, 1, 1, 7103, 50000), +(10334, 8141000, 4031193, 1, 1, 3446, 60000), +(10335, 7130501, 4031412, 1, 1, 3712, 100000), +(10336, 8140111, 4031413, 1, 1, 3712, 100000), +(10337, 8150201, 4031414, 1, 1, 3712, 100000), +(10338, 8150302, 4031415, 1, 1, 3712, 100000), +(10339, 8180000, 4001076, 1, 1, 7301, 1000000), +(10340, 8180000, 4001076, 1, 1, 7301, 1000000), +(10341, 8180000, 4001076, 1, 1, 7301, 1000000), +(10342, 8150200, 4001075, 1, 1, 7301, 50000), +(10343, 8150201, 4001075, 1, 1, 7301, 50000), +(10344, 8150300, 4001077, 1, 1, 7301, 60000), +(10345, 8150301, 4001077, 1, 1, 7301, 60000), +(10346, 8150302, 4001077, 1, 1, 7301, 60000), +(10347, 8150200, 4001079, 1, 1, 7301, 60000), +(10348, 8180000, 4001104, 1, 1, 7303, 1000000), +(10349, 8180000, 4001104, 1, 1, 7303, 1000000), +(10350, 8180000, 4001104, 1, 1, 7303, 1000000), +(10351, 8150200, 4001103, 1, 1, 7303, 50000), +(10352, 8150201, 4001103, 1, 1, 7303, 50000), +(10353, 8150300, 4001105, 1, 1, 7303, 60000), +(10354, 8150301, 4001105, 1, 1, 7303, 60000), +(10355, 8150302, 4001105, 1, 1, 7303, 60000), +(10356, 8150200, 4001079, 1, 1, 7303, 60000), +(10357, 8180000, 4031343, 1, 1, 6904, 400000), +(10358, 8180001, 4031344, 1, 1, 6904, 400000), +(10359, 8180000, 4031511, 1, 1, 6914, 400000), +(10360, 8180001, 4031512, 1, 1, 6914, 400000), +(10361, 8180000, 4031514, 1, 1, 6924, 400000), +(10362, 8180001, 4031515, 1, 1, 6924, 400000), +(10363, 8180000, 4031517, 1, 1, 6934, 400000), +(10364, 8180001, 4031518, 1, 1, 6934, 400000), +(10365, 8180000, 4031860, 1, 1, 6944, 400000), +(10366, 8180001, 4031861, 1, 1, 6944, 400000), +(10367, 8140101, 4031465, 1, 1, 6250, 5000), +(10368, 8140101, 4031487, 1, 1, 6251, 5000), +(10369, 8140102, 4031465, 1, 1, 6250, 5000), +(10370, 8140102, 4031487, 1, 1, 6251, 5000), +(10371, 8140103, 4031465, 1, 1, 6250, 5000), +(10372, 8140103, 4031487, 1, 1, 6251, 5000), +(10373, 8140101, 4031487, 1, 1, 6251, 5000), +(10374, 8150300, 4031449, 1, 1, 6120, 60000), +(10375, 8150300, 4031449, 1, 1, 6120, 60000), +(10376, 8150300, 4031449, 1, 1, 6120, 60000), +(10377, 8150301, 4031449, 1, 1, 6120, 60000), +(10378, 8150301, 4031449, 1, 1, 6120, 60000), +(10379, 8150301, 4031449, 1, 1, 6120, 60000), +(10380, 8150302, 4031449, 1, 1, 6120, 60000), +(10381, 8150302, 4031449, 1, 1, 6120, 60000), +(10382, 8150302, 4031449, 1, 1, 6120, 60000), +(10383, 8150300, 4031482, 1, 1, 6121, 20000), +(10384, 8150300, 4031482, 1, 1, 6121, 20000), +(10385, 8150300, 4031482, 1, 1, 6121, 20000), +(10386, 8150301, 4031482, 1, 1, 6121, 20000), +(10387, 8150301, 4031482, 1, 1, 6121, 20000), +(10388, 8150301, 4031482, 1, 1, 6121, 20000), +(10389, 8150302, 4031482, 1, 1, 6121, 20000), +(10390, 8150302, 4031482, 1, 1, 6121, 20000), +(10391, 8150302, 4031482, 1, 1, 6121, 20000), +(10392, 8150300, 4031483, 1, 1, 6122, 20000), +(10393, 8150300, 4031483, 1, 1, 6122, 20000), +(10394, 8150300, 4031483, 1, 1, 6122, 20000), +(10395, 8150301, 4031483, 1, 1, 6122, 20000), +(10396, 8150301, 4031483, 1, 1, 6122, 20000), +(10397, 8150301, 4031483, 1, 1, 6122, 20000), +(10398, 8150302, 4031483, 1, 1, 6122, 20000), +(10399, 8150302, 4031483, 1, 1, 6122, 20000), +(10400, 8150302, 4031483, 1, 1, 6122, 20000), +(10401, 8150300, 4031484, 1, 1, 6123, 20000), +(10402, 8150300, 4031484, 1, 1, 6123, 20000), +(10403, 8150300, 4031484, 1, 1, 6123, 20000), +(10404, 8150301, 4031484, 1, 1, 6123, 20000), +(10405, 8150301, 4031484, 1, 1, 6123, 20000), +(10406, 8150301, 4031484, 1, 1, 6123, 20000), +(10407, 8150302, 4031484, 1, 1, 6123, 20000), +(10408, 8150302, 4031484, 1, 1, 6123, 20000), +(10409, 8150302, 4031484, 1, 1, 6123, 20000), +(10410, 8150300, 4031485, 1, 1, 6124, 20000), +(10411, 8150300, 4031485, 1, 1, 6124, 20000), +(10412, 8150300, 4031485, 1, 1, 6124, 20000), +(10413, 8150301, 4031485, 1, 1, 6124, 20000), +(10414, 8150301, 4031485, 1, 1, 6124, 20000), +(10415, 8150301, 4031485, 1, 1, 6124, 20000), +(10416, 8150302, 4031485, 1, 1, 6124, 20000), +(10417, 8150302, 4031485, 1, 1, 6124, 20000), +(10418, 8150302, 4031485, 1, 1, 6124, 20000), +(10419, 8130100, 4031466, 1, 1, 6107, 500000), +(10420, 7130101, 4031466, 1, 1, 6107, 80000), +(10421, 7130100, 4031466, 1, 1, 6107, 80000), +(10422, 6230100, 4031466, 1, 1, 6107, 30000), +(10423, 9300100, 4031470, 1, 1, 6225, 250000), +(10424, 9300086, 4031470, 1, 1, 6225, 250000), +(10425, 9300100, 4031469, 1, 1, 6315, 250000), +(10426, 9300086, 4031469, 1, 1, 6315, 250000), +(10427, 8160000, 4031474, 1, 1, 6295, 50000), +(10428, 8160000, 4031473, 1, 1, 6226, 20000), +(10429, 8160000, 4031496, 1, 1, 6316, 20000), +(10430, 9300079, 4031461, 1, 1, 6169, 30000), +(10431, 9300078, 4031461, 1, 1, 6169, 30000), +(10432, 9300077, 4031461, 1, 1, 6169, 30000), +(10433, 9300076, 4031461, 1, 1, 6169, 30000), +(10434, 9300075, 4031461, 1, 1, 6169, 30000), +(10435, 9300074, 4031461, 1, 1, 6169, 30000), +(10436, 9300073, 4031461, 1, 1, 6169, 30000), +(10437, 9300072, 4031461, 1, 1, 6169, 30000), +(10438, 9300071, 4031461, 1, 1, 6169, 30000), +(10439, 9300070, 4031461, 1, 1, 6169, 30000), +(10440, 9300069, 4031461, 1, 1, 6169, 30000), +(10441, 9300068, 4031461, 1, 1, 6169, 30000), +(10442, 9300067, 4031461, 1, 1, 6169, 30000), +(10443, 9300066, 4031461, 1, 1, 6169, 30000), +(10444, 9300065, 4031461, 1, 1, 6169, 30000), +(10445, 9300274, 4032190, 1, 1, 20705, 50000), +(10446, 9300274, 4032314, 1, 1, 21709, 150000), +(10447, 1210102, 4032314, 1, 1, 21709, 150000), +(10448, 1210100, 4032340, 1, 1, 21710, 200000), +(10449, 9300274, 4032315, 1, 1, 21711, 50000), +(10450, 1110130, 4032316, 1, 1, 21714, 50000), +(10451, 100121, 4000483, 1, 1, 0, 400000), +(10452, 9001011, 4032096, 1, 1, 20201, 700000), +(10453, 9001011, 4032097, 1, 1, 20202, 700000), +(10454, 9001011, 4032098, 1, 1, 20203, 700000), +(10455, 9001011, 4032099, 1, 1, 20204, 700000), +(10456, 9001011, 4032100, 1, 1, 20205, 700000), +(10457, 9001009, 4032101, 1, 1, 20301, 700000), +(10458, 9001009, 4032102, 1, 1, 20302, 700000), +(10459, 9001009, 4032103, 1, 1, 20303, 700000), +(10460, 9001009, 4032104, 1, 1, 20304, 700000), +(10461, 9001009, 4032105, 1, 1, 20305, 700000), +(10462, 9300289, 4032120, 1, 1, 20601, 999999), +(10463, 9300289, 4032121, 1, 1, 20602, 999999), +(10464, 9300289, 4032122, 1, 1, 20603, 999999), +(10465, 9300289, 4032123, 1, 1, 20604, 999999), +(10466, 9300289, 4032124, 1, 1, 20605, 999999), +(10467, 9300294, 4032125, 1, 1, 20611, 999999), +(10468, 9300294, 4032126, 1, 1, 20612, 999999), +(10469, 9300294, 4032127, 1, 1, 20613, 999999), +(10470, 9300294, 4032128, 1, 1, 20614, 999999), +(10471, 9300294, 4032129, 1, 1, 20615, 999999), +(10472, 8200011, 2290048, 1, 1, 0, 600), +(10473, 8200011, 2290040, 1, 1, 0, 600), +(10474, 9420549, 2280010, 1, 1, 0, 50000), +(10475, 9420549, 2280009, 1, 1, 0, 70000), +(10476, 9420549, 2280008, 1, 1, 0, 50000), +(10477, 9420549, 2280007, 1, 1, 0, 50000), +(10478, 9420544, 2280010, 1, 1, 0, 70000), +(10479, 9420544, 2280009, 1, 1, 0, 90000), +(10480, 9420544, 2280008, 1, 1, 0, 70000), +(10481, 9420544, 2280007, 1, 1, 0, 70000), +(10482, 8520000, 2280010, 1, 1, 0, 30000), +(10483, 8520000, 2280009, 1, 1, 0, 50000), +(10484, 8520000, 2280008, 1, 1, 0, 30000), +(10485, 8520000, 2280007, 1, 1, 0, 30000), +(10486, 8510000, 2280010, 1, 1, 0, 30000), +(10487, 8510000, 2280009, 1, 1, 0, 50000), +(10488, 8510000, 2280008, 1, 1, 0, 30000), +(10489, 8510000, 2280007, 1, 1, 0, 30000), +(10490, 8500002, 2280010, 1, 1, 0, 35000), +(10491, 8500002, 2280009, 1, 1, 0, 50000), +(10492, 8500002, 2280008, 1, 1, 0, 35000), +(10493, 8500002, 2280007, 1, 1, 0, 35000), +(10494, 8140701, 4031872, 1, 1, 6340, 60000), +(10495, 8140700, 4031871, 1, 1, 6350, 60000), +(10496, 8500002, 4031869, 1, 1, 6360, 999999), +(10497, 8141000, 4031873, 1, 1, 6380, 60000), +(10498, 8141100, 4031874, 1, 1, 6390, 60000), +(10499, 7130101, 4001112, 1, 1, 0, 1000), +(10500, 8170000, 4001112, 1, 1, 0, 1500), +(10501, 5130107, 4001107, 1, 1, 0, 1000), +(10502, 8143000, 4001107, 1, 1, 0, 1500), +(10503, 7160000, 4001110, 1, 1, 0, 1000), +(10504, 8150100, 4161018, 1, 1, 0, 1000), +(10505, 7130000, 4161021, 1, 1, 0, 1000), +(10506, 8150000, 4001111, 1, 1, 0, 999999), +(10507, 8140000, 4031477, 1, 1, 0, 10000), +(10508, 8170000, 4031453, 1, 1, 6291, 50000), +(10509, 8160000, 4031474, 1, 1, 6295, 50000), +(10510, 8180001, 4031479, 1, 1, 6151, 999999), +(10511, 8130100, 4031475, 1, 1, 6153, 999999), +(10512, 8140000, 4031460, 1, 1, 6168, 10000), +(10513, 8180001, 4031457, 1, 1, 6231, 400000), +(10514, 8170000, 4031458, 1, 1, 6231, 10000), +(10515, 6130104, 4031459, 1, 1, 6231, 500000), +(10516, 9300094, 2280004, 1, 1, 0, 7000), +(10517, 9300095, 2280004, 1, 1, 0, 7000), +(10518, 9300094, 2280005, 1, 1, 0, 7000), +(10519, 9300095, 2280005, 1, 1, 0, 7000), +(10520, 9300094, 2280006, 1, 1, 0, 7000), +(10521, 9300095, 2280006, 1, 1, 0, 7000), +(10522, 8500002, 4001084, 1, 1, 0, 999999), +(10523, 8800002, 4001083, 1, 1, 0, 999999), +(10524, 9300367, 2022179, 1, 1, 0, 300000), +(10525, 9300368, 2022179, 1, 1, 0, 300000), +(10526, 9300369, 2022179, 1, 1, 0, 300000), +(10527, 9300370, 2022179, 1, 1, 0, 300000), +(10528, 9300371, 2022179, 1, 1, 0, 300000), +(10529, 9300372, 2022179, 1, 1, 0, 300000), +(10530, 9300373, 2022179, 1, 1, 0, 300000), +(10531, 9300374, 2022179, 1, 1, 0, 300000), +(10532, 9300375, 2022179, 1, 1, 0, 300000), +(10533, 9300376, 2022179, 1, 1, 0, 300000), +(10534, 9300377, 2022179, 1, 1, 0, 300000), +(10535, 9300367, 1002971, 1, 1, 0, 40000), +(10536, 9300368, 1002971, 1, 1, 0, 40000), +(10537, 9300369, 1002971, 1, 1, 0, 40000), +(10538, 9300370, 1002971, 1, 1, 0, 40000), +(10539, 9300371, 1002971, 1, 1, 0, 40000), +(10540, 9300372, 1002971, 1, 1, 0, 40000), +(10541, 9300373, 1002971, 1, 1, 0, 40000), +(10542, 9300374, 1002971, 1, 1, 0, 40000), +(10543, 9300375, 1002971, 1, 1, 0, 40000), +(10544, 9300376, 1002971, 1, 1, 0, 40000), +(10545, 9300377, 1002971, 1, 1, 0, 40000), +(10546, 9300367, 1442046, 1, 1, 0, 30000), +(10547, 9300368, 1442046, 1, 1, 0, 30000), +(10548, 9300369, 1442046, 1, 1, 0, 30000), +(10549, 9300370, 1442046, 1, 1, 0, 30000), +(10550, 9300371, 1442046, 1, 1, 0, 30000), +(10551, 9300372, 1442046, 1, 1, 0, 30000), +(10552, 9300373, 1442046, 1, 1, 0, 30000), +(10553, 9300374, 1442046, 1, 1, 0, 30000), +(10554, 9300375, 1442046, 1, 1, 0, 30000), +(10555, 9300376, 1442046, 1, 1, 0, 30000), +(10556, 9300377, 1442046, 1, 1, 0, 30000), +(10557, 9300367, 1442057, 1, 1, 0, 40000), +(10558, 9300368, 1442057, 1, 1, 0, 40000), +(10559, 9300369, 1442057, 1, 1, 0, 40000), +(10560, 9300370, 1442057, 1, 1, 0, 40000), +(10561, 9300371, 1442057, 1, 1, 0, 40000), +(10562, 9300372, 1442057, 1, 1, 0, 40000), +(10563, 9300373, 1442057, 1, 1, 0, 40000), +(10564, 9300374, 1442057, 1, 1, 0, 40000), +(10565, 9300375, 1442057, 1, 1, 0, 40000), +(10566, 9300376, 1442057, 1, 1, 0, 40000), +(10567, 9300377, 1442057, 1, 1, 0, 40000), +(10568, 8200001, 4020009, 1, 1, 0, 1000), +(10569, 8200002, 4020009, 1, 1, 0, 1000), +(10570, 8200003, 4020009, 1, 1, 0, 1000), +(10571, 8200004, 4020009, 1, 1, 0, 1000), +(10572, 8200005, 4020009, 1, 1, 0, 1000), +(10573, 8200006, 4020009, 1, 1, 0, 1000), +(10574, 8200007, 4020009, 1, 1, 0, 1000), +(10575, 8200008, 4020009, 1, 1, 0, 1000), +(10576, 8200009, 4020009, 1, 1, 0, 1000), +(10577, 8200010, 4020009, 1, 1, 0, 1000), +(10578, 8200011, 4020009, 1, 1, 0, 1000), +(10579, 8200012, 4020009, 1, 1, 0, 1000), +(10580, 9300000, 4001008, 1, 1, 0, 999999), +(10581, 9300001, 4001007, 1, 1, 0, 200000), +(10582, 9300002, 4001008, 1, 1, 0, 999999), +(10583, 9300003, 4001008, 1, 1, 0, 999999), +(11218, 4230109, 1452016, 1, 1, 0, 700), +(10585, 9300005, 4001022, 1, 1, 0, 999999), +(10586, 9300006, 4001022, 1, 1, 0, 999999), +(10587, 9300007, 4001022, 1, 1, 0, 999999), +(10588, 9300008, 4001022, 1, 1, 0, 999999), +(10589, 9300014, 4001022, 1, 1, 0, 999999), +(10590, 9300010, 4001022, 1, 1, 0, 999999), +(10591, 9300012, 4001023, 1, 1, 0, 999999), +(10592, 9300170, 4001156, 1, 1, 0, 999999), +(10593, 9300171, 4001156, 1, 1, 0, 999999), +(10594, 9300169, 4001156, 1, 1, 0, 999999), +(10595, 9000100, 4031013, 1, 1, 0, 300000), +(10596, 9000101, 4031013, 1, 1, 0, 300000), +(10597, 9000000, 4031013, 1, 1, 0, 300000), +(10598, 9000001, 4031013, 1, 1, 0, 300000), +(10599, 9000200, 4031013, 1, 1, 0, 300000), +(10600, 9000201, 4031013, 1, 1, 0, 300000), +(10601, 9000300, 4031013, 1, 1, 0, 300000), +(10602, 9000301, 4031013, 1, 1, 0, 300000), +(10603, 8180000, 4031511, 1, 1, 6904, 600000), +(10604, 8180001, 4031511, 1, 1, 6904, 600000), +(10605, 9400407, 4000343, 1, 1, 0, 100000), +(10606, 9300018, 4031802, 1, 1, 1035, 999999), +(10607, 6110301, 4031745, 1, 1, 3358, 5000), +(10608, 9302010, 2022524, 1, 1, 0, 100000), +(10609, 9400256, 4032192, 1, 1, 0, 50000), +(10610, 9400257, 4032192, 1, 1, 0, 50000), +(10611, 9410066, 5490001, 1, 1, 0, 700000), +(10612, 9410066, 5490001, 1, 1, 0, 700000), +(10613, 9410066, 5490000, 1, 1, 0, 300000), +(10614, 9410066, 4000306, 1, 1, 0, 700000), +(10615, 9410066, 4000306, 1, 1, 0, 700000), +(10616, 9410066, 4000306, 1, 1, 0, 700000), +(10617, 9410066, 4000306, 1, 1, 0, 700000), +(10618, 9410066, 4000306, 1, 1, 0, 700000), +(10619, 9410066, 4000306, 1, 1, 0, 700000), +(10620, 9410066, 4000306, 1, 1, 0, 700000), +(10621, 9410066, 4000306, 1, 1, 0, 700000), +(10622, 9410066, 4000306, 1, 1, 0, 700000), +(10623, 9410066, 4000306, 1, 1, 0, 700000), +(10624, 9410066, 4000306, 1, 1, 0, 700000), +(10625, 9410066, 4000306, 1, 1, 0, 700000), +(10626, 9410066, 4000306, 1, 1, 0, 700000), +(10627, 9410066, 4000306, 1, 1, 0, 700000), +(10628, 9410066, 4000306, 1, 1, 0, 700000), +(10629, 9410066, 4000306, 1, 1, 0, 700000), +(10630, 9410066, 4000306, 1, 1, 0, 700000), +(10631, 9410066, 4000306, 1, 1, 0, 700000), +(10632, 9410066, 4000306, 1, 1, 0, 700000), +(10633, 9410066, 4000306, 1, 1, 0, 700000), +(10634, 9420015, 2022042, 1, 1, 0, 700000), +(10635, 9420015, 2022042, 1, 1, 0, 700000), +(10636, 9420015, 2022042, 1, 1, 0, 700000), +(10637, 9420015, 2022042, 1, 1, 0, 700000), +(10638, 9420015, 2022042, 1, 1, 0, 700000), +(10639, 9420015, 4032176, 1, 1, 0, 700000), +(10640, 9420015, 4032176, 1, 1, 0, 700000), +(10641, 9420015, 4032176, 1, 1, 0, 700000), +(10642, 9420015, 4032176, 1, 1, 0, 700000), +(10643, 9420015, 4032176, 1, 1, 0, 700000), +(10644, 9420015, 4032176, 1, 1, 0, 700000), +(10645, 9420015, 4032176, 1, 1, 0, 700000), +(10646, 9420015, 4032176, 1, 1, 0, 700000), +(10647, 9420015, 4032176, 1, 1, 0, 700000), +(10648, 9420015, 4032176, 1, 1, 0, 700000), +(10649, 9420015, 4032176, 1, 1, 0, 700000), +(10650, 9420015, 4032176, 1, 1, 0, 700000), +(10651, 9420015, 4032176, 1, 1, 0, 700000), +(10652, 9420015, 4032176, 1, 1, 0, 700000), +(10653, 9420015, 4032176, 1, 1, 0, 700000), +(10654, 9420015, 4032176, 1, 1, 0, 700000), +(10655, 9420015, 4032176, 1, 1, 0, 700000), +(10656, 9420015, 4032176, 1, 1, 0, 700000), +(10657, 9420015, 4032176, 1, 1, 0, 700000), +(10658, 9420015, 4032176, 1, 1, 0, 700000), +(10659, 9420015, 4000420, 1, 1, 0, 700000), +(10660, 9420015, 4000420, 1, 1, 0, 700000), +(10661, 9420015, 4000420, 1, 1, 0, 700000), +(10662, 9420015, 4000420, 1, 1, 0, 700000), +(10663, 9420015, 4000420, 1, 1, 0, 700000), +(10664, 9420015, 4000420, 1, 1, 0, 700000), +(10665, 9420015, 4000420, 1, 1, 0, 700000), +(10666, 9420015, 4000420, 1, 1, 0, 700000), +(10667, 9420015, 4000420, 1, 1, 0, 700000), +(10668, 9420015, 4000420, 1, 1, 0, 700000), +(10669, 9420015, 4000420, 1, 1, 0, 700000), +(10670, 9420015, 4000420, 1, 1, 0, 700000), +(10671, 9420015, 4000420, 1, 1, 0, 700000), +(10672, 9420015, 4000420, 1, 1, 0, 700000), +(10673, 9420015, 4000420, 1, 1, 0, 700000), +(10674, 9420015, 4000420, 1, 1, 0, 700000), +(10675, 9420015, 4000420, 1, 1, 0, 700000), +(10676, 9420015, 4000420, 1, 1, 0, 700000), +(10677, 9420015, 4000420, 1, 1, 0, 700000), +(10678, 9420015, 4000420, 1, 1, 0, 700000), +(10679, 9420015, 4000420, 1, 1, 0, 700000), +(10680, 9420015, 4000420, 1, 1, 0, 700000), +(10681, 9420015, 4000420, 1, 1, 0, 700000), +(10682, 9420015, 4000420, 1, 1, 0, 700000), +(10683, 9420015, 4000420, 1, 1, 0, 700000), +(10684, 9420015, 4000420, 1, 1, 0, 700000), +(10685, 9420015, 4000420, 1, 1, 0, 700000), +(10686, 9420015, 4000420, 1, 1, 0, 700000), +(10687, 9420015, 4000420, 1, 1, 0, 700000), +(10688, 9420015, 4000420, 1, 1, 0, 700000), +(10689, 9420015, 4000420, 1, 1, 0, 700000), +(10690, 9420015, 4000420, 1, 1, 0, 700000), +(10691, 9420015, 4000420, 1, 1, 0, 700000), +(10692, 9420015, 4000420, 1, 1, 0, 700000), +(10693, 9420015, 4000420, 1, 1, 0, 700000), +(10694, 9420015, 4000420, 1, 1, 0, 700000), +(10695, 9420015, 4000420, 1, 1, 0, 700000), +(10696, 9420015, 4000420, 1, 1, 0, 700000), +(10697, 9420015, 4000420, 1, 1, 0, 700000), +(10698, 9420015, 4000420, 1, 1, 0, 700000), +(10699, 9420015, 4000421, 1, 1, 0, 700000), +(10700, 9420015, 4000421, 1, 1, 0, 700000), +(10701, 9420015, 4000421, 1, 1, 0, 700000), +(10702, 9420015, 4000421, 1, 1, 0, 700000), +(10703, 9420015, 4000421, 1, 1, 0, 700000), +(10704, 9420015, 4000421, 1, 1, 0, 700000), +(10705, 9420015, 4000421, 1, 1, 0, 700000), +(10706, 9420015, 4000421, 1, 1, 0, 700000), +(10707, 9420015, 4000421, 1, 1, 0, 700000), +(10708, 9420015, 4000421, 1, 1, 0, 700000), +(10709, 9420015, 4000421, 1, 1, 0, 700000), +(10710, 9420015, 4000421, 1, 1, 0, 700000), +(10711, 9420015, 4000421, 1, 1, 0, 700000), +(10712, 9420015, 4000421, 1, 1, 0, 700000), +(10713, 9420015, 4000421, 1, 1, 0, 700000), +(10714, 9420015, 4000421, 1, 1, 0, 700000), +(10715, 9420015, 4000421, 1, 1, 0, 700000), +(10716, 9420015, 4000421, 1, 1, 0, 700000), +(10717, 9420015, 4000421, 1, 1, 0, 700000), +(10718, 9420015, 4000421, 1, 1, 0, 700000), +(10719, 9420015, 4000421, 1, 1, 0, 700000), +(10720, 9420015, 4000421, 1, 1, 0, 700000), +(10721, 9420015, 4000421, 1, 1, 0, 700000), +(10722, 9420015, 4000421, 1, 1, 0, 700000), +(10723, 9420015, 4000421, 1, 1, 0, 700000), +(10724, 9420015, 4000421, 1, 1, 0, 700000), +(10725, 9420015, 4000421, 1, 1, 0, 700000), +(10726, 9420015, 4000421, 1, 1, 0, 700000), +(10727, 9420015, 4000421, 1, 1, 0, 700000), +(10728, 9420015, 4000421, 1, 1, 0, 700000), +(10729, 9420015, 4000421, 1, 1, 0, 700000), +(10730, 9420015, 4000421, 1, 1, 0, 700000), +(10731, 9420015, 4000421, 1, 1, 0, 700000), +(10732, 9420015, 4000421, 1, 1, 0, 700000), +(10733, 9420015, 4000421, 1, 1, 0, 700000), +(10734, 9420015, 4000421, 1, 1, 0, 700000), +(10735, 9420015, 4000421, 1, 1, 0, 700000), +(10736, 9420015, 4000421, 1, 1, 0, 700000), +(10737, 9420015, 4000421, 1, 1, 0, 700000), +(10738, 9420015, 4000421, 1, 1, 0, 700000), +(10739, 9400569, 2022311, 1, 4, 0, 700000), +(10740, 9400569, 2020017, 1, 4, 0, 700000), +(10741, 9400569, 2020018, 1, 4, 0, 700000), +(10742, 9400569, 2022310, 1, 4, 0, 700000), +(10743, 9400569, 2022456, 1, 4, 0, 700000), +(10744, 9400569, 2020014, 1, 4, 0, 700000), +(10745, 9400569, 2020015, 1, 4, 0, 700000), +(10746, 9400569, 2002001, 1, 4, 0, 700000), +(10747, 9400569, 2002005, 1, 4, 0, 700000), +(10748, 9400569, 2002003, 1, 4, 0, 700000), +(10749, 9400569, 2002205, 1, 4, 0, 700000), +(10750, 9500168, 2022311, 1, 4, 0, 700000), +(10751, 9500168, 2020017, 1, 4, 0, 700000), +(10752, 9500168, 2020018, 1, 4, 0, 700000), +(10753, 9500168, 2022310, 1, 4, 0, 700000), +(10754, 9500168, 2022456, 1, 4, 0, 700000), +(10755, 9500168, 2020014, 1, 4, 0, 700000), +(10756, 9500168, 2020015, 1, 4, 0, 700000), +(10757, 9500168, 2002001, 1, 4, 0, 700000), +(10758, 9500168, 2002005, 1, 4, 0, 700000), +(10759, 9500168, 2002003, 1, 4, 0, 700000), +(10760, 9500168, 2002205, 1, 4, 0, 700000), +(10761, 9500169, 2022311, 1, 4, 0, 700000), +(10762, 9500169, 2020017, 1, 4, 0, 700000), +(10763, 9500169, 2020018, 1, 4, 0, 700000), +(10764, 9500169, 2022310, 1, 4, 0, 700000), +(10765, 9500169, 2022456, 1, 4, 0, 700000), +(10766, 9500169, 2020014, 1, 4, 0, 700000), +(10767, 9500169, 2020015, 1, 4, 0, 700000), +(10768, 9500169, 2002001, 1, 4, 0, 700000), +(10769, 9500169, 2002005, 1, 4, 0, 700000), +(10770, 9500169, 2002003, 1, 4, 0, 700000), +(10771, 9500169, 2002205, 1, 4, 0, 700000), +(10772, 9500170, 2022311, 1, 4, 0, 700000), +(10773, 9500170, 2020017, 1, 4, 0, 700000), +(10774, 9500170, 2020018, 1, 4, 0, 700000), +(10775, 9500170, 2022310, 1, 4, 0, 700000), +(10776, 9500170, 2022456, 1, 4, 0, 700000), +(10777, 9500170, 2020014, 1, 4, 0, 700000), +(10778, 9500170, 2020015, 1, 4, 0, 700000), +(10779, 9500170, 2002001, 1, 4, 0, 700000), +(10780, 9500170, 2002005, 1, 4, 0, 700000), +(10781, 9500170, 2002003, 1, 4, 0, 700000), +(10782, 9500170, 2002205, 1, 4, 0, 700000), +(10783, 9500171, 2022311, 1, 4, 0, 700000), +(10784, 9500171, 2020017, 1, 4, 0, 700000), +(10785, 9500171, 2020018, 1, 4, 0, 700000), +(10786, 9500171, 2022310, 1, 4, 0, 700000), +(10787, 9500171, 2022456, 1, 4, 0, 700000), +(10788, 9500171, 2020014, 1, 4, 0, 700000), +(10789, 9500171, 2020015, 1, 4, 0, 700000), +(10790, 9500171, 2002001, 1, 4, 0, 700000), +(10791, 9500171, 2002005, 1, 4, 0, 700000), +(10792, 9500171, 2002003, 1, 4, 0, 700000), +(10793, 9500171, 2002205, 1, 4, 0, 700000), +(10794, 9500172, 2022311, 1, 4, 0, 700000), +(10795, 9500172, 2020017, 1, 4, 0, 700000), +(10796, 9500172, 2020018, 1, 4, 0, 700000), +(10797, 9500172, 2022310, 1, 4, 0, 700000), +(10798, 9500172, 2022456, 1, 4, 0, 700000), +(10799, 9500172, 2020014, 1, 4, 0, 700000), +(10800, 9500172, 2020015, 1, 4, 0, 700000), +(10801, 9500172, 2002001, 1, 4, 0, 700000), +(10802, 9500172, 2002005, 1, 4, 0, 700000), +(10803, 9500172, 2002003, 1, 4, 0, 700000), +(10804, 9500172, 2002205, 1, 4, 0, 700000), +(10805, 9500173, 2022311, 1, 4, 0, 700000), +(10806, 9500173, 2020017, 1, 4, 0, 700000), +(10807, 9500173, 2020018, 1, 4, 0, 700000), +(10808, 9500173, 2022310, 1, 4, 0, 700000), +(10809, 9500173, 2022456, 1, 4, 0, 700000), +(10810, 9500173, 2020014, 1, 4, 0, 700000), +(10811, 9500173, 2020015, 1, 4, 0, 700000), +(10812, 9500173, 2002001, 1, 4, 0, 700000), +(10813, 9500173, 2002005, 1, 4, 0, 700000), +(10814, 9500173, 2002003, 1, 4, 0, 700000), +(10815, 9500173, 2002205, 1, 4, 0, 700000), +(10816, 9500174, 2022311, 1, 4, 0, 700000), +(10817, 9500174, 2020017, 1, 4, 0, 700000), +(10818, 9500174, 2020018, 1, 4, 0, 700000), +(10819, 9500174, 2022310, 1, 4, 0, 700000), +(10820, 9500174, 2022456, 1, 4, 0, 700000), +(10821, 9500174, 2020014, 1, 4, 0, 700000), +(10822, 9500174, 2020015, 1, 4, 0, 700000), +(10823, 9500174, 2002001, 1, 4, 0, 700000), +(10824, 9500174, 2002005, 1, 4, 0, 700000), +(10825, 9500174, 2002003, 1, 4, 0, 700000), +(10826, 9500174, 2002205, 1, 4, 0, 700000), +(10827, 9500175, 2022311, 1, 4, 0, 700000), +(10828, 9500175, 2020017, 1, 4, 0, 700000), +(10829, 9500175, 2020018, 1, 4, 0, 700000), +(10830, 9500175, 2022310, 1, 4, 0, 700000), +(10831, 9500175, 2022456, 1, 4, 0, 700000), +(10832, 9500175, 2020014, 1, 4, 0, 700000), +(10833, 9500175, 2020015, 1, 4, 0, 700000), +(10834, 9500175, 2002001, 1, 4, 0, 700000), +(10835, 9500175, 2002005, 1, 4, 0, 700000), +(10836, 9500175, 2002003, 1, 4, 0, 700000), +(10837, 9500175, 2002205, 1, 4, 0, 700000), +(10838, 9500176, 2022311, 1, 4, 0, 700000), +(10839, 9500176, 2020017, 1, 4, 0, 700000), +(10840, 9500176, 2020018, 1, 4, 0, 700000), +(10841, 9500176, 2022310, 1, 4, 0, 700000), +(10842, 9500176, 2022456, 1, 4, 0, 700000), +(10843, 9500176, 2020014, 1, 4, 0, 700000), +(10844, 9500176, 2020015, 1, 4, 0, 700000), +(10845, 9500176, 2002001, 1, 4, 0, 700000), +(10846, 9500176, 2002005, 1, 4, 0, 700000), +(10847, 9500176, 2002003, 1, 4, 0, 700000), +(10848, 9500176, 2002205, 1, 4, 0, 700000), +(10849, 9300217, 2022430, 1, 1, 0, 700000), +(10850, 9300217, 2022431, 1, 1, 0, 700000), +(10851, 9300217, 2022432, 1, 1, 0, 700000), +(10852, 9300217, 2022433, 1, 1, 0, 700000), +(10853, 9300218, 2022430, 1, 1, 0, 700000), +(10854, 9300218, 2022431, 1, 1, 0, 700000), +(10855, 9300218, 2022432, 1, 1, 0, 700000), +(10856, 9300218, 2022433, 1, 1, 0, 700000), +(10857, 9300219, 2022430, 1, 1, 0, 700000), +(10858, 9300219, 2022431, 1, 1, 0, 700000), +(10859, 9300219, 2022432, 1, 1, 0, 700000), +(10860, 9300219, 2022433, 1, 1, 0, 700000), +(10861, 9300220, 2022430, 1, 1, 0, 700000), +(10862, 9300220, 2022431, 1, 1, 0, 700000), +(10863, 9300220, 2022432, 1, 1, 0, 700000), +(10864, 9300220, 2022433, 1, 1, 0, 700000), +(10865, 9300221, 2022430, 1, 1, 0, 700000), +(10866, 9300221, 2022431, 1, 1, 0, 700000), +(10867, 9300221, 2022432, 1, 1, 0, 700000), +(10868, 9300221, 2022433, 1, 1, 0, 700000), +(10869, 9300222, 2022430, 1, 1, 0, 700000), +(10870, 9300222, 2022431, 1, 1, 0, 700000), +(10871, 9300222, 2022432, 1, 1, 0, 700000), +(10872, 9300222, 2022433, 1, 1, 0, 700000), +(10873, 9300223, 2022430, 1, 1, 0, 700000), +(10874, 9300223, 2022431, 1, 1, 0, 700000), +(10875, 9300223, 2022432, 1, 1, 0, 700000), +(10876, 9300223, 2022433, 1, 1, 0, 700000), +(10877, 9300224, 2022430, 1, 1, 0, 700000), +(10878, 9300224, 2022431, 1, 1, 0, 700000), +(10879, 9300224, 2022432, 1, 1, 0, 700000), +(10880, 9300224, 2022433, 1, 1, 0, 700000), +(10881, 9300225, 2022430, 1, 1, 0, 700000), +(10882, 9300225, 2022431, 1, 1, 0, 700000), +(10883, 9300225, 2022432, 1, 1, 0, 700000), +(10884, 9300225, 2022433, 1, 1, 0, 700000), +(10885, 9300226, 2022430, 1, 1, 0, 700000), +(10886, 9300226, 2022431, 1, 1, 0, 700000), +(10887, 9300226, 2022432, 1, 1, 0, 700000), +(10888, 9300226, 2022433, 1, 1, 0, 700000), +(10889, 9300227, 2022430, 1, 1, 0, 700000), +(10890, 9300227, 2022431, 1, 1, 0, 700000), +(10891, 9300227, 2022432, 1, 1, 0, 700000), +(10892, 9300227, 2022433, 1, 1, 0, 700000), +(10893, 9300228, 2022430, 1, 1, 0, 700000), +(10894, 9300228, 2022431, 1, 1, 0, 700000), +(10895, 9300228, 2022432, 1, 1, 0, 700000), +(10896, 9300228, 2022433, 1, 1, 0, 700000), +(10897, 9300229, 2022430, 1, 1, 0, 700000), +(10898, 9300229, 2022431, 1, 1, 0, 700000), +(10899, 9300229, 2022432, 1, 1, 0, 700000), +(10900, 9300229, 2022433, 1, 1, 0, 700000), +(10901, 9300230, 2022430, 1, 1, 0, 700000), +(10902, 9300230, 2022431, 1, 1, 0, 700000), +(10903, 9300230, 2022432, 1, 1, 0, 700000), +(10904, 9300230, 2022433, 1, 1, 0, 700000), +(10905, 9300231, 2022430, 1, 1, 0, 700000), +(10906, 9300231, 2022431, 1, 1, 0, 700000), +(10907, 9300231, 2022432, 1, 1, 0, 700000), +(10908, 9300231, 2022433, 1, 1, 0, 700000), +(10909, 9300232, 2022430, 1, 1, 0, 700000), +(10910, 9300232, 2022431, 1, 1, 0, 700000), +(10911, 9300232, 2022432, 1, 1, 0, 700000), +(10912, 9300232, 2022433, 1, 1, 0, 700000), +(10913, 9300233, 2022430, 1, 1, 0, 700000), +(10914, 9300233, 2022431, 1, 1, 0, 700000), +(10915, 9300233, 2022432, 1, 1, 0, 700000), +(10916, 9300233, 2022433, 1, 1, 0, 700000), +(10917, 9300234, 2022430, 1, 1, 0, 700000), +(10918, 9300234, 2022431, 1, 1, 0, 700000), +(10919, 9300234, 2022432, 1, 1, 0, 700000), +(10920, 9300234, 2022433, 1, 1, 0, 700000), +(10921, 9300235, 2022430, 1, 1, 0, 700000), +(10922, 9300235, 2022431, 1, 1, 0, 700000), +(10923, 9300235, 2022432, 1, 1, 0, 700000), +(10924, 9300235, 2022433, 1, 1, 0, 700000), +(10925, 9300236, 2022430, 1, 1, 0, 700000), +(10926, 9300236, 2022431, 1, 1, 0, 700000), +(10927, 9300236, 2022432, 1, 1, 0, 700000), +(10928, 9300236, 2022433, 1, 1, 0, 700000), +(10929, 9300237, 2022430, 1, 1, 0, 700000), +(10930, 9300237, 2022431, 1, 1, 0, 700000), +(10931, 9300237, 2022432, 1, 1, 0, 700000), +(10932, 9300237, 2022433, 1, 1, 0, 700000), +(10933, 9300238, 2022430, 1, 1, 0, 700000), +(10934, 9300238, 2022431, 1, 1, 0, 700000), +(10935, 9300238, 2022432, 1, 1, 0, 700000), +(10936, 9300238, 2022433, 1, 1, 0, 700000), +(10937, 9300239, 2022430, 1, 1, 0, 700000), +(10938, 9300239, 2022431, 1, 1, 0, 700000), +(10939, 9300239, 2022432, 1, 1, 0, 700000), +(10940, 9300239, 2022433, 1, 1, 0, 700000), +(10941, 9300240, 2022430, 1, 1, 0, 700000), +(10942, 9300240, 2022431, 1, 1, 0, 700000), +(10943, 9300240, 2022432, 1, 1, 0, 700000), +(10944, 9300240, 2022433, 1, 1, 0, 700000), +(10945, 9300241, 2022430, 1, 1, 0, 700000), +(10946, 9300241, 2022431, 1, 1, 0, 700000), +(10947, 9300241, 2022432, 1, 1, 0, 700000), +(10948, 9300241, 2022433, 1, 1, 0, 700000), +(10949, 9300242, 2022430, 1, 1, 0, 700000), +(10950, 9300242, 2022431, 1, 1, 0, 700000), +(10951, 9300242, 2022432, 1, 1, 0, 700000), +(10952, 9300242, 2022433, 1, 1, 0, 700000), +(10953, 9300243, 2022430, 1, 1, 0, 700000), +(10954, 9300243, 2022431, 1, 1, 0, 700000), +(10955, 9300243, 2022432, 1, 1, 0, 700000), +(10956, 9300243, 2022433, 1, 1, 0, 700000), +(10957, 9300244, 2022430, 1, 1, 0, 700000), +(10958, 9300244, 2022431, 1, 1, 0, 700000), +(10959, 9300244, 2022432, 1, 1, 0, 700000), +(10960, 9300244, 2022433, 1, 1, 0, 700000), +(10961, 9300245, 2022430, 1, 1, 0, 700000), +(10962, 9300245, 2022431, 1, 1, 0, 700000), +(10963, 9300245, 2022432, 1, 1, 0, 700000), +(10964, 9300245, 2022433, 1, 1, 0, 700000), +(10965, 9300246, 2022430, 1, 1, 0, 700000), +(10966, 9300246, 2022431, 1, 1, 0, 700000), +(10967, 9300246, 2022432, 1, 1, 0, 700000), +(10968, 9300246, 2022433, 1, 1, 0, 700000), +(10969, 9300247, 2022430, 1, 1, 0, 700000), +(10970, 9300247, 2022431, 1, 1, 0, 700000), +(10971, 9300247, 2022432, 1, 1, 0, 700000), +(10972, 9300247, 2022433, 1, 1, 0, 700000), +(10973, 9300248, 2022430, 1, 1, 0, 700000), +(10974, 9300248, 2022431, 1, 1, 0, 700000), +(10975, 9300248, 2022432, 1, 1, 0, 700000), +(10976, 9300248, 2022433, 1, 1, 0, 700000), +(10977, 9300249, 2022430, 1, 1, 0, 700000), +(10978, 9300249, 2022431, 1, 1, 0, 700000), +(10979, 9300249, 2022432, 1, 1, 0, 700000), +(10980, 9300249, 2022433, 1, 1, 0, 700000), +(10981, 9300250, 2022430, 1, 1, 0, 700000), +(10982, 9300250, 2022431, 1, 1, 0, 700000), +(10983, 9300250, 2022432, 1, 1, 0, 700000), +(10984, 9300250, 2022433, 1, 1, 0, 700000), +(10985, 9300251, 2022430, 1, 1, 0, 700000), +(10986, 9300251, 2022431, 1, 1, 0, 700000), +(10987, 9300251, 2022432, 1, 1, 0, 700000), +(10988, 9300251, 2022433, 1, 1, 0, 700000), +(10989, 9300252, 2022430, 1, 1, 0, 700000), +(10990, 9300252, 2022431, 1, 1, 0, 700000), +(10991, 9300252, 2022432, 1, 1, 0, 700000), +(10992, 9300252, 2022433, 1, 1, 0, 700000), +(10993, 9300253, 2022430, 1, 1, 0, 700000), +(10994, 9300253, 2022431, 1, 1, 0, 700000), +(10995, 9300253, 2022432, 1, 1, 0, 700000), +(10996, 9300253, 2022433, 1, 1, 0, 700000), +(10997, 9300254, 2022430, 1, 1, 0, 700000), +(10998, 9300254, 2022431, 1, 1, 0, 700000), +(10999, 9300254, 2022432, 1, 1, 0, 700000), +(11000, 9300254, 2022433, 1, 1, 0, 700000), +(11001, 9300255, 2022430, 1, 1, 0, 700000), +(11002, 9300255, 2022431, 1, 1, 0, 700000), +(11003, 9300255, 2022432, 1, 1, 0, 700000), +(11004, 9300255, 2022433, 1, 1, 0, 700000), +(11005, 9300256, 2022430, 1, 1, 0, 700000), +(11006, 9300256, 2022431, 1, 1, 0, 700000), +(11007, 9300256, 2022432, 1, 1, 0, 700000), +(11008, 9300256, 2022433, 1, 1, 0, 700000), +(11009, 9300257, 2022430, 1, 1, 0, 700000), +(11010, 9300257, 2022431, 1, 1, 0, 700000), +(11011, 9300257, 2022432, 1, 1, 0, 700000), +(11012, 9300257, 2022433, 1, 1, 0, 700000), +(11013, 9300258, 2022430, 1, 1, 0, 700000), +(11014, 9300258, 2022431, 1, 1, 0, 700000), +(11015, 9300258, 2022432, 1, 1, 0, 700000), +(11016, 9300258, 2022433, 1, 1, 0, 700000), +(11017, 9300259, 2022430, 1, 1, 0, 700000), +(11018, 9300259, 2022431, 1, 1, 0, 700000), +(11019, 9300259, 2022432, 1, 1, 0, 700000), +(11020, 9300259, 2022433, 1, 1, 0, 700000), +(11021, 9300260, 2022430, 1, 1, 0, 700000), +(11022, 9300260, 2022431, 1, 1, 0, 700000), +(11023, 9300260, 2022432, 1, 1, 0, 700000), +(11024, 9300260, 2022433, 1, 1, 0, 700000), +(11025, 9300261, 2022430, 1, 1, 0, 700000), +(11026, 9300261, 2022431, 1, 1, 0, 700000), +(11027, 9300261, 2022432, 1, 1, 0, 700000), +(11028, 9300261, 2022433, 1, 1, 0, 700000), +(11029, 9300262, 2022430, 1, 1, 0, 700000), +(11030, 9300262, 2022431, 1, 1, 0, 700000), +(11031, 9300262, 2022432, 1, 1, 0, 700000), +(11032, 9300262, 2022433, 1, 1, 0, 700000), +(11033, 9300263, 2022430, 1, 1, 0, 700000), +(11034, 9300263, 2022431, 1, 1, 0, 700000), +(11035, 9300263, 2022432, 1, 1, 0, 700000), +(11036, 9300263, 2022433, 1, 1, 0, 700000), +(11037, 9300264, 2022430, 1, 1, 0, 700000), +(11038, 9300264, 2022431, 1, 1, 0, 700000), +(11039, 9300264, 2022432, 1, 1, 0, 700000), +(11040, 9300264, 2022433, 1, 1, 0, 700000), +(11041, 9300265, 2022430, 1, 1, 0, 700000), +(11042, 9300265, 2022431, 1, 1, 0, 700000), +(11043, 9300265, 2022432, 1, 1, 0, 700000), +(11044, 9300265, 2022433, 1, 1, 0, 700000), +(11045, 9300266, 2022430, 1, 1, 0, 700000), +(11046, 9300266, 2022431, 1, 1, 0, 700000), +(11047, 9300266, 2022432, 1, 1, 0, 700000), +(11048, 9300266, 2022433, 1, 1, 0, 700000), +(11049, 9300267, 2022430, 1, 1, 0, 700000), +(11050, 9300267, 2022431, 1, 1, 0, 700000), +(11051, 9300267, 2022432, 1, 1, 0, 700000), +(11052, 9300267, 2022433, 1, 1, 0, 700000), +(11053, 9300270, 2022430, 1, 1, 0, 700000), +(11054, 9300270, 2022431, 1, 1, 0, 700000), +(11055, 9300270, 2022432, 1, 1, 0, 700000), +(11056, 9300270, 2022433, 1, 1, 0, 700000), +(11057, 8140500, 4007007, 1, 1, 0, 10000), +(11058, 4230502, 4007007, 1, 1, 0, 10000), +(11059, 3210205, 4007007, 1, 1, 0, 10000), +(11060, 8200012, 4007007, 1, 1, 0, 10000), +(11061, 8150200, 4007007, 1, 1, 0, 10000), +(11062, 5120003, 4007007, 1, 1, 0, 10000), +(11063, 5130104, 4007007, 1, 1, 0, 10000), +(11064, 6110300, 4007007, 1, 1, 0, 10000), +(11065, 7130000, 4007007, 1, 1, 0, 10000), +(11066, 4230119, 4007007, 1, 1, 0, 10000), +(11067, 6130204, 4007007, 1, 1, 0, 10000), +(11068, 3110102, 4007007, 1, 1, 0, 10000), +(11069, 8142100, 4007007, 1, 1, 0, 10000), +(11070, 8190003, 4007007, 1, 1, 0, 10000), +(11071, 5120506, 4007007, 1, 1, 0, 10000), +(11072, 4230118, 4007007, 1, 1, 0, 10000), +(11073, 4230101, 4007007, 1, 1, 0, 10000), +(11074, 7130104, 4007002, 1, 1, 0, 10000), +(11075, 3230400, 4007002, 1, 1, 0, 10000), +(11076, 5300001, 4007002, 1, 1, 0, 10000), +(11077, 4230124, 4007002, 1, 1, 0, 10000), +(11078, 7140000, 4007002, 1, 1, 0, 10000), +(11079, 8143000, 4007002, 1, 1, 0, 10000), +(11080, 4110300, 4007002, 1, 1, 0, 10000), +(11081, 5100000, 4007002, 1, 1, 0, 10000), +(11082, 4230106, 4007002, 1, 1, 0, 10000), +(11083, 4230115, 4007002, 1, 1, 0, 10000), +(11084, 6230500, 4007002, 1, 1, 0, 10000), +(11085, 9400011, 4007002, 1, 1, 0, 10000), +(11086, 3210208, 4007002, 1, 1, 0, 10000), +(11087, 6110301, 4007002, 1, 1, 0, 10000), +(11088, 8141000, 4007002, 1, 1, 0, 10000), +(11089, 8190003, 4007002, 1, 1, 0, 10000), +(11090, 5120506, 4007002, 1, 1, 0, 10000), +(11091, 4230101, 4007002, 1, 1, 0, 10000), +(11092, 3230306, 4007000, 1, 1, 0, 10000), +(11093, 5130103, 4007000, 1, 1, 0, 10000), +(11094, 3110300, 4007000, 1, 1, 0, 10000), +(11095, 4230600, 4007000, 1, 1, 0, 10000), +(11096, 8150200, 4007000, 1, 1, 0, 10000), +(11097, 7110301, 4007000, 1, 1, 0, 10000), +(11098, 3210200, 4007000, 1, 1, 0, 10000), +(11099, 8190000, 4007000, 1, 1, 0, 10000), +(11100, 5400000, 4007000, 1, 1, 0, 10000), +(11101, 3230101, 4007000, 1, 1, 0, 10000), +(11102, 5100000, 4007000, 1, 1, 0, 10000), +(11103, 4230115, 4007000, 1, 1, 0, 10000), +(11104, 5110302, 4007000, 1, 1, 0, 10000), +(11105, 4230114, 4007000, 1, 1, 0, 10000), +(11106, 4110301, 4007000, 1, 1, 0, 10000), +(11107, 8142100, 4007000, 1, 1, 0, 10000), +(11108, 5110301, 4007000, 1, 1, 0, 10000), +(11109, 5100004, 4007000, 1, 1, 0, 10000), +(11110, 6110301, 4007000, 1, 1, 0, 10000), +(11111, 8190003, 4007000, 1, 1, 0, 10000), +(11112, 6230400, 4007000, 1, 1, 0, 10000), +(11113, 3230200, 4007000, 1, 1, 0, 10000), +(11114, 5130101, 4007000, 1, 1, 0, 10000), +(11115, 5120503, 4007000, 1, 1, 0, 10000), +(11116, 5120504, 4007000, 1, 1, 0, 10000), +(11117, 4230102, 4007000, 1, 1, 0, 10000), +(11118, 4230101, 4007000, 1, 1, 0, 10000), +(11119, 3210100, 4007003, 1, 1, 0, 10000), +(11120, 5120001, 4007003, 1, 1, 0, 10000), +(11121, 3230101, 4007003, 1, 1, 0, 10000), +(11122, 3110302, 4007003, 1, 1, 0, 10000), +(11123, 4230101, 4007003, 1, 1, 0, 10000), +(11124, 4230119, 4007003, 1, 1, 0, 10000), +(11125, 4250000, 4007003, 1, 1, 0, 10000), +(11126, 4230102, 4007003, 1, 1, 0, 10000), +(11127, 5110302, 4007003, 1, 1, 0, 10000), +(11128, 9400012, 4007003, 1, 1, 0, 10000), +(11129, 8140110, 4007003, 1, 1, 0, 10000), +(11130, 8150201, 4007003, 1, 1, 0, 10000), +(11131, 8190003, 4007003, 1, 1, 0, 10000), +(11132, 3110100, 4007005, 1, 1, 0, 10000), +(11133, 3210205, 4007005, 1, 1, 0, 10000), +(11134, 5400000, 4007005, 1, 1, 0, 10000), +(11135, 3230306, 4007005, 1, 1, 0, 10000), +(11136, 4230101, 4007005, 1, 1, 0, 10000), +(11137, 4230107, 4007005, 1, 1, 0, 10000), +(11138, 4250000, 4007005, 1, 1, 0, 10000), +(11139, 4110301, 4007005, 1, 1, 0, 10000), +(11140, 5130107, 4007005, 1, 1, 0, 10000), +(11141, 6110300, 4007005, 1, 1, 0, 10000), +(11142, 8200003, 4007005, 1, 1, 0, 10000), +(11143, 8190000, 4007005, 1, 1, 0, 10000), +(11144, 3110300, 4007006, 1, 1, 0, 10000), +(11145, 5400000, 4007006, 1, 1, 0, 10000), +(11146, 3210200, 4007006, 1, 1, 0, 10000), +(11147, 4230101, 4007006, 1, 1, 0, 10000), +(11148, 4110302, 4007006, 1, 1, 0, 10000), +(11149, 4110301, 4007006, 1, 1, 0, 10000), +(11150, 4230115, 4007006, 1, 1, 0, 10000), +(11151, 4230102, 4007006, 1, 1, 0, 10000), +(11152, 4230600, 4007006, 1, 1, 0, 10000), +(11153, 5120504, 4007006, 1, 1, 0, 10000), +(11154, 5130103, 4007006, 1, 1, 0, 10000), +(11155, 5110301, 4007006, 1, 1, 0, 10000), +(11156, 5130101, 4007006, 1, 1, 0, 10000), +(11157, 5100004, 4007006, 1, 1, 0, 10000), +(11158, 5110302, 4007006, 1, 1, 0, 10000), +(11159, 8142100, 4007006, 1, 1, 0, 10000), +(11160, 8200001, 4007006, 1, 1, 0, 10000), +(11161, 3210100, 4007001, 1, 1, 0, 10000), +(11162, 2230102, 4007001, 1, 1, 0, 10000), +(11163, 3110102, 4007001, 1, 1, 0, 10000), +(11164, 3210200, 4007001, 1, 1, 0, 10000), +(11165, 4230200, 4007001, 1, 1, 0, 10000), +(11166, 4230101, 4007001, 1, 1, 0, 10000), +(11167, 4230105, 4007001, 1, 1, 0, 10000), +(11168, 4230122, 4007001, 1, 1, 0, 10000), +(11169, 4110302, 4007001, 1, 1, 0, 10000), +(11170, 5100000, 4007001, 1, 1, 0, 10000), +(11171, 5130103, 4007001, 1, 1, 0, 10000), +(11172, 5120001, 4007001, 1, 1, 0, 10000), +(11173, 5120003, 4007001, 1, 1, 0, 10000), +(11174, 5130101, 4007001, 1, 1, 0, 10000), +(11175, 6130209, 4007001, 1, 1, 0, 10000), +(11176, 7110301, 4007001, 1, 1, 0, 10000), +(11177, 8200000, 4007001, 1, 1, 0, 10000), +(11178, 8140110, 4007001, 1, 1, 0, 10000), +(11179, 7160000, 4007001, 1, 1, 0, 10000), +(11180, 8140101, 4007001, 1, 1, 0, 10000), +(11181, 8140500, 4007001, 1, 1, 0, 10000), +(11182, 8141300, 4007001, 1, 1, 0, 10000), +(11183, 8200003, 4007001, 1, 1, 0, 10000), +(11184, 8190002, 4007001, 1, 1, 0, 10000), +(11185, 8190005, 4007001, 1, 1, 0, 10000), +(11186, 8200012, 4007001, 1, 1, 0, 10000), +(11187, 4110300, 4007004, 1, 1, 0, 10000), +(11188, 3230400, 4007004, 1, 1, 0, 10000), +(11189, 3110300, 4007004, 1, 1, 0, 10000), +(11190, 5300001, 4007004, 1, 1, 0, 10000), +(11191, 3210208, 4007004, 1, 1, 0, 10000), +(11192, 3210450, 4007004, 1, 1, 0, 10000), +(11193, 4230113, 4007004, 1, 1, 0, 10000), +(11194, 4230101, 4007004, 1, 1, 0, 10000), +(11195, 4230119, 4007004, 1, 1, 0, 10000), +(11196, 4230600, 4007004, 1, 1, 0, 10000), +(11197, 5120503, 4007004, 1, 1, 0, 10000), +(11198, 5130107, 4007004, 1, 1, 0, 10000), +(11199, 6130103, 4007004, 1, 1, 0, 10000), +(11200, 6130208, 4007004, 1, 1, 0, 10000), +(11201, 8190003, 4007004, 1, 1, 0, 10000), +(11202, 8200009, 4007004, 1, 1, 0, 10000), +(11203, 8200011, 4007004, 1, 1, 0, 10000), +(11204, 8200001, 4007004, 1, 1, 0, 10000), +(11205, 9420003, 4007004, 1, 1, 0, 10000), +(11206, 4130104, 4000062, 1, 1, 0, 10000), +(11207, 4230122, 4000058, 1, 1, 0, 10000), +(11208, 9001000, 4031059, 1, 1, 0, 999999), +(11209, 9001001, 4031059, 1, 1, 0, 999999), +(11210, 9001002, 4031059, 1, 1, 0, 999999), +(11211, 9001003, 4031059, 1, 1, 0, 999999), +(11212, 9001008, 4031059, 1, 1, 0, 499999), +(11213, 9001005, 4031013, 1, 1, 0, 300000), +(11214, 9001012, 4032311, 1, 1, 0, 300000), +(11215, 9001012, 4032311, 1, 1, 0, 300000), +(11216, 9001013, 4032312, 1, 1, 0, 999999), +(11217, 9001013, 4032339, 1, 1, 0, 999999), +(11219, 4230113, 1452016, 1, 1, 0, 700), +(11220, 4230103, 1452016, 1, 1, 0, 700), +(11221, 2230102, 1452016, 1, 1, 0, 700), +(11222, 6230100, 1452016, 1, 1, 0, 700), +(11223, 2110200, 1452016, 1, 1, 0, 700), +(11224, 2230104, 1452016, 1, 1, 0, 700), +(11225, 9400570, 1452016, 1, 1, 0, 700), +(11226, 4230106, 1452016, 1, 1, 0, 700), +(11227, 5120502, 1452016, 1, 1, 0, 700), +(11228, 3230400, 1452022, 1, 1, 0, 700), +(11229, 2230102, 1452022, 1, 1, 0, 700), +(11230, 6130100, 1452022, 1, 1, 0, 700), +(11231, 4230103, 1452022, 1, 1, 0, 700), +(11232, 5130100, 1452022, 1, 1, 0, 700), +(11233, 9400570, 1452022, 1, 1, 0, 700), +(11234, 3210208, 1452022, 1, 1, 0, 700), +(11235, 6130204, 1452022, 1, 1, 0, 700), +(11236, 7130103, 1452022, 1, 1, 0, 700), +(11237, 8140000, 1452022, 1, 1, 0, 700), +(11238, 5200000, 1452022, 1, 1, 0, 700), +(11239, 2100104, 1452022, 1, 1, 0, 700), +(11240, 3210800, 1452022, 1, 1, 0, 700), +(11241, 4230121, 1452022, 1, 1, 0, 700), +(11242, 4230101, 1472030, 1, 1, 0, 700), +(11243, 4230102, 1472030, 1, 1, 0, 700), +(11244, 7130100, 1472030, 1, 1, 0, 700), +(11245, 2230101, 1472030, 1, 1, 0, 700), +(11246, 3210200, 1472030, 1, 1, 0, 700), +(11247, 7130200, 1472030, 1, 1, 0, 700), +(11248, 9400570, 1472030, 1, 1, 0, 700), +(11249, 2230110, 1472030, 1, 1, 0, 700), +(11250, 5200001, 1472030, 1, 1, 0, 700), +(11251, 3110303, 1472030, 1, 1, 0, 700), +(11252, 4130101, 1472030, 1, 1, 0, 700), +(11253, 5120506, 1472030, 1, 1, 0, 700), +(11254, 1130100, 1472032, 1, 1, 0, 700), +(11255, 4230111, 1472032, 1, 1, 0, 700), +(11256, 4230112, 1472032, 1, 1, 0, 700), +(11257, 7130102, 1472032, 1, 1, 0, 700), +(11258, 3210100, 1472032, 1, 1, 0, 700), +(11259, 2230102, 1472032, 1, 1, 0, 700), +(11260, 4130100, 1472032, 1, 1, 0, 700), +(11261, 9400570, 1472032, 1, 1, 0, 700), +(11262, 3230306, 1472032, 1, 1, 0, 700), +(11263, 6130203, 1472032, 1, 1, 0, 700), +(11264, 7130000, 1472032, 1, 1, 0, 700), +(11265, 8140002, 1472032, 1, 1, 0, 700), +(11266, 3230200, 1462014, 1, 1, 0, 700), +(11267, 4230109, 1462014, 1, 1, 0, 700), +(11268, 2230102, 1462014, 1, 1, 0, 700), +(11269, 9400570, 1462014, 1, 1, 0, 700), +(11270, 5300100, 1462019, 1, 1, 0, 700), +(11271, 4230109, 1462019, 1, 1, 0, 700), +(11272, 4230110, 1462019, 1, 1, 0, 700), +(11273, 9400570, 1462019, 1, 1, 0, 700), +(11274, 5400000, 1462019, 1, 1, 0, 700), +(11275, 4230505, 1462019, 1, 1, 0, 700), +(11276, 6230602, 1462019, 1, 1, 0, 700), +(11277, 7110301, 1462019, 1, 1, 0, 700), +(11278, 7140000, 1462019, 1, 1, 0, 700), +(11279, 2230102, 1332025, 1, 1, 0, 700), +(11280, 8140500, 1332025, 1, 1, 0, 700), +(11281, 2230103, 1332025, 1, 1, 0, 700), +(11282, 4230101, 1332025, 1, 1, 0, 700), +(11283, 9400570, 1332025, 1, 1, 0, 700), +(11284, 3100101, 1332025, 1, 1, 0, 700), +(11285, 4230117, 1332025, 1, 1, 0, 700), +(11286, 5110302, 1332025, 1, 1, 0, 700), +(11287, 7130500, 1332025, 1, 1, 0, 700), +(11288, 7130200, 1332025, 1, 1, 0, 700), +(11289, 9400570, 1302020, 1, 1, 0, 700), +(11652, 6110300, 1382039, 1, 1, 0, 750), +(11651, 5100002, 1382039, 1, 1, 0, 750), +(11650, 6230300, 1332056, 1, 1, 0, 750), +(11649, 5120505, 1332056, 1, 1, 0, 750), +(11648, 5120502, 1332056, 1, 1, 0, 750), +(11647, 5110302, 1332056, 1, 1, 0, 750), +(11646, 5100005, 1332056, 1, 1, 0, 750), +(11297, 9400512, 1302030, 1, 1, 0, 700), +(11298, 3000005, 1302030, 1, 1, 0, 700), +(11299, 4230102, 1302030, 1, 1, 0, 700), +(11300, 9400570, 1302030, 1, 1, 0, 700), +(11301, 3110102, 1302030, 1, 1, 0, 700), +(11302, 4230124, 1302030, 1, 1, 0, 700), +(11303, 5150001, 1302030, 1, 1, 0, 700), +(11304, 6400000, 1302030, 1, 1, 0, 700), +(11305, 4230105, 1442024, 1, 1, 0, 700), +(11306, 3110100, 1442024, 1, 1, 0, 700), +(11307, 8110300, 1442024, 1, 1, 0, 700), +(11308, 9400570, 1442024, 1, 1, 0, 700), +(11309, 3230100, 1442024, 1, 1, 0, 700), +(11310, 4230300, 1442024, 1, 1, 0, 700), +(11311, 6130207, 1442024, 1, 1, 0, 700), +(11312, 7130002, 1442024, 1, 1, 0, 700), +(11313, 3230305, 1432012, 1, 1, 0, 700), +(11314, 6230300, 1432012, 1, 1, 0, 700), +(11315, 2230102, 1432012, 1, 1, 0, 700), +(11316, 9400570, 1432012, 1, 1, 0, 700), +(11317, 3230200, 1432012, 1, 1, 0, 700), +(11318, 4230118, 1432012, 1, 1, 0, 700), +(11319, 6130202, 1432012, 1, 1, 0, 700), +(11320, 6110300, 1432012, 1, 1, 0, 700), +(11321, 7130004, 1432012, 1, 1, 0, 700), +(11322, 7130300, 1382009, 1, 1, 0, 700), +(11323, 3000000, 1382009, 1, 1, 0, 700), +(11324, 3110100, 1382009, 1, 1, 0, 700), +(11325, 9400570, 1382009, 1, 1, 0, 700), +(11326, 2230103, 1382009, 1, 1, 0, 700), +(11327, 2100107, 1382009, 1, 1, 0, 700), +(11328, 3210100, 1382009, 1, 1, 0, 700), +(11329, 4230502, 1382009, 1, 1, 0, 700), +(11804, 9420530, 1482007, 1, 1, 0, 333333), +(11803, 9420530, 1002166, 1, 1, 0, 2000), +(11802, 9420530, 1002212, 1, 1, 0, 2000), +(11801, 9420530, 1032012, 1, 1, 0, 1800), +(11800, 9420530, 1060080, 1, 1, 0, 2000), +(11799, 9420530, 1040091, 1, 1, 0, 2000), +(11798, 9420530, 1051010, 1, 1, 0, 1800), +(11797, 9420530, 1051006, 1, 1, 0, 1800), +(11796, 9420530, 1082028, 1, 1, 0, 2000), +(11795, 9420530, 1092008, 1, 1, 0, 1800), +(11774, 9420534, 1082104, 1, 1, 0, 2000), +(11773, 9420534, 1072041, 1, 1, 0, 2000), +(11772, 9420534, 1061102, 1, 1, 0, 2000), +(11771, 9420534, 1041103, 1, 1, 0, 2000), +(11770, 9420534, 1050068, 1, 1, 0, 1800), +(11769, 9420534, 1050067, 1, 1, 0, 1800), +(11768, 9420534, 1061077, 1, 1, 0, 2000), +(11767, 9420534, 1032011, 1, 1, 0, 1800), +(11766, 9420534, 1472016, 1, 1, 0, 1300), +(11765, 9420534, 1442037, 1, 1, 0, 1800), +(11764, 9420534, 2044701, 1, 1, 0, 1000), +(11763, 9420534, 4130013, 1, 1, 0, 5000), +(11762, 9420534, 4004004, 1, 1, 0, 5000), +(11761, 9420534, 4010002, 1, 1, 0, 300), +(11746, 9420536, 1051079, 1, 1, 0, 1800), +(11745, 9420536, 1050082, 1, 1, 0, 1800), +(11744, 9420536, 1050064, 1, 1, 0, 1800), +(11743, 9420536, 1051065, 1, 1, 0, 1800), +(11742, 9420536, 1051058, 1, 1, 0, 1800), +(11741, 9420536, 1050074, 1, 1, 0, 1800), +(11740, 9420536, 1092016, 1, 1, 0, 1800), +(11739, 9420536, 1072154, 1, 1, 0, 2000), +(11738, 9420536, 1072167, 1, 1, 0, 2000), +(11737, 9420536, 1082105, 1, 1, 0, 2000), +(11736, 9420536, 1082097, 1, 1, 0, 2000), +(11735, 9420536, 1382007, 1, 1, 0, 1800), +(11722, 5130102, 1322054, 1, 1, 0, 750), +(11721, 5110302, 1322054, 1, 1, 0, 750), +(11720, 5250002, 1422029, 1, 1, 0, 750), +(11719, 6230500, 1422029, 1, 1, 0, 750), +(11718, 6130209, 1422029, 1, 1, 0, 750), +(11717, 5030107, 1422029, 1, 1, 0, 750), +(11716, 5130105, 1422029, 1, 1, 0, 750), +(11715, 6110301, 1312032, 1, 1, 0, 750), +(11714, 5300100, 1312032, 1, 1, 0, 750), +(11713, 5120506, 1312032, 1, 1, 0, 750), +(11712, 5120002, 1312032, 1, 1, 0, 750), +(11711, 5110301, 1312032, 1, 1, 0, 750), +(11698, 5250002, 1092046, 1, 1, 0, 750), +(11697, 6300000, 1092046, 1, 1, 0, 750), +(11696, 5130104, 1092046, 1, 1, 0, 750), +(11695, 6130209, 1092045, 1, 1, 0, 750), +(11690, 6130209, 1432040, 1, 1, 0, 750), +(11689, 6110300, 1432040, 1, 1, 0, 750), +(11688, 5130104, 1432040, 1, 1, 0, 750), +(11687, 5120100, 1432040, 1, 1, 0, 750), +(11686, 5120001, 1432040, 1, 1, 0, 750), +(11685, 6300000, 1402039, 1, 1, 0, 750), +(11684, 6130200, 1402039, 1, 1, 0, 750), +(11683, 5150000, 1402039, 1, 1, 0, 750), +(11682, 5120506, 1402039, 1, 1, 0, 750), +(11672, 5120502, 1442051, 1, 1, 0, 750), +(11671, 5110302, 1442051, 1, 1, 0, 750), +(11670, 6230601, 1482022, 1, 1, 0, 750), +(11669, 6230401, 1482022, 1, 1, 0, 750), +(11668, 5130104, 1482022, 1, 1, 0, 750), +(11667, 5120003, 1482022, 1, 1, 0, 750), +(11666, 5100002, 1482022, 1, 1, 0, 750), +(11665, 7130500, 1492022, 1, 1, 0, 750), +(11664, 7130402, 1492022, 1, 1, 0, 1250), +(11663, 6300002, 1492022, 1, 1, 0, 750), +(11645, 6230600, 1332055, 1, 1, 0, 750), +(11644, 6230400, 1332055, 1, 1, 0, 750), +(11643, 6130204, 1332055, 1, 1, 0, 750), +(11642, 6110300, 1332055, 1, 1, 0, 750), +(11641, 5150001, 1332055, 1, 1, 0, 750), +(11640, 6230601, 1462040, 1, 1, 0, 750), +(11639, 6130209, 1462040, 1, 1, 0, 750), +(11638, 5140000, 1462040, 1, 1, 0, 750), +(11629, 6220001, 1472055, 1, 1, 0, 1250), +(11628, 6220000, 1472055, 1, 1, 0, 1250), +(11627, 5120500, 1472055, 1, 1, 0, 750), +(11626, 5120000, 1472055, 1, 1, 0, 750), +(11625, 9001006, 4031013, 1, 1, 0, 400000), +(11624, 8190003, 4031461, 1, 1, 6169, 1000), +(11623, 9400218, 4001106, 25, 50, 0, 999999), +(11622, 9400217, 4001106, 1, 3, 0, 999999), +(11613, 2110200, 4032390, 1, 1, 2248, 100000), +(11612, 8140200, 1382012, 1, 1, 0, 700), +(11611, 7130600, 1382012, 1, 1, 0, 700), +(11610, 5100004, 1382012, 1, 1, 0, 700), +(11609, 4230123, 1382012, 1, 1, 0, 700), +(11608, 5300001, 1382012, 1, 1, 0, 700), +(11607, 9400570, 1382012, 1, 1, 0, 700), +(11606, 2110200, 1382012, 1, 1, 0, 700), +(11597, 6300001, 1492021, 1, 1, 0, 700), +(11596, 3230102, 1492021, 1, 1, 0, 700), +(11595, 3000006, 1492021, 1, 1, 0, 700), +(11594, 5130101, 1492020, 1, 1, 0, 700), +(11593, 5200002, 1492020, 1, 1, 0, 700), +(11592, 1140100, 1492020, 1, 1, 0, 700), +(11591, 7160000, 1482021, 1, 1, 0, 700), +(11590, 7130501, 1482021, 1, 1, 0, 700), +(11589, 6130208, 1482021, 1, 1, 0, 700), +(11579, 4230503, 1422014, 1, 1, 0, 700), +(11578, 3230302, 1422014, 1, 1, 0, 700), +(11577, 9400570, 1422014, 1, 1, 0, 700), +(11576, 7130001, 1422014, 1, 1, 0, 700), +(11575, 7130000, 1422014, 1, 1, 0, 700), +(11574, 3000005, 1422014, 1, 1, 0, 700), +(11573, 5130100, 1422014, 1, 1, 0, 700), +(11572, 7130100, 1422014, 1, 1, 0, 700), +(11794, 9420530, 1472013, 1, 1, 0, 1300), +(11793, 9420530, 1462007, 1, 1, 0, 1500), +(11792, 9420530, 1452007, 1, 1, 0, 1500), +(11791, 9420530, 1432004, 1, 1, 0, 1500), +(11790, 9420530, 1382019, 1, 1, 0, 1800), +(11789, 9420530, 2041002, 1, 1, 0, 1000), +(11788, 9420530, 2040901, 1, 1, 0, 1000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(11787, 9420530, 2020014, 1, 1, 0, 10000), +(11786, 9420530, 400006, 1, 1, 0, 333333), +(11785, 9420530, 400002, 1, 1, 0, 10000), +(11760, 9420534, 4020008, 1, 1, 0, 300), +(11759, 9420534, 4006000, 1, 1, 0, 5000), +(11758, 9420534, 400004, 1, 1, 0, 333333), +(11757, 9420534, 400002, 1, 1, 0, 10000), +(11756, 9420534, 4000472, 1, 1, 0, 300000), +(11755, 9420536, 2332000, 1, 1, 0, 500), +(11754, 9420536, 2330004, 1, 1, 0, 500), +(11753, 9420536, 1482009, 1, 1, 0, 2000), +(11752, 9420536, 1082204, 1, 1, 0, 2000), +(11751, 9420536, 1072309, 1, 1, 0, 2000), +(11750, 9420536, 1002095, 1, 1, 0, 2000), +(11749, 9420536, 1002273, 1, 1, 0, 2000), +(11748, 9420536, 1002278, 1, 1, 0, 2000), +(11747, 9420536, 1032021, 1, 1, 0, 1800), +(11734, 9420536, 1332019, 1, 1, 0, 1500), +(11733, 9420536, 1462011, 1, 1, 0, 1500), +(11732, 9420536, 1452011, 1, 1, 0, 1500), +(11731, 9420536, 1422005, 1, 1, 0, 1800), +(11730, 9420536, 2040805, 1, 1, 0, 1000), +(11729, 9420536, 400004, 1, 1, 0, 333333), +(11728, 9420536, 2022003, 1, 1, 0, 333333), +(11727, 9420536, 2070008, 1, 1, 0, 500), +(11726, 9420536, 4000474, 1, 1, 0, 300000), +(11725, 6130203, 1322054, 1, 1, 0, 750), +(11724, 6130100, 1322054, 1, 1, 0, 750), +(11723, 5130108, 1322054, 1, 1, 0, 750), +(11710, 6230601, 1412027, 1, 1, 0, 750), +(11709, 6230401, 1412027, 1, 1, 0, 750), +(11708, 6130209, 1412027, 1, 1, 0, 750), +(11707, 6110301, 1412027, 1, 1, 0, 750), +(11706, 5120506, 1412027, 1, 1, 0, 750), +(11705, 6230601, 1092047, 1, 1, 0, 750), +(11704, 6230401, 1092047, 1, 1, 0, 750), +(11703, 6220001, 1092047, 1, 1, 0, 750), +(11702, 6230602, 1092047, 1, 1, 0, 750), +(11701, 5140000, 1092047, 1, 1, 0, 750), +(11700, 5130101, 1092046, 1, 1, 0, 750), +(11699, 6110300, 1092046, 1, 1, 0, 750), +(11694, 5120500, 1092045, 1, 1, 0, 750), +(11693, 6300001, 1092045, 1, 1, 0, 750), +(11692, 6230300, 1092045, 1, 1, 0, 750), +(11691, 6230401, 1092045, 1, 1, 0, 750), +(11681, 5120002, 1402039, 1, 1, 0, 750), +(11680, 5250000, 1302064, 1, 1, 0, 750), +(11679, 5130104, 1302064, 1, 1, 0, 750), +(11678, 5130101, 1302064, 1, 1, 0, 750), +(11677, 5120506, 1302064, 1, 1, 0, 750), +(11676, 5120502, 1302064, 1, 1, 0, 750), +(11675, 5250002, 1442051, 1, 1, 0, 750), +(11674, 5250001, 1442051, 1, 1, 0, 750), +(11673, 5250000, 1442051, 1, 1, 0, 750), +(11662, 6230500, 1492022, 1, 1, 0, 750), +(11661, 5220003, 1492022, 1, 1, 0, 1250), +(11660, 6230401, 1372034, 1, 1, 0, 750), +(11659, 6230400, 1372034, 1, 1, 0, 750), +(11658, 5250000, 1372034, 1, 1, 0, 750), +(11657, 5120503, 1372034, 1, 1, 0, 750), +(11656, 5100004, 1372034, 1, 1, 0, 750), +(11655, 6230201, 1382039, 1, 1, 0, 750), +(11654, 6130218, 1382039, 1, 1, 0, 750), +(11653, 6130204, 1382039, 1, 1, 0, 750), +(11637, 5130102, 1462040, 1, 1, 0, 750), +(11636, 5130101, 1462040, 1, 1, 0, 750), +(11635, 6300001, 1452045, 1, 1, 0, 750), +(11634, 6230602, 1452045, 1, 1, 0, 750), +(11633, 6230100, 1452045, 1, 1, 0, 750), +(11632, 6130209, 1452045, 1, 1, 0, 750), +(11631, 5130108, 1452045, 1, 1, 0, 750), +(11630, 6230400, 1472055, 1, 1, 0, 750), +(11621, 9400216, 4001106, 1, 3, 0, 999999), +(11620, 9400215, 4001106, 1, 3, 0, 999999), +(11619, 9400214, 4001106, 1, 3, 0, 999999), +(11618, 9400213, 4001106, 1, 3, 0, 999999), +(11617, 9400212, 4001106, 1, 1, 0, 999999), +(11616, 9400211, 4001106, 1, 1, 0, 999999), +(11615, 9400209, 4001106, 1, 3, 0, 999999), +(11614, 9400209, 4001106, 1, 3, 0, 999999), +(11605, 3110102, 1382012, 1, 1, 0, 700), +(11604, 2230107, 1092030, 1, 1, 0, 700), +(11603, 1210103, 1092030, 1, 1, 0, 700), +(11602, 4230114, 1092030, 1, 1, 0, 700), +(11601, 5100002, 1092030, 1, 1, 0, 700), +(11600, 4230600, 1092030, 1, 1, 0, 700), +(11599, 8140110, 1492021, 1, 1, 0, 700), +(11598, 6300100, 1492021, 1, 1, 0, 700), +(11588, 4240000, 1482021, 1, 1, 0, 700), +(11587, 4230500, 1482021, 1, 1, 0, 700), +(11586, 5130104, 1482020, 1, 1, 0, 700), +(11585, 4230116, 1482020, 1, 1, 0, 700), +(11584, 3230400, 1482020, 1, 1, 0, 700), +(11583, 2230101, 1482020, 1, 1, 0, 700), +(11582, 7130003, 1422014, 1, 1, 0, 700), +(11581, 7130104, 1422014, 1, 1, 0, 700), +(11580, 5130107, 1422014, 1, 1, 0, 700), +(11571, 4230100, 1422014, 1, 1, 0, 700), +(11570, 7130601, 1412011, 1, 1, 0, 700), +(11569, 6110301, 1412011, 1, 1, 0, 700), +(11568, 4230120, 1412011, 1, 1, 0, 700), +(11567, 3210205, 1412011, 1, 1, 0, 700), +(11566, 9400570, 1412011, 1, 1, 0, 700), +(11565, 7130001, 1412011, 1, 1, 0, 700), +(11564, 2230102, 1412011, 1, 1, 0, 700), +(11784, 9420530, 400004, 1, 1, 0, 333333), +(11783, 9420530, 2002009, 1, 1, 0, 333333), +(11782, 9420530, 4020007, 1, 1, 0, 300), +(11781, 9420530, 4010004, 1, 1, 0, 300), +(11780, 9420530, 4000468, 1, 1, 0, 300000), +(11779, 9420534, 2044901, 1, 1, 0, 1000), +(11778, 9420534, 2330003, 1, 1, 0, 500), +(11777, 9420534, 1002254, 1, 1, 0, 2000), +(11776, 9420534, 1382015, 1, 1, 0, 1800), +(11775, 9420534, 1452010, 1, 1, 0, 1500), +(11805, 9420530, 1492007, 1, 1, 0, 333333), +(11806, 9420015, 4000420, 1, 1, 0, 300000), +(11807, 9420015, 4000421, 1, 1, 0, 300000), +(11808, 9420500, 4000369, 1, 1, 0, 300000), +(11809, 9420500, 4000370, 1, 1, 0, 300000), +(11810, 9420500, 400001, 1, 1, 0, 333333), +(11811, 9420500, 2002002, 1, 1, 0, 333333), +(11812, 9420500, 2044002, 1, 1, 0, 1000), +(11813, 9420500, 1332001, 1, 1, 0, 1500), +(11814, 9420500, 1382002, 1, 1, 0, 1800), +(11815, 9420500, 1002178, 1, 1, 0, 2000), +(11816, 9420500, 2060000, 1, 1, 0, 10000), +(11817, 9420500, 4010006, 1, 1, 0, 300), +(11818, 9420500, 4020005, 1, 1, 0, 300), +(11819, 9420500, 2020028, 1, 1, 0, 20000), +(11820, 9420500, 400003, 1, 1, 0, 10000), +(11821, 9420500, 1060052, 1, 1, 0, 2000), +(11822, 9420500, 1051006, 1, 1, 0, 1800), +(11823, 9420500, 1051007, 1, 1, 0, 1800), +(11824, 9420500, 1002142, 1, 1, 0, 2000), +(11825, 9420500, 2061000, 1, 1, 0, 10000), +(11826, 9420500, 1422008, 1, 1, 0, 1800), +(11827, 9420500, 4030012, 1, 1, 0, 300), +(11828, 9420500, 1052095, 1, 1, 0, 1800), +(11829, 9420500, 2330001, 1, 1, 0, 500), +(11830, 9420501, 4000372, 1, 1, 0, 300000), +(11831, 9420501, 400003, 1, 1, 0, 10000), +(11832, 9420501, 400002, 1, 1, 0, 10000), +(11833, 9420501, 404000, 1, 1, 0, 300), +(11834, 9420501, 4010005, 1, 1, 0, 300), +(11835, 9420501, 2043301, 1, 1, 0, 1000), +(11836, 9420501, 1072103, 1, 1, 0, 2000), +(11837, 9420501, 1032008, 1, 1, 0, 1800), +(11838, 9420501, 1050011, 1, 1, 0, 1800), +(11839, 9420501, 1040044, 1, 1, 0, 2000), +(11840, 9420501, 1060033, 1, 1, 0, 2000), +(11841, 9420501, 1302017, 1, 1, 0, 1800), +(11842, 9420501, 2048005, 1, 1, 0, 1000), +(11843, 9420501, 2020028, 1, 1, 0, 20000), +(11844, 9420501, 1050051, 1, 1, 0, 1800), +(11845, 9420501, 1040099, 1, 1, 0, 2000), +(11846, 9420501, 1060088, 1, 1, 0, 2000), +(11847, 9420501, 1050058, 1, 1, 0, 1800), +(11848, 9420501, 1332020, 1, 1, 0, 1500), +(11849, 9420501, 4006001, 1, 1, 0, 5000), +(11850, 9420501, 4030012, 1, 1, 0, 300), +(11851, 9420501, 1072297, 1, 1, 0, 2000), +(11852, 9420501, 1482001, 1, 1, 0, 2000), +(11853, 9420501, 1482005, 1, 1, 0, 2000), +(11854, 9420501, 1492005, 1, 1, 0, 2000), +(11855, 9420502, 4000366, 1, 1, 0, 300000), +(11856, 9420502, 4000367, 1, 1, 0, 300000), +(11857, 9420502, 400000, 1, 1, 0, 10000), +(11858, 9420502, 2043202, 1, 1, 0, 1000), +(11859, 9420502, 1372001, 1, 1, 0, 1800), +(11860, 9420502, 400003, 1, 1, 0, 10000), +(11861, 9420502, 1072008, 1, 1, 0, 2000), +(11862, 9420502, 2060000, 1, 1, 0, 10000), +(11863, 9420502, 4010005, 1, 1, 0, 300), +(11864, 9420502, 4020004, 1, 1, 0, 300), +(11865, 9420502, 1312016, 1, 1, 0, 1800), +(11866, 9420502, 1051008, 1, 1, 0, 1800), +(11867, 9420502, 1051009, 1, 1, 0, 1800), +(11868, 9420502, 2020028, 1, 1, 0, 20000), +(11869, 9420502, 1092007, 1, 1, 0, 1800), +(11870, 9420502, 1002141, 1, 1, 0, 2000), +(11871, 9420502, 1002177, 1, 1, 0, 2000), +(11872, 9420502, 1040074, 1, 1, 0, 2000), +(11873, 9420502, 1060063, 1, 1, 0, 2000), +(11874, 9420502, 2061000, 1, 1, 0, 10000), +(11875, 9420502, 1402009, 1, 1, 0, 1800), +(11876, 9420502, 1002610, 1, 1, 0, 2000), +(11877, 9420502, 2330000, 1, 1, 0, 500), +(11878, 9420503, 4000371, 1, 1, 0, 300000), +(11879, 9420503, 4000370, 1, 1, 0, 300000), +(11880, 9420503, 1061047, 1, 1, 0, 2000), +(11881, 9420503, 1061048, 1, 1, 0, 2000), +(11882, 9420503, 1061049, 1, 1, 0, 2000), +(11883, 9420503, 2070001, 1, 1, 0, 500), +(11884, 9420503, 1060050, 1, 1, 0, 2000), +(11885, 9420503, 1060051, 1, 1, 0, 2000), +(11886, 9420503, 4001000, 1, 1, 0, 5000), +(11887, 9420503, 1040061, 1, 1, 0, 2000), +(11888, 9420503, 1002137, 1, 1, 0, 2000), +(11889, 9420503, 400002, 1, 1, 0, 10000), +(11890, 9420503, 400003, 1, 1, 0, 10000), +(11891, 9420503, 1002153, 1, 1, 0, 2000), +(11892, 9420503, 1002181, 1, 1, 0, 2000), +(11893, 9420503, 2020028, 1, 1, 0, 20000), +(11894, 9420503, 404000, 1, 1, 0, 300), +(11895, 9420503, 4010001, 1, 1, 0, 300), +(11896, 9420503, 1041075, 1, 1, 0, 2000), +(11897, 9420503, 1061070, 1, 1, 0, 2000), +(11898, 9420503, 1002613, 1, 1, 0, 2000), +(11899, 9420504, 4000377, 1, 1, 0, 300000), +(11900, 9420504, 4004004, 1, 1, 0, 5000), +(11901, 9420504, 400002, 1, 1, 0, 10000), +(11902, 9420504, 400004, 1, 1, 0, 333333), +(11903, 9420504, 400003, 1, 1, 0, 10000), +(11904, 9420504, 4010001, 1, 1, 0, 300), +(11905, 9420504, 404000, 1, 1, 0, 300), +(11906, 9420504, 1041086, 1, 1, 0, 2000), +(11907, 9420504, 1061085, 1, 1, 0, 2000), +(11908, 9420504, 1302013, 1, 1, 0, 1800), +(11909, 9420504, 1002083, 1, 1, 0, 2000), +(11910, 9420504, 1032007, 1, 1, 0, 1800), +(11911, 9420504, 1041080, 1, 1, 0, 2000), +(11912, 9420504, 1061079, 1, 1, 0, 2000), +(11913, 9420504, 1040094, 1, 1, 0, 2000), +(11914, 9420504, 1060083, 1, 1, 0, 2000), +(11915, 9420504, 1002211, 1, 1, 0, 2000), +(11916, 9420504, 1002212, 1, 1, 0, 2000), +(11917, 9420504, 2020028, 1, 1, 0, 20000), +(11918, 9420504, 1041092, 1, 1, 0, 2000), +(11919, 9420504, 1061091, 1, 1, 0, 2000), +(11920, 9420504, 1102003, 1, 1, 0, 2000), +(11921, 9420504, 4006001, 1, 1, 0, 5000), +(11922, 9420504, 4030012, 1, 1, 0, 300), +(11923, 9420504, 1072291, 1, 1, 0, 2000), +(11924, 9420504, 1082186, 1, 1, 0, 2000), +(11925, 9420504, 1482003, 1, 1, 0, 333333), +(11926, 9420504, 2331000, 1, 1, 0, 500), +(11927, 9420505, 4000378, 1, 1, 0, 300000), +(11928, 9420505, 400002, 1, 1, 0, 10000), +(11929, 9420505, 2002004, 1, 1, 0, 10000), +(11930, 9420505, 1032002, 1, 1, 0, 1800), +(11931, 9420505, 1041014, 1, 1, 0, 2000), +(11932, 9420505, 1002185, 1, 1, 0, 2000), +(11933, 9420505, 1002167, 1, 1, 0, 2000), +(11934, 9420505, 2020028, 1, 1, 0, 20000), +(11935, 9420505, 4010006, 1, 1, 0, 300), +(11936, 9420505, 4020007, 1, 1, 0, 300), +(11937, 9420505, 1002036, 1, 1, 0, 2000), +(11938, 9420505, 400004, 1, 1, 0, 333333), +(11939, 9420505, 2070003, 1, 1, 0, 500), +(11940, 9420505, 1041065, 1, 1, 0, 2000), +(11941, 9420505, 1061060, 1, 1, 0, 2000), +(11942, 9420505, 1051038, 1, 1, 0, 1800), +(11943, 9420505, 1051039, 1, 1, 0, 1800), +(11944, 9420505, 4030012, 1, 1, 0, 300), +(11945, 9420505, 1002616, 1, 1, 0, 2000), +(11946, 9420505, 1052101, 1, 1, 0, 1800), +(11947, 9420505, 1082183, 1, 1, 0, 2000), +(11948, 9420506, 4000368, 1, 1, 0, 300000), +(11949, 9420506, 400001, 1, 1, 0, 333333), +(11950, 9420506, 2002000, 1, 1, 0, 10000), +(11951, 9420506, 2044302, 1, 1, 0, 1000), +(11952, 9420506, 1032000, 1, 1, 0, 1800), +(11953, 9420506, 1002179, 1, 1, 0, 2000), +(11954, 9420506, 1050030, 1, 1, 0, 1800), +(11955, 9420506, 1050031, 1, 1, 0, 1800), +(11956, 9420506, 2060000, 1, 1, 0, 10000), +(11957, 9420506, 4010002, 1, 1, 0, 300), +(11958, 9420506, 4020003, 1, 1, 0, 300), +(11959, 9420506, 2020028, 1, 1, 0, 20000), +(11960, 9420506, 1432003, 1, 1, 0, 1500), +(11961, 9420506, 400003, 1, 1, 0, 10000), +(11962, 9420506, 1002035, 1, 1, 0, 2000), +(11963, 9420506, 2061000, 1, 1, 0, 10000), +(11964, 9420506, 1312007, 1, 1, 0, 1800), +(11965, 9420506, 1040021, 1, 1, 0, 2000), +(11966, 9420506, 1040081, 1, 1, 0, 2000), +(11967, 9420506, 1060070, 1, 1, 0, 2000), +(11968, 9420507, 4000374, 1, 1, 0, 300000), +(11969, 9420507, 4000375, 1, 1, 0, 300000), +(11970, 9420507, 4000376, 1, 1, 0, 300000), +(11971, 9420507, 400004, 1, 1, 0, 333333), +(11972, 9420507, 400003, 1, 1, 0, 10000), +(11973, 9420507, 4010003, 1, 1, 0, 300), +(11974, 9420507, 4020002, 1, 1, 0, 300), +(11975, 9420507, 1302016, 1, 1, 0, 1800), +(11976, 9420507, 1051032, 1, 1, 0, 1800), +(11977, 9420507, 1051033, 1, 1, 0, 1800), +(11978, 9420507, 2043201, 1, 1, 0, 1000), +(11979, 9420507, 1041027, 1, 1, 0, 1200), +(11980, 9420507, 1061025, 1, 1, 0, 1200), +(11981, 9420507, 1040089, 1, 1, 0, 1200), +(11982, 9420507, 1060078, 1, 1, 0, 1200), +(11983, 9420507, 2020028, 1, 1, 0, 20000), +(11984, 9420507, 1002213, 1, 1, 0, 1200), +(11985, 9420507, 1002214, 1, 1, 0, 1200), +(11986, 9420507, 1002216, 1, 1, 0, 1200), +(11987, 9420507, 1050053, 1, 1, 0, 1800), +(11988, 9420507, 1050054, 1, 1, 0, 1800), +(11989, 9420507, 1002242, 1, 1, 0, 1200), +(11990, 9420507, 1002243, 1, 1, 0, 1200), +(11991, 9420507, 1002619, 1, 1, 0, 1200), +(11992, 9420507, 1052104, 1, 1, 0, 1800), +(11993, 9420507, 1482002, 1, 1, 0, 1800), +(11994, 9420507, 1492002, 1, 1, 0, 1800), +(11995, 9420507, 2044802, 1, 1, 0, 1000), +(11996, 9420508, 4000373, 1, 1, 0, 300000), +(11997, 9420508, 400002, 1, 1, 0, 10000), +(11998, 9420508, 400003, 1, 1, 0, 10000), +(11999, 9420508, 4020005, 1, 1, 0, 300), +(12000, 9420508, 4010003, 1, 1, 0, 300), +(12001, 9420508, 400004, 1, 1, 0, 333333), +(12002, 9420508, 2060000, 1, 1, 0, 10000), +(12003, 9420508, 2061000, 1, 1, 0, 10000), +(12004, 9420508, 1060074, 1, 1, 0, 2000), +(12005, 9420508, 1002128, 1, 1, 0, 2000), +(12006, 9420508, 1072054, 1, 1, 0, 2000), +(12007, 9420508, 1051010, 1, 1, 0, 1800), +(12008, 9420508, 2020028, 1, 1, 0, 20000), +(12009, 9420508, 1041078, 1, 1, 0, 2000), +(12010, 9420508, 1061077, 1, 1, 0, 2000), +(12011, 9420508, 1040086, 1, 1, 0, 2000), +(12012, 9420508, 1040095, 1, 1, 0, 2000), +(12013, 9420508, 1060084, 1, 1, 0, 2000), +(12014, 9420508, 1041087, 1, 1, 0, 2000), +(12015, 9420508, 1061086, 1, 1, 0, 2000), +(12016, 9420508, 1002217, 1, 1, 0, 2000), +(12017, 9420508, 1072288, 1, 1, 0, 2000), +(12018, 9420508, 1072294, 1, 1, 0, 2000), +(12019, 9420508, 1482000, 1, 1, 0, 2000), +(12020, 9420508, 1482004, 1, 1, 0, 2000), +(12021, 9420508, 1482006, 1, 1, 0, 2000), +(12022, 9420508, 1492004, 1, 1, 0, 2000), +(12023, 9420508, 1492006, 1, 1, 0, 2000), +(12024, 9420509, 4000380, 1, 1, 0, 300000), +(12025, 9420509, 1050039, 1, 1, 0, 1800), +(12026, 9420509, 4004004, 1, 1, 0, 5000), +(12027, 9420509, 400003, 1, 1, 0, 10000), +(12028, 9420509, 400004, 1, 1, 0, 333333), +(12029, 9420509, 1051001, 1, 1, 0, 1800), +(12030, 9420509, 1051014, 1, 1, 0, 1800), +(12031, 9420509, 4020008, 1, 1, 0, 300), +(12032, 9420509, 2070004, 1, 1, 0, 500), +(12033, 9420509, 1060064, 1, 1, 0, 2000), +(12034, 9420509, 1040075, 1, 1, 0, 2000), +(12035, 9420509, 2044201, 1, 1, 0, 1000), +(12036, 9420509, 2020028, 1, 1, 0, 20000), +(12037, 9420509, 1402007, 1, 1, 0, 1800), +(12038, 9420509, 1050036, 1, 1, 0, 1800), +(12039, 9420509, 1050037, 1, 1, 0, 1800), +(12040, 9420509, 4001005, 1, 1, 0, 5000), +(12041, 9420509, 1050059, 1, 1, 0, 1800), +(12042, 9420509, 1050060, 1, 1, 0, 1800), +(12043, 9420509, 1041093, 1, 1, 0, 2000), +(12044, 9420509, 1061092, 1, 1, 0, 2000), +(12045, 9420509, 1002631, 1, 1, 0, 2000), +(12046, 9420509, 1052116, 1, 1, 0, 1800), +(12047, 9420509, 2330002, 1, 1, 0, 500), +(12048, 9420510, 4000379, 1, 1, 0, 300000), +(12049, 9420510, 1061071, 1, 1, 0, 2000), +(12050, 9420510, 400006, 1, 1, 0, 333333), +(12051, 9420510, 4020008, 1, 1, 0, 300), +(12052, 9420510, 4010006, 1, 1, 0, 300), +(12053, 9420510, 1040109, 1, 1, 0, 2000), +(12054, 9420510, 1060098, 1, 1, 0, 2000), +(12055, 9420510, 1041068, 1, 1, 0, 2000), +(12056, 9420510, 1061063, 1, 1, 0, 2000), +(12057, 9420510, 1032011, 1, 1, 0, 1800), +(12058, 9420510, 1452008, 1, 1, 0, 1500), +(12059, 9420510, 1102017, 1, 1, 0, 2000), +(12060, 9420510, 1312008, 1, 1, 0, 1800), +(12061, 9420510, 2043701, 1, 1, 0, 1000), +(12062, 9420510, 1041076, 1, 1, 0, 2000), +(12063, 9420510, 1051030, 1, 1, 0, 1800), +(12064, 9420510, 2020028, 1, 1, 0, 20000), +(12065, 9420510, 1051031, 1, 1, 0, 1800), +(12066, 9420510, 1051034, 1, 1, 0, 1800), +(12067, 9420510, 1002209, 1, 1, 0, 2000), +(12068, 9420510, 1002210, 1, 1, 0, 2000), +(12069, 9420510, 1051046, 1, 1, 0, 1800), +(12070, 9420510, 1051047, 1, 1, 0, 1800), +(12071, 9420510, 4030012, 1, 1, 0, 300), +(12072, 9420510, 1492001, 1, 1, 0, 3000), +(12073, 9420511, 4000382, 1, 1, 0, 300000), +(12074, 9420511, 400006, 1, 1, 0, 333333), +(12075, 9420511, 400004, 1, 1, 0, 333333), +(12076, 9420511, 4020007, 1, 1, 0, 300), +(12077, 9420511, 4010005, 1, 1, 0, 300), +(12078, 9420511, 2070005, 1, 1, 0, 500), +(12079, 9420511, 1041083, 1, 1, 0, 2000), +(12080, 9420511, 1061082, 1, 1, 0, 2000), +(12081, 9420511, 1072090, 1, 1, 0, 2000), +(12082, 9420511, 1041079, 1, 1, 0, 2000), +(12083, 9420511, 1061078, 1, 1, 0, 2000), +(12084, 9420511, 4001006, 1, 1, 0, 1000), +(12085, 9420511, 2020028, 1, 1, 0, 20000), +(12086, 9420511, 1002215, 1, 1, 0, 2000), +(12087, 9420511, 1050055, 1, 1, 0, 1800), +(12088, 9420511, 1102015, 1, 1, 0, 2000), +(12089, 9420511, 1050056, 1, 1, 0, 1800), +(12090, 9420511, 1041098, 1, 1, 0, 2000), +(12091, 9420511, 1482008, 1, 1, 0, 3000), +(12092, 9420511, 1492008, 1, 1, 0, 3000), +(12093, 9420512, 4000383, 1, 1, 0, 300000), +(12094, 9420512, 400002, 1, 1, 0, 10000), +(12095, 9420512, 400004, 1, 1, 0, 333333), +(12096, 9420512, 4010006, 1, 1, 0, 300), +(12097, 9420512, 4020006, 1, 1, 0, 300), +(12098, 9420512, 4006000, 1, 1, 0, 5000), +(12099, 9420512, 4004004, 1, 1, 0, 5000), +(12100, 9420512, 2020028, 1, 1, 0, 20000), +(12101, 9420512, 1040093, 1, 1, 0, 2000), +(12102, 9420512, 1060082, 1, 1, 0, 2000), +(12103, 9420512, 1082082, 1, 1, 0, 2000), +(12104, 9420512, 1302011, 1, 1, 0, 1800), +(12105, 9420512, 1312009, 1, 1, 0, 1800), +(12106, 9420512, 1040089, 1, 1, 0, 2000), +(12107, 9420512, 1060078, 1, 1, 0, 2000), +(12108, 9420512, 2041022, 1, 1, 0, 1000), +(12109, 9420512, 2043301, 1, 1, 0, 1000), +(12110, 9420512, 1032015, 1, 1, 0, 1800), +(12111, 9420512, 1050093, 1, 1, 0, 1800), +(12112, 9420512, 1002637, 1, 1, 0, 2000), +(12113, 9420512, 1052122, 1, 1, 0, 1800), +(12114, 9420512, 2330003, 1, 1, 0, 500), +(12115, 9420513, 4000384, 1, 1, 0, 300000), +(12116, 9420513, 4000385, 1, 1, 0, 300000), +(12117, 9420513, 2020013, 1, 1, 0, 333333), +(12118, 9420513, 2020015, 1, 1, 0, 333333), +(12119, 9420513, 400006, 1, 1, 0, 333333), +(12120, 9420513, 1072178, 1, 1, 0, 4000), +(12121, 9420513, 1040112, 1, 1, 0, 4000), +(12122, 9420513, 1041120, 1, 1, 0, 4000), +(12123, 9420513, 1061119, 1, 1, 0, 4000), +(12124, 9420513, 1051097, 1, 1, 0, 3000), +(12125, 9420513, 1060106, 1, 1, 0, 4000), +(12126, 9420513, 1041118, 1, 1, 0, 4000), +(12127, 9420513, 1072198, 1, 1, 0, 4000), +(12128, 9420513, 1312015, 1, 1, 0, 3000), +(12129, 9420513, 1332026, 1, 1, 0, 25000), +(12130, 9420513, 1462018, 1, 1, 0, 25000), +(12131, 9420513, 1372009, 1, 1, 0, 3000), +(12132, 9420513, 2041022, 1, 1, 0, 1000), +(12133, 9420513, 2290118, 1, 1, 0, 4000), +(12134, 9420513, 2290100, 1, 1, 0, 4000), +(12135, 9420514, 4000429, 1, 1, 0, 300000), +(12136, 9420514, 400006, 1, 1, 0, 333333), +(12137, 9420514, 400005, 1, 1, 0, 333333), +(12138, 9420514, 4020008, 1, 1, 0, 300), +(12139, 9420514, 4010006, 1, 1, 0, 300), +(12140, 9420514, 2044702, 1, 1, 0, 1000), +(12141, 9420514, 2043802, 1, 1, 0, 1000), +(12142, 9420514, 4006000, 1, 1, 0, 5000), +(12143, 9420514, 4004002, 1, 1, 0, 5000), +(12144, 9420514, 400002, 1, 1, 0, 10000), +(12145, 9420514, 1050083, 1, 1, 0, 1800), +(12146, 9420514, 1082119, 1, 1, 0, 2000), +(12147, 9420514, 1072185, 1, 1, 0, 2000), +(12148, 9420514, 1002330, 1, 1, 0, 2000), +(12149, 9420514, 1092027, 1, 1, 0, 1800), +(12150, 9420514, 1452015, 1, 1, 0, 1500), +(12151, 9420514, 1462013, 1, 1, 0, 1500), +(12152, 9420514, 1432010, 1, 1, 0, 1500), +(12153, 9420514, 1302056, 1, 1, 0, 1800), +(12154, 9420514, 1372010, 1, 1, 0, 1800), +(12155, 9420514, 1332052, 1, 1, 0, 1500), +(12156, 9420514, 1002640, 1, 1, 0, 2000), +(12157, 9420514, 1052125, 1, 1, 0, 1800), +(12158, 9420514, 1082207, 1, 1, 0, 2000), +(12159, 9420514, 2330004, 1, 1, 0, 500), +(12160, 9420514, 2290099, 1, 1, 0, 2000), +(12161, 9420516, 4000431, 1, 1, 0, 300000), +(12162, 9420516, 400006, 1, 1, 0, 333333), +(12163, 9420516, 400005, 1, 1, 0, 333333), +(12164, 9420516, 4004002, 1, 1, 0, 5000), +(12165, 9420516, 4010001, 1, 1, 0, 300), +(12166, 9420516, 404000, 1, 1, 0, 300), +(12167, 9420516, 4006001, 1, 1, 0, 5000), +(12168, 9420516, 1002365, 1, 1, 0, 2000), +(12169, 9420516, 1050089, 1, 1, 0, 1800), +(12170, 9420516, 1041118, 1, 1, 0, 2000), +(12171, 9420516, 1061116, 1, 1, 0, 2000), +(12172, 9420516, 1082129, 1, 1, 0, 2000), +(12173, 9420516, 1072223, 1, 1, 0, 2000), +(12174, 9420516, 1452017, 1, 1, 0, 1500), +(12175, 9420516, 2040701, 1, 1, 0, 1000), +(12176, 9420516, 2040516, 1, 1, 0, 1000), +(12177, 9420516, 2043002, 1, 1, 0, 1000), +(12178, 9420515, 4000430, 1, 1, 0, 300000), +(12179, 9420515, 400006, 1, 1, 0, 333333), +(12180, 9420515, 400005, 1, 1, 0, 333333), +(12181, 9420515, 4010003, 1, 1, 0, 300), +(12182, 9420515, 4020001, 1, 1, 0, 300), +(12183, 9420515, 2048004, 1, 1, 0, 1000), +(12184, 9420515, 2040901, 1, 1, 0, 1000), +(12185, 9420515, 4006001, 1, 1, 0, 5000), +(12186, 9420515, 4004003, 1, 1, 0, 5000), +(12187, 9420515, 400002, 1, 1, 0, 10000), +(12188, 9420515, 1082117, 1, 1, 0, 2000), +(12189, 9420515, 1072179, 1, 1, 0, 2000), +(12190, 9420515, 1002328, 1, 1, 0, 2000), +(12191, 9420515, 1040109, 1, 1, 0, 2000), +(12192, 9420515, 1060098, 1, 1, 0, 2000), +(12193, 9420515, 1452014, 1, 1, 0, 1500), +(12194, 9420515, 1382008, 1, 1, 0, 1800), +(12195, 9420515, 1032023, 1, 1, 0, 1800), +(12196, 9420515, 1092026, 1, 1, 0, 1800), +(12197, 9420515, 1312030, 1, 1, 0, 1800), +(12198, 9420515, 1402035, 1, 1, 0, 1800), +(12199, 9420515, 1472053, 1, 1, 0, 1300), +(12200, 9420517, 4000432, 1, 1, 0, 300000), +(12201, 9420517, 2022003, 1, 1, 0, 333333), +(12202, 9420517, 400006, 1, 1, 0, 333333), +(12203, 9420517, 400005, 1, 1, 0, 333333), +(12204, 9420517, 4004003, 1, 1, 0, 5000), +(12205, 9420517, 4020007, 1, 1, 0, 300), +(12206, 9420517, 4010005, 1, 1, 0, 300), +(12207, 9420517, 4006001, 1, 1, 0, 5000), +(12208, 9420517, 4006000, 1, 1, 0, 5000), +(12209, 9420517, 1002406, 1, 1, 0, 2000), +(12210, 9420517, 1051101, 1, 1, 0, 1800), +(12211, 9420517, 1050097, 1, 1, 0, 1800), +(12212, 9420517, 1082139, 1, 1, 0, 2000), +(12213, 9420517, 1072225, 1, 1, 0, 2000), +(12214, 9420517, 1032023, 1, 1, 0, 1800), +(12215, 9420517, 1412021, 1, 1, 0, 1800), +(12216, 9420517, 1452019, 1, 1, 0, 1500), +(12217, 9420517, 2043801, 1, 1, 0, 1000), +(12218, 9420517, 2041023, 1, 1, 0, 1000), +(12219, 9420517, 2040707, 1, 1, 0, 1000), +(12220, 9420517, 1082152, 1, 1, 0, 2000), +(12221, 9420517, 2290000, 1, 1, 0, 2000), +(12222, 9420517, 2290008, 1, 1, 0, 2000), +(12223, 9420517, 2290018, 1, 1, 0, 2000), +(12224, 9420517, 2290038, 1, 1, 0, 2000), +(12225, 9420517, 2290060, 1, 1, 0, 2000), +(12226, 9420517, 2290080, 1, 1, 0, 2000), +(12227, 9420517, 2290103, 1, 1, 0, 2000), +(12228, 9420518, 400006, 1, 1, 0, 333333), +(12229, 9420518, 400005, 1, 1, 0, 333333), +(12230, 9420518, 2022003, 1, 1, 0, 333333), +(12231, 9420518, 2020013, 1, 1, 0, 333333), +(12232, 9420518, 4010001, 1, 1, 0, 300), +(12233, 9420518, 4020002, 1, 1, 0, 300), +(12234, 9420518, 4004004, 1, 1, 0, 5000), +(12235, 9420518, 1002530, 1, 1, 0, 2000), +(12236, 9420518, 1050098, 1, 1, 0, 1800), +(12237, 9420518, 1041122, 1, 1, 0, 2000), +(12238, 9420518, 1061121, 1, 1, 0, 2000), +(12239, 9420518, 1051101, 1, 1, 0, 1800), +(12240, 9420518, 1082158, 1, 1, 0, 2000), +(12241, 9420518, 1072208, 1, 1, 0, 2000), +(12242, 9420518, 1092027, 1, 1, 0, 1800), +(12243, 9420518, 1402016, 1, 1, 0, 1800), +(12244, 9420518, 1382035, 1, 1, 0, 1800), +(12245, 9420518, 2040302, 1, 1, 0, 1000), +(12246, 9420518, 2040501, 1, 1, 0, 1000), +(12247, 9420518, 4000433, 1, 1, 0, 300000), +(12248, 9420518, 1082136, 1, 1, 0, 2000), +(12249, 9420518, 2044902, 1, 1, 0, 1000), +(12250, 9420518, 2290123, 1, 1, 0, 2000), +(12251, 9420519, 4000434, 1, 1, 0, 300000), +(12252, 9420519, 2022003, 1, 1, 0, 333333), +(12253, 9420519, 400006, 1, 1, 0, 333333), +(12254, 9420519, 400005, 1, 1, 0, 333333), +(12255, 9420519, 4004004, 1, 1, 0, 5000), +(12256, 9420519, 4020006, 1, 1, 0, 300), +(12257, 9420519, 4020002, 1, 1, 0, 300), +(12258, 9420519, 4006001, 1, 1, 0, 5000), +(12259, 9420519, 4006000, 1, 1, 0, 5000), +(12260, 9420519, 1002380, 1, 1, 0, 2000), +(12261, 9420519, 1051102, 1, 1, 0, 1800), +(12262, 9420519, 1040121, 1, 1, 0, 2000), +(12263, 9420519, 1060109, 1, 1, 0, 2000), +(12264, 9420519, 1082151, 1, 1, 0, 2000), +(12265, 9420519, 1072215, 1, 1, 0, 2000), +(12266, 9420519, 1322045, 1, 1, 0, 1800), +(12267, 9420519, 1302056, 1, 1, 0, 1800), +(12268, 9420519, 2041004, 1, 1, 0, 1000), +(12269, 9420519, 2041013, 1, 1, 0, 1000), +(12270, 9420519, 2044201, 1, 1, 0, 1000), +(12271, 9420519, 2330005, 1, 1, 0, 500), +(12272, 9420519, 2290113, 1, 1, 0, 2000), +(12273, 9420522, 2020013, 1, 1, 0, 333333), +(12274, 9420522, 2020015, 1, 1, 0, 333333), +(12275, 9420522, 400005, 1, 1, 0, 333333), +(12276, 9420522, 1302056, 1, 1, 0, 3000), +(12277, 9420522, 1312030, 1, 1, 0, 3000), +(12278, 9420522, 1322045, 1, 1, 0, 3000), +(12279, 9420522, 1332051, 1, 1, 0, 25000), +(12280, 9420522, 1332052, 1, 1, 0, 25000), +(12281, 9420522, 1372010, 1, 1, 0, 3000), +(12282, 9420522, 1382035, 1, 1, 0, 3000), +(12283, 9420522, 1402035, 1, 1, 0, 3000), +(12284, 9420522, 1412021, 1, 1, 0, 3000), +(12285, 9420522, 1422027, 1, 1, 0, 3000), +(12286, 9420522, 1432030, 1, 1, 0, 25000), +(12287, 9420522, 1442044, 1, 1, 0, 3000), +(12288, 9420522, 1452019, 1, 1, 0, 25000), +(12289, 9420522, 1452020, 1, 1, 0, 25000), +(12290, 9420522, 1462015, 1, 1, 0, 25000), +(12291, 9420522, 1462016, 1, 1, 0, 25000), +(12292, 9420522, 1472053, 1, 1, 0, 13000), +(12293, 9420522, 400004, 1, 1, 0, 333333), +(12294, 9420522, 2290028, 1, 1, 0, 4000), +(12295, 9420522, 2290037, 1, 1, 0, 4000), +(12296, 9420522, 2290043, 1, 1, 0, 4000), +(12297, 9420522, 2290066, 1, 1, 0, 4000), +(12298, 9420522, 2290089, 1, 1, 0, 4000), +(12299, 9420522, 2290091, 1, 1, 0, 4000), +(12300, 9420522, 2290011, 1, 1, 0, 4000), +(12301, 9420522, 2290001, 1, 1, 0, 4000), +(12302, 9420522, 2290025, 1, 1, 0, 4000), +(12303, 9420522, 2290083, 1, 1, 0, 4000), +(12304, 9420522, 2290000, 1, 1, 0, 4000), +(12305, 9420522, 2290082, 1, 1, 0, 4000), +(12306, 9420522, 4000435, 1, 1, 0, 300000), +(12307, 9420522, 2290107, 1, 1, 0, 4000), +(12308, 9420527, 4000465, 1, 1, 0, 300000), +(12309, 9420527, 400006, 1, 1, 0, 333333), +(12310, 9420527, 2020028, 1, 1, 0, 20000), +(12311, 9420527, 401000, 1, 1, 0, 300), +(12312, 9420527, 4020001, 1, 1, 0, 300), +(12313, 9420527, 2002010, 1, 1, 0, 333333), +(12314, 9420527, 2040101, 1, 1, 0, 1000), +(12315, 9420527, 2040311, 1, 1, 0, 1000), +(12316, 9420527, 4130010, 1, 1, 0, 5000), +(12317, 9420527, 1332015, 1, 1, 0, 1500), +(12318, 9420527, 1302013, 1, 1, 0, 1800), +(12319, 9420527, 1472017, 1, 1, 0, 1300), +(12320, 9420527, 1082064, 1, 1, 0, 2000), +(12321, 9420527, 1072124, 1, 1, 0, 2000), +(12322, 9420527, 1072055, 1, 1, 0, 2000), +(12323, 9420527, 1050047, 1, 1, 0, 1800), +(12324, 9420527, 1050046, 1, 1, 0, 1800), +(12325, 9420527, 1051039, 1, 1, 0, 1800), +(12326, 9420527, 2060001, 1, 1, 0, 10000), +(12327, 9420527, 2061001, 1, 1, 0, 10000), +(12328, 9420527, 1002625, 1, 1, 0, 2000), +(12329, 9420527, 1052110, 1, 1, 0, 1800), +(12330, 9420527, 1082192, 1, 1, 0, 2000), +(12331, 9420527, 1492000, 1, 1, 0, 333333), +(12332, 9420527, 2330000, 1, 1, 0, 500), +(12333, 9420528, 4000466, 1, 1, 0, 300000), +(12334, 9420528, 2020006, 1, 1, 0, 333333), +(12335, 9420528, 400010, 1, 1, 0, 333333), +(12336, 9420528, 2050004, 1, 1, 0, 5000), +(12337, 9420528, 4010001, 1, 1, 0, 300), +(12338, 9420528, 4020002, 1, 1, 0, 300), +(12339, 9420528, 2040516, 1, 1, 0, 1000), +(12340, 9420528, 2044501, 1, 1, 0, 1000), +(12341, 9420528, 4131008, 1, 1, 0, 5000), +(12342, 9420528, 4130000, 1, 1, 0, 5000), +(12343, 9420528, 2040704, 1, 1, 0, 1000), +(12344, 9420528, 4004001, 1, 1, 0, 5000), +(12345, 9420528, 1302016, 1, 1, 0, 1800), +(12346, 9420528, 1322017, 1, 1, 0, 1800), +(12347, 9420528, 1332016, 1, 1, 0, 1500), +(12348, 9420528, 1372012, 1, 1, 0, 1800), +(12349, 9420528, 1102003, 1, 1, 0, 2000), +(12350, 9420528, 1082050, 1, 1, 0, 2000), +(12351, 9420528, 1060078, 1, 1, 0, 2000), +(12352, 9420528, 1072134, 1, 1, 0, 2000), +(12353, 9420528, 1032018, 1, 1, 0, 1800), +(12354, 9420528, 1002024, 1, 1, 0, 2000), +(12355, 9420528, 4006000, 1, 1, 0, 5000), +(12356, 9420528, 1002628, 1, 1, 0, 2000), +(12357, 9420528, 1052113, 1, 1, 0, 1800), +(12358, 9420528, 1072285, 1, 1, 0, 2000), +(12359, 9420528, 1072300, 1, 1, 0, 2000), +(12360, 9420528, 1082195, 1, 1, 0, 2000), +(12361, 9420528, 2330001, 1, 1, 0, 500), +(12362, 9420529, 4000467, 1, 1, 0, 300000), +(12363, 9420529, 400006, 1, 1, 0, 333333), +(12364, 9420529, 4006001, 1, 1, 0, 5000), +(12365, 9420529, 2040005, 1, 1, 0, 1000), +(12366, 9420529, 2043801, 1, 1, 0, 1000), +(12367, 9420529, 4004000, 1, 1, 0, 5000), +(12368, 9420529, 4003002, 1, 1, 0, 20000), +(12369, 9420529, 1402010, 1, 1, 0, 1800), +(12370, 9420529, 1412003, 1, 1, 0, 1800), +(12371, 9420529, 1452008, 1, 1, 0, 1500), +(12372, 9420529, 1462006, 1, 1, 0, 1500), +(12373, 9420529, 1472021, 1, 1, 0, 1300), +(12374, 9420529, 2040302, 1, 1, 0, 1000), +(12375, 9420529, 1092009, 1, 1, 0, 1800), +(12376, 9420529, 1082083, 1, 1, 0, 2000), +(12377, 9420529, 1082072, 1, 1, 0, 2000), +(12378, 9420529, 1040089, 1, 1, 0, 2000), +(12379, 9420529, 1041080, 1, 1, 0, 2000), +(12380, 9420529, 1051030, 1, 1, 0, 1800), +(12381, 9420529, 1051038, 1, 1, 0, 1800), +(12382, 9420529, 1002184, 1, 1, 0, 2000), +(12383, 9420529, 1002099, 1, 1, 0, 2000), +(12384, 9420529, 1002216, 1, 1, 0, 2000), +(12385, 9420529, 1040096, 1, 1, 0, 2000), +(12386, 9420529, 1060085, 1, 1, 0, 2000), +(12387, 9420529, 1052098, 1, 1, 0, 1800), +(12388, 9420529, 1072303, 1, 1, 0, 2000), +(12389, 9420529, 1082198, 1, 1, 0, 2000), +(12390, 9420531, 4000469, 1, 1, 0, 300000), +(12391, 9420531, 2060001, 1, 1, 0, 10000), +(12392, 9420531, 2061001, 1, 1, 0, 10000), +(12393, 9420531, 4003005, 1, 1, 0, 40000), +(12394, 9420531, 4004003, 1, 1, 0, 5000), +(12395, 9420531, 4010002, 1, 1, 0, 300), +(12396, 9420531, 4020006, 1, 1, 0, 300), +(12397, 9420531, 400002, 1, 1, 0, 10000), +(12398, 9420531, 400006, 1, 1, 0, 333333), +(12399, 9420531, 400005, 1, 1, 0, 333333), +(12400, 9420531, 1332017, 1, 1, 0, 1500), +(12401, 9420531, 1302010, 1, 1, 0, 1800), +(12402, 9420531, 1372007, 1, 1, 0, 1800), +(12403, 9420531, 1402003, 1, 1, 0, 1800), +(12404, 9420531, 1412007, 1, 1, 0, 1800), +(12405, 9420531, 1452004, 1, 1, 0, 1500), +(12406, 9420531, 1092012, 1, 1, 0, 1800), +(12407, 9420531, 1082067, 1, 1, 0, 2000), +(12408, 9420531, 1082091, 1, 1, 0, 2000), +(12409, 9420531, 1041081, 1, 1, 0, 2000), +(12410, 9420531, 1061080, 1, 1, 0, 2000), +(12411, 9420531, 1041093, 1, 1, 0, 2000), +(12412, 9420531, 1061092, 1, 1, 0, 2000), +(12413, 9420531, 2040804, 1, 1, 0, 500), +(12414, 9420531, 2041005, 1, 1, 0, 1000), +(12415, 9420531, 2330002, 1, 1, 0, 500), +(12416, 9420532, 4000470, 1, 1, 0, 300000), +(12417, 9420532, 400002, 1, 1, 0, 10000), +(12418, 9420532, 400006, 1, 1, 0, 333333), +(12419, 9420532, 2043009, 1, 1, 0, 1000), +(12420, 9420532, 2044102, 1, 1, 0, 1000), +(12421, 9420532, 1032008, 1, 1, 0, 1800), +(12422, 9420532, 1002243, 1, 1, 0, 2000), +(12423, 9420532, 1002244, 1, 1, 0, 2000), +(12424, 9420532, 1002270, 1, 1, 0, 2000), +(12425, 9420532, 1002155, 1, 1, 0, 2000), +(12426, 9420532, 1051043, 1, 1, 0, 1800), +(12427, 9420532, 1041087, 1, 1, 0, 2000), +(12428, 9420532, 1061086, 1, 1, 0, 2000), +(12429, 9420532, 1041095, 1, 1, 0, 2000), +(12430, 9420532, 1061094, 1, 1, 0, 2000), +(12431, 9420532, 1072149, 1, 1, 0, 2000), +(12432, 9420532, 1072110, 1, 1, 0, 2000), +(12433, 9420532, 1051046, 1, 1, 0, 1800), +(12434, 9420532, 1051047, 1, 1, 0, 1800), +(12435, 9420532, 1102017, 1, 1, 0, 2000), +(12436, 9420532, 1472020, 1, 1, 0, 1300), +(12437, 9420532, 1332021, 1, 1, 0, 1500), +(12438, 9420532, 1332029, 1, 1, 0, 1500), +(12439, 9420532, 1372017, 1, 1, 0, 1800), +(12440, 9420532, 1002622, 1, 1, 0, 2000), +(12441, 9420532, 1052107, 1, 1, 0, 1800), +(12442, 9420532, 1082189, 1, 1, 0, 2000), +(12443, 9420532, 1492003, 1, 1, 0, 2000), +(12444, 9420533, 4000471, 1, 1, 0, 300000), +(12445, 9420533, 2002004, 1, 1, 0, 10000), +(12446, 9420533, 400009, 1, 1, 0, 333333), +(12447, 9420533, 400006, 1, 1, 0, 333333), +(12448, 9420533, 2002011, 1, 1, 0, 10000), +(12449, 9420533, 2044302, 1, 1, 0, 1000), +(12450, 9420533, 2048001, 1, 1, 0, 1000), +(12451, 9420533, 1312009, 1, 1, 0, 1800), +(12452, 9420533, 1322012, 1, 1, 0, 1800), +(12453, 9420533, 1332020, 1, 1, 0, 1500), +(12454, 9420533, 1372008, 1, 1, 0, 1800), +(12455, 9420533, 1402017, 1, 1, 0, 1800), +(12456, 9420533, 1432007, 1, 1, 0, 1500), +(12457, 9420533, 1051023, 1, 1, 0, 1800), +(12458, 9420533, 1051038, 1, 1, 0, 1800), +(12459, 9420533, 1050052, 1, 1, 0, 1800), +(12460, 9420533, 1050039, 1, 1, 0, 1800), +(12461, 9420533, 1040105, 1, 1, 0, 2000), +(12462, 9420533, 1060093, 1, 1, 0, 2000), +(12463, 9420533, 1041096, 1, 1, 0, 2000), +(12464, 9420533, 1061095, 1, 1, 0, 2000), +(12465, 9420533, 1002248, 1, 1, 0, 2000), +(12466, 9420533, 1002249, 1, 1, 0, 2000), +(12467, 9420533, 1002254, 1, 1, 0, 2000), +(12468, 9420533, 1082180, 1, 1, 0, 2000), +(12469, 9420535, 4000473, 1, 1, 0, 300000), +(12470, 9420535, 4030009, 1, 1, 0, 300), +(12471, 9420535, 400002, 1, 1, 0, 10000), +(12472, 9420535, 400004, 1, 1, 0, 333333), +(12473, 9420535, 2020028, 1, 1, 0, 20000), +(12474, 9420535, 4030012, 1, 1, 0, 300), +(12475, 9420535, 2022003, 1, 1, 0, 333333), +(12476, 9420535, 2044402, 1, 1, 0, 1000), +(12477, 9420535, 2043701, 1, 1, 0, 1000), +(12478, 9420535, 4010006, 1, 1, 0, 300), +(12479, 9420535, 404000, 1, 1, 0, 300), +(12480, 9420535, 1050060, 1, 1, 0, 1800), +(12481, 9420535, 1041076, 1, 1, 0, 2000), +(12482, 9420535, 1061071, 1, 1, 0, 2000), +(12483, 9420535, 1322007, 1, 1, 0, 1800), +(12484, 9420535, 1442009, 1, 1, 0, 1800), +(12485, 9420535, 1102012, 1, 1, 0, 2000), +(12486, 9420535, 1092029, 1, 1, 0, 1800), +(12487, 9420535, 1072018, 1, 1, 0, 2000), +(12488, 9420535, 1072159, 1, 1, 0, 2000), +(12489, 9420535, 1072161, 1, 1, 0, 2000), +(12490, 9420535, 1051016, 1, 1, 0, 1800), +(12491, 9420535, 1050070, 1, 1, 0, 1800), +(12492, 9420535, 1051055, 1, 1, 0, 1800), +(12493, 9420535, 1032020, 1, 1, 0, 1800), +(12494, 9420535, 1082106, 1, 1, 0, 2000), +(12495, 9420535, 1082093, 1, 1, 0, 2000), +(12496, 9420535, 1492009, 1, 1, 0, 2000), +(12497, 9420537, 4000475, 1, 1, 0, 300000), +(12498, 9420537, 2022003, 1, 1, 0, 333333), +(12499, 9420537, 400006, 1, 1, 0, 333333), +(12500, 9420537, 1322009, 1, 1, 0, 1800), +(12501, 9420537, 4010005, 1, 1, 0, 300), +(12502, 9420537, 4020007, 1, 1, 0, 300), +(12503, 9420537, 4006000, 1, 1, 0, 5000), +(12504, 9420537, 4004002, 1, 1, 0, 5000), +(12505, 9420537, 1372015, 1, 1, 0, 1800), +(12506, 9420537, 1102030, 1, 1, 0, 2000), +(12507, 9420537, 1041102, 1, 1, 0, 2000), +(12508, 9420537, 1061101, 1, 1, 0, 2000), +(12509, 9420537, 1050083, 1, 1, 0, 1800), +(12510, 9420537, 1051080, 1, 1, 0, 1800), +(12511, 9420537, 1072155, 1, 1, 0, 2000), +(12512, 9420537, 1072165, 1, 1, 0, 2000), +(12513, 9420537, 1032022, 1, 1, 0, 1800), +(12514, 9420537, 1002252, 1, 1, 0, 2000), +(12515, 9420537, 1002284, 1, 1, 0, 2000), +(12516, 9420537, 1002289, 1, 1, 0, 2000), +(12517, 9420537, 1452011, 1, 1, 0, 1500), +(12518, 9420537, 1462013, 1, 1, 0, 1500), +(12519, 9420537, 1472027, 1, 1, 0, 1300), +(12520, 9420537, 2043301, 1, 1, 0, 1000), +(12521, 9420537, 2040513, 1, 1, 0, 1000), +(12522, 9420537, 1002634, 1, 1, 0, 2000), +(12523, 9420537, 1052119, 1, 1, 0, 1800), +(12524, 9420537, 1072306, 1, 1, 0, 2000), +(12525, 9420537, 1082201, 1, 1, 0, 2000), +(12526, 9420538, 4000476, 1, 1, 0, 300000), +(12527, 9420538, 4010002, 1, 1, 0, 300), +(12528, 9420538, 4010001, 1, 1, 0, 300), +(12529, 9420538, 4004002, 1, 1, 0, 5000), +(12530, 9420538, 400006, 1, 1, 0, 333333), +(12531, 9420538, 400004, 1, 1, 0, 333333), +(12532, 9420538, 2070004, 1, 1, 0, 500), +(12533, 9420538, 4006000, 1, 1, 0, 5000), +(12534, 9420538, 2040705, 1, 1, 0, 1000), +(12535, 9420538, 2041017, 1, 1, 0, 1000), +(12536, 9420538, 1432010, 1, 1, 0, 1500), +(12537, 9420538, 1422012, 1, 1, 0, 1800), +(12538, 9420538, 1102029, 1, 1, 0, 2000), +(12539, 9420538, 1092015, 1, 1, 0, 1800), +(12540, 9420538, 1082123, 1, 1, 0, 2000), +(12541, 9420538, 1082112, 1, 1, 0, 2000), +(12542, 9420538, 1060091, 1, 1, 0, 2000), +(12543, 9420538, 1060094, 1, 1, 0, 2000), +(12544, 9420538, 1002274, 1, 1, 0, 2000), +(12545, 9420538, 1002278, 1, 1, 0, 2000), +(12546, 9420538, 1072179, 1, 1, 0, 2000), +(12547, 9420538, 1072163, 1, 1, 0, 2000), +(12548, 9420538, 1072155, 1, 1, 0, 2000), +(12549, 9420538, 1040109, 1, 1, 0, 2000), +(12550, 9420538, 1041106, 1, 1, 0, 2000), +(12551, 9420538, 1060098, 1, 1, 0, 2000), +(12552, 9420538, 1072312, 1, 1, 0, 2000), +(12553, 9420538, 1482010, 1, 1, 0, 2000), +(12554, 9420538, 1492010, 1, 1, 0, 2000), +(12555, 9420539, 4000477, 1, 1, 0, 300000), +(12556, 9420539, 401000, 1, 1, 0, 300), +(12557, 9420539, 4010002, 1, 1, 0, 300), +(12558, 9420539, 4020005, 1, 1, 0, 300), +(12559, 9420539, 4004004, 1, 1, 0, 5000), +(12560, 9420539, 400006, 1, 1, 0, 333333), +(12561, 9420539, 400009, 1, 1, 0, 333333), +(12562, 9420539, 2002008, 1, 1, 0, 333333), +(12563, 9420539, 2070005, 1, 1, 0, 500), +(12564, 9420539, 4006001, 1, 1, 0, 5000), +(12565, 9420539, 4006000, 1, 1, 0, 5000), +(12566, 9420539, 2040514, 1, 1, 0, 1000), +(12567, 9420539, 2040802, 1, 1, 0, 1000), +(12568, 9420539, 2044601, 1, 1, 0, 1000), +(12569, 9420539, 1412009, 1, 1, 0, 1800), +(12570, 9420539, 1402033, 1, 1, 0, 1800), +(12571, 9420539, 1382028, 1, 1, 0, 1800), +(12572, 9420539, 1102035, 1, 1, 0, 2000), +(12573, 9420539, 1102031, 1, 1, 0, 2000), +(12574, 9420539, 1082116, 1, 1, 0, 2000), +(12575, 9420539, 1082108, 1, 1, 0, 2000), +(12576, 9420539, 1082099, 1, 1, 0, 2000), +(12577, 9420539, 1002284, 1, 1, 0, 2000), +(12578, 9420539, 1050074, 1, 1, 0, 1800), +(12579, 9420539, 1050083, 1, 1, 0, 1800), +(12580, 9420539, 1050078, 1, 1, 0, 1800), +(12581, 9420540, 4000478, 1, 1, 0, 300000), +(12582, 9420540, 4010003, 1, 1, 0, 300), +(12583, 9420540, 4010006, 1, 1, 0, 300), +(12584, 9420540, 404000, 1, 1, 0, 300), +(12585, 9420540, 4004000, 1, 1, 0, 5000), +(12586, 9420540, 400005, 1, 1, 0, 333333), +(12587, 9420540, 400011, 1, 1, 0, 333333), +(12588, 9420540, 2002006, 1, 1, 0, 10000), +(12589, 9420540, 2070012, 1, 1, 0, 20000), +(12590, 9420540, 4006001, 1, 1, 0, 5000), +(12591, 9420540, 2022003, 1, 1, 0, 40000), +(12592, 9420540, 2041014, 1, 1, 0, 1000), +(12593, 9420540, 2040804, 1, 1, 0, 500), +(12594, 9420540, 2040613, 1, 1, 0, 1000), +(12595, 9420540, 1452017, 1, 1, 0, 1500), +(12596, 9420540, 1472031, 1, 1, 0, 1300), +(12597, 9420540, 1002329, 1, 1, 0, 2000), +(12598, 9420540, 1002366, 1, 1, 0, 2000), +(12599, 9420540, 1002405, 1, 1, 0, 2000), +(12600, 9420540, 1050095, 1, 1, 0, 1800), +(12601, 9420540, 1051097, 1, 1, 0, 1800), +(12602, 9420540, 1072198, 1, 1, 0, 2000), +(12603, 9420540, 1072209, 1, 1, 0, 2000), +(12604, 9420540, 1082134, 1, 1, 0, 2000), +(12605, 9420540, 2330005, 1, 1, 0, 500), +(12606, 9420540, 2290120, 1, 1, 0, 2000), +(12607, 9420544, 1032031, 1, 1, 0, 3000), +(12608, 9420544, 4001241, 1, 1, 0, 300000), +(12609, 9420544, 2020013, 1, 1, 0, 333333), +(12610, 9420544, 2020014, 1, 1, 0, 100000), +(12611, 9420544, 1302056, 1, 1, 0, 3000), +(12612, 9420544, 1312030, 1, 1, 0, 3000), +(12613, 9420544, 1322045, 1, 1, 0, 3000), +(12614, 9420544, 1332051, 1, 1, 0, 25000), +(12615, 9420544, 1332052, 1, 1, 0, 25000), +(12616, 9420544, 1372010, 1, 1, 0, 3000), +(12617, 9420544, 1382035, 1, 1, 0, 3000), +(12618, 9420544, 1402035, 1, 1, 0, 3000), +(12619, 9420544, 1422027, 1, 1, 0, 3000), +(12620, 9420544, 1412021, 1, 1, 0, 3000), +(12621, 9420544, 1432030, 1, 1, 0, 25000), +(12622, 9420544, 1452020, 1, 1, 0, 25000), +(12623, 9420544, 1462015, 1, 1, 0, 25000), +(12624, 9420544, 1462016, 1, 1, 0, 25000), +(12625, 9420544, 1472053, 1, 1, 0, 13000), +(12626, 9420544, 1452019, 1, 1, 0, 25000), +(12627, 9420544, 1442044, 1, 1, 0, 3000), +(12628, 9420544, 1492012, 1, 1, 0, 333333), +(12629, 9420544, 1482012, 1, 1, 0, 333333), +(12630, 9420544, 2043001, 1, 1, 0, 1000), +(12631, 9420544, 2043101, 1, 1, 0, 1000), +(12632, 9420544, 2043201, 1, 1, 0, 1000), +(12633, 9420544, 2043301, 1, 1, 0, 1000), +(12634, 9420544, 2043701, 1, 1, 0, 1000), +(12635, 9420544, 2043801, 1, 1, 0, 1000), +(12636, 9420544, 2044001, 1, 1, 0, 1000), +(12637, 9420544, 2044101, 1, 1, 0, 1000), +(12638, 9420544, 2044301, 1, 1, 0, 1000), +(12639, 9420544, 2044201, 1, 1, 0, 1000), +(12640, 9420544, 2044401, 1, 1, 0, 1000), +(12641, 9420544, 2044501, 1, 1, 0, 1000), +(12642, 9420544, 2044601, 1, 1, 0, 1000), +(12643, 9420544, 2044701, 1, 1, 0, 1000), +(12644, 9420544, 2040804, 1, 1, 0, 500), +(12645, 9420544, 2040001, 1, 1, 0, 1000), +(12646, 9420544, 2040004, 1, 1, 0, 1000), +(12647, 9420544, 2040301, 1, 1, 0, 1000), +(12648, 9420544, 2040401, 1, 1, 0, 1000), +(12649, 9420544, 2040501, 1, 1, 0, 1000), +(12650, 9420544, 2040504, 1, 1, 0, 1000), +(12651, 9420544, 2040516, 1, 1, 0, 1000), +(12652, 9420544, 2040513, 1, 1, 0, 1000), +(12653, 9420544, 2040601, 1, 1, 0, 1000), +(12654, 9420544, 2040701, 1, 1, 0, 1000), +(12655, 9420544, 2040704, 1, 1, 0, 1000), +(12656, 9420544, 2040707, 1, 1, 0, 1000), +(12657, 9420544, 2040801, 1, 1, 0, 1000), +(12658, 9420544, 2040901, 1, 1, 0, 1000), +(12659, 9420544, 2290098, 1, 1, 0, 4000), +(12660, 9420544, 2290015, 1, 1, 0, 4000), +(12661, 9420544, 2290027, 1, 1, 0, 4000), +(12662, 9420544, 2290089, 1, 1, 0, 4000), +(12663, 9420544, 2290054, 1, 1, 0, 4000), +(12664, 9420544, 2290119, 1, 1, 0, 4000), +(12665, 9420544, 2290002, 1, 1, 0, 4000), +(12666, 9420544, 2290022, 1, 1, 0, 4000), +(12667, 9420544, 2290034, 1, 1, 0, 4000), +(12668, 9420544, 2290105, 1, 1, 0, 4000), +(12669, 9420544, 2290110, 1, 1, 0, 4000), +(12670, 9420544, 2290094, 1, 1, 0, 4000), +(12671, 9420544, 2290052, 1, 1, 0, 4000), +(12672, 9420544, 1002926, 1, 1, 0, 300000), +(12673, 9420544, 1002926, 1, 1, 0, 300000), +(12674, 9420544, 1002926, 1, 1, 0, 300000), +(12675, 9420544, 1002926, 1, 1, 0, 300000), +(12676, 9420544, 1002926, 1, 1, 0, 300000), +(12677, 9420549, 1032031, 1, 1, 0, 3000), +(12678, 9420549, 2043001, 1, 1, 0, 1000), +(12679, 9420549, 2020013, 1, 1, 0, 333333), +(12680, 9420549, 2020014, 1, 1, 0, 100000), +(12681, 9420549, 1302056, 1, 1, 0, 3000), +(12682, 9420549, 1312030, 1, 1, 0, 3000), +(12683, 9420549, 1322045, 1, 1, 0, 3000), +(12684, 9420549, 1332051, 1, 1, 0, 25000), +(12685, 9420549, 1332052, 1, 1, 0, 25000), +(12686, 9420549, 1372010, 1, 1, 0, 3000), +(12687, 9420549, 1382035, 1, 1, 0, 3000), +(12688, 9420549, 1402035, 1, 1, 0, 3000), +(12689, 9420549, 1422027, 1, 1, 0, 3000), +(12690, 9420549, 1412021, 1, 1, 0, 3000), +(12691, 9420549, 1432030, 1, 1, 0, 25000), +(12692, 9420549, 1452020, 1, 1, 0, 25000), +(12693, 9420549, 1462015, 1, 1, 0, 25000), +(12694, 9420549, 1462016, 1, 1, 0, 25000), +(12695, 9420549, 1472053, 1, 1, 0, 13000), +(12696, 9420549, 1452019, 1, 1, 0, 25000), +(12697, 9420549, 1442044, 1, 1, 0, 3000), +(12698, 9420549, 1492012, 1, 1, 0, 333333), +(12699, 9420549, 1482012, 1, 1, 0, 333333), +(12700, 9420549, 2043101, 1, 1, 0, 1000), +(12701, 9420549, 2043201, 1, 1, 0, 1000), +(12702, 9420549, 2043301, 1, 1, 0, 1000), +(12703, 9420549, 2043701, 1, 1, 0, 1000), +(12704, 9420549, 2043801, 1, 1, 0, 1000), +(12705, 9420549, 2044001, 1, 1, 0, 1000), +(12706, 9420549, 2044101, 1, 1, 0, 1000), +(12707, 9420549, 2044301, 1, 1, 0, 1000), +(12708, 9420549, 2044201, 1, 1, 0, 1000), +(12709, 9420549, 2044401, 1, 1, 0, 1000), +(12710, 9420549, 2044501, 1, 1, 0, 1000), +(12711, 9420549, 2044601, 1, 1, 0, 1000), +(12712, 9420549, 2044701, 1, 1, 0, 1000), +(12713, 9420549, 2040804, 1, 1, 0, 500), +(12714, 9420549, 2040001, 1, 1, 0, 1000), +(12715, 9420549, 2040004, 1, 1, 0, 1000), +(12716, 9420549, 2040301, 1, 1, 0, 1000), +(12717, 9420549, 2040401, 1, 1, 0, 1000), +(12718, 9420549, 2040501, 1, 1, 0, 1000), +(12719, 9420549, 2040504, 1, 1, 0, 1000), +(12720, 9420549, 2040516, 1, 1, 0, 1000), +(12721, 9420549, 2040513, 1, 1, 0, 1000), +(12722, 9420549, 2040601, 1, 1, 0, 1000), +(12723, 9420549, 2040701, 1, 1, 0, 1000), +(12724, 9420549, 2040704, 1, 1, 0, 1000), +(12725, 9420549, 2040707, 1, 1, 0, 1000), +(12726, 9420549, 2040801, 1, 1, 0, 1000), +(12727, 9420549, 2040901, 1, 1, 0, 1000), +(12728, 9420549, 2290098, 1, 1, 0, 4000), +(12729, 9420549, 2290015, 1, 1, 0, 4000), +(12730, 9420549, 2290027, 1, 1, 0, 4000), +(12731, 9420549, 2290089, 1, 1, 0, 4000), +(12732, 9420549, 2290054, 1, 1, 0, 4000), +(12733, 9420549, 2290119, 1, 1, 0, 4000), +(12734, 9420549, 2290002, 1, 1, 0, 4000), +(12735, 9420549, 2290022, 1, 1, 0, 4000), +(12736, 9420549, 2290034, 1, 1, 0, 4000), +(12737, 9420549, 2290105, 1, 1, 0, 4000), +(12738, 9420549, 2290110, 1, 1, 0, 4000), +(12739, 9420549, 2290094, 1, 1, 0, 4000), +(12740, 9420549, 2290052, 1, 1, 0, 4000), +(12741, 9420549, 4001242, 1, 1, 0, 300000), +(12742, 9420549, 1002927, 1, 1, 0, 300000), +(12743, 9420549, 1002927, 1, 1, 0, 300000), +(12744, 9420549, 1002927, 1, 1, 0, 300000), +(12745, 9420549, 1002927, 1, 1, 0, 300000), +(12746, 8140700, 2290126, 1, 1, 0, 1500), +(12747, 8500002, 2290126, 1, 1, 0, 40000), +(12748, 8150300, 2290127, 1, 1, 0, 1500), +(12749, 8220004, 2290127, 1, 1, 0, 15000), +(12750, 8180001, 2290128, 1, 1, 0, 15000), +(12751, 8150302, 2290128, 1, 1, 0, 1500), +(12752, 8200001, 2290129, 1, 1, 0, 1500), +(12753, 8500002, 2290129, 1, 1, 0, 40000), +(12754, 8180000, 2290130, 1, 1, 0, 15000), +(12755, 8190004, 2290130, 1, 1, 0, 1500), +(12756, 8200002, 2290131, 1, 1, 0, 1500), +(12757, 8220005, 2290131, 1, 1, 0, 15000), +(12758, 8800002, 2280015, 1, 1, 0, 50000), +(12759, 8220005, 2290136, 1, 1, 0, 15000), +(12760, 8200003, 2290136, 1, 1, 0, 1500), +(12761, 8200007, 2290136, 1, 1, 0, 1500), +(12762, 8810018, 2290137, 1, 1, 0, 45000), +(12763, 8200012, 2290137, 1, 1, 0, 1500), +(12764, 8800002, 2280016, 1, 1, 0, 45000), +(12765, 8220006, 2290138, 1, 1, 0, 15000), +(12766, 8200006, 2290138, 1, 1, 0, 1500), +(12767, 8200012, 2290139, 1, 1, 0, 1500), +(12768, 8810018, 2290139, 1, 1, 0, 45000), +(12769, 8800002, 2280014, 1, 1, 0, 45000), +(12770, 8200004, 2290134, 1, 1, 0, 1500), +(12771, 8220004, 2290134, 1, 1, 0, 15000), +(12772, 8220006, 2290135, 1, 1, 0, 15000), +(12773, 8150200, 2290135, 1, 1, 0, 1500), +(12774, 8800002, 2280013, 1, 1, 0, 45000), +(12775, 8140600, 2290132, 1, 1, 0, 1500), +(12776, 851000, 2290132, 1, 1, 0, 15000), +(12777, 8520000, 2290132, 1, 1, 0, 15000), +(12778, 8810018, 2290133, 1, 1, 0, 45000), +(12779, 8200008, 2290133, 1, 1, 0, 1500), +(12780, 6130200, 4031171, 1, 1, 7101, 100000), +(12781, 8141100, 4031171, 1, 1, 7101, 100000), +(12782, 8142000, 4031171, 1, 1, 7101, 100000), +(12783, 8143000, 4031171, 1, 1, 7101, 100000), +(12784, 8160000, 4031171, 1, 1, 7101, 100000), +(12785, 8170000, 4031171, 1, 1, 7101, 100000), +(12786, 9500127, 4031171, 1, 1, 7101, 100000), +(12787, 9500135, 4031171, 1, 1, 7101, 100000), +(12788, 9500136, 4031171, 1, 1, 7101, 100000), +(12789, 8141000, 4031171, 1, 1, 7101, 100000), +(12790, 8140300, 4031171, 1, 1, 7101, 100000), +(12791, 8140200, 4031171, 1, 1, 7101, 100000), +(12792, 6230300, 4031171, 1, 1, 7101, 100000), +(12793, 6230400, 4031171, 1, 1, 7101, 100000), +(12794, 6230500, 4031171, 1, 1, 7101, 100000), +(12795, 6300100, 4031171, 1, 1, 7101, 100000), +(12796, 6400100, 4031171, 1, 1, 7101, 100000), +(12797, 7130010, 4031171, 1, 1, 7101, 100000), +(12798, 7130300, 4031171, 1, 1, 7101, 100000), +(12799, 7140000, 4031171, 1, 1, 7101, 100000), +(12800, 9500137, 4031171, 1, 1, 7101, 100000); + +CREATE TABLE IF NOT EXISTS `drop_data_global` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `continent` int(11) NOT NULL, + `dropType` tinyint(1) NOT NULL DEFAULT '0', + `itemid` int(11) NOT NULL DEFAULT '0', + `minimum_quantity` int(11) NOT NULL DEFAULT '1', + `maximum_quantity` int(11) NOT NULL DEFAULT '1', + `questid` int(11) NOT NULL DEFAULT '0', + `chance` int(11) NOT NULL DEFAULT '0', + `comments` varchar(45) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `mobid` (`continent`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5 ; + +INSERT INTO `drop_data_global` (`id`, `continent`, `dropType`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`, `comments`) VALUES +(1, 0, 0, 4031865, 1, 1, 0, 150000, 'NX Card 100 PTS'), +(2, 0, 0, 4031866, 1, 1, 0, 90000, 'NX Card 250 PTS'), +(3, 0, 0, 4001126, 1, 2, 0, 10000, 'Maple Leaves'), +(4, 0, 0, 5072000, 1, 1, 0, 3000, 'Super Megaphones.'); + +CREATE TABLE IF NOT EXISTS `dueyitems` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `PackageId` int(10) unsigned NOT NULL DEFAULT '0', + `itemid` int(10) unsigned NOT NULL DEFAULT '0', + `quantity` int(10) unsigned NOT NULL DEFAULT '0', + `upgradeslots` int(11) DEFAULT '0', + `level` int(11) DEFAULT '0', + `str` int(11) DEFAULT '0', + `dex` int(11) DEFAULT '0', + `int` int(11) DEFAULT '0', + `luk` int(11) DEFAULT '0', + `hp` int(11) DEFAULT '0', + `mp` int(11) DEFAULT '0', + `watk` int(11) DEFAULT '0', + `matk` int(11) DEFAULT '0', + `wdef` int(11) DEFAULT '0', + `mdef` int(11) DEFAULT '0', + `acc` int(11) DEFAULT '0', + `avoid` int(11) DEFAULT '0', + `hands` int(11) DEFAULT '0', + `speed` int(11) DEFAULT '0', + `jump` int(11) DEFAULT '0', + `owner` varchar(13) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `PackageId` (`PackageId`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `dueypackages` ( + `PackageId` int(10) unsigned NOT NULL AUTO_INCREMENT, + `RecieverId` int(10) unsigned NOT NULL, + `SenderName` varchar(13) NOT NULL, + `Mesos` int(10) unsigned DEFAULT '0', + `TimeStamp` varchar(10) NOT NULL, + `Checked` tinyint(1) unsigned DEFAULT '1', + `Type` tinyint(1) unsigned NOT NULL, + PRIMARY KEY (`PackageId`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `eventstats` ( + `characterid` int(11) unsigned NOT NULL, + `name` varchar(11) NOT NULL DEFAULT '0' COMMENT '0', + `info` int(11) NOT NULL, + PRIMARY KEY (`characterid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE IF NOT EXISTS `famelog` ( + `famelogid` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL DEFAULT '0', + `characterid_to` int(11) NOT NULL DEFAULT '0', + `when` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`famelogid`), + KEY `characterid` (`characterid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `family_character` ( + `cid` int(11) NOT NULL, + `familyid` int(11) NOT NULL, + `rank` int(11) NOT NULL, + `reputation` int(11) NOT NULL, + `todaysrep` int(11) NOT NULL, + `totaljuniors` int(11) NOT NULL, + `name` varchar(255) NOT NULL, + `juniorsadded` int(11) NOT NULL, + `totalreputation` int(11) NOT NULL, + PRIMARY KEY (`cid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +CREATE TABLE IF NOT EXISTS `gifts` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `to` int(11) NOT NULL, + `from` varchar(13) NOT NULL, + `message` tinytext NOT NULL, + `sn` int(10) unsigned NOT NULL, + `ringid` int(10) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `gmlog` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `cid` int(11) NOT NULL DEFAULT '0', + `command` tinytext NOT NULL, + `when` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `guilds` ( + `guildid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `leader` int(10) unsigned NOT NULL DEFAULT '0', + `GP` int(10) unsigned NOT NULL DEFAULT '0', + `logo` int(10) unsigned DEFAULT NULL, + `logoColor` smallint(5) unsigned NOT NULL DEFAULT '0', + `name` varchar(45) NOT NULL, + `rank1title` varchar(45) NOT NULL DEFAULT 'Master', + `rank2title` varchar(45) NOT NULL DEFAULT 'Jr. Master', + `rank3title` varchar(45) NOT NULL DEFAULT 'Member', + `rank4title` varchar(45) NOT NULL DEFAULT 'Member', + `rank5title` varchar(45) NOT NULL DEFAULT 'Member', + `capacity` int(10) unsigned NOT NULL DEFAULT '10', + `logoBG` int(10) unsigned DEFAULT NULL, + `logoBGColor` smallint(5) unsigned NOT NULL DEFAULT '0', + `notice` varchar(101) DEFAULT NULL, + `signature` int(11) NOT NULL DEFAULT '0', + `allianceId` int(11) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guildid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `hiredmerchant` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ownerid` int(11) DEFAULT '0', + `itemid` int(10) unsigned NOT NULL DEFAULT '0', + `quantity` int(10) unsigned NOT NULL DEFAULT '0', + `upgradeslots` int(11) DEFAULT '0', + `level` int(11) DEFAULT '0', + `str` int(11) DEFAULT '0', + `dex` int(11) DEFAULT '0', + `int` int(11) DEFAULT '0', + `luk` int(11) DEFAULT '0', + `hp` int(11) DEFAULT '0', + `mp` int(11) DEFAULT '0', + `watk` int(11) DEFAULT '0', + `matk` int(11) DEFAULT '0', + `wdef` int(11) DEFAULT '0', + `mdef` int(11) DEFAULT '0', + `acc` int(11) DEFAULT '0', + `avoid` int(11) DEFAULT '0', + `hands` int(11) DEFAULT '0', + `speed` int(11) DEFAULT '0', + `jump` int(11) DEFAULT '0', + `owner` varchar(13) DEFAULT '', + `type` tinyint(1) unsigned NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `htsquads` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `channel` int(10) unsigned NOT NULL, + `leaderid` int(10) unsigned NOT NULL DEFAULT '0', + `status` int(10) unsigned NOT NULL DEFAULT '0', + `members` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `hwidbans` ( + `hwidbanid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `hwid` varchar(30) NOT NULL, + PRIMARY KEY (`hwidbanid`), + UNIQUE KEY `hwid_2` (`hwid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `inventoryequipment` ( + `inventoryequipmentid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `inventoryitemid` int(10) unsigned NOT NULL DEFAULT '0', + `upgradeslots` int(11) NOT NULL DEFAULT '0', + `level` int(11) NOT NULL DEFAULT '0', + `str` int(11) NOT NULL DEFAULT '0', + `dex` int(11) NOT NULL DEFAULT '0', + `int` int(11) NOT NULL DEFAULT '0', + `luk` int(11) NOT NULL DEFAULT '0', + `hp` int(11) NOT NULL DEFAULT '0', + `mp` int(11) NOT NULL DEFAULT '0', + `watk` int(11) NOT NULL DEFAULT '0', + `matk` int(11) NOT NULL DEFAULT '0', + `wdef` int(11) NOT NULL DEFAULT '0', + `mdef` int(11) NOT NULL DEFAULT '0', + `acc` int(11) NOT NULL DEFAULT '0', + `avoid` int(11) NOT NULL DEFAULT '0', + `hands` int(11) NOT NULL DEFAULT '0', + `speed` int(11) NOT NULL DEFAULT '0', + `jump` int(11) NOT NULL DEFAULT '0', + `locked` int(11) NOT NULL DEFAULT '0', + `vicious` int(11) unsigned NOT NULL DEFAULT '0', + `itemlevel` int(11) NOT NULL DEFAULT '1', + `itemexp` int(11) unsigned NOT NULL DEFAULT '0', + `ringid` int(11) NOT NULL DEFAULT '-1', + PRIMARY KEY (`inventoryequipmentid`), + KEY `INVENTORYITEMID` (`inventoryitemid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `inventoryitems` ( + `inventoryitemid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `type` tinyint(3) unsigned NOT NULL, + `characterid` int(11) DEFAULT NULL, + `accountid` int(11) DEFAULT NULL, + `itemid` int(11) NOT NULL DEFAULT '0', + `inventorytype` int(11) NOT NULL DEFAULT '0', + `position` int(11) NOT NULL DEFAULT '0', + `quantity` int(11) NOT NULL DEFAULT '0', + `owner` tinytext NOT NULL, + `petid` int(11) NOT NULL DEFAULT '-1', + `flag` int(11) NOT NULL, + `expiration` bigint(20) NOT NULL DEFAULT '-1', + `giftFrom` varchar(26) NOT NULL, + PRIMARY KEY (`inventoryitemid`), + KEY `CHARID` (`characterid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `ipbans` ( + `ipbanid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `ip` varchar(40) NOT NULL DEFAULT '', + PRIMARY KEY (`ipbanid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `iplog` ( + `iplogid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `accountid` int(11) NOT NULL DEFAULT '0', + `ip` varchar(30) NOT NULL DEFAULT '', + `login` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`iplogid`), + KEY `accountid` (`accountid`,`ip`), + KEY `ip` (`ip`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `keymap` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL DEFAULT '0', + `key` int(11) NOT NULL DEFAULT '0', + `type` int(11) NOT NULL DEFAULT '0', + `action` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `macbans` ( + `macbanid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `mac` varchar(30) NOT NULL, + PRIMARY KEY (`macbanid`), + UNIQUE KEY `mac_2` (`mac`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `macfilters` ( + `macfilterid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `filter` varchar(30) NOT NULL, + PRIMARY KEY (`macfilterid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `makercreatedata` ( + `id` tinyint(3) unsigned NOT NULL, + `itemid` int(11) NOT NULL, + `req_level` tinyint(3) unsigned NOT NULL, + `req_maker_level` tinyint(3) unsigned NOT NULL, + `req_meso` int(11) NOT NULL, + `req_item` int(11) NOT NULL, + `req_equip` int(11) NOT NULL, + `catalyst` int(11) NOT NULL, + `quantity` smallint(6) NOT NULL, + `tuc` tinyint(3) NOT NULL, + PRIMARY KEY (`id`,`itemid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +INSERT INTO `makercreatedata` (`id`, `itemid`, `req_level`, `req_maker_level`, `req_meso`, `req_item`, `req_equip`, `catalyst`, `quantity`, `tuc`) VALUES +(0, 2040727, 50, 1, 50000, 0, 1122013, 0, 1, 0), +(0, 2041058, 50, 1, 50000, 0, 1122013, 0, 1, 0), +(0, 4001174, 45, 1, 0, 4031966, 0, 0, 1, 0), +(0, 4001175, 50, 1, 0, 4031967, 0, 0, 1, 0), +(0, 4001176, 55, 1, 0, 4031968, 0, 0, 10, 0), +(0, 4001177, 60, 1, 0, 4031969, 0, 0, 100, 0), +(0, 4001178, 65, 1, 0, 4031970, 0, 0, 5, 0), +(0, 4001179, 70, 1, 0, 4031971, 0, 0, 7, 0), +(0, 4001180, 75, 2, 0, 4031972, 0, 0, 1, 0), +(0, 4001181, 80, 2, 0, 4031973, 0, 0, 1, 0), +(0, 4001182, 85, 2, 0, 4031974, 0, 0, 6, 0), +(0, 4001183, 90, 2, 0, 4031975, 0, 0, 30, 0), +(0, 4001184, 95, 2, 0, 4031976, 0, 0, 2, 0), +(0, 4001185, 100, 2, 0, 4031977, 0, 0, 1, 0), +(0, 4001186, 105, 3, 0, 4031978, 0, 0, 1, 0), +(0, 4031980, 105, 2, 0, 4031979, 0, 0, 1, 0), +(0, 4250000, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250001, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250002, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250100, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250101, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250102, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250200, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250201, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250202, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250300, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250301, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250302, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250400, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250401, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250402, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250500, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250501, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250502, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250600, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250601, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250602, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250700, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250701, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250702, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250800, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250801, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250802, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4250900, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4250901, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4250902, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4251000, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4251001, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4251002, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4251100, 45, 1, 100000, 0, 0, 0, 1, 0), +(0, 4251101, 45, 1, 300000, 0, 0, 0, 1, 0), +(0, 4251102, 45, 2, 500000, 0, 0, 0, 1, 0), +(0, 4251300, 75, 2, 150000, 0, 0, 0, 1, 0), +(0, 4251301, 75, 2, 450000, 0, 0, 0, 1, 0), +(0, 4251302, 75, 3, 750000, 0, 0, 0, 1, 0), +(0, 4251400, 75, 2, 150000, 0, 0, 0, 1, 0), +(0, 4251401, 75, 2, 450000, 0, 0, 0, 1, 0), +(0, 4251402, 75, 3, 750000, 0, 0, 0, 1, 0), +(1, 1002022, 50, 1, 55000, 0, 0, 4130018, 1, 1), +(1, 1002028, 45, 1, 50000, 0, 0, 4130018, 1, 1), +(1, 1002029, 55, 1, 75000, 0, 0, 4130018, 1, 1), +(1, 1002030, 65, 1, 85000, 0, 0, 4130018, 1, 1), +(1, 1002084, 55, 1, 75000, 0, 0, 4130018, 1, 1), +(1, 1002085, 45, 1, 45000, 0, 0, 4130018, 1, 1), +(1, 1002086, 45, 1, 37500, 0, 0, 4130018, 1, 1), +(1, 1002094, 65, 1, 85000, 0, 0, 4130018, 1, 1), +(1, 1002095, 65, 1, 85000, 0, 0, 4130018, 1, 1), +(1, 1002100, 50, 1, 55000, 0, 0, 4130018, 1, 1), +(1, 1002101, 50, 1, 55000, 0, 0, 4130018, 1, 1), +(1, 1002338, 75, 2, 133000, 0, 0, 4130018, 1, 2), +(1, 1002339, 75, 2, 133000, 0, 0, 4130018, 1, 2), +(1, 1002340, 75, 2, 133000, 0, 0, 4130018, 1, 2), +(1, 1002377, 95, 2, 168000, 0, 0, 4130018, 1, 2), +(1, 1002378, 95, 2, 168000, 0, 0, 4130018, 1, 2), +(1, 1002379, 95, 2, 168000, 0, 0, 4130018, 1, 2), +(1, 1002528, 85, 2, 147000, 0, 0, 4130018, 1, 2), +(1, 1002529, 85, 2, 147000, 0, 0, 4130018, 1, 2), +(1, 1002530, 85, 2, 147000, 0, 0, 4130018, 1, 2), +(1, 1002531, 85, 2, 147000, 0, 0, 4130018, 1, 2), +(1, 1002532, 85, 2, 147000, 0, 0, 4130018, 1, 2), +(1, 1002551, 105, 3, 280000, 0, 0, 4130018, 1, 3), +(1, 1002776, 115, 3, 320000, 0, 0, 4130018, 1, 3), +(1, 1002790, 115, 3, 320000, 0, 0, 4130018, 1, 3), +(1, 1040087, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(1, 1040088, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(1, 1040089, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(1, 1040090, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1040091, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1040092, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1040093, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1040102, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(1, 1040103, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(1, 1040104, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(1, 1040111, 85, 2, 112000, 0, 0, 4130019, 1, 2), +(1, 1040112, 85, 2, 112000, 0, 0, 4130019, 1, 2), +(1, 1040113, 85, 2, 112000, 0, 0, 4130019, 1, 2), +(1, 1040120, 95, 2, 140000, 0, 0, 4130019, 1, 2), +(1, 1040121, 95, 2, 140000, 0, 0, 4130019, 1, 2), +(1, 1040122, 95, 2, 140000, 0, 0, 4130019, 1, 2), +(1, 1041087, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(1, 1041088, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(1, 1041089, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(1, 1041091, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1041092, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1041093, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(1, 1041097, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(1, 1041098, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(1, 1041099, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(1, 1041119, 85, 2, 133000, 0, 0, 4130019, 1, 2), +(1, 1041120, 85, 2, 133000, 0, 0, 4130019, 1, 2), +(1, 1041121, 85, 2, 133000, 0, 0, 4130019, 1, 2), +(1, 1041122, 95, 2, 140000, 0, 0, 4130019, 1, 2), +(1, 1041123, 95, 2, 140000, 0, 0, 4130019, 1, 2), +(1, 1041124, 95, 2, 140000, 0, 0, 4130019, 1, 2), +(1, 1050080, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1050081, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1050082, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1050083, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1051077, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1051078, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1051079, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1051080, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(1, 1052075, 105, 3, 320000, 0, 0, 4130021, 1, 3), +(1, 1052155, 115, 3, 380000, 0, 0, 4130021, 1, 3), +(1, 1052160, 115, 3, 380000, 0, 0, 4130021, 1, 3), +(1, 1060076, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(1, 1060077, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(1, 1060078, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(1, 1060079, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1060080, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1060081, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1060082, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1060090, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(1, 1060091, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(1, 1060092, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(1, 1060100, 85, 2, 98000, 0, 0, 4130020, 1, 2), +(1, 1060101, 85, 2, 98000, 0, 0, 4130020, 1, 2), +(1, 1060102, 85, 2, 98000, 0, 0, 4130020, 1, 2), +(1, 1060109, 95, 2, 126000, 0, 0, 4130020, 1, 2), +(1, 1060110, 95, 2, 126000, 0, 0, 4130020, 1, 2), +(1, 1060111, 95, 2, 126000, 0, 0, 4130020, 1, 2), +(1, 1061086, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(1, 1061087, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(1, 1061088, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(1, 1061090, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1061091, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1061092, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(1, 1061096, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(1, 1061097, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(1, 1061098, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(1, 1061118, 85, 2, 119000, 0, 0, 4130020, 1, 2), +(1, 1061119, 85, 2, 119000, 0, 0, 4130020, 1, 2), +(1, 1061120, 85, 2, 119000, 0, 0, 4130020, 1, 2), +(1, 1061121, 95, 2, 126000, 0, 0, 4130020, 1, 2), +(1, 1061122, 95, 2, 126000, 0, 0, 4130020, 1, 2), +(1, 1061123, 95, 2, 126000, 0, 0, 4130020, 1, 2), +(1, 1072132, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(1, 1072133, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(1, 1072134, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(1, 1072135, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(1, 1072147, 55, 1, 35000, 0, 0, 4130001, 1, 1), +(1, 1072148, 55, 1, 35000, 0, 0, 4130001, 1, 1), +(1, 1072149, 55, 1, 35000, 0, 0, 4130001, 1, 1), +(1, 1072154, 65, 1, 42500, 0, 0, 4130001, 1, 1), +(1, 1072155, 65, 1, 42500, 0, 0, 4130001, 1, 1), +(1, 1072156, 65, 1, 42500, 0, 0, 4130001, 1, 1), +(1, 1072196, 85, 2, 105000, 0, 0, 4130001, 1, 2), +(1, 1072197, 85, 2, 105000, 0, 0, 4130001, 1, 2), +(1, 1072198, 85, 2, 105000, 0, 0, 4130001, 1, 2), +(1, 1072210, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(1, 1072211, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(1, 1072212, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(1, 1072220, 95, 2, 126000, 0, 0, 4130001, 1, 2), +(1, 1072221, 95, 2, 126000, 0, 0, 4130001, 1, 2), +(1, 1072222, 95, 2, 126000, 0, 0, 4130001, 1, 2), +(1, 1072273, 105, 3, 210000, 0, 0, 4130001, 1, 3), +(1, 1072355, 115, 3, 240000, 0, 0, 4130001, 1, 3), +(1, 1072361, 115, 3, 240000, 0, 0, 4130001, 1, 3), +(1, 1082009, 45, 1, 45000, 0, 0, 4130000, 1, 1), +(1, 1082010, 45, 1, 50000, 0, 0, 4130000, 1, 1), +(1, 1082011, 45, 1, 55000, 0, 0, 4130000, 1, 1), +(1, 1082059, 55, 1, 60000, 0, 0, 4130000, 1, 1), +(1, 1082060, 55, 1, 65000, 0, 0, 4130000, 1, 1), +(1, 1082061, 55, 1, 70000, 0, 0, 4130000, 1, 1), +(1, 1082103, 65, 1, 75000, 0, 0, 4130000, 1, 1), +(1, 1082104, 65, 1, 80000, 0, 0, 4130000, 1, 1), +(1, 1082105, 65, 1, 85000, 0, 0, 4130000, 1, 1), +(1, 1082114, 75, 2, 147000, 0, 0, 4130000, 1, 2), +(1, 1082115, 75, 2, 150500, 0, 0, 4130000, 1, 2), +(1, 1082116, 75, 2, 154000, 0, 0, 4130000, 1, 2), +(1, 1082117, 75, 2, 154000, 0, 0, 4130000, 1, 2), +(1, 1082128, 85, 2, 168000, 0, 0, 4130000, 1, 2), +(1, 1082129, 85, 2, 171500, 0, 0, 4130000, 1, 2), +(1, 1082130, 85, 2, 175000, 0, 0, 4130000, 1, 2), +(1, 1082139, 95, 2, 189000, 0, 0, 4130000, 1, 2), +(1, 1082140, 95, 2, 192500, 0, 0, 4130000, 1, 2), +(1, 1082141, 95, 2, 196000, 0, 0, 4130000, 1, 2), +(1, 1082168, 105, 3, 300000, 0, 0, 4130000, 1, 3), +(1, 1082234, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(1, 1082239, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(1, 1092004, 45, 1, 75000, 0, 0, 4130022, 1, 1), +(1, 1092009, 55, 1, 90000, 0, 0, 4130022, 1, 1), +(1, 1092010, 55, 1, 95000, 0, 0, 4130022, 1, 1), +(1, 1092011, 55, 1, 95000, 0, 0, 4130022, 1, 1), +(1, 1092015, 65, 1, 100000, 0, 0, 4130022, 1, 1), +(1, 1092016, 65, 1, 105000, 0, 0, 4130022, 1, 1), +(1, 1092017, 65, 1, 105000, 0, 0, 4130022, 1, 1), +(1, 1092023, 75, 2, 154000, 0, 0, 4130022, 1, 2), +(1, 1092024, 75, 2, 161000, 0, 0, 4130022, 1, 2), +(1, 1092025, 75, 2, 161000, 0, 0, 4130022, 1, 2), +(1, 1092026, 85, 2, 168000, 0, 0, 4130022, 1, 2), +(1, 1092027, 85, 2, 175000, 0, 0, 4130022, 1, 2), +(1, 1092028, 85, 2, 175000, 0, 0, 4130022, 1, 2), +(1, 1092036, 95, 2, 182000, 0, 0, 4130022, 1, 2), +(1, 1092037, 95, 2, 189000, 0, 0, 4130022, 1, 2), +(1, 1092038, 95, 2, 196000, 0, 0, 4130022, 1, 2), +(1, 1092058, 115, 3, 350000, 0, 0, 4130022, 1, 3), +(1, 1092060, 105, 3, 210000, 0, 0, 4130022, 1, 3), +(1, 1302010, 45, 1, 60000, 0, 0, 4130002, 1, 1), +(1, 1302011, 55, 1, 75000, 0, 0, 4130002, 1, 1), +(1, 1302012, 65, 1, 125000, 0, 0, 4130002, 1, 1), +(1, 1302018, 75, 2, 210000, 0, 0, 4130002, 1, 2), +(1, 1302023, 85, 2, 245000, 0, 0, 4130002, 1, 2), +(1, 1302056, 95, 2, 336000, 0, 0, 4130002, 1, 2), +(1, 1302059, 105, 3, 550000, 0, 0, 4130002, 1, 3), +(1, 1302081, 115, 3, 680000, 0, 0, 4130002, 1, 3), +(1, 1302086, 115, 3, 680000, 0, 0, 4130002, 1, 3), +(1, 1312008, 45, 1, 70000, 0, 0, 4130003, 1, 1), +(1, 1312009, 55, 1, 95000, 0, 0, 4130003, 1, 1), +(1, 1312010, 65, 1, 150000, 0, 0, 4130003, 1, 1), +(1, 1312011, 75, 2, 245000, 0, 0, 4130003, 1, 2), +(1, 1312015, 85, 2, 280000, 0, 0, 4130003, 1, 2), +(1, 1312030, 95, 2, 329000, 0, 0, 4130003, 1, 2), +(1, 1312031, 105, 3, 530000, 0, 0, 4130003, 1, 3), +(1, 1312037, 115, 3, 580000, 0, 0, 4130003, 1, 3), +(1, 1312038, 115, 3, 580000, 0, 0, 4130003, 1, 3), +(1, 1322017, 45, 1, 70000, 0, 0, 4130004, 1, 1), +(1, 1322018, 55, 1, 95000, 0, 0, 4130004, 1, 1), +(1, 1322019, 65, 1, 125000, 0, 0, 4130004, 1, 1), +(1, 1322020, 70, 1, 150000, 0, 0, 4130004, 1, 1), +(1, 1322028, 75, 2, 245000, 0, 0, 4130004, 1, 2), +(1, 1322029, 85, 2, 280000, 0, 0, 4130004, 1, 2), +(1, 1322045, 95, 2, 329000, 0, 0, 4130004, 1, 2), +(1, 1322052, 105, 3, 480000, 0, 0, 4130004, 1, 3), +(1, 1322060, 115, 3, 490000, 0, 0, 4130004, 1, 3), +(1, 1322061, 115, 3, 490000, 0, 0, 4130004, 1, 3), +(1, 1402003, 45, 1, 100000, 0, 0, 4130005, 1, 1), +(1, 1402004, 75, 2, 210000, 0, 0, 4130005, 1, 2), +(1, 1402005, 85, 2, 280000, 0, 0, 4130005, 1, 2), +(1, 1402011, 55, 1, 115000, 0, 0, 4130005, 1, 1), +(1, 1402012, 65, 1, 130000, 0, 0, 4130005, 1, 1), +(1, 1402015, 75, 2, 210000, 0, 0, 4130005, 1, 2), +(1, 1402016, 85, 2, 280000, 0, 0, 4130005, 1, 2), +(1, 1402035, 95, 2, 329000, 0, 0, 4130005, 1, 2), +(1, 1402036, 105, 3, 550000, 0, 0, 4130005, 1, 3), +(1, 1402046, 115, 3, 650000, 0, 0, 4130005, 1, 3), +(1, 1402047, 115, 3, 650000, 0, 0, 4130005, 1, 3), +(1, 1412003, 45, 1, 70000, 0, 0, 4130006, 1, 1), +(1, 1412007, 55, 1, 95000, 0, 0, 4130006, 1, 1), +(1, 1412008, 65, 1, 125000, 0, 0, 4130006, 1, 1), +(1, 1412009, 75, 2, 217000, 0, 0, 4130006, 1, 2), +(1, 1412010, 85, 2, 259000, 0, 0, 4130006, 1, 2), +(1, 1412021, 95, 2, 343000, 0, 0, 4130006, 1, 2), +(1, 1412026, 105, 3, 520000, 0, 0, 4130006, 1, 3), +(1, 1412033, 115, 3, 650000, 0, 0, 4130006, 1, 3), +(1, 1412034, 115, 3, 650000, 0, 0, 4130006, 1, 3), +(1, 1422005, 45, 1, 75000, 0, 0, 4130007, 1, 1), +(1, 1422009, 55, 1, 95000, 0, 0, 4130007, 1, 1), +(1, 1422010, 65, 1, 125000, 0, 0, 4130007, 1, 1), +(1, 1422012, 75, 2, 217000, 0, 0, 4130007, 1, 2), +(1, 1422013, 85, 2, 259000, 0, 0, 4130007, 1, 2), +(1, 1422027, 95, 2, 315000, 0, 0, 4130007, 1, 2), +(1, 1422028, 105, 3, 510000, 0, 0, 4130007, 1, 3), +(1, 1422037, 115, 3, 560000, 0, 0, 4130007, 1, 3), +(1, 1422038, 115, 3, 560000, 0, 0, 4130007, 1, 3), +(1, 1432004, 45, 1, 75000, 0, 0, 4130008, 1, 1), +(1, 1432006, 55, 1, 95000, 0, 0, 4130008, 1, 1), +(1, 1432007, 65, 1, 125000, 0, 0, 4130008, 1, 1), +(1, 1432010, 75, 2, 217000, 0, 0, 4130008, 1, 2), +(1, 1432011, 85, 2, 259000, 0, 0, 4130008, 1, 2), +(1, 1432030, 95, 2, 343000, 0, 0, 4130008, 1, 2), +(1, 1432038, 105, 3, 530000, 0, 0, 4130008, 1, 3), +(1, 1432047, 115, 3, 570000, 0, 0, 4130008, 1, 3), +(1, 1432049, 115, 3, 570000, 0, 0, 4130008, 1, 3), +(1, 1442005, 45, 1, 75000, 0, 0, 4130009, 1, 1), +(1, 1442008, 65, 1, 150000, 0, 0, 4130009, 1, 1), +(1, 1442010, 55, 1, 125000, 0, 0, 4130009, 1, 1), +(1, 1442019, 75, 2, 245000, 0, 0, 4130009, 1, 2), +(1, 1442020, 85, 2, 315000, 0, 0, 4130009, 1, 2), +(1, 1442044, 95, 2, 329000, 0, 0, 4130009, 1, 2), +(1, 1442045, 105, 3, 570000, 0, 0, 4130009, 1, 3), +(1, 1442063, 115, 3, 620000, 0, 0, 4130009, 1, 3), +(1, 1442067, 115, 3, 620000, 0, 0, 4130009, 1, 3), +(2, 1002215, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(2, 1002216, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(2, 1002217, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(2, 1002218, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(2, 1002242, 55, 1, 25000, 0, 0, 4130018, 1, 1), +(2, 1002243, 55, 1, 25000, 0, 0, 4130018, 1, 1), +(2, 1002244, 55, 1, 25000, 0, 0, 4130018, 1, 1), +(2, 1002245, 55, 1, 25000, 0, 0, 4130018, 1, 1), +(2, 1002246, 55, 1, 25000, 0, 0, 4130018, 1, 1), +(2, 1002252, 65, 1, 40000, 0, 0, 4130018, 1, 1), +(2, 1002253, 65, 1, 40000, 0, 0, 4130018, 1, 1), +(2, 1002254, 65, 1, 40000, 0, 0, 4130018, 1, 1), +(2, 1002271, 75, 2, 66500, 0, 0, 4130018, 1, 2), +(2, 1002272, 75, 2, 66500, 0, 0, 4130018, 1, 2), +(2, 1002273, 75, 2, 66500, 0, 0, 4130018, 1, 2), +(2, 1002274, 75, 2, 66500, 0, 0, 4130018, 1, 2), +(2, 1002363, 85, 2, 77000, 0, 0, 4130018, 1, 2), +(2, 1002364, 85, 2, 77000, 0, 0, 4130018, 1, 2), +(2, 1002365, 85, 2, 77000, 0, 0, 4130018, 1, 2), +(2, 1002366, 85, 2, 77000, 0, 0, 4130018, 1, 2), +(2, 1002398, 95, 2, 87500, 0, 0, 4130018, 1, 2), +(2, 1002399, 95, 2, 87500, 0, 0, 4130018, 1, 2), +(2, 1002400, 95, 2, 87500, 0, 0, 4130018, 1, 2), +(2, 1002401, 95, 2, 87500, 0, 0, 4130018, 1, 2), +(2, 1002773, 105, 3, 150000, 0, 0, 4130018, 1, 3), +(2, 1002777, 115, 3, 170000, 0, 0, 4130018, 1, 3), +(2, 1002791, 115, 3, 170000, 0, 0, 4130018, 1, 3), +(2, 1050045, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1050046, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1050047, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1050048, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1050049, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1050053, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1050054, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1050055, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1050056, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1050067, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1050068, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1050069, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1050070, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1050072, 73, 2, 112000, 0, 0, 4130021, 1, 2), +(2, 1050073, 73, 2, 112000, 0, 0, 4130021, 1, 2), +(2, 1050074, 73, 2, 112000, 0, 0, 4130021, 1, 2), +(2, 1050092, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1050093, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1050094, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1050095, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1050102, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1050103, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1050104, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1050105, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1051030, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1051031, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1051032, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1051033, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1051034, 43, 1, 45000, 0, 0, 4130021, 1, 1), +(2, 1051044, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1051045, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1051046, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1051047, 53, 1, 50000, 0, 0, 4130021, 1, 1), +(2, 1051052, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1051053, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1051054, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1051055, 63, 1, 60000, 0, 0, 4130021, 1, 1), +(2, 1051056, 73, 2, 112000, 0, 0, 4130021, 1, 2), +(2, 1051057, 73, 2, 112000, 0, 0, 4130021, 1, 2), +(2, 1051058, 73, 2, 112000, 0, 0, 4130021, 1, 2), +(2, 1051094, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1051095, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1051096, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1051097, 83, 2, 140000, 0, 0, 4130021, 1, 2), +(2, 1051101, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1051102, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1051103, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1051104, 93, 2, 168000, 0, 0, 4130021, 1, 2), +(2, 1052076, 103, 3, 290000, 0, 0, 4130021, 1, 3), +(2, 1052156, 115, 3, 340000, 0, 0, 4130021, 1, 3), +(2, 1052161, 115, 3, 340000, 0, 0, 4130021, 1, 3), +(2, 1072136, 55, 1, 30000, 0, 0, 4130001, 1, 1), +(2, 1072137, 55, 1, 30000, 0, 0, 4130001, 1, 1), +(2, 1072138, 55, 1, 30000, 0, 0, 4130001, 1, 1), +(2, 1072139, 55, 1, 30000, 0, 0, 4130001, 1, 1), +(2, 1072140, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(2, 1072141, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(2, 1072142, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(2, 1072143, 45, 1, 27500, 0, 0, 4130001, 1, 1), +(2, 1072157, 65, 1, 40000, 0, 0, 4130001, 1, 1), +(2, 1072158, 65, 1, 40000, 0, 0, 4130001, 1, 1), +(2, 1072159, 65, 1, 40000, 0, 0, 4130001, 1, 1), +(2, 1072160, 65, 1, 40000, 0, 0, 4130001, 1, 1), +(2, 1072177, 75, 2, 70000, 0, 0, 4130001, 1, 2), +(2, 1072178, 75, 2, 70000, 0, 0, 4130001, 1, 2), +(2, 1072179, 75, 2, 70000, 0, 0, 4130001, 1, 2), +(2, 1072206, 85, 2, 84000, 0, 0, 4130001, 1, 2), +(2, 1072207, 85, 2, 84000, 0, 0, 4130001, 1, 2), +(2, 1072208, 85, 2, 84000, 0, 0, 4130001, 1, 2), +(2, 1072209, 85, 2, 84000, 0, 0, 4130001, 1, 2), +(2, 1072223, 95, 2, 98000, 0, 0, 4130001, 1, 2), +(2, 1072224, 95, 2, 98000, 0, 0, 4130001, 1, 2), +(2, 1072225, 95, 2, 98000, 0, 0, 4130001, 1, 2), +(2, 1072226, 95, 2, 98000, 0, 0, 4130001, 1, 2), +(2, 1072268, 105, 3, 180000, 0, 0, 4130001, 1, 3), +(2, 1072356, 115, 3, 220000, 0, 0, 4130001, 1, 3), +(2, 1072362, 115, 3, 220000, 0, 0, 4130001, 1, 3), +(2, 1082080, 45, 1, 50000, 0, 0, 4130000, 1, 1), +(2, 1082081, 45, 1, 40000, 0, 0, 4130000, 1, 1), +(2, 1082082, 45, 1, 45000, 0, 0, 4130000, 1, 1), +(2, 1082086, 55, 1, 52500, 0, 0, 4130000, 1, 1), +(2, 1082087, 55, 1, 57500, 0, 0, 4130000, 1, 1), +(2, 1082088, 55, 1, 62500, 0, 0, 4130000, 1, 1), +(2, 1082098, 65, 1, 70000, 0, 0, 4130000, 1, 1), +(2, 1082099, 65, 1, 72500, 0, 0, 4130000, 1, 1), +(2, 1082100, 65, 1, 75000, 0, 0, 4130000, 1, 1), +(2, 1082121, 75, 2, 140000, 0, 0, 4130000, 1, 2), +(2, 1082122, 75, 2, 143500, 0, 0, 4130000, 1, 2), +(2, 1082123, 75, 2, 147000, 0, 0, 4130000, 1, 2), +(2, 1082131, 85, 2, 161000, 0, 0, 4130000, 1, 2), +(2, 1082132, 85, 2, 164500, 0, 0, 4130000, 1, 2), +(2, 1082133, 85, 2, 164500, 0, 0, 4130000, 1, 2), +(2, 1082134, 85, 2, 168000, 0, 0, 4130000, 1, 2), +(2, 1082151, 95, 2, 182000, 0, 0, 4130000, 1, 2), +(2, 1082152, 95, 2, 185500, 0, 0, 4130000, 1, 2), +(2, 1082153, 95, 2, 185500, 0, 0, 4130000, 1, 2), +(2, 1082154, 95, 2, 189000, 0, 0, 4130000, 1, 2), +(2, 1082164, 105, 3, 300000, 0, 0, 4130000, 1, 3), +(2, 1082235, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(2, 1082240, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(2, 1092057, 115, 3, 350000, 0, 0, 4130022, 1, 3), +(2, 1372007, 43, 1, 100000, 0, 0, 4130010, 1, 1), +(2, 1372009, 83, 2, 227500, 0, 0, 4130010, 1, 2), +(2, 1372010, 93, 2, 252000, 0, 0, 4130010, 1, 2), +(2, 1372014, 53, 1, 115000, 0, 0, 4130010, 1, 1), +(2, 1372015, 63, 1, 130000, 0, 0, 4130010, 1, 1), +(2, 1372016, 73, 2, 203000, 0, 0, 4130010, 1, 2), +(2, 1372032, 103, 3, 460000, 0, 0, 4130010, 1, 3), +(2, 1372044, 115, 3, 510000, 0, 0, 4130010, 1, 3), +(2, 1372045, 115, 3, 510000, 0, 0, 4130010, 1, 3), +(2, 1382006, 50, 1, 75000, 0, 0, 4130011, 1, 1), +(2, 1382007, 60, 1, 100000, 0, 0, 4130011, 1, 1), +(2, 1382008, 80, 2, 217000, 0, 0, 4130011, 1, 2), +(2, 1382010, 70, 1, 125000, 0, 0, 4130011, 1, 1), +(2, 1382035, 90, 2, 266000, 0, 0, 4130011, 1, 2), +(2, 1382036, 105, 3, 470000, 0, 0, 4130011, 1, 3), +(2, 1382057, 115, 3, 520000, 0, 0, 4130011, 1, 3), +(2, 1382059, 115, 3, 520000, 0, 0, 4130011, 1, 3), +(4, 1002211, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(4, 1002212, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(4, 1002213, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(4, 1002214, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(4, 1002267, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(4, 1002268, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(4, 1002269, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(4, 1002270, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(4, 1002275, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(4, 1002276, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(4, 1002277, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(4, 1002278, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(4, 1002286, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(4, 1002287, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(4, 1002288, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(4, 1002289, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(4, 1002402, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(4, 1002403, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(4, 1002404, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(4, 1002405, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(4, 1002406, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(4, 1002407, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(4, 1002408, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(4, 1002547, 105, 3, 150000, 0, 0, 4130018, 1, 3), +(4, 1002778, 115, 3, 170000, 0, 0, 4130018, 1, 3), +(4, 1002792, 115, 3, 170000, 0, 0, 4130018, 1, 3), +(4, 1050051, 45, 1, 47500, 0, 0, 4130021, 1, 1), +(4, 1050052, 45, 1, 47500, 0, 0, 4130021, 1, 1), +(4, 1050058, 55, 1, 52500, 0, 0, 4130021, 1, 1), +(4, 1050059, 55, 1, 52500, 0, 0, 4130021, 1, 1), +(4, 1050060, 55, 1, 52500, 0, 0, 4130021, 1, 1), +(4, 1050061, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1050062, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1050063, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1050064, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1050075, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1050076, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1050077, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1050078, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1050088, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1050089, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1050090, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1050091, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1050106, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(4, 1050107, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(4, 1050108, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(4, 1051037, 45, 1, 47500, 0, 0, 4130021, 1, 1), +(4, 1051038, 45, 1, 47500, 0, 0, 4130021, 1, 1), +(4, 1051039, 45, 1, 47500, 0, 0, 4130021, 1, 1), +(4, 1051041, 55, 1, 52500, 0, 0, 4130021, 1, 1), +(4, 1051042, 55, 1, 52500, 0, 0, 4130021, 1, 1), +(4, 1051043, 55, 1, 52500, 0, 0, 4130021, 1, 1), +(4, 1051062, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1051063, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1051064, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1051065, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(4, 1051066, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1051067, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1051068, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1051069, 75, 2, 98000, 0, 0, 4130021, 1, 2), +(4, 1051082, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1051083, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1051084, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1051085, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(4, 1051105, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(4, 1051106, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(4, 1051107, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(4, 1052071, 105, 3, 300000, 0, 0, 4130021, 1, 3), +(4, 1052157, 115, 3, 360000, 0, 0, 4130021, 1, 3), +(4, 1052162, 115, 3, 360000, 0, 0, 4130021, 1, 3), +(4, 1072122, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(4, 1072123, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(4, 1072124, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(4, 1072125, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(4, 1072144, 55, 1, 32500, 0, 0, 4130001, 1, 1), +(4, 1072145, 55, 1, 32500, 0, 0, 4130001, 1, 1), +(4, 1072146, 55, 1, 32500, 0, 0, 4130001, 1, 1), +(4, 1072164, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(4, 1072165, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(4, 1072166, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(4, 1072167, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(4, 1072182, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(4, 1072183, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(4, 1072184, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(4, 1072185, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(4, 1072203, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(4, 1072204, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(4, 1072205, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(4, 1072227, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(4, 1072228, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(4, 1072229, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(4, 1072269, 105, 3, 180000, 0, 0, 4130001, 1, 3), +(4, 1072357, 115, 3, 200000, 0, 0, 4130001, 1, 3), +(4, 1072363, 115, 3, 200000, 0, 0, 4130001, 1, 3), +(4, 1082083, 45, 1, 52500, 0, 0, 4130000, 1, 1), +(4, 1082084, 45, 1, 42500, 0, 0, 4130000, 1, 1), +(4, 1082085, 45, 1, 47500, 0, 0, 4130000, 1, 1), +(4, 1082089, 55, 1, 55000, 0, 0, 4130000, 1, 1), +(4, 1082090, 55, 1, 60000, 0, 0, 4130000, 1, 1), +(4, 1082091, 55, 1, 65000, 0, 0, 4130000, 1, 1), +(4, 1082106, 65, 1, 70000, 0, 0, 4130000, 1, 1), +(4, 1082107, 65, 1, 75000, 0, 0, 4130000, 1, 1), +(4, 1082108, 65, 1, 80000, 0, 0, 4130000, 1, 1), +(4, 1082109, 75, 2, 140000, 0, 0, 4130000, 1, 2), +(4, 1082110, 75, 2, 143500, 0, 0, 4130000, 1, 2), +(4, 1082111, 75, 2, 143500, 0, 0, 4130000, 1, 2), +(4, 1082112, 75, 2, 147000, 0, 0, 4130000, 1, 2), +(4, 1082125, 85, 2, 161000, 0, 0, 4130000, 1, 2), +(4, 1082126, 85, 2, 164500, 0, 0, 4130000, 1, 2), +(4, 1082127, 85, 2, 168000, 0, 0, 4130000, 1, 2), +(4, 1082158, 95, 2, 182000, 0, 0, 4130000, 1, 2), +(4, 1082159, 95, 2, 185500, 0, 0, 4130000, 1, 2), +(4, 1082160, 95, 2, 189000, 0, 0, 4130000, 1, 2), +(4, 1082163, 105, 3, 300000, 0, 0, 4130000, 1, 3), +(4, 1082236, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(4, 1082241, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(4, 1452004, 55, 1, 125000, 0, 0, 4130012, 1, 1), +(4, 1452008, 45, 1, 100000, 0, 0, 4130012, 1, 1), +(4, 1452009, 65, 1, 150000, 0, 0, 4130012, 1, 1), +(4, 1452010, 65, 1, 150000, 0, 0, 4130012, 1, 1), +(4, 1452011, 65, 1, 150000, 0, 0, 4130012, 1, 1), +(4, 1452012, 75, 2, 245000, 0, 0, 4130012, 1, 2), +(4, 1452013, 75, 2, 245000, 0, 0, 4130012, 1, 2), +(4, 1452014, 75, 2, 245000, 0, 0, 4130012, 1, 2), +(4, 1452015, 75, 2, 245000, 0, 0, 4130012, 1, 2), +(4, 1452017, 85, 2, 280000, 0, 0, 4130012, 1, 2), +(4, 1452019, 95, 2, 315000, 0, 0, 4130012, 1, 2), +(4, 1452020, 95, 2, 315000, 0, 0, 4130012, 1, 2), +(4, 1452021, 95, 2, 315000, 0, 0, 4130012, 1, 2), +(4, 1452044, 105, 3, 500000, 0, 0, 4130012, 1, 3), +(4, 1452057, 115, 3, 550000, 0, 0, 4130012, 1, 3), +(4, 1452059, 115, 3, 550000, 0, 0, 4130012, 1, 3), +(4, 1462007, 45, 1, 85000, 0, 0, 4130013, 1, 1), +(4, 1462008, 55, 1, 120000, 0, 0, 4130013, 1, 1), +(4, 1462009, 65, 1, 150000, 0, 0, 4130013, 1, 1), +(4, 1462010, 75, 2, 245000, 0, 0, 4130013, 1, 2), +(4, 1462011, 75, 2, 245000, 0, 0, 4130013, 1, 2), +(4, 1462012, 75, 2, 245000, 0, 0, 4130013, 1, 2), +(4, 1462013, 75, 2, 245000, 0, 0, 4130013, 1, 2), +(4, 1462015, 95, 2, 315000, 0, 0, 4130013, 1, 2), +(4, 1462016, 95, 2, 315000, 0, 0, 4130013, 1, 2), +(4, 1462017, 95, 2, 315000, 0, 0, 4130013, 1, 2), +(4, 1462018, 85, 2, 280000, 0, 0, 4130013, 1, 2), +(4, 1462039, 105, 3, 500000, 0, 0, 4130013, 1, 3), +(4, 1462050, 115, 3, 550000, 0, 0, 4130013, 1, 3), +(4, 1462051, 115, 3, 550000, 0, 0, 4130013, 1, 3), +(8, 1002207, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(8, 1002208, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(8, 1002209, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(8, 1002210, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(8, 1002247, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(8, 1002248, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(8, 1002249, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(8, 1002281, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(8, 1002282, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(8, 1002283, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(8, 1002284, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(8, 1002285, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(8, 1002323, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(8, 1002324, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(8, 1002325, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(8, 1002326, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(8, 1002327, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(8, 1002328, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(8, 1002329, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(8, 1002330, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(8, 1002380, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(8, 1002381, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(8, 1002382, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(8, 1002383, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(8, 1002550, 105, 3, 150000, 0, 0, 4130018, 1, 3), +(8, 1002779, 115, 3, 190000, 0, 0, 4130018, 1, 3), +(8, 1002793, 115, 3, 190000, 0, 0, 4130018, 1, 3), +(8, 1040094, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1040095, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1040096, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1040097, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1040098, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(8, 1040099, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(8, 1040100, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(8, 1040105, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1040106, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1040107, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1040108, 75, 2, 98000, 0, 0, 4130019, 1, 2), +(8, 1040109, 75, 2, 98000, 0, 0, 4130019, 1, 2), +(8, 1040110, 75, 2, 98000, 0, 0, 4130019, 1, 2), +(8, 1040115, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1040116, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1040117, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1040118, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1041077, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1041078, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1041079, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1041080, 45, 1, 37500, 0, 0, 4130019, 1, 1), +(8, 1041094, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(8, 1041095, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(8, 1041096, 55, 1, 45000, 0, 0, 4130019, 1, 1), +(8, 1041100, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1041101, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1041102, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1041103, 65, 1, 50000, 0, 0, 4130019, 1, 1), +(8, 1041105, 75, 2, 98000, 0, 0, 4130019, 1, 2), +(8, 1041106, 75, 2, 98000, 0, 0, 4130019, 1, 2), +(8, 1041107, 75, 2, 98000, 0, 0, 4130019, 1, 2), +(8, 1041115, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1041116, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1041117, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1041118, 85, 2, 126000, 0, 0, 4130019, 1, 2), +(8, 1050096, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1050097, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1050098, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1050099, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1051090, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1051091, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1051092, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1051093, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(8, 1052072, 105, 3, 300000, 0, 0, 4130021, 1, 3), +(8, 1052158, 115, 3, 360000, 0, 0, 4130021, 1, 3), +(8, 1052163, 115, 3, 360000, 0, 0, 4130021, 1, 3), +(8, 1060083, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1060084, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1060085, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1060086, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1060087, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(8, 1060088, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(8, 1060089, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(8, 1060093, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1060094, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1060095, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1060097, 75, 2, 84000, 0, 0, 4130020, 1, 2), +(8, 1060098, 75, 2, 84000, 0, 0, 4130020, 1, 2), +(8, 1060099, 75, 2, 84000, 0, 0, 4130020, 1, 2), +(8, 1060104, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1060105, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1060106, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1060107, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1061076, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1061077, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1061078, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1061079, 45, 1, 30000, 0, 0, 4130020, 1, 1), +(8, 1061093, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(8, 1061094, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(8, 1061095, 55, 1, 37500, 0, 0, 4130020, 1, 1), +(8, 1061099, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1061100, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1061101, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1061102, 65, 1, 45000, 0, 0, 4130020, 1, 1), +(8, 1061104, 75, 2, 84000, 0, 0, 4130020, 1, 2), +(8, 1061105, 75, 2, 84000, 0, 0, 4130020, 1, 2), +(8, 1061106, 75, 2, 84000, 0, 0, 4130020, 1, 2), +(8, 1061114, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1061115, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1061116, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1061117, 85, 2, 112000, 0, 0, 4130020, 1, 2), +(8, 1072128, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(8, 1072129, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(8, 1072130, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(8, 1072131, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(8, 1072150, 55, 1, 32500, 0, 0, 4130001, 1, 1), +(8, 1072151, 55, 1, 32500, 0, 0, 4130001, 1, 1), +(8, 1072152, 55, 1, 35000, 0, 0, 4130001, 1, 1), +(8, 1072161, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(8, 1072162, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(8, 1072163, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(8, 1072172, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(8, 1072173, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(8, 1072174, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(8, 1072192, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(8, 1072193, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(8, 1072194, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(8, 1072195, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(8, 1072213, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(8, 1072214, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(8, 1072215, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(8, 1072216, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(8, 1072272, 105, 3, 195000, 0, 0, 4130001, 1, 3), +(8, 1072358, 115, 3, 225000, 0, 0, 4130001, 1, 3), +(8, 1072364, 115, 3, 225000, 0, 0, 4130001, 1, 3), +(8, 1082065, 45, 1, 42500, 0, 0, 4130000, 1, 1), +(8, 1082066, 45, 1, 47500, 0, 0, 4130000, 1, 1), +(8, 1082067, 45, 1, 45000, 0, 0, 4130000, 1, 1), +(8, 1082092, 55, 1, 55000, 0, 0, 4130000, 1, 1), +(8, 1082093, 55, 1, 60000, 0, 0, 4130000, 1, 1), +(8, 1082094, 55, 1, 65000, 0, 0, 4130000, 1, 1), +(8, 1082095, 65, 1, 75000, 0, 0, 4130000, 1, 1), +(8, 1082096, 65, 1, 80000, 0, 0, 4130000, 1, 1), +(8, 1082097, 65, 1, 85000, 0, 0, 4130000, 1, 1), +(8, 1082118, 75, 2, 140000, 0, 0, 4130000, 1, 2), +(8, 1082119, 75, 2, 143500, 0, 0, 4130000, 1, 2), +(8, 1082120, 75, 2, 147000, 0, 0, 4130000, 1, 2), +(8, 1082135, 95, 2, 182000, 0, 0, 4130000, 1, 2), +(8, 1082136, 95, 2, 185500, 0, 0, 4130000, 1, 2), +(8, 1082137, 95, 2, 185500, 0, 0, 4130000, 1, 2), +(8, 1082138, 95, 2, 189000, 0, 0, 4130000, 1, 2), +(8, 1082142, 85, 2, 150500, 0, 0, 4130000, 1, 2), +(8, 1082143, 85, 2, 150500, 0, 0, 4130000, 1, 2), +(8, 1082144, 85, 2, 150500, 0, 0, 4130000, 1, 2), +(8, 1082167, 105, 3, 300000, 0, 0, 4130000, 1, 3), +(8, 1082237, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(8, 1082242, 115, 3, 330000, 0, 0, 4130000, 1, 3), +(8, 1092059, 115, 3, 350000, 0, 0, 4130022, 1, 3), +(8, 1332003, 45, 1, 110000, 0, 0, 4130014, 1, 1), +(8, 1332015, 55, 1, 125000, 0, 0, 4130014, 1, 1), +(8, 1332016, 45, 1, 110000, 0, 0, 4130014, 1, 1), +(8, 1332017, 55, 1, 125000, 0, 0, 4130014, 1, 1), +(8, 1332018, 65, 1, 140000, 0, 0, 4130014, 1, 1), +(8, 1332019, 65, 1, 140000, 0, 0, 4130014, 1, 1), +(8, 1332022, 75, 2, 217000, 0, 0, 4130014, 1, 2), +(8, 1332023, 75, 2, 217000, 0, 0, 4130014, 1, 2), +(8, 1332026, 85, 2, 238000, 0, 0, 4130014, 1, 2), +(8, 1332027, 85, 2, 238000, 0, 0, 4130014, 1, 2), +(8, 1332049, 105, 3, 450000, 0, 0, 4130014, 1, 3), +(8, 1332050, 105, 3, 450000, 0, 0, 4130014, 1, 3), +(8, 1332051, 95, 2, 280000, 0, 0, 4130014, 1, 2), +(8, 1332052, 95, 2, 280000, 0, 0, 4130014, 1, 2), +(8, 1332073, 115, 3, 500000, 0, 0, 4130014, 1, 3), +(8, 1332074, 115, 3, 510000, 0, 0, 4130014, 1, 3), +(8, 1332075, 115, 3, 500000, 0, 0, 4130014, 1, 3), +(8, 1332076, 115, 3, 500000, 0, 0, 4130014, 1, 3), +(8, 1472018, 45, 1, 50000, 0, 0, 4130015, 1, 1), +(8, 1472019, 45, 1, 52500, 0, 0, 4130015, 1, 1), +(8, 1472020, 45, 1, 52500, 0, 0, 4130015, 1, 1), +(8, 1472021, 45, 1, 55000, 0, 0, 4130015, 1, 1), +(8, 1472022, 55, 1, 125000, 0, 0, 4130015, 1, 1), +(8, 1472023, 55, 1, 127500, 0, 0, 4130015, 1, 1), +(8, 1472024, 55, 1, 127500, 0, 0, 4130015, 1, 1), +(8, 1472025, 55, 1, 130000, 0, 0, 4130015, 1, 1), +(8, 1472026, 65, 1, 150000, 0, 0, 4130015, 1, 1), +(8, 1472027, 65, 1, 152500, 0, 0, 4130015, 1, 1), +(8, 1472028, 65, 1, 152500, 0, 0, 4130015, 1, 1), +(8, 1472029, 65, 1, 155000, 0, 0, 4130015, 1, 1), +(8, 1472031, 75, 2, 280000, 0, 0, 4130015, 1, 2), +(8, 1472033, 85, 2, 315000, 0, 0, 4130015, 1, 2), +(8, 1472051, 105, 3, 570000, 0, 0, 4130015, 1, 3), +(8, 1472052, 105, 3, 570000, 0, 0, 4130015, 1, 3), +(8, 1472053, 95, 2, 357000, 0, 0, 4130015, 1, 2), +(8, 1472068, 115, 3, 630000, 0, 0, 4130015, 1, 3), +(8, 1472071, 115, 3, 630000, 0, 0, 4130015, 1, 3), +(16, 1002631, 45, 1, 20000, 0, 0, 4130018, 1, 1), +(16, 1002634, 55, 1, 27500, 0, 0, 4130018, 1, 1), +(16, 1002637, 65, 1, 42500, 0, 0, 4130018, 1, 1), +(16, 1002640, 75, 2, 70000, 0, 0, 4130018, 1, 2), +(16, 1002643, 85, 2, 80500, 0, 0, 4130018, 1, 2), +(16, 1002646, 95, 2, 91000, 0, 0, 4130018, 1, 2), +(16, 1002649, 105, 3, 150000, 0, 0, 4130018, 1, 3), +(16, 1002780, 115, 3, 170000, 0, 0, 4130018, 1, 3), +(16, 1002794, 115, 3, 170000, 0, 0, 4130018, 1, 3), +(16, 1052116, 45, 1, 47500, 0, 0, 4130021, 1, 1), +(16, 1052119, 55, 1, 50000, 0, 0, 4130021, 1, 1), +(16, 1052122, 65, 1, 57500, 0, 0, 4130021, 1, 1), +(16, 1052125, 75, 2, 126000, 0, 0, 4130021, 1, 2), +(16, 1052128, 85, 2, 140000, 0, 0, 4130021, 1, 2), +(16, 1052131, 95, 2, 168000, 0, 0, 4130021, 1, 2), +(16, 1052134, 105, 3, 300000, 0, 0, 4130021, 1, 3), +(16, 1052159, 115, 3, 360000, 0, 0, 4130021, 1, 3), +(16, 1052164, 115, 3, 360000, 0, 0, 4130021, 1, 3), +(16, 1072303, 45, 1, 25000, 0, 0, 4130001, 1, 1), +(16, 1072306, 55, 1, 32500, 0, 0, 4130001, 1, 1), +(16, 1072309, 65, 1, 45000, 0, 0, 4130001, 1, 1), +(16, 1072312, 75, 2, 77000, 0, 0, 4130001, 1, 2), +(16, 1072315, 85, 2, 98000, 0, 0, 4130001, 1, 2), +(16, 1072318, 95, 2, 119000, 0, 0, 4130001, 1, 2), +(16, 1072321, 105, 3, 180000, 0, 0, 4130001, 1, 3), +(16, 1072359, 115, 3, 200000, 0, 0, 4130001, 1, 3), +(16, 1072365, 115, 3, 200000, 0, 0, 4130001, 1, 3), +(16, 1082198, 45, 1, 42500, 0, 0, 4130000, 1, 1), +(16, 1082201, 55, 1, 55000, 0, 0, 4130000, 1, 1), +(16, 1082204, 65, 1, 75000, 0, 0, 4130000, 1, 1), +(16, 1082207, 75, 2, 140000, 0, 0, 4130000, 1, 2), +(16, 1082210, 85, 2, 161000, 0, 0, 4130000, 1, 2), +(16, 1082213, 95, 2, 185500, 0, 0, 4130000, 1, 2), +(16, 1082216, 105, 3, 300000, 0, 0, 4130000, 1, 3), +(16, 1082238, 115, 3, 335000, 0, 0, 4130000, 1, 3), +(16, 1082243, 115, 3, 335000, 0, 0, 4130000, 1, 3), +(16, 1482007, 45, 1, 65000, 0, 0, 4130016, 1, 1), +(16, 1482008, 55, 1, 120000, 0, 0, 4130016, 1, 1), +(16, 1482009, 65, 1, 150000, 0, 0, 4130016, 1, 1), +(16, 1482010, 75, 2, 245000, 0, 0, 4130016, 1, 2), +(16, 1482011, 85, 2, 273000, 0, 0, 4130016, 1, 2), +(16, 1482012, 95, 2, 308000, 0, 0, 4130016, 1, 2), +(16, 1482013, 105, 3, 510000, 0, 0, 4130016, 1, 3), +(16, 1482023, 115, 3, 560000, 0, 0, 4130016, 1, 3), +(16, 1482024, 115, 3, 560000, 0, 0, 4130016, 1, 3), +(16, 1492007, 45, 1, 70000, 0, 0, 4130017, 1, 1), +(16, 1492008, 55, 1, 125000, 0, 0, 4130017, 1, 1), +(16, 1492009, 65, 1, 155000, 0, 0, 4130017, 1, 1), +(16, 1492010, 75, 2, 245000, 0, 0, 4130017, 1, 2), +(16, 1492011, 85, 2, 280000, 0, 0, 4130017, 1, 2), +(16, 1492012, 95, 2, 315000, 0, 0, 4130017, 1, 2), +(16, 1492013, 105, 3, 520000, 0, 0, 4130017, 1, 3), +(16, 1492023, 115, 3, 570000, 0, 0, 4130017, 1, 3), +(16, 1492025, 115, 3, 570000, 0, 0, 4130017, 1, 3); + +CREATE TABLE IF NOT EXISTS `makerrecipedata` ( + `itemid` int(11) NOT NULL, + `req_item` int(11) NOT NULL, + `count` smallint(6) NOT NULL, + PRIMARY KEY (`itemid`,`req_item`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +INSERT INTO `makerrecipedata` (`itemid`, `req_item`, `count`) VALUES +(1002022, 4007001, 5), +(1002022, 4260000, 5), +(1002028, 4007001, 5), +(1002028, 4260000, 5), +(1002029, 4007006, 6), +(1002029, 4260001, 6), +(1002030, 4007001, 7), +(1002030, 4260002, 7), +(1002084, 4007002, 6), +(1002084, 4260001, 6), +(1002085, 4007002, 5), +(1002085, 4260000, 5), +(1002086, 4007000, 5), +(1002086, 4260000, 5), +(1002094, 4007000, 7), +(1002094, 4260002, 7), +(1002095, 4007002, 7), +(1002095, 4260002, 7), +(1002100, 4007000, 5), +(1002100, 4260000, 5), +(1002101, 4007003, 5), +(1002101, 4260000, 5), +(1002207, 4007006, 5), +(1002207, 4260000, 5), +(1002208, 4007002, 5), +(1002208, 4260000, 5), +(1002209, 4007003, 5), +(1002209, 4260000, 5), +(1002210, 4007004, 5), +(1002210, 4260000, 5), +(1002211, 4007002, 5), +(1002211, 4260000, 5), +(1002212, 4007006, 5), +(1002212, 4260000, 5), +(1002213, 4007003, 5), +(1002213, 4260000, 5), +(1002214, 4007007, 5), +(1002214, 4260000, 5), +(1002215, 4007006, 5), +(1002215, 4260000, 5), +(1002216, 4007002, 5), +(1002216, 4260000, 5), +(1002217, 4007004, 5), +(1002217, 4260000, 5), +(1002218, 4007007, 5), +(1002218, 4260000, 5), +(1002242, 4007006, 6), +(1002242, 4260001, 6), +(1002243, 4007002, 6), +(1002243, 4260001, 6), +(1002244, 4007003, 6), +(1002244, 4260001, 6), +(1002245, 4007001, 6), +(1002245, 4260001, 6), +(1002246, 4007007, 6), +(1002246, 4260001, 6), +(1002247, 4007000, 6), +(1002247, 4260001, 6), +(1002248, 4007001, 6), +(1002248, 4260001, 6), +(1002249, 4007007, 6), +(1002249, 4260001, 6), +(1002252, 4007006, 7), +(1002252, 4260002, 7), +(1002253, 4007002, 7), +(1002253, 4260002, 7), +(1002254, 4007007, 7), +(1002254, 4260002, 7), +(1002267, 4007006, 6), +(1002267, 4260001, 6), +(1002268, 4007000, 6), +(1002268, 4260001, 6), +(1002269, 4007001, 6), +(1002269, 4260001, 6), +(1002270, 4007007, 6), +(1002270, 4260001, 6), +(1002271, 4007003, 8), +(1002271, 4260003, 8), +(1002272, 4007002, 8), +(1002272, 4260003, 8), +(1002273, 4007005, 8), +(1002273, 4260003, 8), +(1002274, 4007007, 8), +(1002274, 4260003, 8), +(1002275, 4007002, 8), +(1002275, 4260003, 8), +(1002276, 4007006, 8), +(1002276, 4260003, 8), +(1002277, 4007003, 8), +(1002277, 4260003, 8), +(1002278, 4007007, 8), +(1002278, 4260003, 8), +(1002281, 4007000, 7), +(1002281, 4260002, 7), +(1002282, 4007002, 7), +(1002282, 4260002, 7), +(1002283, 4007005, 7), +(1002283, 4260002, 7), +(1002284, 4007001, 7), +(1002284, 4260002, 7), +(1002285, 4007006, 7), +(1002285, 4260002, 7), +(1002286, 4007002, 7), +(1002286, 4260002, 7), +(1002287, 4007001, 4), +(1002287, 4007004, 3), +(1002287, 4260002, 7), +(1002288, 4007003, 7), +(1002288, 4260002, 7), +(1002289, 4007007, 7), +(1002289, 4260002, 7), +(1002323, 4007003, 9), +(1002323, 4260004, 9), +(1002324, 4007000, 9), +(1002324, 4260004, 9), +(1002325, 4007005, 9), +(1002325, 4260004, 9), +(1002326, 4007006, 9), +(1002326, 4260004, 9), +(1002327, 4007000, 8), +(1002327, 4260003, 8), +(1002328, 4007003, 8), +(1002328, 4260003, 8), +(1002329, 4007006, 8), +(1002329, 4260003, 8), +(1002330, 4007007, 8), +(1002330, 4260003, 8), +(1002338, 4007006, 8), +(1002338, 4260003, 8), +(1002339, 4007002, 8), +(1002339, 4260003, 8), +(1002340, 4007007, 8), +(1002340, 4260003, 8), +(1002363, 4007003, 9), +(1002363, 4260004, 9), +(1002364, 4007002, 9), +(1002364, 4260004, 9), +(1002365, 4007006, 9), +(1002365, 4260004, 9), +(1002366, 4007007, 9), +(1002366, 4260004, 9), +(1002377, 4007003, 10), +(1002377, 4260005, 10), +(1002378, 4007002, 10), +(1002378, 4260005, 10), +(1002379, 4007007, 10), +(1002379, 4260005, 10), +(1002380, 4007003, 10), +(1002380, 4260005, 10), +(1002381, 4007002, 10), +(1002381, 4260005, 10), +(1002382, 4007006, 10), +(1002382, 4260005, 10), +(1002383, 4007007, 10), +(1002383, 4260005, 10), +(1002398, 4007003, 10), +(1002398, 4260005, 10), +(1002399, 4007002, 10), +(1002399, 4260005, 10), +(1002400, 4007006, 10), +(1002400, 4260005, 10), +(1002401, 4007007, 10), +(1002401, 4260005, 10), +(1002402, 4007006, 9), +(1002402, 4260004, 9), +(1002403, 4007002, 9), +(1002403, 4260004, 9), +(1002404, 4007003, 9), +(1002404, 4260004, 9), +(1002405, 4007007, 9), +(1002405, 4260004, 9), +(1002406, 4007006, 10), +(1002406, 4260005, 10), +(1002407, 4007002, 10), +(1002407, 4260005, 10), +(1002408, 4007003, 10), +(1002408, 4260005, 10), +(1002528, 4007003, 9), +(1002528, 4260004, 9), +(1002529, 4007002, 9), +(1002529, 4260004, 9), +(1002530, 4007006, 9), +(1002530, 4260004, 9), +(1002531, 4007001, 9), +(1002531, 4260004, 9), +(1002532, 4007007, 9), +(1002532, 4260004, 9), +(1002547, 4000244, 5), +(1002547, 4000245, 5), +(1002547, 4007006, 11), +(1002547, 4260006, 11), +(1002550, 4000244, 5), +(1002550, 4000245, 5), +(1002550, 4007007, 11), +(1002550, 4260006, 11), +(1002551, 4000244, 5), +(1002551, 4000245, 5), +(1002551, 4007002, 11), +(1002551, 4260006, 11), +(1002631, 4007000, 5), +(1002631, 4260000, 5), +(1002634, 4007005, 6), +(1002634, 4260001, 6), +(1002637, 4007007, 7), +(1002637, 4260002, 7), +(1002640, 4007002, 8), +(1002640, 4260003, 8), +(1002643, 4007006, 9), +(1002643, 4260004, 9), +(1002646, 4007007, 10), +(1002646, 4260005, 10), +(1002649, 4000244, 5), +(1002649, 4000245, 5), +(1002649, 4007007, 11), +(1002649, 4260006, 11), +(1002773, 4000244, 5), +(1002773, 4000245, 5), +(1002773, 4007004, 11), +(1002773, 4260006, 11), +(1002776, 4007001, 12), +(1002776, 4021010, 1), +(1002776, 4260007, 2), +(1002776, 4260008, 10), +(1002777, 4007002, 12), +(1002777, 4021010, 1), +(1002777, 4260007, 2), +(1002777, 4260008, 10), +(1002778, 4007005, 12), +(1002778, 4021010, 1), +(1002778, 4260007, 2), +(1002778, 4260008, 10), +(1002779, 4007005, 12), +(1002779, 4021010, 1), +(1002779, 4260007, 2), +(1002779, 4260008, 10), +(1002780, 4007006, 12), +(1002780, 4021010, 1), +(1002780, 4260007, 2), +(1002780, 4260008, 10), +(1002790, 4007001, 12), +(1002790, 4020009, 15), +(1002790, 4260007, 8), +(1002790, 4260008, 4), +(1002791, 4007002, 12), +(1002791, 4020009, 15), +(1002791, 4260007, 8), +(1002791, 4260008, 4), +(1002792, 4007005, 12), +(1002792, 4020009, 15), +(1002792, 4260007, 8), +(1002792, 4260008, 4), +(1002793, 4007005, 12), +(1002793, 4020009, 15), +(1002793, 4260007, 8), +(1002793, 4260008, 4), +(1002794, 4007006, 12), +(1002794, 4020009, 15), +(1002794, 4260007, 8), +(1002794, 4260008, 4), +(1040087, 4007002, 5), +(1040087, 4260000, 5), +(1040088, 4007004, 5), +(1040088, 4260000, 5), +(1040089, 4007007, 5), +(1040089, 4260000, 5), +(1040090, 4007003, 6), +(1040090, 4260001, 6), +(1040091, 4007006, 6), +(1040091, 4260001, 6), +(1040092, 4007002, 6), +(1040092, 4260001, 6), +(1040093, 4007007, 6), +(1040093, 4260001, 6), +(1040094, 4007006, 5), +(1040094, 4260000, 5), +(1040095, 4007002, 5), +(1040095, 4260000, 5), +(1040096, 4007004, 5), +(1040096, 4260000, 5), +(1040097, 4007003, 5), +(1040097, 4260000, 5), +(1040098, 4007001, 6), +(1040098, 4260001, 6), +(1040099, 4007004, 6), +(1040099, 4260001, 6), +(1040100, 4007007, 6), +(1040100, 4260001, 6), +(1040102, 4007000, 7), +(1040102, 4260002, 7), +(1040103, 4007002, 7), +(1040103, 4260002, 7), +(1040104, 4007005, 7), +(1040104, 4260002, 7), +(1040105, 4007000, 7), +(1040105, 4260002, 7), +(1040106, 4007002, 7), +(1040106, 4260002, 7), +(1040107, 4007007, 7), +(1040107, 4260002, 7), +(1040108, 4007003, 8), +(1040108, 4260003, 8), +(1040109, 4007006, 8), +(1040109, 4260003, 8), +(1040110, 4007007, 8), +(1040110, 4260003, 8), +(1040111, 4007003, 9), +(1040111, 4260004, 9), +(1040112, 4007002, 9), +(1040112, 4260004, 9), +(1040113, 4007007, 9), +(1040113, 4260004, 9), +(1040115, 4007003, 9), +(1040115, 4260004, 9), +(1040116, 4007000, 9), +(1040116, 4260004, 9), +(1040117, 4007005, 9), +(1040117, 4260004, 9), +(1040118, 4007006, 9), +(1040118, 4260004, 9), +(1040120, 4007003, 10), +(1040120, 4260005, 10), +(1040121, 4007002, 10), +(1040121, 4260005, 10), +(1040122, 4007007, 10), +(1040122, 4260005, 10), +(1041077, 4007005, 5), +(1041077, 4260000, 5), +(1041078, 4007002, 5), +(1041078, 4260000, 5), +(1041079, 4007004, 5), +(1041079, 4260000, 5), +(1041080, 4007006, 5), +(1041080, 4260000, 5), +(1041087, 4007006, 5), +(1041087, 4260000, 5), +(1041088, 4007001, 5), +(1041088, 4260000, 5), +(1041089, 4007007, 5), +(1041089, 4260000, 5), +(1041091, 4007003, 6), +(1041091, 4260001, 6), +(1041092, 4007006, 6), +(1041092, 4260001, 6), +(1041093, 4007002, 6), +(1041093, 4260001, 6), +(1041094, 4007001, 6), +(1041094, 4260001, 6), +(1041095, 4007006, 6), +(1041095, 4260001, 6), +(1041096, 4007007, 6), +(1041096, 4260001, 6), +(1041097, 4007002, 7), +(1041097, 4260002, 7), +(1041098, 4007005, 7), +(1041098, 4260002, 7), +(1041099, 4007006, 7), +(1041099, 4260002, 7), +(1041100, 4007005, 7), +(1041100, 4260002, 7), +(1041101, 4007002, 7), +(1041101, 4260002, 7), +(1041102, 4007006, 7), +(1041102, 4260002, 7), +(1041103, 4007006, 7), +(1041103, 4260002, 7), +(1041105, 4007003, 8), +(1041105, 4260003, 8), +(1041106, 4007006, 8), +(1041106, 4260003, 8), +(1041107, 4007007, 8), +(1041107, 4260003, 8), +(1041115, 4007003, 9), +(1041115, 4260004, 9), +(1041116, 4007000, 9), +(1041116, 4260004, 9), +(1041117, 4007005, 9), +(1041117, 4260004, 9), +(1041118, 4007006, 9), +(1041118, 4260004, 9), +(1041119, 4007003, 9), +(1041119, 4260004, 9), +(1041120, 4007005, 9), +(1041120, 4260004, 9), +(1041121, 4007007, 9), +(1041121, 4260004, 9), +(1041122, 4007003, 10), +(1041122, 4260005, 10), +(1041123, 4007005, 10), +(1041123, 4260005, 10), +(1041124, 4007007, 10), +(1041124, 4260005, 10), +(1050045, 4007002, 5), +(1050045, 4260000, 10), +(1050046, 4007006, 5), +(1050046, 4260000, 10), +(1050047, 4007004, 5), +(1050047, 4260000, 10), +(1050048, 4007001, 5), +(1050048, 4260000, 10), +(1050049, 4007007, 5), +(1050049, 4260000, 10), +(1050051, 4007006, 5), +(1050051, 4260000, 10), +(1050052, 4007002, 5), +(1050052, 4260000, 10), +(1050053, 4007002, 6), +(1050053, 4260001, 12), +(1050054, 4007006, 6), +(1050054, 4260001, 12), +(1050055, 4007001, 6), +(1050055, 4260001, 12), +(1050056, 4007007, 6), +(1050056, 4260001, 12), +(1050058, 4007005, 6), +(1050058, 4260001, 12), +(1050059, 4007002, 6), +(1050059, 4260001, 12), +(1050060, 4007006, 6), +(1050060, 4260001, 12), +(1050061, 4007002, 7), +(1050061, 4260002, 14), +(1050062, 4007001, 4), +(1050062, 4007004, 3), +(1050062, 4260002, 14), +(1050063, 4007003, 7), +(1050063, 4260002, 14), +(1050064, 4007007, 7), +(1050064, 4260002, 14), +(1050067, 4007002, 7), +(1050067, 4260002, 14), +(1050068, 4007006, 7), +(1050068, 4260002, 14), +(1050069, 4007000, 7), +(1050069, 4260002, 14), +(1050070, 4007007, 7), +(1050070, 4260002, 14), +(1050072, 4007003, 8), +(1050072, 4260003, 16), +(1050073, 4007002, 8), +(1050073, 4260003, 16), +(1050074, 4007007, 8), +(1050074, 4260003, 16), +(1050075, 4007006, 8), +(1050075, 4260003, 16), +(1050076, 4007002, 8), +(1050076, 4260003, 16), +(1050077, 4007003, 8), +(1050077, 4260003, 16), +(1050078, 4007007, 8), +(1050078, 4260003, 16), +(1050080, 4007003, 8), +(1050080, 4260003, 16), +(1050081, 4007006, 8), +(1050081, 4260003, 16), +(1050082, 4007002, 8), +(1050082, 4260003, 16), +(1050083, 4007007, 8), +(1050083, 4260003, 16), +(1050088, 4007006, 9), +(1050088, 4260004, 18), +(1050089, 4007002, 9), +(1050089, 4260004, 18), +(1050090, 4007003, 9), +(1050090, 4260004, 18), +(1050091, 4007007, 9), +(1050091, 4260004, 18), +(1050092, 4007003, 9), +(1050092, 4260004, 18), +(1050093, 4007002, 9), +(1050093, 4260004, 18), +(1050094, 4007006, 9), +(1050094, 4260004, 18), +(1050095, 4007007, 9), +(1050095, 4260004, 18), +(1050096, 4007003, 10), +(1050096, 4260005, 20), +(1050097, 4007002, 10), +(1050097, 4260005, 20), +(1050098, 4007006, 10), +(1050098, 4260005, 20), +(1050099, 4007007, 10), +(1050099, 4260005, 20), +(1050102, 4007003, 10), +(1050102, 4260005, 20), +(1050103, 4007002, 10), +(1050103, 4260005, 20), +(1050104, 4007006, 10), +(1050104, 4260005, 20), +(1050105, 4007007, 10), +(1050105, 4260005, 20), +(1050106, 4007003, 10), +(1050106, 4260005, 20), +(1050107, 4007002, 10), +(1050107, 4260005, 20), +(1050108, 4007006, 10), +(1050108, 4260005, 20), +(1051030, 4007007, 5), +(1051030, 4260000, 10), +(1051031, 4007001, 5), +(1051031, 4260000, 10), +(1051032, 4007002, 5), +(1051032, 4260000, 10), +(1051033, 4007006, 5), +(1051033, 4260000, 10), +(1051034, 4007004, 5), +(1051034, 4260000, 10), +(1051037, 4007002, 5), +(1051037, 4260000, 10), +(1051038, 4007003, 5), +(1051038, 4260000, 10), +(1051039, 4007006, 5), +(1051039, 4260000, 10), +(1051041, 4007006, 6), +(1051041, 4260001, 12), +(1051042, 4007002, 6), +(1051042, 4260001, 12), +(1051043, 4007004, 6), +(1051043, 4260001, 12), +(1051044, 4007002, 6), +(1051044, 4260001, 12), +(1051045, 4007006, 6), +(1051045, 4260001, 12), +(1051046, 4007001, 6), +(1051046, 4260001, 12), +(1051047, 4007007, 6), +(1051047, 4260001, 12), +(1051052, 4007002, 7), +(1051052, 4260002, 14), +(1051053, 4007006, 7), +(1051053, 4260002, 14), +(1051054, 4007000, 7), +(1051054, 4260002, 14), +(1051055, 4007007, 7), +(1051055, 4260002, 14), +(1051056, 4007003, 8), +(1051056, 4260003, 16), +(1051057, 4007005, 8), +(1051057, 4260003, 16), +(1051058, 4007007, 8), +(1051058, 4260003, 16), +(1051062, 4007002, 7), +(1051062, 4260002, 14), +(1051063, 4007001, 4), +(1051063, 4007004, 3), +(1051063, 4260002, 14), +(1051064, 4007003, 7), +(1051064, 4260002, 14), +(1051065, 4007007, 7), +(1051065, 4260002, 14), +(1051066, 4007006, 8), +(1051066, 4260003, 16), +(1051067, 4007002, 8), +(1051067, 4260003, 16), +(1051068, 4007003, 8), +(1051068, 4260003, 16), +(1051069, 4007007, 8), +(1051069, 4260003, 16), +(1051077, 4007004, 8), +(1051077, 4260003, 16), +(1051078, 4007006, 8), +(1051078, 4260003, 16), +(1051079, 4007002, 8), +(1051079, 4260003, 16), +(1051080, 4007007, 8), +(1051080, 4260003, 16), +(1051082, 4007006, 9), +(1051082, 4260004, 18), +(1051083, 4007002, 9), +(1051083, 4260004, 18), +(1051084, 4007003, 9), +(1051084, 4260004, 18), +(1051085, 4007007, 9), +(1051085, 4260004, 18), +(1051090, 4007003, 10), +(1051090, 4260005, 20), +(1051091, 4007002, 10), +(1051091, 4260005, 20), +(1051092, 4007006, 10), +(1051092, 4260005, 20), +(1051093, 4007007, 10), +(1051093, 4260005, 20), +(1051094, 4007003, 9), +(1051094, 4260004, 18), +(1051095, 4007002, 9), +(1051095, 4260004, 18), +(1051096, 4007006, 9), +(1051096, 4260004, 18), +(1051097, 4007007, 9), +(1051097, 4260004, 18), +(1051101, 4007003, 10), +(1051101, 4260005, 20), +(1051102, 4007002, 10), +(1051102, 4260005, 20), +(1051103, 4007006, 10), +(1051103, 4260005, 20), +(1051104, 4007007, 10), +(1051104, 4260005, 20), +(1051105, 4007003, 10), +(1051105, 4260005, 20), +(1051106, 4007002, 10), +(1051106, 4260005, 20), +(1051107, 4007006, 10), +(1051107, 4260005, 20), +(1052071, 4000244, 5), +(1052071, 4000245, 5), +(1052071, 4007006, 11), +(1052071, 4260006, 22), +(1052072, 4000244, 5), +(1052072, 4000245, 5), +(1052072, 4007007, 11), +(1052072, 4260006, 22), +(1052075, 4000244, 5), +(1052075, 4000245, 5), +(1052075, 4007002, 11), +(1052075, 4260006, 22), +(1052076, 4000244, 5), +(1052076, 4000245, 5), +(1052076, 4007007, 11), +(1052076, 4260006, 22), +(1052116, 4007003, 5), +(1052116, 4260000, 10), +(1052119, 4007007, 6), +(1052119, 4260001, 12), +(1052122, 4007006, 7), +(1052122, 4260002, 14), +(1052125, 4007001, 8), +(1052125, 4260003, 16), +(1052128, 4007001, 9), +(1052128, 4260004, 18), +(1052131, 4007006, 10), +(1052131, 4260005, 20), +(1052134, 4000244, 5), +(1052134, 4000245, 5), +(1052134, 4007007, 11), +(1052134, 4260006, 22), +(1052155, 4007005, 12), +(1052155, 4021010, 1), +(1052155, 4260007, 4), +(1052155, 4260008, 20), +(1052156, 4007002, 12), +(1052156, 4021010, 1), +(1052156, 4260007, 4), +(1052156, 4260008, 20), +(1052157, 4007005, 12), +(1052157, 4021010, 1), +(1052157, 4260007, 4), +(1052157, 4260008, 20), +(1052158, 4007005, 12), +(1052158, 4021010, 1), +(1052158, 4260007, 4), +(1052158, 4260008, 20), +(1052159, 4007006, 12), +(1052159, 4021010, 1), +(1052159, 4260007, 4), +(1052159, 4260008, 20), +(1052160, 4007005, 12), +(1052160, 4020009, 15), +(1052160, 4260007, 16), +(1052160, 4260008, 8), +(1052161, 4007002, 12), +(1052161, 4020009, 15), +(1052161, 4260007, 16), +(1052161, 4260008, 8), +(1052162, 4007005, 12), +(1052162, 4020009, 15), +(1052162, 4260007, 16), +(1052162, 4260008, 8), +(1052163, 4007005, 12), +(1052163, 4020009, 15), +(1052163, 4260007, 16), +(1052163, 4260008, 8), +(1052164, 4007006, 12), +(1052164, 4020009, 15), +(1052164, 4260007, 16), +(1052164, 4260008, 8), +(1060076, 4007002, 5), +(1060076, 4260000, 5), +(1060077, 4007004, 5), +(1060077, 4260000, 5), +(1060078, 4007007, 5), +(1060078, 4260000, 5), +(1060079, 4007003, 6), +(1060079, 4260001, 6), +(1060080, 4007006, 6), +(1060080, 4260001, 6), +(1060081, 4007002, 6), +(1060081, 4260001, 6), +(1060082, 4007007, 6), +(1060082, 4260001, 6), +(1060083, 4007006, 5), +(1060083, 4260000, 5), +(1060084, 4007002, 5), +(1060084, 4260000, 5), +(1060085, 4007004, 5), +(1060085, 4260000, 5), +(1060086, 4007003, 5), +(1060086, 4260000, 5), +(1060087, 4007001, 6), +(1060087, 4260001, 6), +(1060088, 4007004, 6), +(1060088, 4260001, 6), +(1060089, 4007007, 6), +(1060089, 4260001, 6), +(1060090, 4007000, 7), +(1060090, 4260002, 7), +(1060091, 4007002, 7), +(1060091, 4260002, 7), +(1060092, 4007005, 7), +(1060092, 4260002, 7), +(1060093, 4007000, 7), +(1060093, 4260002, 7), +(1060094, 4007002, 7), +(1060094, 4260002, 7), +(1060095, 4007007, 7), +(1060095, 4260002, 7), +(1060097, 4007003, 8), +(1060097, 4260003, 8), +(1060098, 4007006, 8), +(1060098, 4260003, 8), +(1060099, 4007007, 8), +(1060099, 4260003, 8), +(1060100, 4007003, 9), +(1060100, 4260004, 9), +(1060101, 4007002, 9), +(1060101, 4260004, 9), +(1060102, 4007007, 9), +(1060102, 4260004, 9), +(1060104, 4007003, 9), +(1060104, 4260004, 9), +(1060105, 4007000, 9), +(1060105, 4260004, 9), +(1060106, 4007005, 9), +(1060106, 4260004, 9), +(1060107, 4007006, 9), +(1060107, 4260004, 9), +(1060109, 4007003, 10), +(1060109, 4260005, 10), +(1060110, 4007002, 10), +(1060110, 4260005, 10), +(1060111, 4007007, 10), +(1060111, 4260005, 10), +(1061076, 4007005, 5), +(1061076, 4260000, 5), +(1061077, 4007002, 5), +(1061077, 4260000, 5), +(1061078, 4007004, 5), +(1061078, 4260000, 5), +(1061079, 4007006, 5), +(1061079, 4260000, 5), +(1061086, 4007006, 5), +(1061086, 4260000, 5), +(1061087, 4007001, 5), +(1061087, 4260000, 5), +(1061088, 4007007, 5), +(1061088, 4260000, 5), +(1061090, 4007003, 6), +(1061090, 4260001, 6), +(1061091, 4007006, 6), +(1061091, 4260001, 6), +(1061092, 4007002, 6), +(1061092, 4260001, 6), +(1061093, 4007001, 6), +(1061093, 4260001, 6), +(1061094, 4007006, 6), +(1061094, 4260001, 6), +(1061095, 4007007, 6), +(1061095, 4260001, 6), +(1061096, 4007002, 7), +(1061096, 4260002, 7), +(1061097, 4007005, 7), +(1061097, 4260002, 7), +(1061098, 4007006, 7), +(1061098, 4260002, 7), +(1061099, 4007005, 7), +(1061099, 4260002, 7), +(1061100, 4007002, 7), +(1061100, 4260002, 7), +(1061101, 4007006, 7), +(1061101, 4260002, 7), +(1061102, 4007006, 7), +(1061102, 4260002, 7), +(1061104, 4007003, 8), +(1061104, 4260003, 8), +(1061105, 4007006, 8), +(1061105, 4260003, 8), +(1061106, 4007007, 8), +(1061106, 4260003, 8), +(1061114, 4007003, 9), +(1061114, 4260004, 9), +(1061115, 4007000, 9), +(1061115, 4260004, 9), +(1061116, 4007005, 9), +(1061116, 4260004, 9), +(1061117, 4007006, 9), +(1061117, 4260004, 9), +(1061118, 4007003, 9), +(1061118, 4260004, 9), +(1061119, 4007005, 9), +(1061119, 4260004, 9), +(1061120, 4007006, 9), +(1061120, 4260004, 9), +(1061121, 4007003, 10), +(1061121, 4260005, 10), +(1061122, 4007005, 10), +(1061122, 4260005, 10), +(1061123, 4007007, 10), +(1061123, 4260005, 10), +(1072122, 4007000, 5), +(1072122, 4260000, 5), +(1072123, 4007003, 5), +(1072123, 4260000, 5), +(1072124, 4007002, 5), +(1072124, 4260000, 5), +(1072125, 4007005, 5), +(1072125, 4260000, 5), +(1072128, 4007002, 5), +(1072128, 4260000, 5), +(1072129, 4007003, 5), +(1072129, 4260000, 5), +(1072130, 4007006, 5), +(1072130, 4260000, 5), +(1072131, 4007005, 5), +(1072131, 4260000, 5), +(1072132, 4007003, 5), +(1072132, 4260000, 5), +(1072133, 4007002, 5), +(1072133, 4260000, 5), +(1072134, 4007005, 5), +(1072134, 4260000, 5), +(1072135, 4007004, 5), +(1072135, 4260000, 5), +(1072136, 4007001, 3), +(1072136, 4007006, 3), +(1072136, 4260001, 6), +(1072137, 4007003, 6), +(1072137, 4260001, 6), +(1072138, 4007004, 6), +(1072138, 4260001, 6), +(1072139, 4007002, 6), +(1072139, 4260001, 6), +(1072140, 4007001, 2), +(1072140, 4007006, 3), +(1072140, 4260000, 5), +(1072141, 4007002, 5), +(1072141, 4260000, 5), +(1072142, 4007005, 5), +(1072142, 4260000, 5), +(1072143, 4007003, 5), +(1072143, 4260000, 5), +(1072144, 4007006, 6), +(1072144, 4260001, 6), +(1072145, 4007002, 6), +(1072145, 4260001, 6), +(1072146, 4007003, 6), +(1072146, 4260001, 6), +(1072147, 4007002, 6), +(1072147, 4260001, 6), +(1072148, 4007005, 6), +(1072148, 4260001, 6), +(1072149, 4007006, 6), +(1072149, 4260001, 6), +(1072150, 4007006, 6), +(1072150, 4260001, 6), +(1072151, 4007004, 6), +(1072151, 4260001, 6), +(1072152, 4007007, 6), +(1072152, 4260001, 6), +(1072154, 4007002, 7), +(1072154, 4260002, 7), +(1072155, 4007005, 7), +(1072155, 4260002, 7), +(1072156, 4007007, 7), +(1072156, 4260002, 7), +(1072157, 4007002, 7), +(1072157, 4260002, 7), +(1072158, 4007006, 7), +(1072158, 4260002, 7), +(1072159, 4007000, 7), +(1072159, 4260002, 7), +(1072160, 4007004, 7), +(1072160, 4260002, 7), +(1072161, 4007005, 7), +(1072161, 4260002, 7), +(1072162, 4007002, 7), +(1072162, 4260002, 7), +(1072163, 4007006, 7), +(1072163, 4260002, 7), +(1072164, 4007002, 7), +(1072164, 4260002, 7), +(1072165, 4007001, 4), +(1072165, 4007004, 3), +(1072165, 4260002, 7), +(1072166, 4007003, 7), +(1072166, 4260002, 7), +(1072167, 4007007, 7), +(1072167, 4260002, 7), +(1072172, 4007003, 8), +(1072172, 4260003, 8), +(1072173, 4007006, 8), +(1072173, 4260003, 8), +(1072174, 4007007, 8), +(1072174, 4260003, 8), +(1072177, 4007003, 8), +(1072177, 4260003, 8), +(1072178, 4007005, 8), +(1072178, 4260003, 8), +(1072179, 4007007, 8), +(1072179, 4260003, 8), +(1072182, 4007002, 8), +(1072182, 4260003, 8), +(1072183, 4007006, 8), +(1072183, 4260003, 8), +(1072184, 4007003, 8), +(1072184, 4260003, 8), +(1072185, 4007007, 8), +(1072185, 4260003, 8), +(1072192, 4007003, 9), +(1072192, 4260004, 9), +(1072193, 4007000, 9), +(1072193, 4260004, 9), +(1072194, 4007005, 9), +(1072194, 4260004, 9), +(1072195, 4007006, 9), +(1072195, 4260004, 9), +(1072196, 4007003, 9), +(1072196, 4260004, 9), +(1072197, 4007005, 9), +(1072197, 4260004, 9), +(1072198, 4007007, 9), +(1072198, 4260004, 9), +(1072203, 4007006, 9), +(1072203, 4260004, 9), +(1072204, 4007003, 9), +(1072204, 4260004, 9), +(1072205, 4007007, 9), +(1072205, 4260004, 9), +(1072206, 4007002, 9), +(1072206, 4260004, 9), +(1072207, 4007003, 9), +(1072207, 4260004, 9), +(1072208, 4007006, 9), +(1072208, 4260004, 9), +(1072209, 4007007, 9), +(1072209, 4260004, 9), +(1072210, 4007006, 8), +(1072210, 4260003, 8), +(1072211, 4007002, 8), +(1072211, 4260003, 8), +(1072212, 4007007, 8), +(1072212, 4260003, 8), +(1072213, 4007001, 10), +(1072213, 4260005, 10), +(1072214, 4007002, 10), +(1072214, 4260005, 10), +(1072215, 4007006, 10), +(1072215, 4260005, 10), +(1072216, 4007007, 10), +(1072216, 4260005, 10), +(1072220, 4007003, 10), +(1072220, 4260005, 10), +(1072221, 4007002, 10), +(1072221, 4260005, 10), +(1072222, 4007007, 10), +(1072222, 4260005, 10), +(1072223, 4007003, 10), +(1072223, 4260005, 10), +(1072224, 4007002, 10), +(1072224, 4260005, 10), +(1072225, 4007006, 10), +(1072225, 4260005, 10), +(1072226, 4007007, 10), +(1072226, 4260005, 10), +(1072227, 4007006, 10), +(1072227, 4260005, 10), +(1072228, 4007002, 10), +(1072228, 4260005, 10), +(1072229, 4007003, 10), +(1072229, 4260005, 10), +(1072268, 4000244, 5), +(1072268, 4000245, 5), +(1072268, 4007002, 11), +(1072268, 4260006, 11), +(1072269, 4000244, 5), +(1072269, 4000245, 5), +(1072269, 4007006, 11), +(1072269, 4260006, 11), +(1072272, 4000244, 5), +(1072272, 4000245, 5), +(1072272, 4007007, 11), +(1072272, 4260006, 11), +(1072273, 4000244, 5), +(1072273, 4000245, 5), +(1072273, 4007002, 11), +(1072273, 4260006, 11), +(1072303, 4007000, 5), +(1072303, 4260000, 5), +(1072306, 4007007, 6), +(1072306, 4260001, 6), +(1072309, 4007007, 7), +(1072309, 4260002, 7), +(1072312, 4007002, 8), +(1072312, 4260003, 8), +(1072315, 4007007, 9), +(1072315, 4260004, 9), +(1072318, 4007007, 10), +(1072318, 4260005, 10), +(1072321, 4000244, 5), +(1072321, 4000245, 5), +(1072321, 4007007, 11), +(1072321, 4260006, 11), +(1072355, 4007007, 12), +(1072355, 4021010, 1), +(1072355, 4260007, 2), +(1072355, 4260008, 10), +(1072356, 4007004, 12), +(1072356, 4021010, 1), +(1072356, 4260007, 2), +(1072356, 4260008, 10), +(1072357, 4007005, 12), +(1072357, 4021010, 1), +(1072357, 4260007, 2), +(1072357, 4260008, 10), +(1072358, 4007005, 12), +(1072358, 4021010, 1), +(1072358, 4260007, 2), +(1072358, 4260008, 10), +(1072359, 4007006, 12), +(1072359, 4021010, 1), +(1072359, 4260007, 2), +(1072359, 4260008, 10), +(1072361, 4007007, 12), +(1072361, 4020009, 15), +(1072361, 4260007, 8), +(1072361, 4260008, 4), +(1072362, 4020009, 15), +(1072362, 4260007, 8), +(1072362, 4260008, 4), +(1072363, 4007004, 12), +(1072363, 4020009, 15), +(1072363, 4260007, 8), +(1072363, 4260008, 4), +(1072364, 4007005, 12), +(1072364, 4020009, 15), +(1072364, 4260007, 8), +(1072364, 4260008, 4), +(1072365, 4007006, 12), +(1072365, 4020009, 15), +(1072365, 4260007, 8), +(1072365, 4260008, 4), +(1082009, 4007001, 5), +(1082009, 4260000, 5), +(1082010, 4007007, 5), +(1082010, 4260000, 5), +(1082011, 4007004, 5), +(1082011, 4260000, 5), +(1082059, 4007000, 6), +(1082059, 4260001, 6), +(1082060, 4007002, 6), +(1082060, 4260001, 6), +(1082061, 4007007, 6), +(1082061, 4260001, 6), +(1082065, 4007002, 5), +(1082065, 4260000, 5), +(1082066, 4007004, 5), +(1082066, 4260000, 5), +(1082067, 4007006, 5), +(1082067, 4260000, 5), +(1082080, 4007007, 5), +(1082080, 4260000, 5), +(1082081, 4007006, 5), +(1082081, 4260000, 5), +(1082082, 4007002, 5), +(1082082, 4260000, 5), +(1082083, 4007007, 5), +(1082083, 4260000, 5), +(1082084, 4007002, 5), +(1082084, 4260000, 5), +(1082085, 4007006, 5), +(1082085, 4260000, 5), +(1082086, 4007001, 6), +(1082086, 4260001, 6), +(1082087, 4007004, 6), +(1082087, 4260001, 6), +(1082088, 4007007, 6), +(1082088, 4260001, 6), +(1082089, 4007004, 6), +(1082089, 4260001, 6), +(1082090, 4007006, 6), +(1082090, 4260001, 6), +(1082091, 4007007, 6), +(1082091, 4260001, 6), +(1082092, 4007000, 6), +(1082092, 4260001, 6), +(1082093, 4007001, 6), +(1082093, 4260001, 6), +(1082094, 4007004, 6), +(1082094, 4260001, 6), +(1082095, 4007000, 7), +(1082095, 4260002, 7), +(1082096, 4007001, 7), +(1082096, 4260002, 7), +(1082097, 4007004, 7), +(1082097, 4260002, 7), +(1082098, 4007000, 7), +(1082098, 4260002, 7), +(1082099, 4007002, 7), +(1082099, 4260002, 7), +(1082100, 4007007, 7), +(1082100, 4260002, 7), +(1082103, 4007000, 7), +(1082103, 4260002, 7), +(1082104, 4007002, 7), +(1082104, 4260002, 7), +(1082105, 4007007, 7), +(1082105, 4260002, 7), +(1082106, 4007002, 7), +(1082106, 4260002, 7), +(1082107, 4007004, 7), +(1082107, 4260002, 7), +(1082108, 4007007, 7), +(1082108, 4260002, 7), +(1082109, 4007006, 8), +(1082109, 4260003, 8), +(1082110, 4007002, 8), +(1082110, 4260003, 8), +(1082111, 4007003, 8), +(1082111, 4260003, 8), +(1082112, 4007007, 8), +(1082112, 4260003, 8), +(1082114, 4007002, 8), +(1082114, 4260003, 8), +(1082115, 4007003, 8), +(1082115, 4260003, 8), +(1082116, 4007006, 8), +(1082116, 4260003, 8), +(1082117, 4007007, 8), +(1082117, 4260003, 8), +(1082118, 4007003, 8), +(1082118, 4260003, 8), +(1082119, 4007005, 8), +(1082119, 4260003, 8), +(1082120, 4007006, 8), +(1082120, 4260003, 8), +(1082121, 4007003, 8), +(1082121, 4260003, 8), +(1082122, 4007002, 8), +(1082122, 4260003, 8), +(1082123, 4007007, 8), +(1082123, 4260003, 8), +(1082125, 4007006, 9), +(1082125, 4260004, 9), +(1082126, 4007003, 9), +(1082126, 4260004, 9), +(1082127, 4007007, 9), +(1082127, 4260004, 9), +(1082128, 4007003, 9), +(1082128, 4260004, 9), +(1082129, 4007005, 9), +(1082129, 4260004, 9), +(1082130, 4007007, 9), +(1082130, 4260004, 9), +(1082131, 4007002, 9), +(1082131, 4260004, 9), +(1082132, 4007003, 9), +(1082132, 4260004, 9), +(1082133, 4007006, 9), +(1082133, 4260004, 9), +(1082134, 4007007, 9), +(1082134, 4260004, 9), +(1082135, 4007002, 10), +(1082135, 4260005, 10), +(1082136, 4007003, 10), +(1082136, 4260005, 10), +(1082137, 4007006, 10), +(1082137, 4260005, 10), +(1082138, 4007007, 10), +(1082138, 4260005, 10), +(1082139, 4007003, 10), +(1082139, 4260005, 10), +(1082140, 4007002, 10), +(1082140, 4260005, 10), +(1082141, 4007007, 10), +(1082141, 4260005, 10), +(1082142, 4007003, 9), +(1082142, 4260004, 9), +(1082143, 4007005, 9), +(1082143, 4260004, 9), +(1082144, 4007007, 9), +(1082144, 4260004, 9), +(1082151, 4007003, 10), +(1082151, 4260005, 10), +(1082152, 4007002, 10), +(1082152, 4260005, 10), +(1082153, 4007006, 10), +(1082153, 4260005, 10), +(1082154, 4007005, 10), +(1082154, 4260005, 10), +(1082158, 4007006, 10), +(1082158, 4260005, 10), +(1082159, 4007002, 10), +(1082159, 4260005, 10), +(1082160, 4007003, 10), +(1082160, 4260005, 10), +(1082163, 4000244, 5), +(1082163, 4000245, 5), +(1082163, 4007006, 11), +(1082163, 4260006, 11), +(1082164, 4000244, 5), +(1082164, 4000245, 5), +(1082164, 4007002, 11), +(1082164, 4260006, 11), +(1082167, 4000244, 5), +(1082167, 4000245, 5), +(1082167, 4007007, 11), +(1082167, 4260006, 11), +(1082168, 4000244, 5), +(1082168, 4000245, 5), +(1082168, 4007002, 11), +(1082168, 4260006, 11), +(1082198, 4007000, 5), +(1082198, 4260000, 5), +(1082201, 4007007, 6), +(1082201, 4260001, 6), +(1082204, 4007007, 7), +(1082204, 4260002, 7), +(1082207, 4007002, 8), +(1082207, 4260003, 8), +(1082210, 4007006, 9), +(1082210, 4260004, 9), +(1082213, 4007007, 10), +(1082213, 4260005, 10), +(1082216, 4000244, 5), +(1082216, 4000245, 5), +(1082216, 4007007, 11), +(1082216, 4260006, 11), +(1082234, 4007007, 12), +(1082234, 4021010, 1), +(1082234, 4260007, 2), +(1082234, 4260008, 10), +(1082235, 4007002, 12), +(1082235, 4021010, 1), +(1082235, 4260007, 2), +(1082235, 4260008, 10), +(1082236, 4007001, 12), +(1082236, 4021010, 1), +(1082236, 4260007, 2), +(1082236, 4260008, 10), +(1082237, 4007005, 12), +(1082237, 4021010, 1), +(1082237, 4260007, 2), +(1082237, 4260008, 10), +(1082238, 4007006, 12), +(1082238, 4021010, 1), +(1082238, 4260007, 2), +(1082238, 4260008, 10), +(1082239, 4007007, 12), +(1082239, 4020009, 15), +(1082239, 4260007, 8), +(1082239, 4260008, 4), +(1082240, 4007002, 12), +(1082240, 4020009, 15), +(1082240, 4260007, 8), +(1082240, 4260008, 4), +(1082241, 4007001, 12), +(1082241, 4020009, 15), +(1082241, 4260007, 8), +(1082241, 4260008, 4), +(1082242, 4007005, 12), +(1082242, 4020009, 15), +(1082242, 4260007, 8), +(1082242, 4260008, 4), +(1082243, 4007006, 12), +(1082243, 4020009, 15), +(1082243, 4260007, 8), +(1082243, 4260008, 4), +(1092004, 4007001, 5), +(1092004, 4260000, 5), +(1092009, 4007000, 6), +(1092009, 4260001, 6), +(1092010, 4007001, 6), +(1092010, 4260001, 6), +(1092011, 4007004, 6), +(1092011, 4260001, 6), +(1092015, 4007001, 7), +(1092015, 4260002, 7), +(1092016, 4007001, 7), +(1092016, 4260002, 7), +(1092017, 4007004, 7), +(1092017, 4260002, 7), +(1092023, 4007001, 8), +(1092023, 4260003, 8), +(1092024, 4007001, 8), +(1092024, 4260003, 8), +(1092025, 4007004, 8), +(1092025, 4260003, 8), +(1092026, 4007000, 9), +(1092026, 4260004, 9), +(1092027, 4007001, 9), +(1092027, 4260004, 9), +(1092028, 4007004, 9), +(1092028, 4260004, 9), +(1092036, 4007003, 10), +(1092036, 4260005, 10), +(1092037, 4007005, 10), +(1092037, 4260005, 10), +(1092038, 4007002, 10), +(1092038, 4260005, 10), +(1092057, 4007004, 12), +(1092057, 4021010, 1), +(1092057, 4260007, 2), +(1092057, 4260008, 10), +(1092058, 4007002, 12), +(1092058, 4021010, 1), +(1092058, 4260007, 2), +(1092058, 4260008, 10), +(1092059, 4007000, 12), +(1092059, 4021010, 1), +(1092059, 4260007, 2), +(1092059, 4260008, 10), +(1092060, 4000244, 5), +(1092060, 4000245, 5), +(1092060, 4007001, 11), +(1092060, 4260006, 11), +(1302010, 4011000, 1), +(1302010, 4260000, 20), +(1302011, 4011001, 2), +(1302011, 4260001, 22), +(1302012, 4011001, 3), +(1302012, 4260002, 24), +(1302018, 4011002, 3), +(1302018, 4260003, 26), +(1302023, 4011002, 4), +(1302023, 4260004, 28), +(1302056, 4011003, 4), +(1302056, 4260005, 30), +(1302059, 4000244, 20), +(1302059, 4000245, 20), +(1302059, 4011003, 5), +(1302059, 4260006, 32), +(1302081, 4011005, 5), +(1302081, 4021010, 3), +(1302081, 4260007, 14), +(1302081, 4260008, 20), +(1302086, 4011005, 5), +(1302086, 4020009, 45), +(1302086, 4260007, 20), +(1302086, 4260008, 14), +(1312008, 4011000, 1), +(1312008, 4260000, 20), +(1312009, 4011001, 2), +(1312009, 4260001, 22), +(1312010, 4011001, 3), +(1312010, 4260002, 24), +(1312011, 4011002, 3), +(1312011, 4260003, 26), +(1312015, 4011002, 4), +(1312015, 4260004, 28), +(1312030, 4011003, 4), +(1312030, 4260005, 30), +(1312031, 4000244, 20), +(1312031, 4000245, 20), +(1312031, 4011003, 5), +(1312031, 4260006, 32), +(1312037, 4011005, 5), +(1312037, 4021010, 3), +(1312037, 4260007, 14), +(1312037, 4260008, 20), +(1312038, 4011005, 5), +(1312038, 4020009, 45), +(1312038, 4260007, 20), +(1312038, 4260008, 14), +(1322017, 4011000, 1), +(1322017, 4260000, 20), +(1322018, 4011001, 2), +(1322018, 4260001, 22), +(1322019, 4011001, 3), +(1322019, 4260002, 24), +(1322020, 4011001, 3), +(1322020, 4260002, 24), +(1322028, 4011002, 3), +(1322028, 4260003, 26), +(1322029, 4011002, 4), +(1322029, 4260004, 28), +(1322045, 4011003, 4), +(1322045, 4260005, 30), +(1322052, 4000244, 20), +(1322052, 4000245, 20), +(1322052, 4011003, 5), +(1322052, 4260006, 32), +(1322060, 4011005, 5), +(1322060, 4021010, 3), +(1322060, 4260007, 14), +(1322060, 4260008, 20), +(1322061, 4011005, 5), +(1322061, 4020009, 45), +(1322061, 4260007, 20), +(1322061, 4260008, 14), +(1332003, 4011000, 1), +(1332003, 4260000, 20), +(1332015, 4011001, 2), +(1332015, 4260001, 22), +(1332016, 4011000, 1), +(1332016, 4260000, 20), +(1332017, 4011001, 2), +(1332017, 4260001, 22), +(1332018, 4011001, 3), +(1332018, 4260002, 24), +(1332019, 4011001, 3), +(1332019, 4260002, 24), +(1332022, 4011002, 3), +(1332022, 4260003, 26), +(1332023, 4011002, 3), +(1332023, 4260003, 26), +(1332026, 4011002, 4), +(1332026, 4260004, 28), +(1332027, 4011002, 4), +(1332027, 4260004, 28), +(1332049, 4000244, 20), +(1332049, 4000245, 20), +(1332049, 4011003, 5), +(1332049, 4260006, 32), +(1332050, 4000244, 20), +(1332050, 4000245, 20), +(1332050, 4011003, 5), +(1332050, 4260006, 32), +(1332051, 4011003, 4), +(1332051, 4260005, 30), +(1332052, 4011003, 4), +(1332052, 4260005, 30), +(1332073, 4011005, 5), +(1332073, 4021010, 3), +(1332073, 4260007, 14), +(1332073, 4260008, 20), +(1332074, 4011005, 5), +(1332074, 4021010, 3), +(1332074, 4260007, 14), +(1332074, 4260008, 20), +(1332075, 4011005, 5), +(1332075, 4020009, 45), +(1332075, 4260007, 20), +(1332075, 4260008, 14), +(1332076, 4011005, 5), +(1332076, 4020009, 45), +(1332076, 4260007, 20), +(1332076, 4260008, 14), +(1372007, 4011000, 1), +(1372007, 4260000, 20), +(1372009, 4011002, 4), +(1372009, 4260004, 28), +(1372010, 4011003, 4), +(1372010, 4260005, 30), +(1372014, 4011001, 2), +(1372014, 4260001, 22), +(1372015, 4011001, 3), +(1372015, 4260002, 24), +(1372016, 4011002, 3), +(1372016, 4260003, 26), +(1372032, 4000244, 20), +(1372032, 4000245, 20), +(1372032, 4011003, 5), +(1372032, 4260006, 32), +(1372044, 4011005, 5), +(1372044, 4021010, 3), +(1372044, 4260007, 14), +(1372044, 4260008, 20), +(1372045, 4011005, 5), +(1372045, 4020009, 45), +(1372045, 4260007, 20), +(1372045, 4260008, 14), +(1382006, 4011000, 1), +(1382006, 4260000, 20), +(1382007, 4011001, 2), +(1382007, 4260001, 22), +(1382008, 4011002, 3), +(1382008, 4260003, 26), +(1382010, 4011001, 3), +(1382010, 4260002, 24), +(1382035, 4011002, 4), +(1382035, 4260004, 28), +(1382036, 4000244, 20), +(1382036, 4000245, 20), +(1382036, 4011003, 5), +(1382036, 4260006, 32), +(1382057, 4011005, 5), +(1382057, 4021010, 3), +(1382057, 4260007, 14), +(1382057, 4260008, 20), +(1382059, 4011005, 5), +(1382059, 4020009, 45), +(1382059, 4260007, 20), +(1382059, 4260008, 14), +(1402003, 4011000, 1), +(1402003, 4260000, 20), +(1402004, 4011002, 3), +(1402004, 4260003, 26), +(1402005, 4011002, 4), +(1402005, 4260004, 28), +(1402011, 4011001, 2), +(1402011, 4260001, 22), +(1402012, 4011001, 3), +(1402012, 4260002, 24), +(1402015, 4011002, 3), +(1402015, 4260003, 26), +(1402016, 4011002, 4), +(1402016, 4260004, 28), +(1402035, 4011003, 4), +(1402035, 4260005, 30), +(1402036, 4000244, 20), +(1402036, 4000245, 20), +(1402036, 4011003, 5), +(1402036, 4260006, 32), +(1402046, 4011005, 5), +(1402046, 4021010, 3), +(1402046, 4260007, 14), +(1402046, 4260008, 20), +(1402047, 4011005, 5), +(1402047, 4020009, 45), +(1402047, 4260007, 20), +(1402047, 4260008, 14), +(1412003, 4011000, 1), +(1412003, 4260000, 20), +(1412007, 4011001, 2), +(1412007, 4260001, 22), +(1412008, 4011001, 3), +(1412008, 4260002, 24), +(1412009, 4011002, 3), +(1412009, 4260003, 26), +(1412010, 4011002, 4), +(1412010, 4260004, 28), +(1412021, 4011003, 4), +(1412021, 4260005, 30), +(1412026, 4000244, 20), +(1412026, 4000245, 20), +(1412026, 4011003, 5), +(1412026, 4260006, 32), +(1412033, 4011005, 5), +(1412033, 4021010, 3), +(1412033, 4260007, 14), +(1412033, 4260008, 20), +(1412034, 4011005, 5), +(1412034, 4020009, 45), +(1412034, 4260007, 20), +(1412034, 4260008, 14), +(1422005, 4011000, 1), +(1422005, 4260000, 20), +(1422009, 4011001, 2), +(1422009, 4260001, 22), +(1422010, 4011001, 3), +(1422010, 4260002, 24), +(1422012, 4011002, 3), +(1422012, 4260003, 26), +(1422013, 4011002, 4), +(1422013, 4260004, 28), +(1422027, 4011003, 4), +(1422027, 4260005, 30), +(1422028, 4000244, 20), +(1422028, 4000245, 20), +(1422028, 4011003, 5), +(1422028, 4260006, 32), +(1422037, 4011005, 5), +(1422037, 4021010, 3), +(1422037, 4260007, 14), +(1422037, 4260008, 20), +(1422038, 4011005, 5), +(1422038, 4020009, 45), +(1422038, 4260007, 20), +(1422038, 4260008, 14), +(1432004, 4011000, 1), +(1432004, 4260000, 20), +(1432006, 4011001, 2), +(1432006, 4260001, 22), +(1432007, 4011001, 3), +(1432007, 4260002, 24), +(1432010, 4011002, 3), +(1432010, 4260003, 26), +(1432011, 4011002, 4), +(1432011, 4260004, 28), +(1432030, 4011003, 4), +(1432030, 4260005, 30), +(1432038, 4000244, 20), +(1432038, 4000245, 20), +(1432038, 4011003, 5), +(1432038, 4260006, 32), +(1432047, 4011005, 5), +(1432047, 4021010, 3), +(1432047, 4260007, 14), +(1432047, 4260008, 20), +(1432049, 4011005, 5), +(1432049, 4020009, 45), +(1432049, 4260007, 20), +(1432049, 4260008, 14), +(1442005, 4011000, 1), +(1442005, 4260000, 20), +(1442008, 4011001, 3), +(1442008, 4260002, 24), +(1442010, 4011001, 2), +(1442010, 4260001, 22), +(1442019, 4011002, 3), +(1442019, 4260003, 26), +(1442020, 4011002, 4), +(1442020, 4260004, 28), +(1442044, 4011003, 4), +(1442044, 4260005, 30), +(1442045, 4000244, 20), +(1442045, 4000245, 20), +(1442045, 4011003, 5), +(1442045, 4260006, 32), +(1442063, 4011005, 5), +(1442063, 4021010, 3), +(1442063, 4260007, 14), +(1442063, 4260008, 20), +(1442067, 4011005, 5), +(1442067, 4020009, 45), +(1442067, 4260007, 20), +(1442067, 4260008, 14), +(1452004, 4011001, 2), +(1452004, 4260001, 22), +(1452008, 4011000, 1), +(1452008, 4260000, 20), +(1452009, 4007006, 7), +(1452009, 4011001, 3), +(1452009, 4260002, 24), +(1452010, 4007002, 7), +(1452010, 4011001, 3), +(1452010, 4260002, 24), +(1452011, 4007004, 7), +(1452011, 4011001, 3), +(1452011, 4260002, 24), +(1452012, 4007002, 8), +(1452012, 4011002, 3), +(1452012, 4260003, 26), +(1452013, 4007006, 8), +(1452013, 4011002, 3), +(1452013, 4260003, 26), +(1452014, 4007004, 8), +(1452014, 4011002, 3), +(1452014, 4260003, 26), +(1452015, 4007007, 8), +(1452015, 4011002, 3), +(1452015, 4260003, 26), +(1452017, 4011002, 4), +(1452017, 4260004, 28), +(1452019, 4007001, 10), +(1452019, 4011003, 4), +(1452019, 4260005, 30), +(1452020, 4007004, 10), +(1452020, 4011003, 4), +(1452020, 4260005, 30), +(1452021, 4007007, 10), +(1452021, 4011003, 4), +(1452021, 4260005, 30), +(1452044, 4000244, 20), +(1452044, 4000245, 20), +(1452044, 4011003, 5), +(1452044, 4260006, 32), +(1452057, 4011005, 5), +(1452057, 4021010, 3), +(1452057, 4260007, 14), +(1452057, 4260008, 20), +(1452059, 4011005, 5), +(1452059, 4020009, 45), +(1452059, 4260007, 20), +(1452059, 4260008, 14), +(1462007, 4011000, 1), +(1462007, 4260000, 20), +(1462008, 4011001, 2), +(1462008, 4260001, 22), +(1462009, 4011001, 3), +(1462009, 4260002, 24), +(1462010, 4007002, 8), +(1462010, 4011002, 3), +(1462010, 4260003, 26), +(1462011, 4007006, 8), +(1462011, 4011002, 3), +(1462011, 4260003, 26), +(1462012, 4007004, 8), +(1462012, 4011002, 3), +(1462012, 4260003, 26), +(1462013, 4007007, 8), +(1462013, 4011002, 3), +(1462013, 4260003, 26), +(1462015, 4007001, 10), +(1462015, 4011003, 4), +(1462015, 4260005, 30), +(1462016, 4007004, 10), +(1462016, 4011003, 4), +(1462016, 4260005, 30), +(1462017, 4007007, 10), +(1462017, 4011003, 4), +(1462017, 4260005, 30), +(1462018, 4011002, 4), +(1462018, 4260004, 28), +(1462039, 4000244, 20), +(1462039, 4000245, 20), +(1462039, 4011003, 5), +(1462039, 4260006, 32), +(1462050, 4011005, 5), +(1462050, 4021010, 3), +(1462050, 4260007, 14), +(1462050, 4260008, 20), +(1462051, 4011005, 5), +(1462051, 4020009, 45), +(1462051, 4260007, 20), +(1462051, 4260008, 14), +(1472018, 4007001, 5), +(1472018, 4011000, 1), +(1472018, 4260000, 20), +(1472019, 4007006, 5), +(1472019, 4011000, 1), +(1472019, 4260000, 20), +(1472020, 4007002, 5), +(1472020, 4011000, 1), +(1472020, 4260000, 20), +(1472021, 4007007, 5), +(1472021, 4011000, 1), +(1472021, 4260000, 20), +(1472022, 4007000, 6), +(1472022, 4011001, 2), +(1472022, 4260001, 22), +(1472023, 4007006, 6), +(1472023, 4011001, 2), +(1472023, 4260001, 22), +(1472024, 4007002, 6), +(1472024, 4011001, 2), +(1472024, 4260001, 22), +(1472025, 4007007, 6), +(1472025, 4011001, 2), +(1472025, 4260001, 22), +(1472026, 4007004, 7), +(1472026, 4011001, 3), +(1472026, 4260002, 24), +(1472027, 4007003, 7), +(1472027, 4011001, 3), +(1472027, 4260002, 24), +(1472028, 4007002, 7), +(1472028, 4011001, 3), +(1472028, 4260002, 24), +(1472029, 4007007, 7), +(1472029, 4011001, 3), +(1472029, 4260002, 24), +(1472031, 4011002, 3), +(1472031, 4260003, 26), +(1472033, 4011002, 4), +(1472033, 4260004, 28), +(1472051, 4000244, 20), +(1472051, 4000245, 20), +(1472051, 4007003, 11), +(1472051, 4011003, 5), +(1472051, 4260006, 32), +(1472052, 4000244, 20), +(1472052, 4000245, 20), +(1472052, 4007005, 11), +(1472052, 4011003, 5), +(1472052, 4260006, 32), +(1472053, 4011003, 4), +(1472053, 4260005, 30), +(1472068, 4011005, 5), +(1472068, 4021010, 3), +(1472068, 4260007, 14), +(1472068, 4260008, 20), +(1472071, 4011005, 5), +(1472071, 4020009, 45), +(1472071, 4260007, 20), +(1472071, 4260008, 14), +(1482007, 4011000, 1), +(1482007, 4260000, 20), +(1482008, 4011001, 2), +(1482008, 4260001, 22), +(1482009, 4011001, 3), +(1482009, 4260002, 24), +(1482010, 4011002, 3), +(1482010, 4260003, 26), +(1482011, 4011002, 4), +(1482011, 4260004, 28), +(1482012, 4011003, 4), +(1482012, 4260005, 30), +(1482013, 4000244, 20), +(1482013, 4000245, 20), +(1482013, 4011003, 5), +(1482013, 4260006, 32), +(1482023, 4011005, 5), +(1482023, 4021010, 3), +(1482023, 4260007, 14), +(1482023, 4260008, 20), +(1482024, 4011005, 5), +(1482024, 4020009, 45), +(1482024, 4260007, 20), +(1482024, 4260008, 14), +(1492007, 4011000, 1), +(1492007, 4260000, 20), +(1492008, 4011001, 2), +(1492008, 4260001, 22), +(1492009, 4011001, 3), +(1492009, 4260002, 24), +(1492010, 4011002, 3), +(1492010, 4260003, 26), +(1492011, 4011002, 4), +(1492011, 4260004, 28), +(1492012, 4011003, 4), +(1492012, 4260005, 30), +(1492013, 4000244, 20), +(1492013, 4000245, 20), +(1492013, 4011003, 5), +(1492013, 4260006, 32), +(1492023, 4011005, 5), +(1492023, 4021010, 3), +(1492023, 4260007, 14), +(1492023, 4260008, 20), +(1492025, 4011005, 5), +(1492025, 4020009, 45), +(1492025, 4260007, 20), +(1492025, 4260008, 14), +(2040727, 4000159, 50), +(2040727, 4000299, 10), +(2041058, 4000048, 100), +(2041058, 4000299, 10), +(4001174, 4000155, 10), +(4001174, 4000277, 5), +(4001174, 4000278, 5), +(4001174, 4031966, 1), +(4001175, 4000030, 3), +(4001175, 4000048, 20), +(4001175, 4031967, 1), +(4001176, 4000360, 30), +(4001176, 4003001, 20), +(4001176, 4011001, 5), +(4001176, 4031968, 1), +(4001177, 4000052, 100), +(4001177, 4007001, 10), +(4001177, 4031969, 1), +(4001178, 4000286, 25), +(4001178, 4000295, 25), +(4001178, 4007002, 1), +(4001178, 4031970, 1), +(4001179, 4000122, 7), +(4001179, 4000364, 70), +(4001179, 4003000, 7), +(4001179, 4031971, 1), +(4001180, 4000074, 10), +(4001180, 4000229, 30), +(4001180, 4007000, 1), +(4001180, 4031972, 1), +(4001181, 4000238, 30), +(4001181, 4003005, 20), +(4001181, 4007006, 1), +(4001181, 4031973, 1), +(4001182, 4000239, 12), +(4001182, 4000240, 1), +(4001182, 4003004, 36), +(4001182, 4007001, 6), +(4001182, 4031974, 1), +(4001183, 4000232, 30), +(4001183, 4000285, 30), +(4001183, 4007001, 3), +(4001183, 4031975, 1), +(4001184, 4000182, 30), +(4001184, 4003001, 10), +(4001184, 4011001, 10), +(4001184, 4031976, 1), +(4001185, 4000081, 5), +(4001185, 4000134, 30), +(4001185, 4003005, 20), +(4001185, 4031977, 1), +(4001186, 4003005, 30), +(4001186, 4005001, 1), +(4001186, 4021007, 10), +(4001186, 4021009, 1), +(4001186, 4031978, 1), +(4031980, 4011001, 2), +(4031980, 4011006, 6), +(4031980, 4011008, 1), +(4031980, 4031979, 1), +(4250000, 4021007, 1), +(4250001, 4250000, 10), +(4250002, 4250001, 10), +(4250100, 4021005, 1), +(4250101, 4250100, 10), +(4250102, 4250101, 10), +(4250200, 4021000, 1), +(4250201, 4250200, 10), +(4250202, 4250201, 10), +(4250300, 4021004, 1), +(4250301, 4250300, 10), +(4250302, 4250301, 10), +(4250400, 4021001, 1), +(4250401, 4250400, 10), +(4250402, 4250401, 10), +(4250500, 4021002, 1), +(4250501, 4250500, 10), +(4250502, 4250501, 10), +(4250600, 4021006, 1), +(4250601, 4250600, 10), +(4250602, 4250601, 10), +(4250700, 4021003, 1), +(4250701, 4250700, 10), +(4250702, 4250701, 10), +(4250800, 4005000, 1), +(4250801, 4250800, 10), +(4250802, 4250801, 10), +(4250900, 4005001, 1), +(4250901, 4250900, 10), +(4250902, 4250901, 10), +(4251000, 4005003, 1), +(4251001, 4251000, 10), +(4251002, 4251001, 10), +(4251100, 4005002, 1), +(4251101, 4251100, 10), +(4251102, 4251101, 10), +(4251300, 4021008, 1), +(4251301, 4251300, 10), +(4251302, 4251301, 10), +(4251400, 4005004, 1), +(4251401, 4251400, 10), +(4251402, 4251401, 10); + +CREATE TABLE IF NOT EXISTS `makerrewarddata` ( + `itemid` int(11) NOT NULL, + `rewardid` int(11) NOT NULL, + `quantity` smallint(6) NOT NULL, + `prob` tinyint(3) unsigned NOT NULL DEFAULT '100', + PRIMARY KEY (`itemid`,`rewardid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +INSERT INTO `makerrewarddata` (`itemid`, `rewardid`, `quantity`, `prob`) VALUES +(4250000, 4250000, 1, 14), +(4250000, 4250001, 1, 5), +(4250000, 4250002, 1, 1), +(4250001, 4250000, 9, 2), +(4250001, 4250001, 1, 3), +(4250002, 4250001, 9, 7), +(4250002, 4250002, 1, 3), +(4250100, 4250100, 1, 14), +(4250100, 4250101, 1, 5), +(4250100, 4250102, 1, 1), +(4250101, 4250100, 9, 2), +(4250101, 4250101, 1, 3), +(4250102, 4250101, 9, 7), +(4250102, 4250102, 1, 3), +(4250200, 4250200, 1, 14), +(4250200, 4250201, 1, 5), +(4250200, 4250202, 1, 1), +(4250201, 4250200, 9, 2), +(4250201, 4250201, 1, 3), +(4250202, 4250201, 9, 7), +(4250202, 4250202, 1, 3), +(4250300, 4250300, 1, 14), +(4250300, 4250301, 1, 5), +(4250300, 4250302, 1, 1), +(4250301, 4250300, 9, 2), +(4250301, 4250301, 1, 3), +(4250302, 4250301, 9, 7), +(4250302, 4250302, 1, 3), +(4250400, 4250400, 1, 14), +(4250400, 4250401, 1, 5), +(4250400, 4250402, 1, 1), +(4250401, 4250400, 9, 2), +(4250401, 4250401, 1, 3), +(4250402, 4250401, 9, 7), +(4250402, 4250402, 1, 3), +(4250500, 4250500, 1, 14), +(4250500, 4250501, 1, 5), +(4250500, 4250502, 1, 1), +(4250501, 4250500, 9, 2), +(4250501, 4250501, 1, 3), +(4250502, 4250501, 9, 7), +(4250502, 4250502, 1, 3), +(4250600, 4250600, 1, 14), +(4250600, 4250601, 1, 5), +(4250600, 4250602, 1, 1), +(4250601, 4250600, 9, 2), +(4250601, 4250601, 1, 3), +(4250602, 4250601, 9, 7), +(4250602, 4250602, 1, 3), +(4250700, 4250700, 1, 14), +(4250700, 4250701, 1, 5), +(4250700, 4250702, 1, 1), +(4250701, 4250700, 9, 2), +(4250701, 4250701, 1, 3), +(4250702, 4250701, 9, 7), +(4250702, 4250702, 1, 3), +(4250800, 4250800, 1, 75), +(4250800, 4250801, 1, 24), +(4250800, 4250802, 1, 1), +(4250801, 4250800, 9, 2), +(4250801, 4250801, 1, 3), +(4250802, 4250801, 9, 7), +(4250802, 4250802, 1, 3), +(4250900, 4250900, 1, 75), +(4250900, 4250901, 1, 24), +(4250900, 4250902, 1, 1), +(4250901, 4250900, 9, 2), +(4250901, 4250901, 1, 3), +(4250902, 4250901, 9, 7), +(4250902, 4250902, 1, 3), +(4251000, 4251000, 1, 75), +(4251000, 4251001, 1, 24), +(4251000, 4251002, 1, 1), +(4251001, 4251000, 9, 2), +(4251001, 4251001, 1, 3), +(4251002, 4251001, 9, 7), +(4251002, 4251002, 1, 3), +(4251100, 4251100, 1, 75), +(4251100, 4251101, 1, 24), +(4251100, 4251102, 1, 1), +(4251101, 4251100, 9, 2), +(4251101, 4251101, 1, 3), +(4251102, 4251101, 9, 7), +(4251102, 4251102, 1, 3), +(4251300, 4251300, 1, 27), +(4251300, 4251301, 1, 12), +(4251300, 4251302, 1, 1), +(4251301, 4251300, 9, 1), +(4251301, 4251301, 1, 1), +(4251302, 4251301, 9, 4), +(4251302, 4251302, 1, 1), +(4251400, 4251400, 1, 27), +(4251400, 4251401, 1, 12), +(4251400, 4251402, 1, 1), +(4251401, 4251400, 9, 1), +(4251401, 4251401, 1, 1), +(4251402, 4251401, 9, 4), +(4251402, 4251402, 1, 1); + +CREATE TABLE IF NOT EXISTS `marriages` ( + `marriageid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `husbandid` int(10) unsigned NOT NULL DEFAULT '0', + `wifeid` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`marriageid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `medalmaps` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `queststatusid` int(11) unsigned NOT NULL, + `mapid` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `queststatusid` (`queststatusid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `monsterbook` ( + `charid` int(11) unsigned NOT NULL, + `cardid` int(11) NOT NULL, + `level` int(1) DEFAULT '1' +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +INSERT INTO `monsterbook` (`charid`, `cardid`, `level`) VALUES +(30000, 2380011, 1); + +CREATE TABLE IF NOT EXISTS `monstercarddata` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `cardid` int(11) NOT NULL DEFAULT '0', + `mobid` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `id` (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=309 ; + +INSERT INTO `monstercarddata` (`id`, `cardid`, `mobid`) VALUES +(1, 2380000, 100100), +(2, 2380001, 100101), +(3, 2380003, 130100), +(4, 2380004, 130101), +(5, 2380005, 210100), +(6, 2380006, 1210100), +(7, 2380007, 1210102), +(8, 2380008, 1110101), +(9, 2380009, 1210101), +(10, 2380010, 1120100), +(11, 2380011, 1110100), +(12, 2380012, 1210103), +(13, 2381000, 1130100), +(14, 2381001, 1140100), +(15, 2381002, 2220100), +(16, 2381003, 2300100), +(17, 2381006, 2130103), +(18, 2381007, 2110200), +(19, 2381008, 2130100), +(20, 2381009, 2230108), +(21, 2381010, 2100102), +(22, 2381011, 2230103), +(23, 2381012, 5200000), +(24, 2381013, 2230105), +(25, 2381014, 2230110), +(26, 2381015, 2100105), +(27, 2381016, 2230101), +(28, 2381017, 2230107), +(29, 2381018, 2230111), +(30, 2381019, 2100106), +(31, 2381020, 2110300), +(32, 2381021, 2230106), +(33, 2381022, 2230102), +(34, 2381023, 2100103), +(35, 2381024, 2230100), +(36, 2381025, 2100107), +(37, 2381026, 2230109), +(38, 2381027, 2230104), +(39, 2381028, 2100104), +(40, 2381029, 2230200), +(41, 2381031, 2110301), +(42, 2381032, 3000000), +(43, 2381034, 3000005), +(44, 2381035, 3000006), +(45, 2381036, 3100102), +(46, 2381037, 5200001), +(47, 2381038, 5200002), +(48, 2382000, 3230307), +(49, 2382002, 3110100), +(50, 2382004, 3110101), +(51, 2382005, 3110102), +(52, 2382006, 5300000), +(53, 2382007, 3230104), +(54, 2382009, 3110300), +(55, 2382011, 3210200), +(56, 2382012, 3210201), +(57, 2382013, 3210202), +(58, 2382014, 5300001), +(59, 2382015, 3210204), +(60, 2382016, 3210205), +(61, 2382017, 3210207), +(62, 2382018, 3230100), +(63, 2382019, 3230101), +(64, 2382020, 3230200), +(65, 2382022, 3230302), +(66, 2382023, 5400000), +(67, 2382024, 3110302), +(68, 2382025, 3210203), +(69, 2382026, 3210206), +(70, 2382027, 3210450), +(71, 2382028, 3210208), +(72, 2382029, 3210800), +(73, 2382030, 3230102), +(74, 2382031, 3230303), +(75, 2382032, 3230306), +(76, 2382033, 3230103), +(77, 2382034, 3230304), +(78, 2382035, 3230405), +(79, 2382036, 3110303), +(80, 2382037, 3230308), +(81, 2382038, 3230305), +(82, 2382039, 4230100), +(83, 2382040, 4230101), +(84, 2382041, 4230113), +(85, 2382043, 4230200), +(86, 2382044, 4230201), +(87, 2382045, 4230500), +(88, 2382047, 4230107), +(89, 2382048, 4230111), +(90, 2382049, 4230114), +(91, 2382050, 4230119), +(92, 2382051, 4230501), +(93, 2382052, 4230105), +(94, 2382053, 4230103), +(95, 2382054, 4230109), +(96, 2382056, 4230124), +(97, 2382057, 4110300), +(98, 2382058, 4230108), +(99, 2382059, 4230123), +(100, 2382060, 4230502), +(101, 2382061, 4230120), +(102, 2382062, 4230112), +(103, 2382063, 4230125), +(104, 2382064, 4230106), +(105, 2382065, 4130100), +(106, 2382066, 4230110), +(107, 2382068, 4230300), +(108, 2382069, 4230400), +(109, 2382070, 4230503), +(110, 2382071, 4230504), +(111, 2382072, 4110301), +(112, 2382076, 4250000), +(113, 2383000, 4230121), +(114, 2383001, 4130101), +(115, 2383002, 4230115), +(116, 2383003, 4130102), +(117, 2383004, 4130103), +(118, 2383006, 4230505), +(119, 2383007, 9300255), +(120, 2383008, 4230102), +(121, 2383009, 4230104), +(122, 2383010, 4230506), +(123, 2383012, 5130100), +(124, 2383013, 5100000), +(125, 2383014, 5100003), +(126, 2383015, 5120503), +(127, 2383016, 9300144), +(128, 2383017, 5100002), +(129, 2383018, 5120504), +(130, 2383019, 5130103), +(131, 2383021, 5120001), +(132, 2383022, 5120002), +(133, 2383023, 5120003), +(134, 2383024, 5100005), +(135, 2383025, 5120501), +(136, 2383026, 5120100), +(137, 2383027, 5120502), +(138, 2383028, 9300149), +(139, 2383029, 5300100), +(140, 2383030, 5130101), +(141, 2383031, 5130104), +(142, 2383032, 5120506), +(143, 2383033, 5130105), +(144, 2383035, 5120500), +(145, 2383036, 5150001), +(146, 2383037, 5130107), +(147, 2383038, 5130108), +(148, 2383039, 5130102), +(149, 2383040, 5140000), +(150, 2383041, 5120505), +(151, 2383042, 5110302), +(152, 2383043, 5150000), +(153, 2383044, 6130100), +(154, 2383045, 6130103), +(155, 2383046, 6130201), +(156, 2383047, 6130203), +(157, 2383048, 5090000), +(158, 2383049, 5090001), +(159, 2383056, 4250001), +(160, 2383057, 5250000), +(161, 2383058, 5250002), +(162, 2383059, 5250001), +(163, 2384000, 6130200), +(164, 2384001, 9400201), +(165, 2384002, 6130207), +(166, 2384003, 6230602), +(167, 2384004, 6230400), +(168, 2384006, 6230600), +(169, 2384007, 6230200), +(170, 2384008, 6130204), +(171, 2384009, 6300000), +(172, 2384010, 6090000), +(173, 2384011, 6110300), +(174, 2384012, 6230300), +(175, 2384013, 6130209), +(176, 2384014, 6230500), +(177, 2384015, 6230601), +(178, 2384016, 6400000), +(179, 2384017, 6130208), +(180, 2384018, 9300146), +(181, 2384019, 8140200), +(182, 2384020, 7130100), +(183, 2384021, 7130400), +(184, 2384022, 7130401), +(185, 2384023, 7130402), +(186, 2384024, 7130500), +(187, 2384025, 7130104), +(188, 2384026, 7130001), +(189, 2384027, 7130002), +(190, 2384028, 7130600), +(191, 2384029, 7130103), +(192, 2384032, 6300100), +(193, 2384033, 7130501), +(194, 2384035, 7130200), +(195, 2384036, 7130101), +(196, 2384037, 6090001), +(197, 2384038, 7090000), +(198, 2384039, 6090003), +(199, 2384040, 6090004), +(200, 2385000, 8140300), +(201, 2385001, 7130003), +(202, 2385002, 7130601), +(203, 2385003, 6400100), +(204, 2385004, 7130102), +(205, 2385005, 7130004), +(206, 2385006, 8140000), +(207, 2385007, 8140001), +(208, 2385008, 8110300), +(209, 2385009, 8140100), +(210, 2385011, 8140002), +(211, 2385012, 7130010), +(212, 2385013, 7130020), +(213, 2385014, 8140110), +(214, 2385016, 8140101), +(215, 2385017, 8140102), +(216, 2385018, 8140103), +(217, 2385019, 8140111), +(218, 2385020, 7130300), +(219, 2385021, 8140500), +(220, 2385022, 8140700), +(221, 2385023, 8090000), +(222, 2385025, 8200000), +(223, 2386000, 8140600), +(224, 2386001, 8140701), +(225, 2386002, 9300324), +(226, 2386003, 8141300), +(227, 2386004, 8142000), +(228, 2386005, 8140702), +(229, 2386006, 8140703), +(230, 2386007, 8142100), +(231, 2386008, 8150300), +(232, 2386009, 9500136), +(233, 2386010, 9500137), +(234, 2386011, 8150200), +(235, 2386012, 8150100), +(236, 2386013, 8150301), +(237, 2386014, 8150101), +(238, 2386015, 8150302), +(239, 2386016, 8150201), +(240, 2386017, 8190000), +(241, 2386021, 8200001), +(242, 2386022, 8200002), +(243, 2386023, 8200003), +(244, 2386024, 8200004), +(245, 2387000, 8160000), +(246, 2387001, 8170000), +(247, 2387002, 8190003), +(248, 2387003, 8190004), +(249, 2387004, 8190002), +(250, 2387006, 8200005), +(251, 2387007, 8200006), +(252, 2387008, 8200007), +(253, 2387009, 8200008), +(254, 2387010, 8200009), +(255, 2387011, 8200010), +(256, 2387012, 8200011), +(257, 2387013, 8200012), +(258, 2388000, 9300184), +(259, 2388001, 9300003), +(260, 2388002, 5220002), +(261, 2388003, 5220000), +(262, 2388004, 9300012), +(263, 2388005, 5220003), +(264, 2388006, 6130101), +(265, 2388007, 6220000), +(266, 2388008, 6300005), +(267, 2388009, 7220001), +(268, 2388010, 7220000), +(269, 2388011, 9300119), +(270, 2388012, 9300039), +(271, 2388013, 7220002), +(272, 2388014, 9300139), +(273, 2388016, 8220001), +(274, 2388017, 8150000), +(275, 2388018, 8180000), +(276, 2388019, 8180001), +(277, 2388020, 8510000), +(278, 2388021, 9300028), +(279, 2388022, 8500002), +(280, 2388025, 3220000), +(281, 2388026, 8130100), +(282, 2388028, 9500317), +(283, 2388029, 3220001), +(284, 2388030, 4220000), +(285, 2388031, 6220001), +(286, 2388033, 8220003), +(287, 2388040, 8220004), +(288, 2388041, 8220005), +(289, 2388042, 8220006), +(290, 2388043, 8820000), +(291, 2380013, 9300274), +(292, 2388055, 8830000), +(293, 2380014, 1110130), +(294, 2380015, 100130), +(295, 2380016, 100131), +(296, 2380017, 100132), +(297, 2380018, 100133), +(298, 2380019, 100134), +(299, 2381083, 2230131), +(300, 2382093, 3300001), +(301, 2382094, 3300002), +(302, 2382095, 3300003), +(303, 2382096, 3300004), +(304, 2388052, 5220004), +(305, 2388053, 8220007), +(306, 2388054, 8220009), +(307, 2388068, 3300006), +(308, 2388069, 3300007); + +CREATE TABLE IF NOT EXISTS `mts_cart` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `cid` int(11) NOT NULL, + `itemid` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `mts_items` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `tab` int(11) NOT NULL DEFAULT '0', + `type` int(11) NOT NULL DEFAULT '0', + `itemid` int(10) unsigned NOT NULL DEFAULT '0', + `quantity` int(11) NOT NULL DEFAULT '1', + `seller` int(11) NOT NULL DEFAULT '0', + `price` int(11) NOT NULL DEFAULT '0', + `bid_incre` int(11) DEFAULT '0', + `buy_now` int(11) DEFAULT '0', + `position` int(11) DEFAULT '0', + `upgradeslots` int(11) DEFAULT '0', + `level` int(11) DEFAULT '0', + `str` int(11) DEFAULT '0', + `dex` int(11) DEFAULT '0', + `int` int(11) DEFAULT '0', + `luk` int(11) DEFAULT '0', + `hp` int(11) DEFAULT '0', + `mp` int(11) DEFAULT '0', + `watk` int(11) DEFAULT '0', + `matk` int(11) DEFAULT '0', + `wdef` int(11) DEFAULT '0', + `mdef` int(11) DEFAULT '0', + `acc` int(11) DEFAULT '0', + `avoid` int(11) DEFAULT '0', + `hands` int(11) DEFAULT '0', + `speed` int(11) DEFAULT '0', + `jump` int(11) DEFAULT '0', + `locked` int(11) DEFAULT '0', + `isequip` int(1) DEFAULT '0', + `owner` varchar(16) DEFAULT '', + `sellername` varchar(16) NOT NULL, + `sell_ends` varchar(16) NOT NULL, + `transfer` int(2) DEFAULT '0', + `vicious` int(2) unsigned NOT NULL DEFAULT '0', + `flag` int(2) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `notes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `to` varchar(13) NOT NULL DEFAULT '', + `from` varchar(13) NOT NULL DEFAULT '', + `message` text NOT NULL, + `timestamp` bigint(20) unsigned NOT NULL, + `fame` int(11) NOT NULL DEFAULT '0', + `deleted` int(2) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `nxcode` ( + `code` varchar(15) NOT NULL, + `valid` int(11) NOT NULL DEFAULT '1', + `user` varchar(13) DEFAULT NULL, + `type` int(11) NOT NULL DEFAULT '0', + `item` int(11) NOT NULL DEFAULT '10000', + PRIMARY KEY (`code`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +CREATE TABLE IF NOT EXISTS `pets` ( + `petid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(13) DEFAULT NULL, + `level` int(10) unsigned NOT NULL, + `closeness` int(10) unsigned NOT NULL, + `fullness` int(10) unsigned NOT NULL, + `summoned` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`petid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `playernpcs` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(13) NOT NULL, + `hair` int(11) NOT NULL, + `face` int(11) NOT NULL, + `skin` int(11) NOT NULL, + `x` int(11) NOT NULL, + `cy` int(11) NOT NULL DEFAULT '0', + `map` int(11) NOT NULL, + `gender` int(11) NOT NULL DEFAULT '0', + `dir` int(11) NOT NULL DEFAULT '0', + `ScriptId` int(10) unsigned NOT NULL DEFAULT '0', + `Foothold` int(11) NOT NULL DEFAULT '0', + `rx0` int(11) NOT NULL DEFAULT '0', + `rx1` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `playernpcs_equip` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `NpcId` int(11) NOT NULL DEFAULT '0', + `equipid` int(11) NOT NULL, + `type` int(11) NOT NULL DEFAULT '0', + `equippos` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `questactions` ( + `questactionid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `questid` int(11) NOT NULL DEFAULT '0', + `status` int(11) NOT NULL DEFAULT '0', + `data` blob NOT NULL, + PRIMARY KEY (`questactionid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `questprogress` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `queststatusid` int(10) unsigned NOT NULL DEFAULT '0', + `progressid` int(11) NOT NULL DEFAULT '0', + `progress` varchar(15) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `questrequirements` ( + `questrequirementid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `questid` int(11) NOT NULL DEFAULT '0', + `status` int(11) NOT NULL DEFAULT '0', + `data` blob NOT NULL, + PRIMARY KEY (`questrequirementid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `queststatus` ( + `queststatusid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL DEFAULT '0', + `quest` int(11) NOT NULL DEFAULT '0', + `status` int(11) NOT NULL DEFAULT '0', + `time` int(11) NOT NULL DEFAULT '0', + `forfeited` int(11) NOT NULL DEFAULT '0', + `info` tinyint(3) NOT NULL DEFAULT '0', + PRIMARY KEY (`queststatusid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `reactordrops` ( + `reactordropid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `reactorid` int(11) NOT NULL, + `itemid` int(11) NOT NULL, + `chance` int(11) NOT NULL, + `questid` int(5) NOT NULL DEFAULT '-1', + PRIMARY KEY (`reactordropid`), + KEY `reactorid` (`reactorid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=1 AUTO_INCREMENT=841 ; + +INSERT INTO `reactordrops` (`reactordropid`, `reactorid`, `itemid`, `chance`, `questid`) VALUES +(1, 2001, 4031161, 1, 1008), +(2, 2001, 4031162, 1, 1008), +(3, 2001, 2010009, 2, -1), +(4, 2001, 2010000, 4, -1), +(5, 2001, 2000000, 4, -1), +(6, 2001, 2000001, 7, -1), +(7, 2001, 2000002, 10, -1), +(8, 2001, 2000003, 15, -1), +(9, 1012000, 2000000, 6, -1), +(10, 1012000, 4000003, 6, -1), +(11, 1012000, 4031150, 3, -1), +(12, 1072000, 4031165, 4, -1), +(13, 1102000, 4000136, 1, -1), +(14, 1102001, 4000136, 1, -1), +(15, 1102002, 4000136, 1, -1), +(16, 2002000, 2000002, 4, -1), +(17, 2002000, 2000001, 2, -1), +(18, 2002000, 4031198, 2, -1), +(19, 2112000, 2000004, 1, -1), +(20, 2112001, 2020001, 1, -1), +(21, 2112004, 4001016, 1, -1), +(22, 2112005, 4001015, 1, -1), +(23, 2112003, 2000005, 1, -1), +(24, 2112007, 2022001, 1, -1), +(25, 2112008, 2000004, 1, -1), +(26, 2112009, 2020001, 1, -1), +(27, 2112010, 2000005, 1, -1), +(28, 2112011, 4001016, 1, -1), +(29, 2112012, 4001015, 1, -1), +(30, 2112014, 4001018, 1, -1), +(31, 2112016, 4001113, 1, -1), +(32, 2112017, 4001114, 1, -1), +(33, 2202000, 4031094, 1, -1), +(34, 2212000, 4031142, 2, -1), +(35, 2212000, 2000002, 3, -1), +(36, 2212001, 2000002, 3, -1), +(37, 2212002, 2000002, 3, -1), +(38, 2212001, 4031141, 2, -1), +(39, 2212002, 4031143, 2, -1), +(40, 2212003, 4031107, 2, -1), +(41, 2212004, 4031116, 2, -1), +(42, 2212004, 2000001, 2, -1), +(43, 2212005, 4031136, 8, -1), +(44, 2222000, 4031231, 2, -1), +(45, 2222000, 4031258, 2, -1), +(46, 2222000, 2000002, 3, -1), +(47, 2302000, 2000001, 3, -1), +(48, 2302000, 2022040, 6, -1), +(49, 2302000, 4031274, 50, -1), +(50, 2302000, 4031275, 50, -1), +(51, 2302000, 4031276, 50, -1), +(52, 2302000, 4031277, 50, -1), +(53, 2302000, 4031278, 50, -1), +(54, 2302001, 2000002, 3, -1), +(55, 2302001, 2022040, 4, -1), +(56, 2302002, 2000001, 3, -1), +(57, 2302002, 2022040, 8, -1), +(58, 2302003, 4161017, 1, -1), +(59, 2302005, 4031508, 1, -1), +(60, 2502000, 2022116, 1, -1), +(61, 2052001, 2022116, 1, -1), +(62, 9202000, 1032033, 1, -1), +(63, 9202009, 1032033, 1, -1), +(64, 2202001, 4031092, 1, -1), +(65, 9202001, 4001025, 1, -1), +(66, 9202002, 4001037, 1, -1), +(67, 9202003, 4001029, 1, -1), +(68, 9202004, 4001030, 1, -1), +(69, 9202005, 4001031, 1, -1), +(70, 9202006, 4001032, 1, -1), +(71, 9202007, 4001033, 1, -1), +(72, 9202008, 4001034, 1, -1), +(73, 9202012, 2020014, 3, -1), +(74, 9202012, 2020015, 3, -1), +(75, 9202012, 2001001, 3, -1), +(76, 9202012, 2000004, 3, -1), +(77, 9202012, 2000005, 3, -1), +(78, 9202012, 2000001, 3, -1), +(79, 9202012, 2000002, 3, -1), +(80, 9202012, 2000006, 3, -1), +(81, 9202012, 2001002, 3, -1), +(82, 9202012, 2040504, 40, -1), +(83, 9202012, 2040501, 40, -1), +(84, 9202012, 2040513, 40, -1), +(85, 9202012, 2040516, 40, -1), +(86, 9202012, 2041007, 40, -1), +(87, 9202012, 2041010, 40, -1), +(88, 9202012, 2041004, 40, -1), +(89, 9202012, 2041001, 40, -1), +(90, 9202012, 2041019, 40, -1), +(91, 9202012, 2041022, 40, -1), +(92, 9202012, 2041013, 40, -1), +(93, 9202012, 2041016, 40, -1), +(94, 9202012, 2040301, 40, -1), +(95, 9202012, 2040704, 40, -1), +(96, 9202012, 2040707, 40, -1), +(97, 9202012, 2040701, 40, -1), +(98, 9202012, 2040804, 40, -1), +(99, 9202012, 2040801, 40, -1), +(100, 9202012, 2040004, 40, -1), +(101, 9202012, 2040001, 40, -1), +(102, 9202012, 2290009, 60, -1), +(103, 9202012, 2290031, 60, -1), +(104, 9202012, 2290039, 60, -1), +(105, 9202012, 2290033, 60, -1), +(106, 9202012, 2290045, 60, -1), +(107, 9202012, 2290081, 60, -1), +(108, 9202012, 2290083, 60, -1), +(109, 9202012, 2290087, 60, -1), +(110, 9202012, 2290060, 60, -1), +(111, 9202012, 2290073, 60, -1), +(112, 9202012, 2100000, 250, -1), +(113, 2612004, 4031703, 1, -1), +(114, 1302000, 2010000, 30, -1), +(115, 1302000, 2010009, 30, -1), +(116, 1302000, 4032268, 1, 20013), +(117, 1302000, 4032267, 1, 20013), +(118, 1052000, 4031471, 1, 6153), +(119, 2112015, 2280000, 1, -1), +(120, 1022000, 4031452, 1, -1), +(121, 2202003, 4001022, 1, -1), +(122, 2201001, 4001022, 1, -1), +(123, 1402000, 4032309, 1, -1), +(124, 1402000, 4032310, 1, -1), +(125, 1022001, 4032319, 7, -1), +(126, 1022002, 4001340, 1, 28167), +(127, 1202000, 4001366, 1, 28194), +(128, 1202003, 4001346, 1, 28225), +(129, 1202004, 4001346, 1, 28225), +(130, 1032000, 4032362, 1, 28252), +(131, 1032000, 4032363, 1, 28252), +(132, 1202004, 4032494, 1, 28255), +(133, 1052001, 3010126, 100, -1), +(134, 1052002, 3010126, 100, -1), +(135, 1052001, 1072375, 3, -1), +(136, 1052001, 1072376, 3, -1), +(137, 1052001, 2049100, 3, -1), +(138, 1052001, 2049001, 3, -1), +(139, 1052001, 1382068, 3, -1), +(140, 1052001, 1402062, 3, -1), +(141, 1052001, 1442078, 3, -1), +(142, 1052001, 1452071, 3, -1), +(143, 1052001, 1472086, 3, -1), +(144, 1052001, 1492037, 3, -1), +(145, 1052001, 2040728, 3, -1), +(146, 1052001, 2040729, 3, -1), +(147, 1052001, 2040730, 3, -1), +(148, 1052001, 2040731, 3, -1), +(149, 1052001, 2040732, 3, -1), +(150, 1052001, 2040733, 3, -1), +(151, 1052001, 2040734, 3, -1), +(152, 1052001, 2040735, 3, -1), +(153, 1052001, 2040736, 3, -1), +(154, 1052001, 2040737, 3, -1), +(155, 1052001, 2040738, 3, -1), +(156, 1052001, 2040739, 3, -1), +(157, 1052001, 1302112, 3, -1), +(158, 1052001, 1302113, 3, -1), +(159, 1052001, 1312042, 3, -1), +(160, 1052001, 1312043, 3, -1), +(161, 1052001, 1322068, 3, -1), +(162, 1052001, 1322069, 3, -1), +(163, 1052001, 1332084, 3, -1), +(164, 1052001, 1332085, 3, -1), +(165, 1052001, 1332086, 3, -1), +(166, 1052001, 1332087, 3, -1), +(167, 1052001, 1342019, 3, -1), +(168, 1052001, 1342020, 3, -1), +(169, 1052001, 1372050, 3, -1), +(170, 1052001, 1372051, 3, -1), +(171, 1052001, 1382066, 3, -1), +(172, 1052001, 1382067, 3, -1), +(173, 1052001, 1402056, 3, -1), +(174, 1052001, 1402057, 3, -1), +(175, 1052001, 1402058, 3, -1), +(176, 1052001, 1402059, 3, -1), +(177, 1052001, 1412038, 3, -1), +(178, 1052001, 1412039, 3, -1), +(179, 1052001, 1422042, 3, -1), +(180, 1052001, 1422043, 3, -1), +(181, 1052002, 1072375, 3, -1), +(182, 1052002, 1072376, 3, -1), +(183, 1052002, 2040728, 3, -1), +(184, 1052002, 2040729, 3, -1), +(185, 1052002, 2040730, 3, -1), +(186, 1052002, 2040731, 3, -1), +(187, 1052002, 2040732, 3, -1), +(188, 1052002, 2040733, 3, -1), +(189, 1052002, 2040734, 3, -1), +(190, 1052002, 2040735, 3, -1), +(191, 1052002, 2040736, 3, -1), +(192, 1052002, 2040737, 3, -1), +(193, 1052002, 2040738, 3, -1), +(194, 1052002, 2040739, 3, -1), +(195, 1052002, 1302112, 3, -1), +(196, 1052002, 1302113, 3, -1), +(197, 1052002, 1312042, 3, -1), +(198, 1052002, 1312043, 3, -1), +(199, 1052002, 1322068, 3, -1), +(200, 1052002, 1322069, 3, -1), +(201, 1052002, 1332084, 3, -1), +(202, 1052002, 1332085, 3, -1), +(203, 1052002, 1332086, 3, -1), +(204, 1052002, 1332087, 3, -1), +(205, 1052002, 1342019, 3, -1), +(206, 1052002, 1342020, 3, -1), +(207, 1052002, 1372050, 3, -1), +(208, 1052002, 1372051, 3, -1), +(209, 1052002, 1382066, 3, -1), +(210, 1052002, 1382067, 3, -1), +(211, 1052002, 1402056, 3, -1), +(212, 1052002, 1402057, 3, -1), +(213, 1052002, 1402058, 3, -1), +(214, 1052002, 1402059, 3, -1), +(215, 1052002, 1412038, 3, -1), +(216, 1052002, 1412039, 3, -1), +(217, 1052002, 1422042, 3, -1), +(218, 1052002, 1422043, 3, -1), +(219, 1002008, 4032452, 1, 22502), +(220, 6102001, 4001260, 1, -1), +(221, 6102002, 1472051, 25, -1), +(222, 6102002, 1442056, 25, -1), +(223, 6102002, 1072228, 25, -1), +(224, 6102002, 1322062, 25, -1), +(225, 6102002, 1092061, 25, -1), +(226, 6102002, 1452019, 25, -1), +(227, 6102002, 1492012, 25, -1), +(228, 6102002, 1092050, 25, -1), +(229, 6102002, 1402005, 25, -1), +(230, 6102002, 1052131, 25, -1), +(231, 6102002, 1462016, 25, -1), +(232, 6102002, 1332051, 25, -1), +(233, 6102002, 1102043, 50, -1), +(234, 6102002, 1102206, 50, -1), +(235, 6102002, 1102260, 50, -1), +(236, 6102002, 3010010, 25, -1), +(237, 6102002, 4032015, 25, -1), +(238, 6102002, 4032016, 25, -1), +(239, 6102002, 4032017, 25, -1), +(240, 6102002, 4161018, 25, -1), +(241, 6102002, 4161021, 25, -1), +(242, 6102002, 4001107, 25, -1), +(243, 6102002, 4161015, 25, -1), +(244, 6102002, 4161016, 25, -1), +(245, 6102002, 2022121, 25, -1), +(246, 6102002, 2044803, 25, -1), +(247, 6102002, 2044903, 25, -1), +(248, 6102002, 2290071, 50, -1), +(249, 6102002, 2290027, 50, -1), +(250, 6102002, 2290111, 50, -1), +(251, 6102002, 2290118, 50, -1), +(252, 6102002, 2290103, 50, -1), +(253, 6102002, 2290047, 50, -1), +(254, 6102002, 2290091, 50, -1), +(255, 6102002, 2290053, 50, -1), +(256, 6102002, 2290061, 50, -1), +(257, 6102002, 2290011, 50, -1), +(258, 6102002, 2290089, 50, -1), +(259, 6102003, 1472051, 25, -1), +(260, 6102003, 1442056, 25, -1), +(261, 6102003, 1072228, 25, -1), +(262, 6102003, 1322062, 25, -1), +(263, 6102003, 1092061, 25, -1), +(264, 6102003, 1452019, 25, -1), +(265, 6102003, 1492012, 25, -1), +(266, 6102003, 1092050, 25, -1), +(267, 6102003, 1402005, 25, -1), +(268, 6102003, 1052131, 25, -1), +(269, 6102003, 1462016, 25, -1), +(270, 6102003, 1332051, 25, -1), +(271, 6102003, 1102043, 50, -1), +(272, 6102003, 1102206, 50, -1), +(273, 6102003, 1102260, 50, -1), +(274, 6102003, 3010010, 25, -1), +(275, 6102003, 4032015, 25, -1), +(276, 6102003, 4032016, 25, -1), +(277, 6102003, 4032017, 25, -1), +(278, 6102003, 4161018, 25, -1), +(279, 6102003, 4161021, 25, -1), +(280, 6102003, 4001107, 25, -1), +(281, 6102003, 4161015, 25, -1), +(282, 6102003, 4161016, 25, -1), +(283, 6102003, 2022121, 25, -1), +(284, 6102003, 2044803, 25, -1), +(285, 6102003, 2044903, 25, -1), +(286, 6102003, 2290071, 50, -1), +(287, 6102003, 2290027, 50, -1), +(288, 6102003, 2290111, 50, -1), +(289, 6102003, 2290118, 50, -1), +(290, 6102003, 2290103, 50, -1), +(291, 6102003, 2290047, 50, -1), +(292, 6102003, 2290091, 50, -1), +(293, 6102003, 2290053, 50, -1), +(294, 6102003, 2290061, 50, -1), +(295, 6102003, 2290011, 50, -1), +(296, 6102003, 2290089, 50, -1), +(297, 6102004, 1472051, 25, -1), +(298, 6102004, 1442056, 25, -1), +(299, 6102004, 1072228, 25, -1), +(300, 6102004, 1322062, 25, -1), +(301, 6102004, 1092061, 25, -1), +(302, 6102004, 1452019, 25, -1), +(303, 6102004, 1492012, 25, -1), +(304, 6102004, 1092050, 25, -1), +(305, 6102004, 1402005, 25, -1), +(306, 6102004, 1052131, 25, -1), +(307, 6102004, 1462016, 25, -1), +(308, 6102004, 1332051, 25, -1), +(309, 6102004, 1102043, 50, -1), +(310, 6102004, 1102206, 50, -1), +(311, 6102004, 1102260, 50, -1), +(312, 6102004, 3010010, 25, -1), +(313, 6102004, 4032015, 25, -1), +(314, 6102004, 4032016, 25, -1), +(315, 6102004, 4032017, 25, -1), +(316, 6102004, 4161018, 25, -1), +(317, 6102004, 4161021, 25, -1), +(318, 6102004, 4001107, 25, -1), +(319, 6102004, 4161015, 25, -1), +(320, 6102004, 4161016, 25, -1), +(321, 6102004, 2022121, 25, -1), +(322, 6102004, 2044803, 25, -1), +(323, 6102004, 2044903, 25, -1), +(324, 6102004, 2290071, 50, -1), +(325, 6102004, 2290027, 50, -1), +(326, 6102004, 2290111, 50, -1), +(327, 6102004, 2290118, 50, -1), +(328, 6102004, 2290103, 50, -1), +(329, 6102004, 2290047, 50, -1), +(330, 6102004, 2290091, 50, -1), +(331, 6102004, 2290053, 50, -1), +(332, 6102004, 2290061, 50, -1), +(333, 6102004, 2290011, 50, -1), +(334, 6102004, 2290089, 50, -1), +(335, 6102005, 1472051, 25, -1), +(336, 6102005, 1442056, 25, -1), +(337, 6102005, 1072228, 25, -1), +(338, 6102005, 1322062, 25, -1), +(339, 6102005, 1092061, 25, -1), +(340, 6102005, 1452019, 25, -1), +(341, 6102005, 1492012, 25, -1), +(342, 6102005, 1092050, 25, -1), +(343, 6102005, 1402005, 25, -1), +(344, 6102005, 1052131, 25, -1), +(345, 6102005, 1462016, 25, -1), +(346, 6102005, 1332051, 25, -1), +(347, 6102005, 1102043, 50, -1), +(348, 6102005, 1102206, 50, -1), +(349, 6102005, 1102260, 50, -1), +(350, 6102005, 3010010, 25, -1), +(351, 6102005, 4032015, 25, -1), +(352, 6102005, 4032016, 25, -1), +(353, 6102005, 4032017, 25, -1), +(354, 6102005, 4161018, 25, -1), +(355, 6102005, 4161021, 25, -1), +(356, 6102005, 4001107, 25, -1), +(357, 6102005, 4161015, 25, -1), +(358, 6102005, 4161016, 25, -1), +(359, 6102005, 2022121, 25, -1), +(360, 6102005, 2044803, 25, -1), +(361, 6102005, 2044903, 25, -1), +(362, 6102005, 2290071, 50, -1), +(363, 6102005, 2290027, 50, -1), +(364, 6102005, 2290111, 50, -1), +(365, 6102005, 2290118, 50, -1), +(366, 6102005, 2290103, 50, -1), +(367, 6102005, 2290047, 50, -1), +(368, 6102005, 2290091, 50, -1), +(369, 6102005, 2290053, 50, -1), +(370, 6102005, 2290061, 50, -1), +(371, 6102005, 2290011, 50, -1), +(372, 6102005, 2290089, 50, -1), +(373, 3002000, 4001162, 1, -1), +(374, 3002001, 4001163, 1, -1), +(375, 6702000, 4031595, 1, -1), +(376, 6702003, 1032043, 5, -1), +(377, 6702003, 1032044, 5, -1), +(378, 6702003, 1032045, 5, -1), +(379, 6702003, 1102099, 20, -1), +(380, 6702003, 1102100, 20, -1), +(381, 6702003, 1102101, 50, -1), +(382, 6702003, 1102102, 50, -1), +(383, 6702003, 1102103, 50, -1), +(384, 6702003, 1102104, 50, -1), +(385, 6702003, 1102105, 50, -1), +(386, 6702003, 1102106, 50, -1), +(387, 6702003, 4021007, 5, -1), +(388, 6702003, 4021008, 5, -1), +(389, 6702003, 4020007, 5, -1), +(390, 6702003, 4020007, 5, -1), +(391, 6702003, 4011006, 5, -1), +(392, 6702003, 2040759, 50, -1), +(393, 6702003, 2041035, 20, -1), +(394, 6702003, 2041037, 20, -1), +(395, 6702003, 2041039, 20, -1), +(396, 6702003, 2041041, 20, -1), +(397, 6702003, 2000005, 5, -1), +(398, 6702003, 2022179, 4, -1), +(399, 6702003, 2022180, 5, -1), +(400, 6702003, 2022181, 5, -1), +(401, 6702003, 2022182, 5, -1), +(402, 6702003, 2000005, 5, -1), +(403, 6702003, 2020010, 5, -1), +(404, 6702003, 2020013, 5, -1), +(405, 6702003, 3010011, 50, -1), +(406, 6702003, 3012000, 100, -1), +(407, 6702003, 3012005, 100, -1), +(408, 6702004, 1032043, 5, -1), +(409, 6702004, 1032044, 5, -1), +(410, 6702004, 1032045, 5, -1), +(411, 6702004, 1102099, 20, -1), +(412, 6702004, 1102100, 20, -1), +(413, 6702004, 1102101, 50, -1), +(414, 6702004, 1102102, 50, -1), +(415, 6702004, 1102103, 50, -1), +(416, 6702004, 1102104, 50, -1), +(417, 6702004, 1102105, 50, -1), +(418, 6702004, 1102106, 50, -1), +(419, 6702004, 4021007, 5, -1), +(420, 6702004, 4021008, 5, -1), +(421, 6702004, 4020007, 5, -1), +(422, 6702004, 4020007, 5, -1), +(423, 6702004, 4011006, 5, -1), +(424, 6702004, 2040759, 50, -1), +(425, 6702004, 2041035, 20, -1), +(426, 6702004, 2041037, 20, -1), +(427, 6702004, 2041039, 20, -1), +(428, 6702004, 2041041, 20, -1), +(429, 6702004, 2000005, 5, -1), +(430, 6702004, 2022179, 4, -1), +(431, 6702004, 2022180, 5, -1), +(432, 6702004, 2022181, 5, -1), +(433, 6702004, 2022182, 5, -1), +(434, 6702004, 2000005, 5, -1), +(435, 6702004, 2020010, 5, -1), +(436, 6702004, 2020013, 5, -1), +(437, 6702004, 3010011, 50, -1), +(438, 6702004, 3012000, 100, -1), +(439, 6702004, 3012005, 100, -1), +(440, 6702005, 1032043, 5, -1), +(441, 6702005, 1032044, 5, -1), +(442, 6702005, 1032045, 5, -1), +(443, 6702005, 1102099, 20, -1), +(444, 6702005, 1102100, 20, -1), +(445, 6702005, 1102101, 50, -1), +(446, 6702005, 1102102, 50, -1), +(447, 6702005, 1102103, 50, -1), +(448, 6702005, 1102104, 50, -1), +(449, 6702005, 1102105, 50, -1), +(450, 6702005, 1102106, 50, -1), +(451, 6702005, 4021007, 5, -1), +(452, 6702005, 4021008, 5, -1), +(453, 6702005, 4020007, 5, -1), +(454, 6702005, 4020007, 5, -1), +(455, 6702005, 4011006, 5, -1), +(456, 6702005, 2040759, 50, -1), +(457, 6702005, 2041035, 20, -1), +(458, 6702005, 2041037, 20, -1), +(459, 6702005, 2041039, 20, -1), +(460, 6702005, 2041041, 20, -1), +(461, 6702005, 2000005, 5, -1), +(462, 6702005, 2022179, 4, -1), +(463, 6702005, 2022180, 5, -1), +(464, 6702005, 2022181, 5, -1), +(465, 6702005, 2022182, 5, -1), +(466, 6702005, 2000005, 5, -1), +(467, 6702005, 2020010, 5, -1), +(468, 6702005, 2020013, 5, -1), +(469, 6702005, 3010011, 50, -1), +(470, 6702005, 3012000, 100, -1), +(471, 6702005, 3012005, 100, -1), +(472, 6702006, 1032043, 5, -1), +(473, 6702006, 1032044, 5, -1), +(474, 6702006, 1032045, 5, -1), +(475, 6702006, 1102099, 20, -1), +(476, 6702006, 1102100, 20, -1), +(477, 6702006, 1102101, 50, -1), +(478, 6702006, 1102102, 50, -1), +(479, 6702006, 1102103, 50, -1), +(480, 6702006, 1102104, 50, -1), +(481, 6702006, 1102105, 50, -1), +(482, 6702006, 1102106, 50, -1), +(483, 6702006, 4021007, 5, -1), +(484, 6702006, 4021008, 5, -1), +(485, 6702006, 4020007, 5, -1), +(486, 6702006, 4020007, 5, -1), +(487, 6702006, 4011006, 5, -1), +(488, 6702006, 2040759, 50, -1), +(489, 6702006, 2041035, 20, -1), +(490, 6702006, 2041037, 20, -1), +(491, 6702006, 2041039, 20, -1), +(492, 6702006, 2041041, 20, -1), +(493, 6702006, 2000005, 5, -1), +(494, 6702006, 2022179, 4, -1), +(495, 6702006, 2022180, 5, -1), +(496, 6702006, 2022181, 5, -1), +(497, 6702006, 2022182, 5, -1), +(498, 6702006, 2000005, 5, -1), +(499, 6702006, 2020010, 5, -1), +(500, 6702006, 2020013, 5, -1), +(501, 6702006, 3010011, 50, -1), +(502, 6702006, 3012000, 100, -1), +(503, 6702006, 3012005, 100, -1), +(504, 6702007, 1032043, 5, -1), +(505, 6702007, 1032044, 5, -1), +(506, 6702007, 1032045, 5, -1), +(507, 6702007, 1102099, 20, -1), +(508, 6702007, 1102100, 20, -1), +(509, 6702007, 1102101, 50, -1), +(510, 6702007, 1102102, 50, -1), +(511, 6702007, 1102103, 50, -1), +(512, 6702007, 1102104, 50, -1), +(513, 6702007, 1102105, 50, -1), +(514, 6702007, 1102106, 50, -1), +(515, 6702007, 4021007, 5, -1), +(516, 6702007, 4021008, 5, -1), +(517, 6702007, 4020007, 5, -1), +(518, 6702007, 4020007, 5, -1), +(519, 6702007, 4011006, 5, -1), +(520, 6702007, 2040759, 50, -1), +(521, 6702007, 2041035, 20, -1), +(522, 6702007, 2041037, 20, -1), +(523, 6702007, 2041039, 20, -1), +(524, 6702007, 2041041, 20, -1), +(525, 6702007, 2000005, 5, -1), +(526, 6702007, 2022179, 4, -1), +(527, 6702007, 2022180, 5, -1), +(528, 6702007, 2022181, 5, -1), +(529, 6702007, 2022182, 5, -1), +(530, 6702007, 2000005, 5, -1), +(531, 6702007, 2020010, 5, -1), +(532, 6702007, 2020013, 5, -1), +(533, 6702007, 3010011, 50, -1), +(534, 6702007, 3012000, 100, -1), +(535, 6702007, 3012005, 100, -1), +(536, 6702008, 1032043, 5, -1), +(537, 6702008, 1032044, 5, -1), +(538, 6702008, 1032045, 5, -1), +(539, 6702008, 1102099, 20, -1), +(540, 6702008, 1102100, 20, -1), +(541, 6702008, 1102101, 50, -1), +(542, 6702008, 1102102, 50, -1), +(543, 6702008, 1102103, 50, -1), +(544, 6702008, 1102104, 50, -1), +(545, 6702008, 1102105, 50, -1), +(546, 6702008, 1102106, 50, -1), +(547, 6702008, 4021007, 5, -1), +(548, 6702008, 4021008, 5, -1), +(549, 6702008, 4020007, 5, -1), +(550, 6702008, 4020007, 5, -1), +(551, 6702008, 4011006, 5, -1), +(552, 6702008, 2040759, 50, -1), +(553, 6702008, 2041035, 20, -1), +(554, 6702008, 2041037, 20, -1), +(555, 6702008, 2041039, 20, -1), +(556, 6702008, 2041041, 20, -1), +(557, 6702008, 2000005, 5, -1), +(558, 6702008, 2022179, 4, -1), +(559, 6702008, 2022180, 5, -1), +(560, 6702008, 2022181, 5, -1), +(561, 6702008, 2022182, 5, -1), +(562, 6702008, 2000005, 5, -1), +(563, 6702008, 2020010, 5, -1), +(564, 6702008, 2020013, 5, -1), +(565, 6702008, 3010011, 50, -1), +(566, 6702008, 3012000, 100, -1), +(567, 6702008, 3012005, 100, -1), +(568, 6702009, 1032043, 5, -1), +(569, 6702009, 1032044, 5, -1), +(570, 6702009, 1032045, 5, -1), +(571, 6702009, 1102099, 20, -1), +(572, 6702009, 1102100, 20, -1), +(573, 6702009, 1102101, 50, -1), +(574, 6702009, 1102102, 50, -1), +(575, 6702009, 1102103, 50, -1), +(576, 6702009, 1102104, 50, -1), +(577, 6702009, 1102105, 50, -1), +(578, 6702009, 1102106, 50, -1), +(579, 6702009, 4021007, 5, -1), +(580, 6702009, 4021008, 5, -1), +(581, 6702009, 4020007, 5, -1), +(582, 6702009, 4020007, 5, -1), +(583, 6702009, 4011006, 5, -1), +(584, 6702009, 2040759, 50, -1), +(585, 6702009, 2041035, 20, -1), +(586, 6702009, 2041037, 20, -1), +(587, 6702009, 2041039, 20, -1), +(588, 6702009, 2041041, 20, -1), +(589, 6702009, 2000005, 5, -1), +(590, 6702009, 2022179, 4, -1), +(591, 6702009, 2022180, 5, -1), +(592, 6702009, 2022181, 5, -1), +(593, 6702009, 2022182, 5, -1), +(594, 6702009, 2000005, 5, -1), +(595, 6702009, 2020010, 5, -1), +(596, 6702009, 2020013, 5, -1), +(597, 6702009, 3010011, 50, -1), +(598, 6702009, 3012000, 100, -1), +(599, 6702009, 3012005, 100, -1), +(600, 6702010, 1032043, 5, -1), +(601, 6702010, 1032044, 5, -1), +(602, 6702010, 1032045, 5, -1), +(603, 6702010, 1102099, 20, -1), +(604, 6702010, 1102100, 20, -1), +(605, 6702010, 1102101, 50, -1), +(606, 6702010, 1102102, 50, -1), +(607, 6702010, 1102103, 50, -1), +(608, 6702010, 1102104, 50, -1), +(609, 6702010, 1102105, 50, -1), +(610, 6702010, 1102106, 50, -1), +(611, 6702010, 4021007, 5, -1), +(612, 6702010, 4021008, 5, -1), +(613, 6702010, 4020007, 5, -1), +(614, 6702010, 4020007, 5, -1), +(615, 6702010, 4011006, 5, -1), +(616, 6702010, 2040759, 50, -1), +(617, 6702010, 2041035, 20, -1), +(618, 6702010, 2041037, 20, -1), +(619, 6702010, 2041039, 20, -1), +(620, 6702010, 2041041, 20, -1), +(621, 6702010, 2000005, 5, -1), +(622, 6702010, 2022179, 4, -1), +(623, 6702010, 2022180, 5, -1), +(624, 6702010, 2022181, 5, -1), +(625, 6702010, 2022182, 5, -1), +(626, 6702010, 2000005, 5, -1), +(627, 6702010, 2020010, 5, -1), +(628, 6702010, 2020013, 5, -1), +(629, 6702010, 3010011, 50, -1), +(630, 6702010, 3012000, 100, -1), +(631, 6702010, 3012005, 100, -1), +(632, 6702011, 1032043, 5, -1), +(633, 6702011, 1032044, 5, -1), +(634, 6702011, 1032045, 5, -1), +(635, 6702011, 1102099, 20, -1), +(636, 6702011, 1102100, 20, -1), +(637, 6702011, 1102101, 50, -1), +(638, 6702011, 1102102, 50, -1), +(639, 6702011, 1102103, 50, -1), +(640, 6702011, 1102104, 50, -1), +(641, 6702011, 1102105, 50, -1), +(642, 6702011, 1102106, 50, -1), +(643, 6702011, 4021007, 5, -1), +(644, 6702011, 4021008, 5, -1), +(645, 6702011, 4020007, 5, -1), +(646, 6702011, 4020007, 5, -1), +(647, 6702011, 4011006, 5, -1), +(648, 6702011, 2040759, 50, -1), +(649, 6702011, 2041035, 20, -1), +(650, 6702011, 2041037, 20, -1), +(651, 6702011, 2041039, 20, -1), +(652, 6702011, 2041041, 20, -1), +(653, 6702011, 2000005, 5, -1), +(654, 6702011, 2022179, 4, -1), +(655, 6702011, 2022180, 5, -1), +(656, 6702011, 2022181, 5, -1), +(657, 6702011, 2022182, 5, -1), +(658, 6702011, 2000005, 5, -1), +(659, 6702011, 2020010, 5, -1), +(660, 6702011, 2020013, 5, -1), +(661, 6702011, 3010011, 50, -1), +(662, 6702011, 3012000, 100, -1), +(663, 6702011, 3012005, 100, -1), +(664, 6702012, 1032043, 5, -1), +(665, 6702012, 1032044, 5, -1), +(666, 6702012, 1032045, 5, -1), +(667, 6702012, 1102099, 20, -1), +(668, 6702012, 1102100, 20, -1), +(669, 6702012, 1102101, 50, -1), +(670, 6702012, 1102102, 50, -1), +(671, 6702012, 1102103, 50, -1), +(672, 6702012, 1102104, 50, -1), +(673, 6702012, 1102105, 50, -1), +(674, 6702012, 1102106, 50, -1), +(675, 6702012, 4021007, 5, -1), +(676, 6702012, 4021008, 5, -1), +(677, 6702012, 4020007, 5, -1), +(678, 6702012, 4020007, 5, -1), +(679, 6702012, 4011006, 5, -1), +(680, 6702012, 2040759, 50, -1), +(681, 6702012, 2041035, 20, -1), +(682, 6702012, 2041037, 20, -1), +(683, 6702012, 2041039, 20, -1), +(684, 6702012, 2041041, 20, -1), +(685, 6702012, 2000005, 5, -1), +(686, 6702012, 2022179, 5, -1), +(687, 6702012, 2022180, 5, -1), +(688, 6702012, 2022181, 5, -1), +(689, 6702012, 2022182, 5, -1), +(690, 6702012, 2000005, 5, -1), +(691, 6702012, 2020010, 5, -1), +(692, 6702012, 2020013, 5, -1), +(693, 6702012, 3010011, 50, -1), +(694, 6702012, 3012000, 100, -1), +(695, 6702012, 3012005, 100, -1), +(696, 1032000, 4001363, 1, -1), +(697, 1032000, 4001362, 1, -1), +(698, 2512000, 2022131, 1, -1), +(699, 2512000, 2022132, 1, -1), +(700, 2612002, 4001134, 1, -1), +(701, 2612001, 4001135, 1, -1), +(754, 200002, 4010001, 1, -1), +(753, 200001, 4020001, 1, -1), +(704, 9102003, 4001095, 3, -1), +(705, 9102003, 4001096, 3, -1), +(706, 9102004, 4001096, 3, -1), +(707, 9102004, 4001097, 3, -1), +(708, 9102005, 4001097, 3, -1), +(709, 9102005, 4001098, 3, -1), +(710, 9102006, 4001098, 3, -1), +(711, 9102006, 4001099, 3, -1), +(712, 9102007, 4001099, 3, -1), +(713, 9102007, 4001100, 3, -1), +(714, 2002001, 4001063, 1, -1), +(715, 2002002, 4001052, 1, -1), +(716, 2002003, 4001055, 1, -1), +(717, 2002004, 4001056, 1, -1), +(718, 2002005, 4001057, 1, -1), +(719, 2002006, 4001058, 1, -1), +(720, 2002007, 4001059, 1, -1), +(721, 2002008, 4001060, 1, -1), +(722, 2002009, 4001061, 1, -1), +(723, 2002010, 4001062, 1, -1), +(724, 2002011, 4001046, 1, -1), +(725, 2002012, 4001047, 1, -1), +(726, 2002013, 4001049, 1, -1), +(727, 2002017, 4001158, 1, -1), +(728, 2002018, 4001158, 1, -1), +(729, 3102000, 4000276, 1, -1), +(730, 6102002, 1382060, 50, -1), +(731, 6102003, 1382060, 50, -1), +(732, 6102004, 1382060, 50, -1), +(733, 6102005, 1382060, 50, -1), +(734, 6102002, 1442068, 50, -1), +(735, 6102003, 1442068, 50, -1), +(736, 6102004, 1442068, 50, -1), +(737, 6102005, 1442068, 50, -1), +(738, 6102002, 1452060, 50, -1), +(739, 6102003, 1452060, 50, -1), +(740, 6102004, 1452060, 50, -1), +(741, 6102005, 1452060, 50, -1), +(742, 3102000, 2022712, 1, -1), +(743, 2502002, 2022252, 1, -1), +(744, 1202002, 4031843, 1, 2169), +(752, 200001, 4010005, 1, -1), +(751, 200000, 4020004, 1, -1), +(750, 200000, 4010004, 1, -1), +(749, 9102002, 4001453, 1, -1), +(755, 200002, 4020005, 1, -1), +(756, 200003, 4010000, 1, -1), +(757, 200003, 4010003, 1, -1), +(758, 200004, 4004002, 1, -1), +(759, 200004, 4010002, 1, -1), +(760, 200004, 4020003, 1, -1), +(761, 200005, 4010006, 1, -1), +(762, 200005, 4020006, 1, -1), +(763, 200006, 4020002, 1, -1), +(764, 200006, 4020007, 1, -1), +(765, 200007, 4004000, 1, -1), +(766, 200007, 4020000, 1, -1), +(767, 200008, 4004004, 1, -1), +(768, 200008, 4020008, 1, -1), +(769, 200009, 4004001, 1, -1), +(770, 200009, 4004003, 1, -1), +(771, 200009, 4010008, 1, -1), +(772, 200010, 4010008, 1, -1), +(773, 200000, 4010010, 1, -1), +(774, 200001, 4010010, 1, -1), +(775, 200002, 4010010, 1, -1), +(776, 200003, 4010010, 1, -1), +(777, 200004, 4010010, 1, -1), +(778, 200005, 4010010, 1, -1), +(779, 200006, 4010010, 1, -1), +(780, 200007, 4010010, 1, -1), +(781, 200008, 4010010, 1, -1), +(782, 200009, 4010010, 1, -1), +(783, 200011, 4010010, 1, -1), +(784, 200011, 4010010, 1, -1), +(785, 200011, 4010010, 1, -1), +(786, 200011, 4010010, 1, -1), +(787, 200011, 4010010, 1, -1), +(788, 200011, 4010010, 1, -1), +(789, 200011, 4010010, 1, -1), +(790, 200011, 4010010, 1, -1), +(791, 200011, 4010010, 1, -1), +(792, 200011, 4010010, 1, -1), +(793, 100000, 4022023, 1, -1), +(794, 100001, 4022023, 1, -1), +(795, 100002, 4022023, 1, -1), +(796, 100003, 4022023, 1, -1), +(797, 100004, 4022023, 1, -1), +(798, 100005, 4022023, 1, -1), +(799, 100006, 4022023, 1, -1), +(800, 100007, 4022023, 1, -1), +(801, 100008, 4022023, 1, -1), +(802, 100009, 4022023, 1, -1), +(803, 100011, 4022023, 1, -1), +(804, 100011, 4022023, 1, -1), +(805, 100011, 4022023, 1, -1), +(806, 100011, 4022023, 1, -1), +(807, 100011, 4022023, 1, -1), +(808, 100011, 4022023, 1, -1), +(809, 100011, 4022023, 1, -1), +(810, 100011, 4022023, 1, -1), +(811, 100011, 4022023, 1, -1), +(812, 100011, 4022023, 1, -1), +(813, 100000, 4022000, 1, -1), +(814, 100000, 4022001, 1, -1), +(815, 100001, 4022002, 1, -1), +(816, 100001, 4022003, 1, -1), +(817, 100002, 4022004, 1, -1), +(818, 100002, 4022005, 1, -1), +(819, 100003, 4022006, 1, -1), +(820, 100003, 4022007, 1, -1), +(821, 100004, 4022008, 1, -1), +(822, 100004, 4022009, 1, -1), +(823, 100005, 4022010, 1, -1), +(824, 100005, 4022011, 1, -1), +(825, 100006, 4022012, 1, -1), +(826, 100006, 4022013, 1, -1), +(827, 100007, 4022014, 1, -1), +(828, 100007, 4022015, 1, -1), +(829, 100008, 4022016, 1, -1), +(830, 100008, 4022017, 1, -1), +(831, 100009, 4022018, 1, -1), +(832, 100009, 4022019, 1, -1), +(833, 100009, 4022020, 1, -1), +(834, 100009, 4022021, 1, -1), +(835, 100010, 4022022, 1, -1), +(836, 1002009, 4031161, 1, 1008), +(837, 1002009, 4031162, 1, 1008), +(838, 1209001, 4032980, 1, 2565), +(839, 1052001, 1532022, 3, -1), +(840, 1052001, 1532023, 3, -1); + +CREATE TABLE IF NOT EXISTS `reports` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `reporttime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + `reporterid` int(11) NOT NULL, + `victimid` int(11) NOT NULL, + `reason` tinyint(4) NOT NULL, + `chatlog` text NOT NULL, + `status` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `responses` ( + `chat` text, + `response` text, + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `rings` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `partnerRingId` int(11) NOT NULL DEFAULT '0', + `partnerChrId` int(11) NOT NULL DEFAULT '0', + `itemid` int(11) NOT NULL DEFAULT '0', + `partnername` varchar(255) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `savedlocations` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `locationtype` enum('FREE_MARKET','WORLDTOUR','FLORINA','INTRO','MIRROR','EVENT','BOSSPQ') NOT NULL, + `map` int(11) NOT NULL, + `portal` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `server_queue` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `accountid` int(11) NOT NULL DEFAULT '0', + `characterid` int(11) NOT NULL DEFAULT '0', + `type` tinyint(2) NOT NULL DEFAULT '0', + `value` int(10) NOT NULL DEFAULT '0', + `message` varchar(128) NOT NULL, + `createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `shopitems` ( + `shopitemid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `shopid` int(10) unsigned NOT NULL, + `itemid` int(11) NOT NULL, + `price` int(11) NOT NULL, + `pitch` int(11) NOT NULL DEFAULT '0', + `position` int(11) NOT NULL COMMENT 'sort is an arbitrary field designed to give leeway when modifying shops. The lowest number is 104 and it increments by 4 for each item to allow decent space for swapping/inserting/removing items.', + PRIMARY KEY (`shopitemid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20047 ; + +INSERT INTO `shopitems` (`shopitemid`, `shopid`, `itemid`, `price`, `pitch`, `position`) VALUES +(1, 11000, 1332005, 500, 0, 104), +(2, 11000, 1322005, 50, 0, 108), +(3, 11000, 1312004, 50, 0, 112), +(4, 11000, 1302000, 50, 0, 116), +(5, 11100, 2010002, 50, 0, 104), +(6, 11100, 2010000, 30, 0, 108), +(7, 11100, 2000002, 320, 0, 112), +(8, 11100, 2000001, 160, 0, 116), +(9, 11100, 2000000, 50, 0, 120), +(10, 21000, 1072005, 50, 0, 104), +(11, 21000, 1072001, 50, 0, 108), +(12, 21000, 1061008, 50, 0, 112), +(13, 21000, 1061002, 50, 0, 116), +(14, 21000, 1060006, 50, 0, 120), +(15, 21000, 1060002, 50, 0, 124), +(16, 21000, 1041011, 50, 0, 128), +(17, 21000, 1041010, 50, 0, 132), +(18, 21000, 1041006, 50, 0, 136), +(19, 21000, 1041002, 50, 0, 140), +(20, 21000, 1040010, 50, 0, 144), +(21, 21000, 1040006, 50, 0, 148), +(22, 21000, 1040002, 50, 0, 152), +(23, 1001000, 1332007, 1000, 0, 104), +(24, 1001000, 1312000, 3000, 0, 108), +(25, 1001000, 1302007, 3000, 0, 112), +(26, 1001000, 1322005, 50, 0, 116), +(27, 1001000, 1312004, 50, 0, 120), +(28, 1001000, 1302000, 50, 0, 124), +(29, 1001001, 3010001, 1000, 0, 104), +(30, 1001001, 1092003, 2000, 0, 108), +(31, 1001001, 1072063, 10000, 0, 112), +(32, 1001001, 1072062, 10000, 0, 116), +(33, 1001001, 1072017, 10000, 0, 120), +(34, 1001001, 1072049, 5000, 0, 124), +(35, 1001001, 1072048, 5000, 0, 128), +(36, 1001001, 1072008, 5000, 0, 132), +(37, 1001001, 1072005, 50, 0, 136), +(38, 1001001, 1072038, 50, 0, 140), +(39, 1001001, 1072037, 50, 0, 144), +(40, 1001001, 1072001, 50, 0, 148), +(41, 1001001, 1062001, 4800, 0, 152), +(42, 1001001, 1062000, 4800, 0, 156), +(43, 1001001, 1060004, 2800, 0, 160), +(44, 1001001, 1060007, 1000, 0, 164), +(45, 1001001, 1041012, 3000, 0, 168), +(46, 1001001, 1041004, 3000, 0, 172), +(47, 1001001, 1040014, 3000, 0, 176), +(48, 1001001, 1040013, 3000, 0, 180), +(49, 1001001, 1002001, 3000, 0, 184), +(50, 1001001, 1002019, 2000, 0, 188), +(51, 1001001, 1002134, 800, 0, 192), +(52, 1001001, 1002133, 800, 0, 196), +(53, 1001001, 1002132, 800, 0, 200), +(54, 1001001, 1002069, 450, 0, 204), +(55, 1001001, 1002068, 450, 0, 208), +(56, 1001001, 1002067, 450, 0, 212), +(57, 1001001, 1002066, 450, 0, 216), +(58, 1001001, 1002014, 1000, 0, 220), +(59, 1001001, 1002008, 500, 0, 224), +(60, 1001100, 2330000, 600, 0, 104), +(61, 1001100, 2070000, 500, 0, 108), +(64, 1001100, 2061000, 1, 0, 120), +(65, 1001100, 2060000, 1, 0, 124), +(66, 1001100, 2030001, 500, 0, 128), +(67, 1001100, 2030000, 400, 0, 132), +(68, 1001100, 2020028, 3000, 0, 136), +(69, 1001100, 2010004, 310, 0, 140), +(70, 1001100, 2010003, 100, 0, 144), +(71, 1001100, 2010001, 106, 0, 148), +(72, 1001100, 2010002, 50, 0, 152), +(73, 1001100, 2010000, 30, 0, 156), +(74, 1001100, 2002005, 500, 0, 160), +(75, 1001100, 2002004, 500, 0, 164), +(76, 1001100, 2002002, 500, 0, 168), +(77, 1001100, 2002001, 400, 0, 172), +(78, 1001100, 2002000, 500, 0, 176), +(79, 1001100, 2000006, 620, 0, 180), +(80, 1001100, 2000003, 200, 0, 184), +(81, 1001100, 2000002, 320, 0, 188), +(82, 1001100, 2000001, 160, 0, 192), +(83, 1001100, 2000000, 50, 0, 196), +(84, 1011000, 1442004, 24000, 0, 104), +(85, 1011000, 1422004, 20000, 0, 108), +(86, 1011000, 1322008, 12000, 0, 112), +(87, 1011000, 1322007, 6000, 0, 116), +(88, 1011000, 1302007, 3000, 0, 120), +(89, 1011000, 1462000, 30000, 0, 124), +(90, 1011000, 1462003, 12000, 0, 128), +(91, 1011000, 1462002, 8000, 0, 132), +(92, 1011000, 1462001, 4000, 0, 136), +(93, 1011000, 1452000, 20000, 0, 140), +(94, 1011000, 1452001, 10000, 0, 144), +(95, 1011000, 1452003, 6000, 0, 148), +(96, 1011000, 1452002, 3000, 0, 152), +(97, 1011001, 1072064, 30000, 0, 104), +(98, 1011001, 1072018, 30000, 0, 108), +(99, 1011001, 1072056, 15000, 0, 112), +(100, 1011001, 1072055, 15000, 0, 116), +(101, 1011001, 1072054, 15000, 0, 120), +(102, 1011001, 1072012, 15000, 0, 124), +(103, 1011001, 1072068, 9000, 0, 128), +(104, 1011001, 1072067, 9000, 0, 132), +(105, 1011001, 1072026, 9000, 0, 136), +(106, 1011001, 1072025, 9000, 0, 140), +(107, 1011001, 1072061, 4500, 0, 144), +(108, 1011001, 1072060, 4500, 0, 148), +(109, 1011001, 1072016, 4500, 0, 152), +(110, 1011001, 1072059, 1800, 0, 156), +(111, 1011001, 1072015, 1800, 0, 160), +(112, 1011001, 1062006, 13000, 0, 164), +(113, 1011001, 1062002, 9000, 0, 168), +(114, 1011001, 1062004, 3000, 0, 172), +(115, 1011001, 1061052, 44000, 0, 176), +(116, 1011001, 1061051, 44000, 0, 180), +(117, 1011001, 1061050, 44000, 0, 184), +(118, 1011001, 1061026, 9000, 0, 188), +(119, 1011001, 1061025, 9000, 0, 192), +(120, 1011001, 1061024, 9000, 0, 196), +(121, 1011001, 1061059, 5000, 0, 200), +(122, 1011001, 1061058, 5000, 0, 204), +(123, 1011001, 1061006, 5000, 0, 208), +(124, 1011001, 1061057, 3000, 0, 212), +(125, 1011001, 1061009, 3000, 0, 216), +(126, 1011001, 1060059, 44000, 0, 220), +(127, 1011001, 1060058, 44000, 0, 224), +(128, 1011001, 1060057, 44000, 0, 228), +(129, 1011001, 1060056, 44000, 0, 232), +(130, 1011001, 1060005, 14000, 0, 236), +(131, 1011001, 1041056, 50000, 0, 240), +(132, 1011001, 1041055, 50000, 0, 244), +(133, 1011001, 1041054, 50000, 0, 248), +(134, 1011001, 1041035, 15000, 0, 252), +(135, 1011001, 1041034, 15000, 0, 256), +(136, 1011001, 1041033, 15000, 0, 260), +(137, 1011001, 1041032, 15000, 0, 264), +(138, 1011001, 1041028, 9000, 0, 268), +(139, 1011001, 1041027, 9000, 0, 272), +(140, 1011001, 1041013, 9000, 0, 276), +(141, 1011001, 1041063, 5500, 0, 280), +(142, 1011001, 1041062, 5500, 0, 284), +(143, 1011001, 1041008, 5500, 0, 288), +(144, 1011001, 1041061, 3200, 0, 292), +(145, 1011001, 1041007, 3200, 0, 296), +(146, 1011001, 1040070, 50000, 0, 300), +(147, 1011001, 1040069, 50000, 0, 304), +(148, 1011001, 1040068, 50000, 0, 308), +(149, 1011001, 1040067, 50000, 0, 312), +(150, 1011001, 1040025, 15000, 0, 316), +(151, 1011001, 1040024, 15000, 0, 320), +(152, 1011001, 1040023, 15000, 0, 324), +(153, 1011001, 1040022, 15000, 0, 328), +(154, 1011001, 1040003, 9000, 0, 332), +(155, 1011001, 1040011, 5500, 0, 336), +(156, 1011001, 1040007, 5500, 0, 340), +(157, 1011001, 1040071, 3200, 0, 344), +(158, 1011001, 1040008, 3200, 0, 348), +(159, 1011001, 1032003, 7000, 0, 352), +(160, 1011001, 1032001, 7000, 0, 356), +(161, 1011001, 1002165, 30000, 0, 360), +(162, 1011001, 1002164, 30000, 0, 364), +(163, 1011001, 1002163, 30000, 0, 368), +(164, 1011001, 1002162, 30000, 0, 372), +(165, 1011001, 1002161, 30000, 0, 376), +(166, 1011001, 1002160, 20000, 0, 380), +(167, 1011001, 1002159, 20000, 0, 384), +(168, 1011001, 1002158, 20000, 0, 388), +(169, 1011001, 1002157, 20000, 0, 392), +(170, 1011001, 1002156, 20000, 0, 396), +(171, 1011001, 1002057, 800, 0, 400), +(172, 1011001, 1002010, 800, 0, 404), +(173, 1011001, 1002121, 12000, 0, 408), +(174, 1011001, 1002120, 12000, 0, 412), +(175, 1011001, 1002119, 12000, 0, 416), +(176, 1011001, 1002118, 12000, 0, 420), +(177, 1011001, 1002117, 12000, 0, 424), +(178, 1011001, 1002116, 4000, 0, 428), +(179, 1011001, 1002115, 4000, 0, 432), +(180, 1011001, 1002114, 4000, 0, 436), +(181, 1011001, 1002113, 4000, 0, 440), +(182, 1011001, 1002112, 4000, 0, 444), +(183, 1011001, 1002063, 3000, 0, 448), +(184, 1011001, 1002062, 3000, 0, 452), +(185, 1011001, 1002061, 3000, 0, 456), +(186, 1011001, 1002060, 3000, 0, 460), +(187, 1011001, 1002012, 3000, 0, 464), +(188, 1011001, 1002033, 3000, 0, 468), +(189, 1011001, 1002008, 500, 0, 472), +(190, 1011100, 2330000, 600, 0, 104), +(191, 1011100, 2070000, 500, 0, 108), +(192, 1011100, 2050002, 300, 0, 112), +(193, 1011100, 2050001, 200, 0, 116), +(194, 1011100, 2050000, 200, 0, 120), +(197, 1011100, 2061000, 1, 0, 132), +(198, 1011100, 2060000, 1, 0, 136), +(199, 1011100, 2030004, 500, 0, 140), +(200, 1011100, 2030000, 400, 0, 144), +(201, 1011100, 2020028, 3000, 0, 148), +(202, 1011100, 2010004, 310, 0, 152), +(203, 1011100, 2010003, 100, 0, 156), +(204, 1011100, 2010001, 106, 0, 160), +(205, 1011100, 2010002, 50, 0, 164), +(206, 1011100, 2010000, 30, 0, 168), +(207, 1011100, 2002005, 500, 0, 172), +(208, 1011100, 2002004, 500, 0, 176), +(209, 1011100, 2002002, 500, 0, 180), +(210, 1011100, 2002001, 400, 0, 184), +(211, 1011100, 2002000, 500, 0, 188), +(212, 1011100, 2000006, 620, 0, 192), +(213, 1011100, 2000003, 200, 0, 196), +(214, 1011100, 2000002, 320, 0, 200), +(215, 1011100, 2000001, 160, 0, 204), +(216, 1011100, 2000000, 50, 0, 208), +(217, 1012004, 4160019, 1000, 0, 104), +(218, 1012004, 4160039, 1000, 0, 108), +(219, 1012004, 4160037, 1000, 0, 112), +(220, 1012004, 4031993, 100000, 0, 116), +(221, 1012004, 4160036, 1000, 0, 120), +(222, 1012004, 4160035, 1000, 0, 124), +(223, 1012004, 4160034, 1000, 0, 128), +(224, 1012004, 4160032, 1000, 0, 132), +(225, 1012004, 4160024, 1000, 0, 136), +(226, 1012004, 4160023, 1000, 0, 140), +(227, 1012004, 4160022, 1000, 0, 144), +(228, 1012004, 4160015, 1000, 0, 148), +(229, 1012004, 4160012, 1000, 0, 152), +(230, 1012004, 4160013, 1000, 0, 156), +(231, 1012004, 4160017, 1000, 0, 160), +(232, 1012004, 4160014, 1000, 0, 164), +(233, 1012004, 4160020, 1000, 0, 168), +(234, 1012004, 4160010, 1000, 0, 172), +(235, 1012004, 4160009, 1000, 0, 176), +(236, 1012004, 4160008, 1000, 0, 180), +(237, 1012004, 4160007, 1000, 0, 184), +(238, 1012004, 4160006, 1000, 0, 188), +(239, 1012004, 4160005, 1000, 0, 192), +(240, 1012004, 4160004, 1000, 0, 196), +(241, 1012004, 4160003, 1000, 0, 200), +(242, 1012004, 4160002, 1000, 0, 204), +(243, 1012004, 4160001, 1000, 0, 208), +(244, 1012004, 4160000, 1000, 0, 212), +(245, 1012004, 4160026, 1000, 0, 216), +(246, 1012004, 2260000, 1000, 0, 220), +(247, 1012004, 2120000, 30, 0, 224), +(248, 1021000, 1442004, 24000, 0, 104), +(249, 1021000, 1442007, 12000, 0, 108), +(250, 1021000, 1442006, 8000, 0, 112), +(251, 1021000, 1442000, 3000, 0, 116), +(252, 1021000, 1432001, 7000, 0, 120), +(253, 1021000, 1432000, 3000, 0, 124), +(254, 1021000, 1422004, 20000, 0, 128), +(255, 1021000, 1422006, 10000, 0, 132), +(256, 1021000, 1422003, 10000, 0, 136), +(257, 1021000, 1422002, 6000, 0, 140), +(258, 1021000, 1422000, 3000, 0, 144), +(259, 1021000, 1412006, 45000, 0, 148), +(260, 1021000, 1412000, 22000, 0, 152), +(261, 1021000, 1412002, 10000, 0, 156), +(262, 1021000, 1412001, 3000, 0, 160), +(263, 1021000, 1402008, 22000, 0, 164), +(264, 1021000, 1402000, 12000, 0, 168), +(265, 1021000, 1402001, 3000, 0, 172), +(266, 1021000, 1322014, 40000, 0, 176), +(267, 1021000, 1322004, 22000, 0, 180), +(268, 1021000, 1322002, 10000, 0, 184), +(269, 1021000, 1322000, 6000, 0, 188), +(270, 1021000, 1312005, 40000, 0, 192), +(271, 1021000, 1312003, 20000, 0, 196), +(272, 1021000, 1312001, 6000, 0, 200), +(273, 1021000, 1332010, 22000, 0, 204), +(274, 1021000, 1332008, 10000, 0, 208), +(275, 1021000, 1332006, 7000, 0, 212), +(276, 1021000, 1302008, 40000, 0, 216), +(277, 1021000, 1302003, 20000, 0, 220), +(278, 1021000, 1302006, 10000, 0, 224), +(279, 1021000, 1302002, 10000, 0, 228), +(280, 1021000, 1302005, 6000, 0, 232), +(281, 1021000, 1302007, 3000, 0, 236), +(282, 1021001, 1092000, 6000, 0, 104), +(283, 1021001, 1092005, 4000, 0, 108), +(284, 1021001, 1072011, 15000, 0, 112), +(285, 1021001, 1072047, 10000, 0, 116), +(286, 1021001, 1072046, 10000, 0, 120), +(287, 1021001, 1072007, 10000, 0, 124), +(288, 1021001, 1072050, 5000, 0, 128), +(289, 1021001, 1072009, 5000, 0, 132), +(290, 1021001, 1061020, 14000, 0, 136), +(291, 1021001, 1061019, 14000, 0, 140), +(292, 1021001, 1061015, 14000, 0, 144), +(293, 1021001, 1061018, 9000, 0, 148), +(294, 1021001, 1061017, 9000, 0, 152), +(295, 1021001, 1061016, 9000, 0, 156), +(296, 1021001, 1061023, 3000, 0, 160), +(297, 1021001, 1061014, 3000, 0, 164), +(298, 1021001, 1060019, 38000, 0, 168), +(299, 1021001, 1060018, 38000, 0, 172), +(300, 1021001, 1060017, 38000, 0, 176), +(301, 1021001, 1060016, 38000, 0, 180), +(302, 1021001, 1060060, 14000, 0, 184), +(303, 1021001, 1060030, 14000, 0, 188), +(304, 1021001, 1060011, 14000, 0, 192), +(305, 1021001, 1060029, 9000, 0, 196), +(306, 1021001, 1060010, 9000, 0, 200), +(307, 1021001, 1060027, 5000, 0, 204), +(308, 1021001, 1060009, 5000, 0, 208), +(309, 1021001, 1060028, 3000, 0, 212), +(310, 1021001, 1060008, 3000, 0, 216), +(311, 1021001, 1051013, 60000, 0, 220), +(312, 1021001, 1051012, 60000, 0, 224), +(313, 1021001, 1051011, 60000, 0, 228), +(314, 1021001, 1051010, 60000, 0, 232), +(315, 1021001, 1051000, 8000, 0, 236), +(316, 1021001, 1050011, 70000, 0, 240), +(317, 1021001, 1050007, 15000, 0, 244), +(318, 1021001, 1050006, 15000, 0, 248), +(319, 1021001, 1050005, 15000, 0, 252), +(320, 1021001, 1041024, 16000, 0, 256), +(321, 1021001, 1041023, 16000, 0, 260), +(322, 1021001, 1041022, 16000, 0, 264), +(323, 1021001, 1041021, 9000, 0, 268), +(324, 1021001, 1041020, 9000, 0, 272), +(325, 1021001, 1041019, 9000, 0, 276), +(326, 1021001, 1041064, 3200, 0, 280), +(327, 1021001, 1041014, 3200, 0, 284), +(328, 1021001, 1040026, 40000, 0, 288), +(329, 1021001, 1040021, 40000, 0, 292), +(330, 1021001, 1040041, 16000, 0, 296), +(331, 1021001, 1040016, 16000, 0, 300), +(332, 1021001, 1040040, 16000, 0, 304), +(333, 1021001, 1040039, 9000, 0, 308), +(334, 1021001, 1040012, 9000, 0, 312), +(335, 1021001, 1040037, 5500, 0, 316), +(336, 1021001, 1040009, 5500, 0, 320), +(337, 1021001, 1040038, 3200, 0, 324), +(338, 1021001, 1040015, 3200, 0, 328), +(339, 1021001, 1002005, 19000, 0, 332), +(340, 1021001, 1002027, 11500, 0, 336), +(341, 1021001, 1002059, 8500, 0, 340), +(342, 1021001, 1002055, 8700, 0, 344), +(343, 1021001, 1002051, 3500, 0, 348), +(344, 1021001, 1002039, 2700, 0, 352), +(345, 1021001, 1002043, 2400, 0, 356), +(346, 1021100, 2330000, 600, 0, 104), +(347, 1021100, 2070000, 500, 0, 108), +(348, 1021100, 2050002, 300, 0, 112), +(349, 1021100, 2050001, 200, 0, 116), +(350, 1021100, 2050000, 200, 0, 120), +(353, 1021100, 2061000, 1, 0, 132), +(354, 1021100, 2060000, 1, 0, 136), +(355, 1021100, 2030003, 500, 0, 140), +(356, 1021100, 2030000, 400, 0, 144), +(357, 1021100, 2010004, 310, 0, 148), +(358, 1021100, 2010003, 100, 0, 152), +(359, 1021100, 2010001, 106, 0, 156), +(360, 1021100, 2010002, 50, 0, 160), +(361, 1021100, 2010000, 30, 0, 164), +(362, 1021100, 2002005, 500, 0, 168), +(363, 1021100, 2002004, 500, 0, 172), +(364, 1021100, 2002002, 500, 0, 176), +(365, 1021100, 2002001, 400, 0, 180), +(366, 1021100, 2002000, 500, 0, 184), +(367, 1021100, 2000006, 620, 0, 188), +(368, 1021100, 2000003, 200, 0, 192), +(369, 1021100, 2000002, 320, 0, 196), +(370, 1021100, 2000001, 160, 0, 200), +(371, 1021100, 2000000, 50, 0, 204), +(372, 1031000, 1322002, 10000, 0, 104), +(373, 1031000, 1382002, 20000, 0, 108), +(374, 1031000, 1382004, 10000, 0, 112), +(375, 1031000, 1382005, 6000, 0, 116), +(376, 1031000, 1382003, 6000, 0, 120), +(377, 1031000, 1382000, 3000, 0, 124), +(378, 1031000, 1372003, 38000, 0, 128), +(379, 1031000, 1372004, 18000, 0, 132), +(380, 1031000, 1372002, 9000, 0, 136), +(381, 1031000, 1372006, 5000, 0, 140), +(382, 1031000, 1372005, 2000, 0, 144), +(383, 1031001, 1072024, 4000, 0, 104), +(384, 1031001, 1072023, 4000, 0, 108), +(385, 1031001, 1072045, 1500, 0, 112), +(386, 1031001, 1072044, 1500, 0, 116), +(387, 1031001, 1072006, 1500, 0, 120), +(388, 1031001, 1061036, 40000, 0, 124), +(389, 1031001, 1061035, 40000, 0, 128), +(390, 1031001, 1061034, 40000, 0, 132), +(391, 1031001, 1061028, 8000, 0, 136), +(392, 1031001, 1061027, 8000, 0, 140), +(393, 1031001, 1061022, 4000, 0, 144), +(394, 1031001, 1061021, 4000, 0, 148), +(395, 1031001, 1061013, 4000, 0, 152), +(396, 1031001, 1061012, 4000, 0, 156), +(397, 1031001, 1061011, 2000, 0, 160), +(398, 1031001, 1061010, 2000, 0, 164), +(399, 1031001, 1060015, 8000, 0, 168), +(400, 1031001, 1060014, 8000, 0, 172), +(401, 1031001, 1060013, 2000, 0, 176), +(402, 1031001, 1060012, 2000, 0, 180), +(403, 1031001, 1051003, 16000, 0, 184), +(404, 1031001, 1051005, 16000, 0, 188), +(405, 1031001, 1051004, 16000, 0, 192), +(406, 1031001, 1050028, 40000, 0, 196), +(407, 1031001, 1050027, 40000, 0, 200), +(408, 1031001, 1050026, 40000, 0, 204), +(409, 1031001, 1050003, 40000, 0, 208), +(410, 1031001, 1050025, 16000, 0, 212), +(411, 1031001, 1050024, 16000, 0, 216), +(412, 1031001, 1050023, 16000, 0, 220), +(413, 1031001, 1050001, 16000, 0, 224), +(414, 1031001, 1050010, 7000, 0, 228), +(415, 1031001, 1050009, 7000, 0, 232), +(416, 1031001, 1050008, 7000, 0, 236), +(417, 1031001, 1041043, 42000, 0, 240), +(418, 1031001, 1041042, 42000, 0, 244), +(419, 1031001, 1041041, 42000, 0, 248), +(420, 1031001, 1041031, 8500, 0, 252), +(421, 1031001, 1041030, 8500, 0, 256), +(422, 1031001, 1041029, 8500, 0, 260), +(423, 1031001, 1041026, 4000, 0, 264), +(424, 1031001, 1041025, 4000, 0, 268), +(425, 1031001, 1041018, 4000, 0, 272), +(426, 1031001, 1041017, 4000, 0, 276), +(427, 1031001, 1041016, 2000, 0, 280), +(428, 1031001, 1041015, 2000, 0, 284), +(429, 1031001, 1040020, 8500, 0, 288), +(430, 1031001, 1040019, 8500, 0, 292), +(431, 1031001, 1040018, 8500, 0, 296), +(432, 1031001, 1040017, 2000, 0, 300), +(433, 1031001, 1040004, 2000, 0, 304), +(434, 1031001, 1002016, 8000, 0, 308), +(435, 1031001, 1002106, 3800, 0, 312), +(436, 1031001, 1002105, 3800, 0, 316), +(437, 1031001, 1002104, 3800, 0, 320), +(438, 1031001, 1002103, 3800, 0, 324), +(439, 1031001, 1002102, 3800, 0, 328), +(440, 1031001, 1002017, 1200, 0, 332), +(441, 1031100, 2330000, 600, 0, 104), +(442, 1031100, 2070000, 500, 0, 108), +(443, 1031100, 2050003, 500, 0, 112), +(444, 1031100, 2050002, 300, 0, 116), +(445, 1031100, 2050001, 200, 0, 120), +(446, 1031100, 2050000, 200, 0, 124), +(449, 1031100, 2061000, 1, 0, 136), +(450, 1031100, 2060000, 1, 0, 140), +(451, 1031100, 2030002, 500, 0, 144), +(452, 1031100, 2030000, 400, 0, 148), +(453, 1031100, 2010004, 305, 0, 152), +(454, 1031100, 2010003, 97, 0, 156), +(455, 1031100, 2010001, 106, 0, 160), +(456, 1031100, 2010002, 50, 0, 164), +(457, 1031100, 2010000, 30, 0, 168), +(458, 1031100, 2002005, 500, 0, 172), +(459, 1031100, 2002004, 500, 0, 176), +(460, 1031100, 2002002, 500, 0, 180), +(461, 1031100, 2002001, 400, 0, 184), +(462, 1031100, 2002000, 500, 0, 188), +(463, 1031100, 2000006, 604, 0, 192), +(464, 1031100, 2000003, 192, 0, 196), +(465, 1031100, 2000002, 320, 0, 200), +(466, 1031100, 2000001, 160, 0, 204), +(467, 1031100, 2000000, 50, 0, 208), +(468, 1032103, 2044900, 70000, 0, 104), +(469, 1032103, 2044800, 70000, 0, 108), +(470, 1032103, 2043800, 70000, 0, 112), +(471, 1032103, 2043700, 70000, 0, 116), +(472, 1032103, 2044600, 70000, 0, 120), +(473, 1032103, 2044500, 70000, 0, 124), +(474, 1032103, 2040300, 35000, 0, 128), +(475, 1032103, 2040700, 35000, 0, 132), +(476, 1032103, 2040600, 35000, 0, 136), +(477, 1032103, 2040400, 35000, 0, 140), +(478, 1032103, 2040000, 35000, 0, 144), +(479, 1051000, 1472000, 3000, 0, 104), +(480, 1051000, 1442000, 3000, 0, 108), +(481, 1051000, 1432001, 7000, 0, 112), +(482, 1051000, 1432000, 3000, 0, 116), +(483, 1051000, 1422000, 3000, 0, 120), +(484, 1051000, 1412001, 3000, 0, 124), +(485, 1051000, 1402001, 3000, 0, 128), +(486, 1051000, 1322009, 20000, 0, 132), +(487, 1051000, 1332009, 42000, 0, 136), +(488, 1051000, 1332012, 40000, 0, 140), +(489, 1051000, 1332004, 38000, 0, 144), +(490, 1051000, 1332010, 22000, 0, 148), +(491, 1051000, 1332013, 15000, 0, 152), +(492, 1051000, 1332008, 10000, 0, 156), +(493, 1051000, 1332002, 8000, 0, 160), +(494, 1051000, 1332006, 7000, 0, 164), +(495, 1051000, 1332000, 4000, 0, 168), +(496, 1051000, 1302007, 3000, 0, 172), +(497, 1051001, 1072066, 9000, 0, 104), +(498, 1051001, 1072065, 9000, 0, 108), +(499, 1051001, 1072022, 9000, 0, 112), +(500, 1051001, 1072031, 4500, 0, 116), +(501, 1051001, 1072030, 4500, 0, 120), +(502, 1051001, 1072029, 4500, 0, 124), +(503, 1051001, 1072028, 4500, 0, 128), +(504, 1051001, 1072043, 2000, 0, 132), +(505, 1051001, 1072042, 2000, 0, 136), +(506, 1051001, 1072004, 2000, 0, 140), +(507, 1051001, 1072071, 1800, 0, 144), +(508, 1051001, 1072070, 1800, 0, 148), +(509, 1051001, 1061046, 40000, 0, 152), +(510, 1051001, 1061045, 40000, 0, 156), +(511, 1051001, 1061044, 40000, 0, 160), +(512, 1051001, 1061043, 40000, 0, 164), +(513, 1051001, 1061056, 18000, 0, 168), +(514, 1051001, 1061055, 18000, 0, 172), +(515, 1051001, 1061054, 18000, 0, 176), +(516, 1051001, 1061053, 18000, 0, 180), +(517, 1051001, 1061042, 12000, 0, 184), +(518, 1051001, 1061041, 12000, 0, 188), +(519, 1051001, 1061040, 12000, 0, 192), +(520, 1051001, 1061033, 8000, 0, 196), +(521, 1051001, 1061032, 8000, 0, 200), +(522, 1051001, 1061003, 8000, 0, 204), +(523, 1051001, 1061038, 4800, 0, 208), +(524, 1051001, 1061037, 4800, 0, 212), +(525, 1051001, 1061031, 2800, 0, 216), +(526, 1051001, 1061030, 2800, 0, 220), +(527, 1051001, 1061029, 2800, 0, 224), +(528, 1051001, 1060046, 40000, 0, 228), +(529, 1051001, 1060045, 40000, 0, 232), +(530, 1051001, 1060044, 40000, 0, 236), +(531, 1051001, 1060043, 40000, 0, 240), +(532, 1051001, 1060039, 19000, 0, 244), +(533, 1051001, 1060038, 19000, 0, 248), +(534, 1051001, 1060037, 19000, 0, 252), +(535, 1051001, 1060033, 8000, 0, 256), +(536, 1051001, 1060032, 8000, 0, 260), +(537, 1051001, 1060031, 8000, 0, 264), +(538, 1051001, 1060025, 4800, 0, 268), +(539, 1051001, 1060024, 4800, 0, 272), +(540, 1051001, 1060023, 2800, 0, 276), +(541, 1051001, 1060022, 2800, 0, 280), +(542, 1051001, 1060021, 2800, 0, 284), +(543, 1051001, 1041050, 45000, 0, 288), +(544, 1051001, 1041049, 45000, 0, 292), +(545, 1051001, 1041048, 45000, 0, 296), +(546, 1051001, 1041047, 45000, 0, 300), +(547, 1051001, 1041060, 18000, 0, 304), +(548, 1051001, 1041059, 18000, 0, 308), +(549, 1051001, 1041058, 18000, 0, 312), +(550, 1051001, 1041057, 18000, 0, 316), +(551, 1051001, 1041040, 9000, 0, 320), +(552, 1051001, 1041039, 9000, 0, 324), +(553, 1051001, 1041003, 9000, 0, 328), +(554, 1051001, 1041045, 5000, 0, 332), +(555, 1051001, 1041044, 5000, 0, 336), +(556, 1051001, 1041038, 3000, 0, 340), +(557, 1051001, 1041037, 3000, 0, 344), +(558, 1051001, 1041036, 3000, 0, 348), +(559, 1051001, 1040060, 45000, 0, 352), +(560, 1051001, 1040059, 45000, 0, 356), +(561, 1051001, 1040058, 45000, 0, 360), +(562, 1051001, 1040057, 45000, 0, 364), +(563, 1051001, 1040050, 16000, 0, 368), +(564, 1051001, 1040049, 16000, 0, 372), +(565, 1051001, 1040048, 16000, 0, 376), +(566, 1051001, 1040044, 9000, 0, 380), +(567, 1051001, 1040043, 9000, 0, 384), +(568, 1051001, 1040042, 9000, 0, 388), +(569, 1051001, 1040035, 5000, 0, 392), +(570, 1051001, 1040034, 5000, 0, 396), +(571, 1051001, 1040033, 3000, 0, 400), +(572, 1051001, 1040032, 3000, 0, 404), +(573, 1051001, 1040031, 3000, 0, 408), +(574, 1051001, 1002175, 30000, 0, 412), +(575, 1051001, 1002174, 30000, 0, 416), +(576, 1051001, 1002173, 30000, 0, 420), +(577, 1051001, 1002172, 30000, 0, 424), +(578, 1051001, 1002171, 30000, 0, 428), +(579, 1051001, 1002150, 20000, 0, 432), +(580, 1051001, 1002149, 20000, 0, 436), +(581, 1051001, 1002148, 20000, 0, 440), +(582, 1051001, 1002147, 20000, 0, 444), +(583, 1051001, 1002146, 20000, 0, 448), +(584, 1051001, 1002097, 7400, 0, 452), +(585, 1051001, 1002096, 7400, 0, 456), +(586, 1051001, 1002020, 7400, 0, 460), +(587, 1051001, 1002131, 12000, 0, 464), +(588, 1051001, 1002130, 12000, 0, 468), +(589, 1051001, 1002129, 12000, 0, 472), +(590, 1051001, 1002128, 12000, 0, 476), +(591, 1051001, 1002127, 12000, 0, 480), +(592, 1051001, 1002111, 4000, 0, 484), +(593, 1051001, 1002110, 4000, 0, 488), +(594, 1051001, 1002109, 4000, 0, 492), +(595, 1051001, 1002108, 4000, 0, 496), +(596, 1051001, 1002107, 4000, 0, 500), +(597, 1051001, 1002001, 3000, 0, 504), +(598, 1051001, 1002126, 900, 0, 508), +(599, 1051001, 1002125, 900, 0, 512), +(600, 1051001, 1002124, 900, 0, 516), +(601, 1051001, 1002123, 900, 0, 520), +(602, 1051001, 1002122, 900, 0, 524), +(603, 1051002, 2330000, 600, 0, 104), +(604, 1051002, 2070000, 500, 0, 108), +(605, 1051002, 2050002, 300, 0, 112), +(606, 1051002, 2050001, 200, 0, 116), +(607, 1051002, 2050000, 200, 0, 120), +(610, 1051002, 2061000, 1, 0, 132), +(611, 1051002, 2060000, 1, 0, 136), +(612, 1051002, 2030005, 500, 0, 140), +(613, 1051002, 2030000, 400, 0, 144), +(614, 1051002, 2010004, 310, 0, 148), +(615, 1051002, 2010003, 100, 0, 152), +(616, 1051002, 2010001, 106, 0, 156), +(617, 1051002, 2010002, 50, 0, 160), +(618, 1051002, 2010000, 30, 0, 164), +(619, 1051002, 2002005, 500, 0, 168), +(620, 1051002, 2002004, 500, 0, 172), +(621, 1051002, 2002002, 500, 0, 176), +(622, 1051002, 2002001, 400, 0, 180), +(623, 1051002, 2002000, 500, 0, 184), +(624, 1051002, 2000006, 620, 0, 188), +(625, 1051002, 2000003, 200, 0, 192), +(626, 1051002, 2000002, 320, 0, 196), +(627, 1051002, 2000001, 160, 0, 200), +(628, 1051002, 2000000, 50, 0, 204), +(629, 1052104, 2044700, 70000, 0, 104), +(630, 1052104, 2043300, 70000, 0, 108), +(631, 1052104, 2044400, 70000, 0, 112), +(632, 1052104, 2044300, 70000, 0, 116), +(633, 1052104, 2044200, 70000, 0, 120), +(634, 1052104, 2044100, 70000, 0, 124), +(635, 1052104, 2044000, 70000, 0, 128), +(636, 1052104, 2043200, 70000, 0, 132), +(637, 1052104, 2043100, 70000, 0, 136), +(638, 1052104, 2043000, 70000, 0, 140), +(639, 1052104, 2040703, 35000, 0, 144), +(640, 1052104, 2040700, 35000, 0, 148), +(641, 1052104, 2040600, 35000, 0, 152), +(642, 1052104, 2040500, 35000, 0, 156), +(643, 1052104, 2040003, 35000, 0, 160), +(644, 1052104, 2040000, 35000, 0, 164), +(645, 1061001, 2330000, 600, 0, 104), +(646, 1061001, 2070000, 500, 0, 108), +(647, 1061001, 2061001, 2800, 0, 112), +(648, 1061001, 2060001, 2800, 0, 116), +(649, 1061001, 2061000, 2, 0, 120), +(650, 1061001, 2060000, 2, 0, 124), +(651, 1061001, 2030000, 400, 0, 128), +(652, 1061001, 2020002, 320, 0, 132), +(653, 1061001, 2022000, 1650, 0, 136), +(654, 1061001, 2020000, 420, 0, 140), +(655, 1061001, 2022003, 1100, 0, 144), +(656, 1061001, 2020006, 530, 0, 148), +(657, 1061001, 2020004, 450, 0, 152), +(658, 1061001, 2020003, 450, 0, 156), +(659, 1061001, 2020005, 320, 0, 160), +(660, 1061001, 2020001, 220, 0, 164), +(661, 1061002, 2330000, 600, 0, 104), +(662, 1061002, 2070000, 500, 0, 108), +(665, 1061002, 2061000, 1, 0, 120), +(666, 1061002, 2060000, 1, 0, 124), +(667, 1061002, 2030006, 600, 0, 128), +(668, 1061002, 2030000, 400, 0, 132), +(669, 1061002, 2022003, 1100, 0, 136), +(670, 1061002, 2022000, 1650, 0, 140), +(671, 1061002, 2010004, 310, 0, 144), +(672, 1061002, 2010003, 100, 0, 148), +(673, 1061002, 2010001, 106, 0, 152), +(674, 1061002, 2010002, 50, 0, 156), +(675, 1061002, 2010000, 30, 0, 160), +(676, 1061002, 2000006, 620, 0, 164), +(677, 1061002, 2000003, 200, 0, 168), +(678, 1061002, 2000002, 320, 0, 172), +(679, 1061002, 2000001, 160, 0, 176), +(680, 1061002, 2000000, 50, 0, 180), +(681, 1081000, 2330000, 600, 0, 104), +(682, 1081000, 2070000, 500, 0, 108), +(683, 1081000, 2001002, 4000, 0, 112), +(684, 1081000, 2001001, 2300, 0, 116), +(685, 1081000, 2001000, 3200, 0, 120), +(686, 1081000, 2020002, 320, 0, 124), +(687, 1081000, 2022000, 1650, 0, 128), +(688, 1081000, 2020000, 420, 0, 132), +(689, 1081000, 2022003, 1100, 0, 136), +(690, 1081000, 2020006, 530, 0, 140), +(691, 1081000, 2020004, 450, 0, 144), +(692, 1081000, 2020003, 450, 0, 148), +(693, 1081000, 2020005, 320, 0, 152), +(694, 1081000, 2020001, 220, 0, 156), +(695, 1081000, 2010004, 310, 0, 160), +(696, 1081000, 2010003, 100, 0, 164), +(697, 1081000, 2010001, 106, 0, 168), +(698, 1081000, 2010002, 50, 0, 172), +(699, 1081000, 2010000, 30, 0, 176), +(700, 1081000, 2000003, 200, 0, 180), +(701, 1081000, 2000002, 320, 0, 184), +(702, 1081000, 2000001, 160, 0, 188), +(703, 1081000, 2000000, 50, 0, 192), +(704, 1091000, 1322007, 6000, 0, 104), +(705, 1091000, 1302007, 3000, 0, 108), +(706, 1091000, 1442004, 24000, 0, 112), +(707, 1091000, 1482004, 52000, 0, 116), +(708, 1091000, 1482003, 20000, 0, 120), +(709, 1091000, 1482002, 10000, 0, 124), +(710, 1091000, 1482001, 6000, 0, 128), +(711, 1091000, 1482000, 3000, 0, 132), +(712, 1091000, 1492004, 50000, 0, 136), +(713, 1091000, 1492003, 22000, 0, 140), +(714, 1091000, 1492002, 10000, 0, 144), +(715, 1091000, 1492001, 6000, 0, 148), +(716, 1091000, 1492000, 3000, 0, 152), +(717, 1091001, 1072288, 8000, 0, 104), +(718, 1091001, 1072285, 5000, 0, 108), +(719, 1091001, 1052107, 60000, 0, 112), +(720, 1091001, 1052104, 30000, 0, 116), +(721, 1091001, 1052101, 16000, 0, 120), +(722, 1091001, 1052098, 8000, 0, 124), +(723, 1091001, 1052095, 4000, 0, 128), +(724, 1091001, 1002619, 20000, 0, 132), +(725, 1091001, 1002616, 12000, 0, 136), +(726, 1091001, 1002613, 4000, 0, 140), +(727, 1091001, 1002610, 900, 0, 144), +(728, 1091002, 2330000, 600, 0, 104), +(729, 1091002, 2070000, 500, 0, 108), +(732, 1091002, 2061000, 1, 0, 120), +(733, 1091002, 2060000, 1, 0, 124), +(734, 1091002, 2030019, 500, 0, 128), +(735, 1091002, 2030000, 400, 0, 132), +(736, 1091002, 2020028, 3000, 0, 136), +(737, 1091002, 2010004, 310, 0, 140), +(738, 1091002, 2010003, 100, 0, 144), +(739, 1091002, 2010001, 106, 0, 148), +(740, 1091002, 2010002, 50, 0, 152), +(741, 1091002, 2010000, 30, 0, 156), +(742, 1091002, 2002005, 500, 0, 160), +(743, 1091002, 2002004, 500, 0, 164), +(744, 1091002, 2002002, 500, 0, 168), +(745, 1091002, 2002001, 400, 0, 172), +(746, 1091002, 2002000, 500, 0, 176), +(747, 1091002, 2000006, 620, 0, 180), +(748, 1091002, 2000003, 200, 0, 184), +(749, 1091002, 2000002, 320, 0, 188), +(750, 1091002, 2000001, 160, 0, 192), +(751, 1091002, 2000000, 50, 0, 196), +(752, 1093000, 2022258, 105, 0, 104), +(753, 1100001, 1072005, 50, 0, 104), +(754, 1100001, 1072001, 50, 0, 108), +(755, 1100001, 1061008, 50, 0, 112), +(756, 1100001, 1061002, 50, 0, 116), +(757, 1100001, 1060006, 50, 0, 120), +(758, 1100001, 1060002, 50, 0, 124), +(759, 1100001, 1041011, 50, 0, 128), +(760, 1100001, 1041010, 50, 0, 132), +(761, 1100001, 1041006, 50, 0, 136), +(762, 1100001, 1041002, 50, 0, 140), +(763, 1100001, 1040010, 50, 0, 144), +(764, 1100001, 1040006, 50, 0, 148), +(765, 1100001, 1040002, 50, 0, 152), +(766, 1100001, 1332005, 500, 0, 156), +(767, 1100001, 1322005, 50, 0, 160), +(768, 1100001, 1312004, 50, 0, 164), +(769, 1100001, 1302000, 50, 0, 168), +(770, 1100002, 2330000, 600, 0, 104), +(771, 1100002, 2070000, 500, 0, 108), +(772, 1100002, 2050002, 300, 0, 112), +(773, 1100002, 2050001, 200, 0, 116), +(774, 1100002, 2050000, 200, 0, 120), +(777, 1100002, 2061000, 1, 0, 132), +(778, 1100002, 2060000, 1, 0, 136), +(779, 1100002, 2030000, 400, 0, 140), +(780, 1100002, 2120008, 200, 0, 144), +(781, 1100002, 2010004, 310, 0, 148), +(782, 1100002, 2010003, 100, 0, 152), +(783, 1100002, 2010001, 106, 0, 156), +(784, 1100002, 2010002, 50, 0, 160), +(785, 1100002, 2010000, 30, 0, 164), +(786, 1100002, 2002005, 500, 0, 168), +(787, 1100002, 2002004, 500, 0, 172), +(788, 1100002, 2002002, 500, 0, 176), +(789, 1100002, 2002001, 400, 0, 180), +(790, 1100002, 2002000, 500, 0, 184), +(791, 1100002, 2000006, 620, 0, 188), +(792, 1100002, 2000003, 200, 0, 192), +(793, 1100002, 2000002, 320, 0, 196), +(794, 1100002, 2000001, 160, 0, 200), +(795, 1100002, 2000000, 50, 0, 204), +(796, 2010004, 4160019, 1000, 0, 104), +(797, 2010004, 4160039, 1000, 0, 108), +(798, 2010004, 4160037, 1000, 0, 112), +(799, 2010004, 4031993, 100000, 0, 116), +(800, 2010004, 4160036, 1000, 0, 120), +(801, 2010004, 4160035, 1000, 0, 124), +(802, 2010004, 4160034, 1000, 0, 128), +(803, 2010004, 4160032, 1000, 0, 132), +(804, 2010004, 4160024, 1000, 0, 136), +(805, 2010004, 4160023, 1000, 0, 140), +(806, 2010004, 4160022, 1000, 0, 144), +(807, 2010004, 4160015, 1000, 0, 148), +(808, 2010004, 4160012, 1000, 0, 152), +(809, 2010004, 4160013, 1000, 0, 156), +(810, 2010004, 4160017, 1000, 0, 160), +(811, 2010004, 4160014, 1000, 0, 164), +(812, 2010004, 4160020, 1000, 0, 168), +(813, 2010004, 4160010, 1000, 0, 172), +(814, 2010004, 4160009, 1000, 0, 176), +(815, 2010004, 4160008, 1000, 0, 180), +(816, 2010004, 4160007, 1000, 0, 184), +(817, 2010004, 4160006, 1000, 0, 188), +(818, 2010004, 4160005, 1000, 0, 192), +(819, 2010004, 4160004, 1000, 0, 196), +(820, 2010004, 4160003, 1000, 0, 200), +(821, 2010004, 4160002, 1000, 0, 204), +(822, 2010004, 4160001, 1000, 0, 208), +(823, 2010004, 4160000, 1000, 0, 212), +(824, 2010004, 4160026, 1000, 0, 216), +(825, 2010004, 2260000, 1000, 0, 220), +(826, 2010004, 2120000, 30, 0, 224), +(827, 2012003, 1492004, 75000, 0, 104), +(828, 2012003, 1482004, 75000, 0, 108), +(829, 2012003, 1472001, 20000, 0, 112), +(830, 2012003, 1462000, 30000, 0, 116), +(831, 2012003, 1452005, 150000, 0, 120), +(832, 2012003, 1442001, 60000, 0, 124), +(833, 2012003, 1432002, 60000, 0, 128), +(834, 2012003, 1422001, 45000, 0, 132), +(835, 2012003, 1412006, 45000, 0, 136), +(836, 2012003, 1402002, 150000, 0, 140), +(837, 2012003, 1382002, 20000, 0, 144), +(838, 2012003, 1372003, 38000, 0, 148), +(839, 2012003, 1332012, 40000, 0, 152), +(840, 2012003, 1332009, 42000, 0, 156), +(841, 2012003, 1322014, 40000, 0, 160), +(842, 2012003, 1312005, 40000, 0, 164), +(843, 2012003, 1302008, 40000, 0, 168), +(844, 2012004, 1052107, 90000, 0, 104), +(845, 2012004, 1002622, 40000, 0, 108), +(846, 2012004, 1061046, 40000, 0, 112), +(847, 2012004, 1061045, 40000, 0, 116), +(848, 2012004, 1061044, 40000, 0, 120), +(849, 2012004, 1061043, 40000, 0, 124), +(850, 2012004, 1060046, 40000, 0, 128), +(851, 2012004, 1060045, 40000, 0, 132), +(852, 2012004, 1060044, 40000, 0, 136), +(853, 2012004, 1060043, 40000, 0, 140), +(854, 2012004, 1041050, 45000, 0, 144), +(855, 2012004, 1041049, 45000, 0, 148), +(856, 2012004, 1041048, 45000, 0, 152), +(857, 2012004, 1041047, 45000, 0, 156), +(858, 2012004, 1040060, 45000, 0, 160), +(859, 2012004, 1040059, 45000, 0, 164), +(860, 2012004, 1040058, 45000, 0, 168), +(861, 2012004, 1040057, 45000, 0, 172), +(862, 2012004, 1002175, 30000, 0, 176), +(863, 2012004, 1002174, 30000, 0, 180), +(864, 2012004, 1002173, 30000, 0, 184), +(865, 2012004, 1002172, 30000, 0, 188), +(866, 2012004, 1002171, 30000, 0, 192), +(867, 2012004, 1061051, 44000, 0, 196), +(868, 2012004, 1061050, 44000, 0, 200), +(869, 2012004, 1061052, 44000, 0, 204), +(870, 2012004, 1060057, 44000, 0, 208), +(871, 2012004, 1060056, 44000, 0, 212), +(872, 2012004, 1060058, 44000, 0, 216), +(873, 2012004, 1060059, 44000, 0, 220), +(874, 2012004, 1041055, 50000, 0, 224), +(875, 2012004, 1041054, 50000, 0, 228), +(876, 2012004, 1041056, 50000, 0, 232), +(877, 2012004, 1040068, 50000, 0, 236), +(878, 2012004, 1040067, 50000, 0, 240), +(879, 2012004, 1040070, 50000, 0, 244), +(880, 2012004, 1040069, 50000, 0, 248), +(881, 2012004, 1002165, 30000, 0, 252), +(882, 2012004, 1002164, 30000, 0, 256), +(883, 2012004, 1002163, 30000, 0, 260), +(884, 2012004, 1002162, 30000, 0, 264), +(885, 2012004, 1002161, 30000, 0, 268), +(886, 2012004, 1061036, 40000, 0, 272), +(887, 2012004, 1061035, 40000, 0, 276), +(888, 2012004, 1061034, 40000, 0, 280), +(889, 2012004, 1050028, 40000, 0, 284), +(890, 2012004, 1050027, 40000, 0, 288), +(891, 2012004, 1050026, 40000, 0, 292), +(892, 2012004, 1050003, 40000, 0, 296), +(893, 2012004, 1041043, 42000, 0, 300), +(894, 2012004, 1041042, 42000, 0, 304), +(895, 2012004, 1041041, 42000, 0, 308), +(896, 2012004, 1002064, 40000, 0, 312), +(897, 2012004, 1092006, 60000, 0, 316), +(898, 2012004, 1060019, 38000, 0, 320), +(899, 2012004, 1060018, 38000, 0, 324), +(900, 2012004, 1060017, 38000, 0, 328), +(901, 2012004, 1060016, 38000, 0, 332), +(902, 2012004, 1051013, 60000, 0, 336), +(903, 2012004, 1051012, 60000, 0, 340), +(904, 2012004, 1051011, 60000, 0, 344), +(905, 2012004, 1051010, 60000, 0, 348), +(906, 2012004, 1040026, 40000, 0, 352), +(907, 2012004, 1040021, 40000, 0, 356), +(908, 2012004, 1002023, 120000, 0, 360), +(909, 2012005, 2330000, 600, 0, 104), +(910, 2012005, 2070000, 500, 0, 108), +(913, 2012005, 2061000, 1, 0, 120), +(914, 2012005, 2060000, 1, 0, 124), +(915, 2012005, 2030000, 400, 0, 128), +(916, 2012005, 2050003, 500, 0, 132), +(917, 2012005, 2050002, 300, 0, 136), +(918, 2012005, 2050001, 200, 0, 140), +(919, 2012005, 2050000, 200, 0, 144), +(920, 2012005, 2020028, 3000, 0, 148), +(921, 2012005, 2010004, 310, 0, 152), +(922, 2012005, 2010003, 100, 0, 156), +(923, 2012005, 2010001, 106, 0, 160), +(924, 2012005, 2010002, 50, 0, 164), +(925, 2012005, 2010000, 30, 0, 168), +(926, 2012005, 2001002, 4000, 0, 172), +(927, 2012005, 2001001, 2300, 0, 176), +(928, 2012005, 2001000, 3200, 0, 180), +(929, 2012005, 2022000, 1650, 0, 184), +(930, 2012005, 2022003, 1100, 0, 188), +(931, 2012005, 2002005, 500, 0, 192), +(932, 2012005, 2002004, 500, 0, 196), +(933, 2012005, 2002002, 500, 0, 200), +(934, 2012005, 2002001, 400, 0, 204), +(935, 2012005, 2002000, 500, 0, 208), +(936, 2012005, 2000006, 620, 0, 212), +(937, 2012005, 2000003, 200, 0, 216), +(938, 2012005, 2000002, 320, 0, 220), +(939, 2012005, 2000001, 160, 0, 224), +(940, 2012005, 2000000, 50, 0, 228), +(941, 2020001, 1492006, 160000, 0, 104), +(942, 2020001, 1492005, 100000, 0, 108), +(943, 2020001, 1482006, 150000, 0, 112), +(944, 2020001, 1482005, 100000, 0, 116), +(945, 2020001, 1472007, 60000, 0, 120), +(946, 2020001, 1472004, 30000, 0, 124), +(947, 2020001, 1462005, 250000, 0, 128), +(948, 2020001, 1462004, 200000, 0, 132), +(949, 2020001, 1452007, 375000, 0, 136), +(950, 2020001, 1452006, 250000, 0, 140), +(951, 2020001, 1442009, 300000, 0, 144), +(952, 2020001, 1442003, 175000, 0, 148), +(953, 2020001, 1432005, 225000, 0, 152), +(954, 2020001, 1432003, 175000, 0, 156), +(955, 2020001, 1422007, 250000, 0, 160), +(956, 2020001, 1422008, 200000, 0, 164), +(957, 2020001, 1412005, 250000, 0, 168), +(958, 2020001, 1412004, 200000, 0, 172), +(959, 2020001, 1402007, 450000, 0, 176), +(960, 2020001, 1402006, 350000, 0, 180), +(961, 2020001, 1372000, 400000, 0, 184), +(962, 2020001, 1372001, 175000, 0, 188), +(963, 2020001, 1332011, 425000, 0, 192), +(964, 2020001, 1332014, 375000, 0, 196), +(965, 2020001, 1332001, 200000, 0, 200), +(966, 2020001, 1322016, 175000, 0, 204), +(967, 2020001, 1322015, 100000, 0, 208), +(968, 2020001, 1312007, 175000, 0, 212), +(969, 2020001, 1312006, 100000, 0, 216), +(970, 2020001, 1302009, 225000, 0, 220), +(971, 2020001, 1302004, 100000, 0, 224), +(972, 2022000, 1002625, 75000, 0, 104), +(973, 2022000, 1052113, 120000, 0, 108), +(974, 2022000, 1052110, 100000, 0, 112), +(975, 2022000, 1061069, 160000, 0, 116), +(976, 2022000, 1061070, 160000, 0, 120), +(977, 2022000, 1060072, 160000, 0, 124), +(978, 2022000, 1060071, 160000, 0, 128), +(979, 2022000, 1060052, 108000, 0, 132), +(980, 2022000, 1060050, 108000, 0, 136), +(981, 2022000, 1060051, 108000, 0, 140), +(982, 2022000, 1051009, 111000, 0, 144), +(983, 2022000, 1051008, 111000, 0, 148), +(984, 2022000, 1051007, 111000, 0, 152), +(985, 2022000, 1041074, 180000, 0, 156), +(986, 2022000, 1041075, 180000, 0, 160), +(987, 2022000, 1040083, 180000, 0, 164), +(988, 2022000, 1040082, 180000, 0, 168), +(989, 2022000, 1040061, 114000, 0, 172), +(990, 2022000, 1040062, 114000, 0, 176), +(991, 2022000, 1040063, 114000, 0, 180), +(992, 2022000, 1002180, 100000, 0, 184), +(993, 2022000, 1002179, 100000, 0, 188), +(994, 2022000, 1002178, 100000, 0, 192), +(995, 2022000, 1002177, 100000, 0, 196), +(996, 2022000, 1002176, 100000, 0, 200), +(997, 2022000, 1061080, 160000, 0, 204), +(998, 2022000, 1061081, 160000, 0, 208), +(999, 2022000, 1061062, 108000, 0, 212), +(1000, 2022000, 1061060, 108000, 0, 216), +(1001, 2022000, 1061064, 108000, 0, 220), +(1002, 2022000, 1061061, 108000, 0, 224), +(1003, 2022000, 1060069, 160000, 0, 228), +(1004, 2022000, 1060070, 160000, 0, 232), +(1005, 2022000, 1060063, 108000, 0, 236), +(1006, 2022000, 1060061, 108000, 0, 240), +(1007, 2022000, 1060065, 108000, 0, 244), +(1008, 2022000, 1060062, 108000, 0, 248), +(1009, 2022000, 1041081, 180000, 0, 252), +(1010, 2022000, 1041082, 180000, 0, 256), +(1011, 2022000, 1041067, 114000, 0, 260), +(1012, 2022000, 1041065, 114000, 0, 264), +(1013, 2022000, 1041069, 114000, 0, 268), +(1014, 2022000, 1041066, 114000, 0, 272), +(1015, 2022000, 1040079, 180000, 0, 276), +(1016, 2022000, 1040081, 180000, 0, 280), +(1017, 2022000, 1040076, 114000, 0, 284), +(1018, 2022000, 1040074, 114000, 0, 288), +(1019, 2022000, 1040073, 114000, 0, 292), +(1020, 2022000, 1040072, 114000, 0, 296), +(1021, 2022000, 1002137, 100000, 0, 300), +(1022, 2022000, 1002135, 100000, 0, 304), +(1023, 2022000, 1002139, 100000, 0, 308), +(1024, 2022000, 1002138, 100000, 0, 312), +(1025, 2022000, 1061047, 120000, 0, 316), +(1026, 2022000, 1061048, 120000, 0, 320), +(1027, 2022000, 1051027, 450000, 0, 324), +(1028, 2022000, 1051024, 450000, 0, 328), +(1029, 2022000, 1051025, 450000, 0, 332), +(1030, 2022000, 1051023, 450000, 0, 336), +(1031, 2022000, 1050037, 450000, 0, 340), +(1032, 2022000, 1050036, 450000, 0, 344), +(1033, 2022000, 1050038, 450000, 0, 348), +(1034, 2022000, 1050035, 450000, 0, 352), +(1035, 2022000, 1050002, 300000, 0, 356), +(1036, 2022000, 1050031, 300000, 0, 360), +(1037, 2022000, 1041051, 120000, 0, 364), +(1038, 2022000, 1041052, 120000, 0, 368), +(1039, 2022000, 1002144, 96000, 0, 372), +(1040, 2022000, 1002143, 96000, 0, 376), +(1041, 2022000, 1002142, 96000, 0, 380), +(1042, 2022000, 1002141, 96000, 0, 384), +(1043, 2022000, 1092002, 200000, 0, 388), +(1044, 2022000, 1092001, 100000, 0, 392), +(1045, 2022000, 1061084, 180000, 0, 396), +(1046, 2022000, 1061083, 180000, 0, 400), +(1047, 2022000, 1060074, 180000, 0, 404), +(1048, 2022000, 1060075, 180000, 0, 408), +(1049, 2022000, 1051014, 112500, 0, 412), +(1050, 2022000, 1051001, 112500, 0, 416), +(1051, 2022000, 1050021, 112500, 0, 420), +(1052, 2022000, 1050000, 112500, 0, 424), +(1053, 2022000, 1041085, 200000, 0, 428), +(1054, 2022000, 1041084, 200000, 0, 432), +(1055, 2022000, 1040085, 200000, 0, 436), +(1056, 2022000, 1040000, 200000, 0, 440), +(1057, 2022000, 1002004, 160000, 0, 444), +(1058, 2022000, 1072338, 29000, 0, 448), +(1059, 2022000, 1072171, 29000, 0, 452), +(1060, 2022000, 1072170, 29000, 0, 456), +(1061, 2022000, 1072169, 28000, 0, 460), +(1062, 2022000, 1072168, 30000, 0, 464), +(1063, 2022001, 2330000, 600, 0, 104), +(1064, 2022001, 2070000, 500, 0, 108), +(1067, 2022001, 2061000, 1, 0, 120), +(1068, 2022001, 2060000, 1, 0, 124), +(1069, 2022001, 2030000, 400, 0, 128), +(1070, 2022001, 2050002, 300, 0, 132), +(1071, 2022001, 2050001, 200, 0, 136), +(1072, 2022001, 2050000, 200, 0, 140), +(1073, 2022001, 2020015, 10200, 0, 144), +(1074, 2022001, 2020014, 8100, 0, 148), +(1075, 2022001, 2020013, 5600, 0, 152), +(1076, 2022001, 2020012, 4500, 0, 156), +(1077, 2022001, 2001002, 4000, 0, 160), +(1078, 2022001, 2001001, 2300, 0, 164), +(1079, 2022001, 2001000, 3200, 0, 168), +(1080, 2022001, 2022000, 1650, 0, 172), +(1081, 2022001, 2022003, 1100, 0, 176), +(1082, 2022001, 2010004, 310, 0, 180), +(1083, 2022001, 2010003, 100, 0, 184), +(1084, 2022001, 2010001, 106, 0, 188), +(1085, 2022001, 2010002, 50, 0, 192), +(1086, 2022001, 2010000, 30, 0, 196), +(1087, 2022001, 2002005, 500, 0, 200), +(1088, 2022001, 2002004, 500, 0, 204), +(1089, 2022001, 2002002, 500, 0, 208), +(1090, 2022001, 2002001, 400, 0, 212), +(1091, 2022001, 2002000, 500, 0, 216), +(1092, 2022001, 2000006, 620, 0, 220), +(1093, 2022001, 2000003, 200, 0, 224), +(1094, 2022001, 2000002, 320, 0, 228), +(1095, 2022001, 2000001, 160, 0, 232), +(1096, 2022001, 2000000, 50, 0, 236), +(1097, 2022001, 2022186, 2400, 0, 240), +(1098, 2022001, 2022001, 400, 0, 244), +(1099, 2022002, 2044900, 70000, 0, 104), +(1100, 2022002, 2044800, 70000, 0, 108), +(1101, 2022002, 2044700, 70000, 0, 112), +(1102, 2022002, 2044600, 70000, 0, 116), +(1103, 2022002, 2044500, 70000, 0, 120), +(1104, 2022002, 2044400, 70000, 0, 124), +(1105, 2022002, 2044300, 70000, 0, 128), +(1106, 2022002, 2044200, 70000, 0, 132), +(1107, 2022002, 2044100, 70000, 0, 136), +(1108, 2022002, 2044000, 70000, 0, 140), +(1109, 2022002, 2043800, 70000, 0, 144), +(1110, 2022002, 2043700, 70000, 0, 148), +(1111, 2022002, 2043300, 70000, 0, 152), +(1112, 2022002, 2043200, 70000, 0, 156), +(1113, 2022002, 2043100, 70000, 0, 160), +(1114, 2022002, 2043000, 70000, 0, 164), +(1115, 2022002, 2041003, 35000, 0, 168), +(1116, 2022002, 2041000, 35000, 0, 172), +(1117, 2022002, 2040900, 35000, 0, 176), +(1118, 2022002, 2040800, 35000, 0, 180), +(1119, 2022002, 2040700, 35000, 0, 184), +(1120, 2022002, 2040600, 35000, 0, 188), +(1121, 2022002, 2040503, 35000, 0, 192), +(1122, 2022002, 2040400, 35000, 0, 196), +(1123, 2022002, 2040300, 35000, 0, 200), +(1124, 2022002, 2040003, 35000, 0, 204), +(1125, 2030009, 2330000, 600, 0, 104), +(1126, 2030009, 2070000, 500, 0, 108), +(1129, 2030009, 2061000, 1, 0, 120), +(1130, 2030009, 2060000, 1, 0, 124), +(1131, 2030009, 2030000, 400, 0, 128), +(1132, 2030009, 2020015, 10608, 0, 132), +(1133, 2030009, 2020014, 8424, 0, 136), +(1134, 2030009, 2020013, 5824, 0, 140), +(1135, 2030009, 2020012, 4680, 0, 144), +(1136, 2030009, 2022000, 1716, 0, 148), +(1137, 2030009, 2022003, 1144, 0, 152), +(1138, 2030009, 2020006, 551, 0, 156), +(1139, 2030009, 2020004, 468, 0, 160), +(1140, 2030009, 2020003, 468, 0, 164), +(1141, 2030009, 2020001, 228, 0, 168), +(1142, 2030009, 2010004, 322, 0, 172), +(1143, 2030009, 2020005, 332, 0, 176), +(1144, 2030009, 2001002, 4160, 0, 180), +(1145, 2030009, 2001001, 2392, 0, 184), +(1146, 2030009, 2001000, 3328, 0, 188), +(1147, 2030009, 2002005, 520, 0, 192), +(1148, 2030009, 2002004, 520, 0, 196), +(1149, 2030009, 2002002, 520, 0, 200), +(1150, 2030009, 2002001, 416, 0, 204), +(1151, 2030009, 2002000, 520, 0, 208), +(1152, 2030009, 2000006, 644, 0, 212), +(1153, 2030009, 2000003, 208, 0, 216), +(1154, 2030009, 2000002, 332, 0, 220), +(1155, 2030009, 2000001, 166, 0, 224), +(1156, 2040049, 2061001, 10, 0, 104), +(1157, 2040049, 2060001, 10, 0, 108), +(1160, 2040049, 2061000, 1, 0, 120), +(1161, 2040049, 2060000, 1, 0, 124), +(1162, 2040049, 2120000, 25, 0, 128), +(1163, 2040049, 2020015, 10608, 0, 132), +(1164, 2040049, 2020014, 8424, 0, 136), +(1165, 2040049, 2020013, 5824, 0, 140), +(1166, 2040049, 2020012, 4680, 0, 144), +(1167, 2040049, 2022000, 1716, 0, 148), +(1168, 2040049, 2022003, 1144, 0, 152), +(1169, 2040049, 2020006, 503, 0, 156), +(1170, 2040049, 2020005, 304, 0, 160), +(1171, 2040049, 2020004, 427, 0, 164), +(1172, 2040049, 2020003, 427, 0, 168), +(1173, 2040049, 2020002, 304, 0, 172), +(1174, 2040049, 2020001, 209, 0, 176), +(1175, 2040049, 2010002, 47, 0, 180), +(1176, 2040049, 2010001, 106, 0, 184), +(1177, 2040049, 2002010, 475, 0, 188), +(1178, 2040049, 2002009, 570, 0, 192), +(1179, 2040049, 2002008, 570, 0, 196), +(1180, 2040049, 2002007, 570, 0, 200), +(1181, 2040049, 2002006, 570, 0, 204), +(1182, 2040049, 2001002, 3800, 0, 208), +(1183, 2040049, 2001001, 2185, 0, 212), +(1184, 2040049, 2000006, 589, 0, 216), +(1185, 2040049, 2000011, 620, 0, 220), +(1186, 2040049, 2000003, 190, 0, 224), +(1187, 2040049, 2000010, 200, 0, 228), +(1188, 2040049, 2000002, 304, 0, 232), +(1189, 2040049, 2000009, 320, 0, 236), +(1190, 2040049, 2000001, 152, 0, 240), +(1191, 2040049, 2000008, 160, 0, 244), +(1192, 2040049, 2000000, 47, 0, 248), +(1193, 2040049, 2000007, 50, 0, 252), +(1194, 2040051, 2030000, 400, 0, 104), +(1195, 2040051, 2061001, 10, 0, 108), +(1196, 2040051, 2060001, 10, 0, 112), +(1199, 2040051, 2061000, 1, 0, 124), +(1200, 2040051, 2060000, 1, 0, 128), +(1201, 2040051, 2050003, 500, 0, 132), +(1202, 2040051, 2050002, 300, 0, 136), +(1203, 2040051, 2050001, 200, 0, 140), +(1204, 2040051, 2050000, 200, 0, 144), +(1205, 2040051, 2000006, 620, 0, 148), +(1206, 2040051, 2000011, 620, 0, 152), +(1207, 2040051, 2000003, 200, 0, 156), +(1208, 2040051, 2000010, 200, 0, 160), +(1209, 2040051, 2000002, 320, 0, 164), +(1210, 2040051, 2000009, 320, 0, 168), +(1211, 2040051, 2000001, 160, 0, 172), +(1212, 2040051, 2000008, 160, 0, 176), +(1213, 2040051, 2000000, 50, 0, 180), +(1214, 2040051, 2000007, 50, 0, 184), +(1215, 2040051, 2020015, 10200, 0, 188), +(1216, 2040051, 2020014, 8100, 0, 192), +(1217, 2040051, 2020013, 5824, 0, 196), +(1218, 2040051, 2020012, 4680, 0, 200), +(1219, 2040051, 2001002, 4000, 0, 204), +(1220, 2040051, 2001001, 2300, 0, 208), +(1221, 2040051, 2022000, 1650, 0, 212), +(1222, 2040051, 2022003, 1100, 0, 216), +(1223, 2040051, 2002009, 600, 0, 220), +(1224, 2040051, 2002008, 600, 0, 224), +(1225, 2040051, 2002007, 600, 0, 228), +(1226, 2040051, 2002006, 600, 0, 232), +(1227, 2040051, 2002010, 500, 0, 236), +(1228, 2041002, 1492006, 160000, 0, 104), +(1229, 2041002, 1492005, 100000, 0, 108), +(1230, 2041002, 1492004, 75000, 0, 112), +(1231, 2041002, 1482006, 150000, 0, 116), +(1232, 2041002, 1482005, 100000, 0, 120), +(1233, 2041002, 1482004, 75000, 0, 124), +(1234, 2041002, 1472007, 60000, 0, 128), +(1235, 2041002, 1472004, 30000, 0, 132), +(1236, 2041002, 1472001, 20000, 0, 136), +(1237, 2041002, 1462005, 250000, 0, 140), +(1238, 2041002, 1462004, 200000, 0, 144), +(1239, 2041002, 1462000, 30000, 0, 148), +(1240, 2041002, 1452007, 375000, 0, 152), +(1241, 2041002, 1452006, 250000, 0, 156), +(1242, 2041002, 1452005, 150000, 0, 160), +(1243, 2041002, 1442009, 300000, 0, 164), +(1244, 2041002, 1442003, 175000, 0, 168), +(1245, 2041002, 1442001, 60000, 0, 172), +(1246, 2041002, 1432005, 225000, 0, 176), +(1247, 2041002, 1432003, 175000, 0, 180), +(1248, 2041002, 1432002, 60000, 0, 184), +(1249, 2041002, 1422007, 250000, 0, 188), +(1250, 2041002, 1422008, 200000, 0, 192), +(1251, 2041002, 1422001, 45000, 0, 196), +(1252, 2041002, 1412005, 250000, 0, 200), +(1253, 2041002, 1412004, 200000, 0, 204), +(1254, 2041002, 1412006, 45000, 0, 208), +(1255, 2041002, 1402007, 450000, 0, 212), +(1256, 2041002, 1402006, 350000, 0, 216), +(1257, 2041002, 1402002, 150000, 0, 220), +(1258, 2041002, 1382002, 20000, 0, 224), +(1259, 2041002, 1372000, 400000, 0, 228), +(1260, 2041002, 1372001, 175000, 0, 232), +(1261, 2041002, 1372003, 38000, 0, 236), +(1262, 2041002, 1332011, 425000, 0, 240), +(1263, 2041002, 1332014, 375000, 0, 244), +(1264, 2041002, 1332001, 200000, 0, 248), +(1265, 2041002, 1332012, 40000, 0, 252), +(1266, 2041002, 1332009, 42000, 0, 256), +(1267, 2041002, 1322016, 175000, 0, 260), +(1268, 2041002, 1322015, 100000, 0, 264), +(1269, 2041002, 1322014, 40000, 0, 268), +(1270, 2041002, 1312007, 175000, 0, 272), +(1271, 2041002, 1312006, 100000, 0, 276), +(1272, 2041002, 1312005, 40000, 0, 280), +(1273, 2041002, 1302009, 225000, 0, 284), +(1274, 2041002, 1302004, 100000, 0, 288), +(1275, 2041002, 1302008, 40000, 0, 292), +(1276, 2041003, 1002625, 75000, 0, 104), +(1277, 2041003, 1052113, 120000, 0, 108), +(1278, 2041003, 1052110, 100000, 0, 112), +(1279, 2041003, 1061069, 160000, 0, 116), +(1280, 2041003, 1061070, 160000, 0, 120), +(1281, 2041003, 1060072, 160000, 0, 124), +(1282, 2041003, 1060071, 160000, 0, 128), +(1283, 2041003, 1060052, 108000, 0, 132), +(1284, 2041003, 1060050, 108000, 0, 136), +(1285, 2041003, 1060051, 108000, 0, 140), +(1286, 2041003, 1051009, 111000, 0, 144), +(1287, 2041003, 1051008, 111000, 0, 148), +(1288, 2041003, 1051007, 111000, 0, 152), +(1289, 2041003, 1041074, 180000, 0, 156), +(1290, 2041003, 1041075, 180000, 0, 160), +(1291, 2041003, 1040083, 180000, 0, 164), +(1292, 2041003, 1040082, 180000, 0, 168), +(1293, 2041003, 1040061, 114000, 0, 172), +(1294, 2041003, 1040062, 114000, 0, 176), +(1295, 2041003, 1040063, 114000, 0, 180), +(1296, 2041003, 1002180, 100000, 0, 184), +(1297, 2041003, 1002179, 100000, 0, 188), +(1298, 2041003, 1002178, 100000, 0, 192), +(1299, 2041003, 1002177, 100000, 0, 196), +(1300, 2041003, 1002176, 100000, 0, 200), +(1301, 2041003, 1061080, 160000, 0, 204), +(1302, 2041003, 1061081, 160000, 0, 208), +(1303, 2041003, 1061062, 108000, 0, 212), +(1304, 2041003, 1061060, 108000, 0, 216), +(1305, 2041003, 1061064, 108000, 0, 220), +(1306, 2041003, 1061061, 108000, 0, 224), +(1307, 2041003, 1060069, 160000, 0, 228), +(1308, 2041003, 1060070, 160000, 0, 232), +(1309, 2041003, 1060063, 108000, 0, 236), +(1310, 2041003, 1060061, 108000, 0, 240), +(1311, 2041003, 1060065, 108000, 0, 244), +(1312, 2041003, 1060062, 108000, 0, 248), +(1313, 2041003, 1041081, 180000, 0, 252), +(1314, 2041003, 1041082, 180000, 0, 256), +(1315, 2041003, 1041067, 114000, 0, 260), +(1316, 2041003, 1041065, 114000, 0, 264), +(1317, 2041003, 1041069, 114000, 0, 268), +(1318, 2041003, 1041066, 114000, 0, 272), +(1319, 2041003, 1040079, 180000, 0, 276), +(1320, 2041003, 1040081, 180000, 0, 280), +(1321, 2041003, 1040076, 114000, 0, 284), +(1322, 2041003, 1040074, 114000, 0, 288), +(1323, 2041003, 1040073, 114000, 0, 292), +(1324, 2041003, 1040072, 114000, 0, 296), +(1325, 2041003, 1002137, 100000, 0, 300), +(1326, 2041003, 1002135, 100000, 0, 304), +(1327, 2041003, 1002139, 100000, 0, 308), +(1328, 2041003, 1002138, 100000, 0, 312), +(1329, 2041003, 1061047, 120000, 0, 316), +(1330, 2041003, 1061048, 120000, 0, 320), +(1331, 2041003, 1051027, 450000, 0, 324), +(1332, 2041003, 1051024, 450000, 0, 328), +(1333, 2041003, 1051025, 450000, 0, 332), +(1334, 2041003, 1051023, 450000, 0, 336), +(1335, 2041003, 1050037, 450000, 0, 340), +(1336, 2041003, 1050036, 450000, 0, 344), +(1337, 2041003, 1050038, 450000, 0, 348), +(1338, 2041003, 1050035, 450000, 0, 352), +(1339, 2041003, 1050002, 300000, 0, 356), +(1340, 2041003, 1050031, 300000, 0, 360), +(1341, 2041003, 1041051, 120000, 0, 364), +(1342, 2041003, 1041052, 120000, 0, 368), +(1343, 2041003, 1002144, 96000, 0, 372), +(1344, 2041003, 1002143, 96000, 0, 376), +(1345, 2041003, 1002142, 96000, 0, 380), +(1346, 2041003, 1002141, 96000, 0, 384), +(1347, 2041003, 1092002, 200000, 0, 388), +(1348, 2041003, 1092001, 100000, 0, 392), +(1349, 2041003, 1061084, 180000, 0, 396), +(1350, 2041003, 1061083, 180000, 0, 400), +(1351, 2041003, 1060074, 180000, 0, 404), +(1352, 2041003, 1060075, 180000, 0, 408), +(1353, 2041003, 1051014, 112500, 0, 412), +(1354, 2041003, 1051001, 112500, 0, 416), +(1355, 2041003, 1050021, 112500, 0, 420), +(1356, 2041003, 1050000, 112500, 0, 424), +(1357, 2041003, 1041085, 200000, 0, 428), +(1358, 2041003, 1041084, 200000, 0, 432), +(1359, 2041003, 1040085, 200000, 0, 436), +(1360, 2041003, 1040000, 200000, 0, 440), +(1361, 2041003, 1002004, 160000, 0, 444); +INSERT INTO `shopitems` (`shopitemid`, `shopid`, `itemid`, `price`, `pitch`, `position`) VALUES +(1362, 2041006, 2330000, 600, 0, 104), +(1363, 2041006, 2070000, 500, 0, 108), +(1364, 2041006, 2061001, 10, 0, 112), +(1365, 2041006, 2060001, 10, 0, 116), +(1368, 2041006, 2061000, 1, 0, 128), +(1369, 2041006, 2060000, 1, 0, 132), +(1370, 2041006, 2030000, 400, 0, 136), +(1371, 2041006, 2020028, 2850, 0, 140), +(1372, 2041006, 2020006, 503, 0, 144), +(1373, 2041006, 2020005, 304, 0, 148), +(1374, 2041006, 2020004, 427, 0, 152), +(1375, 2041006, 2020003, 427, 0, 156), +(1376, 2041006, 2020002, 304, 0, 160), +(1377, 2041006, 2020001, 209, 0, 164), +(1378, 2041006, 2010002, 47, 0, 168), +(1379, 2041006, 2010001, 106, 0, 172), +(1380, 2041006, 2002010, 500, 0, 176), +(1381, 2041006, 2002009, 500, 0, 180), +(1382, 2041006, 2002008, 500, 0, 184), +(1383, 2041006, 2002007, 500, 0, 188), +(1384, 2041006, 2002006, 500, 0, 192), +(1385, 2041006, 2001002, 3800, 0, 196), +(1386, 2041006, 2001001, 2185, 0, 200), +(1387, 2041006, 2000006, 589, 0, 204), +(1388, 2041006, 2000011, 620, 0, 208), +(1389, 2041006, 2000003, 190, 0, 212), +(1390, 2041006, 2000010, 200, 0, 216), +(1391, 2041006, 2000002, 304, 0, 220), +(1392, 2041006, 2000009, 320, 0, 224), +(1393, 2041006, 2000001, 152, 0, 228), +(1394, 2041006, 2000008, 160, 0, 232), +(1395, 2041006, 2000000, 47, 0, 236), +(1396, 2041006, 2000007, 50, 0, 240), +(1397, 2041014, 4160019, 1000, 0, 104), +(1398, 2041014, 4160039, 1000, 0, 108), +(1399, 2041014, 4160037, 1000, 0, 112), +(1400, 2041014, 4031993, 100000, 0, 116), +(1401, 2041014, 4160036, 1000, 0, 120), +(1402, 2041014, 4160035, 1000, 0, 124), +(1403, 2041014, 4160034, 1000, 0, 128), +(1404, 2041014, 4160032, 1000, 0, 132), +(1405, 2041014, 4160024, 1000, 0, 136), +(1406, 2041014, 4160023, 1000, 0, 140), +(1407, 2041014, 4160022, 1000, 0, 144), +(1408, 2041014, 4160015, 1000, 0, 148), +(1409, 2041014, 4160012, 1000, 0, 152), +(1410, 2041014, 4160013, 1000, 0, 156), +(1411, 2041014, 4160017, 1000, 0, 160), +(1412, 2041014, 4160014, 1000, 0, 164), +(1413, 2041014, 4160020, 1000, 0, 168), +(1414, 2041014, 4160010, 1000, 0, 172), +(1415, 2041014, 4160009, 1000, 0, 176), +(1416, 2041014, 4160008, 1000, 0, 180), +(1417, 2041014, 4160007, 1000, 0, 184), +(1418, 2041014, 4160006, 1000, 0, 188), +(1419, 2041014, 4160005, 1000, 0, 192), +(1420, 2041014, 4160004, 1000, 0, 196), +(1421, 2041014, 4160003, 1000, 0, 200), +(1422, 2041014, 4160002, 1000, 0, 204), +(1423, 2041014, 4160001, 1000, 0, 208), +(1424, 2041014, 4160000, 1000, 0, 212), +(1425, 2041014, 4160026, 1000, 0, 216), +(1426, 2041014, 2260000, 1000, 0, 220), +(1427, 2041014, 2120000, 30, 0, 224), +(1428, 2041016, 4031348, 10000000, 0, 104), +(1429, 2041016, 2044900, 69000, 0, 108), +(1430, 2041016, 2044800, 69000, 0, 112), +(1431, 2041016, 2044700, 69000, 0, 116), +(1432, 2041016, 2044600, 69000, 0, 120), +(1433, 2041016, 2044500, 69000, 0, 124), +(1434, 2041016, 2043800, 69000, 0, 128), +(1435, 2041016, 2043700, 69000, 0, 132), +(1436, 2041016, 2044400, 69000, 0, 136), +(1437, 2041016, 2044300, 69000, 0, 140), +(1438, 2041016, 2044200, 69000, 0, 144), +(1439, 2041016, 2044100, 69000, 0, 148), +(1440, 2041016, 2044000, 69000, 0, 152), +(1441, 2041016, 2043300, 69000, 0, 156), +(1442, 2041016, 2043200, 69000, 0, 160), +(1443, 2041016, 2043100, 69000, 0, 164), +(1444, 2041016, 2043000, 69000, 0, 168), +(1445, 2041016, 2041003, 34000, 0, 172), +(1446, 2041016, 2041000, 34000, 0, 176), +(1447, 2041016, 2040900, 34000, 0, 180), +(1448, 2041016, 2040800, 34000, 0, 184), +(1449, 2041016, 2040706, 34000, 0, 188), +(1450, 2041016, 2040703, 34000, 0, 192), +(1451, 2041016, 2040700, 34000, 0, 196), +(1452, 2041016, 2040600, 34000, 0, 200), +(1453, 2041016, 2040503, 34000, 0, 204), +(1454, 2041016, 2040400, 34000, 0, 208), +(1455, 2041016, 2040000, 34000, 0, 212), +(1456, 2041016, 2040300, 34000, 0, 216), +(1457, 2050000, 1492006, 160000, 0, 104), +(1458, 2050000, 1492005, 100000, 0, 108), +(1459, 2050000, 1482006, 150000, 0, 112), +(1460, 2050000, 1482005, 100000, 0, 116), +(1461, 2050000, 1472007, 60000, 0, 120), +(1462, 2050000, 1472004, 30000, 0, 124), +(1463, 2050000, 1462005, 250000, 0, 128), +(1464, 2050000, 1462004, 200000, 0, 132), +(1465, 2050000, 1452007, 375000, 0, 136), +(1466, 2050000, 1452006, 250000, 0, 140), +(1467, 2050000, 1442009, 300000, 0, 144), +(1468, 2050000, 1442003, 175000, 0, 148), +(1469, 2050000, 1432005, 225000, 0, 152), +(1470, 2050000, 1432003, 175000, 0, 156), +(1471, 2050000, 1422007, 250000, 0, 160), +(1472, 2050000, 1422008, 200000, 0, 164), +(1473, 2050000, 1412005, 250000, 0, 168), +(1474, 2050000, 1412004, 200000, 0, 172), +(1475, 2050000, 1402007, 450000, 0, 176), +(1476, 2050000, 1402006, 350000, 0, 180), +(1477, 2050000, 1372000, 400000, 0, 184), +(1478, 2050000, 1372001, 175000, 0, 188), +(1479, 2050000, 1332011, 425000, 0, 192), +(1480, 2050000, 1332014, 375000, 0, 196), +(1481, 2050000, 1332001, 200000, 0, 200), +(1482, 2050000, 1322016, 175000, 0, 204), +(1483, 2050000, 1322015, 100000, 0, 208), +(1484, 2050000, 1312007, 175000, 0, 212), +(1485, 2050000, 1312006, 100000, 0, 216), +(1486, 2050000, 1302009, 225000, 0, 220), +(1487, 2050000, 1302004, 100000, 0, 224), +(1488, 2050003, 1002625, 75000, 0, 104), +(1489, 2050003, 1052113, 120000, 0, 108), +(1490, 2050003, 1052110, 100000, 0, 112), +(1491, 2050003, 1061069, 160000, 0, 116), +(1492, 2050003, 1061070, 160000, 0, 120), +(1493, 2050003, 1060072, 160000, 0, 124), +(1494, 2050003, 1060071, 160000, 0, 128), +(1495, 2050003, 1060052, 108000, 0, 132), +(1496, 2050003, 1060050, 108000, 0, 136), +(1497, 2050003, 1060051, 108000, 0, 140), +(1498, 2050003, 1051009, 111000, 0, 144), +(1499, 2050003, 1051008, 111000, 0, 148), +(1500, 2050003, 1051007, 111000, 0, 152), +(1501, 2050003, 1041074, 180000, 0, 156), +(1502, 2050003, 1041075, 180000, 0, 160), +(1503, 2050003, 1040083, 180000, 0, 164), +(1504, 2050003, 1040082, 180000, 0, 168), +(1505, 2050003, 1040061, 114000, 0, 172), +(1506, 2050003, 1040062, 114000, 0, 176), +(1507, 2050003, 1040063, 114000, 0, 180), +(1508, 2050003, 1002180, 100000, 0, 184), +(1509, 2050003, 1002179, 100000, 0, 188), +(1510, 2050003, 1002178, 100000, 0, 192), +(1511, 2050003, 1002177, 100000, 0, 196), +(1512, 2050003, 1002176, 100000, 0, 200), +(1513, 2050003, 1061080, 160000, 0, 204), +(1514, 2050003, 1061081, 160000, 0, 208), +(1515, 2050003, 1061062, 108000, 0, 212), +(1516, 2050003, 1061060, 108000, 0, 216), +(1517, 2050003, 1061064, 108000, 0, 220), +(1518, 2050003, 1061061, 108000, 0, 224), +(1519, 2050003, 1060069, 160000, 0, 228), +(1520, 2050003, 1060070, 160000, 0, 232), +(1521, 2050003, 1060063, 108000, 0, 236), +(1522, 2050003, 1060061, 108000, 0, 240), +(1523, 2050003, 1060065, 108000, 0, 244), +(1524, 2050003, 1060062, 108000, 0, 248), +(1525, 2050003, 1041081, 180000, 0, 252), +(1526, 2050003, 1041082, 180000, 0, 256), +(1527, 2050003, 1041067, 114000, 0, 260), +(1528, 2050003, 1041065, 114000, 0, 264), +(1529, 2050003, 1041069, 114000, 0, 268), +(1530, 2050003, 1041066, 114000, 0, 272), +(1531, 2050003, 1040079, 180000, 0, 276), +(1532, 2050003, 1040081, 180000, 0, 280), +(1533, 2050003, 1040076, 114000, 0, 284), +(1534, 2050003, 1040074, 114000, 0, 288), +(1535, 2050003, 1040073, 114000, 0, 292), +(1536, 2050003, 1040072, 114000, 0, 296), +(1537, 2050003, 1002137, 100000, 0, 300), +(1538, 2050003, 1002135, 100000, 0, 304), +(1539, 2050003, 1002139, 100000, 0, 308), +(1540, 2050003, 1002138, 100000, 0, 312), +(1541, 2050003, 1061047, 120000, 0, 316), +(1542, 2050003, 1061048, 120000, 0, 320), +(1543, 2050003, 1051027, 450000, 0, 324), +(1544, 2050003, 1051024, 450000, 0, 328), +(1545, 2050003, 1051025, 450000, 0, 332), +(1546, 2050003, 1051023, 450000, 0, 336), +(1547, 2050003, 1050037, 450000, 0, 340), +(1548, 2050003, 1050036, 450000, 0, 344), +(1549, 2050003, 1050038, 450000, 0, 348), +(1550, 2050003, 1050035, 450000, 0, 352), +(1551, 2050003, 1050002, 300000, 0, 356), +(1552, 2050003, 1050031, 300000, 0, 360), +(1553, 2050003, 1041051, 120000, 0, 364), +(1554, 2050003, 1041052, 120000, 0, 368), +(1555, 2050003, 1002144, 96000, 0, 372), +(1556, 2050003, 1002143, 96000, 0, 376), +(1557, 2050003, 1002142, 96000, 0, 380), +(1558, 2050003, 1002141, 96000, 0, 384), +(1559, 2050003, 1092002, 200000, 0, 388), +(1560, 2050003, 1092001, 100000, 0, 392), +(1561, 2050003, 1061084, 180000, 0, 396), +(1562, 2050003, 1061083, 180000, 0, 400), +(1563, 2050003, 1060074, 180000, 0, 404), +(1564, 2050003, 1060075, 180000, 0, 408), +(1565, 2050003, 1051014, 112500, 0, 412), +(1566, 2050003, 1051001, 112500, 0, 416), +(1567, 2050003, 1050021, 112500, 0, 420), +(1568, 2050003, 1050000, 112500, 0, 424), +(1569, 2050003, 1041085, 200000, 0, 428), +(1570, 2050003, 1041084, 200000, 0, 432), +(1571, 2050003, 1040085, 200000, 0, 436), +(1572, 2050003, 1040000, 200000, 0, 440), +(1573, 2050003, 1002004, 160000, 0, 444), +(1574, 2051000, 2330000, 600, 0, 104), +(1575, 2051000, 2070000, 500, 0, 108), +(1576, 2051000, 2061001, 10, 0, 112), +(1577, 2051000, 2060001, 10, 0, 116), +(1580, 2051000, 2061000, 1, 0, 128), +(1581, 2051000, 2060000, 1, 0, 132), +(1582, 2051000, 2030000, 400, 0, 136), +(1583, 2051000, 2022000, 1567, 0, 140), +(1584, 2051000, 2022003, 1045, 0, 144), +(1585, 2051000, 2020015, 9690, 0, 148), +(1586, 2051000, 2020014, 7695, 0, 152), +(1587, 2051000, 2020013, 5600, 0, 156), +(1588, 2051000, 2020012, 4680, 0, 160), +(1589, 2051000, 2010004, 294, 0, 164), +(1590, 2051000, 2010003, 95, 0, 168), +(1591, 2051000, 2010002, 47, 0, 172), +(1592, 2051000, 2010001, 106, 0, 176), +(1593, 2051000, 2010000, 28, 0, 180), +(1594, 2051000, 2001002, 3800, 0, 184), +(1595, 2051000, 2001001, 2185, 0, 188), +(1596, 2051000, 2001000, 3040, 0, 192), +(1597, 2051000, 2002011, 1200, 0, 196), +(1598, 2051000, 2002005, 475, 0, 200), +(1599, 2051000, 2002004, 475, 0, 204), +(1600, 2051000, 2002002, 475, 0, 208), +(1601, 2051000, 2002001, 380, 0, 212), +(1602, 2051000, 2002000, 475, 0, 216), +(1603, 2051000, 2000006, 589, 0, 220), +(1604, 2051000, 2000003, 190, 0, 224), +(1605, 2051000, 2000002, 304, 0, 228), +(1606, 2051000, 2000001, 152, 0, 232), +(1607, 2051000, 2000000, 47, 0, 236), +(1608, 2060003, 1002625, 75000, 0, 104), +(1609, 2060003, 1052113, 120000, 0, 108), +(1610, 2060003, 1052110, 100000, 0, 112), +(1611, 2060003, 1052107, 90000, 0, 116), +(1612, 2060003, 1002622, 40000, 0, 120), +(1613, 2060003, 1061070, 160000, 0, 124), +(1614, 2060003, 1061069, 160000, 0, 128), +(1615, 2060003, 1041075, 180000, 0, 132), +(1616, 2060003, 1041074, 180000, 0, 136), +(1617, 2060003, 1060072, 160000, 0, 140), +(1618, 2060003, 1060071, 160000, 0, 144), +(1619, 2060003, 1040083, 180000, 0, 148), +(1620, 2060003, 1040082, 180000, 0, 152), +(1621, 2060003, 1051009, 111000, 0, 156), +(1622, 2060003, 1051008, 111000, 0, 160), +(1623, 2060003, 1051007, 111000, 0, 164), +(1624, 2060003, 1060051, 108000, 0, 168), +(1625, 2060003, 1060050, 108000, 0, 172), +(1626, 2060003, 1040062, 114000, 0, 176), +(1627, 2060003, 1040061, 114000, 0, 180), +(1628, 2060003, 1060045, 40000, 0, 184), +(1629, 2060003, 1060043, 40000, 0, 188), +(1630, 2060003, 1040059, 45000, 0, 192), +(1631, 2060003, 1040057, 45000, 0, 196), +(1632, 2060003, 1061046, 40000, 0, 200), +(1633, 2060003, 1061045, 40000, 0, 204), +(1634, 2060003, 1061043, 40000, 0, 208), +(1635, 2060003, 1041050, 45000, 0, 212), +(1636, 2060003, 1041049, 45000, 0, 216), +(1637, 2060003, 1041047, 45000, 0, 220), +(1638, 2060003, 1061081, 160000, 0, 224), +(1639, 2060003, 1061080, 160000, 0, 228), +(1640, 2060003, 1041082, 180000, 0, 232), +(1641, 2060003, 1041081, 180000, 0, 236), +(1642, 2060003, 1060070, 160000, 0, 240), +(1643, 2060003, 1060069, 160000, 0, 244), +(1644, 2060003, 1040081, 180000, 0, 248), +(1645, 2060003, 1040079, 180000, 0, 252), +(1646, 2060003, 1060063, 108000, 0, 256), +(1647, 2060003, 1060062, 108000, 0, 260), +(1648, 2060003, 1060061, 108000, 0, 264), +(1649, 2060003, 1040074, 114000, 0, 268), +(1650, 2060003, 1040073, 114000, 0, 272), +(1651, 2060003, 1040072, 114000, 0, 276), +(1652, 2060003, 1061062, 108000, 0, 280), +(1653, 2060003, 1061061, 108000, 0, 284), +(1654, 2060003, 1061060, 108000, 0, 288), +(1655, 2060003, 1041067, 114000, 0, 292), +(1656, 2060003, 1041066, 114000, 0, 296), +(1657, 2060003, 1041065, 114000, 0, 300), +(1658, 2060003, 1060058, 44000, 0, 304), +(1659, 2060003, 1060056, 44000, 0, 308), +(1660, 2060003, 1040069, 50000, 0, 312), +(1661, 2060003, 1040067, 50000, 0, 316), +(1662, 2060003, 1061052, 44000, 0, 320), +(1663, 2060003, 1061050, 44000, 0, 324), +(1664, 2060003, 1041056, 50000, 0, 328), +(1665, 2060003, 1041054, 50000, 0, 332), +(1666, 2060003, 1050038, 450000, 0, 336), +(1667, 2060003, 1050037, 450000, 0, 340), +(1668, 2060003, 1050036, 450000, 0, 344), +(1669, 2060003, 1051025, 450000, 0, 348), +(1670, 2060003, 1051024, 450000, 0, 352), +(1671, 2060003, 1051023, 450000, 0, 356), +(1672, 2060003, 1050031, 300000, 0, 360), +(1673, 2060003, 1050030, 300000, 0, 364), +(1674, 2060003, 1050002, 300000, 0, 368), +(1675, 2060003, 1061048, 120000, 0, 372), +(1676, 2060003, 1061047, 120000, 0, 376), +(1677, 2060003, 1041052, 120000, 0, 380), +(1678, 2060003, 1041051, 120000, 0, 384), +(1679, 2060003, 1050028, 40000, 0, 388), +(1680, 2060003, 1050026, 40000, 0, 392), +(1681, 2060003, 1050003, 40000, 0, 396), +(1682, 2060003, 1061036, 40000, 0, 400), +(1683, 2060003, 1061035, 40000, 0, 404), +(1684, 2060003, 1061034, 40000, 0, 408), +(1685, 2060003, 1041043, 42000, 0, 412), +(1686, 2060003, 1041042, 42000, 0, 416), +(1687, 2060003, 1041041, 42000, 0, 420), +(1688, 2060003, 1061084, 180000, 0, 424), +(1689, 2060003, 1061083, 180000, 0, 428), +(1690, 2060003, 1060075, 180000, 0, 432), +(1691, 2060003, 1060074, 180000, 0, 436), +(1692, 2060003, 1041085, 200000, 0, 440), +(1693, 2060003, 1041084, 200000, 0, 444), +(1694, 2060003, 1040086, 200000, 0, 448), +(1695, 2060003, 1040085, 200000, 0, 452), +(1696, 2060003, 1051015, 112500, 0, 456), +(1697, 2060003, 1051014, 112500, 0, 460), +(1698, 2060003, 1051001, 112500, 0, 464), +(1699, 2060003, 1050021, 112500, 0, 468), +(1700, 2060003, 1050000, 112500, 0, 472), +(1701, 2060003, 1060017, 38000, 0, 476), +(1702, 2060003, 1060016, 38000, 0, 480), +(1703, 2060003, 1040026, 40000, 0, 484), +(1704, 2060003, 1040021, 40000, 0, 488), +(1705, 2060003, 1050011, 70000, 0, 492), +(1706, 2060003, 1051013, 60000, 0, 496), +(1707, 2060003, 1051012, 60000, 0, 500), +(1708, 2060003, 1051011, 60000, 0, 504), +(1709, 2060003, 1002177, 100000, 0, 508), +(1710, 2060003, 1002172, 60000, 0, 512), +(1711, 2060003, 1002138, 100000, 0, 516), +(1712, 2060003, 1002162, 60000, 0, 520), +(1713, 2060003, 1002142, 96000, 0, 524), +(1714, 2060003, 1002034, 60000, 0, 528), +(1715, 2060003, 1002048, 160000, 0, 532), +(1716, 2060003, 1002023, 120000, 0, 536), +(1717, 2060004, 2330000, 600, 0, 104), +(1718, 2060004, 2070000, 500, 0, 108), +(1719, 2060004, 2061001, 10, 0, 112), +(1720, 2060004, 2060001, 10, 0, 116), +(1723, 2060004, 2061000, 1, 0, 128), +(1724, 2060004, 2060000, 1, 0, 132), +(1725, 2060004, 2030000, 400, 0, 136), +(1726, 2060004, 2022000, 1650, 0, 140), +(1727, 2060004, 2022003, 1100, 0, 144), +(1728, 2060004, 2020015, 10200, 0, 148), +(1729, 2060004, 2020014, 8100, 0, 152), +(1730, 2060004, 2020013, 5600, 0, 156), +(1731, 2060004, 2020012, 4500, 0, 160), +(1732, 2060004, 2010004, 310, 0, 164), +(1733, 2060004, 2010003, 100, 0, 168), +(1734, 2060004, 2010001, 106, 0, 172), +(1735, 2060004, 2010002, 50, 0, 176), +(1736, 2060004, 2010000, 30, 0, 180), +(1737, 2060004, 2001002, 4000, 0, 184), +(1738, 2060004, 2001001, 2300, 0, 188), +(1739, 2060004, 2001000, 3200, 0, 192), +(1740, 2060004, 2022041, 1600, 0, 196), +(1741, 2060004, 2022040, 300, 0, 200), +(1742, 2060004, 2002005, 500, 0, 204), +(1743, 2060004, 2002004, 500, 0, 208), +(1744, 2060004, 2002002, 500, 0, 212), +(1745, 2060004, 2002001, 400, 0, 216), +(1746, 2060004, 2002000, 500, 0, 220), +(1747, 2060004, 2000006, 620, 0, 224), +(1748, 2060004, 2000003, 200, 0, 228), +(1749, 2060004, 2000002, 320, 0, 232), +(1750, 2060004, 2000001, 160, 0, 236), +(1751, 2060004, 2000000, 50, 0, 240), +(1752, 2060007, 1492006, 160000, 0, 104), +(1753, 2060007, 1492005, 100000, 0, 108), +(1754, 2060007, 1492004, 75000, 0, 112), +(1755, 2060007, 1482006, 150000, 0, 116), +(1756, 2060007, 1482005, 100000, 0, 120), +(1757, 2060007, 1482004, 75000, 0, 124), +(1758, 2060007, 1472007, 60000, 0, 128), +(1759, 2060007, 1462005, 250000, 0, 132), +(1760, 2060007, 1462004, 200000, 0, 136), +(1761, 2060007, 1462000, 30000, 0, 140), +(1762, 2060007, 1462003, 12000, 0, 144), +(1763, 2060007, 1452007, 375000, 0, 148), +(1764, 2060007, 1452006, 250000, 0, 152), +(1765, 2060007, 1452005, 150000, 0, 156), +(1766, 2060007, 1452000, 20000, 0, 160), +(1767, 2060007, 1442009, 300000, 0, 164), +(1768, 2060007, 1442003, 175000, 0, 168), +(1769, 2060007, 1442001, 60000, 0, 172), +(1770, 2060007, 1442004, 24000, 0, 176), +(1771, 2060007, 1432005, 225000, 0, 180), +(1772, 2060007, 1432003, 175000, 0, 184), +(1773, 2060007, 1432002, 60000, 0, 188), +(1774, 2060007, 1422007, 250000, 0, 192), +(1775, 2060007, 1422008, 200000, 0, 196), +(1776, 2060007, 1422001, 45000, 0, 200), +(1777, 2060007, 1422004, 20000, 0, 204), +(1778, 2060007, 1412005, 250000, 0, 208), +(1779, 2060007, 1412006, 45000, 0, 212), +(1780, 2060007, 1412004, 200000, 0, 216), +(1781, 2060007, 1412000, 22000, 0, 220), +(1782, 2060007, 1402007, 450000, 0, 224), +(1783, 2060007, 1402006, 350000, 0, 228), +(1784, 2060007, 1402002, 150000, 0, 232), +(1785, 2060007, 1402008, 22000, 0, 236), +(1786, 2060007, 1372000, 400000, 0, 240), +(1787, 2060007, 1372001, 175000, 0, 244), +(1788, 2060007, 1372003, 38000, 0, 248), +(1789, 2060007, 1382002, 20000, 0, 252), +(1790, 2060007, 1372004, 18000, 0, 256), +(1791, 2060007, 1332011, 425000, 0, 260), +(1792, 2060007, 1332014, 375000, 0, 264), +(1793, 2060007, 1332012, 40000, 0, 268), +(1794, 2060007, 1332004, 38000, 0, 272), +(1795, 2060007, 1322016, 175000, 0, 276), +(1796, 2060007, 1322015, 100000, 0, 280), +(1797, 2060007, 1322014, 40000, 0, 284), +(1798, 2060007, 1322004, 22000, 0, 288), +(1799, 2060007, 1312007, 175000, 0, 292), +(1800, 2060007, 1312006, 100000, 0, 296), +(1801, 2060007, 1312005, 40000, 0, 300), +(1802, 2060007, 1312003, 20000, 0, 304), +(1803, 2060007, 1302009, 225000, 0, 308), +(1804, 2060007, 1302004, 100000, 0, 312), +(1805, 2060007, 1302008, 40000, 0, 316), +(1806, 2060007, 1302003, 20000, 0, 320), +(1807, 2070001, 2330000, 600, 0, 104), +(1808, 2070001, 2070000, 500, 0, 108), +(1809, 2070001, 2061001, 10, 0, 112), +(1810, 2070001, 2060001, 10, 0, 116), +(1813, 2070001, 2061000, 1, 0, 128), +(1814, 2070001, 2060000, 1, 0, 132), +(1815, 2070001, 2030000, 400, 0, 136), +(1816, 2070001, 2022000, 1650, 0, 140), +(1817, 2070001, 2022003, 1100, 0, 144), +(1818, 2070001, 2020015, 10200, 0, 148), +(1819, 2070001, 2020014, 8100, 0, 152), +(1820, 2070001, 2020013, 5600, 0, 156), +(1821, 2070001, 2020012, 4500, 0, 160), +(1822, 2070001, 2010004, 310, 0, 164), +(1823, 2070001, 2010003, 100, 0, 168), +(1824, 2070001, 2010001, 106, 0, 172), +(1825, 2070001, 2010002, 50, 0, 176), +(1826, 2070001, 2010000, 30, 0, 180), +(1827, 2070001, 2001002, 4000, 0, 184), +(1828, 2070001, 2001001, 2300, 0, 188), +(1829, 2070001, 2001000, 3200, 0, 192), +(1830, 2070001, 2002005, 500, 0, 196), +(1831, 2070001, 2002004, 500, 0, 200), +(1832, 2070001, 2002002, 500, 0, 204), +(1833, 2070001, 2002001, 400, 0, 208), +(1834, 2070001, 2002000, 500, 0, 212), +(1835, 2070001, 2000006, 620, 0, 216), +(1836, 2070001, 2000003, 200, 0, 220), +(1837, 2070001, 2000002, 320, 0, 224), +(1838, 2070001, 2000001, 160, 0, 228), +(1839, 2070001, 2000000, 50, 0, 232), +(1840, 2070002, 1492006, 160000, 0, 104), +(1841, 2070002, 1492005, 100000, 0, 108), +(1842, 2070002, 1482006, 150000, 0, 112), +(1843, 2070002, 1482005, 100000, 0, 116), +(1844, 2070002, 1472007, 60000, 0, 120), +(1845, 2070002, 1472004, 30000, 0, 124), +(1846, 2070002, 1462005, 250000, 0, 128), +(1847, 2070002, 1462004, 200000, 0, 132), +(1848, 2070002, 1452007, 375000, 0, 136), +(1849, 2070002, 1452006, 250000, 0, 140), +(1850, 2070002, 1442009, 300000, 0, 144), +(1851, 2070002, 1442003, 175000, 0, 148), +(1852, 2070002, 1432005, 225000, 0, 152), +(1853, 2070002, 1432003, 175000, 0, 156), +(1854, 2070002, 1422007, 250000, 0, 160), +(1855, 2070002, 1422008, 200000, 0, 164), +(1856, 2070002, 1412005, 250000, 0, 168), +(1857, 2070002, 1412004, 200000, 0, 172), +(1858, 2070002, 1402007, 450000, 0, 176), +(1859, 2070002, 1402006, 350000, 0, 180), +(1860, 2070002, 1372000, 400000, 0, 184), +(1861, 2070002, 1372001, 175000, 0, 188), +(1862, 2070002, 1332011, 425000, 0, 192), +(1863, 2070002, 1332014, 375000, 0, 196), +(1864, 2070002, 1332001, 200000, 0, 200), +(1865, 2070002, 1322016, 175000, 0, 204), +(1866, 2070002, 1322015, 100000, 0, 208), +(1867, 2070002, 1312007, 175000, 0, 212), +(1868, 2070002, 1312006, 100000, 0, 216), +(1869, 2070002, 1302009, 225000, 0, 220), +(1870, 2070002, 1302004, 100000, 0, 224), +(1871, 2070003, 1002625, 75000, 0, 104), +(1872, 2070003, 1052113, 120000, 0, 108), +(1873, 2070003, 1052110, 100000, 0, 112), +(1874, 2070003, 1052107, 90000, 0, 116), +(1875, 2070003, 1061069, 160000, 0, 120), +(1876, 2070003, 1061070, 160000, 0, 124), +(1877, 2070003, 1060072, 160000, 0, 128), +(1878, 2070003, 1060071, 160000, 0, 132), +(1879, 2070003, 1060052, 108000, 0, 136), +(1880, 2070003, 1060050, 108000, 0, 140), +(1881, 2070003, 1060051, 108000, 0, 144), +(1882, 2070003, 1051009, 111000, 0, 148), +(1883, 2070003, 1051008, 111000, 0, 152), +(1884, 2070003, 1051007, 111000, 0, 156), +(1885, 2070003, 1041074, 180000, 0, 160), +(1886, 2070003, 1041075, 180000, 0, 164), +(1887, 2070003, 1040083, 180000, 0, 168), +(1888, 2070003, 1040082, 180000, 0, 172), +(1889, 2070003, 1040061, 114000, 0, 176), +(1890, 2070003, 1040062, 114000, 0, 180), +(1891, 2070003, 1040063, 114000, 0, 184), +(1892, 2070003, 1002180, 100000, 0, 188), +(1893, 2070003, 1002179, 100000, 0, 192), +(1894, 2070003, 1002178, 100000, 0, 196), +(1895, 2070003, 1002177, 100000, 0, 200), +(1896, 2070003, 1002176, 100000, 0, 204), +(1897, 2070003, 1061080, 160000, 0, 208), +(1898, 2070003, 1061081, 160000, 0, 212), +(1899, 2070003, 1061062, 108000, 0, 216), +(1900, 2070003, 1061060, 108000, 0, 220), +(1901, 2070003, 1061064, 108000, 0, 224), +(1902, 2070003, 1061061, 108000, 0, 228), +(1903, 2070003, 1060069, 160000, 0, 232), +(1904, 2070003, 1060070, 160000, 0, 236), +(1905, 2070003, 1060063, 108000, 0, 240), +(1906, 2070003, 1060061, 108000, 0, 244), +(1907, 2070003, 1060065, 108000, 0, 248), +(1908, 2070003, 1060062, 108000, 0, 252), +(1909, 2070003, 1041081, 180000, 0, 256), +(1910, 2070003, 1041082, 180000, 0, 260), +(1911, 2070003, 1041067, 114000, 0, 264), +(1912, 2070003, 1041065, 114000, 0, 268), +(1913, 2070003, 1041069, 114000, 0, 272), +(1914, 2070003, 1041066, 114000, 0, 276), +(1915, 2070003, 1040079, 180000, 0, 280), +(1916, 2070003, 1040081, 180000, 0, 284), +(1917, 2070003, 1040076, 114000, 0, 288), +(1918, 2070003, 1040074, 114000, 0, 292), +(1919, 2070003, 1040073, 114000, 0, 296), +(1920, 2070003, 1040072, 114000, 0, 300), +(1921, 2070003, 1002137, 100000, 0, 304), +(1922, 2070003, 1002135, 100000, 0, 308), +(1923, 2070003, 1002139, 100000, 0, 312), +(1924, 2070003, 1002138, 100000, 0, 316), +(1925, 2070003, 1061047, 120000, 0, 320), +(1926, 2070003, 1061048, 120000, 0, 324), +(1927, 2070003, 1051027, 450000, 0, 328), +(1928, 2070003, 1051024, 450000, 0, 332), +(1929, 2070003, 1051025, 450000, 0, 336), +(1930, 2070003, 1051023, 450000, 0, 340), +(1931, 2070003, 1050037, 450000, 0, 344), +(1932, 2070003, 1050036, 450000, 0, 348), +(1933, 2070003, 1050038, 450000, 0, 352), +(1934, 2070003, 1050035, 450000, 0, 356), +(1935, 2070003, 1050002, 300000, 0, 360), +(1936, 2070003, 1050031, 300000, 0, 364), +(1937, 2070003, 1041051, 120000, 0, 368), +(1938, 2070003, 1041052, 120000, 0, 372), +(1939, 2070003, 1002144, 96000, 0, 376), +(1940, 2070003, 1002143, 96000, 0, 380), +(1941, 2070003, 1002142, 96000, 0, 384), +(1942, 2070003, 1002141, 96000, 0, 388), +(1943, 2070003, 1092002, 200000, 0, 392), +(1944, 2070003, 1092001, 100000, 0, 396), +(1945, 2070003, 1061084, 180000, 0, 400), +(1946, 2070003, 1061083, 180000, 0, 404), +(1947, 2070003, 1060074, 180000, 0, 408), +(1948, 2070003, 1060075, 180000, 0, 412), +(1949, 2070003, 1051014, 112500, 0, 416), +(1950, 2070003, 1051001, 112500, 0, 420), +(1951, 2070003, 1050021, 112500, 0, 424), +(1952, 2070003, 1050000, 112500, 0, 428), +(1953, 2070003, 1041085, 200000, 0, 432), +(1954, 2070003, 1041084, 200000, 0, 436), +(1955, 2070003, 1040085, 200000, 0, 440), +(1956, 2070003, 1040000, 200000, 0, 444), +(1957, 2070003, 1002004, 160000, 0, 448), +(1958, 2080001, 2330000, 600, 0, 104), +(1959, 2080001, 2070000, 500, 0, 108), +(1960, 2080001, 2061001, 10, 0, 112), +(1961, 2080001, 2060001, 10, 0, 116), +(1964, 2080001, 2061000, 1, 0, 128), +(1965, 2080001, 2060000, 1, 0, 132), +(1966, 2080001, 2030000, 400, 0, 136), +(1967, 2080001, 2020015, 10200, 0, 140), +(1968, 2080001, 2020014, 8100, 0, 144), +(1969, 2080001, 2020013, 5600, 0, 148), +(1970, 2080001, 2020012, 4500, 0, 152), +(1971, 2080001, 2010004, 310, 0, 156), +(1972, 2080001, 2010003, 100, 0, 160), +(1973, 2080001, 2010001, 106, 0, 164), +(1974, 2080001, 2010002, 50, 0, 168), +(1975, 2080001, 2010000, 30, 0, 172), +(1976, 2080001, 2001002, 4000, 0, 176), +(1977, 2080001, 2001001, 2300, 0, 180), +(1978, 2080001, 2001000, 3200, 0, 184), +(1979, 2080001, 2022089, 3400, 0, 188), +(1980, 2080001, 2002005, 500, 0, 192), +(1981, 2080001, 2002004, 500, 0, 196), +(1982, 2080001, 2002002, 500, 0, 200), +(1983, 2080001, 2002001, 400, 0, 204), +(1984, 2080001, 2002000, 500, 0, 208), +(1985, 2080001, 2000006, 620, 0, 212), +(1986, 2080001, 2000003, 200, 0, 216), +(1987, 2080001, 2000002, 320, 0, 220), +(1988, 2080001, 2000001, 160, 0, 224), +(1989, 2080001, 2000000, 50, 0, 228), +(1990, 2080002, 1002625, 75000, 0, 104), +(1991, 2080002, 1052113, 120000, 0, 108), +(1992, 2080002, 1052110, 100000, 0, 112), +(1993, 2080002, 1061069, 160000, 0, 116), +(1994, 2080002, 1061070, 160000, 0, 120), +(1995, 2080002, 1060072, 160000, 0, 124), +(1996, 2080002, 1060071, 160000, 0, 128), +(1997, 2080002, 1060052, 108000, 0, 132), +(1998, 2080002, 1060050, 108000, 0, 136), +(1999, 2080002, 1060051, 108000, 0, 140), +(2000, 2080002, 1051009, 111000, 0, 144), +(2001, 2080002, 1051008, 111000, 0, 148), +(2002, 2080002, 1051007, 111000, 0, 152), +(2003, 2080002, 1041074, 180000, 0, 156), +(2004, 2080002, 1041075, 180000, 0, 160), +(2005, 2080002, 1040083, 180000, 0, 164), +(2006, 2080002, 1040082, 180000, 0, 168), +(2007, 2080002, 1040061, 114000, 0, 172), +(2008, 2080002, 1040062, 114000, 0, 176), +(2009, 2080002, 1040063, 114000, 0, 180), +(2010, 2080002, 1002180, 100000, 0, 184), +(2011, 2080002, 1002179, 100000, 0, 188), +(2012, 2080002, 1002178, 100000, 0, 192), +(2013, 2080002, 1002177, 100000, 0, 196), +(2014, 2080002, 1002176, 100000, 0, 200), +(2015, 2080002, 1061080, 160000, 0, 204), +(2016, 2080002, 1061081, 160000, 0, 208), +(2017, 2080002, 1061062, 108000, 0, 212), +(2018, 2080002, 1061060, 108000, 0, 216), +(2019, 2080002, 1061064, 108000, 0, 220), +(2020, 2080002, 1061061, 108000, 0, 224), +(2021, 2080002, 1060069, 160000, 0, 228), +(2022, 2080002, 1060070, 160000, 0, 232), +(2023, 2080002, 1060063, 108000, 0, 236), +(2024, 2080002, 1060061, 108000, 0, 240), +(2025, 2080002, 1060065, 108000, 0, 244), +(2026, 2080002, 1060062, 108000, 0, 248), +(2027, 2080002, 1041081, 180000, 0, 252), +(2028, 2080002, 1041082, 180000, 0, 256), +(2029, 2080002, 1041067, 114000, 0, 260), +(2030, 2080002, 1041065, 114000, 0, 264), +(2031, 2080002, 1041069, 114000, 0, 268), +(2032, 2080002, 1041066, 114000, 0, 272), +(2033, 2080002, 1040079, 180000, 0, 276), +(2034, 2080002, 1040081, 180000, 0, 280), +(2035, 2080002, 1040076, 114000, 0, 284), +(2036, 2080002, 1040074, 114000, 0, 288), +(2037, 2080002, 1040073, 114000, 0, 292), +(2038, 2080002, 1040072, 114000, 0, 296), +(2039, 2080002, 1002137, 100000, 0, 300), +(2040, 2080002, 1002135, 100000, 0, 304), +(2041, 2080002, 1002139, 100000, 0, 308), +(2042, 2080002, 1002138, 100000, 0, 312), +(2043, 2080002, 1061047, 120000, 0, 316), +(2044, 2080002, 1061048, 120000, 0, 320), +(2045, 2080002, 1051027, 450000, 0, 324), +(2046, 2080002, 1051024, 450000, 0, 328), +(2047, 2080002, 1051025, 450000, 0, 332), +(2048, 2080002, 1051023, 450000, 0, 336), +(2049, 2080002, 1050037, 450000, 0, 340), +(2050, 2080002, 1050036, 450000, 0, 344), +(2051, 2080002, 1050038, 450000, 0, 348), +(2052, 2080002, 1050035, 450000, 0, 352), +(2053, 2080002, 1050002, 300000, 0, 356), +(2054, 2080002, 1050031, 300000, 0, 360), +(2055, 2080002, 1041051, 120000, 0, 364), +(2056, 2080002, 1041052, 120000, 0, 368), +(2057, 2080002, 1002144, 96000, 0, 372), +(2058, 2080002, 1002143, 96000, 0, 376), +(2059, 2080002, 1002142, 96000, 0, 380), +(2060, 2080002, 1002141, 96000, 0, 384), +(2061, 2080002, 1092002, 200000, 0, 388), +(2062, 2080002, 1092001, 100000, 0, 392), +(2063, 2080002, 1061084, 180000, 0, 396), +(2064, 2080002, 1061083, 180000, 0, 400), +(2065, 2080002, 1060074, 180000, 0, 404), +(2066, 2080002, 1060075, 180000, 0, 408), +(2067, 2080002, 1051014, 112500, 0, 412), +(2068, 2080002, 1051001, 112500, 0, 416), +(2069, 2080002, 1050021, 112500, 0, 420), +(2070, 2080002, 1050000, 112500, 0, 424), +(2071, 2080002, 1041085, 200000, 0, 428), +(2072, 2080002, 1041084, 200000, 0, 432), +(2073, 2080002, 1040085, 200000, 0, 436), +(2074, 2080002, 1040000, 200000, 0, 440), +(2075, 2080002, 1002004, 160000, 0, 444), +(2076, 2080003, 2044900, 70000, 0, 104), +(2077, 2080003, 2044800, 70000, 0, 108), +(2078, 2080003, 2044700, 70000, 0, 112), +(2079, 2080003, 2044600, 70000, 0, 116), +(2080, 2080003, 2044500, 70000, 0, 120), +(2081, 2080003, 2044400, 70000, 0, 124), +(2082, 2080003, 2044300, 70000, 0, 128), +(2083, 2080003, 2044200, 70000, 0, 132), +(2084, 2080003, 2044100, 70000, 0, 136), +(2085, 2080003, 2044000, 70000, 0, 140), +(2086, 2080003, 2043800, 70000, 0, 144), +(2087, 2080003, 2043700, 70000, 0, 148), +(2088, 2080003, 2043300, 70000, 0, 152), +(2089, 2080003, 2043200, 70000, 0, 156), +(2090, 2080003, 2043100, 70000, 0, 160), +(2091, 2080003, 2043000, 70000, 0, 164), +(2092, 2080003, 2040706, 35000, 0, 168), +(2093, 2080003, 2040703, 35000, 0, 172), +(2094, 2080003, 2041003, 35000, 0, 176), +(2095, 2080003, 2041000, 35000, 0, 180), +(2096, 2080003, 2040900, 35000, 0, 184), +(2097, 2080003, 2040600, 35000, 0, 188), +(2098, 2080003, 2040400, 35000, 0, 192), +(2099, 2080003, 2040300, 35000, 0, 196), +(2100, 2080003, 2040000, 35000, 0, 200), +(2101, 2080004, 4160019, 1000, 0, 104), +(2102, 2080004, 4160039, 1000, 0, 108), +(2103, 2080004, 4160037, 1000, 0, 112), +(2104, 2080004, 4031993, 100000, 0, 116), +(2105, 2080004, 4160036, 1000, 0, 120), +(2106, 2080004, 4160035, 1000, 0, 124), +(2107, 2080004, 4160034, 1000, 0, 128), +(2108, 2080004, 4160032, 1000, 0, 132), +(2109, 2080004, 4160024, 1000, 0, 136), +(2110, 2080004, 4160023, 1000, 0, 140), +(2111, 2080004, 4160022, 1000, 0, 144), +(2112, 2080004, 4160015, 1000, 0, 148), +(2113, 2080004, 4160012, 1000, 0, 152), +(2114, 2080004, 4160013, 1000, 0, 156), +(2115, 2080004, 4160017, 1000, 0, 160), +(2116, 2080004, 4160014, 1000, 0, 164), +(2117, 2080004, 4160020, 1000, 0, 168), +(2118, 2080004, 4160010, 1000, 0, 172), +(2119, 2080004, 4160009, 1000, 0, 176), +(2120, 2080004, 4160008, 1000, 0, 180), +(2121, 2080004, 4160007, 1000, 0, 184), +(2122, 2080004, 4160006, 1000, 0, 188), +(2123, 2080004, 4160005, 1000, 0, 192), +(2124, 2080004, 4160004, 1000, 0, 196), +(2125, 2080004, 4160003, 1000, 0, 200), +(2126, 2080004, 4160002, 1000, 0, 204), +(2127, 2080004, 4160001, 1000, 0, 208), +(2128, 2080004, 4160000, 1000, 0, 212), +(2129, 2080004, 4160026, 1000, 0, 216), +(2130, 2080004, 2260000, 1000, 0, 220), +(2131, 2080004, 2120000, 30, 0, 224), +(2132, 2090001, 1492006, 160000, 0, 104), +(2133, 2090001, 1492005, 100000, 0, 108), +(2134, 2090001, 1482006, 150000, 0, 112), +(2135, 2090001, 1482005, 100000, 0, 116), +(2136, 2090001, 1472007, 60000, 0, 120), +(2137, 2090001, 1472004, 30000, 0, 124), +(2138, 2090001, 1472001, 20000, 0, 128), +(2139, 2090001, 1462005, 250000, 0, 132), +(2140, 2090001, 1462004, 200000, 0, 136), +(2141, 2090001, 1462000, 30000, 0, 140), +(2142, 2090001, 1452007, 375000, 0, 144), +(2143, 2090001, 1452006, 250000, 0, 148), +(2144, 2090001, 1452005, 150000, 0, 152), +(2145, 2090001, 1442009, 300000, 0, 156), +(2146, 2090001, 1442003, 175000, 0, 160), +(2147, 2090001, 1442001, 60000, 0, 164), +(2148, 2090001, 1432005, 225000, 0, 168), +(2149, 2090001, 1432003, 175000, 0, 172), +(2150, 2090001, 1432002, 60000, 0, 176), +(2151, 2090001, 1422007, 250000, 0, 180), +(2152, 2090001, 1422008, 200000, 0, 184), +(2153, 2090001, 1422001, 45000, 0, 188), +(2154, 2090001, 1412005, 250000, 0, 192), +(2155, 2090001, 1412004, 200000, 0, 196), +(2156, 2090001, 1412006, 45000, 0, 200), +(2157, 2090001, 1402007, 450000, 0, 204), +(2158, 2090001, 1402006, 350000, 0, 208), +(2159, 2090001, 1402002, 150000, 0, 212), +(2160, 2090001, 1382002, 20000, 0, 216), +(2161, 2090001, 1372000, 400000, 0, 220), +(2162, 2090001, 1372001, 175000, 0, 224), +(2163, 2090001, 1372003, 38000, 0, 228), +(2164, 2090001, 1332011, 425000, 0, 232), +(2165, 2090001, 1332014, 375000, 0, 236), +(2166, 2090001, 1332001, 200000, 0, 240), +(2167, 2090001, 1332012, 40000, 0, 244), +(2168, 2090001, 1332009, 42000, 0, 248), +(2169, 2090001, 1322016, 175000, 0, 252), +(2170, 2090001, 1322015, 100000, 0, 256), +(2171, 2090001, 1322014, 40000, 0, 260), +(2172, 2090001, 1312007, 175000, 0, 264), +(2173, 2090001, 1312006, 100000, 0, 268), +(2174, 2090001, 1312005, 40000, 0, 272), +(2175, 2090001, 1302009, 225000, 0, 276), +(2176, 2090001, 1302004, 100000, 0, 280), +(2177, 2090001, 1302008, 40000, 0, 284), +(2178, 2090002, 1002625, 75000, 0, 104), +(2179, 2090002, 1052113, 120000, 0, 108), +(2180, 2090002, 1052110, 100000, 0, 112), +(2181, 2090002, 1061069, 160000, 0, 116), +(2182, 2090002, 1061070, 160000, 0, 120), +(2183, 2090002, 1060072, 160000, 0, 124), +(2184, 2090002, 1060071, 160000, 0, 128), +(2185, 2090002, 1060052, 108000, 0, 132), +(2186, 2090002, 1060050, 108000, 0, 136), +(2187, 2090002, 1060051, 108000, 0, 140), +(2188, 2090002, 1051009, 111000, 0, 144), +(2189, 2090002, 1051008, 111000, 0, 148), +(2190, 2090002, 1051007, 111000, 0, 152), +(2191, 2090002, 1041074, 180000, 0, 156), +(2192, 2090002, 1041075, 180000, 0, 160), +(2193, 2090002, 1040083, 180000, 0, 164), +(2194, 2090002, 1040082, 180000, 0, 168), +(2195, 2090002, 1040061, 114000, 0, 172), +(2196, 2090002, 1040062, 114000, 0, 176), +(2197, 2090002, 1040063, 114000, 0, 180), +(2198, 2090002, 1002180, 100000, 0, 184), +(2199, 2090002, 1002179, 100000, 0, 188), +(2200, 2090002, 1002178, 100000, 0, 192), +(2201, 2090002, 1002177, 100000, 0, 196), +(2202, 2090002, 1002176, 100000, 0, 200), +(2203, 2090002, 1061080, 160000, 0, 204), +(2204, 2090002, 1061081, 160000, 0, 208), +(2205, 2090002, 1061062, 108000, 0, 212), +(2206, 2090002, 1061060, 108000, 0, 216), +(2207, 2090002, 1061064, 108000, 0, 220), +(2208, 2090002, 1061061, 108000, 0, 224), +(2209, 2090002, 1060069, 160000, 0, 228), +(2210, 2090002, 1060070, 160000, 0, 232), +(2211, 2090002, 1060063, 108000, 0, 236), +(2212, 2090002, 1060061, 108000, 0, 240), +(2213, 2090002, 1060065, 108000, 0, 244), +(2214, 2090002, 1060062, 108000, 0, 248), +(2215, 2090002, 1041081, 180000, 0, 252), +(2216, 2090002, 1041082, 180000, 0, 256), +(2217, 2090002, 1041067, 114000, 0, 260), +(2218, 2090002, 1041065, 114000, 0, 264), +(2219, 2090002, 1041069, 114000, 0, 268), +(2220, 2090002, 1041066, 114000, 0, 272), +(2221, 2090002, 1040079, 180000, 0, 276), +(2222, 2090002, 1040081, 180000, 0, 280), +(2223, 2090002, 1040076, 114000, 0, 284), +(2224, 2090002, 1040074, 114000, 0, 288), +(2225, 2090002, 1040073, 114000, 0, 292), +(2226, 2090002, 1040072, 114000, 0, 296), +(2227, 2090002, 1002137, 100000, 0, 300), +(2228, 2090002, 1002135, 100000, 0, 304), +(2229, 2090002, 1002139, 100000, 0, 308), +(2230, 2090002, 1002138, 100000, 0, 312), +(2231, 2090002, 1061047, 120000, 0, 316), +(2232, 2090002, 1061048, 120000, 0, 320), +(2233, 2090002, 1051027, 450000, 0, 324), +(2234, 2090002, 1051024, 450000, 0, 328), +(2235, 2090002, 1051025, 450000, 0, 332), +(2236, 2090002, 1051023, 450000, 0, 336), +(2237, 2090002, 1050037, 450000, 0, 340), +(2238, 2090002, 1050036, 450000, 0, 344), +(2239, 2090002, 1050038, 450000, 0, 348), +(2240, 2090002, 1050035, 450000, 0, 352), +(2241, 2090002, 1050002, 300000, 0, 356), +(2242, 2090002, 1050031, 300000, 0, 360), +(2243, 2090002, 1041051, 120000, 0, 364), +(2244, 2090002, 1041052, 120000, 0, 368), +(2245, 2090002, 1002144, 96000, 0, 372), +(2246, 2090002, 1002143, 96000, 0, 376), +(2247, 2090002, 1002142, 96000, 0, 380), +(2248, 2090002, 1002141, 96000, 0, 384), +(2249, 2090002, 1092002, 200000, 0, 388), +(2250, 2090002, 1092001, 100000, 0, 392), +(2251, 2090002, 1061084, 180000, 0, 396), +(2252, 2090002, 1061083, 180000, 0, 400), +(2253, 2090002, 1060074, 180000, 0, 404), +(2254, 2090002, 1060075, 180000, 0, 408), +(2255, 2090002, 1051014, 112500, 0, 412), +(2256, 2090002, 1051001, 112500, 0, 416), +(2257, 2090002, 1050021, 112500, 0, 420), +(2258, 2090002, 1050000, 112500, 0, 424), +(2259, 2090002, 1041085, 200000, 0, 428), +(2260, 2090002, 1041084, 200000, 0, 432), +(2261, 2090002, 1040085, 200000, 0, 436), +(2262, 2090002, 1040000, 200000, 0, 440), +(2263, 2090002, 1002004, 160000, 0, 444), +(2264, 2090003, 2330000, 600, 0, 104), +(2265, 2090003, 2070000, 500, 0, 108), +(2268, 2090003, 2061000, 1, 0, 120), +(2269, 2090003, 2060000, 1, 0, 124), +(2270, 2090003, 2030000, 400, 0, 128), +(2271, 2090003, 2050002, 300, 0, 132), +(2272, 2090003, 2050001, 200, 0, 136), +(2273, 2090003, 2050000, 200, 0, 140), +(2274, 2090003, 2020015, 10200, 0, 144), +(2275, 2090003, 2020014, 8100, 0, 148), +(2276, 2090003, 2020013, 5600, 0, 152), +(2277, 2090003, 2020012, 4500, 0, 156), +(2278, 2090003, 2001002, 4000, 0, 160), +(2279, 2090003, 2001001, 2300, 0, 164), +(2280, 2090003, 2001000, 3200, 0, 168), +(2281, 2090003, 2022000, 1650, 0, 172), +(2282, 2090003, 2022003, 1100, 0, 176), +(2283, 2090003, 2010004, 310, 0, 180), +(2284, 2090003, 2010003, 100, 0, 184), +(2285, 2090003, 2010001, 106, 0, 188), +(2286, 2090003, 2010002, 50, 0, 192), +(2287, 2090003, 2010000, 30, 0, 196), +(2288, 2090003, 2002005, 500, 0, 200), +(2289, 2090003, 2002004, 500, 0, 204), +(2290, 2090003, 2002002, 500, 0, 208), +(2291, 2090003, 2002001, 400, 0, 212), +(2292, 2090003, 2002000, 500, 0, 216), +(2293, 2090003, 2000006, 620, 0, 220), +(2294, 2090003, 2000003, 200, 0, 224), +(2295, 2090003, 2000002, 320, 0, 228), +(2296, 2090003, 2000001, 160, 0, 232), +(2297, 2090003, 2000000, 50, 0, 236), +(2298, 2090006, 4160019, 1000, 0, 104), +(2299, 2090006, 4160039, 1000, 0, 108), +(2300, 2090006, 4160037, 1000, 0, 112), +(2301, 2090006, 4031993, 100000, 0, 116), +(2302, 2090006, 4160036, 1000, 0, 120), +(2303, 2090006, 4160035, 1000, 0, 124), +(2304, 2090006, 4160034, 1000, 0, 128), +(2305, 2090006, 4160032, 1000, 0, 132), +(2306, 2090006, 4160024, 1000, 0, 136), +(2307, 2090006, 4160023, 1000, 0, 140), +(2308, 2090006, 4160022, 1000, 0, 144), +(2309, 2090006, 4160015, 1000, 0, 148), +(2310, 2090006, 4160012, 1000, 0, 152), +(2311, 2090006, 4160013, 1000, 0, 156), +(2312, 2090006, 4160017, 1000, 0, 160), +(2313, 2090006, 4160014, 1000, 0, 164), +(2314, 2090006, 4160020, 1000, 0, 168), +(2315, 2090006, 4160010, 1000, 0, 172), +(2316, 2090006, 4160009, 1000, 0, 176), +(2317, 2090006, 4160008, 1000, 0, 180), +(2318, 2090006, 4160007, 1000, 0, 184), +(2319, 2090006, 4160006, 1000, 0, 188), +(2320, 2090006, 4160005, 1000, 0, 192), +(2321, 2090006, 4160004, 1000, 0, 196), +(2322, 2090006, 4160003, 1000, 0, 200), +(2323, 2090006, 4160002, 1000, 0, 204), +(2324, 2090006, 4160001, 1000, 0, 208), +(2325, 2090006, 4160000, 1000, 0, 212), +(2326, 2090006, 4160026, 1000, 0, 216), +(2327, 2090006, 2260000, 1000, 0, 220), +(2328, 2090006, 2120000, 30, 0, 224), +(2329, 2093000, 1492004, 75000, 0, 104), +(2330, 2093000, 1482004, 75000, 0, 108), +(2331, 2093000, 1472001, 20000, 0, 112), +(2332, 2093000, 1462000, 30000, 0, 116), +(2333, 2093000, 1452005, 150000, 0, 120), +(2334, 2093000, 1442001, 60000, 0, 124), +(2335, 2093000, 1432002, 60000, 0, 128), +(2336, 2093000, 1422001, 45000, 0, 132), +(2337, 2093000, 1412006, 45000, 0, 136), +(2338, 2093000, 1402002, 150000, 0, 140), +(2339, 2093000, 1382002, 20000, 0, 144), +(2340, 2093000, 1372003, 38000, 0, 148), +(2341, 2093000, 1332012, 40000, 0, 152), +(2342, 2093000, 1332009, 42000, 0, 156), +(2343, 2093000, 1322014, 40000, 0, 160), +(2344, 2093000, 1312005, 40000, 0, 164), +(2345, 2093000, 1302008, 40000, 0, 168), +(2346, 2093001, 1052107, 90000, 0, 104), +(2347, 2093001, 1002622, 40000, 0, 108), +(2348, 2093001, 1061046, 40000, 0, 112), +(2349, 2093001, 1061045, 40000, 0, 116), +(2350, 2093001, 1061044, 40000, 0, 120), +(2351, 2093001, 1061043, 40000, 0, 124), +(2352, 2093001, 1060046, 40000, 0, 128), +(2353, 2093001, 1060045, 40000, 0, 132), +(2354, 2093001, 1060044, 40000, 0, 136), +(2355, 2093001, 1060043, 40000, 0, 140), +(2356, 2093001, 1041050, 45000, 0, 144), +(2357, 2093001, 1041049, 45000, 0, 148), +(2358, 2093001, 1041048, 45000, 0, 152), +(2359, 2093001, 1041047, 45000, 0, 156), +(2360, 2093001, 1040060, 45000, 0, 160), +(2361, 2093001, 1040059, 45000, 0, 164), +(2362, 2093001, 1040058, 45000, 0, 168), +(2363, 2093001, 1040057, 45000, 0, 172), +(2364, 2093001, 1002175, 30000, 0, 176), +(2365, 2093001, 1002174, 30000, 0, 180), +(2366, 2093001, 1002173, 30000, 0, 184), +(2367, 2093001, 1002172, 30000, 0, 188), +(2368, 2093001, 1002171, 30000, 0, 192), +(2369, 2093001, 1061051, 44000, 0, 196), +(2370, 2093001, 1061050, 44000, 0, 200), +(2371, 2093001, 1061052, 44000, 0, 204), +(2372, 2093001, 1060057, 44000, 0, 208), +(2373, 2093001, 1060056, 44000, 0, 212), +(2374, 2093001, 1060058, 44000, 0, 216), +(2375, 2093001, 1060059, 44000, 0, 220), +(2376, 2093001, 1041055, 50000, 0, 224), +(2377, 2093001, 1041054, 50000, 0, 228), +(2378, 2093001, 1041056, 50000, 0, 232), +(2379, 2093001, 1040068, 50000, 0, 236), +(2380, 2093001, 1040067, 50000, 0, 240), +(2381, 2093001, 1040070, 50000, 0, 244), +(2382, 2093001, 1040069, 50000, 0, 248), +(2383, 2093001, 1002165, 30000, 0, 252), +(2384, 2093001, 1002164, 30000, 0, 256), +(2385, 2093001, 1002163, 30000, 0, 260), +(2386, 2093001, 1002162, 30000, 0, 264), +(2387, 2093001, 1002161, 30000, 0, 268), +(2388, 2093001, 1061036, 40000, 0, 272), +(2389, 2093001, 1061035, 40000, 0, 276), +(2390, 2093001, 1061034, 40000, 0, 280), +(2391, 2093001, 1050028, 40000, 0, 284), +(2392, 2093001, 1050027, 40000, 0, 288), +(2393, 2093001, 1050026, 40000, 0, 292), +(2394, 2093001, 1050003, 40000, 0, 296), +(2395, 2093001, 1041043, 42000, 0, 300), +(2396, 2093001, 1041042, 42000, 0, 304), +(2397, 2093001, 1041041, 42000, 0, 308), +(2398, 2093001, 1002064, 40000, 0, 312), +(2399, 2093001, 1092006, 60000, 0, 316), +(2400, 2093001, 1060019, 38000, 0, 320), +(2401, 2093001, 1060018, 38000, 0, 324), +(2402, 2093001, 1060017, 38000, 0, 328), +(2403, 2093001, 1060016, 38000, 0, 332), +(2404, 2093001, 1051013, 60000, 0, 336), +(2405, 2093001, 1051012, 60000, 0, 340), +(2406, 2093001, 1051011, 60000, 0, 344), +(2407, 2093001, 1051010, 60000, 0, 348), +(2408, 2093001, 1040026, 40000, 0, 352), +(2409, 2093001, 1040021, 40000, 0, 356), +(2410, 2093001, 1002023, 120000, 0, 360), +(2411, 2093002, 2330000, 600, 0, 104), +(2412, 2093002, 2070000, 500, 0, 108), +(2415, 2093002, 2061000, 1, 0, 120), +(2416, 2093002, 2060000, 1, 0, 124), +(2417, 2093002, 2030000, 400, 0, 128), +(2418, 2093002, 2050003, 500, 0, 132), +(2419, 2093002, 2050002, 300, 0, 136), +(2420, 2093002, 2050001, 200, 0, 140), +(2421, 2093002, 2050000, 200, 0, 144), +(2422, 2093002, 2020028, 3000, 0, 148), +(2423, 2093002, 2010004, 310, 0, 152), +(2424, 2093002, 2010003, 100, 0, 156), +(2425, 2093002, 2010001, 106, 0, 160), +(2426, 2093002, 2010002, 50, 0, 164), +(2427, 2093002, 2010000, 30, 0, 168), +(2428, 2093002, 2001002, 4000, 0, 172), +(2429, 2093002, 2001001, 2300, 0, 176), +(2430, 2093002, 2001000, 3200, 0, 180), +(2431, 2093002, 2022000, 1650, 0, 184), +(2432, 2093002, 2022003, 1100, 0, 188), +(2433, 2093002, 2002005, 500, 0, 192), +(2434, 2093002, 2002004, 500, 0, 196), +(2435, 2093002, 2002002, 500, 0, 200), +(2436, 2093002, 2002001, 400, 0, 204), +(2437, 2093002, 2002000, 500, 0, 208), +(2438, 2093002, 2000006, 620, 0, 212), +(2439, 2093002, 2000003, 200, 0, 216), +(2440, 2093002, 2000002, 320, 0, 220), +(2441, 2093002, 2000001, 160, 0, 224), +(2442, 2093002, 2000000, 50, 0, 228), +(2443, 2100002, 1492004, 75000, 0, 104), +(2444, 2100002, 1482004, 75000, 0, 108), +(2445, 2100002, 1472001, 20000, 0, 112), +(2446, 2100002, 1462000, 30000, 0, 116), +(2447, 2100002, 1452005, 150000, 0, 120), +(2448, 2100002, 1442001, 60000, 0, 124), +(2449, 2100002, 1432002, 60000, 0, 128), +(2450, 2100002, 1422001, 45000, 0, 132), +(2451, 2100002, 1412006, 45000, 0, 136), +(2452, 2100002, 1402002, 150000, 0, 140), +(2453, 2100002, 1382002, 20000, 0, 144), +(2454, 2100002, 1372003, 38000, 0, 148), +(2455, 2100002, 1332012, 40000, 0, 152), +(2456, 2100002, 1332009, 42000, 0, 156), +(2457, 2100002, 1322014, 40000, 0, 160), +(2458, 2100002, 1312005, 40000, 0, 164), +(2459, 2100002, 1302008, 40000, 0, 168), +(2460, 2100003, 1052107, 90000, 0, 104), +(2461, 2100003, 1002622, 40000, 0, 108), +(2462, 2100003, 1061046, 40000, 0, 112), +(2463, 2100003, 1061045, 40000, 0, 116), +(2464, 2100003, 1061044, 40000, 0, 120), +(2465, 2100003, 1061043, 40000, 0, 124), +(2466, 2100003, 1060046, 40000, 0, 128), +(2467, 2100003, 1060045, 40000, 0, 132), +(2468, 2100003, 1060044, 40000, 0, 136), +(2469, 2100003, 1060043, 40000, 0, 140), +(2470, 2100003, 1041050, 45000, 0, 144), +(2471, 2100003, 1041049, 45000, 0, 148), +(2472, 2100003, 1041048, 45000, 0, 152), +(2473, 2100003, 1041047, 45000, 0, 156), +(2474, 2100003, 1040060, 45000, 0, 160), +(2475, 2100003, 1040059, 45000, 0, 164), +(2476, 2100003, 1040058, 45000, 0, 168), +(2477, 2100003, 1040057, 45000, 0, 172), +(2478, 2100003, 1002175, 30000, 0, 176), +(2479, 2100003, 1002174, 30000, 0, 180), +(2480, 2100003, 1002173, 30000, 0, 184), +(2481, 2100003, 1002172, 30000, 0, 188), +(2482, 2100003, 1002171, 30000, 0, 192), +(2483, 2100003, 1061051, 44000, 0, 196), +(2484, 2100003, 1061050, 44000, 0, 200), +(2485, 2100003, 1061052, 44000, 0, 204), +(2486, 2100003, 1060057, 44000, 0, 208), +(2487, 2100003, 1060056, 44000, 0, 212), +(2488, 2100003, 1060058, 44000, 0, 216), +(2489, 2100003, 1060059, 44000, 0, 220), +(2490, 2100003, 1041055, 50000, 0, 224), +(2491, 2100003, 1041054, 50000, 0, 228), +(2492, 2100003, 1041056, 50000, 0, 232), +(2493, 2100003, 1040068, 50000, 0, 236), +(2494, 2100003, 1040067, 50000, 0, 240), +(2495, 2100003, 1040070, 50000, 0, 244), +(2496, 2100003, 1040069, 50000, 0, 248), +(2497, 2100003, 1002165, 30000, 0, 252), +(2498, 2100003, 1002164, 30000, 0, 256), +(2499, 2100003, 1002163, 30000, 0, 260), +(2500, 2100003, 1002162, 30000, 0, 264), +(2501, 2100003, 1002161, 30000, 0, 268), +(2502, 2100003, 1061036, 40000, 0, 272), +(2503, 2100003, 1061035, 40000, 0, 276), +(2504, 2100003, 1061034, 40000, 0, 280), +(2505, 2100003, 1050028, 40000, 0, 284), +(2506, 2100003, 1050027, 40000, 0, 288), +(2507, 2100003, 1050026, 40000, 0, 292), +(2508, 2100003, 1050003, 40000, 0, 296), +(2509, 2100003, 1041043, 42000, 0, 300), +(2510, 2100003, 1041042, 42000, 0, 304), +(2511, 2100003, 1041041, 42000, 0, 308), +(2512, 2100003, 1002064, 40000, 0, 312), +(2513, 2100003, 1092006, 60000, 0, 316), +(2514, 2100003, 1060019, 38000, 0, 320), +(2515, 2100003, 1060018, 38000, 0, 324), +(2516, 2100003, 1060017, 38000, 0, 328), +(2517, 2100003, 1060016, 38000, 0, 332), +(2518, 2100003, 1051013, 60000, 0, 336), +(2519, 2100003, 1051012, 60000, 0, 340), +(2520, 2100003, 1051011, 60000, 0, 344), +(2521, 2100003, 1051010, 60000, 0, 348), +(2522, 2100003, 1040026, 40000, 0, 352), +(2523, 2100003, 1040021, 40000, 0, 356), +(2524, 2100003, 1002023, 120000, 0, 360), +(2525, 2100003, 1002004, 160000, 0, 364), +(2526, 2100004, 2330000, 600, 0, 104), +(2527, 2100004, 2070000, 500, 0, 108), +(2528, 2100004, 2120000, 30, 0, 112), +(2531, 2100004, 2061000, 1, 0, 124), +(2532, 2100004, 2060000, 1, 0, 128), +(2533, 2100004, 2030000, 400, 0, 132), +(2534, 2100004, 2050003, 500, 0, 136), +(2535, 2100004, 2050002, 300, 0, 140), +(2536, 2100004, 2050001, 200, 0, 144), +(2537, 2100004, 2050000, 200, 0, 148), +(2538, 2100004, 2020028, 3000, 0, 152), +(2539, 2100004, 2010004, 310, 0, 156), +(2540, 2100004, 2010003, 100, 0, 160), +(2541, 2100004, 2010001, 106, 0, 164), +(2542, 2100004, 2010002, 50, 0, 168), +(2543, 2100004, 2010000, 30, 0, 172), +(2544, 2100004, 2001002, 4000, 0, 176), +(2545, 2100004, 2001001, 2300, 0, 180), +(2546, 2100004, 2001000, 3200, 0, 184), +(2547, 2100004, 2022000, 1650, 0, 188), +(2548, 2100004, 2022003, 1100, 0, 192), +(2549, 2100004, 2002005, 500, 0, 196), +(2550, 2100004, 2002004, 500, 0, 200), +(2551, 2100004, 2002002, 500, 0, 204), +(2552, 2100004, 2002001, 400, 0, 208), +(2553, 2100004, 2002000, 500, 0, 212), +(2554, 2100004, 2000006, 620, 0, 216), +(2555, 2100004, 2000003, 200, 0, 220), +(2556, 2100004, 2000002, 320, 0, 224), +(2557, 2100004, 2000001, 160, 0, 228), +(2558, 2100004, 2000000, 50, 0, 232), +(2559, 2110001, 2330000, 600, 0, 104), +(2560, 2110001, 2070000, 500, 0, 108), +(2561, 2110001, 2120000, 30, 0, 112), +(2564, 2110001, 2061000, 1, 0, 124), +(2565, 2110001, 2060000, 1, 0, 128), +(2566, 2110001, 2030000, 400, 0, 132), +(2567, 2110001, 2050003, 500, 0, 136), +(2568, 2110001, 2050002, 300, 0, 140), +(2569, 2110001, 2050001, 200, 0, 144), +(2570, 2110001, 2050000, 200, 0, 148), +(2571, 2110001, 2020028, 3000, 0, 152), +(2572, 2110001, 2010004, 310, 0, 156), +(2573, 2110001, 2010003, 100, 0, 160), +(2574, 2110001, 2010001, 106, 0, 164), +(2575, 2110001, 2010002, 50, 0, 168), +(2576, 2110001, 2010000, 30, 0, 172), +(2577, 2110001, 2001002, 4000, 0, 176), +(2578, 2110001, 2001001, 2300, 0, 180), +(2579, 2110001, 2001000, 3200, 0, 184), +(2580, 2110001, 2022000, 1650, 0, 188), +(2581, 2110001, 2022003, 1100, 0, 192), +(2582, 2110001, 2002005, 500, 0, 196), +(2583, 2110001, 2002004, 500, 0, 200), +(2584, 2110001, 2002002, 500, 0, 204), +(2585, 2110001, 2002001, 400, 0, 208), +(2586, 2110001, 2002000, 500, 0, 212), +(2587, 2110001, 2000006, 620, 0, 216), +(2588, 2110001, 2000003, 200, 0, 220), +(2589, 2110001, 2000002, 320, 0, 224), +(2590, 2110001, 2000001, 160, 0, 228), +(2591, 2110001, 2000000, 50, 0, 232), +(2592, 2130000, 2330000, 600, 0, 104), +(2593, 2130000, 2070000, 500, 0, 108), +(2596, 2130000, 2061000, 1, 0, 120), +(2597, 2130000, 2060000, 1, 0, 124), +(2598, 2130000, 2030000, 400, 0, 128), +(2599, 2130000, 2050002, 300, 0, 132), +(2600, 2130000, 2050001, 200, 0, 136), +(2601, 2130000, 2050000, 200, 0, 140), +(2602, 2130000, 2020015, 10200, 0, 144), +(2603, 2130000, 2020014, 8100, 0, 148), +(2604, 2130000, 2020013, 5600, 0, 152), +(2605, 2130000, 2020012, 4500, 0, 156), +(2606, 2130000, 2001002, 4000, 0, 160), +(2607, 2130000, 2001001, 2300, 0, 164), +(2608, 2130000, 2001000, 3200, 0, 168), +(2609, 2130000, 2022000, 1650, 0, 172), +(2610, 2130000, 2022003, 1100, 0, 176), +(2611, 2130000, 2010004, 310, 0, 180), +(2612, 2130000, 2010003, 100, 0, 184), +(2613, 2130000, 2010001, 106, 0, 188), +(2614, 2130000, 2010002, 50, 0, 192), +(2615, 2130000, 2010000, 30, 0, 196), +(2616, 2130000, 2002005, 500, 0, 200), +(2617, 2130000, 2002004, 500, 0, 204), +(2618, 2130000, 2002002, 500, 0, 208), +(2619, 2130000, 2002001, 400, 0, 212), +(2620, 2130000, 2002000, 500, 0, 216), +(2621, 2130000, 2000006, 620, 0, 220), +(2622, 2130000, 2000003, 200, 0, 224), +(2623, 2130000, 2000002, 320, 0, 228), +(2624, 2130000, 2000001, 160, 0, 232), +(2625, 2130000, 2000000, 50, 0, 236), +(2626, 9110003, 2022022, 1300, 0, 104), +(2627, 9110003, 2022021, 550, 0, 108), +(2628, 9110004, 2022023, 1350, 0, 104), +(2629, 9110004, 2022014, 650, 0, 108), +(2630, 9110005, 2022025, 4200, 0, 104), +(2631, 9110005, 2022024, 2000, 0, 108), +(2632, 9110006, 2022027, 3800, 0, 104), +(2633, 9110006, 2022026, 1800, 0, 108), +(2634, 9110007, 2022020, 550, 0, 104), +(2635, 9110007, 2022019, 850, 0, 108), +(2636, 9110007, 2022018, 1600, 0, 112), +(2637, 9110007, 2022017, 1100, 0, 116), +(2638, 9120000, 2070000, 500, 0, 104), +(2639, 9120000, 1472008, 250000, 0, 108), +(2640, 9120000, 1312013, 100000, 0, 112), +(2641, 9120000, 1322012, 15000, 0, 116), +(2642, 9120000, 1402009, 30000, 0, 120), +(2643, 9120000, 1432008, 150000, 0, 124), +(2644, 9120000, 1402010, 150000, 0, 128), +(2645, 9120000, 1462006, 500000, 0, 132), +(2646, 9120000, 1302021, 1250000, 0, 136), +(2647, 9120000, 1302022, 80000, 0, 140), +(2648, 9120000, 1332024, 2000000, 0, 144), +(2649, 9120000, 1382011, 2000000, 0, 148), +(2650, 9120002, 2070000, 500, 0, 104), +(2651, 9120002, 2020014, 8100, 0, 108), +(2652, 9120002, 2022002, 1000, 0, 112), +(2653, 9120002, 2001002, 4000, 0, 116), +(2654, 9120002, 2000006, 620, 0, 120), +(2655, 9120002, 2000003, 200, 0, 124), +(2656, 9120002, 2020012, 4500, 0, 128), +(2657, 9120002, 2001001, 2300, 0, 132), +(2658, 9120002, 2000002, 320, 0, 136), +(2659, 9120002, 2000001, 160, 0, 140), +(2660, 9120002, 2060003, 40, 0, 144), +(2661, 9120004, 2070000, 500, 0, 104), +(2662, 9120004, 2030010, 500, 0, 108), +(2663, 9120004, 2030009, 500, 0, 112), +(2664, 9120004, 2030008, 400, 0, 116), +(2665, 9120004, 1050100, 30000, 0, 120), +(2666, 9120019, 2070000, 500, 0, 104); +INSERT INTO `shopitems` (`shopitemid`, `shopid`, `itemid`, `price`, `pitch`, `position`) VALUES +(2667, 9120019, 2030010, 500, 0, 108), +(2668, 9120019, 2030009, 500, 0, 112), +(2669, 9120019, 2030008, 400, 0, 116), +(2670, 9120019, 1051098, 30000, 0, 120), +(2671, 9201020, 1051153, 100000, 0, 104), +(2672, 9201020, 1051152, 100000, 0, 108), +(2673, 9201020, 1051151, 100000, 0, 112), +(2674, 9201020, 1051150, 100000, 0, 116), +(2675, 9201020, 1050134, 100000, 0, 120), +(2676, 9201020, 1050133, 100000, 0, 124), +(2677, 9201020, 1050132, 100000, 0, 128), +(2678, 9201020, 1050131, 100000, 0, 132), +(2679, 9201058, 1061046, 42500, 0, 104), +(2680, 9201058, 1061045, 42500, 0, 108), +(2681, 9201058, 1061044, 42500, 0, 112), +(2682, 9201058, 1061043, 42500, 0, 116), +(2683, 9201058, 1060046, 42500, 0, 120), +(2684, 9201058, 1060045, 42500, 0, 124), +(2685, 9201058, 1060044, 42500, 0, 128), +(2686, 9201058, 1060043, 42500, 0, 132), +(2687, 9201058, 1041050, 47500, 0, 136), +(2688, 9201058, 1041049, 47500, 0, 140), +(2689, 9201058, 1041048, 47500, 0, 144), +(2690, 9201058, 1041047, 47500, 0, 148), +(2691, 9201058, 1040060, 47500, 0, 152), +(2692, 9201058, 1040059, 47500, 0, 156), +(2693, 9201058, 1040058, 47500, 0, 160), +(2694, 9201058, 1040057, 47500, 0, 164), +(2695, 9201058, 1002175, 32500, 0, 168), +(2696, 9201058, 1002174, 32500, 0, 172), +(2697, 9201058, 1002173, 32500, 0, 176), +(2698, 9201058, 1002172, 32500, 0, 180), +(2699, 9201058, 1002171, 32500, 0, 184), +(2700, 9201058, 1061051, 46500, 0, 188), +(2701, 9201058, 1061050, 46500, 0, 192), +(2702, 9201058, 1061052, 46500, 0, 196), +(2703, 9201058, 1060057, 46500, 0, 200), +(2704, 9201058, 1060056, 46500, 0, 204), +(2705, 9201058, 1060058, 46500, 0, 208), +(2706, 9201058, 1060059, 46500, 0, 212), +(2707, 9201058, 1041055, 52500, 0, 216), +(2708, 9201058, 1041054, 52500, 0, 220), +(2709, 9201058, 1041056, 52500, 0, 224), +(2710, 9201058, 1040068, 52500, 0, 228), +(2711, 9201058, 1040067, 52500, 0, 232), +(2712, 9201058, 1040070, 52500, 0, 236), +(2713, 9201058, 1040069, 52500, 0, 240), +(2714, 9201058, 1002165, 32500, 0, 244), +(2715, 9201058, 1002164, 32500, 0, 248), +(2716, 9201058, 1002163, 32500, 0, 252), +(2717, 9201058, 1002162, 32500, 0, 256), +(2718, 9201058, 1002161, 32500, 0, 260), +(2719, 9201058, 1061036, 42500, 0, 264), +(2720, 9201058, 1061035, 42500, 0, 268), +(2721, 9201058, 1061034, 42500, 0, 272), +(2722, 9201058, 1050028, 42500, 0, 276), +(2723, 9201058, 1050027, 42500, 0, 280), +(2724, 9201058, 1050026, 42500, 0, 284), +(2725, 9201058, 1050003, 42500, 0, 288), +(2726, 9201058, 1041043, 44500, 0, 292), +(2727, 9201058, 1041042, 44500, 0, 296), +(2728, 9201058, 1041041, 44500, 0, 300), +(2729, 9201058, 1002064, 42500, 0, 304), +(2730, 9201058, 1092006, 62500, 0, 308), +(2731, 9201058, 1060019, 40500, 0, 312), +(2732, 9201058, 1060018, 40500, 0, 316), +(2733, 9201058, 1060017, 40500, 0, 320), +(2734, 9201058, 1060016, 40500, 0, 324), +(2735, 9201058, 1051013, 62500, 0, 328), +(2736, 9201058, 1051012, 62500, 0, 332), +(2737, 9201058, 1051011, 62500, 0, 336), +(2738, 9201058, 1051010, 62500, 0, 340), +(2739, 9201058, 1040026, 42500, 0, 344), +(2740, 9201058, 1040021, 42500, 0, 348), +(2741, 9201058, 1002023, 122500, 0, 352), +(2742, 9201059, 1472001, 22500, 0, 104), +(2743, 9201059, 1462000, 32500, 0, 108), +(2744, 9201059, 1452005, 152500, 0, 112), +(2745, 9201059, 1442001, 62500, 0, 116), +(2746, 9201059, 1432002, 62500, 0, 120), +(2747, 9201059, 1422001, 47500, 0, 124), +(2748, 9201059, 1412006, 47500, 0, 128), +(2749, 9201059, 1402002, 152500, 0, 132), +(2750, 9201059, 1382002, 22500, 0, 136), +(2751, 9201059, 1372003, 40500, 0, 140), +(2752, 9201059, 1332012, 42500, 0, 144), +(2753, 9201059, 1332009, 44500, 0, 148), +(2754, 9201059, 1322014, 42500, 0, 152), +(2755, 9201059, 1312005, 42500, 0, 156), +(2756, 9201059, 1302068, 352500, 0, 160), +(2757, 9201059, 1302008, 42500, 0, 164), +(2758, 9201060, 2010003, 100, 0, 104), +(2759, 9201060, 2061000, 1, 0, 108), +(2760, 9201060, 2060000, 1, 0, 112), +(2761, 9201060, 2030000, 400, 0, 116), +(2762, 9201060, 2022195, 15000, 0, 120), +(2763, 9201060, 2020015, 10200, 0, 124), +(2764, 9201060, 2020014, 8100, 0, 128), +(2765, 9201060, 2020013, 5600, 0, 132), +(2766, 9201060, 2020012, 4500, 0, 136), +(2767, 9201060, 2022190, 3000, 0, 140), +(2768, 9201060, 2001002, 4000, 0, 144), +(2769, 9201060, 2001001, 2300, 0, 148), +(2770, 9201060, 2001000, 3200, 0, 152), +(2771, 9201060, 2022000, 1650, 0, 156), +(2772, 9201060, 2022003, 1100, 0, 160), +(2773, 9201060, 2022192, 600, 0, 164), +(2774, 9201060, 2022191, 1000, 0, 168), +(2775, 9201060, 2022189, 1000, 0, 172), +(2776, 9201060, 2010004, 310, 0, 176), +(2777, 9201060, 2010001, 106, 0, 180), +(2778, 9201060, 2010002, 50, 0, 184), +(2779, 9201060, 2010000, 30, 0, 188), +(2780, 9201060, 2002025, 1500, 0, 192), +(2781, 9201060, 2002024, 1500, 0, 196), +(2782, 9201060, 2002023, 3800, 0, 200), +(2783, 9201060, 2002022, 2100, 0, 204), +(2784, 9201060, 2002021, 2800, 0, 208), +(2785, 9201060, 2002020, 2800, 0, 212), +(2786, 9201060, 2002019, 5000, 0, 216), +(2787, 9201060, 2002018, 5000, 0, 220), +(2788, 9201060, 2002017, 5000, 0, 224), +(2789, 9201060, 2002016, 5000, 0, 228), +(2790, 9201060, 2000006, 620, 0, 232), +(2791, 9201060, 2000003, 200, 0, 236), +(2792, 9201060, 2000002, 320, 0, 240), +(2793, 9201060, 2000001, 160, 0, 244), +(2794, 9201060, 2000000, 50, 0, 248), +(2795, 9270019, 1472007, 60000, 0, 104), +(2796, 9270019, 1472004, 30000, 0, 108), +(2797, 9270019, 1472001, 20000, 0, 112), +(2798, 9270019, 1462005, 250000, 0, 116), +(2799, 9270019, 1462004, 200000, 0, 120), +(2800, 9270019, 1462000, 30000, 0, 124), +(2801, 9270019, 1452007, 375000, 0, 128), +(2802, 9270019, 1452006, 250000, 0, 132), +(2803, 9270019, 1452005, 150000, 0, 136), +(2804, 9270019, 1442009, 300000, 0, 140), +(2805, 9270019, 1442003, 175000, 0, 144), +(2806, 9270019, 1442001, 60000, 0, 148), +(2807, 9270019, 1432005, 225000, 0, 152), +(2808, 9270019, 1432003, 175000, 0, 156), +(2809, 9270019, 1432002, 60000, 0, 160), +(2810, 9270019, 1422007, 250000, 0, 164), +(2811, 9270019, 1422008, 200000, 0, 168), +(2812, 9270019, 1422001, 45000, 0, 172), +(2813, 9270019, 1412005, 250000, 0, 176), +(2814, 9270019, 1412004, 200000, 0, 180), +(2815, 9270019, 1412006, 45000, 0, 184), +(2816, 9270019, 1402007, 450000, 0, 188), +(2817, 9270019, 1402006, 350000, 0, 192), +(2818, 9270019, 1402002, 150000, 0, 196), +(2819, 9270019, 1382002, 20000, 0, 200), +(2820, 9270019, 1372000, 400000, 0, 204), +(2821, 9270019, 1372001, 175000, 0, 208), +(2822, 9270019, 1372003, 38000, 0, 212), +(2823, 9270019, 1332011, 425000, 0, 216), +(2824, 9270019, 1332014, 375000, 0, 220), +(2825, 9270019, 1332001, 200000, 0, 224), +(2826, 9270019, 1332012, 40000, 0, 228), +(2827, 9270019, 1332009, 42000, 0, 232), +(2828, 9270019, 1322016, 175000, 0, 236), +(2829, 9270019, 1322015, 100000, 0, 240), +(2830, 9270019, 1322014, 40000, 0, 244), +(2831, 9270019, 1312007, 175000, 0, 248), +(2832, 9270019, 1312006, 100000, 0, 252), +(2833, 9270019, 1312005, 40000, 0, 256), +(2834, 9270019, 1302009, 225000, 0, 260), +(2835, 9270019, 1302004, 100000, 0, 264), +(2836, 9270019, 1302008, 40000, 0, 268), +(2837, 9270020, 1061069, 160000, 0, 104), +(2838, 9270020, 1061070, 160000, 0, 108), +(2839, 9270020, 1060072, 160000, 0, 112), +(2840, 9270020, 1060071, 160000, 0, 116), +(2841, 9270020, 1060052, 108000, 0, 120), +(2842, 9270020, 1060050, 108000, 0, 124), +(2843, 9270020, 1060051, 108000, 0, 128), +(2844, 9270020, 1051009, 111000, 0, 132), +(2845, 9270020, 1051008, 111000, 0, 136), +(2846, 9270020, 1051007, 111000, 0, 140), +(2847, 9270020, 1041074, 180000, 0, 144), +(2848, 9270020, 1041075, 180000, 0, 148), +(2849, 9270020, 1040083, 180000, 0, 152), +(2850, 9270020, 1040082, 180000, 0, 156), +(2851, 9270020, 1040061, 114000, 0, 160), +(2852, 9270020, 1040062, 114000, 0, 164), +(2853, 9270020, 1040063, 114000, 0, 168), +(2854, 9270020, 1002180, 100000, 0, 172), +(2855, 9270020, 1002179, 100000, 0, 176), +(2856, 9270020, 1002178, 100000, 0, 180), +(2857, 9270020, 1002177, 100000, 0, 184), +(2858, 9270020, 1002176, 100000, 0, 188), +(2859, 9270020, 1061080, 160000, 0, 192), +(2860, 9270020, 1061081, 160000, 0, 196), +(2861, 9270020, 1061062, 108000, 0, 200), +(2862, 9270020, 1061060, 108000, 0, 204), +(2863, 9270020, 1061064, 108000, 0, 208), +(2864, 9270020, 1061061, 108000, 0, 212), +(2865, 9270020, 1060069, 160000, 0, 216), +(2866, 9270020, 1060070, 160000, 0, 220), +(2867, 9270020, 1060063, 108000, 0, 224), +(2868, 9270020, 1060061, 108000, 0, 228), +(2869, 9270020, 1060065, 108000, 0, 232), +(2870, 9270020, 1060062, 108000, 0, 236), +(2871, 9270020, 1041081, 180000, 0, 240), +(2872, 9270020, 1041082, 180000, 0, 244), +(2873, 9270020, 1041067, 114000, 0, 248), +(2874, 9270020, 1041065, 114000, 0, 252), +(2875, 9270020, 1041069, 114000, 0, 256), +(2876, 9270020, 1041066, 114000, 0, 260), +(2877, 9270020, 1040079, 180000, 0, 264), +(2878, 9270020, 1040081, 180000, 0, 268), +(2879, 9270020, 1040076, 114000, 0, 272), +(2880, 9270020, 1040074, 114000, 0, 276), +(2881, 9270020, 1040073, 114000, 0, 280), +(2882, 9270020, 1040072, 114000, 0, 284), +(2883, 9270020, 1002137, 100000, 0, 288), +(2884, 9270020, 1002135, 100000, 0, 292), +(2885, 9270020, 1002139, 100000, 0, 296), +(2886, 9270020, 1002138, 100000, 0, 300), +(2887, 9270020, 1061047, 120000, 0, 304), +(2888, 9270020, 1061048, 120000, 0, 308), +(2889, 9270020, 1051027, 450000, 0, 312), +(2890, 9270020, 1051024, 450000, 0, 316), +(2891, 9270020, 1051025, 450000, 0, 320), +(2892, 9270020, 1051023, 450000, 0, 324), +(2893, 9270020, 1050037, 450000, 0, 328), +(2894, 9270020, 1050036, 450000, 0, 332), +(2895, 9270020, 1050038, 450000, 0, 336), +(2896, 9270020, 1050035, 450000, 0, 340), +(2897, 9270020, 1050002, 300000, 0, 344), +(2898, 9270020, 1050031, 300000, 0, 348), +(2899, 9270020, 1041051, 120000, 0, 352), +(2900, 9270020, 1041052, 120000, 0, 356), +(2901, 9270020, 1002144, 96000, 0, 360), +(2902, 9270020, 1002143, 96000, 0, 364), +(2903, 9270020, 1002142, 96000, 0, 368), +(2904, 9270020, 1002141, 96000, 0, 372), +(2905, 9270020, 1092002, 200000, 0, 376), +(2906, 9270020, 1092001, 100000, 0, 380), +(2907, 9270020, 1061084, 180000, 0, 384), +(2908, 9270020, 1061083, 180000, 0, 388), +(2909, 9270020, 1060074, 180000, 0, 392), +(2910, 9270020, 1060075, 180000, 0, 396), +(2911, 9270020, 1051014, 112500, 0, 400), +(2912, 9270020, 1051001, 112500, 0, 404), +(2913, 9270020, 1050021, 112500, 0, 408), +(2914, 9270020, 1050000, 112500, 0, 412), +(2915, 9270020, 1041085, 200000, 0, 416), +(2916, 9270020, 1041084, 200000, 0, 420), +(2917, 9270020, 1040085, 200000, 0, 424), +(2918, 9270020, 1040000, 200000, 0, 428), +(2919, 9270020, 1002004, 160000, 0, 432), +(2920, 9270021, 2070000, 500, 0, 104), +(2921, 9270021, 2022015, 12000, 0, 108), +(2922, 9270021, 2061000, 1, 0, 112), +(2923, 9270021, 2060000, 1, 0, 116), +(2924, 9270021, 2030000, 400, 0, 120), +(2925, 9270021, 2050003, 500, 0, 124), +(2926, 9270021, 2050002, 300, 0, 128), +(2927, 9270021, 2050001, 200, 0, 132), +(2928, 9270021, 2050000, 200, 0, 136), +(2929, 9270021, 2020028, 3000, 0, 140), +(2930, 9270021, 2010004, 310, 0, 144), +(2931, 9270021, 2010003, 100, 0, 148), +(2932, 9270021, 2010001, 106, 0, 152), +(2933, 9270021, 2010002, 50, 0, 156), +(2934, 9270021, 2010000, 30, 0, 160), +(2935, 9270021, 2001002, 4000, 0, 164), +(2936, 9270021, 2001001, 2300, 0, 168), +(2937, 9270021, 2001000, 3200, 0, 172), +(2938, 9270021, 2022000, 1650, 0, 176), +(2939, 9270021, 2022003, 1100, 0, 180), +(2940, 9270021, 2002005, 500, 0, 184), +(2941, 9270021, 2002004, 500, 0, 188), +(2942, 9270021, 2002002, 500, 0, 192), +(2943, 9270021, 2002001, 400, 0, 196), +(2944, 9270021, 2002000, 500, 0, 200), +(2945, 9270021, 2000006, 620, 0, 204), +(2946, 9270021, 2000003, 200, 0, 208), +(2947, 9270021, 2000002, 320, 0, 212), +(2948, 9270021, 2000001, 160, 0, 216), +(2949, 9270021, 2000000, 50, 0, 220), +(2950, 9270022, 2070000, 500, 0, 104), +(2951, 9270022, 2061000, 1, 0, 108), +(2952, 9270022, 2060000, 1, 0, 112), +(2953, 9270022, 2030000, 400, 0, 116), +(2954, 9270022, 2050003, 500, 0, 120), +(2955, 9270022, 2050002, 300, 0, 124), +(2956, 9270022, 2050001, 200, 0, 128), +(2957, 9270022, 2050000, 200, 0, 132), +(2958, 9270022, 2020028, 3000, 0, 136), +(2959, 9270022, 2010004, 310, 0, 140), +(2960, 9270022, 2010003, 100, 0, 144), +(2961, 9270022, 2010001, 106, 0, 148), +(2962, 9270022, 2010002, 50, 0, 152), +(2963, 9270022, 2010000, 30, 0, 156), +(2964, 9270022, 2001002, 4000, 0, 160), +(2965, 9270022, 2001001, 2300, 0, 164), +(2966, 9270022, 2001000, 3200, 0, 168), +(2967, 9270022, 2022000, 1650, 0, 172), +(2968, 9270022, 2022003, 1100, 0, 176), +(2969, 9270022, 2002005, 500, 0, 180), +(2970, 9270022, 2002004, 500, 0, 184), +(2971, 9270022, 2002002, 500, 0, 188), +(2972, 9270022, 2002001, 400, 0, 192), +(2973, 9270022, 2002000, 500, 0, 196), +(2974, 9270022, 2000006, 620, 0, 200), +(2975, 9270022, 2000003, 200, 0, 204), +(2976, 9270022, 2000002, 320, 0, 208), +(2977, 9270022, 2000001, 160, 0, 212), +(2978, 9270022, 2000000, 50, 0, 216), +(2979, 9270027, 2022215, 6800, 0, 104), +(2980, 9270027, 2022214, 3200, 0, 108), +(2981, 9270027, 2022211, 6400, 0, 112), +(2982, 9270027, 2022210, 3200, 0, 116), +(2983, 9270027, 2022209, 1600, 0, 120), +(2984, 9270027, 2022208, 1000, 0, 124), +(2985, 9270027, 2022207, 2600, 0, 128), +(2986, 9270027, 2022206, 2200, 0, 132), +(2987, 9270027, 2022205, 1800, 0, 136), +(2988, 9270027, 2022204, 1200, 0, 140), +(2989, 9270027, 2022203, 800, 0, 144), +(2990, 9999992, 1812006, 1, 0, 112), +(2991, 9999992, 1832000, 1, 0, 114), +(2992, 9999992, 1812005, 1, 0, 116), +(2993, 9999992, 1822000, 1, 0, 118), +(2994, 9999992, 1812004, 1, 0, 120), +(2995, 9999992, 1812003, 1, 0, 124), +(2996, 9999992, 1812002, 1, 0, 128), +(2997, 9999992, 1812001, 1, 0, 132), +(2998, 9999992, 1812000, 1, 0, 136), +(2999, 9999992, 1802100, 1, 0, 140), +(3000, 9999992, 1802055, 1, 0, 144), +(3001, 9999992, 1802053, 1, 0, 148), +(3002, 9999992, 1802052, 1, 0, 152), +(3003, 9999992, 1802051, 1, 0, 156), +(3004, 9999992, 1802050, 1, 0, 160), +(3005, 9999992, 1802049, 1, 0, 164), +(3006, 9999992, 1802048, 1, 0, 168), +(3007, 9999992, 1802047, 1, 0, 172), +(3008, 9999992, 1802045, 1, 0, 176), +(3009, 9999992, 1802044, 1, 0, 180), +(3010, 9999992, 1802042, 1, 0, 184), +(3011, 9999992, 1802038, 1, 0, 188), +(3012, 9999992, 1802037, 1, 0, 192), +(3013, 9999992, 1802036, 1, 0, 196), +(3014, 9999992, 1802035, 1, 0, 200), +(3015, 9999992, 1802034, 1, 0, 204), +(3016, 9999992, 1802033, 1, 0, 208), +(3017, 9999992, 1802032, 1, 0, 212), +(3018, 9999992, 1802031, 1, 0, 216), +(3019, 9999992, 1802030, 1, 0, 220), +(3020, 9999992, 1802029, 1, 0, 224), +(3021, 9999992, 1802028, 1, 0, 228), +(3022, 9999992, 1802027, 1, 0, 232), +(3023, 9999992, 1802026, 1, 0, 236), +(3024, 9999992, 1802025, 1, 0, 240), +(3025, 9999992, 1802024, 1, 0, 244), +(3026, 9999992, 1802023, 1, 0, 248), +(3027, 9999992, 1802022, 1, 0, 252), +(3028, 9999992, 1802021, 1, 0, 256), +(3029, 9999992, 1802020, 1, 0, 260), +(3030, 9999992, 1802019, 1, 0, 264), +(3031, 9999992, 1802018, 1, 0, 268), +(3032, 9999992, 1802017, 1, 0, 272), +(3033, 9999992, 1802016, 1, 0, 276), +(3034, 9999992, 1802015, 1, 0, 280), +(3035, 9999992, 1802014, 1, 0, 284), +(3036, 9999992, 1802013, 1, 0, 288), +(3037, 9999992, 1802012, 1, 0, 292), +(3038, 9999992, 1802011, 1, 0, 296), +(3039, 9999992, 1802010, 1, 0, 300), +(3040, 9999992, 1802009, 1, 0, 304), +(3041, 9999992, 1802008, 1, 0, 308), +(3042, 9999992, 1802007, 1, 0, 312), +(3043, 9999992, 1802006, 1, 0, 316), +(3044, 9999992, 1802005, 1, 0, 320), +(3045, 9999992, 1802004, 1, 0, 324), +(3046, 9999992, 1802003, 1, 0, 328), +(3047, 9999992, 1802002, 1, 0, 332), +(3048, 9999992, 1802001, 1, 0, 336), +(3049, 9999992, 1802000, 1, 0, 340), +(3050, 9999992, 5000045, 1, 0, 344), +(3051, 9999992, 5000044, 1, 0, 348), +(3052, 9999992, 5000041, 1, 0, 352), +(3053, 9999992, 5000039, 1, 0, 356), +(3054, 9999992, 5000037, 1, 0, 360), +(3055, 9999992, 5000036, 1, 0, 364), +(3056, 9999992, 5000034, 1, 0, 368), +(3057, 9999992, 5000025, 1, 0, 372), +(3058, 9999992, 5000024, 1, 0, 376), +(3059, 9999992, 5000023, 1, 0, 380), +(3060, 9999992, 5000022, 1, 0, 384), +(3061, 9999992, 5000020, 1, 0, 388), +(3062, 9999992, 5000017, 1, 0, 392), +(3063, 9999992, 5000015, 1, 0, 396), +(3064, 9999992, 5000014, 1, 0, 400), +(3065, 9999992, 5000013, 1, 0, 404), +(3066, 9999992, 5000012, 1, 0, 408), +(3067, 9999992, 5000011, 1, 0, 412), +(3068, 9999992, 5000010, 1, 0, 416), +(3069, 9999992, 5000009, 1, 0, 420), +(3070, 9999992, 5000008, 1, 0, 424), +(3071, 9999992, 5000007, 1, 0, 428), +(3072, 9999992, 5000006, 1, 0, 432), +(3073, 9999992, 5000005, 1, 0, 436), +(3074, 9999992, 5000004, 1, 0, 440), +(3075, 9999992, 5000003, 1, 0, 444), +(3076, 9999992, 5000002, 1, 0, 448), +(3077, 9999992, 5000001, 1, 0, 452), +(3078, 9999992, 5000000, 1, 0, 456), +(3079, 9999993, 5077000, 1, 0, 104), +(3080, 9999993, 5076000, 1, 0, 108), +(3081, 9999993, 5075000, 1, 0, 112), +(3082, 9999993, 5075001, 1, 0, 116), +(3083, 9999993, 5075002, 1, 0, 120), +(3084, 9999993, 5072000, 1, 0, 124), +(3085, 9999993, 5390000, 1, 0, 128), +(3086, 9999993, 5390001, 1, 0, 132), +(3087, 9999993, 5390002, 1, 0, 136), +(3088, 9999993, 5071000, 1, 0, 140), +(3089, 9999994, 3010041, 1, 0, 104), +(3090, 9999994, 3010040, 1, 0, 108), +(3091, 9999994, 3010028, 1, 0, 112), +(3092, 9999994, 3010026, 1, 0, 116), +(3093, 9999994, 3010025, 1, 0, 120), +(3094, 9999994, 3010024, 1, 0, 124), +(3095, 9999994, 3010023, 1, 0, 128), +(3096, 9999994, 3010022, 1, 0, 132), +(3097, 9999994, 3010019, 1, 0, 136), +(3098, 9999994, 3010018, 1, 0, 140), +(3099, 9999994, 3010017, 1, 0, 144), +(3100, 9999994, 3010016, 1, 0, 148), +(3101, 9999994, 3010015, 1, 0, 152), +(3102, 9999994, 3010014, 1, 0, 156), +(3103, 9999994, 3010013, 1, 0, 160), +(3104, 9999994, 3010012, 1, 0, 164), +(3105, 9999994, 3010011, 1, 0, 168), +(3106, 9999994, 3010010, 1, 0, 172), +(3107, 9999994, 3010009, 1, 0, 176), +(3108, 9999994, 3010008, 1, 0, 180), +(3109, 9999994, 3010007, 1, 0, 184), +(3110, 9999994, 3010006, 1, 0, 188), +(3111, 9999994, 3010005, 1, 0, 192), +(3112, 9999994, 3010004, 1, 0, 196), +(3113, 9999994, 3010003, 1, 0, 200), +(3114, 9999994, 3010002, 1, 0, 204), +(3115, 9999994, 3010001, 1, 0, 208), +(3116, 9999994, 3010000, 1, 0, 212), +(3117, 9999995, 1112230, 1, 0, 104), +(3118, 9999995, 1112229, 1, 0, 108), +(3119, 9999995, 1112228, 1, 0, 112), +(3120, 9999995, 1112227, 1, 0, 116), +(3121, 9999995, 1112226, 1, 0, 120), +(3122, 9999995, 1112225, 1, 0, 124), +(3123, 9999995, 1112224, 1, 0, 128), +(3124, 9999995, 1112223, 1, 0, 132), +(3125, 9999995, 1112222, 1, 0, 136), +(3126, 9999995, 1112221, 1, 0, 140), +(3127, 9999995, 1112220, 1, 0, 144), +(3128, 9999995, 1112219, 1, 0, 148), +(3129, 9999995, 1112218, 1, 0, 152), +(3130, 9999995, 1112217, 1, 0, 156), +(3131, 9999995, 1112216, 1, 0, 160), +(3132, 9999995, 1112215, 1, 0, 164), +(3133, 9999995, 1112214, 1, 0, 168), +(3134, 9999995, 1112213, 1, 0, 172), +(3135, 9999995, 1112212, 1, 0, 176), +(3136, 9999995, 1112211, 1, 0, 180), +(3137, 9999995, 1112210, 1, 0, 184), +(3138, 9999995, 1112209, 1, 0, 188), +(3139, 9999995, 1112208, 1, 0, 192), +(3140, 9999995, 1112207, 1, 0, 196), +(3141, 9999995, 1112206, 1, 0, 200), +(3142, 9999995, 1112205, 1, 0, 204), +(3143, 9999995, 1112204, 1, 0, 208), +(3144, 9999995, 1112203, 1, 0, 212), +(3145, 9999995, 1112202, 1, 0, 216), +(3146, 9999995, 1112201, 1, 0, 220), +(3147, 9999995, 1112200, 1, 0, 224), +(3148, 9999995, 1112120, 1, 0, 228), +(3149, 9999995, 1112119, 1, 0, 232), +(3150, 9999995, 1112118, 1, 0, 236), +(3151, 9999995, 1112117, 1, 0, 240), +(3152, 9999995, 1112116, 1, 0, 244), +(3153, 9999995, 1112115, 1, 0, 248), +(3154, 9999995, 1112114, 1, 0, 252), +(3155, 9999995, 1112113, 1, 0, 256), +(3156, 9999995, 1112112, 1, 0, 260), +(3157, 9999995, 1112111, 1, 0, 264), +(3158, 9999995, 1112110, 1, 0, 268), +(3159, 9999995, 1112109, 1, 0, 272), +(3160, 9999995, 1112108, 1, 0, 276), +(3161, 9999995, 1112107, 1, 0, 280), +(3162, 9999995, 1112106, 1, 0, 284), +(3163, 9999995, 1112105, 1, 0, 288), +(3164, 9999995, 1112104, 1, 0, 292), +(3165, 9999995, 1112103, 1, 0, 296), +(3166, 9999995, 1112102, 1, 0, 300), +(3167, 9999995, 1112101, 1, 0, 304), +(3168, 9999995, 1112100, 1, 0, 308), +(3169, 9999996, 1012010, 1, 0, 104), +(3170, 9999996, 1011002, 1, 0, 108), +(3171, 9999996, 1012000, 1, 0, 112), +(3172, 9999996, 1012024, 1, 0, 116), +(3173, 9999996, 1012074, 1, 0, 120), +(3174, 9999996, 1012083, 1, 0, 124), +(3175, 9999996, 1012055, 1, 0, 128), +(3176, 9999996, 1011003, 1, 0, 132), +(3177, 9999996, 1012028, 1, 0, 136), +(3178, 9999996, 1012006, 1, 0, 140), +(3179, 9999996, 1012027, 1, 0, 144), +(3180, 9999996, 1012032, 1, 0, 148), +(3181, 9999996, 1012031, 1, 0, 152), +(3182, 9999996, 1022007, 1, 0, 156), +(3183, 9999996, 1022006, 1, 0, 160), +(3184, 9999996, 1022044, 1, 0, 164), +(3185, 9999996, 1022033, 1, 0, 168), +(3186, 9999996, 1022019, 1, 0, 172), +(3187, 9999996, 1022020, 1, 0, 176), +(3188, 9999996, 1022005, 1, 0, 180), +(3189, 9999996, 1022004, 1, 0, 184), +(3190, 9999996, 1022003, 1, 0, 188), +(3191, 9999996, 1022002, 1, 0, 192), +(3192, 9999996, 1022001, 1, 0, 196), +(3193, 9999996, 1022000, 1, 0, 200), +(3194, 9999996, 5160014, 1, 0, 204), +(3195, 9999996, 5160013, 1, 0, 208), +(3196, 9999996, 5160012, 1, 0, 212), +(3197, 9999996, 5160011, 1, 0, 216), +(3198, 9999996, 5160009, 1, 0, 220), +(3199, 9999996, 5160008, 1, 0, 224), +(3200, 9999996, 5160007, 1, 0, 228), +(3201, 9999996, 5160006, 1, 0, 232), +(3202, 9999996, 5160005, 1, 0, 236), +(3203, 9999996, 5160004, 1, 0, 240), +(3204, 9999996, 5160003, 1, 0, 244), +(3205, 9999996, 5160002, 1, 0, 248), +(3206, 9999996, 5160001, 1, 0, 252), +(3207, 9999996, 5160000, 1, 0, 256), +(3208, 9999997, 1070002, 1, 0, 104), +(3209, 9999997, 1071008, 1, 0, 108), +(3210, 9999997, 1052049, 1, 0, 112), +(3211, 9999997, 1072234, 1, 0, 116), +(3212, 9999997, 1072325, 1, 0, 120), +(3213, 9999997, 1072326, 1, 0, 124), +(3214, 9999997, 1072235, 1, 0, 128), +(3215, 9999997, 1072189, 1, 0, 132), +(3216, 9999997, 1072257, 1, 0, 136), +(3217, 9999997, 1072186, 1, 0, 140), +(3218, 9999997, 1072258, 1, 0, 144), +(3219, 9999997, 1072260, 1, 0, 148), +(3220, 9999997, 1072279, 1, 0, 152), +(3221, 9999997, 1072276, 1, 0, 156), +(3222, 9999997, 1072153, 1, 0, 160), +(3223, 9999997, 1062003, 1, 0, 164), +(3224, 9999997, 1062018, 1, 0, 168), +(3225, 9999997, 1062040, 1, 0, 172), +(3226, 9999997, 1062032, 1, 0, 176), +(3227, 9999997, 1082102, 1, 0, 180), +(3228, 9999997, 1102156, 1, 0, 184), +(3229, 9999997, 1102039, 1, 0, 188), +(3230, 9999997, 1042013, 1, 0, 192), +(3231, 9999997, 1042018, 1, 0, 196), +(3232, 9999997, 1042012, 1, 0, 200), +(3233, 9999997, 1042036, 1, 0, 204), +(3234, 9999997, 1042037, 1, 0, 208), +(3235, 9999997, 1042099, 1, 0, 212), +(3236, 9999997, 1042043, 1, 0, 216), +(3237, 9999997, 1032054, 1, 0, 220), +(3238, 9999997, 1032053, 1, 0, 224), +(3239, 9999997, 1032052, 1, 0, 228), +(3240, 9999997, 1032024, 1, 0, 232), +(3241, 9999997, 1002294, 1, 0, 236), +(3242, 9999997, 1002342, 1, 0, 240), +(3243, 9999997, 1002485, 1, 0, 244), +(3244, 9999997, 1002343, 1, 0, 248), +(3245, 9999997, 1002667, 1, 0, 252), +(3246, 9999997, 1002234, 1, 0, 256), +(3247, 9999997, 1002186, 1, 0, 260), +(3248, 9999997, 1702136, 1, 0, 264), +(3249, 9999997, 1702121, 1, 0, 268), +(3250, 9999997, 1702179, 1, 0, 272), +(3251, 9999997, 1702187, 1, 0, 276), +(3252, 9999997, 1702185, 1, 0, 280), +(3253, 9999997, 1702184, 1, 0, 284), +(3254, 9999997, 1702183, 1, 0, 288), +(3255, 9999997, 1702180, 1, 0, 292), +(3256, 9999997, 1702120, 1, 0, 296), +(3257, 9999997, 1702119, 1, 0, 300), +(3258, 9999997, 1702118, 1, 0, 304), +(3259, 9999998, 2040026, 1, 0, 104), +(3260, 9999998, 2040016, 1, 0, 108), +(3261, 9999998, 2040031, 1, 0, 112), +(3262, 9999998, 2040920, 1, 0, 116), +(3263, 9999998, 2040915, 1, 0, 120), +(3264, 9999998, 2041057, 1, 0, 124), +(3265, 9999998, 2041053, 1, 0, 128), +(3266, 9999998, 2041055, 1, 0, 132), +(3267, 9999998, 2041051, 1, 0, 136), +(3268, 9999998, 2040529, 1, 0, 140), +(3269, 9999998, 2040527, 1, 0, 144), +(3270, 9999998, 2040506, 1, 0, 148), +(3271, 9999998, 2040534, 1, 0, 152), +(3272, 9999998, 2040710, 1, 0, 156), +(3273, 9999998, 2040709, 1, 0, 160), +(3274, 9999998, 2040806, 1, 0, 164), +(3275, 9999998, 2040323, 1, 0, 168), +(3276, 9999998, 2040303, 1, 0, 172), +(3277, 9999998, 2040318, 1, 0, 176), +(3278, 9999998, 2044902, 1, 0, 180), +(3279, 9999998, 2044802, 1, 0, 184), +(3280, 9999998, 2043703, 1, 0, 188), +(3281, 9999998, 2044203, 1, 0, 192), +(3282, 9999998, 2044103, 1, 0, 196), +(3283, 9999998, 2044003, 1, 0, 200), +(3284, 9999998, 2043803, 1, 0, 204), +(3285, 9999998, 2044303, 1, 0, 208), +(3286, 9999998, 2044403, 1, 0, 212), +(3287, 9999998, 2043203, 1, 0, 216), +(3288, 9999998, 2043103, 1, 0, 220), +(3289, 9999998, 2043003, 1, 0, 224), +(3290, 9999998, 2040807, 1, 0, 228), +(3291, 9999998, 2043303, 1, 0, 232), +(3292, 9999998, 2044603, 1, 0, 236), +(3293, 9999998, 2044703, 1, 0, 240), +(3294, 9999998, 2044503, 1, 0, 244), +(3295, 9999998, 2041200, 1, 0, 248), +(3296, 9999998, 2049100, 1, 0, 252), +(3297, 9999998, 2049002, 1, 0, 256), +(3298, 9999998, 2340000, 1, 0, 260), +(3299, 9999999, 1082150, 1, 0, 104), +(3300, 9999999, 1082148, 1, 0, 108), +(3301, 9999999, 1082147, 1, 0, 112), +(3302, 9999999, 1082146, 1, 0, 116), +(3303, 9999999, 1082145, 1, 0, 120), +(3304, 9999999, 1102103, 1, 0, 124), +(3305, 9999999, 1102102, 1, 0, 128), +(3306, 9999999, 1102101, 1, 0, 132), +(3307, 9999999, 1102106, 1, 0, 136), +(3308, 9999999, 1102105, 1, 0, 140), +(3309, 9999999, 1102104, 1, 0, 144), +(3310, 9999999, 1092022, 1, 0, 148), +(3311, 9999999, 1032032, 1, 0, 152), +(3312, 9999999, 1032031, 1, 0, 156), +(3313, 9999999, 1032030, 1, 0, 160), +(3314, 9999999, 1032028, 1, 0, 164), +(3315, 9999999, 1032027, 1, 0, 168), +(3316, 9999999, 1032026, 1, 0, 172), +(3317, 9999999, 1032048, 1, 0, 176), +(3318, 9999999, 1102042, 1, 0, 180), +(3319, 9999999, 1102041, 1, 0, 184), +(3320, 9999999, 1122001, 1, 0, 188), +(3321, 9999999, 1122000, 1, 0, 192), +(3322, 9999999, 1072344, 1, 0, 196), +(3323, 9999999, 1072239, 1, 0, 200), +(3324, 9999999, 1051140, 1, 0, 204), +(3325, 9999999, 1050127, 1, 0, 208), +(3326, 9999999, 1050100, 1, 0, 212), +(3327, 9999999, 1051098, 1, 0, 216), +(3328, 9999999, 1050018, 1, 0, 220), +(3329, 9999999, 1051017, 1, 0, 224), +(3330, 9999999, 1082149, 1, 0, 228), +(3331, 9999999, 1082223, 1, 0, 232), +(3332, 9999999, 1002518, 1, 0, 236), +(3333, 9999999, 1002357, 1, 0, 240), +(3334, 9999999, 1492013, 1, 0, 244), +(3335, 9999999, 1482023, 1, 0, 248), +(3336, 9999999, 1412033, 1, 0, 252), +(3337, 9999999, 1422037, 1, 0, 256), +(3338, 9999999, 1302081, 1, 0, 260), +(3339, 9999999, 1402046, 1, 0, 264), +(3340, 9999999, 1372040, 1, 0, 268), +(3341, 9999999, 1382050, 1, 0, 272), +(3342, 9999999, 1432038, 1, 0, 276), +(3343, 9999999, 1442045, 1, 0, 280), +(3344, 9999999, 1462039, 1, 0, 284), +(3345, 9999999, 1092049, 1, 0, 288), +(3346, 9999999, 1332050, 1, 0, 292), +(3347, 9999999, 1332049, 1, 0, 296), +(3348, 9999999, 1452044, 1, 0, 300), +(3349, 9999999, 1472052, 1, 0, 304), +(3350, 9999999, 2330005, 1, 0, 308), +(3351, 9999999, 2070018, 1, 0, 312), +(3352, 9999999, 4006001, 1, 0, 316), +(3353, 9999999, 4006000, 1, 0, 320), +(3354, 9999999, 1902002, 1, 0, 324), +(3355, 9999999, 1902001, 1, 0, 328), +(3356, 9999999, 1902000, 1, 0, 332), +(3357, 9999999, 1912000, 1, 0, 336), +(3358, 9999999, 2022283, 1, 0, 340), +(3359, 9999999, 2022282, 1, 0, 344), +(3360, 9999999, 2022273, 1, 0, 348), +(3361, 9999999, 2022179, 1, 0, 352), +(3362, 9999999, 1322013, 1, 0, 356), +(3363, 9999999, 1072200, 1, 0, 360), +(3364, 9999999, 1062007, 1, 0, 364), +(3365, 9999999, 1042003, 1, 0, 368), +(3366, 9999999, 1002140, 1, 0, 372), +(6479, 1337, 1002140, 1, 0, 1), +(6480, 1337, 1042003, 1, 0, 2), +(6481, 1337, 1062007, 1, 0, 3), +(6482, 1337, 1322013, 1, 0, 4), +(6483, 1337, 1072010, 1, 0, 5), +(6484, 1337, 2022179, 1, 0, 6), +(6485, 1337, 2022273, 1, 0, 7), +(6486, 1337, 5072000, 1, 0, 8), +(6487, 1337, 5390000, 1, 0, 9), +(6488, 1337, 5390001, 1, 0, 10), +(6489, 1337, 5390001, 1, 0, 11), +(6490, 1337, 1452044, 1, 0, 12), +(6491, 1337, 1472052, 1, 0, 13), +(6492, 1337, 1462039, 1, 0, 14), +(6493, 1337, 1332050, 1, 0, 15), +(6494, 1337, 1312031, 1, 0, 16), +(6495, 1337, 1322052, 1, 0, 17), +(6496, 1337, 1302059, 1, 0, 18), +(6497, 1337, 1442045, 1, 0, 19), +(6498, 1337, 1432038, 1, 0, 20), +(6499, 1337, 1382036, 1, 0, 21), +(6500, 1337, 1412026, 1, 0, 22), +(6501, 1337, 1422028, 1, 0, 23), +(6502, 1337, 1402036, 1, 0, 24), +(6503, 1337, 1122000, 1, 0, 25), +(6504, 1337, 2041200, 1, 0, 26), +(6505, 1337, 4006001, 1, 0, 27), +(6506, 1337, 4001017, 1, 0, 28), +(6507, 1337, 4031179, 1, 0, 29), +(6508, 1337, 1912000, 1, 0, 30), +(6509, 1337, 1902000, 1, 0, 31), +(6510, 1337, 1902001, 1, 0, 32), +(6511, 1337, 1902002, 1, 0, 33), +(6512, 1337, 2044503, 1, 0, 34), +(6513, 1337, 2044703, 1, 0, 35), +(6514, 1337, 2044603, 1, 0, 36), +(6515, 1337, 2043303, 1, 0, 37), +(6516, 1337, 2043103, 1, 0, 38), +(6517, 1337, 2043203, 1, 0, 39), +(6518, 1337, 2043003, 1, 0, 40), +(6519, 1337, 2044403, 1, 0, 41), +(6520, 1337, 2044303, 1, 0, 42), +(6521, 1337, 2043803, 1, 0, 43), +(6522, 1337, 2044103, 1, 0, 44), +(6523, 1337, 2044203, 1, 0, 45), +(6524, 1337, 2044003, 1, 0, 46), +(6525, 1337, 2043703, 1, 0, 47), +(6526, 1337, 2040807, 1, 0, 48), +(6527, 1337, 2040806, 1, 0, 49), +(6528, 1337, 2040007, 1, 0, 50), +(6529, 1337, 2040506, 1, 0, 51), +(6530, 1337, 2040710, 1, 0, 52), +(6531, 1337, 2040711, 1, 0, 53), +(6532, 1337, 2340000, 1, 0, 54), +(20020, 1337, 1082149, 1, 0, 54), +(6533, 9000069, 2022503, 0, 5, 1), +(6534, 9000069, 2000004, 0, 5, 2), +(6535, 9000069, 2022514, 0, 10, 3), +(6536, 9000069, 2000005, 0, 10, 4), +(6537, 9000069, 3010116, 0, 25, 5), +(6538, 9000069, 1122017, 0, 30, 6), +(6539, 9000069, 2049000, 0, 45, 7), +(6540, 9000069, 2049100, 0, 70, 8), +(6541, 9000069, 1003016, 0, 100, 9), +(20021, 1338, 2010003, 100, 0, 104), +(20022, 1338, 2061000, 1, 0, 108), +(20023, 1338, 2060000, 1, 0, 112), +(20024, 1338, 2030000, 400, 0, 116), +(20025, 1338, 2022195, 15000, 0, 120), +(20026, 1338, 2020015, 10200, 0, 124), +(20027, 1338, 2020014, 8100, 0, 128), +(20028, 1338, 2020013, 5600, 0, 132), +(20029, 1338, 2020012, 4500, 0, 136), +(20030, 1338, 2022190, 3000, 0, 140), +(20031, 1338, 2001002, 4000, 0, 144), +(20032, 1338, 2001001, 2300, 0, 148), +(20033, 1338, 2001000, 3200, 0, 152), +(20034, 1338, 2022000, 1650, 0, 156), +(20035, 1338, 2022003, 1100, 0, 160), +(20036, 1338, 2022192, 600, 0, 164), +(20037, 1338, 2022191, 1000, 0, 168), +(20038, 1338, 2022189, 1000, 0, 172), +(20039, 1338, 2010004, 310, 0, 176), +(20040, 1338, 2010001, 106, 0, 180), +(20041, 1338, 2010002, 50, 0, 184), +(20042, 1338, 2010000, 30, 0, 188), +(20043, 1338, 2002025, 1500, 0, 192), +(20044, 1338, 2002024, 1500, 0, 196), +(20045, 1338, 2002023, 3800, 0, 200), +(20046, 1338, 5041000, 1500000, 0, 200); + +CREATE TABLE IF NOT EXISTS `shops` ( + `shopid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `npcid` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`shopid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10000000 ; + +INSERT INTO `shops` (`shopid`, `npcid`) VALUES +(11000, 11000), +(11100, 11100), +(21000, 21000), +(1001000, 1001000), +(1001001, 1001001), +(1001100, 1001100), +(1011000, 1011000), +(1011001, 1011001), +(1011100, 1011100), +(1012004, 1012004), +(1021000, 1021000), +(1021001, 1021001), +(1021100, 1021100), +(1031000, 1031000), +(1031001, 1031001), +(1031100, 1031100), +(1032103, 1032103), +(1051000, 1051000), +(1051001, 1051001), +(1051002, 1051002), +(1052104, 1052104), +(1061001, 1061001), +(1061002, 1061002), +(1081000, 1081000), +(1091000, 1091000), +(1091001, 1091001), +(1091002, 1091002), +(1093000, 1093000), +(1100001, 1100001), +(1100002, 1100002), +(2010004, 2010004), +(2012003, 2012003), +(2012004, 2012004), +(2012005, 2012005), +(2020001, 2020001), +(2022000, 2022000), +(2022001, 2022001), +(2022002, 2022002), +(2030009, 2030009), +(2040049, 2040049), +(2040051, 2040051), +(2041002, 2041002), +(2041003, 2041003), +(2041006, 2041006), +(2041014, 2041014), +(2041016, 2041016), +(2050000, 2050000), +(2050003, 2050003), +(2051000, 2051000), +(2060003, 2060003), +(2060004, 2060004), +(2060007, 2060007), +(2070001, 2070001), +(2070002, 2070002), +(2070003, 2070003), +(2080001, 2080001), +(2080002, 2080002), +(2080003, 2080003), +(2080004, 2080004), +(2090001, 2090001), +(2090002, 2090002), +(2090003, 2090003), +(2090006, 2090006), +(2093000, 2093000), +(2093001, 2093001), +(2093002, 2093002), +(2100002, 2100002), +(2100003, 2100003), +(2100004, 2100004), +(2110001, 2110001), +(2130000, 2130000), +(9110003, 9110003), +(9110004, 9110004), +(9110005, 9110005), +(9110006, 9110006), +(9110007, 9110007), +(9120000, 9120000), +(9120002, 9120002), +(9120004, 9120004), +(9120019, 9120019), +(9201020, 9201020), +(9201058, 9201058), +(9201059, 9201059), +(9201060, 9201060), +(9270019, 9270019), +(9270020, 9270020), +(9270021, 9270021), +(9270022, 9270022), +(9270027, 9270027), +(9999992, 9001002), +(9999993, 9001002), +(9999994, 9001002), +(9999995, 9001002), +(9999996, 9001002), +(9999997, 9001002), +(9999998, 9001002), +(9999999, 9001002), +(1337, 11000), +(9000069, 9000069), +(1338, 9090000); + +CREATE TABLE IF NOT EXISTS `skillmacros` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL DEFAULT '0', + `position` tinyint(1) NOT NULL DEFAULT '0', + `skill1` int(11) NOT NULL DEFAULT '0', + `skill2` int(11) NOT NULL DEFAULT '0', + `skill3` int(11) NOT NULL DEFAULT '0', + `name` varchar(13) DEFAULT NULL, + `shout` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `skills` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `skillid` int(11) NOT NULL DEFAULT '0', + `characterid` int(11) NOT NULL DEFAULT '0', + `skilllevel` int(11) NOT NULL DEFAULT '0', + `masterlevel` int(11) NOT NULL DEFAULT '0', + `expiration` bigint(20) NOT NULL DEFAULT '-1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `specialcashitems` ( + `id` int(11) NOT NULL, + `sn` int(11) NOT NULL, + `modifier` int(11) NOT NULL COMMENT '1024 is add/remove', + `info` int(1) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +INSERT INTO `specialcashitems` (`id`, `sn`, `modifier`, `info`) VALUES +(1, 10000617, 1024, 1); + +CREATE TABLE IF NOT EXISTS `storages` ( + `storageid` int(10) unsigned NOT NULL AUTO_INCREMENT, + `accountid` int(11) NOT NULL DEFAULT '0', + `world` int(2) NOT NULL, + `slots` int(11) NOT NULL DEFAULT '0', + `meso` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`storageid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `trocklocations` ( + `trockid` int(11) NOT NULL AUTO_INCREMENT, + `characterid` int(11) NOT NULL, + `mapid` int(11) NOT NULL, + `vip` int(2) NOT NULL, + PRIMARY KEY (`trockid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `wishlists` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `charid` int(11) NOT NULL, + `sn` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + +CREATE TABLE IF NOT EXISTS `zaksquads` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `channel` int(10) unsigned NOT NULL, + `leaderid` int(10) unsigned NOT NULL DEFAULT '0', + `status` int(10) unsigned NOT NULL DEFAULT '0', + `members` int(10) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + +ALTER TABLE `dueyitems` + ADD CONSTRAINT `dueyitems_ibfk_1` FOREIGN KEY (`PackageId`) REFERENCES `dueypackages` (`PackageId`) ON DELETE CASCADE; + +ALTER TABLE `famelog` + ADD CONSTRAINT `famelog_ibfk_1` FOREIGN KEY (`characterid`) REFERENCES `characters` (`id`) ON DELETE CASCADE; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; \ No newline at end of file diff --git a/sql/db_drops.sql b/sql/db_drops.sql new file mode 100644 index 0000000000..630cddb5ec --- /dev/null +++ b/sql/db_drops.sql @@ -0,0 +1,18821 @@ + #THIS SQL MUST BE USED AFTER 'db_database.sql' + + INSERT IGNORE INTO temp_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES + #-- copy+paste inside here as many drop data as possible from the spider (drop generator) files -- + +(100100, 4000019, 1, 1, 0, 200000), +(100100, 2000000, 1, 1, 0, 40000), +(100100, 2040002, 1, 1, 0, 750), +(100100, 2041045, 1, 1, 0, 750), +(100100, 2041043, 1, 1, 0, 750), +(100100, 2380000, 1, 1, 0, 0), +(100100, 4020000, 1, 1, 0, 7000), +(100100, 4010000, 1, 1, 0, 7000), +(100100, 1002067, 1, 1, 0, 700), +(100100, 1302000, 1, 1, 0, 700), +(100100, 1040002, 1, 1, 0, 700), +(100100, 1052095, 1, 1, 0, 700), +(100120, 4003004, 1, 1, 0, 7000), +(100120, 2010000, 1, 1, 0, 3000), +(100120, 2061000, 10, 50, 0, 10000), +(100120, 2060000, 10, 50, 0, 10000), +(100120, 4020000, 1, 1, 0, 7000), +(100130, 2380015, 1, 1, 0, 0), +(100130, 2010000, 1, 1, 0, 3000), +(100130, 2010009, 1, 1, 0, 3000), +(100130, 2040003, 1, 1, 0, 750), +(100130, 4010005, 1, 1, 0, 7000), +(100130, 4020005, 1, 1, 0, 7000), +(100130, 1002008, 1, 1, 0, 700), +(100130, 1040010, 1, 1, 0, 700), +(100130, 1041004, 1, 1, 0, 700), +(100130, 1060007, 1, 1, 0, 700), +(100101, 4000000, 1, 1, 0, 200000), +(9300217, 4000000, 1, 1, 0, 200000), +(100101, 4030012, 1, 1, 0, 10000), +(9300217, 4030012, 1, 1, 0, 10000), +(100101, 2000000, 1, 1, 0, 40000), +(9300217, 2000000, 1, 1, 0, 40000), +(100101, 2041006, 1, 1, 0, 750), +(9300217, 2041006, 1, 1, 0, 750), +(100101, 2041043, 1, 1, 0, 750), +(9300217, 2041043, 1, 1, 0, 750), +(100101, 2380001, 1, 1, 0, 0), +(9300217, 2380001, 1, 1, 0, 0), +(100101, 4020004, 1, 1, 0, 7000), +(9300217, 4020004, 1, 1, 0, 7000), +(100101, 4010001, 1, 1, 0, 7000), +(9300217, 4010001, 1, 1, 0, 7000), +(100101, 4020001, 1, 1, 0, 7000), +(9300217, 4020001, 1, 1, 0, 7000), +(100101, 4010004, 1, 1, 0, 7000), +(9300217, 4010004, 1, 1, 0, 7000), +(100101, 1040006, 1, 1, 0, 700), +(9300217, 1040006, 1, 1, 0, 700), +(100101, 1060004, 1, 1, 0, 700), +(9300217, 1060004, 1, 1, 0, 700), +(100101, 1040013, 1, 1, 0, 700), +(9300217, 1040013, 1, 1, 0, 700), +(100101, 1041012, 1, 1, 0, 700), +(9300217, 1041012, 1, 1, 0, 700), +(120100, 4000011, 1, 1, 0, 200000), +(120100, 2000000, 1, 1, 0, 40000), +(120100, 2041007, 1, 1, 0, 750), +(120100, 2380002, 1, 1, 0, 0), +(120100, 4010002, 1, 1, 0, 7000), +(120100, 4020002, 1, 1, 0, 7000), +(120100, 1062000, 1, 1, 0, 700), +(120100, 1312004, 1, 1, 0, 700), +(120100, 1060007, 1, 1, 0, 700), +(120100, 1332006, 1, 1, 0, 700), +(120100, 1061009, 1, 1, 0, 700), +(120100, 1332006, 1, 1, 0, 700), +(100121, 4003004, 1, 1, 0, 7000), +(100121, 2000000, 1, 1, 0, 40000), +(100121, 2060000, 10, 50, 0, 10000), +(100131, 2380016, 1, 1, 0, 0), +(100131, 2000000, 1, 1, 0, 40000), +(100131, 2010009, 1, 1, 0, 3000), +(100131, 2040400, 1, 1, 0, 750), +(100131, 2040619, 1, 1, 0, 750), +(100131, 4010006, 1, 1, 0, 7000), +(100131, 4020006, 1, 1, 0, 7000), +(100131, 1002019, 1, 1, 0, 700), +(100131, 1040013, 1, 1, 0, 700), +(100131, 1041012, 1, 1, 0, 700), +(100131, 1060004, 1, 1, 0, 700), +(100131, 1072005, 1, 1, 0, 700), +(100131, 1002002, 1, 1, 0, 700), +(130100, 4000003, 1, 1, 0, 200000), +(9300219, 4000003, 1, 1, 0, 200000), +(130100, 4030009, 1, 1, 0, 10000), +(9300219, 4030009, 1, 1, 0, 10000), +(130100, 4001358, 1, 1, 0, 7000), +(9300219, 4001358, 1, 1, 0, 7000), +(130100, 2000000, 1, 1, 0, 40000), +(9300219, 2000000, 1, 1, 0, 40000), +(130100, 2040402, 1, 1, 0, 750), +(9300219, 2040402, 1, 1, 0, 750), +(130100, 2041008, 1, 1, 0, 750), +(9300219, 2041008, 1, 1, 0, 750), +(130100, 2380003, 1, 1, 0, 0), +(9300219, 2380003, 1, 1, 0, 0), +(130100, 4010003, 1, 1, 0, 7000), +(9300219, 4010003, 1, 1, 0, 7000), +(130100, 4020003, 1, 1, 0, 7000), +(9300219, 4020003, 1, 1, 0, 7000), +(130100, 1041002, 1, 1, 0, 700), +(9300219, 1041002, 1, 1, 0, 700), +(130100, 1322005, 1, 1, 0, 700), +(9300219, 1322005, 1, 1, 0, 700), +(130100, 1072008, 1, 1, 0, 700), +(9300219, 1072008, 1, 1, 0, 700), +(130100, 1082003, 1, 1, 0, 700), +(9300219, 1082003, 1, 1, 0, 700), +(130100, 1072007, 1, 1, 0, 700), +(9300219, 1072007, 1, 1, 0, 700), +(130100, 1452003, 1, 1, 0, 700), +(9300219, 1452003, 1, 1, 0, 700), +(130100, 1332000, 1, 1, 0, 700), +(9300219, 1332000, 1, 1, 0, 700), +(130100, 1492000, 1, 1, 0, 700), +(9300219, 1492000, 1, 1, 0, 700), +(130100, 1482001, 1, 1, 0, 700), +(9300219, 1482001, 1, 1, 0, 700), +(130101, 4000016, 1, 1, 0, 200000), +(9300218, 4000016, 1, 1, 0, 200000), +(130101, 4001359, 1, 1, 0, 7000), +(9300218, 4001359, 1, 1, 0, 7000), +(130101, 2000000, 1, 1, 0, 40000), +(9300218, 2000000, 1, 1, 0, 40000), +(130101, 2040502, 1, 1, 0, 750), +(9300218, 2040502, 1, 1, 0, 750), +(130101, 2041009, 1, 1, 0, 750), +(9300218, 2041009, 1, 1, 0, 750), +(130101, 2380004, 1, 1, 0, 0), +(9300218, 2380004, 1, 1, 0, 0), +(130101, 4020004, 1, 1, 0, 7000), +(9300218, 4020004, 1, 1, 0, 7000), +(130101, 4010004, 1, 1, 0, 7000), +(9300218, 4010004, 1, 1, 0, 7000), +(130101, 1302000, 1, 1, 0, 700), +(9300218, 1302000, 1, 1, 0, 700), +(130101, 1322007, 1, 1, 0, 700), +(9300218, 1322007, 1, 1, 0, 700), +(130101, 1372002, 1, 1, 0, 700), +(9300218, 1372002, 1, 1, 0, 700), +(130101, 1032003, 1, 1, 0, 700), +(9300218, 1032003, 1, 1, 0, 700), +(130101, 1072005, 1, 1, 0, 700), +(9300218, 1072005, 1, 1, 0, 700), +(130101, 1041006, 1, 1, 0, 700), +(9300218, 1041006, 1, 1, 0, 700), +(130101, 1402001, 1, 1, 0, 700), +(9300218, 1402001, 1, 1, 0, 700), +(130101, 1372002, 1, 1, 0, 700), +(9300218, 1372002, 1, 1, 0, 700), +(130101, 1402001, 1, 1, 0, 700), +(9300218, 1402001, 1, 1, 0, 700), +(130101, 1072060, 1, 1, 0, 700), +(9300218, 1072060, 1, 1, 0, 700), +(130101, 1082029, 1, 1, 0, 700), +(9300218, 1082029, 1, 1, 0, 700), +(130101, 1060022, 1, 1, 0, 700), +(9300218, 1060022, 1, 1, 0, 700), +(130101, 1402001, 1, 1, 0, 700), +(9300218, 1402001, 1, 1, 0, 700), +(130101, 1052095, 1, 1, 0, 700), +(9300218, 1052095, 1, 1, 0, 700), +(100122, 4003004, 1, 1, 0, 7000), +(100122, 2000000, 1, 1, 0, 40000), +(100122, 4020002, 1, 1, 0, 7000), +(100122, 4010002, 1, 1, 0, 7000), +(100122, 1452002, 1, 1, 0, 700), +(100132, 4010000, 1, 1, 0, 7000), +(100132, 4020007, 1, 1, 0, 7000), +(100132, 2380017, 1, 1, 0, 0), +(100132, 2000000, 1, 1, 0, 40000), +(100132, 2010009, 1, 1, 0, 3000), +(100132, 2040823, 1, 1, 0, 750), +(100132, 2041018, 1, 1, 0, 750), +(100132, 1002001, 1, 1, 0, 700), +(100132, 1040014, 1, 1, 0, 700), +(100132, 1072004, 1, 1, 0, 700), +(100132, 1002003, 1, 1, 0, 700), +(100132, 1040015, 1, 1, 0, 700), +(100132, 1060008, 1, 1, 0, 700), +(100132, 1041014, 1, 1, 0, 700), +(100132, 1061014, 1, 1, 0, 700), +(100132, 1082003, 1, 1, 0, 700), +(100132, 1442000, 1, 1, 0, 700), +(100132, 1442000, 1, 1, 0, 700), +(100132, 1442000, 1, 1, 0, 700), +(210100, 4000004, 1, 1, 0, 200000), +(9300223, 4000004, 1, 1, 0, 200000), +(9500100, 4000004, 1, 1, 0, 200000), +(210100, 4000010, 1, 1, 0, 200000), +(9300223, 4000010, 1, 1, 0, 200000), +(9500100, 4000010, 1, 1, 0, 200000), +(210100, 4030000, 1, 1, 0, 10000), +(9300223, 4030000, 1, 1, 0, 10000), +(9500100, 4030000, 1, 1, 0, 10000), +(210100, 2000000, 1, 1, 0, 40000), +(9300223, 2000000, 1, 1, 0, 40000), +(9500100, 2000000, 1, 1, 0, 40000), +(210100, 2040602, 1, 1, 0, 750), +(9300223, 2040602, 1, 1, 0, 750), +(9500100, 2040602, 1, 1, 0, 750), +(210100, 2040600, 1, 1, 0, 750), +(9300223, 2040600, 1, 1, 0, 750), +(9500100, 2040600, 1, 1, 0, 750), +(210100, 2040505, 1, 1, 0, 750), +(9300223, 2040505, 1, 1, 0, 750), +(9500100, 2040505, 1, 1, 0, 750), +(210100, 2041018, 1, 1, 0, 750), +(9300223, 2041018, 1, 1, 0, 750), +(9500100, 2041018, 1, 1, 0, 750), +(210100, 2041043, 1, 1, 0, 750), +(9300223, 2041043, 1, 1, 0, 750), +(9500100, 2041043, 1, 1, 0, 750), +(210100, 2380005, 1, 1, 0, 0), +(9300223, 2380005, 1, 1, 0, 0), +(9500100, 2380005, 1, 1, 0, 0), +(210100, 4020005, 1, 1, 0, 7000), +(9300223, 4020005, 1, 1, 0, 7000), +(9500100, 4020005, 1, 1, 0, 7000), +(210100, 4010005, 1, 1, 0, 7000), +(9300223, 4010005, 1, 1, 0, 7000), +(9500100, 4010005, 1, 1, 0, 7000), +(210100, 1002019, 1, 1, 0, 700), +(9300223, 1002019, 1, 1, 0, 700), +(9500100, 1002019, 1, 1, 0, 700), +(210100, 1060002, 1, 1, 0, 700), +(9300223, 1060002, 1, 1, 0, 700), +(9500100, 1060002, 1, 1, 0, 700), +(210100, 1322007, 1, 1, 0, 700), +(9300223, 1322007, 1, 1, 0, 700), +(9500100, 1322007, 1, 1, 0, 700), +(210100, 1072008, 1, 1, 0, 700), +(9300223, 1072008, 1, 1, 0, 700), +(9500100, 1072008, 1, 1, 0, 700), +(210100, 1442029, 1, 1, 0, 700), +(9300223, 1442029, 1, 1, 0, 700), +(9500100, 1442029, 1, 1, 0, 700), +(210100, 1412001, 1, 1, 0, 700), +(9300223, 1412001, 1, 1, 0, 700), +(9500100, 1412001, 1, 1, 0, 700), +(210100, 1412002, 1, 1, 0, 700), +(9300223, 1412002, 1, 1, 0, 700), +(9500100, 1412002, 1, 1, 0, 700), +(210100, 1432001, 1, 1, 0, 700), +(9300223, 1432001, 1, 1, 0, 700), +(9500100, 1432001, 1, 1, 0, 700), +(210100, 1432000, 1, 1, 0, 700), +(9300223, 1432000, 1, 1, 0, 700), +(9500100, 1432000, 1, 1, 0, 700), +(210100, 1082019, 1, 1, 0, 700), +(9300223, 1082019, 1, 1, 0, 700), +(9500100, 1082019, 1, 1, 0, 700), +(210100, 1072023, 1, 1, 0, 700), +(9300223, 1072023, 1, 1, 0, 700), +(9500100, 1072023, 1, 1, 0, 700), +(210100, 1412001, 1, 1, 0, 700), +(9300223, 1412001, 1, 1, 0, 700), +(9500100, 1412001, 1, 1, 0, 700), +(210100, 1432001, 1, 1, 0, 700), +(9300223, 1432001, 1, 1, 0, 700), +(9500100, 1432001, 1, 1, 0, 700), +(210100, 1412001, 1, 1, 0, 700), +(9300223, 1412001, 1, 1, 0, 700), +(9500100, 1412001, 1, 1, 0, 700), +(210100, 1432001, 1, 1, 0, 700), +(9300223, 1432001, 1, 1, 0, 700), +(9500100, 1432001, 1, 1, 0, 700), +(210100, 1482000, 1, 1, 0, 700), +(9300223, 1482000, 1, 1, 0, 700), +(9500100, 1482000, 1, 1, 0, 700), +(1210100, 4000021, 1, 1, 0, 200000), +(9300058, 4000021, 1, 1, 0, 200000), +(9300155, 4000021, 1, 1, 0, 200000), +(9400241, 4000021, 1, 1, 0, 200000), +(9500101, 4000021, 1, 1, 0, 200000), +(1210100, 4032130, 1, 1, 0, 10000), +(9300058, 4032130, 1, 1, 0, 10000), +(9300155, 4032130, 1, 1, 0, 10000), +(9400241, 4032130, 1, 1, 0, 10000), +(9500101, 4032130, 1, 1, 0, 10000), +(1210100, 2000000, 1, 1, 0, 40000), +(9300058, 2000000, 1, 1, 0, 40000), +(9300155, 2000000, 1, 1, 0, 40000), +(9400241, 2000000, 1, 1, 0, 40000), +(9500101, 2000000, 1, 1, 0, 40000), +(1210100, 2040702, 1, 1, 0, 750), +(9300058, 2040702, 1, 1, 0, 750), +(9300155, 2040702, 1, 1, 0, 750), +(9400241, 2040702, 1, 1, 0, 750), +(9500101, 2040702, 1, 1, 0, 750), +(1210100, 2041021, 1, 1, 0, 750), +(9300058, 2041021, 1, 1, 0, 750), +(9300155, 2041021, 1, 1, 0, 750), +(9400241, 2041021, 1, 1, 0, 750), +(9500101, 2041021, 1, 1, 0, 750), +(1210100, 4030011, 1, 1, 0, 10000), +(9300058, 4030011, 1, 1, 0, 10000), +(9300155, 4030011, 1, 1, 0, 10000), +(9400241, 4030011, 1, 1, 0, 10000), +(9500101, 4030011, 1, 1, 0, 10000), +(1210100, 4030012, 1, 1, 0, 10000), +(9300058, 4030012, 1, 1, 0, 10000), +(9300155, 4030012, 1, 1, 0, 10000), +(9400241, 4030012, 1, 1, 0, 10000), +(9500101, 4030012, 1, 1, 0, 10000), +(1210100, 2380006, 1, 1, 0, 0), +(9300058, 2380006, 1, 1, 0, 0), +(9300155, 2380006, 1, 1, 0, 0), +(9400241, 2380006, 1, 1, 0, 0), +(9500101, 2380006, 1, 1, 0, 0), +(1210100, 4010006, 1, 1, 0, 7000), +(9300058, 4010006, 1, 1, 0, 7000), +(9300155, 4010006, 1, 1, 0, 7000), +(9400241, 4010006, 1, 1, 0, 7000), +(9500101, 4010006, 1, 1, 0, 7000), +(1210100, 4020006, 1, 1, 0, 7000), +(9300058, 4020006, 1, 1, 0, 7000), +(9300155, 4020006, 1, 1, 0, 7000), +(9400241, 4020006, 1, 1, 0, 7000), +(9500101, 4020006, 1, 1, 0, 7000), +(1210100, 1041012, 1, 1, 0, 700), +(9300058, 1041012, 1, 1, 0, 700), +(9300155, 1041012, 1, 1, 0, 700), +(9400241, 1041012, 1, 1, 0, 700), +(9500101, 1041012, 1, 1, 0, 700), +(1210100, 1002008, 1, 1, 0, 700), +(9300058, 1002008, 1, 1, 0, 700), +(9300155, 1002008, 1, 1, 0, 700), +(9400241, 1002008, 1, 1, 0, 700), +(9500101, 1002008, 1, 1, 0, 700), +(1210100, 1402018, 1, 1, 0, 700), +(9300058, 1402018, 1, 1, 0, 700), +(9300155, 1402018, 1, 1, 0, 700), +(9400241, 1402018, 1, 1, 0, 700), +(9500101, 1402018, 1, 1, 0, 700), +(1210100, 1422000, 1, 1, 0, 700), +(9300058, 1422000, 1, 1, 0, 700), +(9300155, 1422000, 1, 1, 0, 700), +(9400241, 1422000, 1, 1, 0, 700), +(9500101, 1422000, 1, 1, 0, 700), +(1210100, 1041014, 1, 1, 0, 700), +(9300058, 1041014, 1, 1, 0, 700), +(9300155, 1041014, 1, 1, 0, 700), +(9400241, 1041014, 1, 1, 0, 700), +(9500101, 1041014, 1, 1, 0, 700), +(1210100, 1422000, 1, 1, 0, 700), +(9300058, 1422000, 1, 1, 0, 700), +(9300155, 1422000, 1, 1, 0, 700), +(9400241, 1422000, 1, 1, 0, 700), +(9500101, 1422000, 1, 1, 0, 700), +(1210100, 1062002, 1, 1, 0, 700), +(9300058, 1062002, 1, 1, 0, 700), +(9300155, 1062002, 1, 1, 0, 700), +(9400241, 1062002, 1, 1, 0, 700), +(9500101, 1062002, 1, 1, 0, 700), +(1210100, 1422000, 1, 1, 0, 700), +(9300058, 1422000, 1, 1, 0, 700), +(9300155, 1422000, 1, 1, 0, 700), +(9400241, 1422000, 1, 1, 0, 700), +(9500101, 1422000, 1, 1, 0, 700), +(1210100, 1040034, 1, 1, 0, 700), +(9300058, 1040034, 1, 1, 0, 700), +(9300155, 1040034, 1, 1, 0, 700), +(9400241, 1040034, 1, 1, 0, 700), +(9500101, 1040034, 1, 1, 0, 700), +(1210100, 1472000, 1, 1, 0, 700), +(9300058, 1472000, 1, 1, 0, 700), +(9300155, 1472000, 1, 1, 0, 700), +(9400241, 1472000, 1, 1, 0, 700), +(9500101, 1472000, 1, 1, 0, 700), +(1210100, 1002610, 1, 1, 0, 700), +(9300058, 1002610, 1, 1, 0, 700), +(9300155, 1002610, 1, 1, 0, 700), +(9400241, 1002610, 1, 1, 0, 700), +(9500101, 1002610, 1, 1, 0, 700), +(100123, 4003004, 1, 1, 0, 7000), +(100123, 2000000, 1, 1, 0, 40000), +(100123, 2061000, 10, 50, 0, 10000), +(100123, 4010003, 1, 1, 0, 7000), +(100133, 2380018, 1, 1, 0, 0), +(100133, 2000000, 1, 1, 0, 40000), +(100133, 2010009, 1, 1, 0, 3000), +(100133, 2048000, 1, 1, 0, 750), +(100133, 2041045, 1, 1, 0, 750), +(100133, 4010001, 1, 1, 0, 7000), +(100133, 4020003, 1, 1, 0, 7000), +(100133, 1002041, 1, 1, 0, 700), +(100133, 1032001, 1, 1, 0, 700), +(100133, 1002007, 1, 1, 0, 700), +(100133, 1040038, 1, 1, 0, 700), +(100133, 1060028, 1, 1, 0, 700), +(100133, 1041064, 1, 1, 0, 700), +(100133, 1061023, 1, 1, 0, 700), +(100133, 1072009, 1, 1, 0, 700), +(100133, 1082000, 1, 1, 0, 700), +(100133, 1442006, 1, 1, 0, 700), +(1210102, 4000001, 1, 1, 0, 200000), +(9300229, 4000001, 1, 1, 0, 200000), +(9500102, 4000001, 1, 1, 0, 200000), +(1210102, 4030001, 1, 1, 0, 10000), +(9300229, 4030001, 1, 1, 0, 10000), +(9500102, 4030001, 1, 1, 0, 10000), +(1210102, 4001345, 1, 1, 0, 7000), +(9300229, 4001345, 1, 1, 0, 7000), +(9500102, 4001345, 1, 1, 0, 7000), +(1210102, 2000000, 1, 1, 0, 40000), +(9300229, 2000000, 1, 1, 0, 40000), +(9500102, 2000000, 1, 1, 0, 40000), +(1210102, 2040705, 1, 1, 0, 750), +(9300229, 2040705, 1, 1, 0, 750), +(9500102, 2040705, 1, 1, 0, 750), +(1210102, 2040001, 1, 1, 0, 750), +(9300229, 2040001, 1, 1, 0, 750), +(9500102, 2040001, 1, 1, 0, 750), +(1210102, 2041009, 1, 1, 0, 750), +(9300229, 2041009, 1, 1, 0, 750), +(9500102, 2041009, 1, 1, 0, 750), +(1210102, 2330000, 1, 1, 0, 400), +(9300229, 2330000, 1, 1, 0, 400), +(9500102, 2330000, 1, 1, 0, 400), +(1210102, 2380007, 1, 1, 0, 0), +(9300229, 2380007, 1, 1, 0, 0), +(9500102, 2380007, 1, 1, 0, 0), +(1210102, 4010000, 1, 1, 0, 7000), +(9300229, 4010000, 1, 1, 0, 7000), +(9500102, 4010000, 1, 1, 0, 7000), +(1210102, 4020007, 1, 1, 0, 7000), +(9300229, 4020007, 1, 1, 0, 7000), +(9500102, 4020007, 1, 1, 0, 7000), +(1210102, 1312000, 1, 1, 0, 700), +(9300229, 1312000, 1, 1, 0, 700), +(9500102, 1312000, 1, 1, 0, 700), +(1210102, 1072004, 1, 1, 0, 700), +(9300229, 1072004, 1, 1, 0, 700), +(9500102, 1072004, 1, 1, 0, 700), +(1210102, 1432000, 1, 1, 0, 700), +(9300229, 1432000, 1, 1, 0, 700), +(9500102, 1432000, 1, 1, 0, 700), +(1210102, 1002043, 1, 1, 0, 700), +(9300229, 1002043, 1, 1, 0, 700), +(9500102, 1002043, 1, 1, 0, 700), +(1210102, 1432000, 1, 1, 0, 700), +(9300229, 1432000, 1, 1, 0, 700), +(9500102, 1432000, 1, 1, 0, 700), +(1210102, 1072015, 1, 1, 0, 700), +(9300229, 1072015, 1, 1, 0, 700), +(9500102, 1072015, 1, 1, 0, 700), +(1210102, 1432000, 1, 1, 0, 700), +(9300229, 1432000, 1, 1, 0, 700), +(9500102, 1432000, 1, 1, 0, 700), +(1210102, 1072031, 1, 1, 0, 700), +(9300229, 1072031, 1, 1, 0, 700), +(9500102, 1072031, 1, 1, 0, 700), +(1210102, 1052095, 1, 1, 0, 700), +(9300229, 1052095, 1, 1, 0, 700), +(9500102, 1052095, 1, 1, 0, 700), +(9300274, 4000001, 1, 1, 0, 200000), +(9300274, 4030001, 1, 1, 0, 10000), +(9300274, 2000000, 1, 1, 0, 40000), +(9300274, 2060000, 10, 50, 0, 10000), +(9300274, 2061000, 10, 50, 0, 10000), +(9300274, 2040705, 1, 1, 0, 750), +(9300274, 2330000, 1, 1, 0, 400), +(9300274, 2380013, 1, 1, 0, 0), +(9300274, 4010000, 1, 1, 0, 7000), +(9300274, 4020007, 1, 1, 0, 7000), +(9300274, 1312000, 1, 1, 0, 700), +(9300274, 1072004, 1, 1, 0, 700), +(9300274, 1432000, 1, 1, 0, 700), +(9300274, 1002043, 1, 1, 0, 700), +(9300274, 1432000, 1, 1, 0, 700), +(9300274, 1432000, 1, 1, 0, 700), +(9300274, 1072031, 1, 1, 0, 700), +(9300274, 1052095, 1, 1, 0, 700), +(100124, 4003004, 1, 1, 0, 7000), +(100124, 2010009, 1, 1, 0, 3000), +(100124, 2000000, 1, 1, 0, 40000), +(100124, 2060000, 10, 50, 0, 10000), +(100124, 2061000, 10, 50, 0, 10000), +(100124, 4010004, 1, 1, 0, 7000), +(100124, 4020004, 1, 1, 0, 7000), +(100134, 2380019, 1, 1, 0, 0), +(100134, 2000000, 1, 1, 0, 40000), +(100134, 2010009, 1, 1, 0, 3000), +(100134, 2040500, 1, 1, 0, 750), +(100134, 2044400, 1, 1, 0, 750), +(100134, 4010002, 1, 1, 0, 7000), +(100134, 4020002, 1, 1, 0, 7000), +(100134, 1002042, 1, 1, 0, 700), +(100134, 1032003, 1, 1, 0, 700), +(100134, 1002051, 1, 1, 0, 700), +(100134, 1040009, 1, 1, 0, 700), +(100134, 1060009, 1, 1, 0, 700), +(100134, 1051000, 1, 1, 0, 700), +(100134, 1072050, 1, 1, 0, 700), +(1210101, 4000021, 1, 1, 0, 200000), +(9300059, 4000021, 1, 1, 0, 200000), +(9400242, 4000021, 1, 1, 0, 200000), +(1210101, 4003004, 1, 1, 0, 7000), +(9300059, 4003004, 1, 1, 0, 7000), +(9400242, 4003004, 1, 1, 0, 7000), +(1210101, 4030012, 1, 1, 0, 10000), +(9300059, 4030012, 1, 1, 0, 10000), +(9400242, 4030012, 1, 1, 0, 10000), +(1210101, 4001343, 1, 1, 0, 7000), +(9300059, 4001343, 1, 1, 0, 7000), +(9400242, 4001343, 1, 1, 0, 7000), +(1210101, 4001342, 1, 1, 0, 7000), +(9300059, 4001342, 1, 1, 0, 7000), +(9400242, 4001342, 1, 1, 0, 7000), +(1210101, 2000000, 1, 1, 0, 40000), +(9300059, 2000000, 1, 1, 0, 40000), +(9400242, 2000000, 1, 1, 0, 40000), +(1210101, 2040902, 1, 1, 0, 750), +(9300059, 2040902, 1, 1, 0, 750), +(9400242, 2040902, 1, 1, 0, 750), +(1210101, 2380009, 1, 1, 0, 0), +(9300059, 2380009, 1, 1, 0, 0), +(9400242, 2380009, 1, 1, 0, 0), +(1210101, 4020001, 1, 1, 0, 7000), +(9300059, 4020001, 1, 1, 0, 7000), +(9400242, 4020001, 1, 1, 0, 7000), +(1210101, 4010002, 1, 1, 0, 7000), +(9300059, 4010002, 1, 1, 0, 7000), +(9400242, 4010002, 1, 1, 0, 7000), +(1210101, 1041012, 1, 1, 0, 700), +(9300059, 1041012, 1, 1, 0, 700), +(9400242, 1041012, 1, 1, 0, 700), +(1210101, 1032003, 1, 1, 0, 700), +(9300059, 1032003, 1, 1, 0, 700), +(9400242, 1032003, 1, 1, 0, 700), +(1210101, 1040014, 1, 1, 0, 700), +(9300059, 1040014, 1, 1, 0, 700), +(9400242, 1040014, 1, 1, 0, 700), +(1210101, 1061028, 1, 1, 0, 700), +(9300059, 1061028, 1, 1, 0, 700), +(9400242, 1061028, 1, 1, 0, 700), +(1210101, 1462014, 1, 1, 0, 700), +(9300059, 1462014, 1, 1, 0, 700), +(9400242, 1462014, 1, 1, 0, 700), +(1210101, 1040011, 1, 1, 0, 700), +(9300059, 1040011, 1, 1, 0, 700), +(9400242, 1040011, 1, 1, 0, 700), +(1210101, 1060024, 1, 1, 0, 700), +(9300059, 1060024, 1, 1, 0, 700), +(9400242, 1060024, 1, 1, 0, 700), +(1210101, 1492000, 1, 1, 0, 700), +(9300059, 1492000, 1, 1, 0, 700), +(9400242, 1492000, 1, 1, 0, 700), +(1210101, 1052098, 1, 1, 0, 700), +(9300059, 1052098, 1, 1, 0, 700), +(9400242, 1052098, 1, 1, 0, 700), +(1210101, 1072285, 1, 1, 0, 700), +(9300059, 1072285, 1, 1, 0, 700), +(9400242, 1072285, 1, 1, 0, 700), +(1110101, 1012031, 1, 1, 0, 700), +(1110101, 4030009, 1, 1, 0, 10000), +(1110101, 4001344, 1, 1, 0, 7000), +(1110101, 4001356, 1, 1, 0, 7000), +(1110101, 4001360, 1, 1, 0, 7000), +(1110101, 2000000, 1, 1, 0, 40000), +(1110101, 2040802, 1, 1, 0, 750), +(1110101, 2380008, 1, 1, 0, 0), +(1110101, 4010001, 1, 1, 0, 7000), +(1110101, 4020000, 1, 1, 0, 7000), +(1110101, 1092003, 1, 1, 0, 700), +(1110101, 1432012, 1, 1, 0, 700), +(1110101, 1442000, 1, 1, 0, 700), +(1110101, 1041018, 1, 1, 0, 700), +(1110101, 1061013, 1, 1, 0, 700), +(1110101, 1382000, 1, 1, 0, 700), +(1110101, 1041061, 1, 1, 0, 700), +(1110101, 1061057, 1, 1, 0, 700), +(1110101, 1442000, 1, 1, 0, 700), +(1110101, 1442000, 1, 1, 0, 700), +(1110101, 1482000, 1, 1, 0, 700), +(1110101, 1002613, 1, 1, 0, 700), +(1120100, 4000006, 1, 1, 0, 200000), +(9500104, 4000006, 1, 1, 0, 200000), +(1120100, 4030010, 1, 1, 0, 10000), +(9500104, 4030010, 1, 1, 0, 10000), +(1120100, 4030012, 1, 1, 0, 10000), +(9500104, 4030012, 1, 1, 0, 10000), +(1120100, 2000000, 1, 1, 0, 40000), +(9500104, 2000000, 1, 1, 0, 40000), +(1120100, 2000003, 1, 1, 0, 40000), +(9500104, 2000003, 1, 1, 0, 40000), +(1120100, 2043002, 1, 1, 0, 750), +(9500104, 2043002, 1, 1, 0, 750), +(1120100, 2380010, 1, 1, 0, 0), +(9500104, 2380010, 1, 1, 0, 0), +(1120100, 4010003, 1, 1, 0, 7000), +(9500104, 4010003, 1, 1, 0, 7000), +(1120100, 4020002, 1, 1, 0, 7000), +(9500104, 4020002, 1, 1, 0, 7000), +(1120100, 1442013, 1, 1, 0, 700), +(9500104, 1442013, 1, 1, 0, 700), +(1120100, 1032001, 1, 1, 0, 700), +(9500104, 1032001, 1, 1, 0, 700), +(1120100, 1412011, 1, 1, 0, 700), +(9500104, 1412011, 1, 1, 0, 700), +(1120100, 1040037, 1, 1, 0, 700), +(9500104, 1040037, 1, 1, 0, 700), +(1120100, 1060027, 1, 1, 0, 700), +(9500104, 1060027, 1, 1, 0, 700), +(1120100, 1092007, 1, 1, 0, 700), +(9500104, 1092007, 1, 1, 0, 700), +(1120100, 1092000, 1, 1, 0, 700), +(9500104, 1092000, 1, 1, 0, 700), +(1120100, 1061022, 1, 1, 0, 700), +(9500104, 1061022, 1, 1, 0, 700), +(1210103, 2000000, 1, 1, 0, 40000), +(9500103, 2000000, 1, 1, 0, 40000), +(1210103, 2000003, 1, 1, 0, 40000), +(9500103, 2000003, 1, 1, 0, 40000), +(1210103, 2043302, 1, 1, 0, 750), +(9500103, 2043302, 1, 1, 0, 750), +(1210103, 2048001, 1, 1, 0, 750), +(9500103, 2048001, 1, 1, 0, 750), +(1210103, 2048000, 1, 1, 0, 750), +(9500103, 2048000, 1, 1, 0, 750), +(1210103, 2041015, 1, 1, 0, 750), +(9500103, 2041015, 1, 1, 0, 750), +(1210103, 2041045, 1, 1, 0, 750), +(9500103, 2041045, 1, 1, 0, 750), +(1210103, 4006000, 1, 1, 0, 7000), +(9500103, 4006000, 1, 1, 0, 7000), +(1210103, 2330000, 1, 1, 0, 400), +(9500103, 2330000, 1, 1, 0, 400), +(1210103, 2380012, 1, 1, 0, 0), +(9500103, 2380012, 1, 1, 0, 0), +(1210103, 4020005, 1, 1, 0, 7000), +(9500103, 4020005, 1, 1, 0, 7000), +(1210103, 4010002, 1, 1, 0, 7000), +(9500103, 4010002, 1, 1, 0, 7000), +(1210103, 1092030, 1, 1, 0, 700), +(9500103, 1092030, 1, 1, 0, 700), +(1210103, 1432008, 1, 1, 0, 700), +(9500103, 1432008, 1, 1, 0, 700), +(1210103, 1322023, 1, 1, 0, 700), +(9500103, 1322023, 1, 1, 0, 700), +(1210103, 1442029, 1, 1, 0, 700), +(9500103, 1442029, 1, 1, 0, 700), +(1210103, 1402018, 1, 1, 0, 700), +(9500103, 1402018, 1, 1, 0, 700), +(1210103, 1412002, 1, 1, 0, 700), +(9500103, 1412002, 1, 1, 0, 700), +(1210103, 1432000, 1, 1, 0, 700), +(9500103, 1432000, 1, 1, 0, 700), +(1210103, 1002075, 1, 1, 0, 700), +(9500103, 1002075, 1, 1, 0, 700), +(1210103, 1432000, 1, 1, 0, 700), +(9500103, 1432000, 1, 1, 0, 700), +(1210103, 1041062, 1, 1, 0, 700), +(9500103, 1041062, 1, 1, 0, 700), +(1210103, 1061058, 1, 1, 0, 700), +(9500103, 1061058, 1, 1, 0, 700), +(1210103, 1040035, 1, 1, 0, 700), +(9500103, 1040035, 1, 1, 0, 700), +(1210103, 1060025, 1, 1, 0, 700), +(9500103, 1060025, 1, 1, 0, 700), +(1210103, 1432000, 1, 1, 0, 700), +(9500103, 1432000, 1, 1, 0, 700), +(1210103, 1082180, 1, 1, 0, 700), +(9500103, 1082180, 1, 1, 0, 700), +(1210103, 1492001, 1, 1, 0, 700), +(9500103, 1492001, 1, 1, 0, 700), +(1110100, 4000012, 1, 1, 0, 200000), +(9500105, 4000012, 1, 1, 0, 200000), +(9101000, 4000012, 1, 1, 0, 200000), +(1110100, 2000000, 1, 1, 0, 40000), +(9500105, 2000000, 1, 1, 0, 40000), +(9101000, 2000000, 1, 1, 0, 40000), +(1110100, 2000003, 1, 1, 0, 40000), +(9500105, 2000003, 1, 1, 0, 40000), +(9101000, 2000003, 1, 1, 0, 40000), +(1110100, 2043102, 1, 1, 0, 750), +(9500105, 2043102, 1, 1, 0, 750), +(9101000, 2043102, 1, 1, 0, 750), +(1110100, 2040902, 1, 1, 0, 750), +(9500105, 2040902, 1, 1, 0, 750), +(9101000, 2040902, 1, 1, 0, 750), +(1110100, 2041020, 1, 1, 0, 750), +(9500105, 2041020, 1, 1, 0, 750), +(9101000, 2041020, 1, 1, 0, 750), +(1110100, 2048001, 1, 1, 0, 750), +(9500105, 2048001, 1, 1, 0, 750), +(9101000, 2048001, 1, 1, 0, 750), +(1110100, 2048000, 1, 1, 0, 750), +(9500105, 2048000, 1, 1, 0, 750), +(9101000, 2048000, 1, 1, 0, 750), +(1110100, 2048003, 1, 1, 0, 750), +(9500105, 2048003, 1, 1, 0, 750), +(9101000, 2048003, 1, 1, 0, 750), +(1110100, 2044701, 1, 1, 0, 750), +(9500105, 2044701, 1, 1, 0, 750), +(9101000, 2044701, 1, 1, 0, 750), +(1110100, 2380011, 1, 1, 0, 0), +(9500105, 2380011, 1, 1, 0, 0), +(9101000, 2380011, 1, 1, 0, 0), +(1110100, 4020003, 1, 1, 0, 7000), +(9500105, 4020003, 1, 1, 0, 7000), +(9101000, 4020003, 1, 1, 0, 7000), +(1110100, 4010005, 1, 1, 0, 7000), +(9500105, 4010005, 1, 1, 0, 7000), +(9101000, 4010005, 1, 1, 0, 7000), +(1110100, 4010004, 1, 1, 0, 7000), +(9500105, 4010004, 1, 1, 0, 7000), +(9101000, 4010004, 1, 1, 0, 7000), +(1110100, 1302020, 1, 1, 0, 700), +(9500105, 1302020, 1, 1, 0, 700), +(9101000, 1302020, 1, 1, 0, 700), +(1110100, 1302030, 1, 1, 0, 700), +(9500105, 1302030, 1, 1, 0, 700), +(9101000, 1302030, 1, 1, 0, 700), +(1110100, 1092008, 1, 1, 0, 700), +(9500105, 1092008, 1, 1, 0, 700), +(9101000, 1092008, 1, 1, 0, 700), +(1110100, 1442013, 1, 1, 0, 700), +(9500105, 1442013, 1, 1, 0, 700), +(9101000, 1442013, 1, 1, 0, 700), +(1110100, 1412002, 1, 1, 0, 700), +(9500105, 1412002, 1, 1, 0, 700), +(9101000, 1412002, 1, 1, 0, 700), +(1110100, 1322000, 1, 1, 0, 700), +(9500105, 1322000, 1, 1, 0, 700), +(9101000, 1322000, 1, 1, 0, 700), +(1110100, 1432005, 1, 1, 0, 700), +(9500105, 1432005, 1, 1, 0, 700), +(9101000, 1432005, 1, 1, 0, 700), +(1110100, 1382012, 1, 1, 0, 700), +(9500105, 1382012, 1, 1, 0, 700), +(9101000, 1382012, 1, 1, 0, 700), +(1110100, 1041017, 1, 1, 0, 700), +(9500105, 1041017, 1, 1, 0, 700), +(9101000, 1041017, 1, 1, 0, 700), +(1110100, 1061012, 1, 1, 0, 700), +(9500105, 1061012, 1, 1, 0, 700), +(9101000, 1061012, 1, 1, 0, 700), +(1110100, 1041018, 1, 1, 0, 700), +(9500105, 1041018, 1, 1, 0, 700), +(9101000, 1041018, 1, 1, 0, 700), +(1110100, 1002143, 1, 1, 0, 700), +(9500105, 1002143, 1, 1, 0, 700), +(9101000, 1002143, 1, 1, 0, 700), +(1110100, 1462002, 1, 1, 0, 700), +(9500105, 1462002, 1, 1, 0, 700), +(9101000, 1462002, 1, 1, 0, 700), +(1110100, 1452003, 1, 1, 0, 700), +(9500105, 1452003, 1, 1, 0, 700), +(9101000, 1452003, 1, 1, 0, 700), +(1110100, 1452022, 1, 1, 0, 700), +(9500105, 1452022, 1, 1, 0, 700), +(9101000, 1452022, 1, 1, 0, 700), +(1110100, 1041063, 1, 1, 0, 700), +(9500105, 1041063, 1, 1, 0, 700), +(9101000, 1041063, 1, 1, 0, 700), +(1110100, 1061059, 1, 1, 0, 700), +(9500105, 1061059, 1, 1, 0, 700), +(9101000, 1061059, 1, 1, 0, 700), +(1110100, 1041044, 1, 1, 0, 700), +(9500105, 1041044, 1, 1, 0, 700), +(9101000, 1041044, 1, 1, 0, 700), +(1110100, 1061037, 1, 1, 0, 700), +(9500105, 1061037, 1, 1, 0, 700), +(9101000, 1061037, 1, 1, 0, 700), +(1110100, 1060031, 1, 1, 0, 700), +(9500105, 1060031, 1, 1, 0, 700), +(9101000, 1060031, 1, 1, 0, 700), +(1110100, 1072285, 1, 1, 0, 700), +(9500105, 1072285, 1, 1, 0, 700), +(9101000, 1072285, 1, 1, 0, 700), +(1110100, 1482001, 1, 1, 0, 700), +(9500105, 1482001, 1, 1, 0, 700), +(9101000, 1482001, 1, 1, 0, 700), +(1110130, 2380014, 1, 1, 0, 0), +(1110130, 2000000, 1, 1, 0, 40000), +(1110130, 2043109, 1, 1, 0, 750), +(1110130, 2000003, 1, 1, 0, 40000), +(1110130, 2060000, 10, 50, 0, 10000), +(1110130, 2061000, 10, 50, 0, 10000), +(1110130, 2048000, 1, 1, 0, 750), +(1110130, 2000001, 1, 1, 0, 40000), +(1110130, 4020002, 1, 1, 0, 7000), +(1110130, 4010004, 1, 1, 0, 7000), +(1110130, 4020003, 1, 1, 0, 7000), +(1110130, 1092008, 1, 1, 0, 700), +(1110130, 1002033, 1, 1, 0, 700), +(1110130, 1302007, 1, 1, 0, 700), +(1110130, 1032001, 1, 1, 0, 700), +(1110130, 1322000, 1, 1, 0, 700), +(1110130, 1432005, 1, 1, 0, 700), +(1110130, 1412002, 1, 1, 0, 700), +(1110130, 1322000, 1, 1, 0, 700), +(1110130, 1041017, 1, 1, 0, 700), +(1110130, 1061012, 1, 1, 0, 700), +(1110130, 1002143, 1, 1, 0, 700), +(1110130, 1462002, 1, 1, 0, 700), +(1110130, 1041063, 1, 1, 0, 700), +(1110130, 1061059, 1, 1, 0, 700), +(1110130, 1452003, 1, 1, 0, 700), +(1110130, 1002010, 1, 1, 0, 700), +(1110130, 1041044, 1, 1, 0, 700), +(1110130, 1061037, 1, 1, 0, 700), +(1110130, 1072285, 1, 1, 0, 700), +(1110130, 1482001, 1, 1, 0, 700), +(1130100, 4000018, 1, 1, 0, 200000), +(9300220, 4000018, 1, 1, 0, 200000), +(1130100, 2000000, 1, 1, 0, 40000), +(9300220, 2000000, 1, 1, 0, 40000), +(1130100, 2000003, 1, 1, 0, 40000), +(9300220, 2000003, 1, 1, 0, 40000), +(1130100, 2043202, 1, 1, 0, 750), +(9300220, 2043202, 1, 1, 0, 750), +(1130100, 2070009, 1, 1, 0, 400), +(9300220, 2070009, 1, 1, 0, 400), +(1130100, 2381000, 1, 1, 0, 20000), +(9300220, 2381000, 1, 1, 0, 20000), +(1130100, 4010005, 1, 1, 0, 7000), +(9300220, 4010005, 1, 1, 0, 7000), +(1130100, 4020004, 1, 1, 0, 7000), +(9300220, 4020004, 1, 1, 0, 7000), +(1130100, 1002097, 1, 1, 0, 700), +(9300220, 1002097, 1, 1, 0, 700), +(1130100, 1402009, 1, 1, 0, 700), +(9300220, 1402009, 1, 1, 0, 700), +(1130100, 1032003, 1, 1, 0, 700), +(9300220, 1032003, 1, 1, 0, 700), +(1130100, 1092007, 1, 1, 0, 700), +(9300220, 1092007, 1, 1, 0, 700), +(1130100, 1312016, 1, 1, 0, 700), +(9300220, 1312016, 1, 1, 0, 700), +(1130100, 1372001, 1, 1, 0, 700), +(9300220, 1372001, 1, 1, 0, 700), +(1130100, 1060015, 1, 1, 0, 700), +(9300220, 1060015, 1, 1, 0, 700), +(1130100, 1040019, 1, 1, 0, 700), +(9300220, 1040019, 1, 1, 0, 700), +(1130100, 1382004, 1, 1, 0, 700), +(9300220, 1382004, 1, 1, 0, 700), +(1130100, 1002118, 1, 1, 0, 700), +(9300220, 1002118, 1, 1, 0, 700), +(1130100, 1041045, 1, 1, 0, 700), +(9300220, 1041045, 1, 1, 0, 700), +(1130100, 1061038, 1, 1, 0, 700), +(9300220, 1061038, 1, 1, 0, 700), +(1130100, 1051008, 1, 1, 0, 700), +(9300220, 1051008, 1, 1, 0, 700), +(1130100, 1492001, 1, 1, 0, 700), +(9300220, 1492001, 1, 1, 0, 700), +(9420502, 4000367, 1, 1, 0, 200000), +(9420502, 4000366, 1, 1, 0, 200000), +(9420502, 2000000, 1, 1, 0, 40000), +(9420502, 4010005, 1, 1, 0, 7000), +(9420502, 4020004, 1, 1, 0, 7000), +(9420502, 1072048, 1, 1, 0, 700), +(9420502, 1382002, 1, 1, 0, 700), +(9420502, 1002177, 1, 1, 0, 700), +(1140100, 4000195, 1, 1, 0, 200000), +(9101002, 4000195, 1, 1, 0, 200000), +(1140100, 4030012, 1, 1, 0, 10000), +(9101002, 4030012, 1, 1, 0, 10000), +(1140100, 2000000, 1, 1, 0, 40000), +(9101002, 2000000, 1, 1, 0, 40000), +(1140100, 2000003, 1, 1, 0, 40000), +(9101002, 2000003, 1, 1, 0, 40000), +(1140100, 2040801, 1, 1, 0, 750), +(9101002, 2040801, 1, 1, 0, 750), +(1140100, 2048001, 1, 1, 0, 750), +(9101002, 2048001, 1, 1, 0, 750), +(1140100, 2040901, 1, 1, 0, 750), +(9101002, 2040901, 1, 1, 0, 750), +(1140100, 2040504, 1, 1, 0, 750), +(9101002, 2040504, 1, 1, 0, 750), +(1140100, 2044002, 1, 1, 0, 750), +(9101002, 2044002, 1, 1, 0, 750), +(1140100, 2044804, 1, 1, 0, 750), +(9101002, 2044804, 1, 1, 0, 750), +(1140100, 2381001, 1, 1, 0, 20000), +(9101002, 2381001, 1, 1, 0, 20000), +(1140100, 4010004, 1, 1, 0, 7000), +(9101002, 4010004, 1, 1, 0, 7000), +(1140100, 4010000, 1, 1, 0, 7000), +(9101002, 4010000, 1, 1, 0, 7000), +(1140100, 4020007, 1, 1, 0, 7000), +(9101002, 4020007, 1, 1, 0, 7000), +(1140100, 1412002, 1, 1, 0, 700), +(9101002, 1412002, 1, 1, 0, 700), +(1140100, 1072046, 1, 1, 0, 700), +(9101002, 1072046, 1, 1, 0, 700), +(1140100, 1061027, 1, 1, 0, 700), +(9101002, 1061027, 1, 1, 0, 700), +(1140100, 1040018, 1, 1, 0, 700), +(9101002, 1040018, 1, 1, 0, 700), +(1140100, 1050010, 1, 1, 0, 700), +(9101002, 1050010, 1, 1, 0, 700), +(1140100, 1050003, 1, 1, 0, 700), +(9101002, 1050003, 1, 1, 0, 700), +(1140100, 1041062, 1, 1, 0, 700), +(9101002, 1041062, 1, 1, 0, 700), +(1140100, 1002113, 1, 1, 0, 700), +(9101002, 1002113, 1, 1, 0, 700), +(1140100, 1061058, 1, 1, 0, 700), +(9101002, 1061058, 1, 1, 0, 700), +(1140100, 1082018, 1, 1, 0, 700), +(9101002, 1082018, 1, 1, 0, 700), +(1140100, 1072066, 1, 1, 0, 700), +(9101002, 1072066, 1, 1, 0, 700), +(1140100, 1002107, 1, 1, 0, 700), +(9101002, 1002107, 1, 1, 0, 700), +(1140100, 1082180, 1, 1, 0, 700), +(9101002, 1082180, 1, 1, 0, 700), +(1140130, 4000195, 1, 1, 0, 200000), +(1140130, 2381082, 1, 1, 0, 20000), +(1140130, 2000000, 1, 1, 0, 40000), +(1140130, 2000003, 1, 1, 0, 40000), +(1140130, 2060000, 10, 50, 0, 10000), +(1140130, 2061000, 10, 50, 0, 10000), +(1140130, 2040501, 1, 1, 0, 750), +(1140130, 2040801, 1, 1, 0, 750), +(1140130, 2048001, 1, 1, 0, 750), +(1140130, 2044804, 1, 1, 0, 750), +(1140130, 4010000, 1, 1, 0, 7000), +(1140130, 4010004, 1, 1, 0, 7000), +(1140130, 4020007, 1, 1, 0, 7000), +(1140130, 1412002, 1, 1, 0, 700), +(1140130, 1072046, 1, 1, 0, 700), +(1140130, 1050010, 1, 1, 0, 700), +(1140130, 1041029, 1, 1, 0, 700), +(1140130, 1061027, 1, 1, 0, 700), +(1140130, 1050003, 1, 1, 0, 700), +(1140130, 1041062, 1, 1, 0, 700), +(1140130, 1061058, 1, 1, 0, 700), +(1140130, 1082018, 1, 1, 0, 700), +(1140130, 1002113, 1, 1, 0, 700), +(1140130, 1072066, 1, 1, 0, 700), +(1140130, 1002107, 1, 1, 0, 700), +(1140130, 1082180, 1, 1, 0, 700), +(9400538, 4030012, 1, 1, 0, 10000), +(9400538, 4131010, 1, 1, 0, 3000), +(9400538, 2000000, 1, 1, 0, 40000), +(9400538, 2000003, 1, 1, 0, 40000), +(9400538, 2022189, 1, 1, 0, 3000), +(9400538, 2048001, 1, 1, 0, 750), +(9400538, 2041045, 1, 1, 0, 750), +(9400538, 2044702, 1, 1, 0, 750), +(9400538, 2043302, 1, 1, 0, 750), +(9400538, 2041017, 1, 1, 0, 750), +(9400538, 4020007, 1, 1, 0, 7000), +(9400538, 4010004, 1, 1, 0, 7000), +(9400538, 4010000, 1, 1, 0, 7000), +(9400538, 1412002, 1, 1, 0, 700), +(9400538, 1382018, 1, 1, 0, 700), +(9400538, 1050035, 1, 1, 0, 700), +(2220100, 4000009, 1, 1, 0, 200000), +(9300259, 4000009, 1, 1, 0, 200000), +(2220100, 4030012, 1, 1, 0, 10000), +(9300259, 4030012, 1, 1, 0, 10000), +(2220100, 2022016, 1, 1, 0, 3000), +(9300259, 2022016, 1, 1, 0, 3000), +(2220100, 2000001, 1, 1, 0, 40000), +(9300259, 2000001, 1, 1, 0, 40000), +(2220100, 2000003, 1, 1, 0, 40000), +(9300259, 2000003, 1, 1, 0, 40000), +(2220100, 2002002, 1, 1, 0, 10000), +(9300259, 2002002, 1, 1, 0, 10000), +(2220100, 2044002, 1, 1, 0, 750), +(9300259, 2044002, 1, 1, 0, 750), +(2220100, 2040602, 1, 1, 0, 750), +(9300259, 2040602, 1, 1, 0, 750), +(2220100, 2381002, 1, 1, 0, 20000), +(9300259, 2381002, 1, 1, 0, 20000), +(2220100, 4010006, 1, 1, 0, 7000), +(9300259, 4010006, 1, 1, 0, 7000), +(2220100, 4020005, 1, 1, 0, 7000), +(9300259, 4020005, 1, 1, 0, 7000), +(2220100, 1302020, 1, 1, 0, 700), +(9300259, 1302020, 1, 1, 0, 700), +(2220100, 1332006, 1, 1, 0, 700), +(9300259, 1332006, 1, 1, 0, 700), +(2220100, 1051000, 1, 1, 0, 700), +(9300259, 1051000, 1, 1, 0, 700), +(2220100, 1412002, 1, 1, 0, 700), +(9300259, 1412002, 1, 1, 0, 700), +(2220100, 1040012, 1, 1, 0, 700), +(9300259, 1040012, 1, 1, 0, 700), +(2220100, 1060010, 1, 1, 0, 700), +(9300259, 1060010, 1, 1, 0, 700), +(2220100, 1442001, 1, 1, 0, 700), +(9300259, 1442001, 1, 1, 0, 700), +(2220100, 1041027, 1, 1, 0, 700), +(9300259, 1041027, 1, 1, 0, 700), +(2220100, 1332006, 1, 1, 0, 700), +(9300259, 1332006, 1, 1, 0, 700), +(2220100, 1002127, 1, 1, 0, 700), +(9300259, 1002127, 1, 1, 0, 700), +(2220100, 1002613, 1, 1, 0, 700), +(9300259, 1002613, 1, 1, 0, 700), +(2220100, 1002616, 1, 1, 0, 700), +(9300259, 1002616, 1, 1, 0, 700), +(2220100, 1002619, 1, 1, 0, 700), +(9300259, 1002619, 1, 1, 0, 700), +(2300100, 4000042, 1, 1, 0, 200000), +(9300063, 4000042, 1, 1, 0, 200000), +(9300082, 4000042, 1, 1, 0, 200000), +(9400503, 4000042, 1, 1, 0, 200000), +(2300100, 4003004, 1, 1, 0, 7000), +(9300063, 4003004, 1, 1, 0, 7000), +(9300082, 4003004, 1, 1, 0, 7000), +(9400503, 4003004, 1, 1, 0, 7000), +(2300100, 2000001, 1, 1, 0, 40000), +(9300063, 2000001, 1, 1, 0, 40000), +(9300082, 2000001, 1, 1, 0, 40000), +(9400503, 2000001, 1, 4, 0, 40000), +(2300100, 2000003, 1, 1, 0, 40000), +(9300063, 2000003, 1, 1, 0, 40000), +(9300082, 2000003, 1, 1, 0, 40000), +(9400503, 2000003, 1, 4, 0, 40000), +(2300100, 2010004, 1, 1, 0, 3000), +(9300063, 2010004, 1, 1, 0, 3000), +(9300082, 2010004, 1, 1, 0, 3000), +(9400503, 2010004, 1, 4, 0, 3000), +(2300100, 2048004, 1, 1, 0, 750), +(9300063, 2048004, 1, 1, 0, 750), +(9300082, 2048004, 1, 1, 0, 750), +(9400503, 2048004, 1, 4, 0, 10000), +(2300100, 2041044, 1, 1, 0, 750), +(9300063, 2041044, 1, 1, 0, 750), +(9300082, 2041044, 1, 1, 0, 750), +(9400503, 2041044, 1, 4, 0, 10000), +(2300100, 2040024, 1, 1, 0, 750), +(9300063, 2040024, 1, 1, 0, 750), +(9300082, 2040024, 1, 1, 0, 750), +(9400503, 2040024, 1, 4, 0, 10000), +(2300100, 2381003, 1, 1, 0, 20000), +(9300063, 2381003, 1, 1, 0, 20000), +(9300082, 2381003, 1, 1, 0, 20000), +(9400503, 2381003, 1, 4, 0, 20000), +(2300100, 4010001, 1, 1, 0, 7000), +(9300063, 4010001, 1, 1, 0, 7000), +(9300082, 4010001, 1, 1, 0, 7000), +(9400503, 4010001, 1, 1, 0, 7000), +(2300100, 4020000, 1, 1, 0, 7000), +(9300063, 4020000, 1, 1, 0, 7000), +(9300082, 4020000, 1, 1, 0, 7000), +(9400503, 4020000, 1, 1, 0, 7000), +(2300100, 1082002, 1, 1, 0, 700), +(9300063, 1082002, 1, 1, 0, 700), +(9300082, 1082002, 1, 1, 0, 700), +(9400503, 1082002, 1, 1, 0, 40000), +(2300100, 1040009, 1, 1, 0, 700), +(9300063, 1040009, 1, 1, 0, 700), +(9300082, 1040009, 1, 1, 0, 700), +(9400503, 1040009, 1, 1, 0, 40000), +(2300100, 1060009, 1, 1, 0, 700), +(9300063, 1060009, 1, 1, 0, 700), +(9300082, 1060009, 1, 1, 0, 700), +(9400503, 1060009, 1, 1, 0, 40000), +(2300100, 1452005, 1, 1, 0, 700), +(9300063, 1452005, 1, 1, 0, 700), +(9300082, 1452005, 1, 1, 0, 700), +(9400503, 1452005, 1, 1, 0, 40000), +(2300100, 1002119, 1, 1, 0, 700), +(9300063, 1002119, 1, 1, 0, 700), +(9300082, 1002119, 1, 1, 0, 700), +(9400503, 1002119, 1, 1, 0, 40000), +(2300100, 1472030, 1, 1, 0, 700), +(9300063, 1472030, 1, 1, 0, 700), +(9300082, 1472030, 1, 1, 0, 700), +(9400503, 1472030, 1, 1, 0, 40000), +(2300100, 1332025, 1, 1, 0, 700), +(9300063, 1332025, 1, 1, 0, 700), +(9300082, 1332025, 1, 1, 0, 700), +(9400503, 1332025, 1, 1, 0, 40000), +(2300100, 1040043, 1, 1, 0, 700), +(9300063, 1040043, 1, 1, 0, 700), +(9300082, 1040043, 1, 1, 0, 700), +(9400503, 1040043, 1, 1, 0, 40000), +(2300100, 1060032, 1, 1, 0, 700), +(9300063, 1060032, 1, 1, 0, 700), +(9300082, 1060032, 1, 1, 0, 700), +(9400503, 1060032, 1, 1, 0, 40000), +(2300100, 1041039, 1, 1, 0, 700), +(9300063, 1041039, 1, 1, 0, 700), +(9300082, 1041039, 1, 1, 0, 700), +(9400503, 1041039, 1, 1, 0, 40000), +(2300100, 1061041, 1, 1, 0, 700), +(9300063, 1061041, 1, 1, 0, 700), +(9300082, 1061041, 1, 1, 0, 700), +(9400503, 1061041, 1, 1, 0, 40000), +(2300100, 1052098, 1, 1, 0, 700), +(9300063, 1052098, 1, 1, 0, 700), +(9300082, 1052098, 1, 1, 0, 700), +(9400503, 1052098, 1, 1, 0, 40000), +(2300100, 1052101, 1, 1, 0, 700), +(9300063, 1052101, 1, 1, 0, 700), +(9300082, 1052101, 1, 1, 0, 700), +(9400503, 1052101, 1, 1, 0, 40000), +(2100100, 5240005, 1, 1, 0, 7000), +(2100100, 4003004, 1, 1, 0, 7000), +(2100100, 2000001, 1, 1, 0, 40000), +(2100100, 2000003, 1, 1, 0, 40000), +(2100100, 2060000, 10, 50, 0, 10000), +(2100100, 2061000, 10, 50, 0, 10000), +(2100100, 2040601, 1, 1, 0, 750), +(2100100, 2381004, 1, 1, 0, 20000), +(2100100, 4010001, 1, 1, 0, 7000), +(2100100, 4020006, 1, 1, 0, 7000), +(2100100, 4010007, 1, 1, 0, 7000), +(2100100, 1082002, 1, 1, 0, 700), +(2100100, 1032009, 1, 1, 0, 700), +(2100100, 1050005, 1, 1, 0, 700), +(2100100, 1332010, 1, 1, 0, 700), +(2100100, 1072007, 1, 1, 0, 700), +(2100100, 1050025, 1, 1, 0, 700), +(2100100, 1382002, 1, 1, 0, 700), +(2100100, 1002119, 1, 1, 0, 700), +(2100100, 1332010, 1, 1, 0, 700), +(2100100, 1072288, 1, 1, 0, 700), +(9300184, 4000016, 1, 1, 0, 200000), +(9500306, 4000016, 1, 1, 0, 200000), +(9500337, 4000016, 1, 1, 0, 200000), +(9303000, 4000016, 1, 1, 0, 200000), +(9300184, 4000000, 1, 1, 0, 200000), +(9500306, 4000000, 1, 1, 0, 200000), +(9500337, 4000000, 1, 1, 0, 200000), +(9303000, 4000000, 1, 1, 0, 200000), +(9300184, 2070000, 1, 4, 0, 2500), +(9500306, 2070000, 1, 4, 0, 2500), +(9500337, 2070000, 1, 4, 0, 2500), +(9303000, 2070000, 1, 1, 0, 400), +(9300184, 2010009, 1, 4, 0, 3000), +(9500306, 2010009, 1, 4, 0, 3000), +(9500337, 2010009, 1, 4, 0, 3000), +(9303000, 2010009, 1, 1, 0, 3000), +(9300184, 2020014, 1, 4, 0, 3000), +(9500306, 2020014, 1, 4, 0, 3000), +(9500337, 2020014, 1, 4, 0, 3000), +(9303000, 2020014, 1, 1, 0, 3000), +(9300184, 2044001, 1, 4, 0, 10000), +(9500306, 2044001, 1, 4, 0, 10000), +(9500337, 2044001, 1, 4, 0, 10000), +(9303000, 2044001, 1, 1, 0, 750), +(9300184, 2041016, 1, 4, 0, 10000), +(9500306, 2041016, 1, 4, 0, 10000), +(9500337, 2041016, 1, 4, 0, 10000), +(9303000, 2041016, 1, 1, 0, 750), +(9300184, 2040301, 1, 4, 0, 10000), +(9500306, 2040301, 1, 4, 0, 10000), +(9500337, 2040301, 1, 4, 0, 10000), +(9303000, 2040301, 1, 1, 0, 750), +(9300184, 2041019, 1, 4, 0, 10000), +(9500306, 2041019, 1, 4, 0, 10000), +(9500337, 2041019, 1, 4, 0, 10000), +(9303000, 2041019, 1, 1, 0, 750), +(9300184, 2044002, 1, 4, 0, 10000), +(9500306, 2044002, 1, 4, 0, 10000), +(9500337, 2044002, 1, 4, 0, 10000), +(9303000, 2044002, 1, 1, 0, 750), +(9300184, 2043801, 1, 4, 0, 10000), +(9500306, 2043801, 1, 4, 0, 10000), +(9500337, 2043801, 1, 4, 0, 10000), +(9303000, 2043801, 1, 1, 0, 750), +(9300184, 2043701, 1, 4, 0, 10000), +(9500306, 2043701, 1, 4, 0, 10000), +(9500337, 2043701, 1, 4, 0, 10000), +(9303000, 2043701, 1, 1, 0, 750), +(9300184, 2040002, 1, 4, 0, 10000), +(9500306, 2040002, 1, 4, 0, 10000), +(9500337, 2040002, 1, 4, 0, 10000), +(9303000, 2040002, 1, 1, 0, 750), +(9300184, 2040001, 1, 4, 0, 10000), +(9500306, 2040001, 1, 4, 0, 10000), +(9500337, 2040001, 1, 4, 0, 10000), +(9303000, 2040001, 1, 1, 0, 750), +(9300184, 2040401, 1, 4, 0, 10000), +(9500306, 2040401, 1, 4, 0, 10000), +(9500337, 2040401, 1, 4, 0, 10000), +(9303000, 2040401, 1, 1, 0, 750), +(9300184, 2040501, 1, 4, 0, 10000), +(9500306, 2040501, 1, 4, 0, 10000), +(9500337, 2040501, 1, 4, 0, 10000), +(9303000, 2040501, 1, 1, 0, 750), +(9300184, 2043201, 1, 4, 0, 10000), +(9500306, 2043201, 1, 4, 0, 10000), +(9500337, 2043201, 1, 4, 0, 10000), +(9303000, 2043201, 1, 1, 0, 750), +(9300184, 2040704, 1, 4, 0, 10000), +(9500306, 2040704, 1, 4, 0, 10000), +(9500337, 2040704, 1, 4, 0, 10000), +(9303000, 2040704, 1, 1, 0, 750), +(9300184, 2043702, 1, 4, 0, 10000), +(9500306, 2043702, 1, 4, 0, 10000), +(9500337, 2043702, 1, 4, 0, 10000), +(9303000, 2043702, 1, 1, 0, 750), +(9300184, 2043302, 1, 4, 0, 10000), +(9500306, 2043302, 1, 4, 0, 10000), +(9500337, 2043302, 1, 4, 0, 10000), +(9303000, 2043302, 1, 1, 0, 750), +(9300184, 2330000, 1, 4, 0, 2500), +(9500306, 2330000, 1, 4, 0, 2500), +(9500337, 2330000, 1, 4, 0, 2500), +(9303000, 2330000, 1, 1, 0, 400), +(9300184, 2388000, 1, 4, 0, 20000), +(9500306, 2388000, 1, 4, 0, 20000), +(9500337, 2388000, 1, 4, 0, 20000), +(9303000, 2388000, 1, 1, 0, 20000), +(9300184, 1002049, 1, 1, 0, 40000), +(9500306, 1002049, 1, 1, 0, 40000), +(9500337, 1002049, 1, 1, 0, 40000), +(9303000, 1002049, 1, 1, 0, 700), +(9300184, 1072074, 1, 1, 0, 40000), +(9500306, 1072074, 1, 1, 0, 40000), +(9500337, 1072074, 1, 1, 0, 40000), +(9303000, 1072074, 1, 1, 0, 700), +(9300184, 1002073, 1, 1, 0, 40000), +(9500306, 1002073, 1, 1, 0, 40000), +(9500337, 1002073, 1, 1, 0, 40000), +(9303000, 1002073, 1, 1, 0, 700), +(9300184, 1082028, 1, 1, 0, 40000), +(9500306, 1082028, 1, 1, 0, 40000), +(9500337, 1082028, 1, 1, 0, 40000), +(9303000, 1082028, 1, 1, 0, 700), +(9300184, 1040025, 1, 1, 0, 40000), +(9500306, 1040025, 1, 1, 0, 40000), +(9500337, 1040025, 1, 1, 0, 40000), +(9303000, 1040025, 1, 1, 0, 700), +(2130103, 4000034, 1, 1, 0, 200000), +(2130103, 2000001, 1, 1, 0, 40000), +(2130103, 2010003, 1, 1, 0, 3000), +(2130103, 2040902, 1, 1, 0, 750), +(2130103, 2048003, 1, 1, 0, 750), +(2130103, 2049101, 1, 1, 0, 400), +(2130103, 2381006, 1, 1, 0, 20000), +(2130103, 4010002, 1, 1, 0, 7000), +(2130103, 4020006, 1, 1, 0, 7000), +(2130103, 1442024, 1, 1, 0, 700), +(2130103, 1050005, 1, 1, 0, 700), +(2130103, 1332008, 1, 1, 0, 700), +(2130103, 1041021, 1, 1, 0, 700), +(2130103, 1061018, 1, 1, 0, 700), +(2130103, 1002027, 1, 1, 0, 700), +(2130103, 1041031, 1, 1, 0, 700), +(2130103, 1061028, 1, 1, 0, 700), +(2130103, 1072069, 1, 1, 0, 700), +(2130103, 1332008, 1, 1, 0, 700), +(2130103, 1482002, 1, 1, 0, 700), +(9400539, 4030012, 1, 1, 0, 10000), +(9400539, 2000001, 1, 1, 0, 40000), +(9400539, 2010004, 1, 1, 0, 3000), +(9400539, 2002002, 1, 1, 0, 10000), +(9400539, 4010001, 1, 1, 0, 7000), +(9400539, 4010006, 1, 1, 0, 7000), +(9400539, 4020005, 1, 1, 0, 7000), +(9400539, 1332006, 1, 1, 0, 700), +(9400539, 1040012, 1, 1, 0, 700), +(9400539, 1060010, 1, 1, 0, 700), +(9400539, 1041027, 1, 1, 0, 700), +(9400539, 1332006, 1, 1, 0, 700), +(9400539, 1002127, 1, 1, 0, 700), +(9400556, 4032027, 1, 1, 0, 10000), +(9400565, 4032027, 1, 1, 0, 10000), +(9400556, 4032029, 1, 1, 0, 10000), +(9400565, 4032029, 1, 1, 0, 10000), +(9400556, 4032030, 1, 1, 0, 10000), +(9400565, 4032030, 1, 1, 0, 10000), +(9400556, 4032028, 1, 1, 0, 10000), +(9400565, 4032028, 1, 1, 0, 10000), +(9400556, 2022247, 1, 1, 0, 3000), +(9400565, 2022247, 1, 1, 0, 3000), +(9400556, 2022248, 1, 1, 0, 3000), +(9400565, 2022248, 1, 1, 0, 3000), +(9400556, 2022249, 1, 1, 0, 3000), +(9400565, 2022249, 1, 1, 0, 3000), +(9400556, 2022250, 1, 1, 0, 3000), +(9400565, 2022250, 1, 1, 0, 3000), +(9400556, 2022251, 1, 1, 0, 3000), +(9400565, 2022251, 1, 1, 0, 3000), +(9400556, 2022246, 1, 1, 0, 3000), +(9400565, 2022246, 1, 1, 0, 3000), +(9400556, 2022244, 1, 1, 0, 3000), +(9400565, 2022244, 1, 1, 0, 3000), +(9400556, 1041021, 1, 1, 0, 700), +(9400565, 1041021, 1, 1, 0, 700), +(9400556, 1002027, 1, 1, 0, 700), +(9400565, 1002027, 1, 1, 0, 700), +(9400556, 1332008, 1, 1, 0, 700), +(9400565, 1332008, 1, 1, 0, 700), +(9400556, 1041008, 1, 1, 0, 700), +(9400565, 1041008, 1, 1, 0, 700), +(9400556, 1040044, 1, 1, 0, 700), +(9400565, 1040044, 1, 1, 0, 700), +(9400556, 1060033, 1, 1, 0, 700), +(9400565, 1060033, 1, 1, 0, 700), +(9400556, 1332008, 1, 1, 0, 700), +(9400565, 1332008, 1, 1, 0, 700), +(2100101, 4000325, 1, 1, 0, 200000), +(2100101, 4003004, 1, 1, 0, 7000), +(2100101, 2000001, 1, 1, 0, 40000), +(2100101, 2000003, 1, 1, 0, 40000), +(2100101, 2002002, 1, 1, 0, 10000), +(2100101, 2060000, 10, 50, 0, 10000), +(2100101, 2061000, 10, 50, 0, 10000), +(2100101, 2044602, 1, 1, 0, 750), +(2100101, 2381005, 1, 1, 0, 20000), +(2100101, 4010006, 1, 1, 0, 7000), +(2100101, 4020001, 1, 1, 0, 7000), +(2100101, 4010007, 1, 1, 0, 7000), +(2100101, 1060017, 1, 1, 0, 700), +(2100101, 1092021, 1, 1, 0, 700), +(2100101, 1061028, 1, 1, 0, 700), +(2100101, 1041027, 1, 1, 0, 700), +(2100101, 1061025, 1, 1, 0, 700), +(2100101, 1002129, 1, 1, 0, 700), +(2100101, 1472006, 1, 1, 0, 700), +(2100101, 1082183, 1, 1, 0, 700), +(2110200, 4000015, 1, 1, 0, 200000), +(9400246, 4000015, 1, 1, 0, 200000), +(9500106, 4000015, 1, 1, 0, 200000), +(2110200, 4030012, 1, 1, 0, 10000), +(9400246, 4030012, 1, 1, 0, 10000), +(9500106, 4030012, 1, 1, 0, 10000), +(2110200, 2000003, 1, 1, 0, 40000), +(9400246, 2000003, 1, 1, 0, 40000), +(9500106, 2000003, 1, 1, 0, 40000), +(2110200, 2000001, 1, 1, 0, 40000), +(9400246, 2000001, 1, 1, 0, 40000), +(9500106, 2000001, 1, 1, 0, 40000), +(2110200, 2002003, 1, 1, 0, 10000), +(9400246, 2002003, 1, 1, 0, 10000), +(9500106, 2002003, 1, 1, 0, 10000), +(2110200, 2044102, 1, 1, 0, 750), +(9400246, 2044102, 1, 1, 0, 750), +(9500106, 2044102, 1, 1, 0, 750), +(2110200, 2044001, 1, 1, 0, 750), +(9400246, 2044001, 1, 1, 0, 750), +(9500106, 2044001, 1, 1, 0, 750), +(2110200, 2048000, 1, 1, 0, 750), +(9400246, 2048000, 1, 1, 0, 750), +(9500106, 2048000, 1, 1, 0, 750), +(2110200, 2041044, 1, 1, 0, 750), +(9400246, 2041044, 1, 1, 0, 750), +(9500106, 2041044, 1, 1, 0, 750), +(2110200, 2330000, 1, 1, 0, 400), +(9400246, 2330000, 1, 1, 0, 400), +(9500106, 2330000, 1, 1, 0, 400), +(2110200, 2381007, 1, 1, 0, 20000), +(9400246, 2381007, 1, 1, 0, 20000), +(9500106, 2381007, 1, 1, 0, 20000), +(2110200, 4020006, 1, 1, 0, 7000), +(9400246, 4020006, 1, 1, 0, 7000), +(9500106, 4020006, 1, 1, 0, 7000), +(2110200, 4010000, 1, 1, 0, 7000), +(9400246, 4010000, 1, 1, 0, 7000), +(9500106, 4010000, 1, 1, 0, 7000), +(2110200, 1060002, 1, 1, 0, 700), +(9400246, 1060002, 1, 1, 0, 700), +(9500106, 1060002, 1, 1, 0, 700), +(2110200, 1050006, 1, 1, 0, 700), +(9400246, 1050006, 1, 1, 0, 700), +(9500106, 1050006, 1, 1, 0, 700), +(2110200, 1002005, 1, 1, 0, 700), +(9400246, 1002005, 1, 1, 0, 700), +(9500106, 1002005, 1, 1, 0, 700), +(2110200, 1442001, 1, 1, 0, 700), +(9400246, 1442001, 1, 1, 0, 700), +(9500106, 1442001, 1, 1, 0, 700), +(2110200, 1082000, 1, 1, 0, 700), +(9400246, 1082000, 1, 1, 0, 700), +(9500106, 1082000, 1, 1, 0, 700), +(2110200, 1302004, 1, 1, 0, 700), +(9400246, 1302004, 1, 1, 0, 700), +(9500106, 1302004, 1, 1, 0, 700), +(2110200, 1092000, 1, 1, 0, 700), +(9400246, 1092000, 1, 1, 0, 700), +(9500106, 1092000, 1, 1, 0, 700), +(2110200, 1412002, 1, 1, 0, 700), +(9400246, 1412002, 1, 1, 0, 700), +(9500106, 1412002, 1, 1, 0, 700), +(2110200, 1382012, 1, 1, 0, 700), +(9400246, 1382012, 1, 1, 0, 700), +(9500106, 1382012, 1, 1, 0, 700), +(2110200, 1072073, 1, 1, 0, 700), +(9400246, 1072073, 1, 1, 0, 700), +(9500106, 1072073, 1, 1, 0, 700), +(2110200, 1002038, 1, 1, 0, 700), +(9400246, 1002038, 1, 1, 0, 700), +(9500106, 1002038, 1, 1, 0, 700), +(2110200, 1462014, 1, 1, 0, 700), +(9400246, 1462014, 1, 1, 0, 700), +(9500106, 1462014, 1, 1, 0, 700), +(2110200, 1002138, 1, 1, 0, 700), +(9400246, 1002138, 1, 1, 0, 700), +(9500106, 1002138, 1, 1, 0, 700), +(2110200, 1041008, 1, 1, 0, 700), +(9400246, 1041008, 1, 1, 0, 700), +(9500106, 1041008, 1, 1, 0, 700), +(2110200, 1061006, 1, 1, 0, 700), +(9400246, 1061006, 1, 1, 0, 700), +(9500106, 1061006, 1, 1, 0, 700), +(2110200, 1462004, 1, 1, 0, 700), +(9400246, 1462004, 1, 1, 0, 700), +(9500106, 1462004, 1, 1, 0, 700), +(2110200, 1040044, 1, 1, 0, 700), +(9400246, 1040044, 1, 1, 0, 700), +(9500106, 1040044, 1, 1, 0, 700), +(2110200, 1060033, 1, 1, 0, 700), +(9400246, 1060033, 1, 1, 0, 700), +(9500106, 1060033, 1, 1, 0, 700), +(2110200, 1002182, 1, 1, 0, 700), +(9400246, 1002182, 1, 1, 0, 700), +(9500106, 1002182, 1, 1, 0, 700), +(2110200, 1060038, 1, 1, 0, 700), +(9400246, 1060038, 1, 1, 0, 700), +(9500106, 1060038, 1, 1, 0, 700), +(2110200, 1492002, 1, 1, 0, 700), +(9400246, 1492002, 1, 1, 0, 700), +(9500106, 1492002, 1, 1, 0, 700), +(2110200, 1052104, 1, 1, 0, 700), +(9400246, 1052104, 1, 1, 0, 700), +(9500106, 1052104, 1, 1, 0, 700), +(2130100, 4000018, 1, 1, 0, 200000), +(2130100, 4000215, 1, 1, 0, 200000), +(2130100, 2000001, 1, 1, 0, 40000), +(2130100, 2000003, 1, 1, 0, 40000), +(2130100, 2012002, 1, 1, 0, 3000), +(2130100, 2070009, 1, 1, 0, 400), +(2130100, 2044202, 1, 1, 0, 750), +(2130100, 4006001, 1, 1, 0, 7000), +(2130100, 2381008, 1, 1, 0, 20000), +(2130100, 4020007, 1, 1, 0, 7000), +(2130100, 4010001, 1, 1, 0, 7000), +(2130100, 1051003, 1, 1, 0, 700), +(2130100, 1041028, 1, 1, 0, 700), +(2130100, 1061026, 1, 1, 0, 700), +(2130100, 1472006, 1, 1, 0, 700), +(2130100, 1472009, 1, 1, 0, 700), +(2130100, 1072087, 1, 1, 0, 700), +(2130100, 1472012, 1, 1, 0, 700), +(2130100, 1002616, 1, 1, 0, 700), +(2230108, 4000160, 1, 1, 0, 200000), +(2230108, 2000001, 1, 1, 0, 40000), +(2230108, 2002003, 1, 1, 0, 10000), +(2230108, 4006001, 1, 1, 0, 7000), +(2230108, 2044202, 1, 1, 0, 750), +(2230108, 2381009, 1, 1, 0, 20000), +(2230108, 4010000, 1, 1, 0, 7000), +(2230108, 4020007, 1, 1, 0, 7000), +(2230108, 1402000, 1, 1, 0, 700), +(2230108, 1051005, 1, 1, 0, 700), +(2230108, 1050024, 1, 1, 0, 700), +(2230108, 1041027, 1, 1, 0, 700), +(2230108, 1061025, 1, 1, 0, 700), +(2230108, 1052101, 1, 1, 0, 700), +(2100102, 4000329, 1, 1, 0, 200000), +(2100102, 2000001, 1, 1, 0, 40000), +(2100102, 2000003, 1, 1, 0, 40000), +(2100102, 2022155, 1, 1, 0, 3000), +(2100102, 2060000, 10, 50, 0, 10000), +(2100102, 2061000, 10, 50, 0, 10000), +(2100102, 2040705, 1, 1, 0, 750), +(2100102, 2044102, 1, 1, 0, 750), +(2100102, 2381010, 1, 1, 0, 20000), +(2100102, 4010002, 1, 1, 0, 7000), +(2100102, 4020004, 1, 1, 0, 7000), +(2100102, 4010007, 1, 1, 0, 7000), +(2100102, 1032006, 1, 1, 0, 700), +(2100102, 1002048, 1, 1, 0, 700), +(2100102, 1050024, 1, 1, 0, 700), +(2100102, 1051004, 1, 1, 0, 700), +(2100102, 1462003, 1, 1, 0, 700), +(2100102, 1072027, 1, 1, 0, 700), +(2100102, 1040044, 1, 1, 0, 700), +(2100102, 1060033, 1, 1, 0, 700), +(2100102, 1082183, 1, 1, 0, 700), +(2100102, 1082186, 1, 1, 0, 700), +(5200000, 4000083, 1, 1, 0, 200000), +(5200000, 2000001, 1, 1, 0, 40000), +(5200000, 2000003, 1, 1, 0, 40000), +(5200000, 2070000, 1, 1, 0, 400), +(5200000, 2060001, 10, 50, 0, 10000), +(5200000, 2061001, 10, 50, 0, 10000), +(5200000, 2044102, 1, 1, 0, 750), +(5200000, 2381012, 1, 1, 0, 20000), +(5200000, 4010000, 1, 1, 0, 7000), +(5200000, 4020006, 1, 1, 0, 7000), +(5200000, 4004003, 1, 1, 0, 3000), +(5200000, 1442014, 1, 1, 0, 700), +(5200000, 1040016, 1, 1, 0, 700), +(5200000, 1060011, 1, 1, 0, 700), +(5200000, 1322004, 1, 1, 0, 700), +(5200000, 1322002, 1, 1, 0, 700), +(5200000, 1322002, 1, 1, 0, 700), +(5200000, 1002142, 1, 1, 0, 700), +(5200000, 1462019, 1, 1, 0, 700), +(5200000, 1462014, 1, 1, 0, 700), +(5200000, 1452005, 1, 1, 0, 700), +(5200000, 1002129, 1, 1, 0, 700), +(5200000, 1041048, 1, 1, 0, 700), +(5200000, 1061044, 1, 1, 0, 700), +(5200000, 1482002, 1, 1, 0, 700), +(2230110, 4000196, 1, 1, 0, 200000), +(2230110, 4030012, 1, 1, 0, 10000), +(2230110, 2000001, 1, 1, 0, 40000), +(2230110, 2000003, 1, 1, 0, 40000), +(2230110, 2002003, 1, 1, 0, 10000), +(2230110, 2041016, 1, 1, 0, 750), +(2230110, 2040901, 1, 1, 0, 750), +(2230110, 2040501, 1, 1, 0, 750), +(2230110, 2040805, 1, 1, 0, 750), +(2230110, 2330000, 1, 1, 0, 400), +(2230110, 2381014, 1, 1, 0, 20000), +(2230110, 4010000, 1, 1, 0, 7000), +(2230110, 4020002, 1, 1, 0, 7000), +(2230110, 4020001, 1, 1, 0, 7000), +(2230110, 1332010, 1, 1, 0, 700), +(2230110, 1082006, 1, 1, 0, 700), +(2230110, 1072053, 1, 1, 0, 700), +(2230110, 1082026, 1, 1, 0, 700), +(2230110, 1060014, 1, 1, 0, 700), +(2230110, 1040020, 1, 1, 0, 700), +(2230110, 1002121, 1, 1, 0, 700), +(2230110, 1332010, 1, 1, 0, 700), +(2230110, 1072087, 1, 1, 0, 700), +(2230110, 1002131, 1, 1, 0, 700), +(2230110, 1082043, 1, 1, 0, 700), +(2230110, 1002616, 1, 1, 0, 700), +(2100105, 4000328, 1, 1, 0, 200000), +(2100105, 2000001, 1, 1, 0, 40000), +(2100105, 2000003, 1, 1, 0, 40000), +(2100105, 2060000, 10, 50, 0, 10000), +(2100105, 2061000, 10, 50, 0, 10000), +(2100105, 4006001, 1, 1, 0, 7000), +(2100105, 2044002, 1, 1, 0, 750), +(2100105, 2040902, 1, 1, 0, 750), +(2100105, 2330000, 1, 1, 0, 400), +(2100105, 2381015, 1, 1, 0, 20000), +(2100105, 4010004, 1, 1, 0, 7000), +(2100105, 4010007, 1, 1, 0, 7000), +(2100105, 1302006, 1, 1, 0, 700), +(2100105, 1072007, 1, 1, 0, 700), +(2100105, 1002013, 1, 1, 0, 700), +(2100105, 1372004, 1, 1, 0, 700), +(2100105, 1082020, 1, 1, 0, 700), +(2100105, 1002119, 1, 1, 0, 700), +(2100105, 1452003, 1, 1, 0, 700), +(2100105, 1302006, 1, 1, 0, 700), +(2100105, 1072086, 1, 1, 0, 700), +(2100105, 1052101, 1, 1, 0, 700), +(2100105, 1482003, 1, 1, 0, 700), +(9420506, 4000368, 1, 1, 0, 200000), +(9420506, 2002000, 1, 1, 0, 10000), +(9420506, 2000001, 1, 1, 0, 40000), +(9420506, 2000003, 1, 1, 0, 40000), +(2230103, 4000097, 1, 1, 0, 200000), +(2230103, 4030016, 1, 1, 0, 10000), +(2230103, 4030012, 1, 1, 0, 10000), +(2230103, 4031072, 1, 1, 0, 7000), +(2230103, 4131000, 1, 1, 0, 3000), +(2230103, 2000000, 1, 1, 0, 40000), +(2230103, 2000001, 1, 1, 0, 40000), +(2230103, 2002006, 1, 1, 0, 10000), +(2230103, 2070000, 1, 1, 0, 400), +(2230103, 2040900, 1, 1, 0, 750), +(2230103, 2381011, 1, 1, 0, 20000), +(2230103, 4010003, 1, 1, 0, 7000), +(2230103, 4004003, 1, 1, 0, 3000), +(2230103, 1002020, 1, 1, 0, 700), +(2230103, 1332020, 1, 1, 0, 700), +(2230103, 1402010, 1, 1, 0, 700), +(2230103, 1322022, 1, 1, 0, 700), +(2230103, 1302003, 1, 1, 0, 700), +(2230103, 1312003, 1, 1, 0, 700), +(2230103, 1050023, 1, 1, 0, 700), +(2230103, 1462003, 1, 1, 0, 700), +(2230103, 1082017, 1, 1, 0, 700), +(2230103, 1302003, 1, 1, 0, 700), +(2230103, 1332025, 1, 1, 0, 700), +(2230103, 1072288, 1, 1, 0, 700), +(2230103, 1072291, 1, 1, 0, 700), +(2230105, 4000161, 1, 1, 0, 200000), +(2230105, 4030012, 1, 1, 0, 10000), +(2230105, 4131000, 1, 1, 0, 3000), +(2230105, 2000001, 1, 1, 0, 40000), +(2230105, 2381013, 1, 1, 0, 20000), +(2230105, 4010001, 1, 1, 0, 7000), +(2230105, 4004003, 1, 1, 0, 3000), +(2230105, 1322022, 1, 1, 0, 700), +(2230105, 1032005, 1, 1, 0, 700), +(2230105, 1050011, 1, 1, 0, 700), +(2230105, 1322004, 1, 1, 0, 700), +(2230105, 1072046, 1, 1, 0, 700), +(2230105, 1072007, 1, 1, 0, 700), +(2230105, 1312003, 1, 1, 0, 700), +(2230105, 1041042, 1, 1, 0, 700), +(2230105, 1061035, 1, 1, 0, 700), +(2230105, 1082016, 1, 1, 0, 700), +(2230105, 1492002, 1, 1, 0, 700), +(2230101, 2000001, 1, 1, 0, 40000), +(9300238, 2000001, 1, 1, 0, 40000), +(9400245, 2000001, 1, 1, 0, 40000), +(9101001, 2000001, 1, 1, 0, 40000), +(2230101, 2000003, 1, 1, 0, 40000), +(9300238, 2000003, 1, 1, 0, 40000), +(9400245, 2000003, 1, 1, 0, 40000), +(9101001, 2000003, 1, 1, 0, 40000), +(2230101, 2002000, 1, 1, 0, 10000), +(9300238, 2002000, 1, 1, 0, 10000), +(9400245, 2002000, 1, 1, 0, 10000), +(9101001, 2002000, 1, 1, 0, 10000), +(2230101, 2044302, 1, 1, 0, 750), +(9300238, 2044302, 1, 1, 0, 750), +(9400245, 2044302, 1, 1, 0, 750), +(9101001, 2044302, 1, 1, 0, 750), +(2230101, 2049101, 1, 1, 0, 400), +(9300238, 2049101, 1, 1, 0, 400), +(9400245, 2049101, 1, 1, 0, 400), +(9101001, 2049101, 1, 1, 0, 400), +(2230101, 2020028, 1, 1, 0, 3000), +(9300238, 2020028, 1, 1, 0, 3000), +(9400245, 2020028, 1, 1, 0, 3000), +(9101001, 2020028, 1, 1, 0, 3000), +(2230101, 2381016, 1, 1, 0, 20000), +(9300238, 2381016, 1, 1, 0, 20000), +(9400245, 2381016, 1, 1, 0, 20000), +(9101001, 2381016, 1, 1, 0, 20000), +(2230101, 4010002, 1, 1, 0, 7000), +(9300238, 4010002, 1, 1, 0, 7000), +(9400245, 4010002, 1, 1, 0, 7000), +(9101001, 4010002, 1, 1, 0, 7000), +(2230101, 4020003, 1, 1, 0, 7000), +(9300238, 4020003, 1, 1, 0, 7000), +(9400245, 4020003, 1, 1, 0, 7000), +(9101001, 4020003, 1, 1, 0, 7000), +(2230101, 1032004, 1, 1, 0, 700), +(9300238, 1032004, 1, 1, 0, 700), +(9400245, 1032004, 1, 1, 0, 700), +(9101001, 1032004, 1, 1, 0, 700), +(2230101, 1032000, 1, 1, 0, 700), +(9300238, 1032000, 1, 1, 0, 700), +(9400245, 1032000, 1, 1, 0, 700), +(9101001, 1032000, 1, 1, 0, 700), +(2230101, 1412002, 1, 1, 0, 700), +(9300238, 1412002, 1, 1, 0, 700), +(9400245, 1412002, 1, 1, 0, 700), +(9101001, 1412002, 1, 1, 0, 700), +(2230101, 1060018, 1, 1, 0, 700), +(9300238, 1060018, 1, 1, 0, 700), +(9400245, 1060018, 1, 1, 0, 700), +(9101001, 1060018, 1, 1, 0, 700), +(2230101, 1002005, 1, 1, 0, 700), +(9300238, 1002005, 1, 1, 0, 700), +(9400245, 1002005, 1, 1, 0, 700), +(9101001, 1002005, 1, 1, 0, 700), +(2230101, 1040026, 1, 1, 0, 700), +(9300238, 1040026, 1, 1, 0, 700), +(9400245, 1040026, 1, 1, 0, 700), +(9101001, 1040026, 1, 1, 0, 700), +(2230101, 1432003, 1, 1, 0, 700), +(9300238, 1432003, 1, 1, 0, 700), +(9400245, 1432003, 1, 1, 0, 700), +(9101001, 1432003, 1, 1, 0, 700), +(2230101, 1082062, 1, 1, 0, 700), +(9300238, 1082062, 1, 1, 0, 700), +(9400245, 1082062, 1, 1, 0, 700), +(9101001, 1082062, 1, 1, 0, 700), +(2230101, 1372003, 1, 1, 0, 700), +(9300238, 1372003, 1, 1, 0, 700), +(9400245, 1372003, 1, 1, 0, 700), +(9101001, 1372003, 1, 1, 0, 700), +(2230101, 1002158, 1, 1, 0, 700), +(9300238, 1002158, 1, 1, 0, 700), +(9400245, 1002158, 1, 1, 0, 700), +(9101001, 1002158, 1, 1, 0, 700), +(2230101, 1472030, 1, 1, 0, 700), +(9300238, 1472030, 1, 1, 0, 700), +(9400245, 1472030, 1, 1, 0, 700), +(9101001, 1472030, 1, 1, 0, 700), +(2230101, 1040048, 1, 1, 0, 700), +(9300238, 1040048, 1, 1, 0, 700), +(9400245, 1040048, 1, 1, 0, 700), +(9101001, 1040048, 1, 1, 0, 700), +(2230101, 1060038, 1, 1, 0, 700), +(9300238, 1060038, 1, 1, 0, 700), +(9400245, 1060038, 1, 1, 0, 700), +(9101001, 1060038, 1, 1, 0, 700), +(2230101, 1040044, 1, 1, 0, 700), +(9300238, 1040044, 1, 1, 0, 700), +(9400245, 1040044, 1, 1, 0, 700), +(9101001, 1040044, 1, 1, 0, 700), +(2230101, 1082183, 1, 1, 0, 700), +(9300238, 1082183, 1, 1, 0, 700), +(9400245, 1082183, 1, 1, 0, 700), +(9101001, 1082183, 1, 1, 0, 700), +(2230101, 1492003, 1, 1, 0, 700), +(9300238, 1492003, 1, 1, 0, 700), +(9400245, 1492003, 1, 1, 0, 700), +(9101001, 1492003, 1, 1, 0, 700), +(2230107, 4000162, 1, 1, 0, 200000), +(2230107, 2000003, 1, 1, 0, 40000), +(2230107, 2002000, 1, 1, 0, 10000), +(2230107, 2000001, 1, 1, 0, 40000), +(2230107, 2044302, 1, 1, 0, 750), +(2230107, 2041045, 1, 1, 0, 750), +(2230107, 2060000, 10, 50, 0, 10000), +(2230107, 2061000, 10, 50, 0, 10000), +(2230107, 2043110, 1, 1, 0, 750), +(2230107, 4010002, 1, 1, 0, 7000), +(2230107, 4020005, 1, 1, 0, 7000), +(2230107, 1402000, 1, 1, 0, 700), +(2230107, 1072051, 1, 1, 0, 700), +(2230107, 1050029, 1, 1, 0, 700), +(2230107, 1082026, 1, 1, 0, 700), +(2230107, 1041051, 1, 1, 0, 700), +(2230107, 1061047, 1, 1, 0, 700), +(2230107, 1040024, 1, 1, 0, 700), +(2230107, 1062006, 1, 1, 0, 700), +(2230107, 1332004, 1, 1, 0, 700), +(2230107, 1041058, 1, 1, 0, 700), +(2230107, 1061054, 1, 1, 0, 700), +(2230107, 1072288, 1, 1, 0, 700), +(2230111, 4000197, 1, 1, 0, 200000), +(2230111, 2000001, 1, 1, 0, 40000), +(2230111, 2000003, 1, 1, 0, 40000), +(2230111, 2002000, 1, 1, 0, 10000), +(2230111, 2040301, 1, 1, 0, 750), +(2230111, 2043801, 1, 1, 0, 750), +(2230111, 2044301, 1, 1, 0, 750), +(2230111, 2381018, 1, 1, 0, 20000), +(2230111, 4010001, 1, 1, 0, 7000), +(2230111, 4020003, 1, 1, 0, 7000), +(2230111, 4010005, 1, 1, 0, 7000), +(2230111, 1061019, 1, 1, 0, 700), +(2230111, 1082006, 1, 1, 0, 700), +(2230111, 1302002, 1, 1, 0, 700), +(2230111, 1041023, 1, 1, 0, 700), +(2230111, 1082051, 1, 1, 0, 700), +(2230111, 1372004, 1, 1, 0, 700), +(2230111, 1452005, 1, 1, 0, 700), +(2230111, 1082049, 1, 1, 0, 700), +(2230111, 1040042, 1, 1, 0, 700), +(2230111, 1060031, 1, 1, 0, 700), +(2230111, 1482002, 1, 1, 0, 700), +(2100106, 2000001, 1, 1, 0, 40000), +(2100106, 2000003, 1, 1, 0, 40000), +(2100106, 2002004, 1, 1, 0, 10000), +(2100106, 2060000, 10, 50, 0, 10000), +(2100106, 2061000, 10, 50, 0, 10000), +(2100106, 2044501, 1, 1, 0, 750), +(2100106, 2330000, 1, 1, 0, 400), +(2100106, 2381019, 1, 1, 0, 20000), +(2100106, 4020000, 1, 1, 0, 7000), +(2100106, 4020007, 1, 1, 0, 7000), +(2100106, 4010007, 1, 1, 0, 7000), +(2100106, 1032004, 1, 1, 0, 700), +(2100106, 1432001, 1, 1, 0, 700), +(2100106, 1402002, 1, 1, 0, 700), +(2100106, 1002055, 1, 1, 0, 700), +(2100106, 1050001, 1, 1, 0, 700), +(2100106, 1432001, 1, 1, 0, 700), +(2100106, 1082068, 1, 1, 0, 700), +(2100106, 1432001, 1, 1, 0, 700), +(2100106, 1060037, 1, 1, 0, 700), +(2100106, 1040049, 1, 1, 0, 700), +(2100106, 1492002, 1, 1, 0, 700), +(2110300, 4000350, 1, 1, 0, 200000), +(9400239, 4000350, 1, 1, 0, 200000), +(9400248, 4000350, 1, 1, 0, 200000), +(2110300, 2000001, 1, 1, 0, 40000), +(9400239, 2000001, 1, 1, 0, 40000), +(9400248, 2000001, 1, 1, 0, 40000), +(2110300, 2000003, 1, 1, 0, 40000), +(9400239, 2000003, 1, 1, 0, 40000), +(9400248, 2000003, 1, 1, 0, 40000), +(2110300, 2002004, 1, 1, 0, 10000), +(9400239, 2002004, 1, 1, 0, 10000), +(9400248, 2002004, 1, 1, 0, 10000), +(2110300, 2060000, 10, 50, 0, 10000), +(9400239, 2060000, 10, 50, 0, 10000), +(9400248, 2060000, 10, 50, 0, 10000), +(2110300, 2061000, 10, 50, 0, 10000), +(9400239, 2061000, 10, 50, 0, 10000), +(9400248, 2061000, 10, 50, 0, 10000), +(2110300, 2044501, 1, 1, 0, 750), +(9400239, 2044501, 1, 1, 0, 750), +(9400248, 2044501, 1, 1, 0, 750), +(2110300, 2381020, 1, 1, 0, 20000), +(9400239, 2381020, 1, 1, 0, 20000), +(9400248, 2381020, 1, 1, 0, 20000), +(2110300, 4020000, 1, 1, 0, 7000), +(9400239, 4020000, 1, 1, 0, 7000), +(9400248, 4020000, 1, 1, 0, 7000), +(2110300, 4020007, 1, 1, 0, 7000), +(9400239, 4020007, 1, 1, 0, 7000), +(9400248, 4020007, 1, 1, 0, 7000), +(2110300, 4010007, 1, 1, 0, 7000), +(9400239, 4010007, 1, 1, 0, 7000), +(9400248, 4010007, 1, 1, 0, 7000), +(2110300, 1032004, 1, 1, 0, 700), +(9400239, 1032004, 1, 1, 0, 700), +(9400248, 1032004, 1, 1, 0, 700), +(2110300, 1432001, 1, 1, 0, 700), +(9400239, 1432001, 1, 1, 0, 700), +(9400248, 1432001, 1, 1, 0, 700), +(2110300, 1402002, 1, 1, 0, 700), +(9400239, 1402002, 1, 1, 0, 700), +(9400248, 1402002, 1, 1, 0, 700), +(2110300, 1002055, 1, 1, 0, 700), +(9400239, 1002055, 1, 1, 0, 700), +(9400248, 1002055, 1, 1, 0, 700), +(2110300, 1050001, 1, 1, 0, 700), +(9400239, 1050001, 1, 1, 0, 700), +(9400248, 1050001, 1, 1, 0, 700), +(2110300, 1432001, 1, 1, 0, 700), +(9400239, 1432001, 1, 1, 0, 700), +(9400248, 1432001, 1, 1, 0, 700), +(2110300, 1082068, 1, 1, 0, 700), +(9400239, 1082068, 1, 1, 0, 700), +(9400248, 1082068, 1, 1, 0, 700), +(2110300, 1432001, 1, 1, 0, 700), +(9400239, 1432001, 1, 1, 0, 700), +(9400248, 1432001, 1, 1, 0, 700), +(2110300, 1060037, 1, 1, 0, 700), +(9400239, 1060037, 1, 1, 0, 700), +(9400248, 1060037, 1, 1, 0, 700), +(2110300, 1040049, 1, 1, 0, 700), +(9400239, 1040049, 1, 1, 0, 700), +(9400248, 1040049, 1, 1, 0, 700), +(2110300, 1002619, 1, 1, 0, 700), +(9400239, 1002619, 1, 1, 0, 700), +(9400248, 1002619, 1, 1, 0, 700), +(2230131, 2000001, 1, 1, 0, 40000), +(2230131, 2002000, 1, 1, 0, 10000), +(2230131, 2000003, 1, 1, 0, 40000), +(2230131, 2000002, 1, 1, 0, 40000), +(2230131, 2381083, 1, 1, 0, 20000), +(2230131, 2060000, 10, 50, 0, 10000), +(2230131, 2061000, 10, 50, 0, 10000), +(2230131, 2049101, 1, 1, 0, 400), +(2230131, 2044302, 1, 1, 0, 750), +(2230131, 4010002, 1, 1, 0, 7000), +(2230131, 4020003, 1, 1, 0, 7000), +(2230131, 4010003, 1, 1, 0, 7000), +(2230131, 1032000, 1, 1, 0, 700), +(2230131, 1032004, 1, 1, 0, 700), +(2230131, 1412002, 1, 1, 0, 700), +(2230131, 1060018, 1, 1, 0, 700), +(2230131, 1040026, 1, 1, 0, 700), +(2230131, 1040021, 1, 1, 0, 700), +(2230131, 1040009, 1, 1, 0, 700), +(2230131, 1432003, 1, 1, 0, 700), +(2230131, 1312007, 1, 1, 0, 700), +(2230131, 1372003, 1, 1, 0, 700), +(2230131, 1050030, 1, 1, 0, 700), +(2230131, 1002035, 1, 1, 0, 700), +(2230131, 1002158, 1, 1, 0, 700), +(2230131, 1040048, 1, 1, 0, 700), +(2230131, 1060038, 1, 1, 0, 700), +(2230131, 1082183, 1, 1, 0, 700), +(2230131, 1492003, 1, 1, 0, 700), +(2230102, 4000020, 1, 1, 0, 200000), +(2230102, 4000021, 1, 1, 0, 200000), +(2230102, 4003004, 1, 1, 0, 7000), +(2230102, 4001372, 1, 1, 0, 7000), +(2230102, 2000001, 1, 1, 0, 40000), +(2230102, 2000003, 1, 1, 0, 40000), +(2230102, 2002004, 1, 1, 0, 10000), +(2230102, 4006001, 1, 1, 0, 7000), +(2230102, 2330001, 1, 1, 0, 400), +(2230102, 2381022, 1, 1, 0, 20000), +(2230102, 4010003, 1, 1, 0, 7000), +(2230102, 4020004, 1, 1, 0, 7000), +(2230102, 1032000, 1, 1, 0, 700), +(2230102, 1032002, 1, 1, 0, 700), +(2230102, 1432012, 1, 1, 0, 700), +(2230102, 1412011, 1, 1, 0, 700), +(2230102, 1432003, 1, 1, 0, 700), +(2230102, 1072039, 1, 1, 0, 700), +(2230102, 1402006, 1, 1, 0, 700), +(2230102, 1072041, 1, 1, 0, 700), +(2230102, 1382017, 1, 1, 0, 700), +(2230102, 1051005, 1, 1, 0, 700), +(2230102, 1051004, 1, 1, 0, 700), +(2230102, 1002064, 1, 1, 0, 700), +(2230102, 1002579, 1, 1, 0, 700), +(2230102, 1452016, 1, 1, 0, 700), +(2230102, 1452022, 1, 1, 0, 700), +(2230102, 1041013, 1, 1, 0, 700), +(2230102, 1061024, 1, 1, 0, 700), +(2230102, 1061006, 1, 1, 0, 700), +(2230102, 1041028, 1, 1, 0, 700), +(2230102, 1040079, 1, 1, 0, 700), +(2230102, 1060069, 1, 1, 0, 700), +(2230102, 1472032, 1, 1, 0, 700), +(2230102, 1332025, 1, 1, 0, 700), +(2230102, 1072033, 1, 1, 0, 700), +(2230102, 1472009, 1, 1, 0, 700), +(2230102, 1072085, 1, 1, 0, 700), +(2230102, 1082186, 1, 1, 0, 700), +(9400000, 4000064, 1, 1, 0, 200000), +(9400009, 4000064, 1, 1, 0, 200000), +(9400000, 4130004, 1, 1, 0, 3000), +(9400009, 4130004, 1, 1, 0, 3000), +(9400000, 4130006, 1, 1, 0, 3000), +(9400009, 4130006, 1, 1, 0, 3000), +(9400000, 4130005, 1, 1, 0, 3000), +(9400009, 4130005, 1, 1, 0, 3000), +(9400000, 2000006, 1, 1, 0, 40000), +(9400009, 2000006, 1, 1, 0, 40000), +(9400000, 2022014, 1, 1, 0, 3000), +(9400009, 2022014, 1, 1, 0, 3000), +(9400000, 2070002, 1, 1, 0, 400), +(9400009, 2070002, 1, 1, 0, 400), +(9400000, 2060001, 10, 50, 0, 10000), +(9400009, 2060001, 10, 50, 0, 10000), +(9400000, 2040013, 1, 1, 0, 750), +(9400009, 2040013, 1, 1, 0, 750), +(9400000, 2040719, 1, 1, 0, 750), +(9400009, 2040719, 1, 1, 0, 750), +(9400000, 2044904, 1, 1, 0, 750), +(9400009, 2044904, 1, 1, 0, 750), +(9400000, 4010000, 1, 1, 0, 7000), +(9400009, 4010000, 1, 1, 0, 7000), +(9400000, 4020006, 1, 1, 0, 7000), +(9400009, 4020006, 1, 1, 0, 7000), +(9400000, 1302027, 1, 1, 0, 700), +(9400009, 1302027, 1, 1, 0, 700), +(9400000, 1072056, 1, 1, 0, 700), +(9400009, 1072056, 1, 1, 0, 700), +(9400000, 1092008, 1, 1, 0, 700), +(9400009, 1092008, 1, 1, 0, 700), +(9400000, 1442013, 1, 1, 0, 700), +(9400009, 1442013, 1, 1, 0, 700), +(9400000, 1050006, 1, 1, 0, 700), +(9400009, 1050006, 1, 1, 0, 700), +(9400000, 1051011, 1, 1, 0, 700), +(9400009, 1051011, 1, 1, 0, 700), +(9400000, 1372003, 1, 1, 0, 700), +(9400009, 1372003, 1, 1, 0, 700), +(9400000, 1452005, 1, 1, 0, 700), +(9400009, 1452005, 1, 1, 0, 700), +(9400000, 1002172, 1, 1, 0, 700), +(9400009, 1002172, 1, 1, 0, 700), +(9400000, 1082032, 1, 1, 0, 700), +(9400009, 1082032, 1, 1, 0, 700), +(2230106, 2002005, 1, 1, 0, 10000), +(9410019, 2002005, 1, 1, 0, 10000), +(2230106, 2002001, 1, 1, 0, 10000), +(9410019, 2002001, 1, 1, 0, 10000), +(2230106, 2381021, 1, 1, 0, 20000), +(9410019, 2381021, 1, 1, 0, 20000), +(2230106, 4010003, 1, 1, 0, 7000), +(9410019, 4010003, 1, 1, 0, 7000), +(2230106, 4020004, 1, 1, 0, 7000), +(9410019, 4020004, 1, 1, 0, 7000), +(2230106, 4004003, 1, 1, 0, 3000), +(9410019, 4004003, 1, 1, 0, 3000), +(2230106, 1322023, 1, 1, 0, 700), +(9410019, 1322023, 1, 1, 0, 700), +(2230106, 1442014, 1, 1, 0, 700), +(9410019, 1442014, 1, 1, 0, 700), +(2230106, 1072051, 1, 1, 0, 700), +(9410019, 1072051, 1, 1, 0, 700), +(2230106, 1040040, 1, 1, 0, 700), +(9410019, 1040040, 1, 1, 0, 700), +(2230106, 1002158, 1, 1, 0, 700), +(9410019, 1002158, 1, 1, 0, 700), +(2230106, 1332013, 1, 1, 0, 700), +(9410019, 1332013, 1, 1, 0, 700), +(2230106, 1332009, 1, 1, 0, 700), +(9410019, 1332009, 1, 1, 0, 700), +(2230106, 1041050, 1, 1, 0, 700), +(9410019, 1041050, 1, 1, 0, 700), +(2230106, 1061046, 1, 1, 0, 700), +(9410019, 1061046, 1, 1, 0, 700), +(2230106, 1041040, 1, 1, 0, 700), +(9410019, 1041040, 1, 1, 0, 700), +(2230106, 1061033, 1, 1, 0, 700), +(9410019, 1061033, 1, 1, 0, 700), +(2230106, 1002146, 1, 1, 0, 700), +(9410019, 1002146, 1, 1, 0, 700), +(2230106, 1052104, 1, 1, 0, 700), +(9410019, 1052104, 1, 1, 0, 700), +(9400540, 4032023, 1, 1, 0, 10000), +(9400541, 4032023, 1, 1, 0, 10000), +(9400540, 2000001, 1, 1, 0, 40000), +(9400541, 2000001, 1, 1, 0, 40000), +(9400540, 2010004, 1, 1, 0, 3000), +(9400541, 2010004, 1, 1, 0, 3000), +(9400540, 2040601, 1, 1, 0, 750), +(9400541, 2040601, 1, 1, 0, 750), +(9400540, 2060004, 10, 50, 0, 10000), +(9400541, 2060004, 10, 50, 0, 10000), +(9400540, 2061004, 10, 50, 0, 10000), +(9400541, 2061004, 10, 50, 0, 10000), +(9400540, 4010004, 1, 1, 0, 7000), +(9400541, 4010004, 1, 1, 0, 7000), +(9400540, 4020005, 1, 1, 0, 7000), +(9400541, 4020005, 1, 1, 0, 7000), +(9400540, 1032009, 1, 1, 0, 700), +(9400541, 1032009, 1, 1, 0, 700), +(9400540, 1302004, 1, 1, 0, 700), +(9400541, 1302004, 1, 1, 0, 700), +(9400540, 1002047, 1, 1, 0, 700), +(9400541, 1002047, 1, 1, 0, 700), +(9400540, 1062006, 1, 1, 0, 700), +(9400541, 1062006, 1, 1, 0, 700), +(9400540, 1060050, 1, 1, 0, 700), +(9400541, 1060050, 1, 1, 0, 700), +(2100103, 4000330, 1, 1, 0, 200000), +(9300221, 4000330, 1, 1, 0, 200000), +(2100103, 4030012, 1, 1, 0, 10000), +(9300221, 4030012, 1, 1, 0, 10000), +(2100103, 2000001, 1, 1, 0, 40000), +(9300221, 2000001, 1, 1, 0, 40000), +(2100103, 2000003, 1, 1, 0, 40000), +(9300221, 2000003, 1, 1, 0, 40000), +(2100103, 2022155, 1, 1, 0, 3000), +(9300221, 2022155, 1, 1, 0, 3000), +(2100103, 2060000, 10, 50, 0, 10000), +(9300221, 2060000, 10, 50, 0, 10000), +(2100103, 2061000, 10, 50, 0, 10000), +(9300221, 2061000, 10, 50, 0, 10000), +(2100103, 2040501, 1, 1, 0, 750), +(9300221, 2040501, 1, 1, 0, 750), +(2100103, 2381023, 1, 1, 0, 20000), +(9300221, 2381023, 1, 1, 0, 20000), +(2100103, 4010003, 1, 1, 0, 7000), +(9300221, 4010003, 1, 1, 0, 7000), +(2100103, 4020004, 1, 1, 0, 7000), +(9300221, 4020004, 1, 1, 0, 7000), +(2100103, 4010007, 1, 1, 0, 7000), +(9300221, 4010007, 1, 1, 0, 7000), +(2100103, 1002096, 1, 1, 0, 700), +(9300221, 1002096, 1, 1, 0, 700), +(2100103, 1322009, 1, 1, 0, 700), +(9300221, 1322009, 1, 1, 0, 700), +(2100103, 1072054, 1, 1, 0, 700), +(9300221, 1072054, 1, 1, 0, 700), +(2100103, 1092002, 1, 1, 0, 700), +(9300221, 1092002, 1, 1, 0, 700), +(2100103, 1050011, 1, 1, 0, 700), +(9300221, 1050011, 1, 1, 0, 700), +(2100103, 1432002, 1, 1, 0, 700), +(9300221, 1432002, 1, 1, 0, 700), +(2100103, 1072078, 1, 1, 0, 700), +(9300221, 1072078, 1, 1, 0, 700), +(2100103, 1082016, 1, 1, 0, 700), +(9300221, 1082016, 1, 1, 0, 700), +(2100103, 1041058, 1, 1, 0, 700), +(9300221, 1041058, 1, 1, 0, 700), +(2100103, 1061054, 1, 1, 0, 700), +(9300221, 1061054, 1, 1, 0, 700), +(2100103, 1072291, 1, 1, 0, 700), +(9300221, 1072291, 1, 1, 0, 700), +(9400609, 2000003, 1, 4, 0, 40000), +(9400609, 2000002, 1, 4, 0, 40000), +(9400609, 2002004, 1, 4, 0, 10000), +(9400609, 4010000, 1, 1, 0, 7000), +(9400609, 4010004, 1, 1, 0, 7000), +(9400609, 4010002, 1, 1, 0, 7000), +(9400609, 4010001, 1, 1, 0, 7000), +(9400610, 2000002, 1, 4, 0, 40000), +(9400623, 2000002, 1, 4, 0, 40000), +(9400610, 4010002, 1, 1, 0, 7000), +(9400623, 4010002, 1, 1, 0, 7000), +(9400612, 4020000, 1, 1, 0, 7000), +(9400612, 4010001, 1, 1, 0, 7000), +(9400612, 4010002, 1, 1, 0, 7000), +(9400612, 2000003, 1, 4, 0, 40000), +(9400612, 2000002, 1, 4, 0, 40000), +(9400612, 4010000, 1, 1, 0, 7000), +(9400612, 1082257, 1, 1, 0, 40000), +(9400612, 1003032, 1, 1, 0, 40000), +(9400612, 1072420, 1, 1, 0, 40000), +(2230112, 4000020, 1, 1, 0, 200000), +(2230112, 4003004, 1, 1, 0, 7000), +(2230112, 4000021, 1, 1, 0, 200000), +(2230112, 4000047, 1, 1, 0, 200000), +(2230112, 2000001, 1, 1, 0, 40000), +(2230112, 2002004, 1, 1, 0, 10000), +(2230112, 2060000, 10, 50, 0, 10000), +(2230112, 2000003, 1, 1, 0, 40000), +(2230112, 2061000, 10, 50, 0, 10000), +(2230112, 2330001, 1, 1, 0, 400), +(2230112, 4010003, 1, 1, 0, 7000), +(2230112, 4020004, 1, 1, 0, 7000), +(2230112, 1032000, 1, 1, 0, 700), +(2230112, 1032002, 1, 1, 0, 700), +(2230112, 1072039, 1, 1, 0, 700), +(2230112, 1432003, 1, 1, 0, 700), +(2230112, 1402006, 1, 1, 0, 700), +(2230112, 1412005, 1, 1, 0, 700), +(2230112, 1051005, 1, 1, 0, 700), +(2230112, 1002064, 1, 1, 0, 700), +(2230112, 1382017, 1, 1, 0, 700), +(2230112, 1002151, 1, 1, 0, 700), +(2230112, 1041013, 1, 1, 0, 700), +(2230112, 1061024, 1, 1, 0, 700), +(2230112, 1040079, 1, 1, 0, 700), +(2230112, 1060069, 1, 1, 0, 700), +(2230112, 1452005, 1, 1, 0, 700), +(2230112, 1462004, 1, 1, 0, 700), +(2230112, 1002166, 1, 1, 0, 700), +(2230112, 1072033, 1, 1, 0, 700), +(2230112, 1060050, 1, 1, 0, 700), +(2230112, 1082186, 1, 1, 0, 700), +(2230100, 4000007, 1, 1, 0, 200000), +(2230100, 4030012, 1, 1, 0, 10000), +(2230100, 4001373, 1, 1, 0, 7000), +(2230100, 2000001, 1, 1, 0, 40000), +(2230100, 2000003, 1, 1, 0, 40000), +(2230100, 2002001, 1, 1, 0, 10000), +(2230100, 2060000, 10, 50, 0, 10000), +(2230100, 2061000, 10, 50, 0, 10000), +(2230100, 2044402, 1, 1, 0, 750), +(2230100, 2381024, 1, 1, 0, 20000), +(2230100, 4010004, 1, 1, 0, 7000), +(2230100, 4020005, 1, 1, 0, 7000), +(2230100, 1032009, 1, 1, 0, 700), +(2230100, 1302020, 1, 1, 0, 700), +(2230100, 1051012, 1, 1, 0, 700), +(2230100, 1302004, 1, 1, 0, 700), +(2230100, 1002047, 1, 1, 0, 700), +(2230100, 1050000, 1, 1, 0, 700), +(2230100, 1382012, 1, 1, 0, 700), +(2230100, 1050026, 1, 1, 0, 700), +(2230100, 1062006, 1, 1, 0, 700), +(2230100, 1040022, 1, 1, 0, 700), +(2230100, 1041060, 1, 1, 0, 700), +(2230100, 1061056, 1, 1, 0, 700), +(2230100, 1482003, 1, 1, 0, 700), +(2100107, 2000001, 1, 1, 0, 40000), +(2100107, 2000003, 1, 1, 0, 40000), +(2100107, 2060000, 10, 50, 0, 10000), +(2100107, 2061000, 10, 50, 0, 10000), +(2100107, 2070002, 1, 1, 0, 400), +(2100107, 2048001, 1, 1, 0, 750), +(2100107, 2381025, 1, 1, 0, 20000), +(2100107, 4020002, 1, 1, 0, 7000), +(2100107, 4020003, 1, 1, 0, 7000), +(2100107, 4010007, 1, 1, 0, 7000), +(2100107, 1051011, 1, 1, 0, 700), +(2100107, 1382017, 1, 1, 0, 700), +(2100107, 1002141, 1, 1, 0, 700), +(2100107, 1040059, 1, 1, 0, 700), +(2100107, 1060045, 1, 1, 0, 700), +(2100107, 1332004, 1, 1, 0, 700), +(2100107, 1492003, 1, 1, 0, 700), +(9400547, 4000391, 1, 1, 0, 200000), +(9400550, 4000391, 1, 1, 0, 200000), +(9400547, 4030012, 1, 1, 0, 10000), +(9400550, 4030012, 1, 1, 0, 10000), +(9400547, 4131010, 1, 1, 0, 3000), +(9400550, 4131010, 1, 1, 0, 3000), +(9400547, 2000002, 1, 1, 0, 40000), +(9400550, 2000002, 1, 1, 0, 40000), +(9400547, 2000003, 1, 1, 0, 40000), +(9400550, 2000003, 1, 1, 0, 40000), +(9400547, 2002007, 1, 1, 0, 10000), +(9400550, 2002007, 1, 1, 0, 10000), +(9400547, 2060000, 10, 50, 0, 10000), +(9400550, 2060000, 10, 50, 0, 10000), +(9400547, 2061000, 10, 50, 0, 10000), +(9400550, 2061000, 10, 50, 0, 10000), +(9400547, 2040801, 1, 1, 0, 750), +(9400550, 2040801, 1, 1, 0, 750), +(9400547, 2070002, 1, 1, 0, 400), +(9400550, 2070002, 1, 1, 0, 400), +(9400547, 4010001, 1, 1, 0, 7000), +(9400550, 4010001, 1, 1, 0, 7000), +(9400547, 4010002, 1, 1, 0, 7000), +(9400550, 4010002, 1, 1, 0, 7000), +(9400547, 4004002, 1, 1, 0, 3000), +(9400550, 4004002, 1, 1, 0, 3000), +(9400547, 1332010, 1, 1, 0, 700), +(9400550, 1332010, 1, 1, 0, 700), +(9400547, 1041041, 1, 1, 0, 700), +(9400550, 1041041, 1, 1, 0, 700), +(9400547, 1061034, 1, 1, 0, 700), +(9400550, 1061034, 1, 1, 0, 700), +(9400547, 1382002, 1, 1, 0, 700), +(9400550, 1382002, 1, 1, 0, 700), +(9400547, 1050028, 1, 1, 0, 700), +(9400550, 1050028, 1, 1, 0, 700), +(9400547, 1002162, 1, 1, 0, 700), +(9400550, 1002162, 1, 1, 0, 700), +(9400547, 1082042, 1, 1, 0, 700), +(9400550, 1082042, 1, 1, 0, 700), +(9400547, 1082043, 1, 1, 0, 700), +(9400550, 1082043, 1, 1, 0, 700), +(9400547, 1332010, 1, 1, 0, 700), +(9400550, 1332010, 1, 1, 0, 700), +(9400547, 1472018, 1, 1, 0, 700), +(9400550, 1472018, 1, 1, 0, 700), +(2100104, 4000331, 1, 1, 0, 200000), +(9300222, 4000331, 1, 1, 0, 200000), +(2100104, 2000001, 1, 1, 0, 40000), +(9300222, 2000001, 1, 1, 0, 40000), +(2100104, 2002003, 1, 1, 0, 10000), +(9300222, 2002003, 1, 1, 0, 10000), +(2100104, 2022155, 1, 1, 0, 3000), +(9300222, 2022155, 1, 1, 0, 3000), +(2100104, 2060000, 10, 50, 0, 10000), +(9300222, 2060000, 10, 50, 0, 10000), +(2100104, 2061000, 10, 50, 0, 10000), +(9300222, 2061000, 10, 50, 0, 10000), +(2100104, 2041044, 1, 1, 0, 750), +(9300222, 2041044, 1, 1, 0, 750), +(2100104, 2043216, 1, 1, 0, 750), +(9300222, 2043216, 1, 1, 0, 750), +(2100104, 2381028, 1, 1, 0, 20000), +(9300222, 2381028, 1, 1, 0, 20000), +(2100104, 4020006, 1, 1, 0, 7000), +(9300222, 4020006, 1, 1, 0, 7000), +(2100104, 4020005, 1, 1, 0, 7000), +(9300222, 4020005, 1, 1, 0, 7000), +(2100104, 4004001, 1, 1, 0, 3000), +(9300222, 4004001, 1, 1, 0, 3000), +(2100104, 4010007, 1, 1, 0, 7000), +(9300222, 4010007, 1, 1, 0, 7000), +(2100104, 1322003, 1, 1, 0, 700), +(9300222, 1322003, 1, 1, 0, 700), +(2100104, 1442001, 1, 1, 0, 700), +(9300222, 1442001, 1, 1, 0, 700), +(2100104, 1002004, 1, 1, 0, 700), +(9300222, 1002004, 1, 1, 0, 700), +(2100104, 1082052, 1, 1, 0, 700), +(9300222, 1082052, 1, 1, 0, 700), +(2100104, 1092019, 1, 1, 0, 700), +(9300222, 1092019, 1, 1, 0, 700), +(2100104, 1082186, 1, 1, 0, 700), +(9300222, 1082186, 1, 1, 0, 700), +(9420500, 4000370, 1, 1, 0, 200000), +(9420500, 4000369, 1, 1, 0, 200000), +(9420500, 2002002, 1, 1, 0, 10000), +(9420500, 2000001, 1, 1, 0, 40000), +(9420500, 2002003, 1, 1, 0, 10000), +(9420500, 2060000, 10, 50, 0, 10000), +(9420500, 2061000, 10, 50, 0, 10000), +(9420500, 2044002, 1, 1, 0, 750), +(9420500, 4010006, 1, 1, 0, 7000), +(9420500, 4020005, 1, 1, 0, 7000), +(9420500, 1092007, 1, 1, 0, 700), +(9420500, 1002141, 1, 1, 0, 700), +(9420500, 1060052, 1, 1, 0, 700), +(9420500, 1332001, 1, 1, 0, 700), +(9420500, 1002178, 1, 1, 0, 700), +(9420500, 1051007, 1, 1, 0, 700), +(9420500, 1051009, 1, 1, 0, 700), +(2230104, 4000098, 1, 1, 0, 200000), +(2230104, 4131010, 1, 1, 0, 3000), +(2230104, 2000002, 1, 1, 0, 40000), +(2230104, 2000003, 1, 1, 0, 40000), +(2230104, 2002007, 1, 1, 0, 10000), +(2230104, 2040601, 1, 1, 0, 750), +(2230104, 2070002, 1, 1, 0, 400), +(2230104, 2381027, 1, 1, 0, 20000), +(2230104, 4010002, 1, 1, 0, 7000), +(2230104, 4010001, 1, 1, 0, 7000), +(2230104, 4004002, 1, 1, 0, 3000), +(2230104, 1302020, 1, 1, 0, 700), +(2230104, 1332010, 1, 1, 0, 700), +(2230104, 1041041, 1, 1, 0, 700), +(2230104, 1061034, 1, 1, 0, 700), +(2230104, 1382002, 1, 1, 0, 700), +(2230104, 1050028, 1, 1, 0, 700), +(2230104, 1082043, 1, 1, 0, 700), +(2230104, 1332010, 1, 1, 0, 700), +(2230104, 1052104, 1, 1, 0, 700), +(2230109, 4031209, 1, 1, 0, 7000), +(9410016, 4031209, 1, 1, 0, 7000), +(2230109, 4131010, 1, 1, 0, 3000), +(9410016, 4131010, 1, 1, 0, 3000), +(2230109, 2000002, 1, 1, 0, 40000), +(9410016, 2000002, 1, 1, 0, 40000), +(2230109, 2002002, 1, 1, 0, 10000), +(9410016, 2002002, 1, 1, 0, 10000), +(2230109, 2070002, 1, 1, 0, 400), +(9410016, 2070002, 1, 1, 0, 400), +(2230109, 2040801, 1, 1, 0, 750), +(9410016, 2040801, 1, 1, 0, 750), +(2230109, 2040707, 1, 1, 0, 750), +(9410016, 2040707, 1, 1, 0, 750), +(2230109, 4006000, 1, 1, 0, 7000), +(9410016, 4006000, 1, 1, 0, 7000), +(2230109, 2381026, 1, 1, 0, 20000), +(9410016, 2381026, 1, 1, 0, 20000), +(2230109, 4010001, 1, 1, 0, 7000), +(9410016, 4010001, 1, 1, 0, 7000), +(2230109, 4020003, 1, 1, 0, 7000), +(9410016, 4020003, 1, 1, 0, 7000), +(2230109, 4004002, 1, 1, 0, 3000), +(9410016, 4004002, 1, 1, 0, 3000), +(2230109, 1442011, 1, 1, 0, 700), +(9410016, 1442011, 1, 1, 0, 700), +(2230109, 1322024, 1, 1, 0, 700), +(9410016, 1322024, 1, 1, 0, 700), +(2230109, 1032007, 1, 1, 0, 700), +(9410016, 1032007, 1, 1, 0, 700), +(2230109, 1072027, 1, 1, 0, 700), +(9410016, 1072027, 1, 1, 0, 700), +(2230109, 1040041, 1, 1, 0, 700), +(9410016, 1040041, 1, 1, 0, 700), +(2230109, 1060030, 1, 1, 0, 700), +(9410016, 1060030, 1, 1, 0, 700), +(2230109, 1050021, 1, 1, 0, 700), +(9410016, 1050021, 1, 1, 0, 700), +(2230109, 1002065, 1, 1, 0, 700), +(9410016, 1002065, 1, 1, 0, 700), +(2230109, 1060051, 1, 1, 0, 700), +(9410016, 1060051, 1, 1, 0, 700), +(2230109, 1051007, 1, 1, 0, 700), +(9410016, 1051007, 1, 1, 0, 700), +(2230109, 1002619, 1, 1, 0, 700), +(9410016, 1002619, 1, 1, 0, 700), +(2230200, 4000165, 1, 1, 0, 200000), +(2230200, 4031209, 1, 1, 0, 7000), +(2230200, 4006000, 1, 1, 0, 7000), +(2230200, 2000001, 1, 1, 0, 40000), +(2230200, 2040501, 1, 1, 0, 750), +(2230200, 2044601, 1, 1, 0, 750), +(2230200, 2381029, 1, 1, 0, 20000), +(2230200, 4010006, 1, 1, 0, 7000), +(2230200, 4020002, 1, 1, 0, 7000), +(2230200, 4004000, 1, 1, 0, 3000), +(2230200, 1322024, 1, 1, 0, 700), +(2230200, 1412000, 1, 1, 0, 700), +(2230200, 1412006, 1, 1, 0, 700), +(2230200, 1422001, 1, 1, 0, 700), +(2230200, 1462000, 1, 1, 0, 700), +(2230200, 1002160, 1, 1, 0, 700), +(2230200, 1040072, 1, 1, 0, 700), +(2230200, 1040062, 1, 1, 0, 700), +(2230200, 1060051, 1, 1, 0, 700), +(2230200, 1072291, 1, 1, 0, 700), +(2110301, 4000351, 1, 1, 0, 200000), +(9300157, 4000351, 1, 1, 0, 200000), +(2110301, 2000001, 1, 1, 0, 40000), +(9300157, 2000001, 1, 1, 0, 40000), +(2110301, 2000003, 1, 1, 0, 40000), +(9300157, 2000003, 1, 1, 0, 40000), +(2110301, 2330001, 1, 1, 0, 400), +(9300157, 2330001, 1, 1, 0, 400), +(2110301, 2043701, 1, 1, 0, 750), +(9300157, 2043701, 1, 1, 0, 750), +(2110301, 2043002, 1, 1, 0, 750), +(9300157, 2043002, 1, 1, 0, 750), +(2110301, 2381031, 1, 1, 0, 20000), +(9300157, 2381031, 1, 1, 0, 20000), +(2110301, 4004002, 1, 1, 0, 3000), +(9300157, 4004002, 1, 1, 0, 3000), +(2110301, 4010007, 1, 1, 0, 7000), +(9300157, 4010007, 1, 1, 0, 7000), +(2110301, 4010001, 1, 1, 0, 7000), +(9300157, 4010001, 1, 1, 0, 7000), +(2110301, 1332009, 1, 1, 0, 700), +(9300157, 1332009, 1, 1, 0, 700), +(2110301, 1082005, 1, 1, 0, 700), +(9300157, 1082005, 1, 1, 0, 700), +(2110301, 1050029, 1, 1, 0, 700), +(9300157, 1050029, 1, 1, 0, 700), +(2110301, 1002164, 1, 1, 0, 700), +(9300157, 1002164, 1, 1, 0, 700), +(2110301, 1332009, 1, 1, 0, 700), +(9300157, 1332009, 1, 1, 0, 700), +(2110301, 1040062, 1, 1, 0, 700), +(9300157, 1040062, 1, 1, 0, 700), +(2110301, 1492003, 1, 1, 0, 700), +(9300157, 1492003, 1, 1, 0, 700), +(9400010, 4000065, 1, 1, 0, 200000), +(9400010, 4130013, 1, 1, 0, 3000), +(9400010, 4130002, 1, 1, 0, 3000), +(9400010, 4130001, 1, 1, 0, 3000), +(9400010, 2022023, 1, 1, 0, 3000), +(9400010, 2022024, 1, 1, 0, 3000), +(9400010, 2040408, 1, 1, 0, 750), +(9400010, 2044209, 1, 1, 0, 750), +(9400010, 4010006, 1, 1, 0, 7000), +(9400010, 4020004, 1, 1, 0, 7000), +(9400010, 1332020, 1, 1, 0, 700), +(9400010, 1032004, 1, 1, 0, 700), +(9400010, 1442021, 1, 1, 0, 700), +(9400010, 1432016, 1, 1, 0, 700), +(9400010, 1322015, 1, 1, 0, 700), +(9400010, 1322010, 1, 1, 0, 700), +(9400010, 1322011, 1, 1, 0, 700), +(9400010, 1072076, 1, 1, 0, 700), +(9400010, 1072077, 1, 1, 0, 700), +(9400010, 1041067, 1, 1, 0, 700), +(9400010, 1041068, 1, 1, 0, 700), +(9400010, 1060063, 1, 1, 0, 700), +(9400010, 1060064, 1, 1, 0, 700), +(9400010, 1051008, 1, 1, 0, 700), +(5200001, 4000084, 1, 1, 0, 200000), +(5200001, 2000001, 1, 1, 0, 40000), +(5200001, 2000003, 1, 1, 0, 40000), +(5200001, 2060001, 10, 50, 0, 10000), +(5200001, 2061001, 10, 50, 0, 10000), +(5200001, 4006000, 1, 1, 0, 7000), +(5200001, 4006001, 1, 1, 0, 7000), +(5200001, 2041016, 1, 1, 0, 750), +(5200001, 2381037, 1, 1, 0, 20000), +(5200001, 2049000, 1, 1, 0, 400), +(5200001, 4010002, 1, 1, 0, 7000), +(5200001, 4020002, 1, 1, 0, 7000), +(5200001, 4004001, 1, 1, 0, 3000), +(5200001, 1322009, 1, 1, 0, 700), +(5200001, 1442003, 1, 1, 0, 700), +(5200001, 1422007, 1, 1, 0, 700), +(5200001, 1050026, 1, 1, 0, 700), +(5200001, 1002142, 1, 1, 0, 700), +(5200001, 1040024, 1, 1, 0, 700), +(5200001, 1062006, 1, 1, 0, 700), +(5200001, 1041047, 1, 1, 0, 700), +(5200001, 1061043, 1, 1, 0, 700), +(5200002, 4000085, 1, 1, 0, 200000), +(5200002, 2000001, 1, 1, 0, 40000), +(5200002, 2000003, 1, 1, 0, 40000), +(5200002, 2060001, 10, 50, 0, 10000), +(5200002, 2061001, 10, 50, 0, 10000), +(5200002, 4006000, 1, 1, 0, 7000), +(5200002, 2040805, 1, 1, 0, 750), +(5200002, 2381038, 1, 1, 0, 20000), +(5200002, 4010005, 1, 1, 0, 7000), +(5200002, 4020000, 1, 1, 0, 7000), +(5200002, 4004001, 1, 1, 0, 3000), +(5200002, 1032009, 1, 1, 0, 700), +(5200002, 1050000, 1, 1, 0, 700), +(5200002, 1041064, 1, 1, 0, 700), +(5200002, 1082052, 1, 1, 0, 700), +(5200002, 1061050, 1, 1, 0, 700), +(5200002, 1452006, 1, 1, 0, 700), +(5200002, 1041059, 1, 1, 0, 700), +(5200002, 1061055, 1, 1, 0, 700), +(3000000, 4000063, 1, 1, 0, 200000), +(3000000, 2000001, 1, 1, 0, 40000), +(3000000, 2000003, 1, 1, 0, 40000), +(3000000, 2041046, 1, 1, 0, 750), +(3000000, 2041045, 1, 1, 0, 750), +(3000000, 2041016, 1, 1, 0, 750), +(3000000, 4006000, 1, 1, 0, 7000), +(3000000, 2381032, 1, 1, 0, 20000), +(3000000, 4010002, 1, 1, 0, 7000), +(3000000, 4020004, 1, 1, 0, 7000), +(3000000, 4004000, 1, 1, 0, 3000), +(3000000, 1312016, 1, 1, 0, 700), +(3000000, 1040021, 1, 1, 0, 700), +(3000000, 1382009, 1, 1, 0, 700), +(3000000, 1382018, 1, 1, 0, 700), +(3000000, 1002137, 1, 1, 0, 700), +(3000000, 1040061, 1, 1, 0, 700), +(3000000, 1082037, 1, 1, 0, 700), +(3000000, 1002622, 1, 1, 0, 700), +(9400002, 4000066, 1, 1, 0, 200000), +(9400002, 4130015, 1, 1, 0, 3000), +(9400002, 4130013, 1, 1, 0, 3000), +(9400002, 4130014, 1, 1, 0, 3000), +(9400002, 2044002, 1, 1, 0, 750), +(9400002, 2044009, 1, 1, 0, 750), +(9400002, 2043109, 1, 1, 0, 750), +(9400002, 2048001, 1, 1, 0, 750), +(9400002, 4020001, 1, 1, 0, 7000), +(9400002, 4010001, 1, 1, 0, 7000), +(9400002, 1322027, 1, 1, 0, 700), +(9400002, 1302031, 1, 1, 0, 700), +(9400002, 1302017, 1, 1, 0, 700), +(9400002, 1002418, 1, 1, 0, 700), +(9400002, 1051014, 1, 1, 0, 700), +(9400002, 1312006, 1, 1, 0, 700), +(9400002, 1072039, 1, 1, 0, 700), +(9400002, 1040073, 1, 1, 0, 700), +(9400002, 1462004, 1, 1, 0, 700), +(9400002, 1002138, 1, 1, 0, 700), +(9400002, 1002139, 1, 1, 0, 700), +(3230400, 4000127, 1, 1, 0, 200000), +(9200016, 4000127, 1, 1, 0, 200000), +(9400238, 4000127, 1, 1, 0, 200000), +(9400247, 4000127, 1, 1, 0, 200000), +(9500107, 4000127, 1, 1, 0, 200000), +(3230400, 4030009, 1, 1, 0, 10000), +(9200016, 4030009, 1, 1, 0, 10000), +(9400238, 4030009, 1, 1, 0, 10000), +(9400247, 4030009, 1, 1, 0, 10000), +(9500107, 4030009, 1, 1, 0, 10000), +(3230400, 4130012, 1, 1, 0, 3000), +(9200016, 4130012, 1, 1, 0, 3000), +(9400238, 4130012, 1, 1, 0, 3000), +(9400247, 4130012, 1, 1, 0, 3000), +(9500107, 4130012, 1, 1, 0, 3000), +(3230400, 4130015, 1, 1, 0, 3000), +(9200016, 4130015, 1, 1, 0, 3000), +(9400238, 4130015, 1, 1, 0, 3000), +(9400247, 4130015, 1, 1, 0, 3000), +(9500107, 4130015, 1, 1, 0, 3000), +(3230400, 4130013, 1, 1, 0, 3000), +(9200016, 4130013, 1, 1, 0, 3000), +(9400238, 4130013, 1, 1, 0, 3000), +(9400247, 4130013, 1, 1, 0, 3000), +(9500107, 4130013, 1, 1, 0, 3000), +(3230400, 2000002, 1, 1, 0, 40000), +(9200016, 2000002, 1, 1, 0, 40000), +(9400238, 2000002, 1, 1, 0, 40000), +(9400247, 2000002, 1, 1, 0, 40000), +(9500107, 2000002, 1, 1, 0, 40000), +(3230400, 2000003, 1, 1, 0, 40000), +(9200016, 2000003, 1, 1, 0, 40000), +(9400238, 2000003, 1, 1, 0, 40000), +(9400247, 2000003, 1, 1, 0, 40000), +(9500107, 2000003, 1, 1, 0, 40000), +(3230400, 2044902, 1, 1, 0, 750), +(9200016, 2044902, 1, 1, 0, 750), +(9400238, 2044902, 1, 1, 0, 750), +(9400247, 2044902, 1, 1, 0, 750), +(9500107, 2044902, 1, 1, 0, 750), +(3230400, 2043201, 1, 1, 0, 750), +(9200016, 2043201, 1, 1, 0, 750), +(9400238, 2043201, 1, 1, 0, 750), +(9400247, 2043201, 1, 1, 0, 750), +(9500107, 2043201, 1, 1, 0, 750), +(3230400, 2070002, 1, 1, 0, 400), +(9200016, 2070002, 1, 1, 0, 400), +(9400238, 2070002, 1, 1, 0, 400), +(9400247, 2070002, 1, 1, 0, 400), +(9500107, 2070002, 1, 1, 0, 400), +(3230400, 2049101, 1, 1, 0, 400), +(9200016, 2049101, 1, 1, 0, 400), +(9400238, 2049101, 1, 1, 0, 400), +(9400247, 2049101, 1, 1, 0, 400), +(9500107, 2049101, 1, 1, 0, 400), +(3230400, 4006001, 1, 1, 0, 7000), +(9200016, 4006001, 1, 1, 0, 7000), +(9400238, 4006001, 1, 1, 0, 7000), +(9400247, 4006001, 1, 1, 0, 7000), +(9500107, 4006001, 1, 1, 0, 7000), +(3230400, 2382001, 1, 1, 0, 20000), +(9200016, 2382001, 1, 1, 0, 20000), +(9400238, 2382001, 1, 1, 0, 20000), +(9400247, 2382001, 1, 1, 0, 20000), +(9500107, 2382001, 1, 1, 0, 20000), +(3230400, 4020007, 1, 1, 0, 7000), +(9200016, 4020007, 1, 1, 0, 7000), +(9400238, 4020007, 1, 1, 0, 7000), +(9400247, 4020007, 1, 1, 0, 7000), +(9500107, 4020007, 1, 1, 0, 7000), +(3230400, 4010001, 1, 1, 0, 7000), +(9200016, 4010001, 1, 1, 0, 7000), +(9400238, 4010001, 1, 1, 0, 7000), +(9400247, 4010001, 1, 1, 0, 7000), +(9500107, 4010001, 1, 1, 0, 7000), +(3230400, 4004004, 1, 1, 0, 3000), +(9200016, 4004004, 1, 1, 0, 3000), +(9400238, 4004004, 1, 1, 0, 3000), +(9400247, 4004004, 1, 1, 0, 3000), +(9500107, 4004004, 1, 1, 0, 3000), +(3230400, 1092008, 1, 1, 0, 700), +(9200016, 1092008, 1, 1, 0, 700), +(9400238, 1092008, 1, 1, 0, 700), +(9400247, 1092008, 1, 1, 0, 700), +(9500107, 1092008, 1, 1, 0, 700), +(3230400, 1302013, 1, 1, 0, 700), +(9200016, 1302013, 1, 1, 0, 700), +(9400238, 1302013, 1, 1, 0, 700), +(9400247, 1302013, 1, 1, 0, 700), +(9500107, 1302013, 1, 1, 0, 700), +(3230400, 1402010, 1, 1, 0, 700), +(9200016, 1402010, 1, 1, 0, 700), +(9400238, 1402010, 1, 1, 0, 700), +(9400247, 1402010, 1, 1, 0, 700), +(9500107, 1402010, 1, 1, 0, 700), +(3230400, 1050011, 1, 1, 0, 700), +(9200016, 1050011, 1, 1, 0, 700), +(9400238, 1050011, 1, 1, 0, 700), +(9400247, 1050011, 1, 1, 0, 700), +(9500107, 1050011, 1, 1, 0, 700), +(3230400, 1402008, 1, 1, 0, 700), +(9200016, 1402008, 1, 1, 0, 700), +(9400238, 1402008, 1, 1, 0, 700), +(9400247, 1402008, 1, 1, 0, 700), +(9500107, 1402008, 1, 1, 0, 700), +(3230400, 1041084, 1, 1, 0, 700), +(9200016, 1041084, 1, 1, 0, 700), +(9400238, 1041084, 1, 1, 0, 700), +(9400247, 1041084, 1, 1, 0, 700), +(9500107, 1041084, 1, 1, 0, 700), +(3230400, 1061083, 1, 1, 0, 700), +(9200016, 1061083, 1, 1, 0, 700), +(9400238, 1061083, 1, 1, 0, 700), +(9400247, 1061083, 1, 1, 0, 700), +(9500107, 1061083, 1, 1, 0, 700), +(3230400, 1072132, 1, 1, 0, 700), +(9200016, 1072132, 1, 1, 0, 700), +(9400238, 1072132, 1, 1, 0, 700), +(9400247, 1072132, 1, 1, 0, 700), +(9500107, 1072132, 1, 1, 0, 700), +(3230400, 1082053, 1, 1, 0, 700), +(9200016, 1082053, 1, 1, 0, 700), +(9400238, 1082053, 1, 1, 0, 700), +(9400247, 1082053, 1, 1, 0, 700), +(9500107, 1082053, 1, 1, 0, 700), +(3230400, 1372000, 1, 1, 0, 700), +(9200016, 1372000, 1, 1, 0, 700), +(9400238, 1372000, 1, 1, 0, 700), +(9400247, 1372000, 1, 1, 0, 700), +(9500107, 1372000, 1, 1, 0, 700), +(3230400, 1002144, 1, 1, 0, 700), +(9200016, 1002144, 1, 1, 0, 700), +(9400238, 1002144, 1, 1, 0, 700), +(9400247, 1002144, 1, 1, 0, 700), +(9500107, 1002144, 1, 1, 0, 700), +(3230400, 1452022, 1, 1, 0, 700), +(9200016, 1452022, 1, 1, 0, 700), +(9400238, 1452022, 1, 1, 0, 700), +(9400247, 1452022, 1, 1, 0, 700), +(9500107, 1452022, 1, 1, 0, 700), +(3230400, 1040025, 1, 1, 0, 700), +(9200016, 1040025, 1, 1, 0, 700), +(9400238, 1040025, 1, 1, 0, 700), +(9400247, 1040025, 1, 1, 0, 700), +(9500107, 1040025, 1, 1, 0, 700), +(3230400, 1040074, 1, 1, 0, 700), +(9200016, 1040074, 1, 1, 0, 700), +(9400238, 1040074, 1, 1, 0, 700), +(9400247, 1040074, 1, 1, 0, 700), +(9500107, 1040074, 1, 1, 0, 700), +(3230400, 1060063, 1, 1, 0, 700), +(9200016, 1060063, 1, 1, 0, 700), +(9400238, 1060063, 1, 1, 0, 700), +(9400247, 1060063, 1, 1, 0, 700), +(9500107, 1060063, 1, 1, 0, 700), +(3230400, 1062006, 1, 1, 0, 700), +(9200016, 1062006, 1, 1, 0, 700), +(9400238, 1062006, 1, 1, 0, 700), +(9400247, 1062006, 1, 1, 0, 700), +(9500107, 1062006, 1, 1, 0, 700), +(3230400, 1041049, 1, 1, 0, 700), +(9200016, 1041049, 1, 1, 0, 700), +(9400238, 1041049, 1, 1, 0, 700), +(9400247, 1041049, 1, 1, 0, 700), +(9500107, 1041049, 1, 1, 0, 700), +(3230400, 1061045, 1, 1, 0, 700), +(9200016, 1061045, 1, 1, 0, 700), +(9400238, 1061045, 1, 1, 0, 700), +(9400247, 1061045, 1, 1, 0, 700), +(9500107, 1061045, 1, 1, 0, 700), +(3230400, 1492004, 1, 1, 0, 700), +(9200016, 1492004, 1, 1, 0, 700), +(9400238, 1492004, 1, 1, 0, 700), +(9400247, 1492004, 1, 1, 0, 700), +(9500107, 1492004, 1, 1, 0, 700), +(3000006, 4000166, 1, 1, 0, 200000), +(3000006, 4031209, 1, 1, 0, 7000), +(3000006, 4131003, 1, 1, 0, 3000), +(3000006, 2000002, 1, 1, 0, 40000), +(3000006, 2000003, 1, 1, 0, 40000), +(3000006, 2040601, 1, 1, 0, 750), +(3000006, 2040530, 1, 1, 0, 750), +(3000006, 2040424, 1, 1, 0, 750), +(3000006, 2381035, 1, 1, 0, 20000), +(3000006, 2060000, 10, 50, 0, 10000), +(3000006, 2061000, 10, 50, 0, 10000), +(3000006, 4010005, 1, 1, 0, 7000), +(3000006, 4020001, 1, 1, 0, 7000), +(3000006, 4004001, 1, 1, 0, 3000), +(3000006, 1082005, 1, 1, 0, 700), +(3000006, 1382017, 1, 1, 0, 700), +(3000006, 1050002, 1, 1, 0, 700), +(3000006, 1040040, 1, 1, 0, 700), +(3000006, 1060060, 1, 1, 0, 700), +(3000006, 1041052, 1, 1, 0, 700), +(3000006, 1061048, 1, 1, 0, 700), +(3000006, 1462000, 1, 1, 0, 700), +(3000006, 1082046, 1, 1, 0, 700), +(3000006, 1072086, 1, 1, 0, 700), +(3000006, 1072103, 1, 1, 0, 700), +(3000006, 1082189, 1, 1, 0, 700), +(9400548, 4031937, 1, 1, 0, 7000), +(9400548, 2000001, 1, 1, 0, 40000), +(9400548, 2060000, 10, 50, 0, 10000), +(9400548, 2061000, 10, 50, 0, 10000), +(9400548, 2041046, 1, 1, 0, 750), +(9400548, 4010002, 1, 1, 0, 7000), +(9400548, 4020004, 1, 1, 0, 7000), +(9400548, 4020007, 1, 1, 0, 7000), +(9400548, 4004003, 1, 1, 0, 3000), +(9400548, 1032006, 1, 1, 0, 700), +(9400548, 1040021, 1, 1, 0, 700), +(9400548, 1312016, 1, 1, 0, 700), +(9400548, 1412003, 1, 1, 0, 700), +(9400548, 1312008, 1, 1, 0, 700), +(9400548, 1060017, 1, 1, 0, 700), +(9400548, 1382018, 1, 1, 0, 700), +(9400548, 1002137, 1, 1, 0, 700), +(9400548, 1060050, 1, 1, 0, 700), +(9400548, 1082037, 1, 1, 0, 700), +(9400557, 2022245, 1, 1, 0, 3000), +(9400558, 4000399, 1, 1, 0, 200000), +(9400558, 4003000, 1, 1, 0, 7000), +(9400558, 2000003, 1, 1, 0, 40000), +(9400558, 2000002, 1, 1, 0, 40000), +(9400558, 2022244, 1, 1, 0, 3000), +(9400558, 2060000, 10, 50, 0, 10000), +(9400558, 2061000, 10, 50, 0, 10000), +(9400558, 2041044, 1, 1, 0, 750), +(9400558, 1082008, 1, 1, 0, 700), +(9400558, 1302004, 1, 1, 0, 700), +(9400558, 1002036, 1, 1, 0, 700), +(9400558, 1002152, 1, 1, 0, 700), +(9400558, 1051004, 1, 1, 0, 700), +(9400558, 1072120, 1, 1, 0, 700), +(9400558, 1332004, 1, 1, 0, 700), +(9400558, 1002183, 1, 1, 0, 700), +(3100102, 4003004, 1, 1, 0, 7000), +(3100102, 2000002, 1, 1, 0, 40000), +(3100102, 2000003, 1, 1, 0, 40000), +(3100102, 2060000, 10, 50, 0, 10000), +(3100102, 2061000, 10, 50, 0, 10000), +(3100102, 4006000, 1, 1, 0, 7000), +(3100102, 2040401, 1, 1, 0, 750), +(3100102, 2041018, 1, 1, 0, 750), +(3100102, 2381036, 1, 1, 0, 20000), +(3100102, 4020002, 1, 1, 0, 7000), +(3100102, 4010007, 1, 1, 0, 7000), +(3100102, 1050022, 1, 1, 0, 700), +(3100102, 1041052, 1, 1, 0, 700), +(3100102, 1061048, 1, 1, 0, 700), +(3100102, 1082069, 1, 1, 0, 700), +(3100102, 1462004, 1, 1, 0, 700), +(3100102, 1472011, 1, 1, 0, 700), +(3100102, 1002181, 1, 1, 0, 700), +(3100102, 1072294, 1, 1, 0, 700), +(3300000, 4000499, 1, 1, 0, 200000), +(3300000, 4130021, 1, 1, 0, 3000), +(3300000, 4130009, 1, 1, 0, 3000), +(3300000, 4130005, 1, 1, 0, 3000), +(3300000, 2382092, 1, 1, 0, 20000), +(3300000, 2000003, 1, 1, 0, 40000), +(3300000, 2000002, 1, 1, 0, 40000), +(3300000, 2060000, 10, 50, 0, 10000), +(3300000, 2061000, 10, 50, 0, 10000), +(3300000, 2044701, 1, 1, 0, 750), +(3300000, 4010005, 1, 1, 0, 7000), +(3300000, 4020000, 1, 1, 0, 7000), +(3300000, 1332020, 1, 1, 0, 700), +(3300000, 1402010, 1, 1, 0, 700), +(3300000, 1032007, 1, 1, 0, 700), +(3300000, 1040000, 1, 1, 0, 700), +(3300000, 1060075, 1, 1, 0, 700), +(3300000, 1072078, 1, 1, 0, 700), +(3300000, 1002156, 1, 1, 0, 700), +(3300000, 1082046, 1, 1, 0, 700), +(3300000, 1002622, 1, 1, 0, 700), +(3300001, 4000500, 1, 1, 0, 200000), +(3300001, 4000507, 1, 1, 0, 200000), +(3300001, 4130021, 1, 1, 0, 3000), +(3300001, 2382093, 1, 1, 0, 20000), +(3300001, 2044701, 1, 1, 0, 750), +(3300001, 2000002, 1, 1, 0, 40000), +(3300001, 2061000, 10, 50, 0, 10000), +(3300001, 2060000, 10, 50, 0, 10000), +(3300001, 2000003, 1, 1, 0, 40000), +(3300001, 4010005, 1, 1, 0, 7000), +(3300001, 4020000, 1, 1, 0, 7000), +(3300001, 4010007, 1, 1, 0, 7000), +(3300001, 1332020, 1, 1, 0, 700), +(3300001, 1402010, 1, 1, 0, 700), +(3300001, 1032007, 1, 1, 0, 700), +(3300001, 1040000, 1, 1, 0, 700), +(3300001, 1060075, 1, 1, 0, 700), +(3300001, 1072078, 1, 1, 0, 700), +(3300001, 1002156, 1, 1, 0, 700), +(3300001, 1082046, 1, 1, 0, 700), +(3300001, 1002622, 1, 1, 0, 700), +(3000005, 4131003, 1, 1, 0, 3000), +(9300127, 4131003, 1, 1, 0, 3000), +(3000005, 2000002, 1, 1, 0, 40000), +(9300127, 2000002, 1, 1, 0, 40000), +(3000005, 2000003, 1, 1, 0, 40000), +(9300127, 2000003, 1, 1, 0, 40000), +(3000005, 2040701, 1, 1, 0, 750), +(9300127, 2040701, 1, 1, 0, 750), +(3000005, 2381034, 1, 1, 0, 20000), +(9300127, 2381034, 1, 1, 0, 20000), +(3000005, 4020000, 1, 1, 0, 7000), +(9300127, 4020000, 1, 1, 0, 7000), +(3000005, 4010001, 1, 1, 0, 7000), +(9300127, 4010001, 1, 1, 0, 7000), +(3000005, 4004001, 1, 1, 0, 3000), +(9300127, 4004001, 1, 1, 0, 3000), +(3000005, 1422014, 1, 1, 0, 700), +(9300127, 1422014, 1, 1, 0, 700), +(3000005, 1322014, 1, 1, 0, 700), +(9300127, 1322014, 1, 1, 0, 700), +(3000005, 1082007, 1, 1, 0, 700), +(9300127, 1082007, 1, 1, 0, 700), +(3000005, 1050030, 1, 1, 0, 700), +(9300127, 1050030, 1, 1, 0, 700), +(3000005, 1002013, 1, 1, 0, 700), +(9300127, 1002013, 1, 1, 0, 700), +(3000005, 1462000, 1, 1, 0, 700), +(9300127, 1462000, 1, 1, 0, 700), +(3000005, 1072101, 1, 1, 0, 700), +(9300127, 1072101, 1, 1, 0, 700), +(3000005, 1041058, 1, 1, 0, 700), +(9300127, 1041058, 1, 1, 0, 700), +(3000005, 1061054, 1, 1, 0, 700), +(9300127, 1061054, 1, 1, 0, 700), +(3000005, 1040058, 1, 1, 0, 700), +(9300127, 1040058, 1, 1, 0, 700), +(3000005, 1060044, 1, 1, 0, 700), +(9300127, 1060044, 1, 1, 0, 700), +(3000005, 1472014, 1, 1, 0, 700), +(9300127, 1472014, 1, 1, 0, 700), +(3000005, 1082046, 1, 1, 0, 700), +(9300127, 1082046, 1, 1, 0, 700), +(3000005, 1052107, 1, 1, 0, 700), +(9300127, 1052107, 1, 1, 0, 700), +(3230307, 4000123, 1, 1, 0, 200000), +(3230307, 4000003, 1, 1, 0, 200000), +(3230307, 4130014, 1, 1, 0, 3000), +(3230307, 2000002, 1, 1, 0, 40000), +(3230307, 2000003, 1, 1, 0, 40000), +(3230307, 2070003, 1, 1, 0, 400), +(3230307, 2382000, 1, 1, 0, 20000), +(3230307, 4020008, 1, 1, 0, 7000), +(3230307, 4004001, 1, 1, 0, 3000), +(3230307, 1082023, 1, 1, 0, 700), +(3230307, 1082008, 1, 1, 0, 700), +(3230307, 1302004, 1, 1, 0, 700), +(3230307, 1051004, 1, 1, 0, 700), +(3230307, 1002152, 1, 1, 0, 700), +(3230307, 1051032, 1, 1, 0, 700), +(3230307, 1002036, 1, 1, 0, 700), +(3230307, 1072120, 1, 1, 0, 700), +(3230307, 1002183, 1, 1, 0, 700), +(3230307, 1332004, 1, 1, 0, 700), +(3300002, 4000501, 1, 1, 0, 200000), +(3300002, 4131003, 1, 1, 0, 3000), +(3300002, 2382094, 1, 1, 0, 20000), +(3300002, 2060000, 10, 50, 0, 10000), +(3300002, 2061000, 10, 50, 0, 10000), +(3300002, 2000002, 1, 1, 0, 40000), +(3300002, 2000003, 1, 1, 0, 40000), +(3300002, 2040701, 1, 1, 0, 750), +(3300002, 4010001, 1, 1, 0, 7000), +(3300002, 4020000, 1, 1, 0, 7000), +(3300002, 4004001, 1, 1, 0, 3000), +(3300002, 1322014, 1, 1, 0, 700), +(3300002, 1050030, 1, 1, 0, 700), +(3300002, 1002013, 1, 1, 0, 700), +(3300002, 1462000, 1, 1, 0, 700), +(3300002, 1072101, 1, 1, 0, 700), +(3300002, 1040058, 1, 1, 0, 700), +(3300002, 1060044, 1, 1, 0, 700), +(3300002, 1041058, 1, 1, 0, 700), +(3300002, 1061054, 1, 1, 0, 700), +(3300002, 1052107, 1, 1, 0, 700), +(3110100, 4000032, 1, 1, 0, 200000), +(9300234, 4000032, 1, 1, 0, 200000), +(9500108, 4000032, 1, 1, 0, 200000), +(3110100, 4031164, 1, 1, 0, 7000), +(9300234, 4031164, 1, 1, 0, 7000), +(9500108, 4031164, 1, 1, 0, 7000), +(3110100, 4031405, 1, 1, 0, 7000), +(9300234, 4031405, 1, 1, 0, 7000), +(9500108, 4031405, 1, 1, 0, 7000), +(3110100, 2000002, 1, 1, 0, 40000), +(9300234, 2000002, 1, 1, 0, 40000), +(9500108, 2000002, 1, 1, 0, 40000), +(3110100, 2000003, 1, 1, 0, 40000), +(9300234, 2000003, 1, 1, 0, 40000), +(9500108, 2000003, 1, 1, 0, 40000), +(3110100, 2000004, 1, 1, 0, 40000), +(9300234, 2000004, 1, 1, 0, 40000), +(9500108, 2000004, 1, 1, 0, 40000), +(3110100, 4006000, 1, 1, 0, 7000), +(9300234, 4006000, 1, 1, 0, 7000), +(9500108, 4006000, 1, 1, 0, 7000), +(3110100, 2041044, 1, 1, 0, 750), +(9300234, 2041044, 1, 1, 0, 750), +(9500108, 2041044, 1, 1, 0, 750), +(3110100, 2382002, 1, 1, 0, 20000), +(9300234, 2382002, 1, 1, 0, 20000), +(9500108, 2382002, 1, 1, 0, 20000), +(3110100, 4010002, 1, 1, 0, 7000), +(9300234, 4010002, 1, 1, 0, 7000), +(9500108, 4010002, 1, 1, 0, 7000), +(3110100, 4020002, 1, 1, 0, 7000), +(9300234, 4020002, 1, 1, 0, 7000), +(9500108, 4020002, 1, 1, 0, 7000), +(3110100, 1442011, 1, 1, 0, 700), +(9300234, 1442011, 1, 1, 0, 700), +(9500108, 1442011, 1, 1, 0, 700), +(3110100, 1322009, 1, 1, 0, 700), +(9300234, 1322009, 1, 1, 0, 700), +(9500108, 1322009, 1, 1, 0, 700), +(3110100, 1442028, 1, 1, 0, 700), +(9300234, 1442028, 1, 1, 0, 700), +(9500108, 1442028, 1, 1, 0, 700), +(3110100, 1442024, 1, 1, 0, 700), +(9300234, 1442024, 1, 1, 0, 700), +(9500108, 1442024, 1, 1, 0, 700), +(3110100, 1432005, 1, 1, 0, 700), +(9300234, 1432005, 1, 1, 0, 700), +(9500108, 1432005, 1, 1, 0, 700), +(3110100, 1422001, 1, 1, 0, 700), +(9300234, 1422001, 1, 1, 0, 700), +(9500108, 1422001, 1, 1, 0, 700), +(3110100, 1092012, 1, 1, 0, 700), +(9300234, 1092012, 1, 1, 0, 700), +(9500108, 1092012, 1, 1, 0, 700), +(3110100, 1072112, 1, 1, 0, 700), +(9300234, 1072112, 1, 1, 0, 700), +(9500108, 1072112, 1, 1, 0, 700), +(3110100, 1051013, 1, 1, 0, 700), +(9300234, 1051013, 1, 1, 0, 700), +(9500108, 1051013, 1, 1, 0, 700), +(3110100, 1382009, 1, 1, 0, 700), +(9300234, 1382009, 1, 1, 0, 700), +(9500108, 1382009, 1, 1, 0, 700), +(3110100, 1041051, 1, 1, 0, 700), +(9300234, 1041051, 1, 1, 0, 700), +(9500108, 1041051, 1, 1, 0, 700), +(3110100, 1061047, 1, 1, 0, 700), +(9300234, 1061047, 1, 1, 0, 700), +(9500108, 1061047, 1, 1, 0, 700), +(3110100, 1082049, 1, 1, 0, 700), +(9300234, 1082049, 1, 1, 0, 700), +(9500108, 1082049, 1, 1, 0, 700), +(3110100, 1082046, 1, 1, 0, 700), +(9300234, 1082046, 1, 1, 0, 700), +(9500108, 1082046, 1, 1, 0, 700), +(3110100, 1061078, 1, 1, 0, 700), +(9300234, 1061078, 1, 1, 0, 700), +(9500108, 1061078, 1, 1, 0, 700), +(3110100, 1332014, 1, 1, 0, 700), +(9300234, 1332014, 1, 1, 0, 700), +(9500108, 1332014, 1, 1, 0, 700), +(3110100, 1002622, 1, 1, 0, 700), +(9300234, 1002622, 1, 1, 0, 700), +(9500108, 1002622, 1, 1, 0, 700), +(3210100, 4000021, 1, 1, 0, 200000), +(3210100, 2000002, 1, 1, 0, 40000), +(3210100, 2000003, 1, 1, 0, 40000), +(3210100, 2070001, 1, 1, 0, 400), +(3210100, 2060005, 10, 50, 0, 10000), +(3210100, 2070003, 1, 1, 0, 400), +(3210100, 4006001, 1, 1, 0, 7000), +(3210100, 4010001, 1, 1, 0, 7000), +(3210100, 4020000, 1, 1, 0, 7000), +(3210100, 4020007, 1, 1, 0, 7000), +(3210100, 1332020, 1, 1, 0, 700), +(3210100, 1040026, 1, 1, 0, 700), +(3210100, 1060019, 1, 1, 0, 700), +(3210100, 1372012, 1, 1, 0, 700), +(3210100, 1072091, 1, 1, 0, 700), +(3210100, 1082052, 1, 1, 0, 700), +(3210100, 1072103, 1, 1, 0, 700), +(3210100, 1452005, 1, 1, 0, 700), +(3210100, 1462005, 1, 1, 0, 700), +(3210100, 1072079, 1, 1, 0, 700), +(3210100, 1472032, 1, 1, 0, 700), +(3210100, 1472012, 1, 1, 0, 700), +(3210100, 1082044, 1, 1, 0, 700), +(3210100, 1002178, 1, 1, 0, 700), +(3210100, 1052107, 1, 1, 0, 700), +(3230104, 4000167, 1, 1, 0, 200000), +(3230104, 4031209, 1, 1, 0, 7000), +(3230104, 4030012, 1, 1, 0, 10000), +(3230104, 2000002, 1, 1, 0, 40000), +(3230104, 2022040, 1, 1, 0, 3000), +(3230104, 2070002, 1, 1, 0, 400), +(3230104, 2040801, 1, 1, 0, 750), +(3230104, 2040701, 1, 1, 0, 750), +(3230104, 2382007, 1, 1, 0, 20000), +(3230104, 4010001, 1, 1, 0, 7000), +(3230104, 4020000, 1, 1, 0, 7000), +(3230104, 1332020, 1, 1, 0, 700), +(3230104, 1322026, 1, 1, 0, 700), +(3230104, 1082023, 1, 1, 0, 700), +(3230104, 1002023, 1, 1, 0, 700), +(3230104, 1051014, 1, 1, 0, 700), +(3230104, 1402006, 1, 1, 0, 700), +(3230104, 1072114, 1, 1, 0, 700), +(3230104, 1041052, 1, 1, 0, 700), +(3230104, 1061048, 1, 1, 0, 700), +(3230104, 1382018, 1, 1, 0, 700), +(3230104, 1002135, 1, 1, 0, 700), +(3230104, 1041056, 1, 1, 0, 700), +(3230104, 1061052, 1, 1, 0, 700), +(3230104, 1082073, 1, 1, 0, 700), +(3230104, 1041050, 1, 1, 0, 700), +(3230104, 1061046, 1, 1, 0, 700), +(3230104, 1002184, 1, 1, 0, 700), +(3230104, 1482004, 1, 1, 0, 700), +(5300000, 4000086, 1, 1, 0, 200000), +(5300000, 4030012, 1, 1, 0, 10000), +(5300000, 2000002, 1, 1, 0, 40000), +(5300000, 2000003, 1, 1, 0, 40000), +(5300000, 4006001, 1, 1, 0, 7000), +(5300000, 2070001, 1, 1, 0, 400), +(5300000, 2050001, 1, 1, 0, 3000), +(5300000, 2040705, 1, 1, 0, 750), +(5300000, 2382006, 1, 1, 0, 20000), +(5300000, 4010001, 1, 1, 0, 7000), +(5300000, 4020003, 1, 1, 0, 7000), +(5300000, 4004000, 1, 1, 0, 3000), +(5300000, 4020007, 1, 1, 0, 7000), +(5300000, 1032002, 1, 1, 0, 700), +(5300000, 1060017, 1, 1, 0, 700), +(5300000, 1040030, 1, 1, 0, 700), +(5300000, 1060020, 1, 1, 0, 700), +(5300000, 1382017, 1, 1, 0, 700), +(5300000, 1072075, 1, 1, 0, 700), +(5300000, 1082054, 1, 1, 0, 700), +(5300000, 1002035, 1, 1, 0, 700), +(5300000, 1050029, 1, 1, 0, 700), +(5300000, 1051023, 1, 1, 0, 700), +(5300000, 1002165, 1, 1, 0, 700), +(5300000, 1072081, 1, 1, 0, 700), +(5300000, 1082016, 1, 1, 0, 700), +(5300000, 1041048, 1, 1, 0, 700), +(5300000, 1061044, 1, 1, 0, 700), +(5300000, 1332014, 1, 1, 0, 700), +(5300000, 1482004, 1, 1, 0, 700), +(3110300, 4000353, 1, 1, 0, 200000), +(3110300, 2000002, 1, 1, 0, 40000), +(3110300, 2000003, 1, 1, 0, 40000), +(3110300, 2060000, 10, 50, 0, 10000), +(3110300, 2061000, 10, 50, 0, 10000), +(3110300, 4006000, 1, 1, 0, 7000), +(3110300, 2044701, 1, 1, 0, 750), +(3110300, 2049101, 1, 1, 0, 400), +(3110300, 2382009, 1, 1, 0, 20000), +(3110300, 4010005, 1, 1, 0, 7000), +(3110300, 4020000, 1, 1, 0, 7000), +(3110300, 4010007, 1, 1, 0, 7000), +(3110300, 1032007, 1, 1, 0, 700), +(3110300, 1402010, 1, 1, 0, 700), +(3110300, 1332020, 1, 1, 0, 700), +(3110300, 1040000, 1, 1, 0, 700), +(3110300, 1060075, 1, 1, 0, 700), +(3110300, 1072078, 1, 1, 0, 700), +(3110300, 1082046, 1, 1, 0, 700), +(3110300, 1072294, 1, 1, 0, 700), +(9400633, 2022113, 1, 4, 0, 3000), +(9400633, 2000004, 1, 4, 0, 40000), +(9400633, 2000005, 1, 4, 0, 40000), +(9400633, 2020016, 1, 4, 0, 3000), +(9400633, 1302133, 1, 1, 0, 40000), +(9400633, 1432061, 1, 1, 0, 40000), +(9400633, 1372058, 1, 1, 0, 40000), +(9400633, 1382080, 1, 1, 0, 40000), +(9400633, 1452085, 1, 1, 0, 40000), +(9400633, 1462075, 1, 1, 0, 40000), +(9400633, 1472100, 1, 1, 0, 40000), +(9400633, 1492048, 1, 1, 0, 40000), +(9400633, 1482046, 1, 1, 0, 40000), +(3300003, 4000502, 1, 1, 0, 200000), +(3300003, 4130014, 1, 1, 0, 3000), +(3300003, 4130000, 1, 1, 0, 3000), +(3300003, 4130017, 1, 1, 0, 3000), +(3300003, 4131008, 1, 1, 0, 3000), +(3300003, 2382095, 1, 1, 0, 20000), +(3300003, 2060000, 10, 50, 0, 10000), +(3300003, 2061000, 10, 50, 0, 10000), +(3300003, 2000002, 1, 1, 0, 40000), +(3300003, 2000003, 1, 1, 0, 40000), +(3300003, 2330001, 1, 1, 0, 400), +(3300003, 4020000, 1, 1, 0, 7000), +(3300003, 4020001, 1, 1, 0, 7000), +(3300003, 1032010, 1, 1, 0, 700), +(3300003, 1002023, 1, 1, 0, 700), +(3300003, 1051015, 1, 1, 0, 700), +(3300003, 1302004, 1, 1, 0, 700), +(3300003, 1041042, 1, 1, 0, 700), +(3300003, 1061035, 1, 1, 0, 700), +(3300003, 1082063, 1, 1, 0, 700), +(3300003, 1002163, 1, 1, 0, 700), +(3300003, 1072119, 1, 1, 0, 700), +(3300003, 1040062, 1, 1, 0, 700), +(3300003, 1060051, 1, 1, 0, 700), +(3300003, 1332014, 1, 1, 0, 700), +(3300003, 1072110, 1, 1, 0, 700), +(3300003, 1002625, 1, 1, 0, 700), +(3110102, 4000095, 1, 1, 0, 200000), +(9300129, 4000095, 1, 1, 0, 200000), +(9500109, 4000095, 1, 1, 0, 200000), +(3110102, 4000021, 1, 1, 0, 200000), +(9300129, 4000021, 1, 1, 0, 200000), +(9500109, 4000021, 1, 1, 0, 200000), +(3110102, 2000002, 1, 1, 0, 40000), +(9300129, 2000002, 1, 1, 0, 40000), +(9500109, 2000002, 1, 1, 0, 40000), +(3110102, 2000003, 1, 1, 0, 40000), +(9300129, 2000003, 1, 1, 0, 40000), +(9500109, 2000003, 1, 1, 0, 40000), +(3110102, 2044401, 1, 1, 0, 750), +(9300129, 2044401, 1, 1, 0, 750), +(9500109, 2044401, 1, 1, 0, 750), +(3110102, 2382005, 1, 1, 0, 20000), +(9300129, 2382005, 1, 1, 0, 20000), +(9500109, 2382005, 1, 1, 0, 20000), +(3110102, 4010001, 1, 1, 0, 7000), +(9300129, 4010001, 1, 1, 0, 7000), +(9500109, 4010001, 1, 1, 0, 7000), +(3110102, 4020002, 1, 1, 0, 7000), +(9300129, 4020002, 1, 1, 0, 7000), +(9500109, 4020002, 1, 1, 0, 7000), +(3110102, 4010005, 1, 1, 0, 7000), +(9300129, 4010005, 1, 1, 0, 7000), +(9500109, 4010005, 1, 1, 0, 7000), +(3110102, 4004000, 1, 1, 0, 3000), +(9300129, 4004000, 1, 1, 0, 3000), +(9500109, 4004000, 1, 1, 0, 3000), +(3110102, 1040029, 1, 1, 0, 700), +(9300129, 1040029, 1, 1, 0, 700), +(9500109, 1040029, 1, 1, 0, 700), +(3110102, 1312006, 1, 1, 0, 700), +(9300129, 1312006, 1, 1, 0, 700), +(9500109, 1312006, 1, 1, 0, 700), +(3110102, 1060020, 1, 1, 0, 700), +(9300129, 1060020, 1, 1, 0, 700), +(9500109, 1060020, 1, 1, 0, 700), +(3110102, 1322016, 1, 1, 0, 700), +(9300129, 1322016, 1, 1, 0, 700), +(9500109, 1322016, 1, 1, 0, 700), +(3110102, 1082051, 1, 1, 0, 700), +(9300129, 1082051, 1, 1, 0, 700), +(9500109, 1082051, 1, 1, 0, 700), +(3110102, 1002145, 1, 1, 0, 700), +(9300129, 1002145, 1, 1, 0, 700), +(9500109, 1002145, 1, 1, 0, 700), +(3110102, 1002164, 1, 1, 0, 700), +(9300129, 1002164, 1, 1, 0, 700), +(9500109, 1002164, 1, 1, 0, 700), +(3110102, 1082068, 1, 1, 0, 700), +(9300129, 1082068, 1, 1, 0, 700), +(9500109, 1082068, 1, 1, 0, 700), +(3110102, 1332009, 1, 1, 0, 700), +(9300129, 1332009, 1, 1, 0, 700), +(9500109, 1332009, 1, 1, 0, 700), +(3110102, 1072035, 1, 1, 0, 700), +(9300129, 1072035, 1, 1, 0, 700), +(9500109, 1072035, 1, 1, 0, 700), +(3110102, 1002173, 1, 1, 0, 700), +(9300129, 1002173, 1, 1, 0, 700), +(9500109, 1002173, 1, 1, 0, 700), +(3110102, 1072294, 1, 1, 0, 700), +(9300129, 1072294, 1, 1, 0, 700), +(9500109, 1072294, 1, 1, 0, 700), +(3110101, 4030014, 1, 1, 0, 10000), +(3110101, 4131001, 1, 1, 0, 3000), +(3110101, 2000002, 1, 1, 0, 40000), +(3110101, 2000003, 1, 1, 0, 40000), +(3110101, 2002009, 1, 1, 0, 10000), +(3110101, 2043200, 1, 1, 0, 750), +(3110101, 2041017, 1, 1, 0, 750), +(3110101, 2330001, 1, 1, 0, 400), +(3110101, 2382004, 1, 1, 0, 20000), +(3110101, 4020001, 1, 1, 0, 7000), +(3110101, 4004001, 1, 1, 0, 3000), +(3110101, 1082007, 1, 1, 0, 700), +(3110101, 1082035, 1, 1, 0, 700), +(3110101, 1092007, 1, 1, 0, 700), +(3110101, 1050030, 1, 1, 0, 700), +(3110101, 1050002, 1, 1, 0, 700), +(3110101, 1072077, 1, 1, 0, 700), +(3110101, 1072090, 1, 1, 0, 700), +(3110101, 1041055, 1, 1, 0, 700), +(3110101, 1061051, 1, 1, 0, 700), +(3110101, 1462004, 1, 1, 0, 700), +(3110101, 1040062, 1, 1, 0, 700), +(3110101, 1060051, 1, 1, 0, 700), +(3110101, 1472014, 1, 1, 0, 700), +(3110101, 1082189, 1, 1, 0, 700), +(5300001, 4000087, 1, 1, 0, 200000), +(5300001, 2000002, 1, 1, 0, 40000), +(5300001, 2000003, 1, 1, 0, 40000), +(5300001, 2050000, 1, 1, 0, 3000), +(5300001, 4006001, 1, 1, 0, 7000), +(5300001, 2040402, 1, 1, 0, 750), +(5300001, 2382014, 1, 1, 0, 20000), +(5300001, 4010000, 1, 1, 0, 7000), +(5300001, 4020004, 1, 1, 0, 7000), +(5300001, 4004001, 1, 1, 0, 3000), +(5300001, 1402002, 1, 1, 0, 700), +(5300001, 1082036, 1, 1, 0, 700), +(5300001, 1050029, 1, 1, 0, 700), +(5300001, 1051023, 1, 1, 0, 700), +(5300001, 1041068, 1, 1, 0, 700), +(5300001, 1061063, 1, 1, 0, 700), +(5300001, 1002138, 1, 1, 0, 700), +(5300001, 1332014, 1, 1, 0, 700), +(5300001, 1002625, 1, 1, 0, 700), +(3210201, 4000073, 1, 1, 0, 200000), +(3210201, 4000021, 1, 1, 0, 200000), +(3210201, 4003004, 1, 1, 0, 7000), +(3210201, 2050099, 1, 1, 0, 3000), +(3210201, 4030012, 1, 1, 0, 10000), +(3210201, 2000002, 1, 1, 0, 40000), +(3210201, 2000003, 1, 1, 0, 40000), +(3210201, 2070003, 1, 1, 0, 400), +(3210201, 4006000, 1, 1, 0, 7000), +(3210201, 4006001, 1, 1, 0, 7000), +(3210201, 2044501, 1, 1, 0, 750), +(3210201, 2382012, 1, 1, 0, 20000), +(3210201, 4010002, 1, 1, 0, 7000), +(3210201, 4020003, 1, 1, 0, 7000), +(3210201, 4004001, 1, 1, 0, 3000), +(3210201, 4020007, 1, 1, 0, 7000), +(3210201, 1051016, 1, 1, 0, 700), +(3210201, 1442001, 1, 1, 0, 700), +(3210201, 1072089, 1, 1, 0, 700), +(3210201, 1050036, 1, 1, 0, 700), +(3210201, 1051024, 1, 1, 0, 700), +(3210201, 1082070, 1, 1, 0, 700), +(3210201, 1072083, 1, 1, 0, 700), +(3210201, 1472013, 1, 1, 0, 700), +(3210201, 1332012, 1, 1, 0, 700), +(3210201, 1002172, 1, 1, 0, 700), +(3210201, 1492004, 1, 1, 0, 700), +(3210202, 4000073, 1, 1, 0, 200000), +(3210202, 4003004, 1, 1, 0, 7000), +(3210202, 4000021, 1, 1, 0, 200000), +(3210202, 4030012, 1, 1, 0, 10000), +(3210202, 2000002, 1, 1, 0, 40000), +(3210202, 2000003, 1, 1, 0, 40000), +(3210202, 4006000, 1, 1, 0, 7000), +(3210202, 2070003, 1, 1, 0, 400), +(3210202, 2043701, 1, 1, 0, 750), +(3210202, 2041016, 1, 1, 0, 750), +(3210202, 2382013, 1, 1, 0, 20000), +(3210202, 4020005, 1, 1, 0, 7000), +(3210202, 4010001, 1, 1, 0, 7000), +(3210202, 4004003, 1, 1, 0, 3000), +(3210202, 4004001, 1, 1, 0, 3000), +(3210202, 1032011, 1, 1, 0, 700), +(3210202, 1302017, 1, 1, 0, 700), +(3210202, 1040028, 1, 1, 0, 700), +(3210202, 1060020, 1, 1, 0, 700), +(3210202, 1322015, 1, 1, 0, 700), +(3210202, 1041053, 1, 1, 0, 700), +(3210202, 1061049, 1, 1, 0, 700), +(3210202, 1002037, 1, 1, 0, 700), +(3210202, 1041066, 1, 1, 0, 700), +(3210202, 1061061, 1, 1, 0, 700), +(3210202, 1002163, 1, 1, 0, 700), +(3210202, 1332001, 1, 1, 0, 700), +(3210202, 1082045, 1, 1, 0, 700), +(3210202, 1492004, 1, 1, 0, 700), +(3210202, 1002628, 1, 1, 0, 700), +(9400509, 4000070, 1, 1, 0, 200000), +(9400509, 4003005, 1, 1, 0, 7000), +(9400509, 4031523, 1, 1, 0, 7000), +(9400509, 4030009, 1, 1, 0, 10000), +(9400509, 2000002, 1, 1, 0, 40000), +(9400509, 2000003, 1, 1, 0, 40000), +(9400509, 2000004, 1, 1, 0, 40000), +(9400509, 2041018, 1, 1, 0, 750), +(9400509, 2041012, 1, 1, 0, 750), +(9400509, 2043002, 1, 1, 0, 750), +(9400509, 4006000, 1, 1, 0, 7000), +(9400509, 4020003, 1, 1, 0, 7000), +(9400509, 4020000, 1, 1, 0, 7000), +(9400509, 4010005, 1, 1, 0, 7000), +(9400509, 4004000, 1, 1, 0, 3000), +(9400509, 1032013, 1, 1, 0, 700), +(9400509, 1402007, 1, 1, 0, 700), +(9400509, 1041089, 1, 1, 0, 700), +(9400509, 1061088, 1, 1, 0, 700), +(9400509, 1002028, 1, 1, 0, 700), +(9400509, 1072115, 1, 1, 0, 700), +(9400509, 1072114, 1, 1, 0, 700), +(9400509, 1050054, 1, 1, 0, 700), +(9400509, 1050058, 1, 1, 0, 700), +(9400509, 1050060, 1, 1, 0, 700), +(9400509, 1040094, 1, 1, 0, 700), +(9400509, 1060083, 1, 1, 0, 700), +(9400509, 1082074, 1, 1, 0, 700), +(9400509, 1082042, 1, 1, 0, 700), +(9420503, 4000370, 1, 1, 0, 200000), +(9420503, 4000371, 1, 1, 0, 200000), +(9420503, 2000002, 1, 1, 0, 40000), +(9420503, 2000003, 1, 1, 0, 40000), +(9420503, 2070001, 1, 1, 0, 400), +(9420503, 4010001, 1, 1, 0, 7000), +(9420503, 4020000, 1, 1, 0, 7000), +(9420503, 1061048, 1, 1, 0, 700), +(9420503, 1002153, 1, 1, 0, 700), +(9420503, 1002137, 1, 1, 0, 700), +(9420503, 1061070, 1, 1, 0, 700), +(9420503, 1040061, 1, 1, 0, 700), +(9420503, 1002181, 1, 1, 0, 700), +(9420503, 1060050, 1, 1, 0, 700), +(3300004, 4000503, 1, 1, 0, 200000), +(3300004, 4130014, 1, 1, 0, 3000), +(3300004, 4130000, 1, 1, 0, 3000), +(3300004, 4130017, 1, 1, 0, 3000), +(3300004, 4131008, 1, 1, 0, 3000), +(3300004, 2382096, 1, 1, 0, 20000), +(3300004, 2060000, 10, 50, 0, 10000), +(3300004, 2061000, 10, 50, 0, 10000), +(3300004, 2000002, 1, 1, 0, 40000), +(3300004, 2000003, 1, 1, 0, 40000), +(3300004, 2330001, 1, 1, 0, 400), +(3300004, 4020000, 1, 1, 0, 7000), +(3300004, 4020001, 1, 1, 0, 7000), +(3300004, 1032010, 1, 1, 0, 700), +(3300004, 1002023, 1, 1, 0, 700), +(3300004, 1051015, 1, 1, 0, 700), +(3300004, 1302004, 1, 1, 0, 700), +(3300004, 1041042, 1, 1, 0, 700), +(3300004, 1061035, 1, 1, 0, 700), +(3300004, 1082063, 1, 1, 0, 700), +(3300004, 1002163, 1, 1, 0, 700), +(3300004, 1072119, 1, 1, 0, 700), +(3300004, 1040062, 1, 1, 0, 700), +(3300004, 1060051, 1, 1, 0, 700), +(3300004, 1332014, 1, 1, 0, 700), +(3300004, 1072110, 1, 1, 0, 700), +(3300004, 1002625, 1, 1, 0, 700), +(3210200, 4000073, 1, 1, 0, 200000), +(3210200, 4003004, 1, 1, 0, 7000), +(3210200, 4000021, 1, 1, 0, 200000), +(3210200, 2050099, 1, 1, 0, 3000), +(3210200, 4030012, 1, 1, 0, 10000), +(3210200, 4130021, 1, 1, 0, 3000), +(3210200, 2000002, 1, 1, 0, 40000), +(3210200, 2000003, 1, 1, 0, 40000), +(3210200, 2050003, 1, 1, 0, 3000), +(3210200, 4006000, 1, 1, 0, 7000), +(3210200, 2070001, 1, 1, 0, 400), +(3210200, 2044701, 1, 1, 0, 750), +(3210200, 2382011, 1, 1, 0, 20000), +(3210200, 4020000, 1, 1, 0, 7000), +(3210200, 4020001, 1, 1, 0, 7000), +(3210200, 4004000, 1, 1, 0, 3000), +(3210200, 1322009, 1, 1, 0, 700), +(3210200, 1412006, 1, 1, 0, 700), +(3210200, 1072041, 1, 1, 0, 700), +(3210200, 1072002, 1, 1, 0, 700), +(3210200, 1072112, 1, 1, 0, 700), +(3210200, 1002086, 1, 1, 0, 700), +(3210200, 1050036, 1, 1, 0, 700), +(3210200, 1050035, 1, 1, 0, 700), +(3210200, 1002145, 1, 1, 0, 700), +(3210200, 1002038, 1, 1, 0, 700), +(3210200, 1462005, 1, 1, 0, 700), +(3210200, 1040073, 1, 1, 0, 700), +(3210200, 1060062, 1, 1, 0, 700), +(3210200, 1082073, 1, 1, 0, 700), +(3210200, 1072069, 1, 1, 0, 700), +(3210200, 1472030, 1, 1, 0, 700), +(3210200, 1002174, 1, 1, 0, 700), +(3210200, 1040061, 1, 1, 0, 700), +(3210200, 1082042, 1, 1, 0, 700), +(3210200, 1082043, 1, 1, 0, 700), +(3210200, 1332014, 1, 1, 0, 700), +(3210200, 1052107, 1, 1, 0, 700), +(3210204, 4000109, 1, 1, 0, 200000), +(3210204, 4003005, 1, 1, 0, 7000), +(3210204, 4003004, 1, 1, 0, 7000), +(3210204, 4130000, 1, 1, 0, 3000), +(3210204, 2000002, 1, 1, 0, 40000), +(3210204, 2000003, 1, 1, 0, 40000), +(3210204, 2043202, 1, 1, 0, 750), +(3210204, 2382015, 1, 1, 0, 20000), +(3210204, 4020006, 1, 1, 0, 7000), +(3210204, 4010004, 1, 1, 0, 7000), +(3210204, 4004002, 1, 1, 0, 3000), +(3210204, 1050021, 1, 1, 0, 700), +(3210204, 1050031, 1, 1, 0, 700), +(3210204, 1082053, 1, 1, 0, 700), +(3210204, 1332011, 1, 1, 0, 700), +(3210204, 1040060, 1, 1, 0, 700), +(3210204, 1060044, 1, 1, 0, 700), +(3210204, 1052110, 1, 1, 0, 700), +(3210205, 4000096, 1, 1, 0, 200000), +(3210205, 4000021, 1, 1, 0, 200000), +(3210205, 4130007, 1, 1, 0, 3000), +(3210205, 4130005, 1, 1, 0, 3000), +(3210205, 2000002, 1, 1, 0, 40000), +(3210205, 2000003, 1, 1, 0, 40000), +(3210205, 2002010, 1, 1, 0, 10000), +(3210205, 2050001, 1, 1, 0, 3000), +(3210205, 2040703, 1, 1, 0, 750), +(3210205, 2382016, 1, 1, 0, 20000), +(3210205, 4020005, 1, 1, 0, 7000), +(3210205, 4004002, 1, 1, 0, 3000), +(3210205, 1002048, 1, 1, 0, 700), +(3210205, 1051015, 1, 1, 0, 700), +(3210205, 1050037, 1, 1, 0, 700), +(3210205, 1382019, 1, 1, 0, 700), +(3210205, 1041043, 1, 1, 0, 700), +(3210205, 1061036, 1, 1, 0, 700), +(3210205, 1002136, 1, 1, 0, 700), +(3210205, 1040076, 1, 1, 0, 700), +(3210205, 1060065, 1, 1, 0, 700), +(3210205, 1082075, 1, 1, 0, 700), +(3210205, 1040057, 1, 1, 0, 700), +(3210205, 1060043, 1, 1, 0, 700), +(3210205, 1052113, 1, 1, 0, 700), +(3210207, 4000113, 1, 1, 0, 200000), +(9300232, 4000113, 1, 1, 0, 200000), +(3210207, 4031992, 1, 1, 0, 7000), +(9300232, 4031992, 1, 1, 0, 7000), +(3210207, 4131011, 1, 1, 0, 3000), +(9300232, 4131011, 1, 1, 0, 3000), +(3210207, 2000002, 1, 1, 0, 40000), +(9300232, 2000002, 1, 1, 0, 40000), +(3210207, 2000003, 1, 1, 0, 40000), +(9300232, 2000003, 1, 1, 0, 40000), +(3210207, 2060005, 10, 50, 0, 10000), +(9300232, 2060005, 10, 50, 0, 10000), +(3210207, 2041018, 1, 1, 0, 750), +(9300232, 2041018, 1, 1, 0, 750), +(3210207, 2382017, 1, 1, 0, 20000), +(9300232, 2382017, 1, 1, 0, 20000), +(3210207, 4020002, 1, 1, 0, 7000), +(9300232, 4020002, 1, 1, 0, 7000), +(3210207, 4020000, 1, 1, 0, 7000), +(9300232, 4020000, 1, 1, 0, 7000), +(3210207, 4004000, 1, 1, 0, 3000), +(9300232, 4004000, 1, 1, 0, 3000), +(3210207, 4020007, 1, 1, 0, 7000), +(9300232, 4020007, 1, 1, 0, 7000), +(3210207, 1412005, 1, 1, 0, 700), +(9300232, 1412005, 1, 1, 0, 700), +(3210207, 1082024, 1, 1, 0, 700), +(9300232, 1082024, 1, 1, 0, 700), +(3210207, 1050038, 1, 1, 0, 700), +(9300232, 1050038, 1, 1, 0, 700), +(3210207, 1372001, 1, 1, 0, 700), +(9300232, 1372001, 1, 1, 0, 700), +(3210207, 1082055, 1, 1, 0, 700), +(9300232, 1082055, 1, 1, 0, 700), +(3210207, 1072076, 1, 1, 0, 700), +(9300232, 1072076, 1, 1, 0, 700), +(3210207, 1041069, 1, 1, 0, 700), +(9300232, 1041069, 1, 1, 0, 700), +(3210207, 1061064, 1, 1, 0, 700), +(9300232, 1061064, 1, 1, 0, 700), +(3210207, 1452006, 1, 1, 0, 700), +(9300232, 1452006, 1, 1, 0, 700), +(3210207, 1002139, 1, 1, 0, 700), +(9300232, 1002139, 1, 1, 0, 700), +(3210207, 1082048, 1, 1, 0, 700), +(9300232, 1082048, 1, 1, 0, 700), +(3210207, 1002178, 1, 1, 0, 700), +(9300232, 1002178, 1, 1, 0, 700), +(3210207, 1072107, 1, 1, 0, 700), +(9300232, 1072107, 1, 1, 0, 700), +(3210207, 1072297, 1, 1, 0, 700), +(9300232, 1072297, 1, 1, 0, 700), +(3230100, 4000013, 1, 1, 0, 200000), +(3230100, 4030012, 1, 1, 0, 10000), +(3230100, 2000002, 1, 1, 0, 40000), +(3230100, 2000003, 1, 1, 0, 40000), +(3230100, 2002005, 1, 1, 0, 10000), +(3230100, 2044502, 1, 1, 0, 750), +(3230100, 2044904, 1, 1, 0, 750), +(3230100, 2330001, 1, 1, 0, 400), +(3230100, 2382018, 1, 1, 0, 20000), +(3230100, 4010005, 1, 1, 0, 7000), +(3230100, 4020006, 1, 1, 0, 7000), +(3230100, 1302020, 1, 1, 0, 700), +(3230100, 1302030, 1, 1, 0, 700), +(3230100, 1322003, 1, 1, 0, 700), +(3230100, 1002025, 1, 1, 0, 700), +(3230100, 1040021, 1, 1, 0, 700), +(3230100, 1432003, 1, 1, 0, 700), +(3230100, 1060016, 1, 1, 0, 700), +(3230100, 1442024, 1, 1, 0, 700), +(3230100, 1002143, 1, 1, 0, 700), +(3230100, 1051025, 1, 1, 0, 700), +(3230100, 1050045, 1, 1, 0, 700), +(3230100, 1040079, 1, 1, 0, 700), +(3230100, 1060069, 1, 1, 0, 700), +(3230100, 1002180, 1, 1, 0, 700), +(3230100, 1040063, 1, 1, 0, 700), +(3230100, 1060052, 1, 1, 0, 700), +(3230100, 1061069, 1, 1, 0, 700), +(3230100, 1482004, 1, 1, 0, 700), +(3230100, 1492006, 1, 1, 0, 700), +(3230100, 1482005, 1, 1, 0, 700), +(3230101, 4000035, 1, 1, 0, 200000), +(9400501, 4000035, 1, 1, 0, 200000), +(9500111, 4000035, 1, 1, 0, 200000), +(9500157, 4000035, 1, 1, 0, 200000), +(3230101, 2000002, 1, 1, 0, 40000), +(9400501, 2000002, 1, 1, 0, 40000), +(9500111, 2000002, 1, 1, 0, 40000), +(9500157, 2000002, 1, 1, 0, 40000), +(3230101, 2070002, 1, 1, 0, 400), +(9400501, 2070002, 1, 1, 0, 400), +(9500111, 2070002, 1, 1, 0, 400), +(9500157, 2070002, 1, 1, 0, 400), +(3230101, 2048000, 1, 1, 0, 750), +(9400501, 2048000, 1, 1, 0, 750), +(9500111, 2048000, 1, 1, 0, 750), +(9500157, 2048000, 1, 1, 0, 750), +(3230101, 2040027, 1, 1, 0, 750), +(9400501, 2040027, 1, 1, 0, 750), +(9500111, 2040027, 1, 1, 0, 750), +(9500157, 2040027, 1, 1, 0, 750), +(3230101, 2048001, 1, 1, 0, 750), +(9400501, 2048001, 1, 1, 0, 750), +(9500111, 2048001, 1, 1, 0, 750), +(9500157, 2048001, 1, 1, 0, 750), +(3230101, 2043301, 1, 1, 0, 750), +(9400501, 2043301, 1, 1, 0, 750), +(9500111, 2043301, 1, 1, 0, 750), +(9500157, 2043301, 1, 1, 0, 750), +(3230101, 2040005, 1, 1, 0, 750), +(9400501, 2040005, 1, 1, 0, 750), +(9500111, 2040005, 1, 1, 0, 750), +(9500157, 2040005, 1, 1, 0, 750), +(3230101, 2048002, 1, 1, 0, 750), +(9400501, 2048002, 1, 1, 0, 750), +(9500111, 2048002, 1, 1, 0, 750), +(9500157, 2048002, 1, 1, 0, 750), +(3230101, 2382019, 1, 1, 0, 20000), +(9400501, 2382019, 1, 1, 0, 20000), +(9500111, 2382019, 1, 1, 0, 20000), +(9500157, 2382019, 1, 1, 0, 20000), +(3230101, 4010003, 1, 1, 0, 7000), +(9400501, 4010003, 1, 1, 0, 7000), +(9500111, 4010003, 1, 1, 0, 7000), +(9500157, 4010003, 1, 1, 0, 7000), +(3230101, 4020004, 1, 1, 0, 7000), +(9400501, 4020004, 1, 1, 0, 7000), +(9500111, 4020004, 1, 1, 0, 7000), +(9500157, 4020004, 1, 1, 0, 7000), +(3230101, 4004000, 1, 1, 0, 3000), +(9400501, 4004000, 1, 1, 0, 3000), +(9500111, 4004000, 1, 1, 0, 3000), +(9500157, 4004000, 1, 1, 0, 3000), +(3230101, 1412004, 1, 1, 0, 700), +(9400501, 1412004, 1, 1, 0, 700), +(9500111, 1412004, 1, 1, 0, 700), +(9500157, 1412004, 1, 1, 0, 700), +(3230101, 1050022, 1, 1, 0, 700), +(9400501, 1050022, 1, 1, 0, 700), +(9500111, 1050022, 1, 1, 0, 700), +(9500157, 1050022, 1, 1, 0, 700), +(3230101, 1051010, 1, 1, 0, 700), +(9400501, 1051010, 1, 1, 0, 700), +(9500111, 1051010, 1, 1, 0, 700), +(9500157, 1051010, 1, 1, 0, 700), +(3230101, 1082056, 1, 1, 0, 700), +(9400501, 1082056, 1, 1, 0, 700), +(9500111, 1082056, 1, 1, 0, 700), +(9500157, 1082056, 1, 1, 0, 700), +(3230101, 1072114, 1, 1, 0, 700), +(9400501, 1072114, 1, 1, 0, 700), +(9500111, 1072114, 1, 1, 0, 700), +(9500157, 1072114, 1, 1, 0, 700), +(3230101, 1452000, 1, 1, 0, 700), +(9400501, 1452000, 1, 1, 0, 700), +(9500111, 1452000, 1, 1, 0, 700), +(9500157, 1452000, 1, 1, 0, 700), +(3230101, 1072118, 1, 1, 0, 700), +(9400501, 1072118, 1, 1, 0, 700), +(9500111, 1072118, 1, 1, 0, 700), +(9500157, 1072118, 1, 1, 0, 700), +(3230101, 1082069, 1, 1, 0, 700), +(9400501, 1082069, 1, 1, 0, 700), +(9500111, 1082069, 1, 1, 0, 700), +(9500157, 1082069, 1, 1, 0, 700), +(3230101, 1040080, 1, 1, 0, 700), +(9400501, 1040080, 1, 1, 0, 700), +(9500111, 1040080, 1, 1, 0, 700), +(9500157, 1040080, 1, 1, 0, 700), +(3230101, 1082047, 1, 1, 0, 700), +(9400501, 1082047, 1, 1, 0, 700), +(9500111, 1082047, 1, 1, 0, 700), +(9500157, 1082047, 1, 1, 0, 700), +(3230101, 1472016, 1, 1, 0, 700), +(9400501, 1472016, 1, 1, 0, 700), +(9500111, 1472016, 1, 1, 0, 700), +(9500157, 1472016, 1, 1, 0, 700), +(3230101, 1051008, 1, 1, 0, 700), +(9400501, 1051008, 1, 1, 0, 700), +(9500111, 1051008, 1, 1, 0, 700), +(9500157, 1051008, 1, 1, 0, 700), +(3230101, 1492005, 1, 1, 0, 700), +(9400501, 1492005, 1, 1, 0, 700), +(9500111, 1492005, 1, 1, 0, 700), +(9500157, 1492005, 1, 1, 0, 700), +(3230200, 4003004, 1, 1, 0, 7000), +(9500110, 4003004, 1, 1, 0, 7000), +(3230200, 4030012, 1, 1, 0, 10000), +(9500110, 4030012, 1, 1, 0, 10000), +(3230200, 2000002, 1, 1, 0, 40000), +(9500110, 2000002, 1, 1, 0, 40000), +(3230200, 2000003, 1, 1, 0, 40000), +(9500110, 2000003, 1, 1, 0, 40000), +(3230200, 2040902, 1, 1, 0, 750), +(9500110, 2040902, 1, 1, 0, 750), +(3230200, 2041012, 1, 1, 0, 750), +(9500110, 2041012, 1, 1, 0, 750), +(3230200, 2041046, 1, 1, 0, 750), +(9500110, 2041046, 1, 1, 0, 750), +(3230200, 4006000, 1, 1, 0, 7000), +(9500110, 4006000, 1, 1, 0, 7000), +(3230200, 2382020, 1, 1, 0, 20000), +(9500110, 2382020, 1, 1, 0, 20000), +(3230200, 4010001, 1, 1, 0, 7000), +(9500110, 4010001, 1, 1, 0, 7000), +(3230200, 4020000, 1, 1, 0, 7000), +(9500110, 4020000, 1, 1, 0, 7000), +(3230200, 4004001, 1, 1, 0, 3000), +(9500110, 4004001, 1, 1, 0, 3000), +(3230200, 1432008, 1, 1, 0, 700), +(9500110, 1432008, 1, 1, 0, 700), +(3230200, 1092008, 1, 1, 0, 700), +(9500110, 1092008, 1, 1, 0, 700), +(3230200, 1322027, 1, 1, 0, 700), +(9500110, 1322027, 1, 1, 0, 700), +(3230200, 1302017, 1, 1, 0, 700), +(9500110, 1302017, 1, 1, 0, 700), +(3230200, 1092007, 1, 1, 0, 700), +(9500110, 1092007, 1, 1, 0, 700), +(3230200, 1082005, 1, 1, 0, 700), +(9500110, 1082005, 1, 1, 0, 700), +(3230200, 1302009, 1, 1, 0, 700), +(9500110, 1302009, 1, 1, 0, 700), +(3230200, 1051027, 1, 1, 0, 700), +(9500110, 1051027, 1, 1, 0, 700), +(3230200, 1002152, 1, 1, 0, 700), +(9500110, 1002152, 1, 1, 0, 700), +(3230200, 1462014, 1, 1, 0, 700), +(9500110, 1462014, 1, 1, 0, 700), +(3230200, 1072102, 1, 1, 0, 700), +(9500110, 1072102, 1, 1, 0, 700), +(3230200, 1452007, 1, 1, 0, 700), +(9500110, 1452007, 1, 1, 0, 700), +(3230200, 1041065, 1, 1, 0, 700), +(9500110, 1041065, 1, 1, 0, 700), +(3230200, 1061060, 1, 1, 0, 700), +(9500110, 1061060, 1, 1, 0, 700), +(3230200, 1082050, 1, 1, 0, 700), +(9500110, 1082050, 1, 1, 0, 700), +(3230200, 1002176, 1, 1, 0, 700), +(9500110, 1002176, 1, 1, 0, 700), +(3230200, 1002625, 1, 1, 0, 700), +(9500110, 1002625, 1, 1, 0, 700), +(5400000, 2050002, 1, 1, 0, 3000), +(9500112, 2050002, 1, 1, 0, 3000), +(5400000, 2060001, 10, 50, 0, 10000), +(9500112, 2060001, 10, 50, 0, 10000), +(5400000, 2061001, 10, 50, 0, 10000), +(9500112, 2061001, 10, 50, 0, 10000), +(5400000, 2070002, 1, 1, 0, 400), +(9500112, 2070002, 1, 1, 0, 400), +(5400000, 2000002, 1, 1, 0, 40000), +(9500112, 2000002, 1, 1, 0, 40000), +(5400000, 2000003, 1, 1, 0, 40000), +(9500112, 2000003, 1, 1, 0, 40000), +(5400000, 4006000, 1, 1, 0, 7000), +(9500112, 4006000, 1, 1, 0, 7000), +(5400000, 2043801, 1, 1, 0, 750), +(9500112, 2043801, 1, 1, 0, 750), +(5400000, 2044803, 1, 1, 0, 750), +(9500112, 2044803, 1, 1, 0, 750), +(5400000, 2382023, 1, 1, 0, 20000), +(9500112, 2382023, 1, 1, 0, 20000), +(5400000, 4010003, 1, 1, 0, 7000), +(9500112, 4010003, 1, 1, 0, 7000), +(5400000, 4020005, 1, 1, 0, 7000), +(9500112, 4020005, 1, 1, 0, 7000), +(5400000, 4004003, 1, 1, 0, 3000), +(9500112, 4004003, 1, 1, 0, 3000), +(5400000, 1432008, 1, 1, 0, 700), +(9500112, 1432008, 1, 1, 0, 700), +(5400000, 1040030, 1, 1, 0, 700), +(9500112, 1040030, 1, 1, 0, 700), +(5400000, 1422007, 1, 1, 0, 700), +(9500112, 1422007, 1, 1, 0, 700), +(5400000, 1422008, 1, 1, 0, 700), +(9500112, 1422008, 1, 1, 0, 700), +(5400000, 1002021, 1, 1, 0, 700), +(9500112, 1002021, 1, 1, 0, 700), +(5400000, 1051001, 1, 1, 0, 700), +(9500112, 1051001, 1, 1, 0, 700), +(5400000, 1382017, 1, 1, 0, 700), +(9500112, 1382017, 1, 1, 0, 700), +(5400000, 1082062, 1, 1, 0, 700), +(9500112, 1082062, 1, 1, 0, 700), +(5400000, 1041067, 1, 1, 0, 700), +(9500112, 1041067, 1, 1, 0, 700), +(5400000, 1061062, 1, 1, 0, 700), +(9500112, 1061062, 1, 1, 0, 700), +(5400000, 1072108, 1, 1, 0, 700), +(9500112, 1072108, 1, 1, 0, 700), +(5400000, 1040059, 1, 1, 0, 700), +(9500112, 1040059, 1, 1, 0, 700), +(5400000, 1060045, 1, 1, 0, 700), +(9500112, 1060045, 1, 1, 0, 700), +(5400000, 1002177, 1, 1, 0, 700), +(9500112, 1002177, 1, 1, 0, 700), +(5400000, 1082192, 1, 1, 0, 700), +(9500112, 1082192, 1, 1, 0, 700), +(3220000, 4000003, 1, 1, 0, 200000), +(9300185, 4000003, 1, 1, 0, 200000), +(9500307, 4000003, 1, 1, 0, 200000), +(9500338, 4000003, 1, 1, 0, 200000), +(9303001, 4000003, 1, 1, 0, 200000), +(3220000, 4000018, 1, 1, 0, 200000), +(9300185, 4000018, 1, 1, 0, 200000), +(9500307, 4000018, 1, 1, 0, 200000), +(9500338, 4000018, 1, 1, 0, 200000), +(9303001, 4000018, 1, 1, 0, 200000), +(3220000, 1012031, 1, 1, 0, 40000), +(9300185, 1012031, 1, 1, 0, 40000), +(9500307, 1012031, 1, 1, 0, 40000), +(9500338, 1012031, 1, 1, 0, 40000), +(9303001, 1012031, 1, 1, 0, 700), +(3220000, 4003001, 1, 1, 0, 7000), +(9300185, 4003001, 1, 1, 0, 7000), +(9500307, 4003001, 1, 1, 0, 7000), +(9500338, 4003001, 1, 1, 0, 7000), +(9303001, 4003001, 1, 1, 0, 7000), +(3220000, 4000195, 1, 1, 0, 200000), +(9300185, 4000195, 1, 1, 0, 200000), +(9500307, 4000195, 1, 1, 0, 200000), +(9500338, 4000195, 1, 1, 0, 200000), +(9303001, 4000195, 1, 1, 0, 200000), +(3220000, 2000001, 1, 4, 0, 40000), +(9300185, 2000001, 1, 4, 0, 40000), +(9500307, 2000001, 1, 4, 0, 40000), +(9500338, 2000001, 1, 4, 0, 40000), +(9303001, 2000001, 1, 1, 0, 40000), +(3220000, 2000003, 1, 4, 0, 40000), +(9300185, 2000003, 1, 4, 0, 40000), +(9500307, 2000003, 1, 4, 0, 40000), +(9500338, 2000003, 1, 4, 0, 40000), +(9303001, 2000003, 1, 1, 0, 40000), +(3220000, 2012002, 1, 4, 0, 3000), +(9300185, 2012002, 1, 4, 0, 3000), +(9500307, 2012002, 1, 4, 0, 3000), +(9500338, 2012002, 1, 4, 0, 3000), +(9303001, 2012002, 1, 1, 0, 3000), +(3220000, 2041017, 1, 4, 0, 10000), +(9300185, 2041017, 1, 4, 0, 10000), +(9500307, 2041017, 1, 4, 0, 10000), +(9500338, 2041017, 1, 4, 0, 10000), +(9303001, 2041017, 1, 1, 0, 750), +(3220000, 2041016, 1, 4, 0, 10000), +(9300185, 2041016, 1, 4, 0, 10000), +(9500307, 2041016, 1, 4, 0, 10000), +(9500338, 2041016, 1, 4, 0, 10000), +(9303001, 2041016, 1, 1, 0, 750), +(3220000, 2041043, 1, 4, 0, 10000), +(9300185, 2041043, 1, 4, 0, 10000), +(9500307, 2041043, 1, 4, 0, 10000), +(9500338, 2041043, 1, 4, 0, 10000), +(9303001, 2041043, 1, 1, 0, 750), +(3220000, 2041010, 1, 4, 0, 10000), +(9300185, 2041010, 1, 4, 0, 10000), +(9500307, 2041010, 1, 4, 0, 10000), +(9500338, 2041010, 1, 4, 0, 10000), +(9303001, 2041010, 1, 1, 0, 750), +(3220000, 2041045, 1, 4, 0, 10000), +(9300185, 2041045, 1, 4, 0, 10000), +(9500307, 2041045, 1, 4, 0, 10000), +(9500338, 2041045, 1, 4, 0, 10000), +(9303001, 2041045, 1, 1, 0, 750), +(3220000, 2040801, 1, 4, 0, 10000), +(9300185, 2040801, 1, 4, 0, 10000), +(9500307, 2040801, 1, 4, 0, 10000), +(9500338, 2040801, 1, 4, 0, 10000), +(9303001, 2040801, 1, 1, 0, 750), +(3220000, 2043101, 1, 4, 0, 10000), +(9300185, 2043101, 1, 4, 0, 10000), +(9500307, 2043101, 1, 4, 0, 10000), +(9500338, 2043101, 1, 4, 0, 10000), +(9303001, 2043101, 1, 1, 0, 750), +(3220000, 2043201, 1, 4, 0, 10000), +(9300185, 2043201, 1, 4, 0, 10000), +(9500307, 2043201, 1, 4, 0, 10000), +(9500338, 2043201, 1, 4, 0, 10000), +(9303001, 2043201, 1, 1, 0, 750), +(3220000, 2043001, 1, 4, 0, 10000), +(9300185, 2043001, 1, 4, 0, 10000), +(9500307, 2043001, 1, 4, 0, 10000), +(9500338, 2043001, 1, 4, 0, 10000), +(9303001, 2043001, 1, 1, 0, 750), +(3220000, 2040502, 1, 4, 0, 10000), +(9300185, 2040502, 1, 4, 0, 10000), +(9500307, 2040502, 1, 4, 0, 10000), +(9500338, 2040502, 1, 4, 0, 10000), +(9303001, 2040502, 1, 1, 0, 750), +(3220000, 2040901, 1, 4, 0, 10000), +(9300185, 2040901, 1, 4, 0, 10000), +(9500307, 2040901, 1, 4, 0, 10000), +(9500338, 2040901, 1, 4, 0, 10000), +(9303001, 2040901, 1, 1, 0, 750), +(3220000, 2040701, 1, 4, 0, 10000), +(9300185, 2040701, 1, 4, 0, 10000), +(9500307, 2040701, 1, 4, 0, 10000), +(9500338, 2040701, 1, 4, 0, 10000), +(9303001, 2040701, 1, 1, 0, 750), +(3220000, 2040402, 1, 4, 0, 10000), +(9300185, 2040402, 1, 4, 0, 10000), +(9500307, 2040402, 1, 4, 0, 10000), +(9500338, 2040402, 1, 4, 0, 10000), +(9303001, 2040402, 1, 1, 0, 750), +(3220000, 2044201, 1, 4, 0, 10000), +(9300185, 2044201, 1, 4, 0, 10000), +(9500307, 2044201, 1, 4, 0, 10000), +(9500338, 2044201, 1, 4, 0, 10000), +(9303001, 2044201, 1, 1, 0, 750), +(3220000, 2044002, 1, 4, 0, 10000), +(9300185, 2044002, 1, 4, 0, 10000), +(9500307, 2044002, 1, 4, 0, 10000), +(9500338, 2044002, 1, 4, 0, 10000), +(9303001, 2044002, 1, 1, 0, 750), +(3220000, 2388025, 1, 4, 0, 20000), +(9300185, 2388025, 1, 4, 0, 20000), +(9500307, 2388025, 1, 4, 0, 20000), +(9500338, 2388025, 1, 4, 0, 20000), +(9303001, 2388025, 1, 1, 0, 20000), +(3220000, 4020001, 1, 1, 0, 7000), +(9300185, 4020001, 1, 1, 0, 7000), +(9500307, 4020001, 1, 1, 0, 7000), +(9500338, 4020001, 1, 1, 0, 7000), +(9303001, 4020001, 1, 1, 0, 7000), +(3220000, 4010000, 1, 1, 0, 7000), +(9300185, 4010000, 1, 1, 0, 7000), +(9500307, 4010000, 1, 1, 0, 7000), +(9500338, 4010000, 1, 1, 0, 7000), +(9303001, 4010000, 1, 1, 0, 7000), +(3220000, 1082025, 1, 1, 0, 40000), +(9300185, 1082025, 1, 1, 0, 40000), +(9500307, 1082025, 1, 1, 0, 40000), +(9500338, 1082025, 1, 1, 0, 40000), +(9303001, 1082025, 1, 1, 0, 700), +(3220000, 1041083, 1, 1, 0, 40000), +(9300185, 1041083, 1, 1, 0, 40000), +(9500307, 1041083, 1, 1, 0, 40000), +(9500338, 1041083, 1, 1, 0, 40000), +(9303001, 1041083, 1, 1, 0, 700), +(3220000, 1002170, 1, 1, 0, 40000), +(9300185, 1002170, 1, 1, 0, 40000), +(9500307, 1002170, 1, 1, 0, 40000), +(9500338, 1002170, 1, 1, 0, 40000), +(9303001, 1002170, 1, 1, 0, 700), +(3220000, 1082074, 1, 1, 0, 40000), +(9300185, 1082074, 1, 1, 0, 40000), +(9500307, 1082074, 1, 1, 0, 40000), +(9500338, 1082074, 1, 1, 0, 40000), +(9303001, 1082074, 1, 1, 0, 700), +(3220000, 1072107, 1, 1, 0, 40000), +(9300185, 1072107, 1, 1, 0, 40000), +(9500307, 1072107, 1, 1, 0, 40000), +(9500338, 1072107, 1, 1, 0, 40000), +(9303001, 1072107, 1, 1, 0, 700), +(3220000, 1002185, 1, 1, 0, 40000), +(9300185, 1002185, 1, 1, 0, 40000), +(9500307, 1002185, 1, 1, 0, 40000), +(9500338, 1002185, 1, 1, 0, 40000), +(9303001, 1002185, 1, 1, 0, 700), +(3220000, 1072087, 1, 1, 0, 40000), +(9300185, 1072087, 1, 1, 0, 40000), +(9500307, 1072087, 1, 1, 0, 40000), +(9500338, 1072087, 1, 1, 0, 40000), +(9303001, 1072087, 1, 1, 0, 700), +(3110302, 4000356, 1, 1, 0, 200000), +(3110302, 2000002, 1, 1, 0, 40000), +(3110302, 2000003, 1, 1, 0, 40000), +(3110302, 2002005, 1, 1, 0, 10000), +(3110302, 2060000, 10, 50, 0, 10000), +(3110302, 2061000, 10, 50, 0, 10000), +(3110302, 2044502, 1, 1, 0, 750), +(3110302, 2382024, 1, 1, 0, 20000), +(3110302, 4010005, 1, 1, 0, 7000), +(3110302, 4020006, 1, 1, 0, 7000), +(3110302, 1322003, 1, 1, 0, 700), +(3110302, 1002025, 1, 1, 0, 700), +(3110302, 1040021, 1, 1, 0, 700), +(3110302, 1432003, 1, 1, 0, 700), +(3110302, 1060016, 1, 1, 0, 700), +(3110302, 1002143, 1, 1, 0, 700), +(3110302, 1051025, 1, 1, 0, 700), +(3110302, 1040079, 1, 1, 0, 700), +(3110302, 1060069, 1, 1, 0, 700), +(3110302, 1002180, 1, 1, 0, 700), +(3110302, 1040063, 1, 1, 0, 700), +(3110302, 1060052, 1, 1, 0, 700), +(3110302, 1072297, 1, 1, 0, 700), +(3300005, 4000504, 1, 1, 0, 200000), +(3300005, 2388067, 1, 1, 0, 20000), +(3300005, 2022570, 1, 1, 0, 3000), +(3300005, 2022571, 1, 1, 0, 3000), +(3300005, 2022572, 1, 1, 0, 3000), +(3300005, 2022573, 1, 1, 0, 3000), +(3300005, 2022574, 1, 1, 0, 3000), +(3300005, 2000001, 1, 1, 0, 40000), +(3300005, 2000003, 1, 1, 0, 40000), +(3300005, 2040004, 1, 1, 0, 750), +(3300005, 2040501, 1, 1, 0, 750), +(3300005, 2040504, 1, 1, 0, 750), +(3300005, 2040801, 1, 1, 0, 750), +(3300005, 2041007, 1, 1, 0, 750), +(3300005, 2041045, 1, 1, 0, 750), +(3300005, 2043801, 1, 1, 0, 750), +(3300005, 2044001, 1, 1, 0, 750), +(3300005, 2044201, 1, 1, 0, 750), +(3300005, 2044803, 1, 1, 0, 750), +(3300005, 2044601, 1, 1, 0, 750), +(3300005, 1032013, 1, 1, 0, 700), +(3300005, 1082025, 1, 1, 0, 700), +(3300005, 1082064, 1, 1, 0, 700), +(3300005, 1082073, 1, 1, 0, 700), +(3300005, 1082074, 1, 1, 0, 700), +(3300005, 1082195, 1, 1, 0, 700), +(3300006, 4000506, 1, 1, 0, 200000), +(3300006, 2388068, 1, 1, 0, 20000), +(3300006, 2022575, 1, 1, 0, 3000), +(3300006, 2022576, 1, 1, 0, 3000), +(3300006, 2022577, 1, 1, 0, 3000), +(3300006, 2022578, 1, 1, 0, 3000), +(3300006, 2022579, 1, 1, 0, 3000), +(3300006, 2000001, 1, 1, 0, 40000), +(3300006, 2000003, 1, 1, 0, 40000), +(3300006, 2040701, 1, 1, 0, 750), +(3300006, 2040801, 1, 1, 0, 750), +(3300006, 2040901, 1, 1, 0, 750), +(3300006, 2041043, 1, 1, 0, 750), +(3300006, 2043101, 1, 1, 0, 750), +(3300006, 2043001, 1, 1, 0, 750), +(3300006, 2043201, 1, 1, 0, 750), +(3300006, 2041010, 1, 1, 0, 750), +(3300006, 2041045, 1, 1, 0, 750), +(3300006, 2060000, 10, 50, 0, 10000), +(3300006, 2061000, 10, 50, 0, 10000), +(3300006, 2041017, 1, 1, 0, 750), +(3300006, 2040402, 1, 1, 0, 750), +(3300006, 2044002, 1, 1, 0, 750), +(3300006, 2040502, 1, 1, 0, 750), +(3300006, 2040602, 1, 1, 0, 750), +(3300006, 2041016, 1, 1, 0, 750), +(3300006, 2070009, 1, 1, 0, 400), +(3300006, 2044113, 1, 1, 0, 750), +(3300006, 2044413, 1, 1, 0, 750), +(3300006, 1002098, 1, 1, 0, 700), +(3300006, 1040085, 1, 1, 0, 700), +(3300006, 1041086, 1, 1, 0, 700), +(3300006, 1082025, 1, 1, 0, 700), +(3300006, 1002154, 1, 1, 0, 700), +(3300006, 1050039, 1, 1, 0, 700), +(3300006, 1051026, 1, 1, 0, 700), +(3300006, 1082064, 1, 1, 0, 700), +(3300006, 1072117, 1, 1, 0, 700), +(3300006, 1002170, 1, 1, 0, 700), +(3300006, 1040080, 1, 1, 0, 700), +(3300006, 1041083, 1, 1, 0, 700), +(3300006, 1082073, 1, 1, 0, 700), +(3300006, 1072118, 1, 1, 0, 700), +(3300006, 1002185, 1, 1, 0, 700), +(3300006, 1040084, 1, 1, 0, 700), +(3300006, 1040084, 1, 1, 0, 700), +(3300006, 1082074, 1, 1, 0, 700), +(3300006, 1072107, 1, 1, 0, 700), +(3300006, 1002628, 1, 1, 0, 700), +(3300006, 1052113, 1, 1, 0, 700), +(3300006, 1082195, 1, 1, 0, 700), +(3300006, 1072300, 1, 1, 0, 700), +(3300007, 4000505, 1, 1, 0, 200000), +(3300007, 2388069, 1, 1, 0, 20000), +(3300007, 2022580, 1, 1, 0, 3000), +(3300007, 2022581, 1, 1, 0, 3000), +(3300007, 2022582, 1, 1, 0, 3000), +(3300007, 2022583, 1, 1, 0, 3000), +(3300007, 2022584, 1, 1, 0, 3000), +(3300007, 2000000, 1, 1, 0, 40000), +(3300007, 2010009, 1, 1, 0, 3000), +(3300007, 2020014, 1, 1, 0, 3000), +(3300007, 2040001, 1, 1, 0, 750), +(3300007, 2040301, 1, 1, 0, 750), +(3300007, 2040401, 1, 1, 0, 750), +(3300007, 2043201, 1, 1, 0, 750), +(3300007, 2043701, 1, 1, 0, 750), +(3300007, 2041016, 1, 1, 0, 750), +(3300007, 2043801, 1, 1, 0, 750), +(3300007, 2044001, 1, 1, 0, 750), +(3300007, 2040501, 1, 1, 0, 750), +(3300007, 2040601, 1, 1, 0, 750), +(3300007, 2060000, 10, 50, 0, 10000), +(3300007, 2061000, 10, 50, 0, 10000), +(3300007, 2070000, 1, 1, 0, 400), +(3300007, 2040002, 1, 1, 0, 750), +(3300007, 2040302, 1, 1, 0, 750), +(3300007, 2040402, 1, 1, 0, 750), +(3300007, 2043302, 1, 1, 0, 750), +(3300007, 2043702, 1, 1, 0, 750), +(3300007, 2330000, 1, 1, 0, 400), +(3300007, 2044803, 1, 1, 0, 750), +(3300007, 2044904, 1, 1, 0, 750), +(3300007, 2040419, 1, 1, 0, 750), +(3300007, 2040930, 1, 1, 0, 750), +(3300007, 2043116, 1, 1, 0, 750), +(3300007, 4010000, 1, 1, 0, 7000), +(3300007, 4020000, 1, 1, 0, 7000), +(3300007, 1002049, 1, 1, 0, 700), +(3300007, 1040041, 1, 1, 0, 700), +(3300007, 1041024, 1, 1, 0, 700), +(3300007, 1082001, 1, 1, 0, 700), +(3300007, 1072052, 1, 1, 0, 700), +(3300007, 1002073, 1, 1, 0, 700), +(3300007, 1050025, 1, 1, 0, 700), +(3300007, 1051005, 1, 1, 0, 700), +(3300007, 1082028, 1, 1, 0, 700), +(3300007, 1072074, 1, 1, 0, 700), +(3300007, 1002159, 1, 1, 0, 700), +(3300007, 1040023, 1, 1, 0, 700), +(3300007, 1040025, 1, 1, 0, 700), +(3300007, 1082018, 1, 1, 0, 700), +(3300007, 1072069, 1, 1, 0, 700), +(3300007, 1002150, 1, 1, 0, 700), +(3300007, 1040050, 1, 1, 0, 700), +(3300007, 1041060, 1, 1, 0, 700), +(3300007, 1082039, 1, 1, 0, 700), +(3300007, 1072087, 1, 1, 0, 700), +(3300007, 1002619, 1, 1, 0, 700), +(3300007, 1052104, 1, 1, 0, 700), +(3300007, 1082186, 1, 1, 0, 700), +(3300007, 1072291, 1, 1, 0, 700), +(9001012, 4032311, 1, 1, 0, 10000), +(3400000, 4000539, 1, 1, 0, 200000), +(3400000, 2000001, 1, 1, 0, 40000), +(3400000, 2000003, 1, 1, 0, 40000), +(3400000, 2000006, 1, 1, 0, 40000), +(3400000, 2022003, 1, 1, 0, 3000), +(3400000, 2000004, 1, 1, 0, 40000), +(3400000, 2040004, 1, 1, 0, 750), +(3400000, 2040504, 1, 1, 0, 750), +(3400000, 2049212, 1, 1, 0, 400), +(3400000, 2049214, 1, 1, 0, 400), +(3400000, 4020007, 1, 1, 0, 7000), +(3400000, 4004000, 1, 1, 0, 3000), +(3400000, 1002098, 1, 1, 0, 700), +(3400000, 1002154, 1, 1, 0, 700), +(3400000, 1072117, 1, 1, 0, 700), +(3400000, 1002170, 1, 1, 0, 700), +(3400000, 1072118, 1, 1, 0, 700), +(3400000, 1002185, 1, 1, 0, 700), +(3400000, 1072107, 1, 1, 0, 700), +(3400000, 1002628, 1, 1, 0, 700), +(3400000, 1072300, 1, 1, 0, 700), +(9410011, 1072117, 1, 1, 0, 700), +(9410011, 1072107, 1, 1, 0, 700), +(9410011, 1002628, 1, 1, 0, 700), +(3230302, 4000099, 1, 1, 0, 200000), +(3230302, 4001125, 1, 1, 0, 7000), +(3230302, 4030013, 1, 1, 0, 10000), +(3230302, 4131008, 1, 1, 0, 3000), +(3230302, 2000002, 1, 1, 0, 40000), +(3230302, 2000003, 1, 1, 0, 40000), +(3230302, 2041023, 1, 1, 0, 750), +(3230302, 2382022, 1, 1, 0, 20000), +(3230302, 4010006, 1, 1, 0, 7000), +(3230302, 4020004, 1, 1, 0, 7000), +(3230302, 4004001, 1, 1, 0, 3000), +(3230302, 4004003, 1, 1, 0, 3000), +(3230302, 1072040, 1, 1, 0, 700), +(3230302, 1442009, 1, 1, 0, 700), +(3230302, 1072078, 1, 1, 0, 700), +(3230302, 1002141, 1, 1, 0, 700), +(3230302, 1462006, 1, 1, 0, 700), +(3230302, 1040075, 1, 1, 0, 700), +(3230302, 1060064, 1, 1, 0, 700), +(3230302, 1040082, 1, 1, 0, 700), +(3230302, 1060071, 1, 1, 0, 700), +(3230302, 1472010, 1, 1, 0, 700), +(3230302, 1051009, 1, 1, 0, 700), +(3230302, 1052110, 1, 1, 0, 700), +(3210203, 4000108, 1, 1, 0, 200000), +(9500113, 4000108, 1, 1, 0, 200000), +(3210203, 4030015, 1, 1, 0, 10000), +(9500113, 4030015, 1, 1, 0, 10000), +(3210203, 4130003, 1, 1, 0, 3000), +(9500113, 4130003, 1, 1, 0, 3000), +(3210203, 4131009, 1, 1, 0, 3000), +(9500113, 4131009, 1, 1, 0, 3000), +(3210203, 2002008, 1, 1, 0, 10000), +(9500113, 2002008, 1, 1, 0, 10000), +(3210203, 2044501, 1, 1, 0, 750), +(9500113, 2044501, 1, 1, 0, 750), +(3210203, 2049101, 1, 1, 0, 400), +(9500113, 2049101, 1, 1, 0, 400), +(3210203, 2382025, 1, 1, 0, 20000), +(9500113, 2382025, 1, 1, 0, 20000), +(3210203, 4010002, 1, 1, 0, 7000), +(9500113, 4010002, 1, 1, 0, 7000), +(3210203, 4004003, 1, 1, 0, 3000), +(9500113, 4004003, 1, 1, 0, 3000), +(3210203, 1040021, 1, 1, 0, 700), +(9500113, 1040021, 1, 1, 0, 700), +(3210203, 1082025, 1, 1, 0, 700), +(9500113, 1082025, 1, 1, 0, 700), +(3210203, 1312007, 1, 1, 0, 700), +(9500113, 1312007, 1, 1, 0, 700), +(3210203, 1060018, 1, 1, 0, 700), +(9500113, 1060018, 1, 1, 0, 700), +(3210203, 1050039, 1, 1, 0, 700), +(9500113, 1050039, 1, 1, 0, 700), +(3210203, 1002153, 1, 1, 0, 700), +(9500113, 1002153, 1, 1, 0, 700), +(3210203, 1072114, 1, 1, 0, 700), +(9500113, 1072114, 1, 1, 0, 700), +(3210203, 1072080, 1, 1, 0, 700), +(9500113, 1072080, 1, 1, 0, 700), +(3210203, 1002166, 1, 1, 0, 700), +(9500113, 1002166, 1, 1, 0, 700), +(3210203, 1332031, 1, 1, 0, 700), +(9500113, 1332031, 1, 1, 0, 700), +(3210203, 1051006, 1, 1, 0, 700), +(9500113, 1051006, 1, 1, 0, 700), +(3210203, 1482005, 1, 1, 0, 700), +(9500113, 1482005, 1, 1, 0, 700), +(9400542, 4130003, 1, 1, 0, 3000), +(9400542, 4131009, 1, 1, 0, 3000), +(9400542, 2000002, 1, 1, 0, 40000), +(9400542, 2002001, 1, 1, 0, 10000), +(9400542, 2002008, 1, 1, 0, 10000), +(9400542, 2044709, 1, 1, 0, 750), +(9400542, 2040805, 1, 1, 0, 750), +(9400542, 2060004, 10, 50, 0, 10000), +(9400542, 2061004, 10, 50, 0, 10000), +(9400542, 1032039, 1, 1, 0, 700), +(9400542, 1050039, 1, 1, 0, 700), +(9400542, 1332031, 1, 1, 0, 700), +(3400001, 2000001, 1, 1, 0, 40000), +(3400001, 2000003, 1, 1, 0, 40000), +(3400001, 2000006, 1, 1, 0, 40000), +(3400001, 2022003, 1, 1, 0, 3000), +(3400001, 2000004, 1, 1, 0, 40000), +(3400001, 2040004, 1, 1, 0, 750), +(3400001, 2040504, 1, 1, 0, 750), +(3400001, 2049212, 1, 1, 0, 400), +(3400001, 2049214, 1, 1, 0, 400), +(3400001, 4020007, 1, 1, 0, 7000), +(3400001, 4004000, 1, 1, 0, 3000), +(3400001, 1002098, 1, 1, 0, 700), +(3400001, 1002154, 1, 1, 0, 700), +(3400001, 1072117, 1, 1, 0, 700), +(3400001, 1002170, 1, 1, 0, 700), +(3400001, 1072118, 1, 1, 0, 700), +(3400001, 1002185, 1, 1, 0, 700), +(3400001, 1072107, 1, 1, 0, 700), +(3400001, 1002628, 1, 1, 0, 700), +(3400001, 1072300, 1, 1, 0, 700), +(3210206, 4000103, 1, 1, 0, 200000), +(9500117, 4000103, 1, 1, 0, 200000), +(3210206, 4131006, 1, 1, 0, 3000), +(9500117, 4131006, 1, 1, 0, 3000), +(3210206, 2000002, 1, 1, 0, 40000), +(9500117, 2000002, 1, 1, 0, 40000), +(3210206, 2000003, 1, 1, 0, 40000), +(9500117, 2000003, 1, 1, 0, 40000), +(3210206, 2043001, 1, 1, 0, 750), +(9500117, 2043001, 1, 1, 0, 750), +(3210206, 2070003, 1, 1, 0, 400), +(9500117, 2070003, 1, 1, 0, 400), +(3210206, 2382026, 1, 1, 0, 20000), +(9500117, 2382026, 1, 1, 0, 20000), +(3210206, 4010003, 1, 1, 0, 7000), +(9500117, 4010003, 1, 1, 0, 7000), +(3210206, 4020008, 1, 1, 0, 7000), +(9500117, 4020008, 1, 1, 0, 7000), +(3210206, 4020005, 1, 1, 0, 7000), +(9500117, 4020005, 1, 1, 0, 7000), +(3210206, 4004000, 1, 1, 0, 3000), +(9500117, 4004000, 1, 1, 0, 3000), +(3210206, 1332020, 1, 1, 0, 700), +(9500117, 1332020, 1, 1, 0, 700), +(3210206, 1072003, 1, 1, 0, 700), +(9500117, 1072003, 1, 1, 0, 700), +(3210206, 1040000, 1, 1, 0, 700), +(9500117, 1040000, 1, 1, 0, 700), +(3210206, 1051032, 1, 1, 0, 700), +(9500117, 1051032, 1, 1, 0, 700), +(3210206, 1072103, 1, 1, 0, 700), +(9500117, 1072103, 1, 1, 0, 700), +(3210206, 1002168, 1, 1, 0, 700), +(9500117, 1002168, 1, 1, 0, 700), +(3210206, 1002212, 1, 1, 0, 700), +(9500117, 1002212, 1, 1, 0, 700), +(3210206, 1072082, 1, 1, 0, 700), +(9500117, 1072082, 1, 1, 0, 700), +(3210206, 1040081, 1, 1, 0, 700), +(9500117, 1040081, 1, 1, 0, 700), +(3210206, 1002179, 1, 1, 0, 700), +(9500117, 1002179, 1, 1, 0, 700), +(3210206, 1002207, 1, 1, 0, 700), +(9500117, 1002207, 1, 1, 0, 700), +(3210206, 1492005, 1, 1, 0, 700), +(9500117, 1492005, 1, 1, 0, 700), +(3210208, 4000168, 1, 1, 0, 200000), +(3210208, 4030012, 1, 1, 0, 10000), +(3210208, 4130003, 1, 1, 0, 3000), +(3210208, 4131009, 1, 1, 0, 3000), +(3210208, 2000002, 1, 1, 0, 40000), +(3210208, 2000003, 1, 1, 0, 40000), +(3210208, 2002005, 1, 1, 0, 10000), +(3210208, 2044501, 1, 1, 0, 750), +(3210208, 4004003, 1, 1, 0, 3000), +(3210208, 4010002, 1, 1, 0, 7000), +(3210208, 1002048, 1, 1, 0, 700), +(3210208, 1072117, 1, 1, 0, 700), +(3210208, 1382018, 1, 1, 0, 700), +(3210208, 1041052, 1, 1, 0, 700), +(3210208, 1061048, 1, 1, 0, 700), +(3210208, 1082072, 1, 1, 0, 700), +(3210208, 1041065, 1, 1, 0, 700), +(3210208, 1061060, 1, 1, 0, 700), +(3210208, 1002173, 1, 1, 0, 700), +(3210208, 1051008, 1, 1, 0, 700), +(3210208, 1082076, 1, 1, 0, 700), +(3210208, 1052110, 1, 1, 0, 700), +(3210208, 1082195, 1, 1, 0, 700), +(3210450, 4000153, 1, 1, 0, 200000), +(3210450, 4131008, 1, 1, 0, 3000), +(3210450, 2000002, 1, 1, 0, 40000), +(3210450, 2022040, 1, 1, 0, 3000), +(3210450, 2040320, 1, 1, 0, 750), +(3210450, 2330001, 1, 1, 0, 400), +(3210450, 2382027, 1, 1, 0, 20000), +(3210450, 4020001, 1, 1, 0, 7000), +(3210450, 4020000, 1, 1, 0, 7000), +(3210450, 1032010, 1, 1, 0, 700), +(3210450, 1051015, 1, 1, 0, 700), +(3210450, 1302004, 1, 1, 0, 700), +(3210450, 1002023, 1, 1, 0, 700), +(3210450, 1041042, 1, 1, 0, 700), +(3210450, 1082063, 1, 1, 0, 700), +(3210450, 1002137, 1, 1, 0, 700), +(3210450, 1002163, 1, 1, 0, 700), +(3210450, 1060045, 1, 1, 0, 700), +(3210450, 1040062, 1, 1, 0, 700), +(3210450, 1060051, 1, 1, 0, 700), +(3210450, 1332031, 1, 1, 0, 700), +(3210450, 1072110, 1, 1, 0, 700), +(3210450, 1332014, 1, 1, 0, 700), +(3210450, 1041050, 1, 1, 0, 700), +(3210450, 1002625, 1, 1, 0, 700), +(3230102, 4030012, 1, 1, 0, 10000), +(9300227, 4030012, 1, 1, 0, 10000), +(9500115, 4030012, 1, 1, 0, 10000), +(3230102, 2000002, 1, 1, 0, 40000), +(9300227, 2000002, 1, 1, 0, 40000), +(9500115, 2000002, 1, 1, 0, 40000), +(3230102, 2000003, 1, 1, 0, 40000), +(9300227, 2000003, 1, 1, 0, 40000), +(9500115, 2000003, 1, 1, 0, 40000), +(3230102, 2048005, 1, 1, 0, 750), +(9300227, 2048005, 1, 1, 0, 750), +(9500115, 2048005, 1, 1, 0, 750), +(3230102, 2048002, 1, 1, 0, 750), +(9300227, 2048002, 1, 1, 0, 750), +(9500115, 2048002, 1, 1, 0, 750), +(3230102, 2043301, 1, 1, 0, 750), +(9300227, 2043301, 1, 1, 0, 750), +(9500115, 2043301, 1, 1, 0, 750), +(3230102, 4006001, 1, 1, 0, 7000), +(9300227, 4006001, 1, 1, 0, 7000), +(9500115, 4006001, 1, 1, 0, 7000), +(3230102, 2382030, 1, 1, 0, 20000), +(9300227, 2382030, 1, 1, 0, 20000), +(9500115, 2382030, 1, 1, 0, 20000), +(3230102, 4010005, 1, 1, 0, 7000), +(9300227, 4010005, 1, 1, 0, 7000), +(9500115, 4010005, 1, 1, 0, 7000), +(3230102, 4020000, 1, 1, 0, 7000), +(9300227, 4020000, 1, 1, 0, 7000), +(9500115, 4020000, 1, 1, 0, 7000), +(3230102, 1302020, 1, 1, 0, 700), +(9300227, 1302020, 1, 1, 0, 700), +(9500115, 1302020, 1, 1, 0, 700), +(3230102, 1302030, 1, 1, 0, 700), +(9300227, 1302030, 1, 1, 0, 700), +(9500115, 1302030, 1, 1, 0, 700), +(3230102, 1322023, 1, 1, 0, 700), +(9300227, 1322023, 1, 1, 0, 700), +(9500115, 1322023, 1, 1, 0, 700), +(3230102, 1322022, 1, 1, 0, 700), +(9300227, 1322022, 1, 1, 0, 700), +(9500115, 1322022, 1, 1, 0, 700), +(3230102, 1332020, 1, 1, 0, 700), +(9300227, 1332020, 1, 1, 0, 700), +(9500115, 1332020, 1, 1, 0, 700), +(3230102, 1322024, 1, 1, 0, 700), +(9300227, 1322024, 1, 1, 0, 700), +(9500115, 1322024, 1, 1, 0, 700), +(3230102, 1302017, 1, 1, 0, 700), +(9300227, 1302017, 1, 1, 0, 700), +(9500115, 1302017, 1, 1, 0, 700), +(3230102, 1322021, 1, 1, 0, 700), +(9300227, 1322021, 1, 1, 0, 700), +(9500115, 1322021, 1, 1, 0, 700), +(3230102, 1442027, 1, 1, 0, 700), +(9300227, 1442027, 1, 1, 0, 700), +(9500115, 1442027, 1, 1, 0, 700), +(3230102, 1442028, 1, 1, 0, 700), +(9300227, 1442028, 1, 1, 0, 700), +(9500115, 1442028, 1, 1, 0, 700), +(3230102, 1092014, 1, 1, 0, 700), +(9300227, 1092014, 1, 1, 0, 700), +(9500115, 1092014, 1, 1, 0, 700), +(3230102, 1442001, 1, 1, 0, 700), +(9300227, 1442001, 1, 1, 0, 700), +(9500115, 1442001, 1, 1, 0, 700), +(3230102, 1050000, 1, 1, 0, 700), +(9300227, 1050000, 1, 1, 0, 700), +(9500115, 1050000, 1, 1, 0, 700), +(3230102, 1072113, 1, 1, 0, 700), +(9300227, 1072113, 1, 1, 0, 700), +(9500115, 1072113, 1, 1, 0, 700), +(3230102, 1082056, 1, 1, 0, 700), +(9300227, 1082056, 1, 1, 0, 700), +(9500115, 1082056, 1, 1, 0, 700), +(3230102, 1382017, 1, 1, 0, 700), +(9300227, 1382017, 1, 1, 0, 700), +(9500115, 1382017, 1, 1, 0, 700), +(3230102, 1050038, 1, 1, 0, 700), +(9300227, 1050038, 1, 1, 0, 700), +(9500115, 1050038, 1, 1, 0, 700), +(3230102, 1072121, 1, 1, 0, 700), +(9300227, 1072121, 1, 1, 0, 700), +(9500115, 1072121, 1, 1, 0, 700), +(3230102, 1040080, 1, 1, 0, 700), +(9300227, 1040080, 1, 1, 0, 700), +(9500115, 1040080, 1, 1, 0, 700), +(3230102, 1452005, 1, 1, 0, 700), +(9300227, 1452005, 1, 1, 0, 700), +(9500115, 1452005, 1, 1, 0, 700), +(3230102, 1082074, 1, 1, 0, 700), +(9300227, 1082074, 1, 1, 0, 700), +(9500115, 1082074, 1, 1, 0, 700), +(3230102, 1041074, 1, 1, 0, 700), +(9300227, 1041074, 1, 1, 0, 700), +(9500115, 1041074, 1, 1, 0, 700), +(3230102, 1061069, 1, 1, 0, 700), +(9300227, 1061069, 1, 1, 0, 700), +(9500115, 1061069, 1, 1, 0, 700), +(3230102, 1072297, 1, 1, 0, 700), +(9300227, 1072297, 1, 1, 0, 700), +(9500115, 1072297, 1, 1, 0, 700), +(3230102, 1482006, 1, 1, 0, 700), +(9300227, 1482006, 1, 1, 0, 700), +(9500115, 1482006, 1, 1, 0, 700), +(3230306, 4000115, 1, 1, 0, 200000), +(3230306, 4031992, 1, 1, 0, 7000), +(3230306, 4031159, 1, 1, 0, 7000), +(3230306, 4031203, 1, 1, 0, 7000), +(3230306, 2000002, 1, 1, 0, 40000), +(3230306, 2000003, 1, 1, 0, 40000), +(3230306, 2002006, 1, 1, 0, 10000), +(3230306, 4006000, 1, 1, 0, 7000), +(3230306, 2044201, 1, 1, 0, 750), +(3230306, 2043702, 1, 1, 0, 750), +(3230306, 2044902, 1, 1, 0, 750), +(3230306, 2070003, 1, 1, 0, 400), +(3230306, 2070004, 1, 1, 0, 400), +(3230306, 2060000, 10, 50, 0, 10000), +(3230306, 2061000, 10, 50, 0, 10000), +(3230306, 2382032, 1, 1, 0, 20000), +(3230306, 4010001, 1, 1, 0, 7000), +(3230306, 4010006, 1, 1, 0, 7000), +(3230306, 4004002, 1, 1, 0, 3000), +(3230306, 1002025, 1, 1, 0, 700), +(3230306, 1060074, 1, 1, 0, 700), +(3230306, 1040085, 1, 1, 0, 700), +(3230306, 1072041, 1, 1, 0, 700), +(3230306, 1002155, 1, 1, 0, 700), +(3230306, 1072089, 1, 1, 0, 700), +(3230306, 1092021, 1, 1, 0, 700), +(3230306, 1050036, 1, 1, 0, 700), +(3230306, 1082069, 1, 1, 0, 700), +(3230306, 1040079, 1, 1, 0, 700), +(3230306, 1041069, 1, 1, 0, 700), +(3230306, 1061064, 1, 1, 0, 700), +(3230306, 1051006, 1, 1, 0, 700), +(3230306, 1060052, 1, 1, 0, 700), +(3230306, 1072032, 1, 1, 0, 700), +(3230306, 1002182, 1, 1, 0, 700), +(3230306, 1492005, 1, 1, 0, 700), +(3400002, 4000540, 1, 1, 0, 200000), +(3400002, 2000001, 1, 1, 0, 40000), +(3400002, 2000003, 1, 1, 0, 40000), +(3400002, 2000006, 1, 1, 0, 40000), +(3400002, 2040004, 1, 1, 0, 750), +(3400002, 2040504, 1, 1, 0, 750), +(3400002, 2049212, 1, 1, 0, 400), +(3400002, 2049214, 1, 1, 0, 400), +(3400002, 4020007, 1, 1, 0, 7000), +(3400002, 4004000, 1, 1, 0, 3000), +(3400002, 1002098, 1, 1, 0, 700), +(3400002, 1002154, 1, 1, 0, 700), +(3400002, 1072117, 1, 1, 0, 700), +(3400002, 1002170, 1, 1, 0, 700), +(3400002, 1072118, 1, 1, 0, 700), +(3400002, 1002185, 1, 1, 0, 700), +(3400002, 1072107, 1, 1, 0, 700), +(3400002, 1002628, 1, 1, 0, 700), +(3400002, 1072300, 1, 1, 0, 700), +(3210800, 4000026, 1, 1, 0, 200000), +(9300225, 4000026, 1, 1, 0, 200000), +(3210800, 4000021, 1, 1, 0, 200000), +(9300225, 4000021, 1, 1, 0, 200000), +(3210800, 4003004, 1, 1, 0, 7000), +(9300225, 4003004, 1, 1, 0, 7000), +(3210800, 4030012, 1, 1, 0, 10000), +(9300225, 4030012, 1, 1, 0, 10000), +(3210800, 4130001, 1, 1, 0, 3000), +(9300225, 4130001, 1, 1, 0, 3000), +(3210800, 2000003, 1, 1, 0, 40000), +(9300225, 2000003, 1, 1, 0, 40000), +(3210800, 2070003, 1, 1, 0, 400), +(9300225, 2070003, 1, 1, 0, 400), +(3210800, 2060005, 10, 50, 0, 10000), +(9300225, 2060005, 10, 50, 0, 10000), +(3210800, 2041010, 1, 1, 0, 750), +(9300225, 2041010, 1, 1, 0, 750), +(3210800, 2382029, 1, 1, 0, 20000), +(9300225, 2382029, 1, 1, 0, 20000), +(3210800, 4010004, 1, 1, 0, 7000), +(9300225, 4010004, 1, 1, 0, 7000), +(3210800, 4020003, 1, 1, 0, 7000), +(9300225, 4020003, 1, 1, 0, 7000), +(3210800, 1402010, 1, 1, 0, 700), +(9300225, 1402010, 1, 1, 0, 700), +(3210800, 1051014, 1, 1, 0, 700), +(9300225, 1051014, 1, 1, 0, 700), +(3210800, 1092013, 1, 1, 0, 700), +(9300225, 1092013, 1, 1, 0, 700), +(3210800, 1072116, 1, 1, 0, 700), +(9300225, 1072116, 1, 1, 0, 700), +(3210800, 1002038, 1, 1, 0, 700), +(9300225, 1002038, 1, 1, 0, 700), +(3210800, 1040075, 1, 1, 0, 700), +(9300225, 1040075, 1, 1, 0, 700), +(3210800, 1060064, 1, 1, 0, 700), +(9300225, 1060064, 1, 1, 0, 700), +(3210800, 1462014, 1, 1, 0, 700), +(9300225, 1462014, 1, 1, 0, 700), +(3210800, 1002136, 1, 1, 0, 700), +(9300225, 1002136, 1, 1, 0, 700), +(3210800, 1041050, 1, 1, 0, 700), +(9300225, 1041050, 1, 1, 0, 700), +(3210800, 1061046, 1, 1, 0, 700), +(9300225, 1061046, 1, 1, 0, 700), +(3210800, 1472017, 1, 1, 0, 700), +(9300225, 1472017, 1, 1, 0, 700), +(3210800, 1002172, 1, 1, 0, 700), +(9300225, 1002172, 1, 1, 0, 700), +(3210800, 1072109, 1, 1, 0, 700), +(9300225, 1072109, 1, 1, 0, 700), +(3210800, 1082192, 1, 1, 0, 700), +(9300225, 1082192, 1, 1, 0, 700), +(3210800, 1072300, 1, 1, 0, 700), +(9300225, 1072300, 1, 1, 0, 700), +(3230303, 4000104, 1, 1, 0, 200000), +(3230303, 4131007, 1, 1, 0, 3000), +(3230303, 2000002, 1, 1, 0, 40000), +(3230303, 2000003, 1, 1, 0, 40000), +(3230303, 2043301, 1, 1, 0, 750), +(3230303, 2382031, 1, 1, 0, 20000), +(3230303, 4010005, 1, 1, 0, 7000), +(3230303, 4020004, 1, 1, 0, 7000), +(3230303, 4004001, 1, 1, 0, 3000), +(3230303, 1322003, 1, 1, 0, 700), +(3230303, 1002092, 1, 1, 0, 700), +(3230303, 1072091, 1, 1, 0, 700), +(3230303, 1372003, 1, 1, 0, 700), +(3230303, 1092021, 1, 1, 0, 700), +(3230303, 1041081, 1, 1, 0, 700), +(3230303, 1462007, 1, 1, 0, 700), +(3230303, 1002168, 1, 1, 0, 700), +(3230303, 1002181, 1, 1, 0, 700), +(3230303, 1472018, 1, 1, 0, 700), +(3230303, 1082046, 1, 1, 0, 700), +(3230303, 1482005, 1, 1, 0, 700), +(3230405, 4000154, 1, 1, 0, 200000), +(9410020, 4000154, 1, 1, 0, 200000), +(3230405, 4031209, 1, 1, 0, 7000), +(9410020, 4031209, 1, 1, 0, 7000), +(3230405, 2002005, 1, 1, 0, 10000), +(9410020, 2002005, 1, 1, 0, 10000), +(3230405, 2022040, 1, 1, 0, 3000), +(9410020, 2022040, 1, 1, 0, 3000), +(3230405, 2040707, 1, 1, 0, 750), +(9410020, 2040707, 1, 1, 0, 750), +(3230405, 2382035, 1, 1, 0, 20000), +(9410020, 2382035, 1, 1, 0, 20000), +(3230405, 4010000, 1, 1, 0, 7000), +(9410020, 4010000, 1, 1, 0, 7000), +(3230405, 4010001, 1, 1, 0, 7000), +(9410020, 4010001, 1, 1, 0, 7000), +(3230405, 4020002, 1, 1, 0, 7000), +(9410020, 4020002, 1, 1, 0, 7000), +(3230405, 1302009, 1, 1, 0, 700), +(9410020, 1302009, 1, 1, 0, 700), +(3230405, 1312007, 1, 1, 0, 700), +(9410020, 1312007, 1, 1, 0, 700), +(3230405, 1372012, 1, 1, 0, 700), +(9410020, 1372012, 1, 1, 0, 700), +(3230405, 1082054, 1, 1, 0, 700), +(9410020, 1082054, 1, 1, 0, 700), +(3230405, 1040073, 1, 1, 0, 700), +(9410020, 1040073, 1, 1, 0, 700), +(3230405, 1332031, 1, 1, 0, 700), +(9410020, 1332031, 1, 1, 0, 700), +(3230405, 1332011, 1, 1, 0, 700), +(9410020, 1332011, 1, 1, 0, 700), +(3230405, 1072128, 1, 1, 0, 700), +(9410020, 1072128, 1, 1, 0, 700), +(3230405, 1002177, 1, 1, 0, 700), +(9410020, 1002177, 1, 1, 0, 700), +(3230405, 1082192, 1, 1, 0, 700), +(9410020, 1082192, 1, 1, 0, 700), +(9400515, 4031593, 1, 1, 0, 7000), +(3110303, 4000356, 1, 1, 0, 200000), +(3110303, 2000002, 1, 1, 0, 40000), +(3110303, 2000003, 1, 1, 0, 40000), +(3110303, 2002005, 1, 1, 0, 10000), +(3110303, 2060000, 10, 50, 0, 10000), +(3110303, 2061000, 10, 50, 0, 10000), +(3110303, 2330001, 1, 1, 0, 400), +(3110303, 2040320, 1, 1, 0, 750), +(3110303, 2382036, 1, 1, 0, 20000), +(3110303, 4010001, 1, 1, 0, 7000), +(3110303, 4020005, 1, 1, 0, 7000), +(3110303, 4004003, 1, 1, 0, 3000), +(3110303, 1032018, 1, 1, 0, 700), +(3110303, 1040086, 1, 1, 0, 700), +(3110303, 1432003, 1, 1, 0, 700), +(3110303, 1082010, 1, 1, 0, 700), +(3110303, 1382018, 1, 1, 0, 700), +(3110303, 1082082, 1, 1, 0, 700), +(3110303, 1082085, 1, 1, 0, 700), +(3110303, 1462005, 1, 1, 0, 700), +(3110303, 1002167, 1, 1, 0, 700), +(3110303, 1072129, 1, 1, 0, 700), +(3110303, 1040084, 1, 1, 0, 700), +(3110303, 1002183, 1, 1, 0, 700), +(3110303, 1472012, 1, 1, 0, 700), +(3110303, 1060073, 1, 1, 0, 700), +(3220001, 4000329, 1, 1, 0, 200000), +(9300186, 4000329, 1, 1, 0, 200000), +(9500339, 4000329, 1, 1, 0, 200000), +(9303003, 4000329, 1, 1, 0, 200000), +(3220001, 4000330, 1, 1, 0, 200000), +(9300186, 4000330, 1, 1, 0, 200000), +(9500339, 4000330, 1, 1, 0, 200000), +(9303003, 4000330, 1, 1, 0, 200000), +(3220001, 4000331, 1, 1, 0, 200000), +(9300186, 4000331, 1, 1, 0, 200000), +(9500339, 4000331, 1, 1, 0, 200000), +(9303003, 4000331, 1, 1, 0, 200000), +(3220001, 2000003, 1, 4, 0, 40000), +(9300186, 2000003, 1, 4, 0, 40000), +(9500339, 2000003, 1, 4, 0, 40000), +(9303003, 2000003, 1, 1, 0, 40000), +(3220001, 2000001, 1, 4, 0, 40000), +(9300186, 2000001, 1, 4, 0, 40000), +(9500339, 2000001, 1, 4, 0, 40000), +(9303003, 2000001, 1, 1, 0, 40000), +(3220001, 2022155, 1, 4, 0, 3000), +(9300186, 2022155, 1, 4, 0, 3000), +(9500339, 2022155, 1, 4, 0, 3000), +(9303003, 2022155, 1, 1, 0, 3000), +(3220001, 2041007, 1, 4, 0, 10000), +(9300186, 2041007, 1, 4, 0, 10000), +(9500339, 2041007, 1, 4, 0, 10000), +(9303003, 2041007, 1, 1, 0, 750), +(3220001, 2041045, 1, 4, 0, 10000), +(9300186, 2041045, 1, 4, 0, 10000), +(9500339, 2041045, 1, 4, 0, 10000), +(9303003, 2041045, 1, 1, 0, 750), +(3220001, 2044601, 1, 4, 0, 10000), +(9300186, 2044601, 1, 4, 0, 10000), +(9500339, 2044601, 1, 4, 0, 10000), +(9303003, 2044601, 1, 1, 0, 750), +(3220001, 2040801, 1, 4, 0, 10000), +(9300186, 2040801, 1, 4, 0, 10000), +(9500339, 2040801, 1, 4, 0, 10000), +(9303003, 2040801, 1, 1, 0, 750), +(3220001, 2040004, 1, 4, 0, 10000), +(9300186, 2040004, 1, 4, 0, 10000), +(9500339, 2040004, 1, 4, 0, 10000), +(9303003, 2040004, 1, 1, 0, 750), +(3220001, 2044803, 1, 4, 0, 10000), +(9300186, 2044803, 1, 4, 0, 10000), +(9500339, 2044803, 1, 4, 0, 10000), +(9303003, 2044803, 1, 1, 0, 750), +(3220001, 2040504, 1, 4, 0, 10000), +(9300186, 2040504, 1, 4, 0, 10000), +(9500339, 2040504, 1, 4, 0, 10000), +(9303003, 2040504, 1, 1, 0, 750), +(3220001, 2040501, 1, 4, 0, 10000), +(9300186, 2040501, 1, 4, 0, 10000), +(9500339, 2040501, 1, 4, 0, 10000), +(9303003, 2040501, 1, 1, 0, 750), +(3220001, 2040516, 1, 4, 0, 10000), +(9300186, 2040516, 1, 4, 0, 10000), +(9500339, 2040516, 1, 4, 0, 10000), +(9303003, 2040516, 1, 1, 0, 750), +(3220001, 2043801, 1, 4, 0, 10000), +(9300186, 2043801, 1, 4, 0, 10000), +(9500339, 2043801, 1, 4, 0, 10000), +(9303003, 2043801, 1, 1, 0, 750), +(3220001, 2044201, 1, 4, 0, 10000), +(9300186, 2044201, 1, 4, 0, 10000), +(9500339, 2044201, 1, 4, 0, 10000), +(9303003, 2044201, 1, 1, 0, 750), +(3220001, 2044001, 1, 4, 0, 10000), +(9300186, 2044001, 1, 4, 0, 10000), +(9500339, 2044001, 1, 4, 0, 10000), +(9303003, 2044001, 1, 1, 0, 750), +(3220001, 2388029, 1, 4, 0, 20000), +(9300186, 2388029, 1, 4, 0, 20000), +(9500339, 2388029, 1, 4, 0, 20000), +(9303003, 2388029, 1, 1, 0, 20000), +(3220001, 4010002, 1, 1, 0, 7000), +(9300186, 4010002, 1, 1, 0, 7000), +(9500339, 4010002, 1, 1, 0, 7000), +(9303003, 4010002, 1, 1, 0, 7000), +(3220001, 4020003, 1, 1, 0, 7000), +(9300186, 4020003, 1, 1, 0, 7000), +(9500339, 4020003, 1, 1, 0, 7000), +(9303003, 4020003, 1, 1, 0, 7000), +(3220001, 4010007, 1, 1, 0, 7000), +(9300186, 4010007, 1, 1, 0, 7000), +(9500339, 4010007, 1, 1, 0, 7000), +(9303003, 4010007, 1, 1, 0, 7000), +(3220001, 1032013, 1, 1, 0, 40000), +(9300186, 1032013, 1, 1, 0, 40000), +(9500339, 1032013, 1, 1, 0, 40000), +(9303003, 1032013, 1, 1, 0, 700), +(3220001, 1302063, 1, 1, 0, 40000), +(9300186, 1302063, 1, 1, 0, 40000), +(9500339, 1302063, 1, 1, 0, 40000), +(9303003, 1302063, 1, 1, 0, 700), +(3220001, 1082025, 1, 1, 0, 40000), +(9300186, 1082025, 1, 1, 0, 40000), +(9500339, 1082025, 1, 1, 0, 40000), +(9303003, 1082025, 1, 1, 0, 700), +(3220001, 1082064, 1, 1, 0, 40000), +(9300186, 1082064, 1, 1, 0, 40000), +(9500339, 1082064, 1, 1, 0, 40000), +(9303003, 1082064, 1, 1, 0, 700), +(3220001, 1082073, 1, 1, 0, 40000), +(9300186, 1082073, 1, 1, 0, 40000), +(9500339, 1082073, 1, 1, 0, 40000), +(9303003, 1082073, 1, 1, 0, 700), +(3220001, 1082074, 1, 1, 0, 40000), +(9300186, 1082074, 1, 1, 0, 40000), +(9500339, 1082074, 1, 1, 0, 40000), +(9303003, 1082074, 1, 1, 0, 700), +(3220001, 1082195, 1, 1, 0, 40000), +(9300186, 1082195, 1, 1, 0, 40000), +(9500339, 1082195, 1, 1, 0, 40000), +(9303003, 1082195, 1, 1, 0, 700), +(3300008, 4001318, 1, 1, 0, 7000), +(3300008, 2388070, 1, 4, 0, 20000), +(3300008, 2000002, 1, 4, 0, 40000), +(3300008, 2000003, 1, 4, 0, 40000), +(3300008, 2002002, 1, 4, 0, 10000), +(3300008, 2002003, 1, 4, 0, 10000), +(3300008, 2040301, 1, 4, 0, 10000), +(3300008, 2040504, 1, 4, 0, 10000), +(3300008, 2040707, 1, 4, 0, 10000), +(3300008, 2040801, 1, 4, 0, 10000), +(3300008, 2040901, 1, 4, 0, 10000), +(3300008, 2041016, 1, 4, 0, 10000), +(3300008, 2043801, 1, 4, 0, 10000), +(3300008, 2044101, 1, 4, 0, 10000), +(3300008, 2044601, 1, 4, 0, 10000), +(3300008, 2044701, 1, 4, 0, 10000), +(3300008, 2040514, 1, 4, 0, 10000), +(3300008, 2041044, 1, 4, 0, 10000), +(3300008, 2041017, 1, 4, 0, 10000), +(3300008, 2043702, 1, 4, 0, 10000), +(3300008, 2044302, 1, 4, 0, 10000), +(3300008, 2060000, 10, 50, 0, 10000), +(3300008, 2061000, 10, 50, 0, 10000), +(3300008, 2044804, 1, 4, 0, 10000), +(3300008, 2044902, 1, 4, 0, 10000), +(3300008, 2040932, 1, 4, 0, 10000), +(3300008, 2040930, 1, 4, 0, 10000), +(3300008, 4010005, 1, 1, 0, 7000), +(3300008, 4020005, 1, 1, 0, 7000), +(3300008, 1302010, 1, 1, 0, 40000), +(3300008, 1312008, 1, 1, 0, 40000), +(3300008, 1322017, 1, 1, 0, 40000), +(3300008, 1412003, 1, 1, 0, 40000), +(3300008, 1422005, 1, 1, 0, 40000), +(3300008, 1442005, 1, 1, 0, 40000), +(3300008, 1372007, 1, 1, 0, 40000), +(3300008, 1382006, 1, 1, 0, 40000), +(3300008, 1452008, 1, 1, 0, 40000), +(3300008, 1462007, 1, 1, 0, 40000), +(3300008, 1332003, 1, 1, 0, 40000), +(3300008, 1472021, 1, 1, 0, 40000), +(3300008, 1482007, 1, 1, 0, 40000), +(3300008, 1492007, 1, 1, 0, 40000), +(3230103, 4000100, 1, 1, 0, 200000), +(9300134, 4000100, 1, 1, 0, 200000), +(3230103, 4131013, 1, 1, 0, 3000), +(9300134, 4131013, 1, 1, 0, 3000), +(3230103, 2000002, 1, 1, 0, 40000), +(9300134, 2000002, 1, 1, 0, 40000), +(3230103, 2000003, 1, 1, 0, 40000), +(9300134, 2000003, 1, 1, 0, 40000), +(3230103, 2002007, 1, 1, 0, 10000), +(9300134, 2002007, 1, 1, 0, 10000), +(3230103, 2040320, 1, 1, 0, 750), +(9300134, 2040320, 1, 1, 0, 750), +(3230103, 2382033, 1, 1, 0, 20000), +(9300134, 2382033, 1, 1, 0, 20000), +(3230103, 4020003, 1, 1, 0, 7000), +(9300134, 4020003, 1, 1, 0, 7000), +(3230103, 4020001, 1, 1, 0, 7000), +(9300134, 4020001, 1, 1, 0, 7000), +(3230103, 4004000, 1, 1, 0, 3000), +(9300134, 4004000, 1, 1, 0, 3000), +(3230103, 1002025, 1, 1, 0, 700), +(9300134, 1002025, 1, 1, 0, 700), +(3230103, 1002093, 1, 1, 0, 700), +(9300134, 1002093, 1, 1, 0, 700), +(3230103, 1442003, 1, 1, 0, 700), +(9300134, 1442003, 1, 1, 0, 700), +(3230103, 1082035, 1, 1, 0, 700), +(9300134, 1082035, 1, 1, 0, 700), +(3230103, 1050045, 1, 1, 0, 700), +(9300134, 1050045, 1, 1, 0, 700), +(3230103, 1072078, 1, 1, 0, 700), +(9300134, 1072078, 1, 1, 0, 700), +(3230103, 1002154, 1, 1, 0, 700), +(9300134, 1002154, 1, 1, 0, 700), +(3230103, 1452006, 1, 1, 0, 700), +(9300134, 1452006, 1, 1, 0, 700), +(3230103, 1041082, 1, 1, 0, 700), +(9300134, 1041082, 1, 1, 0, 700), +(3230103, 1061081, 1, 1, 0, 700), +(9300134, 1061081, 1, 1, 0, 700), +(3230103, 1472011, 1, 1, 0, 700), +(9300134, 1472011, 1, 1, 0, 700), +(3230103, 1040083, 1, 1, 0, 700), +(9300134, 1040083, 1, 1, 0, 700), +(3230103, 1060072, 1, 1, 0, 700), +(9300134, 1060072, 1, 1, 0, 700), +(3230103, 1002625, 1, 1, 0, 700), +(9300134, 1002625, 1, 1, 0, 700), +(3230304, 4000105, 1, 1, 0, 200000), +(3230304, 4130007, 1, 1, 0, 3000), +(3230304, 4131005, 1, 1, 0, 3000), +(3230304, 2000002, 1, 1, 0, 40000), +(3230304, 2000003, 1, 1, 0, 40000), +(3230304, 2040320, 1, 1, 0, 750), +(3230304, 2382034, 1, 1, 0, 20000), +(3230304, 4020005, 1, 1, 0, 7000), +(3230304, 4004003, 1, 1, 0, 3000), +(3230304, 1032018, 1, 1, 0, 700), +(3230304, 1040000, 1, 1, 0, 700), +(3230304, 1432003, 1, 1, 0, 700), +(3230304, 1382018, 1, 1, 0, 700), +(3230304, 1082082, 1, 1, 0, 700), +(3230304, 1462005, 1, 1, 0, 700), +(3230304, 1002167, 1, 1, 0, 700), +(3230304, 1472015, 1, 1, 0, 700), +(3230304, 1040084, 1, 1, 0, 700), +(3230304, 1060073, 1, 1, 0, 700), +(3230304, 1472012, 1, 1, 0, 700), +(3230304, 1072129, 1, 1, 0, 700), +(3230304, 1002183, 1, 1, 0, 700), +(3230304, 1052110, 1, 1, 0, 700), +(3230305, 4000018, 1, 1, 0, 200000), +(9300011, 4000018, 1, 1, 0, 200000), +(9300131, 4000018, 1, 1, 0, 200000), +(9500119, 4000018, 1, 1, 0, 200000), +(3230305, 4000003, 1, 1, 0, 200000), +(9300011, 4000003, 1, 1, 0, 200000), +(9300131, 4000003, 1, 1, 0, 200000), +(9500119, 4000003, 1, 1, 0, 200000), +(3230305, 4030009, 1, 1, 0, 10000), +(9300011, 4030009, 1, 1, 0, 10000), +(9300131, 4030009, 1, 1, 0, 10000), +(9500119, 4030009, 1, 1, 0, 10000), +(3230305, 4130008, 1, 1, 0, 3000), +(9300011, 4130008, 1, 1, 0, 3000), +(9300131, 4130008, 1, 1, 0, 3000), +(9500119, 4130008, 1, 1, 0, 3000), +(3230305, 2000002, 1, 1, 0, 40000), +(9300011, 2000002, 1, 1, 0, 40000), +(9300131, 2000002, 1, 1, 0, 40000), +(9500119, 2000002, 1, 1, 0, 40000), +(3230305, 2000003, 1, 1, 0, 40000), +(9300011, 2000003, 1, 1, 0, 40000), +(9300131, 2000003, 1, 1, 0, 40000), +(9500119, 2000003, 1, 1, 0, 40000), +(3230305, 2060000, 10, 50, 0, 10000), +(9300011, 2060000, 10, 50, 0, 10000), +(9300131, 2060000, 10, 50, 0, 10000), +(9500119, 2060000, 10, 50, 0, 10000), +(3230305, 2061000, 10, 50, 0, 10000), +(9300011, 2061000, 10, 50, 0, 10000), +(9300131, 2061000, 10, 50, 0, 10000), +(9500119, 2061000, 10, 50, 0, 10000), +(3230305, 2041043, 1, 1, 0, 750), +(9300011, 2041043, 1, 1, 0, 750), +(9300131, 2041043, 1, 1, 0, 750), +(9500119, 2041043, 1, 1, 0, 750), +(3230305, 2330001, 1, 1, 0, 400), +(9300011, 2330001, 1, 1, 0, 400), +(9300131, 2330001, 1, 1, 0, 400), +(9500119, 2330001, 1, 1, 0, 400), +(3230305, 2382038, 1, 1, 0, 20000), +(9300011, 2382038, 1, 1, 0, 20000), +(9300131, 2382038, 1, 1, 0, 20000), +(9500119, 2382038, 1, 1, 0, 20000), +(3230305, 4020003, 1, 1, 0, 7000), +(9300011, 4020003, 1, 1, 0, 7000), +(9300131, 4020003, 1, 1, 0, 7000), +(9500119, 4020003, 1, 1, 0, 7000), +(3230305, 4004001, 1, 1, 0, 3000), +(9300011, 4004001, 1, 1, 0, 3000), +(9300131, 4004001, 1, 1, 0, 3000), +(9500119, 4004001, 1, 1, 0, 3000), +(3230305, 1032002, 1, 1, 0, 700), +(9300011, 1032002, 1, 1, 0, 700), +(9300131, 1032002, 1, 1, 0, 700), +(9500119, 1032002, 1, 1, 0, 700), +(3230305, 1432012, 1, 1, 0, 700), +(9300011, 1432012, 1, 1, 0, 700), +(9300131, 1432012, 1, 1, 0, 700), +(9500119, 1432012, 1, 1, 0, 700), +(3230305, 1002099, 1, 1, 0, 700), +(9300011, 1002099, 1, 1, 0, 700), +(9300131, 1002099, 1, 1, 0, 700), +(9500119, 1002099, 1, 1, 0, 700), +(3230305, 1040029, 1, 1, 0, 700), +(9300011, 1040029, 1, 1, 0, 700), +(9300131, 1040029, 1, 1, 0, 700), +(9500119, 1040029, 1, 1, 0, 700), +(3230305, 1051033, 1, 1, 0, 700), +(9300011, 1051033, 1, 1, 0, 700), +(9300131, 1051033, 1, 1, 0, 700), +(9500119, 1051033, 1, 1, 0, 700), +(3230305, 1082064, 1, 1, 0, 700), +(9300011, 1082064, 1, 1, 0, 700), +(9300131, 1082064, 1, 1, 0, 700), +(9500119, 1082064, 1, 1, 0, 700), +(3230305, 1041066, 1, 1, 0, 700), +(9300011, 1041066, 1, 1, 0, 700), +(9300131, 1041066, 1, 1, 0, 700), +(9500119, 1041066, 1, 1, 0, 700), +(3230305, 1061061, 1, 1, 0, 700), +(9300011, 1061061, 1, 1, 0, 700), +(9300131, 1061061, 1, 1, 0, 700), +(9500119, 1061061, 1, 1, 0, 700), +(3230305, 1072119, 1, 1, 0, 700), +(9300011, 1072119, 1, 1, 0, 700), +(9300131, 1072119, 1, 1, 0, 700), +(9500119, 1072119, 1, 1, 0, 700), +(3230305, 1082075, 1, 1, 0, 700), +(9300011, 1082075, 1, 1, 0, 700), +(9300131, 1082075, 1, 1, 0, 700), +(9500119, 1082075, 1, 1, 0, 700), +(3230305, 1002184, 1, 1, 0, 700), +(9300011, 1002184, 1, 1, 0, 700), +(9300131, 1002184, 1, 1, 0, 700), +(9500119, 1002184, 1, 1, 0, 700), +(3230305, 1492005, 1, 1, 0, 700), +(9300011, 1492005, 1, 1, 0, 700), +(9300131, 1492005, 1, 1, 0, 700), +(9500119, 1492005, 1, 1, 0, 700), +(3230308, 4000116, 1, 1, 0, 200000), +(9500118, 4000116, 1, 1, 0, 200000), +(3230308, 4000003, 1, 1, 0, 200000), +(9500118, 4000003, 1, 1, 0, 200000), +(3230308, 4003005, 1, 1, 0, 7000), +(9500118, 4003005, 1, 1, 0, 7000), +(3230308, 4130005, 1, 1, 0, 3000), +(9500118, 4130005, 1, 1, 0, 3000), +(3230308, 2000002, 1, 1, 0, 40000), +(9500118, 2000002, 1, 1, 0, 40000), +(3230308, 2000003, 1, 1, 0, 40000), +(9500118, 2000003, 1, 1, 0, 40000), +(3230308, 2382037, 1, 1, 0, 20000), +(9500118, 2382037, 1, 1, 0, 20000), +(3230308, 4020001, 1, 1, 0, 7000), +(9500118, 4020001, 1, 1, 0, 7000), +(3230308, 4020008, 1, 1, 0, 7000), +(9500118, 4020008, 1, 1, 0, 7000), +(3230308, 4004002, 1, 1, 0, 3000), +(9500118, 4004002, 1, 1, 0, 3000), +(3230308, 4010001, 1, 1, 0, 7000), +(9500118, 4010001, 1, 1, 0, 7000), +(3230308, 1322003, 1, 1, 0, 700), +(9500118, 1322003, 1, 1, 0, 700), +(3230308, 1082010, 1, 1, 0, 700), +(9500118, 1082010, 1, 1, 0, 700), +(3230308, 1402006, 1, 1, 0, 700), +(9500118, 1402006, 1, 1, 0, 700), +(3230308, 1422008, 1, 1, 0, 700), +(9500118, 1422008, 1, 1, 0, 700), +(3230308, 1092012, 1, 1, 0, 700), +(9500118, 1092012, 1, 1, 0, 700), +(3230308, 1372000, 1, 1, 0, 700), +(9500118, 1372000, 1, 1, 0, 700), +(3230308, 1072115, 1, 1, 0, 700), +(9500118, 1072115, 1, 1, 0, 700), +(3230308, 1051033, 1, 1, 0, 700), +(9500118, 1051033, 1, 1, 0, 700), +(3230308, 1082073, 1, 1, 0, 700), +(9500118, 1082073, 1, 1, 0, 700), +(3230308, 1082083, 1, 1, 0, 700), +(9500118, 1082083, 1, 1, 0, 700), +(3230308, 1072107, 1, 1, 0, 700), +(9500118, 1072107, 1, 1, 0, 700), +(3230308, 1032011, 1, 1, 0, 700), +(9500118, 1032011, 1, 1, 0, 700), +(3230308, 1082065, 1, 1, 0, 700), +(9500118, 1082065, 1, 1, 0, 700), +(3230308, 1482005, 1, 1, 0, 700), +(9500118, 1482005, 1, 1, 0, 700), +(4230100, 4000023, 1, 1, 0, 200000), +(4230100, 4030012, 1, 1, 0, 10000), +(4230100, 2000002, 1, 1, 0, 40000), +(4230100, 2000003, 1, 1, 0, 40000), +(4230100, 2070002, 1, 1, 0, 400), +(4230100, 2040001, 1, 1, 0, 750), +(4230100, 2049101, 1, 1, 0, 400), +(4230100, 2382039, 1, 1, 0, 20000), +(4230100, 4010001, 1, 1, 0, 7000), +(4230100, 4010006, 1, 1, 0, 7000), +(4230100, 1422014, 1, 1, 0, 700), +(4230100, 1412004, 1, 1, 0, 700), +(4230100, 1002098, 1, 1, 0, 700), +(4230100, 1072132, 1, 1, 0, 700), +(4230100, 1002103, 1, 1, 0, 700), +(4230100, 1072140, 1, 1, 0, 700), +(4230100, 1072090, 1, 1, 0, 700), +(4230100, 1002166, 1, 1, 0, 700), +(4230100, 1002169, 1, 1, 0, 700), +(4230100, 1462004, 1, 1, 0, 700), +(4230100, 1082066, 1, 1, 0, 700), +(4230100, 1041075, 1, 1, 0, 700), +(4230100, 1061070, 1, 1, 0, 700), +(4230100, 1472013, 1, 1, 0, 700), +(4230100, 1472017, 1, 1, 0, 700), +(4230101, 4000031, 1, 1, 0, 200000), +(9300226, 4000031, 1, 1, 0, 200000), +(9500116, 4000031, 1, 1, 0, 200000), +(4230101, 4003004, 1, 1, 0, 7000), +(9300226, 4003004, 1, 1, 0, 7000), +(9500116, 4003004, 1, 1, 0, 7000), +(4230101, 2000002, 1, 1, 0, 40000), +(9300226, 2000002, 1, 1, 0, 40000), +(9500116, 2000002, 1, 1, 0, 40000), +(4230101, 2000003, 1, 1, 0, 40000), +(9300226, 2000003, 1, 1, 0, 40000), +(9500116, 2000003, 1, 1, 0, 40000), +(4230101, 2382040, 1, 1, 0, 20000), +(9300226, 2382040, 1, 1, 0, 20000), +(9500116, 2382040, 1, 1, 0, 20000), +(4230101, 4010005, 1, 1, 0, 7000), +(9300226, 4010005, 1, 1, 0, 7000), +(9500116, 4010005, 1, 1, 0, 7000), +(4230101, 4020001, 1, 1, 0, 7000), +(9300226, 4020001, 1, 1, 0, 7000), +(9500116, 4020001, 1, 1, 0, 7000), +(4230101, 1302013, 1, 1, 0, 700), +(9300226, 1302013, 1, 1, 0, 700), +(9500116, 1302013, 1, 1, 0, 700), +(4230101, 1002080, 1, 1, 0, 700), +(9300226, 1002080, 1, 1, 0, 700), +(9500116, 1002080, 1, 1, 0, 700), +(4230101, 1051001, 1, 1, 0, 700), +(9300226, 1051001, 1, 1, 0, 700), +(9500116, 1051001, 1, 1, 0, 700), +(4230101, 1041086, 1, 1, 0, 700), +(9300226, 1041086, 1, 1, 0, 700), +(9500116, 1041086, 1, 1, 0, 700), +(4230101, 1061085, 1, 1, 0, 700), +(9300226, 1061085, 1, 1, 0, 700), +(9500116, 1061085, 1, 1, 0, 700), +(4230101, 1442003, 1, 1, 0, 700), +(9300226, 1442003, 1, 1, 0, 700), +(9500116, 1442003, 1, 1, 0, 700), +(4230101, 1442005, 1, 1, 0, 700), +(9300226, 1442005, 1, 1, 0, 700), +(9500116, 1442005, 1, 1, 0, 700), +(4230101, 1382012, 1, 1, 0, 700), +(9300226, 1382012, 1, 1, 0, 700), +(9500116, 1382012, 1, 1, 0, 700), +(4230101, 1002151, 1, 1, 0, 700), +(9300226, 1002151, 1, 1, 0, 700), +(9500116, 1002151, 1, 1, 0, 700), +(4230101, 1382001, 1, 1, 0, 700), +(9300226, 1382001, 1, 1, 0, 700), +(9500116, 1382001, 1, 1, 0, 700), +(4230101, 1050039, 1, 1, 0, 700), +(9300226, 1050039, 1, 1, 0, 700), +(9500116, 1050039, 1, 1, 0, 700), +(4230101, 1462007, 1, 1, 0, 700), +(9300226, 1462007, 1, 1, 0, 700), +(9500116, 1462007, 1, 1, 0, 700), +(4230101, 1462006, 1, 1, 0, 700), +(9300226, 1462006, 1, 1, 0, 700), +(9500116, 1462006, 1, 1, 0, 700), +(4230101, 1040074, 1, 1, 0, 700), +(9300226, 1040074, 1, 1, 0, 700), +(9500116, 1040074, 1, 1, 0, 700), +(4230101, 1060063, 1, 1, 0, 700), +(9300226, 1060063, 1, 1, 0, 700), +(9500116, 1060063, 1, 1, 0, 700), +(4230101, 1332025, 1, 1, 0, 700), +(9300226, 1332025, 1, 1, 0, 700), +(9500116, 1332025, 1, 1, 0, 700), +(4230101, 1472030, 1, 1, 0, 700), +(9300226, 1472030, 1, 1, 0, 700), +(9500116, 1472030, 1, 1, 0, 700), +(4230101, 1332003, 1, 1, 0, 700), +(9300226, 1332003, 1, 1, 0, 700), +(9500116, 1332003, 1, 1, 0, 700), +(4230101, 1472015, 1, 1, 0, 700), +(9300226, 1472015, 1, 1, 0, 700), +(9500116, 1472015, 1, 1, 0, 700), +(4230101, 1002185, 1, 1, 0, 700), +(9300226, 1002185, 1, 1, 0, 700), +(9500116, 1002185, 1, 1, 0, 700), +(4230101, 1051009, 1, 1, 0, 700), +(9300226, 1051009, 1, 1, 0, 700), +(9500116, 1051009, 1, 1, 0, 700), +(4230101, 1002628, 1, 1, 0, 700), +(9300226, 1002628, 1, 1, 0, 700), +(9500116, 1002628, 1, 1, 0, 700), +(9300003, 2388001, 1, 1, 0, 20000), +(9300187, 2388001, 1, 4, 0, 20000), +(9500168, 2388001, 1, 4, 0, 20000), +(9500325, 2388001, 1, 4, 0, 20000), +(9500340, 2388001, 1, 1, 0, 20000), +(9303002, 2388001, 1, 1, 0, 20000), +(9300003, 1072369, 1, 1, 0, 700), +(9300187, 1072369, 1, 1, 0, 40000), +(9500168, 1072369, 1, 1, 0, 40000), +(9500325, 1072369, 1, 1, 0, 40000), +(9500340, 1072369, 1, 1, 0, 700), +(9303002, 1072369, 1, 1, 0, 700), +(4230113, 4000114, 1, 1, 0, 200000), +(9300132, 4000114, 1, 1, 0, 200000), +(9300233, 4000114, 1, 1, 0, 200000), +(4230113, 4031098, 1, 1, 0, 7000), +(9300132, 4031098, 1, 1, 0, 7000), +(9300233, 4031098, 1, 1, 0, 7000), +(4230113, 4031992, 1, 1, 0, 7000), +(9300132, 4031992, 1, 1, 0, 7000), +(9300233, 4031992, 1, 1, 0, 7000), +(4230113, 2000002, 1, 1, 0, 40000), +(9300132, 2000002, 1, 1, 0, 40000), +(9300233, 2000002, 1, 1, 0, 40000), +(4230113, 2000003, 1, 1, 0, 40000), +(9300132, 2000003, 1, 1, 0, 40000), +(9300233, 2000003, 1, 1, 0, 40000), +(4230113, 2060000, 10, 50, 0, 10000), +(9300132, 2060000, 10, 50, 0, 10000), +(9300233, 2060000, 10, 50, 0, 10000), +(4230113, 2061000, 10, 50, 0, 10000), +(9300132, 2061000, 10, 50, 0, 10000), +(9300233, 2061000, 10, 50, 0, 10000), +(4230113, 2043102, 1, 1, 0, 750), +(9300132, 2043102, 1, 1, 0, 750), +(9300233, 2043102, 1, 1, 0, 750), +(4230113, 2044701, 1, 1, 0, 750), +(9300132, 2044701, 1, 1, 0, 750), +(9300233, 2044701, 1, 1, 0, 750), +(4230113, 2040401, 1, 1, 0, 750), +(9300132, 2040401, 1, 1, 0, 750), +(9300233, 2040401, 1, 1, 0, 750), +(4230113, 2382041, 1, 1, 0, 20000), +(9300132, 2382041, 1, 1, 0, 20000), +(9300233, 2382041, 1, 1, 0, 20000), +(4230113, 4010003, 1, 1, 0, 7000), +(9300132, 4010003, 1, 1, 0, 7000), +(9300233, 4010003, 1, 1, 0, 7000), +(4230113, 4004003, 1, 1, 0, 3000), +(9300132, 4004003, 1, 1, 0, 3000), +(9300233, 4004003, 1, 1, 0, 3000), +(4230113, 1032018, 1, 1, 0, 700), +(9300132, 1032018, 1, 1, 0, 700), +(9300233, 1032018, 1, 1, 0, 700), +(4230113, 1332016, 1, 1, 0, 700), +(9300132, 1332016, 1, 1, 0, 700), +(9300233, 1332016, 1, 1, 0, 700), +(4230113, 1082023, 1, 1, 0, 700), +(9300132, 1082023, 1, 1, 0, 700), +(9300233, 1082023, 1, 1, 0, 700), +(4230113, 1322017, 1, 1, 0, 700), +(9300132, 1322017, 1, 1, 0, 700), +(9300233, 1322017, 1, 1, 0, 700), +(4230113, 1002047, 1, 1, 0, 700), +(9300132, 1002047, 1, 1, 0, 700), +(9300233, 1002047, 1, 1, 0, 700), +(4230113, 1382019, 1, 1, 0, 700), +(9300132, 1382019, 1, 1, 0, 700), +(9300233, 1382019, 1, 1, 0, 700), +(4230113, 1002142, 1, 1, 0, 700), +(9300132, 1002142, 1, 1, 0, 700), +(9300233, 1002142, 1, 1, 0, 700), +(4230113, 1372007, 1, 1, 0, 700), +(9300132, 1372007, 1, 1, 0, 700), +(9300233, 1372007, 1, 1, 0, 700), +(4230113, 1051025, 1, 1, 0, 700), +(9300132, 1051025, 1, 1, 0, 700), +(9300233, 1051025, 1, 1, 0, 700), +(4230113, 1382001, 1, 1, 0, 700), +(9300132, 1382001, 1, 1, 0, 700), +(9300233, 1382001, 1, 1, 0, 700), +(4230113, 1452016, 1, 1, 0, 700), +(9300132, 1452016, 1, 1, 0, 700), +(9300233, 1452016, 1, 1, 0, 700), +(4230113, 1082071, 1, 1, 0, 700), +(9300132, 1082071, 1, 1, 0, 700), +(9300233, 1082071, 1, 1, 0, 700), +(4230113, 1002139, 1, 1, 0, 700), +(9300132, 1002139, 1, 1, 0, 700), +(9300233, 1002139, 1, 1, 0, 700), +(4230113, 1332016, 1, 1, 0, 700), +(9300132, 1332016, 1, 1, 0, 700), +(9300233, 1332016, 1, 1, 0, 700), +(4230113, 1040061, 1, 1, 0, 700), +(9300132, 1040061, 1, 1, 0, 700), +(9300233, 1040061, 1, 1, 0, 700), +(4230113, 1060050, 1, 1, 0, 700), +(9300132, 1060050, 1, 1, 0, 700), +(9300233, 1060050, 1, 1, 0, 700), +(4230113, 1072108, 1, 1, 0, 700), +(9300132, 1072108, 1, 1, 0, 700), +(9300233, 1072108, 1, 1, 0, 700), +(4230113, 1052113, 1, 1, 0, 700), +(9300132, 1052113, 1, 1, 0, 700), +(9300233, 1052113, 1, 1, 0, 700), +(4230200, 4000158, 1, 1, 0, 200000), +(9410018, 4000158, 1, 1, 0, 200000), +(4230200, 4031209, 1, 1, 0, 7000), +(9410018, 4031209, 1, 1, 0, 7000), +(4230200, 2022040, 1, 1, 0, 3000), +(9410018, 2022040, 1, 1, 0, 3000), +(4230200, 2040707, 1, 1, 0, 750), +(9410018, 2040707, 1, 1, 0, 750), +(4230200, 2040704, 1, 1, 0, 750), +(9410018, 2040704, 1, 1, 0, 750), +(4230200, 2040801, 1, 1, 0, 750), +(9410018, 2040801, 1, 1, 0, 750), +(4230200, 2382043, 1, 1, 0, 20000), +(9410018, 2382043, 1, 1, 0, 20000), +(4230200, 4010002, 1, 1, 0, 7000), +(9410018, 4010002, 1, 1, 0, 7000), +(4230200, 4010003, 1, 1, 0, 7000), +(9410018, 4010003, 1, 1, 0, 7000), +(4230200, 4004001, 1, 1, 0, 3000), +(9410018, 4004001, 1, 1, 0, 3000), +(4230200, 1041088, 1, 1, 0, 700), +(9410018, 1041088, 1, 1, 0, 700), +(4230200, 1051027, 1, 1, 0, 700), +(9410018, 1051027, 1, 1, 0, 700), +(4230200, 1002170, 1, 1, 0, 700), +(9410018, 1002170, 1, 1, 0, 700), +(4230200, 1002207, 1, 1, 0, 700), +(9410018, 1002207, 1, 1, 0, 700), +(4230200, 1060083, 1, 1, 0, 700), +(9410018, 1060083, 1, 1, 0, 700), +(4230200, 1072110, 1, 1, 0, 700), +(9410018, 1072110, 1, 1, 0, 700), +(4230200, 1472014, 1, 1, 0, 700), +(9410018, 1472014, 1, 1, 0, 700), +(4230201, 4031209, 1, 1, 0, 7000), +(4230201, 2022040, 1, 1, 0, 3000), +(4230201, 2000002, 1, 1, 0, 40000), +(4230201, 2000003, 1, 1, 0, 40000), +(4230201, 2002004, 1, 1, 0, 10000), +(4230201, 2048001, 1, 1, 0, 750), +(4230201, 2382044, 1, 1, 0, 20000), +(4230201, 4010004, 1, 1, 0, 7000), +(4230201, 4020003, 1, 1, 0, 7000), +(4230201, 4004002, 1, 1, 0, 3000), +(4230201, 1082024, 1, 1, 0, 700), +(4230201, 1082011, 1, 1, 0, 700), +(4230201, 1072140, 1, 1, 0, 700), +(4230201, 1082055, 1, 1, 0, 700), +(4230201, 1051031, 1, 1, 0, 700), +(4230201, 1462006, 1, 1, 0, 700), +(4230201, 1072102, 1, 1, 0, 700), +(4230201, 1051037, 1, 1, 0, 700), +(4230201, 1041074, 1, 1, 0, 700), +(4230201, 1061077, 1, 1, 0, 700), +(9400516, 4031593, 1, 1, 0, 7000), +(4230500, 4000276, 1, 1, 0, 200000), +(4230500, 4000021, 1, 1, 0, 200000), +(4230500, 4130014, 1, 1, 0, 3000), +(4230500, 4130016, 1, 1, 0, 3000), +(4230500, 4130004, 1, 1, 0, 3000), +(4230500, 2000003, 1, 1, 0, 40000), +(4230500, 2000002, 1, 1, 0, 40000), +(4230500, 2330001, 1, 1, 0, 400), +(4230500, 2382045, 1, 1, 0, 20000), +(4230500, 2060000, 10, 50, 0, 10000), +(4230500, 2061000, 10, 50, 0, 10000), +(4230500, 2040001, 1, 1, 0, 750), +(4230500, 4010006, 1, 1, 0, 7000), +(4230500, 4010001, 1, 1, 0, 7000), +(4230500, 1002023, 1, 1, 0, 700), +(4230500, 1002092, 1, 1, 0, 700), +(4230500, 1051016, 1, 1, 0, 700), +(4230500, 1002155, 1, 1, 0, 700), +(4230500, 1002103, 1, 1, 0, 700), +(4230500, 1050038, 1, 1, 0, 700), +(4230500, 1061061, 1, 1, 0, 700), +(4230500, 1041066, 1, 1, 0, 700), +(4230500, 1061094, 1, 1, 0, 700), +(4230500, 1041095, 1, 1, 0, 700), +(4230500, 1482006, 1, 1, 0, 700), +(9400563, 4000018, 1, 1, 0, 200000), +(9400563, 4130009, 1, 1, 0, 3000), +(9400563, 2000003, 1, 1, 0, 40000), +(9400563, 2000002, 1, 1, 0, 40000), +(9400563, 2022250, 1, 1, 0, 3000), +(9400563, 2022251, 1, 1, 0, 3000), +(9400563, 2022244, 1, 1, 0, 3000), +(9400563, 2043302, 1, 1, 0, 750), +(9400563, 2040602, 1, 1, 0, 750), +(9400563, 2061000, 10, 50, 0, 10000), +(9400563, 2060000, 10, 50, 0, 10000), +(9400563, 1302010, 1, 1, 0, 700), +(9400563, 1002021, 1, 1, 0, 700), +(9400563, 1050021, 1, 1, 0, 700), +(9400563, 1002036, 1, 1, 0, 700), +(9400563, 1092029, 1, 1, 0, 700), +(9400563, 1082082, 1, 1, 0, 700), +(9400563, 1050036, 1, 1, 0, 700), +(9400563, 1002143, 1, 1, 0, 700), +(9400563, 1040076, 1, 1, 0, 700), +(9400563, 1060065, 1, 1, 0, 700), +(9400563, 1002176, 1, 1, 0, 700), +(9400563, 1082074, 1, 1, 0, 700), +(9400573, 4032005, 1, 1, 0, 10000), +(9400573, 4130009, 1, 1, 0, 3000), +(9400573, 4130005, 1, 1, 0, 3000), +(9400573, 4131012, 1, 1, 0, 3000), +(9400573, 2000006, 1, 1, 0, 40000), +(9400573, 2000005, 1, 1, 0, 40000), +(9400573, 2002002, 1, 1, 0, 10000), +(9400573, 2002001, 1, 1, 0, 10000), +(9400573, 2040013, 1, 1, 0, 750), +(9400573, 2043108, 1, 1, 0, 750), +(9400573, 2044608, 1, 1, 0, 750), +(9400573, 2040410, 1, 1, 0, 750), +(9400573, 2040613, 1, 1, 0, 750), +(9400573, 2040612, 1, 1, 0, 750), +(9400573, 4006000, 1, 1, 0, 7000), +(9400573, 2070004, 1, 1, 0, 400), +(9400573, 1002090, 1, 1, 0, 700), +(9400573, 1002020, 1, 1, 0, 700), +(9400573, 1092019, 1, 1, 0, 700), +(9400011, 4000222, 1, 1, 0, 200000), +(9400011, 4130011, 1, 1, 0, 3000), +(9400011, 4130010, 1, 1, 0, 3000), +(9400011, 2000006, 1, 1, 0, 40000), +(9400011, 2002004, 1, 1, 0, 10000), +(9400011, 2060002, 10, 50, 0, 10000), +(9400011, 2022027, 1, 1, 0, 3000), +(9400011, 2040015, 1, 1, 0, 750), +(9400011, 2043309, 1, 1, 0, 750), +(9400011, 2044408, 1, 1, 0, 750), +(9400011, 2040514, 1, 1, 0, 750), +(9400011, 2040409, 1, 1, 0, 750), +(9400011, 2044108, 1, 1, 0, 750), +(9400011, 2044208, 1, 1, 0, 750), +(9400011, 2330002, 1, 1, 0, 400), +(9400011, 4004004, 1, 1, 0, 3000), +(9400011, 1332029, 1, 1, 0, 700), +(9400011, 1302009, 1, 1, 0, 700), +(9400011, 1040088, 1, 1, 0, 700), +(9400011, 1060075, 1, 1, 0, 700), +(9400011, 1051032, 1, 1, 0, 700), +(9400011, 1050048, 1, 1, 0, 700), +(9400011, 1092019, 1, 1, 0, 700), +(9400011, 1061079, 1, 1, 0, 700), +(9400011, 1060073, 1, 1, 0, 700), +(4230116, 4000117, 1, 1, 0, 200000), +(9300103, 4000117, 1, 1, 0, 200000), +(9300332, 4000117, 1, 1, 0, 200000), +(9500366, 4000117, 1, 1, 0, 200000), +(4230116, 4030012, 1, 1, 0, 10000), +(9300103, 4030012, 1, 1, 0, 10000), +(9300332, 4030012, 1, 1, 0, 10000), +(9500366, 4030012, 1, 1, 0, 10000), +(4230116, 4131013, 1, 1, 0, 3000), +(9300103, 4131013, 1, 1, 0, 3000), +(9300332, 4131013, 1, 1, 0, 3000), +(9500366, 4131013, 1, 1, 0, 3000), +(4230116, 4131012, 1, 1, 0, 3000), +(9300103, 4131012, 1, 1, 0, 3000), +(9300332, 4131012, 1, 1, 0, 3000), +(9500366, 4131012, 1, 1, 0, 3000), +(4230116, 2000002, 1, 1, 0, 40000), +(9300103, 2000002, 1, 1, 0, 40000), +(9300332, 2000002, 1, 1, 0, 40000), +(9500366, 2000002, 1, 1, 0, 40000), +(4230116, 2000003, 1, 1, 0, 40000), +(9300103, 2000003, 1, 1, 0, 40000), +(9300332, 2000003, 1, 1, 0, 40000), +(9500366, 2000003, 1, 1, 0, 40000), +(4230116, 2002009, 1, 1, 0, 10000), +(9300103, 2002009, 1, 1, 0, 10000), +(9300332, 2002009, 1, 1, 0, 10000), +(9500366, 2002009, 1, 1, 0, 10000), +(4230116, 2041046, 1, 1, 0, 750), +(9300103, 2041046, 1, 1, 0, 750), +(9300332, 2041046, 1, 1, 0, 750), +(9500366, 2041046, 1, 1, 0, 750), +(4230116, 2040704, 1, 1, 0, 750), +(9300103, 2040704, 1, 1, 0, 750), +(9300332, 2040704, 1, 1, 0, 750), +(9500366, 2040704, 1, 1, 0, 750), +(4230116, 2060000, 10, 50, 0, 10000), +(9300103, 2060000, 10, 50, 0, 10000), +(9300332, 2060000, 10, 50, 0, 10000), +(9500366, 2060000, 10, 50, 0, 10000), +(4230116, 4010001, 1, 1, 0, 7000), +(9300103, 4010001, 1, 1, 0, 7000), +(9300332, 4010001, 1, 1, 0, 7000), +(9500366, 4010001, 1, 1, 0, 7000), +(4230116, 4010004, 1, 1, 0, 7000), +(9300103, 4010004, 1, 1, 0, 7000), +(9300332, 4010004, 1, 1, 0, 7000), +(9500366, 4010004, 1, 1, 0, 7000), +(4230116, 4004002, 1, 1, 0, 3000), +(9300103, 4004002, 1, 1, 0, 3000), +(9300332, 4004002, 1, 1, 0, 3000), +(9500366, 4004002, 1, 1, 0, 3000), +(4230116, 4020007, 1, 1, 0, 7000), +(9300103, 4020007, 1, 1, 0, 7000), +(9300332, 4020007, 1, 1, 0, 7000), +(9500366, 4020007, 1, 1, 0, 7000), +(4230116, 1302016, 1, 1, 0, 700), +(9300103, 1302016, 1, 1, 0, 700), +(9300332, 1302016, 1, 1, 0, 700), +(9500366, 1302016, 1, 1, 0, 700), +(4230116, 1092007, 1, 1, 0, 700), +(9300103, 1092007, 1, 1, 0, 700), +(9300332, 1092007, 1, 1, 0, 700), +(9500366, 1092007, 1, 1, 0, 700), +(4230116, 1402006, 1, 1, 0, 700), +(9300103, 1402006, 1, 1, 0, 700), +(9300332, 1402006, 1, 1, 0, 700), +(9500366, 1402006, 1, 1, 0, 700), +(4230116, 1050047, 1, 1, 0, 700), +(9300103, 1050047, 1, 1, 0, 700), +(9300332, 1050047, 1, 1, 0, 700), +(9500366, 1050047, 1, 1, 0, 700), +(4230116, 1372001, 1, 1, 0, 700), +(9300103, 1372001, 1, 1, 0, 700), +(9300332, 1372001, 1, 1, 0, 700), +(9500366, 1372001, 1, 1, 0, 700), +(4230116, 1002211, 1, 1, 0, 700), +(9300103, 1002211, 1, 1, 0, 700), +(9300332, 1002211, 1, 1, 0, 700), +(9500366, 1002211, 1, 1, 0, 700), +(4230116, 1072120, 1, 1, 0, 700), +(9300103, 1072120, 1, 1, 0, 700), +(9300332, 1072120, 1, 1, 0, 700), +(9500366, 1072120, 1, 1, 0, 700), +(4230116, 1072109, 1, 1, 0, 700), +(9300103, 1072109, 1, 1, 0, 700), +(9300332, 1072109, 1, 1, 0, 700), +(9500366, 1072109, 1, 1, 0, 700), +(4230116, 1040084, 1, 1, 0, 700), +(9300103, 1040084, 1, 1, 0, 700), +(9300332, 1040084, 1, 1, 0, 700), +(9500366, 1040084, 1, 1, 0, 700), +(4230116, 1060073, 1, 1, 0, 700), +(9300103, 1060073, 1, 1, 0, 700), +(9300332, 1060073, 1, 1, 0, 700), +(9500366, 1060073, 1, 1, 0, 700), +(4230116, 1082195, 1, 1, 0, 700), +(9300103, 1082195, 1, 1, 0, 700), +(9300332, 1082195, 1, 1, 0, 700), +(9500366, 1082195, 1, 1, 0, 700), +(4230107, 4003004, 1, 1, 0, 7000), +(9300062, 4003004, 1, 1, 0, 7000), +(9300081, 4003004, 1, 1, 0, 7000), +(4230107, 4030012, 1, 1, 0, 10000), +(9300062, 4030012, 1, 1, 0, 10000), +(9300081, 4030012, 1, 1, 0, 10000), +(4230107, 2000003, 1, 1, 0, 40000), +(9300062, 2000003, 1, 1, 0, 40000), +(9300081, 2000003, 1, 1, 0, 40000), +(4230107, 2000002, 1, 1, 0, 40000), +(9300062, 2000002, 1, 1, 0, 40000), +(9300081, 2000002, 1, 1, 0, 40000), +(4230107, 4006000, 1, 1, 0, 7000), +(9300062, 4006000, 1, 1, 0, 7000), +(9300081, 4006000, 1, 1, 0, 7000), +(4230107, 2041014, 1, 1, 0, 750), +(9300062, 2041014, 1, 1, 0, 750), +(9300081, 2041014, 1, 1, 0, 750), +(4230107, 2043202, 1, 1, 0, 750), +(9300062, 2043202, 1, 1, 0, 750), +(9300081, 2043202, 1, 1, 0, 750), +(4230107, 4020004, 1, 1, 0, 7000), +(9300062, 4020004, 1, 1, 0, 7000), +(9300081, 4020004, 1, 1, 0, 7000), +(4230107, 4020007, 1, 1, 0, 7000), +(9300062, 4020007, 1, 1, 0, 7000), +(9300081, 4020007, 1, 1, 0, 7000), +(4230107, 4010005, 1, 1, 0, 7000), +(9300062, 4010005, 1, 1, 0, 7000), +(9300081, 4010005, 1, 1, 0, 7000), +(4230107, 4004002, 1, 1, 0, 3000), +(9300062, 4004002, 1, 1, 0, 3000), +(9300081, 4004002, 1, 1, 0, 3000), +(4230107, 1332020, 1, 1, 0, 700), +(9300062, 1332020, 1, 1, 0, 700), +(9300081, 1332020, 1, 1, 0, 700), +(4230107, 1060020, 1, 1, 0, 700), +(9300062, 1060020, 1, 1, 0, 700), +(9300081, 1060020, 1, 1, 0, 700), +(4230107, 1040030, 1, 1, 0, 700), +(9300062, 1040030, 1, 1, 0, 700), +(9300081, 1040030, 1, 1, 0, 700), +(4230107, 1072134, 1, 1, 0, 700), +(9300062, 1072134, 1, 1, 0, 700), +(9300081, 1072134, 1, 1, 0, 700), +(4230107, 1082063, 1, 1, 0, 700), +(9300062, 1082063, 1, 1, 0, 700), +(9300081, 1082063, 1, 1, 0, 700), +(4230107, 1050049, 1, 1, 0, 700), +(9300062, 1050049, 1, 1, 0, 700), +(9300081, 1050049, 1, 1, 0, 700), +(4230107, 1051030, 1, 1, 0, 700), +(9300062, 1051030, 1, 1, 0, 700), +(9300081, 1051030, 1, 1, 0, 700), +(4230107, 1050035, 1, 1, 0, 700), +(9300062, 1050035, 1, 1, 0, 700), +(9300081, 1050035, 1, 1, 0, 700), +(4230107, 1051027, 1, 1, 0, 700), +(9300062, 1051027, 1, 1, 0, 700), +(9300081, 1051027, 1, 1, 0, 700), +(4230107, 1040072, 1, 1, 0, 700), +(9300062, 1040072, 1, 1, 0, 700), +(9300081, 1040072, 1, 1, 0, 700), +(4230107, 1060061, 1, 1, 0, 700), +(9300062, 1060061, 1, 1, 0, 700), +(9300081, 1060061, 1, 1, 0, 700), +(4230107, 1452008, 1, 1, 0, 700), +(9300062, 1452008, 1, 1, 0, 700), +(9300081, 1452008, 1, 1, 0, 700), +(4230107, 1082072, 1, 1, 0, 700), +(9300062, 1082072, 1, 1, 0, 700), +(9300081, 1082072, 1, 1, 0, 700), +(4230107, 1072129, 1, 1, 0, 700), +(9300062, 1072129, 1, 1, 0, 700), +(9300081, 1072129, 1, 1, 0, 700), +(4230107, 1040082, 1, 1, 0, 700), +(9300062, 1040082, 1, 1, 0, 700), +(9300081, 1040082, 1, 1, 0, 700), +(4230107, 1060071, 1, 1, 0, 700), +(9300062, 1060071, 1, 1, 0, 700), +(9300081, 1060071, 1, 1, 0, 700), +(4230114, 4000115, 1, 1, 0, 200000), +(9300230, 4000115, 1, 1, 0, 200000), +(4230114, 4031992, 1, 1, 0, 7000), +(9300230, 4031992, 1, 1, 0, 7000), +(4230114, 4130015, 1, 1, 0, 3000), +(9300230, 4130015, 1, 1, 0, 3000), +(4230114, 4130009, 1, 1, 0, 3000), +(9300230, 4130009, 1, 1, 0, 3000), +(4230114, 2000002, 1, 1, 0, 40000), +(9300230, 2000002, 1, 1, 0, 40000), +(4230114, 2000003, 1, 1, 0, 40000), +(9300230, 2000003, 1, 1, 0, 40000), +(4230114, 2002010, 1, 1, 0, 10000), +(9300230, 2002010, 1, 1, 0, 10000), +(4230114, 2040804, 1, 1, 0, 750), +(9300230, 2040804, 1, 1, 0, 750), +(4230114, 2382049, 1, 1, 0, 20000), +(9300230, 2382049, 1, 1, 0, 20000), +(4230114, 4020007, 1, 1, 0, 7000), +(9300230, 4020007, 1, 1, 0, 7000), +(4230114, 4004000, 1, 1, 0, 3000), +(9300230, 4004000, 1, 1, 0, 3000), +(4230114, 1092030, 1, 1, 0, 700), +(9300230, 1092030, 1, 1, 0, 700), +(4230114, 1312008, 1, 1, 0, 700), +(9300230, 1312008, 1, 1, 0, 700), +(4230114, 1060074, 1, 1, 0, 700), +(9300230, 1060074, 1, 1, 0, 700), +(4230114, 1402007, 1, 1, 0, 700), +(9300230, 1402007, 1, 1, 0, 700), +(4230114, 1040085, 1, 1, 0, 700), +(9300230, 1040085, 1, 1, 0, 700), +(4230114, 1092013, 1, 1, 0, 700), +(9300230, 1092013, 1, 1, 0, 700), +(4230114, 1382012, 1, 1, 0, 700), +(9300230, 1382012, 1, 1, 0, 700), +(4230114, 1072116, 1, 1, 0, 700), +(9300230, 1072116, 1, 1, 0, 700), +(4230114, 1002143, 1, 1, 0, 700), +(9300230, 1002143, 1, 1, 0, 700), +(4230114, 1050036, 1, 1, 0, 700), +(9300230, 1050036, 1, 1, 0, 700), +(4230114, 1092029, 1, 1, 0, 700), +(9300230, 1092029, 1, 1, 0, 700), +(4230114, 1040076, 1, 1, 0, 700), +(9300230, 1040076, 1, 1, 0, 700), +(4230114, 1060065, 1, 1, 0, 700), +(9300230, 1060065, 1, 1, 0, 700), +(4230114, 1082074, 1, 1, 0, 700), +(9300230, 1082074, 1, 1, 0, 700), +(4230114, 1002176, 1, 1, 0, 700), +(9300230, 1002176, 1, 1, 0, 700), +(4230114, 1002178, 1, 1, 0, 700), +(9300230, 1002178, 1, 1, 0, 700), +(4230114, 1002177, 1, 1, 0, 700), +(9300230, 1002177, 1, 1, 0, 700), +(4230114, 1052113, 1, 1, 0, 700), +(9300230, 1052113, 1, 1, 0, 700), +(4230119, 4130012, 1, 1, 0, 3000), +(9300335, 4130012, 1, 1, 0, 3000), +(9500371, 4130012, 1, 1, 0, 3000), +(4230119, 4130013, 1, 1, 0, 3000), +(9300335, 4130013, 1, 1, 0, 3000), +(9500371, 4130013, 1, 1, 0, 3000), +(4230119, 4130021, 1, 1, 0, 3000), +(9300335, 4130021, 1, 1, 0, 3000), +(9500371, 4130021, 1, 1, 0, 3000), +(4230119, 4131004, 1, 1, 0, 3000), +(9300335, 4131004, 1, 1, 0, 3000), +(9500371, 4131004, 1, 1, 0, 3000), +(4230119, 2000002, 1, 1, 0, 40000), +(9300335, 2000002, 1, 1, 0, 40000), +(9500371, 2000002, 1, 1, 0, 40000), +(4230119, 2000003, 1, 1, 0, 40000), +(9300335, 2000003, 1, 1, 0, 40000), +(9500371, 2000003, 1, 1, 0, 40000), +(4230119, 2002006, 1, 1, 0, 10000), +(9300335, 2002006, 1, 1, 0, 10000), +(9500371, 2002006, 1, 1, 0, 10000), +(4230119, 2040804, 1, 1, 0, 750), +(9300335, 2040804, 1, 1, 0, 750), +(9500371, 2040804, 1, 1, 0, 750), +(4230119, 2330001, 1, 1, 0, 400), +(9300335, 2330001, 1, 1, 0, 400), +(9500371, 2330001, 1, 1, 0, 400), +(4230119, 2382050, 1, 1, 0, 20000), +(9300335, 2382050, 1, 1, 0, 20000), +(9500371, 2382050, 1, 1, 0, 20000), +(4230119, 4010005, 1, 1, 0, 7000), +(9300335, 4010005, 1, 1, 0, 7000), +(9500371, 4010005, 1, 1, 0, 7000), +(4230119, 4020002, 1, 1, 0, 7000), +(9300335, 4020002, 1, 1, 0, 7000), +(9500371, 4020002, 1, 1, 0, 7000), +(4230119, 4004003, 1, 1, 0, 3000), +(9300335, 4004003, 1, 1, 0, 3000), +(9500371, 4004003, 1, 1, 0, 3000), +(4230119, 1051016, 1, 1, 0, 700), +(9300335, 1051016, 1, 1, 0, 700), +(9500371, 1051016, 1, 1, 0, 700), +(4230119, 1072002, 1, 1, 0, 700), +(9300335, 1072002, 1, 1, 0, 700), +(9500371, 1072002, 1, 1, 0, 700), +(4230119, 1041084, 1, 1, 0, 700), +(9300335, 1041084, 1, 1, 0, 700), +(9500371, 1041084, 1, 1, 0, 700), +(4230119, 1061083, 1, 1, 0, 700), +(9300335, 1061083, 1, 1, 0, 700), +(9500371, 1061083, 1, 1, 0, 700), +(4230119, 1082025, 1, 1, 0, 700), +(9300335, 1082025, 1, 1, 0, 700), +(9500371, 1082025, 1, 1, 0, 700), +(4230119, 1050035, 1, 1, 0, 700), +(9300335, 1050035, 1, 1, 0, 700), +(9500371, 1050035, 1, 1, 0, 700), +(4230119, 1082068, 1, 1, 0, 700), +(9300335, 1082068, 1, 1, 0, 700), +(9500371, 1082068, 1, 1, 0, 700), +(4230119, 1072124, 1, 1, 0, 700), +(9300335, 1072124, 1, 1, 0, 700), +(9500371, 1072124, 1, 1, 0, 700), +(4230119, 1082067, 1, 1, 0, 700), +(9300335, 1082067, 1, 1, 0, 700), +(9500371, 1082067, 1, 1, 0, 700), +(4230119, 1002178, 1, 1, 0, 700), +(9300335, 1002178, 1, 1, 0, 700), +(9500371, 1002178, 1, 1, 0, 700), +(4230119, 1041075, 1, 1, 0, 700), +(9300335, 1041075, 1, 1, 0, 700), +(9500371, 1041075, 1, 1, 0, 700), +(4230119, 1061070, 1, 1, 0, 700), +(9300335, 1061070, 1, 1, 0, 700), +(9500371, 1061070, 1, 1, 0, 700), +(4230119, 1072131, 1, 1, 0, 700), +(9300335, 1072131, 1, 1, 0, 700), +(9500371, 1072131, 1, 1, 0, 700), +(4230119, 1092019, 1, 1, 0, 700), +(9300335, 1092019, 1, 1, 0, 700), +(9500371, 1092019, 1, 1, 0, 700), +(9400543, 4032025, 1, 1, 0, 10000), +(9400543, 4032023, 1, 1, 0, 10000), +(9400543, 4032022, 1, 1, 0, 10000), +(9400543, 4130015, 1, 1, 0, 3000), +(9400543, 4130009, 1, 1, 0, 3000), +(9400543, 2000002, 1, 1, 0, 40000), +(9400543, 2000003, 1, 1, 0, 40000), +(9400543, 2002010, 1, 1, 0, 10000), +(9400543, 2040804, 1, 1, 0, 750), +(9400543, 2041046, 1, 1, 0, 750), +(9400543, 2043102, 1, 1, 0, 750), +(9400543, 2060004, 10, 50, 0, 10000), +(9400543, 2061004, 10, 50, 0, 10000), +(9400543, 4020007, 1, 1, 0, 7000), +(9400543, 4004000, 1, 1, 0, 3000), +(9400543, 1402007, 1, 1, 0, 700), +(9400543, 1312008, 1, 1, 0, 700), +(9400543, 1040085, 1, 1, 0, 700), +(9400543, 1092013, 1, 1, 0, 700), +(9400543, 1060074, 1, 1, 0, 700), +(9400543, 1002143, 1, 1, 0, 700), +(9400543, 1051026, 1, 1, 0, 700), +(9400543, 1050035, 1, 1, 0, 700), +(9400543, 1050036, 1, 1, 0, 700), +(9400543, 1072116, 1, 1, 0, 700), +(9400543, 1041083, 1, 1, 0, 700), +(9400543, 1061082, 1, 1, 0, 700), +(9400543, 1051038, 1, 1, 0, 700), +(9400543, 1002169, 1, 1, 0, 700), +(9400543, 1472019, 1, 1, 0, 700), +(9400543, 1002171, 1, 1, 0, 700), +(9400543, 1082074, 1, 1, 0, 700), +(9400543, 1002176, 1, 1, 0, 700), +(9400543, 1072110, 1, 1, 0, 700), +(4230501, 4000290, 1, 1, 0, 200000), +(4230501, 4000277, 1, 1, 0, 200000), +(4230501, 4130000, 1, 1, 0, 3000), +(4230501, 4130009, 1, 1, 0, 3000), +(4230501, 4130011, 1, 1, 0, 3000), +(4230501, 2382051, 1, 1, 0, 20000), +(4230501, 2060000, 10, 50, 0, 10000), +(4230501, 2061000, 10, 50, 0, 10000), +(4230501, 2000002, 1, 1, 0, 40000), +(4230501, 2000003, 1, 1, 0, 40000), +(4230501, 2040901, 1, 1, 0, 750), +(4230501, 2040420, 1, 1, 0, 750), +(4230501, 2049000, 1, 1, 0, 400), +(4230501, 4004003, 1, 1, 0, 3000), +(4230501, 4010001, 1, 1, 0, 7000), +(4230501, 4004002, 1, 1, 0, 3000), +(4230501, 1032018, 1, 1, 0, 700), +(4230501, 1051026, 1, 1, 0, 700), +(4230501, 1002217, 1, 1, 0, 700), +(4230501, 1072110, 1, 1, 0, 700), +(4230501, 1061076, 1, 1, 0, 700), +(4230501, 1472018, 1, 1, 0, 700), +(4230501, 1072300, 1, 1, 0, 700), +(4230111, 4000111, 1, 1, 0, 200000), +(9300133, 4000111, 1, 1, 0, 200000), +(4230111, 4030012, 1, 1, 0, 10000), +(9300133, 4030012, 1, 1, 0, 10000), +(4230111, 4130011, 1, 1, 0, 3000), +(9300133, 4130011, 1, 1, 0, 3000), +(4230111, 2000002, 1, 1, 0, 40000), +(9300133, 2000002, 1, 1, 0, 40000), +(4230111, 2000003, 1, 1, 0, 40000), +(9300133, 2000003, 1, 1, 0, 40000), +(4230111, 2061000, 10, 50, 0, 10000), +(9300133, 2061000, 10, 50, 0, 10000), +(4230111, 2040602, 1, 1, 0, 750), +(9300133, 2040602, 1, 1, 0, 750), +(4230111, 2043302, 1, 1, 0, 750), +(9300133, 2043302, 1, 1, 0, 750), +(4230111, 2382048, 1, 1, 0, 20000), +(9300133, 2382048, 1, 1, 0, 20000), +(4230111, 4010004, 1, 1, 0, 7000), +(9300133, 4010004, 1, 1, 0, 7000), +(4230111, 4010002, 1, 1, 0, 7000), +(9300133, 4010002, 1, 1, 0, 7000), +(4230111, 4004001, 1, 1, 0, 3000), +(9300133, 4004001, 1, 1, 0, 3000), +(4230111, 1050021, 1, 1, 0, 700), +(9300133, 1050021, 1, 1, 0, 700), +(4230111, 1082025, 1, 1, 0, 700), +(9300133, 1082025, 1, 1, 0, 700), +(4230111, 1302010, 1, 1, 0, 700), +(9300133, 1302010, 1, 1, 0, 700), +(4230111, 1002021, 1, 1, 0, 700), +(9300133, 1002021, 1, 1, 0, 700), +(4230111, 1041051, 1, 1, 0, 700), +(9300133, 1041051, 1, 1, 0, 700), +(4230111, 1061047, 1, 1, 0, 700), +(9300133, 1061047, 1, 1, 0, 700), +(4230111, 1002153, 1, 1, 0, 700), +(9300133, 1002153, 1, 1, 0, 700), +(4230111, 1002155, 1, 1, 0, 700), +(9300133, 1002155, 1, 1, 0, 700), +(4230111, 1072116, 1, 1, 0, 700), +(9300133, 1072116, 1, 1, 0, 700), +(4230111, 1002168, 1, 1, 0, 700), +(9300133, 1002168, 1, 1, 0, 700), +(4230111, 1072123, 1, 1, 0, 700), +(9300133, 1072123, 1, 1, 0, 700), +(4230111, 1472032, 1, 1, 0, 700), +(9300133, 1472032, 1, 1, 0, 700), +(4230111, 1051007, 1, 1, 0, 700), +(9300133, 1051007, 1, 1, 0, 700), +(4230111, 1472018, 1, 1, 0, 700), +(9300133, 1472018, 1, 1, 0, 700), +(4230111, 1002628, 1, 1, 0, 700), +(9300133, 1002628, 1, 1, 0, 700), +(4230105, 4000058, 1, 1, 0, 200000), +(4230122, 4000058, 1, 1, 0, 200000), +(4230105, 2000002, 1, 1, 0, 40000), +(4230122, 2000002, 1, 1, 0, 40000), +(4230105, 2000003, 1, 1, 0, 40000), +(4230122, 2000003, 1, 1, 0, 40000), +(4230105, 2041011, 1, 1, 0, 750), +(4230122, 2041011, 1, 1, 0, 750), +(4230105, 2044501, 1, 1, 0, 750), +(4230122, 2044501, 1, 1, 0, 750), +(4230105, 2041043, 1, 1, 0, 750), +(4230122, 2041043, 1, 1, 0, 750), +(4230105, 2382052, 1, 1, 0, 20000), +(4230122, 2382052, 1, 1, 0, 20000), +(4230105, 4010000, 1, 1, 0, 7000), +(4230122, 4010000, 1, 1, 0, 7000), +(4230105, 4020003, 1, 1, 0, 7000), +(4230122, 4020003, 1, 1, 0, 7000), +(4230105, 4004003, 1, 1, 0, 3000), +(4230122, 4004003, 1, 1, 0, 3000), +(4230105, 1332020, 1, 1, 0, 700), +(4230122, 1332020, 1, 1, 0, 700), +(4230105, 1442024, 1, 1, 0, 700), +(4230122, 1442024, 1, 1, 0, 700), +(4230105, 1002098, 1, 1, 0, 700), +(4230122, 1002098, 1, 1, 0, 700), +(4230105, 1082011, 1, 1, 0, 700), +(4230122, 1082011, 1, 1, 0, 700), +(4230105, 1382019, 1, 1, 0, 700), +(4230122, 1382019, 1, 1, 0, 700), +(4230105, 1050048, 1, 1, 0, 700), +(4230122, 1050048, 1, 1, 0, 700), +(4230105, 1041083, 1, 1, 0, 700), +(4230122, 1041083, 1, 1, 0, 700), +(4230105, 1061082, 1, 1, 0, 700), +(4230122, 1061082, 1, 1, 0, 700), +(4230105, 1072103, 1, 1, 0, 700), +(4230122, 1072103, 1, 1, 0, 700), +(4230105, 1051038, 1, 1, 0, 700), +(4230122, 1051038, 1, 1, 0, 700), +(4230105, 1002182, 1, 1, 0, 700), +(4230122, 1002182, 1, 1, 0, 700), +(4230105, 1472015, 1, 1, 0, 700), +(4230122, 1472015, 1, 1, 0, 700), +(4230105, 1040083, 1, 1, 0, 700), +(4230122, 1040083, 1, 1, 0, 700), +(4230105, 1060072, 1, 1, 0, 700), +(4230122, 1060072, 1, 1, 0, 700), +(4230105, 1072130, 1, 1, 0, 700), +(4230122, 1072130, 1, 1, 0, 700), +(4230103, 2000002, 1, 1, 0, 40000), +(9300060, 2000002, 1, 1, 0, 40000), +(4230103, 2000003, 1, 1, 0, 40000), +(9300060, 2000003, 1, 1, 0, 40000), +(4230103, 2000004, 1, 1, 0, 40000), +(9300060, 2000004, 1, 1, 0, 40000), +(4230103, 2060000, 10, 50, 0, 10000), +(9300060, 2060000, 10, 50, 0, 10000), +(4230103, 2061000, 10, 50, 0, 10000), +(9300060, 2061000, 10, 50, 0, 10000), +(4230103, 2382053, 1, 1, 0, 20000), +(9300060, 2382053, 1, 1, 0, 20000), +(4230103, 4010003, 1, 1, 0, 7000), +(9300060, 4010003, 1, 1, 0, 7000), +(4230103, 4020005, 1, 1, 0, 7000), +(9300060, 4020005, 1, 1, 0, 7000), +(4230103, 4010001, 1, 1, 0, 7000), +(9300060, 4010001, 1, 1, 0, 7000), +(4230103, 1092014, 1, 1, 0, 700), +(9300060, 1092014, 1, 1, 0, 700), +(4230103, 1322017, 1, 1, 0, 700), +(9300060, 1322017, 1, 1, 0, 700), +(4230103, 1312006, 1, 1, 0, 700), +(9300060, 1312006, 1, 1, 0, 700), +(4230103, 1442001, 1, 1, 0, 700), +(9300060, 1442001, 1, 1, 0, 700), +(4230103, 1072114, 1, 1, 0, 700), +(9300060, 1072114, 1, 1, 0, 700), +(4230103, 1051034, 1, 1, 0, 700), +(9300060, 1051034, 1, 1, 0, 700), +(4230103, 1002151, 1, 1, 0, 700), +(9300060, 1002151, 1, 1, 0, 700), +(4230103, 1050052, 1, 1, 0, 700), +(9300060, 1050052, 1, 1, 0, 700), +(4230103, 1050051, 1, 1, 0, 700), +(9300060, 1050051, 1, 1, 0, 700), +(4230103, 1072121, 1, 1, 0, 700), +(9300060, 1072121, 1, 1, 0, 700), +(4230103, 1472019, 1, 1, 0, 700), +(9300060, 1472019, 1, 1, 0, 700), +(4230103, 1082076, 1, 1, 0, 700), +(9300060, 1082076, 1, 1, 0, 700), +(4230103, 1332001, 1, 1, 0, 700), +(9300060, 1332001, 1, 1, 0, 700), +(4230103, 1002179, 1, 1, 0, 700), +(9300060, 1002179, 1, 1, 0, 700), +(4230103, 1472009, 1, 1, 0, 700), +(9300060, 1472009, 1, 1, 0, 700), +(4230124, 4000155, 1, 1, 0, 200000), +(9300090, 4000155, 1, 1, 0, 200000), +(9420501, 4000155, 1, 1, 0, 200000), +(4230124, 4000157, 1, 1, 0, 200000), +(9300090, 4000157, 1, 1, 0, 200000), +(9420501, 4000157, 1, 1, 0, 200000), +(4230124, 4031209, 1, 1, 0, 7000), +(9300090, 4031209, 1, 1, 0, 7000), +(9420501, 4031209, 1, 1, 0, 7000), +(4230124, 4030012, 1, 1, 0, 10000), +(9300090, 4030012, 1, 1, 0, 10000), +(9420501, 4030012, 1, 1, 0, 10000), +(4230124, 2000002, 1, 1, 0, 40000), +(9300090, 2000002, 1, 4, 0, 40000), +(9420501, 2000002, 1, 1, 0, 40000), +(4230124, 2000003, 1, 1, 0, 40000), +(9300090, 2000003, 1, 4, 0, 40000), +(9420501, 2000003, 1, 1, 0, 40000), +(4230124, 2000004, 1, 1, 0, 40000), +(9300090, 2000004, 1, 4, 0, 40000), +(9420501, 2000004, 1, 1, 0, 40000), +(4230124, 2041019, 1, 1, 0, 750), +(9300090, 2041019, 1, 4, 0, 10000), +(9420501, 2041019, 1, 1, 0, 750), +(4230124, 2040901, 1, 1, 0, 750), +(9300090, 2040901, 1, 4, 0, 10000), +(9420501, 2040901, 1, 1, 0, 750), +(4230124, 2382056, 1, 1, 0, 20000), +(9300090, 2382056, 1, 4, 0, 20000), +(9420501, 2382056, 1, 1, 0, 20000), +(4230124, 4010006, 1, 1, 0, 7000), +(9300090, 4010006, 1, 1, 0, 7000), +(9420501, 4010006, 1, 1, 0, 7000), +(4230124, 4020002, 1, 1, 0, 7000), +(9300090, 4020002, 1, 1, 0, 7000), +(9420501, 4020002, 1, 1, 0, 7000), +(4230124, 4020007, 1, 1, 0, 7000), +(9300090, 4020007, 1, 1, 0, 7000), +(9420501, 4020007, 1, 1, 0, 7000), +(4230124, 1032012, 1, 1, 0, 700), +(9300090, 1032012, 1, 1, 0, 40000), +(9420501, 1032012, 1, 1, 0, 700), +(4230124, 1002045, 1, 1, 0, 700), +(9300090, 1002045, 1, 1, 0, 40000), +(9420501, 1002045, 1, 1, 0, 700), +(4230124, 1002085, 1, 1, 0, 700), +(9300090, 1002085, 1, 1, 0, 40000), +(9420501, 1002085, 1, 1, 0, 700), +(4230124, 1412005, 1, 1, 0, 700), +(9300090, 1412005, 1, 1, 0, 40000), +(9420501, 1412005, 1, 1, 0, 700), +(4230124, 1050037, 1, 1, 0, 700), +(9300090, 1050037, 1, 1, 0, 40000), +(9420501, 1050037, 1, 1, 0, 700), +(4230124, 1382018, 1, 1, 0, 700), +(9300090, 1382018, 1, 1, 0, 40000), +(9420501, 1382018, 1, 1, 0, 700), +(4230124, 1041067, 1, 1, 0, 700), +(9300090, 1041067, 1, 1, 0, 40000), +(9420501, 1041067, 1, 1, 0, 700), +(4230124, 1061062, 1, 1, 0, 700), +(9300090, 1061062, 1, 1, 0, 40000), +(9420501, 1061062, 1, 1, 0, 700), +(4230124, 1452007, 1, 1, 0, 700), +(9300090, 1452007, 1, 1, 0, 40000), +(9420501, 1452007, 1, 1, 0, 700), +(4230124, 1002213, 1, 1, 0, 700), +(9300090, 1002213, 1, 1, 0, 40000), +(9420501, 1002213, 1, 1, 0, 700), +(4230124, 1060085, 1, 1, 0, 700), +(9300090, 1060085, 1, 1, 0, 40000), +(9420501, 1060085, 1, 1, 0, 700), +(4230124, 1040084, 1, 1, 0, 700), +(9300090, 1040084, 1, 1, 0, 40000), +(9420501, 1040084, 1, 1, 0, 700), +(4230124, 1002631, 1, 1, 0, 700), +(9300090, 1002631, 1, 1, 0, 40000), +(9420501, 1002631, 1, 1, 0, 700), +(4250000, 4000436, 1, 1, 0, 200000), +(4250000, 4130015, 1, 1, 0, 3000), +(4250000, 4130017, 1, 1, 0, 3000), +(4250000, 4130005, 1, 1, 0, 3000), +(4250000, 2040004, 1, 1, 0, 750), +(4250000, 2382076, 1, 1, 0, 20000), +(4250000, 4010005, 1, 1, 0, 7000), +(4250000, 4020004, 1, 1, 0, 7000), +(4250000, 1002025, 1, 1, 0, 700), +(4250000, 1051025, 1, 1, 0, 700), +(4250000, 1082083, 1, 1, 0, 700), +(4250000, 1072109, 1, 1, 0, 700), +(4250000, 1492006, 1, 1, 0, 700), +(4110300, 4000357, 1, 1, 0, 200000), +(4110300, 4030012, 1, 1, 0, 10000), +(4110300, 4130012, 1, 1, 0, 3000), +(4110300, 4130022, 1, 1, 0, 3000), +(4110300, 2000002, 1, 1, 0, 40000), +(4110300, 2000003, 1, 1, 0, 40000), +(4110300, 2000004, 1, 1, 0, 40000), +(4110300, 2060000, 10, 50, 0, 10000), +(4110300, 2061000, 10, 50, 0, 10000), +(4110300, 2330002, 1, 1, 0, 400), +(4110300, 2041019, 1, 1, 0, 750), +(4110300, 4130012, 1, 1, 0, 3000), +(4110300, 4010006, 1, 1, 0, 7000), +(4110300, 4020007, 1, 1, 0, 7000), +(4110300, 4004004, 1, 1, 0, 3000), +(4110300, 1032012, 1, 1, 0, 700), +(4110300, 1002085, 1, 1, 0, 700), +(4110300, 1002045, 1, 1, 0, 700), +(4110300, 1412005, 1, 1, 0, 700), +(4110300, 1050037, 1, 1, 0, 700), +(4110300, 1061062, 1, 1, 0, 700), +(4110300, 1002213, 1, 1, 0, 700), +(4110300, 1041067, 1, 1, 0, 700), +(4110300, 1452007, 1, 1, 0, 700), +(4110300, 1040096, 1, 1, 0, 700), +(4110300, 1060085, 1, 1, 0, 700), +(4110300, 1040084, 1, 1, 0, 700), +(4110300, 1060073, 1, 1, 0, 700), +(4110300, 1052116, 1, 1, 0, 700), +(4230117, 4000118, 1, 1, 0, 200000), +(9300104, 4000118, 1, 1, 0, 200000), +(9500367, 4000118, 1, 1, 0, 200000), +(4230117, 4130001, 1, 1, 0, 3000), +(9300104, 4130001, 1, 1, 0, 3000), +(9500367, 4130001, 1, 1, 0, 3000), +(4230117, 2000002, 1, 1, 0, 40000), +(9300104, 2000002, 1, 1, 0, 40000), +(9500367, 2000002, 1, 1, 0, 40000), +(4230117, 2000003, 1, 1, 0, 40000), +(9300104, 2000003, 1, 1, 0, 40000), +(9500367, 2000003, 1, 1, 0, 40000), +(4230117, 2002007, 1, 1, 0, 10000), +(9300104, 2002007, 1, 1, 0, 10000), +(9500367, 2002007, 1, 1, 0, 10000), +(4230117, 2040707, 1, 1, 0, 750), +(9300104, 2040707, 1, 1, 0, 750), +(9500367, 2040707, 1, 1, 0, 750), +(4230117, 2070002, 1, 1, 0, 400), +(9300104, 2070002, 1, 1, 0, 400), +(9500367, 2070002, 1, 1, 0, 400), +(4230117, 4010003, 1, 1, 0, 7000), +(9300104, 4010003, 1, 1, 0, 7000), +(9500367, 4010003, 1, 1, 0, 7000), +(4230117, 4020007, 1, 1, 0, 7000), +(9300104, 4020007, 1, 1, 0, 7000), +(9500367, 4020007, 1, 1, 0, 7000), +(4230117, 4004000, 1, 1, 0, 3000), +(9300104, 4004000, 1, 1, 0, 3000), +(9500367, 4004000, 1, 1, 0, 3000), +(4230117, 1312008, 1, 1, 0, 700), +(9300104, 1312008, 1, 1, 0, 700), +(9500367, 1312008, 1, 1, 0, 700), +(4230117, 1082036, 1, 1, 0, 700), +(9300104, 1082036, 1, 1, 0, 700), +(9500367, 1082036, 1, 1, 0, 700), +(4230117, 1050049, 1, 1, 0, 700), +(9300104, 1050049, 1, 1, 0, 700), +(9500367, 1050049, 1, 1, 0, 700), +(4230117, 1002217, 1, 1, 0, 700), +(9300104, 1002217, 1, 1, 0, 700), +(9500367, 1002217, 1, 1, 0, 700), +(4230117, 1040080, 1, 1, 0, 700), +(9300104, 1040080, 1, 1, 0, 700), +(9500367, 1040080, 1, 1, 0, 700), +(4230117, 1002212, 1, 1, 0, 700), +(9300104, 1002212, 1, 1, 0, 700), +(9500367, 1002212, 1, 1, 0, 700), +(4230117, 1332003, 1, 1, 0, 700), +(9300104, 1332003, 1, 1, 0, 700), +(9500367, 1332003, 1, 1, 0, 700), +(4230117, 1092020, 1, 1, 0, 700), +(9300104, 1092020, 1, 1, 0, 700), +(9500367, 1092020, 1, 1, 0, 700), +(4230117, 1002208, 1, 1, 0, 700), +(9300104, 1002208, 1, 1, 0, 700), +(9500367, 1002208, 1, 1, 0, 700), +(4230117, 1082047, 1, 1, 0, 700), +(9300104, 1082047, 1, 1, 0, 700), +(9500367, 1082047, 1, 1, 0, 700), +(4230117, 1492006, 1, 1, 0, 700), +(9300104, 1492006, 1, 1, 0, 700), +(9500367, 1492006, 1, 1, 0, 700), +(4230109, 4000101, 1, 1, 0, 200000), +(4230109, 4130010, 1, 1, 0, 3000), +(4230109, 2000002, 1, 1, 0, 40000), +(4230109, 2000003, 1, 1, 0, 40000), +(4230109, 2040901, 1, 1, 0, 750), +(4230109, 2060000, 10, 50, 0, 10000), +(4230109, 2061000, 10, 50, 0, 10000), +(4230109, 4030012, 1, 1, 0, 10000), +(4230109, 4010001, 1, 1, 0, 7000), +(4230109, 4004002, 1, 1, 0, 3000), +(4230109, 1032018, 1, 1, 0, 700), +(4230109, 1402002, 1, 1, 0, 700), +(4230109, 1092004, 1, 1, 0, 700), +(4230109, 1040087, 1, 1, 0, 700), +(4230109, 1060076, 1, 1, 0, 700), +(4230109, 1051024, 1, 1, 0, 700), +(4230109, 1072117, 1, 1, 0, 700), +(4230109, 1002154, 1, 1, 0, 700), +(4230109, 1050037, 1, 1, 0, 700), +(4230109, 1452016, 1, 1, 0, 700), +(4230109, 1462014, 1, 1, 0, 700), +(4230109, 1462019, 1, 1, 0, 700), +(4230109, 1462007, 1, 1, 0, 700), +(4230109, 1002167, 1, 1, 0, 700), +(4230109, 1082070, 1, 1, 0, 700), +(4230109, 1002180, 1, 1, 0, 700), +(4230109, 1472017, 1, 1, 0, 700), +(4230109, 1482006, 1, 1, 0, 700), +(4230108, 4000078, 1, 1, 0, 200000), +(4230108, 4003004, 1, 1, 0, 7000), +(4230108, 4000021, 1, 1, 0, 200000), +(4230108, 2000002, 1, 1, 0, 40000), +(4230108, 2000003, 1, 1, 0, 40000), +(4230108, 2070002, 1, 1, 0, 400), +(4230108, 2041017, 1, 1, 0, 750), +(4230108, 2382058, 1, 1, 0, 20000), +(4230108, 4010001, 1, 1, 0, 7000), +(4230108, 4020006, 1, 1, 0, 7000), +(4230108, 4004003, 1, 1, 0, 3000), +(4230108, 1432008, 1, 1, 0, 700), +(4230108, 1442005, 1, 1, 0, 700), +(4230108, 1422007, 1, 1, 0, 700), +(4230108, 1072113, 1, 1, 0, 700), +(4230108, 1002086, 1, 1, 0, 700), +(4230108, 1040087, 1, 1, 0, 700), +(4230108, 1050031, 1, 1, 0, 700), +(4230108, 1002218, 1, 1, 0, 700), +(4230108, 1041082, 1, 1, 0, 700), +(4230108, 1061081, 1, 1, 0, 700), +(4230108, 1082073, 1, 1, 0, 700), +(4230108, 1041095, 1, 1, 0, 700), +(4230108, 1072108, 1, 1, 0, 700), +(4230108, 1472018, 1, 1, 0, 700), +(4230123, 4000156, 1, 1, 0, 200000), +(4230123, 4000157, 1, 1, 0, 200000), +(4230123, 4031209, 1, 1, 0, 7000), +(4230123, 4030012, 1, 1, 0, 10000), +(4230123, 4003004, 1, 1, 0, 7000), +(4230123, 4130015, 1, 1, 0, 3000), +(4230123, 4130008, 1, 1, 0, 3000), +(4230123, 2070002, 1, 1, 0, 400), +(4230123, 2002004, 1, 1, 0, 10000), +(4230123, 2048004, 1, 1, 0, 750), +(4230123, 2044501, 1, 1, 0, 750), +(4230123, 2382059, 1, 1, 0, 20000), +(4230123, 2000002, 1, 1, 0, 40000), +(4230123, 2000003, 1, 1, 0, 40000), +(4230123, 2060000, 10, 50, 0, 10000), +(4230123, 2061000, 10, 50, 0, 10000), +(4230123, 2044803, 1, 1, 0, 750), +(4230123, 4020008, 1, 1, 0, 7000), +(4230123, 4020004, 1, 1, 0, 7000), +(4230123, 4004003, 1, 1, 0, 3000), +(4230123, 1002024, 1, 1, 0, 700), +(4230123, 1442009, 1, 1, 0, 700), +(4230123, 1452008, 1, 1, 0, 700), +(4230123, 1041083, 1, 1, 0, 700), +(4230123, 1061082, 1, 1, 0, 700), +(4230123, 1472017, 1, 1, 0, 700), +(4230123, 1082198, 1, 1, 0, 700), +(4230502, 4000290, 1, 1, 0, 200000), +(4230502, 4000278, 1, 1, 0, 200000), +(4230502, 4130015, 1, 1, 0, 3000), +(4230502, 2000002, 1, 1, 0, 40000), +(4230502, 2070002, 1, 1, 0, 400), +(4230502, 2382060, 1, 1, 0, 20000), +(4230502, 4020004, 1, 1, 0, 7000), +(4230502, 4004003, 1, 1, 0, 3000), +(4230502, 4020008, 1, 1, 0, 7000), +(4230502, 4010006, 1, 1, 0, 7000), +(4230502, 4004002, 1, 1, 0, 3000), +(4230502, 1002024, 1, 1, 0, 700), +(4230502, 1452008, 1, 1, 0, 700), +(4230502, 1061051, 1, 1, 0, 700), +(4230502, 1072303, 1, 1, 0, 700), +(9420508, 1040086, 1, 1, 0, 700), +(9420508, 1041087, 1, 1, 0, 700), +(9420508, 1051010, 1, 1, 0, 700), +(9420508, 1002128, 1, 1, 0, 700), +(4300006, 2000001, 1, 1, 0, 40000), +(4300006, 2000003, 1, 1, 0, 40000), +(4300006, 2000006, 1, 1, 0, 40000), +(4300006, 2022003, 1, 1, 0, 3000), +(4300006, 2000004, 1, 1, 0, 40000), +(4300006, 2040004, 1, 1, 0, 750), +(4300006, 2040501, 1, 1, 0, 750), +(4300006, 2040504, 1, 1, 0, 750), +(4300006, 2040801, 1, 1, 0, 750), +(4300006, 2041007, 1, 1, 0, 750), +(4300006, 2041045, 1, 1, 0, 750), +(4300006, 2049206, 1, 1, 0, 400), +(4300006, 2049208, 1, 1, 0, 400), +(4300006, 2049210, 1, 1, 0, 400), +(4300006, 4020008, 1, 1, 0, 7000), +(4300006, 4004000, 1, 1, 0, 3000), +(4300006, 1302009, 1, 1, 0, 700), +(4300006, 1312007, 1, 1, 0, 700), +(4300006, 1322016, 1, 1, 0, 700), +(4300006, 1402007, 1, 1, 0, 700), +(4300006, 1412005, 1, 1, 0, 700), +(4300006, 1422007, 1, 1, 0, 700), +(4300006, 1432005, 1, 1, 0, 700), +(4300006, 1442009, 1, 1, 0, 700), +(4300006, 1382019, 1, 1, 0, 700), +(4300006, 1452007, 1, 1, 0, 700), +(4300006, 1332011, 1, 1, 0, 700), +(4300006, 1332031, 1, 1, 0, 700), +(4300006, 1472014, 1, 1, 0, 700), +(4300006, 1472015, 1, 1, 0, 700), +(4300006, 1472016, 1, 1, 0, 700), +(4300006, 1472017, 1, 1, 0, 700), +(4300006, 1482006, 1, 1, 0, 700), +(4300006, 1492006, 1, 1, 0, 700), +(4230112, 4000112, 1, 1, 0, 200000), +(4230112, 4031115, 1, 1, 0, 7000), +(4230112, 4030012, 1, 1, 0, 10000), +(4230112, 2000002, 1, 1, 0, 40000), +(4230112, 2000004, 1, 1, 0, 40000), +(4230112, 2060000, 10, 50, 0, 10000), +(4230112, 2061000, 10, 50, 0, 10000), +(4230112, 2002008, 1, 1, 0, 10000), +(4230112, 2040502, 1, 1, 0, 750), +(4230112, 2040004, 1, 1, 0, 750), +(4230112, 2382062, 1, 1, 0, 20000), +(4230112, 2049000, 1, 1, 0, 400), +(4230112, 4004001, 1, 1, 0, 3000), +(4230112, 1302016, 1, 1, 0, 700), +(4230112, 1412003, 1, 1, 0, 700), +(4230112, 1302010, 1, 1, 0, 700), +(4230112, 1051026, 1, 1, 0, 700), +(4230112, 1072101, 1, 1, 0, 700), +(4230112, 1002169, 1, 1, 0, 700), +(4230112, 1002214, 1, 1, 0, 700), +(4230112, 1472032, 1, 1, 0, 700), +(4230112, 1472020, 1, 1, 0, 700), +(4230112, 1040097, 1, 1, 0, 700), +(4230112, 1060086, 1, 1, 0, 700), +(4230112, 1072110, 1, 1, 0, 700), +(4230112, 1492007, 1, 1, 0, 700), +(4230125, 2000002, 1, 1, 0, 40000), +(4230125, 2000003, 1, 1, 0, 40000), +(4230125, 2070002, 1, 1, 0, 400), +(4230125, 4006000, 1, 1, 0, 7000), +(4230125, 2382063, 1, 1, 0, 20000), +(4230125, 4010004, 1, 1, 0, 7000), +(4230125, 4010000, 1, 1, 0, 7000), +(4230125, 4020007, 1, 1, 0, 7000), +(4230125, 1002081, 1, 1, 0, 700), +(4230125, 1422007, 1, 1, 0, 700), +(4230125, 1002047, 1, 1, 0, 700), +(4230125, 1382019, 1, 1, 0, 700), +(4230125, 1002144, 1, 1, 0, 700), +(4230125, 1050052, 1, 1, 0, 700), +(4230125, 1072118, 1, 1, 0, 700), +(4230125, 1072108, 1, 1, 0, 700), +(4230125, 1002178, 1, 1, 0, 700), +(9400546, 4032024, 1, 1, 0, 10000), +(9400546, 4032025, 1, 1, 0, 10000), +(9400546, 2000004, 1, 1, 0, 40000), +(9400546, 2002008, 1, 1, 0, 10000), +(9400546, 2044301, 1, 1, 0, 750), +(9400546, 2040504, 1, 1, 0, 750), +(9400546, 4004001, 1, 1, 0, 3000), +(9400546, 1302016, 1, 1, 0, 700), +(9400546, 1040085, 1, 1, 0, 700), +(9400546, 1082025, 1, 1, 0, 700), +(9400546, 1302010, 1, 1, 0, 700), +(9400546, 1402007, 1, 1, 0, 700), +(9400546, 1412003, 1, 1, 0, 700), +(9400546, 1051026, 1, 1, 0, 700), +(9400546, 1002214, 1, 1, 0, 700), +(9400546, 1002169, 1, 1, 0, 700), +(9400546, 1072101, 1, 1, 0, 700), +(9400546, 1472020, 1, 1, 0, 700), +(9400546, 1040097, 1, 1, 0, 700), +(9400546, 1060086, 1, 1, 0, 700), +(9400546, 1072110, 1, 1, 0, 700), +(4300007, 2000001, 1, 1, 0, 40000), +(4300007, 2000003, 1, 1, 0, 40000), +(4300007, 2000006, 1, 1, 0, 40000), +(4300007, 2022003, 1, 1, 0, 3000), +(4300007, 2000004, 1, 1, 0, 40000), +(4300007, 2040004, 1, 1, 0, 750), +(4300007, 2040501, 1, 1, 0, 750), +(4300007, 2040504, 1, 1, 0, 750), +(4300007, 2040801, 1, 1, 0, 750), +(4300007, 2041007, 1, 1, 0, 750), +(4300007, 2041045, 1, 1, 0, 750), +(4300007, 2049206, 1, 1, 0, 400), +(4300007, 2049208, 1, 1, 0, 400), +(4300007, 2049210, 1, 1, 0, 400), +(4300007, 4020008, 1, 1, 0, 7000), +(4300007, 4004000, 1, 1, 0, 3000), +(4300007, 1302009, 1, 1, 0, 700), +(4300007, 1312007, 1, 1, 0, 700), +(4300007, 1322016, 1, 1, 0, 700), +(4300007, 1402007, 1, 1, 0, 700), +(4300007, 1412005, 1, 1, 0, 700), +(4300007, 1422007, 1, 1, 0, 700), +(4300007, 1432005, 1, 1, 0, 700), +(4300007, 1442009, 1, 1, 0, 700), +(4300007, 1382019, 1, 1, 0, 700), +(4300007, 1452007, 1, 1, 0, 700), +(4300007, 1332011, 1, 1, 0, 700), +(4300007, 1332031, 1, 1, 0, 700), +(4300007, 1472014, 1, 1, 0, 700), +(4300007, 1472015, 1, 1, 0, 700), +(4300007, 1472016, 1, 1, 0, 700), +(4300007, 1472017, 1, 1, 0, 700), +(4300007, 1482006, 1, 1, 0, 700), +(4300007, 1492006, 1, 1, 0, 700), +(4230120, 4030012, 1, 1, 0, 10000), +(9500372, 4030012, 1, 1, 0, 10000), +(4230120, 4131004, 1, 1, 0, 3000), +(9500372, 4131004, 1, 1, 0, 3000), +(4230120, 2000002, 1, 1, 0, 40000), +(9500372, 2000002, 1, 1, 0, 40000), +(4230120, 2000004, 1, 1, 0, 40000), +(9500372, 2000004, 1, 1, 0, 40000), +(4230120, 4006001, 1, 1, 0, 7000), +(9500372, 4006001, 1, 1, 0, 7000), +(4230120, 2040804, 1, 1, 0, 750), +(9500372, 2040804, 1, 1, 0, 750), +(4230120, 2382061, 1, 1, 0, 20000), +(9500372, 2382061, 1, 1, 0, 20000), +(4230120, 4020003, 1, 1, 0, 7000), +(9500372, 4020003, 1, 1, 0, 7000), +(4230120, 4004000, 1, 1, 0, 3000), +(9500372, 4004000, 1, 1, 0, 3000), +(4230120, 4004001, 1, 1, 0, 3000), +(9500372, 4004001, 1, 1, 0, 3000), +(4230120, 1041086, 1, 1, 0, 700), +(9500372, 1041086, 1, 1, 0, 700), +(4230120, 1061085, 1, 1, 0, 700), +(9500372, 1061085, 1, 1, 0, 700), +(4230120, 1051030, 1, 1, 0, 700), +(9500372, 1051030, 1, 1, 0, 700), +(4230120, 1051031, 1, 1, 0, 700), +(9500372, 1051031, 1, 1, 0, 700), +(4230120, 1002141, 1, 1, 0, 700), +(9500372, 1002141, 1, 1, 0, 700), +(4230120, 1051039, 1, 1, 0, 700), +(9500372, 1051039, 1, 1, 0, 700), +(4230120, 1452008, 1, 1, 0, 700), +(9500372, 1452008, 1, 1, 0, 700), +(4230120, 1082084, 1, 1, 0, 700), +(9500372, 1082084, 1, 1, 0, 700), +(4230120, 1041081, 1, 1, 0, 700), +(9500372, 1041081, 1, 1, 0, 700), +(4230120, 1061080, 1, 1, 0, 700), +(9500372, 1061080, 1, 1, 0, 700), +(4230120, 1002135, 1, 1, 0, 700), +(9500372, 1002135, 1, 1, 0, 700), +(4230120, 1040084, 1, 1, 0, 700), +(9500372, 1040084, 1, 1, 0, 700), +(4230120, 1060073, 1, 1, 0, 700), +(9500372, 1060073, 1, 1, 0, 700), +(4230120, 1072131, 1, 1, 0, 700), +(9500372, 1072131, 1, 1, 0, 700), +(4230120, 1482007, 1, 1, 0, 700), +(9500372, 1482007, 1, 1, 0, 700), +(4230106, 4003004, 1, 1, 0, 7000), +(4230106, 4030012, 1, 1, 0, 10000), +(4230106, 2000002, 1, 1, 0, 40000), +(4230106, 2000003, 1, 1, 0, 40000), +(4230106, 2070002, 1, 1, 0, 400), +(4230106, 2041012, 1, 1, 0, 750), +(4230106, 2040705, 1, 1, 0, 750), +(4230106, 4006000, 1, 1, 0, 7000), +(4230106, 2382064, 1, 1, 0, 20000), +(4230106, 4010004, 1, 1, 0, 7000), +(4230106, 4020005, 1, 1, 0, 7000), +(4230106, 4004001, 1, 1, 0, 3000), +(4230106, 1302016, 1, 1, 0, 700), +(4230106, 1060075, 1, 1, 0, 700), +(4230106, 1092007, 1, 1, 0, 700), +(4230106, 1040086, 1, 1, 0, 700), +(4230106, 1082036, 1, 1, 0, 700), +(4230106, 1002216, 1, 1, 0, 700), +(4230106, 1051032, 1, 1, 0, 700), +(4230106, 1040081, 1, 1, 0, 700), +(4230106, 1060070, 1, 1, 0, 700), +(4230106, 1050052, 1, 1, 0, 700), +(4230106, 1072118, 1, 1, 0, 700), +(4230106, 1041080, 1, 1, 0, 700), +(4230106, 1061079, 1, 1, 0, 700), +(4230106, 1002210, 1, 1, 0, 700), +(4230106, 1082045, 1, 1, 0, 700), +(4230106, 1002628, 1, 1, 0, 700), +(4230106, 1082201, 1, 1, 0, 700), +(4130100, 4000030, 1, 1, 0, 200000), +(4130100, 4000014, 1, 1, 0, 200000), +(4130100, 2000004, 1, 1, 0, 40000), +(4130100, 2044702, 1, 1, 0, 750), +(4130100, 2049101, 1, 1, 0, 400), +(4130100, 4006001, 1, 1, 0, 7000), +(4130100, 2382065, 1, 1, 0, 20000), +(4130100, 4010005, 1, 1, 0, 7000), +(4130100, 4020008, 1, 1, 0, 7000), +(4130100, 1050022, 1, 1, 0, 700), +(4130100, 1002045, 1, 1, 0, 700), +(4130100, 1072133, 1, 1, 0, 700), +(4130100, 1332016, 1, 1, 0, 700), +(4130100, 1322016, 1, 1, 0, 700), +(4130100, 1302010, 1, 1, 0, 700), +(4130100, 1382001, 1, 1, 0, 700), +(4130100, 1082064, 1, 1, 0, 700), +(4130100, 1050046, 1, 1, 0, 700), +(4130100, 1072125, 1, 1, 0, 700), +(4130100, 1040079, 1, 1, 0, 700), +(4130100, 1060069, 1, 1, 0, 700), +(4130100, 1002138, 1, 1, 0, 700), +(4130100, 1472032, 1, 1, 0, 700), +(4130100, 1332016, 1, 1, 0, 700), +(4130100, 1472012, 1, 1, 0, 700), +(4130100, 1052113, 1, 1, 0, 700), +(4230110, 4000102, 1, 1, 0, 200000), +(9500120, 4000102, 1, 1, 0, 200000), +(4230110, 4030012, 1, 1, 0, 10000), +(9500120, 4030012, 1, 1, 0, 10000), +(4230110, 2000002, 1, 1, 0, 40000), +(9500120, 2000002, 1, 1, 0, 40000), +(4230110, 2000004, 1, 1, 0, 40000), +(9500120, 2000004, 1, 1, 0, 40000), +(4230110, 2060000, 10, 50, 0, 10000), +(9500120, 2060000, 10, 50, 0, 10000), +(4230110, 2061000, 10, 50, 0, 10000), +(9500120, 2061000, 10, 50, 0, 10000), +(4230110, 2044301, 1, 1, 0, 750), +(9500120, 2044301, 1, 1, 0, 750), +(4230110, 2040504, 1, 1, 0, 750), +(9500120, 2040504, 1, 1, 0, 750), +(4230110, 2044002, 1, 1, 0, 750), +(9500120, 2044002, 1, 1, 0, 750), +(4230110, 2044904, 1, 1, 0, 750), +(9500120, 2044904, 1, 1, 0, 750), +(4230110, 2382066, 1, 1, 0, 20000), +(9500120, 2382066, 1, 1, 0, 20000), +(4230110, 4020008, 1, 1, 0, 7000), +(9500120, 4020008, 1, 1, 0, 7000), +(4230110, 4004000, 1, 1, 0, 3000), +(9500120, 4004000, 1, 1, 0, 3000), +(4230110, 1302013, 1, 1, 0, 700), +(9500120, 1302013, 1, 1, 0, 700), +(4230110, 1072135, 1, 1, 0, 700), +(9500120, 1072135, 1, 1, 0, 700), +(4230110, 1040088, 1, 1, 0, 700), +(9500120, 1040088, 1, 1, 0, 700), +(4230110, 1060077, 1, 1, 0, 700), +(9500120, 1060077, 1, 1, 0, 700), +(4230110, 1041084, 1, 1, 0, 700), +(9500120, 1041084, 1, 1, 0, 700), +(4230110, 1002004, 1, 1, 0, 700), +(9500120, 1002004, 1, 1, 0, 700), +(4230110, 1082081, 1, 1, 0, 700), +(9500120, 1082081, 1, 1, 0, 700), +(4230110, 1002144, 1, 1, 0, 700), +(9500120, 1002144, 1, 1, 0, 700), +(4230110, 1462019, 1, 1, 0, 700), +(9500120, 1462019, 1, 1, 0, 700), +(4230110, 1002170, 1, 1, 0, 700), +(9500120, 1002170, 1, 1, 0, 700), +(4230110, 1041067, 1, 1, 0, 700), +(9500120, 1041067, 1, 1, 0, 700), +(4230110, 1082083, 1, 1, 0, 700), +(9500120, 1082083, 1, 1, 0, 700), +(4230110, 1040082, 1, 1, 0, 700), +(9500120, 1040082, 1, 1, 0, 700), +(4230110, 1060071, 1, 1, 0, 700), +(9500120, 1060071, 1, 1, 0, 700), +(4230110, 1002181, 1, 1, 0, 700), +(9500120, 1002181, 1, 1, 0, 700), +(4230110, 1082195, 1, 1, 0, 700), +(9500120, 1082195, 1, 1, 0, 700), +(4230400, 4000178, 1, 1, 0, 200000), +(4230400, 2000003, 1, 1, 0, 40000), +(4230400, 2000002, 1, 1, 0, 40000), +(4230400, 2000004, 1, 1, 0, 40000), +(4230400, 2044001, 1, 1, 0, 750), +(4230400, 2382069, 1, 1, 0, 20000), +(4230400, 4004001, 1, 1, 0, 3000), +(4230400, 4020008, 1, 1, 0, 7000), +(4230400, 4020007, 1, 1, 0, 7000), +(4230400, 1032018, 1, 1, 0, 700), +(4230400, 1050047, 1, 1, 0, 700), +(4230400, 1072116, 1, 1, 0, 700), +(4230400, 1082071, 1, 1, 0, 700), +(4230400, 1041082, 1, 1, 0, 700), +(4230400, 1061081, 1, 1, 0, 700), +(4230400, 1002184, 1, 1, 0, 700), +(9400100, 2060003, 10, 50, 0, 10000), +(9400100, 2000006, 1, 1, 0, 40000), +(9400100, 2040515, 1, 1, 0, 750), +(9400100, 4020000, 1, 1, 0, 7000), +(9400100, 4010005, 1, 1, 0, 7000), +(9400100, 1072056, 1, 1, 0, 700), +(9400100, 1032007, 1, 1, 0, 700), +(9400100, 1332021, 1, 1, 0, 700), +(9400100, 1332029, 1, 1, 0, 700), +(9400100, 1402001, 1, 1, 0, 700), +(9400100, 1060079, 1, 1, 0, 700), +(9400100, 1051026, 1, 1, 0, 700), +(9400100, 1402001, 1, 1, 0, 700), +(9400100, 1060069, 1, 1, 0, 700), +(9400100, 1402001, 1, 1, 0, 700), +(9400100, 1072107, 1, 1, 0, 700), +(4230118, 4000119, 1, 1, 0, 200000), +(9300240, 4000119, 1, 1, 0, 200000), +(9300333, 4000119, 1, 1, 0, 200000), +(9500368, 4000119, 1, 1, 0, 200000), +(4230118, 4130002, 1, 1, 0, 3000), +(9300240, 4130002, 1, 1, 0, 3000), +(9300333, 4130002, 1, 1, 0, 3000), +(9500368, 4130002, 1, 1, 0, 3000), +(4230118, 4130006, 1, 1, 0, 3000), +(9300240, 4130006, 1, 1, 0, 3000), +(9300333, 4130006, 1, 1, 0, 3000), +(9500368, 4130006, 1, 1, 0, 3000), +(4230118, 2000002, 1, 1, 0, 40000), +(9300240, 2000002, 1, 1, 0, 40000), +(9300333, 2000002, 1, 1, 0, 40000), +(9500368, 2000002, 1, 1, 0, 40000), +(4230118, 2000004, 1, 1, 0, 40000), +(9300240, 2000004, 1, 1, 0, 40000), +(9300333, 2000004, 1, 1, 0, 40000), +(9500368, 2000004, 1, 1, 0, 40000), +(4230118, 2002007, 1, 1, 0, 10000), +(9300240, 2002007, 1, 1, 0, 10000), +(9300333, 2002007, 1, 1, 0, 10000), +(9500368, 2002007, 1, 1, 0, 10000), +(4230118, 2040802, 1, 1, 0, 750), +(9300240, 2040802, 1, 1, 0, 750), +(9300333, 2040802, 1, 1, 0, 750), +(9500368, 2040802, 1, 1, 0, 750), +(4230118, 2070004, 1, 1, 0, 400), +(9300240, 2070004, 1, 1, 0, 400), +(9300333, 2070004, 1, 1, 0, 400), +(9500368, 2070004, 1, 1, 0, 400), +(4230118, 4010002, 1, 1, 0, 7000), +(9300240, 4010002, 1, 1, 0, 7000), +(9300333, 4010002, 1, 1, 0, 7000), +(9500368, 4010002, 1, 1, 0, 7000), +(4230118, 4020006, 1, 1, 0, 7000), +(9300240, 4020006, 1, 1, 0, 7000), +(9300333, 4020006, 1, 1, 0, 7000), +(9500368, 4020006, 1, 1, 0, 7000), +(4230118, 4004001, 1, 1, 0, 3000), +(9300240, 4004001, 1, 1, 0, 3000), +(9300333, 4004001, 1, 1, 0, 3000), +(9500368, 4004001, 1, 1, 0, 3000), +(4230118, 1032012, 1, 1, 0, 700), +(9300240, 1032012, 1, 1, 0, 700), +(9300333, 1032012, 1, 1, 0, 700), +(9500368, 1032012, 1, 1, 0, 700), +(4230118, 1082024, 1, 1, 0, 700), +(9300240, 1082024, 1, 1, 0, 700), +(9300333, 1082024, 1, 1, 0, 700), +(9500368, 1082024, 1, 1, 0, 700), +(4230118, 1002024, 1, 1, 0, 700), +(9300240, 1002024, 1, 1, 0, 700), +(9300333, 1002024, 1, 1, 0, 700), +(9500368, 1002024, 1, 1, 0, 700), +(4230118, 1422005, 1, 1, 0, 700), +(9300240, 1422005, 1, 1, 0, 700), +(9300333, 1422005, 1, 1, 0, 700), +(9500368, 1422005, 1, 1, 0, 700), +(4230118, 1002155, 1, 1, 0, 700), +(9300240, 1002155, 1, 1, 0, 700), +(9300333, 1002155, 1, 1, 0, 700), +(9500368, 1002155, 1, 1, 0, 700), +(4230118, 1050038, 1, 1, 0, 700), +(9300240, 1050038, 1, 1, 0, 700), +(9300333, 1050038, 1, 1, 0, 700), +(9500368, 1050038, 1, 1, 0, 700), +(4230118, 1041068, 1, 1, 0, 700), +(9300240, 1041068, 1, 1, 0, 700), +(9300333, 1041068, 1, 1, 0, 700), +(9500368, 1041068, 1, 1, 0, 700), +(4230118, 1472021, 1, 1, 0, 700), +(9300240, 1472021, 1, 1, 0, 700), +(9300333, 1472021, 1, 1, 0, 700), +(9500368, 1472021, 1, 1, 0, 700), +(4230118, 1332003, 1, 1, 0, 700), +(9300240, 1332003, 1, 1, 0, 700), +(9300333, 1332003, 1, 1, 0, 700), +(9500368, 1332003, 1, 1, 0, 700), +(4230118, 1072300, 1, 1, 0, 700), +(9300240, 1072300, 1, 1, 0, 700), +(9300333, 1072300, 1, 1, 0, 700), +(9500368, 1072300, 1, 1, 0, 700), +(4230300, 4000169, 1, 1, 0, 200000), +(9300061, 4000169, 1, 1, 0, 200000), +(4230300, 4000021, 1, 1, 0, 200000), +(9300061, 4000021, 1, 1, 0, 200000), +(4230300, 2000002, 1, 1, 0, 40000), +(9300061, 2000002, 1, 1, 0, 40000), +(4230300, 2000003, 1, 1, 0, 40000), +(9300061, 2000003, 1, 1, 0, 40000), +(4230300, 2000004, 1, 1, 0, 40000), +(9300061, 2000004, 1, 1, 0, 40000), +(4230300, 4006000, 1, 1, 0, 7000), +(9300061, 4006000, 1, 1, 0, 7000), +(4230300, 2060000, 10, 50, 0, 10000), +(9300061, 2060000, 10, 50, 0, 10000), +(4230300, 2061000, 10, 50, 0, 10000), +(9300061, 2061000, 10, 50, 0, 10000), +(4230300, 2070002, 1, 1, 0, 400), +(9300061, 2070002, 1, 1, 0, 400), +(4230300, 2044202, 1, 1, 0, 750), +(9300061, 2044202, 1, 1, 0, 750), +(4230300, 2040705, 1, 1, 0, 750), +(9300061, 2040705, 1, 1, 0, 750), +(4230300, 2040707, 1, 1, 0, 750), +(9300061, 2040707, 1, 1, 0, 750), +(4230300, 2382068, 1, 1, 0, 20000), +(9300061, 2382068, 1, 1, 0, 20000), +(4230300, 4010004, 1, 1, 0, 7000), +(9300061, 4010004, 1, 1, 0, 7000), +(4230300, 4020005, 1, 1, 0, 7000), +(9300061, 4020005, 1, 1, 0, 7000), +(4230300, 4004001, 1, 1, 0, 3000), +(9300061, 4004001, 1, 1, 0, 3000), +(4230300, 1302016, 1, 1, 0, 700), +(9300061, 1302016, 1, 1, 0, 700), +(4230300, 1102001, 1, 1, 0, 700), +(9300061, 1102001, 1, 1, 0, 700), +(4230300, 1032011, 1, 1, 0, 700), +(9300061, 1032011, 1, 1, 0, 700), +(4230300, 1312007, 1, 1, 0, 700), +(9300061, 1312007, 1, 1, 0, 700), +(4230300, 1072112, 1, 1, 0, 700), +(9300061, 1072112, 1, 1, 0, 700), +(4230300, 1092014, 1, 1, 0, 700), +(9300061, 1092014, 1, 1, 0, 700), +(4230300, 1040040, 1, 1, 0, 700), +(9300061, 1040040, 1, 1, 0, 700), +(4230300, 1082072, 1, 1, 0, 700), +(9300061, 1082072, 1, 1, 0, 700), +(4230300, 1072087, 1, 1, 0, 700), +(9300061, 1072087, 1, 1, 0, 700), +(4230300, 1072109, 1, 1, 0, 700), +(9300061, 1072109, 1, 1, 0, 700), +(4230300, 1482006, 1, 1, 0, 700), +(9300061, 1482006, 1, 1, 0, 700), +(4230504, 4000279, 1, 1, 0, 200000), +(9300161, 4000279, 1, 1, 0, 200000), +(4230504, 4000281, 1, 1, 0, 200000), +(9300161, 4000281, 1, 1, 0, 200000), +(4230504, 4130002, 1, 1, 0, 3000), +(9300161, 4130002, 1, 1, 0, 3000), +(4230504, 4130013, 1, 1, 0, 3000), +(9300161, 4130013, 1, 1, 0, 3000), +(4230504, 2000002, 1, 1, 0, 40000), +(9300161, 2000002, 1, 4, 0, 40000), +(4230504, 2000003, 1, 1, 0, 40000), +(9300161, 2000003, 1, 4, 0, 40000), +(4230504, 2060000, 10, 50, 0, 10000), +(9300161, 2060000, 10, 50, 0, 10000), +(4230504, 2061000, 10, 50, 0, 10000), +(9300161, 2061000, 10, 50, 0, 10000), +(4230504, 2330002, 1, 1, 0, 400), +(9300161, 2330002, 1, 4, 0, 2500), +(4230504, 2040504, 1, 1, 0, 750), +(9300161, 2040504, 1, 4, 0, 10000), +(4230504, 2044310, 1, 1, 0, 750), +(9300161, 2044310, 1, 4, 0, 10000), +(4230504, 2044002, 1, 1, 0, 750), +(9300161, 2044002, 1, 4, 0, 10000), +(4230504, 4010002, 1, 1, 0, 7000), +(9300161, 4010002, 1, 1, 0, 7000), +(4230504, 4010004, 1, 1, 0, 7000), +(9300161, 4010004, 1, 1, 0, 7000), +(4230504, 4004000, 1, 1, 0, 3000), +(9300161, 4004000, 1, 1, 0, 3000), +(4230504, 1082010, 1, 1, 0, 700), +(9300161, 1082010, 1, 1, 0, 40000), +(4230504, 1002085, 1, 1, 0, 700), +(9300161, 1002085, 1, 1, 0, 40000), +(4230504, 1382001, 1, 1, 0, 700), +(9300161, 1382001, 1, 1, 0, 40000), +(4230504, 1041077, 1, 1, 0, 700), +(9300161, 1041077, 1, 1, 0, 40000), +(4230504, 1002631, 1, 1, 0, 700), +(9300161, 1002631, 1, 1, 0, 40000), +(4110301, 4000358, 1, 1, 0, 200000), +(9300143, 4000358, 1, 1, 0, 200000), +(9300252, 4000358, 1, 1, 0, 200000), +(9300254, 4000358, 1, 1, 0, 200000), +(4110301, 2000002, 1, 1, 0, 40000), +(9300143, 2000002, 1, 1, 0, 40000), +(9300252, 2000002, 1, 1, 0, 40000), +(9300254, 2000002, 1, 1, 0, 40000), +(4110301, 2000003, 1, 1, 0, 40000), +(9300143, 2000003, 1, 1, 0, 40000), +(9300252, 2000003, 1, 1, 0, 40000), +(9300254, 2000003, 1, 1, 0, 40000), +(4110301, 2060000, 10, 50, 0, 10000), +(9300143, 2060000, 10, 50, 0, 10000), +(9300252, 2060000, 10, 50, 0, 10000), +(9300254, 2060000, 10, 50, 0, 10000), +(4110301, 2061000, 10, 50, 0, 10000), +(9300143, 2061000, 10, 50, 0, 10000), +(9300252, 2061000, 10, 50, 0, 10000), +(9300254, 2061000, 10, 50, 0, 10000), +(4110301, 2040504, 1, 1, 0, 750), +(9300143, 2040504, 1, 1, 0, 750), +(9300252, 2040504, 1, 1, 0, 750), +(9300254, 2040504, 1, 1, 0, 750), +(4110301, 2044002, 1, 1, 0, 750), +(9300143, 2044002, 1, 1, 0, 750), +(9300252, 2044002, 1, 1, 0, 750), +(9300254, 2044002, 1, 1, 0, 750), +(4110301, 2044904, 1, 1, 0, 750), +(9300143, 2044904, 1, 1, 0, 750), +(9300252, 2044904, 1, 1, 0, 750), +(9300254, 2044904, 1, 1, 0, 750), +(4110301, 4010002, 1, 1, 0, 7000), +(9300143, 4010002, 1, 1, 0, 7000), +(9300252, 4010002, 1, 1, 0, 7000), +(9300254, 4010002, 1, 1, 0, 7000), +(4110301, 4010004, 1, 1, 0, 7000), +(9300143, 4010004, 1, 1, 0, 7000), +(9300252, 4010004, 1, 1, 0, 7000), +(9300254, 4010004, 1, 1, 0, 7000), +(4110301, 4004000, 1, 1, 0, 3000), +(9300143, 4004000, 1, 1, 0, 3000), +(9300252, 4004000, 1, 1, 0, 3000), +(9300254, 4004000, 1, 1, 0, 3000), +(4110301, 1002085, 1, 1, 0, 700), +(9300143, 1002085, 1, 1, 0, 700), +(9300252, 1002085, 1, 1, 0, 700), +(9300254, 1002085, 1, 1, 0, 700), +(4110301, 1082010, 1, 1, 0, 700), +(9300143, 1082010, 1, 1, 0, 700), +(9300252, 1082010, 1, 1, 0, 700), +(9300254, 1082010, 1, 1, 0, 700), +(4110301, 1382001, 1, 1, 0, 700), +(9300143, 1382001, 1, 1, 0, 700), +(9300252, 1382001, 1, 1, 0, 700), +(9300254, 1382001, 1, 1, 0, 700), +(4110301, 1041077, 1, 1, 0, 700), +(9300143, 1041077, 1, 1, 0, 700), +(9300252, 1041077, 1, 1, 0, 700), +(9300254, 1041077, 1, 1, 0, 700), +(4110301, 1052116, 1, 1, 0, 700), +(9300143, 1052116, 1, 1, 0, 700), +(9300252, 1052116, 1, 1, 0, 700), +(9300254, 1052116, 1, 1, 0, 700), +(4220000, 4000167, 1, 1, 0, 200000), +(4220001, 4000167, 1, 1, 0, 200000), +(9303014, 4000167, 1, 1, 0, 200000), +(4220000, 4000166, 1, 1, 0, 200000), +(4220001, 4000166, 1, 1, 0, 200000), +(9303014, 4000166, 1, 1, 0, 200000), +(4220000, 4032474, 1, 1, 0, 10000), +(4220001, 4032474, 1, 1, 0, 10000), +(9303014, 4032474, 1, 1, 0, 10000), +(4220000, 2000002, 1, 4, 0, 40000), +(4220001, 2000002, 1, 4, 0, 40000), +(9303014, 2000002, 1, 1, 0, 40000), +(4220000, 2000003, 1, 4, 0, 40000), +(4220001, 2000003, 1, 4, 0, 40000), +(9303014, 2000003, 1, 1, 0, 40000), +(4220000, 2049101, 1, 4, 0, 2500), +(4220001, 2049101, 1, 4, 0, 2500), +(9303014, 2049101, 1, 1, 0, 400), +(4220000, 2040517, 1, 4, 0, 10000), +(4220001, 2040517, 1, 4, 0, 10000), +(9303014, 2040517, 1, 1, 0, 750), +(4220000, 2040516, 1, 4, 0, 10000), +(4220001, 2040516, 1, 4, 0, 10000), +(9303014, 2040516, 1, 1, 0, 750), +(4220000, 2040320, 1, 4, 0, 10000), +(4220001, 2040320, 1, 4, 0, 10000), +(9303014, 2040320, 1, 1, 0, 750), +(4220000, 2040301, 1, 4, 0, 10000), +(4220001, 2040301, 1, 4, 0, 10000), +(9303014, 2040301, 1, 1, 0, 750), +(4220000, 2040705, 1, 4, 0, 10000), +(4220001, 2040705, 1, 4, 0, 10000), +(9303014, 2040705, 1, 1, 0, 750), +(4220000, 2040704, 1, 4, 0, 10000), +(4220001, 2040704, 1, 4, 0, 10000), +(9303014, 2040704, 1, 1, 0, 750), +(4220000, 2040805, 1, 4, 0, 10000), +(4220001, 2040805, 1, 4, 0, 10000), +(9303014, 2040805, 1, 1, 0, 750), +(4220000, 2040804, 1, 4, 0, 10000), +(4220001, 2040804, 1, 4, 0, 10000), +(9303014, 2040804, 1, 1, 0, 750), +(4220000, 2041008, 1, 4, 0, 10000), +(4220001, 2041008, 1, 4, 0, 10000), +(9303014, 2041008, 1, 1, 0, 750), +(4220000, 2041007, 1, 4, 0, 10000), +(4220001, 2041007, 1, 4, 0, 10000), +(9303014, 2041007, 1, 1, 0, 750), +(4220000, 2388030, 1, 4, 0, 20000), +(4220001, 2388030, 1, 4, 0, 20000), +(9303014, 2388030, 1, 1, 0, 20000), +(4220000, 4010003, 1, 1, 0, 7000), +(4220001, 4010003, 1, 1, 0, 7000), +(9303014, 4010003, 1, 1, 0, 7000), +(4220000, 4010002, 1, 1, 0, 7000), +(4220001, 4010002, 1, 1, 0, 7000), +(9303014, 4010002, 1, 1, 0, 7000), +(4220000, 1442018, 1, 1, 0, 40000), +(4220001, 1442018, 1, 1, 0, 40000), +(9303014, 1442018, 1, 1, 0, 700), +(4220000, 1302010, 1, 1, 0, 40000), +(4220001, 1302010, 1, 1, 0, 40000), +(9303014, 1302010, 1, 1, 0, 700), +(4220000, 1312008, 1, 1, 0, 40000), +(4220001, 1312008, 1, 1, 0, 40000), +(9303014, 1312008, 1, 1, 0, 700), +(4220000, 1412003, 1, 1, 0, 40000), +(4220001, 1412003, 1, 1, 0, 40000), +(9303014, 1412003, 1, 1, 0, 700), +(4220000, 1322017, 1, 1, 0, 40000), +(4220001, 1322017, 1, 1, 0, 40000), +(9303014, 1322017, 1, 1, 0, 700), +(4220000, 1422005, 1, 1, 0, 40000), +(4220001, 1422005, 1, 1, 0, 40000), +(9303014, 1422005, 1, 1, 0, 700), +(4220000, 1442005, 1, 1, 0, 40000), +(4220001, 1442005, 1, 1, 0, 40000), +(9303014, 1442005, 1, 1, 0, 700), +(4220000, 1372007, 1, 1, 0, 40000), +(4220001, 1372007, 1, 1, 0, 40000), +(9303014, 1372007, 1, 1, 0, 700), +(4220000, 1382006, 1, 1, 0, 40000), +(4220001, 1382006, 1, 1, 0, 40000), +(9303014, 1382006, 1, 1, 0, 700), +(4220000, 1452008, 1, 1, 0, 40000), +(4220001, 1452008, 1, 1, 0, 40000), +(9303014, 1452008, 1, 1, 0, 700), +(4220000, 1462007, 1, 1, 0, 40000), +(4220001, 1462007, 1, 1, 0, 40000), +(9303014, 1462007, 1, 1, 0, 700), +(4220000, 1472020, 1, 1, 0, 40000), +(4220001, 1472020, 1, 1, 0, 40000), +(9303014, 1472020, 1, 1, 0, 700), +(4220000, 1332016, 1, 1, 0, 40000), +(4220001, 1332016, 1, 1, 0, 40000), +(9303014, 1332016, 1, 1, 0, 700), +(4220000, 1332003, 1, 1, 0, 40000), +(4220001, 1332003, 1, 1, 0, 40000), +(9303014, 1332003, 1, 1, 0, 700), +(4220000, 1482007, 1, 1, 0, 40000), +(4220001, 1482007, 1, 1, 0, 40000), +(9303014, 1482007, 1, 1, 0, 700), +(4220000, 1492007, 1, 1, 0, 40000), +(4220001, 1492007, 1, 1, 0, 40000), +(9303014, 1492007, 1, 1, 0, 700), +(9420527, 4000465, 1, 1, 0, 200000), +(9420527, 4131008, 1, 1, 0, 3000), +(9420527, 2060001, 10, 50, 0, 10000), +(9420527, 2061001, 10, 50, 0, 10000), +(9420527, 2000006, 1, 1, 0, 40000), +(9420527, 2002010, 1, 1, 0, 10000), +(9420527, 2020028, 1, 1, 0, 3000), +(9420527, 4010000, 1, 1, 0, 7000), +(9420527, 4020001, 1, 1, 0, 7000), +(9420527, 1072055, 1, 1, 0, 700), +(9420527, 1072134, 1, 1, 0, 700), +(9420527, 1050046, 1, 1, 0, 700), +(9420527, 1072124, 1, 1, 0, 700), +(9420527, 1492000, 1, 1, 0, 700), +(9420527, 1052110, 1, 1, 0, 700), +(4300008, 2000001, 1, 1, 0, 40000), +(4300008, 2000003, 1, 1, 0, 40000), +(4300008, 2000006, 1, 1, 0, 40000), +(4300008, 2022003, 1, 1, 0, 3000), +(4300008, 2000004, 1, 1, 0, 40000), +(4300008, 2040004, 1, 1, 0, 750), +(4300008, 2040501, 1, 1, 0, 750), +(4300008, 2040504, 1, 1, 0, 750), +(4300008, 2040801, 1, 1, 0, 750), +(4300008, 2041007, 1, 1, 0, 750), +(4300008, 2041045, 1, 1, 0, 750), +(4300008, 2049206, 1, 1, 0, 400), +(4300008, 2049208, 1, 1, 0, 400), +(4300008, 2049210, 1, 1, 0, 400), +(4300008, 4020008, 1, 1, 0, 7000), +(4300008, 4004000, 1, 1, 0, 3000), +(4300008, 1302009, 1, 1, 0, 700), +(4300008, 1312007, 1, 1, 0, 700), +(4300008, 1322016, 1, 1, 0, 700), +(4300008, 1402007, 1, 1, 0, 700), +(4300008, 1412005, 1, 1, 0, 700), +(4300008, 1422007, 1, 1, 0, 700), +(4300008, 1432005, 1, 1, 0, 700), +(4300008, 1442009, 1, 1, 0, 700), +(4300008, 1382019, 1, 1, 0, 700), +(4300008, 1452007, 1, 1, 0, 700), +(4300008, 1332011, 1, 1, 0, 700), +(4300008, 1332031, 1, 1, 0, 700), +(4300008, 1472014, 1, 1, 0, 700), +(4300008, 1472015, 1, 1, 0, 700), +(4300008, 1472016, 1, 1, 0, 700), +(4300008, 1472017, 1, 1, 0, 700), +(4300008, 1482006, 1, 1, 0, 700), +(4300008, 1492006, 1, 1, 0, 700), +(4230503, 4000280, 1, 1, 0, 200000), +(9300160, 4000280, 1, 1, 0, 200000), +(4230503, 4000281, 1, 1, 0, 200000), +(9300160, 4000281, 1, 1, 0, 200000), +(4230503, 4130001, 1, 1, 0, 3000), +(9300160, 4130001, 1, 1, 0, 3000), +(4230503, 4130007, 1, 1, 0, 3000), +(9300160, 4130007, 1, 1, 0, 3000), +(4230503, 2000002, 1, 1, 0, 40000), +(9300160, 2000002, 1, 4, 0, 40000), +(4230503, 2000003, 1, 1, 0, 40000), +(9300160, 2000003, 1, 4, 0, 40000), +(4230503, 2060000, 10, 50, 0, 10000), +(9300160, 2060000, 10, 50, 0, 10000), +(4230503, 2061000, 10, 50, 0, 10000), +(9300160, 2061000, 10, 50, 0, 10000), +(4230503, 2040705, 1, 1, 0, 750), +(9300160, 2040705, 1, 4, 0, 10000), +(4230503, 4020005, 1, 1, 0, 7000), +(9300160, 4020005, 1, 1, 0, 7000), +(4230503, 4010004, 1, 1, 0, 7000), +(9300160, 4010004, 1, 1, 0, 7000), +(4230503, 4004001, 1, 1, 0, 3000), +(9300160, 4004001, 1, 1, 0, 3000), +(4230503, 1102001, 1, 1, 0, 700), +(9300160, 1102001, 1, 1, 0, 40000), +(4230503, 1002081, 1, 1, 0, 700), +(9300160, 1002081, 1, 1, 0, 40000), +(4230503, 1040089, 1, 1, 0, 700), +(9300160, 1040089, 1, 1, 0, 40000), +(4230503, 1060078, 1, 1, 0, 700), +(9300160, 1060078, 1, 1, 0, 40000), +(4230503, 1050052, 1, 1, 0, 700), +(9300160, 1050052, 1, 1, 0, 40000), +(4230503, 1492006, 1, 1, 0, 700), +(9300160, 1492006, 1, 1, 0, 40000), +(4130101, 4000045, 1, 1, 0, 200000), +(4130101, 4030012, 1, 1, 0, 10000), +(4130101, 2000002, 1, 1, 0, 40000), +(4130101, 2000003, 1, 1, 0, 40000), +(4130101, 2000004, 1, 1, 0, 40000), +(4130101, 2040805, 1, 1, 0, 750), +(4130101, 2041013, 1, 1, 0, 750), +(4130101, 2383001, 1, 1, 0, 20000), +(4130101, 4010002, 1, 1, 0, 7000), +(4130101, 4020001, 1, 1, 0, 7000), +(4130101, 1322021, 1, 1, 0, 700), +(4130101, 1322026, 1, 1, 0, 700), +(4130101, 1442016, 1, 1, 0, 700), +(4130101, 1442027, 1, 1, 0, 700), +(4130101, 1442028, 1, 1, 0, 700), +(4130101, 1041089, 1, 1, 0, 700), +(4130101, 1061088, 1, 1, 0, 700), +(4130101, 1092004, 1, 1, 0, 700), +(4130101, 1002152, 1, 1, 0, 700), +(4130101, 1072142, 1, 1, 0, 700), +(4130101, 1041081, 1, 1, 0, 700), +(4130101, 1061080, 1, 1, 0, 700), +(4130101, 1072124, 1, 1, 0, 700), +(4130101, 1472016, 1, 1, 0, 700), +(4130101, 1002183, 1, 1, 0, 700), +(4130101, 1041079, 1, 1, 0, 700), +(4130101, 1061078, 1, 1, 0, 700), +(4130101, 1072303, 1, 1, 0, 700), +(4230115, 4000115, 1, 1, 0, 200000), +(9300231, 4000115, 1, 1, 0, 200000), +(4230115, 4031992, 1, 1, 0, 7000), +(9300231, 4031992, 1, 1, 0, 7000), +(4230115, 4030012, 1, 1, 0, 10000), +(9300231, 4030012, 1, 1, 0, 10000), +(4230115, 4130012, 1, 1, 0, 3000), +(9300231, 4130012, 1, 1, 0, 3000), +(4230115, 2000002, 1, 1, 0, 40000), +(9300231, 2000002, 1, 1, 0, 40000), +(4230115, 2000004, 1, 1, 0, 40000), +(9300231, 2000004, 1, 1, 0, 40000), +(4230115, 4006001, 1, 1, 0, 7000), +(9300231, 4006001, 1, 1, 0, 7000), +(4230115, 2002010, 1, 1, 0, 10000), +(9300231, 2002010, 1, 1, 0, 10000), +(4230115, 2060000, 10, 50, 0, 10000), +(9300231, 2060000, 10, 50, 0, 10000), +(4230115, 2061000, 10, 50, 0, 10000), +(9300231, 2061000, 10, 50, 0, 10000), +(4230115, 2044102, 1, 1, 0, 750), +(9300231, 2044102, 1, 1, 0, 750), +(4230115, 2043802, 1, 1, 0, 750), +(9300231, 2043802, 1, 1, 0, 750), +(4230115, 2044216, 1, 1, 0, 750), +(9300231, 2044216, 1, 1, 0, 750), +(4230115, 2040030, 1, 1, 0, 750), +(9300231, 2040030, 1, 1, 0, 750), +(4230115, 2040617, 1, 1, 0, 750), +(9300231, 2040617, 1, 1, 0, 750), +(4230115, 2070004, 1, 1, 0, 400), +(9300231, 2070004, 1, 1, 0, 400), +(4230115, 2383002, 1, 1, 0, 20000), +(9300231, 2383002, 1, 1, 0, 20000), +(4230115, 4020000, 1, 1, 0, 7000), +(9300231, 4020000, 1, 1, 0, 7000), +(4230115, 4020006, 1, 1, 0, 7000), +(9300231, 4020006, 1, 1, 0, 7000), +(4230115, 4004003, 1, 1, 0, 3000), +(9300231, 4004003, 1, 1, 0, 3000), +(4230115, 1302030, 1, 1, 0, 700), +(9300231, 1302030, 1, 1, 0, 700), +(4230115, 1302020, 1, 1, 0, 700), +(9300231, 1302020, 1, 1, 0, 700), +(4230115, 1422005, 1, 1, 0, 700), +(9300231, 1422005, 1, 1, 0, 700), +(4230115, 1041088, 1, 1, 0, 700), +(9300231, 1041088, 1, 1, 0, 700), +(4230115, 1061087, 1, 1, 0, 700), +(9300231, 1061087, 1, 1, 0, 700), +(4230115, 1060075, 1, 1, 0, 700), +(9300231, 1060075, 1, 1, 0, 700), +(4230115, 1050049, 1, 1, 0, 700), +(9300231, 1050049, 1, 1, 0, 700), +(4230115, 1050045, 1, 1, 0, 700), +(9300231, 1050045, 1, 1, 0, 700), +(4230115, 1072141, 1, 1, 0, 700), +(9300231, 1072141, 1, 1, 0, 700), +(4230115, 1372007, 1, 1, 0, 700), +(9300231, 1372007, 1, 1, 0, 700), +(4230115, 1082069, 1, 1, 0, 700), +(9300231, 1082069, 1, 1, 0, 700), +(4230115, 1040079, 1, 1, 0, 700), +(9300231, 1040079, 1, 1, 0, 700), +(4230115, 1060069, 1, 1, 0, 700), +(9300231, 1060069, 1, 1, 0, 700), +(4230115, 1072118, 1, 1, 0, 700), +(9300231, 1072118, 1, 1, 0, 700), +(4230115, 1472021, 1, 1, 0, 700), +(9300231, 1472021, 1, 1, 0, 700), +(4230115, 1082065, 1, 1, 0, 700), +(9300231, 1082065, 1, 1, 0, 700), +(4230115, 1482007, 1, 1, 0, 700), +(9300231, 1482007, 1, 1, 0, 700), +(4250001, 4000438, 1, 1, 0, 200000), +(4250001, 4130014, 1, 1, 0, 3000), +(4250001, 2000002, 1, 1, 0, 40000), +(4250001, 2000003, 1, 1, 0, 40000), +(4250001, 2383056, 1, 1, 0, 20000), +(4250001, 4010004, 1, 1, 0, 7000), +(4250001, 4020005, 1, 1, 0, 7000), +(4250001, 1442005, 1, 1, 0, 700), +(4250001, 1002215, 1, 1, 0, 700), +(4250001, 1051038, 1, 1, 0, 700), +(4250001, 1082066, 1, 1, 0, 700), +(4250001, 1072303, 1, 1, 0, 700), +(4300009, 4000528, 1, 1, 0, 200000), +(4300009, 2000001, 1, 1, 0, 40000), +(4300009, 2000003, 1, 1, 0, 40000), +(4300009, 2000006, 1, 1, 0, 40000), +(4300009, 2022003, 1, 1, 0, 3000), +(4300009, 2000004, 1, 1, 0, 40000), +(4300009, 2040004, 1, 1, 0, 750), +(4300009, 2040501, 1, 1, 0, 750), +(4300009, 2040504, 1, 1, 0, 750), +(4300009, 2040801, 1, 1, 0, 750), +(4300009, 2041007, 1, 1, 0, 750), +(4300009, 2041045, 1, 1, 0, 750), +(4300009, 2049206, 1, 1, 0, 400), +(4300009, 2049208, 1, 1, 0, 400), +(4300009, 2049210, 1, 1, 0, 400), +(4300009, 4020008, 1, 1, 0, 7000), +(4300009, 4004000, 1, 1, 0, 3000), +(4300009, 1302009, 1, 1, 0, 700), +(4300009, 1312007, 1, 1, 0, 700), +(4300009, 1322016, 1, 1, 0, 700), +(4300009, 1402007, 1, 1, 0, 700), +(4300009, 1412005, 1, 1, 0, 700), +(4300009, 1422007, 1, 1, 0, 700), +(4300009, 1432005, 1, 1, 0, 700), +(4300009, 1442009, 1, 1, 0, 700), +(4300009, 1382019, 1, 1, 0, 700), +(4300009, 1452007, 1, 1, 0, 700), +(4300009, 1332011, 1, 1, 0, 700), +(4300009, 1332031, 1, 1, 0, 700), +(4300009, 1472014, 1, 1, 0, 700), +(4300009, 1472015, 1, 1, 0, 700), +(4300009, 1472016, 1, 1, 0, 700), +(4300009, 1472017, 1, 1, 0, 700), +(4300009, 1482006, 1, 1, 0, 700), +(4300009, 1492006, 1, 1, 0, 700), +(4230121, 4030012, 1, 1, 0, 10000), +(9300336, 4030012, 1, 1, 0, 10000), +(9300337, 4030012, 1, 1, 0, 10000), +(9500370, 4030012, 1, 1, 0, 10000), +(4230121, 4131012, 1, 1, 0, 3000), +(9300336, 4131012, 1, 1, 0, 3000), +(9300337, 4131012, 1, 1, 0, 3000), +(9500370, 4131012, 1, 1, 0, 3000), +(4230121, 2000002, 1, 1, 0, 40000), +(9300336, 2000002, 1, 1, 0, 40000), +(9300337, 2000002, 1, 1, 0, 40000), +(9500370, 2000002, 1, 1, 0, 40000), +(4230121, 2000004, 1, 1, 0, 40000), +(9300336, 2000004, 1, 1, 0, 40000), +(9300337, 2000004, 1, 1, 0, 40000), +(9500370, 2000004, 1, 1, 0, 40000), +(4230121, 2002008, 1, 1, 0, 10000), +(9300336, 2002008, 1, 1, 0, 10000), +(9300337, 2002008, 1, 1, 0, 10000), +(9500370, 2002008, 1, 1, 0, 10000), +(4230121, 2043802, 1, 1, 0, 750), +(9300336, 2043802, 1, 1, 0, 750), +(9300337, 2043802, 1, 1, 0, 750), +(9500370, 2043802, 1, 1, 0, 750), +(4230121, 2383000, 1, 1, 0, 20000), +(9300336, 2383000, 1, 1, 0, 20000), +(9300337, 2383000, 1, 1, 0, 20000), +(9500370, 2383000, 1, 1, 0, 20000), +(4230121, 4020005, 1, 1, 0, 7000), +(9300336, 4020005, 1, 1, 0, 7000), +(9300337, 4020005, 1, 1, 0, 7000), +(9500370, 4020005, 1, 1, 0, 7000), +(4230121, 4020004, 1, 1, 0, 7000), +(9300336, 4020004, 1, 1, 0, 7000), +(9300337, 4020004, 1, 1, 0, 7000), +(9500370, 4020004, 1, 1, 0, 7000), +(4230121, 4004000, 1, 1, 0, 3000), +(9300336, 4004000, 1, 1, 0, 3000), +(9300337, 4004000, 1, 1, 0, 3000), +(9500370, 4004000, 1, 1, 0, 3000), +(4230121, 1442016, 1, 1, 0, 700), +(9300336, 1442016, 1, 1, 0, 700), +(9300337, 1442016, 1, 1, 0, 700), +(9500370, 1442016, 1, 1, 0, 700), +(4230121, 1040089, 1, 1, 0, 700), +(9300336, 1040089, 1, 1, 0, 700), +(9300337, 1040089, 1, 1, 0, 700), +(9500370, 1040089, 1, 1, 0, 700), +(4230121, 1060078, 1, 1, 0, 700), +(9300336, 1060078, 1, 1, 0, 700), +(9300337, 1060078, 1, 1, 0, 700), +(9500370, 1060078, 1, 1, 0, 700), +(4230121, 1412003, 1, 1, 0, 700), +(9300336, 1412003, 1, 1, 0, 700), +(9300337, 1412003, 1, 1, 0, 700), +(9500370, 1412003, 1, 1, 0, 700), +(4230121, 1051015, 1, 1, 0, 700), +(9300336, 1051015, 1, 1, 0, 700), +(9300337, 1051015, 1, 1, 0, 700), +(9500370, 1051015, 1, 1, 0, 700), +(4230121, 1002155, 1, 1, 0, 700), +(9300336, 1002155, 1, 1, 0, 700), +(9300337, 1002155, 1, 1, 0, 700), +(9500370, 1002155, 1, 1, 0, 700), +(4230121, 1051024, 1, 1, 0, 700), +(9300336, 1051024, 1, 1, 0, 700), +(9300337, 1051024, 1, 1, 0, 700), +(9500370, 1051024, 1, 1, 0, 700), +(4230121, 1372007, 1, 1, 0, 700), +(9300336, 1372007, 1, 1, 0, 700), +(9300337, 1372007, 1, 1, 0, 700), +(9500370, 1372007, 1, 1, 0, 700), +(4230121, 1041053, 1, 1, 0, 700), +(9300336, 1041053, 1, 1, 0, 700), +(9300337, 1041053, 1, 1, 0, 700), +(9500370, 1041053, 1, 1, 0, 700), +(4230121, 1061049, 1, 1, 0, 700), +(9300336, 1061049, 1, 1, 0, 700), +(9300337, 1061049, 1, 1, 0, 700), +(9500370, 1061049, 1, 1, 0, 700), +(4230121, 1082072, 1, 1, 0, 700), +(9300336, 1082072, 1, 1, 0, 700), +(9300337, 1082072, 1, 1, 0, 700), +(9500370, 1082072, 1, 1, 0, 700), +(4230121, 1452008, 1, 1, 0, 700), +(9300336, 1452008, 1, 1, 0, 700), +(9300337, 1452008, 1, 1, 0, 700), +(9500370, 1452008, 1, 1, 0, 700), +(4230121, 1082047, 1, 1, 0, 700), +(9300336, 1082047, 1, 1, 0, 700), +(9300337, 1082047, 1, 1, 0, 700), +(9500370, 1082047, 1, 1, 0, 700), +(4230121, 1041077, 1, 1, 0, 700), +(9300336, 1041077, 1, 1, 0, 700), +(9300337, 1041077, 1, 1, 0, 700), +(9500370, 1041077, 1, 1, 0, 700), +(4230121, 1061076, 1, 1, 0, 700), +(9300336, 1061076, 1, 1, 0, 700), +(9300337, 1061076, 1, 1, 0, 700), +(9500370, 1061076, 1, 1, 0, 700), +(4230121, 1002184, 1, 1, 0, 700), +(9300336, 1002184, 1, 1, 0, 700), +(9300337, 1002184, 1, 1, 0, 700), +(9500370, 1002184, 1, 1, 0, 700), +(4230121, 1082198, 1, 1, 0, 700), +(9300336, 1082198, 1, 1, 0, 700), +(9300337, 1082198, 1, 1, 0, 700), +(9500370, 1082198, 1, 1, 0, 700), +(4130102, 4000062, 1, 1, 0, 200000), +(4130104, 4000062, 1, 1, 0, 200000), +(4130102, 2000002, 1, 1, 0, 40000), +(4130104, 2000002, 1, 1, 0, 40000), +(4130102, 2000003, 1, 1, 0, 40000), +(4130104, 2000003, 1, 1, 0, 40000), +(4130102, 2000004, 1, 1, 0, 40000), +(4130104, 2000004, 1, 1, 0, 40000), +(4130102, 2041014, 1, 1, 0, 750), +(4130104, 2041014, 1, 1, 0, 750), +(4130102, 2044201, 1, 1, 0, 750), +(4130104, 2044201, 1, 1, 0, 750), +(4130102, 4006001, 1, 1, 0, 7000), +(4130104, 4006001, 1, 1, 0, 7000), +(4130102, 2383003, 1, 1, 0, 20000), +(4130104, 2383003, 1, 1, 0, 20000), +(4130102, 4010003, 1, 1, 0, 7000), +(4130104, 4010003, 1, 1, 0, 7000), +(4130102, 4020006, 1, 1, 0, 7000), +(4130104, 4020006, 1, 1, 0, 7000), +(4130102, 4004000, 1, 1, 0, 3000), +(4130104, 4004000, 1, 1, 0, 3000), +(4130102, 4004004, 1, 1, 0, 3000), +(4130104, 4004004, 1, 1, 0, 3000), +(4130102, 1302013, 1, 1, 0, 700), +(4130104, 1302013, 1, 1, 0, 700), +(4130102, 1041087, 1, 1, 0, 700), +(4130104, 1041087, 1, 1, 0, 700), +(4130102, 1061086, 1, 1, 0, 700), +(4130104, 1061086, 1, 1, 0, 700), +(4130102, 1002092, 1, 1, 0, 700), +(4130104, 1002092, 1, 1, 0, 700), +(4130102, 1051027, 1, 1, 0, 700), +(4130104, 1051027, 1, 1, 0, 700), +(4130102, 1082063, 1, 1, 0, 700), +(4130104, 1082063, 1, 1, 0, 700), +(4130102, 1072110, 1, 1, 0, 700), +(4130104, 1072110, 1, 1, 0, 700), +(4130102, 1040096, 1, 1, 0, 700), +(4130104, 1040096, 1, 1, 0, 700), +(4130102, 1060085, 1, 1, 0, 700), +(4130104, 1060085, 1, 1, 0, 700), +(4130102, 1060084, 1, 1, 0, 700), +(4130104, 1060084, 1, 1, 0, 700), +(4130103, 4030012, 1, 1, 0, 10000), +(9300136, 4030012, 1, 1, 0, 10000), +(9303006, 4030012, 1, 1, 0, 10000), +(4130103, 2000002, 1, 4, 0, 40000), +(9300136, 2000002, 1, 4, 0, 40000), +(9303006, 2000002, 1, 1, 0, 40000), +(4130103, 2000004, 1, 4, 0, 40000), +(9300136, 2000004, 1, 4, 0, 40000), +(9303006, 2000004, 1, 1, 0, 40000), +(4130103, 4006000, 1, 1, 0, 7000), +(9300136, 4006000, 1, 1, 0, 7000), +(9303006, 4006000, 1, 1, 0, 7000), +(4130103, 2383004, 1, 4, 0, 20000), +(9300136, 2383004, 1, 4, 0, 20000), +(9303006, 2383004, 1, 1, 0, 20000), +(4130103, 4005002, 1, 1, 0, 7000), +(9300136, 4005002, 1, 1, 0, 7000), +(9303006, 4005002, 1, 1, 0, 7000), +(4130103, 4004002, 1, 1, 0, 3000), +(9300136, 4004002, 1, 1, 0, 3000), +(9303006, 4004002, 1, 1, 0, 3000), +(4130103, 4020008, 1, 1, 0, 7000), +(9300136, 4020008, 1, 1, 0, 7000), +(9303006, 4020008, 1, 1, 0, 7000), +(4130103, 1312008, 1, 1, 0, 40000), +(9300136, 1312008, 1, 1, 0, 40000), +(9303006, 1312008, 1, 1, 0, 700), +(4130103, 1442009, 1, 1, 0, 40000), +(9300136, 1442009, 1, 1, 0, 40000), +(9303006, 1442009, 1, 1, 0, 700), +(4130103, 1372012, 1, 1, 0, 40000), +(9300136, 1372012, 1, 1, 0, 40000), +(9303006, 1372012, 1, 1, 0, 700), +(4130103, 1372007, 1, 1, 0, 40000), +(9300136, 1372007, 1, 1, 0, 40000), +(9303006, 1372007, 1, 1, 0, 700), +(4130103, 1072140, 1, 1, 0, 40000), +(9300136, 1072140, 1, 1, 0, 40000), +(9303006, 1072140, 1, 1, 0, 700), +(4130103, 1082071, 1, 1, 0, 40000), +(9300136, 1082071, 1, 1, 0, 40000), +(9303006, 1082071, 1, 1, 0, 700), +(4130103, 1462006, 1, 1, 0, 40000), +(9300136, 1462006, 1, 1, 0, 40000), +(9303006, 1462006, 1, 1, 0, 700), +(4130103, 1041080, 1, 1, 0, 40000), +(9300136, 1041080, 1, 1, 0, 40000), +(9303006, 1041080, 1, 1, 0, 700), +(4130103, 1472013, 1, 1, 0, 40000), +(9300136, 1472013, 1, 1, 0, 40000), +(9303006, 1472013, 1, 1, 0, 700), +(4130103, 1072129, 1, 1, 0, 40000), +(9300136, 1072129, 1, 1, 0, 40000), +(9303006, 1072129, 1, 1, 0, 700), +(4130103, 1040063, 1, 1, 0, 40000), +(9300136, 1040063, 1, 1, 0, 40000), +(9303006, 1040063, 1, 1, 0, 700), +(4130103, 1472019, 1, 1, 0, 40000), +(9300136, 1472019, 1, 1, 0, 40000), +(9303006, 1472019, 1, 1, 0, 700), +(4230126, 4000205, 1, 1, 0, 200000), +(4230126, 2000002, 1, 1, 0, 40000), +(4230126, 2000003, 1, 1, 0, 40000), +(4230126, 2000004, 1, 1, 0, 40000), +(4230126, 4006000, 1, 1, 0, 7000), +(4230126, 2044201, 1, 1, 0, 750), +(4230126, 2040705, 1, 1, 0, 750), +(4230126, 4010003, 1, 1, 0, 7000), +(4230126, 4020006, 1, 1, 0, 7000), +(4230126, 4020003, 1, 1, 0, 7000), +(4230126, 1041084, 1, 1, 0, 700), +(4230126, 1082010, 1, 1, 0, 700), +(4230126, 1082059, 1, 1, 0, 700), +(4230126, 1050048, 1, 1, 0, 700), +(4230126, 1051032, 1, 1, 0, 700), +(4230126, 1041082, 1, 1, 0, 700), +(4230126, 1082089, 1, 1, 0, 700), +(4230126, 1041079, 1, 1, 0, 700), +(4230126, 1082092, 1, 1, 0, 700), +(4230126, 1002631, 1, 1, 0, 700), +(9400101, 2061003, 10, 50, 0, 10000), +(9400101, 2000006, 1, 1, 0, 40000), +(9400101, 2040513, 1, 1, 0, 750), +(9400101, 2041037, 1, 1, 0, 750), +(9400101, 2041017, 1, 1, 0, 750), +(9400101, 2040813, 1, 1, 0, 750), +(9400101, 4010001, 1, 1, 0, 7000), +(9400101, 4020003, 1, 1, 0, 7000), +(9400101, 1322012, 1, 1, 0, 700), +(9400101, 1072063, 1, 1, 0, 700), +(9400101, 1302010, 1, 1, 0, 700), +(9400101, 1322017, 1, 1, 0, 700), +(9400101, 1002047, 1, 1, 0, 700), +(9400101, 1050037, 1, 1, 0, 700), +(9400101, 1002183, 1, 1, 0, 700), +(9400101, 1040061, 1, 1, 0, 700), +(9400101, 1061056, 1, 1, 0, 700), +(4230505, 4000291, 1, 1, 0, 200000), +(4230505, 4030012, 1, 1, 0, 10000), +(4230505, 4130012, 1, 1, 0, 3000), +(4230505, 2000002, 1, 1, 0, 40000), +(4230505, 2000003, 1, 1, 0, 40000), +(4230505, 4006001, 1, 1, 0, 7000), +(4230505, 2383006, 1, 1, 0, 20000), +(4230505, 4020000, 1, 1, 0, 7000), +(4230505, 4020006, 1, 1, 0, 7000), +(4230505, 4004002, 1, 1, 0, 3000), +(4230505, 1040089, 1, 1, 0, 700), +(4230505, 1050045, 1, 1, 0, 700), +(4230505, 1002215, 1, 1, 0, 700), +(4230505, 1372007, 1, 1, 0, 700), +(4230505, 1002212, 1, 1, 0, 700), +(4230505, 1052116, 1, 1, 0, 700), +(9300255, 4000359, 1, 1, 0, 200000), +(9300255, 4030012, 1, 1, 0, 10000), +(9300255, 4130012, 1, 1, 0, 3000), +(9300255, 2000002, 1, 1, 0, 40000), +(9300255, 2000003, 1, 1, 0, 40000), +(9300255, 4006001, 1, 1, 0, 7000), +(9300255, 2044102, 1, 1, 0, 750), +(9300255, 2040002, 1, 1, 0, 750), +(9300255, 2383007, 1, 1, 0, 20000), +(9300255, 4020000, 1, 1, 0, 7000), +(9300255, 4020006, 1, 1, 0, 7000), +(9300255, 4004002, 1, 1, 0, 3000), +(9300255, 1040089, 1, 1, 0, 700), +(9300255, 1372007, 1, 1, 0, 700), +(9300255, 1002215, 1, 1, 0, 700), +(9300255, 1050045, 1, 1, 0, 700), +(9420528, 4000466, 1, 1, 0, 200000), +(9420528, 4131008, 1, 1, 0, 3000), +(9420528, 2000010, 1, 1, 0, 40000), +(9420528, 2020006, 1, 1, 0, 3000), +(9420528, 2050004, 1, 1, 0, 3000), +(9420528, 2040516, 1, 1, 0, 750), +(9420528, 2044501, 1, 1, 0, 750), +(9420528, 2040704, 1, 1, 0, 750), +(9420528, 2330001, 1, 1, 0, 400), +(9420528, 4006000, 1, 1, 0, 7000), +(9420528, 4020002, 1, 1, 0, 7000), +(9420528, 4004001, 1, 1, 0, 3000), +(9420528, 4010001, 1, 1, 0, 7000), +(9420528, 4010000, 1, 1, 0, 7000), +(9420528, 1032018, 1, 1, 0, 700), +(9420528, 1302016, 1, 1, 0, 700), +(9420528, 1102003, 1, 1, 0, 700), +(9420528, 1060078, 1, 1, 0, 700), +(9420528, 1322017, 1, 1, 0, 700), +(9420528, 1332016, 1, 1, 0, 700), +(9420528, 1072134, 1, 1, 0, 700), +(9420528, 1002024, 1, 1, 0, 700), +(9420528, 1372012, 1, 1, 0, 700), +(9420528, 1082050, 1, 1, 0, 700), +(9420528, 1332016, 1, 1, 0, 700), +(9420528, 1072300, 1, 1, 0, 700), +(9420528, 1002628, 1, 1, 0, 700), +(9420528, 1052113, 1, 1, 0, 700), +(9420528, 1072285, 1, 1, 0, 700), +(9420528, 1082195, 1, 1, 0, 700), +(4300010, 4000529, 1, 1, 0, 200000), +(4300014, 4000529, 1, 1, 0, 200000), +(4300010, 2000001, 1, 1, 0, 40000), +(4300014, 2000001, 1, 1, 0, 40000), +(4300010, 2000003, 1, 1, 0, 40000), +(4300014, 2000003, 1, 1, 0, 40000), +(4300010, 2000006, 1, 1, 0, 40000), +(4300014, 2000006, 1, 1, 0, 40000), +(4300010, 2022003, 1, 1, 0, 3000), +(4300014, 2022003, 1, 1, 0, 3000), +(4300010, 2000004, 1, 1, 0, 40000), +(4300014, 2000004, 1, 1, 0, 40000), +(4300010, 2040004, 1, 1, 0, 750), +(4300014, 2040004, 1, 1, 0, 750), +(4300010, 2040501, 1, 1, 0, 750), +(4300014, 2040501, 1, 1, 0, 750), +(4300010, 2040504, 1, 1, 0, 750), +(4300014, 2040504, 1, 1, 0, 750), +(4300010, 2040801, 1, 1, 0, 750), +(4300014, 2040801, 1, 1, 0, 750), +(4300010, 2041007, 1, 1, 0, 750), +(4300014, 2041007, 1, 1, 0, 750), +(4300010, 2041045, 1, 1, 0, 750), +(4300014, 2041045, 1, 1, 0, 750), +(4300010, 2049206, 1, 1, 0, 400), +(4300014, 2049206, 1, 1, 0, 400), +(4300010, 2049208, 1, 1, 0, 400), +(4300014, 2049208, 1, 1, 0, 400), +(4300010, 2049210, 1, 1, 0, 400), +(4300014, 2049210, 1, 1, 0, 400), +(4300010, 4020008, 1, 1, 0, 7000), +(4300014, 4020008, 1, 1, 0, 7000), +(4300010, 4004000, 1, 1, 0, 3000), +(4300014, 4004000, 1, 1, 0, 3000), +(4300010, 1302009, 1, 1, 0, 700), +(4300014, 1302009, 1, 1, 0, 700), +(4300010, 1312007, 1, 1, 0, 700), +(4300014, 1312007, 1, 1, 0, 700), +(4300010, 1322016, 1, 1, 0, 700), +(4300014, 1322016, 1, 1, 0, 700), +(4300010, 1402007, 1, 1, 0, 700), +(4300014, 1402007, 1, 1, 0, 700), +(4300010, 1412005, 1, 1, 0, 700), +(4300014, 1412005, 1, 1, 0, 700), +(4300010, 1422007, 1, 1, 0, 700), +(4300014, 1422007, 1, 1, 0, 700), +(4300010, 1432005, 1, 1, 0, 700), +(4300014, 1432005, 1, 1, 0, 700), +(4300010, 1442009, 1, 1, 0, 700), +(4300014, 1442009, 1, 1, 0, 700), +(4300010, 1382019, 1, 1, 0, 700), +(4300014, 1382019, 1, 1, 0, 700), +(4300010, 1452007, 1, 1, 0, 700), +(4300014, 1452007, 1, 1, 0, 700), +(4300010, 1332011, 1, 1, 0, 700), +(4300014, 1332011, 1, 1, 0, 700), +(4300010, 1332031, 1, 1, 0, 700), +(4300014, 1332031, 1, 1, 0, 700), +(4300010, 1472014, 1, 1, 0, 700), +(4300014, 1472014, 1, 1, 0, 700), +(4300010, 1472015, 1, 1, 0, 700), +(4300014, 1472015, 1, 1, 0, 700), +(4300010, 1472016, 1, 1, 0, 700), +(4300014, 1472016, 1, 1, 0, 700), +(4300010, 1472017, 1, 1, 0, 700), +(4300014, 1472017, 1, 1, 0, 700), +(4300010, 1482006, 1, 1, 0, 700), +(4300014, 1482006, 1, 1, 0, 700), +(4300010, 1492006, 1, 1, 0, 700), +(4300014, 1492006, 1, 1, 0, 700), +(4230104, 2000003, 1, 1, 0, 40000), +(9300228, 2000003, 1, 1, 0, 40000), +(4230104, 2000004, 1, 1, 0, 40000), +(9300228, 2000004, 1, 1, 0, 40000), +(4230104, 2043202, 1, 1, 0, 750), +(9300228, 2043202, 1, 1, 0, 750), +(4230104, 2383009, 1, 1, 0, 20000), +(9300228, 2383009, 1, 1, 0, 20000), +(4230104, 4010003, 1, 1, 0, 7000), +(9300228, 4010003, 1, 1, 0, 7000), +(4230104, 4020002, 1, 1, 0, 7000), +(9300228, 4020002, 1, 1, 0, 7000), +(4230104, 1442011, 1, 1, 0, 700), +(9300228, 1442011, 1, 1, 0, 700), +(4230104, 1302016, 1, 1, 0, 700), +(9300228, 1302016, 1, 1, 0, 700), +(4230104, 1002025, 1, 1, 0, 700), +(9300228, 1002025, 1, 1, 0, 700), +(4230104, 1002085, 1, 1, 0, 700), +(9300228, 1002085, 1, 1, 0, 700), +(4230104, 1041087, 1, 1, 0, 700), +(9300228, 1041087, 1, 1, 0, 700), +(4230104, 1061086, 1, 1, 0, 700), +(9300228, 1061086, 1, 1, 0, 700), +(4230104, 1412003, 1, 1, 0, 700), +(9300228, 1412003, 1, 1, 0, 700), +(4230104, 1002217, 1, 1, 0, 700), +(9300228, 1002217, 1, 1, 0, 700), +(4230104, 1382001, 1, 1, 0, 700), +(9300228, 1382001, 1, 1, 0, 700), +(4230104, 1041082, 1, 1, 0, 700), +(9300228, 1041082, 1, 1, 0, 700), +(4230104, 1061081, 1, 1, 0, 700), +(9300228, 1061081, 1, 1, 0, 700), +(4230104, 1041081, 1, 1, 0, 700), +(9300228, 1041081, 1, 1, 0, 700), +(4230104, 1041079, 1, 1, 0, 700), +(9300228, 1041079, 1, 1, 0, 700), +(4230104, 1061078, 1, 1, 0, 700), +(9300228, 1061078, 1, 1, 0, 700), +(4230104, 1040083, 1, 1, 0, 700), +(9300228, 1040083, 1, 1, 0, 700), +(4230104, 1040095, 1, 1, 0, 700), +(9300228, 1040095, 1, 1, 0, 700), +(4230104, 1060084, 1, 1, 0, 700), +(9300228, 1060084, 1, 1, 0, 700), +(4230104, 1482007, 1, 1, 0, 700), +(9300228, 1482007, 1, 1, 0, 700), +(4230506, 4000292, 1, 1, 0, 200000), +(4230506, 2000002, 1, 1, 0, 40000), +(4230506, 2000003, 1, 1, 0, 40000), +(4230506, 2330002, 1, 1, 0, 400), +(4230506, 2044902, 1, 1, 0, 750), +(4230506, 2049101, 1, 1, 0, 400), +(4230506, 4020000, 1, 1, 0, 7000), +(4230506, 4010001, 1, 1, 0, 7000), +(4230506, 1302013, 1, 1, 0, 700), +(4230506, 1002083, 1, 1, 0, 700), +(4230506, 1032007, 1, 1, 0, 700), +(4230506, 1102003, 1, 1, 0, 700), +(4230506, 1061085, 1, 1, 0, 700), +(4230506, 1041092, 1, 1, 0, 700), +(4230506, 1061091, 1, 1, 0, 700), +(4230506, 1041086, 1, 1, 0, 700), +(4230506, 1061079, 1, 1, 0, 700), +(4230506, 1492007, 1, 1, 0, 700), +(9420507, 4000374, 1, 1, 0, 200000), +(9420507, 4000364, 1, 1, 0, 200000), +(9420507, 4000375, 1, 1, 0, 200000), +(9420507, 2000004, 1, 1, 0, 40000), +(9420507, 2020028, 1, 1, 0, 3000), +(9420507, 2043201, 1, 1, 0, 750), +(9420507, 2043001, 1, 1, 0, 750), +(9420507, 4010003, 1, 1, 0, 7000), +(9420507, 4010000, 1, 1, 0, 7000), +(9420507, 4020002, 1, 1, 0, 7000), +(9420507, 1302017, 1, 1, 0, 700), +(9420507, 1302016, 1, 1, 0, 700), +(9420507, 1041087, 1, 1, 0, 700), +(9420507, 1040089, 1, 1, 0, 700), +(9420507, 1060078, 1, 1, 0, 700), +(9420507, 1002243, 1, 1, 0, 700), +(9420507, 1002242, 1, 1, 0, 700), +(9420507, 1050053, 1, 1, 0, 700), +(9420507, 1050054, 1, 1, 0, 700), +(9420507, 1051032, 1, 1, 0, 700), +(9420507, 1051033, 1, 1, 0, 700), +(9420507, 1002216, 1, 1, 0, 700), +(9420507, 1002214, 1, 1, 0, 700), +(9420507, 1002213, 1, 1, 0, 700), +(9420507, 1041027, 1, 1, 0, 700), +(9420507, 1061025, 1, 1, 0, 700), +(9420507, 1332001, 1, 1, 0, 700), +(9420507, 1002619, 1, 1, 0, 700), +(9420507, 1492002, 1, 1, 0, 700), +(4300011, 4000536, 1, 1, 0, 200000), +(4300015, 4000536, 1, 1, 0, 200000), +(4300011, 2000001, 1, 1, 0, 40000), +(4300015, 2000001, 1, 1, 0, 40000), +(4300011, 2000003, 1, 1, 0, 40000), +(4300015, 2000003, 1, 1, 0, 40000), +(4300011, 2000006, 1, 1, 0, 40000), +(4300015, 2000006, 1, 1, 0, 40000), +(4300011, 2022003, 1, 1, 0, 3000), +(4300015, 2022003, 1, 1, 0, 3000), +(4300011, 2000004, 1, 1, 0, 40000), +(4300015, 2000004, 1, 1, 0, 40000), +(4300011, 2040004, 1, 1, 0, 750), +(4300015, 2040004, 1, 1, 0, 750), +(4300011, 2040501, 1, 1, 0, 750), +(4300015, 2040501, 1, 1, 0, 750), +(4300011, 2040504, 1, 1, 0, 750), +(4300015, 2040504, 1, 1, 0, 750), +(4300011, 2040801, 1, 1, 0, 750), +(4300015, 2040801, 1, 1, 0, 750), +(4300011, 2041007, 1, 1, 0, 750), +(4300015, 2041007, 1, 1, 0, 750), +(4300011, 2041045, 1, 1, 0, 750), +(4300015, 2041045, 1, 1, 0, 750), +(4300011, 2049206, 1, 1, 0, 400), +(4300015, 2049206, 1, 1, 0, 400), +(4300011, 2049208, 1, 1, 0, 400), +(4300015, 2049208, 1, 1, 0, 400), +(4300011, 2049210, 1, 1, 0, 400), +(4300015, 2049210, 1, 1, 0, 400), +(4300011, 4020008, 1, 1, 0, 7000), +(4300015, 4020008, 1, 1, 0, 7000), +(4300011, 4004000, 1, 1, 0, 3000), +(4300015, 4004000, 1, 1, 0, 3000), +(4300011, 1302009, 1, 1, 0, 700), +(4300015, 1302009, 1, 1, 0, 700), +(4300011, 1312007, 1, 1, 0, 700), +(4300015, 1312007, 1, 1, 0, 700), +(4300011, 1322016, 1, 1, 0, 700), +(4300015, 1322016, 1, 1, 0, 700), +(4300011, 1402007, 1, 1, 0, 700), +(4300015, 1402007, 1, 1, 0, 700), +(4300011, 1412005, 1, 1, 0, 700), +(4300015, 1412005, 1, 1, 0, 700), +(4300011, 1422007, 1, 1, 0, 700), +(4300015, 1422007, 1, 1, 0, 700), +(4300011, 1432005, 1, 1, 0, 700), +(4300015, 1432005, 1, 1, 0, 700), +(4300011, 1442009, 1, 1, 0, 700), +(4300015, 1442009, 1, 1, 0, 700), +(4300011, 1382019, 1, 1, 0, 700), +(4300015, 1382019, 1, 1, 0, 700), +(4300011, 1452007, 1, 1, 0, 700), +(4300015, 1452007, 1, 1, 0, 700), +(4300011, 1332011, 1, 1, 0, 700), +(4300015, 1332011, 1, 1, 0, 700), +(4300011, 1332031, 1, 1, 0, 700), +(4300015, 1332031, 1, 1, 0, 700), +(4300011, 1472014, 1, 1, 0, 700), +(4300015, 1472014, 1, 1, 0, 700), +(4300011, 1472015, 1, 1, 0, 700), +(4300015, 1472015, 1, 1, 0, 700), +(4300011, 1472016, 1, 1, 0, 700), +(4300015, 1472016, 1, 1, 0, 700), +(4300011, 1472017, 1, 1, 0, 700), +(4300015, 1472017, 1, 1, 0, 700), +(4300011, 1482006, 1, 1, 0, 700), +(4300015, 1482006, 1, 1, 0, 700), +(4300011, 1492006, 1, 1, 0, 700), +(4300015, 1492006, 1, 1, 0, 700), +(4230102, 4000036, 1, 1, 0, 200000), +(9400502, 4000036, 1, 1, 0, 200000), +(9500121, 4000036, 1, 1, 0, 200000), +(9500156, 4000036, 1, 1, 0, 200000), +(4230102, 4030012, 1, 1, 0, 10000), +(9400502, 4030012, 1, 1, 0, 10000), +(9500121, 4030012, 1, 1, 0, 10000), +(9500156, 4030012, 1, 1, 0, 10000), +(4230102, 4130018, 1, 1, 0, 3000), +(9400502, 4130018, 1, 1, 0, 3000), +(9500121, 4130018, 1, 1, 0, 3000), +(9500156, 4130018, 1, 1, 0, 3000), +(4230102, 4130007, 1, 1, 0, 3000), +(9400502, 4130007, 1, 1, 0, 3000), +(9500121, 4130007, 1, 1, 0, 3000), +(9500156, 4130007, 1, 1, 0, 3000), +(4230102, 2000003, 1, 1, 0, 40000), +(9400502, 2000003, 1, 4, 0, 40000), +(9500121, 2000003, 1, 1, 0, 40000), +(9500156, 2000003, 1, 1, 0, 40000), +(4230102, 2000002, 1, 1, 0, 40000), +(9400502, 2000002, 1, 4, 0, 40000), +(9500121, 2000002, 1, 1, 0, 40000), +(9500156, 2000002, 1, 1, 0, 40000), +(4230102, 2000004, 1, 1, 0, 40000), +(9400502, 2000004, 1, 4, 0, 40000), +(9500121, 2000004, 1, 1, 0, 40000), +(9500156, 2000004, 1, 1, 0, 40000), +(4230102, 4006001, 1, 1, 0, 7000), +(9400502, 4006001, 1, 1, 0, 7000), +(9500121, 4006001, 1, 1, 0, 7000), +(9500156, 4006001, 1, 1, 0, 7000), +(4230102, 2020028, 1, 1, 0, 3000), +(9400502, 2020028, 1, 4, 0, 3000), +(9500121, 2020028, 1, 1, 0, 3000), +(9500156, 2020028, 1, 1, 0, 3000), +(4230102, 2330002, 1, 1, 0, 400), +(9400502, 2330002, 1, 4, 0, 2500), +(9500121, 2330002, 1, 1, 0, 400), +(9500156, 2330002, 1, 1, 0, 400), +(4230102, 2383008, 1, 1, 0, 20000), +(9400502, 2383008, 1, 4, 0, 20000), +(9500121, 2383008, 1, 1, 0, 20000), +(9500156, 2383008, 1, 1, 0, 20000), +(4230102, 4010001, 1, 1, 0, 7000), +(9400502, 4010001, 1, 1, 0, 7000), +(9500121, 4010001, 1, 1, 0, 7000), +(9500156, 4010001, 1, 1, 0, 7000), +(4230102, 4020000, 1, 1, 0, 7000), +(9400502, 4020000, 1, 1, 0, 7000), +(9500121, 4020000, 1, 1, 0, 7000), +(9500156, 4020000, 1, 1, 0, 7000), +(4230102, 4004004, 1, 1, 0, 3000), +(9400502, 4004004, 1, 1, 0, 3000), +(9500121, 4004004, 1, 1, 0, 3000), +(9500156, 4004004, 1, 1, 0, 3000), +(4230102, 1302013, 1, 1, 0, 700), +(9400502, 1302013, 1, 1, 0, 40000), +(9500121, 1302013, 1, 1, 0, 700), +(9500156, 1302013, 1, 1, 0, 700), +(4230102, 1002099, 1, 1, 0, 700), +(9400502, 1002099, 1, 1, 0, 40000), +(9500121, 1002099, 1, 1, 0, 700), +(9500156, 1002099, 1, 1, 0, 700), +(4230102, 1060074, 1, 1, 0, 700), +(9400502, 1060074, 1, 1, 0, 40000), +(9500121, 1060074, 1, 1, 0, 700), +(9500156, 1060074, 1, 1, 0, 700), +(4230102, 1040085, 1, 1, 0, 700), +(9400502, 1040085, 1, 1, 0, 40000), +(9500121, 1040085, 1, 1, 0, 700), +(9500156, 1040085, 1, 1, 0, 700), +(4230102, 1002215, 1, 1, 0, 700), +(9400502, 1002215, 1, 1, 0, 40000), +(9500121, 1002215, 1, 1, 0, 700), +(9500156, 1002215, 1, 1, 0, 700), +(4230102, 1072141, 1, 1, 0, 700), +(9400502, 1072141, 1, 1, 0, 40000), +(9500121, 1072141, 1, 1, 0, 700), +(9500156, 1072141, 1, 1, 0, 700), +(4230102, 1072114, 1, 1, 0, 700), +(9400502, 1072114, 1, 1, 0, 40000), +(9500121, 1072114, 1, 1, 0, 700), +(9500156, 1072114, 1, 1, 0, 700), +(4230102, 1002211, 1, 1, 0, 700), +(9400502, 1002211, 1, 1, 0, 40000), +(9500121, 1002211, 1, 1, 0, 700), +(9500156, 1002211, 1, 1, 0, 700), +(4230102, 1002212, 1, 1, 0, 700), +(9400502, 1002212, 1, 1, 0, 40000), +(9500121, 1002212, 1, 1, 0, 700), +(9500156, 1002212, 1, 1, 0, 700), +(4230102, 1472030, 1, 1, 0, 700), +(9400502, 1472030, 1, 1, 0, 40000), +(9500121, 1472030, 1, 1, 0, 700), +(9500156, 1472030, 1, 1, 0, 700), +(4230102, 1082066, 1, 1, 0, 700), +(9400502, 1082066, 1, 1, 0, 40000), +(9500121, 1082066, 1, 1, 0, 700), +(9500156, 1082066, 1, 1, 0, 700), +(4230102, 1040061, 1, 1, 0, 700), +(9400502, 1040061, 1, 1, 0, 40000), +(9500121, 1040061, 1, 1, 0, 700), +(9500156, 1040061, 1, 1, 0, 700), +(4230102, 1060050, 1, 1, 0, 700), +(9400502, 1060050, 1, 1, 0, 40000), +(9500121, 1060050, 1, 1, 0, 700), +(9500156, 1060050, 1, 1, 0, 700), +(4230102, 1002207, 1, 1, 0, 700), +(9400502, 1002207, 1, 1, 0, 40000), +(9500121, 1002207, 1, 1, 0, 700), +(9500156, 1002207, 1, 1, 0, 700), +(4230102, 1072303, 1, 1, 0, 700), +(9400502, 1072303, 1, 1, 0, 40000), +(9500121, 1072303, 1, 1, 0, 700), +(9500156, 1072303, 1, 1, 0, 700), +(4240000, 4021009, 1, 1, 0, 7000), +(9300334, 4021009, 1, 1, 0, 7000), +(9500122, 4021009, 1, 1, 0, 7000), +(9500369, 4021009, 1, 1, 0, 7000), +(4240000, 4130015, 1, 1, 0, 3000), +(9300334, 4130015, 1, 1, 0, 3000), +(9500122, 4130015, 1, 1, 0, 3000), +(9500369, 4130015, 1, 1, 0, 3000), +(4240000, 4130000, 1, 1, 0, 3000), +(9300334, 4130000, 1, 1, 0, 3000), +(9500122, 4130000, 1, 1, 0, 3000), +(9500369, 4130000, 1, 1, 0, 3000), +(4240000, 2000002, 1, 1, 0, 40000), +(9300334, 2000002, 1, 1, 0, 40000), +(9500122, 2000002, 1, 1, 0, 40000), +(9500369, 2000002, 1, 1, 0, 40000), +(4240000, 2000004, 1, 1, 0, 40000), +(9300334, 2000004, 1, 1, 0, 40000), +(9500122, 2000004, 1, 1, 0, 40000), +(9500369, 2000004, 1, 1, 0, 40000), +(4240000, 2002008, 1, 1, 0, 10000), +(9300334, 2002008, 1, 1, 0, 10000), +(9500122, 2002008, 1, 1, 0, 10000), +(9500369, 2002008, 1, 1, 0, 10000), +(4240000, 2043801, 1, 1, 0, 750), +(9300334, 2043801, 1, 1, 0, 750), +(9500122, 2043801, 1, 1, 0, 750), +(9500369, 2043801, 1, 1, 0, 750), +(4240000, 2060000, 10, 50, 0, 10000), +(9300334, 2060000, 10, 50, 0, 10000), +(9500122, 2060000, 10, 50, 0, 10000), +(9500369, 2060000, 10, 50, 0, 10000), +(4240000, 4010006, 1, 1, 0, 7000), +(9300334, 4010006, 1, 1, 0, 7000), +(9500122, 4010006, 1, 1, 0, 7000), +(9500369, 4010006, 1, 1, 0, 7000), +(4240000, 4020008, 1, 1, 0, 7000), +(9300334, 4020008, 1, 1, 0, 7000), +(9500122, 4020008, 1, 1, 0, 7000), +(9500369, 4020008, 1, 1, 0, 7000), +(4240000, 4004001, 1, 1, 0, 3000), +(9300334, 4004001, 1, 1, 0, 3000), +(9500122, 4004001, 1, 1, 0, 3000), +(9500369, 4004001, 1, 1, 0, 3000), +(4240000, 1102016, 1, 1, 0, 700), +(9300334, 1102016, 1, 1, 0, 700), +(9500122, 1102016, 1, 1, 0, 700), +(9500369, 1102016, 1, 1, 0, 700), +(4240000, 1002101, 1, 1, 0, 700), +(9300334, 1002101, 1, 1, 0, 700), +(9500122, 1002101, 1, 1, 0, 700), +(9500369, 1002101, 1, 1, 0, 700), +(4240000, 1072133, 1, 1, 0, 700), +(9300334, 1072133, 1, 1, 0, 700), +(9500122, 1072133, 1, 1, 0, 700), +(9500369, 1072133, 1, 1, 0, 700), +(4240000, 1002216, 1, 1, 0, 700), +(9300334, 1002216, 1, 1, 0, 700), +(9500122, 1002216, 1, 1, 0, 700), +(9500369, 1002216, 1, 1, 0, 700), +(4240000, 1041083, 1, 1, 0, 700), +(9300334, 1041083, 1, 1, 0, 700), +(9500122, 1041083, 1, 1, 0, 700), +(9500369, 1041083, 1, 1, 0, 700), +(4240000, 1061082, 1, 1, 0, 700), +(9300334, 1061082, 1, 1, 0, 700), +(9500122, 1061082, 1, 1, 0, 700), +(9500369, 1061082, 1, 1, 0, 700), +(4240000, 1072122, 1, 1, 0, 700), +(9300334, 1072122, 1, 1, 0, 700), +(9500122, 1072122, 1, 1, 0, 700), +(9500369, 1072122, 1, 1, 0, 700), +(4240000, 1072125, 1, 1, 0, 700), +(9300334, 1072125, 1, 1, 0, 700), +(9500122, 1072125, 1, 1, 0, 700), +(9500369, 1072125, 1, 1, 0, 700), +(4240000, 1072130, 1, 1, 0, 700), +(9300334, 1072130, 1, 1, 0, 700), +(9500122, 1072130, 1, 1, 0, 700), +(9500369, 1072130, 1, 1, 0, 700), +(4240000, 1041074, 1, 1, 0, 700), +(9300334, 1041074, 1, 1, 0, 700), +(9500122, 1041074, 1, 1, 0, 700), +(9500369, 1041074, 1, 1, 0, 700), +(4300013, 2000001, 1, 4, 0, 40000), +(4300013, 2000003, 1, 4, 0, 40000), +(4300013, 2000006, 1, 4, 0, 40000), +(4300013, 2022003, 1, 4, 0, 3000), +(4300013, 2000004, 1, 4, 0, 40000), +(4300013, 2040004, 1, 4, 0, 10000), +(4300013, 2040501, 1, 4, 0, 10000), +(4300013, 2040504, 1, 4, 0, 10000), +(4300013, 2040801, 1, 4, 0, 10000), +(4300013, 2041007, 1, 4, 0, 10000), +(4300013, 2041045, 1, 4, 0, 10000), +(4300013, 2049206, 1, 4, 0, 2500), +(4300013, 2049208, 1, 4, 0, 2500), +(4300013, 2049210, 1, 4, 0, 2500), +(4300013, 2049206, 1, 4, 0, 2500), +(4300013, 2049208, 1, 4, 0, 2500), +(4300013, 2049210, 1, 4, 0, 2500), +(4300013, 2049212, 1, 4, 0, 2500), +(4300013, 4020008, 1, 1, 0, 7000), +(4300013, 4004000, 1, 1, 0, 3000), +(4300013, 1302009, 1, 1, 0, 40000), +(4300013, 1312007, 1, 1, 0, 40000), +(4300013, 1322016, 1, 1, 0, 40000), +(4300013, 1402007, 1, 1, 0, 40000), +(4300013, 1412005, 1, 1, 0, 40000), +(4300013, 1422007, 1, 1, 0, 40000), +(4300013, 1432005, 1, 1, 0, 40000), +(4300013, 1442009, 1, 1, 0, 40000), +(4300013, 1382019, 1, 1, 0, 40000), +(4300013, 1452007, 1, 1, 0, 40000), +(4300013, 1332011, 1, 1, 0, 40000), +(4300013, 1332031, 1, 1, 0, 40000), +(4300013, 1472014, 1, 1, 0, 40000), +(4300013, 1472015, 1, 1, 0, 40000), +(4300013, 1472016, 1, 1, 0, 40000), +(4300013, 1472017, 1, 1, 0, 40000), +(4300013, 1482006, 1, 1, 0, 40000), +(4300013, 1492006, 1, 1, 0, 40000), +(5100000, 4000048, 1, 1, 0, 200000), +(5100000, 4000021, 1, 1, 0, 200000), +(5100000, 4003005, 1, 1, 0, 7000), +(5100000, 2022066, 1, 1, 0, 3000), +(5100000, 2000002, 1, 1, 0, 40000), +(5100000, 2000003, 1, 1, 0, 40000), +(5100000, 2040804, 1, 1, 0, 750), +(5100000, 2044602, 1, 1, 0, 750), +(5100000, 2383013, 1, 1, 0, 20000), +(5100000, 4010002, 1, 1, 0, 7000), +(5100000, 4020001, 1, 1, 0, 7000), +(5100000, 4004002, 1, 1, 0, 3000), +(5100000, 1092030, 1, 1, 0, 700), +(5100000, 1442009, 1, 1, 0, 700), +(5100000, 1002100, 1, 1, 0, 700), +(5100000, 1072089, 1, 1, 0, 700), +(5100000, 1050053, 1, 1, 0, 700), +(5100000, 1051045, 1, 1, 0, 700), +(5100000, 1051037, 1, 1, 0, 700), +(5100000, 1452006, 1, 1, 0, 700), +(5100000, 1082038, 1, 1, 0, 700), +(5100000, 1061095, 1, 1, 0, 700), +(5100000, 1041096, 1, 1, 0, 700), +(5130100, 4000030, 1, 1, 0, 200000), +(5130100, 4000014, 1, 1, 0, 200000), +(5130100, 4030012, 1, 1, 0, 10000), +(5130100, 4001077, 1, 1, 0, 7000), +(5130100, 2000002, 1, 1, 0, 40000), +(5130100, 2002004, 1, 1, 0, 10000), +(5130100, 2000004, 1, 1, 0, 40000), +(5130100, 2070003, 1, 1, 0, 400), +(5130100, 2383012, 1, 1, 0, 20000), +(5130100, 2040026, 1, 1, 0, 750), +(5130100, 4010006, 1, 1, 0, 7000), +(5130100, 4020007, 1, 1, 0, 7000), +(5130100, 1422014, 1, 1, 0, 700), +(5130100, 1332016, 1, 1, 0, 700), +(5130100, 1432005, 1, 1, 0, 700), +(5130100, 1412005, 1, 1, 0, 700), +(5130100, 1040089, 1, 1, 0, 700), +(5130100, 1060078, 1, 1, 0, 700), +(5130100, 1382006, 1, 1, 0, 700), +(5130100, 1051030, 1, 1, 0, 700), +(5130100, 1051045, 1, 1, 0, 700), +(5130100, 1072114, 1, 1, 0, 700), +(5130100, 1452022, 1, 1, 0, 700), +(5130100, 1082083, 1, 1, 0, 700), +(5130100, 1452007, 1, 1, 0, 700), +(5130100, 1051037, 1, 1, 0, 700), +(5130100, 1332016, 1, 1, 0, 700), +(5130100, 1041079, 1, 1, 0, 700), +(5130100, 1041077, 1, 1, 0, 700), +(5130100, 1061076, 1, 1, 0, 700), +(5130100, 1072108, 1, 1, 0, 700), +(5130100, 1472017, 1, 1, 0, 700), +(5130100, 1002631, 1, 1, 0, 700), +(9400102, 2020001, 1, 1, 0, 3000), +(9400102, 2040608, 1, 1, 0, 750), +(9400102, 2040524, 1, 1, 0, 750), +(9400102, 2040814, 1, 1, 0, 750), +(9400102, 4010003, 1, 1, 0, 7000), +(9400102, 4020001, 1, 1, 0, 7000), +(9400102, 1402010, 1, 1, 0, 700), +(9400102, 1072064, 1, 1, 0, 700), +(9400102, 1002026, 1, 1, 0, 700), +(9400102, 1442016, 1, 1, 0, 700), +(9400102, 1312012, 1, 1, 0, 700), +(9400102, 1002154, 1, 1, 0, 700), +(9400102, 1050052, 1, 1, 0, 700), +(9400102, 1051039, 1, 1, 0, 700), +(9400102, 1040096, 1, 1, 0, 700), +(5100003, 4000170, 1, 1, 0, 200000), +(5100003, 4000021, 1, 1, 0, 200000), +(5100003, 2000002, 1, 1, 0, 40000), +(5100003, 2000003, 1, 1, 0, 40000), +(5100003, 2002003, 1, 1, 0, 10000), +(5100003, 2000004, 1, 1, 0, 40000), +(5100003, 2040901, 1, 1, 0, 750), +(5100003, 2044602, 1, 1, 0, 750), +(5100003, 2040805, 1, 1, 0, 750), +(5100003, 2383014, 1, 1, 0, 20000), +(5100003, 4020001, 1, 1, 0, 7000), +(5100003, 4010002, 1, 1, 0, 7000), +(5100003, 4004002, 1, 1, 0, 3000), +(5100003, 1442016, 1, 1, 0, 700), +(5100003, 1060077, 1, 1, 0, 700), +(5100003, 1041088, 1, 1, 0, 700), +(5100003, 1322017, 1, 1, 0, 700), +(5100003, 1312008, 1, 1, 0, 700), +(5100003, 1442009, 1, 1, 0, 700), +(5100003, 1051038, 1, 1, 0, 700), +(5100003, 1072118, 1, 1, 0, 700), +(5100003, 1332011, 1, 1, 0, 700), +(5100003, 1082198, 1, 1, 0, 700), +(5120503, 4000286, 1, 1, 0, 200000), +(5120503, 2000003, 1, 1, 0, 40000), +(5120503, 2000002, 1, 1, 0, 40000), +(5120503, 2040001, 1, 1, 0, 750), +(5120503, 2040901, 1, 1, 0, 750), +(5120503, 2044602, 1, 1, 0, 750), +(5120503, 4020005, 1, 1, 0, 7000), +(5120503, 4004002, 1, 1, 0, 3000), +(5120503, 1312008, 1, 1, 0, 700), +(5120503, 1041088, 1, 1, 0, 700), +(5120503, 1060077, 1, 1, 0, 700), +(5120503, 1072118, 1, 1, 0, 700), +(5120503, 1051038, 1, 1, 0, 700), +(5120503, 1332011, 1, 1, 0, 700), +(5120503, 1072303, 1, 1, 0, 700), +(9400560, 4032030, 1, 1, 0, 10000), +(9400560, 2048003, 1, 1, 0, 750), +(9400560, 2070002, 1, 1, 0, 400), +(9400560, 2022249, 1, 1, 0, 3000), +(9400560, 1032011, 1, 1, 0, 700), +(9400560, 1402007, 1, 1, 0, 700), +(9400560, 1002028, 1, 1, 0, 700), +(9400560, 1072135, 1, 1, 0, 700), +(9400560, 1051034, 1, 1, 0, 700), +(9400560, 1082082, 1, 1, 0, 700), +(9400560, 1040076, 1, 1, 0, 700), +(9400560, 1050052, 1, 1, 0, 700), +(9400560, 1332015, 1, 1, 0, 700), +(9400560, 1002183, 1, 1, 0, 700), +(9400560, 1061077, 1, 1, 0, 700), +(9420504, 4000377, 1, 1, 0, 200000), +(9420504, 4030012, 1, 1, 0, 10000), +(9420504, 2020028, 1, 1, 0, 3000), +(9420504, 2000003, 1, 1, 0, 40000), +(9420504, 2000002, 1, 1, 0, 40000), +(9420504, 4010001, 1, 1, 0, 7000), +(9420504, 1102003, 1, 1, 0, 700), +(9300144, 4000360, 1, 1, 0, 200000), +(9300253, 4000360, 1, 1, 0, 200000), +(9300144, 2000002, 1, 1, 0, 40000), +(9300253, 2000002, 1, 1, 0, 40000), +(9300144, 2000003, 1, 1, 0, 40000), +(9300253, 2000003, 1, 1, 0, 40000), +(9300144, 2002003, 1, 1, 0, 10000), +(9300253, 2002003, 1, 1, 0, 10000), +(9300144, 2044602, 1, 1, 0, 750), +(9300253, 2044602, 1, 1, 0, 750), +(9300144, 2040001, 1, 1, 0, 750), +(9300253, 2040001, 1, 1, 0, 750), +(9300144, 4020005, 1, 1, 0, 7000), +(9300253, 4020005, 1, 1, 0, 7000), +(9300144, 4004002, 1, 1, 0, 3000), +(9300253, 4004002, 1, 1, 0, 3000), +(9300144, 1312008, 1, 1, 0, 700), +(9300253, 1312008, 1, 1, 0, 700), +(9300144, 1041088, 1, 1, 0, 700), +(9300253, 1041088, 1, 1, 0, 700), +(9300144, 1061087, 1, 1, 0, 700), +(9300253, 1061087, 1, 1, 0, 700), +(9300144, 1072118, 1, 1, 0, 700), +(9300253, 1072118, 1, 1, 0, 700), +(9300144, 1051038, 1, 1, 0, 700), +(9300253, 1051038, 1, 1, 0, 700), +(9300144, 1332011, 1, 1, 0, 700), +(9300253, 1332011, 1, 1, 0, 700), +(5220002, 4000031, 1, 1, 0, 200000), +(9300189, 4000031, 1, 1, 0, 200000), +(9500308, 4000031, 1, 1, 0, 200000), +(9500341, 4000031, 1, 1, 0, 200000), +(5220002, 4000021, 1, 1, 0, 200000), +(9300189, 4000021, 1, 1, 0, 200000), +(9500308, 4000021, 1, 1, 0, 200000), +(9500341, 4000021, 1, 1, 0, 200000), +(5220002, 4000026, 1, 1, 0, 200000), +(9300189, 4000026, 1, 1, 0, 200000), +(9500308, 4000026, 1, 1, 0, 200000), +(9500341, 4000026, 1, 1, 0, 200000), +(5220002, 2044902, 1, 4, 0, 10000), +(9300189, 2044902, 1, 4, 0, 10000), +(9500308, 2044902, 1, 4, 0, 10000), +(9500341, 2044902, 1, 4, 0, 10000), +(5220002, 2040504, 1, 4, 0, 10000), +(9300189, 2040504, 1, 4, 0, 10000), +(9500308, 2040504, 1, 4, 0, 10000), +(9500341, 2040504, 1, 4, 0, 10000), +(5220002, 2040301, 1, 4, 0, 10000), +(9300189, 2040301, 1, 4, 0, 10000), +(9500308, 2040301, 1, 4, 0, 10000), +(9500341, 2040301, 1, 4, 0, 10000), +(5220002, 2040801, 1, 4, 0, 10000), +(9300189, 2040801, 1, 4, 0, 10000), +(9500308, 2040801, 1, 4, 0, 10000), +(9500341, 2040801, 1, 4, 0, 10000), +(5220002, 2388002, 1, 4, 0, 20000), +(9300189, 2388002, 1, 4, 0, 20000), +(9500308, 2388002, 1, 4, 0, 20000), +(9500341, 2388002, 1, 4, 0, 20000), +(5220002, 2000002, 1, 4, 0, 40000), +(9300189, 2000002, 1, 4, 0, 40000), +(9500308, 2000002, 1, 4, 0, 40000), +(9500341, 2000002, 1, 4, 0, 40000), +(5220002, 2000003, 1, 4, 0, 40000), +(9300189, 2000003, 1, 4, 0, 40000), +(9500308, 2000003, 1, 4, 0, 40000), +(9500341, 2000003, 1, 4, 0, 40000), +(5220002, 2002002, 1, 4, 0, 10000), +(9300189, 2002002, 1, 4, 0, 10000), +(9500308, 2002002, 1, 4, 0, 10000), +(9500341, 2002002, 1, 4, 0, 10000), +(5220002, 2002003, 1, 4, 0, 10000), +(9300189, 2002003, 1, 4, 0, 10000), +(9500308, 2002003, 1, 4, 0, 10000), +(9500341, 2002003, 1, 4, 0, 10000), +(5220002, 2040707, 1, 4, 0, 10000), +(9300189, 2040707, 1, 4, 0, 10000), +(9500308, 2040707, 1, 4, 0, 10000), +(9500341, 2040707, 1, 4, 0, 10000), +(5220002, 2040901, 1, 4, 0, 10000), +(9300189, 2040901, 1, 4, 0, 10000), +(9500308, 2040901, 1, 4, 0, 10000), +(9500341, 2040901, 1, 4, 0, 10000), +(5220002, 2041016, 1, 4, 0, 10000), +(9300189, 2041016, 1, 4, 0, 10000), +(9500308, 2041016, 1, 4, 0, 10000), +(9500341, 2041016, 1, 4, 0, 10000), +(5220002, 2043801, 1, 4, 0, 10000), +(9300189, 2043801, 1, 4, 0, 10000), +(9500308, 2043801, 1, 4, 0, 10000), +(9500341, 2043801, 1, 4, 0, 10000), +(5220002, 2044101, 1, 4, 0, 10000), +(9300189, 2044101, 1, 4, 0, 10000), +(9500308, 2044101, 1, 4, 0, 10000), +(9500341, 2044101, 1, 4, 0, 10000), +(5220002, 2044601, 1, 4, 0, 10000), +(9300189, 2044601, 1, 4, 0, 10000), +(9500308, 2044601, 1, 4, 0, 10000), +(9500341, 2044601, 1, 4, 0, 10000), +(5220002, 2044701, 1, 4, 0, 10000), +(9300189, 2044701, 1, 4, 0, 10000), +(9500308, 2044701, 1, 4, 0, 10000), +(9500341, 2044701, 1, 4, 0, 10000), +(5220002, 2040514, 1, 4, 0, 10000), +(9300189, 2040514, 1, 4, 0, 10000), +(9500308, 2040514, 1, 4, 0, 10000), +(9500341, 2040514, 1, 4, 0, 10000), +(5220002, 2041044, 1, 4, 0, 10000), +(9300189, 2041044, 1, 4, 0, 10000), +(9500308, 2041044, 1, 4, 0, 10000), +(9500341, 2041044, 1, 4, 0, 10000), +(5220002, 2041017, 1, 4, 0, 10000), +(9300189, 2041017, 1, 4, 0, 10000), +(9500308, 2041017, 1, 4, 0, 10000), +(9500341, 2041017, 1, 4, 0, 10000), +(5220002, 2043702, 1, 4, 0, 10000), +(9300189, 2043702, 1, 4, 0, 10000), +(9500308, 2043702, 1, 4, 0, 10000), +(9500341, 2043702, 1, 4, 0, 10000), +(5220002, 2044302, 1, 4, 0, 10000), +(9300189, 2044302, 1, 4, 0, 10000), +(9500308, 2044302, 1, 4, 0, 10000), +(9500341, 2044302, 1, 4, 0, 10000), +(5220002, 2040932, 1, 4, 0, 10000), +(9300189, 2040932, 1, 4, 0, 10000), +(9500308, 2040932, 1, 4, 0, 10000), +(9500341, 2040932, 1, 4, 0, 10000), +(5220002, 2040930, 1, 4, 0, 10000), +(9300189, 2040930, 1, 4, 0, 10000), +(9500308, 2040930, 1, 4, 0, 10000), +(9500341, 2040930, 1, 4, 0, 10000), +(5220002, 2044804, 1, 4, 0, 10000), +(9300189, 2044804, 1, 4, 0, 10000), +(9500308, 2044804, 1, 4, 0, 10000), +(9500341, 2044804, 1, 4, 0, 10000), +(5220002, 2060000, 10, 50, 0, 10000), +(9300189, 2060000, 10, 50, 0, 10000), +(9500308, 2060000, 10, 50, 0, 10000), +(9500341, 2060000, 10, 50, 0, 10000), +(5220002, 2061000, 10, 50, 0, 10000), +(9300189, 2061000, 10, 50, 0, 10000), +(9500308, 2061000, 10, 50, 0, 10000), +(9500341, 2061000, 10, 50, 0, 10000), +(5220002, 4010005, 1, 1, 0, 7000), +(9300189, 4010005, 1, 1, 0, 7000), +(9500308, 4010005, 1, 1, 0, 7000), +(9500341, 4010005, 1, 1, 0, 7000), +(5220002, 4020005, 1, 1, 0, 7000), +(9300189, 4020005, 1, 1, 0, 7000), +(9500308, 4020005, 1, 1, 0, 7000), +(9500341, 4020005, 1, 1, 0, 7000), +(5220002, 1432039, 1, 1, 0, 40000), +(9300189, 1432039, 1, 1, 0, 40000), +(9500308, 1432039, 1, 1, 0, 40000), +(9500341, 1432039, 1, 1, 0, 40000), +(5220002, 1302010, 1, 1, 0, 40000), +(9300189, 1302010, 1, 1, 0, 40000), +(9500308, 1302010, 1, 1, 0, 40000), +(9500341, 1302010, 1, 1, 0, 40000), +(5220002, 1312008, 1, 1, 0, 40000), +(9300189, 1312008, 1, 1, 0, 40000), +(9500308, 1312008, 1, 1, 0, 40000), +(9500341, 1312008, 1, 1, 0, 40000), +(5220002, 1322017, 1, 1, 0, 40000), +(9300189, 1322017, 1, 1, 0, 40000), +(9500308, 1322017, 1, 1, 0, 40000), +(9500341, 1322017, 1, 1, 0, 40000), +(5220002, 1412003, 1, 1, 0, 40000), +(9300189, 1412003, 1, 1, 0, 40000), +(9500308, 1412003, 1, 1, 0, 40000), +(9500341, 1412003, 1, 1, 0, 40000), +(5220002, 1422005, 1, 1, 0, 40000), +(9300189, 1422005, 1, 1, 0, 40000), +(9500308, 1422005, 1, 1, 0, 40000), +(9500341, 1422005, 1, 1, 0, 40000), +(5220002, 1442005, 1, 1, 0, 40000), +(9300189, 1442005, 1, 1, 0, 40000), +(9500308, 1442005, 1, 1, 0, 40000), +(9500341, 1442005, 1, 1, 0, 40000), +(5220002, 1372007, 1, 1, 0, 40000), +(9300189, 1372007, 1, 1, 0, 40000), +(9500308, 1372007, 1, 1, 0, 40000), +(9500341, 1372007, 1, 1, 0, 40000), +(5220002, 1382006, 1, 1, 0, 40000), +(9300189, 1382006, 1, 1, 0, 40000), +(9500308, 1382006, 1, 1, 0, 40000), +(9500341, 1382006, 1, 1, 0, 40000), +(5220002, 1452008, 1, 1, 0, 40000), +(9300189, 1452008, 1, 1, 0, 40000), +(9500308, 1452008, 1, 1, 0, 40000), +(9500341, 1452008, 1, 1, 0, 40000), +(5220002, 1462007, 1, 1, 0, 40000), +(9300189, 1462007, 1, 1, 0, 40000), +(9500308, 1462007, 1, 1, 0, 40000), +(9500341, 1462007, 1, 1, 0, 40000), +(5220002, 1472021, 1, 1, 0, 40000), +(9300189, 1472021, 1, 1, 0, 40000), +(9500308, 1472021, 1, 1, 0, 40000), +(9500341, 1472021, 1, 1, 0, 40000), +(5220002, 1482007, 1, 1, 0, 40000), +(9300189, 1482007, 1, 1, 0, 40000), +(9500308, 1482007, 1, 1, 0, 40000), +(9500341, 1482007, 1, 1, 0, 40000), +(5220002, 1492007, 1, 1, 0, 40000), +(9300189, 1492007, 1, 1, 0, 40000), +(9500308, 1492007, 1, 1, 0, 40000), +(9500341, 1492007, 1, 1, 0, 40000), +(9400544, 4003005, 1, 1, 0, 7000), +(9400544, 4031937, 1, 1, 0, 7000), +(9400544, 4131009, 1, 1, 0, 3000), +(9400544, 2000004, 1, 1, 0, 40000), +(9400544, 2044008, 1, 1, 0, 750), +(9400544, 2044002, 1, 1, 0, 750), +(9400544, 4010003, 1, 1, 0, 7000), +(9400544, 4020002, 1, 1, 0, 7000), +(9400544, 1302016, 1, 1, 0, 700), +(9400544, 1412003, 1, 1, 0, 700), +(9400544, 1041087, 1, 1, 0, 700), +(9400544, 1061086, 1, 1, 0, 700), +(9400544, 1002085, 1, 1, 0, 700), +(9400544, 1002025, 1, 1, 0, 700), +(9400544, 1061098, 1, 1, 0, 700), +(9400544, 1382006, 1, 1, 0, 700), +(9400544, 1002217, 1, 1, 0, 700), +(9400544, 1382001, 1, 1, 0, 700), +(9400544, 1041082, 1, 1, 0, 700), +(9400544, 1061081, 1, 1, 0, 700), +(9400544, 1061082, 1, 1, 0, 700), +(9400544, 1040095, 1, 1, 0, 700), +(9400544, 1060084, 1, 1, 0, 700), +(9400544, 1061077, 1, 1, 0, 700), +(9400544, 1040083, 1, 1, 0, 700), +(9400544, 1060072, 1, 1, 0, 700), +(5100002, 4000081, 1, 1, 0, 200000), +(5100002, 2000003, 1, 1, 0, 40000), +(5100002, 2000002, 1, 1, 0, 40000), +(5100002, 2070003, 1, 1, 0, 400), +(5100002, 2041010, 1, 1, 0, 750), +(5100002, 2383017, 1, 1, 0, 20000), +(5100002, 4020000, 1, 1, 0, 7000), +(5100002, 4010001, 1, 1, 0, 7000), +(5100002, 4004000, 1, 1, 0, 3000), +(5100002, 1060076, 1, 1, 0, 700), +(5100002, 1302009, 1, 1, 0, 700), +(5100002, 1322017, 1, 1, 0, 700), +(5100002, 1051025, 1, 1, 0, 700), +(5100002, 1002209, 1, 1, 0, 700), +(5100002, 1060073, 1, 1, 0, 700), +(5100002, 1072150, 1, 1, 0, 700), +(5100002, 1492007, 1, 1, 0, 700), +(5120504, 4000287, 1, 1, 0, 200000), +(5120504, 2000002, 1, 1, 0, 40000), +(5120504, 2000003, 1, 1, 0, 40000), +(5120504, 2040504, 1, 1, 0, 750), +(5120504, 4006001, 1, 1, 0, 7000), +(5120504, 4020002, 1, 1, 0, 7000), +(5120504, 4010006, 1, 1, 0, 7000), +(5120504, 4004000, 1, 1, 0, 3000), +(5120504, 1072072, 1, 1, 0, 700), +(5120504, 1002215, 1, 1, 0, 700), +(5120504, 1040097, 1, 1, 0, 700), +(5120504, 1060086, 1, 1, 0, 700), +(5250001, 4000439, 1, 1, 0, 200000), +(9300247, 4000439, 1, 1, 0, 200000), +(5250001, 4130015, 1, 1, 0, 3000), +(9300247, 4130015, 1, 1, 0, 3000), +(5250001, 4130016, 1, 1, 0, 3000), +(9300247, 4130016, 1, 1, 0, 3000), +(5250001, 2000002, 1, 1, 0, 40000), +(9300247, 2000002, 1, 1, 0, 40000), +(5250001, 2000003, 1, 1, 0, 40000), +(9300247, 2000003, 1, 1, 0, 40000), +(5250001, 2383059, 1, 1, 0, 20000), +(9300247, 2383059, 1, 1, 0, 20000), +(5250001, 4010000, 1, 1, 0, 7000), +(9300247, 4010000, 1, 1, 0, 7000), +(5250001, 4020000, 1, 1, 0, 7000), +(9300247, 4020000, 1, 1, 0, 7000), +(5250001, 1072133, 1, 1, 0, 700), +(9300247, 1072133, 1, 1, 0, 700), +(5250001, 1372007, 1, 1, 0, 700), +(9300247, 1372007, 1, 1, 0, 700), +(5250001, 1002214, 1, 1, 0, 700), +(9300247, 1002214, 1, 1, 0, 700), +(5250001, 1040096, 1, 1, 0, 700), +(9300247, 1040096, 1, 1, 0, 700), +(5250001, 1041079, 1, 1, 0, 700), +(9300247, 1041079, 1, 1, 0, 700), +(5250001, 1082198, 1, 1, 0, 700), +(9300247, 1082198, 1, 1, 0, 700), +(5130103, 4000033, 1, 1, 0, 200000), +(5130103, 2000002, 1, 1, 0, 40000), +(5130103, 2000003, 1, 1, 0, 40000), +(5130103, 2000004, 1, 1, 0, 40000), +(5130103, 2383019, 1, 1, 0, 20000), +(5130103, 4010000, 1, 1, 0, 7000), +(5130103, 4020004, 1, 1, 0, 7000), +(5130103, 4020007, 1, 1, 0, 7000), +(5130103, 1092009, 1, 1, 0, 700), +(5130103, 1002218, 1, 1, 0, 700), +(5130103, 1382019, 1, 1, 0, 700), +(5130103, 1050046, 1, 1, 0, 700), +(5130103, 1051037, 1, 1, 0, 700), +(5130103, 1332031, 1, 1, 0, 700), +(5130103, 1040098, 1, 1, 0, 700), +(5130103, 1060087, 1, 1, 0, 700), +(5130103, 1041079, 1, 1, 0, 700), +(5130103, 1061078, 1, 1, 0, 700), +(5130103, 1082092, 1, 1, 0, 700), +(5130103, 1002210, 1, 1, 0, 700), +(5130103, 1052119, 1, 1, 0, 700), +(5120000, 2000002, 1, 1, 0, 40000), +(9300236, 2000002, 1, 1, 0, 40000), +(5120000, 2000003, 1, 1, 0, 40000), +(9300236, 2000003, 1, 1, 0, 40000), +(5120000, 2000004, 1, 1, 0, 40000), +(9300236, 2000004, 1, 1, 0, 40000), +(5120000, 2070002, 1, 1, 0, 400), +(9300236, 2070002, 1, 1, 0, 400), +(5120000, 2041017, 1, 1, 0, 750), +(9300236, 2041017, 1, 1, 0, 750), +(5120000, 2040504, 1, 1, 0, 750), +(9300236, 2040504, 1, 1, 0, 750), +(5120000, 4006001, 1, 1, 0, 7000), +(9300236, 4006001, 1, 1, 0, 7000), +(5120000, 2330002, 1, 1, 0, 400), +(9300236, 2330002, 1, 1, 0, 400), +(5120000, 2040412, 1, 1, 0, 750), +(9300236, 2040412, 1, 1, 0, 750), +(5120000, 4010006, 1, 1, 0, 7000), +(9300236, 4010006, 1, 1, 0, 7000), +(5120000, 4020002, 1, 1, 0, 7000), +(9300236, 4020002, 1, 1, 0, 7000), +(5120000, 4004000, 1, 1, 0, 3000), +(9300236, 4004000, 1, 1, 0, 3000), +(5120000, 4004004, 1, 1, 0, 3000), +(9300236, 4004004, 1, 1, 0, 3000), +(5120000, 1422007, 1, 1, 0, 700), +(9300236, 1422007, 1, 1, 0, 700), +(5120000, 1072134, 1, 1, 0, 700), +(9300236, 1072134, 1, 1, 0, 700), +(5120000, 1040088, 1, 1, 0, 700), +(9300236, 1040088, 1, 1, 0, 700), +(5120000, 1060077, 1, 1, 0, 700), +(9300236, 1060077, 1, 1, 0, 700), +(5120000, 1002086, 1, 1, 0, 700), +(9300236, 1002086, 1, 1, 0, 700), +(5120000, 1082086, 1, 1, 0, 700), +(9300236, 1082086, 1, 1, 0, 700), +(5120000, 1051033, 1, 1, 0, 700), +(9300236, 1051033, 1, 1, 0, 700), +(5120000, 1051034, 1, 1, 0, 700), +(9300236, 1051034, 1, 1, 0, 700), +(5120000, 1072144, 1, 1, 0, 700), +(9300236, 1072144, 1, 1, 0, 700), +(5120000, 1040081, 1, 1, 0, 700), +(9300236, 1040081, 1, 1, 0, 700), +(5120000, 1060070, 1, 1, 0, 700), +(9300236, 1060070, 1, 1, 0, 700), +(5120000, 1072118, 1, 1, 0, 700), +(9300236, 1072118, 1, 1, 0, 700), +(5120000, 1002210, 1, 1, 0, 700), +(9300236, 1002210, 1, 1, 0, 700), +(5120000, 1002185, 1, 1, 0, 700), +(9300236, 1002185, 1, 1, 0, 700), +(5120000, 1072128, 1, 1, 0, 700), +(9300236, 1072128, 1, 1, 0, 700), +(5120000, 1082201, 1, 1, 0, 700), +(9300236, 1082201, 1, 1, 0, 700), +(9420529, 4000467, 1, 1, 0, 200000), +(9420529, 2000006, 1, 1, 0, 40000), +(9420529, 2020014, 1, 1, 0, 3000), +(9420529, 1412003, 1, 1, 0, 700), +(9420529, 1002099, 1, 1, 0, 700), +(9420529, 1092009, 1, 1, 0, 700), +(9420529, 1040091, 1, 1, 0, 700), +(9420529, 1082028, 1, 1, 0, 700), +(9420529, 1002216, 1, 1, 0, 700), +(9420529, 1452008, 1, 1, 0, 700), +(9420529, 1051038, 1, 1, 0, 700), +(9420529, 1082072, 1, 1, 0, 700), +(9420529, 1002184, 1, 1, 0, 700), +(9420529, 1040096, 1, 1, 0, 700), +(9420529, 1041080, 1, 1, 0, 700), +(9420529, 1052098, 1, 1, 0, 700), +(5120001, 4000070, 1, 1, 0, 200000), +(5120001, 4003005, 1, 1, 0, 7000), +(5120001, 2000002, 1, 1, 0, 40000), +(5120001, 2000003, 1, 1, 0, 40000), +(5120001, 2000004, 1, 1, 0, 40000), +(5120001, 2050003, 1, 1, 0, 3000), +(5120001, 4006000, 1, 1, 0, 7000), +(5120001, 2041012, 1, 1, 0, 750), +(5120001, 2043102, 1, 1, 0, 750), +(5120001, 2331000, 1, 1, 0, 0), +(5120001, 2383021, 1, 1, 0, 20000), +(5120001, 4020000, 1, 1, 0, 7000), +(5120001, 4010005, 1, 1, 0, 7000), +(5120001, 4004000, 1, 1, 0, 3000), +(5120001, 1032013, 1, 1, 0, 700), +(5120001, 1402007, 1, 1, 0, 700), +(5120001, 1041089, 1, 1, 0, 700), +(5120001, 1061088, 1, 1, 0, 700), +(5120001, 1002028, 1, 1, 0, 700), +(5120001, 1050054, 1, 1, 0, 700), +(5120001, 1072115, 1, 1, 0, 700), +(5120001, 1050058, 1, 1, 0, 700), +(5120001, 1040094, 1, 1, 0, 700), +(5120001, 1060083, 1, 1, 0, 700), +(5120001, 1082074, 1, 1, 0, 700), +(5120001, 1072306, 1, 1, 0, 700), +(5120002, 4000071, 1, 1, 0, 200000), +(5120002, 4003005, 1, 1, 0, 7000), +(5120002, 2000002, 1, 1, 0, 40000), +(5120002, 2000003, 1, 1, 0, 40000), +(5120002, 2000004, 1, 1, 0, 40000), +(5120002, 4006001, 1, 1, 0, 7000), +(5120002, 2041017, 1, 1, 0, 750), +(5120002, 2044001, 1, 1, 0, 750), +(5120002, 2049101, 1, 1, 0, 400), +(5120002, 2330002, 1, 1, 0, 400), +(5120002, 2383022, 1, 1, 0, 20000), +(5120002, 4020003, 1, 1, 0, 7000), +(5120002, 4010002, 1, 1, 0, 7000), +(5120002, 4004001, 1, 1, 0, 3000), +(5120002, 1002045, 1, 1, 0, 700), +(5120002, 1002024, 1, 1, 0, 700), +(5120002, 1302010, 1, 1, 0, 700), +(5120002, 1312007, 1, 1, 0, 700), +(5120002, 1082009, 1, 1, 0, 700), +(5120002, 1082081, 1, 1, 0, 700), +(5120002, 1002267, 1, 1, 0, 700), +(5120002, 1051041, 1, 1, 0, 700), +(5120002, 1072131, 1, 1, 0, 700), +(5120002, 1002181, 1, 1, 0, 700), +(5120002, 1040084, 1, 1, 0, 700), +(5120002, 1060073, 1, 1, 0, 700), +(5120002, 1002631, 1, 1, 0, 700), +(5120003, 4000072, 1, 1, 0, 200000), +(5120003, 4003005, 1, 1, 0, 7000), +(5120003, 2000002, 1, 1, 0, 40000), +(5120003, 2000003, 1, 1, 0, 40000), +(5120003, 2000004, 1, 1, 0, 40000), +(5120003, 2070004, 1, 1, 0, 400), +(5120003, 4006000, 1, 1, 0, 7000), +(5120003, 2044002, 1, 1, 0, 750), +(5120003, 2041023, 1, 1, 0, 750), +(5120003, 2040925, 1, 1, 0, 750), +(5120003, 2331000, 1, 1, 0, 0), +(5120003, 2383023, 1, 1, 0, 20000), +(5120003, 4010001, 1, 1, 0, 7000), +(5120003, 4020005, 1, 1, 0, 7000), +(5120003, 4004003, 1, 1, 0, 3000), +(5120003, 1032011, 1, 1, 0, 700), +(5120003, 1032019, 1, 1, 0, 700), +(5120003, 1322025, 1, 1, 0, 700), +(5120003, 1041085, 1, 1, 0, 700), +(5120003, 1061084, 1, 1, 0, 700), +(5120003, 1072135, 1, 1, 0, 700), +(5120003, 1322018, 1, 1, 0, 700), +(5120003, 1082082, 1, 1, 0, 700), +(5120003, 1050047, 1, 1, 0, 700), +(5120003, 1051034, 1, 1, 0, 700), +(5120003, 1002153, 1, 1, 0, 700), +(5120003, 1382006, 1, 1, 0, 700), +(5120003, 1002038, 1, 1, 0, 700), +(5120003, 1050052, 1, 1, 0, 700), +(5120003, 1332015, 1, 1, 0, 700), +(5120003, 1032011, 1, 1, 0, 700), +(5120003, 1061077, 1, 1, 0, 700), +(5120003, 1002181, 1, 1, 0, 700), +(5120003, 1002634, 1, 1, 0, 700), +(5100005, 4000171, 1, 1, 0, 200000), +(5100005, 4000021, 1, 1, 0, 200000), +(5100005, 4006000, 1, 1, 0, 7000), +(5100005, 4130009, 1, 1, 0, 3000), +(5100005, 4130008, 1, 1, 0, 3000), +(5100005, 2070004, 1, 1, 0, 400), +(5100005, 2000002, 1, 1, 0, 40000), +(5100005, 2000003, 1, 1, 0, 40000), +(5100005, 2000004, 1, 1, 0, 40000), +(5100005, 2041023, 1, 1, 0, 750), +(5100005, 2044201, 1, 1, 0, 750), +(5100005, 2044902, 1, 1, 0, 750), +(5100005, 2040316, 1, 1, 0, 750), +(5100005, 2040622, 1, 1, 0, 750), +(5100005, 4010001, 1, 1, 0, 7000), +(5100005, 4010005, 1, 1, 0, 7000), +(5100005, 4004003, 1, 1, 0, 3000), +(5100005, 1422007, 1, 1, 0, 700), +(5100005, 1402006, 1, 1, 0, 700), +(5100005, 1051045, 1, 1, 0, 700), +(5100005, 1041079, 1, 1, 0, 700), +(5100005, 1061078, 1, 1, 0, 700), +(5100005, 1040095, 1, 1, 0, 700), +(5100005, 1060084, 1, 1, 0, 700), +(5120501, 4000293, 1, 1, 0, 200000), +(5120501, 4006000, 1, 1, 0, 7000), +(5120501, 2383025, 1, 1, 0, 20000), +(5120501, 4020005, 1, 1, 0, 7000), +(5120501, 4004003, 1, 1, 0, 3000), +(5120501, 1032019, 1, 1, 0, 700), +(5120501, 1040102, 1, 1, 0, 700), +(5120501, 1060090, 1, 1, 0, 700), +(5120501, 1051041, 1, 1, 0, 700), +(5120501, 1482008, 1, 1, 0, 700), +(9420505, 4000378, 1, 1, 0, 200000), +(9420505, 4030012, 1, 1, 0, 10000), +(9420505, 2000003, 1, 1, 0, 40000), +(9420505, 2002004, 1, 1, 0, 10000), +(9420505, 2000004, 1, 1, 0, 40000), +(9420505, 2070003, 1, 1, 0, 400), +(9420505, 2000002, 1, 1, 0, 40000), +(9420505, 4010001, 1, 1, 0, 7000), +(9420505, 4010006, 1, 1, 0, 7000), +(9420505, 1002083, 1, 1, 0, 700), +(9420505, 1032002, 1, 1, 0, 700), +(9420505, 1432005, 1, 1, 0, 700), +(9420505, 1041014, 1, 1, 0, 700), +(9420505, 1041065, 1, 1, 0, 700), +(9420505, 1061070, 1, 1, 0, 700), +(5120100, 4011007, 1, 1, 0, 7000), +(5120100, 2000002, 1, 4, 0, 40000), +(5120100, 2000004, 1, 4, 0, 40000), +(5120100, 2002010, 1, 4, 0, 10000), +(5120100, 2060000, 10, 50, 0, 10000), +(5120100, 2061000, 10, 50, 0, 10000), +(5120100, 2383026, 1, 4, 0, 20000), +(5120100, 4020007, 1, 1, 0, 7000), +(5120100, 4020001, 1, 1, 0, 7000), +(5120100, 4010006, 1, 1, 0, 7000), +(5120100, 4004000, 1, 1, 0, 3000), +(5120100, 1032014, 1, 1, 0, 40000), +(5120100, 1092010, 1, 1, 0, 40000), +(5120100, 1412007, 1, 1, 0, 40000), +(5120100, 1302056, 1, 1, 0, 40000), +(5120100, 1072142, 1, 1, 0, 40000), +(5120100, 1002154, 1, 1, 0, 40000), +(5120100, 1041082, 1, 1, 0, 40000), +(5120100, 1002211, 1, 1, 0, 40000), +(5120100, 1040095, 1, 1, 0, 40000), +(5120502, 4000294, 1, 1, 0, 200000), +(5120502, 2000002, 1, 1, 0, 40000), +(5120502, 2000003, 1, 1, 0, 40000), +(5120502, 2383027, 1, 1, 0, 20000), +(5120502, 4004004, 1, 1, 0, 3000), +(5120502, 4020005, 1, 1, 0, 7000), +(5120502, 1040091, 1, 1, 0, 700), +(5120502, 1040087, 1, 1, 0, 700), +(5120502, 1060076, 1, 1, 0, 700), +(5120502, 1082004, 1, 1, 0, 700), +(5120502, 1040102, 1, 1, 0, 700), +(5120502, 1060090, 1, 1, 0, 700), +(5120502, 1050052, 1, 1, 0, 700), +(5120502, 1040096, 1, 1, 0, 700), +(5120502, 1060085, 1, 1, 0, 700), +(5120502, 1052116, 1, 1, 0, 700), +(9300149, 4000364, 1, 1, 0, 200000), +(9300149, 4130001, 1, 1, 0, 3000), +(9300149, 4130005, 1, 1, 0, 3000), +(9300149, 4130006, 1, 1, 0, 3000), +(9300149, 2000002, 1, 1, 0, 40000), +(9300149, 2000003, 1, 1, 0, 40000), +(9300149, 2383028, 1, 1, 0, 20000), +(9300149, 2040325, 1, 1, 0, 750), +(9300149, 2040424, 1, 1, 0, 750), +(9300149, 2043018, 1, 1, 0, 750), +(9300149, 4020005, 1, 1, 0, 7000), +(9300149, 4004004, 1, 1, 0, 3000), +(9300149, 1040091, 1, 1, 0, 700), +(9300149, 1060080, 1, 1, 0, 700), +(9300149, 1040087, 1, 1, 0, 700), +(9300149, 1060076, 1, 1, 0, 700), +(9300149, 1082004, 1, 1, 0, 700), +(9300149, 1050052, 1, 1, 0, 700), +(9300149, 1002159, 1, 1, 0, 700), +(9300149, 1462014, 1, 1, 0, 700), +(9300149, 1040096, 1, 1, 0, 700), +(9300149, 1060085, 1, 1, 0, 700), +(9300149, 1040057, 1, 1, 0, 700), +(9300149, 1492008, 1, 1, 0, 700), +(5130101, 4000022, 1, 1, 0, 200000), +(9400243, 4000022, 1, 1, 0, 200000), +(5130101, 2000003, 1, 1, 0, 40000), +(9400243, 2000003, 1, 1, 0, 40000), +(5130101, 2000004, 1, 1, 0, 40000), +(9400243, 2000004, 1, 1, 0, 40000), +(5130101, 2070002, 1, 1, 0, 400), +(9400243, 2070002, 1, 1, 0, 400), +(5130101, 2070003, 1, 1, 0, 400), +(9400243, 2070003, 1, 1, 0, 400), +(5130101, 2044501, 1, 1, 0, 750), +(9400243, 2044501, 1, 1, 0, 750), +(5130101, 2044601, 1, 1, 0, 750), +(9400243, 2044601, 1, 1, 0, 750), +(5130101, 2383030, 1, 1, 0, 20000), +(9400243, 2383030, 1, 1, 0, 20000), +(5130101, 4020008, 1, 1, 0, 7000), +(9400243, 4020008, 1, 1, 0, 7000), +(5130101, 1312009, 1, 1, 0, 700), +(9400243, 1312009, 1, 1, 0, 700), +(5130101, 1002086, 1, 1, 0, 700), +(9400243, 1002086, 1, 1, 0, 700), +(5130101, 1092002, 1, 1, 0, 700), +(9400243, 1092002, 1, 1, 0, 700), +(5130101, 1082025, 1, 1, 0, 700), +(9400243, 1082025, 1, 1, 0, 700), +(5130101, 1041091, 1, 1, 0, 700), +(9400243, 1041091, 1, 1, 0, 700), +(5130101, 1061090, 1, 1, 0, 700), +(9400243, 1061090, 1, 1, 0, 700), +(5130101, 1372012, 1, 1, 0, 700), +(9400243, 1372012, 1, 1, 0, 700), +(5130101, 1050048, 1, 1, 0, 700), +(9400243, 1050048, 1, 1, 0, 700), +(5130101, 1072143, 1, 1, 0, 700), +(9400243, 1072143, 1, 1, 0, 700), +(5130101, 1072121, 1, 1, 0, 700), +(9400243, 1072121, 1, 1, 0, 700), +(5130101, 1002247, 1, 1, 0, 700), +(9400243, 1002247, 1, 1, 0, 700), +(5130101, 1041080, 1, 1, 0, 700), +(9400243, 1041080, 1, 1, 0, 700), +(5130101, 1061079, 1, 1, 0, 700), +(9400243, 1061079, 1, 1, 0, 700), +(5130101, 1082076, 1, 1, 0, 700), +(9400243, 1082076, 1, 1, 0, 700), +(5130101, 1072303, 1, 1, 0, 700), +(9400243, 1072303, 1, 1, 0, 700), +(5130104, 4000051, 1, 1, 0, 200000), +(5130104, 4000021, 1, 1, 0, 200000), +(5130104, 4003004, 1, 1, 0, 7000), +(5130104, 2000003, 1, 1, 0, 40000), +(5130104, 2000004, 1, 1, 0, 40000), +(5130104, 2070003, 1, 1, 0, 400), +(5130104, 2041019, 1, 1, 0, 750), +(5130104, 2383031, 1, 1, 0, 20000), +(5130104, 4010001, 1, 1, 0, 7000), +(5130104, 4020001, 1, 1, 0, 7000), +(5130104, 4004003, 1, 1, 0, 3000), +(5130104, 1102000, 1, 1, 0, 700), +(5130104, 1422009, 1, 1, 0, 700), +(5130104, 1442024, 1, 1, 0, 700), +(5130104, 1082064, 1, 1, 0, 700), +(5130104, 1002215, 1, 1, 0, 700), +(5130104, 1002213, 1, 1, 0, 700), +(5130104, 1462008, 1, 1, 0, 700), +(5130104, 1050052, 1, 1, 0, 700), +(5130104, 1072119, 1, 1, 0, 700), +(5130104, 1040097, 1, 1, 0, 700), +(5130104, 1060086, 1, 1, 0, 700), +(5130104, 1082075, 1, 1, 0, 700), +(5130104, 1482007, 1, 1, 0, 700), +(5300100, 4030012, 1, 1, 0, 10000), +(9400200, 4030012, 1, 1, 0, 10000), +(9400500, 4030012, 1, 1, 0, 10000), +(9400644, 4030012, 1, 1, 0, 10000), +(5300100, 2000002, 1, 1, 0, 40000), +(9400200, 2000002, 1, 1, 0, 40000), +(9400500, 2000002, 1, 4, 0, 40000), +(9400644, 2000002, 1, 1, 0, 40000), +(5300100, 2000003, 1, 1, 0, 40000), +(9400200, 2000003, 1, 1, 0, 40000), +(9400500, 2000003, 1, 4, 0, 40000), +(9400644, 2000003, 1, 1, 0, 40000), +(5300100, 2000004, 1, 1, 0, 40000), +(9400200, 2000004, 1, 1, 0, 40000), +(9400500, 2000004, 1, 4, 0, 40000), +(9400644, 2000004, 1, 1, 0, 40000), +(5300100, 2043801, 1, 1, 0, 750), +(9400200, 2043801, 1, 1, 0, 750), +(9400500, 2043801, 1, 4, 0, 10000), +(9400644, 2043801, 1, 1, 0, 750), +(5300100, 4006000, 1, 1, 0, 7000), +(9400200, 4006000, 1, 1, 0, 7000), +(9400500, 4006000, 1, 1, 0, 7000), +(9400644, 4006000, 1, 1, 0, 7000), +(5300100, 2383029, 1, 1, 0, 20000), +(9400200, 2383029, 1, 1, 0, 20000), +(9400500, 2383029, 1, 4, 0, 20000), +(9400644, 2383029, 1, 1, 0, 20000), +(5300100, 4010006, 1, 1, 0, 7000), +(9400200, 4010006, 1, 1, 0, 7000), +(9400500, 4010006, 1, 1, 0, 7000), +(9400644, 4010006, 1, 1, 0, 7000), +(5300100, 4020008, 1, 1, 0, 7000), +(9400200, 4020008, 1, 1, 0, 7000), +(9400500, 4020008, 1, 1, 0, 7000), +(9400644, 4020008, 1, 1, 0, 7000), +(5300100, 4004004, 1, 1, 0, 3000), +(9400200, 4004004, 1, 1, 0, 3000), +(9400500, 4004004, 1, 1, 0, 3000), +(9400644, 4004004, 1, 1, 0, 3000), +(5300100, 1032019, 1, 1, 0, 700), +(9400200, 1032019, 1, 1, 0, 700), +(9400500, 1032019, 1, 1, 0, 40000), +(9400644, 1032019, 1, 1, 0, 700), +(5300100, 1040086, 1, 1, 0, 700), +(9400200, 1040086, 1, 1, 0, 700), +(9400500, 1040086, 1, 1, 0, 40000), +(9400644, 1040086, 1, 1, 0, 700), +(5300100, 1040090, 1, 1, 0, 700), +(9400200, 1040090, 1, 1, 0, 700), +(9400500, 1040090, 1, 1, 0, 40000), +(9400644, 1040090, 1, 1, 0, 700), +(5300100, 1060079, 1, 1, 0, 700), +(9400200, 1060079, 1, 1, 0, 700), +(9400500, 1060079, 1, 1, 0, 40000), +(9400644, 1060079, 1, 1, 0, 700), +(5300100, 1082011, 1, 1, 0, 700), +(9400200, 1082011, 1, 1, 0, 700), +(9400500, 1082011, 1, 1, 0, 40000), +(9400644, 1082011, 1, 1, 0, 700), +(5300100, 1060000, 1, 1, 0, 700), +(9400200, 1060000, 1, 1, 0, 700), +(9400500, 1060000, 1, 1, 0, 40000), +(9400644, 1060000, 1, 1, 0, 700), +(5300100, 1002092, 1, 1, 0, 700), +(9400200, 1002092, 1, 1, 0, 700), +(9400500, 1002092, 1, 1, 0, 40000), +(9400644, 1002092, 1, 1, 0, 700), +(5300100, 1382001, 1, 1, 0, 700), +(9400200, 1382001, 1, 1, 0, 700), +(9400500, 1382001, 1, 1, 0, 40000), +(9400644, 1382001, 1, 1, 0, 700), +(5300100, 1051031, 1, 1, 0, 700), +(9400200, 1051031, 1, 1, 0, 700), +(9400500, 1051031, 1, 1, 0, 40000), +(9400644, 1051031, 1, 1, 0, 700), +(5300100, 1072143, 1, 1, 0, 700), +(9400200, 1072143, 1, 1, 0, 700), +(9400500, 1072143, 1, 1, 0, 40000), +(9400644, 1072143, 1, 1, 0, 700), +(5300100, 1072137, 1, 1, 0, 700), +(9400200, 1072137, 1, 1, 0, 700), +(9400500, 1072137, 1, 1, 0, 40000), +(9400644, 1072137, 1, 1, 0, 700), +(5300100, 1452008, 1, 1, 0, 700), +(9400200, 1452008, 1, 1, 0, 700), +(9400500, 1452008, 1, 1, 0, 40000), +(9400644, 1452008, 1, 1, 0, 700), +(5300100, 1452004, 1, 1, 0, 700), +(9400200, 1452004, 1, 1, 0, 700), +(9400500, 1452004, 1, 1, 0, 40000), +(9400644, 1452004, 1, 1, 0, 700), +(5300100, 1002168, 1, 1, 0, 700), +(9400200, 1002168, 1, 1, 0, 700), +(9400500, 1002168, 1, 1, 0, 40000), +(9400644, 1002168, 1, 1, 0, 700), +(5300100, 1051039, 1, 1, 0, 700), +(9400200, 1051039, 1, 1, 0, 700), +(9400500, 1051039, 1, 1, 0, 40000), +(9400644, 1051039, 1, 1, 0, 700), +(5300100, 1472020, 1, 1, 0, 700), +(9400200, 1472020, 1, 1, 0, 700), +(9400500, 1472020, 1, 1, 0, 40000), +(9400644, 1472020, 1, 1, 0, 700), +(5300100, 1332003, 1, 1, 0, 700), +(9400200, 1332003, 1, 1, 0, 700), +(9400500, 1332003, 1, 1, 0, 40000), +(9400644, 1332003, 1, 1, 0, 700), +(5300100, 1082198, 1, 1, 0, 700), +(9400200, 1082198, 1, 1, 0, 700), +(9400500, 1082198, 1, 1, 0, 40000), +(9400644, 1082198, 1, 1, 0, 700), +(5120506, 4000298, 1, 1, 0, 200000), +(9300164, 4000298, 1, 1, 0, 200000), +(5120506, 2044201, 1, 1, 0, 750), +(9300164, 2044201, 1, 1, 0, 750), +(5120506, 2330002, 1, 1, 0, 400), +(9300164, 2330002, 1, 1, 0, 400), +(5120506, 2383032, 1, 1, 0, 20000), +(9300164, 2383032, 1, 1, 0, 20000), +(5120506, 4010006, 1, 1, 0, 7000), +(9300164, 4010006, 1, 1, 0, 7000), +(5120506, 4020008, 1, 1, 0, 7000), +(9300164, 4020008, 1, 1, 0, 7000), +(5120506, 1412007, 1, 1, 0, 700), +(9300164, 1412007, 1, 1, 0, 700), +(5120506, 1002092, 1, 1, 0, 700), +(9300164, 1002092, 1, 1, 0, 700), +(5120506, 1402006, 1, 1, 0, 700), +(9300164, 1402006, 1, 1, 0, 700), +(5120506, 1442010, 1, 1, 0, 700), +(9300164, 1442010, 1, 1, 0, 700), +(5120506, 1040086, 1, 1, 0, 700), +(9300164, 1040086, 1, 1, 0, 700), +(5120506, 1452004, 1, 1, 0, 700), +(9300164, 1452004, 1, 1, 0, 700), +(5120506, 1002168, 1, 1, 0, 700), +(9300164, 1002168, 1, 1, 0, 700), +(5120506, 1050059, 1, 1, 0, 700), +(9300164, 1050059, 1, 1, 0, 700), +(5120506, 1040096, 1, 1, 0, 700), +(9300164, 1040096, 1, 1, 0, 700), +(5120506, 1040095, 1, 1, 0, 700), +(9300164, 1040095, 1, 1, 0, 700), +(5120506, 1060084, 1, 1, 0, 700), +(9300164, 1060084, 1, 1, 0, 700), +(5120506, 1492007, 1, 1, 0, 700), +(9300164, 1492007, 1, 1, 0, 700), +(5220000, 2000002, 1, 4, 0, 40000), +(5220001, 2000002, 1, 4, 0, 40000), +(9300190, 2000002, 1, 4, 0, 40000), +(9500309, 2000002, 1, 4, 0, 40000), +(9500342, 2000002, 1, 4, 0, 40000), +(5220000, 2000003, 1, 4, 0, 40000), +(5220001, 2000003, 1, 4, 0, 40000), +(9300190, 2000003, 1, 4, 0, 40000), +(9500309, 2000003, 1, 4, 0, 40000), +(9500342, 2000003, 1, 4, 0, 40000), +(5220000, 2002000, 1, 4, 0, 10000), +(5220001, 2002000, 1, 4, 0, 10000), +(9300190, 2002000, 1, 4, 0, 10000), +(9500309, 2002000, 1, 4, 0, 10000), +(9500342, 2002000, 1, 4, 0, 10000), +(5220000, 2001001, 1, 4, 0, 10000), +(5220001, 2001001, 1, 4, 0, 10000), +(9300190, 2001001, 1, 4, 0, 10000), +(9500309, 2001001, 1, 4, 0, 10000), +(9500342, 2001001, 1, 4, 0, 10000), +(5220000, 2041022, 1, 4, 0, 10000), +(5220001, 2041022, 1, 4, 0, 10000), +(9300190, 2041022, 1, 4, 0, 10000), +(9500309, 2041022, 1, 4, 0, 10000), +(9500342, 2041022, 1, 4, 0, 10000), +(5220000, 2040004, 1, 4, 0, 10000), +(5220001, 2040004, 1, 4, 0, 10000), +(9300190, 2040004, 1, 4, 0, 10000), +(9500309, 2040004, 1, 4, 0, 10000), +(9500342, 2040004, 1, 4, 0, 10000), +(5220000, 2040513, 1, 4, 0, 10000), +(5220001, 2040513, 1, 4, 0, 10000), +(9300190, 2040513, 1, 4, 0, 10000), +(9500309, 2040513, 1, 4, 0, 10000), +(9500342, 2040513, 1, 4, 0, 10000), +(5220000, 2040902, 1, 4, 0, 10000), +(5220001, 2040902, 1, 4, 0, 10000), +(9300190, 2040902, 1, 4, 0, 10000), +(9500309, 2040902, 1, 4, 0, 10000), +(9500342, 2040902, 1, 4, 0, 10000), +(5220000, 2048001, 1, 4, 0, 10000), +(5220001, 2048001, 1, 4, 0, 10000), +(9300190, 2048001, 1, 4, 0, 10000), +(9500309, 2048001, 1, 4, 0, 10000), +(9500342, 2048001, 1, 4, 0, 10000), +(5220000, 2040704, 1, 4, 0, 10000), +(5220001, 2040704, 1, 4, 0, 10000), +(9300190, 2040704, 1, 4, 0, 10000), +(9500309, 2040704, 1, 4, 0, 10000), +(9500342, 2040704, 1, 4, 0, 10000), +(5220000, 2044701, 1, 4, 0, 10000), +(5220001, 2044701, 1, 4, 0, 10000), +(9300190, 2044701, 1, 4, 0, 10000), +(9500309, 2044701, 1, 4, 0, 10000), +(9500342, 2044701, 1, 4, 0, 10000), +(5220000, 2040804, 1, 4, 0, 10000), +(5220001, 2040804, 1, 4, 0, 10000), +(9300190, 2040804, 1, 4, 0, 10000), +(9500309, 2040804, 1, 4, 0, 10000), +(9500342, 2040804, 1, 4, 0, 10000), +(5220000, 2040702, 1, 4, 0, 10000), +(5220001, 2040702, 1, 4, 0, 10000), +(9300190, 2040702, 1, 4, 0, 10000), +(9500309, 2040702, 1, 4, 0, 10000), +(9500342, 2040702, 1, 4, 0, 10000), +(5220000, 2043301, 1, 4, 0, 10000), +(5220001, 2043301, 1, 4, 0, 10000), +(9300190, 2043301, 1, 4, 0, 10000), +(9500309, 2043301, 1, 4, 0, 10000), +(9500342, 2043301, 1, 4, 0, 10000), +(5220000, 2044601, 1, 4, 0, 10000), +(5220001, 2044601, 1, 4, 0, 10000), +(9300190, 2044601, 1, 4, 0, 10000), +(9500309, 2044601, 1, 4, 0, 10000), +(9500342, 2044601, 1, 4, 0, 10000), +(5220000, 2041013, 1, 4, 0, 10000), +(5220001, 2041013, 1, 4, 0, 10000), +(9300190, 2041013, 1, 4, 0, 10000), +(9500309, 2041013, 1, 4, 0, 10000), +(9500342, 2041013, 1, 4, 0, 10000), +(5220000, 2041046, 1, 4, 0, 10000), +(5220001, 2041046, 1, 4, 0, 10000), +(9300190, 2041046, 1, 4, 0, 10000), +(9500309, 2041046, 1, 4, 0, 10000), +(9500342, 2041046, 1, 4, 0, 10000), +(5220000, 2043002, 1, 4, 0, 10000), +(5220001, 2043002, 1, 4, 0, 10000), +(9300190, 2043002, 1, 4, 0, 10000), +(9500309, 2043002, 1, 4, 0, 10000), +(9500342, 2043002, 1, 4, 0, 10000), +(5220000, 2388003, 1, 4, 0, 20000), +(5220001, 2388003, 1, 4, 0, 20000), +(9300190, 2388003, 1, 4, 0, 20000), +(9500309, 2388003, 1, 4, 0, 20000), +(9500342, 2388003, 1, 4, 0, 20000), +(5220000, 4010003, 1, 1, 0, 7000), +(5220001, 4010003, 1, 1, 0, 7000), +(9300190, 4010003, 1, 1, 0, 7000), +(9500309, 4010003, 1, 1, 0, 7000), +(9500342, 4010003, 1, 1, 0, 7000), +(5220000, 4020005, 1, 1, 0, 7000), +(5220001, 4020005, 1, 1, 0, 7000), +(9300190, 4020005, 1, 1, 0, 7000), +(9500309, 4020005, 1, 1, 0, 7000), +(9500342, 4020005, 1, 1, 0, 7000), +(5220000, 1002029, 1, 1, 0, 40000), +(5220001, 1002029, 1, 1, 0, 40000), +(9300190, 1002029, 1, 1, 0, 40000), +(9500309, 1002029, 1, 1, 0, 40000), +(9500342, 1002029, 1, 1, 0, 40000), +(5220000, 1040093, 1, 1, 0, 40000), +(5220001, 1040093, 1, 1, 0, 40000), +(9300190, 1040093, 1, 1, 0, 40000), +(9500309, 1040093, 1, 1, 0, 40000), +(9500342, 1040093, 1, 1, 0, 40000), +(5220000, 1082061, 1, 1, 0, 40000), +(5220001, 1082061, 1, 1, 0, 40000), +(9300190, 1082061, 1, 1, 0, 40000), +(9500309, 1082061, 1, 1, 0, 40000), +(9500342, 1082061, 1, 1, 0, 40000), +(5220000, 1072149, 1, 1, 0, 40000), +(5220001, 1072149, 1, 1, 0, 40000), +(9300190, 1072149, 1, 1, 0, 40000), +(9500309, 1072149, 1, 1, 0, 40000), +(9500342, 1072149, 1, 1, 0, 40000), +(5220000, 1050056, 1, 1, 0, 40000), +(5220001, 1050056, 1, 1, 0, 40000), +(9300190, 1050056, 1, 1, 0, 40000), +(9500309, 1050056, 1, 1, 0, 40000), +(9500342, 1050056, 1, 1, 0, 40000), +(5220000, 1051047, 1, 1, 0, 40000), +(5220001, 1051047, 1, 1, 0, 40000), +(9300190, 1051047, 1, 1, 0, 40000), +(9500309, 1051047, 1, 1, 0, 40000), +(9500342, 1051047, 1, 1, 0, 40000), +(5220000, 1002246, 1, 1, 0, 40000), +(5220001, 1002246, 1, 1, 0, 40000), +(9300190, 1002246, 1, 1, 0, 40000), +(9500309, 1002246, 1, 1, 0, 40000), +(9500342, 1002246, 1, 1, 0, 40000), +(5220000, 1041092, 1, 1, 0, 40000), +(5220001, 1041092, 1, 1, 0, 40000), +(9300190, 1041092, 1, 1, 0, 40000), +(9500309, 1041092, 1, 1, 0, 40000), +(9500342, 1041092, 1, 1, 0, 40000), +(5220000, 1082088, 1, 1, 0, 40000), +(5220001, 1082088, 1, 1, 0, 40000), +(9300190, 1082088, 1, 1, 0, 40000), +(9500309, 1082088, 1, 1, 0, 40000), +(9500342, 1082088, 1, 1, 0, 40000), +(5220000, 1072136, 1, 1, 0, 40000), +(5220001, 1072136, 1, 1, 0, 40000), +(9300190, 1072136, 1, 1, 0, 40000), +(9500309, 1072136, 1, 1, 0, 40000), +(9500342, 1072136, 1, 1, 0, 40000), +(5220000, 1002270, 1, 1, 0, 40000), +(5220001, 1002270, 1, 1, 0, 40000), +(9300190, 1002270, 1, 1, 0, 40000), +(9500309, 1002270, 1, 1, 0, 40000), +(9500342, 1002270, 1, 1, 0, 40000), +(5220000, 1050060, 1, 1, 0, 40000), +(5220001, 1050060, 1, 1, 0, 40000), +(9300190, 1050060, 1, 1, 0, 40000), +(9500309, 1050060, 1, 1, 0, 40000), +(9500342, 1050060, 1, 1, 0, 40000), +(5220000, 1051041, 1, 1, 0, 40000), +(5220001, 1051041, 1, 1, 0, 40000), +(9300190, 1051041, 1, 1, 0, 40000), +(9500309, 1051041, 1, 1, 0, 40000), +(9500342, 1051041, 1, 1, 0, 40000), +(5220000, 1082091, 1, 1, 0, 40000), +(5220001, 1082091, 1, 1, 0, 40000), +(9300190, 1082091, 1, 1, 0, 40000), +(9500309, 1082091, 1, 1, 0, 40000), +(9500342, 1082091, 1, 1, 0, 40000), +(5220000, 1072144, 1, 1, 0, 40000), +(5220001, 1072144, 1, 1, 0, 40000), +(9300190, 1072144, 1, 1, 0, 40000), +(9500309, 1072144, 1, 1, 0, 40000), +(9500342, 1072144, 1, 1, 0, 40000), +(5220000, 1002249, 1, 1, 0, 40000), +(5220001, 1002249, 1, 1, 0, 40000), +(9300190, 1002249, 1, 1, 0, 40000), +(9500309, 1002249, 1, 1, 0, 40000), +(9500342, 1002249, 1, 1, 0, 40000), +(5220000, 1040100, 1, 1, 0, 40000), +(5220001, 1040100, 1, 1, 0, 40000), +(9300190, 1040100, 1, 1, 0, 40000), +(9500309, 1040100, 1, 1, 0, 40000), +(9500342, 1040100, 1, 1, 0, 40000), +(5220000, 1041095, 1, 1, 0, 40000), +(5220001, 1041095, 1, 1, 0, 40000), +(9300190, 1041095, 1, 1, 0, 40000), +(9500309, 1041095, 1, 1, 0, 40000), +(9500342, 1041095, 1, 1, 0, 40000), +(5220000, 1082094, 1, 1, 0, 40000), +(5220001, 1082094, 1, 1, 0, 40000), +(9300190, 1082094, 1, 1, 0, 40000), +(9500309, 1082094, 1, 1, 0, 40000), +(9500342, 1082094, 1, 1, 0, 40000), +(5220000, 1072152, 1, 1, 0, 40000), +(5220001, 1072152, 1, 1, 0, 40000), +(9300190, 1072152, 1, 1, 0, 40000), +(9500309, 1072152, 1, 1, 0, 40000), +(9500342, 1072152, 1, 1, 0, 40000), +(5220000, 1052119, 1, 1, 0, 40000), +(5220001, 1052119, 1, 1, 0, 40000), +(9300190, 1052119, 1, 1, 0, 40000), +(9500309, 1052119, 1, 1, 0, 40000), +(9500342, 1052119, 1, 1, 0, 40000), +(5220000, 1002634, 1, 1, 0, 40000), +(5220001, 1002634, 1, 1, 0, 40000), +(9300190, 1002634, 1, 1, 0, 40000), +(9500309, 1002634, 1, 1, 0, 40000), +(9500342, 1002634, 1, 1, 0, 40000), +(5220000, 1082201, 1, 1, 0, 40000), +(5220001, 1082201, 1, 1, 0, 40000), +(9300190, 1082201, 1, 1, 0, 40000), +(9500309, 1082201, 1, 1, 0, 40000), +(9500342, 1082201, 1, 1, 0, 40000), +(5220000, 1072306, 1, 1, 0, 40000), +(5220001, 1072306, 1, 1, 0, 40000), +(9300190, 1072306, 1, 1, 0, 40000), +(9500309, 1072306, 1, 1, 0, 40000), +(9500342, 1072306, 1, 1, 0, 40000), +(5250000, 4000437, 1, 1, 0, 200000), +(5250000, 4130014, 1, 1, 0, 3000), +(5250000, 4130003, 1, 1, 0, 3000), +(5250000, 2000002, 1, 1, 0, 40000), +(5250000, 2000003, 1, 1, 0, 40000), +(5250000, 2044313, 1, 1, 0, 750), +(5250000, 2383057, 1, 1, 0, 20000), +(5250000, 4010002, 1, 1, 0, 7000), +(5250000, 4020002, 1, 1, 0, 7000), +(5250000, 1082010, 1, 1, 0, 700), +(5250000, 1072143, 1, 1, 0, 700), +(5250000, 1452004, 1, 1, 0, 700), +(5250000, 1002208, 1, 1, 0, 700), +(5250000, 1052116, 1, 1, 0, 700), +(9400204, 4130005, 1, 1, 0, 3000), +(7120103, 4130005, 1, 1, 0, 3000), +(9300384, 4130005, 1, 1, 0, 3000), +(9400204, 4131004, 1, 1, 0, 3000), +(7120103, 4131004, 1, 1, 0, 3000), +(9300384, 4131004, 1, 1, 0, 3000), +(9400204, 2060003, 10, 50, 0, 10000), +(7120103, 2060003, 10, 50, 0, 10000), +(9300384, 2060003, 10, 50, 0, 10000), +(9400204, 2001000, 1, 1, 0, 10000), +(7120103, 2001000, 1, 1, 0, 10000), +(9300384, 2001000, 1, 1, 0, 10000), +(9400204, 2002001, 1, 1, 0, 10000), +(7120103, 2002001, 1, 1, 0, 10000), +(9300384, 2002001, 1, 1, 0, 10000), +(9400204, 2040409, 1, 1, 0, 750), +(7120103, 2040409, 1, 1, 0, 750), +(9300384, 2040409, 1, 1, 0, 750), +(9400204, 2044209, 1, 1, 0, 750), +(7120103, 2044209, 1, 1, 0, 750), +(9300384, 2044209, 1, 1, 0, 750), +(9400204, 2044608, 1, 1, 0, 750), +(7120103, 2044608, 1, 1, 0, 750), +(9300384, 2044608, 1, 1, 0, 750), +(9400204, 4010005, 1, 1, 0, 7000), +(7120103, 4010005, 1, 1, 0, 7000), +(9300384, 4010005, 1, 1, 0, 7000), +(9400204, 4004000, 1, 1, 0, 3000), +(7120103, 4004000, 1, 1, 0, 3000), +(9300384, 4004000, 1, 1, 0, 3000), +(9400204, 1032013, 1, 1, 0, 700), +(7120103, 1032013, 1, 1, 0, 700), +(9300384, 1032013, 1, 1, 0, 700), +(9400204, 1102012, 1, 1, 0, 700), +(7120103, 1102012, 1, 1, 0, 700), +(9300384, 1102012, 1, 1, 0, 700), +(9400204, 1032032, 1, 1, 0, 700), +(7120103, 1032032, 1, 1, 0, 700), +(9300384, 1032032, 1, 1, 0, 700), +(9400204, 1412003, 1, 1, 0, 700), +(7120103, 1412003, 1, 1, 0, 700), +(9300384, 1412003, 1, 1, 0, 700), +(9400204, 1002215, 1, 1, 0, 700), +(7120103, 1002215, 1, 1, 0, 700), +(9300384, 1002215, 1, 1, 0, 700), +(9400204, 1452023, 1, 1, 0, 700), +(7120103, 1452023, 1, 1, 0, 700), +(9300384, 1452023, 1, 1, 0, 700), +(9400204, 1072130, 1, 1, 0, 700), +(7120103, 1072130, 1, 1, 0, 700), +(9300384, 1072130, 1, 1, 0, 700), +(9400204, 1072150, 1, 1, 0, 700), +(7120103, 1072150, 1, 1, 0, 700), +(9300384, 1072150, 1, 1, 0, 700), +(9400204, 1492007, 1, 1, 0, 700), +(7120103, 1492007, 1, 1, 0, 700), +(9300384, 1492007, 1, 1, 0, 700), +(5130105, 4000055, 1, 1, 0, 200000), +(5130105, 4003004, 1, 1, 0, 7000), +(5130105, 2000003, 1, 1, 0, 40000), +(5130105, 2000004, 1, 1, 0, 40000), +(5130105, 2043701, 1, 1, 0, 750), +(5130105, 2383033, 1, 1, 0, 20000), +(5130105, 4020004, 1, 1, 0, 7000), +(5130105, 4004002, 1, 1, 0, 3000), +(5130105, 4004004, 1, 1, 0, 3000), +(5130105, 1061085, 1, 1, 0, 700), +(5130105, 1382012, 1, 1, 0, 700), +(5130105, 1382006, 1, 1, 0, 700), +(5130105, 1072151, 1, 1, 0, 700), +(9300012, 4001023, 1, 1, 0, 7000), +(9300192, 4001023, 1, 1, 0, 7000), +(9500172, 4001023, 1, 1, 0, 7000), +(9500330, 4001023, 1, 1, 0, 7000), +(9500343, 4001023, 1, 1, 0, 7000), +(9300012, 2388004, 1, 4, 0, 20000), +(9300192, 2388004, 1, 4, 0, 20000), +(9500172, 2388004, 1, 4, 0, 20000), +(9500330, 2388004, 1, 4, 0, 20000), +(9500343, 2388004, 1, 4, 0, 20000), +(5100004, 4000172, 1, 1, 0, 200000), +(9300243, 4000172, 1, 1, 0, 200000), +(5100004, 4000021, 1, 1, 0, 200000), +(9300243, 4000021, 1, 1, 0, 200000), +(5100004, 4130003, 1, 1, 0, 3000), +(9300243, 4130003, 1, 1, 0, 3000), +(5100004, 4130005, 1, 1, 0, 3000), +(9300243, 4130005, 1, 1, 0, 3000), +(5100004, 4130011, 1, 1, 0, 3000), +(9300243, 4130011, 1, 1, 0, 3000), +(5100004, 2000003, 1, 1, 0, 40000), +(9300243, 2000003, 1, 1, 0, 40000), +(5100004, 2000004, 1, 1, 0, 40000), +(9300243, 2000004, 1, 1, 0, 40000), +(5100004, 2043701, 1, 1, 0, 750), +(9300243, 2043701, 1, 1, 0, 750), +(5100004, 2043801, 1, 1, 0, 750), +(9300243, 2043801, 1, 1, 0, 750), +(5100004, 2040420, 1, 1, 0, 750), +(9300243, 2040420, 1, 1, 0, 750), +(5100004, 4004002, 1, 1, 0, 3000), +(9300243, 4004002, 1, 1, 0, 3000), +(5100004, 4004004, 1, 1, 0, 3000), +(9300243, 4004004, 1, 1, 0, 3000), +(5100004, 4010005, 1, 1, 0, 7000), +(9300243, 4010005, 1, 1, 0, 7000), +(5100004, 4020004, 1, 1, 0, 7000), +(9300243, 4020004, 1, 1, 0, 7000), +(5100004, 1032021, 1, 1, 0, 700), +(9300243, 1032021, 1, 1, 0, 700), +(5100004, 1040087, 1, 1, 0, 700), +(9300243, 1040087, 1, 1, 0, 700), +(5100004, 1060076, 1, 1, 0, 700), +(9300243, 1060076, 1, 1, 0, 700), +(5100004, 1432006, 1, 1, 0, 700), +(9300243, 1432006, 1, 1, 0, 700), +(5100004, 1072134, 1, 1, 0, 700), +(9300243, 1072134, 1, 1, 0, 700), +(5100004, 1082081, 1, 1, 0, 700), +(9300243, 1082081, 1, 1, 0, 700), +(5100004, 1051046, 1, 1, 0, 700), +(9300243, 1051046, 1, 1, 0, 700), +(5100004, 1050058, 1, 1, 0, 700), +(9300243, 1050058, 1, 1, 0, 700), +(5100004, 1040099, 1, 1, 0, 700), +(9300243, 1040099, 1, 1, 0, 700), +(5100004, 1060088, 1, 1, 0, 700), +(9300243, 1060088, 1, 1, 0, 700), +(5100004, 1082066, 1, 1, 0, 700), +(9300243, 1082066, 1, 1, 0, 700), +(5100004, 1052119, 1, 1, 0, 700), +(9300243, 1052119, 1, 1, 0, 700), +(5120500, 4000283, 1, 1, 0, 200000), +(9300244, 4000283, 1, 1, 0, 200000), +(5120500, 1132001, 1, 1, 0, 700), +(9300244, 1132001, 1, 1, 0, 700), +(5120500, 4000021, 1, 1, 0, 200000), +(9300244, 4000021, 1, 1, 0, 200000), +(5120500, 4003005, 1, 1, 0, 7000), +(9300244, 4003005, 1, 1, 0, 7000), +(5120500, 4130000, 1, 1, 0, 3000), +(9300244, 4130000, 1, 1, 0, 3000), +(5120500, 4130021, 1, 1, 0, 3000), +(9300244, 4130021, 1, 1, 0, 3000), +(5120500, 4130009, 1, 1, 0, 3000), +(9300244, 4130009, 1, 1, 0, 3000), +(5120500, 2043801, 1, 1, 0, 750), +(9300244, 2043801, 1, 1, 0, 750), +(5120500, 2043701, 1, 1, 0, 750), +(9300244, 2043701, 1, 1, 0, 750), +(5120500, 2040515, 1, 1, 0, 750), +(9300244, 2040515, 1, 1, 0, 750), +(5120500, 2049101, 1, 1, 0, 400), +(9300244, 2049101, 1, 1, 0, 400), +(5120500, 2330002, 1, 1, 0, 400), +(9300244, 2330002, 1, 1, 0, 400), +(5120500, 2383035, 1, 1, 0, 20000), +(9300244, 2383035, 1, 1, 0, 20000), +(5120500, 2040033, 1, 1, 0, 750), +(9300244, 2040033, 1, 1, 0, 750), +(5120500, 4020007, 1, 1, 0, 7000), +(9300244, 4020007, 1, 1, 0, 7000), +(5120500, 4020004, 1, 1, 0, 7000), +(9300244, 4020004, 1, 1, 0, 7000), +(5120500, 4004004, 1, 1, 0, 3000), +(9300244, 4004004, 1, 1, 0, 3000), +(5120500, 4004002, 1, 1, 0, 3000), +(9300244, 4004002, 1, 1, 0, 3000), +(5120500, 4010005, 1, 1, 0, 7000), +(9300244, 4010005, 1, 1, 0, 7000), +(5120500, 1032021, 1, 1, 0, 700), +(9300244, 1032021, 1, 1, 0, 700), +(5120500, 1432006, 1, 1, 0, 700), +(9300244, 1432006, 1, 1, 0, 700), +(5120500, 1072134, 1, 1, 0, 700), +(9300244, 1072134, 1, 1, 0, 700), +(5120500, 1082081, 1, 1, 0, 700), +(9300244, 1082081, 1, 1, 0, 700), +(5120500, 1050058, 1, 1, 0, 700), +(9300244, 1050058, 1, 1, 0, 700), +(5120500, 1040099, 1, 1, 0, 700), +(9300244, 1040099, 1, 1, 0, 700), +(5120500, 1060088, 1, 1, 0, 700), +(9300244, 1060088, 1, 1, 0, 700), +(5120500, 1082066, 1, 1, 0, 700), +(9300244, 1082066, 1, 1, 0, 700), +(5120500, 1082201, 1, 1, 0, 700), +(9300244, 1082201, 1, 1, 0, 700), +(9420530, 2040504, 1, 1, 0, 750), +(9420530, 2000004, 1, 1, 0, 40000), +(9420530, 4020007, 1, 1, 0, 7000), +(9420530, 4010004, 1, 1, 0, 7000), +(9420530, 1002212, 1, 1, 0, 700), +(9420530, 1472013, 1, 1, 0, 700), +(9420530, 1051006, 1, 1, 0, 700), +(5130107, 4031218, 1, 1, 0, 7000), +(9400504, 4031218, 1, 1, 0, 7000), +(5130107, 2000002, 1, 1, 0, 40000), +(9400504, 2000002, 1, 1, 0, 40000), +(5130107, 2000003, 1, 1, 0, 40000), +(9400504, 2000003, 1, 1, 0, 40000), +(5130107, 2000004, 1, 1, 0, 40000), +(9400504, 2000004, 1, 1, 0, 40000), +(5130107, 2040602, 1, 1, 0, 750), +(9400504, 2040602, 1, 1, 0, 750), +(5130107, 2383037, 1, 1, 0, 20000), +(9400504, 2383037, 1, 1, 0, 20000), +(5130107, 4010000, 1, 1, 0, 7000), +(9400504, 4010000, 1, 1, 0, 7000), +(5130107, 4020006, 1, 1, 0, 7000), +(9400504, 4020006, 1, 1, 0, 7000), +(5130107, 4004000, 1, 1, 0, 3000), +(9400504, 4004000, 1, 1, 0, 3000), +(5130107, 1032019, 1, 1, 0, 700), +(9400504, 1032019, 1, 1, 0, 700), +(5130107, 1102016, 1, 1, 0, 700), +(9400504, 1102016, 1, 1, 0, 700), +(5130107, 1312008, 1, 1, 0, 700), +(9400504, 1312008, 1, 1, 0, 700), +(5130107, 1040092, 1, 1, 0, 700), +(9400504, 1040092, 1, 1, 0, 700), +(5130107, 1060081, 1, 1, 0, 700), +(9400504, 1060081, 1, 1, 0, 700), +(5130107, 1322016, 1, 1, 0, 700), +(9400504, 1322016, 1, 1, 0, 700), +(5130107, 1082062, 1, 1, 0, 700), +(9400504, 1082062, 1, 1, 0, 700), +(5130107, 1072117, 1, 1, 0, 700), +(9400504, 1072117, 1, 1, 0, 700), +(5130107, 1002244, 1, 1, 0, 700), +(9400504, 1002244, 1, 1, 0, 700), +(5130107, 1372007, 1, 1, 0, 700), +(9400504, 1372007, 1, 1, 0, 700), +(5130107, 1082071, 1, 1, 0, 700), +(9400504, 1082071, 1, 1, 0, 700), +(5130107, 1051039, 1, 1, 0, 700), +(9400504, 1051039, 1, 1, 0, 700), +(5130107, 1002269, 1, 1, 0, 700), +(9400504, 1002269, 1, 1, 0, 700), +(5130107, 1002247, 1, 1, 0, 700), +(9400504, 1002247, 1, 1, 0, 700), +(5130107, 1072109, 1, 1, 0, 700), +(9400504, 1072109, 1, 1, 0, 700), +(5130107, 1040094, 1, 1, 0, 700), +(9400504, 1040094, 1, 1, 0, 700), +(5130107, 1060083, 1, 1, 0, 700), +(9400504, 1060083, 1, 1, 0, 700), +(5130107, 1482008, 1, 1, 0, 700), +(9400504, 1482008, 1, 1, 0, 700), +(5130108, 4031218, 1, 1, 0, 7000), +(5130108, 2000002, 1, 1, 0, 40000), +(5130108, 2000003, 1, 1, 0, 40000), +(5130108, 2000004, 1, 1, 0, 40000), +(5130108, 2040402, 1, 1, 0, 750), +(5130108, 4010001, 1, 1, 0, 7000), +(5130108, 4020004, 1, 1, 0, 7000), +(5130108, 4004002, 1, 1, 0, 3000), +(5130108, 1102017, 1, 1, 0, 700), +(5130108, 1032018, 1, 1, 0, 700), +(5130108, 1092011, 1, 1, 0, 700), +(5130108, 1002084, 1, 1, 0, 700), +(5130108, 1041084, 1, 1, 0, 700), +(5130108, 1051046, 1, 1, 0, 700), +(5130108, 1002155, 1, 1, 0, 700), +(5130108, 1002243, 1, 1, 0, 700), +(5130108, 1072141, 1, 1, 0, 700), +(5130108, 1002169, 1, 1, 0, 700), +(5130108, 1051043, 1, 1, 0, 700), +(5130108, 1051063, 1, 1, 0, 700), +(5130108, 1072130, 1, 1, 0, 700), +(5130108, 1082094, 1, 1, 0, 700), +(5130108, 1332011, 1, 1, 0, 700), +(5130108, 1041100, 1, 1, 0, 700), +(5130108, 1061099, 1, 1, 0, 700), +(5150001, 4000206, 1, 1, 0, 200000), +(5150001, 2000003, 1, 1, 0, 40000), +(5150001, 2000004, 1, 1, 0, 40000), +(5150001, 2043801, 1, 1, 0, 750), +(5150001, 2043701, 1, 1, 0, 750), +(5150001, 2040804, 1, 1, 0, 750), +(5150001, 2044701, 1, 1, 0, 750), +(5150001, 2043802, 1, 1, 0, 750), +(5150001, 4010005, 1, 1, 0, 7000), +(5150001, 4020004, 1, 1, 0, 7000), +(5150001, 1040092, 1, 1, 0, 700), +(5150001, 1060081, 1, 1, 0, 700), +(5150001, 1002030, 1, 1, 0, 700), +(5150001, 1072132, 1, 1, 0, 700), +(5150001, 1051045, 1, 1, 0, 700), +(5150001, 1072140, 1, 1, 0, 700), +(5150001, 1002252, 1, 1, 0, 700), +(5150001, 1050059, 1, 1, 0, 700), +(5150001, 1002287, 1, 1, 0, 700), +(5150001, 1072122, 1, 1, 0, 700), +(5150001, 1040098, 1, 1, 0, 700), +(5150001, 1060087, 1, 1, 0, 700), +(5150001, 1002281, 1, 1, 0, 700), +(5150001, 1072128, 1, 1, 0, 700), +(5250002, 4000440, 1, 1, 0, 200000), +(5250002, 4130014, 1, 1, 0, 3000), +(5250002, 2000002, 1, 1, 0, 40000), +(5250002, 2000003, 1, 1, 0, 40000), +(5250002, 2044804, 1, 1, 0, 750), +(5250002, 2383058, 1, 1, 0, 20000), +(5250002, 4010001, 1, 1, 0, 7000), +(5250002, 4020003, 1, 1, 0, 7000), +(5250002, 1040092, 1, 1, 0, 700), +(5250002, 1041093, 1, 1, 0, 700), +(5250002, 1082087, 1, 1, 0, 700), +(5250002, 1072145, 1, 1, 0, 700), +(5250002, 1332015, 1, 1, 0, 700), +(5250002, 1002634, 1, 1, 0, 700), +(5140000, 4000021, 1, 1, 0, 200000), +(9200019, 4000021, 1, 1, 0, 200000), +(5140000, 2000003, 1, 1, 0, 40000), +(9200019, 2000003, 1, 1, 0, 40000), +(5140000, 2000004, 1, 1, 0, 40000), +(9200019, 2000004, 1, 1, 0, 40000), +(5140000, 2040901, 1, 1, 0, 750), +(9200019, 2040901, 1, 1, 0, 750), +(5140000, 4006001, 1, 1, 0, 7000), +(9200019, 4006001, 1, 1, 0, 7000), +(5140000, 2070004, 1, 1, 0, 400), +(9200019, 2070004, 1, 1, 0, 400), +(5140000, 2020028, 1, 1, 0, 3000), +(9200019, 2020028, 1, 1, 0, 3000), +(5140000, 2383040, 1, 1, 0, 20000), +(9200019, 2383040, 1, 1, 0, 20000), +(5140000, 4020000, 1, 1, 0, 7000), +(9200019, 4020000, 1, 1, 0, 7000), +(5140000, 4020007, 1, 1, 0, 7000), +(9200019, 4020007, 1, 1, 0, 7000), +(5140000, 4004001, 1, 1, 0, 3000), +(9200019, 4004001, 1, 1, 0, 3000), +(5140000, 1102021, 1, 1, 0, 700), +(9200019, 1102021, 1, 1, 0, 700), +(5140000, 1032014, 1, 1, 0, 700), +(9200019, 1032014, 1, 1, 0, 700), +(5140000, 1002029, 1, 1, 0, 700), +(9200019, 1002029, 1, 1, 0, 700), +(5140000, 1041097, 1, 1, 0, 700), +(9200019, 1041097, 1, 1, 0, 700), +(5140000, 1061096, 1, 1, 0, 700), +(9200019, 1061096, 1, 1, 0, 700), +(5140000, 1072134, 1, 1, 0, 700), +(9200019, 1072134, 1, 1, 0, 700), +(5140000, 1422008, 1, 1, 0, 700), +(9200019, 1422008, 1, 1, 0, 700), +(5140000, 1412007, 1, 1, 0, 700), +(9200019, 1412007, 1, 1, 0, 700), +(5140000, 1050053, 1, 1, 0, 700), +(9200019, 1050053, 1, 1, 0, 700), +(5140000, 1072114, 1, 1, 0, 700), +(9200019, 1072114, 1, 1, 0, 700), +(5140000, 1050051, 1, 1, 0, 700), +(9200019, 1050051, 1, 1, 0, 700), +(5140000, 1050052, 1, 1, 0, 700), +(9200019, 1050052, 1, 1, 0, 700), +(5140000, 1082072, 1, 1, 0, 700), +(9200019, 1082072, 1, 1, 0, 700), +(5140000, 1050059, 1, 1, 0, 700), +(9200019, 1050059, 1, 1, 0, 700), +(5140000, 1041077, 1, 1, 0, 700), +(9200019, 1041077, 1, 1, 0, 700), +(5140000, 1061076, 1, 1, 0, 700), +(9200019, 1061076, 1, 1, 0, 700), +(5140000, 1472014, 1, 1, 0, 700), +(9200019, 1472014, 1, 1, 0, 700), +(5140000, 1072151, 1, 1, 0, 700), +(9200019, 1072151, 1, 1, 0, 700), +(5140000, 1060089, 1, 1, 0, 700), +(9200019, 1060089, 1, 1, 0, 700), +(5140000, 1082066, 1, 1, 0, 700), +(9200019, 1082066, 1, 1, 0, 700), +(5140000, 1002634, 1, 1, 0, 700), +(9200019, 1002634, 1, 1, 0, 700), +(5130102, 4000025, 1, 1, 0, 200000), +(5130102, 4001005, 1, 1, 0, 7000), +(5130102, 2000003, 1, 1, 0, 40000), +(5130102, 2000004, 1, 1, 0, 40000), +(5130102, 2070004, 1, 1, 0, 400), +(5130102, 2044001, 1, 1, 0, 750), +(5130102, 2044101, 1, 1, 0, 750), +(5130102, 2044201, 1, 1, 0, 750), +(5130102, 4020008, 1, 1, 0, 7000), +(5130102, 4004004, 1, 1, 0, 3000), +(5130102, 1102018, 1, 1, 0, 700), +(5130102, 1032021, 1, 1, 0, 700), +(5130102, 1040091, 1, 1, 0, 700), +(5130102, 1060080, 1, 1, 0, 700), +(5130102, 1002022, 1, 1, 0, 700), +(5130102, 1040085, 1, 1, 0, 700), +(5130102, 1060074, 1, 1, 0, 700), +(5130102, 1082009, 1, 1, 0, 700), +(5130102, 1072139, 1, 1, 0, 700), +(5130102, 1082088, 1, 1, 0, 700), +(5130102, 1382007, 1, 1, 0, 700), +(5130102, 1050039, 1, 1, 0, 700), +(5130102, 1002214, 1, 1, 0, 700), +(5130102, 1050059, 1, 1, 0, 700), +(5130102, 1072120, 1, 1, 0, 700), +(5130102, 1002249, 1, 1, 0, 700), +(5130102, 1002209, 1, 1, 0, 700), +(5130102, 1041074, 1, 1, 0, 700), +(5130102, 1061069, 1, 1, 0, 700), +(5130102, 1492008, 1, 1, 0, 700), +(5120505, 4000288, 1, 1, 0, 200000), +(5120505, 4000021, 1, 1, 0, 200000), +(5120505, 4003005, 1, 1, 0, 7000), +(5120505, 2000002, 1, 1, 0, 40000), +(5120505, 2000003, 1, 1, 0, 40000), +(5120505, 2040804, 1, 1, 0, 750), +(5120505, 2383041, 1, 1, 0, 20000), +(5120505, 4010006, 1, 1, 0, 7000), +(5120505, 1002029, 1, 1, 0, 700), +(5120505, 1072146, 1, 1, 0, 700), +(5120505, 1051037, 1, 1, 0, 700), +(5120505, 1002248, 1, 1, 0, 700), +(5120505, 1052119, 1, 1, 0, 700), +(9420509, 4000380, 1, 1, 0, 200000), +(9420509, 4001005, 1, 1, 0, 7000), +(9420509, 2000004, 1, 1, 0, 40000), +(9420509, 2070004, 1, 1, 0, 400), +(9420509, 2044201, 1, 1, 0, 750), +(9420509, 2020028, 1, 1, 0, 3000), +(9420509, 4010006, 1, 1, 0, 7000), +(9420509, 4020008, 1, 1, 0, 7000), +(9420509, 4004004, 1, 1, 0, 3000), +(9420509, 1060081, 1, 1, 0, 700), +(9420509, 1041093, 1, 1, 0, 700), +(9420509, 1051014, 1, 1, 0, 700), +(9420509, 1051001, 1, 1, 0, 700), +(9420509, 1402007, 1, 1, 0, 700), +(9420509, 1050037, 1, 1, 0, 700), +(9420509, 1050036, 1, 1, 0, 700), +(9420509, 1050039, 1, 1, 0, 700), +(9420509, 1050059, 1, 1, 0, 700), +(9420509, 1050060, 1, 1, 0, 700), +(9420509, 1040075, 1, 1, 0, 700), +(9420509, 1060064, 1, 1, 0, 700), +(9420509, 1051039, 1, 1, 0, 700), +(9420509, 1002210, 1, 1, 0, 700), +(5110302, 4000365, 1, 1, 0, 200000), +(9300148, 4000365, 1, 1, 0, 200000), +(9300150, 4000365, 1, 1, 0, 200000), +(5110302, 2000004, 1, 1, 0, 40000), +(9300148, 2000004, 1, 1, 0, 40000), +(9300150, 2000004, 1, 1, 0, 40000), +(5110302, 2000002, 1, 1, 0, 40000), +(9300148, 2000002, 1, 1, 0, 40000), +(9300150, 2000002, 1, 1, 0, 40000), +(5110302, 2000003, 1, 1, 0, 40000), +(9300148, 2000003, 1, 1, 0, 40000), +(9300150, 2000003, 1, 1, 0, 40000), +(5110302, 2040804, 1, 1, 0, 750), +(9300148, 2040804, 1, 1, 0, 750), +(9300150, 2040804, 1, 1, 0, 750), +(5110302, 2040901, 1, 1, 0, 750), +(9300148, 2040901, 1, 1, 0, 750), +(9300150, 2040901, 1, 1, 0, 750), +(5110302, 2040923, 1, 1, 0, 750), +(9300148, 2040923, 1, 1, 0, 750), +(9300150, 2040923, 1, 1, 0, 750), +(5110302, 2043018, 1, 1, 0, 750), +(9300148, 2043018, 1, 1, 0, 750), +(9300150, 2043018, 1, 1, 0, 750), +(5110302, 2043116, 1, 1, 0, 750), +(9300148, 2043116, 1, 1, 0, 750), +(9300150, 2043116, 1, 1, 0, 750), +(5110302, 2383042, 1, 1, 0, 20000), +(9300148, 2383042, 1, 1, 0, 20000), +(9300150, 2383042, 1, 1, 0, 20000), +(5110302, 4010006, 1, 1, 0, 7000), +(9300148, 4010006, 1, 1, 0, 7000), +(9300150, 4010006, 1, 1, 0, 7000), +(5110302, 1002029, 1, 1, 0, 700), +(9300148, 1002029, 1, 1, 0, 700), +(9300150, 1002029, 1, 1, 0, 700), +(5110302, 1051037, 1, 1, 0, 700), +(9300148, 1051037, 1, 1, 0, 700), +(9300150, 1051037, 1, 1, 0, 700), +(5110302, 1002269, 1, 1, 0, 700), +(9300148, 1002269, 1, 1, 0, 700), +(9300150, 1002269, 1, 1, 0, 700), +(5110302, 1072146, 1, 1, 0, 700), +(9300148, 1072146, 1, 1, 0, 700), +(9300150, 1072146, 1, 1, 0, 700), +(5110302, 1041077, 1, 1, 0, 700), +(9300148, 1041077, 1, 1, 0, 700), +(9300150, 1041077, 1, 1, 0, 700), +(5110302, 1041079, 1, 1, 0, 700), +(9300148, 1041079, 1, 1, 0, 700), +(9300150, 1041079, 1, 1, 0, 700), +(5110302, 1061076, 1, 1, 0, 700), +(9300148, 1061076, 1, 1, 0, 700), +(9300150, 1061076, 1, 1, 0, 700), +(5110302, 1002248, 1, 1, 0, 700), +(9300148, 1002248, 1, 1, 0, 700), +(9300150, 1002248, 1, 1, 0, 700), +(5110302, 1082201, 1, 1, 0, 700), +(9300148, 1082201, 1, 1, 0, 700), +(9300150, 1082201, 1, 1, 0, 700), +(5150000, 4000177, 1, 1, 0, 200000), +(9400244, 4000177, 1, 1, 0, 200000), +(9500123, 4000177, 1, 1, 0, 200000), +(5150000, 2000002, 1, 1, 0, 40000), +(9400244, 2000002, 1, 1, 0, 40000), +(9500123, 2000002, 1, 1, 0, 40000), +(5150000, 2000003, 1, 1, 0, 40000), +(9400244, 2000003, 1, 1, 0, 40000), +(9500123, 2000003, 1, 1, 0, 40000), +(5150000, 2000004, 1, 1, 0, 40000), +(9400244, 2000004, 1, 1, 0, 40000), +(9500123, 2000004, 1, 1, 0, 40000), +(5150000, 2060000, 10, 50, 0, 10000), +(9400244, 2060000, 10, 50, 0, 10000), +(9500123, 2060000, 10, 50, 0, 10000), +(5150000, 2061000, 10, 50, 0, 10000), +(9400244, 2061000, 10, 50, 0, 10000), +(9500123, 2061000, 10, 50, 0, 10000), +(5150000, 2040804, 1, 1, 0, 750), +(9400244, 2040804, 1, 1, 0, 750), +(9500123, 2040804, 1, 1, 0, 750), +(5150000, 2040901, 1, 1, 0, 750), +(9400244, 2040901, 1, 1, 0, 750), +(9500123, 2040901, 1, 1, 0, 750), +(5150000, 2044501, 1, 1, 0, 750), +(9400244, 2044501, 1, 1, 0, 750), +(9500123, 2044501, 1, 1, 0, 750), +(5150000, 2070004, 1, 1, 0, 400), +(9400244, 2070004, 1, 1, 0, 400), +(9500123, 2070004, 1, 1, 0, 400), +(5150000, 2383043, 1, 1, 0, 20000), +(9400244, 2383043, 1, 1, 0, 20000), +(9500123, 2383043, 1, 1, 0, 20000), +(5150000, 4010006, 1, 1, 0, 7000), +(9400244, 4010006, 1, 1, 0, 7000), +(9500123, 4010006, 1, 1, 0, 7000), +(5150000, 4020008, 1, 1, 0, 7000), +(9400244, 4020008, 1, 1, 0, 7000), +(9500123, 4020008, 1, 1, 0, 7000), +(5150000, 1002029, 1, 1, 0, 700), +(9400244, 1002029, 1, 1, 0, 700), +(9500123, 1002029, 1, 1, 0, 700), +(5150000, 1040092, 1, 1, 0, 700), +(9400244, 1040092, 1, 1, 0, 700), +(9500123, 1040092, 1, 1, 0, 700), +(5150000, 1060081, 1, 1, 0, 700), +(9400244, 1060081, 1, 1, 0, 700), +(9500123, 1060081, 1, 1, 0, 700), +(5150000, 1060080, 1, 1, 0, 700), +(9400244, 1060080, 1, 1, 0, 700), +(9500123, 1060080, 1, 1, 0, 700), +(5150000, 1372014, 1, 1, 0, 700), +(9400244, 1372014, 1, 1, 0, 700), +(9500123, 1372014, 1, 1, 0, 700), +(5150000, 1082087, 1, 1, 0, 700), +(9400244, 1082087, 1, 1, 0, 700), +(9500123, 1082087, 1, 1, 0, 700), +(5150000, 1051037, 1, 1, 0, 700), +(9400244, 1051037, 1, 1, 0, 700), +(9500123, 1051037, 1, 1, 0, 700), +(5150000, 1002269, 1, 1, 0, 700), +(9400244, 1002269, 1, 1, 0, 700), +(9500123, 1002269, 1, 1, 0, 700), +(5150000, 1072146, 1, 1, 0, 700), +(9400244, 1072146, 1, 1, 0, 700), +(9500123, 1072146, 1, 1, 0, 700), +(5150000, 1002248, 1, 1, 0, 700), +(9400244, 1002248, 1, 1, 0, 700), +(9500123, 1002248, 1, 1, 0, 700), +(5150000, 1082066, 1, 1, 0, 700), +(9400244, 1082066, 1, 1, 0, 700), +(9500123, 1082066, 1, 1, 0, 700), +(5150000, 1041077, 1, 1, 0, 700), +(9400244, 1041077, 1, 1, 0, 700), +(9500123, 1041077, 1, 1, 0, 700), +(5150000, 1061076, 1, 1, 0, 700), +(9400244, 1061076, 1, 1, 0, 700), +(9500123, 1061076, 1, 1, 0, 700), +(5150000, 1002184, 1, 1, 0, 700), +(9400244, 1002184, 1, 1, 0, 700), +(9500123, 1002184, 1, 1, 0, 700), +(5150000, 1041094, 1, 1, 0, 700), +(9400244, 1041094, 1, 1, 0, 700), +(9500123, 1041094, 1, 1, 0, 700), +(5150000, 1061093, 1, 1, 0, 700), +(9400244, 1061093, 1, 1, 0, 700), +(9500123, 1061093, 1, 1, 0, 700), +(5150000, 1072306, 1, 1, 0, 700), +(9400244, 1072306, 1, 1, 0, 700), +(9500123, 1072306, 1, 1, 0, 700), +(5220003, 4000115, 1, 1, 0, 200000), +(9300193, 4000115, 1, 1, 0, 200000), +(9500310, 4000115, 1, 1, 0, 200000), +(9500344, 4000115, 1, 1, 0, 200000), +(5220003, 4000114, 1, 1, 0, 200000), +(9300193, 4000114, 1, 1, 0, 200000), +(9500310, 4000114, 1, 1, 0, 200000), +(9500344, 4000114, 1, 1, 0, 200000), +(5220003, 4000113, 1, 1, 0, 200000), +(9300193, 4000113, 1, 1, 0, 200000), +(9500310, 4000113, 1, 1, 0, 200000), +(9500344, 4000113, 1, 1, 0, 200000), +(5220003, 2000002, 1, 4, 0, 40000), +(9300193, 2000002, 1, 4, 0, 40000), +(9500310, 2000002, 1, 4, 0, 40000), +(9500344, 2000002, 1, 4, 0, 40000), +(5220003, 2000003, 1, 4, 0, 40000), +(9300193, 2000003, 1, 4, 0, 40000), +(9500310, 2000003, 1, 4, 0, 40000), +(9500344, 2000003, 1, 4, 0, 40000), +(5220003, 2002002, 1, 4, 0, 10000), +(9300193, 2002002, 1, 4, 0, 10000), +(9500310, 2002002, 1, 4, 0, 10000), +(9500344, 2002002, 1, 4, 0, 10000), +(5220003, 2002003, 1, 4, 0, 10000), +(9300193, 2002003, 1, 4, 0, 10000), +(9500310, 2002003, 1, 4, 0, 10000), +(9500344, 2002003, 1, 4, 0, 10000), +(5220003, 2060000, 10, 50, 0, 10000), +(9300193, 2060000, 10, 50, 0, 10000), +(9500310, 2060000, 10, 50, 0, 10000), +(9500344, 2060000, 10, 50, 0, 10000), +(5220003, 2061000, 10, 50, 0, 10000), +(9300193, 2061000, 10, 50, 0, 10000), +(9500310, 2061000, 10, 50, 0, 10000), +(9500344, 2061000, 10, 50, 0, 10000), +(5220003, 2040614, 1, 4, 0, 10000), +(9300193, 2040614, 1, 4, 0, 10000), +(9500310, 2040614, 1, 4, 0, 10000), +(9500344, 2040614, 1, 4, 0, 10000), +(5220003, 2044502, 1, 4, 0, 10000), +(9300193, 2044502, 1, 4, 0, 10000), +(9500310, 2044502, 1, 4, 0, 10000), +(9500344, 2044502, 1, 4, 0, 10000), +(5220003, 2041016, 1, 4, 0, 10000), +(9300193, 2041016, 1, 4, 0, 10000), +(9500310, 2041016, 1, 4, 0, 10000), +(9500344, 2041016, 1, 4, 0, 10000), +(5220003, 2041013, 1, 4, 0, 10000), +(9300193, 2041013, 1, 4, 0, 10000), +(9500310, 2041013, 1, 4, 0, 10000), +(9500344, 2041013, 1, 4, 0, 10000), +(5220003, 2041046, 1, 4, 0, 10000), +(9300193, 2041046, 1, 4, 0, 10000), +(9500310, 2041046, 1, 4, 0, 10000), +(9500344, 2041046, 1, 4, 0, 10000), +(5220003, 2040302, 1, 4, 0, 10000), +(9300193, 2040302, 1, 4, 0, 10000), +(9500310, 2040302, 1, 4, 0, 10000), +(9500344, 2040302, 1, 4, 0, 10000), +(5220003, 2040804, 1, 4, 0, 10000), +(9300193, 2040804, 1, 4, 0, 10000), +(9500310, 2040804, 1, 4, 0, 10000), +(9500344, 2040804, 1, 4, 0, 10000), +(5220003, 2040827, 1, 4, 0, 10000), +(9300193, 2040827, 1, 4, 0, 10000), +(9500310, 2040827, 1, 4, 0, 10000), +(9500344, 2040827, 1, 4, 0, 10000), +(5220003, 2044904, 1, 4, 0, 10000), +(9300193, 2044904, 1, 4, 0, 10000), +(9500310, 2044904, 1, 4, 0, 10000), +(9500344, 2044904, 1, 4, 0, 10000), +(5220003, 2044803, 1, 4, 0, 10000), +(9300193, 2044803, 1, 4, 0, 10000), +(9500310, 2044803, 1, 4, 0, 10000), +(9500344, 2044803, 1, 4, 0, 10000), +(5220003, 2043201, 1, 4, 0, 10000), +(9300193, 2043201, 1, 4, 0, 10000), +(9500310, 2043201, 1, 4, 0, 10000), +(9500344, 2043201, 1, 4, 0, 10000), +(5220003, 2040502, 1, 4, 0, 10000), +(9300193, 2040502, 1, 4, 0, 10000), +(9500310, 2040502, 1, 4, 0, 10000), +(9500344, 2040502, 1, 4, 0, 10000), +(5220003, 2040516, 1, 4, 0, 10000), +(9300193, 2040516, 1, 4, 0, 10000), +(9500310, 2040516, 1, 4, 0, 10000), +(9500344, 2040516, 1, 4, 0, 10000), +(5220003, 2040935, 1, 4, 0, 10000), +(9300193, 2040935, 1, 4, 0, 10000), +(9500310, 2040935, 1, 4, 0, 10000), +(9500344, 2040935, 1, 4, 0, 10000), +(5220003, 2040704, 1, 4, 0, 10000), +(9300193, 2040704, 1, 4, 0, 10000), +(9500310, 2040704, 1, 4, 0, 10000), +(9500344, 2040704, 1, 4, 0, 10000), +(5220003, 2044301, 1, 4, 0, 10000), +(9300193, 2044301, 1, 4, 0, 10000), +(9500310, 2044301, 1, 4, 0, 10000), +(9500344, 2044301, 1, 4, 0, 10000), +(5220003, 2040401, 1, 4, 0, 10000), +(9300193, 2040401, 1, 4, 0, 10000), +(9500310, 2040401, 1, 4, 0, 10000), +(9500344, 2040401, 1, 4, 0, 10000), +(5220003, 2044116, 1, 4, 0, 10000), +(9300193, 2044116, 1, 4, 0, 10000), +(9500310, 2044116, 1, 4, 0, 10000), +(9500344, 2044116, 1, 4, 0, 10000), +(5220003, 2044201, 1, 4, 0, 10000), +(9300193, 2044201, 1, 4, 0, 10000), +(9500310, 2044201, 1, 4, 0, 10000), +(9500344, 2044201, 1, 4, 0, 10000), +(5220003, 2043701, 1, 4, 0, 10000), +(9300193, 2043701, 1, 4, 0, 10000), +(9500310, 2043701, 1, 4, 0, 10000), +(9500344, 2043701, 1, 4, 0, 10000), +(5220003, 2388005, 1, 4, 0, 20000), +(9300193, 2388005, 1, 4, 0, 20000), +(9500310, 2388005, 1, 4, 0, 20000), +(9500344, 2388005, 1, 4, 0, 20000), +(5220003, 4004001, 1, 1, 0, 3000), +(9300193, 4004001, 1, 1, 0, 3000), +(9500310, 4004001, 1, 1, 0, 3000), +(9500344, 4004001, 1, 1, 0, 3000), +(5220003, 4010003, 1, 1, 0, 7000), +(9300193, 4010003, 1, 1, 0, 7000), +(9500310, 4010003, 1, 1, 0, 7000), +(9500344, 4010003, 1, 1, 0, 7000), +(5220003, 4020006, 1, 1, 0, 7000), +(9300193, 4020006, 1, 1, 0, 7000), +(9500310, 4020006, 1, 1, 0, 7000), +(9500344, 4020006, 1, 1, 0, 7000), +(5220003, 1302011, 1, 1, 0, 40000), +(9300193, 1302011, 1, 1, 0, 40000), +(9500310, 1302011, 1, 1, 0, 40000), +(9500344, 1302011, 1, 1, 0, 40000), +(5220003, 1312009, 1, 1, 0, 40000), +(9300193, 1312009, 1, 1, 0, 40000), +(9500310, 1312009, 1, 1, 0, 40000), +(9500344, 1312009, 1, 1, 0, 40000), +(5220003, 1322018, 1, 1, 0, 40000), +(9300193, 1322018, 1, 1, 0, 40000), +(9500310, 1322018, 1, 1, 0, 40000), +(9500344, 1322018, 1, 1, 0, 40000), +(5220003, 1302056, 1, 1, 0, 40000), +(9300193, 1302056, 1, 1, 0, 40000), +(9500310, 1302056, 1, 1, 0, 40000), +(9500344, 1302056, 1, 1, 0, 40000), +(5220003, 1412007, 1, 1, 0, 40000), +(9300193, 1412007, 1, 1, 0, 40000), +(9500310, 1412007, 1, 1, 0, 40000), +(9500344, 1412007, 1, 1, 0, 40000), +(5220003, 1422009, 1, 1, 0, 40000), +(9300193, 1422009, 1, 1, 0, 40000), +(9500310, 1422009, 1, 1, 0, 40000), +(9500344, 1422009, 1, 1, 0, 40000), +(5220003, 1432006, 1, 1, 0, 40000), +(9300193, 1432006, 1, 1, 0, 40000), +(9500310, 1432006, 1, 1, 0, 40000), +(9500344, 1432006, 1, 1, 0, 40000), +(5220003, 1442010, 1, 1, 0, 40000), +(9300193, 1442010, 1, 1, 0, 40000), +(9500310, 1442010, 1, 1, 0, 40000), +(9500344, 1442010, 1, 1, 0, 40000), +(5220003, 1372014, 1, 1, 0, 40000), +(9300193, 1372014, 1, 1, 0, 40000), +(9500310, 1372014, 1, 1, 0, 40000), +(9500344, 1372014, 1, 1, 0, 40000), +(5220003, 1452004, 1, 1, 0, 40000), +(9300193, 1452004, 1, 1, 0, 40000), +(9500310, 1452004, 1, 1, 0, 40000), +(9500344, 1452004, 1, 1, 0, 40000), +(5220003, 1462008, 1, 1, 0, 40000), +(9300193, 1462008, 1, 1, 0, 40000), +(9500310, 1462008, 1, 1, 0, 40000), +(9500344, 1462008, 1, 1, 0, 40000), +(5220003, 1332015, 1, 1, 0, 40000), +(9300193, 1332015, 1, 1, 0, 40000), +(9500310, 1332015, 1, 1, 0, 40000), +(9500344, 1332015, 1, 1, 0, 40000), +(5220003, 1472025, 1, 1, 0, 40000), +(9300193, 1472025, 1, 1, 0, 40000), +(9500310, 1472025, 1, 1, 0, 40000), +(9500344, 1472025, 1, 1, 0, 40000), +(5220003, 1482008, 1, 1, 0, 40000), +(9300193, 1482008, 1, 1, 0, 40000), +(9500310, 1482008, 1, 1, 0, 40000), +(9500344, 1482008, 1, 1, 0, 40000), +(5220003, 1492008, 1, 1, 0, 40000), +(9300193, 1492008, 1, 1, 0, 40000), +(9500310, 1492008, 1, 1, 0, 40000), +(9500344, 1492008, 1, 1, 0, 40000), +(9420531, 4000469, 1, 1, 0, 200000), +(9420550, 4000469, 1, 1, 0, 200000), +(9420531, 4003005, 1, 1, 0, 7000), +(9420550, 4003005, 1, 1, 0, 7000), +(9420531, 2000006, 1, 1, 0, 40000), +(9420550, 2000006, 1, 1, 0, 40000), +(9420531, 2000005, 1, 1, 0, 40000), +(9420550, 2000005, 1, 1, 0, 40000), +(9420531, 2000002, 1, 1, 0, 40000), +(9420550, 2000002, 1, 1, 0, 40000), +(9420531, 1092012, 1, 1, 0, 700), +(9420550, 1092012, 1, 1, 0, 700), +(9420532, 4000470, 1, 1, 0, 200000), +(9420545, 4000470, 1, 1, 0, 200000), +(9420532, 2000006, 1, 1, 0, 40000), +(9420545, 2000006, 1, 1, 0, 40000), +(9420532, 2330004, 1, 1, 0, 400), +(9420545, 2330004, 1, 1, 0, 400), +(9420532, 1072149, 1, 1, 0, 700), +(9420545, 1072149, 1, 1, 0, 700), +(9420532, 1002244, 1, 1, 0, 700), +(9420545, 1002244, 1, 1, 0, 700), +(9420532, 1051046, 1, 1, 0, 700), +(9420545, 1051046, 1, 1, 0, 700), +(9420532, 1051047, 1, 1, 0, 700), +(9420545, 1051047, 1, 1, 0, 700), +(9420532, 1002270, 1, 1, 0, 700), +(9420545, 1002270, 1, 1, 0, 700), +(9420532, 1061094, 1, 1, 0, 700), +(9420545, 1061094, 1, 1, 0, 700), +(9420532, 1041095, 1, 1, 0, 700), +(9420545, 1041095, 1, 1, 0, 700), +(9420532, 1052107, 1, 1, 0, 700), +(9420545, 1052107, 1, 1, 0, 700), +(9400003, 2022017, 1, 1, 0, 3000), +(9400003, 2020010, 1, 1, 0, 3000), +(9400003, 2022027, 1, 1, 0, 3000), +(9400003, 4006000, 1, 1, 0, 7000), +(9400003, 4006001, 1, 1, 0, 7000), +(9400003, 2070005, 1, 1, 0, 400), +(9400003, 2041040, 1, 1, 0, 750), +(9400003, 2040522, 1, 1, 0, 750), +(9400003, 2040017, 1, 1, 0, 750), +(9400003, 2041043, 1, 1, 0, 750), +(9400003, 2044709, 1, 1, 0, 750), +(9400003, 2043309, 1, 1, 0, 750), +(9400003, 4004003, 1, 1, 0, 3000), +(9400003, 4020002, 1, 1, 0, 7000), +(9400003, 1332030, 1, 1, 0, 700), +(9400003, 1302013, 1, 1, 0, 700), +(9400003, 1041091, 1, 1, 0, 700), +(9400003, 1302012, 1, 1, 0, 700), +(9400003, 1002246, 1, 1, 0, 700), +(9400003, 1050060, 1, 1, 0, 700), +(9400003, 1041096, 1, 1, 0, 700), +(9400003, 1002247, 1, 1, 0, 700), +(9400003, 1092020, 1, 1, 0, 700), +(6130100, 4000014, 1, 1, 0, 200000), +(9500125, 4000014, 1, 1, 0, 200000), +(6130100, 4000030, 1, 1, 0, 200000), +(9500125, 4000030, 1, 1, 0, 200000), +(6130100, 2050099, 1, 1, 0, 3000), +(9500125, 2050099, 1, 1, 0, 3000), +(6130100, 2000006, 1, 1, 0, 40000), +(9500125, 2000006, 1, 1, 0, 40000), +(6130100, 2000004, 1, 1, 0, 40000), +(9500125, 2000004, 1, 1, 0, 40000), +(6130100, 2070005, 1, 1, 0, 400), +(9500125, 2070005, 1, 1, 0, 400), +(6130100, 2040901, 1, 1, 0, 750), +(9500125, 2040901, 1, 1, 0, 750), +(6130100, 2040301, 1, 1, 0, 750), +(9500125, 2040301, 1, 1, 0, 750), +(6130100, 2040302, 1, 1, 0, 750), +(9500125, 2040302, 1, 1, 0, 750), +(6130100, 2331000, 1, 1, 0, 0), +(9500125, 2331000, 1, 1, 0, 0), +(6130100, 2383044, 1, 1, 0, 20000), +(9500125, 2383044, 1, 1, 0, 20000), +(6130100, 4010005, 1, 1, 0, 7000), +(9500125, 4010005, 1, 1, 0, 7000), +(6130100, 4020007, 1, 1, 0, 7000), +(9500125, 4020007, 1, 1, 0, 7000), +(6130100, 1102022, 1, 1, 0, 700), +(9500125, 1102022, 1, 1, 0, 700), +(6130100, 1072148, 1, 1, 0, 700), +(9500125, 1072148, 1, 1, 0, 700), +(6130100, 1040103, 1, 1, 0, 700), +(9500125, 1040103, 1, 1, 0, 700), +(6130100, 1060091, 1, 1, 0, 700), +(9500125, 1060091, 1, 1, 0, 700), +(6130100, 1332016, 1, 1, 0, 700), +(9500125, 1332016, 1, 1, 0, 700), +(6130100, 1092004, 1, 1, 0, 700), +(9500125, 1092004, 1, 1, 0, 700), +(6130100, 1372014, 1, 1, 0, 700), +(9500125, 1372014, 1, 1, 0, 700), +(6130100, 1002246, 1, 1, 0, 700), +(9500125, 1002246, 1, 1, 0, 700), +(6130100, 1372012, 1, 1, 0, 700), +(9500125, 1372012, 1, 1, 0, 700), +(6130100, 1072160, 1, 1, 0, 700), +(9500125, 1072160, 1, 1, 0, 700), +(6130100, 1072136, 1, 1, 0, 700), +(9500125, 1072136, 1, 1, 0, 700), +(6130100, 1050046, 1, 1, 0, 700), +(9500125, 1050046, 1, 1, 0, 700), +(6130100, 1050056, 1, 1, 0, 700), +(9500125, 1050056, 1, 1, 0, 700), +(6130100, 1040079, 1, 1, 0, 700), +(9500125, 1040079, 1, 1, 0, 700), +(6130100, 1040080, 1, 1, 0, 700), +(9500125, 1040080, 1, 1, 0, 700), +(6130100, 1082106, 1, 1, 0, 700), +(9500125, 1082106, 1, 1, 0, 700), +(6130100, 1072146, 1, 1, 0, 700), +(9500125, 1072146, 1, 1, 0, 700), +(6130100, 1082067, 1, 1, 0, 700), +(9500125, 1082067, 1, 1, 0, 700), +(6130100, 1002248, 1, 1, 0, 700), +(9500125, 1002248, 1, 1, 0, 700), +(6130100, 1041080, 1, 1, 0, 700), +(9500125, 1041080, 1, 1, 0, 700), +(6130100, 1061079, 1, 1, 0, 700), +(9500125, 1061079, 1, 1, 0, 700), +(6130100, 1040100, 1, 1, 0, 700), +(9500125, 1040100, 1, 1, 0, 700), +(6130100, 1060089, 1, 1, 0, 700), +(9500125, 1060089, 1, 1, 0, 700), +(6130100, 1072162, 1, 1, 0, 700), +(9500125, 1072162, 1, 1, 0, 700), +(6130100, 1332016, 1, 1, 0, 700), +(9500125, 1332016, 1, 1, 0, 700), +(6130100, 1040083, 1, 1, 0, 700), +(9500125, 1040083, 1, 1, 0, 700), +(6130100, 1060072, 1, 1, 0, 700), +(9500125, 1060072, 1, 1, 0, 700), +(6130100, 1061102, 1, 1, 0, 700), +(9500125, 1061102, 1, 1, 0, 700), +(6130100, 1482008, 1, 1, 0, 700), +(9500125, 1482008, 1, 1, 0, 700), +(6130101, 4000040, 1, 1, 0, 200000), +(9300191, 4000040, 1, 1, 0, 200000), +(9500124, 4000040, 1, 1, 0, 200000), +(9500326, 4000040, 1, 1, 0, 200000), +(9500345, 4000040, 1, 1, 0, 200000), +(9303004, 4000040, 1, 1, 0, 200000), +(6130101, 4030001, 1, 1, 0, 10000), +(9300191, 4030001, 1, 1, 0, 10000), +(9500124, 4030001, 1, 1, 0, 10000), +(9500326, 4030001, 1, 1, 0, 10000), +(9500345, 4030001, 1, 1, 0, 10000), +(9303004, 4030001, 1, 1, 0, 10000), +(6130101, 2070006, 1, 4, 0, 2500), +(9300191, 2070006, 1, 4, 0, 2500), +(9500124, 2070006, 1, 4, 0, 2500), +(9500326, 2070006, 1, 4, 0, 2500), +(9500345, 2070006, 1, 4, 0, 2500), +(9303004, 2070006, 1, 1, 0, 400), +(6130101, 2040024, 1, 4, 0, 10000), +(9300191, 2040024, 1, 4, 0, 10000), +(9500124, 2040024, 1, 4, 0, 10000), +(9500326, 2040024, 1, 4, 0, 10000), +(9500345, 2040024, 1, 4, 0, 10000), +(9303004, 2040024, 1, 1, 0, 750), +(6130101, 2040804, 1, 4, 0, 10000), +(9300191, 2040804, 1, 4, 0, 10000), +(9500124, 2040804, 1, 4, 0, 10000), +(9500326, 2040804, 1, 4, 0, 10000), +(9500345, 2040804, 1, 4, 0, 10000), +(9303004, 2040804, 1, 1, 0, 750), +(6130101, 2040001, 1, 4, 0, 10000), +(9300191, 2040001, 1, 4, 0, 10000), +(9500124, 2040001, 1, 4, 0, 10000), +(9500326, 2040001, 1, 4, 0, 10000), +(9500345, 2040001, 1, 4, 0, 10000), +(9303004, 2040001, 1, 1, 0, 750), +(6130101, 2040004, 1, 4, 0, 10000), +(9300191, 2040004, 1, 4, 0, 10000), +(9500124, 2040004, 1, 4, 0, 10000), +(9500326, 2040004, 1, 4, 0, 10000), +(9500345, 2040004, 1, 4, 0, 10000), +(9303004, 2040004, 1, 1, 0, 750), +(6130101, 2040504, 1, 4, 0, 10000), +(9300191, 2040504, 1, 4, 0, 10000), +(9500124, 2040504, 1, 4, 0, 10000), +(9500326, 2040504, 1, 4, 0, 10000), +(9500345, 2040504, 1, 4, 0, 10000), +(9303004, 2040504, 1, 1, 0, 750), +(6130101, 2040501, 1, 4, 0, 10000), +(9300191, 2040501, 1, 4, 0, 10000), +(9500124, 2040501, 1, 4, 0, 10000), +(9500326, 2040501, 1, 4, 0, 10000), +(9500345, 2040501, 1, 4, 0, 10000), +(9303004, 2040501, 1, 1, 0, 750), +(6130101, 2040401, 1, 4, 0, 10000), +(9300191, 2040401, 1, 4, 0, 10000), +(9500124, 2040401, 1, 4, 0, 10000), +(9500326, 2040401, 1, 4, 0, 10000), +(9500345, 2040401, 1, 4, 0, 10000), +(9303004, 2040401, 1, 1, 0, 750), +(6130101, 2040601, 1, 4, 0, 10000), +(9300191, 2040601, 1, 4, 0, 10000), +(9500124, 2040601, 1, 4, 0, 10000), +(9500326, 2040601, 1, 4, 0, 10000), +(9500345, 2040601, 1, 4, 0, 10000), +(9303004, 2040601, 1, 1, 0, 750), +(6130101, 2040901, 1, 4, 0, 10000), +(9300191, 2040901, 1, 4, 0, 10000), +(9500124, 2040901, 1, 4, 0, 10000), +(9500326, 2040901, 1, 4, 0, 10000), +(9500345, 2040901, 1, 4, 0, 10000), +(9303004, 2040901, 1, 1, 0, 750), +(6130101, 2040801, 1, 4, 0, 10000), +(9300191, 2040801, 1, 4, 0, 10000), +(9500124, 2040801, 1, 4, 0, 10000), +(9500326, 2040801, 1, 4, 0, 10000), +(9500345, 2040801, 1, 4, 0, 10000), +(9303004, 2040801, 1, 1, 0, 750), +(6130101, 2040707, 1, 4, 0, 10000), +(9300191, 2040707, 1, 4, 0, 10000), +(9500124, 2040707, 1, 4, 0, 10000), +(9500326, 2040707, 1, 4, 0, 10000), +(9500345, 2040707, 1, 4, 0, 10000), +(9303004, 2040707, 1, 1, 0, 750), +(6130101, 2040704, 1, 4, 0, 10000), +(9300191, 2040704, 1, 4, 0, 10000), +(9500124, 2040704, 1, 4, 0, 10000), +(9500326, 2040704, 1, 4, 0, 10000), +(9500345, 2040704, 1, 4, 0, 10000), +(9303004, 2040704, 1, 1, 0, 750), +(6130101, 2040701, 1, 4, 0, 10000), +(9300191, 2040701, 1, 4, 0, 10000), +(9500124, 2040701, 1, 4, 0, 10000), +(9500326, 2040701, 1, 4, 0, 10000), +(9500345, 2040701, 1, 4, 0, 10000), +(9303004, 2040701, 1, 1, 0, 750), +(6130101, 2040301, 1, 4, 0, 10000), +(9300191, 2040301, 1, 4, 0, 10000), +(9500124, 2040301, 1, 4, 0, 10000), +(9500326, 2040301, 1, 4, 0, 10000), +(9500345, 2040301, 1, 4, 0, 10000), +(9303004, 2040301, 1, 1, 0, 750), +(6130101, 2041043, 1, 4, 0, 10000), +(9300191, 2041043, 1, 4, 0, 10000), +(9500124, 2041043, 1, 4, 0, 10000), +(9500326, 2041043, 1, 4, 0, 10000), +(9500345, 2041043, 1, 4, 0, 10000), +(9303004, 2041043, 1, 1, 0, 750), +(6130101, 2041045, 1, 4, 0, 10000), +(9300191, 2041045, 1, 4, 0, 10000), +(9500124, 2041045, 1, 4, 0, 10000), +(9500326, 2041045, 1, 4, 0, 10000), +(9500345, 2041045, 1, 4, 0, 10000), +(9303004, 2041045, 1, 1, 0, 750), +(6130101, 2331000, 1, 4, 0, 0), +(9300191, 2331000, 1, 4, 0, 0), +(9500124, 2331000, 1, 4, 0, 0), +(9500326, 2331000, 1, 4, 0, 0), +(9500345, 2331000, 1, 4, 0, 0), +(9303004, 2331000, 1, 1, 0, 0), +(6130101, 2388006, 1, 4, 0, 20000), +(9300191, 2388006, 1, 4, 0, 20000), +(9500124, 2388006, 1, 4, 0, 20000), +(9500326, 2388006, 1, 4, 0, 20000), +(9500345, 2388006, 1, 4, 0, 20000), +(9303004, 2388006, 1, 1, 0, 20000), +(6130101, 1032013, 1, 1, 0, 40000), +(9300191, 1032013, 1, 1, 0, 40000), +(9500124, 1032013, 1, 1, 0, 40000), +(9500326, 1032013, 1, 1, 0, 40000), +(9500345, 1032013, 1, 1, 0, 40000), +(9303004, 1032013, 1, 1, 0, 700), +(6130101, 1092012, 1, 1, 0, 40000), +(9300191, 1092012, 1, 1, 0, 40000), +(9500124, 1092012, 1, 1, 0, 40000), +(9500326, 1092012, 1, 1, 0, 40000), +(9500345, 1092012, 1, 1, 0, 40000), +(9303004, 1092012, 1, 1, 0, 700), +(6130101, 1372000, 1, 1, 0, 40000), +(9300191, 1372000, 1, 1, 0, 40000), +(9500124, 1372000, 1, 1, 0, 40000), +(9500326, 1372000, 1, 1, 0, 40000), +(9500345, 1372000, 1, 1, 0, 40000), +(9303004, 1372000, 1, 1, 0, 700), +(6130103, 1702131, 1, 1, 0, 700), +(6130103, 2000006, 1, 1, 0, 40000), +(6130103, 2000004, 1, 1, 0, 40000), +(6130103, 2040401, 1, 1, 0, 750), +(6130103, 2383045, 1, 1, 0, 20000), +(6130103, 4010001, 1, 1, 0, 7000), +(6130103, 4020008, 1, 1, 0, 7000), +(6130103, 4004002, 1, 1, 0, 3000), +(6130103, 1102024, 1, 1, 0, 700), +(6130103, 1302012, 1, 1, 0, 700), +(6130103, 1002025, 1, 1, 0, 700), +(6130103, 1040087, 1, 1, 0, 700), +(6130103, 1060076, 1, 1, 0, 700), +(6130103, 1040093, 1, 1, 0, 700), +(6130103, 1060082, 1, 1, 0, 700), +(6130103, 1082060, 1, 1, 0, 700), +(6130103, 1072138, 1, 1, 0, 700), +(6130103, 1050045, 1, 1, 0, 700), +(6130103, 1072157, 1, 1, 0, 700), +(6130103, 1002170, 1, 1, 0, 700), +(6130103, 1002286, 1, 1, 0, 700), +(6130103, 1072145, 1, 1, 0, 700), +(6130103, 1072150, 1, 1, 0, 700), +(6130103, 1040097, 1, 1, 0, 700), +(6130103, 1060086, 1, 1, 0, 700), +(6130103, 1082095, 1, 1, 0, 700), +(6130103, 1472020, 1, 1, 0, 700), +(6130202, 4000173, 1, 1, 0, 200000), +(6130202, 2000006, 1, 1, 0, 40000), +(6130202, 2000004, 1, 1, 0, 40000), +(6130202, 2040004, 1, 1, 0, 750), +(6130202, 2040501, 1, 1, 0, 750), +(6130202, 2040401, 1, 1, 0, 750), +(6130202, 2383046, 1, 1, 0, 20000), +(6130202, 4004002, 1, 1, 0, 3000), +(6130202, 4010001, 1, 1, 0, 7000), +(6130202, 4020008, 1, 1, 0, 7000), +(6130202, 1102018, 1, 1, 0, 700), +(6130202, 1061090, 1, 1, 0, 700), +(6130202, 1040089, 1, 1, 0, 700), +(6130202, 1442009, 1, 1, 0, 700), +(6130202, 1041091, 1, 1, 0, 700), +(6130202, 1082086, 1, 1, 0, 700), +(6130202, 1462006, 1, 1, 0, 700), +(6130202, 1452008, 1, 1, 0, 700), +(6130202, 1040099, 1, 1, 0, 700), +(6130203, 4000283, 1, 1, 0, 200000), +(9300245, 4000283, 1, 1, 0, 200000), +(6130203, 1132003, 1, 1, 0, 700), +(9300245, 1132003, 1, 1, 0, 700), +(6130203, 2070005, 1, 1, 0, 400), +(9300245, 2070005, 1, 1, 0, 400), +(6130203, 2383047, 1, 1, 0, 20000), +(9300245, 2383047, 1, 1, 0, 20000), +(6130203, 4010005, 1, 1, 0, 7000), +(9300245, 4010005, 1, 1, 0, 7000), +(6130203, 4020007, 1, 1, 0, 7000), +(9300245, 4020007, 1, 1, 0, 7000), +(6130203, 1102015, 1, 1, 0, 700), +(9300245, 1102015, 1, 1, 0, 700), +(6130203, 1050056, 1, 1, 0, 700), +(9300245, 1050056, 1, 1, 0, 700), +(6130203, 1072090, 1, 1, 0, 700), +(9300245, 1072090, 1, 1, 0, 700), +(6130203, 1002215, 1, 1, 0, 700), +(9300245, 1002215, 1, 1, 0, 700), +(6130203, 1041083, 1, 1, 0, 700), +(9300245, 1041083, 1, 1, 0, 700), +(6130203, 1061082, 1, 1, 0, 700), +(9300245, 1061082, 1, 1, 0, 700), +(6130203, 1082066, 1, 1, 0, 700), +(9300245, 1082066, 1, 1, 0, 700), +(6130203, 1041079, 1, 1, 0, 700), +(9300245, 1041079, 1, 1, 0, 700), +(6130203, 1061078, 1, 1, 0, 700), +(9300245, 1061078, 1, 1, 0, 700), +(9400561, 2000006, 1, 1, 0, 40000), +(9400561, 2022245, 1, 1, 0, 3000), +(9400561, 2043701, 1, 1, 0, 750), +(9400561, 2330002, 1, 1, 0, 400), +(9400561, 1072148, 1, 1, 0, 700), +(9400561, 1072154, 1, 1, 0, 700), +(9400561, 1041087, 1, 1, 0, 700), +(9400561, 1061086, 1, 1, 0, 700), +(9400561, 1442010, 1, 1, 0, 700), +(9400561, 1082061, 1, 1, 0, 700), +(9400561, 1050047, 1, 1, 0, 700), +(9400561, 1051054, 1, 1, 0, 700), +(9400561, 1050069, 1, 1, 0, 700), +(9400561, 1082091, 1, 1, 0, 700), +(9400561, 1002286, 1, 1, 0, 700), +(9400561, 1002281, 1, 1, 0, 700), +(9400561, 1040096, 1, 1, 0, 700), +(9400561, 1060085, 1, 1, 0, 700), +(9400561, 1002210, 1, 1, 0, 700), +(9400561, 1072303, 1, 1, 0, 700), +(9400561, 1002634, 1, 1, 0, 700), +(9400562, 2022247, 1, 1, 0, 3000), +(9400562, 2000006, 1, 1, 0, 40000), +(9400562, 2043701, 1, 1, 0, 750), +(9400562, 2330002, 1, 1, 0, 400), +(9400562, 1082061, 1, 1, 0, 700), +(9400562, 1072148, 1, 1, 0, 700), +(9400562, 1041087, 1, 1, 0, 700), +(9400562, 1061086, 1, 1, 0, 700), +(9400562, 1442010, 1, 1, 0, 700), +(9400562, 1051034, 1, 1, 0, 700), +(9400562, 1050047, 1, 1, 0, 700), +(9400562, 1051054, 1, 1, 0, 700), +(9400562, 1092029, 1, 1, 0, 700), +(9400562, 1082091, 1, 1, 0, 700), +(9400562, 1002286, 1, 1, 0, 700), +(9400562, 1002281, 1, 1, 0, 700), +(9400562, 1040096, 1, 1, 0, 700), +(9400562, 1060085, 1, 1, 0, 700), +(9400562, 1002210, 1, 1, 0, 700), +(9400562, 1072303, 1, 1, 0, 700), +(9400562, 1002634, 1, 1, 0, 700), +(9420511, 4000382, 1, 1, 0, 200000), +(9420511, 2050099, 1, 1, 0, 3000), +(9420511, 2000006, 1, 1, 0, 40000), +(9420511, 2020028, 1, 1, 0, 3000), +(9420511, 2070005, 1, 1, 0, 400), +(9420511, 4020007, 1, 1, 0, 7000), +(9420511, 4010005, 1, 1, 0, 7000), +(9420511, 1102015, 1, 1, 0, 700), +(9420511, 1102016, 1, 1, 0, 700), +(9420511, 1041098, 1, 1, 0, 700), +(9420511, 1040090, 1, 1, 0, 700), +(9420511, 1002215, 1, 1, 0, 700), +(9420511, 1050055, 1, 1, 0, 700), +(9420511, 1050056, 1, 1, 0, 700), +(9420511, 1072090, 1, 1, 0, 700), +(9420511, 1051031, 1, 1, 0, 700), +(9420511, 1051034, 1, 1, 0, 700), +(9420511, 1382006, 1, 1, 0, 700), +(9420511, 1041083, 1, 1, 0, 700), +(9420511, 1061082, 1, 1, 0, 700), +(9420511, 1041079, 1, 1, 0, 700), +(9420511, 1061078, 1, 1, 0, 700), +(9420511, 1082066, 1, 1, 0, 700), +(9420511, 1492008, 1, 1, 0, 700), +(9400012, 4000223, 1, 1, 0, 200000), +(9400012, 4130005, 1, 1, 0, 3000), +(9400012, 4131003, 1, 1, 0, 3000), +(9400012, 2000006, 1, 1, 0, 40000), +(9400012, 2040602, 1, 1, 0, 750), +(9400012, 2040516, 1, 1, 0, 750), +(9400012, 2040707, 1, 1, 0, 750), +(9400012, 2040720, 1, 1, 0, 750), +(9400012, 2044508, 1, 1, 0, 750), +(9400012, 2040524, 1, 1, 0, 750), +(9400012, 1002084, 1, 1, 0, 700), +(9400012, 1412007, 1, 1, 0, 700), +(9400012, 1041091, 1, 1, 0, 700), +(9400012, 1432006, 1, 1, 0, 700), +(9400012, 1040087, 1, 1, 0, 700), +(9400012, 1382006, 1, 1, 0, 700), +(9400012, 1051046, 1, 1, 0, 700), +(9400012, 1462008, 1, 1, 0, 700), +(9400012, 1002269, 1, 1, 0, 700), +(9400012, 1041095, 1, 1, 0, 700), +(6130200, 4000128, 1, 1, 0, 200000), +(9300315, 4000128, 1, 1, 0, 200000), +(6130200, 4130014, 1, 1, 0, 3000), +(9300315, 4130014, 1, 1, 0, 3000), +(6130200, 2000006, 1, 1, 0, 40000), +(9300315, 2000006, 1, 4, 0, 40000), +(6130200, 2000004, 1, 1, 0, 40000), +(9300315, 2000004, 1, 4, 0, 40000), +(6130200, 4006000, 1, 1, 0, 7000), +(9300315, 4006000, 1, 1, 0, 7000), +(6130200, 2043801, 1, 1, 0, 750), +(9300315, 2043801, 1, 4, 0, 10000), +(6130200, 2384000, 1, 1, 0, 20000), +(9300315, 2384000, 1, 4, 0, 20000), +(6130200, 4020008, 1, 1, 0, 7000), +(9300315, 4020008, 1, 1, 0, 7000), +(6130200, 4010005, 1, 1, 0, 7000), +(9300315, 4010005, 1, 1, 0, 7000), +(6130200, 4004001, 1, 1, 0, 3000), +(9300315, 4004001, 1, 1, 0, 3000), +(6130200, 4010001, 1, 1, 0, 7000), +(9300315, 4010001, 1, 1, 0, 7000), +(6130200, 1032012, 1, 1, 0, 700), +(9300315, 1032012, 1, 1, 0, 40000), +(6130200, 1102015, 1, 1, 0, 700), +(9300315, 1102015, 1, 1, 0, 40000), +(6130200, 1302011, 1, 1, 0, 700), +(9300315, 1302011, 1, 1, 0, 40000), +(6130200, 1002093, 1, 1, 0, 700), +(9300315, 1002093, 1, 1, 0, 40000), +(6130200, 1312010, 1, 1, 0, 700), +(9300315, 1312010, 1, 1, 0, 40000), +(6130200, 1040088, 1, 1, 0, 700), +(9300315, 1040088, 1, 1, 0, 40000), +(6130200, 1060077, 1, 1, 0, 700), +(9300315, 1060077, 1, 1, 0, 40000), +(6130200, 1082061, 1, 1, 0, 700), +(9300315, 1082061, 1, 1, 0, 40000), +(6130200, 1050046, 1, 1, 0, 700), +(9300315, 1050046, 1, 1, 0, 40000), +(6130200, 1050061, 1, 1, 0, 700), +(9300315, 1050061, 1, 1, 0, 40000), +(6130200, 1072122, 1, 1, 0, 700), +(9300315, 1072122, 1, 1, 0, 40000), +(6130200, 1452009, 1, 1, 0, 700), +(9300315, 1452009, 1, 1, 0, 40000), +(6130200, 1332015, 1, 1, 0, 700), +(9300315, 1332015, 1, 1, 0, 40000), +(6130200, 1082094, 1, 1, 0, 700), +(9300315, 1082094, 1, 1, 0, 40000), +(6130200, 1072163, 1, 1, 0, 700), +(9300315, 1072163, 1, 1, 0, 40000), +(6130200, 1002182, 1, 1, 0, 700), +(9300315, 1002182, 1, 1, 0, 40000), +(6130200, 1052122, 1, 1, 0, 700), +(9300315, 1052122, 1, 1, 0, 40000), +(9420533, 2002004, 1, 1, 0, 10000), +(9420533, 2000009, 1, 1, 0, 40000), +(9420533, 2002011, 1, 1, 0, 10000), +(9420533, 2044302, 1, 1, 0, 750), +(9420533, 2048001, 1, 1, 0, 750), +(9420533, 1322012, 1, 1, 0, 700), +(9420533, 1312009, 1, 1, 0, 700), +(9420533, 1432007, 1, 1, 0, 700), +(9420533, 1002254, 1, 1, 0, 700), +(9420533, 1050039, 1, 1, 0, 700), +(9420533, 1051025, 1, 1, 0, 700), +(9420533, 1372008, 1, 1, 0, 700), +(9420533, 1050052, 1, 1, 0, 700), +(9420533, 1051038, 1, 1, 0, 700), +(9420533, 1061095, 1, 1, 0, 700), +(9420533, 1002248, 1, 1, 0, 700), +(9420533, 1002249, 1, 1, 0, 700), +(9420533, 1041096, 1, 1, 0, 700), +(9420533, 1082180, 1, 1, 0, 700), +(6230100, 4000027, 1, 1, 0, 200000), +(6230100, 4030012, 1, 1, 0, 10000), +(6230100, 2000006, 1, 1, 0, 40000), +(6230100, 2070004, 1, 1, 0, 400), +(6230100, 2043201, 1, 1, 0, 750), +(6230100, 2040001, 1, 1, 0, 750), +(6230100, 2043701, 1, 1, 0, 750), +(6230100, 2043801, 1, 1, 0, 750), +(6230100, 2049101, 1, 1, 0, 400), +(6230100, 2384001, 1, 1, 0, 20000), +(6230100, 4010006, 1, 1, 0, 7000), +(6230100, 4020008, 1, 1, 0, 7000), +(6230100, 1102016, 1, 1, 0, 700), +(6230100, 1072148, 1, 1, 0, 700), +(6230100, 1442010, 1, 1, 0, 700), +(6230100, 1072154, 1, 1, 0, 700), +(6230100, 1041087, 1, 1, 0, 700), +(6230100, 1082061, 1, 1, 0, 700), +(6230100, 1051054, 1, 1, 0, 700), +(6230100, 1050047, 1, 1, 0, 700), +(6230100, 1382006, 1, 1, 0, 700), +(6230100, 1452016, 1, 1, 0, 700), +(6230100, 1050060, 1, 1, 0, 700), +(6230100, 1082090, 1, 1, 0, 700), +(6230100, 1082106, 1, 1, 0, 700), +(6230100, 1040095, 1, 1, 0, 700), +(6230100, 1082066, 1, 1, 0, 700), +(6230100, 1472023, 1, 1, 0, 700), +(6230100, 1041103, 1, 1, 0, 700), +(6230100, 1061102, 1, 1, 0, 700), +(6230100, 1082204, 1, 1, 0, 700), +(9400110, 4130012, 1, 1, 0, 3000), +(9400110, 2050001, 1, 1, 0, 3000), +(9400110, 2020008, 1, 1, 0, 3000), +(9400110, 2070004, 1, 1, 0, 400), +(9400110, 2041039, 1, 1, 0, 750), +(9400110, 2040913, 1, 1, 0, 750), +(9400110, 4004002, 1, 1, 0, 3000), +(9400110, 4010004, 1, 1, 0, 7000), +(9400110, 1102002, 1, 1, 0, 700), +(9400110, 1061091, 1, 1, 0, 700), +(9400110, 1402017, 1, 1, 0, 700), +(9400110, 1002029, 1, 1, 0, 700), +(9400110, 1082023, 1, 1, 0, 700), +(9400110, 1412009, 1, 1, 0, 700), +(9400110, 1452010, 1, 1, 0, 700), +(9400110, 1002167, 1, 1, 0, 700), +(9400110, 1002207, 1, 1, 0, 700), +(6130207, 4000282, 1, 1, 0, 200000), +(9300165, 4000282, 1, 1, 0, 200000), +(6130207, 4000021, 1, 1, 0, 200000), +(9300165, 4000021, 1, 1, 0, 200000), +(6130207, 4003005, 1, 1, 0, 7000), +(9300165, 4003005, 1, 1, 0, 7000), +(6130207, 4130006, 1, 1, 0, 3000), +(9300165, 4130006, 1, 1, 0, 3000), +(6130207, 4130007, 1, 1, 0, 3000), +(9300165, 4130007, 1, 1, 0, 3000), +(6130207, 2000002, 1, 1, 0, 40000), +(9300165, 2000002, 1, 1, 0, 40000), +(6130207, 2000006, 1, 1, 0, 40000), +(9300165, 2000006, 1, 1, 0, 40000), +(6130207, 2044113, 1, 1, 0, 750), +(9300165, 2044113, 1, 1, 0, 750), +(6130207, 2043701, 1, 1, 0, 750), +(9300165, 2043701, 1, 1, 0, 750), +(6130207, 2040330, 1, 1, 0, 750), +(9300165, 2040330, 1, 1, 0, 750), +(6130207, 2330003, 1, 1, 0, 400), +(9300165, 2330003, 1, 1, 0, 400), +(6130207, 2384002, 1, 1, 0, 20000), +(9300165, 2384002, 1, 1, 0, 20000), +(6130207, 4020004, 1, 1, 0, 7000), +(9300165, 4020004, 1, 1, 0, 7000), +(6130207, 1032011, 1, 1, 0, 700), +(9300165, 1032011, 1, 1, 0, 700), +(6130207, 1102017, 1, 1, 0, 700), +(9300165, 1102017, 1, 1, 0, 700), +(6130207, 1051030, 1, 1, 0, 700), +(9300165, 1051030, 1, 1, 0, 700), +(6130207, 1051046, 1, 1, 0, 700), +(9300165, 1051046, 1, 1, 0, 700), +(6130207, 1452008, 1, 1, 0, 700), +(9300165, 1452008, 1, 1, 0, 700), +(6130207, 1040109, 1, 1, 0, 700), +(9300165, 1040109, 1, 1, 0, 700), +(6130207, 1060098, 1, 1, 0, 700), +(9300165, 1060098, 1, 1, 0, 700), +(6130207, 1002210, 1, 1, 0, 700), +(9300165, 1002210, 1, 1, 0, 700), +(6130207, 1072309, 1, 1, 0, 700), +(9300165, 1072309, 1, 1, 0, 700), +(6090003, 2384039, 1, 4, 0, 20000), +(6230400, 4000143, 1, 1, 0, 200000), +(9300316, 4000143, 1, 1, 0, 200000), +(6230400, 4000021, 1, 1, 0, 200000), +(9300316, 4000021, 1, 1, 0, 200000), +(6230400, 2000004, 1, 1, 0, 40000), +(9300316, 2000004, 1, 4, 0, 40000), +(6230400, 2000002, 1, 1, 0, 40000), +(9300316, 2000002, 1, 4, 0, 40000), +(6230400, 2002000, 1, 1, 0, 10000), +(9300316, 2002000, 1, 4, 0, 10000), +(6230400, 2040804, 1, 1, 0, 750), +(9300316, 2040804, 1, 4, 0, 10000), +(6230400, 2044904, 1, 1, 0, 750), +(9300316, 2044904, 1, 4, 0, 10000), +(6230400, 2040516, 1, 1, 0, 750), +(9300316, 2040516, 1, 4, 0, 10000), +(6230400, 2040530, 1, 1, 0, 750), +(9300316, 2040530, 1, 4, 0, 10000), +(6230400, 2040925, 1, 1, 0, 750), +(9300316, 2040925, 1, 4, 0, 10000), +(6230400, 2043802, 1, 1, 0, 750), +(9300316, 2043802, 1, 4, 0, 10000), +(6230400, 2040424, 1, 1, 0, 750), +(9300316, 2040424, 1, 4, 0, 10000), +(6230400, 2384004, 1, 1, 0, 20000), +(9300316, 2384004, 1, 4, 0, 20000), +(6230400, 4010006, 1, 1, 0, 7000), +(9300316, 4010006, 1, 1, 0, 7000), +(6230400, 4010000, 1, 1, 0, 7000), +(9300316, 4010000, 1, 1, 0, 7000), +(6230400, 4020003, 1, 1, 0, 7000), +(9300316, 4020003, 1, 1, 0, 7000), +(6230400, 4020004, 1, 1, 0, 7000), +(9300316, 4020004, 1, 1, 0, 7000), +(6230400, 4004000, 1, 1, 0, 3000), +(9300316, 4004000, 1, 1, 0, 3000), +(6230400, 1102017, 1, 1, 0, 700), +(9300316, 1102017, 1, 1, 0, 40000), +(6230400, 1032014, 1, 1, 0, 700), +(9300316, 1032014, 1, 1, 0, 40000), +(6230400, 1032020, 1, 1, 0, 700), +(9300316, 1032020, 1, 1, 0, 40000), +(6230400, 1322018, 1, 1, 0, 700), +(9300316, 1322018, 1, 1, 0, 40000), +(6230400, 1002085, 1, 1, 0, 700), +(9300316, 1002085, 1, 1, 0, 40000), +(6230400, 1041098, 1, 1, 0, 700), +(9300316, 1041098, 1, 1, 0, 40000), +(6230400, 1061097, 1, 1, 0, 700), +(9300316, 1061097, 1, 1, 0, 40000), +(6230400, 1072149, 1, 1, 0, 700), +(9300316, 1072149, 1, 1, 0, 40000), +(6230400, 1372014, 1, 1, 0, 700), +(9300316, 1372014, 1, 1, 0, 40000), +(6230400, 1082099, 1, 1, 0, 700), +(9300316, 1082099, 1, 1, 0, 40000), +(6230400, 1050049, 1, 1, 0, 700), +(9300316, 1050049, 1, 1, 0, 40000), +(6230400, 1051034, 1, 1, 0, 700), +(9300316, 1051034, 1, 1, 0, 40000), +(6230400, 1082086, 1, 1, 0, 700), +(9300316, 1082086, 1, 1, 0, 40000), +(6230400, 1002286, 1, 1, 0, 700), +(9300316, 1002286, 1, 1, 0, 40000), +(6230400, 1072166, 1, 1, 0, 700), +(9300316, 1072166, 1, 1, 0, 40000), +(6230400, 1051037, 1, 1, 0, 700), +(9300316, 1051037, 1, 1, 0, 40000), +(6230400, 1082091, 1, 1, 0, 700), +(9300316, 1082091, 1, 1, 0, 40000), +(6230400, 1040096, 1, 1, 0, 700), +(9300316, 1040096, 1, 1, 0, 40000), +(6230400, 1060085, 1, 1, 0, 700), +(9300316, 1060085, 1, 1, 0, 40000), +(6230400, 1472024, 1, 1, 0, 700), +(9300316, 1472024, 1, 1, 0, 40000), +(6230400, 1002249, 1, 1, 0, 700), +(9300316, 1002249, 1, 1, 0, 40000), +(6230400, 1002281, 1, 1, 0, 700), +(9300316, 1002281, 1, 1, 0, 40000), +(6230400, 1002210, 1, 1, 0, 700), +(9300316, 1002210, 1, 1, 0, 40000), +(6230400, 1492009, 1, 1, 0, 700), +(9300316, 1492009, 1, 1, 0, 40000), +(6230602, 4000207, 1, 1, 0, 200000), +(6230602, 4030012, 1, 1, 0, 10000), +(6230602, 2000002, 1, 1, 0, 40000), +(6230602, 2000004, 1, 1, 0, 40000), +(6230602, 2002000, 1, 1, 0, 10000), +(6230602, 2040804, 1, 1, 0, 750), +(6230602, 2043802, 1, 1, 0, 750), +(6230602, 2330002, 1, 1, 0, 400), +(6230602, 2384003, 1, 1, 0, 20000), +(6230602, 4010000, 1, 1, 0, 7000), +(6230602, 4020003, 1, 1, 0, 7000), +(6230602, 1092011, 1, 1, 0, 700), +(6230602, 1082103, 1, 1, 0, 700), +(6230602, 1302011, 1, 1, 0, 700), +(6230602, 1002084, 1, 1, 0, 700), +(6230602, 1082010, 1, 1, 0, 700), +(6230602, 1082082, 1, 1, 0, 700), +(6230602, 1082098, 1, 1, 0, 700), +(6230602, 1002246, 1, 1, 0, 700), +(6230602, 1082106, 1, 1, 0, 700), +(6230602, 1002269, 1, 1, 0, 700), +(6230602, 1082085, 1, 1, 0, 700), +(6230602, 1472023, 1, 1, 0, 700), +(6230602, 1032011, 1, 1, 0, 700), +(6230602, 1002248, 1, 1, 0, 700), +(6230602, 1082096, 1, 1, 0, 700), +(6230602, 1002285, 1, 1, 0, 700), +(6230602, 1072306, 1, 1, 0, 700), +(6230602, 1482009, 1, 1, 0, 700), +(9420510, 4000379, 1, 1, 0, 200000), +(9420510, 2070004, 1, 1, 0, 400), +(9420510, 2043701, 1, 1, 0, 750), +(9420510, 2000006, 1, 1, 0, 40000), +(9420510, 4010006, 1, 1, 0, 7000), +(9420510, 4004004, 1, 1, 0, 3000), +(9420510, 4020008, 1, 1, 0, 7000), +(9420510, 1032011, 1, 1, 0, 700), +(9420510, 1102017, 1, 1, 0, 700), +(9420510, 1432003, 1, 1, 0, 700), +(9420510, 1312008, 1, 1, 0, 700), +(9420510, 1382007, 1, 1, 0, 700), +(9420510, 1051034, 1, 1, 0, 700), +(9420510, 1051046, 1, 1, 0, 700), +(9420510, 1051047, 1, 1, 0, 700), +(9420510, 1051030, 1, 1, 0, 700), +(9420510, 1051031, 1, 1, 0, 700), +(9420510, 1452008, 1, 1, 0, 700), +(9420510, 1041068, 1, 1, 0, 700), +(9420510, 1061063, 1, 1, 0, 700), +(9420510, 1002249, 1, 1, 0, 700), +(9420510, 1002210, 1, 1, 0, 700), +(9420510, 1002209, 1, 1, 0, 700), +(9420510, 1040109, 1, 1, 0, 700), +(9420510, 1060098, 1, 1, 0, 700), +(9420510, 1040084, 1, 1, 0, 700), +(9420510, 1060073, 1, 1, 0, 700), +(6090004, 4000419, 1, 1, 0, 200000), +(6090004, 2384040, 1, 4, 0, 20000), +(6230200, 4000057, 1, 1, 0, 200000), +(6230200, 2000006, 1, 1, 0, 40000), +(6230200, 2000004, 1, 1, 0, 40000), +(6230200, 4006000, 1, 1, 0, 7000), +(6230200, 2384007, 1, 1, 0, 20000), +(6230200, 4010004, 1, 1, 0, 7000), +(6230200, 4020000, 1, 1, 0, 7000), +(6230200, 4004003, 1, 1, 0, 3000), +(6230200, 4004004, 1, 1, 0, 3000), +(6230200, 1102018, 1, 1, 0, 700), +(6230200, 1002100, 1, 1, 0, 700), +(6230200, 1092011, 1, 1, 0, 700), +(6230200, 1050055, 1, 1, 0, 700), +(6230200, 1002216, 1, 1, 0, 700), +(6230200, 1382001, 1, 1, 0, 700), +(6230200, 1002218, 1, 1, 0, 700), +(6230200, 1082087, 1, 1, 0, 700), +(6230200, 1082088, 1, 1, 0, 700), +(6230200, 1002268, 1, 1, 0, 700), +(6230200, 1472023, 1, 1, 0, 700), +(6230200, 1472025, 1, 1, 0, 700), +(6230200, 1041094, 1, 1, 0, 700), +(6230200, 1472020, 1, 1, 0, 700), +(9400111, 2050000, 1, 1, 0, 3000), +(9400111, 2041041, 1, 1, 0, 750), +(9400111, 2040908, 1, 1, 0, 750), +(9400111, 4004001, 1, 1, 0, 3000), +(9400111, 4020008, 1, 1, 0, 7000), +(9400111, 1402001, 1, 1, 0, 700), +(9400111, 1092004, 1, 1, 0, 700), +(9400111, 1302011, 1, 1, 0, 700), +(9400111, 1002217, 1, 1, 0, 700), +(9400111, 1082062, 1, 1, 0, 700), +(9400111, 1092021, 1, 1, 0, 700), +(9400111, 1050055, 1, 1, 0, 700), +(9400111, 1452018, 1, 1, 0, 700), +(9400111, 1061082, 1, 1, 0, 700), +(9400111, 1462009, 1, 1, 0, 700), +(9400111, 1051041, 1, 1, 0, 700), +(6230600, 4000185, 1, 1, 0, 200000), +(9500126, 4000185, 1, 1, 0, 200000), +(6230600, 4000030, 1, 1, 0, 200000), +(9500126, 4000030, 1, 1, 0, 200000), +(6230600, 4030012, 1, 1, 0, 10000), +(9500126, 4030012, 1, 1, 0, 10000), +(6230600, 2000006, 1, 1, 0, 40000), +(9500126, 2000006, 1, 1, 0, 40000), +(6230600, 2000004, 1, 1, 0, 40000), +(9500126, 2000004, 1, 1, 0, 40000), +(6230600, 2040001, 1, 1, 0, 750), +(9500126, 2040001, 1, 1, 0, 750), +(6230600, 4006000, 1, 1, 0, 7000), +(9500126, 4006000, 1, 1, 0, 7000), +(6230600, 2331000, 1, 1, 0, 0), +(9500126, 2331000, 1, 1, 0, 0), +(6230600, 2384006, 1, 1, 0, 20000), +(9500126, 2384006, 1, 1, 0, 20000), +(6230600, 4020005, 1, 1, 0, 7000), +(9500126, 4020005, 1, 1, 0, 7000), +(6230600, 4010006, 1, 1, 0, 7000), +(9500126, 4010006, 1, 1, 0, 7000), +(6230600, 4020007, 1, 1, 0, 7000), +(9500126, 4020007, 1, 1, 0, 7000), +(6230600, 4010004, 1, 1, 0, 7000), +(9500126, 4010004, 1, 1, 0, 7000), +(6230600, 1040091, 1, 1, 0, 700), +(9500126, 1040091, 1, 1, 0, 700), +(6230600, 1041097, 1, 1, 0, 700), +(9500126, 1041097, 1, 1, 0, 700), +(6230600, 1061096, 1, 1, 0, 700), +(9500126, 1061096, 1, 1, 0, 700), +(6230600, 1061083, 1, 1, 0, 700), +(9500126, 1061083, 1, 1, 0, 700), +(6230600, 1041091, 1, 1, 0, 700), +(9500126, 1041091, 1, 1, 0, 700), +(6230600, 1051046, 1, 1, 0, 700), +(9500126, 1051046, 1, 1, 0, 700), +(6230600, 1072158, 1, 1, 0, 700), +(9500126, 1072158, 1, 1, 0, 700), +(6230600, 1051043, 1, 1, 0, 700), +(9500126, 1051043, 1, 1, 0, 700), +(6230600, 1462008, 1, 1, 0, 700), +(9500126, 1462008, 1, 1, 0, 700), +(6230600, 1002208, 1, 1, 0, 700), +(9500126, 1002208, 1, 1, 0, 700), +(6230600, 1472024, 1, 1, 0, 700), +(9500126, 1472024, 1, 1, 0, 700), +(6230600, 1040094, 1, 1, 0, 700), +(9500126, 1040094, 1, 1, 0, 700), +(6230600, 1060083, 1, 1, 0, 700), +(9500126, 1060083, 1, 1, 0, 700), +(6230600, 1082095, 1, 1, 0, 700), +(9500126, 1082095, 1, 1, 0, 700), +(6230600, 1002634, 1, 1, 0, 700), +(9500126, 1002634, 1, 1, 0, 700), +(6130204, 4000021, 1, 1, 0, 200000), +(6130204, 2000004, 1, 1, 0, 40000), +(6130204, 2000006, 1, 1, 0, 40000), +(6130204, 2000002, 1, 1, 0, 40000), +(6130204, 2040301, 1, 1, 0, 750), +(6130204, 2043001, 1, 1, 0, 750), +(6130204, 2330003, 1, 1, 0, 400), +(6130204, 2384008, 1, 1, 0, 20000), +(6130204, 4010006, 1, 1, 0, 7000), +(6130204, 4020004, 1, 1, 0, 7000), +(6130204, 4004000, 1, 1, 0, 3000), +(6130204, 1040104, 1, 1, 0, 700), +(6130204, 1060092, 1, 1, 0, 700), +(6130204, 1040093, 1, 1, 0, 700), +(6130204, 1060082, 1, 1, 0, 700), +(6130204, 1302056, 1, 1, 0, 700), +(6130204, 1082062, 1, 1, 0, 700), +(6130204, 1051064, 1, 1, 0, 700), +(6130204, 1051065, 1, 1, 0, 700), +(6130204, 1040107, 1, 1, 0, 700), +(6130204, 1060095, 1, 1, 0, 700), +(6130204, 1052119, 1, 1, 0, 700), +(6090001, 2384037, 1, 4, 0, 20000), +(6300000, 4000049, 1, 1, 0, 200000), +(9300258, 4000049, 1, 1, 0, 200000), +(6300000, 4000021, 1, 1, 0, 200000), +(9300258, 4000021, 1, 1, 0, 200000), +(6300000, 2000006, 1, 1, 0, 40000), +(9300258, 2000006, 1, 1, 0, 40000), +(6300000, 2384009, 1, 1, 0, 20000), +(9300258, 2384009, 1, 1, 0, 20000), +(6300000, 4010000, 1, 1, 0, 7000), +(9300258, 4010000, 1, 1, 0, 7000), +(6300000, 4020007, 1, 1, 0, 7000), +(9300258, 4020007, 1, 1, 0, 7000), +(6300000, 4004000, 1, 1, 0, 3000), +(9300258, 4004000, 1, 1, 0, 3000), +(6300000, 4005004, 1, 1, 0, 7000), +(9300258, 4005004, 1, 1, 0, 7000), +(6300000, 1032019, 1, 1, 0, 700), +(9300258, 1032019, 1, 1, 0, 700), +(6300000, 1032020, 1, 1, 0, 700), +(9300258, 1032020, 1, 1, 0, 700), +(6300000, 1102022, 1, 1, 0, 700), +(9300258, 1102022, 1, 1, 0, 700), +(6300000, 1041089, 1, 1, 0, 700), +(9300258, 1041089, 1, 1, 0, 700), +(6300000, 1432006, 1, 1, 0, 700), +(9300258, 1432006, 1, 1, 0, 700), +(6300000, 1432007, 1, 1, 0, 700), +(9300258, 1432007, 1, 1, 0, 700), +(6300000, 1082060, 1, 1, 0, 700), +(9300258, 1082060, 1, 1, 0, 700), +(6300000, 1060092, 1, 1, 0, 700), +(9300258, 1060092, 1, 1, 0, 700), +(6300000, 1040104, 1, 1, 0, 700), +(9300258, 1040104, 1, 1, 0, 700), +(6300000, 1002022, 1, 1, 0, 700), +(9300258, 1002022, 1, 1, 0, 700), +(6300000, 1050045, 1, 1, 0, 700), +(9300258, 1050045, 1, 1, 0, 700), +(6300000, 1051047, 1, 1, 0, 700), +(9300258, 1051047, 1, 1, 0, 700), +(6300000, 1050068, 1, 1, 0, 700), +(9300258, 1050068, 1, 1, 0, 700), +(6300000, 1382007, 1, 1, 0, 700), +(9300258, 1382007, 1, 1, 0, 700), +(6300000, 1072157, 1, 1, 0, 700), +(9300258, 1072157, 1, 1, 0, 700), +(6300000, 1462008, 1, 1, 0, 700), +(9300258, 1462008, 1, 1, 0, 700), +(6300000, 1051062, 1, 1, 0, 700), +(9300258, 1051062, 1, 1, 0, 700), +(6300000, 1082107, 1, 1, 0, 700), +(9300258, 1082107, 1, 1, 0, 700), +(6300000, 1472024, 1, 1, 0, 700), +(9300258, 1472024, 1, 1, 0, 700), +(6300000, 1472025, 1, 1, 0, 700), +(9300258, 1472025, 1, 1, 0, 700), +(6300000, 1032011, 1, 1, 0, 700), +(9300258, 1032011, 1, 1, 0, 700), +(6300000, 1040099, 1, 1, 0, 700), +(9300258, 1040099, 1, 1, 0, 700), +(6300000, 1060088, 1, 1, 0, 700), +(9300258, 1060088, 1, 1, 0, 700), +(6300005, 2011000, 1, 4, 0, 0), +(9300196, 2011000, 1, 4, 0, 0), +(6300005, 2043801, 1, 4, 0, 10000), +(9300196, 2043801, 1, 4, 0, 10000), +(6300005, 2043701, 1, 4, 0, 10000), +(9300196, 2043701, 1, 4, 0, 10000), +(6300005, 2043201, 1, 4, 0, 10000), +(9300196, 2043201, 1, 4, 0, 10000), +(6300005, 2043001, 1, 4, 0, 10000), +(9300196, 2043001, 1, 4, 0, 10000), +(6300005, 2044101, 1, 4, 0, 10000), +(9300196, 2044101, 1, 4, 0, 10000), +(6300005, 2044001, 1, 4, 0, 10000), +(9300196, 2044001, 1, 4, 0, 10000), +(6300005, 2044201, 1, 4, 0, 10000), +(9300196, 2044201, 1, 4, 0, 10000), +(6300005, 2044701, 1, 4, 0, 10000), +(9300196, 2044701, 1, 4, 0, 10000), +(6300005, 2043301, 1, 4, 0, 10000), +(9300196, 2043301, 1, 4, 0, 10000), +(6300005, 2044601, 1, 4, 0, 10000), +(9300196, 2044601, 1, 4, 0, 10000), +(6300005, 2044501, 1, 4, 0, 10000), +(9300196, 2044501, 1, 4, 0, 10000), +(6300005, 2044401, 1, 4, 0, 10000), +(9300196, 2044401, 1, 4, 0, 10000), +(6300005, 2044301, 1, 4, 0, 10000), +(9300196, 2044301, 1, 4, 0, 10000), +(6300005, 2044902, 1, 4, 0, 10000), +(9300196, 2044902, 1, 4, 0, 10000), +(6300005, 2044803, 1, 4, 0, 10000), +(9300196, 2044803, 1, 4, 0, 10000), +(6300005, 2048004, 1, 4, 0, 10000), +(9300196, 2048004, 1, 4, 0, 10000), +(6300005, 2048001, 1, 4, 0, 10000), +(9300196, 2048001, 1, 4, 0, 10000), +(6300005, 2070006, 1, 4, 0, 2500), +(9300196, 2070006, 1, 4, 0, 2500), +(6300005, 2070007, 1, 4, 0, 2500), +(9300196, 2070007, 1, 4, 0, 2500), +(6300005, 2331000, 1, 4, 0, 0), +(9300196, 2331000, 1, 4, 0, 0), +(6300005, 1102024, 1, 1, 0, 40000), +(9300196, 1102024, 1, 1, 0, 40000), +(6300005, 1032014, 1, 1, 0, 40000), +(9300196, 1032014, 1, 1, 0, 40000), +(6300005, 1092016, 1, 1, 0, 40000), +(9300196, 1092016, 1, 1, 0, 40000), +(6300005, 1092010, 1, 1, 0, 40000), +(9300196, 1092010, 1, 1, 0, 40000), +(6300005, 1302004, 1, 1, 0, 40000), +(9300196, 1302004, 1, 1, 0, 40000), +(6090000, 4000336, 1, 1, 0, 200000), +(6090000, 2384010, 1, 4, 0, 20000), +(6110300, 4000354, 1, 1, 0, 200000), +(9300145, 4000354, 1, 1, 0, 200000), +(6110300, 2000006, 1, 1, 0, 40000), +(9300145, 2000006, 1, 1, 0, 40000), +(6110300, 2049101, 1, 1, 0, 400), +(9300145, 2049101, 1, 1, 0, 400), +(6110300, 2384011, 1, 1, 0, 20000), +(9300145, 2384011, 1, 1, 0, 20000), +(6110300, 4010000, 1, 1, 0, 7000), +(9300145, 4010000, 1, 1, 0, 7000), +(6110300, 4020007, 1, 1, 0, 7000), +(9300145, 4020007, 1, 1, 0, 7000), +(6110300, 4004000, 1, 1, 0, 3000), +(9300145, 4004000, 1, 1, 0, 3000), +(6110300, 1032019, 1, 1, 0, 700), +(9300145, 1032019, 1, 1, 0, 700), +(6110300, 1032020, 1, 1, 0, 700), +(9300145, 1032020, 1, 1, 0, 700), +(6110300, 1102022, 1, 1, 0, 700), +(9300145, 1102022, 1, 1, 0, 700), +(6110300, 1041089, 1, 1, 0, 700), +(9300145, 1041089, 1, 1, 0, 700), +(6110300, 1432006, 1, 1, 0, 700), +(9300145, 1432006, 1, 1, 0, 700), +(6110300, 1040104, 1, 1, 0, 700), +(9300145, 1040104, 1, 1, 0, 700), +(6110300, 1060092, 1, 1, 0, 700), +(9300145, 1060092, 1, 1, 0, 700), +(6110300, 1002022, 1, 1, 0, 700), +(9300145, 1002022, 1, 1, 0, 700), +(6110300, 1051047, 1, 1, 0, 700), +(9300145, 1051047, 1, 1, 0, 700), +(6110300, 1382007, 1, 1, 0, 700), +(9300145, 1382007, 1, 1, 0, 700), +(6110300, 1072157, 1, 1, 0, 700), +(9300145, 1072157, 1, 1, 0, 700), +(6110300, 1462008, 1, 1, 0, 700), +(9300145, 1462008, 1, 1, 0, 700), +(6110300, 1051062, 1, 1, 0, 700), +(9300145, 1051062, 1, 1, 0, 700), +(6110300, 1082107, 1, 1, 0, 700), +(9300145, 1082107, 1, 1, 0, 700), +(6110300, 1072079, 1, 1, 0, 700), +(9300145, 1072079, 1, 1, 0, 700), +(6110300, 1472024, 1, 1, 0, 700), +(9300145, 1472024, 1, 1, 0, 700), +(6110300, 1472026, 1, 1, 0, 700), +(9300145, 1472026, 1, 1, 0, 700), +(6110300, 1032011, 1, 1, 0, 700), +(9300145, 1032011, 1, 1, 0, 700), +(6110300, 1040099, 1, 1, 0, 700), +(9300145, 1040099, 1, 1, 0, 700), +(6110300, 1060088, 1, 1, 0, 700), +(9300145, 1060088, 1, 1, 0, 700), +(6110300, 1072306, 1, 1, 0, 700), +(9300145, 1072306, 1, 1, 0, 700), +(6220000, 4000033, 1, 1, 0, 200000), +(9300194, 4000033, 1, 1, 0, 200000), +(9500311, 4000033, 1, 1, 0, 200000), +(9500346, 4000033, 1, 1, 0, 200000), +(6220000, 4000032, 1, 1, 0, 200000), +(9300194, 4000032, 1, 1, 0, 200000), +(9500311, 4000032, 1, 1, 0, 200000), +(9500346, 4000032, 1, 1, 0, 200000), +(6220000, 4000021, 1, 1, 0, 200000), +(9300194, 4000021, 1, 1, 0, 200000), +(9500311, 4000021, 1, 1, 0, 200000), +(9500346, 4000021, 1, 1, 0, 200000), +(6220000, 2002001, 1, 4, 0, 10000), +(9300194, 2002001, 1, 4, 0, 10000), +(9500311, 2002001, 1, 4, 0, 10000), +(9500346, 2002001, 1, 4, 0, 10000), +(6220000, 2040614, 1, 4, 0, 10000), +(9300194, 2040614, 1, 4, 0, 10000), +(9500311, 2040614, 1, 4, 0, 10000), +(9500346, 2040614, 1, 4, 0, 10000), +(6220000, 2044502, 1, 4, 0, 10000), +(9300194, 2044502, 1, 4, 0, 10000), +(9500311, 2044502, 1, 4, 0, 10000), +(9500346, 2044502, 1, 4, 0, 10000), +(6220000, 2041008, 1, 4, 0, 10000), +(9300194, 2041008, 1, 4, 0, 10000), +(9500311, 2041008, 1, 4, 0, 10000), +(9500346, 2041008, 1, 4, 0, 10000), +(6220000, 2041043, 1, 4, 0, 10000), +(9300194, 2041043, 1, 4, 0, 10000), +(9500311, 2041043, 1, 4, 0, 10000), +(9500346, 2041043, 1, 4, 0, 10000), +(6220000, 2044601, 1, 4, 0, 10000), +(9300194, 2044601, 1, 4, 0, 10000), +(9500311, 2044601, 1, 4, 0, 10000), +(9500346, 2044601, 1, 4, 0, 10000), +(6220000, 2044702, 1, 4, 0, 10000), +(9300194, 2044702, 1, 4, 0, 10000), +(9500311, 2044702, 1, 4, 0, 10000), +(9500346, 2044702, 1, 4, 0, 10000), +(6220000, 2044701, 1, 4, 0, 10000), +(9300194, 2044701, 1, 4, 0, 10000), +(9500311, 2044701, 1, 4, 0, 10000), +(9500346, 2044701, 1, 4, 0, 10000), +(6220000, 2043301, 1, 4, 0, 10000), +(9300194, 2043301, 1, 4, 0, 10000), +(9500311, 2043301, 1, 4, 0, 10000), +(9500346, 2043301, 1, 4, 0, 10000), +(6220000, 2040804, 1, 4, 0, 10000), +(9300194, 2040804, 1, 4, 0, 10000), +(9500311, 2040804, 1, 4, 0, 10000), +(9500346, 2040804, 1, 4, 0, 10000), +(6220000, 2040033, 1, 4, 0, 10000), +(9300194, 2040033, 1, 4, 0, 10000), +(9500311, 2040033, 1, 4, 0, 10000), +(9500346, 2040033, 1, 4, 0, 10000), +(6220000, 2040004, 1, 4, 0, 10000), +(9300194, 2040004, 1, 4, 0, 10000), +(9500311, 2040004, 1, 4, 0, 10000), +(9500346, 2040004, 1, 4, 0, 10000), +(6220000, 2040501, 1, 4, 0, 10000), +(9300194, 2040501, 1, 4, 0, 10000), +(9500311, 2040501, 1, 4, 0, 10000), +(9500346, 2040501, 1, 4, 0, 10000), +(6220000, 2040516, 1, 4, 0, 10000), +(9300194, 2040516, 1, 4, 0, 10000), +(9500311, 2040516, 1, 4, 0, 10000), +(9500346, 2040516, 1, 4, 0, 10000), +(6220000, 2048002, 1, 4, 0, 10000), +(9300194, 2048002, 1, 4, 0, 10000), +(9500311, 2048002, 1, 4, 0, 10000), +(9500346, 2048002, 1, 4, 0, 10000), +(6220000, 2044401, 1, 4, 0, 10000), +(9300194, 2044401, 1, 4, 0, 10000), +(9500311, 2044401, 1, 4, 0, 10000), +(9500346, 2044401, 1, 4, 0, 10000), +(6220000, 2040702, 1, 4, 0, 10000), +(9300194, 2040702, 1, 4, 0, 10000), +(9500311, 2040702, 1, 4, 0, 10000), +(9500346, 2040702, 1, 4, 0, 10000), +(6220000, 2044313, 1, 4, 0, 10000), +(9300194, 2044313, 1, 4, 0, 10000), +(9500311, 2044313, 1, 4, 0, 10000), +(9500346, 2044313, 1, 4, 0, 10000), +(6220000, 2044001, 1, 4, 0, 10000), +(9300194, 2044001, 1, 4, 0, 10000), +(9500311, 2044001, 1, 4, 0, 10000), +(9500346, 2044001, 1, 4, 0, 10000), +(6220000, 2388007, 1, 4, 0, 20000), +(9300194, 2388007, 1, 4, 0, 20000), +(9500311, 2388007, 1, 4, 0, 20000), +(9500346, 2388007, 1, 4, 0, 20000), +(6220000, 4010002, 1, 1, 0, 7000), +(9300194, 4010002, 1, 1, 0, 7000), +(9500311, 4010002, 1, 1, 0, 7000), +(9500346, 4010002, 1, 1, 0, 7000), +(6220000, 4020003, 1, 1, 0, 7000), +(9300194, 4020003, 1, 1, 0, 7000), +(9500311, 4020003, 1, 1, 0, 7000), +(9500346, 4020003, 1, 1, 0, 7000), +(6220000, 1322019, 1, 1, 0, 40000), +(9300194, 1322019, 1, 1, 0, 40000), +(9500311, 1322019, 1, 1, 0, 40000), +(9500346, 1322019, 1, 1, 0, 40000), +(6220000, 1312010, 1, 1, 0, 40000), +(9300194, 1312010, 1, 1, 0, 40000), +(9500311, 1312010, 1, 1, 0, 40000), +(9500346, 1312010, 1, 1, 0, 40000), +(6220000, 1302012, 1, 1, 0, 40000), +(9300194, 1302012, 1, 1, 0, 40000), +(9500311, 1302012, 1, 1, 0, 40000), +(9500346, 1302012, 1, 1, 0, 40000), +(6220000, 1402012, 1, 1, 0, 40000), +(9300194, 1402012, 1, 1, 0, 40000), +(9500311, 1402012, 1, 1, 0, 40000), +(9500346, 1402012, 1, 1, 0, 40000), +(6220000, 1412008, 1, 1, 0, 40000), +(9300194, 1412008, 1, 1, 0, 40000), +(9500311, 1412008, 1, 1, 0, 40000), +(9500346, 1412008, 1, 1, 0, 40000), +(6220000, 1422010, 1, 1, 0, 40000), +(9300194, 1422010, 1, 1, 0, 40000), +(9500311, 1422010, 1, 1, 0, 40000), +(9500346, 1422010, 1, 1, 0, 40000), +(6220000, 1432007, 1, 1, 0, 40000), +(9300194, 1432007, 1, 1, 0, 40000), +(9500311, 1432007, 1, 1, 0, 40000), +(9500346, 1432007, 1, 1, 0, 40000), +(6220000, 1442008, 1, 1, 0, 40000), +(9300194, 1442008, 1, 1, 0, 40000), +(9500311, 1442008, 1, 1, 0, 40000), +(9500346, 1442008, 1, 1, 0, 40000), +(6220000, 1372015, 1, 1, 0, 40000), +(9300194, 1372015, 1, 1, 0, 40000), +(9500311, 1372015, 1, 1, 0, 40000), +(9500346, 1372015, 1, 1, 0, 40000), +(6220000, 1382010, 1, 1, 0, 40000), +(9300194, 1382010, 1, 1, 0, 40000), +(9500311, 1382010, 1, 1, 0, 40000), +(9500346, 1382010, 1, 1, 0, 40000), +(6220000, 1452011, 1, 1, 0, 40000), +(9300194, 1452011, 1, 1, 0, 40000), +(9500311, 1452011, 1, 1, 0, 40000), +(9500346, 1452011, 1, 1, 0, 40000), +(6220000, 1462009, 1, 1, 0, 40000), +(9300194, 1462009, 1, 1, 0, 40000), +(9500311, 1462009, 1, 1, 0, 40000), +(9500346, 1462009, 1, 1, 0, 40000), +(6220000, 1332018, 1, 1, 0, 40000), +(9300194, 1332018, 1, 1, 0, 40000), +(9500311, 1332018, 1, 1, 0, 40000), +(9500346, 1332018, 1, 1, 0, 40000), +(6220000, 1472029, 1, 1, 0, 40000), +(9300194, 1472029, 1, 1, 0, 40000), +(9500311, 1472029, 1, 1, 0, 40000), +(9500346, 1472029, 1, 1, 0, 40000), +(6220000, 1482009, 1, 1, 0, 40000), +(9300194, 1482009, 1, 1, 0, 40000), +(9500311, 1482009, 1, 1, 0, 40000), +(9500346, 1482009, 1, 1, 0, 40000), +(6220000, 1492009, 1, 1, 0, 40000), +(9300194, 1492009, 1, 1, 0, 40000), +(9500311, 1492009, 1, 1, 0, 40000), +(9500346, 1492009, 1, 1, 0, 40000), +(6220001, 4000117, 1, 1, 0, 200000), +(9300197, 4000117, 1, 1, 0, 200000), +(9500347, 4000117, 1, 1, 0, 200000), +(9303007, 4000117, 1, 1, 0, 200000), +(6220001, 4000118, 1, 1, 0, 200000), +(9300197, 4000118, 1, 1, 0, 200000), +(9500347, 4000118, 1, 1, 0, 200000), +(9303007, 4000118, 1, 1, 0, 200000), +(6220001, 4000119, 1, 1, 0, 200000), +(9300197, 4000119, 1, 1, 0, 200000), +(9500347, 4000119, 1, 1, 0, 200000), +(9303007, 4000119, 1, 1, 0, 200000), +(6220001, 2000002, 1, 4, 0, 40000), +(9300197, 2000002, 1, 4, 0, 40000), +(9500347, 2000002, 1, 4, 0, 40000), +(9303007, 2000002, 1, 1, 0, 40000), +(6220001, 2000003, 1, 4, 0, 40000), +(9300197, 2000003, 1, 4, 0, 40000), +(9500347, 2000003, 1, 4, 0, 40000), +(9303007, 2000003, 1, 1, 0, 40000), +(6220001, 2043101, 1, 4, 0, 10000), +(9300197, 2043101, 1, 4, 0, 10000), +(9500347, 2043101, 1, 4, 0, 10000), +(9303007, 2043101, 1, 1, 0, 750), +(6220001, 2043301, 1, 4, 0, 10000), +(9300197, 2043301, 1, 4, 0, 10000), +(9500347, 2043301, 1, 4, 0, 10000), +(9303007, 2043301, 1, 1, 0, 750), +(6220001, 2044902, 1, 4, 0, 10000), +(9300197, 2044902, 1, 4, 0, 10000), +(9500347, 2044902, 1, 4, 0, 10000), +(9303007, 2044902, 1, 1, 0, 750), +(6220001, 2044401, 1, 4, 0, 10000), +(9300197, 2044401, 1, 4, 0, 10000), +(9500347, 2044401, 1, 4, 0, 10000), +(9303007, 2044401, 1, 1, 0, 750), +(6220001, 2044301, 1, 4, 0, 10000), +(9300197, 2044301, 1, 4, 0, 10000), +(9500347, 2044301, 1, 4, 0, 10000), +(9303007, 2044301, 1, 1, 0, 750), +(6220001, 2040804, 1, 4, 0, 10000), +(9300197, 2040804, 1, 4, 0, 10000), +(9500347, 2040804, 1, 4, 0, 10000), +(9303007, 2040804, 1, 1, 0, 750), +(6220001, 2040516, 1, 4, 0, 10000), +(9300197, 2040516, 1, 4, 0, 10000), +(9500347, 2040516, 1, 4, 0, 10000), +(9303007, 2040516, 1, 1, 0, 750), +(6220001, 2041016, 1, 4, 0, 10000), +(9300197, 2041016, 1, 4, 0, 10000), +(9500347, 2041016, 1, 4, 0, 10000), +(9303007, 2041016, 1, 1, 0, 750), +(6220001, 2040707, 1, 4, 0, 10000), +(9300197, 2040707, 1, 4, 0, 10000), +(9500347, 2040707, 1, 4, 0, 10000), +(9303007, 2040707, 1, 1, 0, 750), +(6220001, 2040413, 1, 4, 0, 10000), +(9300197, 2040413, 1, 4, 0, 10000), +(9500347, 2040413, 1, 4, 0, 10000), +(9303007, 2040413, 1, 1, 0, 750), +(6220001, 2040927, 1, 4, 0, 10000), +(9300197, 2040927, 1, 4, 0, 10000), +(9500347, 2040927, 1, 4, 0, 10000), +(9303007, 2040927, 1, 1, 0, 750), +(6220001, 2043216, 1, 4, 0, 10000), +(9300197, 2043216, 1, 4, 0, 10000), +(9500347, 2043216, 1, 4, 0, 10000), +(9303007, 2043216, 1, 1, 0, 750), +(6220001, 2049000, 1, 4, 0, 2500), +(9300197, 2049000, 1, 4, 0, 2500), +(9500347, 2049000, 1, 4, 0, 2500), +(9303007, 2049000, 1, 1, 0, 400), +(6220001, 2388031, 1, 4, 0, 20000), +(9300197, 2388031, 1, 4, 0, 20000), +(9500347, 2388031, 1, 4, 0, 20000), +(9303007, 2388031, 1, 1, 0, 20000), +(6220001, 2330003, 1, 4, 0, 2500), +(9300197, 2330003, 1, 4, 0, 2500), +(9500347, 2330003, 1, 4, 0, 2500), +(9303007, 2330003, 1, 1, 0, 400), +(6220001, 2070004, 1, 4, 0, 2500), +(9300197, 2070004, 1, 4, 0, 2500), +(9500347, 2070004, 1, 4, 0, 2500), +(9303007, 2070004, 1, 1, 0, 400), +(6220001, 4004001, 1, 1, 0, 3000), +(9300197, 4004001, 1, 1, 0, 3000), +(9500347, 4004001, 1, 1, 0, 3000), +(9303007, 4004001, 1, 1, 0, 3000), +(6220001, 4004000, 1, 1, 0, 3000), +(9300197, 4004000, 1, 1, 0, 3000), +(9500347, 4004000, 1, 1, 0, 3000), +(9303007, 4004000, 1, 1, 0, 3000), +(6220001, 1302049, 1, 1, 0, 40000), +(9300197, 1302049, 1, 1, 0, 40000), +(9500347, 1302049, 1, 1, 0, 40000), +(9303007, 1302049, 1, 1, 0, 700), +(6220001, 1002024, 1, 1, 0, 40000), +(9300197, 1002024, 1, 1, 0, 40000), +(9500347, 1002024, 1, 1, 0, 40000), +(9303007, 1002024, 1, 1, 0, 700), +(6220001, 1002095, 1, 1, 0, 40000), +(9300197, 1002095, 1, 1, 0, 40000), +(9500347, 1002095, 1, 1, 0, 40000), +(9303007, 1002095, 1, 1, 0, 700), +(6220001, 1002254, 1, 1, 0, 40000), +(9300197, 1002254, 1, 1, 0, 40000), +(9500347, 1002254, 1, 1, 0, 40000), +(9303007, 1002254, 1, 1, 0, 700), +(6220001, 1082100, 1, 1, 0, 40000), +(9300197, 1082100, 1, 1, 0, 40000), +(9500347, 1082100, 1, 1, 0, 40000), +(9303007, 1082100, 1, 1, 0, 700), +(6220001, 1002289, 1, 1, 0, 40000), +(9300197, 1002289, 1, 1, 0, 40000), +(9500347, 1002289, 1, 1, 0, 40000), +(9303007, 1002289, 1, 1, 0, 700), +(6220001, 1002285, 1, 1, 0, 40000), +(9300197, 1002285, 1, 1, 0, 40000), +(9500347, 1002285, 1, 1, 0, 40000), +(9303007, 1002285, 1, 1, 0, 700), +(9420534, 4130013, 1, 1, 0, 3000), +(9420534, 2000004, 1, 1, 0, 40000), +(9420534, 2000002, 1, 1, 0, 40000), +(9420534, 4006000, 1, 1, 0, 7000), +(9420534, 4020008, 1, 1, 0, 7000), +(9420534, 4004004, 1, 1, 0, 3000), +(9420534, 4010002, 1, 1, 0, 7000), +(9420534, 1032011, 1, 1, 0, 700), +(9420534, 1082104, 1, 1, 0, 700), +(9420534, 1072041, 1, 1, 0, 700), +(9420534, 1050068, 1, 1, 0, 700), +(9420534, 1002254, 1, 1, 0, 700), +(9420534, 1041103, 1, 1, 0, 700), +(9420534, 1061102, 1, 1, 0, 700), +(6230300, 4000129, 1, 1, 0, 200000), +(9300317, 4000129, 1, 1, 0, 200000), +(6230300, 4031189, 1, 1, 0, 7000), +(9300317, 4031189, 1, 1, 0, 7000), +(6230300, 2000002, 1, 1, 0, 40000), +(9300317, 2000002, 1, 4, 0, 40000), +(6230300, 2043701, 1, 1, 0, 750), +(9300317, 2043701, 1, 4, 0, 10000), +(6230300, 2040301, 1, 1, 0, 750), +(9300317, 2040301, 1, 4, 0, 10000), +(6230300, 2384012, 1, 1, 0, 20000), +(9300317, 2384012, 1, 4, 0, 20000), +(6230300, 4020008, 1, 1, 0, 7000), +(9300317, 4020008, 1, 1, 0, 7000), +(6230300, 4010006, 1, 1, 0, 7000), +(9300317, 4010006, 1, 1, 0, 7000), +(6230300, 4004003, 1, 1, 0, 3000), +(9300317, 4004003, 1, 1, 0, 3000), +(6230300, 4004004, 1, 1, 0, 3000), +(9300317, 4004004, 1, 1, 0, 3000), +(6230300, 1032015, 1, 1, 0, 700), +(9300317, 1032015, 1, 1, 0, 40000), +(6230300, 1102024, 1, 1, 0, 700), +(9300317, 1102024, 1, 1, 0, 40000), +(6230300, 1322026, 1, 1, 0, 700), +(9300317, 1322026, 1, 1, 0, 40000), +(6230300, 1432012, 1, 1, 0, 700), +(9300317, 1432012, 1, 1, 0, 40000), +(6230300, 1432007, 1, 1, 0, 700), +(9300317, 1432007, 1, 1, 0, 40000), +(6230300, 1040089, 1, 1, 0, 700), +(9300317, 1040089, 1, 1, 0, 40000), +(6230300, 1060078, 1, 1, 0, 700), +(9300317, 1060078, 1, 1, 0, 40000), +(6230300, 1082060, 1, 1, 0, 700), +(9300317, 1082060, 1, 1, 0, 40000), +(6230300, 1002101, 1, 1, 0, 700), +(9300317, 1002101, 1, 1, 0, 40000), +(6230300, 1051031, 1, 1, 0, 700), +(9300317, 1051031, 1, 1, 0, 40000), +(6230300, 1082087, 1, 1, 0, 700), +(9300317, 1082087, 1, 1, 0, 40000), +(6230300, 1002242, 1, 1, 0, 700), +(9300317, 1002242, 1, 1, 0, 40000), +(6230300, 1051042, 1, 1, 0, 700), +(9300317, 1051042, 1, 1, 0, 40000), +(6230300, 1072125, 1, 1, 0, 700), +(9300317, 1072125, 1, 1, 0, 40000), +(6230300, 1082065, 1, 1, 0, 700), +(9300317, 1082065, 1, 1, 0, 40000), +(6230300, 1072152, 1, 1, 0, 700), +(9300317, 1072152, 1, 1, 0, 40000), +(6230300, 1040099, 1, 1, 0, 700), +(9300317, 1040099, 1, 1, 0, 40000), +(6230300, 1060088, 1, 1, 0, 700), +(9300317, 1060088, 1, 1, 0, 40000), +(6230300, 1082096, 1, 1, 0, 700), +(9300317, 1082096, 1, 1, 0, 40000), +(6230300, 1482008, 1, 1, 0, 700), +(9300317, 1482008, 1, 1, 0, 40000), +(6130209, 4000289, 1, 1, 0, 200000), +(9300163, 4000289, 1, 1, 0, 200000), +(9300248, 4000289, 1, 1, 0, 200000), +(6130209, 4130017, 1, 1, 0, 3000), +(9300163, 4130017, 1, 1, 0, 3000), +(9300248, 4130017, 1, 1, 0, 3000), +(6130209, 2040301, 1, 1, 0, 750), +(9300163, 2040301, 1, 1, 0, 750), +(9300248, 2040301, 1, 1, 0, 750), +(6130209, 2384013, 1, 1, 0, 20000), +(9300163, 2384013, 1, 1, 0, 20000), +(9300248, 2384013, 1, 1, 0, 20000), +(6130209, 4020004, 1, 1, 0, 7000), +(9300163, 4020004, 1, 1, 0, 7000), +(9300248, 4020004, 1, 1, 0, 7000), +(6130209, 4020002, 1, 1, 0, 7000), +(9300163, 4020002, 1, 1, 0, 7000), +(9300248, 4020002, 1, 1, 0, 7000), +(6130209, 1032014, 1, 1, 0, 700), +(9300163, 1032014, 1, 1, 0, 700), +(9300248, 1032014, 1, 1, 0, 700), +(6130209, 1092015, 1, 1, 0, 700), +(9300163, 1092015, 1, 1, 0, 700), +(9300248, 1092015, 1, 1, 0, 700), +(6130209, 1040096, 1, 1, 0, 700), +(9300163, 1040096, 1, 1, 0, 700), +(9300248, 1040096, 1, 1, 0, 700), +(6130209, 1060085, 1, 1, 0, 700), +(9300163, 1060085, 1, 1, 0, 700), +(9300248, 1060085, 1, 1, 0, 700), +(6130209, 1332019, 1, 1, 0, 700), +(9300163, 1332019, 1, 1, 0, 700), +(9300248, 1332019, 1, 1, 0, 700), +(6130209, 1472031, 1, 1, 0, 700), +(9300163, 1472031, 1, 1, 0, 700), +(9300248, 1472031, 1, 1, 0, 700), +(6130209, 1492008, 1, 1, 0, 700), +(9300163, 1492008, 1, 1, 0, 700), +(9300248, 1492008, 1, 1, 0, 700), +(6230500, 4000144, 1, 1, 0, 200000), +(9300318, 4000144, 1, 1, 0, 200000), +(9500127, 4000144, 1, 1, 0, 200000), +(6230500, 4000021, 1, 1, 0, 200000), +(9300318, 4000021, 1, 1, 0, 200000), +(9500127, 4000021, 1, 1, 0, 200000), +(6230500, 2000002, 1, 1, 0, 40000), +(9300318, 2000002, 1, 4, 0, 40000), +(9500127, 2000002, 1, 1, 0, 40000), +(6230500, 2000004, 1, 1, 0, 40000), +(9300318, 2000004, 1, 4, 0, 40000), +(9500127, 2000004, 1, 1, 0, 40000), +(6230500, 4006000, 1, 1, 0, 7000), +(9300318, 4006000, 1, 1, 0, 7000), +(9500127, 4006000, 1, 1, 0, 7000), +(6230500, 2043301, 1, 1, 0, 750), +(9300318, 2043301, 1, 4, 0, 10000), +(9500127, 2043301, 1, 1, 0, 750), +(6230500, 2041022, 1, 1, 0, 750), +(9300318, 2041022, 1, 4, 0, 10000), +(9500127, 2041022, 1, 1, 0, 750), +(6230500, 2384014, 1, 1, 0, 20000), +(9300318, 2384014, 1, 4, 0, 20000), +(9500127, 2384014, 1, 1, 0, 20000), +(6230500, 4020006, 1, 1, 0, 7000), +(9300318, 4020006, 1, 1, 0, 7000), +(9500127, 4020006, 1, 1, 0, 7000), +(6230500, 4010006, 1, 1, 0, 7000), +(9300318, 4010006, 1, 1, 0, 7000), +(9500127, 4010006, 1, 1, 0, 7000), +(6230500, 4004004, 1, 1, 0, 3000), +(9300318, 4004004, 1, 1, 0, 3000), +(9500127, 4004004, 1, 1, 0, 3000), +(6230500, 1032020, 1, 1, 0, 700), +(9300318, 1032020, 1, 1, 0, 40000), +(9500127, 1032020, 1, 1, 0, 700), +(6230500, 1040091, 1, 1, 0, 700), +(9300318, 1040091, 1, 1, 0, 40000), +(9500127, 1040091, 1, 1, 0, 700), +(6230500, 1060080, 1, 1, 0, 700), +(9300318, 1060080, 1, 1, 0, 40000), +(9500127, 1060080, 1, 1, 0, 700), +(6230500, 1082103, 1, 1, 0, 700), +(9300318, 1082103, 1, 1, 0, 40000), +(9500127, 1082103, 1, 1, 0, 700), +(6230500, 1002244, 1, 1, 0, 700), +(9300318, 1002244, 1, 1, 0, 40000), +(9500127, 1002244, 1, 1, 0, 700), +(6230500, 1050049, 1, 1, 0, 700), +(9300318, 1050049, 1, 1, 0, 40000), +(9500127, 1050049, 1, 1, 0, 700), +(6230500, 1072159, 1, 1, 0, 700), +(9300318, 1072159, 1, 1, 0, 40000), +(9500127, 1072159, 1, 1, 0, 700), +(6230500, 1002270, 1, 1, 0, 700), +(9300318, 1002270, 1, 1, 0, 40000), +(9500127, 1002270, 1, 1, 0, 700), +(6230500, 1082085, 1, 1, 0, 700), +(9300318, 1082085, 1, 1, 0, 40000), +(9500127, 1082085, 1, 1, 0, 700), +(6230500, 1332019, 1, 1, 0, 700), +(9300318, 1332019, 1, 1, 0, 40000), +(9500127, 1332019, 1, 1, 0, 700), +(6230500, 1002249, 1, 1, 0, 700), +(9300318, 1002249, 1, 1, 0, 40000), +(9500127, 1002249, 1, 1, 0, 700), +(6400000, 4000056, 1, 1, 0, 200000), +(9500128, 4000056, 1, 1, 0, 200000), +(6400000, 4000021, 1, 1, 0, 200000), +(9500128, 4000021, 1, 1, 0, 200000), +(6400000, 4003004, 1, 1, 0, 7000), +(9500128, 4003004, 1, 1, 0, 7000), +(6400000, 4003002, 1, 1, 0, 7000), +(9500128, 4003002, 1, 1, 0, 7000), +(6400000, 2384016, 1, 1, 0, 20000), +(9500128, 2384016, 1, 1, 0, 20000), +(6400000, 4010006, 1, 1, 0, 7000), +(9500128, 4010006, 1, 1, 0, 7000), +(6400000, 4020003, 1, 1, 0, 7000), +(9500128, 4020003, 1, 1, 0, 7000), +(6400000, 4004001, 1, 1, 0, 3000), +(9500128, 4004001, 1, 1, 0, 3000), +(6400000, 4004004, 1, 1, 0, 3000), +(9500128, 4004004, 1, 1, 0, 3000), +(6400000, 1032015, 1, 1, 0, 700), +(9500128, 1032015, 1, 1, 0, 700), +(6400000, 1072156, 1, 1, 0, 700), +(9500128, 1072156, 1, 1, 0, 700), +(6400000, 1002030, 1, 1, 0, 700), +(9500128, 1002030, 1, 1, 0, 700), +(6400000, 1302011, 1, 1, 0, 700), +(9500128, 1302011, 1, 1, 0, 700), +(6400000, 1002271, 1, 1, 0, 700), +(9500128, 1002271, 1, 1, 0, 700), +(6400000, 1002269, 1, 1, 0, 700), +(9500128, 1002269, 1, 1, 0, 700), +(6400000, 1061099, 1, 1, 0, 700), +(9500128, 1061099, 1, 1, 0, 700), +(6230601, 4000030, 1, 1, 0, 200000), +(6230601, 4030012, 1, 1, 0, 10000), +(6230601, 2000002, 1, 1, 0, 40000), +(6230601, 2000004, 1, 1, 0, 40000), +(6230601, 2041043, 1, 1, 0, 750), +(6230601, 2040401, 1, 1, 0, 750), +(6230601, 2384015, 1, 1, 0, 20000), +(6230601, 4010005, 1, 1, 0, 7000), +(6230601, 4010003, 1, 1, 0, 7000), +(6230601, 4010006, 1, 1, 0, 7000), +(6230601, 4020008, 1, 1, 0, 7000), +(6230601, 1432007, 1, 1, 0, 700), +(6230601, 1040091, 1, 1, 0, 700), +(6230601, 1060080, 1, 1, 0, 700), +(6230601, 1412008, 1, 1, 0, 700), +(6230601, 1092017, 1, 1, 0, 700), +(6230601, 1442010, 1, 1, 0, 700), +(6230601, 1002242, 1, 1, 0, 700), +(6230601, 1372015, 1, 1, 0, 700), +(6230601, 1082098, 1, 1, 0, 700), +(6230601, 1082109, 1, 1, 0, 700), +(6230601, 1002208, 1, 1, 0, 700), +(6230601, 1002247, 1, 1, 0, 700), +(6230601, 1041101, 1, 1, 0, 700), +(6230601, 1061100, 1, 1, 0, 700), +(6230601, 1072172, 1, 1, 0, 700), +(6230601, 1082076, 1, 1, 0, 700), +(6230601, 1052122, 1, 1, 0, 700), +(6130208, 4000296, 1, 1, 0, 200000), +(9300080, 4000296, 1, 1, 0, 200000), +(9300241, 4000296, 1, 1, 0, 200000), +(6130208, 2040705, 1, 1, 0, 750), +(9300080, 2040705, 1, 1, 0, 750), +(9300241, 2040705, 1, 1, 0, 750), +(6130208, 2044904, 1, 1, 0, 750), +(9300080, 2044904, 1, 1, 0, 750), +(9300241, 2044904, 1, 1, 0, 750), +(6130208, 2384017, 1, 1, 0, 20000), +(9300080, 2384017, 1, 1, 0, 20000), +(9300241, 2384017, 1, 1, 0, 20000), +(6130208, 1032015, 1, 1, 0, 700), +(9300080, 1032015, 1, 1, 0, 700), +(9300241, 1032015, 1, 1, 0, 700), +(6130208, 1322018, 1, 1, 0, 700), +(9300080, 1322018, 1, 1, 0, 700), +(9300241, 1322018, 1, 1, 0, 700), +(6130208, 1462008, 1, 1, 0, 700), +(9300080, 1462008, 1, 1, 0, 700), +(9300241, 1462008, 1, 1, 0, 700), +(6130208, 1072080, 1, 1, 0, 700), +(9300080, 1072080, 1, 1, 0, 700), +(9300241, 1072080, 1, 1, 0, 700), +(6130208, 1002289, 1, 1, 0, 700), +(9300080, 1002289, 1, 1, 0, 700), +(9300241, 1002289, 1, 1, 0, 700), +(6130208, 1472027, 1, 1, 0, 700), +(9300080, 1472027, 1, 1, 0, 700), +(9300241, 1472027, 1, 1, 0, 700), +(6130208, 1082204, 1, 1, 0, 700), +(9300080, 1082204, 1, 1, 0, 700), +(9300241, 1082204, 1, 1, 0, 700), +(9420512, 4000383, 1, 1, 0, 200000), +(9420512, 4000381, 1, 1, 0, 200000), +(9420512, 2070005, 1, 1, 0, 400), +(9420512, 2041022, 1, 1, 0, 750), +(9420512, 2043301, 1, 1, 0, 750), +(9420512, 4020006, 1, 1, 0, 7000), +(9420512, 4010006, 1, 1, 0, 7000), +(9420512, 4004004, 1, 1, 0, 3000), +(9420512, 1032015, 1, 1, 0, 700), +(9420512, 1312009, 1, 1, 0, 700), +(9420512, 1040089, 1, 1, 0, 700), +(9420512, 1060078, 1, 1, 0, 700), +(9420512, 1040093, 1, 1, 0, 700), +(9420512, 1302011, 1, 1, 0, 700), +(9420512, 1082082, 1, 1, 0, 700), +(9420512, 1050093, 1, 1, 0, 700), +(9420512, 1452007, 1, 1, 0, 700), +(9420512, 1332015, 1, 1, 0, 700), +(6110301, 4000363, 1, 1, 0, 200000), +(6110301, 2000006, 1, 1, 0, 40000), +(6110301, 2000004, 1, 1, 0, 40000), +(6110301, 2000002, 1, 1, 0, 40000), +(6110301, 2330003, 1, 1, 0, 400), +(6110301, 2043302, 1, 1, 0, 750), +(6110301, 2384018, 1, 1, 0, 20000), +(6110301, 4010002, 1, 1, 0, 7000), +(6110301, 4020005, 1, 1, 0, 7000), +(6110301, 4004001, 1, 1, 0, 3000), +(6110301, 1032015, 1, 1, 0, 700), +(6110301, 1322018, 1, 1, 0, 700), +(6110301, 1051078, 1, 1, 0, 700), +(6110301, 1092015, 1, 1, 0, 700), +(6110301, 1072080, 1, 1, 0, 700), +(6110301, 1462008, 1, 1, 0, 700), +(6110301, 1050088, 1, 1, 0, 700), +(6110301, 1002289, 1, 1, 0, 700), +(6110301, 1472027, 1, 1, 0, 700), +(6110301, 1072085, 1, 1, 0, 700), +(6110301, 1072309, 1, 1, 0, 700), +(9420535, 4030009, 1, 1, 0, 10000), +(9420535, 2000004, 1, 1, 0, 40000), +(9420535, 1032020, 1, 1, 0, 700), +(9420535, 1442009, 1, 1, 0, 700), +(9420535, 1051016, 1, 1, 0, 700), +(9420535, 1072159, 1, 1, 0, 700), +(9420535, 1050070, 1, 1, 0, 700), +(9420535, 1092029, 1, 1, 0, 700), +(9420535, 1082097, 1, 1, 0, 700), +(9420535, 1492009, 1, 1, 0, 700), +(7130100, 4000028, 1, 1, 0, 200000), +(9300249, 4000028, 1, 1, 0, 200000), +(7130100, 2000006, 1, 1, 0, 40000), +(9300249, 2000006, 1, 1, 0, 40000), +(7130100, 2000005, 1, 1, 0, 40000), +(9300249, 2000005, 1, 1, 0, 40000), +(7130100, 2070005, 1, 1, 0, 400), +(9300249, 2070005, 1, 1, 0, 400), +(7130100, 2043001, 1, 1, 0, 750), +(9300249, 2043001, 1, 1, 0, 750), +(7130100, 2043101, 1, 1, 0, 750), +(9300249, 2043101, 1, 1, 0, 750), +(7130100, 2044401, 1, 1, 0, 750), +(9300249, 2044401, 1, 1, 0, 750), +(7130100, 2044301, 1, 1, 0, 750), +(9300249, 2044301, 1, 1, 0, 750), +(7130100, 2049000, 1, 1, 0, 400), +(9300249, 2049000, 1, 1, 0, 400), +(7130100, 4006000, 1, 1, 0, 7000), +(9300249, 4006000, 1, 1, 0, 7000), +(7130100, 2384020, 1, 1, 0, 20000), +(9300249, 2384020, 1, 1, 0, 20000), +(7130100, 4010006, 1, 1, 0, 7000), +(9300249, 4010006, 1, 1, 0, 7000), +(7130100, 1102027, 1, 1, 0, 700), +(9300249, 1102027, 1, 1, 0, 700), +(7130100, 1422014, 1, 1, 0, 700), +(9300249, 1422014, 1, 1, 0, 700), +(7130100, 1041093, 1, 1, 0, 700), +(9300249, 1041093, 1, 1, 0, 700), +(7130100, 1061092, 1, 1, 0, 700), +(9300249, 1061092, 1, 1, 0, 700), +(7130100, 1322019, 1, 1, 0, 700), +(9300249, 1322019, 1, 1, 0, 700), +(7130100, 1002095, 1, 1, 0, 700), +(9300249, 1002095, 1, 1, 0, 700), +(7130100, 1082115, 1, 1, 0, 700), +(9300249, 1082115, 1, 1, 0, 700), +(7130100, 1050067, 1, 1, 0, 700), +(9300249, 1050067, 1, 1, 0, 700), +(7130100, 1382010, 1, 1, 0, 700), +(9300249, 1382010, 1, 1, 0, 700), +(7130100, 1002272, 1, 1, 0, 700), +(9300249, 1002272, 1, 1, 0, 700), +(7130100, 1051055, 1, 1, 0, 700), +(9300249, 1051055, 1, 1, 0, 700), +(7130100, 1452009, 1, 1, 0, 700), +(9300249, 1452009, 1, 1, 0, 700), +(7130100, 1072184, 1, 1, 0, 700), +(9300249, 1072184, 1, 1, 0, 700), +(7130100, 1002287, 1, 1, 0, 700), +(9300249, 1002287, 1, 1, 0, 700), +(7130100, 1051064, 1, 1, 0, 700), +(9300249, 1051064, 1, 1, 0, 700), +(7130100, 1472030, 1, 1, 0, 700), +(9300249, 1472030, 1, 1, 0, 700), +(7130100, 1082118, 1, 1, 0, 700), +(9300249, 1082118, 1, 1, 0, 700), +(7130100, 1472026, 1, 1, 0, 700), +(9300249, 1472026, 1, 1, 0, 700), +(7130100, 1002283, 1, 1, 0, 700), +(9300249, 1002283, 1, 1, 0, 700), +(7130100, 1060089, 1, 1, 0, 700), +(9300249, 1060089, 1, 1, 0, 700), +(7130100, 1072163, 1, 1, 0, 700), +(9300249, 1072163, 1, 1, 0, 700), +(8140200, 4000145, 1, 1, 0, 200000), +(9300319, 4000145, 1, 1, 0, 200000), +(8140200, 2000006, 1, 1, 0, 40000), +(9300319, 2000006, 1, 4, 0, 40000), +(8140200, 2000004, 1, 1, 0, 40000), +(9300319, 2000004, 1, 4, 0, 40000), +(8140200, 2020014, 1, 1, 0, 3000), +(9300319, 2020014, 1, 4, 0, 3000), +(8140200, 2002003, 1, 1, 0, 10000), +(9300319, 2002003, 1, 4, 0, 10000), +(8140200, 4006000, 1, 1, 0, 7000), +(9300319, 4006000, 1, 1, 0, 7000), +(8140200, 4006001, 1, 1, 0, 7000), +(9300319, 4006001, 1, 1, 0, 7000), +(8140200, 2040320, 1, 1, 0, 750), +(9300319, 2040320, 1, 4, 0, 10000), +(8140200, 2040802, 1, 1, 0, 750), +(9300319, 2040802, 1, 4, 0, 10000), +(8140200, 2384019, 1, 1, 0, 20000), +(9300319, 2384019, 1, 4, 0, 20000), +(8140200, 4010001, 1, 1, 0, 7000), +(9300319, 4010001, 1, 1, 0, 7000), +(8140200, 4020001, 1, 1, 0, 7000), +(9300319, 4020001, 1, 1, 0, 7000), +(8140200, 4004003, 1, 1, 0, 3000), +(9300319, 4004003, 1, 1, 0, 3000), +(8140200, 1032015, 1, 1, 0, 700), +(9300319, 1032015, 1, 1, 0, 40000), +(8140200, 1032022, 1, 1, 0, 700), +(9300319, 1032022, 1, 1, 0, 40000), +(8140200, 1082114, 1, 1, 0, 700), +(9300319, 1082114, 1, 1, 0, 40000), +(8140200, 1082104, 1, 1, 0, 700), +(9300319, 1082104, 1, 1, 0, 40000), +(8140200, 1060082, 1, 1, 0, 700), +(9300319, 1060082, 1, 1, 0, 40000), +(8140200, 1060079, 1, 1, 0, 700), +(9300319, 1060079, 1, 1, 0, 40000), +(8140200, 1082059, 1, 1, 0, 700), +(9300319, 1082059, 1, 1, 0, 40000), +(8140200, 1322019, 1, 1, 0, 700), +(9300319, 1322019, 1, 1, 0, 40000), +(8140200, 1050073, 1, 1, 0, 700), +(9300319, 1050073, 1, 1, 0, 40000), +(8140200, 1050054, 1, 1, 0, 700), +(9300319, 1050054, 1, 1, 0, 40000), +(8140200, 1051052, 1, 1, 0, 700), +(9300319, 1051052, 1, 1, 0, 40000), +(8140200, 1072159, 1, 1, 0, 700), +(9300319, 1072159, 1, 1, 0, 40000), +(8140200, 1002270, 1, 1, 0, 700), +(9300319, 1002270, 1, 1, 0, 40000), +(8140200, 1050058, 1, 1, 0, 700), +(9300319, 1050058, 1, 1, 0, 40000), +(8140200, 1051062, 1, 1, 0, 700), +(9300319, 1051062, 1, 1, 0, 40000), +(8140200, 1072144, 1, 1, 0, 700), +(9300319, 1072144, 1, 1, 0, 40000), +(8140200, 1472022, 1, 1, 0, 700), +(9300319, 1472022, 1, 1, 0, 40000), +(8140200, 1072162, 1, 1, 0, 700), +(9300319, 1072162, 1, 1, 0, 40000), +(8140200, 1482009, 1, 1, 0, 700), +(9300319, 1482009, 1, 1, 0, 40000), +(7130400, 4006001, 1, 1, 0, 7000), +(9500158, 4006001, 1, 1, 0, 7000), +(7130400, 4130015, 1, 1, 0, 3000), +(9500158, 4130015, 1, 1, 0, 3000), +(7130400, 4130002, 1, 1, 0, 3000), +(9500158, 4130002, 1, 1, 0, 3000), +(7130400, 4130005, 1, 1, 0, 3000), +(9500158, 4130005, 1, 1, 0, 3000), +(7130400, 2384021, 1, 4, 0, 20000), +(9500158, 2384021, 1, 4, 0, 20000), +(7130400, 2000006, 1, 4, 0, 40000), +(9500158, 2000006, 1, 4, 0, 40000), +(7130400, 2000004, 1, 4, 0, 40000), +(9500158, 2000004, 1, 4, 0, 40000), +(7130400, 2002003, 1, 4, 0, 10000), +(9500158, 2002003, 1, 4, 0, 10000), +(7130400, 2040504, 1, 4, 0, 10000), +(9500158, 2040504, 1, 4, 0, 10000), +(7130400, 2040302, 1, 4, 0, 10000), +(9500158, 2040302, 1, 4, 0, 10000), +(7130400, 4020001, 1, 1, 0, 7000), +(9500158, 4020001, 1, 1, 0, 7000), +(7130400, 4005001, 1, 1, 0, 7000), +(9500158, 4005001, 1, 1, 0, 7000), +(7130400, 4010001, 1, 1, 0, 7000), +(9500158, 4010001, 1, 1, 0, 7000), +(7130400, 4004003, 1, 1, 0, 3000), +(9500158, 4004003, 1, 1, 0, 3000), +(7130400, 1102021, 1, 1, 0, 40000), +(9500158, 1102021, 1, 1, 0, 40000), +(7130400, 1092016, 1, 1, 0, 40000), +(9500158, 1092016, 1, 1, 0, 40000), +(7130400, 1040102, 1, 1, 0, 40000), +(9500158, 1040102, 1, 1, 0, 40000), +(7130400, 1060090, 1, 1, 0, 40000), +(9500158, 1060090, 1, 1, 0, 40000), +(7130400, 1050058, 1, 1, 0, 40000), +(9500158, 1050058, 1, 1, 0, 40000), +(7130400, 1462009, 1, 1, 0, 40000), +(9500158, 1462009, 1, 1, 0, 40000), +(7130400, 1041094, 1, 1, 0, 40000), +(9500158, 1041094, 1, 1, 0, 40000), +(7130400, 1061093, 1, 1, 0, 40000), +(9500158, 1061093, 1, 1, 0, 40000), +(7130400, 1472024, 1, 1, 0, 40000), +(9500158, 1472024, 1, 1, 0, 40000), +(7130400, 1072309, 1, 1, 0, 40000), +(9500158, 1072309, 1, 1, 0, 40000), +(7130401, 4006001, 1, 1, 0, 7000), +(9500130, 4006001, 1, 1, 0, 7000), +(9500159, 4006001, 1, 1, 0, 7000), +(7130401, 4130015, 1, 1, 0, 3000), +(9500130, 4130015, 1, 1, 0, 3000), +(9500159, 4130015, 1, 1, 0, 3000), +(7130401, 4130006, 1, 1, 0, 3000), +(9500130, 4130006, 1, 1, 0, 3000), +(9500159, 4130006, 1, 1, 0, 3000), +(7130401, 2000004, 1, 4, 0, 40000), +(9500130, 2000004, 1, 4, 0, 40000), +(9500159, 2000004, 1, 4, 0, 40000), +(7130401, 2002000, 1, 4, 0, 10000), +(9500130, 2002000, 1, 4, 0, 10000), +(9500159, 2002000, 1, 4, 0, 10000), +(7130401, 2000006, 1, 4, 0, 40000), +(9500130, 2000006, 1, 4, 0, 40000), +(9500159, 2000006, 1, 4, 0, 40000), +(7130401, 2384022, 1, 4, 0, 20000), +(9500130, 2384022, 1, 4, 0, 20000), +(9500159, 2384022, 1, 4, 0, 20000), +(7130401, 2070007, 1, 4, 0, 2500), +(9500130, 2070007, 1, 4, 0, 2500), +(9500159, 2070007, 1, 4, 0, 2500), +(7130401, 2040701, 1, 4, 0, 10000), +(9500130, 2040701, 1, 4, 0, 10000), +(9500159, 2040701, 1, 4, 0, 10000), +(7130401, 2040620, 1, 4, 0, 10000), +(9500130, 2040620, 1, 4, 0, 10000), +(9500159, 2040620, 1, 4, 0, 10000), +(7130401, 2040601, 1, 4, 0, 10000), +(9500130, 2040601, 1, 4, 0, 10000), +(9500159, 2040601, 1, 4, 0, 10000), +(7130401, 2044013, 1, 4, 0, 10000), +(9500130, 2044013, 1, 4, 0, 10000), +(9500159, 2044013, 1, 4, 0, 10000), +(7130401, 4020000, 1, 1, 0, 7000), +(9500130, 4020000, 1, 1, 0, 7000), +(9500159, 4020000, 1, 1, 0, 7000), +(7130401, 4010004, 1, 1, 0, 7000), +(9500130, 4010004, 1, 1, 0, 7000), +(9500159, 4010004, 1, 1, 0, 7000), +(7130401, 4010006, 1, 1, 0, 7000), +(9500130, 4010006, 1, 1, 0, 7000), +(9500159, 4010006, 1, 1, 0, 7000), +(7130401, 4004002, 1, 1, 0, 3000), +(9500130, 4004002, 1, 1, 0, 3000), +(9500159, 4004002, 1, 1, 0, 3000), +(7130401, 1032022, 1, 1, 0, 40000), +(9500130, 1032022, 1, 1, 0, 40000), +(9500159, 1032022, 1, 1, 0, 40000), +(7130401, 1442010, 1, 1, 0, 40000), +(9500130, 1442010, 1, 1, 0, 40000), +(9500159, 1442010, 1, 1, 0, 40000), +(7130401, 1412008, 1, 1, 0, 40000), +(9500130, 1412008, 1, 1, 0, 40000), +(9500159, 1412008, 1, 1, 0, 40000), +(7130401, 1422009, 1, 1, 0, 40000), +(9500130, 1422009, 1, 1, 0, 40000), +(9500159, 1422009, 1, 1, 0, 40000), +(7130401, 1072158, 1, 1, 0, 40000), +(9500130, 1072158, 1, 1, 0, 40000), +(9500159, 1072158, 1, 1, 0, 40000), +(7130401, 1452010, 1, 1, 0, 40000), +(9500130, 1452010, 1, 1, 0, 40000), +(9500159, 1452010, 1, 1, 0, 40000), +(7130401, 1051041, 1, 1, 0, 40000), +(9500130, 1051041, 1, 1, 0, 40000), +(9500159, 1051041, 1, 1, 0, 40000), +(7130401, 1072163, 1, 1, 0, 40000), +(9500130, 1072163, 1, 1, 0, 40000), +(9500159, 1072163, 1, 1, 0, 40000), +(7130401, 1060094, 1, 1, 0, 40000), +(9500130, 1060094, 1, 1, 0, 40000), +(9500159, 1060094, 1, 1, 0, 40000), +(7130401, 1482009, 1, 1, 0, 40000), +(9500130, 1482009, 1, 1, 0, 40000), +(9500159, 1482009, 1, 1, 0, 40000), +(7130500, 4000227, 1, 1, 0, 200000), +(7130500, 2040002, 1, 1, 0, 750), +(7130500, 2384024, 1, 1, 0, 20000), +(7130500, 4010001, 1, 1, 0, 7000), +(7130500, 4020000, 1, 1, 0, 7000), +(7130500, 4004000, 1, 1, 0, 3000), +(7130500, 1032020, 1, 1, 0, 700), +(7130500, 1102023, 1, 1, 0, 700), +(7130500, 1092016, 1, 1, 0, 700), +(7130500, 1422010, 1, 1, 0, 700), +(7130500, 1051054, 1, 1, 0, 700), +(7130500, 1082110, 1, 1, 0, 700), +(7130500, 1472028, 1, 1, 0, 700), +(7130500, 1072163, 1, 1, 0, 700), +(7130500, 1332018, 1, 1, 0, 700), +(7130500, 1052122, 1, 1, 0, 700), +(7130104, 4031435, 1, 1, 0, 7000), +(9300242, 4031435, 1, 1, 0, 7000), +(7130104, 4130000, 1, 1, 0, 3000), +(9300242, 4130000, 1, 1, 0, 3000), +(7130104, 4130017, 1, 1, 0, 3000), +(9300242, 4130017, 1, 1, 0, 3000), +(7130104, 4130020, 1, 1, 0, 3000), +(9300242, 4130020, 1, 1, 0, 3000), +(7130104, 2000006, 1, 1, 0, 40000), +(9300242, 2000006, 1, 1, 0, 40000), +(7130104, 2040705, 1, 1, 0, 750), +(9300242, 2040705, 1, 1, 0, 750), +(7130104, 2049101, 1, 1, 0, 400), +(9300242, 2049101, 1, 1, 0, 400), +(7130104, 2384025, 1, 1, 0, 20000), +(9300242, 2384025, 1, 1, 0, 20000), +(7130104, 2000002, 1, 1, 0, 40000), +(9300242, 2000002, 1, 1, 0, 40000), +(7130104, 2000004, 1, 1, 0, 40000), +(9300242, 2000004, 1, 1, 0, 40000), +(7130104, 4006001, 1, 1, 0, 7000), +(9300242, 4006001, 1, 1, 0, 7000), +(7130104, 2040002, 1, 1, 0, 750), +(9300242, 2040002, 1, 1, 0, 750), +(7130104, 2040414, 1, 1, 0, 750), +(9300242, 2040414, 1, 1, 0, 750), +(7130104, 4010001, 1, 1, 0, 7000), +(9300242, 4010001, 1, 1, 0, 7000), +(7130104, 4020000, 1, 1, 0, 7000), +(9300242, 4020000, 1, 1, 0, 7000), +(7130104, 4004000, 1, 1, 0, 3000), +(9300242, 4004000, 1, 1, 0, 3000), +(7130104, 1102023, 1, 1, 0, 700), +(9300242, 1102023, 1, 1, 0, 700), +(7130104, 1032020, 1, 1, 0, 700), +(9300242, 1032020, 1, 1, 0, 700), +(7130104, 1422010, 1, 1, 0, 700), +(9300242, 1422010, 1, 1, 0, 700), +(7130104, 1002095, 1, 1, 0, 700), +(9300242, 1002095, 1, 1, 0, 700), +(7130104, 1051054, 1, 1, 0, 700), +(9300242, 1051054, 1, 1, 0, 700), +(7130104, 1082110, 1, 1, 0, 700), +(9300242, 1082110, 1, 1, 0, 700), +(7130104, 1472028, 1, 1, 0, 700), +(9300242, 1472028, 1, 1, 0, 700), +(7130104, 1332018, 1, 1, 0, 700), +(9300242, 1332018, 1, 1, 0, 700), +(7130104, 1072163, 1, 1, 0, 700), +(9300242, 1072163, 1, 1, 0, 700), +(7130104, 1082204, 1, 1, 0, 700), +(9300242, 1082204, 1, 1, 0, 700), +(9300119, 2388011, 1, 4, 0, 20000), +(9300198, 2388011, 1, 4, 0, 20000), +(9500334, 2388011, 1, 4, 0, 20000), +(9500349, 2388011, 1, 4, 0, 20000), +(9303011, 2388011, 1, 1, 0, 20000), +(9300119, 2000002, 1, 4, 0, 40000), +(9300198, 2000002, 1, 4, 0, 40000), +(9500334, 2000002, 1, 4, 0, 40000), +(9500349, 2000002, 1, 4, 0, 40000), +(9303011, 2000002, 1, 1, 0, 40000), +(9300119, 2000006, 1, 4, 0, 40000), +(9300198, 2000006, 1, 4, 0, 40000), +(9500334, 2000006, 1, 4, 0, 40000), +(9500349, 2000006, 1, 4, 0, 40000), +(9303011, 2000006, 1, 1, 0, 40000), +(9300119, 2020013, 1, 4, 0, 3000), +(9300198, 2020013, 1, 4, 0, 3000), +(9500334, 2020013, 1, 4, 0, 3000), +(9500349, 2020013, 1, 4, 0, 3000), +(9303011, 2020013, 1, 1, 0, 3000), +(9300119, 2020014, 1, 4, 0, 3000), +(9300198, 2020014, 1, 4, 0, 3000), +(9500334, 2020014, 1, 4, 0, 3000), +(9500349, 2020014, 1, 4, 0, 3000), +(9303011, 2020014, 1, 1, 0, 3000), +(9300119, 2020015, 1, 4, 0, 3000), +(9300198, 2020015, 1, 4, 0, 3000), +(9500334, 2020015, 1, 4, 0, 3000), +(9500349, 2020015, 1, 4, 0, 3000), +(9303011, 2020015, 1, 1, 0, 3000), +(9300119, 2041010, 1, 4, 0, 10000), +(9300198, 2041010, 1, 4, 0, 10000), +(9500334, 2041010, 1, 4, 0, 10000), +(9500349, 2041010, 1, 4, 0, 10000), +(9303011, 2041010, 1, 1, 0, 750), +(9300119, 2040502, 1, 4, 0, 10000), +(9300198, 2040502, 1, 4, 0, 10000), +(9500334, 2040502, 1, 4, 0, 10000), +(9500349, 2040502, 1, 4, 0, 10000), +(9303011, 2040502, 1, 1, 0, 750), +(9300119, 2044201, 1, 4, 0, 10000), +(9300198, 2044201, 1, 4, 0, 10000), +(9500334, 2044201, 1, 4, 0, 10000), +(9500349, 2044201, 1, 4, 0, 10000), +(9303011, 2044201, 1, 1, 0, 750), +(9300119, 2040001, 1, 4, 0, 10000), +(9300198, 2040001, 1, 4, 0, 10000), +(9500334, 2040001, 1, 4, 0, 10000), +(9500349, 2040001, 1, 4, 0, 10000), +(9303011, 2040001, 1, 1, 0, 750), +(9300119, 2040601, 1, 4, 0, 10000), +(9300198, 2040601, 1, 4, 0, 10000), +(9500334, 2040601, 1, 4, 0, 10000), +(9500349, 2040601, 1, 4, 0, 10000), +(9303011, 2040601, 1, 1, 0, 750), +(9300119, 2040505, 1, 4, 0, 10000), +(9300198, 2040505, 1, 4, 0, 10000), +(9500334, 2040505, 1, 4, 0, 10000), +(9500349, 2040505, 1, 4, 0, 10000), +(9303011, 2040505, 1, 1, 0, 750), +(9300119, 2040002, 1, 4, 0, 10000), +(9300198, 2040002, 1, 4, 0, 10000), +(9500334, 2040002, 1, 4, 0, 10000), +(9500349, 2040002, 1, 4, 0, 10000), +(9303011, 2040002, 1, 1, 0, 750), +(9300119, 2040401, 1, 4, 0, 10000), +(9300198, 2040401, 1, 4, 0, 10000), +(9500334, 2040401, 1, 4, 0, 10000), +(9500349, 2040401, 1, 4, 0, 10000), +(9303011, 2040401, 1, 1, 0, 750), +(9300119, 2044201, 1, 4, 0, 10000), +(9300198, 2044201, 1, 4, 0, 10000), +(9500334, 2044201, 1, 4, 0, 10000), +(9500349, 2044201, 1, 4, 0, 10000), +(9303011, 2044201, 1, 1, 0, 750), +(9300119, 2043101, 1, 4, 0, 10000), +(9300198, 2043101, 1, 4, 0, 10000), +(9500334, 2043101, 1, 4, 0, 10000), +(9500349, 2043101, 1, 4, 0, 10000), +(9303011, 2043101, 1, 1, 0, 750), +(9300119, 2044101, 1, 4, 0, 10000), +(9300198, 2044101, 1, 4, 0, 10000), +(9500334, 2044101, 1, 4, 0, 10000), +(9500349, 2044101, 1, 4, 0, 10000), +(9303011, 2044101, 1, 1, 0, 750), +(9300119, 2040801, 1, 4, 0, 10000), +(9300198, 2040801, 1, 4, 0, 10000), +(9500334, 2040801, 1, 4, 0, 10000), +(9500349, 2040801, 1, 4, 0, 10000), +(9303011, 2040801, 1, 1, 0, 750), +(9400576, 4032007, 1, 1, 0, 10000), +(9400576, 2002000, 1, 1, 0, 10000), +(9400576, 4006000, 1, 1, 0, 7000), +(9400576, 2043301, 1, 1, 0, 750), +(9400576, 4004002, 1, 1, 0, 3000), +(9400576, 1032015, 1, 1, 0, 700), +(9400576, 1072162, 1, 1, 0, 700), +(7220001, 4000172, 1, 1, 0, 200000), +(9300199, 4000172, 1, 1, 0, 200000), +(9500312, 4000172, 1, 1, 0, 200000), +(9500348, 4000172, 1, 1, 0, 200000), +(9303008, 4000172, 1, 1, 0, 200000), +(7220001, 2000003, 1, 4, 0, 40000), +(9300199, 2000003, 1, 4, 0, 40000), +(9500312, 2000003, 1, 4, 0, 40000), +(9500348, 2000003, 1, 4, 0, 40000), +(9303008, 2000003, 1, 1, 0, 40000), +(7220001, 2000002, 1, 4, 0, 40000), +(9300199, 2000002, 1, 4, 0, 40000), +(9500312, 2000002, 1, 4, 0, 40000), +(9500348, 2000002, 1, 4, 0, 40000), +(9303008, 2000002, 1, 1, 0, 40000), +(7220001, 2040602, 1, 4, 0, 10000), +(9300199, 2040602, 1, 4, 0, 10000), +(9500312, 2040602, 1, 4, 0, 10000), +(9500348, 2040602, 1, 4, 0, 10000), +(9303008, 2040602, 1, 1, 0, 750), +(7220001, 2040501, 1, 4, 0, 10000), +(9300199, 2040501, 1, 4, 0, 10000), +(9500312, 2040501, 1, 4, 0, 10000), +(9500348, 2040501, 1, 4, 0, 10000), +(9303008, 2040501, 1, 1, 0, 750), +(7220001, 2044902, 1, 4, 0, 10000), +(9300199, 2044902, 1, 4, 0, 10000), +(9500312, 2044902, 1, 4, 0, 10000), +(9500348, 2044902, 1, 4, 0, 10000), +(9303008, 2044902, 1, 1, 0, 750), +(7220001, 2044804, 1, 4, 0, 10000), +(9300199, 2044804, 1, 4, 0, 10000), +(9500312, 2044804, 1, 4, 0, 10000), +(9500348, 2044804, 1, 4, 0, 10000), +(9303008, 2044804, 1, 1, 0, 750), +(7220001, 2043702, 1, 4, 0, 10000), +(9300199, 2043702, 1, 4, 0, 10000), +(9500312, 2043702, 1, 4, 0, 10000), +(9500348, 2043702, 1, 4, 0, 10000), +(9303008, 2043702, 1, 1, 0, 750), +(7220001, 2044501, 1, 4, 0, 10000), +(9300199, 2044501, 1, 4, 0, 10000), +(9500312, 2044501, 1, 4, 0, 10000), +(9500348, 2044501, 1, 4, 0, 10000), +(9303008, 2044501, 1, 1, 0, 750), +(7220001, 2043301, 1, 4, 0, 10000), +(9300199, 2043301, 1, 4, 0, 10000), +(9500312, 2043301, 1, 4, 0, 10000), +(9500348, 2043301, 1, 4, 0, 10000), +(9303008, 2043301, 1, 1, 0, 750), +(7220001, 2040701, 1, 4, 0, 10000), +(9300199, 2040701, 1, 4, 0, 10000), +(9500312, 2040701, 1, 4, 0, 10000), +(9500348, 2040701, 1, 4, 0, 10000), +(9303008, 2040701, 1, 1, 0, 750), +(7220001, 2040702, 1, 4, 0, 10000), +(9300199, 2040702, 1, 4, 0, 10000), +(9500312, 2040702, 1, 4, 0, 10000), +(9500348, 2040702, 1, 4, 0, 10000), +(9303008, 2040702, 1, 1, 0, 750), +(7220001, 2043801, 1, 4, 0, 10000), +(9300199, 2043801, 1, 4, 0, 10000), +(9500312, 2043801, 1, 4, 0, 10000), +(9500348, 2043801, 1, 4, 0, 10000), +(9303008, 2043801, 1, 1, 0, 750), +(7220001, 2041010, 1, 4, 0, 10000), +(9300199, 2041010, 1, 4, 0, 10000), +(9500312, 2041010, 1, 4, 0, 10000), +(9500348, 2041010, 1, 4, 0, 10000), +(9303008, 2041010, 1, 1, 0, 750), +(7220001, 2041016, 1, 4, 0, 10000), +(9300199, 2041016, 1, 4, 0, 10000), +(9500312, 2041016, 1, 4, 0, 10000), +(9500348, 2041016, 1, 4, 0, 10000), +(9303008, 2041016, 1, 1, 0, 750), +(7220001, 2041017, 1, 4, 0, 10000), +(9300199, 2041017, 1, 4, 0, 10000), +(9500312, 2041017, 1, 4, 0, 10000), +(9500348, 2041017, 1, 4, 0, 10000), +(9303008, 2041017, 1, 1, 0, 750), +(7220001, 2040804, 1, 4, 0, 10000), +(9300199, 2040804, 1, 4, 0, 10000), +(9500312, 2040804, 1, 4, 0, 10000), +(9500348, 2040804, 1, 4, 0, 10000), +(9303008, 2040804, 1, 1, 0, 750), +(7220001, 2040513, 1, 4, 0, 10000), +(9300199, 2040513, 1, 4, 0, 10000), +(9500312, 2040513, 1, 4, 0, 10000), +(9500348, 2040513, 1, 4, 0, 10000), +(9303008, 2040513, 1, 1, 0, 750), +(7220001, 2060001, 10, 50, 0, 10000), +(9300199, 2060001, 10, 50, 0, 10000), +(9500312, 2060001, 10, 50, 0, 10000), +(9500348, 2060001, 10, 50, 0, 10000), +(9303008, 2060001, 10, 50, 0, 10000), +(7220001, 2061001, 10, 50, 0, 10000), +(9300199, 2061001, 10, 50, 0, 10000), +(9500312, 2061001, 10, 50, 0, 10000), +(9500348, 2061001, 10, 50, 0, 10000), +(9303008, 2061001, 10, 50, 0, 10000), +(7220001, 2388009, 1, 4, 0, 20000), +(9300199, 2388009, 1, 4, 0, 20000), +(9500312, 2388009, 1, 4, 0, 20000), +(9500348, 2388009, 1, 4, 0, 20000), +(9303008, 2388009, 1, 1, 0, 20000), +(7220001, 4004002, 1, 1, 0, 3000), +(9300199, 4004002, 1, 1, 0, 3000), +(9500312, 4004002, 1, 1, 0, 3000), +(9500348, 4004002, 1, 1, 0, 3000), +(9303008, 4004002, 1, 1, 0, 3000), +(7220001, 1072154, 1, 1, 0, 40000), +(9300199, 1072154, 1, 1, 0, 40000), +(9500312, 1072154, 1, 1, 0, 40000), +(9500348, 1072154, 1, 1, 0, 40000), +(9303008, 1072154, 1, 1, 0, 700), +(7220001, 1072160, 1, 1, 0, 40000), +(9300199, 1072160, 1, 1, 0, 40000), +(9500312, 1072160, 1, 1, 0, 40000), +(9500348, 1072160, 1, 1, 0, 40000), +(9303008, 1072160, 1, 1, 0, 700), +(7220001, 1072167, 1, 1, 0, 40000), +(9300199, 1072167, 1, 1, 0, 40000), +(9500312, 1072167, 1, 1, 0, 40000), +(9500348, 1072167, 1, 1, 0, 40000), +(9303008, 1072167, 1, 1, 0, 700), +(7220001, 1082097, 1, 1, 0, 40000), +(9300199, 1082097, 1, 1, 0, 40000), +(9500312, 1082097, 1, 1, 0, 40000), +(9500348, 1082097, 1, 1, 0, 40000), +(9303008, 1082097, 1, 1, 0, 700), +(7220001, 1082204, 1, 1, 0, 40000), +(9300199, 1082204, 1, 1, 0, 40000), +(9500312, 1082204, 1, 1, 0, 40000), +(9500348, 1082204, 1, 1, 0, 40000), +(9303008, 1082204, 1, 1, 0, 700), +(7130402, 4030012, 1, 1, 0, 10000), +(9500160, 4030012, 1, 1, 0, 10000), +(7130402, 4006000, 1, 1, 0, 7000), +(9500160, 4006000, 1, 1, 0, 7000), +(7130402, 4130017, 1, 1, 0, 3000), +(9500160, 4130017, 1, 1, 0, 3000), +(7130402, 2384023, 1, 4, 0, 20000), +(9500160, 2384023, 1, 4, 0, 20000), +(7130402, 2000006, 1, 4, 0, 40000), +(9500160, 2000006, 1, 4, 0, 40000), +(7130402, 2002006, 1, 4, 0, 10000), +(9500160, 2002006, 1, 4, 0, 10000), +(7130402, 2000004, 1, 4, 0, 40000), +(9500160, 2000004, 1, 4, 0, 40000), +(7130402, 2041007, 1, 4, 0, 10000), +(9500160, 2041007, 1, 4, 0, 10000), +(7130402, 2043001, 1, 4, 0, 10000), +(9500160, 2043001, 1, 4, 0, 10000), +(7130402, 2070007, 1, 4, 0, 2500), +(9500160, 2070007, 1, 4, 0, 2500), +(7130402, 2330003, 1, 4, 0, 2500), +(9500160, 2330003, 1, 4, 0, 2500), +(7130402, 2040024, 1, 4, 0, 10000), +(9500160, 2040024, 1, 4, 0, 10000), +(7130402, 2040536, 1, 4, 0, 10000), +(9500160, 2040536, 1, 4, 0, 10000), +(7130402, 2043113, 1, 4, 0, 10000), +(9500160, 2043113, 1, 4, 0, 10000), +(7130402, 4020006, 1, 1, 0, 7000), +(9500160, 4020006, 1, 1, 0, 7000), +(7130402, 4010006, 1, 1, 0, 7000), +(9500160, 4010006, 1, 1, 0, 7000), +(7130402, 4004001, 1, 1, 0, 3000), +(9500160, 4004001, 1, 1, 0, 3000), +(7130402, 1032019, 1, 1, 0, 40000), +(9500160, 1032019, 1, 1, 0, 40000), +(7130402, 1032022, 1, 1, 0, 40000), +(9500160, 1032022, 1, 1, 0, 40000), +(7130402, 1061091, 1, 1, 0, 40000), +(9500160, 1061091, 1, 1, 0, 40000), +(7130402, 1041092, 1, 1, 0, 40000), +(9500160, 1041092, 1, 1, 0, 40000), +(7130402, 1402012, 1, 1, 0, 40000), +(9500160, 1402012, 1, 1, 0, 40000), +(7130402, 1072155, 1, 1, 0, 40000), +(9500160, 1072155, 1, 1, 0, 40000), +(7130402, 1422005, 1, 1, 0, 40000), +(9500160, 1422005, 1, 1, 0, 40000), +(7130402, 1082090, 1, 1, 0, 40000), +(9500160, 1082090, 1, 1, 0, 40000), +(7130402, 1041101, 1, 1, 0, 40000), +(9500160, 1041101, 1, 1, 0, 40000), +(7130402, 1061100, 1, 1, 0, 40000), +(9500160, 1061100, 1, 1, 0, 40000), +(7220000, 1132001, 1, 1, 0, 40000), +(9300200, 1132001, 1, 1, 0, 40000), +(9300268, 1132001, 1, 1, 0, 40000), +(9500313, 1132001, 1, 1, 0, 40000), +(9500350, 1132001, 1, 1, 0, 40000), +(9303005, 1132001, 1, 1, 0, 700), +(7220000, 1132003, 1, 1, 0, 40000), +(9300200, 1132003, 1, 1, 0, 40000), +(9300268, 1132003, 1, 1, 0, 40000), +(9500313, 1132003, 1, 1, 0, 40000), +(9500350, 1132003, 1, 1, 0, 40000), +(9303005, 1132003, 1, 1, 0, 700), +(7220000, 4000283, 1, 1, 0, 200000), +(9300200, 4000283, 1, 1, 0, 200000), +(9300268, 4000283, 1, 1, 0, 200000), +(9500313, 4000283, 1, 1, 0, 200000), +(9500350, 4000283, 1, 1, 0, 200000), +(9303005, 4000283, 1, 1, 0, 200000), +(7220000, 4000021, 1, 1, 0, 200000), +(9300200, 4000021, 1, 1, 0, 200000), +(9300268, 4000021, 1, 1, 0, 200000), +(9500313, 4000021, 1, 1, 0, 200000), +(9500350, 4000021, 1, 1, 0, 200000), +(9303005, 4000021, 1, 1, 0, 200000), +(7220000, 2000002, 1, 4, 0, 40000), +(9300200, 2000002, 1, 4, 0, 40000), +(9300268, 2000002, 1, 4, 0, 40000), +(9500313, 2000002, 1, 4, 0, 40000), +(9500350, 2000002, 1, 4, 0, 40000), +(9303005, 2000002, 1, 1, 0, 40000), +(7220000, 2000003, 1, 4, 0, 40000), +(9300200, 2000003, 1, 4, 0, 40000), +(9300268, 2000003, 1, 4, 0, 40000), +(9500313, 2000003, 1, 4, 0, 40000), +(9500350, 2000003, 1, 4, 0, 40000), +(9303005, 2000003, 1, 1, 0, 40000), +(7220000, 2002004, 1, 4, 0, 10000), +(9300200, 2002004, 1, 4, 0, 10000), +(9300268, 2002004, 1, 4, 0, 10000), +(9500313, 2002004, 1, 4, 0, 10000), +(9500350, 2002004, 1, 4, 0, 10000), +(9303005, 2002004, 1, 1, 0, 10000), +(7220000, 2002011, 1, 4, 0, 10000), +(9300200, 2002011, 1, 4, 0, 10000), +(9300268, 2002011, 1, 4, 0, 10000), +(9500313, 2002011, 1, 4, 0, 10000), +(9500350, 2002011, 1, 4, 0, 10000), +(9303005, 2002011, 1, 1, 0, 10000), +(7220000, 2040805, 1, 4, 0, 10000), +(9300200, 2040805, 1, 4, 0, 10000), +(9300268, 2040805, 1, 4, 0, 10000), +(9500313, 2040805, 1, 4, 0, 10000), +(9500350, 2040805, 1, 4, 0, 10000), +(9303005, 2040805, 1, 1, 0, 750), +(7220000, 2041010, 1, 4, 0, 10000), +(9300200, 2041010, 1, 4, 0, 10000), +(9300268, 2041010, 1, 4, 0, 10000), +(9500313, 2041010, 1, 4, 0, 10000), +(9500350, 2041010, 1, 4, 0, 10000), +(9303005, 2041010, 1, 1, 0, 750), +(7220000, 2043301, 1, 4, 0, 10000), +(9300200, 2043301, 1, 4, 0, 10000), +(9300268, 2043301, 1, 4, 0, 10000), +(9500313, 2043301, 1, 4, 0, 10000), +(9500350, 2043301, 1, 4, 0, 10000), +(9303005, 2043301, 1, 1, 0, 750), +(7220000, 2040004, 1, 4, 0, 10000), +(9300200, 2040004, 1, 4, 0, 10000), +(9300268, 2040004, 1, 4, 0, 10000), +(9500313, 2040004, 1, 4, 0, 10000), +(9500350, 2040004, 1, 4, 0, 10000), +(9303005, 2040004, 1, 1, 0, 750), +(7220000, 2044501, 1, 4, 0, 10000), +(9300200, 2044501, 1, 4, 0, 10000), +(9300268, 2044501, 1, 4, 0, 10000), +(9500313, 2044501, 1, 4, 0, 10000), +(9500350, 2044501, 1, 4, 0, 10000), +(9303005, 2044501, 1, 1, 0, 750), +(7220000, 2043801, 1, 4, 0, 10000), +(9300200, 2043801, 1, 4, 0, 10000), +(9300268, 2043801, 1, 4, 0, 10000), +(9500313, 2043801, 1, 4, 0, 10000), +(9500350, 2043801, 1, 4, 0, 10000), +(9303005, 2043801, 1, 1, 0, 750), +(7220000, 2040901, 1, 4, 0, 10000), +(9300200, 2040901, 1, 4, 0, 10000), +(9300268, 2040901, 1, 4, 0, 10000), +(9500313, 2040901, 1, 4, 0, 10000), +(9500350, 2040901, 1, 4, 0, 10000), +(9303005, 2040901, 1, 1, 0, 750), +(7220000, 2041022, 1, 4, 0, 10000), +(9300200, 2041022, 1, 4, 0, 10000), +(9300268, 2041022, 1, 4, 0, 10000), +(9500313, 2041022, 1, 4, 0, 10000), +(9500350, 2041022, 1, 4, 0, 10000), +(9303005, 2041022, 1, 1, 0, 750), +(7220000, 2044101, 1, 4, 0, 10000), +(9300200, 2044101, 1, 4, 0, 10000), +(9300268, 2044101, 1, 4, 0, 10000), +(9500313, 2044101, 1, 4, 0, 10000), +(9500350, 2044101, 1, 4, 0, 10000), +(9303005, 2044101, 1, 1, 0, 750), +(7220000, 2041043, 1, 4, 0, 10000), +(9300200, 2041043, 1, 4, 0, 10000), +(9300268, 2041043, 1, 4, 0, 10000), +(9500313, 2041043, 1, 4, 0, 10000), +(9500350, 2041043, 1, 4, 0, 10000), +(9303005, 2041043, 1, 1, 0, 750), +(7220000, 2043101, 1, 4, 0, 10000), +(9300200, 2043101, 1, 4, 0, 10000), +(9300268, 2043101, 1, 4, 0, 10000), +(9500313, 2043101, 1, 4, 0, 10000), +(9500350, 2043101, 1, 4, 0, 10000), +(9303005, 2043101, 1, 1, 0, 750), +(7220000, 2044601, 1, 4, 0, 10000), +(9300200, 2044601, 1, 4, 0, 10000), +(9300268, 2044601, 1, 4, 0, 10000), +(9500313, 2044601, 1, 4, 0, 10000), +(9500350, 2044601, 1, 4, 0, 10000), +(9303005, 2044601, 1, 1, 0, 750), +(7220000, 2044803, 1, 4, 0, 10000), +(9300200, 2044803, 1, 4, 0, 10000), +(9300268, 2044803, 1, 4, 0, 10000), +(9500313, 2044803, 1, 4, 0, 10000), +(9500350, 2044803, 1, 4, 0, 10000), +(9303005, 2044803, 1, 1, 0, 750), +(7220000, 2048005, 1, 4, 0, 10000), +(9300200, 2048005, 1, 4, 0, 10000), +(9300268, 2048005, 1, 4, 0, 10000), +(9500313, 2048005, 1, 4, 0, 10000), +(9500350, 2048005, 1, 4, 0, 10000), +(9303005, 2048005, 1, 1, 0, 750), +(7220000, 2040514, 1, 4, 0, 10000), +(9300200, 2040514, 1, 4, 0, 10000), +(9300268, 2040514, 1, 4, 0, 10000), +(9500313, 2040514, 1, 4, 0, 10000), +(9500350, 2040514, 1, 4, 0, 10000), +(9303005, 2040514, 1, 1, 0, 750), +(7220000, 2040705, 1, 4, 0, 10000), +(9300200, 2040705, 1, 4, 0, 10000), +(9300268, 2040705, 1, 4, 0, 10000), +(9500313, 2040705, 1, 4, 0, 10000), +(9500350, 2040705, 1, 4, 0, 10000), +(9303005, 2040705, 1, 1, 0, 750), +(7220000, 2049101, 1, 4, 0, 2500), +(9300200, 2049101, 1, 4, 0, 2500), +(9300268, 2049101, 1, 4, 0, 2500), +(9500313, 2049101, 1, 4, 0, 2500), +(9500350, 2049101, 1, 4, 0, 2500), +(9303005, 2049101, 1, 1, 0, 400), +(7220000, 2070004, 1, 4, 0, 2500), +(9300200, 2070004, 1, 4, 0, 2500), +(9300268, 2070004, 1, 4, 0, 2500), +(9500313, 2070004, 1, 4, 0, 2500), +(9500350, 2070004, 1, 4, 0, 2500), +(9303005, 2070004, 1, 1, 0, 400), +(7220000, 2060001, 10, 50, 0, 10000), +(9300200, 2060001, 10, 50, 0, 10000), +(9300268, 2060001, 10, 50, 0, 10000), +(9500313, 2060001, 10, 50, 0, 10000), +(9500350, 2060001, 10, 50, 0, 10000), +(9303005, 2060001, 10, 50, 0, 10000), +(7220000, 2061001, 10, 50, 0, 10000), +(9300200, 2061001, 10, 50, 0, 10000), +(9300268, 2061001, 10, 50, 0, 10000), +(9500313, 2061001, 10, 50, 0, 10000), +(9500350, 2061001, 10, 50, 0, 10000), +(9303005, 2061001, 10, 50, 0, 10000), +(7220000, 2388010, 1, 4, 0, 20000), +(9300200, 2388010, 1, 4, 0, 20000), +(9300268, 2388010, 1, 4, 0, 20000), +(9500313, 2388010, 1, 4, 0, 20000), +(9500350, 2388010, 1, 4, 0, 20000), +(9303005, 2388010, 1, 1, 0, 20000), +(7220000, 4010004, 1, 1, 0, 7000), +(9300200, 4010004, 1, 1, 0, 7000), +(9300268, 4010004, 1, 1, 0, 7000), +(9500313, 4010004, 1, 1, 0, 7000), +(9500350, 4010004, 1, 1, 0, 7000), +(9303005, 4010004, 1, 1, 0, 7000), +(7220000, 4020006, 1, 1, 0, 7000), +(9300200, 4020006, 1, 1, 0, 7000), +(9300268, 4020006, 1, 1, 0, 7000), +(9500313, 4020006, 1, 1, 0, 7000), +(9500350, 4020006, 1, 1, 0, 7000), +(9303005, 4020006, 1, 1, 0, 7000), +(7220000, 4004000, 1, 1, 0, 3000), +(9300200, 4004000, 1, 1, 0, 3000), +(9300268, 4004000, 1, 1, 0, 3000), +(9500313, 4004000, 1, 1, 0, 3000), +(9500350, 4004000, 1, 1, 0, 3000), +(9303005, 4004000, 1, 1, 0, 3000), +(7220000, 1032021, 1, 1, 0, 40000), +(9300200, 1032021, 1, 1, 0, 40000), +(9300268, 1032021, 1, 1, 0, 40000), +(9500313, 1032021, 1, 1, 0, 40000), +(9500350, 1032021, 1, 1, 0, 40000), +(9303005, 1032021, 1, 1, 0, 700), +(7220000, 1402012, 1, 1, 0, 40000), +(9300200, 1402012, 1, 1, 0, 40000), +(9300268, 1402012, 1, 1, 0, 40000), +(9500313, 1402012, 1, 1, 0, 40000), +(9500350, 1402012, 1, 1, 0, 40000), +(9303005, 1402012, 1, 1, 0, 700), +(7220000, 1322019, 1, 1, 0, 40000), +(9300200, 1322019, 1, 1, 0, 40000), +(9300268, 1322019, 1, 1, 0, 40000), +(9500313, 1322019, 1, 1, 0, 40000), +(9500350, 1322019, 1, 1, 0, 40000), +(9303005, 1322019, 1, 1, 0, 700), +(7220000, 1302012, 1, 1, 0, 40000), +(9300200, 1302012, 1, 1, 0, 40000), +(9300268, 1302012, 1, 1, 0, 40000), +(9500313, 1302012, 1, 1, 0, 40000), +(9500350, 1302012, 1, 1, 0, 40000), +(9303005, 1302012, 1, 1, 0, 700), +(7220000, 1412008, 1, 1, 0, 40000), +(9300200, 1412008, 1, 1, 0, 40000), +(9300268, 1412008, 1, 1, 0, 40000), +(9500313, 1412008, 1, 1, 0, 40000), +(9500350, 1412008, 1, 1, 0, 40000), +(9303005, 1412008, 1, 1, 0, 700), +(7220000, 1312010, 1, 1, 0, 40000), +(9300200, 1312010, 1, 1, 0, 40000), +(9300268, 1312010, 1, 1, 0, 40000), +(9500313, 1312010, 1, 1, 0, 40000), +(9500350, 1312010, 1, 1, 0, 40000), +(9303005, 1312010, 1, 1, 0, 700), +(7220000, 1422010, 1, 1, 0, 40000), +(9300200, 1422010, 1, 1, 0, 40000), +(9300268, 1422010, 1, 1, 0, 40000), +(9500313, 1422010, 1, 1, 0, 40000), +(9500350, 1422010, 1, 1, 0, 40000), +(9303005, 1422010, 1, 1, 0, 700), +(7220000, 1442008, 1, 1, 0, 40000), +(9300200, 1442008, 1, 1, 0, 40000), +(9300268, 1442008, 1, 1, 0, 40000), +(9500313, 1442008, 1, 1, 0, 40000), +(9500350, 1442008, 1, 1, 0, 40000), +(9303005, 1442008, 1, 1, 0, 700), +(7220000, 1432007, 1, 1, 0, 40000), +(9300200, 1432007, 1, 1, 0, 40000), +(9300268, 1432007, 1, 1, 0, 40000), +(9500313, 1432007, 1, 1, 0, 40000), +(9500350, 1432007, 1, 1, 0, 40000), +(9303005, 1432007, 1, 1, 0, 700), +(7220000, 1372015, 1, 1, 0, 40000), +(9300200, 1372015, 1, 1, 0, 40000), +(9300268, 1372015, 1, 1, 0, 40000), +(9500313, 1372015, 1, 1, 0, 40000), +(9500350, 1372015, 1, 1, 0, 40000), +(9303005, 1372015, 1, 1, 0, 700), +(7220000, 1382010, 1, 1, 0, 40000), +(9300200, 1382010, 1, 1, 0, 40000), +(9300268, 1382010, 1, 1, 0, 40000), +(9500313, 1382010, 1, 1, 0, 40000), +(9500350, 1382010, 1, 1, 0, 40000), +(9303005, 1382010, 1, 1, 0, 700), +(7220000, 1462009, 1, 1, 0, 40000), +(9300200, 1462009, 1, 1, 0, 40000), +(9300268, 1462009, 1, 1, 0, 40000), +(9500313, 1462009, 1, 1, 0, 40000), +(9500350, 1462009, 1, 1, 0, 40000), +(9303005, 1462009, 1, 1, 0, 700), +(7220000, 1452011, 1, 1, 0, 40000), +(9300200, 1452011, 1, 1, 0, 40000), +(9300268, 1452011, 1, 1, 0, 40000), +(9500313, 1452011, 1, 1, 0, 40000), +(9500350, 1452011, 1, 1, 0, 40000), +(9303005, 1452011, 1, 1, 0, 700), +(7220000, 1472029, 1, 1, 0, 40000), +(9300200, 1472029, 1, 1, 0, 40000), +(9300268, 1472029, 1, 1, 0, 40000), +(9500313, 1472029, 1, 1, 0, 40000), +(9500350, 1472029, 1, 1, 0, 40000), +(9303005, 1472029, 1, 1, 0, 700), +(7220000, 1332018, 1, 1, 0, 40000), +(9300200, 1332018, 1, 1, 0, 40000), +(9300268, 1332018, 1, 1, 0, 40000), +(9500313, 1332018, 1, 1, 0, 40000), +(9500350, 1332018, 1, 1, 0, 40000), +(9303005, 1332018, 1, 1, 0, 700), +(7220000, 1482009, 1, 1, 0, 40000), +(9300200, 1482009, 1, 1, 0, 40000), +(9300268, 1482009, 1, 1, 0, 40000), +(9500313, 1482009, 1, 1, 0, 40000), +(9500350, 1482009, 1, 1, 0, 40000), +(9303005, 1482009, 1, 1, 0, 700), +(9400203, 4000546, 1, 1, 0, 200000), +(7120104, 4000546, 1, 1, 0, 200000), +(9400203, 4130003, 1, 1, 0, 3000), +(7120104, 4130003, 1, 1, 0, 3000), +(9400203, 4130002, 1, 1, 0, 3000), +(7120104, 4130002, 1, 1, 0, 3000), +(9400203, 4130021, 1, 1, 0, 3000), +(7120104, 4130021, 1, 1, 0, 3000), +(9400203, 2050000, 1, 1, 0, 3000), +(7120104, 2050000, 1, 1, 0, 3000), +(9400203, 2000006, 1, 1, 0, 40000), +(7120104, 2000006, 1, 1, 0, 40000), +(9400203, 2000004, 1, 1, 0, 40000), +(7120104, 2000004, 1, 1, 0, 40000), +(9400203, 2044301, 1, 1, 0, 750), +(7120104, 2044301, 1, 1, 0, 750), +(9400203, 2041021, 1, 1, 0, 750), +(7120104, 2041021, 1, 1, 0, 750), +(9400203, 2040619, 1, 1, 0, 750), +(7120104, 2040619, 1, 1, 0, 750), +(9400203, 2049000, 1, 1, 0, 400), +(7120104, 2049000, 1, 1, 0, 400), +(9400203, 4020007, 1, 1, 0, 7000), +(7120104, 4020007, 1, 1, 0, 7000), +(9400203, 4010004, 1, 1, 0, 7000), +(7120104, 4010004, 1, 1, 0, 7000), +(9400203, 1032014, 1, 1, 0, 700), +(7120104, 1032014, 1, 1, 0, 700), +(9400203, 1032016, 1, 1, 0, 700), +(7120104, 1032016, 1, 1, 0, 700), +(9400203, 1312009, 1, 1, 0, 700), +(7120104, 1312009, 1, 1, 0, 700), +(9400203, 1002095, 1, 1, 0, 700), +(7120104, 1002095, 1, 1, 0, 700), +(9400203, 1082105, 1, 1, 0, 700), +(7120104, 1082105, 1, 1, 0, 700), +(9400203, 1302056, 1, 1, 0, 700), +(7120104, 1302056, 1, 1, 0, 700), +(9400203, 1002246, 1, 1, 0, 700), +(7120104, 1002246, 1, 1, 0, 700), +(9400203, 1051054, 1, 1, 0, 700), +(7120104, 1051054, 1, 1, 0, 700), +(9400203, 1050070, 1, 1, 0, 700), +(7120104, 1050070, 1, 1, 0, 700), +(9400203, 1050069, 1, 1, 0, 700), +(7120104, 1050069, 1, 1, 0, 700), +(9400203, 1372015, 1, 1, 0, 700), +(7120104, 1372015, 1, 1, 0, 700), +(9400203, 1372016, 1, 1, 0, 700), +(7120104, 1372016, 1, 1, 0, 700), +(9400203, 1072146, 1, 1, 0, 700), +(7120104, 1072146, 1, 1, 0, 700), +(9400203, 1082108, 1, 1, 0, 700), +(7120104, 1082108, 1, 1, 0, 700), +(9400203, 1332015, 1, 1, 0, 700), +(7120104, 1332015, 1, 1, 0, 700), +(9400203, 1041095, 1, 1, 0, 700), +(7120104, 1041095, 1, 1, 0, 700), +(9400203, 1061094, 1, 1, 0, 700), +(7120104, 1061094, 1, 1, 0, 700), +(9400203, 1041102, 1, 1, 0, 700), +(7120104, 1041102, 1, 1, 0, 700), +(9400203, 1061101, 1, 1, 0, 700), +(7120104, 1061101, 1, 1, 0, 700), +(9400203, 1492009, 1, 1, 0, 700), +(7120104, 1492009, 1, 1, 0, 700), +(7130001, 4000079, 1, 1, 0, 200000), +(7130001, 2050000, 1, 1, 0, 3000), +(7130001, 2000006, 1, 1, 0, 40000), +(7130001, 2000004, 1, 1, 0, 40000), +(7130001, 2041021, 1, 1, 0, 750), +(7130001, 2044301, 1, 1, 0, 750), +(7130001, 2384026, 1, 1, 0, 20000), +(7130001, 4010004, 1, 1, 0, 7000), +(7130001, 4020007, 1, 1, 0, 7000), +(7130001, 1032014, 1, 1, 0, 700), +(7130001, 1032016, 1, 1, 0, 700), +(7130001, 1422014, 1, 1, 0, 700), +(7130001, 1412011, 1, 1, 0, 700), +(7130001, 1082105, 1, 1, 0, 700), +(7130001, 1002095, 1, 1, 0, 700), +(7130001, 1312009, 1, 1, 0, 700), +(7130001, 1302056, 1, 1, 0, 700), +(7130001, 1002246, 1, 1, 0, 700), +(7130001, 1372015, 1, 1, 0, 700), +(7130001, 1372016, 1, 1, 0, 700), +(7130001, 1050070, 1, 1, 0, 700), +(7130001, 1050069, 1, 1, 0, 700), +(7130001, 1072146, 1, 1, 0, 700), +(7130001, 1082108, 1, 1, 0, 700), +(7130001, 1041102, 1, 1, 0, 700), +(7130001, 1061101, 1, 1, 0, 700), +(7130001, 1041095, 1, 1, 0, 700), +(7130001, 1332015, 1, 1, 0, 700), +(7130001, 1492009, 1, 1, 0, 700), +(9400103, 4000137, 1, 1, 0, 200000), +(9400103, 2001001, 1, 1, 0, 10000), +(9400103, 2000011, 1, 1, 0, 40000), +(9400103, 2002005, 1, 1, 0, 10000), +(9400103, 2070004, 1, 1, 0, 400), +(9400103, 2041036, 1, 1, 0, 750), +(9400103, 2043308, 1, 1, 0, 750), +(9400103, 2041012, 1, 1, 0, 750), +(9400103, 4020000, 1, 1, 0, 7000), +(9400103, 4010001, 1, 1, 0, 7000), +(9400103, 1442025, 1, 1, 0, 700), +(9400103, 1102000, 1, 1, 0, 700), +(9400103, 1322021, 1, 1, 0, 700), +(9400103, 1332019, 1, 1, 0, 700), +(9400103, 1442005, 1, 1, 0, 700), +(9400103, 1061098, 1, 1, 0, 700), +(9400103, 1082062, 1, 1, 0, 700), +(9400103, 1051054, 1, 1, 0, 700), +(9400103, 1050055, 1, 1, 0, 700), +(9400103, 1002212, 1, 1, 0, 700), +(9400103, 1082084, 1, 1, 0, 700), +(9400103, 1051062, 1, 1, 0, 700), +(9400103, 1332019, 1, 1, 0, 700), +(9400103, 1061099, 1, 1, 0, 700), +(9400103, 1092018, 1, 1, 0, 700), +(7130002, 4030012, 1, 1, 0, 10000), +(7130002, 2000006, 1, 1, 0, 40000), +(7130002, 2000004, 1, 1, 0, 40000), +(7130002, 2040801, 1, 1, 0, 750), +(7130002, 4006000, 1, 1, 0, 7000), +(7130002, 2330003, 1, 1, 0, 400), +(7130002, 2384027, 1, 1, 0, 20000), +(7130002, 4010000, 1, 1, 0, 7000), +(7130002, 4020001, 1, 1, 0, 7000), +(7130002, 4004001, 1, 1, 0, 3000), +(7130002, 1442024, 1, 1, 0, 700), +(7130002, 1082100, 1, 1, 0, 700), +(7130002, 1002285, 1, 1, 0, 700), +(9420536, 4000474, 1, 1, 0, 200000), +(9420536, 2022003, 1, 1, 0, 3000), +(9420536, 1032021, 1, 1, 0, 700), +(9420536, 1082105, 1, 1, 0, 700), +(9420536, 1002095, 1, 1, 0, 700), +(9420536, 1051079, 1, 1, 0, 700), +(9420536, 1051016, 1, 1, 0, 700), +(9420536, 1050074, 1, 1, 0, 700), +(9420536, 1050064, 1, 1, 0, 700), +(9420536, 1051065, 1, 1, 0, 700), +(9420536, 1002278, 1, 1, 0, 700), +(7130600, 4006001, 1, 1, 0, 7000), +(7130600, 4130017, 1, 1, 0, 3000), +(7130600, 4130001, 1, 1, 0, 3000), +(7130600, 4130005, 1, 1, 0, 3000), +(7130600, 2384028, 1, 1, 0, 20000), +(7130600, 2000006, 1, 1, 0, 40000), +(7130600, 2000004, 1, 1, 0, 40000), +(7130600, 2044101, 1, 1, 0, 750), +(7130600, 2041008, 1, 1, 0, 750), +(7130600, 2040512, 1, 1, 0, 750), +(7130600, 2044010, 1, 1, 0, 750), +(7130600, 4010001, 1, 1, 0, 7000), +(7130600, 4010000, 1, 1, 0, 7000), +(7130600, 4004002, 1, 1, 0, 3000), +(7130600, 1072211, 1, 1, 0, 700), +(7130600, 1002287, 1, 1, 0, 700), +(7130600, 1452009, 1, 1, 0, 700), +(7130600, 1051062, 1, 1, 0, 700), +(7130600, 1082119, 1, 1, 0, 700), +(7130000, 4000074, 1, 1, 0, 200000), +(9300251, 4000074, 1, 1, 0, 200000), +(9500131, 4000074, 1, 1, 0, 200000), +(7130000, 2000006, 1, 1, 0, 40000), +(9300251, 2000006, 1, 1, 0, 40000), +(9500131, 2000006, 1, 1, 0, 40000), +(7130000, 2000004, 1, 1, 0, 40000), +(9300251, 2000004, 1, 1, 0, 40000), +(9500131, 2000004, 1, 1, 0, 40000), +(7130000, 2050004, 1, 1, 0, 3000), +(9300251, 2050004, 1, 1, 0, 3000), +(9500131, 2050004, 1, 1, 0, 3000), +(7130000, 4006001, 1, 1, 0, 7000), +(9300251, 4006001, 1, 1, 0, 7000), +(9500131, 4006001, 1, 1, 0, 7000), +(7130000, 2044601, 1, 1, 0, 750), +(9300251, 2044601, 1, 1, 0, 750), +(9500131, 2044601, 1, 1, 0, 750), +(7130000, 4161021, 1, 1, 0, 7000), +(9300251, 4161021, 1, 1, 0, 7000), +(9500131, 4161021, 1, 1, 0, 7000), +(7130000, 2384030, 1, 1, 0, 20000), +(9300251, 2384030, 1, 1, 0, 20000), +(9500131, 2384030, 1, 1, 0, 20000), +(7130000, 4020006, 1, 1, 0, 7000), +(9300251, 4020006, 1, 1, 0, 7000), +(9500131, 4020006, 1, 1, 0, 7000), +(7130000, 4010004, 1, 1, 0, 7000), +(9300251, 4010004, 1, 1, 0, 7000), +(9500131, 4010004, 1, 1, 0, 7000), +(7130000, 4004003, 1, 1, 0, 3000), +(9300251, 4004003, 1, 1, 0, 3000), +(9500131, 4004003, 1, 1, 0, 3000), +(7130000, 1422014, 1, 1, 0, 700), +(9300251, 1422014, 1, 1, 0, 700), +(9500131, 1422014, 1, 1, 0, 700), +(7130000, 1402012, 1, 1, 0, 700), +(9300251, 1402012, 1, 1, 0, 700), +(9500131, 1402012, 1, 1, 0, 700), +(7130000, 1002029, 1, 1, 0, 700), +(9300251, 1002029, 1, 1, 0, 700), +(9500131, 1002029, 1, 1, 0, 700), +(7130000, 1002094, 1, 1, 0, 700), +(9300251, 1002094, 1, 1, 0, 700), +(9500131, 1002094, 1, 1, 0, 700), +(7130000, 1072147, 1, 1, 0, 700), +(9300251, 1072147, 1, 1, 0, 700), +(9500131, 1072147, 1, 1, 0, 700), +(7130000, 1072210, 1, 1, 0, 700), +(9300251, 1072210, 1, 1, 0, 700), +(9500131, 1072210, 1, 1, 0, 700), +(7130000, 1072177, 1, 1, 0, 700), +(9300251, 1072177, 1, 1, 0, 700), +(9500131, 1072177, 1, 1, 0, 700), +(7130000, 1002253, 1, 1, 0, 700), +(9300251, 1002253, 1, 1, 0, 700), +(9500131, 1002253, 1, 1, 0, 700), +(7130000, 1051044, 1, 1, 0, 700), +(9300251, 1051044, 1, 1, 0, 700), +(9500131, 1051044, 1, 1, 0, 700), +(7130000, 1051053, 1, 1, 0, 700), +(9300251, 1051053, 1, 1, 0, 700), +(9500131, 1051053, 1, 1, 0, 700), +(7130000, 1051062, 1, 1, 0, 700), +(9300251, 1051062, 1, 1, 0, 700), +(9500131, 1051062, 1, 1, 0, 700), +(7130000, 1050063, 1, 1, 0, 700), +(9300251, 1050063, 1, 1, 0, 700), +(9500131, 1050063, 1, 1, 0, 700), +(7130000, 1072145, 1, 1, 0, 700), +(9300251, 1072145, 1, 1, 0, 700), +(9500131, 1072145, 1, 1, 0, 700), +(7130000, 1002275, 1, 1, 0, 700), +(9300251, 1002275, 1, 1, 0, 700), +(9500131, 1002275, 1, 1, 0, 700), +(7130000, 1051041, 1, 1, 0, 700), +(9300251, 1051041, 1, 1, 0, 700), +(9500131, 1051041, 1, 1, 0, 700), +(7130000, 1002248, 1, 1, 0, 700), +(9300251, 1002248, 1, 1, 0, 700), +(9500131, 1002248, 1, 1, 0, 700), +(7130000, 1040108, 1, 1, 0, 700), +(9300251, 1040108, 1, 1, 0, 700), +(9500131, 1040108, 1, 1, 0, 700), +(7130000, 1072150, 1, 1, 0, 700), +(9300251, 1072150, 1, 1, 0, 700), +(9500131, 1072150, 1, 1, 0, 700), +(7130000, 1072312, 1, 1, 0, 700), +(9300251, 1072312, 1, 1, 0, 700), +(9500131, 1072312, 1, 1, 0, 700), +(7130103, 4000208, 1, 1, 0, 200000), +(7130103, 2000006, 1, 1, 0, 40000), +(7130103, 2000004, 1, 1, 0, 40000), +(7130103, 2002003, 1, 1, 0, 10000), +(7130103, 4006001, 1, 1, 0, 7000), +(7130103, 2040516, 1, 1, 0, 750), +(7130103, 2040301, 1, 1, 0, 750), +(7130103, 2040804, 1, 1, 0, 750), +(7130103, 2384029, 1, 1, 0, 20000), +(7130103, 4010000, 1, 1, 0, 7000), +(7130103, 4020002, 1, 1, 0, 7000), +(7130103, 4020007, 1, 1, 0, 7000), +(7130103, 4020000, 1, 1, 0, 7000), +(7130103, 1072210, 1, 1, 0, 700), +(7130103, 1092023, 1, 1, 0, 700), +(7130103, 1041092, 1, 1, 0, 700), +(7130103, 1040092, 1, 1, 0, 700), +(7130103, 1072177, 1, 1, 0, 700), +(7130103, 1051054, 1, 1, 0, 700), +(7130103, 1072182, 1, 1, 0, 700), +(7130103, 1051063, 1, 1, 0, 700), +(7130103, 1061094, 1, 1, 0, 700), +(7130103, 1041095, 1, 1, 0, 700), +(7130103, 1072172, 1, 1, 0, 700), +(7130103, 1082207, 1, 1, 0, 700), +(9300105, 2388011, 1, 4, 0, 20000), +(9500175, 2388011, 1, 4, 0, 20000), +(7110301, 4000361, 1, 1, 0, 200000), +(9300147, 4000361, 1, 1, 0, 200000), +(7110301, 2000006, 1, 1, 0, 40000), +(9300147, 2000006, 1, 1, 0, 40000), +(7110301, 2000004, 1, 1, 0, 40000), +(9300147, 2000004, 1, 1, 0, 40000), +(7110301, 2044601, 1, 1, 0, 750), +(9300147, 2044601, 1, 1, 0, 750), +(7110301, 2044803, 1, 1, 0, 750), +(9300147, 2044803, 1, 1, 0, 750), +(7110301, 2040622, 1, 1, 0, 750), +(9300147, 2040622, 1, 1, 0, 750), +(7110301, 2040026, 1, 1, 0, 750), +(9300147, 2040026, 1, 1, 0, 750), +(7110301, 4010004, 1, 1, 0, 7000), +(9300147, 4010004, 1, 1, 0, 7000), +(7110301, 4020006, 1, 1, 0, 7000), +(9300147, 4020006, 1, 1, 0, 7000), +(7110301, 4004003, 1, 1, 0, 3000), +(9300147, 4004003, 1, 1, 0, 3000), +(7110301, 1402012, 1, 1, 0, 700), +(9300147, 1402012, 1, 1, 0, 700), +(7110301, 1322018, 1, 1, 0, 700), +(9300147, 1322018, 1, 1, 0, 700), +(7110301, 1002029, 1, 1, 0, 700), +(9300147, 1002029, 1, 1, 0, 700), +(7110301, 1002094, 1, 1, 0, 700), +(9300147, 1002094, 1, 1, 0, 700), +(7110301, 1072147, 1, 1, 0, 700), +(9300147, 1072147, 1, 1, 0, 700), +(7110301, 1072210, 1, 1, 0, 700), +(9300147, 1072210, 1, 1, 0, 700), +(7110301, 1072177, 1, 1, 0, 700), +(9300147, 1072177, 1, 1, 0, 700), +(7110301, 1002253, 1, 1, 0, 700), +(9300147, 1002253, 1, 1, 0, 700), +(7110301, 1051044, 1, 1, 0, 700), +(9300147, 1051044, 1, 1, 0, 700), +(7110301, 1051053, 1, 1, 0, 700), +(9300147, 1051053, 1, 1, 0, 700), +(7110301, 1051062, 1, 1, 0, 700), +(9300147, 1051062, 1, 1, 0, 700), +(7110301, 1050063, 1, 1, 0, 700), +(9300147, 1050063, 1, 1, 0, 700), +(7110301, 1072145, 1, 1, 0, 700), +(9300147, 1072145, 1, 1, 0, 700), +(7110301, 1002275, 1, 1, 0, 700), +(9300147, 1002275, 1, 1, 0, 700), +(7110301, 1051041, 1, 1, 0, 700), +(9300147, 1051041, 1, 1, 0, 700), +(7110301, 1002289, 1, 1, 0, 700), +(9300147, 1002289, 1, 1, 0, 700), +(7110301, 1002248, 1, 1, 0, 700), +(9300147, 1002248, 1, 1, 0, 700), +(7110301, 1040108, 1, 1, 0, 700), +(9300147, 1040108, 1, 1, 0, 700), +(7110301, 1072150, 1, 1, 0, 700), +(9300147, 1072150, 1, 1, 0, 700), +(7110301, 1041079, 1, 1, 0, 700), +(9300147, 1041079, 1, 1, 0, 700), +(7110301, 1482010, 1, 1, 0, 700), +(9300147, 1482010, 1, 1, 0, 700), +(6300100, 2000004, 1, 1, 0, 40000), +(9300320, 2000004, 1, 4, 0, 40000), +(6300100, 2000001, 1, 1, 0, 40000), +(9300320, 2000001, 1, 4, 0, 40000), +(6300100, 2041022, 1, 1, 0, 750), +(9300320, 2041022, 1, 4, 0, 10000), +(6300100, 2041013, 1, 1, 0, 750), +(9300320, 2041013, 1, 4, 0, 10000), +(6300100, 2384032, 1, 1, 0, 20000), +(9300320, 2384032, 1, 4, 0, 20000), +(6300100, 4010006, 1, 1, 0, 7000), +(9300320, 4010006, 1, 1, 0, 7000), +(6300100, 4020003, 1, 1, 0, 7000), +(9300320, 4020003, 1, 1, 0, 7000), +(6300100, 4004001, 1, 1, 0, 3000), +(9300320, 4004001, 1, 1, 0, 3000), +(6300100, 4004004, 1, 1, 0, 3000), +(9300320, 4004004, 1, 1, 0, 3000), +(6300100, 1442030, 1, 1, 0, 700), +(9300320, 1442030, 1, 1, 0, 40000), +(6300100, 1041093, 1, 1, 0, 700), +(9300320, 1041093, 1, 1, 0, 40000), +(6300100, 1061092, 1, 1, 0, 700), +(9300320, 1061092, 1, 1, 0, 40000), +(6300100, 1041098, 1, 1, 0, 700), +(9300320, 1041098, 1, 1, 0, 40000), +(6300100, 1072149, 1, 1, 0, 700), +(9300320, 1072149, 1, 1, 0, 40000), +(6300100, 1442008, 1, 1, 0, 700), +(9300320, 1442008, 1, 1, 0, 40000), +(6300100, 1082122, 1, 1, 0, 700), +(9300320, 1082122, 1, 1, 0, 40000), +(6300100, 1072139, 1, 1, 0, 700), +(9300320, 1072139, 1, 1, 0, 40000), +(6300100, 1072158, 1, 1, 0, 700), +(9300320, 1072158, 1, 1, 0, 40000), +(6300100, 1051065, 1, 1, 0, 700), +(9300320, 1051065, 1, 1, 0, 40000), +(6300100, 1082109, 1, 1, 0, 700), +(9300320, 1082109, 1, 1, 0, 40000), +(6300100, 1452010, 1, 1, 0, 700), +(9300320, 1452010, 1, 1, 0, 40000), +(6300100, 1082108, 1, 1, 0, 700), +(9300320, 1082108, 1, 1, 0, 40000), +(6300100, 1472027, 1, 1, 0, 700), +(9300320, 1472027, 1, 1, 0, 40000), +(6300100, 1040098, 1, 1, 0, 700), +(9300320, 1040098, 1, 1, 0, 40000), +(6300100, 1060087, 1, 1, 0, 700), +(9300320, 1060087, 1, 1, 0, 40000), +(6300100, 1072172, 1, 1, 0, 700), +(9300320, 1072172, 1, 1, 0, 40000), +(6300100, 1060094, 1, 1, 0, 700), +(9300320, 1060094, 1, 1, 0, 40000), +(6300100, 1082097, 1, 1, 0, 700), +(9300320, 1082097, 1, 1, 0, 40000), +(9300039, 2388012, 1, 4, 0, 20000), +(9300195, 2388012, 1, 4, 0, 20000), +(9500170, 2388012, 1, 4, 0, 20000), +(9500329, 2388012, 1, 4, 0, 20000), +(9500351, 2388012, 1, 4, 0, 20000), +(9303012, 2388012, 1, 1, 0, 20000), +(7130501, 4000230, 1, 1, 0, 200000), +(7130501, 2000006, 1, 1, 0, 40000), +(7130501, 2000004, 1, 1, 0, 40000), +(7130501, 2070005, 1, 1, 0, 400), +(7130501, 4006001, 1, 1, 0, 7000), +(7130501, 2040505, 1, 1, 0, 750), +(7130501, 2043002, 1, 1, 0, 750), +(7130501, 2384033, 1, 1, 0, 20000), +(7130501, 4010002, 1, 1, 0, 7000), +(7130501, 4020002, 1, 1, 0, 7000), +(7130501, 4004002, 1, 1, 0, 3000), +(7130501, 1102027, 1, 1, 0, 700), +(7130501, 1082105, 1, 1, 0, 700), +(7130501, 1302018, 1, 1, 0, 700), +(7130501, 1092016, 1, 1, 0, 700), +(7130501, 1072178, 1, 1, 0, 700), +(7130501, 1002276, 1, 1, 0, 700), +(7130501, 1472027, 1, 1, 0, 700), +(7130501, 1041103, 1, 1, 0, 700), +(7130501, 1061102, 1, 1, 0, 700), +(7130501, 1052122, 1, 1, 0, 700), +(7130101, 4000046, 1, 1, 0, 200000), +(9300250, 4000046, 1, 1, 0, 200000), +(9500129, 4000046, 1, 1, 0, 200000), +(7130101, 2000005, 1, 1, 0, 40000), +(9300250, 2000005, 1, 1, 0, 40000), +(9500129, 2000005, 1, 1, 0, 40000), +(7130101, 2044101, 1, 1, 0, 750), +(9300250, 2044101, 1, 1, 0, 750), +(9500129, 2044101, 1, 1, 0, 750), +(7130101, 4006001, 1, 1, 0, 7000), +(9300250, 4006001, 1, 1, 0, 7000), +(9500129, 4006001, 1, 1, 0, 7000), +(7130101, 4001112, 1, 1, 0, 7000), +(9300250, 4001112, 1, 1, 0, 7000), +(9500129, 4001112, 1, 1, 0, 7000), +(7130101, 2384036, 1, 1, 0, 20000), +(9300250, 2384036, 1, 1, 0, 20000), +(9500129, 2384036, 1, 1, 0, 20000), +(7130101, 4010003, 1, 1, 0, 7000), +(9300250, 4010003, 1, 1, 0, 7000), +(9500129, 4010003, 1, 1, 0, 7000), +(7130101, 4020008, 1, 1, 0, 7000), +(9300250, 4020008, 1, 1, 0, 7000), +(9500129, 4020008, 1, 1, 0, 7000), +(7130101, 1102028, 1, 1, 0, 700), +(9300250, 1102028, 1, 1, 0, 700), +(9500129, 1102028, 1, 1, 0, 700), +(7130101, 1072211, 1, 1, 0, 700), +(9300250, 1072211, 1, 1, 0, 700), +(9500129, 1072211, 1, 1, 0, 700), +(7130101, 1412008, 1, 1, 0, 700), +(9300250, 1412008, 1, 1, 0, 700), +(9500129, 1412008, 1, 1, 0, 700), +(7130101, 1312008, 1, 1, 0, 700), +(9300250, 1312008, 1, 1, 0, 700), +(9500129, 1312008, 1, 1, 0, 700), +(7130101, 1422010, 1, 1, 0, 700), +(9300250, 1422010, 1, 1, 0, 700), +(9500129, 1422010, 1, 1, 0, 700), +(7130101, 1092015, 1, 1, 0, 700), +(9300250, 1092015, 1, 1, 0, 700), +(9500129, 1092015, 1, 1, 0, 700), +(7130101, 1002095, 1, 1, 0, 700), +(9300250, 1002095, 1, 1, 0, 700), +(9500129, 1002095, 1, 1, 0, 700), +(7130101, 1092016, 1, 1, 0, 700), +(9300250, 1092016, 1, 1, 0, 700), +(9500129, 1092016, 1, 1, 0, 700), +(7130101, 1382010, 1, 1, 0, 700), +(9300250, 1382010, 1, 1, 0, 700), +(9500129, 1382010, 1, 1, 0, 700), +(7130101, 1082100, 1, 1, 0, 700), +(9300250, 1082100, 1, 1, 0, 700), +(9500129, 1082100, 1, 1, 0, 700), +(7130101, 1051047, 1, 1, 0, 700), +(9300250, 1051047, 1, 1, 0, 700), +(9500129, 1051047, 1, 1, 0, 700), +(7130101, 1051055, 1, 1, 0, 700), +(9300250, 1051055, 1, 1, 0, 700), +(9500129, 1051055, 1, 1, 0, 700), +(7130101, 1051056, 1, 1, 0, 700), +(9300250, 1051056, 1, 1, 0, 700), +(9500129, 1051056, 1, 1, 0, 700), +(7130101, 1452011, 1, 1, 0, 700), +(9300250, 1452011, 1, 1, 0, 700), +(9500129, 1452011, 1, 1, 0, 700), +(7130101, 1051063, 1, 1, 0, 700), +(9300250, 1051063, 1, 1, 0, 700), +(9500129, 1051063, 1, 1, 0, 700), +(7130101, 1050077, 1, 1, 0, 700), +(9300250, 1050077, 1, 1, 0, 700), +(9500129, 1050077, 1, 1, 0, 700), +(7130101, 1072167, 1, 1, 0, 700), +(9300250, 1072167, 1, 1, 0, 700), +(9500129, 1072167, 1, 1, 0, 700), +(7130101, 1041103, 1, 1, 0, 700), +(9300250, 1041103, 1, 1, 0, 700), +(9500129, 1041103, 1, 1, 0, 700), +(7130101, 1002327, 1, 1, 0, 700), +(9300250, 1002327, 1, 1, 0, 700), +(9500129, 1002327, 1, 1, 0, 700), +(7130101, 1482009, 1, 1, 0, 700), +(9300250, 1482009, 1, 1, 0, 700), +(9500129, 1482009, 1, 1, 0, 700), +(7130200, 4000053, 1, 1, 0, 200000), +(9500132, 4000053, 1, 1, 0, 200000), +(7130200, 4000021, 1, 1, 0, 200000), +(9500132, 4000021, 1, 1, 0, 200000), +(7130200, 4003004, 1, 1, 0, 7000), +(9500132, 4003004, 1, 1, 0, 7000), +(7130200, 2000006, 1, 1, 0, 40000), +(9500132, 2000006, 1, 1, 0, 40000), +(7130200, 2000004, 1, 1, 0, 40000), +(9500132, 2000004, 1, 1, 0, 40000), +(7130200, 2070004, 1, 1, 0, 400), +(9500132, 2070004, 1, 1, 0, 400), +(7130200, 2043701, 1, 1, 0, 750), +(9500132, 2043701, 1, 1, 0, 750), +(7130200, 2044701, 1, 1, 0, 750), +(9500132, 2044701, 1, 1, 0, 750), +(7130200, 2040320, 1, 1, 0, 750), +(9500132, 2040320, 1, 1, 0, 750), +(7130200, 4006000, 1, 1, 0, 7000), +(9500132, 4006000, 1, 1, 0, 7000), +(7130200, 2384035, 1, 1, 0, 20000), +(9500132, 2384035, 1, 1, 0, 20000), +(7130200, 4010003, 1, 1, 0, 7000), +(9500132, 4010003, 1, 1, 0, 7000), +(7130200, 4020001, 1, 1, 0, 7000), +(9500132, 4020001, 1, 1, 0, 7000), +(7130200, 4004000, 1, 1, 0, 3000), +(9500132, 4004000, 1, 1, 0, 3000), +(7130200, 1002339, 1, 1, 0, 700), +(9500132, 1002339, 1, 1, 0, 700), +(7130200, 1322020, 1, 1, 0, 700), +(9500132, 1322020, 1, 1, 0, 700), +(7130200, 1092015, 1, 1, 0, 700), +(9500132, 1092015, 1, 1, 0, 700), +(7130200, 1060090, 1, 1, 0, 700), +(9500132, 1060090, 1, 1, 0, 700), +(7130200, 1402012, 1, 1, 0, 700), +(9500132, 1402012, 1, 1, 0, 700), +(7130200, 1002254, 1, 1, 0, 700), +(9500132, 1002254, 1, 1, 0, 700), +(7130200, 1050069, 1, 1, 0, 700), +(9500132, 1050069, 1, 1, 0, 700), +(7130200, 1050055, 1, 1, 0, 700), +(9500132, 1050055, 1, 1, 0, 700), +(7130200, 1002273, 1, 1, 0, 700), +(9500132, 1002273, 1, 1, 0, 700), +(7130200, 1082100, 1, 1, 0, 700), +(9500132, 1082100, 1, 1, 0, 700), +(7130200, 1002288, 1, 1, 0, 700), +(9500132, 1002288, 1, 1, 0, 700), +(7130200, 1051066, 1, 1, 0, 700), +(9500132, 1051066, 1, 1, 0, 700), +(7130200, 1472030, 1, 1, 0, 700), +(9500132, 1472030, 1, 1, 0, 700), +(7130200, 1472029, 1, 1, 0, 700), +(9500132, 1472029, 1, 1, 0, 700), +(7130200, 1332018, 1, 1, 0, 700), +(9500132, 1332018, 1, 1, 0, 700), +(7130200, 1041102, 1, 1, 0, 700), +(9500132, 1041102, 1, 1, 0, 700), +(7130200, 1061101, 1, 1, 0, 700), +(9500132, 1061101, 1, 1, 0, 700), +(7130200, 1061104, 1, 1, 0, 700), +(9500132, 1061104, 1, 1, 0, 700), +(7130200, 1072309, 1, 1, 0, 700), +(9500132, 1072309, 1, 1, 0, 700), +(9400585, 4020000, 1, 1, 0, 7000), +(9400586, 4020000, 1, 1, 0, 7000), +(7110300, 4000362, 1, 1, 0, 200000), +(7110300, 4031741, 1, 1, 0, 7000), +(7110300, 2000006, 1, 1, 0, 40000), +(7110300, 4006000, 1, 1, 0, 7000), +(7110300, 2040320, 1, 1, 0, 750), +(7110300, 2043701, 1, 1, 0, 750), +(7110300, 2044701, 1, 1, 0, 750), +(7110300, 4010003, 1, 1, 0, 7000), +(7110300, 4020001, 1, 1, 0, 7000), +(7110300, 4004000, 1, 1, 0, 3000), +(7110300, 1002339, 1, 1, 0, 700), +(7110300, 1322020, 1, 1, 0, 700), +(7110300, 1092015, 1, 1, 0, 700), +(7110300, 1040102, 1, 1, 0, 700), +(7110300, 1060090, 1, 1, 0, 700), +(7110300, 1402012, 1, 1, 0, 700), +(7110300, 1002254, 1, 1, 0, 700), +(7110300, 1050069, 1, 1, 0, 700), +(7110300, 1050055, 1, 1, 0, 700), +(7110300, 1002273, 1, 1, 0, 700), +(7110300, 1082100, 1, 1, 0, 700), +(7110300, 1002288, 1, 1, 0, 700), +(7110300, 1051066, 1, 1, 0, 700), +(7110300, 1472030, 1, 1, 0, 700), +(7110300, 1472029, 1, 1, 0, 700), +(7110300, 1332018, 1, 1, 0, 700), +(7110300, 1041102, 1, 1, 0, 700), +(7110300, 1061101, 1, 1, 0, 700), +(7110300, 1041105, 1, 1, 0, 700), +(7110300, 1061104, 1, 1, 0, 700), +(7110300, 1041094, 1, 1, 0, 700), +(7110300, 1061093, 1, 1, 0, 700), +(9420537, 4000475, 1, 1, 0, 200000), +(9420537, 4010005, 1, 1, 0, 7000), +(9420537, 2022003, 1, 1, 0, 3000), +(9420537, 2000006, 1, 1, 0, 40000), +(9420537, 1322009, 1, 1, 0, 700), +(9420537, 1072155, 1, 1, 0, 700), +(9420537, 1002289, 1, 1, 0, 700), +(9420537, 1002284, 1, 1, 0, 700), +(9420537, 1061101, 1, 1, 0, 700), +(9420537, 1041102, 1, 1, 0, 700), +(7090000, 2384038, 1, 4, 0, 20000), +(7120107, 4000549, 1, 1, 0, 200000), +(7120107, 4130020, 1, 1, 0, 3000), +(7120107, 4130017, 1, 1, 0, 3000), +(7120107, 4130016, 1, 1, 0, 3000), +(7120107, 2000006, 1, 1, 0, 40000), +(7120107, 2000004, 1, 1, 0, 40000), +(7120107, 4006000, 1, 1, 0, 7000), +(7120107, 2330004, 1, 1, 0, 400), +(7120107, 2070005, 1, 1, 0, 400), +(7120107, 2040513, 1, 1, 0, 750), +(7120107, 2044602, 1, 1, 0, 750), +(7120107, 2040624, 1, 1, 0, 750), +(7120107, 2040612, 1, 1, 0, 750), +(7120107, 2043110, 1, 1, 0, 750), +(7120107, 2049000, 1, 1, 0, 400), +(7120107, 4010005, 1, 1, 0, 7000), +(7120107, 4020000, 1, 1, 0, 7000), +(7120107, 4004004, 1, 1, 0, 3000), +(7120107, 1040090, 1, 1, 0, 700), +(7120107, 1060079, 1, 1, 0, 700), +(7120107, 1041099, 1, 1, 0, 700), +(7120107, 1061098, 1, 1, 0, 700), +(7120107, 1002340, 1, 1, 0, 700), +(7120107, 1322020, 1, 1, 0, 700), +(7120107, 1051055, 1, 1, 0, 700), +(7120107, 1051057, 1, 1, 0, 700), +(7120107, 1002252, 1, 1, 0, 700), +(7120107, 1072160, 1, 1, 0, 700), +(7120107, 1382010, 1, 1, 0, 700), +(7120107, 1051043, 1, 1, 0, 700), +(7120107, 1002289, 1, 1, 0, 700), +(7120107, 1002288, 1, 1, 0, 700), +(7120107, 1002277, 1, 1, 0, 700), +(7120107, 1041096, 1, 1, 0, 700), +(7120107, 1061095, 1, 1, 0, 700), +(7120107, 1040109, 1, 1, 0, 700), +(7120107, 1060098, 1, 1, 0, 700), +(7120107, 1472027, 1, 1, 0, 700), +(7120107, 1492009, 1, 1, 0, 700), +(7120106, 4000548, 1, 1, 0, 200000), +(7120106, 4130012, 1, 1, 0, 3000), +(7120106, 4130004, 1, 1, 0, 3000), +(7120106, 4130001, 1, 1, 0, 3000), +(7120106, 2002003, 1, 1, 0, 10000), +(7120106, 2002004, 1, 1, 0, 10000), +(7120106, 2000006, 1, 1, 0, 40000), +(7120106, 2000004, 1, 1, 0, 40000), +(7120106, 4006001, 1, 1, 0, 7000), +(7120106, 2040301, 1, 1, 0, 750), +(7120106, 2040516, 1, 1, 0, 750), +(7120106, 2040419, 1, 1, 0, 750), +(7120106, 2049000, 1, 1, 0, 400), +(7120106, 4020002, 1, 1, 0, 7000), +(7120106, 4010002, 1, 1, 0, 7000), +(7120106, 1040092, 1, 1, 0, 700), +(7120106, 1060081, 1, 1, 0, 700), +(7120106, 1041092, 1, 1, 0, 700), +(7120106, 1061091, 1, 1, 0, 700), +(7120106, 1092023, 1, 1, 0, 700), +(7120106, 1072210, 1, 1, 0, 700), +(7120106, 1051054, 1, 1, 0, 700), +(7120106, 1072177, 1, 1, 0, 700), +(7120106, 1050061, 1, 1, 0, 700), +(7120106, 1051063, 1, 1, 0, 700), +(7120106, 1072182, 1, 1, 0, 700), +(7120106, 1041095, 1, 1, 0, 700), +(7120106, 1061094, 1, 1, 0, 700), +(7120106, 1072172, 1, 1, 0, 700), +(7120106, 1082207, 1, 1, 0, 700), +(8140300, 4000146, 1, 1, 0, 200000), +(8140300, 2000006, 1, 1, 0, 40000), +(8140300, 2070005, 1, 1, 0, 400), +(8140300, 4006000, 1, 1, 0, 7000), +(8140300, 2044602, 1, 1, 0, 750), +(8140300, 2040513, 1, 1, 0, 750), +(8140300, 2385000, 1, 1, 0, 20000), +(8140300, 4010005, 1, 1, 0, 7000), +(8140300, 4020007, 1, 1, 0, 7000), +(8140300, 4004004, 1, 1, 0, 3000), +(8140300, 1002340, 1, 1, 0, 700), +(8140300, 1322020, 1, 1, 0, 700), +(8140300, 1041099, 1, 1, 0, 700), +(8140300, 1040090, 1, 1, 0, 700), +(8140300, 1060079, 1, 1, 0, 700), +(8140300, 1382010, 1, 1, 0, 700), +(8140300, 1051057, 1, 1, 0, 700), +(8140300, 1002252, 1, 1, 0, 700), +(8140300, 1072160, 1, 1, 0, 700), +(8140300, 1002288, 1, 1, 0, 700), +(8140300, 1002289, 1, 1, 0, 700), +(8140300, 1051043, 1, 1, 0, 700), +(8140300, 1002277, 1, 1, 0, 700), +(8140300, 1472027, 1, 1, 0, 700), +(8140300, 1040107, 1, 1, 0, 700), +(8140300, 1060095, 1, 1, 0, 700), +(8140300, 1040109, 1, 1, 0, 700), +(8140300, 1060098, 1, 1, 0, 700), +(8140300, 1041096, 1, 1, 0, 700), +(8140300, 1061095, 1, 1, 0, 700), +(8140300, 1492009, 1, 1, 0, 700), +(7130003, 4030012, 1, 1, 0, 10000), +(7130003, 2000006, 1, 1, 0, 40000), +(7130003, 2000004, 1, 1, 0, 40000), +(7130003, 2070005, 1, 1, 0, 400), +(7130003, 4006000, 1, 1, 0, 7000), +(7130003, 2044101, 1, 1, 0, 750), +(7130003, 2041044, 1, 1, 0, 750), +(7130003, 2385001, 1, 1, 0, 20000), +(7130003, 4010003, 1, 1, 0, 7000), +(7130003, 4020003, 1, 1, 0, 7000), +(7130003, 4004003, 1, 1, 0, 3000), +(7130003, 1432007, 1, 1, 0, 700), +(7130003, 1092016, 1, 1, 0, 700), +(7130003, 1072156, 1, 1, 0, 700), +(7130003, 1412008, 1, 1, 0, 700), +(7130003, 1002253, 1, 1, 0, 700), +(7130003, 1372015, 1, 1, 0, 700), +(7130003, 1051063, 1, 1, 0, 700), +(7130003, 1082096, 1, 1, 0, 700), +(7130003, 1002640, 1, 1, 0, 700), +(9300106, 2388011, 1, 4, 0, 20000), +(7130601, 4006000, 1, 1, 0, 7000), +(7130601, 4130016, 1, 1, 0, 3000), +(7130601, 4130003, 1, 1, 0, 3000), +(7130601, 4130011, 1, 1, 0, 3000), +(7130601, 2385002, 1, 1, 0, 20000), +(7130601, 2000006, 1, 1, 0, 40000), +(7130601, 2000004, 1, 1, 0, 40000), +(7130601, 2043701, 1, 1, 0, 750), +(7130601, 2044602, 1, 1, 0, 750), +(7130601, 2044804, 1, 1, 0, 750), +(7130601, 2040928, 1, 1, 0, 750), +(7130601, 4020001, 1, 1, 0, 7000), +(7130601, 4020007, 1, 1, 0, 7000), +(7130601, 4004003, 1, 1, 0, 3000), +(7130601, 1322019, 1, 1, 0, 700), +(7130601, 1072212, 1, 1, 0, 700), +(7130601, 1002252, 1, 1, 0, 700), +(7130601, 1462009, 1, 1, 0, 700), +(7130601, 1082125, 1, 1, 0, 700), +(7130601, 1060094, 1, 1, 0, 700), +(7130601, 1052125, 1, 1, 0, 700), +(6400100, 4130003, 1, 1, 0, 3000), +(9300321, 4130003, 1, 1, 0, 3000), +(6400100, 2000002, 1, 1, 0, 40000), +(9300321, 2000002, 1, 4, 0, 40000), +(6400100, 2002005, 1, 1, 0, 10000), +(9300321, 2002005, 1, 4, 0, 10000), +(6400100, 2044001, 1, 1, 0, 750), +(9300321, 2044001, 1, 4, 0, 10000), +(6400100, 2385003, 1, 1, 0, 20000), +(9300321, 2385003, 1, 4, 0, 20000), +(6400100, 4004004, 1, 1, 0, 3000), +(9300321, 4004004, 1, 1, 0, 3000), +(6400100, 1032022, 1, 1, 0, 700), +(9300321, 1032022, 1, 1, 0, 40000), +(6400100, 1442030, 1, 1, 0, 700), +(9300321, 1442030, 1, 1, 0, 40000), +(6400100, 1412008, 1, 1, 0, 700), +(9300321, 1412008, 1, 1, 0, 40000), +(6400100, 1092017, 1, 1, 0, 700), +(9300321, 1092017, 1, 1, 0, 40000), +(6400100, 1442008, 1, 1, 0, 700), +(9300321, 1442008, 1, 1, 0, 40000), +(6400100, 1082116, 1, 1, 0, 700), +(9300321, 1082116, 1, 1, 0, 40000), +(6400100, 1041099, 1, 1, 0, 700), +(9300321, 1041099, 1, 1, 0, 40000), +(6400100, 1002252, 1, 1, 0, 700), +(9300321, 1002252, 1, 1, 0, 40000), +(6400100, 1051058, 1, 1, 0, 700), +(9300321, 1051058, 1, 1, 0, 40000), +(6400100, 1472029, 1, 1, 0, 700), +(9300321, 1472029, 1, 1, 0, 40000), +(6400100, 1002282, 1, 1, 0, 700), +(9300321, 1002282, 1, 1, 0, 40000), +(6400100, 1082207, 1, 1, 0, 700), +(9300321, 1082207, 1, 1, 0, 40000), +(7220002, 4000298, 1, 1, 0, 200000), +(9300202, 4000298, 1, 1, 0, 200000), +(9500314, 4000298, 1, 1, 0, 200000), +(9500352, 4000298, 1, 1, 0, 200000), +(9303009, 4000298, 1, 1, 0, 200000), +(7220002, 4000289, 1, 1, 0, 200000), +(9300202, 4000289, 1, 1, 0, 200000), +(9500314, 4000289, 1, 1, 0, 200000), +(9500352, 4000289, 1, 1, 0, 200000), +(9303009, 4000289, 1, 1, 0, 200000), +(7220002, 4003005, 1, 1, 0, 7000), +(9300202, 4003005, 1, 1, 0, 7000), +(9500314, 4003005, 1, 1, 0, 7000), +(9500352, 4003005, 1, 1, 0, 7000), +(9303009, 4003005, 1, 1, 0, 7000), +(7220002, 2000002, 1, 4, 0, 40000), +(9300202, 2000002, 1, 4, 0, 40000), +(9500314, 2000002, 1, 4, 0, 40000), +(9500352, 2000002, 1, 4, 0, 40000), +(9303009, 2000002, 1, 1, 0, 40000), +(7220002, 2000003, 1, 4, 0, 40000), +(9300202, 2000003, 1, 4, 0, 40000), +(9500314, 2000003, 1, 4, 0, 40000), +(9500352, 2000003, 1, 4, 0, 40000), +(9303009, 2000003, 1, 1, 0, 40000), +(7220002, 2002002, 1, 4, 0, 10000), +(9300202, 2002002, 1, 4, 0, 10000), +(9500314, 2002002, 1, 4, 0, 10000), +(9500352, 2002002, 1, 4, 0, 10000), +(9303009, 2002002, 1, 1, 0, 10000), +(7220002, 2002003, 1, 4, 0, 10000), +(9300202, 2002003, 1, 4, 0, 10000), +(9500314, 2002003, 1, 4, 0, 10000), +(9500352, 2002003, 1, 4, 0, 10000), +(9303009, 2002003, 1, 1, 0, 10000), +(7220002, 2022149, 1, 4, 0, 3000), +(9300202, 2022149, 1, 4, 0, 3000), +(9500314, 2022149, 1, 4, 0, 3000), +(9500352, 2022149, 1, 4, 0, 3000), +(9303009, 2022149, 1, 1, 0, 3000), +(7220002, 2040004, 1, 4, 0, 10000), +(9300202, 2040004, 1, 4, 0, 10000), +(9500314, 2040004, 1, 4, 0, 10000), +(9500352, 2040004, 1, 4, 0, 10000), +(9303009, 2040004, 1, 1, 0, 750), +(7220002, 2040504, 1, 4, 0, 10000), +(9300202, 2040504, 1, 4, 0, 10000), +(9500314, 2040504, 1, 4, 0, 10000), +(9500352, 2040504, 1, 4, 0, 10000), +(9303009, 2040504, 1, 1, 0, 750), +(7220002, 2040601, 1, 4, 0, 10000), +(9300202, 2040601, 1, 4, 0, 10000), +(9500314, 2040601, 1, 4, 0, 10000), +(9500352, 2040601, 1, 4, 0, 10000), +(9303009, 2040601, 1, 1, 0, 750), +(7220002, 2040701, 1, 4, 0, 10000), +(9300202, 2040701, 1, 4, 0, 10000), +(9500314, 2040701, 1, 4, 0, 10000), +(9500352, 2040701, 1, 4, 0, 10000), +(9303009, 2040701, 1, 1, 0, 750), +(7220002, 2040707, 1, 4, 0, 10000), +(9300202, 2040707, 1, 4, 0, 10000), +(9500314, 2040707, 1, 4, 0, 10000), +(9500352, 2040707, 1, 4, 0, 10000), +(9303009, 2040707, 1, 1, 0, 750), +(7220002, 2040801, 1, 4, 0, 10000), +(9300202, 2040801, 1, 4, 0, 10000), +(9500314, 2040801, 1, 4, 0, 10000), +(9500352, 2040801, 1, 4, 0, 10000), +(9303009, 2040801, 1, 1, 0, 750), +(7220002, 2041010, 1, 4, 0, 10000), +(9300202, 2041010, 1, 4, 0, 10000), +(9500314, 2041010, 1, 4, 0, 10000), +(9500352, 2041010, 1, 4, 0, 10000), +(9303009, 2041010, 1, 1, 0, 750), +(7220002, 2043101, 1, 4, 0, 10000), +(9300202, 2043101, 1, 4, 0, 10000), +(9500314, 2043101, 1, 4, 0, 10000), +(9500352, 2043101, 1, 4, 0, 10000), +(9303009, 2043101, 1, 1, 0, 750), +(7220002, 2044001, 1, 4, 0, 10000), +(9300202, 2044001, 1, 4, 0, 10000), +(9500314, 2044001, 1, 4, 0, 10000), +(9500352, 2044001, 1, 4, 0, 10000), +(9303009, 2044001, 1, 1, 0, 750), +(7220002, 2044601, 1, 4, 0, 10000), +(9300202, 2044601, 1, 4, 0, 10000), +(9500314, 2044601, 1, 4, 0, 10000), +(9500352, 2044601, 1, 4, 0, 10000), +(9303009, 2044601, 1, 1, 0, 750), +(7220002, 2040402, 1, 4, 0, 10000), +(9300202, 2040402, 1, 4, 0, 10000), +(9500314, 2040402, 1, 4, 0, 10000), +(9500352, 2040402, 1, 4, 0, 10000), +(9303009, 2040402, 1, 1, 0, 750), +(7220002, 2040514, 1, 4, 0, 10000), +(9300202, 2040514, 1, 4, 0, 10000), +(9500314, 2040514, 1, 4, 0, 10000), +(9500352, 2040514, 1, 4, 0, 10000), +(9303009, 2040514, 1, 1, 0, 750), +(7220002, 2040702, 1, 4, 0, 10000), +(9300202, 2040702, 1, 4, 0, 10000), +(9500314, 2040702, 1, 4, 0, 10000), +(9500352, 2040702, 1, 4, 0, 10000), +(9303009, 2040702, 1, 1, 0, 750), +(7220002, 2041046, 1, 4, 0, 10000), +(9300202, 2041046, 1, 4, 0, 10000), +(9500314, 2041046, 1, 4, 0, 10000), +(9500352, 2041046, 1, 4, 0, 10000), +(9303009, 2041046, 1, 1, 0, 750), +(7220002, 2044302, 1, 4, 0, 10000), +(9300202, 2044302, 1, 4, 0, 10000), +(9500314, 2044302, 1, 4, 0, 10000), +(9500352, 2044302, 1, 4, 0, 10000), +(9303009, 2044302, 1, 1, 0, 750), +(7220002, 2388013, 1, 4, 0, 20000), +(9300202, 2388013, 1, 4, 0, 20000), +(9500314, 2388013, 1, 4, 0, 20000), +(9500352, 2388013, 1, 4, 0, 20000), +(9303009, 2388013, 1, 1, 0, 20000), +(7220002, 2060001, 10, 50, 0, 10000), +(9300202, 2060001, 10, 50, 0, 10000), +(9500314, 2060001, 10, 50, 0, 10000), +(9500352, 2060001, 10, 50, 0, 10000), +(9303009, 2060001, 10, 50, 0, 10000), +(7220002, 2061001, 10, 50, 0, 10000), +(9300202, 2061001, 10, 50, 0, 10000), +(9500314, 2061001, 10, 50, 0, 10000), +(9500352, 2061001, 10, 50, 0, 10000), +(9303009, 2061001, 10, 50, 0, 10000), +(7220002, 2044904, 1, 4, 0, 10000), +(9300202, 2044904, 1, 4, 0, 10000), +(9500314, 2044904, 1, 4, 0, 10000), +(9500352, 2044904, 1, 4, 0, 10000), +(9303009, 2044904, 1, 1, 0, 750), +(7220002, 2040621, 1, 4, 0, 10000), +(9300202, 2040621, 1, 4, 0, 10000), +(9500314, 2040621, 1, 4, 0, 10000), +(9500352, 2040621, 1, 4, 0, 10000), +(9303009, 2040621, 1, 1, 0, 750), +(7220002, 2049000, 1, 4, 0, 2500), +(9300202, 2049000, 1, 4, 0, 2500), +(9500314, 2049000, 1, 4, 0, 2500), +(9500352, 2049000, 1, 4, 0, 2500), +(9303009, 2049000, 1, 1, 0, 400), +(7220002, 4004004, 1, 1, 0, 3000), +(9300202, 4004004, 1, 1, 0, 3000), +(9500314, 4004004, 1, 1, 0, 3000), +(9500352, 4004004, 1, 1, 0, 3000), +(9303009, 4004004, 1, 1, 0, 3000), +(7220002, 4010005, 1, 1, 0, 7000), +(9300202, 4010005, 1, 1, 0, 7000), +(9500314, 4010005, 1, 1, 0, 7000), +(9500352, 4010005, 1, 1, 0, 7000), +(9303009, 4010005, 1, 1, 0, 7000), +(7220002, 4020008, 1, 1, 0, 7000), +(9300202, 4020008, 1, 1, 0, 7000), +(9500314, 4020008, 1, 1, 0, 7000), +(9500352, 4020008, 1, 1, 0, 7000), +(9303009, 4020008, 1, 1, 0, 7000), +(7220002, 1302018, 1, 1, 0, 40000), +(9300202, 1302018, 1, 1, 0, 40000), +(9500314, 1302018, 1, 1, 0, 40000), +(9500352, 1302018, 1, 1, 0, 40000), +(9303009, 1302018, 1, 1, 0, 700), +(7220002, 1312011, 1, 1, 0, 40000), +(9300202, 1312011, 1, 1, 0, 40000), +(9500314, 1312011, 1, 1, 0, 40000), +(9500352, 1312011, 1, 1, 0, 40000), +(9303009, 1312011, 1, 1, 0, 700), +(7220002, 1402004, 1, 1, 0, 40000), +(9300202, 1402004, 1, 1, 0, 40000), +(9500314, 1402004, 1, 1, 0, 40000), +(9500352, 1402004, 1, 1, 0, 40000), +(9303009, 1402004, 1, 1, 0, 700), +(7220002, 1412009, 1, 1, 0, 40000), +(9300202, 1412009, 1, 1, 0, 40000), +(9500314, 1412009, 1, 1, 0, 40000), +(9500352, 1412009, 1, 1, 0, 40000), +(9303009, 1412009, 1, 1, 0, 700), +(7220002, 1422012, 1, 1, 0, 40000), +(9300202, 1422012, 1, 1, 0, 40000), +(9500314, 1422012, 1, 1, 0, 40000), +(9500352, 1422012, 1, 1, 0, 40000), +(9303009, 1422012, 1, 1, 0, 700), +(7220002, 1432010, 1, 1, 0, 40000), +(9300202, 1432010, 1, 1, 0, 40000), +(9500314, 1432010, 1, 1, 0, 40000), +(9500352, 1432010, 1, 1, 0, 40000), +(9303009, 1432010, 1, 1, 0, 700), +(7220002, 1442019, 1, 1, 0, 40000), +(9300202, 1442019, 1, 1, 0, 40000), +(9500314, 1442019, 1, 1, 0, 40000), +(9500352, 1442019, 1, 1, 0, 40000), +(9303009, 1442019, 1, 1, 0, 700), +(7220002, 1372016, 1, 1, 0, 40000), +(9300202, 1372016, 1, 1, 0, 40000), +(9500314, 1372016, 1, 1, 0, 40000), +(9500352, 1372016, 1, 1, 0, 40000), +(9303009, 1372016, 1, 1, 0, 700), +(7220002, 1382008, 1, 1, 0, 40000), +(9300202, 1382008, 1, 1, 0, 40000), +(9500314, 1382008, 1, 1, 0, 40000), +(9500352, 1382008, 1, 1, 0, 40000), +(9303009, 1382008, 1, 1, 0, 700), +(7220002, 1452015, 1, 1, 0, 40000), +(9300202, 1452015, 1, 1, 0, 40000), +(9500314, 1452015, 1, 1, 0, 40000), +(9500352, 1452015, 1, 1, 0, 40000), +(9303009, 1452015, 1, 1, 0, 700), +(7220002, 1462013, 1, 1, 0, 40000), +(9300202, 1462013, 1, 1, 0, 40000), +(9500314, 1462013, 1, 1, 0, 40000), +(9500352, 1462013, 1, 1, 0, 40000), +(9303009, 1462013, 1, 1, 0, 700), +(7220002, 1472031, 1, 1, 0, 40000), +(9300202, 1472031, 1, 1, 0, 40000), +(9500314, 1472031, 1, 1, 0, 40000), +(9500352, 1472031, 1, 1, 0, 40000), +(9303009, 1472031, 1, 1, 0, 700), +(7220002, 1482010, 1, 1, 0, 40000), +(9300202, 1482010, 1, 1, 0, 40000), +(9500314, 1482010, 1, 1, 0, 40000), +(9500352, 1482010, 1, 1, 0, 40000), +(9303009, 1482010, 1, 1, 0, 700), +(7120108, 2000002, 1, 1, 0, 40000), +(7120108, 2000004, 1, 1, 0, 40000), +(7120108, 2002008, 1, 1, 0, 10000), +(7120108, 2044001, 1, 1, 0, 750), +(7120108, 2041013, 1, 1, 0, 750), +(7120108, 2040322, 1, 1, 0, 750), +(7120108, 2040536, 1, 1, 0, 750), +(7120108, 2043116, 1, 1, 0, 750), +(7120108, 2049000, 1, 1, 0, 400), +(7120108, 4020003, 1, 1, 0, 7000), +(7120108, 4010006, 1, 1, 0, 7000), +(7120108, 4004004, 1, 1, 0, 3000), +(7120108, 1032022, 1, 1, 0, 700), +(7120108, 1072149, 1, 1, 0, 700), +(7120108, 1041099, 1, 1, 0, 700), +(7120108, 1061098, 1, 1, 0, 700), +(7120108, 1092017, 1, 1, 0, 700), +(7120108, 1412008, 1, 1, 0, 700), +(7120108, 1051046, 1, 1, 0, 700), +(7120108, 1082098, 1, 1, 0, 700), +(7120108, 1002252, 1, 1, 0, 700), +(7120108, 1051058, 1, 1, 0, 700), +(7120108, 1002268, 1, 1, 0, 700), +(7120108, 1050061, 1, 1, 0, 700), +(7120108, 1002289, 1, 1, 0, 700), +(7120108, 1050077, 1, 1, 0, 700), +(7120108, 1002282, 1, 1, 0, 700), +(7120108, 1472029, 1, 1, 0, 700), +(7120108, 1060094, 1, 1, 0, 700), +(7120108, 1072173, 1, 1, 0, 700), +(7120108, 1082207, 1, 1, 0, 700), +(7130004, 2000004, 1, 1, 0, 40000), +(9500161, 2000004, 1, 1, 0, 40000), +(7130004, 4006001, 1, 1, 0, 7000), +(9500161, 4006001, 1, 1, 0, 7000), +(7130004, 2330003, 1, 1, 0, 400), +(9500161, 2330003, 1, 1, 0, 400), +(7130004, 2385005, 1, 1, 0, 20000), +(9500161, 2385005, 1, 1, 0, 20000), +(7130004, 2049101, 1, 1, 0, 400), +(9500161, 2049101, 1, 1, 0, 400), +(7130004, 4010004, 1, 1, 0, 7000), +(9500161, 4010004, 1, 1, 0, 7000), +(7130004, 4020004, 1, 1, 0, 7000), +(9500161, 4020004, 1, 1, 0, 7000), +(7130004, 4004004, 1, 1, 0, 3000), +(9500161, 4004004, 1, 1, 0, 3000), +(7130004, 1102029, 1, 1, 0, 700), +(9500161, 1102029, 1, 1, 0, 700), +(7130004, 1002338, 1, 1, 0, 700), +(9500161, 1002338, 1, 1, 0, 700), +(7130004, 1402012, 1, 1, 0, 700), +(9500161, 1402012, 1, 1, 0, 700), +(7130004, 1050074, 1, 1, 0, 700), +(9500161, 1050074, 1, 1, 0, 700), +(7130004, 1452010, 1, 1, 0, 700), +(9500161, 1452010, 1, 1, 0, 700), +(7130004, 1072161, 1, 1, 0, 700), +(9500161, 1072161, 1, 1, 0, 700), +(7130004, 1072312, 1, 1, 0, 700), +(9500161, 1072312, 1, 1, 0, 700), +(7120109, 4000551, 1, 1, 0, 200000), +(7120109, 4006001, 1, 1, 0, 7000), +(7120109, 2000006, 1, 1, 0, 40000), +(7120109, 2000004, 1, 1, 0, 40000), +(7120109, 2041008, 1, 1, 0, 750), +(7120109, 2044401, 1, 1, 0, 750), +(7120109, 2330003, 1, 1, 0, 400), +(7120109, 2040621, 1, 1, 0, 750), +(7120109, 2044316, 1, 1, 0, 750), +(7120109, 2049101, 1, 1, 0, 400), +(7120109, 2049000, 1, 1, 0, 400), +(7120109, 4010004, 1, 1, 0, 7000), +(7120109, 4020004, 1, 1, 0, 7000), +(7120109, 4004004, 1, 1, 0, 3000), +(7120109, 1102029, 1, 1, 0, 700), +(7120109, 1032022, 1, 1, 0, 700), +(7120109, 1442030, 1, 1, 0, 700), +(7120109, 1002338, 1, 1, 0, 700), +(7120109, 1402012, 1, 1, 0, 700), +(7120109, 1050074, 1, 1, 0, 700), +(7120109, 1082107, 1, 1, 0, 700), +(7120109, 1452010, 1, 1, 0, 700), +(7120109, 1072161, 1, 1, 0, 700), +(7120109, 1072312, 1, 1, 0, 700), +(8130100, 4030012, 1, 1, 0, 10000), +(9300203, 4030012, 1, 1, 0, 10000), +(9300260, 4030012, 1, 1, 0, 10000), +(9500139, 4030012, 1, 1, 0, 10000), +(9500169, 4030012, 1, 1, 0, 10000), +(9500327, 4030012, 1, 1, 0, 10000), +(9500353, 4030012, 1, 1, 0, 10000), +(6400008, 4030012, 1, 1, 0, 10000), +(9303010, 4030012, 1, 1, 0, 10000), +(8130100, 2000006, 1, 4, 0, 40000), +(9300203, 2000006, 1, 4, 0, 40000), +(9300260, 2000006, 1, 1, 0, 40000), +(9500139, 2000006, 1, 4, 0, 40000), +(9500169, 2000006, 1, 4, 0, 40000), +(9500327, 2000006, 1, 4, 0, 40000), +(9500353, 2000006, 1, 4, 0, 40000), +(6400008, 2000006, 1, 4, 0, 40000), +(9303010, 2000006, 1, 1, 0, 40000), +(8130100, 2000005, 1, 4, 0, 40000), +(9300203, 2000005, 1, 4, 0, 40000), +(9300260, 2000005, 1, 1, 0, 40000), +(9500139, 2000005, 1, 4, 0, 40000), +(9500169, 2000005, 1, 4, 0, 40000), +(9500327, 2000005, 1, 4, 0, 40000), +(9500353, 2000005, 1, 4, 0, 40000), +(6400008, 2000005, 1, 4, 0, 40000), +(9303010, 2000005, 1, 1, 0, 40000), +(8130100, 2043001, 1, 4, 0, 10000), +(9300203, 2043001, 1, 4, 0, 10000), +(9300260, 2043001, 1, 1, 0, 750), +(9500139, 2043001, 1, 4, 0, 10000), +(9500169, 2043001, 1, 4, 0, 10000), +(9500327, 2043001, 1, 4, 0, 10000), +(9500353, 2043001, 1, 4, 0, 10000), +(6400008, 2043001, 1, 4, 0, 10000), +(9303010, 2043001, 1, 1, 0, 750), +(8130100, 2043101, 1, 4, 0, 10000), +(9300203, 2043101, 1, 4, 0, 10000), +(9300260, 2043101, 1, 1, 0, 750), +(9500139, 2043101, 1, 4, 0, 10000), +(9500169, 2043101, 1, 4, 0, 10000), +(9500327, 2043101, 1, 4, 0, 10000), +(9500353, 2043101, 1, 4, 0, 10000), +(6400008, 2043101, 1, 4, 0, 10000), +(9303010, 2043101, 1, 1, 0, 750), +(8130100, 2043201, 1, 4, 0, 10000), +(9300203, 2043201, 1, 4, 0, 10000), +(9300260, 2043201, 1, 1, 0, 750), +(9500139, 2043201, 1, 4, 0, 10000), +(9500169, 2043201, 1, 4, 0, 10000), +(9500327, 2043201, 1, 4, 0, 10000), +(9500353, 2043201, 1, 4, 0, 10000), +(6400008, 2043201, 1, 4, 0, 10000), +(9303010, 2043201, 1, 1, 0, 750), +(8130100, 2044001, 1, 4, 0, 10000), +(9300203, 2044001, 1, 4, 0, 10000), +(9300260, 2044001, 1, 1, 0, 750), +(9500139, 2044001, 1, 4, 0, 10000), +(9500169, 2044001, 1, 4, 0, 10000), +(9500327, 2044001, 1, 4, 0, 10000), +(9500353, 2044001, 1, 4, 0, 10000), +(6400008, 2044001, 1, 4, 0, 10000), +(9303010, 2044001, 1, 1, 0, 750), +(8130100, 2044101, 1, 4, 0, 10000), +(9300203, 2044101, 1, 4, 0, 10000), +(9300260, 2044101, 1, 1, 0, 750), +(9500139, 2044101, 1, 4, 0, 10000), +(9500169, 2044101, 1, 4, 0, 10000), +(9500327, 2044101, 1, 4, 0, 10000), +(9500353, 2044101, 1, 4, 0, 10000), +(6400008, 2044101, 1, 4, 0, 10000), +(9303010, 2044101, 1, 1, 0, 750), +(8130100, 2044201, 1, 4, 0, 10000), +(9300203, 2044201, 1, 4, 0, 10000), +(9300260, 2044201, 1, 1, 0, 750), +(9500139, 2044201, 1, 4, 0, 10000), +(9500169, 2044201, 1, 4, 0, 10000), +(9500327, 2044201, 1, 4, 0, 10000), +(9500353, 2044201, 1, 4, 0, 10000), +(6400008, 2044201, 1, 4, 0, 10000), +(9303010, 2044201, 1, 1, 0, 750), +(8130100, 2043301, 1, 4, 0, 10000), +(9300203, 2043301, 1, 4, 0, 10000), +(9300260, 2043301, 1, 1, 0, 750), +(9500139, 2043301, 1, 4, 0, 10000), +(9500169, 2043301, 1, 4, 0, 10000), +(9500327, 2043301, 1, 4, 0, 10000), +(9500353, 2043301, 1, 4, 0, 10000), +(6400008, 2043301, 1, 4, 0, 10000), +(9303010, 2043301, 1, 1, 0, 750), +(8130100, 2044301, 1, 4, 0, 10000), +(9300203, 2044301, 1, 4, 0, 10000), +(9300260, 2044301, 1, 1, 0, 750), +(9500139, 2044301, 1, 4, 0, 10000), +(9500169, 2044301, 1, 4, 0, 10000), +(9500327, 2044301, 1, 4, 0, 10000), +(9500353, 2044301, 1, 4, 0, 10000), +(6400008, 2044301, 1, 4, 0, 10000), +(9303010, 2044301, 1, 1, 0, 750), +(8130100, 2044401, 1, 4, 0, 10000), +(9300203, 2044401, 1, 4, 0, 10000), +(9300260, 2044401, 1, 1, 0, 750), +(9500139, 2044401, 1, 4, 0, 10000), +(9500169, 2044401, 1, 4, 0, 10000), +(9500327, 2044401, 1, 4, 0, 10000), +(9500353, 2044401, 1, 4, 0, 10000), +(6400008, 2044401, 1, 4, 0, 10000), +(9303010, 2044401, 1, 1, 0, 750), +(8130100, 2044701, 1, 4, 0, 10000), +(9300203, 2044701, 1, 4, 0, 10000), +(9300260, 2044701, 1, 1, 0, 750), +(9500139, 2044701, 1, 4, 0, 10000), +(9500169, 2044701, 1, 4, 0, 10000), +(9500327, 2044701, 1, 4, 0, 10000), +(9500353, 2044701, 1, 4, 0, 10000), +(6400008, 2044701, 1, 4, 0, 10000), +(9303010, 2044701, 1, 1, 0, 750), +(8130100, 2044501, 1, 4, 0, 10000), +(9300203, 2044501, 1, 4, 0, 10000), +(9300260, 2044501, 1, 1, 0, 750), +(9500139, 2044501, 1, 4, 0, 10000), +(9500169, 2044501, 1, 4, 0, 10000), +(9500327, 2044501, 1, 4, 0, 10000), +(9500353, 2044501, 1, 4, 0, 10000), +(6400008, 2044501, 1, 4, 0, 10000), +(9303010, 2044501, 1, 1, 0, 750), +(8130100, 2044601, 1, 4, 0, 10000), +(9300203, 2044601, 1, 4, 0, 10000), +(9300260, 2044601, 1, 1, 0, 750), +(9500139, 2044601, 1, 4, 0, 10000), +(9500169, 2044601, 1, 4, 0, 10000), +(9500327, 2044601, 1, 4, 0, 10000), +(9500353, 2044601, 1, 4, 0, 10000), +(6400008, 2044601, 1, 4, 0, 10000), +(9303010, 2044601, 1, 1, 0, 750), +(8130100, 2043701, 1, 4, 0, 10000), +(9300203, 2043701, 1, 4, 0, 10000), +(9300260, 2043701, 1, 1, 0, 750), +(9500139, 2043701, 1, 4, 0, 10000), +(9500169, 2043701, 1, 4, 0, 10000), +(9500327, 2043701, 1, 4, 0, 10000), +(9500353, 2043701, 1, 4, 0, 10000), +(6400008, 2043701, 1, 4, 0, 10000), +(9303010, 2043701, 1, 1, 0, 750), +(8130100, 2043801, 1, 4, 0, 10000), +(9300203, 2043801, 1, 4, 0, 10000), +(9300260, 2043801, 1, 1, 0, 750), +(9500139, 2043801, 1, 4, 0, 10000), +(9500169, 2043801, 1, 4, 0, 10000), +(9500327, 2043801, 1, 4, 0, 10000), +(9500353, 2043801, 1, 4, 0, 10000), +(6400008, 2043801, 1, 4, 0, 10000), +(9303010, 2043801, 1, 1, 0, 750), +(8130100, 2070007, 1, 4, 0, 2500), +(9300203, 2070007, 1, 4, 0, 2500), +(9300260, 2070007, 1, 1, 0, 400), +(9500139, 2070007, 1, 4, 0, 2500), +(9500169, 2070007, 1, 4, 0, 2500), +(9500327, 2070007, 1, 4, 0, 2500), +(9500353, 2070007, 1, 4, 0, 2500), +(6400008, 2070007, 1, 4, 0, 2500), +(9303010, 2070007, 1, 1, 0, 400), +(8130100, 2049000, 1, 4, 0, 2500), +(9300203, 2049000, 1, 4, 0, 2500), +(9300260, 2049000, 1, 1, 0, 400), +(9500139, 2049000, 1, 4, 0, 2500), +(9500169, 2049000, 1, 4, 0, 2500), +(9500327, 2049000, 1, 4, 0, 2500), +(9500353, 2049000, 1, 4, 0, 2500), +(6400008, 2049000, 1, 4, 0, 2500), +(9303010, 2049000, 1, 1, 0, 400), +(8130100, 2388026, 1, 4, 0, 20000), +(9300203, 2388026, 1, 4, 0, 20000), +(9300260, 2388026, 1, 1, 0, 20000), +(9500139, 2388026, 1, 4, 0, 20000), +(9500169, 2388026, 1, 4, 0, 20000), +(9500327, 2388026, 1, 4, 0, 20000), +(9500353, 2388026, 1, 4, 0, 20000), +(6400008, 2388026, 1, 4, 0, 20000), +(9303010, 2388026, 1, 1, 0, 20000), +(8130100, 4021008, 1, 1, 0, 7000), +(9300203, 4021008, 1, 1, 0, 7000), +(9300260, 4021008, 1, 1, 0, 7000), +(9500139, 4021008, 1, 1, 0, 7000), +(9500169, 4021008, 1, 1, 0, 7000), +(9500327, 4021008, 1, 1, 0, 7000), +(9500353, 4021008, 1, 1, 0, 7000), +(6400008, 4021008, 1, 1, 0, 7000), +(9303010, 4021008, 1, 1, 0, 7000), +(8130100, 1422010, 1, 1, 0, 40000), +(9300203, 1422010, 1, 1, 0, 40000), +(9300260, 1422010, 1, 1, 0, 700), +(9500139, 1422010, 1, 1, 0, 40000), +(9500169, 1422010, 1, 1, 0, 40000), +(9500327, 1422010, 1, 1, 0, 40000), +(9500353, 1422010, 1, 1, 0, 40000), +(6400008, 1422010, 1, 1, 0, 40000), +(9303010, 1422010, 1, 1, 0, 700), +(8130100, 1402012, 1, 1, 0, 40000), +(9300203, 1402012, 1, 1, 0, 40000), +(9300260, 1402012, 1, 1, 0, 700), +(9500139, 1402012, 1, 1, 0, 40000), +(9500169, 1402012, 1, 1, 0, 40000), +(9500327, 1402012, 1, 1, 0, 40000), +(9500353, 1402012, 1, 1, 0, 40000), +(6400008, 1402012, 1, 1, 0, 40000), +(9303010, 1402012, 1, 1, 0, 700), +(8130100, 1322019, 1, 1, 0, 40000), +(9300203, 1322019, 1, 1, 0, 40000), +(9300260, 1322019, 1, 1, 0, 700), +(9500139, 1322019, 1, 1, 0, 40000), +(9500169, 1322019, 1, 1, 0, 40000), +(9500327, 1322019, 1, 1, 0, 40000), +(9500353, 1322019, 1, 1, 0, 40000), +(6400008, 1322019, 1, 1, 0, 40000), +(9303010, 1322019, 1, 1, 0, 700), +(8130100, 1332019, 1, 1, 0, 40000), +(9300203, 1332019, 1, 1, 0, 40000), +(9300260, 1332019, 1, 1, 0, 700), +(9500139, 1332019, 1, 1, 0, 40000), +(9500169, 1332019, 1, 1, 0, 40000), +(9500327, 1332019, 1, 1, 0, 40000), +(9500353, 1332019, 1, 1, 0, 40000), +(6400008, 1332019, 1, 1, 0, 40000), +(9303010, 1332019, 1, 1, 0, 700), +(8130100, 1092009, 1, 1, 0, 40000), +(9300203, 1092009, 1, 1, 0, 40000), +(9300260, 1092009, 1, 1, 0, 700), +(9500139, 1092009, 1, 1, 0, 40000), +(9500169, 1092009, 1, 1, 0, 40000), +(9500327, 1092009, 1, 1, 0, 40000), +(9500353, 1092009, 1, 1, 0, 40000), +(6400008, 1092009, 1, 1, 0, 40000), +(9303010, 1092009, 1, 1, 0, 700), +(8130100, 1432007, 1, 1, 0, 40000), +(9300203, 1432007, 1, 1, 0, 40000), +(9300260, 1432007, 1, 1, 0, 700), +(9500139, 1432007, 1, 1, 0, 40000), +(9500169, 1432007, 1, 1, 0, 40000), +(9500327, 1432007, 1, 1, 0, 40000), +(9500353, 1432007, 1, 1, 0, 40000), +(6400008, 1432007, 1, 1, 0, 40000), +(9303010, 1432007, 1, 1, 0, 700), +(8130100, 1302012, 1, 1, 0, 40000), +(9300203, 1302012, 1, 1, 0, 40000), +(9300260, 1302012, 1, 1, 0, 700), +(9500139, 1302012, 1, 1, 0, 40000), +(9500169, 1302012, 1, 1, 0, 40000), +(9500327, 1302012, 1, 1, 0, 40000), +(9500353, 1302012, 1, 1, 0, 40000), +(6400008, 1302012, 1, 1, 0, 40000), +(9303010, 1302012, 1, 1, 0, 700), +(8130100, 1092016, 1, 1, 0, 40000), +(9300203, 1092016, 1, 1, 0, 40000), +(9300260, 1092016, 1, 1, 0, 700), +(9500139, 1092016, 1, 1, 0, 40000), +(9500169, 1092016, 1, 1, 0, 40000), +(9500327, 1092016, 1, 1, 0, 40000), +(9500353, 1092016, 1, 1, 0, 40000), +(6400008, 1092016, 1, 1, 0, 40000), +(9303010, 1092016, 1, 1, 0, 700), +(8130100, 1312010, 1, 1, 0, 40000), +(9300203, 1312010, 1, 1, 0, 40000), +(9300260, 1312010, 1, 1, 0, 700), +(9500139, 1312010, 1, 1, 0, 40000), +(9500169, 1312010, 1, 1, 0, 40000), +(9500327, 1312010, 1, 1, 0, 40000), +(9500353, 1312010, 1, 1, 0, 40000), +(6400008, 1312010, 1, 1, 0, 40000), +(9303010, 1312010, 1, 1, 0, 700), +(8130100, 1382007, 1, 1, 0, 40000), +(9300203, 1382007, 1, 1, 0, 40000), +(9300260, 1382007, 1, 1, 0, 700), +(9500139, 1382007, 1, 1, 0, 40000), +(9500169, 1382007, 1, 1, 0, 40000), +(9500327, 1382007, 1, 1, 0, 40000), +(9500353, 1382007, 1, 1, 0, 40000), +(6400008, 1382007, 1, 1, 0, 40000), +(9303010, 1382007, 1, 1, 0, 700), +(8130100, 1462009, 1, 1, 0, 40000), +(9300203, 1462009, 1, 1, 0, 40000), +(9300260, 1462009, 1, 1, 0, 700), +(9500139, 1462009, 1, 1, 0, 40000), +(9500169, 1462009, 1, 1, 0, 40000), +(9500327, 1462009, 1, 1, 0, 40000), +(9500353, 1462009, 1, 1, 0, 40000), +(6400008, 1462009, 1, 1, 0, 40000), +(9303010, 1462009, 1, 1, 0, 700), +(8130100, 1452009, 1, 1, 0, 40000), +(9300203, 1452009, 1, 1, 0, 40000), +(9300260, 1452009, 1, 1, 0, 700), +(9500139, 1452009, 1, 1, 0, 40000), +(9500169, 1452009, 1, 1, 0, 40000), +(9500327, 1452009, 1, 1, 0, 40000), +(9500353, 1452009, 1, 1, 0, 40000), +(6400008, 1452009, 1, 1, 0, 40000), +(9303010, 1452009, 1, 1, 0, 700), +(8130100, 1472026, 1, 1, 0, 40000), +(9300203, 1472026, 1, 1, 0, 40000), +(9300260, 1472026, 1, 1, 0, 700), +(9500139, 1472026, 1, 1, 0, 40000), +(9500169, 1472026, 1, 1, 0, 40000), +(9500327, 1472026, 1, 1, 0, 40000), +(9500353, 1472026, 1, 1, 0, 40000), +(6400008, 1472026, 1, 1, 0, 40000), +(9303010, 1472026, 1, 1, 0, 700), +(8130100, 1332018, 1, 1, 0, 40000), +(9300203, 1332018, 1, 1, 0, 40000), +(9300260, 1332018, 1, 1, 0, 700), +(9500139, 1332018, 1, 1, 0, 40000), +(9500169, 1332018, 1, 1, 0, 40000), +(9500327, 1332018, 1, 1, 0, 40000), +(9500353, 1332018, 1, 1, 0, 40000), +(6400008, 1332018, 1, 1, 0, 40000), +(9303010, 1332018, 1, 1, 0, 700), +(8130100, 1332019, 1, 1, 0, 40000), +(9300203, 1332019, 1, 1, 0, 40000), +(9300260, 1332019, 1, 1, 0, 700), +(9500139, 1332019, 1, 1, 0, 40000), +(9500169, 1332019, 1, 1, 0, 40000), +(9500327, 1332019, 1, 1, 0, 40000), +(9500353, 1332019, 1, 1, 0, 40000), +(6400008, 1332019, 1, 1, 0, 40000), +(9303010, 1332019, 1, 1, 0, 700), +(8140000, 4000054, 1, 1, 0, 200000), +(9500134, 4000054, 1, 1, 0, 200000), +(8140000, 4032475, 1, 1, 0, 10000), +(9500134, 4032475, 1, 1, 0, 10000), +(8140000, 2070006, 1, 1, 0, 400), +(9500134, 2070006, 1, 1, 0, 400), +(8140000, 2040902, 1, 1, 0, 750), +(9500134, 2040902, 1, 1, 0, 750), +(8140000, 4006001, 1, 1, 0, 7000), +(9500134, 4006001, 1, 1, 0, 7000), +(8140000, 2385006, 1, 1, 0, 20000), +(9500134, 2385006, 1, 1, 0, 20000), +(8140000, 4010003, 1, 1, 0, 7000), +(9500134, 4010003, 1, 1, 0, 7000), +(8140000, 4010001, 1, 1, 0, 7000), +(9500134, 4010001, 1, 1, 0, 7000), +(8140000, 4020006, 1, 1, 0, 7000), +(9500134, 4020006, 1, 1, 0, 7000), +(8140000, 4020008, 1, 1, 0, 7000), +(9500134, 4020008, 1, 1, 0, 7000), +(8140000, 4004001, 1, 1, 0, 3000), +(9500134, 4004001, 1, 1, 0, 3000), +(8140000, 1102029, 1, 1, 0, 700), +(9500134, 1102029, 1, 1, 0, 700), +(8140000, 1032023, 1, 1, 0, 700), +(9500134, 1032023, 1, 1, 0, 700), +(8140000, 1322020, 1, 1, 0, 700), +(9500134, 1322020, 1, 1, 0, 700), +(8140000, 1402004, 1, 1, 0, 700), +(9500134, 1402004, 1, 1, 0, 700), +(8140000, 1082129, 1, 1, 0, 700), +(9500134, 1082129, 1, 1, 0, 700), +(8140000, 1072210, 1, 1, 0, 700), +(9500134, 1072210, 1, 1, 0, 700), +(8140000, 1442008, 1, 1, 0, 700), +(9500134, 1442008, 1, 1, 0, 700), +(8140000, 1051053, 1, 1, 0, 700), +(9500134, 1051053, 1, 1, 0, 700), +(8140000, 1050092, 1, 1, 0, 700), +(9500134, 1050092, 1, 1, 0, 700), +(8140000, 1002271, 1, 1, 0, 700), +(9500134, 1002271, 1, 1, 0, 700), +(8140000, 1072178, 1, 1, 0, 700), +(9500134, 1072178, 1, 1, 0, 700), +(8140000, 1002275, 1, 1, 0, 700), +(9500134, 1002275, 1, 1, 0, 700), +(8140000, 1050064, 1, 1, 0, 700), +(9500134, 1050064, 1, 1, 0, 700), +(8140000, 1051082, 1, 1, 0, 700), +(9500134, 1051082, 1, 1, 0, 700), +(8140000, 1072193, 1, 1, 0, 700), +(9500134, 1072193, 1, 1, 0, 700), +(8140000, 1002285, 1, 1, 0, 700), +(9500134, 1002285, 1, 1, 0, 700), +(8140000, 1472028, 1, 1, 0, 700), +(9500134, 1472028, 1, 1, 0, 700), +(8140000, 1072172, 1, 1, 0, 700), +(9500134, 1072172, 1, 1, 0, 700), +(8140000, 1482010, 1, 1, 0, 700), +(9500134, 1482010, 1, 1, 0, 700), +(9400545, 4032024, 1, 1, 0, 10000), +(9400545, 4032025, 1, 1, 0, 10000), +(9400545, 2070006, 1, 1, 0, 400), +(9400545, 2044408, 1, 1, 0, 750), +(9400545, 2044702, 1, 1, 0, 750), +(9400545, 2044309, 1, 1, 0, 750), +(9400545, 4020006, 1, 1, 0, 7000), +(9400545, 4020008, 1, 1, 0, 7000), +(9400545, 4010001, 1, 1, 0, 7000), +(9400545, 4010003, 1, 1, 0, 7000), +(9400545, 4004001, 1, 1, 0, 3000), +(9400545, 1102029, 1, 1, 0, 700), +(9400545, 1032023, 1, 1, 0, 700), +(9400545, 1402004, 1, 1, 0, 700), +(9400545, 1072210, 1, 1, 0, 700), +(9400545, 1040104, 1, 1, 0, 700), +(9400545, 1060092, 1, 1, 0, 700), +(9400545, 1082129, 1, 1, 0, 700), +(9400545, 1442008, 1, 1, 0, 700), +(9400545, 1072178, 1, 1, 0, 700), +(9400545, 1050092, 1, 1, 0, 700), +(9400545, 1002271, 1, 1, 0, 700), +(9400545, 1051053, 1, 1, 0, 700), +(9400545, 1382008, 1, 1, 0, 700), +(9400545, 1002275, 1, 1, 0, 700), +(9400545, 1051082, 1, 1, 0, 700), +(9400545, 1050064, 1, 1, 0, 700), +(9400545, 1472028, 1, 1, 0, 700), +(9400545, 1072193, 1, 1, 0, 700), +(9400545, 1072172, 1, 1, 0, 700), +(9400545, 1002285, 1, 1, 0, 700), +(8140001, 2000006, 1, 1, 0, 40000), +(9500162, 2000006, 1, 1, 0, 40000), +(8140001, 2000005, 1, 1, 0, 40000), +(9500162, 2000005, 1, 1, 0, 40000), +(8140001, 2070005, 1, 1, 0, 400), +(9500162, 2070005, 1, 1, 0, 400), +(8140001, 4006000, 1, 1, 0, 7000), +(9500162, 4006000, 1, 1, 0, 7000), +(8140001, 2385007, 1, 1, 0, 20000), +(9500162, 2385007, 1, 1, 0, 20000), +(8140001, 2044602, 1, 1, 0, 750), +(9500162, 2044602, 1, 1, 0, 750), +(8140001, 2041046, 1, 1, 0, 750), +(9500162, 2041046, 1, 1, 0, 750), +(8140001, 2040320, 1, 1, 0, 750), +(9500162, 2040320, 1, 1, 0, 750), +(8140001, 2040825, 1, 1, 0, 750), +(9500162, 2040825, 1, 1, 0, 750), +(8140001, 2044310, 1, 1, 0, 750), +(9500162, 2044310, 1, 1, 0, 750), +(8140001, 4010005, 1, 1, 0, 7000), +(9500162, 4010005, 1, 1, 0, 7000), +(8140001, 4020005, 1, 1, 0, 7000), +(9500162, 4020005, 1, 1, 0, 7000), +(8140001, 4004000, 1, 1, 0, 3000), +(9500162, 4004000, 1, 1, 0, 3000), +(8140001, 1102031, 1, 1, 0, 700), +(9500162, 1102031, 1, 1, 0, 700), +(8140001, 1442008, 1, 1, 0, 700), +(9500162, 1442008, 1, 1, 0, 700), +(8140001, 1312010, 1, 1, 0, 700), +(9500162, 1312010, 1, 1, 0, 700), +(8140001, 1072158, 1, 1, 0, 700), +(9500162, 1072158, 1, 1, 0, 700), +(8140001, 1452011, 1, 1, 0, 700), +(9500162, 1452011, 1, 1, 0, 700), +(8140001, 1002288, 1, 1, 0, 700), +(9500162, 1002288, 1, 1, 0, 700), +(8140001, 1040107, 1, 1, 0, 700), +(9500162, 1040107, 1, 1, 0, 700), +(8140001, 1060095, 1, 1, 0, 700), +(9500162, 1060095, 1, 1, 0, 700), +(9400581, 4032006, 1, 1, 0, 10000), +(9400581, 2000006, 1, 1, 0, 40000), +(9400581, 2000004, 1, 1, 0, 40000), +(9400581, 2000005, 1, 1, 0, 40000), +(9400581, 4006000, 1, 1, 0, 7000), +(9400581, 4006001, 1, 1, 0, 7000), +(9400581, 2040513, 1, 1, 0, 750), +(9400581, 2044301, 1, 1, 0, 750), +(9400581, 1102012, 1, 1, 0, 700), +(9400581, 1032020, 1, 1, 0, 700), +(9400581, 1402012, 1, 1, 0, 700), +(9400581, 1442008, 1, 1, 0, 700), +(9400581, 1002252, 1, 1, 0, 700), +(8110300, 4031740, 1, 1, 0, 7000), +(8110300, 2000005, 1, 1, 0, 40000), +(8110300, 2000002, 1, 1, 0, 40000), +(8110300, 2000006, 1, 1, 0, 40000), +(8110300, 4006000, 1, 1, 0, 7000), +(8110300, 2070005, 1, 1, 0, 400), +(8110300, 2041046, 1, 1, 0, 750), +(8110300, 2044602, 1, 1, 0, 750), +(8110300, 2044904, 1, 1, 0, 750), +(8110300, 2385008, 1, 1, 0, 20000), +(8110300, 4010005, 1, 1, 0, 7000), +(8110300, 4020005, 1, 1, 0, 7000), +(8110300, 4004000, 1, 1, 0, 3000), +(8110300, 1102031, 1, 1, 0, 700), +(8110300, 1442008, 1, 1, 0, 700), +(8110300, 1312010, 1, 1, 0, 700), +(8110300, 1082114, 1, 1, 0, 700), +(8110300, 1072158, 1, 1, 0, 700), +(8110300, 1452011, 1, 1, 0, 700), +(8110300, 1002288, 1, 1, 0, 700), +(8110300, 1040107, 1, 1, 0, 700), +(8110300, 1060095, 1, 1, 0, 700), +(8200000, 4000443, 1, 1, 0, 200000), +(8200000, 4130013, 1, 1, 0, 3000), +(8200000, 4130000, 1, 1, 0, 3000), +(8200000, 2330004, 1, 1, 0, 400), +(8200000, 2044113, 1, 1, 0, 750), +(8200000, 4004002, 1, 1, 0, 3000), +(8200000, 4010000, 1, 1, 0, 7000), +(8200000, 4020000, 1, 1, 0, 7000), +(8200000, 4020009, 1, 1, 0, 7000), +(8200000, 1102028, 1, 1, 0, 700), +(8200000, 1072179, 1, 1, 0, 700), +(8200000, 1082112, 1, 1, 0, 700), +(8200000, 1452011, 1, 1, 0, 700), +(8200000, 1041107, 1, 1, 0, 700), +(8200000, 1040110, 1, 1, 0, 700), +(8200000, 1002640, 1, 1, 0, 700), +(9300139, 2388014, 1, 4, 0, 20000), +(9300151, 2388014, 1, 4, 0, 20000), +(9300205, 2388014, 1, 4, 0, 20000), +(9500335, 2388014, 1, 4, 0, 20000), +(9500354, 2388014, 1, 4, 0, 20000), +(9300139, 2000002, 1, 4, 0, 40000), +(9300151, 2000002, 1, 4, 0, 40000), +(9300205, 2000002, 1, 4, 0, 40000), +(9500335, 2000002, 1, 4, 0, 40000), +(9500354, 2000002, 1, 4, 0, 40000), +(9300139, 2000004, 1, 4, 0, 40000), +(9300151, 2000004, 1, 4, 0, 40000), +(9300205, 2000004, 1, 4, 0, 40000), +(9500335, 2000004, 1, 4, 0, 40000), +(9500354, 2000004, 1, 4, 0, 40000), +(9300139, 2000006, 1, 4, 0, 40000), +(9300151, 2000006, 1, 4, 0, 40000), +(9300205, 2000006, 1, 4, 0, 40000), +(9500335, 2000006, 1, 4, 0, 40000), +(9500354, 2000006, 1, 4, 0, 40000), +(9300139, 2020013, 1, 4, 0, 3000), +(9300151, 2020013, 1, 4, 0, 3000), +(9300205, 2020013, 1, 4, 0, 3000), +(9500335, 2020013, 1, 4, 0, 3000), +(9500354, 2020013, 1, 4, 0, 3000), +(9300139, 2020014, 1, 4, 0, 3000), +(9300151, 2020014, 1, 4, 0, 3000), +(9300205, 2020014, 1, 4, 0, 3000), +(9500335, 2020014, 1, 4, 0, 3000), +(9500354, 2020014, 1, 4, 0, 3000), +(9300139, 2020015, 1, 4, 0, 3000), +(9300151, 2020015, 1, 4, 0, 3000), +(9300205, 2020015, 1, 4, 0, 3000), +(9500335, 2020015, 1, 4, 0, 3000), +(9500354, 2020015, 1, 4, 0, 3000), +(9300139, 2044601, 1, 4, 0, 10000), +(9300151, 2044601, 1, 4, 0, 10000), +(9300205, 2044601, 1, 4, 0, 10000), +(9500335, 2044601, 1, 4, 0, 10000), +(9500354, 2044601, 1, 4, 0, 10000), +(9300139, 2040707, 1, 4, 0, 10000), +(9300151, 2040707, 1, 4, 0, 10000), +(9300205, 2040707, 1, 4, 0, 10000), +(9500335, 2040707, 1, 4, 0, 10000), +(9500354, 2040707, 1, 4, 0, 10000), +(9300139, 2044401, 1, 4, 0, 10000), +(9300151, 2044401, 1, 4, 0, 10000), +(9300205, 2044401, 1, 4, 0, 10000), +(9500335, 2044401, 1, 4, 0, 10000), +(9500354, 2044401, 1, 4, 0, 10000), +(9300139, 2040504, 1, 4, 0, 10000), +(9300151, 2040504, 1, 4, 0, 10000), +(9300205, 2040504, 1, 4, 0, 10000), +(9500335, 2040504, 1, 4, 0, 10000), +(9500354, 2040504, 1, 4, 0, 10000), +(9300139, 2044501, 1, 4, 0, 10000), +(9300151, 2044501, 1, 4, 0, 10000), +(9300205, 2044501, 1, 4, 0, 10000), +(9500335, 2044501, 1, 4, 0, 10000), +(9500354, 2044501, 1, 4, 0, 10000), +(9300139, 2044001, 1, 4, 0, 10000), +(9300151, 2044001, 1, 4, 0, 10000), +(9300205, 2044001, 1, 4, 0, 10000), +(9500335, 2044001, 1, 4, 0, 10000), +(9500354, 2044001, 1, 4, 0, 10000), +(9300139, 2043701, 1, 4, 0, 10000), +(9300151, 2043701, 1, 4, 0, 10000), +(9300205, 2043701, 1, 4, 0, 10000), +(9500335, 2043701, 1, 4, 0, 10000), +(9500354, 2043701, 1, 4, 0, 10000), +(9300139, 2043001, 1, 4, 0, 10000), +(9300151, 2043001, 1, 4, 0, 10000), +(9300205, 2043001, 1, 4, 0, 10000), +(9500335, 2043001, 1, 4, 0, 10000), +(9500354, 2043001, 1, 4, 0, 10000), +(9300139, 2040004, 1, 4, 0, 10000), +(9300151, 2040004, 1, 4, 0, 10000), +(9300205, 2040004, 1, 4, 0, 10000), +(9500335, 2040004, 1, 4, 0, 10000), +(9500354, 2040004, 1, 4, 0, 10000), +(9300139, 2044701, 1, 4, 0, 10000), +(9300151, 2044701, 1, 4, 0, 10000), +(9300205, 2044701, 1, 4, 0, 10000), +(9500335, 2044701, 1, 4, 0, 10000), +(9500354, 2044701, 1, 4, 0, 10000), +(9300139, 2043301, 1, 4, 0, 10000), +(9300151, 2043301, 1, 4, 0, 10000), +(9300205, 2043301, 1, 4, 0, 10000), +(9500335, 2043301, 1, 4, 0, 10000), +(9500354, 2043301, 1, 4, 0, 10000), +(9300139, 2043801, 1, 4, 0, 10000), +(9300151, 2043801, 1, 4, 0, 10000), +(9300205, 2043801, 1, 4, 0, 10000), +(9500335, 2043801, 1, 4, 0, 10000), +(9500354, 2043801, 1, 4, 0, 10000), +(9420538, 4000476, 1, 1, 0, 200000), +(9420538, 2000006, 1, 1, 0, 40000), +(9420538, 2022003, 1, 1, 0, 3000), +(9420538, 2041017, 1, 1, 0, 750), +(9420538, 4004002, 1, 1, 0, 3000), +(9420538, 4010001, 1, 1, 0, 7000), +(9420538, 4010002, 1, 1, 0, 7000), +(9420538, 1102029, 1, 1, 0, 700), +(9420538, 1072155, 1, 1, 0, 700), +(9420538, 1092015, 1, 1, 0, 700), +(9420538, 1422012, 1, 1, 0, 700), +(9420538, 1002274, 1, 1, 0, 700), +(9420538, 1060094, 1, 1, 0, 700), +(9420538, 1041106, 1, 1, 0, 700), +(8120102, 4000552, 1, 1, 0, 200000), +(8120102, 2330004, 1, 1, 0, 400), +(8120102, 2044113, 1, 1, 0, 750), +(8120102, 2049000, 1, 1, 0, 400), +(8120102, 4010000, 1, 1, 0, 7000), +(8120102, 4020000, 1, 1, 0, 7000), +(8120102, 4004002, 1, 1, 0, 3000), +(8120102, 1102028, 1, 1, 0, 700), +(8120102, 1072179, 1, 1, 0, 700), +(8120102, 1082112, 1, 1, 0, 700), +(8120102, 1452011, 1, 1, 0, 700), +(8120102, 1041107, 1, 1, 0, 700), +(8120102, 1040110, 1, 1, 0, 700), +(8120102, 1002640, 1, 1, 0, 700), +(7140000, 4000132, 1, 1, 0, 200000), +(9300322, 4000132, 1, 1, 0, 200000), +(9301004, 4000132, 1, 1, 0, 200000), +(7140000, 2000006, 1, 1, 0, 40000), +(9300322, 2000006, 1, 4, 0, 40000), +(9301004, 2000006, 1, 1, 0, 40000), +(7140000, 4006000, 1, 1, 0, 7000), +(9300322, 4006000, 1, 1, 0, 7000), +(9301004, 4006000, 1, 1, 0, 7000), +(7140000, 2040502, 1, 1, 0, 750), +(9300322, 2040502, 1, 4, 0, 10000), +(9301004, 2040502, 1, 1, 0, 750), +(7140000, 2041043, 1, 1, 0, 750), +(9300322, 2041043, 1, 4, 0, 10000), +(9301004, 2041043, 1, 1, 0, 750), +(7140000, 2385010, 1, 1, 0, 20000), +(9300322, 2385010, 1, 4, 0, 20000), +(9301004, 2385010, 1, 1, 0, 20000), +(7140000, 4010002, 1, 1, 0, 7000), +(9300322, 4010002, 1, 1, 0, 7000), +(9301004, 4010002, 1, 1, 0, 7000), +(7140000, 4020002, 1, 1, 0, 7000), +(9300322, 4020002, 1, 1, 0, 7000), +(9301004, 4020002, 1, 1, 0, 7000), +(7140000, 4004001, 1, 1, 0, 3000), +(9300322, 4004001, 1, 1, 0, 3000), +(9301004, 4004001, 1, 1, 0, 3000), +(7140000, 1432010, 1, 1, 0, 700), +(9300322, 1432010, 1, 1, 0, 40000), +(9301004, 1432010, 1, 1, 0, 700), +(7140000, 1092025, 1, 1, 0, 700), +(9300322, 1092025, 1, 1, 0, 40000), +(9301004, 1092025, 1, 1, 0, 700), +(7140000, 1002338, 1, 1, 0, 700), +(9300322, 1002338, 1, 1, 0, 40000), +(9301004, 1002338, 1, 1, 0, 700), +(7140000, 1082128, 1, 1, 0, 700), +(9300322, 1082128, 1, 1, 0, 40000), +(9301004, 1082128, 1, 1, 0, 700), +(7140000, 1002094, 1, 1, 0, 700), +(9300322, 1002094, 1, 1, 0, 40000), +(9301004, 1002094, 1, 1, 0, 700), +(7140000, 1082114, 1, 1, 0, 700), +(9300322, 1082114, 1, 1, 0, 40000), +(9301004, 1082114, 1, 1, 0, 700), +(7140000, 1002273, 1, 1, 0, 700), +(9300322, 1002273, 1, 1, 0, 40000), +(9301004, 1002273, 1, 1, 0, 700), +(7140000, 1072207, 1, 1, 0, 700), +(9300322, 1072207, 1, 1, 0, 40000), +(9301004, 1072207, 1, 1, 0, 700), +(7140000, 1462011, 1, 1, 0, 700), +(9300322, 1462011, 1, 1, 0, 40000), +(9301004, 1462011, 1, 1, 0, 700), +(7140000, 1050089, 1, 1, 0, 700), +(9300322, 1050089, 1, 1, 0, 40000), +(9301004, 1050089, 1, 1, 0, 700), +(7140000, 1002287, 1, 1, 0, 700), +(9300322, 1002287, 1, 1, 0, 40000), +(9301004, 1002287, 1, 1, 0, 700), +(7140000, 1002277, 1, 1, 0, 700), +(9300322, 1002277, 1, 1, 0, 40000), +(9301004, 1002277, 1, 1, 0, 700), +(7140000, 1072182, 1, 1, 0, 700), +(9300322, 1072182, 1, 1, 0, 40000), +(9301004, 1072182, 1, 1, 0, 700), +(7140000, 1040107, 1, 1, 0, 700), +(9300322, 1040107, 1, 1, 0, 40000), +(9301004, 1040107, 1, 1, 0, 700), +(7140000, 1040108, 1, 1, 0, 700), +(9300322, 1040108, 1, 1, 0, 40000), +(9301004, 1040108, 1, 1, 0, 700), +(7140000, 1072192, 1, 1, 0, 700), +(9300322, 1072192, 1, 1, 0, 40000), +(9301004, 1072192, 1, 1, 0, 700), +(7140000, 1082118, 1, 1, 0, 700), +(9300322, 1082118, 1, 1, 0, 40000), +(9301004, 1082118, 1, 1, 0, 700), +(7140000, 1002640, 1, 1, 0, 700), +(9300322, 1002640, 1, 1, 0, 40000), +(9301004, 1002640, 1, 1, 0, 700), +(8140002, 4000240, 1, 1, 0, 200000), +(9500163, 4000240, 1, 1, 0, 200000), +(8140002, 2070005, 1, 1, 0, 400), +(9500163, 2070005, 1, 1, 0, 400), +(8140002, 2040707, 1, 1, 0, 750), +(9500163, 2040707, 1, 1, 0, 750), +(8140002, 2043301, 1, 1, 0, 750), +(9500163, 2043301, 1, 1, 0, 750), +(8140002, 2330003, 1, 1, 0, 400), +(9500163, 2330003, 1, 1, 0, 400), +(8140002, 2385011, 1, 1, 0, 20000), +(9500163, 2385011, 1, 1, 0, 20000), +(8140002, 4010006, 1, 1, 0, 7000), +(9500163, 4010006, 1, 1, 0, 7000), +(8140002, 4020007, 1, 1, 0, 7000), +(9500163, 4020007, 1, 1, 0, 7000), +(8140002, 4004001, 1, 1, 0, 3000), +(9500163, 4004001, 1, 1, 0, 3000), +(8140002, 1032022, 1, 1, 0, 700), +(9500163, 1032022, 1, 1, 0, 700), +(8140002, 1102030, 1, 1, 0, 700), +(9500163, 1102030, 1, 1, 0, 700), +(8140002, 1002339, 1, 1, 0, 700), +(9500163, 1002339, 1, 1, 0, 700), +(8140002, 1382010, 1, 1, 0, 700), +(9500163, 1382010, 1, 1, 0, 700), +(8140002, 1051057, 1, 1, 0, 700), +(9500163, 1051057, 1, 1, 0, 700), +(8140002, 1462012, 1, 1, 0, 700), +(9500163, 1462012, 1, 1, 0, 700), +(8140002, 1082112, 1, 1, 0, 700), +(9500163, 1082112, 1, 1, 0, 700), +(8140002, 1472029, 1, 1, 0, 700), +(9500163, 1472029, 1, 1, 0, 700), +(8140002, 1072173, 1, 1, 0, 700), +(9500163, 1072173, 1, 1, 0, 700), +(8140002, 1052125, 1, 1, 0, 700), +(9500163, 1052125, 1, 1, 0, 700), +(9300140, 2388014, 1, 4, 0, 20000), +(9300152, 2388014, 1, 4, 0, 20000), +(8120103, 4000553, 1, 1, 0, 200000), +(8120103, 4006001, 1, 1, 0, 7000), +(8120103, 2000006, 1, 1, 0, 40000), +(8120103, 2000002, 1, 1, 0, 40000), +(8120103, 2000005, 1, 1, 0, 40000), +(8120103, 2040707, 1, 1, 0, 750), +(8120103, 2043301, 1, 1, 0, 750), +(8120103, 2070005, 1, 1, 0, 400), +(8120103, 2330003, 1, 1, 0, 400), +(8120103, 2040028, 1, 1, 0, 750), +(8120103, 2040316, 1, 1, 0, 750), +(8120103, 2043015, 1, 1, 0, 750), +(8120103, 2049000, 1, 1, 0, 400), +(8120103, 4010006, 1, 1, 0, 7000), +(8120103, 4020007, 1, 1, 0, 7000), +(8120103, 4004001, 1, 1, 0, 3000), +(8120103, 1102030, 1, 1, 0, 700), +(8120103, 1032022, 1, 1, 0, 700), +(8120103, 1002339, 1, 1, 0, 700), +(8120103, 1051057, 1, 1, 0, 700), +(8120103, 1382010, 1, 1, 0, 700), +(8120103, 1082112, 1, 1, 0, 700), +(8120103, 1462012, 1, 1, 0, 700), +(8120103, 1072173, 1, 1, 0, 700), +(8120103, 1472029, 1, 1, 0, 700), +(8120103, 1052125, 1, 1, 0, 700), +(7130010, 4000147, 1, 1, 0, 200000), +(9500135, 4000147, 1, 1, 0, 200000), +(7130010, 2000006, 1, 1, 0, 40000), +(9500135, 2000006, 1, 1, 0, 40000), +(7130010, 2002005, 1, 1, 0, 10000), +(9500135, 2002005, 1, 1, 0, 10000), +(7130010, 2050004, 1, 1, 0, 3000), +(9500135, 2050004, 1, 1, 0, 3000), +(7130010, 4006001, 1, 1, 0, 7000), +(9500135, 4006001, 1, 1, 0, 7000), +(7130010, 2020015, 1, 1, 0, 3000), +(9500135, 2020015, 1, 1, 0, 3000), +(7130010, 2041016, 1, 1, 0, 750), +(9500135, 2041016, 1, 1, 0, 750), +(7130010, 2040601, 1, 1, 0, 750), +(9500135, 2040601, 1, 1, 0, 750), +(7130010, 2040401, 1, 1, 0, 750), +(9500135, 2040401, 1, 1, 0, 750), +(7130010, 2385012, 1, 1, 0, 20000), +(9500135, 2385012, 1, 1, 0, 20000), +(7130010, 4020005, 1, 1, 0, 7000), +(9500135, 4020005, 1, 1, 0, 7000), +(7130010, 4020008, 1, 1, 0, 7000), +(9500135, 4020008, 1, 1, 0, 7000), +(7130010, 4004002, 1, 1, 0, 3000), +(9500135, 4004002, 1, 1, 0, 3000), +(7130010, 1102030, 1, 1, 0, 700), +(9500135, 1102030, 1, 1, 0, 700), +(7130010, 1302016, 1, 1, 0, 700), +(9500135, 1302016, 1, 1, 0, 700), +(7130010, 1412009, 1, 1, 0, 700), +(9500135, 1412009, 1, 1, 0, 700), +(7130010, 1051078, 1, 1, 0, 700), +(9500135, 1051078, 1, 1, 0, 700), +(7130010, 1051077, 1, 1, 0, 700), +(9500135, 1051077, 1, 1, 0, 700), +(7130010, 1072154, 1, 1, 0, 700), +(9500135, 1072154, 1, 1, 0, 700), +(7130010, 1072196, 1, 1, 0, 700), +(9500135, 1072196, 1, 1, 0, 700), +(7130010, 1050073, 1, 1, 0, 700), +(9500135, 1050073, 1, 1, 0, 700), +(7130010, 1372016, 1, 1, 0, 700), +(9500135, 1372016, 1, 1, 0, 700), +(7130010, 1072209, 1, 1, 0, 700), +(9500135, 1072209, 1, 1, 0, 700), +(7130010, 1082123, 1, 1, 0, 700), +(9500135, 1082123, 1, 1, 0, 700), +(7130010, 1452010, 1, 1, 0, 700), +(9500135, 1452010, 1, 1, 0, 700), +(7130010, 1072184, 1, 1, 0, 700), +(9500135, 1072184, 1, 1, 0, 700), +(7130010, 1050088, 1, 1, 0, 700), +(9500135, 1050088, 1, 1, 0, 700), +(7130010, 1051082, 1, 1, 0, 700), +(9500135, 1051082, 1, 1, 0, 700), +(7130010, 1051065, 1, 1, 0, 700), +(9500135, 1051065, 1, 1, 0, 700), +(7130010, 1332022, 1, 1, 0, 700), +(9500135, 1332022, 1, 1, 0, 700), +(7130010, 1002328, 1, 1, 0, 700), +(9500135, 1002328, 1, 1, 0, 700), +(7130010, 1082142, 1, 1, 0, 700), +(9500135, 1082142, 1, 1, 0, 700), +(7130010, 1082118, 1, 1, 0, 700), +(9500135, 1082118, 1, 1, 0, 700), +(7130010, 1041101, 1, 1, 0, 700), +(9500135, 1041101, 1, 1, 0, 700), +(7130010, 1061100, 1, 1, 0, 700), +(9500135, 1061100, 1, 1, 0, 700), +(7130010, 1082207, 1, 1, 0, 700), +(9500135, 1082207, 1, 1, 0, 700), +(7130020, 4000179, 1, 1, 0, 200000), +(7130020, 4030012, 1, 1, 0, 10000), +(7130020, 2000002, 1, 1, 0, 40000), +(7130020, 2000006, 1, 1, 0, 40000), +(7130020, 2050004, 1, 1, 0, 3000), +(7130020, 2044701, 1, 1, 0, 750), +(7130020, 2048001, 1, 1, 0, 750), +(7130020, 2044902, 1, 1, 0, 750), +(7130020, 2385013, 1, 1, 0, 20000), +(7130020, 4004003, 1, 1, 0, 3000), +(7130020, 4020008, 1, 1, 0, 7000), +(7130020, 4010001, 1, 1, 0, 7000), +(7130020, 1102032, 1, 1, 0, 700), +(7130020, 1102035, 1, 1, 0, 700), +(7130020, 1442030, 1, 1, 0, 700), +(7130020, 1051078, 1, 1, 0, 700), +(7130020, 1422012, 1, 1, 0, 700), +(7130020, 1050093, 1, 1, 0, 700), +(7130020, 1002287, 1, 1, 0, 700), +(7130020, 1072164, 1, 1, 0, 700), +(7130020, 1002329, 1, 1, 0, 700), +(7130020, 1072194, 1, 1, 0, 700), +(7130020, 1002323, 1, 1, 0, 700), +(7130020, 1041101, 1, 1, 0, 700), +(7130020, 1061100, 1, 1, 0, 700), +(7130020, 1072152, 1, 1, 0, 700), +(7130020, 1472023, 1, 1, 0, 700), +(7130020, 1072312, 1, 1, 0, 700), +(8140110, 4030012, 1, 1, 0, 10000), +(8140110, 2000002, 1, 1, 0, 40000), +(8140110, 2000005, 1, 1, 0, 40000), +(8140110, 4006000, 1, 1, 0, 7000), +(8140110, 2044702, 1, 1, 0, 750), +(8140110, 2043802, 1, 1, 0, 750), +(8140110, 2044803, 1, 1, 0, 750), +(8140110, 4010006, 1, 1, 0, 7000), +(8140110, 4020008, 1, 1, 0, 7000), +(8140110, 4004002, 1, 1, 0, 3000), +(8140110, 1092027, 1, 1, 0, 700), +(8140110, 1302056, 1, 1, 0, 700), +(8140110, 1432010, 1, 1, 0, 700), +(8140110, 1372010, 1, 1, 0, 700), +(8140110, 1452015, 1, 1, 0, 700), +(8140110, 1462013, 1, 1, 0, 700), +(8140110, 1072185, 1, 1, 0, 700), +(8140110, 1082119, 1, 1, 0, 700), +(8140110, 1002330, 1, 1, 0, 700), +(8140110, 1332052, 1, 1, 0, 700), +(8140110, 1482010, 1, 1, 0, 700), +(9300178, 2044701, 1, 1, 0, 750), +(9300178, 2044301, 1, 1, 0, 750), +(9300178, 2043301, 1, 1, 0, 750), +(8220009, 2000005, 1, 4, 0, 40000), +(9300207, 2000005, 1, 4, 0, 40000), +(9410014, 2000005, 1, 1, 0, 40000), +(9410015, 2000005, 1, 4, 0, 40000), +(9500178, 2000005, 1, 1, 0, 40000), +(8220009, 2043001, 1, 4, 0, 10000), +(9300207, 2043001, 1, 4, 0, 10000), +(9410014, 2043001, 1, 1, 0, 750), +(9410015, 2043001, 1, 4, 0, 10000), +(9500178, 2043001, 1, 1, 0, 750), +(8220009, 2043101, 1, 4, 0, 10000), +(9300207, 2043101, 1, 4, 0, 10000), +(9410014, 2043101, 1, 1, 0, 750), +(9410015, 2043101, 1, 4, 0, 10000), +(9500178, 2043101, 1, 1, 0, 750), +(8220009, 2043201, 1, 4, 0, 10000), +(9300207, 2043201, 1, 4, 0, 10000), +(9410014, 2043201, 1, 1, 0, 750), +(9410015, 2043201, 1, 4, 0, 10000), +(9500178, 2043201, 1, 1, 0, 750), +(8220009, 2043301, 1, 4, 0, 10000), +(9300207, 2043301, 1, 4, 0, 10000), +(9410014, 2043301, 1, 1, 0, 750), +(9410015, 2043301, 1, 4, 0, 10000), +(9500178, 2043301, 1, 1, 0, 750), +(8220009, 2043701, 1, 4, 0, 10000), +(9300207, 2043701, 1, 4, 0, 10000), +(9410014, 2043701, 1, 1, 0, 750), +(9410015, 2043701, 1, 4, 0, 10000), +(9500178, 2043701, 1, 1, 0, 750), +(8220009, 2043801, 1, 4, 0, 10000), +(9300207, 2043801, 1, 4, 0, 10000), +(9410014, 2043801, 1, 1, 0, 750), +(9410015, 2043801, 1, 4, 0, 10000), +(9500178, 2043801, 1, 1, 0, 750), +(8220009, 2044001, 1, 4, 0, 10000), +(9300207, 2044001, 1, 4, 0, 10000), +(9410014, 2044001, 1, 1, 0, 750), +(9410015, 2044001, 1, 4, 0, 10000), +(9500178, 2044001, 1, 1, 0, 750), +(8220009, 2044101, 1, 4, 0, 10000), +(9300207, 2044101, 1, 4, 0, 10000), +(9410014, 2044101, 1, 1, 0, 750), +(9410015, 2044101, 1, 4, 0, 10000), +(9500178, 2044101, 1, 1, 0, 750), +(8220009, 2044201, 1, 4, 0, 10000), +(9300207, 2044201, 1, 4, 0, 10000), +(9410014, 2044201, 1, 1, 0, 750), +(9410015, 2044201, 1, 4, 0, 10000), +(9500178, 2044201, 1, 1, 0, 750), +(8220009, 2044301, 1, 4, 0, 10000), +(9300207, 2044301, 1, 4, 0, 10000), +(9410014, 2044301, 1, 1, 0, 750), +(9410015, 2044301, 1, 4, 0, 10000), +(9500178, 2044301, 1, 1, 0, 750), +(8220009, 2044401, 1, 4, 0, 10000), +(9300207, 2044401, 1, 4, 0, 10000), +(9410014, 2044401, 1, 1, 0, 750), +(9410015, 2044401, 1, 4, 0, 10000), +(9500178, 2044401, 1, 1, 0, 750), +(8220009, 2044501, 1, 4, 0, 10000), +(9300207, 2044501, 1, 4, 0, 10000), +(9410014, 2044501, 1, 1, 0, 750), +(9410015, 2044501, 1, 4, 0, 10000), +(9500178, 2044501, 1, 1, 0, 750), +(8220009, 2044601, 1, 4, 0, 10000), +(9300207, 2044601, 1, 4, 0, 10000), +(9410014, 2044601, 1, 1, 0, 750), +(9410015, 2044601, 1, 4, 0, 10000), +(9500178, 2044601, 1, 1, 0, 750), +(8220009, 2044701, 1, 4, 0, 10000), +(9300207, 2044701, 1, 4, 0, 10000), +(9410014, 2044701, 1, 1, 0, 750), +(9410015, 2044701, 1, 4, 0, 10000), +(9500178, 2044701, 1, 1, 0, 750), +(8220009, 2000004, 1, 4, 0, 40000), +(9300207, 2000004, 1, 4, 0, 40000), +(9410014, 2000004, 1, 1, 0, 40000), +(9410015, 2000004, 1, 4, 0, 40000), +(9500178, 2000004, 1, 1, 0, 40000), +(8220009, 1322019, 1, 1, 0, 40000), +(9300207, 1322019, 1, 1, 0, 40000), +(9410014, 1322019, 1, 1, 0, 700), +(9410015, 1322019, 1, 1, 0, 40000), +(9500178, 1322019, 1, 1, 0, 700), +(8220009, 1312010, 1, 1, 0, 40000), +(9300207, 1312010, 1, 1, 0, 40000), +(9410014, 1312010, 1, 1, 0, 700), +(9410015, 1312010, 1, 1, 0, 40000), +(9500178, 1312010, 1, 1, 0, 700), +(8220009, 1412008, 1, 1, 0, 40000), +(9300207, 1412008, 1, 1, 0, 40000), +(9410014, 1412008, 1, 1, 0, 700), +(9410015, 1412008, 1, 1, 0, 40000), +(9500178, 1412008, 1, 1, 0, 700), +(8220009, 1422010, 1, 1, 0, 40000), +(9300207, 1422010, 1, 1, 0, 40000), +(9410014, 1422010, 1, 1, 0, 700), +(9410015, 1422010, 1, 1, 0, 40000), +(9500178, 1422010, 1, 1, 0, 700), +(8220009, 1432007, 1, 1, 0, 40000), +(9300207, 1432007, 1, 1, 0, 40000), +(9410014, 1432007, 1, 1, 0, 700), +(9410015, 1432007, 1, 1, 0, 40000), +(9500178, 1432007, 1, 1, 0, 700), +(8220009, 1442008, 1, 1, 0, 40000), +(9300207, 1442008, 1, 1, 0, 40000), +(9410014, 1442008, 1, 1, 0, 700), +(9410015, 1442008, 1, 1, 0, 40000), +(9500178, 1442008, 1, 1, 0, 700), +(8220009, 1302012, 1, 1, 0, 40000), +(9300207, 1302012, 1, 1, 0, 40000), +(9410014, 1302012, 1, 1, 0, 700), +(9410015, 1302012, 1, 1, 0, 40000), +(9500178, 1302012, 1, 1, 0, 700), +(8220009, 1402012, 1, 1, 0, 40000), +(9300207, 1402012, 1, 1, 0, 40000), +(9410014, 1402012, 1, 1, 0, 700), +(9410015, 1402012, 1, 1, 0, 40000), +(9500178, 1402012, 1, 1, 0, 700), +(8220009, 1332019, 1, 1, 0, 40000), +(9300207, 1332019, 1, 1, 0, 40000), +(9410014, 1332019, 1, 1, 0, 700), +(9410015, 1332019, 1, 1, 0, 40000), +(9500178, 1332019, 1, 1, 0, 700), +(8220009, 1092017, 1, 1, 0, 40000), +(9300207, 1092017, 1, 1, 0, 40000), +(9410014, 1092017, 1, 1, 0, 700), +(9410015, 1092017, 1, 1, 0, 40000), +(9500178, 1092017, 1, 1, 0, 700), +(8220009, 1382007, 1, 1, 0, 40000), +(9300207, 1382007, 1, 1, 0, 40000), +(9410014, 1382007, 1, 1, 0, 700), +(9410015, 1382007, 1, 1, 0, 40000), +(9500178, 1382007, 1, 1, 0, 700), +(8220009, 1452009, 1, 1, 0, 40000), +(9300207, 1452009, 1, 1, 0, 40000), +(9410014, 1452009, 1, 1, 0, 700), +(9410015, 1452009, 1, 1, 0, 40000), +(9500178, 1452009, 1, 1, 0, 700), +(8220009, 1462009, 1, 1, 0, 40000), +(9300207, 1462009, 1, 1, 0, 40000), +(9410014, 1462009, 1, 1, 0, 700), +(9410015, 1462009, 1, 1, 0, 40000), +(9500178, 1462009, 1, 1, 0, 700), +(8220009, 1472026, 1, 1, 0, 40000), +(9300207, 1472026, 1, 1, 0, 40000), +(9410014, 1472026, 1, 1, 0, 700), +(9410015, 1472026, 1, 1, 0, 40000), +(9500178, 1472026, 1, 1, 0, 700), +(8220009, 1332018, 1, 1, 0, 40000), +(9300207, 1332018, 1, 1, 0, 40000), +(9410014, 1332018, 1, 1, 0, 700), +(9410015, 1332018, 1, 1, 0, 40000), +(9500178, 1332018, 1, 1, 0, 700), +(8220009, 1332019, 1, 1, 0, 40000), +(9300207, 1332019, 1, 1, 0, 40000), +(9410014, 1332019, 1, 1, 0, 700), +(9410015, 1332019, 1, 1, 0, 40000), +(9500178, 1332019, 1, 1, 0, 700), +(8120104, 4000554, 1, 1, 0, 200000), +(8120104, 4006001, 1, 1, 0, 7000), +(8120104, 4001110, 1, 1, 0, 7000), +(8120104, 2000006, 1, 1, 0, 40000), +(8120104, 2000002, 1, 1, 0, 40000), +(8120104, 2044401, 1, 1, 0, 750), +(8120104, 2040621, 1, 1, 0, 750), +(8120104, 2070005, 1, 1, 0, 400), +(8120104, 2049000, 1, 1, 0, 400), +(8120104, 2330003, 1, 1, 0, 400), +(8120104, 4010003, 1, 1, 0, 7000), +(8120104, 4020008, 1, 1, 0, 7000), +(8120104, 4004000, 1, 1, 0, 3000), +(8120104, 1032016, 1, 1, 0, 700), +(8120104, 1082103, 1, 1, 0, 700), +(8120104, 1051077, 1, 1, 0, 700), +(8120104, 1082116, 1, 1, 0, 700), +(8120104, 1072197, 1, 1, 0, 700), +(8120104, 1050070, 1, 1, 0, 700), +(8120104, 1051057, 1, 1, 0, 700), +(8120104, 1002272, 1, 1, 0, 700), +(8120104, 1082121, 1, 1, 0, 700), +(8120104, 1082131, 1, 1, 0, 700), +(8120104, 1452011, 1, 1, 0, 700), +(8120104, 1050075, 1, 1, 0, 700), +(8120104, 1051066, 1, 1, 0, 700), +(8120104, 1082109, 1, 1, 0, 700), +(8120104, 1082125, 1, 1, 0, 700), +(8120104, 1040107, 1, 1, 0, 700), +(8120104, 1060095, 1, 1, 0, 700), +(8120104, 1002330, 1, 1, 0, 700), +(8120104, 1041105, 1, 1, 0, 700), +(8120104, 1061104, 1, 1, 0, 700), +(8120104, 1072173, 1, 1, 0, 700), +(8120104, 1040115, 1, 1, 0, 700), +(8120104, 1060104, 1, 1, 0, 700), +(7160000, 4130004, 1, 1, 0, 3000), +(9301003, 4130004, 1, 1, 0, 3000), +(7160000, 4131007, 1, 1, 0, 3000), +(9301003, 4131007, 1, 1, 0, 3000), +(7160000, 4031171, 1, 1, 0, 7000), +(9301003, 4031171, 1, 1, 0, 7000), +(7160000, 2000006, 1, 1, 0, 40000), +(9301003, 2000006, 1, 1, 0, 40000), +(7160000, 2000002, 1, 1, 0, 40000), +(9301003, 2000002, 1, 1, 0, 40000), +(7160000, 2070005, 1, 1, 0, 400), +(9301003, 2070005, 1, 1, 0, 400), +(7160000, 4006001, 1, 1, 0, 7000), +(9301003, 4006001, 1, 1, 0, 7000), +(7160000, 2044401, 1, 1, 0, 750), +(9301003, 2044401, 1, 1, 0, 750), +(7160000, 2041016, 1, 1, 0, 750), +(9301003, 2041016, 1, 1, 0, 750), +(7160000, 4001110, 1, 1, 0, 7000), +(9301003, 4001110, 1, 1, 0, 7000), +(7160000, 2330003, 1, 1, 0, 400), +(9301003, 2330003, 1, 1, 0, 400), +(7160000, 4010003, 1, 1, 0, 7000), +(9301003, 4010003, 1, 1, 0, 7000), +(7160000, 4020008, 1, 1, 0, 7000), +(9301003, 4020008, 1, 1, 0, 7000), +(7160000, 4004000, 1, 1, 0, 3000), +(9301003, 4004000, 1, 1, 0, 3000), +(7160000, 1032016, 1, 1, 0, 700), +(9301003, 1032016, 1, 1, 0, 700), +(7160000, 1051077, 1, 1, 0, 700), +(9301003, 1051077, 1, 1, 0, 700), +(7160000, 1072197, 1, 1, 0, 700), +(9301003, 1072197, 1, 1, 0, 700), +(7160000, 1082116, 1, 1, 0, 700), +(9301003, 1082116, 1, 1, 0, 700), +(7160000, 1082103, 1, 1, 0, 700), +(9301003, 1082103, 1, 1, 0, 700), +(7160000, 1050070, 1, 1, 0, 700), +(9301003, 1050070, 1, 1, 0, 700), +(7160000, 1051057, 1, 1, 0, 700), +(9301003, 1051057, 1, 1, 0, 700), +(7160000, 1082131, 1, 1, 0, 700), +(9301003, 1082131, 1, 1, 0, 700), +(7160000, 1082121, 1, 1, 0, 700), +(9301003, 1082121, 1, 1, 0, 700), +(7160000, 1002272, 1, 1, 0, 700), +(9301003, 1002272, 1, 1, 0, 700), +(7160000, 1051055, 1, 1, 0, 700), +(9301003, 1051055, 1, 1, 0, 700), +(7160000, 1082109, 1, 1, 0, 700), +(9301003, 1082109, 1, 1, 0, 700), +(7160000, 1082125, 1, 1, 0, 700), +(9301003, 1082125, 1, 1, 0, 700), +(7160000, 1050075, 1, 1, 0, 700), +(9301003, 1050075, 1, 1, 0, 700), +(7160000, 1051066, 1, 1, 0, 700), +(9301003, 1051066, 1, 1, 0, 700), +(7160000, 1452011, 1, 1, 0, 700), +(9301003, 1452011, 1, 1, 0, 700), +(7160000, 1061104, 1, 1, 0, 700), +(9301003, 1061104, 1, 1, 0, 700), +(7160000, 1041105, 1, 1, 0, 700), +(9301003, 1041105, 1, 1, 0, 700), +(7160000, 1040115, 1, 1, 0, 700), +(9301003, 1040115, 1, 1, 0, 700), +(7160000, 1060104, 1, 1, 0, 700), +(9301003, 1060104, 1, 1, 0, 700), +(7160000, 1002330, 1, 1, 0, 700), +(9301003, 1002330, 1, 1, 0, 700), +(7160000, 1040107, 1, 1, 0, 700), +(9301003, 1040107, 1, 1, 0, 700), +(7160000, 1060095, 1, 1, 0, 700), +(9301003, 1060095, 1, 1, 0, 700), +(7160000, 1072173, 1, 1, 0, 700), +(9301003, 1072173, 1, 1, 0, 700), +(9420539, 4000477, 1, 1, 0, 200000), +(9420539, 4006001, 1, 1, 0, 7000), +(9420539, 4006000, 1, 1, 0, 7000), +(9420539, 2000009, 1, 1, 0, 40000), +(9420539, 2002008, 1, 1, 0, 10000), +(9420539, 2000006, 1, 1, 0, 40000), +(9420539, 2044601, 1, 1, 0, 750), +(9420539, 2040802, 1, 1, 0, 750), +(9420539, 2040514, 1, 1, 0, 750), +(9420539, 2070005, 1, 1, 0, 400), +(9420539, 4010000, 1, 1, 0, 7000), +(9420539, 4020005, 1, 1, 0, 7000), +(9420539, 4004004, 1, 1, 0, 3000), +(9420539, 4010002, 1, 1, 0, 7000), +(9420539, 1102035, 1, 1, 0, 700), +(9420539, 1102031, 1, 1, 0, 700), +(9420539, 1412009, 1, 1, 0, 700), +(9420539, 1402012, 1, 1, 0, 700), +(9420539, 1082116, 1, 1, 0, 700), +(9420539, 1050074, 1, 1, 0, 700), +(9420539, 1082099, 1, 1, 0, 700), +(9420539, 1082108, 1, 1, 0, 700), +(9420539, 1002284, 1, 1, 0, 700), +(8140111, 4030012, 1, 1, 0, 10000), +(8140111, 2000006, 1, 1, 0, 40000), +(8140111, 2000005, 1, 1, 0, 40000), +(8140111, 2070006, 1, 1, 0, 400), +(8140111, 2041014, 1, 1, 0, 750), +(8140111, 2044001, 1, 1, 0, 750), +(8140111, 2330003, 1, 1, 0, 400), +(8140111, 4010003, 1, 1, 0, 7000), +(8140111, 4020003, 1, 1, 0, 7000), +(8140111, 4004002, 1, 1, 0, 3000), +(8140111, 1032023, 1, 1, 0, 700), +(8140111, 1051080, 1, 1, 0, 700), +(8140111, 1092025, 1, 1, 0, 700), +(8140111, 1442044, 1, 1, 0, 700), +(8140111, 1432030, 1, 1, 0, 700), +(8140111, 1372016, 1, 1, 0, 700), +(8140111, 1082122, 1, 1, 0, 700), +(8140111, 1072183, 1, 1, 0, 700), +(8140111, 1462015, 1, 1, 0, 700), +(8140111, 1082106, 1, 1, 0, 700), +(8140111, 1002328, 1, 1, 0, 700), +(8140111, 1472031, 1, 1, 0, 700), +(8140111, 1482010, 1, 1, 0, 700), +(8140101, 2000002, 1, 1, 0, 40000), +(9300096, 2000002, 1, 1, 0, 40000), +(9300261, 2000002, 1, 1, 0, 40000), +(9500164, 2000002, 1, 1, 0, 40000), +(8140101, 2000006, 1, 1, 0, 40000), +(9300096, 2000006, 1, 1, 0, 40000), +(9300261, 2000006, 1, 1, 0, 40000), +(9500164, 2000006, 1, 1, 0, 40000), +(8140101, 2000005, 1, 1, 0, 40000), +(9300096, 2000005, 1, 1, 0, 40000), +(9300261, 2000005, 1, 1, 0, 40000), +(9500164, 2000005, 1, 1, 0, 40000), +(8140101, 4006001, 1, 1, 0, 7000), +(9300096, 4006001, 1, 1, 0, 7000), +(9300261, 4006001, 1, 1, 0, 7000), +(9500164, 4006001, 1, 1, 0, 7000), +(8140101, 2048004, 1, 1, 0, 750), +(9300096, 2048004, 1, 1, 0, 750), +(9300261, 2048004, 1, 1, 0, 750), +(9500164, 2048004, 1, 1, 0, 750), +(8140101, 2040901, 1, 1, 0, 750), +(9300096, 2040901, 1, 1, 0, 750), +(9300261, 2040901, 1, 1, 0, 750), +(9500164, 2040901, 1, 1, 0, 750), +(8140101, 4010003, 1, 1, 0, 7000), +(9300096, 4010003, 1, 1, 0, 7000), +(9300261, 4010003, 1, 1, 0, 7000), +(9500164, 4010003, 1, 1, 0, 7000), +(8140101, 4020001, 1, 1, 0, 7000), +(9300096, 4020001, 1, 1, 0, 7000), +(9300261, 4020001, 1, 1, 0, 7000), +(9500164, 4020001, 1, 1, 0, 7000), +(8140101, 4004003, 1, 1, 0, 3000), +(9300096, 4004003, 1, 1, 0, 3000), +(9300261, 4004003, 1, 1, 0, 3000), +(9500164, 4004003, 1, 1, 0, 3000), +(8140101, 1032023, 1, 1, 0, 700), +(9300096, 1032023, 1, 1, 0, 700), +(9300261, 1032023, 1, 1, 0, 700), +(9500164, 1032023, 1, 1, 0, 700), +(8140101, 1082117, 1, 1, 0, 700), +(9300096, 1082117, 1, 1, 0, 700), +(9300261, 1082117, 1, 1, 0, 700), +(9500164, 1082117, 1, 1, 0, 700), +(8140101, 1092026, 1, 1, 0, 700), +(9300096, 1092026, 1, 1, 0, 700), +(9300261, 1092026, 1, 1, 0, 700), +(9500164, 1092026, 1, 1, 0, 700), +(8140101, 1402035, 1, 1, 0, 700), +(9300096, 1402035, 1, 1, 0, 700), +(9300261, 1402035, 1, 1, 0, 700), +(9500164, 1402035, 1, 1, 0, 700), +(8140101, 1312030, 1, 1, 0, 700), +(9300096, 1312030, 1, 1, 0, 700), +(9300261, 1312030, 1, 1, 0, 700), +(9500164, 1312030, 1, 1, 0, 700), +(8140101, 1072179, 1, 1, 0, 700), +(9300096, 1072179, 1, 1, 0, 700), +(9300261, 1072179, 1, 1, 0, 700), +(9500164, 1072179, 1, 1, 0, 700), +(8140101, 1382008, 1, 1, 0, 700), +(9300096, 1382008, 1, 1, 0, 700), +(9300261, 1382008, 1, 1, 0, 700), +(9500164, 1382008, 1, 1, 0, 700), +(8140101, 1082122, 1, 1, 0, 700), +(9300096, 1082122, 1, 1, 0, 700), +(9300261, 1082122, 1, 1, 0, 700), +(9500164, 1082122, 1, 1, 0, 700), +(8140101, 1040109, 1, 1, 0, 700), +(9300096, 1040109, 1, 1, 0, 700), +(9300261, 1040109, 1, 1, 0, 700), +(9500164, 1040109, 1, 1, 0, 700), +(8140101, 1060098, 1, 1, 0, 700), +(9300096, 1060098, 1, 1, 0, 700), +(9300261, 1060098, 1, 1, 0, 700), +(9500164, 1060098, 1, 1, 0, 700), +(8140101, 1002328, 1, 1, 0, 700), +(9300096, 1002328, 1, 1, 0, 700), +(9300261, 1002328, 1, 1, 0, 700), +(9500164, 1002328, 1, 1, 0, 700), +(8140101, 1472053, 1, 1, 0, 700), +(9300096, 1472053, 1, 1, 0, 700), +(9300261, 1472053, 1, 1, 0, 700), +(9500164, 1472053, 1, 1, 0, 700), +(8140101, 1002640, 1, 1, 0, 700), +(9300096, 1002640, 1, 1, 0, 700), +(9300261, 1002640, 1, 1, 0, 700), +(9500164, 1002640, 1, 1, 0, 700), +(8140102, 4030012, 1, 1, 0, 10000), +(9300262, 4030012, 1, 1, 0, 10000), +(9500165, 4030012, 1, 1, 0, 10000), +(8140102, 4130013, 1, 1, 0, 3000), +(9300262, 4130013, 1, 1, 0, 3000), +(9500165, 4130013, 1, 1, 0, 3000), +(8140102, 4130000, 1, 1, 0, 3000), +(9300262, 4130000, 1, 1, 0, 3000), +(9500165, 4130000, 1, 1, 0, 3000), +(8140102, 4130002, 1, 1, 0, 3000), +(9300262, 4130002, 1, 1, 0, 3000), +(9500165, 4130002, 1, 1, 0, 3000), +(8140102, 2000002, 1, 1, 0, 40000), +(9300262, 2000002, 1, 1, 0, 40000), +(9500165, 2000002, 1, 1, 0, 40000), +(8140102, 2000006, 1, 1, 0, 40000), +(9300262, 2000006, 1, 1, 0, 40000), +(9500165, 2000006, 1, 1, 0, 40000), +(8140102, 2000005, 1, 1, 0, 40000), +(9300262, 2000005, 1, 1, 0, 40000), +(9500165, 2000005, 1, 1, 0, 40000), +(8140102, 4006000, 1, 1, 0, 7000), +(9300262, 4006000, 1, 1, 0, 7000), +(9500165, 4006000, 1, 1, 0, 7000), +(8140102, 2040624, 1, 1, 0, 750), +(9300262, 2040624, 1, 1, 0, 750), +(9500165, 2040624, 1, 1, 0, 750), +(8140102, 2040322, 1, 1, 0, 750), +(9300262, 2040322, 1, 1, 0, 750), +(9500165, 2040322, 1, 1, 0, 750), +(8140102, 2040805, 1, 1, 0, 750), +(9300262, 2040805, 1, 1, 0, 750), +(9500165, 2040805, 1, 1, 0, 750), +(8140102, 2040703, 1, 1, 0, 750), +(9300262, 2040703, 1, 1, 0, 750), +(9500165, 2040703, 1, 1, 0, 750), +(8140102, 4161015, 1, 1, 0, 7000), +(9300262, 4161015, 1, 1, 0, 7000), +(9500165, 4161015, 1, 1, 0, 7000), +(8140102, 2331000, 1, 1, 0, 0), +(9300262, 2331000, 1, 1, 0, 0), +(9500165, 2331000, 1, 1, 0, 0), +(8140102, 4010001, 1, 1, 0, 7000), +(9300262, 4010001, 1, 1, 0, 7000), +(9500165, 4010001, 1, 1, 0, 7000), +(8140102, 4020000, 1, 1, 0, 7000), +(9300262, 4020000, 1, 1, 0, 7000), +(9500165, 4020000, 1, 1, 0, 7000), +(8140102, 4004004, 1, 1, 0, 3000), +(9300262, 4004004, 1, 1, 0, 3000), +(9500165, 4004004, 1, 1, 0, 3000), +(8140102, 1032022, 1, 1, 0, 700), +(9300262, 1032022, 1, 1, 0, 700), +(9500165, 1032022, 1, 1, 0, 700), +(8140102, 1402004, 1, 1, 0, 700), +(9300262, 1402004, 1, 1, 0, 700), +(9500165, 1402004, 1, 1, 0, 700), +(8140102, 1092023, 1, 1, 0, 700), +(9300262, 1092023, 1, 1, 0, 700), +(9500165, 1092023, 1, 1, 0, 700), +(8140102, 1072211, 1, 1, 0, 700), +(9300262, 1072211, 1, 1, 0, 700), +(9500165, 1072211, 1, 1, 0, 700), +(8140102, 1422027, 1, 1, 0, 700), +(9300262, 1422027, 1, 1, 0, 700), +(9500165, 1422027, 1, 1, 0, 700), +(8140102, 1382035, 1, 1, 0, 700), +(9300262, 1382035, 1, 1, 0, 700), +(9500165, 1382035, 1, 1, 0, 700), +(8140102, 1002274, 1, 1, 0, 700), +(9300262, 1002274, 1, 1, 0, 700), +(9500165, 1002274, 1, 1, 0, 700), +(8140102, 1051068, 1, 1, 0, 700), +(9300262, 1051068, 1, 1, 0, 700), +(9500165, 1051068, 1, 1, 0, 700), +(8140102, 1452019, 1, 1, 0, 700), +(9300262, 1452019, 1, 1, 0, 700), +(9500165, 1452019, 1, 1, 0, 700), +(8140102, 1082118, 1, 1, 0, 700), +(9300262, 1082118, 1, 1, 0, 700), +(9500165, 1082118, 1, 1, 0, 700), +(8140102, 1002643, 1, 1, 0, 700), +(9300262, 1002643, 1, 1, 0, 700), +(9500165, 1002643, 1, 1, 0, 700), +(8140103, 2000002, 1, 1, 0, 40000), +(9300263, 2000002, 1, 1, 0, 40000), +(9500166, 2000002, 1, 1, 0, 40000), +(8140103, 2000006, 1, 1, 0, 40000), +(9300263, 2000006, 1, 1, 0, 40000), +(9500166, 2000006, 1, 1, 0, 40000), +(8140103, 2000005, 1, 1, 0, 40000), +(9300263, 2000005, 1, 1, 0, 40000), +(9500166, 2000005, 1, 1, 0, 40000), +(8140103, 4006000, 1, 1, 0, 7000), +(9300263, 4006000, 1, 1, 0, 7000), +(9500166, 4006000, 1, 1, 0, 7000), +(8140103, 2043701, 1, 1, 0, 750), +(9300263, 2043701, 1, 1, 0, 750), +(9500166, 2043701, 1, 1, 0, 750), +(8140103, 2040004, 1, 1, 0, 750), +(9300263, 2040004, 1, 1, 0, 750), +(9500166, 2040004, 1, 1, 0, 750), +(8140103, 2290044, 1, 1, 0, 1000), +(9300263, 2290044, 1, 1, 0, 1000), +(9500166, 2290044, 1, 1, 0, 1000), +(8140103, 4161016, 1, 1, 0, 7000), +(9300263, 4161016, 1, 1, 0, 7000), +(9500166, 4161016, 1, 1, 0, 7000), +(8140103, 2331000, 1, 1, 0, 0), +(9300263, 2331000, 1, 1, 0, 0), +(9500166, 2331000, 1, 1, 0, 0), +(8140103, 4010000, 1, 1, 0, 7000), +(9300263, 4010000, 1, 1, 0, 7000), +(9500166, 4010000, 1, 1, 0, 7000), +(8140103, 4020001, 1, 1, 0, 7000), +(9300263, 4020001, 1, 1, 0, 7000), +(9500166, 4020001, 1, 1, 0, 7000), +(8140103, 4004002, 1, 1, 0, 3000), +(9300263, 4004002, 1, 1, 0, 3000), +(9500166, 4004002, 1, 1, 0, 3000), +(8140103, 1102032, 1, 1, 0, 700), +(9300263, 1102032, 1, 1, 0, 700), +(9500166, 1102032, 1, 1, 0, 700), +(8140103, 1082116, 1, 1, 0, 700), +(9300263, 1082116, 1, 1, 0, 700), +(9500166, 1082116, 1, 1, 0, 700), +(8140103, 1432011, 1, 1, 0, 700), +(9300263, 1432011, 1, 1, 0, 700), +(9500166, 1432011, 1, 1, 0, 700), +(8140103, 1412021, 1, 1, 0, 700), +(9300263, 1412021, 1, 1, 0, 700), +(9500166, 1412021, 1, 1, 0, 700), +(8140103, 1442019, 1, 1, 0, 700), +(9300263, 1442019, 1, 1, 0, 700), +(9500166, 1442019, 1, 1, 0, 700), +(8140103, 1412009, 1, 1, 0, 700), +(9300263, 1412009, 1, 1, 0, 700), +(9500166, 1412009, 1, 1, 0, 700), +(8140103, 1332051, 1, 1, 0, 700), +(9300263, 1332051, 1, 1, 0, 700), +(9500166, 1332051, 1, 1, 0, 700), +(8140103, 1322045, 1, 1, 0, 700), +(9300263, 1322045, 1, 1, 0, 700), +(9500166, 1322045, 1, 1, 0, 700), +(8140103, 1072177, 1, 1, 0, 700), +(9300263, 1072177, 1, 1, 0, 700), +(9500166, 1072177, 1, 1, 0, 700), +(8140103, 1002277, 1, 1, 0, 700), +(9300263, 1002277, 1, 1, 0, 700), +(9500166, 1002277, 1, 1, 0, 700), +(8140103, 1452013, 1, 1, 0, 700), +(9300263, 1452013, 1, 1, 0, 700), +(9500166, 1452013, 1, 1, 0, 700), +(8140103, 1332051, 1, 1, 0, 700), +(9300263, 1332051, 1, 1, 0, 700), +(9500166, 1332051, 1, 1, 0, 700), +(8140103, 1041106, 1, 1, 0, 700), +(9300263, 1041106, 1, 1, 0, 700), +(9500166, 1041106, 1, 1, 0, 700), +(8140103, 1061105, 1, 1, 0, 700), +(9300263, 1061105, 1, 1, 0, 700), +(9500166, 1061105, 1, 1, 0, 700), +(8120105, 4000555, 1, 1, 0, 200000), +(8120105, 4006001, 1, 1, 0, 7000), +(8120105, 2000006, 1, 1, 0, 40000), +(8120105, 2000002, 1, 1, 0, 40000), +(8120105, 2000005, 1, 1, 0, 40000), +(8120105, 2041014, 1, 1, 0, 750), +(8120105, 2044001, 1, 1, 0, 750), +(8120105, 2070006, 1, 1, 0, 400), +(8120105, 2330003, 1, 1, 0, 400), +(8120105, 2040325, 1, 1, 0, 750), +(8120105, 2043216, 1, 1, 0, 750), +(8120105, 2330004, 1, 1, 0, 400), +(8120105, 2049000, 1, 1, 0, 400), +(8120105, 4010003, 1, 1, 0, 7000), +(8120105, 4020003, 1, 1, 0, 7000), +(8120105, 4004003, 1, 1, 0, 3000), +(8120105, 1032023, 1, 1, 0, 700), +(8120105, 1051080, 1, 1, 0, 700), +(8120105, 1092025, 1, 1, 0, 700), +(8120105, 1432030, 1, 1, 0, 700), +(8120105, 1442044, 1, 1, 0, 700), +(8120105, 1082122, 1, 1, 0, 700), +(8120105, 1372016, 1, 1, 0, 700), +(8120105, 1072183, 1, 1, 0, 700), +(8120105, 1462015, 1, 1, 0, 700), +(8120105, 1002328, 1, 1, 0, 700), +(8120105, 1472031, 1, 1, 0, 700), +(8120105, 1482010, 1, 1, 0, 700), +(7130300, 4000148, 1, 1, 0, 200000), +(7130300, 4031171, 1, 1, 0, 7000), +(7130300, 2000004, 1, 1, 0, 40000), +(7130300, 2000005, 1, 1, 0, 40000), +(7130300, 2002004, 1, 1, 0, 10000), +(7130300, 4006001, 1, 1, 0, 7000), +(7130300, 2044301, 1, 1, 0, 750), +(7130300, 2041009, 1, 1, 0, 750), +(7130300, 4010006, 1, 1, 0, 7000), +(7130300, 4020006, 1, 1, 0, 7000), +(7130300, 1302018, 1, 1, 0, 700), +(7130300, 1041121, 1, 1, 0, 700), +(7130300, 1061120, 1, 1, 0, 700), +(7130300, 1072155, 1, 1, 0, 700), +(7130300, 1072212, 1, 1, 0, 700), +(7130300, 1382009, 1, 1, 0, 700), +(7130300, 1072206, 1, 1, 0, 700), +(7130300, 1050074, 1, 1, 0, 700), +(7130300, 1002253, 1, 1, 0, 700), +(7130300, 1002274, 1, 1, 0, 700), +(7130300, 1082123, 1, 1, 0, 700), +(7130300, 1082110, 1, 1, 0, 700), +(7130300, 1051068, 1, 1, 0, 700), +(7130300, 1072166, 1, 1, 0, 700), +(7130300, 1072167, 1, 1, 0, 700), +(7130300, 1002276, 1, 1, 0, 700), +(7130300, 1072203, 1, 1, 0, 700), +(7130300, 1061104, 1, 1, 0, 700), +(7130300, 1041107, 1, 1, 0, 700), +(7130300, 1061106, 1, 1, 0, 700), +(7130300, 1002284, 1, 1, 0, 700), +(7130300, 1082143, 1, 1, 0, 700), +(7130300, 1072312, 1, 1, 0, 700), +(8120106, 4000556, 1, 1, 0, 200000), +(8120107, 4000556, 1, 1, 0, 200000), +(8120106, 4006001, 1, 1, 0, 7000), +(8120107, 4006001, 1, 1, 0, 7000), +(8120106, 2000004, 1, 1, 0, 40000), +(8120107, 2000004, 1, 1, 0, 40000), +(8120106, 2000005, 1, 1, 0, 40000), +(8120107, 2000005, 1, 1, 0, 40000), +(8120106, 2002004, 1, 1, 0, 10000), +(8120107, 2002004, 1, 1, 0, 10000), +(8120106, 2044301, 1, 1, 0, 750), +(8120107, 2044301, 1, 1, 0, 750), +(8120106, 2041009, 1, 1, 0, 750), +(8120107, 2041009, 1, 1, 0, 750), +(8120106, 2040033, 1, 1, 0, 750), +(8120107, 2040033, 1, 1, 0, 750), +(8120106, 2040823, 1, 1, 0, 750), +(8120107, 2040823, 1, 1, 0, 750), +(8120106, 2043210, 1, 1, 0, 750), +(8120107, 2043210, 1, 1, 0, 750), +(8120106, 2049000, 1, 1, 0, 400), +(8120107, 2049000, 1, 1, 0, 400), +(8120106, 4010006, 1, 1, 0, 7000), +(8120107, 4010006, 1, 1, 0, 7000), +(8120106, 4020006, 1, 1, 0, 7000), +(8120107, 4020006, 1, 1, 0, 7000), +(8120106, 1072155, 1, 1, 0, 700), +(8120107, 1072155, 1, 1, 0, 700), +(8120106, 1302018, 1, 1, 0, 700), +(8120107, 1302018, 1, 1, 0, 700), +(8120106, 1072212, 1, 1, 0, 700), +(8120107, 1072212, 1, 1, 0, 700), +(8120106, 1041121, 1, 1, 0, 700), +(8120107, 1041121, 1, 1, 0, 700), +(8120106, 1061120, 1, 1, 0, 700), +(8120107, 1061120, 1, 1, 0, 700), +(8120106, 1002253, 1, 1, 0, 700), +(8120107, 1002253, 1, 1, 0, 700), +(8120106, 1050074, 1, 1, 0, 700), +(8120107, 1050074, 1, 1, 0, 700), +(8120106, 1002274, 1, 1, 0, 700), +(8120107, 1002274, 1, 1, 0, 700), +(8120106, 1072206, 1, 1, 0, 700), +(8120107, 1072206, 1, 1, 0, 700), +(8120106, 1072167, 1, 1, 0, 700), +(8120107, 1072167, 1, 1, 0, 700), +(8120106, 1002276, 1, 1, 0, 700), +(8120107, 1002276, 1, 1, 0, 700), +(8120106, 1051068, 1, 1, 0, 700), +(8120107, 1051068, 1, 1, 0, 700), +(8120106, 1082110, 1, 1, 0, 700), +(8120107, 1082110, 1, 1, 0, 700), +(8120106, 1072203, 1, 1, 0, 700), +(8120107, 1072203, 1, 1, 0, 700), +(8120106, 1002284, 1, 1, 0, 700), +(8120107, 1002284, 1, 1, 0, 700), +(8120106, 1041107, 1, 1, 0, 700), +(8120107, 1041107, 1, 1, 0, 700), +(8120106, 1061106, 1, 1, 0, 700), +(8120107, 1061106, 1, 1, 0, 700), +(8120106, 1082143, 1, 1, 0, 700), +(8120107, 1082143, 1, 1, 0, 700), +(8120106, 1072312, 1, 1, 0, 700), +(8120107, 1072312, 1, 1, 0, 700), +(8140500, 4003005, 1, 1, 0, 7000), +(9301000, 4003005, 1, 1, 0, 7000), +(9500138, 4003005, 1, 1, 0, 7000), +(8140500, 2000006, 1, 1, 0, 40000), +(9301000, 2000006, 1, 1, 0, 40000), +(9500138, 2000006, 1, 1, 0, 40000), +(8140500, 2000005, 1, 1, 0, 40000), +(9301000, 2000005, 1, 1, 0, 40000), +(9500138, 2000005, 1, 1, 0, 40000), +(8140500, 2070004, 1, 1, 0, 400), +(9301000, 2070004, 1, 1, 0, 400), +(9500138, 2070004, 1, 1, 0, 400), +(8140500, 2044001, 1, 1, 0, 750), +(9301000, 2044001, 1, 1, 0, 750), +(9500138, 2044001, 1, 1, 0, 750), +(8140500, 2041022, 1, 1, 0, 750), +(9301000, 2041022, 1, 1, 0, 750), +(9500138, 2041022, 1, 1, 0, 750), +(8140500, 4020001, 1, 1, 0, 7000), +(9301000, 4020001, 1, 1, 0, 7000), +(9500138, 4020001, 1, 1, 0, 7000), +(8140500, 4020007, 1, 1, 0, 7000), +(9301000, 4020007, 1, 1, 0, 7000), +(9500138, 4020007, 1, 1, 0, 7000), +(8140500, 4004000, 1, 1, 0, 3000), +(9301000, 4004000, 1, 1, 0, 3000), +(9500138, 4004000, 1, 1, 0, 3000), +(8140500, 1032017, 1, 1, 0, 700), +(9301000, 1032017, 1, 1, 0, 700), +(9500138, 1032017, 1, 1, 0, 700), +(8140500, 1072156, 1, 1, 0, 700), +(9301000, 1072156, 1, 1, 0, 700), +(9500138, 1072156, 1, 1, 0, 700), +(8140500, 1002340, 1, 1, 0, 700), +(9301000, 1002340, 1, 1, 0, 700), +(9500138, 1002340, 1, 1, 0, 700), +(8140500, 1312011, 1, 1, 0, 700), +(9301000, 1312011, 1, 1, 0, 700), +(9500138, 1312011, 1, 1, 0, 700), +(8140500, 1082117, 1, 1, 0, 700), +(9301000, 1082117, 1, 1, 0, 700), +(9500138, 1082117, 1, 1, 0, 700), +(8140500, 1332016, 1, 1, 0, 700), +(9301000, 1332016, 1, 1, 0, 700), +(9500138, 1332016, 1, 1, 0, 700), +(8140500, 1092024, 1, 1, 0, 700), +(9301000, 1092024, 1, 1, 0, 700), +(9500138, 1092024, 1, 1, 0, 700), +(8140500, 1072208, 1, 1, 0, 700), +(9301000, 1072208, 1, 1, 0, 700), +(9500138, 1072208, 1, 1, 0, 700), +(8140500, 1050070, 1, 1, 0, 700), +(9301000, 1050070, 1, 1, 0, 700), +(9500138, 1050070, 1, 1, 0, 700), +(8140500, 1082121, 1, 1, 0, 700), +(9301000, 1082121, 1, 1, 0, 700), +(9500138, 1082121, 1, 1, 0, 700), +(8140500, 1082126, 1, 1, 0, 700), +(9301000, 1082126, 1, 1, 0, 700), +(9500138, 1082126, 1, 1, 0, 700), +(8140500, 1050078, 1, 1, 0, 700), +(9301000, 1050078, 1, 1, 0, 700), +(9500138, 1050078, 1, 1, 0, 700), +(8140500, 1082111, 1, 1, 0, 700), +(9301000, 1082111, 1, 1, 0, 700), +(9500138, 1082111, 1, 1, 0, 700), +(8140500, 1072164, 1, 1, 0, 700), +(9301000, 1072164, 1, 1, 0, 700), +(9500138, 1072164, 1, 1, 0, 700), +(8140500, 1332025, 1, 1, 0, 700), +(9301000, 1332025, 1, 1, 0, 700), +(9500138, 1332025, 1, 1, 0, 700), +(8140500, 1332016, 1, 1, 0, 700), +(9301000, 1332016, 1, 1, 0, 700), +(9500138, 1332016, 1, 1, 0, 700), +(8140500, 1082096, 1, 1, 0, 700), +(9301000, 1082096, 1, 1, 0, 700), +(9500138, 1082096, 1, 1, 0, 700), +(8140500, 1072174, 1, 1, 0, 700), +(9301000, 1072174, 1, 1, 0, 700), +(9500138, 1072174, 1, 1, 0, 700), +(8140500, 1332026, 1, 1, 0, 700), +(9301000, 1332026, 1, 1, 0, 700), +(9500138, 1332026, 1, 1, 0, 700), +(8140500, 1040109, 1, 1, 0, 700), +(9301000, 1040109, 1, 1, 0, 700), +(9500138, 1040109, 1, 1, 0, 700), +(8140500, 1060098, 1, 1, 0, 700), +(9301000, 1060098, 1, 1, 0, 700), +(9500138, 1060098, 1, 1, 0, 700), +(8140500, 1040115, 1, 1, 0, 700), +(9301000, 1040115, 1, 1, 0, 700), +(9500138, 1040115, 1, 1, 0, 700), +(8140500, 1060104, 1, 1, 0, 700), +(9301000, 1060104, 1, 1, 0, 700), +(9500138, 1060104, 1, 1, 0, 700), +(8140500, 1072195, 1, 1, 0, 700), +(9301000, 1072195, 1, 1, 0, 700), +(9500138, 1072195, 1, 1, 0, 700), +(8140500, 1052125, 1, 1, 0, 700), +(9301000, 1052125, 1, 1, 0, 700), +(9500138, 1052125, 1, 1, 0, 700), +(8220007, 2000005, 1, 4, 0, 40000), +(9300209, 2000005, 1, 4, 0, 40000), +(9400205, 2000005, 1, 4, 0, 40000), +(9500176, 2000005, 1, 4, 0, 40000), +(8220007, 2000004, 1, 4, 0, 40000), +(9300209, 2000004, 1, 4, 0, 40000), +(9400205, 2000004, 1, 4, 0, 40000), +(9500176, 2000004, 1, 4, 0, 40000), +(8220007, 2043001, 1, 4, 0, 10000), +(9300209, 2043001, 1, 4, 0, 10000), +(9400205, 2043001, 1, 4, 0, 10000), +(9500176, 2043001, 1, 4, 0, 10000), +(8220007, 2043101, 1, 4, 0, 10000), +(9300209, 2043101, 1, 4, 0, 10000), +(9400205, 2043101, 1, 4, 0, 10000), +(9500176, 2043101, 1, 4, 0, 10000), +(8220007, 2043301, 1, 4, 0, 10000), +(9300209, 2043301, 1, 4, 0, 10000), +(9400205, 2043301, 1, 4, 0, 10000), +(9500176, 2043301, 1, 4, 0, 10000), +(8220007, 2043701, 1, 4, 0, 10000), +(9300209, 2043701, 1, 4, 0, 10000), +(9400205, 2043701, 1, 4, 0, 10000), +(9500176, 2043701, 1, 4, 0, 10000), +(8220007, 2044001, 1, 4, 0, 10000), +(9300209, 2044001, 1, 4, 0, 10000), +(9400205, 2044001, 1, 4, 0, 10000), +(9500176, 2044001, 1, 4, 0, 10000), +(8220007, 2044201, 1, 4, 0, 10000), +(9300209, 2044201, 1, 4, 0, 10000), +(9400205, 2044201, 1, 4, 0, 10000), +(9500176, 2044201, 1, 4, 0, 10000), +(8220007, 2044301, 1, 4, 0, 10000), +(9300209, 2044301, 1, 4, 0, 10000), +(9400205, 2044301, 1, 4, 0, 10000), +(9500176, 2044301, 1, 4, 0, 10000), +(8220007, 2044501, 1, 4, 0, 10000), +(9300209, 2044501, 1, 4, 0, 10000), +(9400205, 2044501, 1, 4, 0, 10000), +(9500176, 2044501, 1, 4, 0, 10000), +(8220007, 2044601, 1, 4, 0, 10000), +(9300209, 2044601, 1, 4, 0, 10000), +(9400205, 2044601, 1, 4, 0, 10000), +(9500176, 2044601, 1, 4, 0, 10000), +(8220007, 2044701, 1, 4, 0, 10000), +(9300209, 2044701, 1, 4, 0, 10000), +(9400205, 2044701, 1, 4, 0, 10000), +(9500176, 2044701, 1, 4, 0, 10000), +(8220007, 1032030, 1, 1, 0, 40000), +(9300209, 1032030, 1, 1, 0, 40000), +(9400205, 1032030, 1, 1, 0, 40000), +(9500176, 1032030, 1, 1, 0, 40000), +(8220007, 1322019, 1, 1, 0, 40000), +(9300209, 1322019, 1, 1, 0, 40000), +(9400205, 1322019, 1, 1, 0, 40000), +(9500176, 1322019, 1, 1, 0, 40000), +(8220007, 1312010, 1, 1, 0, 40000), +(9300209, 1312010, 1, 1, 0, 40000), +(9400205, 1312010, 1, 1, 0, 40000), +(9500176, 1312010, 1, 1, 0, 40000), +(8220007, 1412008, 1, 1, 0, 40000), +(9300209, 1412008, 1, 1, 0, 40000), +(9400205, 1412008, 1, 1, 0, 40000), +(9500176, 1412008, 1, 1, 0, 40000), +(8220007, 1432007, 1, 1, 0, 40000), +(9300209, 1432007, 1, 1, 0, 40000), +(9400205, 1432007, 1, 1, 0, 40000), +(9500176, 1432007, 1, 1, 0, 40000), +(8220007, 1302012, 1, 1, 0, 40000), +(9300209, 1302012, 1, 1, 0, 40000), +(9400205, 1302012, 1, 1, 0, 40000), +(9500176, 1302012, 1, 1, 0, 40000), +(8220007, 1332019, 1, 1, 0, 40000), +(9300209, 1332019, 1, 1, 0, 40000), +(9400205, 1332019, 1, 1, 0, 40000), +(9500176, 1332019, 1, 1, 0, 40000), +(8220007, 1382007, 1, 1, 0, 40000), +(9300209, 1382007, 1, 1, 0, 40000), +(9400205, 1382007, 1, 1, 0, 40000), +(9500176, 1382007, 1, 1, 0, 40000), +(8220007, 1332018, 1, 1, 0, 40000), +(9300209, 1332018, 1, 1, 0, 40000), +(9400205, 1332018, 1, 1, 0, 40000), +(9500176, 1332018, 1, 1, 0, 40000), +(8220007, 1332019, 1, 1, 0, 40000), +(9300209, 1332019, 1, 1, 0, 40000), +(9400205, 1332019, 1, 1, 0, 40000), +(9500176, 1332019, 1, 1, 0, 40000), +(8140700, 4000262, 1, 1, 0, 200000), +(8140700, 4000245, 1, 1, 0, 200000), +(8140700, 4000244, 1, 1, 0, 200000), +(8140700, 2000006, 1, 1, 0, 40000), +(8140700, 2000005, 1, 1, 0, 40000), +(8140700, 2041022, 1, 1, 0, 750), +(8140700, 2043801, 1, 1, 0, 750), +(8140700, 2044904, 1, 1, 0, 750), +(8140700, 2290126, 1, 1, 0, 1000), +(8140700, 4004000, 1, 1, 0, 3000), +(8140700, 4020007, 1, 1, 0, 7000), +(8140700, 4020001, 1, 1, 0, 7000), +(8140700, 1041120, 1, 1, 0, 700), +(8140700, 1061119, 1, 1, 0, 700), +(8140700, 1002528, 1, 1, 0, 700), +(8140700, 1372009, 1, 1, 0, 700), +(8140700, 1082134, 1, 1, 0, 700), +(8140700, 1072204, 1, 1, 0, 700), +(8140700, 1040117, 1, 1, 0, 700), +(8140700, 1060106, 1, 1, 0, 700), +(8140700, 1472033, 1, 1, 0, 700), +(8140700, 1082207, 1, 1, 0, 700), +(8220001, 4000051, 1, 1, 0, 200000), +(9300208, 4000051, 1, 1, 0, 200000), +(9500321, 4000051, 1, 1, 0, 200000), +(8220001, 4000048, 1, 1, 0, 200000), +(9300208, 4000048, 1, 1, 0, 200000), +(9500321, 4000048, 1, 1, 0, 200000), +(8220001, 4000049, 1, 1, 0, 200000), +(9300208, 4000049, 1, 1, 0, 200000), +(9500321, 4000049, 1, 1, 0, 200000), +(8220001, 2000004, 1, 4, 0, 40000), +(9300208, 2000004, 1, 4, 0, 40000), +(9500321, 2000004, 1, 1, 0, 40000), +(8220001, 2000006, 1, 4, 0, 40000), +(9300208, 2000006, 1, 4, 0, 40000), +(9500321, 2000006, 1, 1, 0, 40000), +(8220001, 2040804, 1, 4, 0, 10000), +(9300208, 2040804, 1, 4, 0, 10000), +(9500321, 2040804, 1, 1, 0, 750), +(8220001, 2040801, 1, 4, 0, 10000), +(9300208, 2040801, 1, 4, 0, 10000), +(9500321, 2040801, 1, 1, 0, 750), +(8220001, 2040701, 1, 4, 0, 10000), +(9300208, 2040701, 1, 4, 0, 10000), +(9500321, 2040701, 1, 1, 0, 750), +(8220001, 2043702, 1, 4, 0, 10000), +(9300208, 2043702, 1, 4, 0, 10000), +(9500321, 2043702, 1, 1, 0, 750), +(8220001, 2043701, 1, 4, 0, 10000), +(9300208, 2043701, 1, 4, 0, 10000), +(9500321, 2043701, 1, 1, 0, 750), +(8220001, 2041016, 1, 4, 0, 10000), +(9300208, 2041016, 1, 4, 0, 10000), +(9500321, 2041016, 1, 1, 0, 750), +(8220001, 2040601, 1, 4, 0, 10000), +(9300208, 2040601, 1, 4, 0, 10000), +(9500321, 2040601, 1, 1, 0, 750), +(8220001, 2040513, 1, 4, 0, 10000), +(9300208, 2040513, 1, 4, 0, 10000), +(9500321, 2040513, 1, 1, 0, 750), +(8220001, 2043802, 1, 4, 0, 10000), +(9300208, 2043802, 1, 4, 0, 10000), +(9500321, 2043802, 1, 1, 0, 750), +(8220001, 2041008, 1, 4, 0, 10000), +(9300208, 2041008, 1, 4, 0, 10000), +(9500321, 2041008, 1, 1, 0, 750), +(8220001, 2049101, 1, 4, 0, 2500), +(9300208, 2049101, 1, 4, 0, 2500), +(9500321, 2049101, 1, 1, 0, 400), +(8220001, 2060001, 10, 50, 0, 10000), +(9300208, 2060001, 10, 50, 0, 10000), +(9500321, 2060001, 10, 50, 0, 10000), +(8220001, 2061001, 10, 50, 0, 10000), +(9300208, 2061001, 10, 50, 0, 10000), +(9500321, 2061001, 10, 50, 0, 10000), +(8220001, 2388016, 1, 4, 0, 20000), +(9300208, 2388016, 1, 4, 0, 20000), +(9500321, 2388016, 1, 1, 0, 20000), +(8220001, 4020004, 1, 1, 0, 7000), +(9300208, 4020004, 1, 1, 0, 7000), +(9500321, 4020004, 1, 1, 0, 7000), +(8220001, 4010004, 1, 1, 0, 7000), +(9300208, 4010004, 1, 1, 0, 7000), +(9500321, 4010004, 1, 1, 0, 7000), +(8220001, 1032017, 1, 1, 0, 40000), +(9300208, 1032017, 1, 1, 0, 40000), +(9500321, 1032017, 1, 1, 0, 700), +(8220001, 1422013, 1, 1, 0, 40000), +(9300208, 1422013, 1, 1, 0, 40000), +(9500321, 1422013, 1, 1, 0, 700), +(8220001, 1432011, 1, 1, 0, 40000), +(9300208, 1432011, 1, 1, 0, 40000), +(9500321, 1432011, 1, 1, 0, 700), +(8220001, 1442020, 1, 1, 0, 40000), +(9300208, 1442020, 1, 1, 0, 40000), +(9500321, 1442020, 1, 1, 0, 700), +(8220001, 1492011, 1, 1, 0, 40000), +(9300208, 1492011, 1, 1, 0, 40000), +(9500321, 1492011, 1, 1, 0, 700), +(8200001, 4000444, 1, 1, 0, 200000), +(8200001, 4000446, 1, 1, 0, 200000), +(8200001, 4130014, 1, 1, 0, 3000), +(8200001, 4130001, 1, 1, 0, 3000), +(8200001, 2000006, 1, 1, 0, 40000), +(8200001, 2022003, 1, 1, 0, 3000), +(8200001, 2040030, 1, 1, 0, 750), +(8200001, 2040322, 1, 1, 0, 750), +(8200001, 2043301, 1, 1, 0, 750), +(8200001, 2290050, 1, 1, 0, 1000), +(8200001, 2386021, 1, 1, 0, 20000), +(8200001, 4004003, 1, 1, 0, 3000), +(8200001, 4010001, 1, 1, 0, 7000), +(8200001, 4020001, 1, 1, 0, 7000), +(8200001, 4020009, 1, 1, 0, 7000), +(8200001, 1002532, 1, 1, 0, 700), +(8200001, 1312015, 1, 1, 0, 700), +(8200001, 1050095, 1, 1, 0, 700), +(8200001, 1382035, 1, 1, 0, 700), +(8200001, 1072205, 1, 1, 0, 700), +(8200001, 1082144, 1, 1, 0, 700), +(8200001, 1052128, 1, 1, 0, 700), +(8140511, 4000557, 1, 1, 0, 200000), +(8140511, 2000006, 1, 1, 0, 40000), +(8140511, 2022003, 1, 1, 0, 3000), +(8140511, 2043301, 1, 1, 0, 750), +(8140511, 2040322, 1, 1, 0, 750), +(8140511, 2040030, 1, 1, 0, 750), +(8140511, 2290050, 1, 1, 0, 1000), +(8140511, 2049000, 1, 1, 0, 400), +(8140511, 2049001, 1, 1, 0, 400), +(8140511, 4010001, 1, 1, 0, 7000), +(8140511, 4020001, 1, 1, 0, 7000), +(8140511, 4004003, 1, 1, 0, 3000), +(8140511, 1002532, 1, 1, 0, 700), +(8140511, 1402005, 1, 1, 0, 700), +(8140511, 1312015, 1, 1, 0, 700), +(8140511, 1050095, 1, 1, 0, 700), +(8140511, 1382035, 1, 1, 0, 700), +(8140511, 1072205, 1, 1, 0, 700), +(8140511, 1082144, 1, 1, 0, 700), +(8140511, 1052128, 1, 1, 0, 700), +(8140600, 4000182, 1, 1, 0, 200000), +(8140600, 2000005, 1, 1, 0, 40000), +(8140600, 2000006, 1, 1, 0, 40000), +(8140600, 2040513, 1, 1, 0, 750), +(8140600, 2040501, 1, 1, 0, 750), +(8140600, 2049101, 1, 1, 0, 400), +(8140600, 4006001, 1, 1, 0, 7000), +(8140600, 2386000, 1, 1, 0, 20000), +(8140600, 2290132, 1, 1, 0, 1000), +(8140600, 4020007, 1, 1, 0, 7000), +(8140600, 4020001, 1, 1, 0, 7000), +(8140600, 1032017, 1, 1, 0, 700), +(8140600, 1102030, 1, 1, 0, 700), +(8140600, 1442026, 1, 1, 0, 700), +(8140600, 1040111, 1, 1, 0, 700), +(8140600, 1060100, 1, 1, 0, 700), +(8140600, 1082117, 1, 1, 0, 700), +(8140600, 1072160, 1, 1, 0, 700), +(8140600, 1072205, 1, 1, 0, 700), +(8140600, 1082108, 1, 1, 0, 700), +(8140600, 1462008, 1, 1, 0, 700), +(8140600, 1452013, 1, 1, 0, 700), +(8140600, 1040109, 1, 1, 0, 700), +(8140600, 1060098, 1, 1, 0, 700), +(8140600, 1472028, 1, 1, 0, 700), +(8140600, 1472023, 1, 1, 0, 700), +(8140600, 1002324, 1, 1, 0, 700), +(8140600, 1072194, 1, 1, 0, 700), +(8140600, 1052128, 1, 1, 0, 700), +(8141000, 4000134, 1, 1, 0, 200000), +(8141000, 2000006, 1, 1, 0, 40000), +(8141000, 2000002, 1, 1, 0, 40000), +(8141000, 2070006, 1, 1, 0, 400), +(8141000, 2044602, 1, 1, 0, 750), +(8141000, 2040318, 1, 1, 0, 750), +(8141000, 2040929, 1, 1, 0, 750), +(8141000, 2290082, 1, 1, 0, 1000), +(8141000, 2290097, 1, 1, 0, 1000), +(8141000, 2049000, 1, 1, 0, 400), +(8141000, 4010001, 1, 1, 0, 7000), +(8141000, 4020008, 1, 1, 0, 7000), +(8141000, 4004000, 1, 1, 0, 3000), +(8141000, 1040112, 1, 1, 0, 700), +(8141000, 1060101, 1, 1, 0, 700), +(8141000, 1422010, 1, 1, 0, 700), +(8141000, 1051079, 1, 1, 0, 700), +(8141000, 1082115, 1, 1, 0, 700), +(8141000, 1050072, 1, 1, 0, 700), +(8141000, 1050074, 1, 1, 0, 700), +(8141000, 1082132, 1, 1, 0, 700), +(8141000, 1002254, 1, 1, 0, 700), +(8141000, 1002278, 1, 1, 0, 700), +(8141000, 1050076, 1, 1, 0, 700), +(8141000, 1051068, 1, 1, 0, 700), +(8141000, 1051063, 1, 1, 0, 700), +(8141000, 1041106, 1, 1, 0, 700), +(8141000, 1061105, 1, 1, 0, 700), +(8141000, 1002327, 1, 1, 0, 700), +(8141000, 1002285, 1, 1, 0, 700), +(8141000, 1040117, 1, 1, 0, 700), +(8141000, 1060106, 1, 1, 0, 700), +(8141000, 1072315, 1, 1, 0, 700), +(8140701, 4000263, 1, 1, 0, 200000), +(8140701, 2000006, 1, 1, 0, 40000), +(8140701, 2000005, 1, 1, 0, 40000), +(8140701, 2044601, 1, 1, 0, 750), +(8140701, 2386001, 1, 1, 0, 20000), +(8140701, 4004001, 1, 1, 0, 3000), +(8140701, 4020005, 1, 1, 0, 7000), +(8140701, 4010001, 1, 1, 0, 7000), +(8140701, 1302023, 1, 1, 0, 700), +(8140701, 1072197, 1, 1, 0, 700), +(8140701, 1040111, 1, 1, 0, 700), +(8140701, 1060100, 1, 1, 0, 700), +(8140701, 1050094, 1, 1, 0, 700), +(8140701, 1002365, 1, 1, 0, 700), +(8140701, 1332027, 1, 1, 0, 700), +(8140701, 1082144, 1, 1, 0, 700), +(8140701, 1082210, 1, 1, 0, 700), +(8140512, 4000558, 1, 1, 0, 200000), +(8140512, 2000006, 1, 1, 0, 40000), +(8140512, 2000002, 1, 1, 0, 40000), +(8140512, 2044602, 1, 1, 0, 750), +(8140512, 2070006, 1, 1, 0, 400), +(8140512, 2290082, 1, 1, 0, 1000), +(8140512, 2044804, 1, 1, 0, 750), +(8140512, 2290097, 1, 1, 0, 1000), +(8140512, 2040318, 1, 1, 0, 750), +(8140512, 2040929, 1, 1, 0, 750), +(8140512, 2049000, 1, 1, 0, 400), +(8140512, 2049001, 1, 1, 0, 400), +(8140512, 4010001, 1, 1, 0, 7000), +(8140512, 4020008, 1, 1, 0, 7000), +(8140512, 4004000, 1, 1, 0, 3000), +(8140512, 1422010, 1, 1, 0, 700), +(8140512, 1082115, 1, 1, 0, 700), +(8140512, 1051079, 1, 1, 0, 700), +(8140512, 1040112, 1, 1, 0, 700), +(8140512, 1060101, 1, 1, 0, 700), +(8140512, 1002254, 1, 1, 0, 700), +(8140512, 1050074, 1, 1, 0, 700), +(8140512, 1050072, 1, 1, 0, 700), +(8140512, 1082132, 1, 1, 0, 700), +(8140512, 1051063, 1, 1, 0, 700), +(8140512, 1002278, 1, 1, 0, 700), +(8140512, 1050076, 1, 1, 0, 700), +(8140512, 1051068, 1, 1, 0, 700), +(8140512, 1002285, 1, 1, 0, 700), +(8140512, 1002327, 1, 1, 0, 700), +(8140512, 1041106, 1, 1, 0, 700), +(8140512, 1061105, 1, 1, 0, 700), +(8140512, 1040117, 1, 1, 0, 700), +(8140512, 1060106, 1, 1, 0, 700), +(8140512, 1072315, 1, 1, 0, 700), +(8141300, 4000183, 1, 1, 0, 200000), +(8141300, 2000002, 1, 1, 0, 40000), +(8141300, 2000006, 1, 1, 0, 40000), +(8141300, 2000005, 1, 1, 0, 40000), +(8141300, 2002001, 1, 1, 0, 10000), +(8141300, 2020013, 1, 1, 0, 3000), +(8141300, 2040701, 1, 1, 0, 750), +(8141300, 2386003, 1, 1, 0, 20000), +(8141300, 4004004, 1, 1, 0, 3000), +(8141300, 4010006, 1, 1, 0, 7000), +(8141300, 4020006, 1, 1, 0, 7000), +(8141300, 1032020, 1, 1, 0, 700), +(8141300, 1102026, 1, 1, 0, 700), +(8141300, 1442026, 1, 1, 0, 700), +(8141300, 1041119, 1, 1, 0, 700), +(8141300, 1061118, 1, 1, 0, 700), +(8141300, 1432007, 1, 1, 0, 700), +(8141300, 1092027, 1, 1, 0, 700), +(8141300, 1442008, 1, 1, 0, 700), +(8141300, 1002365, 1, 1, 0, 700), +(8141300, 1002271, 1, 1, 0, 700), +(8141300, 1050093, 1, 1, 0, 700), +(8141300, 1072207, 1, 1, 0, 700), +(8141300, 1072224, 1, 1, 0, 700), +(8141300, 1050089, 1, 1, 0, 700), +(8141300, 1051083, 1, 1, 0, 700), +(8141300, 1452011, 1, 1, 0, 700), +(8141300, 1072183, 1, 1, 0, 700), +(8141300, 1482011, 1, 1, 0, 700), +(8200002, 4000445, 1, 1, 0, 200000), +(8200002, 4000446, 1, 1, 0, 200000), +(8200002, 4130015, 1, 1, 0, 3000), +(8200002, 4130002, 1, 1, 0, 3000), +(8200002, 2000006, 1, 1, 0, 40000), +(8200002, 2022003, 1, 1, 0, 3000), +(8200002, 2040707, 1, 1, 0, 750), +(8200002, 2044213, 1, 1, 0, 750), +(8200002, 2044401, 1, 1, 0, 750), +(8200002, 2290066, 1, 1, 0, 1000), +(8200002, 2330004, 1, 1, 0, 400), +(8200002, 2386022, 1, 1, 0, 20000), +(8200002, 2290131, 1, 1, 0, 1000), +(8200002, 4004000, 1, 1, 0, 3000), +(8200002, 4010002, 1, 1, 0, 7000), +(8200002, 4020002, 1, 1, 0, 7000), +(8200002, 4020009, 1, 1, 0, 7000), +(8200002, 1040113, 1, 1, 0, 700), +(8200002, 1060102, 1, 1, 0, 700), +(8200002, 1092027, 1, 1, 0, 700), +(8200002, 1442044, 1, 1, 0, 700), +(8200002, 1002366, 1, 1, 0, 700), +(8200002, 1051085, 1, 1, 0, 700), +(8200002, 1452017, 1, 1, 0, 700), +(8200002, 1072195, 1, 1, 0, 700), +(8200002, 1082210, 1, 1, 0, 700), +(9420540, 4000478, 1, 1, 0, 200000), +(9420540, 2290119, 1, 1, 0, 1000), +(9420540, 2002006, 1, 1, 0, 10000), +(9420540, 2022003, 1, 1, 0, 3000), +(9420540, 2000005, 1, 1, 0, 40000), +(9420540, 2000011, 1, 1, 0, 40000), +(9420540, 2070012, 1, 1, 0, 400), +(9420540, 2041014, 1, 1, 0, 750), +(9420540, 2040613, 1, 1, 0, 750), +(9420540, 4006001, 1, 1, 0, 7000), +(9420540, 2040804, 1, 1, 0, 750), +(9420540, 2330005, 1, 1, 0, 400), +(9420540, 4004000, 1, 1, 0, 3000), +(9420540, 4010006, 1, 1, 0, 7000), +(9420540, 4020000, 1, 1, 0, 7000), +(9420540, 4010003, 1, 1, 0, 7000), +(9420540, 1072198, 1, 1, 0, 700), +(9420540, 1050095, 1, 1, 0, 700), +(9420540, 1050095, 1, 1, 0, 700), +(9420540, 1072209, 1, 1, 0, 700), +(9420540, 1082134, 1, 1, 0, 700), +(9420540, 1002366, 1, 1, 0, 700), +(9420540, 1452017, 1, 1, 0, 700), +(9420540, 1002405, 1, 1, 0, 700), +(9420540, 1002403, 1, 1, 0, 700), +(9420540, 1002329, 1, 1, 0, 700), +(9420540, 1472031, 1, 1, 0, 700), +(8142000, 4000149, 1, 1, 0, 200000), +(8142000, 2000002, 1, 1, 0, 40000), +(8142000, 2000005, 1, 1, 0, 40000), +(8142000, 2002001, 1, 1, 0, 10000), +(8142000, 2020015, 1, 1, 0, 3000), +(8142000, 4006000, 1, 1, 0, 7000), +(8142000, 2044001, 1, 1, 0, 750), +(8142000, 2041022, 1, 1, 0, 750), +(8142000, 2386004, 1, 1, 0, 20000), +(8142000, 4020003, 1, 1, 0, 7000), +(8142000, 4004004, 1, 1, 0, 3000), +(8142000, 1082116, 1, 1, 0, 700), +(8142000, 1051078, 1, 1, 0, 700), +(8142000, 1002339, 1, 1, 0, 700), +(8142000, 1432007, 1, 1, 0, 700), +(8142000, 1442010, 1, 1, 0, 700), +(8142000, 1040111, 1, 1, 0, 700), +(8142000, 1060100, 1, 1, 0, 700), +(8142000, 1072212, 1, 1, 0, 700), +(8142000, 1051056, 1, 1, 0, 700), +(8142000, 1050094, 1, 1, 0, 700), +(8142000, 1082133, 1, 1, 0, 700), +(8142000, 1050076, 1, 1, 0, 700), +(8142000, 1051067, 1, 1, 0, 700), +(8142000, 1082107, 1, 1, 0, 700), +(8142000, 1452013, 1, 1, 0, 700), +(8142000, 1050091, 1, 1, 0, 700), +(8142000, 1082112, 1, 1, 0, 700), +(8142000, 1040110, 1, 1, 0, 700), +(8142000, 1492011, 1, 1, 0, 700), +(9400120, 2000006, 1, 4, 0, 40000), +(9400122, 2000006, 1, 4, 0, 40000), +(9400120, 2000005, 1, 4, 0, 40000), +(9400122, 2000005, 1, 4, 0, 40000), +(9400120, 2050004, 1, 4, 0, 3000), +(9400122, 2050004, 1, 4, 0, 3000), +(9400120, 2070005, 1, 4, 0, 2500), +(9400122, 2070005, 1, 4, 0, 2500), +(9400120, 2040612, 1, 4, 0, 10000), +(9400122, 2040612, 1, 4, 0, 10000), +(9400120, 2041034, 1, 4, 0, 10000), +(9400122, 2041034, 1, 4, 0, 10000), +(9400120, 2041045, 1, 4, 0, 10000), +(9400122, 2041045, 1, 4, 0, 10000), +(9400120, 2040611, 1, 4, 0, 10000), +(9400122, 2040611, 1, 4, 0, 10000), +(9400120, 4020007, 1, 1, 0, 7000), +(9400122, 4020007, 1, 1, 0, 7000), +(9400120, 4010006, 1, 1, 0, 7000), +(9400122, 4010006, 1, 1, 0, 7000), +(9400120, 1402013, 1, 1, 0, 40000), +(9400122, 1402013, 1, 1, 0, 40000), +(9400120, 1032023, 1, 1, 0, 40000), +(9400122, 1032023, 1, 1, 0, 40000), +(9400120, 1302026, 1, 1, 0, 40000), +(9400122, 1302026, 1, 1, 0, 40000), +(9400120, 1422012, 1, 1, 0, 40000), +(9400122, 1422012, 1, 1, 0, 40000), +(9400120, 1041099, 1, 1, 0, 40000), +(9400122, 1041099, 1, 1, 0, 40000), +(9400120, 1382010, 1, 1, 0, 40000), +(9400122, 1382010, 1, 1, 0, 40000), +(9400120, 1092029, 1, 1, 0, 40000), +(9400122, 1092029, 1, 1, 0, 40000), +(9400120, 1051058, 1, 1, 0, 40000), +(9400122, 1051058, 1, 1, 0, 40000), +(9400120, 1002276, 1, 1, 0, 40000), +(9400122, 1002276, 1, 1, 0, 40000), +(9400120, 1050064, 1, 1, 0, 40000), +(9400122, 1050064, 1, 1, 0, 40000), +(9400120, 1061101, 1, 1, 0, 40000), +(9400122, 1061101, 1, 1, 0, 40000), +(9400120, 1002328, 1, 1, 0, 40000), +(9400122, 1002328, 1, 1, 0, 40000), +(8140702, 4000264, 1, 1, 0, 200000), +(8140702, 2040402, 1, 1, 0, 750), +(8140702, 2386005, 1, 1, 0, 20000), +(8140702, 4020008, 1, 1, 0, 7000), +(8140702, 1082139, 1, 1, 0, 700), +(8140702, 1050092, 1, 1, 0, 700), +(8140702, 1072206, 1, 1, 0, 700), +(8140702, 1452017, 1, 1, 0, 700), +(8140702, 1002325, 1, 1, 0, 700), +(8140702, 1060106, 1, 1, 0, 700), +(8140702, 1492011, 1, 1, 0, 700), +(9400580, 4032010, 1, 1, 0, 10000), +(9400580, 4032011, 1, 1, 0, 10000), +(9400580, 2000005, 1, 1, 0, 40000), +(9400580, 2000006, 1, 1, 0, 40000), +(9400580, 2290004, 1, 1, 0, 1000), +(9400580, 2290024, 1, 1, 0, 1000), +(9400580, 4004004, 1, 1, 0, 3000), +(8142100, 4000184, 1, 1, 0, 200000), +(8142100, 4130000, 1, 1, 0, 3000), +(8142100, 4130001, 1, 1, 0, 3000), +(8142100, 2000006, 1, 1, 0, 40000), +(8142100, 2000005, 1, 1, 0, 40000), +(8142100, 2040804, 1, 1, 0, 750), +(8142100, 2040801, 1, 1, 0, 750), +(8142100, 4006001, 1, 1, 0, 7000), +(8142100, 4006000, 1, 1, 0, 7000), +(8142100, 2290082, 1, 1, 0, 1000), +(8142100, 2386007, 1, 1, 0, 20000), +(8142100, 4010004, 1, 1, 0, 7000), +(8142100, 4020004, 1, 1, 0, 7000), +(8142100, 4004001, 1, 1, 0, 3000), +(8142100, 1032017, 1, 1, 0, 700), +(8142100, 1412009, 1, 1, 0, 700), +(8142100, 1072197, 1, 1, 0, 700), +(8142100, 1092026, 1, 1, 0, 700), +(8142100, 1092028, 1, 1, 0, 700), +(8142100, 1422010, 1, 1, 0, 700), +(8142100, 1092025, 1, 1, 0, 700), +(8142100, 1072220, 1, 1, 0, 700), +(8142100, 1050095, 1, 1, 0, 700), +(8142100, 1050095, 1, 1, 0, 700), +(8142100, 1050090, 1, 1, 0, 700), +(8142100, 1051084, 1, 1, 0, 700), +(8142100, 1040110, 1, 1, 0, 700), +(8142100, 1002325, 1, 1, 0, 700), +(8142100, 1040118, 1, 1, 0, 700), +(8142100, 1060107, 1, 1, 0, 700), +(8140703, 4000265, 1, 1, 0, 200000), +(8140703, 4000244, 1, 1, 0, 200000), +(8140703, 4000245, 1, 1, 0, 200000), +(8140703, 2000006, 1, 1, 0, 40000), +(8140703, 2000005, 1, 1, 0, 40000), +(8140703, 2040901, 1, 1, 0, 750), +(8140703, 2043801, 1, 1, 0, 750), +(8140703, 2040602, 1, 1, 0, 750), +(8140703, 2044803, 1, 1, 0, 750), +(8140703, 2290088, 1, 1, 0, 1000), +(8140703, 2386006, 1, 1, 0, 20000), +(8140703, 4020008, 1, 1, 0, 7000), +(8140703, 1442020, 1, 1, 0, 700), +(8140703, 1072212, 1, 1, 0, 700), +(8140703, 1040120, 1, 1, 0, 700), +(8140703, 1060109, 1, 1, 0, 700), +(8140703, 1322029, 1, 1, 0, 700), +(8140703, 1040122, 1, 1, 0, 700), +(8140703, 1060111, 1, 1, 0, 700), +(8140703, 1082151, 1, 1, 0, 700), +(8140703, 1051082, 1, 1, 0, 700), +(8140703, 1082159, 1, 1, 0, 700), +(8140703, 1002325, 1, 1, 0, 700), +(8140703, 1002643, 1, 1, 0, 700), +(8150300, 4000268, 1, 1, 0, 200000), +(8810019, 4000268, 1, 1, 0, 200000), +(8150300, 4000244, 1, 1, 0, 200000), +(8810019, 4000244, 1, 1, 0, 200000), +(8150300, 4000245, 1, 1, 0, 200000), +(8810019, 4000245, 1, 1, 0, 200000), +(8150300, 4130004, 1, 1, 0, 3000), +(8810019, 4130004, 1, 1, 0, 3000), +(8150300, 2000006, 1, 1, 0, 40000), +(8810019, 2000006, 1, 4, 0, 40000), +(8150300, 2000005, 1, 1, 0, 40000), +(8810019, 2000005, 1, 4, 0, 40000), +(8150300, 4006001, 1, 1, 0, 7000), +(8810019, 4006001, 1, 1, 0, 7000), +(8150300, 2040701, 1, 1, 0, 750), +(8810019, 2040701, 1, 4, 0, 10000), +(8150300, 2043002, 1, 1, 0, 750), +(8810019, 2043002, 1, 4, 0, 10000), +(8150300, 2040516, 1, 1, 0, 750), +(8810019, 2040516, 1, 4, 0, 10000), +(8150300, 2044902, 1, 1, 0, 750), +(8810019, 2044902, 1, 4, 0, 10000), +(8150300, 2290127, 1, 1, 0, 1000), +(8810019, 2290127, 1, 4, 0, 40000), +(8150300, 2386008, 1, 1, 0, 20000), +(8810019, 2386008, 1, 4, 0, 20000), +(8150300, 4004002, 1, 1, 0, 3000), +(8810019, 4004002, 1, 1, 0, 3000), +(8150300, 4010001, 1, 1, 0, 7000), +(8810019, 4010001, 1, 1, 0, 7000), +(8150300, 4020000, 1, 1, 0, 7000), +(8810019, 4020000, 1, 1, 0, 7000), +(8150300, 1082129, 1, 1, 0, 700), +(8810019, 1082129, 1, 1, 0, 40000), +(8150300, 1072223, 1, 1, 0, 700), +(8810019, 1072223, 1, 1, 0, 40000), +(8150300, 1002365, 1, 1, 0, 700), +(8810019, 1002365, 1, 1, 0, 40000), +(8150300, 1050090, 1, 1, 0, 700), +(8810019, 1050090, 1, 1, 0, 40000), +(8150300, 1050089, 1, 1, 0, 700), +(8810019, 1050089, 1, 1, 0, 40000), +(8150300, 1452017, 1, 1, 0, 700), +(8810019, 1452017, 1, 1, 0, 40000), +(8150300, 1040118, 1, 1, 0, 700), +(8810019, 1040118, 1, 1, 0, 40000), +(8150300, 1040117, 1, 1, 0, 700), +(8810019, 1040117, 1, 1, 0, 40000), +(8150300, 1060106, 1, 1, 0, 700), +(8810019, 1060106, 1, 1, 0, 40000), +(8150300, 1052128, 1, 1, 0, 700), +(8810019, 1052128, 1, 1, 0, 40000), +(8200003, 4000447, 1, 1, 0, 200000), +(8200003, 4000459, 1, 1, 0, 200000), +(8200003, 4130016, 1, 1, 0, 3000), +(8200003, 4130003, 1, 1, 0, 3000), +(8200003, 2000006, 1, 1, 0, 40000), +(8200003, 2022003, 1, 1, 0, 3000), +(8200003, 2040928, 1, 1, 0, 750), +(8200003, 2044413, 1, 1, 0, 750), +(8200003, 2044702, 1, 1, 0, 750), +(8200003, 2290056, 1, 1, 0, 1000), +(8200003, 2330004, 1, 1, 0, 400), +(8200003, 2386023, 1, 1, 0, 20000), +(8200003, 2290136, 1, 1, 0, 1000), +(8200003, 4004001, 1, 1, 0, 3000), +(8200003, 4010006, 1, 1, 0, 7000), +(8200003, 4020006, 1, 1, 0, 7000), +(8200003, 4020009, 1, 1, 0, 7000), +(8200003, 1082130, 1, 1, 0, 700), +(8200003, 1412010, 1, 1, 0, 700), +(8200003, 1050095, 1, 1, 0, 700), +(8200003, 1002405, 1, 1, 0, 700), +(8200003, 1040118, 1, 1, 0, 700), +(8200003, 1060107, 1, 1, 0, 700), +(8200003, 1332027, 1, 1, 0, 700), +(8200003, 1072315, 1, 1, 0, 700), +(8200003, 1482012, 1, 1, 0, 700), +(8141100, 4000135, 1, 1, 0, 200000), +(8141100, 4130011, 1, 1, 0, 3000), +(8141100, 4131003, 1, 1, 0, 3000), +(8141100, 2000005, 1, 1, 0, 40000), +(8141100, 2000006, 1, 1, 0, 40000), +(8141100, 4006001, 1, 1, 0, 7000), +(8141100, 2043002, 1, 1, 0, 750), +(8141100, 4020008, 1, 1, 0, 7000), +(8141100, 4004004, 1, 1, 0, 3000), +(8141100, 1051080, 1, 1, 0, 700), +(8141100, 1082105, 1, 1, 0, 700), +(8141100, 1051058, 1, 1, 0, 700), +(8141100, 1082134, 1, 1, 0, 700), +(8141100, 1050093, 1, 1, 0, 700), +(8141100, 1051083, 1, 1, 0, 700), +(8141100, 1072185, 1, 1, 0, 700), +(8141100, 1050077, 1, 1, 0, 700), +(8141100, 1462012, 1, 1, 0, 700), +(8141100, 1002329, 1, 1, 0, 700), +(8141100, 1082119, 1, 1, 0, 700), +(8141100, 1060105, 1, 1, 0, 700), +(8143000, 4000150, 1, 1, 0, 200000), +(8143000, 2000002, 1, 1, 0, 40000), +(8143000, 2000005, 1, 1, 0, 40000), +(8143000, 2022003, 1, 1, 0, 3000), +(8143000, 2002002, 1, 1, 0, 10000), +(8143000, 4006001, 1, 1, 0, 7000), +(8143000, 2040401, 1, 1, 0, 750), +(8143000, 2044702, 1, 1, 0, 750), +(8143000, 4010001, 1, 1, 0, 7000), +(8143000, 4010002, 1, 1, 0, 7000), +(8143000, 1082130, 1, 1, 0, 700), +(8143000, 1422012, 1, 1, 0, 700), +(8143000, 1082117, 1, 1, 0, 700), +(8143000, 1092016, 1, 1, 0, 700), +(8143000, 1041119, 1, 1, 0, 700), +(8143000, 1061118, 1, 1, 0, 700), +(8143000, 1072212, 1, 1, 0, 700), +(8143000, 1072179, 1, 1, 0, 700), +(8143000, 1082122, 1, 1, 0, 700), +(8143000, 1050092, 1, 1, 0, 700), +(8143000, 1050064, 1, 1, 0, 700), +(8143000, 1462010, 1, 1, 0, 700), +(8143000, 1072183, 1, 1, 0, 700), +(8143000, 1050090, 1, 1, 0, 700), +(8143000, 1051084, 1, 1, 0, 700), +(8143000, 1002402, 1, 1, 0, 700), +(8143000, 1082120, 1, 1, 0, 700), +(8143000, 1002283, 1, 1, 0, 700), +(8143000, 1002328, 1, 1, 0, 700), +(8143000, 1040116, 1, 1, 0, 700), +(8143000, 1060105, 1, 1, 0, 700), +(8150000, 4030012, 1, 1, 0, 10000), +(9300210, 4030012, 1, 1, 0, 10000), +(9500140, 4030012, 1, 1, 0, 10000), +(9500171, 4030012, 1, 1, 0, 10000), +(9500328, 4030012, 1, 1, 0, 10000), +(9500358, 4030012, 1, 1, 0, 10000), +(6400006, 4030012, 1, 1, 0, 10000), +(6400009, 4030012, 1, 1, 0, 10000), +(9303013, 4030012, 1, 1, 0, 10000), +(8150000, 4031906, 1, 1, 0, 7000), +(9300210, 4031906, 1, 1, 0, 7000), +(9500140, 4031906, 1, 1, 0, 7000), +(9500171, 4031906, 1, 1, 0, 7000), +(9500328, 4031906, 1, 1, 0, 7000), +(9500358, 4031906, 1, 1, 0, 7000), +(6400006, 4031906, 1, 1, 0, 7000), +(6400009, 4031906, 1, 1, 0, 7000), +(9303013, 4031906, 1, 1, 0, 7000), +(8150000, 2043002, 1, 4, 0, 10000), +(9300210, 2043002, 1, 4, 0, 10000), +(9500140, 2043002, 1, 4, 0, 10000), +(9500171, 2043002, 1, 4, 0, 10000), +(9500328, 2043002, 1, 4, 0, 10000), +(9500358, 2043002, 1, 4, 0, 10000), +(6400006, 2043002, 1, 4, 0, 10000), +(6400009, 2043002, 1, 4, 0, 10000), +(9303013, 2043002, 1, 1, 0, 750), +(8150000, 2043102, 1, 4, 0, 10000), +(9300210, 2043102, 1, 4, 0, 10000), +(9500140, 2043102, 1, 4, 0, 10000), +(9500171, 2043102, 1, 4, 0, 10000), +(9500328, 2043102, 1, 4, 0, 10000), +(9500358, 2043102, 1, 4, 0, 10000), +(6400006, 2043102, 1, 4, 0, 10000), +(6400009, 2043102, 1, 4, 0, 10000), +(9303013, 2043102, 1, 1, 0, 750), +(8150000, 2043202, 1, 4, 0, 10000), +(9300210, 2043202, 1, 4, 0, 10000), +(9500140, 2043202, 1, 4, 0, 10000), +(9500171, 2043202, 1, 4, 0, 10000), +(9500328, 2043202, 1, 4, 0, 10000), +(9500358, 2043202, 1, 4, 0, 10000), +(6400006, 2043202, 1, 4, 0, 10000), +(6400009, 2043202, 1, 4, 0, 10000), +(9303013, 2043202, 1, 1, 0, 750), +(8150000, 2043302, 1, 4, 0, 10000), +(9300210, 2043302, 1, 4, 0, 10000), +(9500140, 2043302, 1, 4, 0, 10000), +(9500171, 2043302, 1, 4, 0, 10000), +(9500328, 2043302, 1, 4, 0, 10000), +(9500358, 2043302, 1, 4, 0, 10000), +(6400006, 2043302, 1, 4, 0, 10000), +(6400009, 2043302, 1, 4, 0, 10000), +(9303013, 2043302, 1, 1, 0, 750), +(8150000, 2044002, 1, 4, 0, 10000), +(9300210, 2044002, 1, 4, 0, 10000), +(9500140, 2044002, 1, 4, 0, 10000), +(9500171, 2044002, 1, 4, 0, 10000), +(9500328, 2044002, 1, 4, 0, 10000), +(9500358, 2044002, 1, 4, 0, 10000), +(6400006, 2044002, 1, 4, 0, 10000), +(6400009, 2044002, 1, 4, 0, 10000), +(9303013, 2044002, 1, 1, 0, 750), +(8150000, 2044102, 1, 4, 0, 10000), +(9300210, 2044102, 1, 4, 0, 10000), +(9500140, 2044102, 1, 4, 0, 10000), +(9500171, 2044102, 1, 4, 0, 10000), +(9500328, 2044102, 1, 4, 0, 10000), +(9500358, 2044102, 1, 4, 0, 10000), +(6400006, 2044102, 1, 4, 0, 10000), +(6400009, 2044102, 1, 4, 0, 10000), +(9303013, 2044102, 1, 1, 0, 750), +(8150000, 2044202, 1, 4, 0, 10000), +(9300210, 2044202, 1, 4, 0, 10000), +(9500140, 2044202, 1, 4, 0, 10000), +(9500171, 2044202, 1, 4, 0, 10000), +(9500328, 2044202, 1, 4, 0, 10000), +(9500358, 2044202, 1, 4, 0, 10000), +(6400006, 2044202, 1, 4, 0, 10000), +(6400009, 2044202, 1, 4, 0, 10000), +(9303013, 2044202, 1, 1, 0, 750), +(8150000, 2044302, 1, 4, 0, 10000), +(9300210, 2044302, 1, 4, 0, 10000), +(9500140, 2044302, 1, 4, 0, 10000), +(9500171, 2044302, 1, 4, 0, 10000), +(9500328, 2044302, 1, 4, 0, 10000), +(9500358, 2044302, 1, 4, 0, 10000), +(6400006, 2044302, 1, 4, 0, 10000), +(6400009, 2044302, 1, 4, 0, 10000), +(9303013, 2044302, 1, 1, 0, 750), +(8150000, 2044402, 1, 4, 0, 10000), +(9300210, 2044402, 1, 4, 0, 10000), +(9500140, 2044402, 1, 4, 0, 10000), +(9500171, 2044402, 1, 4, 0, 10000), +(9500328, 2044402, 1, 4, 0, 10000), +(9500358, 2044402, 1, 4, 0, 10000), +(6400006, 2044402, 1, 4, 0, 10000), +(6400009, 2044402, 1, 4, 0, 10000), +(9303013, 2044402, 1, 1, 0, 750), +(8150000, 2044502, 1, 4, 0, 10000), +(9300210, 2044502, 1, 4, 0, 10000), +(9500140, 2044502, 1, 4, 0, 10000), +(9500171, 2044502, 1, 4, 0, 10000), +(9500328, 2044502, 1, 4, 0, 10000), +(9500358, 2044502, 1, 4, 0, 10000), +(6400006, 2044502, 1, 4, 0, 10000), +(6400009, 2044502, 1, 4, 0, 10000), +(9303013, 2044502, 1, 1, 0, 750), +(8150000, 2044702, 1, 4, 0, 10000), +(9300210, 2044702, 1, 4, 0, 10000), +(9500140, 2044702, 1, 4, 0, 10000), +(9500171, 2044702, 1, 4, 0, 10000), +(9500328, 2044702, 1, 4, 0, 10000), +(9500358, 2044702, 1, 4, 0, 10000), +(6400006, 2044702, 1, 4, 0, 10000), +(6400009, 2044702, 1, 4, 0, 10000), +(9303013, 2044702, 1, 1, 0, 750), +(8150000, 2043702, 1, 4, 0, 10000), +(9300210, 2043702, 1, 4, 0, 10000), +(9500140, 2043702, 1, 4, 0, 10000), +(9500171, 2043702, 1, 4, 0, 10000), +(9500328, 2043702, 1, 4, 0, 10000), +(9500358, 2043702, 1, 4, 0, 10000), +(6400006, 2043702, 1, 4, 0, 10000), +(6400009, 2043702, 1, 4, 0, 10000), +(9303013, 2043702, 1, 1, 0, 750), +(8150000, 2043802, 1, 4, 0, 10000), +(9300210, 2043802, 1, 4, 0, 10000), +(9500140, 2043802, 1, 4, 0, 10000), +(9500171, 2043802, 1, 4, 0, 10000), +(9500328, 2043802, 1, 4, 0, 10000), +(9500358, 2043802, 1, 4, 0, 10000), +(6400006, 2043802, 1, 4, 0, 10000), +(6400009, 2043802, 1, 4, 0, 10000), +(9303013, 2043802, 1, 1, 0, 750), +(8150000, 2040805, 1, 4, 0, 10000), +(9300210, 2040805, 1, 4, 0, 10000), +(9500140, 2040805, 1, 4, 0, 10000), +(9500171, 2040805, 1, 4, 0, 10000), +(9500328, 2040805, 1, 4, 0, 10000), +(9500358, 2040805, 1, 4, 0, 10000), +(6400006, 2040805, 1, 4, 0, 10000), +(6400009, 2040805, 1, 4, 0, 10000), +(9303013, 2040805, 1, 1, 0, 750), +(8150000, 2040002, 1, 4, 0, 10000), +(9300210, 2040002, 1, 4, 0, 10000), +(9500140, 2040002, 1, 4, 0, 10000), +(9500171, 2040002, 1, 4, 0, 10000), +(9500328, 2040002, 1, 4, 0, 10000), +(9500358, 2040002, 1, 4, 0, 10000), +(6400006, 2040002, 1, 4, 0, 10000), +(6400009, 2040002, 1, 4, 0, 10000), +(9303013, 2040002, 1, 1, 0, 750), +(8150000, 2040402, 1, 4, 0, 10000), +(9300210, 2040402, 1, 4, 0, 10000), +(9500140, 2040402, 1, 4, 0, 10000), +(9500171, 2040402, 1, 4, 0, 10000), +(9500328, 2040402, 1, 4, 0, 10000), +(9500358, 2040402, 1, 4, 0, 10000), +(6400006, 2040402, 1, 4, 0, 10000), +(6400009, 2040402, 1, 4, 0, 10000), +(9303013, 2040402, 1, 1, 0, 750), +(8150000, 2040602, 1, 4, 0, 10000), +(9300210, 2040602, 1, 4, 0, 10000), +(9500140, 2040602, 1, 4, 0, 10000), +(9500171, 2040602, 1, 4, 0, 10000), +(9500328, 2040602, 1, 4, 0, 10000), +(9500358, 2040602, 1, 4, 0, 10000), +(6400006, 2040602, 1, 4, 0, 10000), +(6400009, 2040602, 1, 4, 0, 10000), +(9303013, 2040602, 1, 1, 0, 750), +(8150000, 2040505, 1, 4, 0, 10000), +(9300210, 2040505, 1, 4, 0, 10000), +(9500140, 2040505, 1, 4, 0, 10000), +(9500171, 2040505, 1, 4, 0, 10000), +(9500328, 2040505, 1, 4, 0, 10000), +(9500358, 2040505, 1, 4, 0, 10000), +(6400006, 2040505, 1, 4, 0, 10000), +(6400009, 2040505, 1, 4, 0, 10000), +(9303013, 2040505, 1, 1, 0, 750), +(8150000, 2040502, 1, 4, 0, 10000), +(9300210, 2040502, 1, 4, 0, 10000), +(9500140, 2040502, 1, 4, 0, 10000), +(9500171, 2040502, 1, 4, 0, 10000), +(9500328, 2040502, 1, 4, 0, 10000), +(9500358, 2040502, 1, 4, 0, 10000), +(6400006, 2040502, 1, 4, 0, 10000), +(6400009, 2040502, 1, 4, 0, 10000), +(9303013, 2040502, 1, 1, 0, 750), +(8150000, 2040902, 1, 4, 0, 10000), +(9300210, 2040902, 1, 4, 0, 10000), +(9500140, 2040902, 1, 4, 0, 10000), +(9500171, 2040902, 1, 4, 0, 10000), +(9500328, 2040902, 1, 4, 0, 10000), +(9500358, 2040902, 1, 4, 0, 10000), +(6400006, 2040902, 1, 4, 0, 10000), +(6400009, 2040902, 1, 4, 0, 10000), +(9303013, 2040902, 1, 1, 0, 750), +(8150000, 2040702, 1, 4, 0, 10000), +(9300210, 2040702, 1, 4, 0, 10000), +(9500140, 2040702, 1, 4, 0, 10000), +(9500171, 2040702, 1, 4, 0, 10000), +(9500328, 2040702, 1, 4, 0, 10000), +(9500358, 2040702, 1, 4, 0, 10000), +(6400006, 2040702, 1, 4, 0, 10000), +(6400009, 2040702, 1, 4, 0, 10000), +(9303013, 2040702, 1, 1, 0, 750), +(8150000, 2040708, 1, 4, 0, 10000), +(9300210, 2040708, 1, 4, 0, 10000), +(9500140, 2040708, 1, 4, 0, 10000), +(9500171, 2040708, 1, 4, 0, 10000), +(9500328, 2040708, 1, 4, 0, 10000), +(9500358, 2040708, 1, 4, 0, 10000), +(6400006, 2040708, 1, 4, 0, 10000), +(6400009, 2040708, 1, 4, 0, 10000), +(9303013, 2040708, 1, 1, 0, 750), +(8150000, 2040705, 1, 4, 0, 10000), +(9300210, 2040705, 1, 4, 0, 10000), +(9500140, 2040705, 1, 4, 0, 10000), +(9500171, 2040705, 1, 4, 0, 10000), +(9500328, 2040705, 1, 4, 0, 10000), +(9500358, 2040705, 1, 4, 0, 10000), +(6400006, 2040705, 1, 4, 0, 10000), +(6400009, 2040705, 1, 4, 0, 10000), +(9303013, 2040705, 1, 1, 0, 750), +(8150000, 2040302, 1, 4, 0, 10000), +(9300210, 2040302, 1, 4, 0, 10000), +(9500140, 2040302, 1, 4, 0, 10000), +(9500171, 2040302, 1, 4, 0, 10000), +(9500328, 2040302, 1, 4, 0, 10000), +(9500358, 2040302, 1, 4, 0, 10000), +(6400006, 2040302, 1, 4, 0, 10000), +(6400009, 2040302, 1, 4, 0, 10000), +(9303013, 2040302, 1, 1, 0, 750), +(8150000, 2044904, 1, 4, 0, 10000), +(9300210, 2044904, 1, 4, 0, 10000), +(9500140, 2044904, 1, 4, 0, 10000), +(9500171, 2044904, 1, 4, 0, 10000), +(9500328, 2044904, 1, 4, 0, 10000), +(9500358, 2044904, 1, 4, 0, 10000), +(6400006, 2044904, 1, 4, 0, 10000), +(6400009, 2044904, 1, 4, 0, 10000), +(9303013, 2044904, 1, 1, 0, 750), +(8150000, 2040030, 1, 4, 0, 10000), +(9300210, 2040030, 1, 4, 0, 10000), +(9500140, 2040030, 1, 4, 0, 10000), +(9500171, 2040030, 1, 4, 0, 10000), +(9500328, 2040030, 1, 4, 0, 10000), +(9500358, 2040030, 1, 4, 0, 10000), +(6400006, 2040030, 1, 4, 0, 10000), +(6400009, 2040030, 1, 4, 0, 10000), +(9303013, 2040030, 1, 1, 0, 750), +(8150000, 2388017, 1, 4, 0, 20000), +(9300210, 2388017, 1, 4, 0, 20000), +(9500140, 2388017, 1, 4, 0, 20000), +(9500171, 2388017, 1, 4, 0, 20000), +(9500328, 2388017, 1, 4, 0, 20000), +(9500358, 2388017, 1, 4, 0, 20000), +(6400006, 2388017, 1, 4, 0, 20000), +(6400009, 2388017, 1, 4, 0, 20000), +(9303013, 2388017, 1, 1, 0, 20000), +(9300094, 2280004, 1, 4, 0, 20000), +(9300094, 2280006, 1, 4, 0, 20000), +(8150100, 4000180, 1, 1, 0, 200000), +(8150100, 4030012, 1, 1, 0, 10000), +(8150100, 4130004, 1, 1, 0, 3000), +(8150100, 4130006, 1, 1, 0, 3000), +(8150100, 4006001, 1, 1, 0, 7000), +(8150100, 4006000, 1, 1, 0, 7000), +(8150100, 2000005, 1, 1, 0, 40000), +(8150100, 2000006, 1, 1, 0, 40000), +(8150100, 2022003, 1, 1, 0, 3000), +(8150100, 2020013, 1, 1, 0, 3000), +(8150100, 2041043, 1, 1, 0, 750), +(8150100, 2041013, 1, 1, 0, 750), +(8150100, 2044904, 1, 1, 0, 750), +(8150100, 2290102, 1, 1, 0, 1000), +(8150100, 2290042, 1, 1, 0, 1000), +(8150100, 2386012, 1, 1, 0, 20000), +(8150100, 4004002, 1, 1, 0, 3000), +(8150100, 4010005, 1, 1, 0, 7000), +(8150100, 1032017, 1, 1, 0, 700), +(8150100, 1040112, 1, 1, 0, 700), +(8150100, 1060101, 1, 1, 0, 700), +(8150100, 1002366, 1, 1, 0, 700), +(8150100, 1002405, 1, 1, 0, 700), +(8150100, 1072204, 1, 1, 0, 700), +(8150100, 1072192, 1, 1, 0, 700), +(8150100, 1082142, 1, 1, 0, 700), +(8150100, 1332022, 1, 1, 0, 700), +(8150100, 1082135, 1, 1, 0, 700), +(8150100, 1072315, 1, 1, 0, 700), +(8150100, 1052131, 1, 1, 0, 700), +(9400013, 4000225, 1, 1, 0, 200000), +(9400013, 2000006, 1, 1, 0, 40000), +(9400013, 2000004, 1, 1, 0, 40000), +(9400013, 2010003, 1, 1, 0, 3000), +(9400013, 2002005, 1, 1, 0, 10000), +(9400013, 2040310, 1, 1, 0, 750), +(9400013, 2043708, 1, 1, 0, 750), +(9400013, 2044609, 1, 1, 0, 750), +(9400013, 2041038, 1, 1, 0, 750), +(9400013, 1032019, 1, 1, 0, 700), +(9400013, 1102013, 1, 1, 0, 700), +(9400013, 1322026, 1, 1, 0, 700), +(9400013, 1092015, 1, 1, 0, 700), +(9400013, 1412010, 1, 1, 0, 700), +(9400013, 1402004, 1, 1, 0, 700), +(9400013, 1382016, 1, 1, 0, 700), +(9400013, 1002276, 1, 1, 0, 700), +(9400013, 1002403, 1, 1, 0, 700), +(9400013, 1472027, 1, 1, 0, 700), +(8150200, 4000266, 1, 1, 0, 200000), +(8810022, 4000266, 1, 1, 0, 200000), +(8150200, 2020015, 1, 1, 0, 3000), +(8810022, 2020015, 1, 4, 0, 3000), +(8150200, 2000005, 1, 1, 0, 40000), +(8810022, 2000005, 1, 4, 0, 40000), +(8150200, 2040302, 1, 1, 0, 750), +(8810022, 2040302, 1, 4, 0, 10000), +(8150200, 2043301, 1, 1, 0, 750), +(8810022, 2043301, 1, 4, 0, 10000), +(8150200, 2290024, 1, 1, 0, 1000), +(8810022, 2290024, 1, 4, 0, 40000), +(8150200, 2290135, 1, 1, 0, 1000), +(8810022, 2290135, 1, 4, 0, 40000), +(8150200, 2386011, 1, 1, 0, 20000), +(8810022, 2386011, 1, 4, 0, 20000), +(8150200, 4004004, 1, 1, 0, 3000), +(8810022, 4004004, 1, 1, 0, 3000), +(8150200, 4010002, 1, 1, 0, 7000), +(8810022, 4010002, 1, 1, 0, 7000), +(8150200, 4010005, 1, 1, 0, 7000), +(8810022, 4010005, 1, 1, 0, 7000), +(8150200, 1002529, 1, 1, 0, 700), +(8810022, 1002529, 1, 1, 0, 40000), +(8150200, 1402005, 1, 1, 0, 700), +(8810022, 1402005, 1, 1, 0, 40000), +(8150200, 1092026, 1, 1, 0, 700), +(8810022, 1092026, 1, 1, 0, 40000), +(8150200, 1050102, 1, 1, 0, 700), +(8810022, 1050102, 1, 1, 0, 40000), +(8150200, 1462018, 1, 1, 0, 700), +(8810022, 1462018, 1, 1, 0, 40000), +(8150200, 1072194, 1, 1, 0, 700), +(8810022, 1072194, 1, 1, 0, 40000), +(8150200, 1082135, 1, 1, 0, 700), +(8810022, 1082135, 1, 1, 0, 40000), +(8150200, 1082210, 1, 1, 0, 700), +(8810022, 1082210, 1, 1, 0, 40000), +(8150200, 1002646, 1, 1, 0, 700), +(8810022, 1002646, 1, 1, 0, 40000), +(9400574, 4032005, 1, 1, 0, 10000), +(9400574, 1442020, 1, 1, 0, 700), +(9400574, 1082158, 1, 1, 0, 700), +(9400574, 1332052, 1, 1, 0, 700), +(9400574, 1332027, 1, 1, 0, 700), +(9400579, 4032009, 1, 1, 0, 10000), +(9400579, 4006001, 1, 1, 0, 7000), +(9400579, 2041013, 1, 1, 0, 750), +(9400579, 4020008, 1, 1, 0, 7000), +(9400579, 4004004, 1, 1, 0, 3000), +(9400579, 1072194, 1, 1, 0, 700), +(9420513, 4000384, 1, 1, 0, 200000), +(9420513, 4000385, 1, 1, 0, 200000), +(9420513, 2020013, 1, 4, 0, 3000), +(9420513, 2000006, 1, 4, 0, 40000), +(9420513, 2020015, 1, 4, 0, 3000), +(9420513, 2041022, 1, 4, 0, 10000), +(9420513, 1041120, 1, 1, 0, 40000), +(9420513, 1061119, 1, 1, 0, 40000), +(9420513, 1312015, 1, 1, 0, 40000), +(9420513, 1072211, 1, 1, 0, 40000), +(9420513, 1072198, 1, 1, 0, 40000), +(9420513, 1040112, 1, 1, 0, 40000), +(9420513, 1332026, 1, 1, 0, 40000), +(9420513, 1372009, 1, 1, 0, 40000), +(9420513, 1072178, 1, 1, 0, 40000), +(9420513, 1050095, 1, 1, 0, 40000), +(9420513, 1050094, 1, 1, 0, 40000), +(9420513, 1002405, 1, 1, 0, 40000), +(9420513, 1050090, 1, 1, 0, 40000), +(9420513, 1462018, 1, 1, 0, 40000), +(9420513, 1040118, 1, 1, 0, 40000), +(9420513, 1060106, 1, 1, 0, 40000), +(9420513, 1072173, 1, 1, 0, 40000), +(9420513, 1332026, 1, 1, 0, 40000), +(9400549, 4031903, 1, 1, 0, 7000), +(9400571, 4031903, 1, 1, 0, 7000), +(9400549, 2020014, 1, 4, 0, 3000), +(9400571, 2020014, 1, 4, 0, 3000), +(9400549, 2002025, 1, 4, 0, 10000), +(9400571, 2002025, 1, 4, 0, 10000), +(9400549, 2002024, 1, 4, 0, 10000), +(9400571, 2002024, 1, 4, 0, 10000), +(9400549, 2040016, 1, 4, 0, 10000), +(9400571, 2040016, 1, 4, 0, 10000), +(9400549, 2040411, 1, 4, 0, 10000), +(9400571, 2040411, 1, 4, 0, 10000), +(9400549, 1372009, 1, 1, 0, 40000), +(9400571, 1372009, 1, 1, 0, 40000), +(9400549, 1452015, 1, 1, 0, 40000), +(9400571, 1452015, 1, 1, 0, 40000), +(9400549, 1472033, 1, 1, 0, 40000), +(9400571, 1472033, 1, 1, 0, 40000), +(8150301, 4000269, 1, 1, 0, 200000), +(8810020, 4000269, 1, 1, 0, 200000), +(9300265, 4000269, 1, 1, 0, 200000), +(8150301, 4130014, 1, 1, 0, 3000), +(8810020, 4130014, 1, 1, 0, 3000), +(9300265, 4130014, 1, 1, 0, 3000), +(8150301, 2000006, 1, 1, 0, 40000), +(8810020, 2000006, 1, 4, 0, 40000), +(9300265, 2000006, 1, 1, 0, 40000), +(8150301, 2000005, 1, 1, 0, 40000), +(8810020, 2000005, 1, 4, 0, 40000), +(9300265, 2000005, 1, 1, 0, 40000), +(8150301, 2022003, 1, 1, 0, 3000), +(8810020, 2022003, 1, 4, 0, 3000), +(9300265, 2022003, 1, 1, 0, 3000), +(8150301, 4006000, 1, 1, 0, 7000), +(8810020, 4006000, 1, 1, 0, 7000), +(9300265, 4006000, 1, 1, 0, 7000), +(8150301, 2040001, 1, 1, 0, 750), +(8810020, 2040001, 1, 4, 0, 10000), +(9300265, 2040001, 1, 1, 0, 750), +(8150301, 2044001, 1, 1, 0, 750), +(8810020, 2044001, 1, 4, 0, 10000), +(9300265, 2044001, 1, 1, 0, 750), +(8150301, 2040401, 1, 1, 0, 750), +(8810020, 2040401, 1, 4, 0, 10000), +(9300265, 2040401, 1, 1, 0, 750), +(8150301, 2040925, 1, 1, 0, 750), +(8810020, 2040925, 1, 4, 0, 10000), +(9300265, 2040925, 1, 1, 0, 750), +(8150301, 2330004, 1, 1, 0, 400), +(8810020, 2330004, 1, 4, 0, 2500), +(9300265, 2330004, 1, 1, 0, 400), +(8150301, 2386013, 1, 1, 0, 20000), +(8810020, 2386013, 1, 4, 0, 20000), +(9300265, 2386013, 1, 1, 0, 20000), +(8150301, 4004003, 1, 1, 0, 3000), +(8810020, 4004003, 1, 1, 0, 3000), +(9300265, 4004003, 1, 1, 0, 3000), +(8150301, 4010004, 1, 1, 0, 7000), +(8810020, 4010004, 1, 1, 0, 7000), +(9300265, 4010004, 1, 1, 0, 7000), +(8150301, 4020005, 1, 1, 0, 7000), +(8810020, 4020005, 1, 1, 0, 7000), +(9300265, 4020005, 1, 1, 0, 7000), +(8150301, 1422013, 1, 1, 0, 700), +(8810020, 1422013, 1, 1, 0, 40000), +(9300265, 1422013, 1, 1, 0, 700), +(8150301, 1002532, 1, 1, 0, 700), +(8810020, 1002532, 1, 1, 0, 40000), +(9300265, 1002532, 1, 1, 0, 700), +(8150301, 1050094, 1, 1, 0, 700), +(8810020, 1050094, 1, 1, 0, 40000), +(9300265, 1050094, 1, 1, 0, 700), +(8150301, 1372010, 1, 1, 0, 700), +(8810020, 1372010, 1, 1, 0, 40000), +(9300265, 1372010, 1, 1, 0, 700), +(8150301, 1072227, 1, 1, 0, 700), +(8810020, 1072227, 1, 1, 0, 40000), +(9300265, 1072227, 1, 1, 0, 700), +(8150301, 1051105, 1, 1, 0, 700), +(8810020, 1051105, 1, 1, 0, 40000), +(9300265, 1051105, 1, 1, 0, 700), +(8150301, 1082143, 1, 1, 0, 700), +(8810020, 1082143, 1, 1, 0, 40000), +(9300265, 1082143, 1, 1, 0, 700), +(8150301, 1082213, 1, 1, 0, 700), +(8810020, 1082213, 1, 1, 0, 40000), +(9300265, 1082213, 1, 1, 0, 700), +(8200004, 4000448, 1, 1, 0, 200000), +(8200004, 4000459, 1, 1, 0, 200000), +(8200004, 4130017, 1, 1, 0, 3000), +(8200004, 4130004, 1, 1, 0, 3000), +(8200004, 2000006, 1, 1, 0, 40000), +(8200004, 2020015, 1, 1, 0, 3000), +(8200004, 2022003, 1, 1, 0, 3000), +(8200004, 2040026, 1, 1, 0, 750), +(8200004, 2044313, 1, 1, 0, 750), +(8200004, 2044902, 1, 1, 0, 750), +(8200004, 2290072, 1, 1, 0, 1000), +(8200004, 2290134, 1, 1, 0, 1000), +(8200004, 2386024, 1, 1, 0, 20000), +(8200004, 4004001, 1, 1, 0, 3000), +(8200004, 4010001, 1, 1, 0, 7000), +(8200004, 4020008, 1, 1, 0, 7000), +(8200004, 4020009, 1, 1, 0, 7000), +(8200004, 1041121, 1, 1, 0, 700), +(8200004, 1061120, 1, 1, 0, 700), +(8200004, 1072198, 1, 1, 0, 700), +(8200004, 1092036, 1, 1, 0, 700), +(8200004, 1302056, 1, 1, 0, 700), +(8200004, 1422013, 1, 1, 0, 700), +(8200004, 1082132, 1, 1, 0, 700), +(8200004, 1050091, 1, 1, 0, 700), +(8200004, 1002326, 1, 1, 0, 700), +(8200004, 1482011, 1, 1, 0, 700), +(8150101, 4130012, 1, 1, 0, 3000), +(8150101, 4130013, 1, 1, 0, 3000), +(8150101, 4130006, 1, 1, 0, 3000), +(8150101, 2000005, 1, 1, 0, 40000), +(8150101, 2000006, 1, 1, 0, 40000), +(8150101, 2022003, 1, 1, 0, 3000), +(8150101, 2020013, 1, 1, 0, 3000), +(8150101, 2049101, 1, 1, 0, 400), +(8150101, 4006001, 1, 1, 0, 7000), +(8150101, 4161018, 1, 1, 0, 7000), +(8150101, 2386014, 1, 1, 0, 20000), +(8150101, 4010002, 1, 1, 0, 7000), +(8150101, 4020007, 1, 1, 0, 7000), +(8150101, 1032023, 1, 1, 0, 700), +(8150101, 1302018, 1, 1, 0, 700), +(8150101, 1312011, 1, 1, 0, 700), +(8150101, 1072223, 1, 1, 0, 700), +(8150101, 1002365, 1, 1, 0, 700), +(8150101, 1002403, 1, 1, 0, 700), +(8150101, 1072193, 1, 1, 0, 700), +(8150101, 1072213, 1, 1, 0, 700), +(8150101, 1082136, 1, 1, 0, 700), +(8150101, 1072318, 1, 1, 0, 700), +(8150302, 4000270, 1, 1, 0, 200000), +(8810021, 4000270, 1, 1, 0, 200000), +(9300264, 4000270, 1, 1, 0, 200000), +(8150302, 4000244, 1, 1, 0, 200000), +(8810021, 4000244, 1, 1, 0, 200000), +(9300264, 4000244, 1, 1, 0, 200000), +(8150302, 4000245, 1, 1, 0, 200000), +(8810021, 4000245, 1, 1, 0, 200000), +(9300264, 4000245, 1, 1, 0, 200000), +(8150302, 4001077, 1, 1, 0, 7000), +(8810021, 4001077, 1, 1, 0, 7000), +(9300264, 4001077, 1, 1, 0, 7000), +(8150302, 4131004, 1, 1, 0, 3000), +(8810021, 4131004, 1, 1, 0, 3000), +(9300264, 4131004, 1, 1, 0, 3000), +(8150302, 2000006, 1, 1, 0, 40000), +(8810021, 2000006, 1, 4, 0, 40000), +(9300264, 2000006, 1, 1, 0, 40000), +(8150302, 2000005, 1, 1, 0, 40000), +(8810021, 2000005, 1, 4, 0, 40000), +(9300264, 2000005, 1, 1, 0, 40000), +(8150302, 2022003, 1, 1, 0, 3000), +(8810021, 2022003, 1, 4, 0, 3000), +(9300264, 2022003, 1, 1, 0, 3000), +(8150302, 2020013, 1, 1, 0, 3000), +(8810021, 2020013, 1, 4, 0, 3000), +(9300264, 2020013, 1, 1, 0, 3000), +(8150302, 4006001, 1, 1, 0, 7000), +(8810021, 4006001, 1, 1, 0, 7000), +(9300264, 4006001, 1, 1, 0, 7000), +(8150302, 4006000, 1, 1, 0, 7000), +(8810021, 4006000, 1, 1, 0, 7000), +(9300264, 4006000, 1, 1, 0, 7000), +(8150302, 2044402, 1, 1, 0, 750), +(8810021, 2044402, 1, 4, 0, 10000), +(9300264, 2044402, 1, 1, 0, 750), +(8150302, 2044301, 1, 1, 0, 750), +(8810021, 2044301, 1, 4, 0, 10000), +(9300264, 2044301, 1, 1, 0, 750), +(8150302, 2040320, 1, 1, 0, 750), +(8810021, 2040320, 1, 4, 0, 10000), +(9300264, 2040320, 1, 1, 0, 750), +(8150302, 2290010, 1, 1, 0, 1000), +(8810021, 2290010, 1, 4, 0, 40000), +(9300264, 2290010, 1, 1, 0, 1000), +(8150302, 2290128, 1, 1, 0, 1000), +(8810021, 2290128, 1, 4, 0, 40000), +(9300264, 2290128, 1, 1, 0, 1000), +(8150302, 2386015, 1, 1, 0, 20000), +(8810021, 2386015, 1, 4, 0, 20000), +(9300264, 2386015, 1, 1, 0, 20000), +(8150302, 4004000, 1, 1, 0, 3000), +(8810021, 4004000, 1, 1, 0, 3000), +(9300264, 4004000, 1, 1, 0, 3000), +(8150302, 4010005, 1, 1, 0, 7000), +(8810021, 4010005, 1, 1, 0, 7000), +(9300264, 4010005, 1, 1, 0, 7000), +(8150302, 4020002, 1, 1, 0, 7000), +(8810021, 4020002, 1, 1, 0, 7000), +(9300264, 4020002, 1, 1, 0, 7000), +(8150302, 1442020, 1, 1, 0, 700), +(8810021, 1442020, 1, 1, 0, 40000), +(9300264, 1442020, 1, 1, 0, 700), +(8150302, 1002531, 1, 1, 0, 700), +(8810021, 1002531, 1, 1, 0, 40000), +(9300264, 1002531, 1, 1, 0, 700), +(8150302, 1050093, 1, 1, 0, 700), +(8810021, 1050093, 1, 1, 0, 40000), +(9300264, 1050093, 1, 1, 0, 700), +(8150302, 1082127, 1, 1, 0, 700), +(8810021, 1082127, 1, 1, 0, 40000), +(9300264, 1082127, 1, 1, 0, 700), +(8150302, 1332027, 1, 1, 0, 700), +(8810021, 1332027, 1, 1, 0, 40000), +(9300264, 1332027, 1, 1, 0, 700), +(8150302, 1040117, 1, 1, 0, 700), +(8810021, 1040117, 1, 1, 0, 40000), +(9300264, 1040117, 1, 1, 0, 700), +(8150302, 1060107, 1, 1, 0, 700), +(8810021, 1060107, 1, 1, 0, 40000), +(9300264, 1060107, 1, 1, 0, 700), +(8150302, 1040115, 1, 1, 0, 700), +(8810021, 1040115, 1, 1, 0, 40000), +(9300264, 1040115, 1, 1, 0, 700), +(8150302, 1060104, 1, 1, 0, 700), +(8810021, 1060104, 1, 1, 0, 40000), +(9300264, 1060104, 1, 1, 0, 700), +(8150302, 1482012, 1, 1, 0, 700), +(8810021, 1482012, 1, 1, 0, 40000), +(9300264, 1482012, 1, 1, 0, 700), +(8180000, 4000244, 1, 1, 0, 200000), +(9300211, 4000244, 1, 1, 0, 200000), +(9500174, 4000244, 1, 1, 0, 200000), +(9500359, 4000244, 1, 1, 0, 200000), +(8180000, 4000245, 1, 1, 0, 200000), +(9300211, 4000245, 1, 1, 0, 200000), +(9500174, 4000245, 1, 1, 0, 200000), +(9500359, 4000245, 1, 1, 0, 200000), +(8180000, 2000004, 1, 4, 0, 40000), +(9300211, 2000004, 1, 4, 0, 40000), +(9500174, 2000004, 1, 4, 0, 40000), +(9500359, 2000004, 1, 4, 0, 40000), +(8180000, 2000005, 1, 4, 0, 40000), +(9300211, 2000005, 1, 4, 0, 40000), +(9500174, 2000005, 1, 4, 0, 40000), +(9500359, 2000005, 1, 4, 0, 40000), +(8180000, 2043201, 1, 4, 0, 10000), +(9300211, 2043201, 1, 4, 0, 10000), +(9500174, 2043201, 1, 4, 0, 10000), +(9500359, 2043201, 1, 4, 0, 10000), +(8180000, 2044301, 1, 4, 0, 10000), +(9300211, 2044301, 1, 4, 0, 10000), +(9500174, 2044301, 1, 4, 0, 10000), +(9500359, 2044301, 1, 4, 0, 10000), +(8180000, 2044001, 1, 4, 0, 10000), +(9300211, 2044001, 1, 4, 0, 10000), +(9500174, 2044001, 1, 4, 0, 10000), +(9500359, 2044001, 1, 4, 0, 10000), +(8180000, 2040805, 1, 4, 0, 10000), +(9300211, 2040805, 1, 4, 0, 10000), +(9500174, 2040805, 1, 4, 0, 10000), +(9500359, 2040805, 1, 4, 0, 10000), +(8180000, 2044601, 1, 4, 0, 10000), +(9300211, 2044601, 1, 4, 0, 10000), +(9500174, 2044601, 1, 4, 0, 10000), +(9500359, 2044601, 1, 4, 0, 10000), +(8180000, 2043001, 1, 4, 0, 10000), +(9300211, 2043001, 1, 4, 0, 10000), +(9500174, 2043001, 1, 4, 0, 10000), +(9500359, 2043001, 1, 4, 0, 10000), +(8180000, 2044501, 1, 4, 0, 10000), +(9300211, 2044501, 1, 4, 0, 10000), +(9500174, 2044501, 1, 4, 0, 10000), +(9500359, 2044501, 1, 4, 0, 10000), +(8180000, 2043301, 1, 4, 0, 10000), +(9300211, 2043301, 1, 4, 0, 10000), +(9500174, 2043301, 1, 4, 0, 10000), +(9500359, 2043301, 1, 4, 0, 10000), +(8180000, 2044401, 1, 4, 0, 10000), +(9300211, 2044401, 1, 4, 0, 10000), +(9500174, 2044401, 1, 4, 0, 10000), +(9500359, 2044401, 1, 4, 0, 10000), +(8180000, 2044701, 1, 4, 0, 10000), +(9300211, 2044701, 1, 4, 0, 10000), +(9500174, 2044701, 1, 4, 0, 10000), +(9500359, 2044701, 1, 4, 0, 10000), +(8180000, 2043701, 1, 4, 0, 10000), +(9300211, 2043701, 1, 4, 0, 10000), +(9500174, 2043701, 1, 4, 0, 10000), +(9500359, 2043701, 1, 4, 0, 10000), +(8180000, 2043801, 1, 4, 0, 10000), +(9300211, 2043801, 1, 4, 0, 10000), +(9500174, 2043801, 1, 4, 0, 10000), +(9500359, 2043801, 1, 4, 0, 10000), +(8180000, 2043101, 1, 4, 0, 10000), +(9300211, 2043101, 1, 4, 0, 10000), +(9500174, 2043101, 1, 4, 0, 10000), +(9500359, 2043101, 1, 4, 0, 10000), +(8180000, 2290080, 1, 4, 0, 40000), +(9300211, 2290080, 1, 4, 0, 40000), +(9500174, 2290080, 1, 4, 0, 40000), +(9500359, 2290080, 1, 4, 0, 40000), +(8180000, 2290002, 1, 4, 0, 40000), +(9300211, 2290002, 1, 4, 0, 40000), +(9500174, 2290002, 1, 4, 0, 40000), +(9500359, 2290002, 1, 4, 0, 40000), +(8180000, 2388018, 1, 4, 0, 20000), +(9300211, 2388018, 1, 4, 0, 20000), +(9500174, 2388018, 1, 4, 0, 20000), +(9500359, 2388018, 1, 4, 0, 20000), +(8180000, 2290030, 1, 4, 0, 40000), +(9300211, 2290030, 1, 4, 0, 40000), +(9500174, 2290030, 1, 4, 0, 40000), +(9500359, 2290030, 1, 4, 0, 40000), +(8180000, 2290130, 1, 4, 0, 40000), +(9300211, 2290130, 1, 4, 0, 40000), +(9500174, 2290130, 1, 4, 0, 40000), +(9500359, 2290130, 1, 4, 0, 40000), +(8180000, 2290014, 1, 4, 0, 40000), +(9300211, 2290014, 1, 4, 0, 40000), +(9500174, 2290014, 1, 4, 0, 40000), +(9500359, 2290014, 1, 4, 0, 40000), +(8180000, 4004002, 1, 1, 0, 3000), +(9300211, 4004002, 1, 1, 0, 3000), +(9500174, 4004002, 1, 1, 0, 3000), +(9500359, 4004002, 1, 1, 0, 3000), +(8180000, 4004000, 1, 1, 0, 3000), +(9300211, 4004000, 1, 1, 0, 3000), +(9500174, 4004000, 1, 1, 0, 3000), +(9500359, 4004000, 1, 1, 0, 3000), +(8180000, 4004001, 1, 1, 0, 3000), +(9300211, 4004001, 1, 1, 0, 3000), +(9500174, 4004001, 1, 1, 0, 3000), +(9500359, 4004001, 1, 1, 0, 3000), +(8180000, 1302056, 1, 1, 0, 40000), +(9300211, 1302056, 1, 1, 0, 40000), +(9500174, 1302056, 1, 1, 0, 40000), +(9500359, 1302056, 1, 1, 0, 40000), +(8180000, 1312030, 1, 1, 0, 40000), +(9300211, 1312030, 1, 1, 0, 40000), +(9500174, 1312030, 1, 1, 0, 40000), +(9500359, 1312030, 1, 1, 0, 40000), +(8180000, 1322045, 1, 1, 0, 40000), +(9300211, 1322045, 1, 1, 0, 40000), +(9500174, 1322045, 1, 1, 0, 40000), +(9500359, 1322045, 1, 1, 0, 40000), +(8180000, 1402035, 1, 1, 0, 40000), +(9300211, 1402035, 1, 1, 0, 40000), +(9500174, 1402035, 1, 1, 0, 40000), +(9500359, 1402035, 1, 1, 0, 40000), +(8180000, 1412021, 1, 1, 0, 40000), +(9300211, 1412021, 1, 1, 0, 40000), +(9500174, 1412021, 1, 1, 0, 40000), +(9500359, 1412021, 1, 1, 0, 40000), +(8180000, 1422027, 1, 1, 0, 40000), +(9300211, 1422027, 1, 1, 0, 40000), +(9500174, 1422027, 1, 1, 0, 40000), +(9500359, 1422027, 1, 1, 0, 40000), +(8180000, 1432030, 1, 1, 0, 40000), +(9300211, 1432030, 1, 1, 0, 40000), +(9500174, 1432030, 1, 1, 0, 40000), +(9500359, 1432030, 1, 1, 0, 40000), +(8180000, 1442044, 1, 1, 0, 40000), +(9300211, 1442044, 1, 1, 0, 40000), +(9500174, 1442044, 1, 1, 0, 40000), +(9500359, 1442044, 1, 1, 0, 40000), +(8180000, 1332051, 1, 1, 0, 40000), +(9300211, 1332051, 1, 1, 0, 40000), +(9500174, 1332051, 1, 1, 0, 40000), +(9500359, 1332051, 1, 1, 0, 40000), +(8180000, 1382035, 1, 1, 0, 40000), +(9300211, 1382035, 1, 1, 0, 40000), +(9500174, 1382035, 1, 1, 0, 40000), +(9500359, 1382035, 1, 1, 0, 40000), +(8180000, 1372010, 1, 1, 0, 40000), +(9300211, 1372010, 1, 1, 0, 40000), +(9500174, 1372010, 1, 1, 0, 40000), +(9500359, 1372010, 1, 1, 0, 40000), +(8180000, 1452019, 1, 1, 0, 40000), +(9300211, 1452019, 1, 1, 0, 40000), +(9500174, 1452019, 1, 1, 0, 40000), +(9500359, 1452019, 1, 1, 0, 40000), +(8180000, 1462015, 1, 1, 0, 40000), +(9300211, 1462015, 1, 1, 0, 40000), +(9500174, 1462015, 1, 1, 0, 40000), +(9500359, 1462015, 1, 1, 0, 40000), +(8180000, 1332051, 1, 1, 0, 40000), +(9300211, 1332051, 1, 1, 0, 40000), +(9500174, 1332051, 1, 1, 0, 40000), +(9500359, 1332051, 1, 1, 0, 40000), +(8180000, 1472053, 1, 1, 0, 40000), +(9300211, 1472053, 1, 1, 0, 40000), +(9500174, 1472053, 1, 1, 0, 40000), +(9500359, 1472053, 1, 1, 0, 40000), +(8180000, 1332052, 1, 1, 0, 40000), +(9300211, 1332052, 1, 1, 0, 40000), +(9500174, 1332052, 1, 1, 0, 40000), +(9500359, 1332052, 1, 1, 0, 40000), +(8180001, 4000243, 1, 1, 0, 200000), +(9300212, 4000243, 1, 1, 0, 200000), +(9500173, 4000243, 1, 1, 0, 200000), +(9500360, 4000243, 1, 1, 0, 200000), +(8180001, 4000245, 1, 1, 0, 200000), +(9300212, 4000245, 1, 1, 0, 200000), +(9500173, 4000245, 1, 1, 0, 200000), +(9500360, 4000245, 1, 1, 0, 200000), +(8180001, 2000004, 1, 4, 0, 40000), +(9300212, 2000004, 1, 4, 0, 40000), +(9500173, 2000004, 1, 4, 0, 40000), +(9500360, 2000004, 1, 4, 0, 40000), +(8180001, 2000005, 1, 4, 0, 40000), +(9300212, 2000005, 1, 4, 0, 40000), +(9500173, 2000005, 1, 4, 0, 40000), +(9500360, 2000005, 1, 4, 0, 40000), +(8180001, 2040708, 1, 4, 0, 10000), +(9300212, 2040708, 1, 4, 0, 10000), +(9500173, 2040708, 1, 4, 0, 10000), +(9500360, 2040708, 1, 4, 0, 10000), +(8180001, 2040502, 1, 4, 0, 10000), +(9300212, 2040502, 1, 4, 0, 10000), +(9500173, 2040502, 1, 4, 0, 10000), +(9500360, 2040502, 1, 4, 0, 10000), +(8180001, 2040005, 1, 4, 0, 10000), +(9300212, 2040005, 1, 4, 0, 10000), +(9500173, 2040005, 1, 4, 0, 10000), +(9500360, 2040005, 1, 4, 0, 10000), +(8180001, 2040501, 1, 4, 0, 10000), +(9300212, 2040501, 1, 4, 0, 10000), +(9500173, 2040501, 1, 4, 0, 10000), +(9500360, 2040501, 1, 4, 0, 10000), +(8180001, 2040705, 1, 4, 0, 10000), +(9300212, 2040705, 1, 4, 0, 10000), +(9500173, 2040705, 1, 4, 0, 10000), +(9500360, 2040705, 1, 4, 0, 10000), +(8180001, 2040702, 1, 4, 0, 10000), +(9300212, 2040702, 1, 4, 0, 10000), +(9500173, 2040702, 1, 4, 0, 10000), +(9500360, 2040702, 1, 4, 0, 10000), +(8180001, 2040602, 1, 4, 0, 10000), +(9300212, 2040602, 1, 4, 0, 10000), +(9500173, 2040602, 1, 4, 0, 10000), +(9500360, 2040602, 1, 4, 0, 10000), +(8180001, 2040902, 1, 4, 0, 10000), +(9300212, 2040902, 1, 4, 0, 10000), +(9500173, 2040902, 1, 4, 0, 10000), +(9500360, 2040902, 1, 4, 0, 10000), +(8180001, 2040320, 1, 4, 0, 10000), +(9300212, 2040320, 1, 4, 0, 10000), +(9500173, 2040320, 1, 4, 0, 10000), +(9500360, 2040320, 1, 4, 0, 10000), +(8180001, 2040516, 1, 4, 0, 10000), +(9300212, 2040516, 1, 4, 0, 10000), +(9500173, 2040516, 1, 4, 0, 10000), +(9500360, 2040516, 1, 4, 0, 10000), +(8180001, 2040513, 1, 4, 0, 10000), +(9300212, 2040513, 1, 4, 0, 10000), +(9500173, 2040513, 1, 4, 0, 10000), +(9500360, 2040513, 1, 4, 0, 10000), +(8180001, 2040402, 1, 4, 0, 10000), +(9300212, 2040402, 1, 4, 0, 10000), +(9500173, 2040402, 1, 4, 0, 10000), +(9500360, 2040402, 1, 4, 0, 10000), +(8180001, 2049101, 1, 4, 0, 2500), +(9300212, 2049101, 1, 4, 0, 2500), +(9500173, 2049101, 1, 4, 0, 2500), +(9500360, 2049101, 1, 4, 0, 2500), +(8180001, 2388019, 1, 4, 0, 20000), +(9300212, 2388019, 1, 4, 0, 20000), +(9500173, 2388019, 1, 4, 0, 20000), +(9500360, 2388019, 1, 4, 0, 20000), +(8180001, 2290092, 1, 4, 0, 40000), +(9300212, 2290092, 1, 4, 0, 40000), +(9500173, 2290092, 1, 4, 0, 40000), +(9500360, 2290092, 1, 4, 0, 40000), +(8180001, 2290119, 1, 4, 0, 40000), +(9300212, 2290119, 1, 4, 0, 40000), +(9500173, 2290119, 1, 4, 0, 40000), +(9500360, 2290119, 1, 4, 0, 40000), +(8180001, 2290068, 1, 4, 0, 40000), +(9300212, 2290068, 1, 4, 0, 40000), +(9500173, 2290068, 1, 4, 0, 40000), +(9500360, 2290068, 1, 4, 0, 40000), +(8180001, 2290032, 1, 4, 0, 40000), +(9300212, 2290032, 1, 4, 0, 40000), +(9500173, 2290032, 1, 4, 0, 40000), +(9500360, 2290032, 1, 4, 0, 40000), +(8180001, 2290102, 1, 4, 0, 40000), +(9300212, 2290102, 1, 4, 0, 40000), +(9500173, 2290102, 1, 4, 0, 40000), +(9500360, 2290102, 1, 4, 0, 40000), +(8180001, 2290019, 1, 4, 0, 40000), +(9300212, 2290019, 1, 4, 0, 40000), +(9500173, 2290019, 1, 4, 0, 40000), +(9500360, 2290019, 1, 4, 0, 40000), +(8180001, 2290099, 1, 4, 0, 40000), +(9300212, 2290099, 1, 4, 0, 40000), +(9500173, 2290099, 1, 4, 0, 40000), +(9500360, 2290099, 1, 4, 0, 40000), +(8180001, 2290072, 1, 4, 0, 40000), +(9300212, 2290072, 1, 4, 0, 40000), +(9500173, 2290072, 1, 4, 0, 40000), +(9500360, 2290072, 1, 4, 0, 40000), +(8180001, 2290058, 1, 4, 0, 40000), +(9300212, 2290058, 1, 4, 0, 40000), +(9500173, 2290058, 1, 4, 0, 40000), +(9500360, 2290058, 1, 4, 0, 40000), +(8180001, 2290018, 1, 4, 0, 40000), +(9300212, 2290018, 1, 4, 0, 40000), +(9500173, 2290018, 1, 4, 0, 40000), +(9500360, 2290018, 1, 4, 0, 40000), +(8180001, 2290042, 1, 4, 0, 40000), +(9300212, 2290042, 1, 4, 0, 40000), +(9500173, 2290042, 1, 4, 0, 40000), +(9500360, 2290042, 1, 4, 0, 40000), +(8180001, 2290128, 1, 4, 0, 40000), +(9300212, 2290128, 1, 4, 0, 40000), +(9500173, 2290128, 1, 4, 0, 40000), +(9500360, 2290128, 1, 4, 0, 40000), +(8180001, 4004003, 1, 1, 0, 3000), +(9300212, 4004003, 1, 1, 0, 3000), +(9500173, 4004003, 1, 1, 0, 3000), +(9500360, 4004003, 1, 1, 0, 3000), +(8180001, 1332051, 1, 1, 0, 40000), +(9300212, 1332051, 1, 1, 0, 40000), +(9500173, 1332051, 1, 1, 0, 40000), +(9500360, 1332051, 1, 1, 0, 40000), +(8180001, 1422027, 1, 1, 0, 40000), +(9300212, 1422027, 1, 1, 0, 40000), +(9500173, 1422027, 1, 1, 0, 40000), +(9500360, 1422027, 1, 1, 0, 40000), +(8180001, 1402035, 1, 1, 0, 40000), +(9300212, 1402035, 1, 1, 0, 40000), +(9500173, 1402035, 1, 1, 0, 40000), +(9500360, 1402035, 1, 1, 0, 40000), +(8180001, 1442044, 1, 1, 0, 40000), +(9300212, 1442044, 1, 1, 0, 40000), +(9500173, 1442044, 1, 1, 0, 40000), +(9500360, 1442044, 1, 1, 0, 40000), +(8180001, 1372010, 1, 1, 0, 40000), +(9300212, 1372010, 1, 1, 0, 40000), +(9500173, 1372010, 1, 1, 0, 40000), +(9500360, 1372010, 1, 1, 0, 40000), +(8180001, 1452019, 1, 1, 0, 40000), +(9300212, 1452019, 1, 1, 0, 40000), +(9500173, 1452019, 1, 1, 0, 40000), +(9500360, 1452019, 1, 1, 0, 40000), +(8180001, 1462015, 1, 1, 0, 40000), +(9300212, 1462015, 1, 1, 0, 40000), +(9500173, 1462015, 1, 1, 0, 40000), +(9500360, 1462015, 1, 1, 0, 40000), +(8180001, 1332051, 1, 1, 0, 40000), +(9300212, 1332051, 1, 1, 0, 40000), +(9500173, 1332051, 1, 1, 0, 40000), +(9500360, 1332051, 1, 1, 0, 40000), +(8180001, 1492012, 1, 1, 0, 40000), +(9300212, 1492012, 1, 1, 0, 40000), +(9500173, 1492012, 1, 1, 0, 40000), +(9500360, 1492012, 1, 1, 0, 40000), +(8150201, 4000267, 1, 1, 0, 200000), +(8810023, 4000267, 1, 1, 0, 200000), +(8150201, 4000244, 1, 1, 0, 200000), +(8810023, 4000244, 1, 1, 0, 200000), +(8150201, 4000245, 1, 1, 0, 200000), +(8810023, 4000245, 1, 1, 0, 200000), +(8150201, 4001079, 1, 1, 0, 7000), +(8810023, 4001079, 1, 1, 0, 7000), +(8150201, 2022003, 1, 1, 0, 3000), +(8810023, 2022003, 1, 4, 0, 3000), +(8150201, 2020013, 1, 1, 0, 3000), +(8810023, 2020013, 1, 4, 0, 3000), +(8150201, 2040320, 1, 1, 0, 750), +(8810023, 2040320, 1, 4, 0, 10000), +(8150201, 2040001, 1, 1, 0, 750), +(8810023, 2040001, 1, 4, 0, 10000), +(8150201, 2049101, 1, 1, 0, 400), +(8810023, 2049101, 1, 4, 0, 2500), +(8150201, 2386016, 1, 1, 0, 20000), +(8810023, 2386016, 1, 4, 0, 20000), +(8150201, 4004004, 1, 1, 0, 3000), +(8810023, 4004004, 1, 1, 0, 3000), +(8150201, 4010001, 1, 1, 0, 7000), +(8810023, 4010001, 1, 1, 0, 7000), +(8150201, 4020002, 1, 1, 0, 7000), +(8810023, 4020002, 1, 1, 0, 7000), +(8150201, 1002530, 1, 1, 0, 700), +(8810023, 1002530, 1, 1, 0, 40000), +(8150201, 1041122, 1, 1, 0, 700), +(8810023, 1041122, 1, 1, 0, 40000), +(8150201, 1061121, 1, 1, 0, 700), +(8810023, 1061121, 1, 1, 0, 40000), +(8150201, 1092027, 1, 1, 0, 700), +(8810023, 1092027, 1, 1, 0, 40000), +(8150201, 1051101, 1, 1, 0, 700), +(8810023, 1051101, 1, 1, 0, 40000), +(8150201, 1382035, 1, 1, 0, 700), +(8810023, 1382035, 1, 1, 0, 40000), +(8150201, 1072208, 1, 1, 0, 700), +(8810023, 1072208, 1, 1, 0, 40000), +(8150201, 1082158, 1, 1, 0, 700), +(8810023, 1082158, 1, 1, 0, 40000), +(8150201, 1082136, 1, 1, 0, 700), +(8810023, 1082136, 1, 1, 0, 40000), +(8150201, 1492012, 1, 1, 0, 700), +(8810023, 1492012, 1, 1, 0, 40000), +(8190000, 4000272, 1, 1, 0, 200000), +(8190001, 4000272, 1, 1, 0, 200000), +(8190000, 4130011, 1, 1, 0, 3000), +(8190001, 4130011, 1, 1, 0, 3000), +(8190000, 2000006, 1, 1, 0, 40000), +(8190001, 2000006, 1, 1, 0, 40000), +(8190000, 2000005, 1, 1, 0, 40000), +(8190001, 2000005, 1, 1, 0, 40000), +(8190000, 2022003, 1, 1, 0, 3000), +(8190001, 2022003, 1, 1, 0, 3000), +(8190000, 2020013, 1, 1, 0, 3000), +(8190001, 2020013, 1, 1, 0, 3000), +(8190000, 4006000, 1, 1, 0, 7000), +(8190001, 4006000, 1, 1, 0, 7000), +(8190000, 4006001, 1, 1, 0, 7000), +(8190001, 4006001, 1, 1, 0, 7000), +(8190000, 2040004, 1, 1, 0, 750), +(8190001, 2040004, 1, 1, 0, 750), +(8190000, 2040421, 1, 1, 0, 750), +(8190001, 2040421, 1, 1, 0, 750), +(8190000, 2044702, 1, 1, 0, 750), +(8190001, 2044702, 1, 1, 0, 750), +(8190000, 2386017, 1, 1, 0, 20000), +(8190001, 2386017, 1, 1, 0, 20000), +(8190000, 2290030, 1, 1, 0, 1000), +(8190001, 2290030, 1, 1, 0, 1000), +(8190000, 2049000, 1, 1, 0, 400), +(8190001, 2049000, 1, 1, 0, 400), +(8190000, 4010000, 1, 1, 0, 7000), +(8190001, 4010000, 1, 1, 0, 7000), +(8190000, 4020004, 1, 1, 0, 7000), +(8190001, 4020004, 1, 1, 0, 7000), +(8190000, 1040111, 1, 1, 0, 700), +(8190001, 1040111, 1, 1, 0, 700), +(8190000, 1060102, 1, 1, 0, 700), +(8190001, 1060102, 1, 1, 0, 700), +(8190000, 1002398, 1, 1, 0, 700), +(8190001, 1002398, 1, 1, 0, 700), +(8190000, 1072228, 1, 1, 0, 700), +(8190001, 1072228, 1, 1, 0, 700), +(8190000, 1082158, 1, 1, 0, 700), +(8190001, 1082158, 1, 1, 0, 700), +(8190000, 1332052, 1, 1, 0, 700), +(8190001, 1332052, 1, 1, 0, 700), +(8190000, 1002646, 1, 1, 0, 700), +(8190001, 1002646, 1, 1, 0, 700), +(8190000, 1072315, 1, 1, 0, 700), +(8190001, 1072315, 1, 1, 0, 700), +(8200005, 4000449, 1, 1, 0, 200000), +(8200005, 4000451, 1, 1, 0, 200000), +(8200005, 4130005, 1, 1, 0, 3000), +(8200005, 2000006, 1, 1, 0, 40000), +(8200005, 2020013, 1, 1, 0, 3000), +(8200005, 2022003, 1, 1, 0, 3000), +(8200005, 2040932, 1, 1, 0, 750), +(8200005, 2044013, 1, 1, 0, 750), +(8200005, 2290078, 1, 1, 0, 1000), +(8200005, 2387006, 1, 1, 0, 20000), +(8200005, 4004000, 1, 1, 0, 3000), +(8200005, 4010004, 1, 1, 0, 7000), +(8200005, 4020001, 1, 1, 0, 7000), +(8200005, 4020009, 1, 1, 0, 7000), +(8200005, 1302023, 1, 1, 0, 700), +(8200005, 1322029, 1, 1, 0, 700), +(8200005, 1051103, 1, 1, 0, 700), +(8200005, 1072207, 1, 1, 0, 700), +(8200005, 1082127, 1, 1, 0, 700), +(8200005, 1040118, 1, 1, 0, 700), +(8200005, 1060107, 1, 1, 0, 700), +(8200005, 1002643, 1, 1, 0, 700), +(8170000, 2000006, 1, 1, 0, 40000), +(8170000, 2002001, 1, 1, 0, 10000), +(8170000, 2000005, 1, 1, 0, 40000), +(8170000, 4006001, 1, 1, 0, 7000), +(8170000, 2040702, 1, 1, 0, 750), +(8170000, 2040802, 1, 1, 0, 750), +(8170000, 2387001, 1, 1, 0, 20000), +(8170000, 4010005, 1, 1, 0, 7000), +(8170000, 4010004, 1, 1, 0, 7000), +(8170000, 4020008, 1, 1, 0, 7000), +(8170000, 4004004, 1, 1, 0, 3000), +(8170000, 1032017, 1, 1, 0, 700), +(8170000, 1102031, 1, 1, 0, 700), +(8170000, 1040113, 1, 1, 0, 700), +(8170000, 1060102, 1, 1, 0, 700), +(8170000, 1092017, 1, 1, 0, 700), +(8170000, 1092026, 1, 1, 0, 700), +(8170000, 1092027, 1, 1, 0, 700), +(8170000, 1072211, 1, 1, 0, 700), +(8170000, 1050072, 1, 1, 0, 700), +(8170000, 1072178, 1, 1, 0, 700), +(8170000, 1072177, 1, 1, 0, 700), +(8170000, 1462013, 1, 1, 0, 700), +(8170000, 1002404, 1, 1, 0, 700), +(8170000, 1051069, 1, 1, 0, 700), +(8170000, 1452012, 1, 1, 0, 700), +(8170000, 1072227, 1, 1, 0, 700), +(8170000, 1002281, 1, 1, 0, 700), +(8170000, 1332018, 1, 1, 0, 700), +(8170000, 1041107, 1, 1, 0, 700), +(8170000, 1061106, 1, 1, 0, 700), +(8170000, 1072213, 1, 1, 0, 700), +(8160000, 4000151, 1, 1, 0, 200000), +(8160000, 2000006, 1, 1, 0, 40000), +(8160000, 2022003, 1, 1, 0, 3000), +(8160000, 4006000, 1, 1, 0, 7000), +(8160000, 2040602, 1, 1, 0, 750), +(8160000, 2040705, 1, 1, 0, 750), +(8160000, 4010001, 1, 1, 0, 7000), +(8160000, 4020002, 1, 1, 0, 7000), +(8160000, 4004003, 1, 1, 0, 3000), +(8160000, 1032023, 1, 1, 0, 700), +(8160000, 1092015, 1, 1, 0, 700), +(8160000, 1092026, 1, 1, 0, 700), +(8160000, 1051079, 1, 1, 0, 700), +(8160000, 1442019, 1, 1, 0, 700), +(8160000, 1072179, 1, 1, 0, 700), +(8160000, 1082123, 1, 1, 0, 700), +(8160000, 1050093, 1, 1, 0, 700), +(8160000, 1462009, 1, 1, 0, 700), +(8160000, 1452015, 1, 1, 0, 700), +(8160000, 1051063, 1, 1, 0, 700), +(8160000, 1002403, 1, 1, 0, 700), +(8160000, 1472028, 1, 1, 0, 700), +(8160000, 1472031, 1, 1, 0, 700), +(8160000, 1002329, 1, 1, 0, 700), +(8160000, 1052131, 1, 1, 0, 700), +(8200006, 4000450, 1, 1, 0, 200000), +(8200006, 4000451, 1, 1, 0, 200000), +(8200006, 4130006, 1, 1, 0, 3000), +(8200006, 2000005, 1, 1, 0, 40000), +(8200006, 2000006, 1, 1, 0, 40000), +(8200006, 2022003, 1, 1, 0, 3000), +(8200006, 2040318, 1, 1, 0, 750), +(8200006, 2040825, 1, 1, 0, 750), +(8200006, 2290076, 1, 1, 0, 1000), +(8200006, 2290138, 1, 1, 0, 1000), +(8200006, 2387007, 1, 1, 0, 20000), +(8200006, 4004003, 1, 1, 0, 3000), +(8200006, 4010003, 1, 1, 0, 7000), +(8200006, 4020003, 1, 1, 0, 7000), +(8200006, 4020009, 1, 1, 0, 7000), +(8200006, 1032023, 1, 1, 0, 700), +(8200006, 1002378, 1, 1, 0, 700), +(8200006, 1412021, 1, 1, 0, 700), +(8200006, 1382035, 1, 1, 0, 700), +(8200006, 1051107, 1, 1, 0, 700), +(8200006, 1072227, 1, 1, 0, 700), +(8200006, 1462017, 1, 1, 0, 700), +(8200006, 1082135, 1, 1, 0, 700), +(8200006, 1052131, 1, 1, 0, 700), +(8510000, 4031905, 1, 1, 0, 7000), +(8520000, 4031905, 1, 1, 0, 7000), +(9500332, 4031905, 1, 1, 0, 7000), +(9500363, 4031905, 1, 1, 0, 7000), +(8510000, 4001085, 1, 1, 0, 7000), +(8520000, 4001085, 1, 1, 0, 7000), +(9500332, 4001085, 1, 1, 0, 7000), +(9500363, 4001085, 1, 1, 0, 7000), +(8510000, 2000004, 1, 4, 0, 40000), +(8520000, 2000004, 1, 4, 0, 40000), +(9500332, 2000004, 1, 4, 0, 40000), +(9500363, 2000004, 1, 4, 0, 40000), +(8510000, 2020013, 1, 4, 0, 3000), +(8520000, 2020013, 1, 4, 0, 3000), +(9500332, 2020013, 1, 4, 0, 3000), +(9500363, 2020013, 1, 4, 0, 3000), +(8510000, 2020015, 1, 4, 0, 3000), +(8520000, 2020015, 1, 4, 0, 3000), +(9500332, 2020015, 1, 4, 0, 3000), +(9500363, 2020015, 1, 4, 0, 3000), +(8510000, 2000006, 1, 4, 0, 40000), +(8520000, 2000006, 1, 4, 0, 40000), +(9500332, 2000006, 1, 4, 0, 40000), +(9500363, 2000006, 1, 4, 0, 40000), +(8510000, 2000005, 1, 4, 0, 40000), +(8520000, 2000005, 1, 4, 0, 40000), +(9500332, 2000005, 1, 4, 0, 40000), +(9500363, 2000005, 1, 4, 0, 40000), +(8510000, 2043113, 1, 4, 0, 10000), +(8520000, 2043113, 1, 4, 0, 10000), +(9500332, 2043113, 1, 4, 0, 10000), +(9500363, 2043113, 1, 4, 0, 10000), +(8510000, 2040504, 1, 4, 0, 10000), +(8520000, 2040504, 1, 4, 0, 10000), +(9500332, 2040504, 1, 4, 0, 10000), +(9500363, 2040504, 1, 4, 0, 10000), +(8510000, 2040501, 1, 4, 0, 10000), +(8520000, 2040501, 1, 4, 0, 10000), +(9500332, 2040501, 1, 4, 0, 10000), +(9500363, 2040501, 1, 4, 0, 10000), +(8510000, 2040513, 1, 4, 0, 10000), +(8520000, 2040513, 1, 4, 0, 10000), +(9500332, 2040513, 1, 4, 0, 10000), +(9500363, 2040513, 1, 4, 0, 10000), +(8510000, 2040516, 1, 4, 0, 10000), +(8520000, 2040516, 1, 4, 0, 10000), +(9500332, 2040516, 1, 4, 0, 10000), +(9500363, 2040516, 1, 4, 0, 10000), +(8510000, 2040622, 1, 4, 0, 10000), +(8520000, 2040622, 1, 4, 0, 10000), +(9500332, 2040622, 1, 4, 0, 10000), +(9500363, 2040622, 1, 4, 0, 10000), +(8510000, 2040536, 1, 4, 0, 10000), +(8520000, 2040536, 1, 4, 0, 10000), +(9500332, 2040536, 1, 4, 0, 10000), +(9500363, 2040536, 1, 4, 0, 10000), +(8510000, 2040320, 1, 4, 0, 10000), +(8520000, 2040320, 1, 4, 0, 10000), +(9500332, 2040320, 1, 4, 0, 10000), +(9500363, 2040320, 1, 4, 0, 10000), +(8510000, 2040401, 1, 4, 0, 10000), +(8520000, 2040401, 1, 4, 0, 10000), +(9500332, 2040401, 1, 4, 0, 10000), +(9500363, 2040401, 1, 4, 0, 10000), +(8510000, 2049000, 1, 4, 0, 2500), +(8520000, 2049000, 1, 4, 0, 2500), +(9500332, 2049000, 1, 4, 0, 2500), +(9500363, 2049000, 1, 4, 0, 2500), +(8510000, 2290132, 1, 4, 0, 40000), +(8520000, 2290132, 1, 4, 0, 40000), +(9500332, 2290132, 1, 4, 0, 40000), +(9500363, 2290132, 1, 4, 0, 40000), +(8510000, 2388020, 1, 4, 0, 20000), +(8520000, 2388020, 1, 4, 0, 20000), +(9500332, 2388020, 1, 4, 0, 20000), +(9500363, 2388020, 1, 4, 0, 20000), +(8510000, 1322029, 1, 1, 0, 40000), +(8520000, 1322029, 1, 1, 0, 40000), +(9500332, 1322029, 1, 1, 0, 40000), +(9500363, 1322029, 1, 1, 0, 40000), +(8510000, 1041123, 1, 1, 0, 40000), +(8520000, 1041123, 1, 1, 0, 40000), +(9500332, 1041123, 1, 1, 0, 40000), +(9500363, 1041123, 1, 1, 0, 40000), +(8510000, 1061122, 1, 1, 0, 40000), +(8520000, 1061122, 1, 1, 0, 40000), +(9500332, 1061122, 1, 1, 0, 40000), +(9500363, 1061122, 1, 1, 0, 40000), +(8510000, 1040121, 1, 1, 0, 40000), +(8520000, 1040121, 1, 1, 0, 40000), +(9500332, 1040121, 1, 1, 0, 40000), +(9500363, 1040121, 1, 1, 0, 40000), +(8510000, 1060110, 1, 1, 0, 40000), +(8520000, 1060110, 1, 1, 0, 40000), +(9500332, 1060110, 1, 1, 0, 40000), +(9500363, 1060110, 1, 1, 0, 40000), +(8510000, 1412010, 1, 1, 0, 40000), +(8520000, 1412010, 1, 1, 0, 40000), +(9500332, 1412010, 1, 1, 0, 40000), +(9500363, 1412010, 1, 1, 0, 40000), +(8510000, 1302023, 1, 1, 0, 40000), +(8520000, 1302023, 1, 1, 0, 40000), +(9500332, 1302023, 1, 1, 0, 40000), +(9500363, 1302023, 1, 1, 0, 40000), +(8510000, 1402005, 1, 1, 0, 40000), +(8520000, 1402005, 1, 1, 0, 40000), +(9500332, 1402005, 1, 1, 0, 40000), +(9500363, 1402005, 1, 1, 0, 40000), +(8510000, 1051102, 1, 1, 0, 40000), +(8520000, 1051102, 1, 1, 0, 40000), +(9500332, 1051102, 1, 1, 0, 40000), +(9500363, 1051102, 1, 1, 0, 40000), +(8510000, 1050103, 1, 1, 0, 40000), +(8520000, 1050103, 1, 1, 0, 40000), +(9500332, 1050103, 1, 1, 0, 40000), +(9500363, 1050103, 1, 1, 0, 40000), +(8510000, 1051106, 1, 1, 0, 40000), +(8520000, 1051106, 1, 1, 0, 40000), +(9500332, 1051106, 1, 1, 0, 40000), +(9500363, 1051106, 1, 1, 0, 40000), +(8510000, 1050107, 1, 1, 0, 40000), +(8520000, 1050107, 1, 1, 0, 40000), +(9500332, 1050107, 1, 1, 0, 40000), +(9500363, 1050107, 1, 1, 0, 40000), +(8190002, 4000271, 1, 1, 0, 200000), +(8190005, 4000271, 1, 1, 0, 200000), +(8190002, 4006001, 1, 1, 0, 7000), +(8190005, 4006001, 1, 1, 0, 7000), +(8190002, 4006000, 1, 1, 0, 7000), +(8190005, 4006000, 1, 1, 0, 7000), +(8190002, 4000244, 1, 1, 0, 200000), +(8190005, 4000244, 1, 1, 0, 200000), +(8190002, 4000245, 1, 1, 0, 200000), +(8190005, 4000245, 1, 1, 0, 200000), +(8190002, 4130013, 1, 1, 0, 3000), +(8190005, 4130013, 1, 1, 0, 3000), +(8190002, 2387004, 1, 1, 0, 20000), +(8190005, 2387004, 1, 1, 0, 20000), +(8190002, 2022003, 1, 1, 0, 3000), +(8190005, 2022003, 1, 1, 0, 3000), +(8190002, 2000006, 1, 1, 0, 40000), +(8190005, 2000006, 1, 1, 0, 40000), +(8190002, 2000005, 1, 1, 0, 40000), +(8190005, 2000005, 1, 1, 0, 40000), +(8190002, 2043801, 1, 1, 0, 750), +(8190005, 2043801, 1, 1, 0, 750), +(8190002, 2041022, 1, 1, 0, 750), +(8190005, 2041022, 1, 1, 0, 750), +(8190002, 2040707, 1, 1, 0, 750), +(8190005, 2040707, 1, 1, 0, 750), +(8190002, 2044902, 1, 1, 0, 750), +(8190005, 2044902, 1, 1, 0, 750), +(8190002, 2290000, 1, 1, 0, 1000), +(8190005, 2290000, 1, 1, 0, 1000), +(8190002, 2290008, 1, 1, 0, 1000), +(8190005, 2290008, 1, 1, 0, 1000), +(8190002, 2290018, 1, 1, 0, 1000), +(8190005, 2290018, 1, 1, 0, 1000), +(8190002, 2290038, 1, 1, 0, 1000), +(8190005, 2290038, 1, 1, 0, 1000), +(8190002, 2290060, 1, 1, 0, 1000), +(8190005, 2290060, 1, 1, 0, 1000), +(8190002, 2290080, 1, 1, 0, 1000), +(8190005, 2290080, 1, 1, 0, 1000), +(8190002, 2290124, 1, 1, 0, 1000), +(8190005, 2290124, 1, 1, 0, 1000), +(8190002, 4004003, 1, 1, 0, 3000), +(8190005, 4004003, 1, 1, 0, 3000), +(8190002, 4020007, 1, 1, 0, 7000), +(8190005, 4020007, 1, 1, 0, 7000), +(8190002, 4010005, 1, 1, 0, 7000), +(8190005, 4010005, 1, 1, 0, 7000), +(8190002, 1032023, 1, 1, 0, 700), +(8190005, 1032023, 1, 1, 0, 700), +(8190002, 1412021, 1, 1, 0, 700), +(8190005, 1412021, 1, 1, 0, 700), +(8190002, 1082139, 1, 1, 0, 700), +(8190005, 1082139, 1, 1, 0, 700), +(8190002, 1072225, 1, 1, 0, 700), +(8190005, 1072225, 1, 1, 0, 700), +(8190002, 1082152, 1, 1, 0, 700), +(8190005, 1082152, 1, 1, 0, 700), +(8190002, 1051101, 1, 1, 0, 700), +(8190005, 1051101, 1, 1, 0, 700), +(8190002, 1452019, 1, 1, 0, 700), +(8190005, 1452019, 1, 1, 0, 700), +(8190002, 1002406, 1, 1, 0, 700), +(8190005, 1002406, 1, 1, 0, 700), +(8190002, 1492012, 1, 1, 0, 700), +(8190005, 1492012, 1, 1, 0, 700), +(8190002, 1082213, 1, 1, 0, 700), +(8190005, 1082213, 1, 1, 0, 700), +(8190003, 4000274, 1, 1, 0, 200000), +(8190003, 4006000, 1, 1, 0, 7000), +(8190003, 2044602, 1, 1, 0, 750), +(8190003, 2044904, 1, 1, 0, 750), +(8190003, 2387002, 1, 1, 0, 20000), +(8190003, 2290062, 1, 1, 0, 1000), +(8190003, 4004001, 1, 1, 0, 3000), +(8190003, 4020001, 1, 1, 0, 7000), +(8190003, 4010001, 1, 1, 0, 7000), +(8190003, 1032017, 1, 1, 0, 700), +(8190003, 1002377, 1, 1, 0, 700), +(8190003, 1072221, 1, 1, 0, 700), +(8190003, 1302056, 1, 1, 0, 700), +(8190003, 1082140, 1, 1, 0, 700), +(8190003, 1422027, 1, 1, 0, 700), +(8190003, 1050103, 1, 1, 0, 700), +(8190003, 1050107, 1, 1, 0, 700), +(8190003, 1082135, 1, 1, 0, 700), +(8190003, 1332051, 1, 1, 0, 700), +(8190003, 1072318, 1, 1, 0, 700), +(8190003, 1482011, 1, 1, 0, 700), +(9400575, 1032023, 1, 1, 0, 40000), +(8190004, 4000273, 1, 1, 0, 200000), +(8190004, 4000244, 1, 1, 0, 200000), +(8190004, 4130022, 1, 1, 0, 3000), +(8190004, 2022003, 1, 1, 0, 3000), +(8190004, 4006001, 1, 1, 0, 7000), +(8190004, 2041013, 1, 1, 0, 750), +(8190004, 2041045, 1, 1, 0, 750), +(8190004, 2387003, 1, 1, 0, 20000), +(8190004, 2040530, 1, 1, 0, 750), +(8190004, 2290052, 1, 1, 0, 1000), +(8190004, 2290058, 1, 1, 0, 1000), +(8190004, 2290130, 1, 1, 0, 1000), +(8190004, 2290090, 1, 1, 0, 1000), +(8190004, 4004004, 1, 1, 0, 3000), +(8190004, 4020002, 1, 1, 0, 7000), +(8190004, 4020006, 1, 1, 0, 7000), +(8190004, 1040121, 1, 1, 0, 700), +(8190004, 1060109, 1, 1, 0, 700), +(8190004, 1322045, 1, 1, 0, 700), +(8190004, 1092042, 1, 1, 0, 700), +(8190004, 1051102, 1, 1, 0, 700), +(8190004, 1082151, 1, 1, 0, 700), +(8190004, 1052076, 1, 1, 0, 700), +(8190004, 1072215, 1, 1, 0, 700), +(8190004, 1002380, 1, 1, 0, 700), +(8190004, 1082135, 1, 1, 0, 700), +(8190004, 1082213, 1, 1, 0, 700), +(8190004, 1482012, 1, 1, 0, 700), +(8200007, 4000452, 1, 1, 0, 200000), +(8200007, 4000459, 1, 1, 0, 200000), +(8200007, 4130020, 1, 1, 0, 3000), +(8200007, 4130007, 1, 1, 0, 3000), +(8200007, 2000006, 1, 1, 0, 40000), +(8200007, 2022003, 1, 1, 0, 3000), +(8200007, 2040302, 1, 1, 0, 750), +(8200007, 2040701, 1, 1, 0, 750), +(8200007, 2044301, 1, 1, 0, 750), +(8200007, 2290006, 1, 1, 0, 1000), +(8200007, 2290136, 1, 1, 0, 1000), +(8200007, 2387008, 1, 1, 0, 20000), +(8200007, 4004002, 1, 1, 0, 3000), +(8200007, 4010004, 1, 1, 0, 7000), +(8200007, 4020004, 1, 1, 0, 7000), +(8200007, 4020009, 1, 1, 0, 7000), +(8200007, 1040121, 1, 1, 0, 700), +(8200007, 1041124, 1, 1, 0, 700), +(8200007, 1422027, 1, 1, 0, 700), +(8200007, 1002400, 1, 1, 0, 700), +(8200007, 1462018, 1, 1, 0, 700), +(8200007, 1332052, 1, 1, 0, 700), +(8200007, 1082213, 1, 1, 0, 700), +(9300028, 2388021, 1, 4, 0, 20000), +(9400014, 4000224, 1, 1, 0, 200000), +(9400014, 4031902, 1, 1, 0, 7000), +(9400014, 2022025, 1, 4, 0, 3000), +(9400014, 2022026, 1, 4, 0, 3000), +(9400014, 2000004, 1, 4, 0, 40000), +(9400014, 2041034, 1, 4, 0, 10000), +(9400014, 2041035, 1, 4, 0, 10000), +(9400014, 2041036, 1, 4, 0, 10000), +(9400014, 2041043, 1, 4, 0, 10000), +(9400014, 2040720, 1, 4, 0, 10000), +(9400014, 2040719, 1, 4, 0, 10000), +(9400014, 1102030, 1, 1, 0, 40000), +(9400014, 1032027, 1, 1, 0, 40000), +(9400014, 1402037, 1, 1, 0, 40000), +(9400014, 1372011, 1, 1, 0, 40000), +(8200008, 4000453, 1, 1, 0, 200000), +(8200008, 4000459, 1, 1, 0, 200000), +(8200008, 4130008, 1, 1, 0, 3000), +(8200008, 2000006, 1, 1, 0, 40000), +(8200008, 2022003, 1, 1, 0, 3000), +(8200008, 2330004, 1, 1, 0, 400), +(8200008, 2044101, 1, 1, 0, 750), +(8200008, 2044501, 1, 1, 0, 750), +(8200008, 2290006, 1, 1, 0, 1000), +(8200008, 2290133, 1, 1, 0, 1000), +(8200008, 2387009, 1, 1, 0, 20000), +(8200008, 4004000, 1, 1, 0, 3000), +(8200008, 4010005, 1, 1, 0, 7000), +(8200008, 4020009, 1, 1, 0, 7000), +(8200008, 1060111, 1, 1, 0, 700), +(8200008, 1061123, 1, 1, 0, 700), +(8200008, 1050104, 1, 1, 0, 700), +(8200008, 1002407, 1, 1, 0, 700), +(8200008, 1472033, 1, 1, 0, 700), +(8200008, 1472053, 1, 1, 0, 700), +(8200008, 1072318, 1, 1, 0, 700), +(9400582, 4032012, 1, 1, 0, 10000), +(9400582, 2000005, 1, 1, 0, 40000), +(9400582, 2290010, 1, 1, 0, 1000), +(9400582, 4004000, 1, 1, 0, 3000), +(8220003, 4000269, 1, 1, 0, 200000), +(9300213, 4000269, 1, 1, 0, 200000), +(9500333, 4000269, 1, 1, 0, 200000), +(9500361, 4000269, 1, 1, 0, 200000), +(9303016, 4000269, 1, 1, 0, 200000), +(8220003, 4000268, 1, 1, 0, 200000), +(9300213, 4000268, 1, 1, 0, 200000), +(9500333, 4000268, 1, 1, 0, 200000), +(9500361, 4000268, 1, 1, 0, 200000), +(9303016, 4000268, 1, 1, 0, 200000), +(8220003, 4000270, 1, 1, 0, 200000), +(9300213, 4000270, 1, 1, 0, 200000), +(9500333, 4000270, 1, 1, 0, 200000), +(9500361, 4000270, 1, 1, 0, 200000), +(9303016, 4000270, 1, 1, 0, 200000), +(8220003, 4006001, 1, 1, 0, 7000), +(9300213, 4006001, 1, 1, 0, 7000), +(9500333, 4006001, 1, 1, 0, 7000), +(9500361, 4006001, 1, 1, 0, 7000), +(9303016, 4006001, 1, 1, 0, 7000), +(8220003, 4006000, 1, 1, 0, 7000), +(9300213, 4006000, 1, 1, 0, 7000), +(9500333, 4006000, 1, 1, 0, 7000), +(9500361, 4006000, 1, 1, 0, 7000), +(9303016, 4006000, 1, 1, 0, 7000), +(8220003, 2388033, 1, 4, 0, 20000), +(9300213, 2388033, 1, 4, 0, 20000), +(9500333, 2388033, 1, 4, 0, 20000), +(9500361, 2388033, 1, 4, 0, 20000), +(9303016, 2388033, 1, 1, 0, 20000), +(8220003, 2000005, 1, 4, 0, 40000), +(9300213, 2000005, 1, 4, 0, 40000), +(9500333, 2000005, 1, 4, 0, 40000), +(9500361, 2000005, 1, 4, 0, 40000), +(9303016, 2000005, 1, 1, 0, 40000), +(8220003, 2000006, 1, 4, 0, 40000), +(9300213, 2000006, 1, 4, 0, 40000), +(9500333, 2000006, 1, 4, 0, 40000), +(9500361, 2000006, 1, 4, 0, 40000), +(9303016, 2000006, 1, 1, 0, 40000), +(8220003, 2020013, 1, 4, 0, 3000), +(9300213, 2020013, 1, 4, 0, 3000), +(9500333, 2020013, 1, 4, 0, 3000), +(9500361, 2020013, 1, 4, 0, 3000), +(9303016, 2020013, 1, 1, 0, 3000), +(8220003, 2290006, 1, 4, 0, 40000), +(9300213, 2290006, 1, 4, 0, 40000), +(9500333, 2290006, 1, 4, 0, 40000), +(9500361, 2290006, 1, 4, 0, 40000), +(9303016, 2290006, 1, 1, 0, 1000), +(8220003, 2290030, 1, 4, 0, 40000), +(9300213, 2290030, 1, 4, 0, 40000), +(9500333, 2290030, 1, 4, 0, 40000), +(9500361, 2290030, 1, 4, 0, 40000), +(9303016, 2290030, 1, 1, 0, 1000), +(8220003, 2290032, 1, 4, 0, 40000), +(9300213, 2290032, 1, 4, 0, 40000), +(9500333, 2290032, 1, 4, 0, 40000), +(9500361, 2290032, 1, 4, 0, 40000), +(9303016, 2290032, 1, 1, 0, 1000), +(8220003, 2290060, 1, 4, 0, 40000), +(9300213, 2290060, 1, 4, 0, 40000), +(9500333, 2290060, 1, 4, 0, 40000), +(9500361, 2290060, 1, 4, 0, 40000), +(9303016, 2290060, 1, 1, 0, 1000), +(8220003, 2290076, 1, 4, 0, 40000), +(9300213, 2290076, 1, 4, 0, 40000), +(9500333, 2290076, 1, 4, 0, 40000), +(9500361, 2290076, 1, 4, 0, 40000), +(9303016, 2290076, 1, 1, 0, 1000), +(8220003, 2290104, 1, 4, 0, 40000), +(9300213, 2290104, 1, 4, 0, 40000), +(9500333, 2290104, 1, 4, 0, 40000), +(9500361, 2290104, 1, 4, 0, 40000), +(9303016, 2290104, 1, 1, 0, 1000), +(8220003, 2290117, 1, 4, 0, 40000), +(9300213, 2290117, 1, 4, 0, 40000), +(9500333, 2290117, 1, 4, 0, 40000), +(9500361, 2290117, 1, 4, 0, 40000), +(9303016, 2290117, 1, 1, 0, 1000), +(8220003, 2040825, 1, 4, 0, 10000), +(9300213, 2040825, 1, 4, 0, 10000), +(9500333, 2040825, 1, 4, 0, 10000), +(9500361, 2040825, 1, 4, 0, 10000), +(9303016, 2040825, 1, 1, 0, 750), +(8220003, 2044213, 1, 4, 0, 10000), +(9300213, 2044213, 1, 4, 0, 10000), +(9500333, 2044213, 1, 4, 0, 10000), +(9500361, 2044213, 1, 4, 0, 10000), +(9303016, 2044213, 1, 1, 0, 750), +(8220003, 1302056, 1, 1, 0, 40000), +(9300213, 1302056, 1, 1, 0, 40000), +(9500333, 1302056, 1, 1, 0, 40000), +(9500361, 1302056, 1, 1, 0, 40000), +(9303016, 1302056, 1, 1, 0, 700), +(8220003, 1312030, 1, 1, 0, 40000), +(9300213, 1312030, 1, 1, 0, 40000), +(9500333, 1312030, 1, 1, 0, 40000), +(9500361, 1312030, 1, 1, 0, 40000), +(9303016, 1312030, 1, 1, 0, 700), +(8220003, 1322045, 1, 1, 0, 40000), +(9300213, 1322045, 1, 1, 0, 40000), +(9500333, 1322045, 1, 1, 0, 40000), +(9500361, 1322045, 1, 1, 0, 40000), +(9303016, 1322045, 1, 1, 0, 700), +(8220003, 1402035, 1, 1, 0, 40000), +(9300213, 1402035, 1, 1, 0, 40000), +(9500333, 1402035, 1, 1, 0, 40000), +(9500361, 1402035, 1, 1, 0, 40000), +(9303016, 1402035, 1, 1, 0, 700), +(8220003, 1412021, 1, 1, 0, 40000), +(9300213, 1412021, 1, 1, 0, 40000), +(9500333, 1412021, 1, 1, 0, 40000), +(9500361, 1412021, 1, 1, 0, 40000), +(9303016, 1412021, 1, 1, 0, 700), +(8220003, 1422027, 1, 1, 0, 40000), +(9300213, 1422027, 1, 1, 0, 40000), +(9500333, 1422027, 1, 1, 0, 40000), +(9500361, 1422027, 1, 1, 0, 40000), +(9303016, 1422027, 1, 1, 0, 700), +(8220003, 1432030, 1, 1, 0, 40000), +(9300213, 1432030, 1, 1, 0, 40000), +(9500333, 1432030, 1, 1, 0, 40000), +(9500361, 1432030, 1, 1, 0, 40000), +(9303016, 1432030, 1, 1, 0, 700), +(8220003, 1442044, 1, 1, 0, 40000), +(9300213, 1442044, 1, 1, 0, 40000), +(9500333, 1442044, 1, 1, 0, 40000), +(9500361, 1442044, 1, 1, 0, 40000), +(9303016, 1442044, 1, 1, 0, 700), +(8220003, 1382035, 1, 1, 0, 40000), +(9300213, 1382035, 1, 1, 0, 40000), +(9500333, 1382035, 1, 1, 0, 40000), +(9500361, 1382035, 1, 1, 0, 40000), +(9303016, 1382035, 1, 1, 0, 700), +(8220003, 1372010, 1, 1, 0, 40000), +(9300213, 1372010, 1, 1, 0, 40000), +(9500333, 1372010, 1, 1, 0, 40000), +(9500361, 1372010, 1, 1, 0, 40000), +(9303016, 1372010, 1, 1, 0, 700), +(8220003, 1452019, 1, 1, 0, 40000), +(9300213, 1452019, 1, 1, 0, 40000), +(9500333, 1452019, 1, 1, 0, 40000), +(9500361, 1452019, 1, 1, 0, 40000), +(9303016, 1452019, 1, 1, 0, 700), +(8220003, 1462015, 1, 1, 0, 40000), +(9300213, 1462015, 1, 1, 0, 40000), +(9500333, 1462015, 1, 1, 0, 40000), +(9500361, 1462015, 1, 1, 0, 40000), +(9303016, 1462015, 1, 1, 0, 700), +(8220003, 1332052, 1, 1, 0, 40000), +(9300213, 1332052, 1, 1, 0, 40000), +(9500333, 1332052, 1, 1, 0, 40000), +(9500361, 1332052, 1, 1, 0, 40000), +(9303016, 1332052, 1, 1, 0, 700), +(8220003, 1472053, 1, 1, 0, 40000), +(9300213, 1472053, 1, 1, 0, 40000), +(9500333, 1472053, 1, 1, 0, 40000), +(9500361, 1472053, 1, 1, 0, 40000), +(9303016, 1472053, 1, 1, 0, 700), +(8220003, 1332051, 1, 1, 0, 40000), +(9300213, 1332051, 1, 1, 0, 40000), +(9500333, 1332051, 1, 1, 0, 40000), +(9500361, 1332051, 1, 1, 0, 40000), +(9303016, 1332051, 1, 1, 0, 700), +(8220003, 1482012, 1, 1, 0, 40000), +(9300213, 1482012, 1, 1, 0, 40000), +(9500333, 1482012, 1, 1, 0, 40000), +(9500361, 1482012, 1, 1, 0, 40000), +(9303016, 1482012, 1, 1, 0, 700), +(8220003, 1492012, 1, 1, 0, 40000), +(9300213, 1492012, 1, 1, 0, 40000), +(9500333, 1492012, 1, 1, 0, 40000), +(9500361, 1492012, 1, 1, 0, 40000), +(9303016, 1492012, 1, 1, 0, 700), +(8200009, 4000454, 1, 1, 0, 200000), +(8200009, 4000456, 1, 1, 0, 200000), +(8200009, 4130000, 1, 1, 0, 3000), +(8200009, 4130009, 1, 1, 0, 3000), +(8200009, 2000006, 1, 1, 0, 40000), +(8200009, 2022003, 1, 1, 0, 3000), +(8200009, 2387010, 1, 1, 0, 20000), +(8200009, 2044601, 1, 1, 0, 750), +(8200009, 2040925, 1, 1, 0, 750), +(8200009, 4004001, 1, 1, 0, 3000), +(8200009, 4010000, 1, 1, 0, 7000), +(8200009, 4020009, 1, 1, 0, 7000), +(8200009, 1072221, 1, 1, 0, 700), +(8200009, 1402035, 1, 1, 0, 700), +(8200009, 1432011, 1, 1, 0, 700), +(8200009, 1082153, 1, 1, 0, 700), +(8200009, 1050108, 1, 1, 0, 700), +(8200009, 1002381, 1, 1, 0, 700), +(8200009, 1492011, 1, 1, 0, 700), +(8220004, 2000005, 1, 4, 0, 40000), +(8220004, 2000006, 1, 4, 0, 40000), +(8220004, 2020013, 1, 4, 0, 3000), +(8220004, 2040026, 1, 4, 0, 10000), +(8220004, 2040030, 1, 4, 0, 10000), +(8220004, 2040324, 1, 4, 0, 10000), +(8220004, 2040327, 1, 4, 0, 10000), +(8220004, 2040925, 1, 4, 0, 10000), +(8220004, 2049000, 1, 4, 0, 2500), +(8220004, 2290018, 1, 4, 0, 40000), +(8220004, 2290019, 1, 4, 0, 40000), +(8220004, 2290024, 1, 4, 0, 40000), +(8220004, 2290058, 1, 4, 0, 40000), +(8220004, 2290076, 1, 4, 0, 40000), +(8220004, 2290106, 1, 4, 0, 40000), +(8220004, 4006000, 1, 1, 0, 7000), +(8220004, 4006001, 1, 1, 0, 7000), +(8220004, 2290127, 1, 4, 0, 40000), +(8220004, 2290134, 1, 4, 0, 40000), +(8220004, 2388040, 1, 4, 0, 20000), +(8220004, 4020009, 1, 1, 0, 7000), +(8220004, 1082141, 1, 1, 0, 40000), +(8220004, 1322045, 1, 1, 0, 40000), +(8220004, 1050105, 1, 1, 0, 40000), +(8220004, 1372010, 1, 1, 0, 40000), +(8220004, 1002405, 1, 1, 0, 40000), +(8220004, 1332052, 1, 1, 0, 40000), +(8220004, 1072318, 1, 1, 0, 40000), +(8200010, 4000455, 1, 1, 0, 200000), +(8200010, 4000456, 1, 1, 0, 200000), +(8200010, 4130001, 1, 1, 0, 3000), +(8200010, 4130010, 1, 1, 0, 3000), +(8200010, 2000005, 1, 1, 0, 40000), +(8200010, 2000006, 1, 1, 0, 40000), +(8200010, 2022003, 1, 1, 0, 3000), +(8200010, 2041022, 1, 1, 0, 750), +(8200010, 2043801, 1, 1, 0, 750), +(8200010, 2290088, 1, 1, 0, 1000), +(8200010, 2387011, 1, 1, 0, 20000), +(8200010, 4004003, 1, 1, 0, 3000), +(8200010, 4010002, 1, 1, 0, 7000), +(8200010, 4020000, 1, 1, 0, 7000), +(8200010, 4020009, 1, 1, 0, 7000), +(8200010, 1312030, 1, 1, 0, 700), +(8200010, 1432030, 1, 1, 0, 700), +(8200010, 1072225, 1, 1, 0, 700), +(8200010, 1082158, 1, 1, 0, 700), +(8200010, 1002646, 1, 1, 0, 700), +(8500002, 4031196, 1, 1, 0, 7000), +(9300214, 4031196, 1, 1, 0, 7000), +(9500180, 4031196, 1, 1, 0, 7000), +(9500181, 4031196, 1, 1, 0, 7000), +(9500331, 4031196, 1, 1, 0, 7000), +(9500362, 4031196, 1, 1, 0, 7000), +(8500002, 4031901, 1, 1, 0, 7000), +(9300214, 4031901, 1, 1, 0, 7000), +(9500180, 4031901, 1, 1, 0, 7000), +(9500181, 4031901, 1, 1, 0, 7000), +(9500331, 4031901, 1, 1, 0, 7000), +(9500362, 4031901, 1, 1, 0, 7000), +(8500002, 4001084, 1, 1, 0, 7000), +(9300214, 4001084, 1, 1, 0, 7000), +(9500180, 4001084, 1, 1, 0, 7000), +(9500181, 4001084, 1, 1, 0, 7000), +(9500331, 4001084, 1, 1, 0, 7000), +(9500362, 4001084, 1, 1, 0, 7000), +(8500002, 2020013, 1, 4, 0, 3000), +(9300214, 2020013, 1, 4, 0, 3000), +(9500180, 2020013, 1, 4, 0, 3000), +(9500181, 2020013, 1, 4, 0, 3000), +(9500331, 2020013, 1, 4, 0, 3000), +(9500362, 2020013, 1, 4, 0, 3000), +(8500002, 2000005, 1, 4, 0, 40000), +(9300214, 2000005, 1, 4, 0, 40000), +(9500180, 2000005, 1, 4, 0, 40000), +(9500181, 2000005, 1, 4, 0, 40000), +(9500331, 2000005, 1, 4, 0, 40000), +(9500362, 2000005, 1, 4, 0, 40000), +(8500002, 2000006, 1, 4, 0, 40000), +(9300214, 2000006, 1, 4, 0, 40000), +(9500180, 2000006, 1, 4, 0, 40000), +(9500181, 2000006, 1, 4, 0, 40000), +(9500331, 2000006, 1, 4, 0, 40000), +(9500362, 2000006, 1, 4, 0, 40000), +(8500002, 2020015, 1, 4, 0, 3000), +(9300214, 2020015, 1, 4, 0, 3000), +(9500180, 2020015, 1, 4, 0, 3000), +(9500181, 2020015, 1, 4, 0, 3000), +(9500331, 2020015, 1, 4, 0, 3000), +(9500362, 2020015, 1, 4, 0, 3000), +(8500002, 2041016, 1, 4, 0, 10000), +(9300214, 2041016, 1, 4, 0, 10000), +(9500180, 2041016, 1, 4, 0, 10000), +(9500181, 2041016, 1, 4, 0, 10000), +(9500331, 2041016, 1, 4, 0, 10000), +(9500362, 2041016, 1, 4, 0, 10000), +(8500002, 2041013, 1, 4, 0, 10000), +(9300214, 2041013, 1, 4, 0, 10000), +(9500180, 2041013, 1, 4, 0, 10000), +(9500181, 2041013, 1, 4, 0, 10000), +(9500331, 2041013, 1, 4, 0, 10000), +(9500362, 2041013, 1, 4, 0, 10000), +(8500002, 2041022, 1, 4, 0, 10000), +(9300214, 2041022, 1, 4, 0, 10000), +(9500180, 2041022, 1, 4, 0, 10000), +(9500181, 2041022, 1, 4, 0, 10000), +(9500331, 2041022, 1, 4, 0, 10000), +(9500362, 2041022, 1, 4, 0, 10000), +(8500002, 2041019, 1, 4, 0, 10000), +(9300214, 2041019, 1, 4, 0, 10000), +(9500180, 2041019, 1, 4, 0, 10000), +(9500181, 2041019, 1, 4, 0, 10000), +(9500331, 2041019, 1, 4, 0, 10000), +(9500362, 2041019, 1, 4, 0, 10000), +(8500002, 2049101, 1, 4, 0, 2500), +(9300214, 2049101, 1, 4, 0, 2500), +(9500180, 2049101, 1, 4, 0, 2500), +(9500181, 2049101, 1, 4, 0, 2500), +(9500331, 2049101, 1, 4, 0, 2500), +(9500362, 2049101, 1, 4, 0, 2500), +(8500002, 2290126, 1, 4, 0, 40000), +(9300214, 2290126, 1, 4, 0, 40000), +(9500180, 2290126, 1, 4, 0, 40000), +(9500181, 2290126, 1, 4, 0, 40000), +(9500331, 2290126, 1, 4, 0, 40000), +(9500362, 2290126, 1, 4, 0, 40000), +(8500002, 2290010, 1, 4, 0, 40000), +(9300214, 2290010, 1, 4, 0, 40000), +(9500180, 2290010, 1, 4, 0, 40000), +(9500181, 2290010, 1, 4, 0, 40000), +(9500331, 2290010, 1, 4, 0, 40000), +(9500362, 2290010, 1, 4, 0, 40000), +(8500002, 2290028, 1, 4, 0, 40000), +(9300214, 2290028, 1, 4, 0, 40000), +(9500180, 2290028, 1, 4, 0, 40000), +(9500181, 2290028, 1, 4, 0, 40000), +(9500331, 2290028, 1, 4, 0, 40000), +(9500362, 2290028, 1, 4, 0, 40000), +(8500002, 2388022, 1, 4, 0, 20000), +(9300214, 2388022, 1, 4, 0, 20000), +(9500180, 2388022, 1, 4, 0, 20000), +(9500181, 2388022, 1, 4, 0, 20000), +(9500331, 2388022, 1, 4, 0, 20000), +(9500362, 2388022, 1, 4, 0, 20000), +(8500002, 1072211, 1, 1, 0, 40000), +(9300214, 1072211, 1, 1, 0, 40000), +(9500180, 1072211, 1, 1, 0, 40000), +(9500181, 1072211, 1, 1, 0, 40000), +(9500331, 1072211, 1, 1, 0, 40000), +(9500362, 1072211, 1, 1, 0, 40000), +(8500002, 1041120, 1, 1, 0, 40000), +(9300214, 1041120, 1, 1, 0, 40000), +(9500180, 1041120, 1, 1, 0, 40000), +(9500181, 1041120, 1, 1, 0, 40000), +(9500331, 1041120, 1, 1, 0, 40000), +(9500362, 1041120, 1, 1, 0, 40000), +(8500002, 1312015, 1, 1, 0, 40000), +(9300214, 1312015, 1, 1, 0, 40000), +(9500180, 1312015, 1, 1, 0, 40000), +(9500181, 1312015, 1, 1, 0, 40000), +(9500331, 1312015, 1, 1, 0, 40000), +(9500362, 1312015, 1, 1, 0, 40000), +(8500002, 1072198, 1, 1, 0, 40000), +(9300214, 1072198, 1, 1, 0, 40000), +(9500180, 1072198, 1, 1, 0, 40000), +(9500181, 1072198, 1, 1, 0, 40000), +(9500331, 1072198, 1, 1, 0, 40000), +(9500362, 1072198, 1, 1, 0, 40000), +(8500002, 1061119, 1, 1, 0, 40000), +(9300214, 1061119, 1, 1, 0, 40000), +(9500180, 1061119, 1, 1, 0, 40000), +(9500181, 1061119, 1, 1, 0, 40000), +(9500331, 1061119, 1, 1, 0, 40000), +(9500362, 1061119, 1, 1, 0, 40000), +(8500002, 1040112, 1, 1, 0, 40000), +(9300214, 1040112, 1, 1, 0, 40000), +(9500180, 1040112, 1, 1, 0, 40000), +(9500181, 1040112, 1, 1, 0, 40000), +(9500331, 1040112, 1, 1, 0, 40000), +(9500362, 1040112, 1, 1, 0, 40000), +(8500002, 1060101, 1, 1, 0, 40000), +(9300214, 1060101, 1, 1, 0, 40000), +(9500180, 1060101, 1, 1, 0, 40000), +(9500181, 1060101, 1, 1, 0, 40000), +(9500331, 1060101, 1, 1, 0, 40000), +(9500362, 1060101, 1, 1, 0, 40000), +(8500002, 1332026, 1, 1, 0, 40000), +(9300214, 1332026, 1, 1, 0, 40000), +(9500180, 1332026, 1, 1, 0, 40000), +(9500181, 1332026, 1, 1, 0, 40000), +(9500331, 1332026, 1, 1, 0, 40000), +(9500362, 1332026, 1, 1, 0, 40000), +(8500002, 1040120, 1, 1, 0, 40000), +(9300214, 1040120, 1, 1, 0, 40000), +(9500180, 1040120, 1, 1, 0, 40000), +(9500181, 1040120, 1, 1, 0, 40000), +(9500331, 1040120, 1, 1, 0, 40000), +(9500362, 1040120, 1, 1, 0, 40000), +(8500002, 1072221, 1, 1, 0, 40000), +(9300214, 1072221, 1, 1, 0, 40000), +(9500180, 1072221, 1, 1, 0, 40000), +(9500181, 1072221, 1, 1, 0, 40000), +(9500331, 1072221, 1, 1, 0, 40000), +(9500362, 1072221, 1, 1, 0, 40000), +(8500002, 1072220, 1, 1, 0, 40000), +(9300214, 1072220, 1, 1, 0, 40000), +(9500180, 1072220, 1, 1, 0, 40000), +(9500181, 1072220, 1, 1, 0, 40000), +(9500331, 1072220, 1, 1, 0, 40000), +(9500362, 1072220, 1, 1, 0, 40000), +(8500002, 1041122, 1, 1, 0, 40000), +(9300214, 1041122, 1, 1, 0, 40000), +(9500180, 1041122, 1, 1, 0, 40000), +(9500181, 1041122, 1, 1, 0, 40000), +(9500331, 1041122, 1, 1, 0, 40000), +(9500362, 1041122, 1, 1, 0, 40000), +(8500002, 1060109, 1, 1, 0, 40000), +(9300214, 1060109, 1, 1, 0, 40000), +(9500180, 1060109, 1, 1, 0, 40000), +(9500181, 1060109, 1, 1, 0, 40000), +(9500331, 1060109, 1, 1, 0, 40000), +(9500362, 1060109, 1, 1, 0, 40000), +(8500002, 1002377, 1, 1, 0, 40000), +(9300214, 1002377, 1, 1, 0, 40000), +(9500180, 1002377, 1, 1, 0, 40000), +(9500181, 1002377, 1, 1, 0, 40000), +(9500331, 1002377, 1, 1, 0, 40000), +(9500362, 1002377, 1, 1, 0, 40000), +(8500002, 1072178, 1, 1, 0, 40000), +(9300214, 1072178, 1, 1, 0, 40000), +(9500180, 1072178, 1, 1, 0, 40000), +(9500181, 1072178, 1, 1, 0, 40000), +(9500331, 1072178, 1, 1, 0, 40000), +(9500362, 1072178, 1, 1, 0, 40000), +(8500002, 1050094, 1, 1, 0, 40000), +(9300214, 1050094, 1, 1, 0, 40000), +(9500180, 1050094, 1, 1, 0, 40000), +(9500181, 1050094, 1, 1, 0, 40000), +(9500331, 1050094, 1, 1, 0, 40000), +(9500362, 1050094, 1, 1, 0, 40000), +(8500002, 1050095, 1, 1, 0, 40000), +(9300214, 1050095, 1, 1, 0, 40000), +(9500180, 1050095, 1, 1, 0, 40000), +(9500181, 1050095, 1, 1, 0, 40000), +(9500331, 1050095, 1, 1, 0, 40000), +(9500362, 1050095, 1, 1, 0, 40000), +(8500002, 1372009, 1, 1, 0, 40000), +(9300214, 1372009, 1, 1, 0, 40000), +(9500180, 1372009, 1, 1, 0, 40000), +(9500181, 1372009, 1, 1, 0, 40000), +(9500331, 1372009, 1, 1, 0, 40000), +(9500362, 1372009, 1, 1, 0, 40000), +(8500002, 1072224, 1, 1, 0, 40000), +(9300214, 1072224, 1, 1, 0, 40000), +(9500180, 1072224, 1, 1, 0, 40000), +(9500181, 1072224, 1, 1, 0, 40000), +(9500331, 1072224, 1, 1, 0, 40000), +(9500362, 1072224, 1, 1, 0, 40000), +(8500002, 1051101, 1, 1, 0, 40000), +(9300214, 1051101, 1, 1, 0, 40000), +(9500180, 1051101, 1, 1, 0, 40000), +(9500181, 1051101, 1, 1, 0, 40000), +(9500331, 1051101, 1, 1, 0, 40000), +(9500362, 1051101, 1, 1, 0, 40000), +(8500002, 1050102, 1, 1, 0, 40000), +(9300214, 1050102, 1, 1, 0, 40000), +(9500180, 1050102, 1, 1, 0, 40000), +(9500181, 1050102, 1, 1, 0, 40000), +(9500331, 1050102, 1, 1, 0, 40000), +(9500362, 1050102, 1, 1, 0, 40000), +(8500002, 1051085, 1, 1, 0, 40000), +(9300214, 1051085, 1, 1, 0, 40000), +(9500180, 1051085, 1, 1, 0, 40000), +(9500181, 1051085, 1, 1, 0, 40000), +(9500331, 1051085, 1, 1, 0, 40000), +(9500362, 1051085, 1, 1, 0, 40000), +(8500002, 1072183, 1, 1, 0, 40000), +(9300214, 1072183, 1, 1, 0, 40000), +(9500180, 1072183, 1, 1, 0, 40000), +(9500181, 1072183, 1, 1, 0, 40000), +(9500331, 1072183, 1, 1, 0, 40000), +(9500362, 1072183, 1, 1, 0, 40000), +(8500002, 1002405, 1, 1, 0, 40000), +(9300214, 1002405, 1, 1, 0, 40000), +(9500180, 1002405, 1, 1, 0, 40000), +(9500181, 1002405, 1, 1, 0, 40000), +(9500331, 1002405, 1, 1, 0, 40000), +(9500362, 1002405, 1, 1, 0, 40000), +(8500002, 1050090, 1, 1, 0, 40000), +(9300214, 1050090, 1, 1, 0, 40000), +(9500180, 1050090, 1, 1, 0, 40000), +(9500181, 1050090, 1, 1, 0, 40000), +(9500331, 1050090, 1, 1, 0, 40000), +(9500362, 1050090, 1, 1, 0, 40000), +(8500002, 1462018, 1, 1, 0, 40000), +(9300214, 1462018, 1, 1, 0, 40000), +(9500180, 1462018, 1, 1, 0, 40000), +(9500181, 1462018, 1, 1, 0, 40000), +(9500331, 1462018, 1, 1, 0, 40000), +(9500362, 1462018, 1, 1, 0, 40000), +(8500002, 1082127, 1, 1, 0, 40000), +(9300214, 1082127, 1, 1, 0, 40000), +(9500180, 1082127, 1, 1, 0, 40000), +(9500181, 1082127, 1, 1, 0, 40000), +(9500331, 1082127, 1, 1, 0, 40000), +(9500362, 1082127, 1, 1, 0, 40000), +(8500002, 1050106, 1, 1, 0, 40000), +(9300214, 1050106, 1, 1, 0, 40000), +(9500180, 1050106, 1, 1, 0, 40000), +(9500181, 1050106, 1, 1, 0, 40000), +(9500331, 1050106, 1, 1, 0, 40000), +(9500362, 1050106, 1, 1, 0, 40000), +(8500002, 1051105, 1, 1, 0, 40000), +(9300214, 1051105, 1, 1, 0, 40000), +(9500180, 1051105, 1, 1, 0, 40000), +(9500181, 1051105, 1, 1, 0, 40000), +(9500331, 1051105, 1, 1, 0, 40000), +(9500362, 1051105, 1, 1, 0, 40000), +(8500002, 1072227, 1, 1, 0, 40000), +(9300214, 1072227, 1, 1, 0, 40000), +(9500180, 1072227, 1, 1, 0, 40000), +(9500181, 1072227, 1, 1, 0, 40000), +(9500331, 1072227, 1, 1, 0, 40000), +(9500362, 1072227, 1, 1, 0, 40000), +(8500002, 1040118, 1, 1, 0, 40000), +(9300214, 1040118, 1, 1, 0, 40000), +(9500180, 1040118, 1, 1, 0, 40000), +(9500181, 1040118, 1, 1, 0, 40000), +(9500331, 1040118, 1, 1, 0, 40000), +(9500362, 1040118, 1, 1, 0, 40000), +(8500002, 1072173, 1, 1, 0, 40000), +(9300214, 1072173, 1, 1, 0, 40000), +(9500180, 1072173, 1, 1, 0, 40000), +(9500181, 1072173, 1, 1, 0, 40000), +(9500331, 1072173, 1, 1, 0, 40000), +(9500362, 1072173, 1, 1, 0, 40000), +(8500002, 1040117, 1, 1, 0, 40000), +(9300214, 1040117, 1, 1, 0, 40000), +(9500180, 1040117, 1, 1, 0, 40000), +(9500181, 1040117, 1, 1, 0, 40000), +(9500331, 1040117, 1, 1, 0, 40000), +(9500362, 1040117, 1, 1, 0, 40000), +(8500002, 1060106, 1, 1, 0, 40000), +(9300214, 1060106, 1, 1, 0, 40000), +(9500180, 1060106, 1, 1, 0, 40000), +(9500181, 1060106, 1, 1, 0, 40000), +(9500331, 1060106, 1, 1, 0, 40000), +(9500362, 1060106, 1, 1, 0, 40000), +(8500002, 1060107, 1, 1, 0, 40000), +(9300214, 1060107, 1, 1, 0, 40000), +(9500180, 1060107, 1, 1, 0, 40000), +(9500181, 1060107, 1, 1, 0, 40000), +(9500331, 1060107, 1, 1, 0, 40000), +(9500362, 1060107, 1, 1, 0, 40000), +(8500002, 1332027, 1, 1, 0, 40000), +(9300214, 1332027, 1, 1, 0, 40000), +(9500180, 1332027, 1, 1, 0, 40000), +(9500181, 1332027, 1, 1, 0, 40000), +(9500331, 1332027, 1, 1, 0, 40000), +(9500362, 1332027, 1, 1, 0, 40000), +(8500002, 1332026, 1, 1, 0, 40000), +(9300214, 1332026, 1, 1, 0, 40000), +(9500180, 1332026, 1, 1, 0, 40000), +(9500181, 1332026, 1, 1, 0, 40000), +(9500331, 1332026, 1, 1, 0, 40000), +(9500362, 1332026, 1, 1, 0, 40000), +(8500002, 1072213, 1, 1, 0, 40000), +(9300214, 1072213, 1, 1, 0, 40000), +(9500180, 1072213, 1, 1, 0, 40000), +(9500181, 1072213, 1, 1, 0, 40000), +(9500331, 1072213, 1, 1, 0, 40000), +(9500362, 1072213, 1, 1, 0, 40000), +(8500002, 1002646, 1, 1, 0, 40000), +(9300214, 1002646, 1, 1, 0, 40000), +(9500180, 1002646, 1, 1, 0, 40000), +(9500181, 1002646, 1, 1, 0, 40000), +(9500331, 1002646, 1, 1, 0, 40000), +(9500362, 1002646, 1, 1, 0, 40000), +(8500002, 1052131, 1, 1, 0, 40000), +(9300214, 1052131, 1, 1, 0, 40000), +(9500180, 1052131, 1, 1, 0, 40000), +(9500181, 1052131, 1, 1, 0, 40000), +(9500331, 1052131, 1, 1, 0, 40000), +(9500362, 1052131, 1, 1, 0, 40000), +(8500002, 1082213, 1, 1, 0, 40000), +(9300214, 1082213, 1, 1, 0, 40000), +(9500180, 1082213, 1, 1, 0, 40000), +(9500181, 1082213, 1, 1, 0, 40000), +(9500331, 1082213, 1, 1, 0, 40000), +(9500362, 1082213, 1, 1, 0, 40000), +(8500002, 1482011, 1, 1, 0, 40000), +(9300214, 1482011, 1, 1, 0, 40000), +(9500180, 1482011, 1, 1, 0, 40000), +(9500181, 1482011, 1, 1, 0, 40000), +(9500331, 1482011, 1, 1, 0, 40000), +(9500362, 1482011, 1, 1, 0, 40000), +(8200011, 4000457, 1, 1, 0, 200000), +(8200011, 4000459, 1, 1, 0, 200000), +(8200011, 4130002, 1, 1, 0, 3000), +(8200011, 4130011, 1, 1, 0, 3000), +(8200011, 2000005, 1, 1, 0, 40000), +(8200011, 2000006, 1, 1, 0, 40000), +(8200011, 2022003, 1, 1, 0, 3000), +(8200011, 2041008, 1, 1, 0, 750), +(8200011, 2044201, 1, 1, 0, 750), +(8200011, 2044602, 1, 1, 0, 750), +(8200011, 2387012, 1, 1, 0, 20000), +(8200011, 2290046, 1, 1, 0, 1000), +(8200011, 2290137, 1, 1, 0, 1000), +(8200011, 4004002, 1, 1, 0, 3000), +(8200011, 4010003, 1, 1, 0, 7000), +(8200011, 4020002, 1, 1, 0, 7000), +(8200011, 4020009, 1, 1, 0, 7000), +(8200011, 1002379, 1, 1, 0, 700), +(8200011, 1322045, 1, 1, 0, 700), +(8200011, 1372010, 1, 1, 0, 700), +(8200011, 1072229, 1, 1, 0, 700), +(8200011, 1082138, 1, 1, 0, 700), +(8200011, 1052131, 1, 1, 0, 700), +(9400121, 2000006, 1, 4, 0, 40000), +(9400121, 2000011, 1, 4, 0, 40000), +(9400121, 2020016, 1, 4, 0, 3000), +(9400121, 2022024, 1, 4, 0, 3000), +(9400121, 2022026, 1, 4, 0, 3000), +(9400121, 2043709, 1, 4, 0, 10000), +(9400121, 2040721, 1, 4, 0, 10000), +(9400121, 2040912, 1, 4, 0, 10000), +(9400121, 2040514, 1, 4, 0, 10000), +(9400121, 4010006, 1, 1, 0, 7000), +(9400121, 1072239, 1, 1, 0, 40000), +(9400121, 1032023, 1, 1, 0, 40000), +(9400121, 1422013, 1, 1, 0, 40000), +(9400121, 1442020, 1, 1, 0, 40000), +(9400121, 1432011, 1, 1, 0, 40000), +(9400121, 1332022, 1, 1, 0, 40000), +(9400121, 1312015, 1, 1, 0, 40000), +(9400121, 1382010, 1, 1, 0, 40000), +(9400121, 1372009, 1, 1, 0, 40000), +(9400121, 1082085, 1, 1, 0, 40000), +(9400121, 1332022, 1, 1, 0, 40000), +(9400121, 1332027, 1, 1, 0, 40000), +(9400121, 1472033, 1, 1, 0, 40000), +(9400590, 1122059, 1, 1, 0, 40000), +(9400591, 1122059, 1, 1, 0, 40000), +(9400593, 1122059, 1, 1, 0, 40000), +(8200012, 4000458, 1, 1, 0, 200000), +(8200012, 4000459, 1, 1, 0, 200000), +(8200012, 4130012, 1, 1, 0, 3000), +(8200012, 4130003, 1, 1, 0, 3000), +(8200012, 2000005, 1, 1, 0, 40000), +(8200012, 2000006, 1, 1, 0, 40000), +(8200012, 2040501, 1, 1, 0, 750), +(8200012, 2043701, 1, 1, 0, 750), +(8200012, 2290092, 1, 1, 0, 1000), +(8200012, 2290139, 1, 1, 0, 1000), +(8200012, 2387013, 1, 1, 0, 20000), +(8200012, 4004002, 1, 1, 0, 3000), +(8200012, 4010000, 1, 1, 0, 7000), +(8200012, 4020000, 1, 1, 0, 7000), +(8200012, 4020009, 1, 1, 0, 7000), +(8200012, 1040122, 1, 1, 0, 700), +(8200012, 1060111, 1, 1, 0, 700), +(8200012, 1322045, 1, 1, 0, 700), +(8200012, 1002401, 1, 1, 0, 700), +(8200012, 1452021, 1, 1, 0, 700), +(8200012, 1072216, 1, 1, 0, 700), +(8200012, 1082213, 1, 1, 0, 700), +(8220005, 2000005, 1, 4, 0, 40000), +(8220005, 2000006, 1, 4, 0, 40000), +(8220005, 2020013, 1, 4, 0, 3000), +(8220005, 2040318, 1, 4, 0, 10000), +(8220005, 2040322, 1, 4, 0, 10000), +(8220005, 2040928, 1, 4, 0, 10000), +(8220005, 2040932, 1, 4, 0, 10000), +(8220005, 2049000, 1, 4, 0, 2500), +(8220005, 2290002, 1, 4, 0, 40000), +(8220005, 2290036, 1, 4, 0, 40000), +(8220005, 2290080, 1, 4, 0, 40000), +(8220005, 2290099, 1, 4, 0, 40000), +(8220005, 2290136, 1, 4, 0, 40000), +(8220005, 2290131, 1, 4, 0, 40000), +(8220005, 4006000, 1, 1, 0, 7000), +(8220005, 4006001, 1, 1, 0, 7000), +(8220005, 2388041, 1, 4, 0, 20000), +(8220005, 4020009, 1, 1, 0, 7000), +(8220005, 1072222, 1, 1, 0, 40000), +(8220005, 1402035, 1, 1, 0, 40000), +(8220005, 1051104, 1, 1, 0, 40000), +(8220005, 1082154, 1, 1, 0, 40000), +(8220005, 1050108, 1, 1, 0, 40000), +(8220005, 1452021, 1, 1, 0, 40000), +(8220005, 1002382, 1, 1, 0, 40000), +(8220005, 1482012, 1, 1, 0, 40000), +(8800002, 4001083, 1, 1, 0, 7000), +(8800002, 4032133, 1, 1, 0, 10000), +(8800002, 2000005, 1, 4, 0, 40000), +(8800002, 2020015, 1, 4, 0, 3000), +(8800002, 2000006, 1, 4, 0, 40000), +(8800002, 4006000, 1, 1, 0, 7000), +(8800002, 4006001, 1, 1, 0, 7000), +(8800002, 2049101, 1, 4, 0, 2500), +(8800002, 2280009, 1, 4, 0, 20000), +(8800002, 2280010, 1, 4, 0, 20000), +(8800002, 2280008, 1, 4, 0, 20000), +(8800002, 2280013, 1, 4, 0, 20000), +(8800002, 2280015, 1, 4, 0, 20000), +(8800002, 2280016, 1, 4, 0, 20000), +(8800002, 2280014, 1, 4, 0, 20000), +(8800002, 2290084, 1, 4, 0, 40000), +(8800002, 2290016, 1, 4, 0, 40000), +(8800002, 2290022, 1, 4, 0, 40000), +(8800002, 2290024, 1, 4, 0, 40000), +(8800002, 2290040, 1, 4, 0, 40000), +(8800002, 2290046, 1, 4, 0, 40000), +(8800002, 2290048, 1, 4, 0, 40000), +(8800002, 2290058, 1, 4, 0, 40000), +(8800002, 2290064, 1, 4, 0, 40000), +(8800002, 2290074, 1, 4, 0, 40000), +(8800002, 2290028, 1, 4, 0, 40000), +(8800002, 2290056, 1, 4, 0, 40000), +(8800002, 2290064, 1, 4, 0, 40000), +(8800002, 2290006, 1, 4, 0, 40000), +(8800002, 2388023, 1, 4, 0, 20000), +(8800002, 1422013, 1, 1, 0, 40000), +(8800002, 1432011, 1, 1, 0, 40000), +(8800002, 1442020, 1, 1, 0, 40000), +(8800002, 1322029, 1, 1, 0, 40000), +(8800002, 1312015, 1, 1, 0, 40000), +(8800002, 1412010, 1, 1, 0, 40000), +(8800002, 1302023, 1, 1, 0, 40000), +(8800002, 1332022, 1, 1, 0, 40000), +(8800002, 1432030, 1, 1, 0, 40000), +(8800002, 1402035, 1, 1, 0, 40000), +(8800002, 1442002, 1, 1, 0, 40000), +(8800002, 1372009, 1, 1, 0, 40000), +(8800002, 1382008, 1, 1, 0, 40000), +(8800002, 1372010, 1, 1, 0, 40000), +(8800002, 1382035, 1, 1, 0, 40000), +(8800002, 1452017, 1, 1, 0, 40000), +(8800002, 1462018, 1, 1, 0, 40000), +(8800002, 1472031, 1, 1, 0, 40000), +(8800002, 1472033, 1, 1, 0, 40000), +(8800002, 1332026, 1, 1, 0, 40000), +(8800002, 1332027, 1, 1, 0, 40000), +(8800002, 1332022, 1, 1, 0, 40000), +(8800002, 1332052, 1, 1, 0, 40000), +(8800002, 1472053, 1, 1, 0, 40000), +(9420549, 2040804, 1, 4, 0, 10000), +(9420549, 1442044, 1, 1, 0, 40000), +(9420549, 1382035, 1, 1, 0, 40000), +(9420549, 1372010, 1, 1, 0, 40000), +(9420549, 1452020, 1, 1, 0, 40000), +(9420549, 1482012, 1, 1, 0, 40000), +(8220006, 2000005, 1, 4, 0, 40000), +(8220006, 2000006, 1, 4, 0, 40000), +(8220006, 2020013, 1, 4, 0, 3000), +(8220006, 2043701, 1, 4, 0, 10000), +(8220006, 2044301, 1, 4, 0, 10000), +(8220006, 2044501, 1, 4, 0, 10000), +(8220006, 2044701, 1, 4, 0, 10000), +(8220006, 2044803, 1, 4, 0, 10000), +(8220006, 2044902, 1, 4, 0, 10000), +(8220006, 2049101, 1, 4, 0, 2500), +(8220006, 2290012, 1, 4, 0, 40000), +(8220006, 2290042, 1, 4, 0, 40000), +(8220006, 2290060, 1, 4, 0, 40000), +(8220006, 2290090, 1, 4, 0, 40000), +(8220006, 2290119, 1, 4, 0, 40000), +(8220006, 2290138, 1, 4, 0, 40000), +(8220006, 2290135, 1, 4, 0, 40000), +(8220006, 4006000, 1, 1, 0, 7000), +(8220006, 4006001, 1, 1, 0, 7000), +(8220006, 2388042, 1, 4, 0, 20000), +(8220006, 4020009, 1, 1, 0, 7000), +(8220006, 1432030, 1, 1, 0, 40000), +(8220006, 1072226, 1, 1, 0, 40000), +(8220006, 1051107, 1, 1, 0, 40000), +(8220006, 1082160, 1, 1, 0, 40000), +(8220006, 1462017, 1, 1, 0, 40000), +(8220006, 1472053, 1, 1, 0, 40000), +(8220006, 1002646, 1, 1, 0, 40000), +(8220006, 1492012, 1, 1, 0, 40000), +(9400112, 2000004, 1, 4, 0, 40000), +(9400112, 2002011, 1, 4, 0, 10000), +(9400113, 2000004, 1, 4, 0, 40000), +(9400113, 2002008, 1, 4, 0, 10000), +(9400113, 2022027, 1, 4, 0, 3000), +(9400300, 4000141, 1, 1, 0, 200000), +(9400300, 2000004, 1, 4, 0, 40000), +(9400300, 2040817, 1, 4, 0, 10000), +(9400300, 2041034, 1, 4, 0, 10000), +(9400300, 2041044, 1, 4, 0, 10000), +(9400300, 1032026, 1, 1, 0, 40000), +(9400300, 1072238, 1, 1, 0, 40000), +(9400300, 1372011, 1, 1, 0, 40000), +(8820000, 2000004, 1, 4, 0, 40000), +(8820001, 2000004, 1, 4, 0, 40000), +(8820010, 2000004, 1, 1, 0, 40000), +(8820011, 2000004, 1, 1, 0, 40000), +(8820012, 2000004, 1, 1, 0, 40000), +(8820013, 2000004, 1, 1, 0, 40000), +(8820014, 2000004, 1, 1, 0, 40000), +(8820000, 2000005, 1, 4, 0, 40000), +(8820001, 2000005, 1, 4, 0, 40000), +(8820010, 2000005, 1, 1, 0, 40000), +(8820011, 2000005, 1, 1, 0, 40000), +(8820012, 2000005, 1, 1, 0, 40000), +(8820013, 2000005, 1, 1, 0, 40000), +(8820014, 2000005, 1, 1, 0, 40000), +(8820000, 2020015, 1, 4, 0, 3000), +(8820001, 2020015, 1, 4, 0, 3000), +(8820010, 2020015, 1, 1, 0, 3000), +(8820011, 2020015, 1, 1, 0, 3000), +(8820012, 2020015, 1, 1, 0, 3000), +(8820013, 2020015, 1, 1, 0, 3000), +(8820014, 2020015, 1, 1, 0, 3000), +(8820000, 2290010, 1, 4, 0, 40000), +(8820001, 2290010, 1, 4, 0, 40000), +(8820010, 2290010, 1, 1, 0, 1000), +(8820011, 2290010, 1, 1, 0, 1000), +(8820012, 2290010, 1, 1, 0, 1000), +(8820013, 2290010, 1, 1, 0, 1000), +(8820014, 2290010, 1, 1, 0, 1000), +(8820000, 2290022, 1, 4, 0, 40000), +(8820001, 2290022, 1, 4, 0, 40000), +(8820010, 2290022, 1, 1, 0, 1000), +(8820011, 2290022, 1, 1, 0, 1000), +(8820012, 2290022, 1, 1, 0, 1000), +(8820013, 2290022, 1, 1, 0, 1000), +(8820014, 2290022, 1, 1, 0, 1000), +(8820000, 2290040, 1, 4, 0, 40000), +(8820001, 2290040, 1, 4, 0, 40000), +(8820010, 2290040, 1, 1, 0, 1000), +(8820011, 2290040, 1, 1, 0, 1000), +(8820012, 2290040, 1, 1, 0, 1000), +(8820013, 2290040, 1, 1, 0, 1000), +(8820014, 2290040, 1, 1, 0, 1000), +(8820000, 2290046, 1, 4, 0, 40000), +(8820001, 2290046, 1, 4, 0, 40000), +(8820010, 2290046, 1, 1, 0, 1000), +(8820011, 2290046, 1, 1, 0, 1000), +(8820012, 2290046, 1, 1, 0, 1000), +(8820013, 2290046, 1, 1, 0, 1000), +(8820014, 2290046, 1, 1, 0, 1000), +(8820000, 2290048, 1, 4, 0, 40000), +(8820001, 2290048, 1, 4, 0, 40000), +(8820010, 2290048, 1, 1, 0, 1000), +(8820011, 2290048, 1, 1, 0, 1000), +(8820012, 2290048, 1, 1, 0, 1000), +(8820013, 2290048, 1, 1, 0, 1000), +(8820014, 2290048, 1, 1, 0, 1000), +(8820000, 2290052, 1, 4, 0, 40000), +(8820001, 2290052, 1, 4, 0, 40000), +(8820010, 2290052, 1, 1, 0, 1000), +(8820011, 2290052, 1, 1, 0, 1000), +(8820012, 2290052, 1, 1, 0, 1000), +(8820013, 2290052, 1, 1, 0, 1000), +(8820014, 2290052, 1, 1, 0, 1000), +(8820000, 2290084, 1, 4, 0, 40000), +(8820001, 2290084, 1, 4, 0, 40000), +(8820010, 2290084, 1, 1, 0, 1000), +(8820011, 2290084, 1, 1, 0, 1000), +(8820012, 2290084, 1, 1, 0, 1000), +(8820013, 2290084, 1, 1, 0, 1000), +(8820014, 2290084, 1, 1, 0, 1000), +(8820000, 2290090, 1, 4, 0, 40000), +(8820001, 2290090, 1, 4, 0, 40000), +(8820010, 2290090, 1, 1, 0, 1000), +(8820011, 2290090, 1, 1, 0, 1000), +(8820012, 2290090, 1, 1, 0, 1000), +(8820013, 2290090, 1, 1, 0, 1000), +(8820014, 2290090, 1, 1, 0, 1000), +(8820000, 2290119, 1, 4, 0, 40000), +(8820001, 2290119, 1, 4, 0, 40000), +(8820010, 2290119, 1, 1, 0, 1000), +(8820011, 2290119, 1, 1, 0, 1000), +(8820012, 2290119, 1, 1, 0, 1000), +(8820013, 2290119, 1, 1, 0, 1000), +(8820014, 2290119, 1, 1, 0, 1000), +(8820000, 2290106, 1, 4, 0, 40000), +(8820001, 2290106, 1, 4, 0, 40000), +(8820010, 2290106, 1, 1, 0, 1000), +(8820011, 2290106, 1, 1, 0, 1000), +(8820012, 2290106, 1, 1, 0, 1000), +(8820013, 2290106, 1, 1, 0, 1000), +(8820014, 2290106, 1, 1, 0, 1000), +(8820000, 4021010, 1, 1, 0, 7000), +(8820001, 4021010, 1, 1, 0, 7000), +(8820010, 4021010, 1, 1, 0, 7000), +(8820011, 4021010, 1, 1, 0, 7000), +(8820012, 4021010, 1, 1, 0, 7000), +(8820013, 4021010, 1, 1, 0, 7000), +(8820014, 4021010, 1, 1, 0, 7000), +(8820000, 1122011, 1, 1, 0, 40000), +(8820001, 1122011, 1, 1, 0, 40000), +(8820010, 1122011, 1, 1, 0, 700), +(8820011, 1122011, 1, 1, 0, 700), +(8820012, 1122011, 1, 1, 0, 700), +(8820013, 1122011, 1, 1, 0, 700), +(8820014, 1122011, 1, 1, 0, 700), +(8820000, 1032031, 1, 1, 0, 40000), +(8820001, 1032031, 1, 1, 0, 40000), +(8820010, 1032031, 1, 1, 0, 700), +(8820011, 1032031, 1, 1, 0, 700), +(8820012, 1032031, 1, 1, 0, 700), +(8820013, 1032031, 1, 1, 0, 700), +(8820014, 1032031, 1, 1, 0, 700), +(8820000, 1122012, 1, 1, 0, 40000), +(8820001, 1122012, 1, 1, 0, 40000), +(8820010, 1122012, 1, 1, 0, 700), +(8820011, 1122012, 1, 1, 0, 700), +(8820012, 1122012, 1, 1, 0, 700), +(8820013, 1122012, 1, 1, 0, 700), +(8820014, 1122012, 1, 1, 0, 700), +(8820000, 1102172, 1, 1, 0, 40000), +(8820001, 1102172, 1, 1, 0, 40000), +(8820010, 1102172, 1, 1, 0, 700), +(8820011, 1102172, 1, 1, 0, 700), +(8820012, 1102172, 1, 1, 0, 700), +(8820013, 1102172, 1, 1, 0, 700), +(8820014, 1102172, 1, 1, 0, 700), +(8820000, 1432049, 1, 1, 0, 40000), +(8820001, 1432049, 1, 1, 0, 40000), +(8820010, 1432049, 1, 1, 0, 700), +(8820011, 1432049, 1, 1, 0, 700), +(8820012, 1432049, 1, 1, 0, 700), +(8820013, 1432049, 1, 1, 0, 700), +(8820014, 1432049, 1, 1, 0, 700), +(8820000, 1322061, 1, 1, 0, 40000), +(8820001, 1322061, 1, 1, 0, 40000), +(8820010, 1322061, 1, 1, 0, 700), +(8820011, 1322061, 1, 1, 0, 700), +(8820012, 1322061, 1, 1, 0, 700), +(8820013, 1322061, 1, 1, 0, 700), +(8820014, 1322061, 1, 1, 0, 700), +(8820000, 1312038, 1, 1, 0, 40000), +(8820001, 1312038, 1, 1, 0, 40000), +(8820010, 1312038, 1, 1, 0, 700), +(8820011, 1312038, 1, 1, 0, 700), +(8820012, 1312038, 1, 1, 0, 700), +(8820013, 1312038, 1, 1, 0, 700), +(8820014, 1312038, 1, 1, 0, 700), +(8820000, 1422038, 1, 1, 0, 40000), +(8820001, 1422038, 1, 1, 0, 40000), +(8820010, 1422038, 1, 1, 0, 700), +(8820011, 1422038, 1, 1, 0, 700), +(8820012, 1422038, 1, 1, 0, 700), +(8820013, 1422038, 1, 1, 0, 700), +(8820014, 1422038, 1, 1, 0, 700), +(8820000, 1082239, 1, 1, 0, 40000), +(8820001, 1082239, 1, 1, 0, 40000), +(8820010, 1082239, 1, 1, 0, 700), +(8820011, 1082239, 1, 1, 0, 700), +(8820012, 1082239, 1, 1, 0, 700), +(8820013, 1082239, 1, 1, 0, 700), +(8820014, 1082239, 1, 1, 0, 700), +(8820000, 1442067, 1, 1, 0, 40000), +(8820001, 1442067, 1, 1, 0, 40000), +(8820010, 1442067, 1, 1, 0, 700), +(8820011, 1442067, 1, 1, 0, 700), +(8820012, 1442067, 1, 1, 0, 700), +(8820013, 1442067, 1, 1, 0, 700), +(8820014, 1442067, 1, 1, 0, 700), +(8820000, 1302086, 1, 1, 0, 40000), +(8820001, 1302086, 1, 1, 0, 40000), +(8820010, 1302086, 1, 1, 0, 700), +(8820011, 1302086, 1, 1, 0, 700), +(8820012, 1302086, 1, 1, 0, 700), +(8820013, 1302086, 1, 1, 0, 700), +(8820014, 1302086, 1, 1, 0, 700), +(8820000, 1002790, 1, 1, 0, 40000), +(8820001, 1002790, 1, 1, 0, 40000), +(8820010, 1002790, 1, 1, 0, 700), +(8820011, 1002790, 1, 1, 0, 700), +(8820012, 1002790, 1, 1, 0, 700), +(8820013, 1002790, 1, 1, 0, 700), +(8820014, 1002790, 1, 1, 0, 700), +(8820000, 1072361, 1, 1, 0, 40000), +(8820001, 1072361, 1, 1, 0, 40000), +(8820010, 1072361, 1, 1, 0, 700), +(8820011, 1072361, 1, 1, 0, 700), +(8820012, 1072361, 1, 1, 0, 700), +(8820013, 1072361, 1, 1, 0, 700), +(8820014, 1072361, 1, 1, 0, 700), +(8820000, 1402047, 1, 1, 0, 40000), +(8820001, 1402047, 1, 1, 0, 40000), +(8820010, 1402047, 1, 1, 0, 700), +(8820011, 1402047, 1, 1, 0, 700), +(8820012, 1402047, 1, 1, 0, 700), +(8820013, 1402047, 1, 1, 0, 700), +(8820014, 1402047, 1, 1, 0, 700), +(8820000, 1412034, 1, 1, 0, 40000), +(8820001, 1412034, 1, 1, 0, 40000), +(8820010, 1412034, 1, 1, 0, 700), +(8820011, 1412034, 1, 1, 0, 700), +(8820012, 1412034, 1, 1, 0, 700), +(8820013, 1412034, 1, 1, 0, 700), +(8820014, 1412034, 1, 1, 0, 700), +(8820000, 1052160, 1, 1, 0, 40000), +(8820001, 1052160, 1, 1, 0, 40000), +(8820010, 1052160, 1, 1, 0, 700), +(8820011, 1052160, 1, 1, 0, 700), +(8820012, 1052160, 1, 1, 0, 700), +(8820013, 1052160, 1, 1, 0, 700), +(8820014, 1052160, 1, 1, 0, 700), +(8820000, 1432047, 1, 1, 0, 40000), +(8820001, 1432047, 1, 1, 0, 40000), +(8820010, 1432047, 1, 1, 0, 700), +(8820011, 1432047, 1, 1, 0, 700), +(8820012, 1432047, 1, 1, 0, 700), +(8820013, 1432047, 1, 1, 0, 700), +(8820014, 1432047, 1, 1, 0, 700), +(8820000, 1322060, 1, 1, 0, 40000), +(8820001, 1322060, 1, 1, 0, 40000), +(8820010, 1322060, 1, 1, 0, 700), +(8820011, 1322060, 1, 1, 0, 700), +(8820012, 1322060, 1, 1, 0, 700), +(8820013, 1322060, 1, 1, 0, 700), +(8820014, 1322060, 1, 1, 0, 700), +(8820000, 1312037, 1, 1, 0, 40000), +(8820001, 1312037, 1, 1, 0, 40000), +(8820010, 1312037, 1, 1, 0, 700), +(8820011, 1312037, 1, 1, 0, 700), +(8820012, 1312037, 1, 1, 0, 700), +(8820013, 1312037, 1, 1, 0, 700), +(8820014, 1312037, 1, 1, 0, 700), +(8820000, 1422037, 1, 1, 0, 40000), +(8820001, 1422037, 1, 1, 0, 40000), +(8820010, 1422037, 1, 1, 0, 700), +(8820011, 1422037, 1, 1, 0, 700), +(8820012, 1422037, 1, 1, 0, 700), +(8820013, 1422037, 1, 1, 0, 700), +(8820014, 1422037, 1, 1, 0, 700), +(8820000, 1082234, 1, 1, 0, 40000), +(8820001, 1082234, 1, 1, 0, 40000), +(8820010, 1082234, 1, 1, 0, 700), +(8820011, 1082234, 1, 1, 0, 700), +(8820012, 1082234, 1, 1, 0, 700), +(8820013, 1082234, 1, 1, 0, 700), +(8820014, 1082234, 1, 1, 0, 700), +(8820000, 1442063, 1, 1, 0, 40000), +(8820001, 1442063, 1, 1, 0, 40000), +(8820010, 1442063, 1, 1, 0, 700), +(8820011, 1442063, 1, 1, 0, 700), +(8820012, 1442063, 1, 1, 0, 700), +(8820013, 1442063, 1, 1, 0, 700), +(8820014, 1442063, 1, 1, 0, 700), +(8820000, 1302081, 1, 1, 0, 40000), +(8820001, 1302081, 1, 1, 0, 40000), +(8820010, 1302081, 1, 1, 0, 700), +(8820011, 1302081, 1, 1, 0, 700), +(8820012, 1302081, 1, 1, 0, 700), +(8820013, 1302081, 1, 1, 0, 700), +(8820014, 1302081, 1, 1, 0, 700), +(8820000, 1002776, 1, 1, 0, 40000), +(8820001, 1002776, 1, 1, 0, 40000), +(8820010, 1002776, 1, 1, 0, 700), +(8820011, 1002776, 1, 1, 0, 700), +(8820012, 1002776, 1, 1, 0, 700), +(8820013, 1002776, 1, 1, 0, 700), +(8820014, 1002776, 1, 1, 0, 700), +(8820000, 1072355, 1, 1, 0, 40000), +(8820001, 1072355, 1, 1, 0, 40000), +(8820010, 1072355, 1, 1, 0, 700), +(8820011, 1072355, 1, 1, 0, 700), +(8820012, 1072355, 1, 1, 0, 700), +(8820013, 1072355, 1, 1, 0, 700), +(8820014, 1072355, 1, 1, 0, 700), +(8820000, 1092058, 1, 1, 0, 40000), +(8820001, 1092058, 1, 1, 0, 40000), +(8820010, 1092058, 1, 1, 0, 700), +(8820011, 1092058, 1, 1, 0, 700), +(8820012, 1092058, 1, 1, 0, 700), +(8820013, 1092058, 1, 1, 0, 700), +(8820014, 1092058, 1, 1, 0, 700), +(8820000, 1402046, 1, 1, 0, 40000), +(8820001, 1402046, 1, 1, 0, 40000), +(8820010, 1402046, 1, 1, 0, 700), +(8820011, 1402046, 1, 1, 0, 700), +(8820012, 1402046, 1, 1, 0, 700), +(8820013, 1402046, 1, 1, 0, 700), +(8820014, 1402046, 1, 1, 0, 700), +(8820000, 1412033, 1, 1, 0, 40000), +(8820001, 1412033, 1, 1, 0, 40000), +(8820010, 1412033, 1, 1, 0, 700), +(8820011, 1412033, 1, 1, 0, 700), +(8820012, 1412033, 1, 1, 0, 700), +(8820013, 1412033, 1, 1, 0, 700), +(8820014, 1412033, 1, 1, 0, 700), +(8820000, 1052155, 1, 1, 0, 40000), +(8820001, 1052155, 1, 1, 0, 40000), +(8820010, 1052155, 1, 1, 0, 700), +(8820011, 1052155, 1, 1, 0, 700), +(8820012, 1052155, 1, 1, 0, 700), +(8820013, 1052155, 1, 1, 0, 700), +(8820014, 1052155, 1, 1, 0, 700), +(8820000, 1382059, 1, 1, 0, 40000), +(8820001, 1382059, 1, 1, 0, 40000), +(8820010, 1382059, 1, 1, 0, 700), +(8820011, 1382059, 1, 1, 0, 700), +(8820012, 1382059, 1, 1, 0, 700), +(8820013, 1382059, 1, 1, 0, 700), +(8820014, 1382059, 1, 1, 0, 700), +(8820000, 1072362, 1, 1, 0, 40000), +(8820001, 1072362, 1, 1, 0, 40000), +(8820010, 1072362, 1, 1, 0, 700), +(8820011, 1072362, 1, 1, 0, 700), +(8820012, 1072362, 1, 1, 0, 700), +(8820013, 1072362, 1, 1, 0, 700), +(8820014, 1072362, 1, 1, 0, 700), +(8820000, 1002791, 1, 1, 0, 40000), +(8820001, 1002791, 1, 1, 0, 40000), +(8820010, 1002791, 1, 1, 0, 700), +(8820011, 1002791, 1, 1, 0, 700), +(8820012, 1002791, 1, 1, 0, 700), +(8820013, 1002791, 1, 1, 0, 700), +(8820014, 1002791, 1, 1, 0, 700), +(8820000, 1372045, 1, 1, 0, 40000), +(8820001, 1372045, 1, 1, 0, 40000), +(8820010, 1372045, 1, 1, 0, 700), +(8820011, 1372045, 1, 1, 0, 700), +(8820012, 1372045, 1, 1, 0, 700), +(8820013, 1372045, 1, 1, 0, 700), +(8820014, 1372045, 1, 1, 0, 700), +(8820000, 1082240, 1, 1, 0, 40000), +(8820001, 1082240, 1, 1, 0, 40000), +(8820010, 1082240, 1, 1, 0, 700), +(8820011, 1082240, 1, 1, 0, 700), +(8820012, 1082240, 1, 1, 0, 700), +(8820013, 1082240, 1, 1, 0, 700), +(8820014, 1082240, 1, 1, 0, 700), +(8820000, 1052161, 1, 1, 0, 40000), +(8820001, 1052161, 1, 1, 0, 40000), +(8820010, 1052161, 1, 1, 0, 700), +(8820011, 1052161, 1, 1, 0, 700), +(8820012, 1052161, 1, 1, 0, 700), +(8820013, 1052161, 1, 1, 0, 700), +(8820014, 1052161, 1, 1, 0, 700), +(8820000, 1382057, 1, 1, 0, 40000), +(8820001, 1382057, 1, 1, 0, 40000), +(8820010, 1382057, 1, 1, 0, 700), +(8820011, 1382057, 1, 1, 0, 700), +(8820012, 1382057, 1, 1, 0, 700), +(8820013, 1382057, 1, 1, 0, 700), +(8820014, 1382057, 1, 1, 0, 700), +(8820000, 1072356, 1, 1, 0, 40000), +(8820001, 1072356, 1, 1, 0, 40000), +(8820010, 1072356, 1, 1, 0, 700), +(8820011, 1072356, 1, 1, 0, 700), +(8820012, 1072356, 1, 1, 0, 700), +(8820013, 1072356, 1, 1, 0, 700), +(8820014, 1072356, 1, 1, 0, 700), +(8820000, 1002777, 1, 1, 0, 40000), +(8820001, 1002777, 1, 1, 0, 40000), +(8820010, 1002777, 1, 1, 0, 700), +(8820011, 1002777, 1, 1, 0, 700), +(8820012, 1002777, 1, 1, 0, 700), +(8820013, 1002777, 1, 1, 0, 700), +(8820014, 1002777, 1, 1, 0, 700), +(8820000, 1372044, 1, 1, 0, 40000), +(8820001, 1372044, 1, 1, 0, 40000), +(8820010, 1372044, 1, 1, 0, 700), +(8820011, 1372044, 1, 1, 0, 700), +(8820012, 1372044, 1, 1, 0, 700), +(8820013, 1372044, 1, 1, 0, 700), +(8820014, 1372044, 1, 1, 0, 700), +(8820000, 1082235, 1, 1, 0, 40000), +(8820001, 1082235, 1, 1, 0, 40000), +(8820010, 1082235, 1, 1, 0, 700), +(8820011, 1082235, 1, 1, 0, 700), +(8820012, 1082235, 1, 1, 0, 700), +(8820013, 1082235, 1, 1, 0, 700), +(8820014, 1082235, 1, 1, 0, 700), +(8820000, 1052156, 1, 1, 0, 40000), +(8820001, 1052156, 1, 1, 0, 40000), +(8820010, 1052156, 1, 1, 0, 700), +(8820011, 1052156, 1, 1, 0, 700), +(8820012, 1052156, 1, 1, 0, 700), +(8820013, 1052156, 1, 1, 0, 700), +(8820014, 1052156, 1, 1, 0, 700), +(8820000, 1092057, 1, 1, 0, 40000), +(8820001, 1092057, 1, 1, 0, 40000), +(8820010, 1092057, 1, 1, 0, 700), +(8820011, 1092057, 1, 1, 0, 700), +(8820012, 1092057, 1, 1, 0, 700), +(8820013, 1092057, 1, 1, 0, 700), +(8820014, 1092057, 1, 1, 0, 700), +(8820000, 1462051, 1, 1, 0, 40000), +(8820001, 1462051, 1, 1, 0, 40000), +(8820010, 1462051, 1, 1, 0, 700), +(8820011, 1462051, 1, 1, 0, 700), +(8820012, 1462051, 1, 1, 0, 700), +(8820013, 1462051, 1, 1, 0, 700), +(8820014, 1462051, 1, 1, 0, 700), +(8820000, 1452059, 1, 1, 0, 40000), +(8820001, 1452059, 1, 1, 0, 40000), +(8820010, 1452059, 1, 1, 0, 700), +(8820011, 1452059, 1, 1, 0, 700), +(8820012, 1452059, 1, 1, 0, 700), +(8820013, 1452059, 1, 1, 0, 700), +(8820014, 1452059, 1, 1, 0, 700), +(8820000, 1052162, 1, 1, 0, 40000), +(8820001, 1052162, 1, 1, 0, 40000), +(8820010, 1052162, 1, 1, 0, 700), +(8820011, 1052162, 1, 1, 0, 700), +(8820012, 1052162, 1, 1, 0, 700), +(8820013, 1052162, 1, 1, 0, 700), +(8820014, 1052162, 1, 1, 0, 700), +(8820000, 1082241, 1, 1, 0, 40000), +(8820001, 1082241, 1, 1, 0, 40000), +(8820010, 1082241, 1, 1, 0, 700), +(8820011, 1082241, 1, 1, 0, 700), +(8820012, 1082241, 1, 1, 0, 700), +(8820013, 1082241, 1, 1, 0, 700), +(8820014, 1082241, 1, 1, 0, 700), +(8820000, 1002792, 1, 1, 0, 40000), +(8820001, 1002792, 1, 1, 0, 40000), +(8820010, 1002792, 1, 1, 0, 700), +(8820011, 1002792, 1, 1, 0, 700), +(8820012, 1002792, 1, 1, 0, 700), +(8820013, 1002792, 1, 1, 0, 700), +(8820014, 1002792, 1, 1, 0, 700), +(8820000, 1072363, 1, 1, 0, 40000), +(8820001, 1072363, 1, 1, 0, 40000), +(8820010, 1072363, 1, 1, 0, 700), +(8820011, 1072363, 1, 1, 0, 700), +(8820012, 1072363, 1, 1, 0, 700), +(8820013, 1072363, 1, 1, 0, 700), +(8820014, 1072363, 1, 1, 0, 700), +(8820000, 1462050, 1, 1, 0, 40000), +(8820001, 1462050, 1, 1, 0, 40000), +(8820010, 1462050, 1, 1, 0, 700), +(8820011, 1462050, 1, 1, 0, 700), +(8820012, 1462050, 1, 1, 0, 700), +(8820013, 1462050, 1, 1, 0, 700), +(8820014, 1462050, 1, 1, 0, 700), +(8820000, 1452057, 1, 1, 0, 40000), +(8820001, 1452057, 1, 1, 0, 40000), +(8820010, 1452057, 1, 1, 0, 700), +(8820011, 1452057, 1, 1, 0, 700), +(8820012, 1452057, 1, 1, 0, 700), +(8820013, 1452057, 1, 1, 0, 700), +(8820014, 1452057, 1, 1, 0, 700), +(8820000, 1052157, 1, 1, 0, 40000), +(8820001, 1052157, 1, 1, 0, 40000), +(8820010, 1052157, 1, 1, 0, 700), +(8820011, 1052157, 1, 1, 0, 700), +(8820012, 1052157, 1, 1, 0, 700), +(8820013, 1052157, 1, 1, 0, 700), +(8820014, 1052157, 1, 1, 0, 700), +(8820000, 1082236, 1, 1, 0, 40000), +(8820001, 1082236, 1, 1, 0, 40000), +(8820010, 1082236, 1, 1, 0, 700), +(8820011, 1082236, 1, 1, 0, 700), +(8820012, 1082236, 1, 1, 0, 700), +(8820013, 1082236, 1, 1, 0, 700), +(8820014, 1082236, 1, 1, 0, 700), +(8820000, 1002778, 1, 1, 0, 40000), +(8820001, 1002778, 1, 1, 0, 40000), +(8820010, 1002778, 1, 1, 0, 700), +(8820011, 1002778, 1, 1, 0, 700), +(8820012, 1002778, 1, 1, 0, 700), +(8820013, 1002778, 1, 1, 0, 700), +(8820014, 1002778, 1, 1, 0, 700), +(8820000, 1072357, 1, 1, 0, 40000), +(8820001, 1072357, 1, 1, 0, 40000), +(8820010, 1072357, 1, 1, 0, 700), +(8820011, 1072357, 1, 1, 0, 700), +(8820012, 1072357, 1, 1, 0, 700), +(8820013, 1072357, 1, 1, 0, 700), +(8820014, 1072357, 1, 1, 0, 700), +(8820000, 1002793, 1, 1, 0, 40000), +(8820001, 1002793, 1, 1, 0, 40000), +(8820010, 1002793, 1, 1, 0, 700), +(8820011, 1002793, 1, 1, 0, 700), +(8820012, 1002793, 1, 1, 0, 700), +(8820013, 1002793, 1, 1, 0, 700), +(8820014, 1002793, 1, 1, 0, 700), +(8820000, 1332076, 1, 1, 0, 40000), +(8820001, 1332076, 1, 1, 0, 40000), +(8820010, 1332076, 1, 1, 0, 700), +(8820011, 1332076, 1, 1, 0, 700), +(8820012, 1332076, 1, 1, 0, 700), +(8820013, 1332076, 1, 1, 0, 700), +(8820014, 1332076, 1, 1, 0, 700), +(8820000, 1472071, 1, 1, 0, 40000), +(8820001, 1472071, 1, 1, 0, 40000), +(8820010, 1472071, 1, 1, 0, 700), +(8820011, 1472071, 1, 1, 0, 700), +(8820012, 1472071, 1, 1, 0, 700), +(8820013, 1472071, 1, 1, 0, 700), +(8820014, 1472071, 1, 1, 0, 700), +(8820000, 1082242, 1, 1, 0, 40000), +(8820001, 1082242, 1, 1, 0, 40000), +(8820010, 1082242, 1, 1, 0, 700), +(8820011, 1082242, 1, 1, 0, 700), +(8820012, 1082242, 1, 1, 0, 700), +(8820013, 1082242, 1, 1, 0, 700), +(8820014, 1082242, 1, 1, 0, 700), +(8820000, 1072364, 1, 1, 0, 40000), +(8820001, 1072364, 1, 1, 0, 40000), +(8820010, 1072364, 1, 1, 0, 700), +(8820011, 1072364, 1, 1, 0, 700), +(8820012, 1072364, 1, 1, 0, 700), +(8820013, 1072364, 1, 1, 0, 700), +(8820014, 1072364, 1, 1, 0, 700), +(8820000, 1332075, 1, 1, 0, 40000), +(8820001, 1332075, 1, 1, 0, 40000), +(8820010, 1332075, 1, 1, 0, 700), +(8820011, 1332075, 1, 1, 0, 700), +(8820012, 1332075, 1, 1, 0, 700), +(8820013, 1332075, 1, 1, 0, 700), +(8820014, 1332075, 1, 1, 0, 700), +(8820000, 1052163, 1, 1, 0, 40000), +(8820001, 1052163, 1, 1, 0, 40000), +(8820010, 1052163, 1, 1, 0, 700), +(8820011, 1052163, 1, 1, 0, 700), +(8820012, 1052163, 1, 1, 0, 700), +(8820013, 1052163, 1, 1, 0, 700), +(8820014, 1052163, 1, 1, 0, 700), +(8820000, 1002779, 1, 1, 0, 40000), +(8820001, 1002779, 1, 1, 0, 40000), +(8820010, 1002779, 1, 1, 0, 700), +(8820011, 1002779, 1, 1, 0, 700), +(8820012, 1002779, 1, 1, 0, 700), +(8820013, 1002779, 1, 1, 0, 700), +(8820014, 1002779, 1, 1, 0, 700), +(8820000, 1332074, 1, 1, 0, 40000), +(8820001, 1332074, 1, 1, 0, 40000), +(8820010, 1332074, 1, 1, 0, 700), +(8820011, 1332074, 1, 1, 0, 700), +(8820012, 1332074, 1, 1, 0, 700), +(8820013, 1332074, 1, 1, 0, 700), +(8820014, 1332074, 1, 1, 0, 700), +(8820000, 1472068, 1, 1, 0, 40000), +(8820001, 1472068, 1, 1, 0, 40000), +(8820010, 1472068, 1, 1, 0, 700), +(8820011, 1472068, 1, 1, 0, 700), +(8820012, 1472068, 1, 1, 0, 700), +(8820013, 1472068, 1, 1, 0, 700), +(8820014, 1472068, 1, 1, 0, 700), +(8820000, 1092059, 1, 1, 0, 40000), +(8820001, 1092059, 1, 1, 0, 40000), +(8820010, 1092059, 1, 1, 0, 700), +(8820011, 1092059, 1, 1, 0, 700), +(8820012, 1092059, 1, 1, 0, 700), +(8820013, 1092059, 1, 1, 0, 700), +(8820014, 1092059, 1, 1, 0, 700), +(8820000, 1082237, 1, 1, 0, 40000), +(8820001, 1082237, 1, 1, 0, 40000), +(8820010, 1082237, 1, 1, 0, 700), +(8820011, 1082237, 1, 1, 0, 700), +(8820012, 1082237, 1, 1, 0, 700), +(8820013, 1082237, 1, 1, 0, 700), +(8820014, 1082237, 1, 1, 0, 700), +(8820000, 1072358, 1, 1, 0, 40000), +(8820001, 1072358, 1, 1, 0, 40000), +(8820010, 1072358, 1, 1, 0, 700), +(8820011, 1072358, 1, 1, 0, 700), +(8820012, 1072358, 1, 1, 0, 700), +(8820013, 1072358, 1, 1, 0, 700), +(8820014, 1072358, 1, 1, 0, 700), +(8820000, 1332073, 1, 1, 0, 40000), +(8820001, 1332073, 1, 1, 0, 40000), +(8820010, 1332073, 1, 1, 0, 700), +(8820011, 1332073, 1, 1, 0, 700), +(8820012, 1332073, 1, 1, 0, 700), +(8820013, 1332073, 1, 1, 0, 700), +(8820014, 1332073, 1, 1, 0, 700), +(8820000, 1052158, 1, 1, 0, 40000), +(8820001, 1052158, 1, 1, 0, 40000), +(8820010, 1052158, 1, 1, 0, 700), +(8820011, 1052158, 1, 1, 0, 700), +(8820012, 1052158, 1, 1, 0, 700), +(8820013, 1052158, 1, 1, 0, 700), +(8820014, 1052158, 1, 1, 0, 700), +(8820000, 1492025, 1, 1, 0, 40000), +(8820001, 1492025, 1, 1, 0, 40000), +(8820010, 1492025, 1, 1, 0, 700), +(8820011, 1492025, 1, 1, 0, 700), +(8820012, 1492025, 1, 1, 0, 700), +(8820013, 1492025, 1, 1, 0, 700), +(8820014, 1492025, 1, 1, 0, 700), +(8820000, 1052164, 1, 1, 0, 40000), +(8820001, 1052164, 1, 1, 0, 40000), +(8820010, 1052164, 1, 1, 0, 700), +(8820011, 1052164, 1, 1, 0, 700), +(8820012, 1052164, 1, 1, 0, 700), +(8820013, 1052164, 1, 1, 0, 700), +(8820014, 1052164, 1, 1, 0, 700), +(8820000, 1082243, 1, 1, 0, 40000), +(8820001, 1082243, 1, 1, 0, 40000), +(8820010, 1082243, 1, 1, 0, 700), +(8820011, 1082243, 1, 1, 0, 700), +(8820012, 1082243, 1, 1, 0, 700), +(8820013, 1082243, 1, 1, 0, 700), +(8820014, 1082243, 1, 1, 0, 700), +(8820000, 1002794, 1, 1, 0, 40000), +(8820001, 1002794, 1, 1, 0, 40000), +(8820010, 1002794, 1, 1, 0, 700), +(8820011, 1002794, 1, 1, 0, 700), +(8820012, 1002794, 1, 1, 0, 700), +(8820013, 1002794, 1, 1, 0, 700), +(8820014, 1002794, 1, 1, 0, 700), +(8820000, 1482024, 1, 1, 0, 40000), +(8820001, 1482024, 1, 1, 0, 40000), +(8820010, 1482024, 1, 1, 0, 700), +(8820011, 1482024, 1, 1, 0, 700), +(8820012, 1482024, 1, 1, 0, 700), +(8820013, 1482024, 1, 1, 0, 700), +(8820014, 1482024, 1, 1, 0, 700), +(8820000, 1072365, 1, 1, 0, 40000), +(8820001, 1072365, 1, 1, 0, 40000), +(8820010, 1072365, 1, 1, 0, 700), +(8820011, 1072365, 1, 1, 0, 700), +(8820012, 1072365, 1, 1, 0, 700), +(8820013, 1072365, 1, 1, 0, 700), +(8820014, 1072365, 1, 1, 0, 700), +(8820000, 1492023, 1, 1, 0, 40000), +(8820001, 1492023, 1, 1, 0, 40000), +(8820010, 1492023, 1, 1, 0, 700), +(8820011, 1492023, 1, 1, 0, 700), +(8820012, 1492023, 1, 1, 0, 700), +(8820013, 1492023, 1, 1, 0, 700), +(8820014, 1492023, 1, 1, 0, 700), +(8820000, 1052159, 1, 1, 0, 40000), +(8820001, 1052159, 1, 1, 0, 40000), +(8820010, 1052159, 1, 1, 0, 700), +(8820011, 1052159, 1, 1, 0, 700), +(8820012, 1052159, 1, 1, 0, 700), +(8820013, 1052159, 1, 1, 0, 700), +(8820014, 1052159, 1, 1, 0, 700), +(8820000, 1082238, 1, 1, 0, 40000), +(8820001, 1082238, 1, 1, 0, 40000), +(8820010, 1082238, 1, 1, 0, 700), +(8820011, 1082238, 1, 1, 0, 700), +(8820012, 1082238, 1, 1, 0, 700), +(8820013, 1082238, 1, 1, 0, 700), +(8820014, 1082238, 1, 1, 0, 700), +(8820000, 1002780, 1, 1, 0, 40000), +(8820001, 1002780, 1, 1, 0, 40000), +(8820010, 1002780, 1, 1, 0, 700), +(8820011, 1002780, 1, 1, 0, 700), +(8820012, 1002780, 1, 1, 0, 700), +(8820013, 1002780, 1, 1, 0, 700), +(8820014, 1002780, 1, 1, 0, 700), +(8820000, 1482023, 1, 1, 0, 40000), +(8820001, 1482023, 1, 1, 0, 40000), +(8820010, 1482023, 1, 1, 0, 700), +(8820011, 1482023, 1, 1, 0, 700), +(8820012, 1482023, 1, 1, 0, 700), +(8820013, 1482023, 1, 1, 0, 700), +(8820014, 1482023, 1, 1, 0, 700), +(8820000, 1072359, 1, 1, 0, 40000), +(8820001, 1072359, 1, 1, 0, 40000), +(8820010, 1072359, 1, 1, 0, 700), +(8820011, 1072359, 1, 1, 0, 700), +(8820012, 1072359, 1, 1, 0, 700), +(8820013, 1072359, 1, 1, 0, 700), +(8820014, 1072359, 1, 1, 0, 700); + + #-------------------------------------------------------------------------------------------- + + INSERT IGNORE INTO temp_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(3230100, 4001004, 1, 1, 0, 5000), +(3000002, 4000068, 1, 1, 0, 40000), +(3000003, 4000068, 1, 1, 0, 40000), +(3000004, 4000068, 1, 1, 0, 40000), +(4230116, 2382042, 1, 1, 0, 10000), +(4230117, 2382055, 1, 1, 0, 10000), +(4230118, 2382067, 1, 1, 0, 10000), +(4240000, 2383011, 1, 1, 0, 10000), +(1210102, 4001354, 1, 1, 28209, 10000), +(2110200, 4001368, 1, 1, 28258, 10000), +(1110101, 4031773, 1, 1, 2145, 10000), +(1130100, 4031773, 1, 1, 2145, 10000), +(1140100, 4031773, 1, 1, 2145, 10000), +(130100, 4031773, 1, 1, 2145, 10000), +(2130100, 4031773, 1, 1, 2145, 10000), +(1140130, 4031773, 1, 1, 2145, 10000), +(4230114, 4031203, 1, 1, 0, 70000), +(4230115, 4031203, 1, 1, 0, 70000), +(3000001, 2381033, 1, 1, 0, 10000), +(3000002, 2381033, 1, 1, 0, 10000), +(3000003, 2381033, 1, 1, 0, 10000), +(3000004, 2381033, 1, 1, 0, 10000), +(2230101, 4032399, 1, 1, 2251, 30000), +(2230131, 4032399, 1, 1, 2251, 30000), +(9400578, 4032008, 1, 1, 0, 10000), +(9400578, 2001000, 1, 1, 0, 800), +(9400578, 1032032, 1, 1, 0, 1200), +(9400578, 1032013, 1, 1, 0, 1200), +(9400578, 1372009, 1, 1, 0, 1200); + + UPDATE IGNORE temp_data SET dropperid=9000002 WHERE dropperid=9000000; + + #update USE drops that were supposed to be ETC + INSERT IGNORE INTO temp_data (dropperid, itemid, minimum_quantity, maximum_quantity, questid, chance) + SELECT dropperid, 4001006, 1, 1, 0, 10000 + FROM temp_data + WHERE itemid = 2050099; #Flaming feather + + INSERT IGNORE INTO temp_data (dropperid, itemid, minimum_quantity, maximum_quantity, questid, chance) + SELECT dropperid, 4000176, 1, 1, 0, 600000 + FROM temp_data + WHERE itemid = 2011000; #Poisonous Mushroom + + CREATE TABLE IF NOT EXISTS `drop_data` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `dropperid` int(11) NOT NULL, + `itemid` int(11) NOT NULL DEFAULT '0', + `minimum_quantity` int(11) NOT NULL DEFAULT '1', + `maximum_quantity` int(11) NOT NULL DEFAULT '1', + `questid` int(11) NOT NULL DEFAULT '0', + `chance` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`dropperid`, `itemid`), + KEY `mobid` (`dropperid`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + #pass (sorted) data from one table to another + INSERT INTO drop_data (dropperid, itemid, minimum_quantity, maximum_quantity, questid, chance) + ( + SELECT dropperid, itemid, minimum_quantity, maximum_quantity, questid, chance + FROM temp_data + ); + DROP TABLE temp_data; + + UPDATE drop_data SET chance=10000 WHERE chance=0; + UPDATE drop_data SET chance=70000 WHERE itemid=4031203; + UPDATE drop_data SET chance=70000 WHERE itemid=4001356; + UPDATE drop_data SET chance=7000 WHERE itemid=4001006; + + #update card rates + UPDATE drop_data SET chance=10000 WHERE (itemid >= 2380000 AND itemid < 2388000); + UPDATE drop_data SET chance=25000 WHERE (itemid >= 2388000 AND itemid < 2390000); + + #update quest mob items + UPDATE drop_data SET questid=3232 WHERE itemid=4031098; + UPDATE drop_data SET questid=3452 WHERE itemid=4001125; + UPDATE drop_data SET questid=28248 WHERE itemid=4001360; + UPDATE drop_data SET questid=20707 WHERE itemid=4032130; + UPDATE drop_data SET questid=28170 WHERE itemid=4001345; + UPDATE drop_data SET questid=7301 WHERE itemid=4001077; + UPDATE drop_data SET questid=3250 WHERE itemid=4031992; + UPDATE drop_data SET questid=6191 WHERE itemid=4001107; + + UPDATE drop_data SET questid=77777 WHERE itemid=4001358; #id 77777 for ALL quest items with no v83 quest. + UPDATE drop_data SET questid=77777 WHERE itemid=4001359; + UPDATE drop_data SET questid=77777 WHERE itemid=4001342; + + #update quest reactor items + UPDATE reactordrops SET questid=3407 WHERE itemid=4031141; + UPDATE reactordrops SET questid=3407 WHERE itemid=4031142; + UPDATE reactordrops SET questid=3407 WHERE itemid=4031143; + UPDATE reactordrops SET questid=2067 WHERE itemid=4031150; + UPDATE reactordrops SET questid=3239 WHERE itemid=4031092; + UPDATE reactordrops SET questid=6002 WHERE itemid=4031508; + INSERT INTO `reactordrops` (`reactorid`, `itemid`, `chance`, `questid`) VALUES + (9102000, 4031157, 1, 2074), + (9102001, 4031158, 1, 2074), + (2502000, 4031794, 1, 3839), + (2502000, 4031794, 1, 3839), + (2612000, 4031695, 1, 3335); + + #global data already updated \ No newline at end of file diff --git a/sql/db_originaldrops.sql b/sql/db_originaldrops.sql new file mode 100644 index 0000000000..9e6d7db35d --- /dev/null +++ b/sql/db_originaldrops.sql @@ -0,0 +1,12582 @@ +#YOU MUST EXECUTE NEXT SQL: 'drops.sql' +#data collected from inside 'database.sql' + +CREATE TABLE IF NOT EXISTS `temp_data` ( + `id` bigint(20) NOT NULL, + `dropperid` int(11) NOT NULL, + `itemid` int(11) NOT NULL DEFAULT '0', + `minimum_quantity` int(11) NOT NULL DEFAULT '1', + `maximum_quantity` int(11) NOT NULL DEFAULT '1', + `questid` int(11) NOT NULL DEFAULT '0', + `chance` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`dropperid`, `itemid`), + KEY `mobid` (`dropperid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ; + +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(1, 9400121, 4000138, 1, 1, 0, 600000), +(2, 9400121, 4010006, 1, 1, 0, 45000), +(3, 9400121, 2000006, 1, 1, 0, 999999), +(4, 9400121, 2000011, 1, 1, 0, 100000), +(5, 9400121, 2020016, 1, 1, 0, 100000), +(6, 9400121, 2022024, 1, 1, 0, 100000), +(7, 9400121, 2022026, 1, 1, 0, 100000), +(8, 9400121, 2043705, 1, 1, 0, 1500), +(9, 9400121, 2040716, 1, 1, 0, 1500), +(10, 9400121, 2040908, 1, 1, 0, 1500), +(11, 9400121, 2040510, 1, 1, 0, 1500), +(12, 9400121, 1072239, 1, 1, 0, 4000), +(13, 9400121, 1422013, 1, 1, 0, 3500), +(14, 9400121, 1402016, 1, 1, 0, 3500), +(15, 9400121, 1442020, 1, 1, 0, 3500), +(16, 9400121, 1432011, 1, 1, 0, 2500), +(17, 9400121, 1332022, 1, 1, 0, 2500), +(18, 9400121, 1312015, 1, 1, 0, 3500), +(19, 9400121, 1382010, 1, 1, 0, 3500), +(20, 9400121, 1372009, 1, 1, 0, 3500), +(21, 9400121, 1082085, 1, 1, 0, 5000), +(22, 9400121, 1332022, 1, 1, 0, 2500), +(23, 9400121, 1472033, 1, 1, 0, 2500), +(24, 8810018, 4001094, 1, 1, 0, 999999), +(25, 8810018, 2290125, 1, 1, 0, 100000), +(26, 8800002, 1372049, 1, 1, 0, 999999), +(27, 9400013, 4000225, 1, 1, 0, 600000), +(28, 9400013, 2000006, 1, 1, 0, 20000), +(29, 9400013, 2000004, 1, 1, 0, 20000), +(30, 9400013, 2070013, 1, 1, 0, 1500), +(31, 9400013, 2002005, 1, 1, 0, 20000), +(32, 9400013, 2022018, 1, 1, 0, 20000), +(33, 9400013, 2040306, 1, 1, 0, 300), +(34, 9400013, 2043704, 1, 1, 0, 300), +(35, 9400013, 2044605, 1, 1, 0, 300), +(36, 9400013, 2041034, 1, 1, 0, 300), +(37, 9400013, 1032019, 1, 1, 0, 1000), +(38, 9400013, 1102013, 1, 1, 0, 1000), +(39, 9400013, 1322026, 1, 1, 0, 700), +(40, 9400013, 1092015, 1, 1, 0, 700), +(41, 9400013, 1382016, 1, 1, 0, 700), +(42, 9400013, 1002276, 1, 1, 0, 1500), +(43, 9400013, 1002403, 1, 1, 0, 1500), +(44, 9400013, 1472027, 1, 1, 0, 500), +(45, 9400113, 4000140, 1, 1, 0, 600000), +(46, 9400113, 2022027, 1, 1, 0, 200000), +(47, 9400113, 2022027, 1, 1, 0, 200000), +(48, 9400113, 2000004, 1, 1, 0, 999999), +(49, 9400113, 2000004, 1, 1, 0, 999999), +(50, 9400113, 2002008, 1, 1, 0, 200000), +(51, 9400113, 2002008, 1, 1, 0, 200000), +(52, 9400300, 4000141, 1, 1, 0, 600000), +(53, 9400300, 2000004, 1, 1, 0, 999999), +(54, 9400300, 2040813, 1, 1, 0, 3000), +(55, 9400300, 2041030, 1, 1, 0, 3000), +(56, 9400300, 2041040, 1, 1, 0, 3000), +(57, 9400300, 1072238, 1, 1, 0, 8000), +(58, 9400300, 1032026, 1, 1, 0, 10000), +(59, 9400300, 1372011, 1, 1, 0, 7000), +(60, 9400112, 4000139, 1, 1, 0, 600000), +(61, 9400112, 2002011, 1, 1, 0, 200000), +(62, 9400112, 2002011, 1, 1, 0, 200000), +(63, 9400112, 2002011, 1, 1, 0, 200000), +(64, 9400112, 2000004, 1, 1, 0, 999999), +(65, 9400112, 2000004, 1, 1, 0, 999999), +(66, 9400545, 4032024, 1, 1, 0, 50000), +(67, 9400545, 4032025, 1, 1, 0, 600000), +(68, 9400545, 4020006, 1, 1, 0, 9000), +(69, 9400545, 4020008, 1, 1, 0, 9000), +(70, 9400545, 4010001, 1, 1, 0, 9000), +(71, 9400545, 4004001, 1, 1, 0, 10000), +(72, 9400545, 2070006, 1, 1, 0, 200), +(73, 9400545, 2044404, 1, 1, 0, 300), +(74, 9400545, 2044702, 1, 1, 0, 300), +(75, 9400545, 2044305, 1, 1, 0, 300), +(76, 9400545, 1102029, 1, 1, 0, 1000), +(77, 9400545, 1032023, 1, 1, 0, 1000), +(78, 9400545, 1402004, 1, 1, 0, 700), +(79, 9400545, 1072210, 1, 1, 0, 800), +(80, 9400545, 1040104, 1, 1, 0, 800), +(81, 9400545, 1060092, 1, 1, 0, 800), +(82, 9400545, 1082129, 1, 1, 0, 1000), +(83, 9400545, 1442008, 1, 1, 0, 700), +(84, 9400545, 1072178, 1, 1, 0, 800), +(85, 9400545, 1050092, 1, 1, 0, 700), +(86, 9400545, 1002271, 1, 1, 0, 1500), +(87, 9400545, 1051053, 1, 1, 0, 700), +(88, 9400545, 1382008, 1, 1, 0, 700), +(89, 9400545, 1002275, 1, 1, 0, 1500), +(90, 9400545, 1051082, 1, 1, 0, 700), +(91, 9400545, 1050064, 1, 1, 0, 700), +(92, 9400545, 1472028, 1, 1, 0, 500), +(93, 9400545, 1072193, 1, 1, 0, 800), +(94, 9400545, 1072172, 1, 1, 0, 800), +(95, 9400545, 1002285, 1, 1, 0, 1500), +(96, 100100, 4000019, 1, 1, 0, 600000), +(97, 100100, 2000000, 1, 1, 0, 20000), +(98, 100100, 2040002, 1, 1, 0, 300), +(99, 100100, 2041001, 1, 1, 0, 300), +(100, 100100, 2060000, 1, 1, 0, 30000), +(101, 100100, 4010000, 1, 1, 0, 9000), +(102, 100100, 4020000, 1, 1, 0, 9000), +(103, 100100, 2061000, 1, 1, 0, 30000), +(104, 100100, 1002067, 1, 1, 0, 1500), +(105, 100100, 2010009, 1, 1, 0, 20000), +(106, 100101, 4000000, 1, 1, 0, 600000), +(107, 100101, 2041006, 1, 1, 0, 300), +(108, 100101, 2000000, 1, 1, 0, 20000), +(109, 100101, 4020001, 1, 1, 0, 9000), +(110, 100101, 2060000, 1, 1, 0, 30000), +(111, 100101, 4010001, 1, 1, 0, 9000), +(112, 100101, 2061000, 1, 1, 0, 30000), +(113, 100101, 1040013, 1, 1, 0, 800), +(114, 100101, 1041012, 1, 1, 0, 800), +(115, 100101, 1060004, 1, 1, 0, 800), +(116, 100101, 1040017, 1, 1, 0, 800), +(117, 100101, 1060013, 1, 1, 0, 800), +(118, 100101, 2010009, 1, 1, 0, 20000), +(119, 1110100, 4000012, 1, 1, 0, 600000), +(120, 1110100, 2000000, 1, 1, 0, 20000), +(121, 1110100, 2043102, 1, 1, 0, 300), +(122, 1110100, 2000003, 1, 1, 0, 20000), +(123, 1110100, 4020003, 1, 1, 0, 9000), +(124, 1110100, 1322000, 1, 1, 0, 700), +(125, 1110100, 2060000, 1, 1, 0, 30000), +(126, 1110100, 1041044, 1, 1, 0, 800), +(127, 1110100, 1061037, 1, 1, 0, 800), +(128, 1110100, 4010004, 1, 1, 0, 9000), +(129, 1110100, 1092008, 1, 1, 0, 700), +(130, 1110100, 1041017, 1, 1, 0, 800), +(131, 1110100, 1061012, 1, 1, 0, 800), +(132, 1110100, 1462002, 1, 1, 0, 500), +(133, 1110100, 2061000, 1, 1, 0, 30000), +(134, 1110100, 1041063, 1, 1, 0, 800), +(135, 1110100, 1061059, 1, 1, 0, 800), +(136, 1110100, 1452003, 1, 1, 0, 500), +(137, 1110100, 2048000, 1, 1, 0, 300), +(138, 1110100, 1002033, 1, 1, 0, 1500), +(139, 1110100, 1302007, 1, 1, 0, 700), +(140, 1110100, 4020002, 1, 1, 0, 9000), +(141, 1110100, 1032001, 1, 1, 0, 1000), +(142, 1110100, 1002010, 1, 1, 0, 1500), +(143, 1110100, 2000001, 1, 1, 0, 20000), +(144, 1110100, 1002143, 1, 1, 0, 1500), +(145, 1110100, 1432005, 1, 1, 0, 500), +(146, 1110100, 1412012, 1, 1, 0, 700), +(147, 1110100, 1072285, 1, 1, 0, 800), +(148, 1110100, 1482001, 1, 1, 0, 500), +(149, 1110101, 4000005, 1, 1, 0, 600000), +(150, 1110101, 2000000, 1, 1, 0, 20000), +(151, 1110101, 2040802, 1, 1, 0, 300), +(152, 1110101, 1092003, 1, 1, 0, 700), +(153, 1110101, 1002039, 1, 1, 0, 1500), +(154, 1110101, 1442000, 1, 1, 0, 700), +(155, 1110101, 1041061, 1, 1, 0, 800), +(156, 1110101, 1061057, 1, 1, 0, 800), +(157, 1110101, 1041018, 1, 1, 0, 800), +(158, 1110101, 1061013, 1, 1, 0, 800), +(159, 1110101, 2060000, 1, 1, 0, 30000), +(160, 1110101, 4010001, 1, 1, 0, 9000), +(161, 1110101, 4020000, 1, 1, 0, 9000), +(162, 1110101, 2061000, 1, 1, 0, 30000), +(163, 1110101, 1032001, 1, 1, 0, 1000), +(164, 1110101, 1382000, 1, 1, 0, 700), +(165, 1110101, 1302006, 1, 1, 0, 700), +(166, 1110101, 2000001, 1, 1, 0, 20000), +(167, 1110101, 2000003, 1, 1, 0, 20000), +(168, 1110101, 1482000, 1, 1, 0, 500), +(169, 1110101, 1002613, 1, 1, 0, 1500), +(170, 1120100, 4000006, 1, 1, 0, 600000), +(171, 1120100, 2000000, 1, 1, 0, 20000), +(172, 1120100, 2043002, 1, 1, 0, 300), +(173, 1120100, 1032001, 1, 1, 0, 1000), +(174, 1120100, 1422000, 1, 1, 0, 700), +(175, 1120100, 1092000, 1, 1, 0, 700), +(176, 1120100, 2060000, 1, 1, 0, 30000), +(177, 1120100, 4010003, 1, 1, 0, 9000), +(178, 1120100, 4020002, 1, 1, 0, 9000), +(179, 1120100, 2000003, 1, 1, 0, 20000), +(180, 1120100, 1041026, 1, 1, 0, 800), +(181, 1120100, 1061022, 1, 1, 0, 800), +(182, 1120100, 2061000, 1, 1, 0, 30000), +(183, 1120100, 1040037, 1, 1, 0, 800), +(184, 1120100, 1060027, 1, 1, 0, 800), +(185, 1120100, 1482001, 1, 1, 0, 500), +(186, 1130100, 4000018, 1, 1, 0, 600000), +(187, 1130100, 2000000, 1, 1, 0, 20000), +(188, 1130100, 2043202, 1, 1, 0, 300), +(189, 1130100, 1372001, 1, 1, 0, 700), +(190, 1130100, 2000003, 1, 1, 0, 20000), +(191, 1130100, 1072008, 1, 1, 0, 800), +(192, 1130100, 2060000, 1, 1, 0, 30000), +(193, 1130100, 4010005, 1, 1, 0, 9000), +(194, 1130100, 4020004, 1, 1, 0, 9000), +(195, 1130100, 1312016, 1, 1, 0, 700), +(196, 1130100, 1402001, 1, 1, 0, 700), +(197, 1130100, 1032003, 1, 1, 0, 1000), +(198, 1130100, 1092007, 1, 1, 0, 700), +(199, 1130100, 1040019, 1, 1, 0, 800), +(200, 1130100, 1060015, 1, 1, 0, 800), +(201, 1130100, 1041045, 1, 1, 0, 800), +(202, 1130100, 1061038, 1, 1, 0, 800), +(203, 1130100, 2061000, 1, 1, 0, 30000), +(204, 1130100, 1002118, 1, 1, 0, 1500), +(205, 1130100, 1382004, 1, 1, 0, 700), +(206, 1130100, 1402009, 1, 1, 0, 700), +(207, 1130100, 1492001, 1, 1, 0, 500), +(208, 1140100, 2000000, 1, 1, 0, 20000), +(209, 1140100, 2000003, 1, 1, 0, 20000), +(210, 1140100, 4000195, 1, 1, 0, 600000), +(211, 1140100, 2060000, 1, 1, 0, 30000), +(212, 1140100, 2061000, 1, 1, 0, 30000), +(213, 1140100, 4010000, 1, 1, 0, 9000), +(214, 1140100, 4020007, 1, 1, 0, 9000), +(215, 1140100, 4010004, 1, 1, 0, 9000), +(216, 1140100, 2040501, 1, 1, 0, 300), +(217, 1140100, 2040801, 1, 1, 0, 300), +(218, 1140100, 1041062, 1, 1, 0, 800), +(219, 1140100, 1061058, 1, 1, 0, 800), +(220, 1140100, 1050010, 1, 1, 0, 700), +(221, 1140100, 2048001, 1, 1, 0, 300), +(222, 1140100, 1041029, 1, 1, 0, 800), +(223, 1140100, 1061027, 1, 1, 0, 800), +(224, 1140100, 1072046, 1, 1, 0, 800), +(225, 1140100, 1072066, 1, 1, 0, 800), +(226, 1140100, 1082018, 1, 1, 0, 1000), +(227, 1140100, 1002107, 1, 1, 0, 1500), +(228, 1140100, 1002113, 1, 1, 0, 1500), +(229, 1140100, 1050003, 1, 1, 0, 700), +(230, 1140100, 1412012, 1, 1, 0, 700), +(231, 1140100, 1082180, 1, 1, 0, 1000), +(232, 1140100, 2044802, 1, 1, 0, 300), +(233, 120100, 4000011, 1, 1, 0, 600000), +(234, 120100, 2041007, 1, 1, 0, 300), +(235, 120100, 2000000, 1, 1, 0, 20000), +(236, 120100, 4020002, 1, 1, 0, 9000), +(237, 120100, 4010002, 1, 1, 0, 9000), +(238, 120100, 2060000, 1, 1, 0, 30000), +(239, 120100, 1332006, 1, 1, 0, 500), +(240, 120100, 2061000, 1, 1, 0, 30000), +(241, 120100, 1062000, 1, 1, 0, 800), +(242, 120100, 1060007, 1, 1, 0, 800), +(243, 120100, 1061009, 1, 1, 0, 800), +(244, 120100, 2010009, 1, 1, 0, 20000), +(245, 120100, 1002610, 1, 1, 0, 1500), +(246, 1210100, 4000017, 1, 1, 0, 40000), +(247, 1210100, 2041021, 1, 1, 0, 300), +(248, 1210100, 2000000, 1, 1, 0, 20000), +(249, 1210100, 2040702, 1, 1, 0, 300), +(250, 1210100, 1002008, 1, 1, 0, 1500), +(251, 1210100, 1062002, 1, 1, 0, 800), +(252, 1210100, 1422000, 1, 1, 0, 700), +(253, 1210100, 2060000, 1, 1, 0, 30000), +(254, 1210100, 4010006, 1, 1, 0, 9000), +(255, 1210100, 4020006, 1, 1, 0, 9000), +(256, 1210100, 1472000, 1, 1, 0, 500), +(257, 1210100, 4000021, 1, 1, 0, 50000), +(258, 1210100, 2061000, 1, 1, 0, 30000), +(259, 1210100, 1061028, 1, 1, 0, 800), +(260, 1210100, 1041014, 1, 1, 0, 800), +(261, 1210100, 1040034, 1, 1, 0, 800), +(262, 1210100, 2010009, 1, 1, 0, 20000), +(263, 1210100, 1002610, 1, 1, 0, 1500), +(264, 1210101, 4000002, 1, 1, 0, 600000), +(265, 1210101, 2000000, 1, 1, 0, 20000), +(266, 1210101, 4003004, 1, 1, 0, 200000), +(267, 1210101, 2040902, 1, 1, 0, 300), +(268, 1210101, 1040011, 1, 1, 0, 800), +(269, 1210101, 1040034, 1, 1, 0, 800), +(270, 1210101, 1060024, 1, 1, 0, 800), +(271, 1210101, 2060000, 1, 1, 0, 30000), +(272, 1210101, 4010002, 1, 1, 0, 9000), +(273, 1210101, 4020001, 1, 1, 0, 9000), +(274, 1210101, 4000021, 1, 1, 0, 50000), +(275, 1210101, 2061000, 1, 1, 0, 30000), +(276, 1210101, 1402018, 1, 1, 0, 700), +(277, 1210101, 1032003, 1, 1, 0, 1000), +(278, 1210101, 1041012, 1, 1, 0, 800), +(279, 1210101, 1040014, 1, 1, 0, 800), +(280, 1210101, 1492000, 1, 1, 0, 500), +(281, 1210101, 1052098, 1, 1, 0, 700), +(282, 1210101, 1072285, 1, 1, 0, 800), +(283, 1210102, 4000001, 1, 1, 0, 600000), +(284, 1210102, 2000000, 1, 1, 0, 20000), +(285, 1210102, 2040705, 1, 1, 0, 300), +(286, 1210102, 1072004, 1, 1, 0, 800), +(287, 1210102, 1002043, 1, 1, 0, 1500), +(288, 1210102, 1432000, 1, 1, 0, 500), +(289, 1210102, 1312000, 1, 1, 0, 700), +(290, 1210102, 2060000, 1, 1, 0, 30000), +(291, 1210102, 4010000, 1, 1, 0, 9000), +(292, 1210102, 4020007, 1, 1, 0, 9000), +(293, 1210102, 2061000, 1, 1, 0, 30000), +(294, 1210102, 1082012, 1, 1, 0, 1000), +(295, 1210102, 1072015, 1, 1, 0, 800), +(296, 1210102, 1072031, 1, 1, 0, 800), +(297, 1210102, 1052095, 1, 1, 0, 700), +(298, 1210102, 2330000, 1, 1, 0, 500), +(299, 1210103, 2000000, 1, 1, 0, 20000), +(300, 1210103, 2041015, 1, 1, 0, 300), +(301, 1210103, 2043302, 1, 1, 0, 300), +(302, 1210103, 2041004, 1, 1, 0, 300), +(303, 1210103, 2000003, 1, 1, 0, 20000), +(304, 1210103, 4020005, 1, 1, 0, 9000), +(305, 1210103, 4010002, 1, 1, 0, 9000), +(306, 1210103, 2060000, 1, 1, 0, 30000), +(307, 1210103, 2061000, 1, 1, 0, 30000), +(308, 1210103, 4000037, 1, 1, 0, 600000), +(309, 1210103, 1002075, 1, 1, 0, 1500), +(310, 1210103, 1432000, 1, 1, 0, 500), +(311, 1210103, 1040035, 1, 1, 0, 800), +(312, 1210103, 1060025, 1, 1, 0, 800), +(313, 1210103, 1041062, 1, 1, 0, 800), +(314, 1210103, 1061058, 1, 1, 0, 800), +(315, 1210103, 1402018, 1, 1, 0, 700), +(316, 1210103, 1072019, 1, 1, 0, 800), +(317, 1210103, 1432008, 1, 1, 0, 500), +(318, 1210103, 4006000, 1, 1, 0, 10000), +(319, 1210103, 2048001, 1, 1, 0, 300), +(320, 1210103, 1412012, 1, 1, 0, 700), +(321, 1210103, 1082180, 1, 1, 0, 1000), +(322, 1210103, 1492001, 1, 1, 0, 500), +(323, 1210103, 2330000, 1, 1, 0, 500), +(324, 130100, 4000003, 1, 1, 0, 600000), +(325, 130100, 2041008, 1, 1, 0, 300), +(326, 130100, 2000000, 1, 1, 0, 20000), +(327, 130100, 2040402, 1, 1, 0, 300), +(328, 130100, 4020003, 1, 1, 0, 9000), +(329, 130100, 2060000, 1, 1, 0, 30000), +(330, 130100, 4010003, 1, 1, 0, 9000), +(331, 130100, 1332000, 1, 1, 0, 500), +(332, 130100, 2061000, 1, 1, 0, 30000), +(333, 130100, 1072007, 1, 1, 0, 800), +(334, 130100, 1082003, 1, 1, 0, 1000), +(335, 130100, 1452003, 1, 1, 0, 500), +(336, 130100, 2010009, 1, 1, 0, 20000), +(337, 130100, 1061014, 1, 1, 0, 800), +(338, 130100, 1492000, 1, 1, 0, 500), +(339, 130101, 4000016, 1, 1, 0, 600000), +(340, 130101, 2041009, 1, 1, 0, 300), +(341, 130101, 2000000, 1, 1, 0, 20000), +(342, 130101, 2040502, 1, 1, 0, 300), +(343, 130101, 1402001, 1, 1, 0, 700), +(344, 130101, 1322007, 1, 1, 0, 700), +(345, 130101, 2060000, 1, 1, 0, 30000), +(346, 130101, 4010004, 1, 1, 0, 9000), +(347, 130101, 4020004, 1, 1, 0, 9000), +(348, 130101, 2061000, 1, 1, 0, 30000), +(349, 130101, 1372002, 1, 1, 0, 700), +(350, 130101, 1082029, 1, 1, 0, 1000), +(351, 130101, 1072060, 1, 1, 0, 800), +(352, 130101, 1032003, 1, 1, 0, 1000), +(353, 130101, 1061029, 1, 1, 0, 800), +(354, 130101, 2010009, 1, 1, 0, 20000), +(355, 130101, 1052095, 1, 1, 0, 700), +(356, 2100100, 2000001, 1, 1, 0, 20000), +(357, 2100100, 2000003, 1, 1, 0, 20000), +(358, 2100100, 2060000, 1, 1, 0, 30000), +(359, 2100100, 2061000, 1, 1, 0, 30000), +(360, 2100100, 4000324, 1, 1, 0, 600000), +(361, 2100100, 4020006, 1, 1, 0, 9000), +(362, 2100100, 4010001, 1, 1, 0, 9000), +(363, 2100100, 2040601, 1, 1, 0, 300), +(364, 2100100, 1382002, 1, 1, 0, 700), +(365, 2100100, 1002119, 1, 1, 0, 1500), +(366, 2100100, 1332010, 1, 1, 0, 500), +(367, 2100100, 1050025, 1, 1, 0, 700), +(368, 2100100, 1082002, 1, 1, 0, 1000), +(369, 2100100, 1072007, 1, 1, 0, 800), +(370, 2100100, 1032009, 1, 1, 0, 1000), +(371, 2100100, 1050005, 1, 1, 0, 700), +(372, 2100100, 4003004, 1, 1, 0, 200000), +(373, 2100100, 4010007, 1, 1, 0, 9000), +(374, 2100100, 1072288, 1, 1, 0, 800), +(375, 2100100, 2040420, 1, 1, 0, 300), +(376, 2100100, 2049000, 1, 1, 0, 150), +(377, 2100101, 2000001, 1, 1, 0, 20000), +(378, 2100101, 2000003, 1, 1, 0, 20000), +(379, 2100101, 2060000, 1, 1, 0, 30000), +(380, 2100101, 2061000, 1, 1, 0, 30000), +(381, 2100101, 4000325, 1, 1, 0, 600000), +(382, 2100101, 2002002, 1, 1, 0, 20000), +(383, 2100101, 4010006, 1, 1, 0, 9000), +(384, 2100101, 4020001, 1, 1, 0, 9000), +(385, 2100101, 2044602, 1, 1, 0, 300), +(386, 2100101, 1092021, 1, 1, 0, 700), +(387, 2100101, 1472006, 1, 1, 0, 500), +(388, 2100101, 1060017, 1, 1, 0, 800), +(389, 2100101, 1061028, 1, 1, 0, 800), +(390, 2100101, 1002129, 1, 1, 0, 1500), +(391, 2100101, 1041027, 1, 1, 0, 800), +(392, 2100101, 1061025, 1, 1, 0, 800), +(393, 2100101, 4003004, 1, 1, 0, 200000), +(394, 2100101, 4010007, 1, 1, 0, 9000), +(395, 2100101, 1082183, 1, 1, 0, 1000), +(396, 2100101, 2044210, 1, 1, 0, 300), +(397, 2100102, 2000001, 1, 1, 0, 20000), +(398, 2100102, 2000003, 1, 1, 0, 20000), +(399, 2100102, 2060000, 1, 1, 0, 30000), +(400, 2100102, 2061000, 1, 1, 0, 30000), +(401, 2100102, 4000329, 1, 1, 0, 600000), +(402, 2100102, 4010002, 1, 1, 0, 9000), +(403, 2100102, 4020004, 1, 1, 0, 9000), +(404, 2100102, 2040705, 1, 1, 0, 300), +(405, 2100102, 2044102, 1, 1, 0, 300), +(406, 2100102, 1051004, 1, 1, 0, 700), +(407, 2100102, 1050024, 1, 1, 0, 700), +(408, 2100102, 1032006, 1, 1, 0, 1000), +(409, 2100102, 1002048, 1, 1, 0, 1500), +(410, 2100102, 1072027, 1, 1, 0, 800), +(411, 2100102, 1040044, 1, 1, 0, 800), +(412, 2100102, 1060033, 1, 1, 0, 800), +(413, 2100102, 1462003, 1, 1, 0, 500), +(414, 2100102, 2022155, 1, 1, 0, 20000), +(415, 2100102, 4010007, 1, 1, 0, 9000), +(416, 2100102, 1082183, 1, 1, 0, 1000), +(417, 2100102, 1082186, 1, 1, 0, 1000), +(418, 2100102, 2044901, 1, 1, 0, 300), +(419, 2100102, 2043212, 1, 1, 0, 300), +(420, 2100103, 2000001, 1, 1, 0, 20000), +(421, 2100103, 2000003, 1, 1, 0, 20000), +(422, 2100103, 2060000, 1, 1, 0, 30000), +(423, 2100103, 2061000, 1, 1, 0, 30000), +(424, 2100103, 4000330, 1, 1, 0, 600000), +(425, 2100103, 4010003, 1, 1, 0, 9000), +(426, 2100103, 4020004, 1, 1, 0, 9000), +(427, 2100103, 2040501, 1, 1, 0, 300), +(428, 2100103, 1322009, 1, 1, 0, 700), +(429, 2100103, 1092002, 1, 1, 0, 700), +(430, 2100103, 1432002, 1, 1, 0, 500), +(431, 2100103, 1072054, 1, 1, 0, 800), +(432, 2100103, 1082016, 1, 1, 0, 1000), +(433, 2100103, 1072078, 1, 1, 0, 800), +(434, 2100103, 1061054, 1, 1, 0, 800), +(435, 2100103, 1041058, 1, 1, 0, 800), +(436, 2100103, 1002096, 1, 1, 0, 1500), +(437, 2100103, 1050011, 1, 1, 0, 700), +(438, 2100103, 2022155, 1, 1, 0, 20000), +(439, 2100103, 4010007, 1, 1, 0, 9000), +(440, 2100103, 1072291, 1, 1, 0, 800), +(441, 2100103, 2044314, 1, 1, 0, 300), +(442, 2100104, 2000001, 1, 1, 0, 20000), +(443, 2100104, 2000003, 1, 1, 0, 20000), +(444, 2100104, 2060000, 1, 1, 0, 30000), +(445, 2100104, 2061000, 1, 1, 0, 30000), +(446, 2100104, 4000331, 1, 1, 0, 600000), +(447, 2100104, 2002003, 1, 1, 0, 20000), +(448, 2100104, 4020006, 1, 1, 0, 9000), +(449, 2100104, 4020005, 1, 1, 0, 9000), +(450, 2100104, 4004001, 1, 1, 0, 10000), +(451, 2100104, 2041002, 1, 1, 0, 300), +(452, 2100104, 1442001, 1, 1, 0, 700), +(453, 2100104, 1322003, 1, 1, 0, 700), +(454, 2100104, 1092019, 1, 1, 0, 700), +(455, 2100104, 1072087, 1, 1, 0, 800), +(456, 2100104, 1040068, 1, 1, 0, 800), +(457, 2100104, 1060057, 1, 1, 0, 800), +(458, 2100104, 1082052, 1, 1, 0, 1000), +(459, 2100104, 1002004, 1, 1, 0, 1500), +(460, 2100104, 2022155, 1, 1, 0, 20000), +(461, 2100104, 4010007, 1, 1, 0, 9000), +(462, 2100104, 1082186, 1, 1, 0, 1000), +(463, 2100104, 2043214, 1, 1, 0, 300), +(464, 2100105, 2000001, 1, 1, 0, 20000), +(465, 2100105, 2000003, 1, 1, 0, 20000), +(466, 2100105, 2060000, 1, 1, 0, 30000), +(467, 2100105, 2061000, 1, 1, 0, 30000), +(468, 2100105, 4000328, 1, 1, 0, 600000), +(469, 2100105, 4010004, 1, 1, 0, 9000), +(470, 2100105, 4006001, 1, 1, 0, 10000), +(471, 2100105, 2040902, 1, 1, 0, 300), +(472, 2100105, 2044002, 1, 1, 0, 300), +(473, 2100105, 1452003, 1, 1, 0, 500), +(474, 2100105, 1302006, 1, 1, 0, 700), +(475, 2100105, 1372004, 1, 1, 0, 700), +(476, 2100105, 1002013, 1, 1, 0, 1500), +(477, 2100105, 1072086, 1, 1, 0, 800), +(478, 2100105, 1002119, 1, 1, 0, 1500), +(479, 2100105, 1072007, 1, 1, 0, 800), +(480, 2100105, 1082020, 1, 1, 0, 1000), +(481, 2100105, 4010007, 1, 1, 0, 9000), +(482, 2100105, 1052101, 1, 1, 0, 700), +(483, 2100105, 1482003, 1, 1, 0, 500), +(484, 2100105, 2330000, 1, 1, 0, 500), +(485, 2100105, 2040316, 1, 1, 0, 300), +(486, 2100105, 2040319, 1, 1, 0, 300), +(487, 2100105, 2044412, 1, 1, 0, 300), +(488, 2100106, 2000001, 1, 1, 0, 20000), +(489, 2100106, 2000003, 1, 1, 0, 20000), +(490, 2100106, 2060000, 1, 1, 0, 30000), +(491, 2100106, 2061000, 1, 1, 0, 30000), +(492, 2100106, 4000326, 1, 1, 0, 600000), +(493, 2100106, 2002004, 1, 1, 0, 20000), +(494, 2100106, 4020007, 1, 1, 0, 9000), +(495, 2100106, 4020000, 1, 1, 0, 9000), +(496, 2100106, 2044501, 1, 1, 0, 300), +(497, 2100106, 1402002, 1, 1, 0, 700), +(498, 2100106, 1032004, 1, 1, 0, 1000), +(499, 2100106, 1050001, 1, 1, 0, 700), +(500, 2100106, 1002055, 1, 1, 0, 1500), +(501, 2100106, 1040049, 1, 1, 0, 800), +(502, 2100106, 1060037, 1, 1, 0, 800), +(503, 2100106, 1082068, 1, 1, 0, 1000), +(504, 2100106, 1432001, 1, 1, 0, 500), +(505, 2100106, 4010007, 1, 1, 0, 9000), +(506, 2100106, 1492002, 1, 1, 0, 500), +(507, 2100106, 2330000, 1, 1, 0, 500), +(508, 2100106, 2040926, 1, 1, 0, 300), +(509, 2100107, 2000001, 1, 1, 0, 20000), +(510, 2100107, 2000003, 1, 1, 0, 20000), +(511, 2100107, 2060000, 1, 1, 0, 30000), +(512, 2100107, 2061000, 1, 1, 0, 30000), +(513, 2100107, 4000327, 1, 1, 0, 600000), +(514, 2100107, 4020003, 1, 1, 0, 9000), +(515, 2100107, 4020002, 1, 1, 0, 9000), +(516, 2100107, 2048001, 1, 1, 0, 300), +(517, 2100107, 2070002, 1, 1, 0, 500), +(518, 2100107, 1332004, 1, 1, 0, 500), +(519, 2100107, 1382017, 1, 1, 0, 700), +(520, 2100107, 1041054, 1, 1, 0, 800), +(521, 2100107, 1061050, 1, 1, 0, 800), +(522, 2100107, 1002141, 1, 1, 0, 1500), +(523, 2100107, 1051011, 1, 1, 0, 700), +(524, 2100107, 1040059, 1, 1, 0, 800), +(525, 2100107, 1060045, 1, 1, 0, 800), +(526, 2100107, 4010007, 1, 1, 0, 9000), +(527, 2100107, 1492003, 1, 1, 0, 500), +(528, 2100108, 2000001, 1, 1, 0, 20000), +(529, 2100108, 2000003, 1, 1, 0, 20000), +(530, 2100108, 2060000, 1, 1, 0, 30000), +(531, 2100108, 2061000, 1, 1, 0, 30000), +(532, 2100108, 4000333, 1, 1, 0, 600000), +(533, 2100108, 2002005, 1, 1, 0, 20000), +(534, 2100108, 4010002, 1, 1, 0, 9000), +(535, 2100108, 4010001, 1, 1, 0, 9000), +(536, 2100108, 4004002, 1, 1, 0, 10000), +(537, 2100108, 2043002, 1, 1, 0, 300), +(538, 2100108, 2043701, 1, 1, 0, 300), +(539, 2100108, 1332009, 1, 1, 0, 500), +(540, 2100108, 1412004, 1, 1, 0, 700), +(541, 2100108, 1040062, 1, 1, 0, 800), +(542, 2100108, 1060051, 1, 1, 0, 800), +(543, 2100108, 1050029, 1, 1, 0, 700), +(544, 2100108, 1002164, 1, 1, 0, 1500), +(545, 2100108, 1082005, 1, 1, 0, 1000), +(546, 2100108, 4003004, 1, 1, 0, 200000), +(547, 2100108, 4010007, 1, 1, 0, 9000), +(548, 2100108, 1482003, 1, 1, 0, 500), +(549, 2100108, 2044801, 1, 1, 0, 300), +(550, 2100108, 2044014, 1, 1, 0, 300), +(551, 2100108, 2044214, 1, 1, 0, 300), +(552, 210100, 4000004, 1, 1, 0, 600000), +(553, 210100, 2041018, 1, 1, 0, 300), +(554, 210100, 4000010, 1, 1, 0, 600000), +(555, 210100, 2000000, 1, 1, 0, 20000), +(556, 210100, 2040602, 1, 1, 0, 300), +(557, 210100, 1002019, 1, 1, 0, 1500), +(558, 210100, 1412001, 1, 1, 0, 700), +(559, 210100, 2060000, 1, 1, 0, 30000), +(560, 210100, 4010005, 1, 1, 0, 9000), +(561, 210100, 4020005, 1, 1, 0, 9000), +(562, 210100, 2061000, 1, 1, 0, 30000), +(563, 210100, 1432001, 1, 1, 0, 500), +(564, 210100, 1082019, 1, 1, 0, 1000), +(565, 210100, 1072023, 1, 1, 0, 800), +(566, 210100, 1322007, 1, 1, 0, 700), +(567, 210100, 1412012, 1, 1, 0, 700), +(568, 210100, 2010009, 1, 1, 0, 20000), +(569, 210100, 1482000, 1, 1, 0, 500), +(570, 2110200, 4000015, 1, 1, 0, 600000), +(571, 2110200, 2000001, 1, 1, 0, 20000), +(572, 2110200, 2002003, 1, 1, 0, 20000), +(573, 2110200, 2044102, 1, 1, 0, 300), +(574, 2110200, 1002005, 1, 1, 0, 1500), +(575, 2110200, 1041008, 1, 1, 0, 800), +(576, 2110200, 1061006, 1, 1, 0, 800), +(577, 2110200, 1072073, 1, 1, 0, 800), +(578, 2110200, 1050006, 1, 1, 0, 700), +(579, 2110200, 2060000, 1, 1, 0, 30000), +(580, 2110200, 4010000, 1, 1, 0, 9000), +(581, 2110200, 4020006, 1, 1, 0, 9000), +(582, 2110200, 2000003, 1, 1, 0, 20000), +(583, 2110200, 1462004, 1, 1, 0, 500), +(584, 2110200, 1040044, 1, 1, 0, 800), +(585, 2110200, 1060033, 1, 1, 0, 800), +(586, 2110200, 2061000, 1, 1, 0, 30000), +(587, 2110200, 1060002, 1, 1, 0, 800), +(588, 2110200, 1082000, 1, 1, 0, 1000), +(589, 2110200, 1002038, 1, 1, 0, 1500), +(590, 2110200, 1092000, 1, 1, 0, 700), +(591, 2110200, 1302004, 1, 1, 0, 700), +(592, 2110200, 1442001, 1, 1, 0, 700), +(593, 2110200, 1492002, 1, 1, 0, 500), +(594, 2110200, 1052104, 1, 1, 0, 700), +(595, 2110200, 2330000, 1, 1, 0, 500), +(596, 2110200, 2043214, 1, 1, 0, 300), +(597, 2110300, 2000001, 1, 1, 0, 20000), +(598, 2110300, 2000003, 1, 1, 0, 20000), +(599, 2110300, 2060000, 1, 1, 0, 30000), +(600, 2110300, 2061000, 1, 1, 0, 30000), +(601, 2110300, 2002004, 1, 1, 0, 20000), +(602, 2110300, 4020007, 1, 1, 0, 9000), +(603, 2110300, 4020000, 1, 1, 0, 9000), +(604, 2110300, 2044501, 1, 1, 0, 300), +(605, 2110300, 1402002, 1, 1, 0, 700), +(606, 2110300, 1032004, 1, 1, 0, 1000), +(607, 2110300, 1050001, 1, 1, 0, 700), +(608, 2110300, 1002055, 1, 1, 0, 1500), +(609, 2110300, 1040049, 1, 1, 0, 800), +(610, 2110300, 1060037, 1, 1, 0, 800), +(611, 2110300, 1082068, 1, 1, 0, 1000), +(612, 2110300, 1432001, 1, 1, 0, 500), +(613, 2110300, 4010007, 1, 1, 0, 9000), +(614, 2110300, 4000350, 1, 1, 0, 600000), +(615, 2110300, 1002619, 1, 1, 0, 1500), +(616, 2110300, 2043214, 1, 1, 0, 300), +(617, 2110301, 2000001, 1, 1, 0, 20000), +(618, 2110301, 2000003, 1, 1, 0, 20000), +(619, 2110301, 2060000, 1, 1, 0, 30000), +(620, 2110301, 2061000, 1, 1, 0, 30000), +(621, 2110301, 2002005, 1, 1, 0, 20000), +(622, 2110301, 4010002, 1, 1, 0, 9000), +(623, 2110301, 4010001, 1, 1, 0, 9000), +(624, 2110301, 4004002, 1, 1, 0, 10000), +(625, 2110301, 2043002, 1, 1, 0, 300), +(626, 2110301, 2043701, 1, 1, 0, 300), +(627, 2110301, 1332009, 1, 1, 0, 500), +(628, 2110301, 1412004, 1, 1, 0, 700), +(629, 2110301, 1040062, 1, 1, 0, 800), +(630, 2110301, 1060051, 1, 1, 0, 800), +(631, 2110301, 1050029, 1, 1, 0, 700), +(632, 2110301, 1002164, 1, 1, 0, 1500), +(633, 2110301, 1082005, 1, 1, 0, 1000), +(634, 2110301, 4010007, 1, 1, 0, 9000), +(635, 2110301, 4000351, 1, 1, 0, 600000), +(636, 2110301, 1492003, 1, 1, 0, 500), +(637, 2110301, 2330001, 1, 1, 0, 500), +(638, 2110301, 2043114, 1, 1, 0, 300), +(639, 2130100, 4000018, 1, 1, 0, 600000), +(640, 2130100, 2000001, 1, 1, 0, 20000), +(641, 2130100, 2012002, 1, 1, 0, 6000), +(642, 2130100, 2044202, 1, 1, 0, 300), +(643, 2130100, 1051003, 1, 1, 0, 700), +(644, 2130100, 1061006, 1, 1, 0, 800), +(645, 2130100, 1041028, 1, 1, 0, 800), +(646, 2130100, 1061026, 1, 1, 0, 800), +(647, 2130100, 2060000, 1, 1, 0, 30000), +(648, 2130100, 4010001, 1, 1, 0, 9000), +(649, 2130100, 4020007, 1, 1, 0, 9000), +(650, 2130100, 2000003, 1, 1, 0, 20000), +(651, 2130100, 1472006, 1, 1, 0, 500), +(652, 2130100, 1072085, 1, 1, 0, 800), +(653, 2130100, 1002097, 1, 1, 0, 1500), +(654, 2130100, 1472009, 1, 1, 0, 500), +(655, 2130100, 1472012, 1, 1, 0, 500), +(656, 2130100, 2061000, 1, 1, 0, 30000), +(657, 2130100, 1051004, 1, 1, 0, 700), +(658, 2130100, 1072087, 1, 1, 0, 800), +(659, 2130100, 4006001, 1, 1, 0, 10000), +(660, 2130100, 2070009, 1, 1, 0, 500), +(661, 2130100, 4000215, 1, 1, 0, 600000), +(662, 2130100, 1002616, 1, 1, 0, 1500), +(663, 2130100, 2044012, 1, 1, 0, 300), +(664, 2130100, 2044210, 1, 1, 0, 300), +(665, 2130103, 4000034, 1, 1, 0, 600000), +(666, 2130103, 2000001, 1, 1, 0, 20000), +(667, 2130103, 2040902, 1, 1, 0, 300), +(668, 2130103, 4010002, 1, 1, 0, 9000), +(669, 2130103, 4020006, 1, 1, 0, 9000), +(670, 2130103, 2010003, 1, 1, 0, 20000), +(671, 2130103, 1332008, 1, 1, 0, 500), +(672, 2130103, 1072069, 1, 1, 0, 800), +(673, 2130103, 1002027, 1, 1, 0, 1500), +(674, 2130103, 1050005, 1, 1, 0, 700), +(675, 2130103, 1061028, 1, 1, 0, 800), +(676, 2130103, 1041031, 1, 1, 0, 800), +(677, 2130103, 1041021, 1, 1, 0, 800), +(678, 2130103, 1061018, 1, 1, 0, 800), +(679, 2130103, 2048003, 1, 1, 0, 300), +(680, 2130103, 1482002, 1, 1, 0, 500), +(681, 2130103, 2040617, 1, 1, 0, 300), +(682, 2130103, 2049100, 1, 1, 0, 150), +(683, 2220000, 4000000, 1, 1, 0, 600000), +(684, 2220000, 4000000, 1, 1, 0, 600000), +(685, 2220000, 4000000, 1, 1, 0, 600000), +(686, 2220000, 4000016, 1, 1, 0, 600000), +(687, 2220000, 4000016, 1, 1, 0, 600000), +(688, 2220000, 4000016, 1, 1, 0, 600000), +(689, 2220000, 4000019, 1, 1, 0, 600000), +(690, 2220000, 4000019, 1, 1, 0, 600000), +(691, 2220000, 4000019, 1, 1, 0, 600000), +(692, 2220000, 4010000, 1, 1, 0, 90000), +(693, 2220000, 4020000, 1, 1, 0, 90000), +(694, 2220000, 2000000, 1, 1, 0, 200000), +(695, 2220000, 2010009, 1, 1, 0, 200000), +(696, 2220000, 2020014, 1, 1, 0, 200000), +(697, 2220000, 2040001, 1, 1, 0, 3000), +(698, 2220000, 2040301, 1, 1, 0, 3000), +(699, 2220000, 2040401, 1, 1, 0, 3000), +(700, 2220000, 2043201, 1, 1, 0, 3000), +(701, 2220000, 2043701, 1, 1, 0, 3000), +(702, 2220000, 2041016, 1, 1, 0, 3000), +(703, 2220000, 2043801, 1, 1, 0, 3000), +(704, 2220000, 2044001, 1, 1, 0, 3000), +(705, 2220000, 2040501, 1, 1, 0, 3000), +(706, 2220000, 2040601, 1, 1, 0, 3000), +(707, 2220000, 2060000, 1, 1, 0, 300000), +(708, 2220000, 2061000, 1, 1, 0, 300000), +(709, 2220000, 2070000, 1, 1, 0, 5000), +(710, 2220000, 1002049, 1, 1, 0, 15000), +(711, 2220000, 1002073, 1, 1, 0, 15000), +(712, 2220000, 1002159, 1, 1, 0, 15000), +(713, 2220000, 1002150, 1, 1, 0, 15000), +(714, 2220000, 1040041, 1, 1, 0, 8000), +(715, 2220000, 1041024, 1, 1, 0, 8000), +(716, 2220000, 1050025, 1, 1, 0, 7000), +(717, 2220000, 1051005, 1, 1, 0, 7000), +(718, 2220000, 1040023, 1, 1, 0, 8000), +(719, 2220000, 1041033, 1, 1, 0, 8000), +(720, 2220000, 1040050, 1, 1, 0, 8000), +(721, 2220000, 1041060, 1, 1, 0, 8000), +(722, 2220000, 1082001, 1, 1, 0, 10000), +(723, 2220000, 1082028, 1, 1, 0, 10000), +(724, 2220000, 1082018, 1, 1, 0, 10000), +(725, 2220000, 1082039, 1, 1, 0, 10000), +(726, 2220000, 1072052, 1, 1, 0, 8000), +(727, 2220000, 1072074, 1, 1, 0, 8000), +(728, 2220000, 1072069, 1, 1, 0, 8000), +(729, 2220000, 1072087, 1, 1, 0, 8000), +(730, 2220000, 2040002, 1, 1, 0, 3000), +(731, 2220000, 2040302, 1, 1, 0, 3000), +(732, 2220000, 2040402, 1, 1, 0, 3000), +(733, 2220000, 2043302, 1, 1, 0, 3000), +(734, 2220000, 2043702, 1, 1, 0, 3000), +(735, 2220000, 2210006, 1, 1, 0, 999999), +(736, 2220000, 1002619, 1, 1, 0, 15000), +(737, 2220000, 1052104, 1, 1, 0, 7000), +(738, 2220000, 1082186, 1, 1, 0, 10000), +(739, 2220000, 1072291, 1, 1, 0, 8000), +(740, 2220000, 2330000, 1, 1, 0, 5000), +(741, 2220000, 2044801, 1, 1, 0, 3000), +(742, 2220000, 2044902, 1, 1, 0, 3000), +(743, 2220000, 2040418, 1, 1, 0, 3000), +(744, 2220000, 2040928, 1, 1, 0, 3000), +(745, 2220000, 2043114, 1, 1, 0, 3000), +(746, 2220000, 2044414, 1, 1, 0, 3000), +(747, 2220100, 4000009, 1, 1, 0, 600000), +(748, 2220100, 2000001, 1, 1, 0, 20000), +(749, 2220100, 2002002, 1, 1, 0, 20000), +(750, 2220100, 2044002, 1, 1, 0, 300), +(751, 2220100, 1332006, 1, 1, 0, 500), +(752, 2220100, 1051000, 1, 1, 0, 700), +(753, 2220100, 1002127, 1, 1, 0, 1500), +(754, 2220100, 2060000, 1, 1, 0, 30000), +(755, 2220100, 4010006, 1, 1, 0, 9000), +(756, 2220100, 4020005, 1, 1, 0, 9000), +(757, 2220100, 2000003, 1, 1, 0, 20000), +(758, 2220100, 1442001, 1, 1, 0, 700), +(759, 2220100, 1041027, 1, 1, 0, 800), +(760, 2220100, 1061025, 1, 1, 0, 800), +(761, 2220100, 1040012, 1, 1, 0, 800), +(762, 2220100, 1060010, 1, 1, 0, 800), +(763, 2220100, 2061000, 1, 1, 0, 30000), +(764, 2220100, 1072020, 1, 1, 0, 800), +(765, 2220100, 1432001, 1, 1, 0, 500), +(766, 2220100, 4020006, 1, 1, 0, 9000), +(767, 2220100, 2000002, 1, 1, 0, 20000), +(768, 2220100, 1072011, 1, 1, 0, 800), +(769, 2220100, 1332001, 1, 1, 0, 500), +(770, 2220100, 1382002, 1, 1, 0, 700), +(771, 2220100, 1002178, 1, 1, 0, 1500), +(772, 2220100, 1412012, 1, 1, 0, 700), +(773, 2220100, 1002613, 1, 1, 0, 1500), +(774, 2220100, 1002616, 1, 1, 0, 1500), +(775, 2220100, 1002619, 1, 1, 0, 1500), +(776, 2230100, 4000007, 1, 1, 0, 600000), +(777, 2230100, 2000001, 1, 1, 0, 20000), +(778, 2230100, 2002001, 1, 1, 0, 20000), +(779, 2230100, 2044402, 1, 1, 0, 300), +(780, 2230100, 1032009, 1, 1, 0, 1000), +(781, 2230100, 1041060, 1, 1, 0, 800), +(782, 2230100, 1061056, 1, 1, 0, 800), +(783, 2230100, 1002047, 1, 1, 0, 1500), +(784, 2230100, 1032008, 1, 1, 0, 1000), +(785, 2230100, 2060000, 1, 1, 0, 30000), +(786, 2230100, 4010004, 1, 1, 0, 9000), +(787, 2230100, 4020005, 1, 1, 0, 9000), +(788, 2230100, 1302004, 1, 1, 0, 700), +(789, 2230100, 1050026, 1, 1, 0, 700), +(790, 2230100, 2000003, 1, 1, 0, 20000), +(791, 2230100, 1051012, 1, 1, 0, 700), +(792, 2230100, 2061000, 1, 1, 0, 30000), +(793, 2230100, 1041032, 1, 1, 0, 800), +(794, 2230100, 1062006, 1, 1, 0, 800), +(795, 2230100, 1432002, 1, 1, 0, 500), +(796, 2230100, 1040021, 1, 1, 0, 800), +(797, 2230100, 4020007, 1, 1, 0, 9000), +(798, 2230100, 2000002, 1, 1, 0, 20000), +(799, 2230100, 1041007, 1, 1, 0, 800), +(800, 2230100, 1422001, 1, 1, 0, 700), +(801, 2230100, 1060071, 1, 1, 0, 800), +(802, 2230100, 1482003, 1, 1, 0, 500), +(803, 2230100, 2040823, 1, 1, 0, 300), +(804, 2230100, 2044010, 1, 1, 0, 300), +(805, 2230101, 4000008, 1, 1, 0, 600000), +(806, 2230101, 2000001, 1, 1, 0, 20000), +(807, 2230101, 2002000, 1, 1, 0, 20000), +(808, 2230101, 2044302, 1, 1, 0, 300), +(809, 2230101, 1032000, 1, 1, 0, 1000), +(810, 2230101, 1032004, 1, 1, 0, 1000), +(811, 2230101, 1452001, 1, 1, 0, 500), +(812, 2230101, 1412002, 1, 1, 0, 700), +(813, 2230101, 2060000, 1, 1, 0, 30000), +(814, 2230101, 4010002, 1, 1, 0, 9000), +(815, 2230101, 4020003, 1, 1, 0, 9000), +(816, 2230101, 1002158, 1, 1, 0, 1500), +(817, 2230101, 2000003, 1, 1, 0, 20000), +(818, 2230101, 1040048, 1, 1, 0, 800), +(819, 2230101, 2061000, 1, 1, 0, 30000), +(820, 2230101, 1060038, 1, 1, 0, 800), +(821, 2230101, 1372003, 1, 1, 0, 700), +(822, 2230101, 1060018, 1, 1, 0, 800), +(823, 2230101, 1040026, 1, 1, 0, 800), +(824, 2230101, 1040009, 1, 1, 0, 800), +(825, 2230101, 4010003, 1, 1, 0, 9000), +(826, 2230101, 2000002, 1, 1, 0, 20000), +(827, 2230101, 1050030, 1, 1, 0, 700), +(828, 2230101, 1050031, 1, 1, 0, 700), +(829, 2230101, 1432003, 1, 1, 0, 500), +(830, 2230101, 1002035, 1, 1, 0, 1500), +(831, 2230101, 1312007, 1, 1, 0, 700), +(832, 2230101, 1040021, 1, 1, 0, 800), +(833, 2230101, 1082183, 1, 1, 0, 1000), +(834, 2230101, 1492003, 1, 1, 0, 500), +(835, 2230101, 2049100, 1, 1, 0, 150), +(836, 2230102, 4000020, 1, 1, 0, 600000), +(837, 2230102, 2000001, 1, 1, 0, 20000), +(838, 2230102, 2002004, 1, 1, 0, 20000), +(839, 2230102, 2060000, 1, 1, 0, 30000), +(840, 2230102, 4003004, 1, 1, 0, 200000), +(841, 2230102, 1032000, 1, 1, 0, 1000), +(842, 2230102, 1041013, 1, 1, 0, 800), +(843, 2230102, 1061024, 1, 1, 0, 800), +(844, 2230102, 1051005, 1, 1, 0, 700), +(845, 2230102, 1032002, 1, 1, 0, 1000), +(846, 2230102, 4010003, 1, 1, 0, 9000), +(847, 2230102, 4020004, 1, 1, 0, 9000), +(848, 2230102, 1002064, 1, 1, 0, 1500), +(849, 2230102, 2000003, 1, 1, 0, 20000), +(850, 2230102, 1072039, 1, 1, 0, 800), +(851, 2230102, 1072033, 1, 1, 0, 800), +(852, 2230102, 4000021, 1, 1, 0, 50000), +(853, 2230102, 1432003, 1, 1, 0, 500), +(854, 2230102, 1402006, 1, 1, 0, 700), +(855, 2230102, 2061000, 1, 1, 0, 30000), +(856, 2230102, 1382017, 1, 1, 0, 700), +(857, 2230102, 1040079, 1, 1, 0, 800), +(858, 2230102, 1060069, 1, 1, 0, 800), +(859, 2230102, 1002151, 1, 1, 0, 1500), +(860, 2230102, 1060050, 1, 1, 0, 800), +(861, 2230102, 1452005, 1, 1, 0, 500), +(862, 2230102, 1462004, 1, 1, 0, 500), +(863, 2230102, 1002166, 1, 1, 0, 1500), +(864, 2230102, 1412005, 1, 1, 0, 700), +(865, 2230102, 1082186, 1, 1, 0, 1000), +(866, 2230102, 2330001, 1, 1, 0, 500), +(867, 2230103, 4000097, 1, 1, 0, 600000), +(868, 2230103, 4131000, 1, 1, 0, 6000), +(869, 2230103, 2060000, 1, 1, 0, 30000), +(870, 2230103, 2061000, 1, 1, 0, 30000), +(871, 2230103, 2002006, 1, 1, 0, 20000), +(872, 2230103, 4010003, 1, 1, 0, 9000), +(873, 2230103, 4004003, 1, 1, 0, 10000), +(874, 2230103, 2000001, 1, 1, 0, 20000), +(875, 2230103, 2000003, 1, 1, 0, 20000), +(876, 2230103, 2040900, 1, 1, 0, 300), +(877, 2230103, 1332020, 1, 1, 0, 500), +(878, 2230103, 1402010, 1, 1, 0, 700), +(879, 2230103, 1302003, 1, 1, 0, 700), +(880, 2230103, 1312003, 1, 1, 0, 700), +(881, 2230103, 1082017, 1, 1, 0, 1000), +(882, 2230103, 1002020, 1, 1, 0, 1500), +(883, 2230103, 1050023, 1, 1, 0, 700), +(884, 2230103, 2070000, 1, 1, 0, 500), +(885, 2230103, 1462003, 1, 1, 0, 500), +(886, 2230103, 1072288, 1, 1, 0, 800), +(887, 2230103, 1072291, 1, 1, 0, 800), +(888, 2230103, 2044802, 1, 1, 0, 300), +(889, 2230103, 2040319, 1, 1, 0, 300), +(890, 2230103, 2044114, 1, 1, 0, 300), +(891, 2230104, 4000098, 1, 1, 0, 600000), +(892, 2230104, 4131010, 1, 1, 0, 6000), +(893, 2230104, 2060000, 1, 1, 0, 30000), +(894, 2230104, 2061000, 1, 1, 0, 30000), +(895, 2230104, 2002007, 1, 1, 0, 20000), +(896, 2230104, 4010001, 1, 1, 0, 9000), +(897, 2230104, 4010002, 1, 1, 0, 9000), +(898, 2230104, 4004002, 1, 1, 0, 10000), +(899, 2230104, 2000002, 1, 1, 0, 20000), +(900, 2230104, 2000003, 1, 1, 0, 20000), +(901, 2230104, 2040601, 1, 1, 0, 300), +(902, 2230104, 1332010, 1, 1, 0, 500), +(903, 2230104, 1061034, 1, 1, 0, 800), +(904, 2230104, 1041041, 1, 1, 0, 800), +(905, 2230104, 1382002, 1, 1, 0, 700), +(906, 2230104, 1082043, 1, 1, 0, 1000), +(907, 2230104, 1002162, 1, 1, 0, 1500), +(908, 2230104, 1050028, 1, 1, 0, 700), +(909, 2230104, 2070002, 1, 1, 0, 500), +(910, 2230104, 1082042, 1, 1, 0, 1000), +(911, 2230104, 1052104, 1, 1, 0, 700), +(912, 2230104, 2040929, 1, 1, 0, 300), +(913, 2230104, 2043112, 1, 1, 0, 300), +(914, 2230105, 4000161, 1, 1, 0, 600000), +(915, 2230105, 4131000, 1, 1, 0, 6000), +(916, 2230105, 2060000, 1, 1, 0, 30000), +(917, 2230105, 2061000, 1, 1, 0, 30000), +(918, 2230105, 2002004, 1, 1, 0, 20000), +(919, 2230105, 4010001, 1, 1, 0, 9000), +(920, 2230105, 4004003, 1, 1, 0, 10000), +(921, 2230105, 2000001, 1, 1, 0, 20000), +(922, 2230105, 2000003, 1, 1, 0, 20000), +(923, 2230105, 2040900, 1, 1, 0, 300), +(924, 2230105, 1312003, 1, 1, 0, 700), +(925, 2230105, 1322004, 1, 1, 0, 700), +(926, 2230105, 1041042, 1, 1, 0, 800), +(927, 2230105, 1061035, 1, 1, 0, 800), +(928, 2230105, 1072007, 1, 1, 0, 800), +(929, 2230105, 1072046, 1, 1, 0, 800), +(930, 2230105, 1050011, 1, 1, 0, 700), +(931, 2230105, 1082016, 1, 1, 0, 1000), +(932, 2230105, 2070000, 1, 1, 0, 500), +(933, 2230105, 1032005, 1, 1, 0, 1000), +(934, 2230105, 1492002, 1, 1, 0, 500), +(935, 2230105, 2040617, 1, 1, 0, 300), +(936, 2230105, 2043015, 1, 1, 0, 300), +(937, 2230106, 4000163, 1, 1, 0, 600000), +(938, 2230106, 2000001, 1, 1, 0, 20000), +(939, 2230106, 2002001, 1, 1, 0, 20000), +(940, 2230106, 2060000, 1, 1, 0, 30000), +(941, 2230106, 2002005, 1, 1, 0, 20000), +(942, 2230106, 2040001, 1, 1, 0, 300), +(943, 2230106, 4010003, 1, 1, 0, 9000), +(944, 2230106, 4020004, 1, 1, 0, 9000), +(945, 2230106, 1332013, 1, 1, 0, 500), +(946, 2230106, 1041040, 1, 1, 0, 800), +(947, 2230106, 1061033, 1, 1, 0, 800), +(948, 2230106, 2000003, 1, 1, 0, 20000), +(949, 2230106, 1002146, 1, 1, 0, 1500), +(950, 2230106, 1002158, 1, 1, 0, 1500), +(951, 2230106, 2040401, 1, 1, 0, 300), +(952, 2230106, 1041050, 1, 1, 0, 800), +(953, 2230106, 1061046, 1, 1, 0, 800), +(954, 2230106, 2061000, 1, 1, 0, 30000), +(955, 2230106, 1332009, 1, 1, 0, 500), +(956, 2230106, 1040040, 1, 1, 0, 800), +(957, 2230106, 1060060, 1, 1, 0, 800), +(958, 2230106, 1052104, 1, 1, 0, 700), +(959, 2230106, 2040417, 1, 1, 0, 300), +(960, 2230107, 4000162, 1, 1, 0, 600000), +(961, 2230107, 2000001, 1, 1, 0, 20000), +(962, 2230107, 2002000, 1, 1, 0, 20000), +(963, 2230107, 2044302, 1, 1, 0, 300), +(964, 2230107, 1402000, 1, 1, 0, 700), +(965, 2230107, 1082026, 1, 1, 0, 1000), +(966, 2230107, 2041004, 1, 1, 0, 300), +(967, 2230107, 1041034, 1, 1, 0, 800), +(968, 2230107, 1062006, 1, 1, 0, 800), +(969, 2230107, 2060000, 1, 1, 0, 30000), +(970, 2230107, 4010002, 1, 1, 0, 9000), +(971, 2230107, 4020005, 1, 1, 0, 9000), +(972, 2230107, 1072051, 1, 1, 0, 800), +(973, 2230107, 2000003, 1, 1, 0, 20000), +(974, 2230107, 1332004, 1, 1, 0, 500), +(975, 2230107, 2061000, 1, 1, 0, 30000), +(976, 2230107, 1041051, 1, 1, 0, 800), +(977, 2230107, 1061047, 1, 1, 0, 800), +(978, 2230107, 1061054, 1, 1, 0, 800), +(979, 2230107, 1041058, 1, 1, 0, 800), +(980, 2230107, 1072288, 1, 1, 0, 800), +(981, 2230107, 2043110, 1, 1, 0, 300), +(982, 2230108, 4000160, 1, 1, 0, 600000), +(983, 2230108, 2000001, 1, 1, 0, 20000), +(984, 2230108, 2002003, 1, 1, 0, 20000), +(985, 2230108, 2044202, 1, 1, 0, 300), +(986, 2230108, 1072065, 1, 1, 0, 800), +(987, 2230108, 1041027, 1, 1, 0, 800), +(988, 2230108, 1061025, 1, 1, 0, 800), +(989, 2230108, 1002131, 1, 1, 0, 1500), +(990, 2230108, 2060000, 1, 1, 0, 30000), +(991, 2230108, 4010000, 1, 1, 0, 9000), +(992, 2230108, 4020007, 1, 1, 0, 9000), +(993, 2230108, 2000003, 1, 1, 0, 20000), +(994, 2230108, 1072054, 1, 1, 0, 800), +(995, 2230108, 1002119, 1, 1, 0, 1500), +(996, 2230108, 2061000, 1, 1, 0, 30000), +(997, 2230108, 1051005, 1, 1, 0, 700), +(998, 2230108, 1050024, 1, 1, 0, 700), +(999, 2230108, 4006001, 1, 1, 0, 10000), +(1000, 2230108, 1032004, 1, 1, 0, 1000), +(1001, 2230108, 1052101, 1, 1, 0, 700), +(1002, 2230108, 2040623, 1, 1, 0, 300), +(1003, 2230109, 4000164, 1, 1, 0, 600000), +(1004, 2230109, 4131010, 1, 1, 0, 6000), +(1005, 2230109, 2060000, 1, 1, 0, 30000), +(1006, 2230109, 2061000, 1, 1, 0, 30000), +(1007, 2230109, 2002002, 1, 1, 0, 20000), +(1008, 2230109, 4010004, 1, 1, 0, 9000), +(1009, 2230109, 4020003, 1, 1, 0, 9000), +(1010, 2230109, 1032007, 1, 1, 0, 1000), +(1011, 2230109, 4004002, 1, 1, 0, 10000), +(1012, 2230109, 2000002, 1, 1, 0, 20000), +(1013, 2230109, 2000003, 1, 1, 0, 20000), +(1014, 2230109, 2040701, 1, 1, 0, 300), +(1015, 2230109, 1002034, 1, 1, 0, 1500), +(1016, 2230109, 1372003, 1, 1, 0, 700), +(1017, 2230109, 1040041, 1, 1, 0, 800), +(1018, 2230109, 1060030, 1, 1, 0, 800), +(1019, 2230109, 1072054, 1, 1, 0, 800), +(1020, 2230109, 1072027, 1, 1, 0, 800), +(1021, 2230109, 1050021, 1, 1, 0, 700), +(1022, 2230109, 2070002, 1, 1, 0, 500), +(1023, 2230109, 1051007, 1, 1, 0, 700), +(1024, 2230109, 1002065, 1, 1, 0, 1500), +(1025, 2230109, 1002619, 1, 1, 0, 1500), +(1026, 2230110, 2060000, 1, 1, 0, 30000), +(1027, 2230110, 2061000, 1, 1, 0, 30000), +(1028, 2230110, 4000196, 1, 1, 0, 600000), +(1029, 2230110, 2000001, 1, 1, 0, 20000), +(1030, 2230110, 2000003, 1, 1, 0, 20000), +(1031, 2230110, 4020001, 1, 1, 0, 9000), +(1032, 2230110, 4020002, 1, 1, 0, 9000), +(1033, 2230110, 4010000, 1, 1, 0, 9000), +(1034, 2230110, 2002003, 1, 1, 0, 20000), +(1035, 2230110, 2041016, 1, 1, 0, 300), +(1036, 2230110, 1002121, 1, 1, 0, 1500), +(1037, 2230110, 1002058, 1, 1, 0, 1500), +(1038, 2230110, 2040901, 1, 1, 0, 300), +(1039, 2230110, 1002131, 1, 1, 0, 1500), +(1040, 2230110, 1040020, 1, 1, 0, 800), +(1041, 2230110, 1060014, 1, 1, 0, 800), +(1042, 2230110, 1072087, 1, 1, 0, 800), +(1043, 2230110, 1072053, 1, 1, 0, 800), +(1044, 2230110, 1082043, 1, 1, 0, 1000), +(1045, 2230110, 1332010, 1, 1, 0, 500), +(1046, 2230110, 1082006, 1, 1, 0, 1000), +(1047, 2230110, 1082026, 1, 1, 0, 1000), +(1048, 2230110, 1002616, 1, 1, 0, 1500), +(1049, 2230110, 2330000, 1, 1, 0, 500), +(1050, 2230110, 2044312, 1, 1, 0, 300), +(1051, 2230110, 2044805, 1, 1, 0, 300), +(1052, 2230111, 2000001, 1, 1, 0, 20000), +(1053, 2230111, 2000003, 1, 1, 0, 20000), +(1054, 2230111, 4000197, 1, 1, 0, 600000), +(1055, 2230111, 2002000, 1, 1, 0, 20000), +(1056, 2230111, 4010005, 1, 1, 0, 9000), +(1057, 2230111, 4010001, 1, 1, 0, 9000), +(1058, 2230111, 4020003, 1, 1, 0, 9000), +(1059, 2230111, 2060000, 1, 1, 0, 30000), +(1060, 2230111, 2061000, 1, 1, 0, 30000), +(1061, 2230111, 2040301, 1, 1, 0, 300), +(1062, 2230111, 2044301, 1, 1, 0, 300), +(1063, 2230111, 1302002, 1, 1, 0, 700), +(1064, 2230111, 1372004, 1, 1, 0, 700), +(1065, 2230111, 1040042, 1, 1, 0, 800), +(1066, 2230111, 1060031, 1, 1, 0, 800), +(1067, 2230111, 1041023, 1, 1, 0, 800), +(1068, 2230111, 1061019, 1, 1, 0, 800), +(1069, 2230111, 2043801, 1, 1, 0, 300), +(1070, 2230111, 1452005, 1, 1, 0, 500), +(1071, 2230111, 1082049, 1, 1, 0, 1000), +(1072, 2230111, 1082051, 1, 1, 0, 1000), +(1073, 2230111, 2049000, 1, 1, 0, 150), +(1074, 2230200, 4000165, 1, 1, 0, 600000), +(1075, 2230200, 2044601, 1, 1, 0, 300), +(1076, 2230200, 2000001, 1, 1, 0, 20000), +(1077, 2230200, 2000003, 1, 1, 0, 20000), +(1078, 2230200, 4010006, 1, 1, 0, 9000), +(1079, 2230200, 4020002, 1, 1, 0, 9000), +(1080, 2230200, 4004000, 1, 1, 0, 10000), +(1081, 2230200, 1040072, 1, 1, 0, 800), +(1082, 2230200, 1060061, 1, 1, 0, 800), +(1083, 2230200, 1422001, 1, 1, 0, 700), +(1084, 2230200, 1412000, 1, 1, 0, 700), +(1085, 2230200, 1072086, 1, 1, 0, 800), +(1086, 2230200, 1002160, 1, 1, 0, 1500), +(1087, 2230200, 1040062, 1, 1, 0, 800), +(1088, 2230200, 1060051, 1, 1, 0, 800), +(1089, 2230200, 2061000, 1, 1, 0, 30000), +(1090, 2230200, 2060000, 1, 1, 0, 30000), +(1091, 2230200, 2040501, 1, 1, 0, 300), +(1092, 2230200, 4006000, 1, 1, 0, 10000), +(1093, 2230200, 1412006, 1, 1, 0, 700), +(1094, 2230200, 1072291, 1, 1, 0, 800), +(1095, 2300100, 4000042, 1, 1, 0, 600000), +(1096, 2300100, 2060000, 1, 1, 0, 30000), +(1097, 2300100, 2061000, 1, 1, 0, 30000), +(1098, 2300100, 2000001, 1, 1, 0, 20000), +(1099, 2300100, 2000003, 1, 1, 0, 20000), +(1100, 2300100, 4010001, 1, 1, 0, 9000), +(1101, 2300100, 4020000, 1, 1, 0, 9000), +(1102, 2300100, 2010004, 1, 1, 0, 20000), +(1103, 2300100, 4003004, 1, 1, 0, 200000), +(1104, 2300100, 1040009, 1, 1, 0, 800), +(1105, 2300100, 1060009, 1, 1, 0, 800), +(1106, 2300100, 1040043, 1, 1, 0, 800), +(1107, 2300100, 1060032, 1, 1, 0, 800), +(1108, 2300100, 1041039, 1, 1, 0, 800), +(1109, 2300100, 1061041, 1, 1, 0, 800), +(1110, 2300100, 1082002, 1, 1, 0, 1000), +(1111, 2300100, 2048004, 1, 1, 0, 300), +(1112, 2300100, 2041002, 1, 1, 0, 300), +(1113, 2300100, 1002119, 1, 1, 0, 1500), +(1114, 2300100, 1452005, 1, 1, 0, 500), +(1115, 2300100, 1052098, 1, 1, 0, 700), +(1116, 2300100, 1052101, 1, 1, 0, 700), +(1117, 2300100, 2044801, 1, 1, 0, 300), +(1118, 2300100, 2040024, 1, 1, 0, 300), +(1119, 2300100, 2043112, 1, 1, 0, 300), +(1120, 3000000, 4000063, 1, 1, 0, 600000), +(1121, 3000000, 2041016, 1, 1, 0, 300), +(1122, 3000000, 2000001, 1, 1, 0, 20000), +(1123, 3000000, 2000003, 1, 1, 0, 20000), +(1124, 3000000, 4020004, 1, 1, 0, 9000), +(1125, 3000000, 4010002, 1, 1, 0, 9000), +(1126, 3000000, 4004000, 1, 1, 0, 10000), +(1127, 3000000, 1382018, 1, 1, 0, 700), +(1128, 3000000, 1312016, 1, 1, 0, 700), +(1129, 3000000, 1312005, 1, 1, 0, 700), +(1130, 3000000, 1040021, 1, 1, 0, 800), +(1131, 3000000, 1060017, 1, 1, 0, 800), +(1132, 3000000, 1002137, 1, 1, 0, 1500), +(1133, 3000000, 1032006, 1, 1, 0, 1000), +(1134, 3000000, 1060050, 1, 1, 0, 800), +(1135, 3000000, 1040061, 1, 1, 0, 800), +(1136, 3000000, 2061000, 1, 1, 0, 30000), +(1137, 3000000, 2060000, 1, 1, 0, 30000), +(1138, 3000000, 2041005, 1, 1, 0, 300), +(1139, 3000000, 4006000, 1, 1, 0, 10000), +(1140, 3000000, 1082037, 1, 1, 0, 1000), +(1141, 3000000, 1002622, 1, 1, 0, 1500), +(1142, 3000000, 2040316, 1, 1, 0, 300), +(1143, 3000000, 2040620, 1, 1, 0, 300), +(1144, 3000001, 4000068, 1, 1, 0, 600000), +(1145, 3000001, 2000001, 1, 1, 0, 20000), +(1146, 3000001, 2000003, 1, 1, 0, 20000), +(1147, 3000001, 4020004, 1, 1, 0, 9000), +(1148, 3000001, 4010002, 1, 1, 0, 9000), +(1149, 3000001, 2050000, 1, 1, 0, 50000), +(1150, 3000001, 2050001, 1, 1, 0, 50000), +(1151, 3000001, 2050002, 1, 1, 0, 50000), +(1152, 3000001, 2050003, 1, 1, 0, 50000), +(1153, 3000001, 2050004, 1, 1, 0, 50000), +(1154, 3000005, 4000106, 1, 1, 0, 600000), +(1155, 3000005, 4131003, 1, 1, 0, 6000), +(1156, 3000005, 2060000, 1, 1, 0, 30000), +(1157, 3000005, 2061000, 1, 1, 0, 30000), +(1158, 3000005, 4010001, 1, 1, 0, 9000), +(1159, 3000005, 4020000, 1, 1, 0, 9000), +(1160, 3000005, 4004001, 1, 1, 0, 10000), +(1161, 3000005, 2000002, 1, 1, 0, 20000), +(1162, 3000005, 2000003, 1, 1, 0, 20000), +(1163, 3000005, 2040701, 1, 1, 0, 300), +(1164, 3000005, 1462000, 1, 1, 0, 500), +(1165, 3000005, 1322014, 1, 1, 0, 700), +(1166, 3000005, 1050030, 1, 1, 0, 700), +(1167, 3000005, 1040058, 1, 1, 0, 800), +(1168, 3000005, 1060044, 1, 1, 0, 800), +(1169, 3000005, 1041058, 1, 1, 0, 800), +(1170, 3000005, 1061054, 1, 1, 0, 800), +(1171, 3000005, 1072101, 1, 1, 0, 800), +(1172, 3000005, 1002013, 1, 1, 0, 1500), +(1173, 3000005, 1052107, 1, 1, 0, 700), +(1174, 3000006, 4000166, 1, 1, 0, 600000), +(1175, 3000006, 4131003, 1, 1, 0, 6000), +(1176, 3000006, 2060000, 1, 1, 0, 30000), +(1177, 3000006, 2061000, 1, 1, 0, 30000), +(1178, 3000006, 4010005, 1, 1, 0, 9000), +(1179, 3000006, 4020001, 1, 1, 0, 9000), +(1180, 3000006, 4004001, 1, 1, 0, 10000), +(1181, 3000006, 2000002, 1, 1, 0, 20000), +(1182, 3000006, 2000003, 1, 1, 0, 20000), +(1183, 3000006, 2040601, 1, 1, 0, 300), +(1184, 3000006, 1082046, 1, 1, 0, 1000), +(1185, 3000006, 1382017, 1, 1, 0, 700), +(1186, 3000006, 1082005, 1, 1, 0, 1000), +(1187, 3000006, 1050002, 1, 1, 0, 700), +(1188, 3000006, 1072086, 1, 1, 0, 800), +(1189, 3000006, 1072103, 1, 1, 0, 800), +(1190, 3000006, 1462000, 1, 1, 0, 500), +(1191, 3000006, 1040040, 1, 1, 0, 800), +(1192, 3000006, 1060060, 1, 1, 0, 800), +(1193, 3000006, 1041052, 1, 1, 0, 800), +(1194, 3000006, 1061048, 1, 1, 0, 800), +(1195, 3000006, 1082189, 1, 1, 0, 1000), +(1196, 3000006, 2040422, 1, 1, 0, 300), +(1197, 3000006, 2040530, 1, 1, 0, 300), +(1198, 3100101, 2000003, 1, 1, 0, 20000), +(1199, 3100101, 2060000, 1, 1, 0, 30000), +(1200, 3100101, 2061000, 1, 1, 0, 30000), +(1201, 3100101, 2000002, 1, 1, 0, 20000), +(1202, 3100101, 4000334, 1, 1, 0, 600000), +(1203, 3100101, 4010005, 1, 1, 0, 9000), +(1204, 3100101, 4020000, 1, 1, 0, 9000), +(1205, 3100101, 4006000, 1, 1, 0, 10000), +(1206, 3100101, 2044701, 1, 1, 0, 300), +(1207, 3100101, 1332020, 1, 1, 0, 500), +(1208, 3100101, 1040000, 1, 1, 0, 800), +(1209, 3100101, 1060075, 1, 1, 0, 800), +(1210, 3100101, 1402010, 1, 1, 0, 700), +(1211, 3100101, 1032007, 1, 1, 0, 1000), +(1212, 3100101, 1072078, 1, 1, 0, 800), +(1213, 3100101, 1082046, 1, 1, 0, 1000), +(1214, 3100101, 1002156, 1, 1, 0, 1500), +(1215, 3100101, 4010007, 1, 1, 0, 9000), +(1216, 3100101, 1002622, 1, 1, 0, 1500), +(1217, 3100101, 4130005, 1, 1, 0, 6000), +(1218, 3100101, 4130009, 1, 1, 0, 6000), +(1219, 3100102, 2000003, 1, 1, 0, 20000), +(1220, 3100102, 2060000, 1, 1, 0, 30000), +(1221, 3100102, 2061000, 1, 1, 0, 30000), +(1222, 3100102, 2000002, 1, 1, 0, 20000), +(1223, 3100102, 4000335, 1, 1, 0, 600000), +(1224, 3100102, 4020002, 1, 1, 0, 9000), +(1225, 3100102, 4006000, 1, 1, 0, 10000), +(1226, 3100102, 2040401, 1, 1, 0, 300), +(1227, 3100102, 2041018, 1, 1, 0, 300), +(1228, 3100102, 1462004, 1, 1, 0, 500), +(1229, 3100102, 1472011, 1, 1, 0, 500), +(1230, 3100102, 1002181, 1, 1, 0, 1500), +(1231, 3100102, 1050022, 1, 1, 0, 700), +(1232, 3100102, 1061048, 1, 1, 0, 800), +(1233, 3100102, 1041052, 1, 1, 0, 800), +(1234, 3100102, 1082069, 1, 1, 0, 1000), +(1235, 3100102, 4003004, 1, 1, 0, 200000), +(1236, 3100102, 4010007, 1, 1, 0, 9000), +(1237, 3100102, 1072294, 1, 1, 0, 800), +(1238, 3110100, 2000002, 1, 1, 0, 20000), +(1239, 3110100, 2000003, 1, 1, 0, 20000), +(1240, 3110100, 4010002, 1, 1, 0, 9000), +(1241, 3110100, 4020002, 1, 1, 0, 9000), +(1242, 3110100, 1322009, 1, 1, 0, 700), +(1243, 3110100, 1332014, 1, 1, 0, 500), +(1244, 3110100, 4000032, 1, 1, 0, 600000), +(1245, 3110100, 2041002, 1, 1, 0, 300), +(1246, 3110100, 4006000, 1, 1, 0, 10000), +(1247, 3110100, 1051013, 1, 1, 0, 700), +(1248, 3110100, 1082049, 1, 1, 0, 1000), +(1249, 3110100, 1422001, 1, 1, 0, 700), +(1250, 3110100, 1041051, 1, 1, 0, 800), +(1251, 3110100, 1061047, 1, 1, 0, 800), +(1252, 3110100, 1082046, 1, 1, 0, 1000), +(1253, 3110100, 1072112, 1, 1, 0, 800), +(1254, 3110100, 1092012, 1, 1, 0, 700), +(1255, 3110100, 1432005, 1, 1, 0, 500), +(1256, 3110100, 1002622, 1, 1, 0, 1500), +(1257, 3110100, 2044802, 1, 1, 0, 300), +(1258, 3110100, 4130002, 1, 1, 0, 6000), +(1259, 3110100, 4130008, 1, 1, 0, 6000), +(1260, 3110100, 4130010, 1, 1, 0, 6000), +(1261, 3110101, 4000107, 1, 1, 0, 600000), +(1262, 3110101, 4131001, 1, 1, 0, 6000), +(1263, 3110101, 2002009, 1, 1, 0, 20000), +(1264, 3110101, 2060000, 1, 1, 0, 30000), +(1265, 3110101, 2061000, 1, 1, 0, 30000), +(1266, 3110101, 4020001, 1, 1, 0, 9000), +(1267, 3110101, 4004001, 1, 1, 0, 10000), +(1268, 3110101, 2000002, 1, 1, 0, 20000), +(1269, 3110101, 2000003, 1, 1, 0, 20000), +(1270, 3110101, 2041017, 1, 1, 0, 300), +(1271, 3110101, 1092007, 1, 1, 0, 700), +(1272, 3110101, 1041055, 1, 1, 0, 800), +(1273, 3110101, 1061051, 1, 1, 0, 800), +(1274, 3110101, 1082007, 1, 1, 0, 1000), +(1275, 3110101, 1072077, 1, 1, 0, 800), +(1276, 3110101, 1462004, 1, 1, 0, 500), +(1277, 3110101, 1050002, 1, 1, 0, 700), +(1278, 3110101, 1040062, 1, 1, 0, 800), +(1279, 3110101, 1060051, 1, 1, 0, 800), +(1280, 3110101, 1082035, 1, 1, 0, 1000), +(1281, 3110101, 1072090, 1, 1, 0, 800), +(1282, 3110101, 1472014, 1, 1, 0, 500), +(1283, 3110101, 1082189, 1, 1, 0, 1000), +(1284, 3110101, 2330001, 1, 1, 0, 500), +(1285, 3110101, 2044012, 1, 1, 0, 300), +(1286, 3110101, 4130002, 1, 1, 0, 6000), +(1287, 3110102, 4000095, 1, 1, 0, 600000), +(1288, 3110102, 4000021, 1, 1, 0, 50000), +(1289, 3110102, 4131002, 1, 1, 0, 6000), +(1290, 3110102, 2060000, 1, 1, 0, 30000), +(1291, 3110102, 2061000, 1, 1, 0, 30000), +(1292, 3110102, 4010001, 1, 1, 0, 9000), +(1293, 3110102, 4010005, 1, 1, 0, 9000), +(1294, 3110102, 4020002, 1, 1, 0, 9000), +(1295, 3110102, 4004000, 1, 1, 0, 10000), +(1296, 3110102, 2000002, 1, 1, 0, 20000), +(1297, 3110102, 2000003, 1, 1, 0, 20000), +(1298, 3110102, 2044401, 1, 1, 0, 300), +(1299, 3110102, 1002173, 1, 1, 0, 1500), +(1300, 3110102, 1002164, 1, 1, 0, 1500), +(1301, 3110102, 1082051, 1, 1, 0, 1000), +(1302, 3110102, 1072035, 1, 1, 0, 800), +(1303, 3110102, 1332009, 1, 1, 0, 500), +(1304, 3110102, 1040029, 1, 1, 0, 800), +(1305, 3110102, 1060020, 1, 1, 0, 800), +(1306, 3110102, 1082068, 1, 1, 0, 1000), +(1307, 3110102, 1312006, 1, 1, 0, 700), +(1308, 3110102, 1322016, 1, 1, 0, 700), +(1309, 3110102, 1072294, 1, 1, 0, 800), +(1310, 3110102, 2044210, 1, 1, 0, 300), +(1311, 3110102, 4130003, 1, 1, 0, 6000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(1312, 3110102, 4130004, 1, 1, 0, 6000), +(1313, 3110102, 4130011, 1, 1, 0, 6000), +(1314, 3110300, 2000003, 1, 1, 0, 20000), +(1315, 3110300, 2060000, 1, 1, 0, 30000), +(1316, 3110300, 2061000, 1, 1, 0, 30000), +(1317, 3110300, 2000002, 1, 1, 0, 20000), +(1318, 3110300, 4010005, 1, 1, 0, 9000), +(1319, 3110300, 4020000, 1, 1, 0, 9000), +(1320, 3110300, 4006000, 1, 1, 0, 10000), +(1321, 3110300, 2044701, 1, 1, 0, 300), +(1322, 3110300, 1332020, 1, 1, 0, 500), +(1323, 3110300, 1040000, 1, 1, 0, 800), +(1324, 3110300, 1060075, 1, 1, 0, 800), +(1325, 3110300, 1402010, 1, 1, 0, 700), +(1326, 3110300, 1032007, 1, 1, 0, 1000), +(1327, 3110300, 1072078, 1, 1, 0, 800), +(1328, 3110300, 1082046, 1, 1, 0, 1000), +(1329, 3110300, 1002156, 1, 1, 0, 1500), +(1330, 3110300, 4010007, 1, 1, 0, 9000), +(1331, 3110300, 4000353, 1, 1, 0, 600000), +(1332, 3110300, 1072294, 1, 1, 0, 800), +(1333, 3110300, 2040530, 1, 1, 0, 300), +(1334, 3110300, 2044410, 1, 1, 0, 300), +(1335, 3110300, 2049100, 1, 1, 0, 150), +(1336, 3110300, 4130002, 1, 1, 0, 6000), +(1337, 3110300, 4130009, 1, 1, 0, 6000), +(1338, 3110300, 4130013, 1, 1, 0, 6000), +(1339, 3110301, 2000003, 1, 1, 0, 20000), +(1340, 3110301, 2060000, 1, 1, 0, 30000), +(1341, 3110301, 2061000, 1, 1, 0, 30000), +(1342, 3110301, 2000002, 1, 1, 0, 20000), +(1343, 3110301, 4010005, 1, 1, 0, 9000), +(1344, 3110301, 4020000, 1, 1, 0, 9000), +(1345, 3110301, 4006000, 1, 1, 0, 10000), +(1346, 3110301, 2044701, 1, 1, 0, 300), +(1347, 3110301, 1332020, 1, 1, 0, 500), +(1348, 3110301, 1040000, 1, 1, 0, 800), +(1349, 3110301, 1060075, 1, 1, 0, 800), +(1350, 3110301, 1402010, 1, 1, 0, 700), +(1351, 3110301, 1032007, 1, 1, 0, 1000), +(1352, 3110301, 1072078, 1, 1, 0, 800), +(1353, 3110301, 1082046, 1, 1, 0, 1000), +(1354, 3110301, 1002156, 1, 1, 0, 1500), +(1355, 3110301, 4010007, 1, 1, 0, 9000), +(1356, 3110301, 4000352, 1, 1, 0, 600000), +(1357, 3110301, 1082189, 1, 1, 0, 1000), +(1358, 3110301, 2040420, 1, 1, 0, 300), +(1359, 3110301, 4130001, 1, 1, 0, 6000), +(1360, 3110301, 4130006, 1, 1, 0, 6000), +(1361, 3110302, 2000002, 1, 1, 0, 20000), +(1362, 3110302, 2002005, 1, 1, 0, 20000), +(1363, 3110302, 2044502, 1, 1, 0, 300), +(1364, 3110302, 2000003, 1, 1, 0, 20000), +(1365, 3110302, 1322003, 1, 1, 0, 700), +(1366, 3110302, 2060000, 1, 1, 0, 30000), +(1367, 3110302, 4010005, 1, 1, 0, 9000), +(1368, 3110302, 4020006, 1, 1, 0, 9000), +(1369, 3110302, 2061000, 1, 1, 0, 30000), +(1370, 3110302, 1040021, 1, 1, 0, 800), +(1371, 3110302, 1060016, 1, 1, 0, 800), +(1372, 3110302, 1002180, 1, 1, 0, 1500), +(1373, 3110302, 1002143, 1, 1, 0, 1500), +(1374, 3110302, 1060052, 1, 1, 0, 800), +(1375, 3110302, 1040063, 1, 1, 0, 800), +(1376, 3110302, 1432003, 1, 1, 0, 500), +(1377, 3110302, 1051025, 1, 1, 0, 700), +(1378, 3110302, 1002025, 1, 1, 0, 1500), +(1379, 3110302, 1040079, 1, 1, 0, 800), +(1380, 3110302, 1060069, 1, 1, 0, 800), +(1381, 3110302, 4000356, 1, 1, 0, 600000), +(1382, 3110302, 1072297, 1, 1, 0, 800), +(1383, 3110302, 2040324, 1, 1, 0, 300), +(1384, 3110302, 2044210, 1, 1, 0, 300), +(1385, 3110302, 4130010, 1, 1, 0, 6000), +(1386, 3110302, 4130015, 1, 1, 0, 6000), +(1387, 3110303, 2060000, 1, 1, 0, 30000), +(1388, 3110303, 2061000, 1, 1, 0, 30000), +(1389, 3110303, 4010001, 1, 1, 0, 9000), +(1390, 3110303, 4004003, 1, 1, 0, 10000), +(1391, 3110303, 4020005, 1, 1, 0, 9000), +(1392, 3110303, 2000002, 1, 1, 0, 20000), +(1393, 3110303, 2000003, 1, 1, 0, 20000), +(1394, 3110303, 2040302, 1, 1, 0, 300), +(1395, 3110303, 1382018, 1, 1, 0, 700), +(1396, 3110303, 1472012, 1, 1, 0, 500), +(1397, 3110303, 1432003, 1, 1, 0, 500), +(1398, 3110303, 1462005, 1, 1, 0, 500), +(1399, 3110303, 1002183, 1, 1, 0, 1500), +(1400, 3110303, 1002167, 1, 1, 0, 1500), +(1401, 3110303, 1040086, 1, 1, 0, 800), +(1402, 3110303, 1060075, 1, 1, 0, 800), +(1403, 3110303, 1041076, 1, 1, 0, 800), +(1404, 3110303, 1061071, 1, 1, 0, 800), +(1405, 3110303, 1072000, 1, 1, 0, 800), +(1406, 3110303, 1032018, 1, 1, 0, 1000), +(1407, 3110303, 1082082, 1, 1, 0, 1000), +(1408, 3110303, 1082085, 1, 1, 0, 1000), +(1409, 3110303, 1072129, 1, 1, 0, 800), +(1410, 3110303, 1082010, 1, 1, 0, 1000), +(1411, 3110303, 4000356, 1, 1, 0, 600000), +(1412, 3110303, 1072297, 1, 1, 0, 800), +(1413, 3110303, 2330001, 1, 1, 0, 500), +(1414, 3110303, 2040417, 1, 1, 0, 300), +(1415, 3110303, 2044112, 1, 1, 0, 300), +(1416, 3110303, 2044310, 1, 1, 0, 300), +(1417, 3110303, 2044809, 1, 1, 0, 300), +(1418, 3110303, 4130001, 1, 1, 0, 6000), +(1419, 3110303, 4130002, 1, 1, 0, 6000), +(1420, 3110303, 4130016, 1, 1, 0, 6000), +(1421, 3210100, 4000021, 1, 1, 0, 50000), +(1422, 3210100, 2070001, 1, 1, 0, 500), +(1423, 3210100, 2000002, 1, 1, 0, 20000), +(1424, 3210100, 2000003, 1, 1, 0, 20000), +(1425, 3210100, 4000024, 1, 1, 0, 600000), +(1426, 3210100, 4020000, 1, 1, 0, 9000), +(1427, 3210100, 4010001, 1, 1, 0, 9000), +(1428, 3210100, 1332020, 1, 1, 0, 500), +(1429, 3210100, 4020007, 1, 1, 0, 9000), +(1430, 3210100, 1452005, 1, 1, 0, 500), +(1431, 3210100, 1040026, 1, 1, 0, 800), +(1432, 3210100, 1060019, 1, 1, 0, 800), +(1433, 3210100, 1082044, 1, 1, 0, 1000), +(1434, 3210100, 1072079, 1, 1, 0, 800), +(1435, 3210100, 1082052, 1, 1, 0, 1000), +(1436, 3210100, 1472012, 1, 1, 0, 500), +(1437, 3210100, 1072091, 1, 1, 0, 800), +(1438, 3210100, 1002178, 1, 1, 0, 1500), +(1439, 3210100, 1072103, 1, 1, 0, 800), +(1440, 3210100, 1462005, 1, 1, 0, 500), +(1441, 3210100, 1372012, 1, 1, 0, 700), +(1442, 3210100, 1002141, 1, 1, 0, 1500), +(1443, 3210100, 4010002, 1, 1, 0, 9000), +(1444, 3210100, 1372003, 1, 1, 0, 700), +(1445, 3210100, 2000001, 1, 1, 0, 20000), +(1446, 3210100, 1052107, 1, 1, 0, 700), +(1447, 3210100, 4130011, 1, 1, 0, 6000), +(1448, 3210100, 4130016, 1, 1, 0, 6000), +(1449, 3210100, 4130017, 1, 1, 0, 6000), +(1450, 3210200, 4000073, 1, 1, 0, 600000), +(1451, 3210200, 4000021, 1, 1, 0, 50000), +(1452, 3210200, 2000002, 1, 1, 0, 20000), +(1453, 3210200, 2000003, 1, 1, 0, 20000), +(1454, 3210200, 4003004, 1, 1, 0, 200000), +(1455, 3210200, 4020000, 1, 1, 0, 9000), +(1456, 3210200, 4020001, 1, 1, 0, 9000), +(1457, 3210200, 4004000, 1, 1, 0, 10000), +(1458, 3210200, 2070001, 1, 1, 0, 500), +(1459, 3210200, 2044701, 1, 1, 0, 300), +(1460, 3210200, 1322009, 1, 1, 0, 700), +(1461, 3210200, 2050003, 1, 1, 0, 50000), +(1462, 3210200, 1002174, 1, 1, 0, 1500), +(1463, 3210200, 1002038, 1, 1, 0, 1500), +(1464, 3210200, 1082042, 1, 1, 0, 1000), +(1465, 3210200, 1072041, 1, 1, 0, 800), +(1466, 3210200, 1412006, 1, 1, 0, 700), +(1467, 3210200, 1032008, 1, 1, 0, 1000), +(1468, 3210200, 1072002, 1, 1, 0, 800), +(1469, 3210200, 1332014, 1, 1, 0, 500), +(1470, 3210200, 1040073, 1, 1, 0, 800), +(1471, 3210200, 1060062, 1, 1, 0, 800), +(1472, 3210200, 1050035, 1, 1, 0, 700), +(1473, 3210200, 1462005, 1, 1, 0, 500), +(1474, 3210200, 1002145, 1, 1, 0, 1500), +(1475, 3210200, 1052107, 1, 1, 0, 700), +(1476, 3210200, 4130007, 1, 1, 0, 6000), +(1477, 3210200, 4130016, 1, 1, 0, 6000), +(1478, 3210201, 4000073, 1, 1, 0, 600000), +(1479, 3210201, 4000021, 1, 1, 0, 50000), +(1480, 3210201, 2000002, 1, 1, 0, 20000), +(1481, 3210201, 2000003, 1, 1, 0, 20000), +(1482, 3210201, 4003004, 1, 1, 0, 200000), +(1483, 3210201, 4020003, 1, 1, 0, 9000), +(1484, 3210201, 4010002, 1, 1, 0, 9000), +(1485, 3210201, 4004001, 1, 1, 0, 10000), +(1486, 3210201, 2044501, 1, 1, 0, 300), +(1487, 3210201, 4006001, 1, 1, 0, 10000), +(1488, 3210201, 4020007, 1, 1, 0, 9000), +(1489, 3210201, 1442001, 1, 1, 0, 700), +(1490, 3210201, 1332012, 1, 1, 0, 500), +(1491, 3210201, 1072083, 1, 1, 0, 800), +(1492, 3210201, 1002172, 1, 1, 0, 1500), +(1493, 3210201, 1472013, 1, 1, 0, 500), +(1494, 3210201, 1072089, 1, 1, 0, 800), +(1495, 3210201, 1082070, 1, 1, 0, 1000), +(1496, 3210201, 1051016, 1, 1, 0, 700), +(1497, 3210201, 1050036, 1, 1, 0, 700), +(1498, 3210201, 1051024, 1, 1, 0, 700), +(1499, 3210201, 1492004, 1, 1, 0, 500), +(1500, 3210201, 2043114, 1, 1, 0, 300), +(1501, 3210201, 4130003, 1, 1, 0, 6000), +(1502, 3210201, 4130004, 1, 1, 0, 6000), +(1503, 3210201, 4130012, 1, 1, 0, 6000), +(1504, 3210202, 4000073, 1, 1, 0, 600000), +(1505, 3210202, 4000021, 1, 1, 0, 50000), +(1506, 3210202, 2000002, 1, 1, 0, 20000), +(1507, 3210202, 2000003, 1, 1, 0, 20000), +(1508, 3210202, 4003004, 1, 1, 0, 200000), +(1509, 3210202, 4020005, 1, 1, 0, 9000), +(1510, 3210202, 4010001, 1, 1, 0, 9000), +(1511, 3210202, 4004003, 1, 1, 0, 10000), +(1512, 3210202, 4006000, 1, 1, 0, 10000), +(1513, 3210202, 2043701, 1, 1, 0, 300), +(1514, 3210202, 2070003, 1, 1, 0, 500), +(1515, 3210202, 1302017, 1, 1, 0, 700), +(1516, 3210202, 1002037, 1, 1, 0, 1500), +(1517, 3210202, 1002163, 1, 1, 0, 1500), +(1518, 3210202, 1040028, 1, 1, 0, 800), +(1519, 3210202, 1332001, 1, 1, 0, 500), +(1520, 3210202, 1041053, 1, 1, 0, 800), +(1521, 3210202, 1061049, 1, 1, 0, 800), +(1522, 3210202, 1060020, 1, 1, 0, 800), +(1523, 3210202, 1041066, 1, 1, 0, 800), +(1524, 3210202, 1061061, 1, 1, 0, 800), +(1525, 3210202, 1082045, 1, 1, 0, 1000), +(1526, 3210202, 1322015, 1, 1, 0, 700), +(1527, 3210202, 1032011, 1, 1, 0, 1000), +(1528, 3210202, 1492004, 1, 1, 0, 500), +(1529, 3210202, 1002628, 1, 1, 0, 1500), +(1530, 3210202, 2043110, 1, 1, 0, 300), +(1531, 3210202, 2044807, 1, 1, 0, 300), +(1532, 3210202, 4130006, 1, 1, 0, 6000), +(1533, 3210202, 4130012, 1, 1, 0, 6000), +(1534, 3210203, 4000108, 1, 1, 0, 600000), +(1535, 3210203, 4131009, 1, 1, 0, 6000), +(1536, 3210203, 2002008, 1, 1, 0, 20000), +(1537, 3210203, 2060000, 1, 1, 0, 30000), +(1538, 3210203, 2061000, 1, 1, 0, 30000), +(1539, 3210203, 4010002, 1, 1, 0, 9000), +(1540, 3210203, 4004003, 1, 1, 0, 10000), +(1541, 3210203, 2000002, 1, 1, 0, 20000), +(1542, 3210203, 2000003, 1, 1, 0, 20000), +(1543, 3210203, 2044501, 1, 1, 0, 300), +(1544, 3210203, 1060018, 1, 1, 0, 800), +(1545, 3210203, 1040021, 1, 1, 0, 800), +(1546, 3210203, 1072080, 1, 1, 0, 800), +(1547, 3210203, 1051006, 1, 1, 0, 700), +(1548, 3210203, 1050039, 1, 1, 0, 700), +(1549, 3210203, 1002153, 1, 1, 0, 1500), +(1550, 3210203, 1002166, 1, 1, 0, 1500), +(1551, 3210203, 1082025, 1, 1, 0, 1000), +(1552, 3210203, 1072126, 1, 1, 0, 800), +(1553, 3210203, 1072115, 1, 1, 0, 800), +(1554, 3210203, 1312007, 1, 1, 0, 700), +(1555, 3210203, 1332031, 1, 1, 0, 500), +(1556, 3210203, 1482005, 1, 1, 0, 500), +(1557, 3210203, 2040923, 1, 1, 0, 300), +(1558, 3210203, 2043212, 1, 1, 0, 300), +(1559, 3210203, 2049100, 1, 1, 0, 150), +(1560, 3210203, 4130003, 1, 1, 0, 6000), +(1561, 3210204, 4000109, 1, 1, 0, 600000), +(1562, 3210204, 4003004, 1, 1, 0, 200000), +(1563, 3210204, 4003005, 1, 1, 0, 200000), +(1564, 3210204, 2060000, 1, 1, 0, 30000), +(1565, 3210204, 2061000, 1, 1, 0, 30000), +(1566, 3210204, 4010004, 1, 1, 0, 9000), +(1567, 3210204, 4020006, 1, 1, 0, 9000), +(1568, 3210204, 4004002, 1, 1, 0, 10000), +(1569, 3210204, 2000002, 1, 1, 0, 20000), +(1570, 3210204, 2000003, 1, 1, 0, 20000), +(1571, 3210204, 2043202, 1, 1, 0, 300), +(1572, 3210204, 1040070, 1, 1, 0, 800), +(1573, 3210204, 1060059, 1, 1, 0, 800), +(1574, 3210204, 1040060, 1, 1, 0, 800), +(1575, 3210204, 1060046, 1, 1, 0, 800), +(1576, 3210204, 1082053, 1, 1, 0, 1000), +(1577, 3210204, 1050031, 1, 1, 0, 700), +(1578, 3210204, 1002004, 1, 1, 0, 1500), +(1579, 3210204, 1050021, 1, 1, 0, 700), +(1580, 3210204, 1072002, 1, 1, 0, 800), +(1581, 3210204, 1082071, 1, 1, 0, 1000), +(1582, 3210204, 1332011, 1, 1, 0, 500), +(1583, 3210204, 1052110, 1, 1, 0, 700), +(1584, 3210204, 2040617, 1, 1, 0, 300), +(1585, 3210204, 4130000, 1, 1, 0, 6000), +(1586, 3210204, 4130015, 1, 1, 0, 6000), +(1587, 3210204, 4130017, 1, 1, 0, 6000), +(1588, 3210205, 4000096, 1, 1, 0, 600000), +(1589, 3210205, 4000021, 1, 1, 0, 50000), +(1590, 3210205, 2002010, 1, 1, 0, 20000), +(1591, 3210205, 2060000, 1, 1, 0, 30000), +(1592, 3210205, 2061000, 1, 1, 0, 30000), +(1593, 3210205, 4020005, 1, 1, 0, 9000), +(1594, 3210205, 4004002, 1, 1, 0, 10000), +(1595, 3210205, 2000002, 1, 1, 0, 20000), +(1596, 3210205, 2000003, 1, 1, 0, 20000), +(1597, 3210205, 2040703, 1, 1, 0, 300), +(1598, 3210205, 2050001, 1, 1, 0, 50000), +(1599, 3210205, 1041043, 1, 1, 0, 800), +(1600, 3210205, 1061036, 1, 1, 0, 800), +(1601, 3210205, 1040057, 1, 1, 0, 800), +(1602, 3210205, 1060043, 1, 1, 0, 800), +(1603, 3210205, 1002048, 1, 1, 0, 1500), +(1604, 3210205, 1002136, 1, 1, 0, 1500), +(1605, 3210205, 1040076, 1, 1, 0, 800), +(1606, 3210205, 1060065, 1, 1, 0, 800), +(1607, 3210205, 1051015, 1, 1, 0, 700), +(1608, 3210205, 1050037, 1, 1, 0, 700), +(1609, 3210205, 1082075, 1, 1, 0, 1000), +(1610, 3210205, 1382019, 1, 1, 0, 700), +(1611, 3210205, 1082192, 1, 1, 0, 1000), +(1612, 3210205, 1052113, 1, 1, 0, 700), +(1613, 3210205, 4130001, 1, 1, 0, 6000), +(1614, 3210205, 4130004, 1, 1, 0, 6000), +(1615, 3210205, 4130014, 1, 1, 0, 6000), +(1616, 3210206, 4000103, 1, 1, 0, 600000), +(1617, 3210206, 4131006, 1, 1, 0, 6000), +(1618, 3210206, 2060000, 1, 1, 0, 30000), +(1619, 3210206, 2061000, 1, 1, 0, 30000), +(1620, 3210206, 4010003, 1, 1, 0, 9000), +(1621, 3210206, 4020005, 1, 1, 0, 9000), +(1622, 3210206, 4004000, 1, 1, 0, 10000), +(1623, 3210206, 2000002, 1, 1, 0, 20000), +(1624, 3210206, 2000003, 1, 1, 0, 20000), +(1625, 3210206, 2043001, 1, 1, 0, 300), +(1626, 3210206, 1332020, 1, 1, 0, 500), +(1627, 3210206, 2070003, 1, 1, 0, 500), +(1628, 3210206, 1072036, 1, 1, 0, 800), +(1629, 3210206, 1072082, 1, 1, 0, 800), +(1630, 3210206, 1072003, 1, 1, 0, 800), +(1631, 3210206, 1002179, 1, 1, 0, 1500), +(1632, 3210206, 1072103, 1, 1, 0, 800), +(1633, 3210206, 1051026, 1, 1, 0, 700), +(1634, 3210206, 1002168, 1, 1, 0, 1500), +(1635, 3210206, 1040000, 1, 1, 0, 800), +(1636, 3210206, 1060000, 1, 1, 0, 800), +(1637, 3210206, 1040081, 1, 1, 0, 800), +(1638, 3210206, 1060070, 1, 1, 0, 800), +(1639, 3210206, 1051032, 1, 1, 0, 700), +(1640, 3210206, 1002207, 1, 1, 0, 1500), +(1641, 3210206, 1072132, 1, 1, 0, 800), +(1642, 3210206, 1002212, 1, 1, 0, 1500), +(1643, 3210206, 1492005, 1, 1, 0, 500), +(1644, 3210206, 4130015, 1, 1, 0, 6000), +(1645, 3210206, 4130016, 1, 1, 0, 6000), +(1646, 3210207, 4000113, 1, 1, 0, 600000), +(1647, 3210207, 4131011, 1, 1, 0, 6000), +(1648, 3210207, 2060000, 1, 1, 0, 30000), +(1649, 3210207, 2061000, 1, 1, 0, 30000), +(1650, 3210207, 4020000, 1, 1, 0, 9000), +(1651, 3210207, 4020002, 1, 1, 0, 9000), +(1652, 3210207, 4004000, 1, 1, 0, 10000), +(1653, 3210207, 2000002, 1, 1, 0, 20000), +(1654, 3210207, 2000003, 1, 1, 0, 20000), +(1655, 3210207, 2041018, 1, 1, 0, 300), +(1656, 3210207, 2043102, 1, 1, 0, 300), +(1657, 3210207, 2070008, 1, 1, 0, 500), +(1658, 3210207, 4020007, 1, 1, 0, 9000), +(1659, 3210207, 1082048, 1, 1, 0, 1000), +(1660, 3210207, 1072076, 1, 1, 0, 800), +(1661, 3210207, 1372001, 1, 1, 0, 700), +(1662, 3210207, 1002139, 1, 1, 0, 1500), +(1663, 3210207, 1002178, 1, 1, 0, 1500), +(1664, 3210207, 1041069, 1, 1, 0, 800), +(1665, 3210207, 1061064, 1, 1, 0, 800), +(1666, 3210207, 1082055, 1, 1, 0, 1000), +(1667, 3210207, 1050038, 1, 1, 0, 700), +(1668, 3210207, 1082024, 1, 1, 0, 1000), +(1669, 3210207, 1072107, 1, 1, 0, 800), +(1670, 3210207, 1412005, 1, 1, 0, 700), +(1671, 3210207, 1072297, 1, 1, 0, 800), +(1672, 3210207, 2043214, 1, 1, 0, 300), +(1673, 3210207, 2049000, 1, 1, 0, 150), +(1674, 3210207, 4130007, 1, 1, 0, 6000), +(1675, 3210207, 4130008, 1, 1, 0, 6000), +(1676, 3210208, 4000168, 1, 1, 0, 600000), +(1677, 3210208, 4131009, 1, 1, 0, 6000), +(1678, 3210208, 2002005, 1, 1, 0, 20000), +(1679, 3210208, 2060000, 1, 1, 0, 30000), +(1680, 3210208, 2061000, 1, 1, 0, 30000), +(1681, 3210208, 4010002, 1, 1, 0, 9000), +(1682, 3210208, 4004003, 1, 1, 0, 10000), +(1683, 3210208, 2000002, 1, 1, 0, 20000), +(1684, 3210208, 2000003, 1, 1, 0, 20000), +(1685, 3210208, 2044501, 1, 1, 0, 300), +(1686, 3210208, 1382018, 1, 1, 0, 700), +(1687, 3210208, 1002173, 1, 1, 0, 1500), +(1688, 3210208, 1041052, 1, 1, 0, 800), +(1689, 3210208, 1061048, 1, 1, 0, 800), +(1690, 3210208, 1002048, 1, 1, 0, 1500), +(1691, 3210208, 1032008, 1, 1, 0, 1000), +(1692, 3210208, 1041065, 1, 1, 0, 800), +(1693, 3210208, 1061060, 1, 1, 0, 800), +(1694, 3210208, 1051008, 1, 1, 0, 700), +(1695, 3210208, 1082072, 1, 1, 0, 1000), +(1696, 3210208, 1082076, 1, 1, 0, 1000), +(1697, 3210208, 1072117, 1, 1, 0, 800), +(1698, 3210208, 1072127, 1, 1, 0, 800), +(1699, 3210208, 1052110, 1, 1, 0, 700), +(1700, 3210208, 1082195, 1, 1, 0, 1000), +(1701, 3210208, 4130006, 1, 1, 0, 6000), +(1702, 3210208, 4130008, 1, 1, 0, 6000), +(1703, 3210450, 4000153, 1, 1, 0, 600000), +(1704, 3210450, 4131008, 1, 1, 0, 6000), +(1705, 3210450, 2060000, 1, 1, 0, 30000), +(1706, 3210450, 2061000, 1, 1, 0, 30000), +(1707, 3210450, 4020000, 1, 1, 0, 9000), +(1708, 3210450, 4020001, 1, 1, 0, 9000), +(1709, 3210450, 2000002, 1, 1, 0, 20000), +(1710, 3210450, 2000003, 1, 1, 0, 20000), +(1711, 3210450, 2022040, 1, 1, 0, 20000), +(1712, 3210450, 1041042, 1, 1, 0, 800), +(1713, 3210450, 1061035, 1, 1, 0, 800), +(1714, 3210450, 1002023, 1, 1, 0, 1500), +(1715, 3210450, 1002163, 1, 1, 0, 1500), +(1716, 3210450, 1032010, 1, 1, 0, 1000), +(1717, 3210450, 1040062, 1, 1, 0, 800), +(1718, 3210450, 1060051, 1, 1, 0, 800), +(1719, 3210450, 1051015, 1, 1, 0, 700), +(1720, 3210450, 1302004, 1, 1, 0, 700), +(1721, 3210450, 1332014, 1, 1, 0, 500), +(1722, 3210450, 1072119, 1, 1, 0, 800), +(1723, 3210450, 1072110, 1, 1, 0, 800), +(1724, 3210450, 1082063, 1, 1, 0, 1000), +(1725, 3210450, 1002625, 1, 1, 0, 1500), +(1726, 3210450, 2330001, 1, 1, 0, 500), +(1727, 3210450, 4130000, 1, 1, 0, 6000), +(1728, 3210450, 4130014, 1, 1, 0, 6000), +(1729, 3210450, 4130017, 1, 1, 0, 6000), +(1730, 3210800, 4000026, 1, 1, 0, 600000), +(1731, 3210800, 4003004, 1, 1, 0, 200000), +(1732, 3210800, 2041010, 1, 1, 0, 300), +(1733, 3210800, 2000003, 1, 1, 0, 20000), +(1734, 3210800, 4000021, 1, 1, 0, 50000), +(1735, 3210800, 2070003, 1, 1, 0, 500), +(1736, 3210800, 4020003, 1, 1, 0, 9000), +(1737, 3210800, 4010004, 1, 1, 0, 9000), +(1738, 3210800, 4000029, 1, 1, 0, 600000), +(1739, 3210800, 1402010, 1, 1, 0, 700), +(1740, 3210800, 2070008, 1, 1, 0, 500), +(1741, 3210800, 1002038, 1, 1, 0, 1500), +(1742, 3210800, 1002172, 1, 1, 0, 1500), +(1743, 3210800, 1041050, 1, 1, 0, 800), +(1744, 3210800, 1061046, 1, 1, 0, 800), +(1745, 3210800, 1002136, 1, 1, 0, 1500), +(1746, 3210800, 1040075, 1, 1, 0, 800), +(1747, 3210800, 1060064, 1, 1, 0, 800), +(1748, 3210800, 1051014, 1, 1, 0, 700), +(1749, 3210800, 1072109, 1, 1, 0, 800), +(1750, 3210800, 1072116, 1, 1, 0, 800), +(1751, 3210800, 1092013, 1, 1, 0, 700), +(1752, 3210800, 1472017, 1, 1, 0, 500), +(1753, 3210800, 4020004, 1, 1, 0, 9000), +(1754, 3210800, 1302003, 1, 1, 0, 700), +(1755, 3210800, 1041094, 1, 1, 0, 800), +(1756, 3210800, 2000002, 1, 1, 0, 20000), +(1757, 3210800, 1082192, 1, 1, 0, 1000), +(1758, 3210800, 1072300, 1, 1, 0, 800), +(1759, 3210800, 2044414, 1, 1, 0, 300), +(1760, 3210800, 4130001, 1, 1, 0, 6000), +(1761, 3210800, 4130008, 1, 1, 0, 6000), +(1762, 3210800, 4130010, 1, 1, 0, 6000), +(1763, 3220000, 4000003, 1, 1, 0, 600000), +(1764, 3220000, 4000003, 1, 1, 0, 600000), +(1765, 3220000, 4000003, 1, 1, 0, 600000), +(1766, 3220000, 4000005, 1, 1, 0, 600000), +(1767, 3220000, 4000005, 1, 1, 0, 600000), +(1768, 3220000, 4000005, 1, 1, 0, 600000), +(1769, 3220000, 4000018, 1, 1, 0, 600000), +(1770, 3220000, 4000018, 1, 1, 0, 600000), +(1771, 3220000, 4000018, 1, 1, 0, 600000), +(1772, 3220000, 4000195, 1, 1, 0, 600000), +(1773, 3220000, 4000195, 1, 1, 0, 600000), +(1774, 3220000, 4000195, 1, 1, 0, 600000), +(1775, 3220000, 4010000, 1, 1, 0, 90000), +(1776, 3220000, 4020001, 1, 1, 0, 90000), +(1777, 3220000, 2000001, 1, 1, 0, 200000), +(1778, 3220000, 2000003, 1, 1, 0, 200000), +(1779, 3220000, 2012002, 1, 1, 0, 60000), +(1780, 3220000, 2040701, 1, 1, 0, 3000), +(1781, 3220000, 2040801, 1, 1, 0, 3000), +(1782, 3220000, 2040901, 1, 1, 0, 3000), +(1783, 3220000, 2041001, 1, 1, 0, 3000), +(1784, 3220000, 2043001, 1, 1, 0, 3000), +(1785, 3220000, 2043101, 1, 1, 0, 3000), +(1786, 3220000, 2041010, 1, 1, 0, 3000), +(1787, 3220000, 2043201, 1, 1, 0, 3000), +(1788, 3220000, 2041004, 1, 1, 0, 3000), +(1789, 3220000, 2060000, 1, 1, 0, 300000), +(1790, 3220000, 2061000, 1, 1, 0, 300000), +(1791, 3220000, 2041017, 1, 1, 0, 3000), +(1792, 3220000, 2040402, 1, 1, 0, 3000), +(1793, 3220000, 2044002, 1, 1, 0, 3000), +(1794, 3220000, 2040502, 1, 1, 0, 3000), +(1795, 3220000, 2040602, 1, 1, 0, 3000), +(1796, 3220000, 2041016, 1, 1, 0, 3000), +(1797, 3220000, 2070009, 1, 1, 0, 5000), +(1798, 3220000, 1002098, 1, 1, 0, 15000), +(1799, 3220000, 1002154, 1, 1, 0, 15000), +(1800, 3220000, 1002170, 1, 1, 0, 15000), +(1801, 3220000, 1002185, 1, 1, 0, 15000), +(1802, 3220000, 1040085, 1, 1, 0, 8000), +(1803, 3220000, 1041086, 1, 1, 0, 8000), +(1804, 3220000, 1050039, 1, 1, 0, 7000), +(1805, 3220000, 1051026, 1, 1, 0, 7000), +(1806, 3220000, 1040080, 1, 1, 0, 8000), +(1807, 3220000, 1041083, 1, 1, 0, 8000), +(1808, 3220000, 1040084, 1, 1, 0, 8000), +(1809, 3220000, 1041076, 1, 1, 0, 8000), +(1810, 3220000, 1082025, 1, 1, 0, 10000), +(1811, 3220000, 1082064, 1, 1, 0, 10000), +(1812, 3220000, 1082073, 1, 1, 0, 10000), +(1813, 3220000, 1082074, 1, 1, 0, 10000), +(1814, 3220000, 1072126, 1, 1, 0, 8000), +(1815, 3220000, 1072117, 1, 1, 0, 8000), +(1816, 3220000, 1072118, 1, 1, 0, 8000), +(1817, 3220000, 1072107, 1, 1, 0, 8000), +(1818, 3220000, 1002628, 1, 1, 0, 15000), +(1819, 3220000, 1052113, 1, 1, 0, 7000), +(1820, 3220000, 1082195, 1, 1, 0, 10000), +(1821, 3220000, 1072300, 1, 1, 0, 8000), +(1822, 3220000, 1322027, 1, 1, 0, 7000), +(1823, 3220000, 2044112, 1, 1, 0, 3000), +(1824, 3220000, 2044412, 1, 1, 0, 3000), +(1825, 3220001, 4000329, 1, 1, 0, 600000), +(1826, 3220001, 4000329, 1, 1, 0, 600000), +(1827, 3220001, 4000329, 1, 1, 0, 600000), +(1828, 3220001, 4000331, 1, 1, 0, 600000), +(1829, 3220001, 4000331, 1, 1, 0, 600000), +(1830, 3220001, 4000331, 1, 1, 0, 600000), +(1831, 3220001, 4000330, 1, 1, 0, 600000), +(1832, 3220001, 4000330, 1, 1, 0, 600000), +(1833, 3220001, 4000330, 1, 1, 0, 600000), +(1834, 3220001, 4010002, 1, 1, 0, 90000), +(1835, 3220001, 4020003, 1, 1, 0, 90000), +(1836, 3220001, 4010007, 1, 1, 0, 90000), +(1837, 3220001, 2022155, 1, 1, 0, 200000), +(1838, 3220001, 2000001, 1, 1, 0, 200000), +(1839, 3220001, 2000003, 1, 1, 0, 200000), +(1840, 3220001, 2040004, 1, 1, 0, 3000), +(1841, 3220001, 2040501, 1, 1, 0, 3000), +(1842, 3220001, 2040504, 1, 1, 0, 3000), +(1843, 3220001, 2040801, 1, 1, 0, 3000), +(1844, 3220001, 2041007, 1, 1, 0, 3000), +(1845, 3220001, 2041004, 1, 1, 0, 3000), +(1846, 3220001, 2043801, 1, 1, 0, 3000), +(1847, 3220001, 2044001, 1, 1, 0, 3000), +(1848, 3220001, 2044201, 1, 1, 0, 3000), +(1849, 3220001, 2044601, 1, 1, 0, 3000), +(1850, 3220001, 2044801, 1, 1, 0, 3000), +(1851, 3220001, 1082073, 1, 1, 0, 10000), +(1852, 3220001, 1082025, 1, 1, 0, 10000), +(1853, 3220001, 1082064, 1, 1, 0, 10000), +(1854, 3220001, 1082074, 1, 1, 0, 10000), +(1855, 3220001, 1082195, 1, 1, 0, 10000), +(1856, 3220001, 1032013, 1, 1, 0, 10000), +(1857, 3220001, 1302063, 1, 1, 0, 7000), +(1858, 3230100, 4000013, 1, 1, 0, 600000), +(1859, 3230100, 2000002, 1, 1, 0, 20000), +(1860, 3230100, 2002005, 1, 1, 0, 20000), +(1861, 3230100, 2044502, 1, 1, 0, 300), +(1862, 3230100, 2000003, 1, 1, 0, 20000), +(1863, 3230100, 1322003, 1, 1, 0, 700), +(1864, 3230100, 2060000, 1, 1, 0, 30000), +(1865, 3230100, 4010005, 1, 1, 0, 9000), +(1866, 3230100, 4020006, 1, 1, 0, 9000), +(1867, 3230100, 2061000, 1, 1, 0, 30000), +(1868, 3230100, 1040021, 1, 1, 0, 800), +(1869, 3230100, 1060016, 1, 1, 0, 800), +(1870, 3230100, 1002180, 1, 1, 0, 1500), +(1871, 3230100, 1002143, 1, 1, 0, 1500), +(1872, 3230100, 1060052, 1, 1, 0, 800), +(1873, 3230100, 1040063, 1, 1, 0, 800), +(1874, 3230100, 1432003, 1, 1, 0, 500), +(1875, 3230100, 1051025, 1, 1, 0, 700), +(1876, 3230100, 1002025, 1, 1, 0, 1500), +(1877, 3230100, 1040079, 1, 1, 0, 800), +(1878, 3230100, 1060069, 1, 1, 0, 800), +(1879, 3230100, 1482005, 1, 1, 0, 500), +(1880, 3230100, 1492006, 1, 1, 0, 500), +(1881, 3230100, 2330001, 1, 1, 0, 500), +(1882, 3230100, 2044902, 1, 1, 0, 300), +(1883, 3230100, 4130006, 1, 1, 0, 6000), +(1884, 3230100, 4130012, 1, 1, 0, 6000), +(1885, 3230100, 4130017, 1, 1, 0, 6000), +(1886, 3230101, 2000002, 1, 1, 0, 20000), +(1887, 3230101, 2040005, 1, 1, 0, 300), +(1888, 3230101, 2070002, 1, 1, 0, 500), +(1889, 3230101, 4010003, 1, 1, 0, 9000), +(1890, 3230101, 4020004, 1, 1, 0, 9000), +(1891, 3230101, 4000035, 1, 1, 0, 600000), +(1892, 3230101, 2048002, 1, 1, 0, 300), +(1893, 3230101, 1452000, 1, 1, 0, 500), +(1894, 3230101, 1051010, 1, 1, 0, 700), +(1895, 3230101, 1050022, 1, 1, 0, 700), +(1896, 3230101, 1051008, 1, 1, 0, 700), +(1897, 3230101, 1082069, 1, 1, 0, 1000), +(1898, 3230101, 1082056, 1, 1, 0, 1000), +(1899, 3230101, 1082047, 1, 1, 0, 1000), +(1900, 3230101, 1412004, 1, 1, 0, 700), +(1901, 3230101, 1072114, 1, 1, 0, 800), +(1902, 3230101, 1072118, 1, 1, 0, 800), +(1903, 3230101, 1472016, 1, 1, 0, 500), +(1904, 3230101, 1492005, 1, 1, 0, 500), +(1905, 3230101, 2040027, 1, 1, 0, 300), +(1906, 3230101, 4130007, 1, 1, 0, 6000), +(1907, 3230101, 4130014, 1, 1, 0, 6000), +(1908, 3230102, 4000043, 1, 1, 0, 600000), +(1909, 3230102, 2000003, 1, 1, 0, 20000), +(1910, 3230102, 2000002, 1, 1, 0, 20000), +(1911, 3230102, 4020000, 1, 1, 0, 9000), +(1912, 3230102, 4010005, 1, 1, 0, 9000), +(1913, 3230102, 2043301, 1, 1, 0, 300), +(1914, 3230102, 1302017, 1, 1, 0, 700), +(1915, 3230102, 2048005, 1, 1, 0, 300), +(1916, 3230102, 1332020, 1, 1, 0, 500), +(1917, 3230102, 4006001, 1, 1, 0, 10000), +(1918, 3230102, 1452005, 1, 1, 0, 500), +(1919, 3230102, 1442001, 1, 1, 0, 700), +(1920, 3230102, 1382017, 1, 1, 0, 700), +(1921, 3230102, 1072113, 1, 1, 0, 800), +(1922, 3230102, 1082056, 1, 1, 0, 1000), +(1923, 3230102, 1050000, 1, 1, 0, 700), +(1924, 3230102, 1050038, 1, 1, 0, 700), +(1925, 3230102, 1092014, 1, 1, 0, 700), +(1926, 3230102, 1072121, 1, 1, 0, 800), +(1927, 3230102, 1082074, 1, 1, 0, 1000), +(1928, 3230102, 1040080, 1, 1, 0, 800), +(1929, 3230102, 1060068, 1, 1, 0, 800), +(1930, 3230102, 1041074, 1, 1, 0, 800), +(1931, 3230102, 1061069, 1, 1, 0, 800), +(1932, 3230102, 1072297, 1, 1, 0, 800), +(1933, 3230102, 1482006, 1, 1, 0, 500), +(1934, 3230102, 2044802, 1, 1, 0, 300), +(1935, 3230102, 2040024, 1, 1, 0, 300), +(1936, 3230102, 2040423, 1, 1, 0, 300), +(1937, 3230102, 4130011, 1, 1, 0, 6000), +(1938, 3230102, 4130015, 1, 1, 0, 6000), +(1939, 3230103, 4000100, 1, 1, 0, 600000), +(1940, 3230103, 4131013, 1, 1, 0, 6000), +(1941, 3230103, 2002007, 1, 1, 0, 20000), +(1942, 3230103, 2060000, 1, 1, 0, 30000), +(1943, 3230103, 2061000, 1, 1, 0, 30000), +(1944, 3230103, 4020001, 1, 1, 0, 9000), +(1945, 3230103, 4020003, 1, 1, 0, 9000), +(1946, 3230103, 4004000, 1, 1, 0, 10000), +(1947, 3230103, 2000002, 1, 1, 0, 20000), +(1948, 3230103, 2000003, 1, 1, 0, 20000), +(1949, 3230103, 2040302, 1, 1, 0, 300), +(1950, 3230103, 2048002, 1, 1, 0, 300), +(1951, 3230103, 1082035, 1, 1, 0, 1000), +(1952, 3230103, 1072105, 1, 1, 0, 800), +(1953, 3230103, 1472011, 1, 1, 0, 500), +(1954, 3230103, 1452006, 1, 1, 0, 500), +(1955, 3230103, 1442003, 1, 1, 0, 700), +(1956, 3230103, 1002093, 1, 1, 0, 1500), +(1957, 3230103, 1002154, 1, 1, 0, 1500), +(1958, 3230103, 1040083, 1, 1, 0, 800), +(1959, 3230103, 1060072, 1, 1, 0, 800), +(1960, 3230103, 1032011, 1, 1, 0, 1000), +(1961, 3230103, 1041082, 1, 1, 0, 800), +(1962, 3230103, 1061081, 1, 1, 0, 800), +(1963, 3230103, 1050045, 1, 1, 0, 700), +(1964, 3230103, 1002625, 1, 1, 0, 1500), +(1965, 3230103, 2044112, 1, 1, 0, 300), +(1966, 3230103, 4130001, 1, 1, 0, 6000), +(1967, 3230103, 4130011, 1, 1, 0, 6000), +(1968, 3230104, 2000002, 1, 1, 0, 20000), +(1969, 3230104, 2040801, 1, 1, 0, 300), +(1970, 3230104, 2070002, 1, 1, 0, 500), +(1971, 3230104, 4020000, 1, 1, 0, 9000), +(1972, 3230104, 4010001, 1, 1, 0, 9000), +(1973, 3230104, 1382018, 1, 1, 0, 700), +(1974, 3230104, 4000167, 1, 1, 0, 600000), +(1975, 3230104, 2040701, 1, 1, 0, 300), +(1976, 3230104, 1332020, 1, 1, 0, 500), +(1977, 3230104, 1002023, 1, 1, 0, 1500), +(1978, 3230104, 1041050, 1, 1, 0, 800), +(1979, 3230104, 1061046, 1, 1, 0, 800), +(1980, 3230104, 1041056, 1, 1, 0, 800), +(1981, 3230104, 1061052, 1, 1, 0, 800), +(1982, 3230104, 1061048, 1, 1, 0, 800), +(1983, 3230104, 1041052, 1, 1, 0, 800), +(1984, 3230104, 1002135, 1, 1, 0, 1500), +(1985, 3230104, 1051014, 1, 1, 0, 700), +(1986, 3230104, 1402006, 1, 1, 0, 700), +(1987, 3230104, 1082023, 1, 1, 0, 1000), +(1988, 3230104, 1072114, 1, 1, 0, 800), +(1989, 3230104, 1002184, 1, 1, 0, 1500), +(1990, 3230104, 1082073, 1, 1, 0, 1000), +(1991, 3230104, 1482004, 1, 1, 0, 500), +(1992, 3230104, 2044212, 1, 1, 0, 300), +(1993, 3230104, 4130000, 1, 1, 0, 6000), +(1994, 3230104, 4130003, 1, 1, 0, 6000), +(1995, 3230104, 4130005, 1, 1, 0, 6000), +(1996, 3230200, 4000059, 1, 1, 0, 600000), +(1997, 3230200, 4003004, 1, 1, 0, 200000), +(1998, 3230200, 2041012, 1, 1, 0, 300), +(1999, 3230200, 2000002, 1, 1, 0, 20000), +(2000, 3230200, 2000003, 1, 1, 0, 20000), +(2001, 3230200, 1092008, 1, 1, 0, 700), +(2002, 3230200, 2040902, 1, 1, 0, 300), +(2003, 3230200, 2041005, 1, 1, 0, 300), +(2004, 3230200, 1302017, 1, 1, 0, 700), +(2005, 3230200, 2060000, 1, 1, 0, 30000), +(2006, 3230200, 2061000, 1, 1, 0, 30000), +(2007, 3230200, 4004001, 1, 1, 0, 10000), +(2008, 3230200, 4020000, 1, 1, 0, 9000), +(2009, 3230200, 1432008, 1, 1, 0, 500), +(2010, 3230200, 4006000, 1, 1, 0, 10000), +(2011, 3230200, 4010001, 1, 1, 0, 9000), +(2012, 3230200, 1082050, 1, 1, 0, 1000), +(2013, 3230200, 1082005, 1, 1, 0, 1000), +(2014, 3230200, 1072106, 1, 1, 0, 800), +(2015, 3230200, 1092007, 1, 1, 0, 700), +(2016, 3230200, 1072102, 1, 1, 0, 800), +(2017, 3230200, 1002176, 1, 1, 0, 1500), +(2018, 3230200, 1041065, 1, 1, 0, 800), +(2019, 3230200, 1061060, 1, 1, 0, 800), +(2020, 3230200, 1051027, 1, 1, 0, 700), +(2021, 3230200, 1302009, 1, 1, 0, 700), +(2022, 3230200, 1452007, 1, 1, 0, 500), +(2023, 3230200, 1002152, 1, 1, 0, 1500), +(2024, 3230200, 1002625, 1, 1, 0, 1500), +(2025, 3230200, 2044807, 1, 1, 0, 300), +(2026, 3230200, 4130009, 1, 1, 0, 6000), +(2027, 3230200, 4130014, 1, 1, 0, 6000), +(2028, 3230300, 4000067, 1, 1, 0, 400000), +(2029, 3230300, 2000002, 1, 1, 0, 20000), +(2030, 3230300, 2000003, 1, 1, 0, 20000), +(2031, 3230300, 4020000, 1, 1, 0, 9000), +(2032, 3230300, 4010001, 1, 1, 0, 9000), +(2033, 3230300, 4004000, 1, 1, 0, 10000), +(2034, 3230300, 4004001, 1, 1, 0, 10000), +(2035, 3230300, 4004002, 1, 1, 0, 10000), +(2036, 3230300, 4004003, 1, 1, 0, 10000), +(2037, 3230302, 4000099, 1, 1, 0, 600000), +(2038, 3230302, 4131008, 1, 1, 0, 6000), +(2039, 3230302, 2060000, 1, 1, 0, 30000), +(2040, 3230302, 2061000, 1, 1, 0, 30000), +(2041, 3230302, 4010006, 1, 1, 0, 9000), +(2042, 3230302, 4020004, 1, 1, 0, 9000), +(2043, 3230302, 4004003, 1, 1, 0, 10000), +(2044, 3230302, 2000002, 1, 1, 0, 20000), +(2045, 3230302, 2000003, 1, 1, 0, 20000), +(2046, 3230302, 2041023, 1, 1, 0, 300), +(2047, 3230302, 1072040, 1, 1, 0, 800), +(2048, 3230302, 1072078, 1, 1, 0, 800), +(2049, 3230302, 1472010, 1, 1, 0, 500), +(2050, 3230302, 1002141, 1, 1, 0, 1500), +(2051, 3230302, 1040075, 1, 1, 0, 800), +(2052, 3230302, 1060064, 1, 1, 0, 800), +(2053, 3230302, 1051009, 1, 1, 0, 700), +(2054, 3230302, 1442009, 1, 1, 0, 700), +(2055, 3230302, 1040082, 1, 1, 0, 800), +(2056, 3230302, 1060071, 1, 1, 0, 800), +(2057, 3230302, 1462006, 1, 1, 0, 500), +(2058, 3230302, 1052110, 1, 1, 0, 700), +(2059, 3230302, 4130005, 1, 1, 0, 6000), +(2060, 3230302, 4130012, 1, 1, 0, 6000), +(2061, 3230302, 4130013, 1, 1, 0, 6000), +(2062, 3230303, 4000104, 1, 1, 0, 600000), +(2063, 3230303, 1092021, 1, 1, 0, 700), +(2064, 3230303, 4131007, 1, 1, 0, 6000), +(2065, 3230303, 2060000, 1, 1, 0, 30000), +(2066, 3230303, 2061000, 1, 1, 0, 30000), +(2067, 3230303, 4010005, 1, 1, 0, 9000), +(2068, 3230303, 4020004, 1, 1, 0, 9000), +(2069, 3230303, 4004001, 1, 1, 0, 10000), +(2070, 3230303, 2000002, 1, 1, 0, 20000), +(2071, 3230303, 2000003, 1, 1, 0, 20000), +(2072, 3230303, 2043301, 1, 1, 0, 300), +(2073, 3230303, 1372003, 1, 1, 0, 700), +(2074, 3230303, 1312005, 1, 1, 0, 700), +(2075, 3230303, 1322003, 1, 1, 0, 700), +(2076, 3230303, 1402010, 1, 1, 0, 700), +(2077, 3230303, 1072104, 1, 1, 0, 800), +(2078, 3230303, 1072091, 1, 1, 0, 800), +(2079, 3230303, 1082046, 1, 1, 0, 1000), +(2080, 3230303, 1041084, 1, 1, 0, 800), +(2081, 3230303, 1061083, 1, 1, 0, 800), +(2082, 3230303, 1041081, 1, 1, 0, 800), +(2083, 3230303, 1061080, 1, 1, 0, 800), +(2084, 3230303, 1002181, 1, 1, 0, 1500), +(2085, 3230303, 1002092, 1, 1, 0, 1500), +(2086, 3230303, 1082080, 1, 1, 0, 1000), +(2087, 3230303, 1472018, 1, 1, 0, 500), +(2088, 3230303, 1462007, 1, 1, 0, 500), +(2089, 3230303, 1402003, 1, 1, 0, 700), +(2090, 3230303, 1002145, 1, 1, 0, 1500), +(2091, 3230303, 1482005, 1, 1, 0, 500), +(2092, 3230303, 2044312, 1, 1, 0, 300), +(2093, 3230303, 4130009, 1, 1, 0, 6000), +(2094, 3230303, 4130010, 1, 1, 0, 6000), +(2095, 3230303, 4130012, 1, 1, 0, 6000), +(2096, 3230304, 4000105, 1, 1, 0, 600000), +(2097, 3230304, 4131005, 1, 1, 0, 6000), +(2098, 3230304, 2060000, 1, 1, 0, 30000), +(2099, 3230304, 2061000, 1, 1, 0, 30000), +(2100, 3230304, 4010001, 1, 1, 0, 9000), +(2101, 3230304, 4004003, 1, 1, 0, 10000), +(2102, 3230304, 4020005, 1, 1, 0, 9000), +(2103, 3230304, 2000002, 1, 1, 0, 20000), +(2104, 3230304, 2000003, 1, 1, 0, 20000), +(2105, 3230304, 2040302, 1, 1, 0, 300), +(2106, 3230304, 1382018, 1, 1, 0, 700), +(2107, 3230304, 1472012, 1, 1, 0, 500), +(2108, 3230304, 1432003, 1, 1, 0, 500), +(2109, 3230304, 1462005, 1, 1, 0, 500), +(2110, 3230304, 1002183, 1, 1, 0, 1500), +(2111, 3230304, 1002167, 1, 1, 0, 1500), +(2112, 3230304, 1040086, 1, 1, 0, 800), +(2113, 3230304, 1060075, 1, 1, 0, 800), +(2114, 3230304, 1041076, 1, 1, 0, 800), +(2115, 3230304, 1061071, 1, 1, 0, 800), +(2116, 3230304, 1072000, 1, 1, 0, 800), +(2117, 3230304, 1032018, 1, 1, 0, 1000), +(2118, 3230304, 1082082, 1, 1, 0, 1000), +(2119, 3230304, 1082085, 1, 1, 0, 1000), +(2120, 3230304, 1072129, 1, 1, 0, 800), +(2121, 3230304, 1082010, 1, 1, 0, 1000), +(2122, 3230304, 1052110, 1, 1, 0, 700), +(2123, 3230304, 2040316, 1, 1, 0, 300), +(2124, 3230304, 2049000, 1, 1, 0, 150), +(2125, 3230304, 4130002, 1, 1, 0, 6000), +(2126, 3230304, 4130017, 1, 1, 0, 6000), +(2127, 3230305, 4000110, 1, 1, 0, 600000), +(2128, 3230305, 4000003, 1, 1, 0, 600000), +(2129, 3230305, 4000018, 1, 1, 0, 600000), +(2130, 3230305, 2060000, 1, 1, 0, 30000), +(2131, 3230305, 2061000, 1, 1, 0, 30000), +(2132, 3230305, 4020003, 1, 1, 0, 9000), +(2133, 3230305, 4004001, 1, 1, 0, 10000), +(2134, 3230305, 2000002, 1, 1, 0, 20000), +(2135, 3230305, 2000003, 1, 1, 0, 20000), +(2136, 3230305, 2041001, 1, 1, 0, 300), +(2137, 3230305, 1032002, 1, 1, 0, 1000), +(2138, 3230305, 1041066, 1, 1, 0, 800), +(2139, 3230305, 1061061, 1, 1, 0, 800), +(2140, 3230305, 1040029, 1, 1, 0, 800), +(2141, 3230305, 1060020, 1, 1, 0, 800), +(2142, 3230305, 1002184, 1, 1, 0, 1500), +(2143, 3230305, 1002099, 1, 1, 0, 1500), +(2144, 3230305, 1082064, 1, 1, 0, 1000), +(2145, 3230305, 1082075, 1, 1, 0, 1000), +(2146, 3230305, 1072119, 1, 1, 0, 800), +(2147, 3230305, 1442009, 1, 1, 0, 700), +(2148, 3230305, 1051033, 1, 1, 0, 700), +(2149, 3230305, 1492005, 1, 1, 0, 500), +(2150, 3230305, 2330001, 1, 1, 0, 500), +(2151, 3230305, 2040926, 1, 1, 0, 300), +(2152, 3230305, 4130003, 1, 1, 0, 6000), +(2153, 3230305, 4130004, 1, 1, 0, 6000), +(2154, 3230305, 4130014, 1, 1, 0, 6000), +(2155, 3230306, 4000115, 1, 1, 0, 600000), +(2156, 3230306, 1092021, 1, 1, 0, 700), +(2157, 3230306, 2002006, 1, 1, 0, 20000), +(2158, 3230306, 2060000, 1, 1, 0, 30000), +(2159, 3230306, 2061000, 1, 1, 0, 30000), +(2160, 3230306, 4010006, 1, 1, 0, 9000), +(2161, 3230306, 4004002, 1, 1, 0, 10000), +(2162, 3230306, 4010001, 1, 1, 0, 9000), +(2163, 3230306, 2000002, 1, 1, 0, 20000), +(2164, 3230306, 2000003, 1, 1, 0, 20000), +(2165, 3230306, 2043702, 1, 1, 0, 300), +(2166, 3230306, 2044201, 1, 1, 0, 300), +(2167, 3230306, 4006000, 1, 1, 0, 10000), +(2168, 3230306, 1072032, 1, 1, 0, 800), +(2169, 3230306, 1072041, 1, 1, 0, 800), +(2170, 3230306, 1051006, 1, 1, 0, 700), +(2171, 3230306, 1082069, 1, 1, 0, 1000), +(2172, 3230306, 1072089, 1, 1, 0, 800), +(2173, 3230306, 1041069, 1, 1, 0, 800), +(2174, 3230306, 1061064, 1, 1, 0, 800), +(2175, 3230306, 1002182, 1, 1, 0, 1500), +(2176, 3230306, 1002155, 1, 1, 0, 1500), +(2177, 3230306, 1040085, 1, 1, 0, 800), +(2178, 3230306, 1060074, 1, 1, 0, 800), +(2179, 3230306, 1492005, 1, 1, 0, 500), +(2180, 3230306, 2044901, 1, 1, 0, 300), +(2181, 3230306, 4130000, 1, 1, 0, 6000), +(2182, 3230306, 4130010, 1, 1, 0, 6000), +(2183, 3230307, 4000123, 1, 1, 0, 600000), +(2184, 3230307, 2060000, 1, 1, 0, 30000), +(2185, 3230307, 2061000, 1, 1, 0, 30000), +(2186, 3230307, 4004001, 1, 1, 0, 10000), +(2187, 3230307, 4020008, 1, 1, 0, 9000), +(2188, 3230307, 4010001, 1, 1, 0, 9000), +(2189, 3230307, 2000002, 1, 1, 0, 20000), +(2190, 3230307, 2000003, 1, 1, 0, 20000), +(2191, 3230307, 4003004, 1, 1, 0, 200000), +(2192, 3230307, 4000003, 1, 1, 0, 600000), +(2193, 3230307, 1051004, 1, 1, 0, 700), +(2194, 3230307, 1332004, 1, 1, 0, 500), +(2195, 3230307, 1040069, 1, 1, 0, 800), +(2196, 3230307, 1060058, 1, 1, 0, 800), +(2197, 3230307, 1002036, 1, 1, 0, 1500), +(2198, 3230307, 1312005, 1, 1, 0, 700), +(2199, 3230307, 1082008, 1, 1, 0, 1000), +(2200, 3230307, 1072104, 1, 1, 0, 800), +(2201, 3230307, 1302004, 1, 1, 0, 700), +(2202, 3230307, 1002183, 1, 1, 0, 1500), +(2203, 3230307, 1002152, 1, 1, 0, 1500), +(2204, 3230307, 1072120, 1, 1, 0, 800), +(2205, 3230307, 1082023, 1, 1, 0, 1000), +(2206, 3230307, 1482004, 1, 1, 0, 500), +(2207, 3230307, 2040929, 1, 1, 0, 300), +(2208, 3230307, 2044110, 1, 1, 0, 300), +(2209, 3230307, 4130010, 1, 1, 0, 6000), +(2210, 3230307, 4130013, 1, 1, 0, 6000), +(2211, 3230308, 4000116, 1, 1, 0, 600000), +(2212, 3230308, 2002008, 1, 1, 0, 20000), +(2213, 3230308, 2060000, 1, 1, 0, 30000), +(2214, 3230308, 2061000, 1, 1, 0, 30000), +(2215, 3230308, 4020008, 1, 1, 0, 9000), +(2216, 3230308, 4004002, 1, 1, 0, 10000), +(2217, 3230308, 2000002, 1, 1, 0, 20000), +(2218, 3230308, 2000003, 1, 1, 0, 20000), +(2219, 3230308, 4020001, 1, 1, 0, 9000), +(2220, 3230308, 2040902, 1, 1, 0, 300), +(2221, 3230308, 1322003, 1, 1, 0, 700), +(2222, 3230308, 4003005, 1, 1, 0, 200000), +(2223, 3230308, 4000003, 1, 1, 0, 600000), +(2224, 3230308, 1402006, 1, 1, 0, 700), +(2225, 3230308, 1422008, 1, 1, 0, 700), +(2226, 3230308, 1372000, 1, 1, 0, 700), +(2227, 3230308, 1072107, 1, 1, 0, 800), +(2228, 3230308, 1072120, 1, 1, 0, 800), +(2229, 3230308, 1072115, 1, 1, 0, 800), +(2230, 3230308, 1092012, 1, 1, 0, 700), +(2231, 3230308, 1082073, 1, 1, 0, 1000), +(2232, 3230308, 1041085, 1, 1, 0, 800), +(2233, 3230308, 1061084, 1, 1, 0, 800), +(2234, 3230308, 1051033, 1, 1, 0, 700), +(2235, 3230308, 1082065, 1, 1, 0, 1000), +(2236, 3230308, 1082010, 1, 1, 0, 1000), +(2237, 3230308, 1082083, 1, 1, 0, 1000), +(2238, 3230308, 1482005, 1, 1, 0, 500), +(2239, 3230308, 2043210, 1, 1, 0, 300), +(2240, 3230308, 4130004, 1, 1, 0, 6000), +(2241, 3230308, 4130006, 1, 1, 0, 6000), +(2242, 3230308, 4130015, 1, 1, 0, 6000), +(2243, 3230400, 4000127, 1, 1, 0, 600000), +(2244, 3230400, 2000002, 1, 1, 0, 20000), +(2245, 3230400, 2000003, 1, 1, 0, 20000), +(2246, 3230400, 2060000, 1, 1, 0, 30000), +(2247, 3230400, 2061000, 1, 1, 0, 30000), +(2248, 3230400, 4010001, 1, 1, 0, 9000), +(2249, 3230400, 4020007, 1, 1, 0, 9000), +(2250, 3230400, 4006001, 1, 1, 0, 10000), +(2251, 3230400, 4004004, 1, 1, 0, 10000), +(2252, 3230400, 1092008, 1, 1, 0, 700), +(2253, 3230400, 2070002, 1, 1, 0, 500), +(2254, 3230400, 1302013, 1, 1, 0, 700), +(2255, 3230400, 1402008, 1, 1, 0, 700), +(2256, 3230400, 1041033, 1, 1, 0, 800), +(2257, 3230400, 1062006, 1, 1, 0, 800), +(2258, 3230400, 1041049, 1, 1, 0, 800), +(2259, 3230400, 1061045, 1, 1, 0, 800), +(2260, 3230400, 1050011, 1, 1, 0, 700), +(2261, 3230400, 1082053, 1, 1, 0, 1000), +(2262, 3230400, 1040074, 1, 1, 0, 800), +(2263, 3230400, 1060063, 1, 1, 0, 800), +(2264, 3230400, 1002144, 1, 1, 0, 1500), +(2265, 3230400, 1372000, 1, 1, 0, 700), +(2266, 3230400, 1492004, 1, 1, 0, 500), +(2267, 3230400, 2044901, 1, 1, 0, 300), +(2268, 3230400, 2044414, 1, 1, 0, 300), +(2269, 3230400, 2049100, 1, 1, 0, 150), +(2270, 3230400, 4130001, 1, 1, 0, 6000), +(2271, 3230400, 4130008, 1, 1, 0, 6000), +(2272, 3230400, 4130015, 1, 1, 0, 6000), +(2273, 3230405, 4000154, 1, 1, 0, 600000), +(2274, 3230405, 2002005, 1, 1, 0, 20000), +(2275, 3230405, 4131005, 1, 1, 0, 6000), +(2276, 3230405, 2060000, 1, 1, 0, 30000), +(2277, 3230405, 2061000, 1, 1, 0, 30000), +(2278, 3230405, 4010001, 1, 1, 0, 9000), +(2279, 3230405, 1372012, 1, 1, 0, 700), +(2280, 3230405, 4010000, 1, 1, 0, 9000), +(2281, 3230405, 4020002, 1, 1, 0, 9000), +(2282, 3230405, 2000002, 1, 1, 0, 20000), +(2283, 3230405, 2000003, 1, 1, 0, 20000), +(2284, 3230405, 2040302, 1, 1, 0, 300), +(2285, 3230405, 1082054, 1, 1, 0, 1000), +(2286, 3230405, 1060062, 1, 1, 0, 800), +(2287, 3230405, 1040073, 1, 1, 0, 800), +(2288, 3230405, 1002177, 1, 1, 0, 1500), +(2289, 3230405, 1051023, 1, 1, 0, 700), +(2290, 3230405, 1302009, 1, 1, 0, 700), +(2291, 3230405, 1312007, 1, 1, 0, 700), +(2292, 3230405, 1332011, 1, 1, 0, 500), +(2293, 3230405, 1332031, 1, 1, 0, 500), +(2294, 3230405, 1072122, 1, 1, 0, 800), +(2295, 3230405, 1072128, 1, 1, 0, 800), +(2296, 3230405, 1082009, 1, 1, 0, 1000), +(2297, 3230405, 1082192, 1, 1, 0, 1000), +(2298, 3230405, 2044410, 1, 1, 0, 300), +(2299, 3230405, 4130009, 1, 1, 0, 6000), +(2300, 3230405, 4130013, 1, 1, 0, 6000), +(2301, 4110300, 2000002, 1, 1, 0, 20000), +(2302, 4110300, 2000003, 1, 1, 0, 20000), +(2303, 4110300, 4010006, 1, 1, 0, 9000), +(2304, 4110300, 4020007, 1, 1, 0, 9000), +(2305, 4110300, 2000004, 1, 1, 0, 20000), +(2306, 4110300, 2060000, 1, 1, 0, 30000), +(2307, 4110300, 2061000, 1, 1, 0, 30000), +(2308, 4110300, 4004004, 1, 1, 0, 10000), +(2309, 4110300, 2041019, 1, 1, 0, 300), +(2310, 4110300, 1002045, 1, 1, 0, 1500), +(2311, 4110300, 1061062, 1, 1, 0, 800), +(2312, 4110300, 1041067, 1, 1, 0, 800), +(2313, 4110300, 1050037, 1, 1, 0, 700), +(2314, 4110300, 1041076, 1, 1, 0, 800), +(2315, 4110300, 1060073, 1, 1, 0, 800), +(2316, 4110300, 1412005, 1, 1, 0, 700), +(2317, 4110300, 1452007, 1, 1, 0, 500), +(2318, 4110300, 1002213, 1, 1, 0, 1500), +(2319, 4110300, 1002085, 1, 1, 0, 1500), +(2320, 4110300, 1032012, 1, 1, 0, 1000), +(2321, 4110300, 1040096, 1, 1, 0, 800), +(2322, 4110300, 1060085, 1, 1, 0, 800), +(2323, 4110300, 4000357, 1, 1, 0, 600000), +(2324, 4110300, 1052116, 1, 1, 0, 700), +(2325, 4110300, 2330002, 1, 1, 0, 500), +(2326, 4110300, 4130002, 1, 1, 0, 6000), +(2327, 4110300, 4130012, 1, 1, 0, 6000), +(2328, 4110300, 4130013, 1, 1, 0, 6000), +(2329, 4110301, 2000002, 1, 1, 0, 20000), +(2330, 4110301, 2000003, 1, 1, 0, 20000), +(2331, 4110301, 4010002, 1, 1, 0, 9000), +(2332, 4110301, 4010004, 1, 1, 0, 9000), +(2333, 4110301, 4004000, 1, 1, 0, 10000), +(2334, 4110301, 2060000, 1, 1, 0, 30000), +(2335, 4110301, 2061000, 1, 1, 0, 30000), +(2336, 4110301, 2040504, 1, 1, 0, 300), +(2337, 4110301, 2044002, 1, 1, 0, 300), +(2338, 4110301, 1002085, 1, 1, 0, 1500), +(2339, 4110301, 1382001, 1, 1, 0, 700), +(2340, 4110301, 1082010, 1, 1, 0, 1000), +(2341, 4110301, 1041077, 1, 1, 0, 800), +(2342, 4110301, 4000358, 1, 1, 0, 600000), +(2343, 4110301, 4130007, 1, 1, 0, 6000), +(2344, 4110301, 4130012, 1, 1, 0, 6000), +(2345, 4110302, 2000002, 1, 1, 0, 20000), +(2346, 4110302, 2000003, 1, 1, 0, 20000), +(2347, 4110302, 4020000, 1, 1, 0, 9000), +(2348, 4110302, 4020006, 1, 1, 0, 9000), +(2349, 4110302, 4130012, 1, 1, 0, 6000), +(2350, 4110302, 2044102, 1, 1, 0, 300), +(2351, 4110302, 1372007, 1, 1, 0, 700), +(2352, 4110302, 1002215, 1, 1, 0, 1500), +(2353, 4110302, 4006001, 1, 1, 0, 10000), +(2354, 4110302, 1040089, 1, 1, 0, 800), +(2355, 4110302, 1050045, 1, 1, 0, 700), +(2356, 4110302, 4004002, 1, 1, 0, 10000), +(2357, 4110302, 2040001, 1, 1, 0, 300), +(2358, 4110302, 4000359, 1, 1, 0, 600000), +(2359, 4110302, 1082198, 1, 1, 0, 1000), +(2360, 4130100, 4000014, 1, 1, 0, 600000), +(2361, 4130100, 4020008, 1, 1, 0, 9000), +(2362, 4130100, 2000002, 1, 1, 0, 20000), +(2363, 4130100, 2000004, 1, 1, 0, 20000), +(2364, 4130100, 4010005, 1, 1, 0, 9000), +(2365, 4130100, 4000030, 1, 1, 0, 60000), +(2366, 4130100, 2000003, 1, 1, 0, 20000), +(2367, 4130100, 4006001, 1, 1, 0, 10000), +(2368, 4130100, 1050022, 1, 1, 0, 700), +(2369, 4130100, 1002138, 1, 1, 0, 1500), +(2370, 4130100, 1322016, 1, 1, 0, 700), +(2371, 4130100, 1082064, 1, 1, 0, 1000), +(2372, 4130100, 1060069, 1, 1, 0, 800), +(2373, 4130100, 1040079, 1, 1, 0, 800), +(2374, 4130100, 1002045, 1, 1, 0, 1500), +(2375, 4130100, 1382001, 1, 1, 0, 700), +(2376, 4130100, 1050046, 1, 1, 0, 700), +(2377, 4130100, 1302010, 1, 1, 0, 700), +(2378, 4130100, 1332016, 1, 1, 0, 500), +(2379, 4130100, 1072133, 1, 1, 0, 800), +(2380, 4130100, 1072125, 1, 1, 0, 800), +(2381, 4130100, 1052113, 1, 1, 0, 700), +(2382, 4130100, 2040025, 1, 1, 0, 300), +(2383, 4130100, 2040621, 1, 1, 0, 300), +(2384, 4130100, 2044014, 1, 1, 0, 300), +(2385, 4130100, 2049100, 1, 1, 0, 150), +(2386, 4130100, 4130006, 1, 1, 0, 6000), +(2387, 4130100, 4130016, 1, 1, 0, 6000), +(2388, 4130101, 4000045, 1, 1, 0, 600000), +(2389, 4130101, 2041013, 1, 1, 0, 300), +(2390, 4130101, 2000002, 1, 1, 0, 20000), +(2391, 4130101, 2000004, 1, 1, 0, 20000), +(2392, 4130101, 2000003, 1, 1, 0, 20000), +(2393, 4130101, 4020001, 1, 1, 0, 9000), +(2394, 4130101, 4010002, 1, 1, 0, 9000), +(2395, 4130101, 2040805, 1, 1, 0, 300), +(2396, 4130101, 1472016, 1, 1, 0, 500), +(2397, 4130101, 1002152, 1, 1, 0, 1500), +(2398, 4130101, 1002183, 1, 1, 0, 1500), +(2399, 4130101, 1041081, 1, 1, 0, 800), +(2400, 4130101, 1061080, 1, 1, 0, 800), +(2401, 4130101, 1402003, 1, 1, 0, 700), +(2402, 4130101, 1092004, 1, 1, 0, 700), +(2403, 4130101, 1072124, 1, 1, 0, 800), +(2404, 4130101, 1072142, 1, 1, 0, 800), +(2405, 4130101, 1061088, 1, 1, 0, 800), +(2406, 4130101, 1041089, 1, 1, 0, 800), +(2407, 4130101, 1061078, 1, 1, 0, 800), +(2408, 4130101, 1041079, 1, 1, 0, 800), +(2409, 4130101, 1072303, 1, 1, 0, 800), +(2410, 4130101, 2040923, 1, 1, 0, 300), +(2411, 4130101, 4130003, 1, 1, 0, 6000), +(2412, 4130101, 4130005, 1, 1, 0, 6000), +(2413, 4130101, 4130009, 1, 1, 0, 6000), +(2414, 4130102, 4000062, 1, 1, 0, 600000), +(2415, 4130102, 2041014, 1, 1, 0, 300), +(2416, 4130102, 4004004, 1, 1, 0, 10000), +(2417, 4130102, 2000002, 1, 1, 0, 20000), +(2418, 4130102, 2000004, 1, 1, 0, 20000), +(2419, 4130102, 2000003, 1, 1, 0, 20000), +(2420, 4130102, 4020006, 1, 1, 0, 9000), +(2421, 4130102, 4010003, 1, 1, 0, 9000), +(2422, 4130102, 4004000, 1, 1, 0, 10000), +(2423, 4130102, 1302013, 1, 1, 0, 700), +(2424, 4130102, 2044201, 1, 1, 0, 300), +(2425, 4130102, 4006001, 1, 1, 0, 10000), +(2426, 4130102, 1051027, 1, 1, 0, 700), +(2427, 4130102, 1002092, 1, 1, 0, 1500), +(2428, 4130102, 1040080, 1, 1, 0, 800), +(2429, 4130102, 1060068, 1, 1, 0, 800), +(2430, 4130102, 1072110, 1, 1, 0, 800), +(2431, 4130102, 1082063, 1, 1, 0, 1000), +(2432, 4130102, 1041087, 1, 1, 0, 800), +(2433, 4130102, 1061086, 1, 1, 0, 800), +(2434, 4130102, 1040095, 1, 1, 0, 800), +(2435, 4130102, 1060084, 1, 1, 0, 800), +(2436, 4130102, 1082084, 1, 1, 0, 1000), +(2437, 4130102, 1072132, 1, 1, 0, 800), +(2438, 4130102, 4130000, 1, 1, 0, 6000), +(2439, 4130102, 4130003, 1, 1, 0, 6000), +(2440, 4130102, 4130013, 1, 1, 0, 6000), +(2441, 4130103, 4000124, 1, 1, 0, 600000), +(2442, 4130103, 2060000, 1, 1, 0, 300000), +(2443, 4130103, 2061000, 1, 1, 0, 300000), +(2444, 4130103, 2000002, 1, 1, 0, 200000), +(2445, 4130103, 2000004, 1, 1, 0, 999999), +(2446, 4130103, 4131009, 1, 1, 0, 60000), +(2447, 4130103, 4010000, 1, 1, 0, 90000), +(2448, 4130103, 4005002, 1, 1, 0, 10000), +(2449, 4130103, 2040902, 1, 1, 0, 3000), +(2450, 4130103, 4020007, 1, 1, 0, 90000), +(2451, 4130103, 4020000, 1, 1, 0, 90000), +(2452, 4130103, 4006000, 1, 1, 0, 100000), +(2453, 4130103, 1060052, 1, 1, 0, 8000), +(2454, 4130103, 1040063, 1, 1, 0, 8000), +(2455, 4130103, 1442009, 1, 1, 0, 7000), +(2456, 4130103, 1082071, 1, 1, 0, 10000), +(2457, 4130103, 1462006, 1, 1, 0, 5000), +(2458, 4130103, 1051032, 1, 1, 0, 7000), +(2459, 4130103, 1372007, 1, 1, 0, 7000), +(2460, 4130103, 1472019, 1, 1, 0, 5000), +(2461, 4130103, 1072129, 1, 1, 0, 8000), +(2462, 4130103, 1432004, 1, 1, 0, 5000), +(2463, 4130103, 1072140, 1, 1, 0, 8000), +(2464, 4130103, 1082085, 1, 1, 0, 10000), +(2465, 4130103, 1312008, 1, 1, 0, 7000), +(2466, 4130103, 1492007, 1, 1, 0, 5000), +(2467, 4130103, 2043210, 1, 1, 0, 3000), +(2468, 4130103, 4130002, 1, 1, 0, 60000), +(2469, 4130103, 4130004, 1, 1, 0, 60000), +(2470, 4130103, 4130012, 1, 1, 0, 60000), +(2471, 4220000, 4000166, 1, 1, 0, 600000), +(2472, 4220000, 4000166, 1, 1, 0, 600000), +(2473, 4220000, 4000166, 1, 1, 0, 600000), +(2474, 4220000, 4000167, 1, 1, 0, 600000), +(2475, 4220000, 4000167, 1, 1, 0, 600000), +(2476, 4220000, 4000167, 1, 1, 0, 600000), +(2477, 4220000, 4010003, 1, 1, 0, 90000), +(2478, 4220000, 4020004, 1, 1, 0, 90000), +(2479, 4220000, 2000002, 1, 1, 0, 200000), +(2480, 4220000, 2000003, 1, 1, 0, 200000), +(2481, 4220000, 2040301, 1, 1, 0, 3000), +(2482, 4220000, 2040302, 1, 1, 0, 3000), +(2483, 4220000, 2040516, 1, 1, 0, 3000), +(2484, 4220000, 2040517, 1, 1, 0, 3000), +(2485, 4220000, 2040704, 1, 1, 0, 3000), +(2486, 4220000, 2040705, 1, 1, 0, 3000), +(2487, 4220000, 2040804, 1, 1, 0, 3000), +(2488, 4220000, 2040805, 1, 1, 0, 3000), +(2489, 4220000, 2041007, 1, 1, 0, 3000), +(2490, 4220000, 2041008, 1, 1, 0, 3000), +(2491, 4220000, 1302010, 1, 1, 0, 7000), +(2492, 4220000, 1312008, 1, 1, 0, 7000), +(2493, 4220000, 1322017, 1, 1, 0, 7000), +(2494, 4220000, 1402003, 1, 1, 0, 7000), +(2495, 4220000, 1412003, 1, 1, 0, 7000), +(2496, 4220000, 1422005, 1, 1, 0, 7000), +(2497, 4220000, 1432004, 1, 1, 0, 5000), +(2498, 4220000, 1442005, 1, 1, 0, 7000), +(2499, 4220000, 1452008, 1, 1, 0, 5000), +(2500, 4220000, 1462007, 1, 1, 0, 5000), +(2501, 4220000, 1332003, 1, 1, 0, 5000), +(2502, 4220000, 1472020, 1, 1, 0, 5000), +(2503, 4220000, 1332016, 1, 1, 0, 5000), +(2504, 4220000, 1482007, 1, 1, 0, 5000), +(2505, 4220000, 1492007, 1, 1, 0, 5000), +(2506, 4220000, 1382006, 1, 1, 0, 7000), +(2507, 4220000, 1372007, 1, 1, 0, 7000), +(2508, 4220000, 1442039, 1, 1, 0, 7000), +(2509, 4220000, 2040029, 1, 1, 0, 3000), +(2510, 4220000, 2040326, 1, 1, 0, 3000), +(2511, 4220000, 2044809, 1, 1, 0, 3000), +(2512, 4220000, 2049100, 1, 1, 0, 3000), +(2513, 4230100, 4000023, 1, 1, 0, 600000), +(2514, 4230100, 2040001, 1, 1, 0, 300), +(2515, 4230100, 2000002, 1, 1, 0, 20000), +(2516, 4230100, 4010006, 1, 1, 0, 9000), +(2517, 4230100, 2000003, 1, 1, 0, 20000), +(2518, 4230100, 4010001, 1, 1, 0, 9000), +(2519, 4230100, 1002103, 1, 1, 0, 1500), +(2520, 4230100, 2070010, 1, 1, 0, 500), +(2521, 4230100, 1462004, 1, 1, 0, 500), +(2522, 4230100, 1472013, 1, 1, 0, 500), +(2523, 4230100, 1412004, 1, 1, 0, 700), +(2524, 4230100, 1072090, 1, 1, 0, 800), +(2525, 4230100, 1472017, 1, 1, 0, 500), +(2526, 4230100, 1002166, 1, 1, 0, 1500), +(2527, 4230100, 1002098, 1, 1, 0, 1500), +(2528, 4230100, 1002169, 1, 1, 0, 1500), +(2529, 4230100, 1041075, 1, 1, 0, 800), +(2530, 4230100, 1061070, 1, 1, 0, 800), +(2531, 4230100, 1072132, 1, 1, 0, 800), +(2532, 4230100, 1072140, 1, 1, 0, 800), +(2533, 4230100, 1082066, 1, 1, 0, 1000), +(2534, 4230100, 1032008, 1, 1, 0, 1000), +(2535, 4230100, 4010005, 1, 1, 0, 9000), +(2536, 4230100, 1060057, 1, 1, 0, 800), +(2537, 4230100, 2000006, 1, 1, 0, 20000), +(2538, 4230100, 2044412, 1, 1, 0, 300), +(2539, 4230100, 2049100, 1, 1, 0, 150), +(2540, 4230100, 4130004, 1, 1, 0, 6000), +(2541, 4230100, 4130005, 1, 1, 0, 6000), +(2542, 4230100, 4130009, 1, 1, 0, 6000), +(2543, 4230101, 2000002, 1, 1, 0, 20000), +(2544, 4230101, 4003004, 1, 1, 0, 200000), +(2545, 4230101, 2000003, 1, 1, 0, 20000), +(2546, 4230101, 4010005, 1, 1, 0, 9000), +(2547, 4230101, 4020001, 1, 1, 0, 9000), +(2548, 4230101, 1462006, 1, 1, 0, 500), +(2549, 4230101, 4000031, 1, 1, 0, 600000), +(2550, 4230101, 1051009, 1, 1, 0, 700), +(2551, 4230101, 1051001, 1, 1, 0, 700), +(2552, 4230101, 1040074, 1, 1, 0, 800), +(2553, 4230101, 1060063, 1, 1, 0, 800), +(2554, 4230101, 1050039, 1, 1, 0, 700), +(2555, 4230101, 1002185, 1, 1, 0, 1500), +(2556, 4230101, 1002151, 1, 1, 0, 1500), +(2557, 4230101, 1041086, 1, 1, 0, 800), +(2558, 4230101, 1061085, 1, 1, 0, 800), +(2559, 4230101, 1472015, 1, 1, 0, 500), +(2560, 4230101, 1382001, 1, 1, 0, 700), +(2561, 4230101, 1462007, 1, 1, 0, 500), +(2562, 4230101, 1442005, 1, 1, 0, 700), +(2563, 4230101, 1332003, 1, 1, 0, 500), +(2564, 4230101, 1040000, 1, 1, 0, 800), +(2565, 4230101, 1082037, 1, 1, 0, 1000), +(2566, 4230101, 1041068, 1, 1, 0, 800), +(2567, 4230101, 1002628, 1, 1, 0, 1500), +(2568, 4230101, 2044314, 1, 1, 0, 300), +(2569, 4230101, 4130000, 1, 1, 0, 6000), +(2570, 4230101, 4130005, 1, 1, 0, 6000), +(2571, 4230101, 4130012, 1, 1, 0, 6000), +(2572, 4230102, 4000036, 1, 1, 0, 600000), +(2573, 4230102, 4004004, 1, 1, 0, 10000), +(2574, 4230102, 2000002, 1, 1, 0, 20000), +(2575, 4230102, 2000004, 1, 1, 0, 20000), +(2576, 4230102, 2000003, 1, 1, 0, 20000), +(2577, 4230102, 4010001, 1, 1, 0, 9000), +(2578, 4230102, 4020000, 1, 1, 0, 9000), +(2579, 4230102, 1302013, 1, 1, 0, 700), +(2580, 4230102, 4006001, 1, 1, 0, 10000), +(2581, 4230102, 1032008, 1, 1, 0, 1000), +(2582, 4230102, 1060050, 1, 1, 0, 800), +(2583, 4230102, 1040061, 1, 1, 0, 800), +(2584, 4230102, 1040085, 1, 1, 0, 800), +(2585, 4230102, 1060074, 1, 1, 0, 800), +(2586, 4230102, 1002099, 1, 1, 0, 1500), +(2587, 4230102, 1002207, 1, 1, 0, 1500), +(2588, 4230102, 1002211, 1, 1, 0, 1500), +(2589, 4230102, 1002215, 1, 1, 0, 1500), +(2590, 4230102, 1002212, 1, 1, 0, 1500), +(2591, 4230102, 1082066, 1, 1, 0, 1000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(2592, 4230102, 1072141, 1, 1, 0, 800), +(2593, 4230102, 1072303, 1, 1, 0, 800), +(2594, 4230102, 2330002, 1, 1, 0, 500), +(2595, 4230102, 2040026, 1, 1, 0, 300), +(2596, 4230102, 4130007, 1, 1, 0, 6000), +(2597, 4230102, 4130008, 1, 1, 0, 6000), +(2598, 4230103, 4000039, 1, 1, 0, 600000), +(2599, 4230103, 2000002, 1, 1, 0, 20000), +(2600, 4230103, 2000003, 1, 1, 0, 20000), +(2601, 4230103, 4020005, 1, 1, 0, 9000), +(2602, 4230103, 4010003, 1, 1, 0, 9000), +(2603, 4230103, 2000004, 1, 1, 0, 20000), +(2604, 4230103, 2060000, 1, 1, 0, 30000), +(2605, 4230103, 2061000, 1, 1, 0, 30000), +(2606, 4230103, 1332001, 1, 1, 0, 500), +(2607, 4230103, 1312006, 1, 1, 0, 700), +(2608, 4230103, 1002179, 1, 1, 0, 1500), +(2609, 4230103, 1092014, 1, 1, 0, 700), +(2610, 4230103, 1072121, 1, 1, 0, 800), +(2611, 4230103, 1072114, 1, 1, 0, 800), +(2612, 4230103, 1082076, 1, 1, 0, 1000), +(2613, 4230103, 1002151, 1, 1, 0, 1500), +(2614, 4230103, 1051034, 1, 1, 0, 700), +(2615, 4230103, 1472019, 1, 1, 0, 500), +(2616, 4230103, 1322017, 1, 1, 0, 700), +(2617, 4230103, 1050051, 1, 1, 0, 700), +(2618, 4230103, 2040027, 1, 1, 0, 300), +(2619, 4230103, 4130007, 1, 1, 0, 6000), +(2620, 4230103, 4130008, 1, 1, 0, 6000), +(2621, 4230104, 4000044, 1, 1, 0, 600000), +(2622, 4230104, 2000004, 1, 1, 0, 20000), +(2623, 4230104, 2000003, 1, 1, 0, 20000), +(2624, 4230104, 4010003, 1, 1, 0, 9000), +(2625, 4230104, 4020002, 1, 1, 0, 9000), +(2626, 4230104, 1302016, 1, 1, 0, 700), +(2627, 4230104, 2043201, 1, 1, 0, 300), +(2628, 4230104, 1040083, 1, 1, 0, 800), +(2629, 4230104, 1060072, 1, 1, 0, 800), +(2630, 4230104, 1061081, 1, 1, 0, 800), +(2631, 4230104, 1041082, 1, 1, 0, 800), +(2632, 4230104, 1002025, 1, 1, 0, 1500), +(2633, 4230104, 1382001, 1, 1, 0, 700), +(2634, 4230104, 1002217, 1, 1, 0, 1500), +(2635, 4230104, 1002085, 1, 1, 0, 1500), +(2636, 4230104, 1041087, 1, 1, 0, 800), +(2637, 4230104, 1061086, 1, 1, 0, 800), +(2638, 4230104, 1060084, 1, 1, 0, 800), +(2639, 4230104, 1040095, 1, 1, 0, 800), +(2640, 4230104, 1412003, 1, 1, 0, 700), +(2641, 4230104, 1482007, 1, 1, 0, 500), +(2642, 4230104, 2040427, 1, 1, 0, 300), +(2643, 4230104, 4130005, 1, 1, 0, 6000), +(2644, 4230104, 4130015, 1, 1, 0, 6000), +(2645, 4230104, 4130017, 1, 1, 0, 6000), +(2646, 4230105, 4000058, 1, 1, 0, 600000), +(2647, 4230105, 2041011, 1, 1, 0, 300), +(2648, 4230105, 2000002, 1, 1, 0, 20000), +(2649, 4230105, 2000003, 1, 1, 0, 20000), +(2650, 4230105, 4020003, 1, 1, 0, 9000), +(2651, 4230105, 4010000, 1, 1, 0, 9000), +(2652, 4230105, 4004003, 1, 1, 0, 10000), +(2653, 4230105, 2041001, 1, 1, 0, 300), +(2654, 4230105, 1332020, 1, 1, 0, 500), +(2655, 4230105, 1072103, 1, 1, 0, 800), +(2656, 4230105, 1002182, 1, 1, 0, 1500), +(2657, 4230105, 1002098, 1, 1, 0, 1500), +(2658, 4230105, 1041083, 1, 1, 0, 800), +(2659, 4230105, 1061082, 1, 1, 0, 800), +(2660, 4230105, 1040083, 1, 1, 0, 800), +(2661, 4230105, 1060072, 1, 1, 0, 800), +(2662, 4230105, 1382019, 1, 1, 0, 700), +(2663, 4230105, 1472015, 1, 1, 0, 500), +(2664, 4230105, 1050048, 1, 1, 0, 700), +(2665, 4230105, 1051038, 1, 1, 0, 700), +(2666, 4230105, 1082011, 1, 1, 0, 1000), +(2667, 4230105, 1072130, 1, 1, 0, 800), +(2668, 4230105, 2022039, 1, 1, 0, 20000), +(2669, 4230105, 4130004, 1, 1, 0, 6000), +(2670, 4230105, 4130013, 1, 1, 0, 6000), +(2671, 4230106, 4000060, 1, 1, 0, 600000), +(2672, 4230106, 4003004, 1, 1, 0, 200000), +(2673, 4230106, 2000002, 1, 1, 0, 20000), +(2674, 4230106, 2000003, 1, 1, 0, 20000), +(2675, 4230106, 4020005, 1, 1, 0, 9000), +(2676, 4230106, 4010004, 1, 1, 0, 9000), +(2677, 4230106, 4004001, 1, 1, 0, 10000), +(2678, 4230106, 2060000, 1, 1, 0, 30000), +(2679, 4230106, 2061000, 1, 1, 0, 30000), +(2680, 4230106, 1302016, 1, 1, 0, 700), +(2681, 4230106, 2070002, 1, 1, 0, 500), +(2682, 4230106, 4006000, 1, 1, 0, 10000), +(2683, 4230106, 2040705, 1, 1, 0, 300), +(2684, 4230106, 1082036, 1, 1, 0, 1000), +(2685, 4230106, 1082045, 1, 1, 0, 1000), +(2686, 4230106, 1040081, 1, 1, 0, 800), +(2687, 4230106, 1060070, 1, 1, 0, 800), +(2688, 4230106, 1060075, 1, 1, 0, 800), +(2689, 4230106, 1040086, 1, 1, 0, 800), +(2690, 4230106, 1072118, 1, 1, 0, 800), +(2691, 4230106, 1051032, 1, 1, 0, 700), +(2692, 4230106, 1002216, 1, 1, 0, 1500), +(2693, 4230106, 1002210, 1, 1, 0, 1500), +(2694, 4230106, 1041080, 1, 1, 0, 800), +(2695, 4230106, 1061079, 1, 1, 0, 800), +(2696, 4230106, 1050052, 1, 1, 0, 700), +(2697, 4230106, 1002628, 1, 1, 0, 1500), +(2698, 4230106, 2040319, 1, 1, 0, 300), +(2699, 4230106, 2044114, 1, 1, 0, 300), +(2700, 4230106, 2044214, 1, 1, 0, 300), +(2701, 4230106, 4130003, 1, 1, 0, 6000), +(2702, 4230106, 4130007, 1, 1, 0, 6000), +(2703, 4230106, 4130009, 1, 1, 0, 6000), +(2704, 4230107, 4000076, 1, 1, 0, 600000), +(2705, 4230107, 2000002, 1, 1, 0, 20000), +(2706, 4230107, 2000003, 1, 1, 0, 20000), +(2707, 4230107, 4003004, 1, 1, 0, 200000), +(2708, 4230107, 4010005, 1, 1, 0, 9000), +(2709, 4230107, 4020004, 1, 1, 0, 9000), +(2710, 4230107, 1332020, 1, 1, 0, 500), +(2711, 4230107, 2043202, 1, 1, 0, 300), +(2712, 4230107, 2041014, 1, 1, 0, 300), +(2713, 4230107, 4004002, 1, 1, 0, 10000), +(2714, 4230107, 4006000, 1, 1, 0, 10000), +(2715, 4230107, 4020007, 1, 1, 0, 9000), +(2716, 4230107, 1040030, 1, 1, 0, 800), +(2717, 4230107, 1060020, 1, 1, 0, 800), +(2718, 4230107, 1060061, 1, 1, 0, 800), +(2719, 4230107, 1040072, 1, 1, 0, 800), +(2720, 4230107, 1050035, 1, 1, 0, 700), +(2721, 4230107, 1060071, 1, 1, 0, 800), +(2722, 4230107, 1040082, 1, 1, 0, 800), +(2723, 4230107, 1082072, 1, 1, 0, 1000), +(2724, 4230107, 1082063, 1, 1, 0, 1000), +(2725, 4230107, 1051030, 1, 1, 0, 700), +(2726, 4230107, 1072134, 1, 1, 0, 800), +(2727, 4230107, 1072129, 1, 1, 0, 800), +(2728, 4230107, 1452008, 1, 1, 0, 500), +(2729, 4230107, 4130005, 1, 1, 0, 6000), +(2730, 4230107, 4130015, 1, 1, 0, 6000), +(2731, 4230108, 4000078, 1, 1, 0, 600000), +(2732, 4230108, 2000002, 1, 1, 0, 20000), +(2733, 4230108, 2000003, 1, 1, 0, 20000), +(2734, 4230108, 4010001, 1, 1, 0, 9000), +(2735, 4230108, 4020006, 1, 1, 0, 9000), +(2736, 4230108, 4004003, 1, 1, 0, 10000), +(2737, 4230108, 4000021, 1, 1, 0, 50000), +(2738, 4230108, 4003004, 1, 1, 0, 200000), +(2739, 4230108, 2041017, 1, 1, 0, 300), +(2740, 4230108, 2070002, 1, 1, 0, 500), +(2741, 4230108, 1432008, 1, 1, 0, 500), +(2742, 4230108, 2060000, 1, 1, 0, 30000), +(2743, 4230108, 2061000, 1, 1, 0, 30000), +(2744, 4230108, 1050031, 1, 1, 0, 700), +(2745, 4230108, 1072113, 1, 1, 0, 800), +(2746, 4230108, 1072108, 1, 1, 0, 800), +(2747, 4230108, 1082073, 1, 1, 0, 1000), +(2748, 4230108, 1422007, 1, 1, 0, 700), +(2749, 4230108, 1041082, 1, 1, 0, 800), +(2750, 4230108, 1061081, 1, 1, 0, 800), +(2751, 4230108, 1472018, 1, 1, 0, 500), +(2752, 4230108, 1442005, 1, 1, 0, 700), +(2753, 4230108, 1002209, 1, 1, 0, 1500), +(2754, 4230108, 1002218, 1, 1, 0, 1500), +(2755, 4230108, 1002086, 1, 1, 0, 1500), +(2756, 4230108, 2040623, 1, 1, 0, 300), +(2757, 4230108, 4130010, 1, 1, 0, 6000), +(2758, 4230108, 4130011, 1, 1, 0, 6000), +(2759, 4230109, 4000101, 1, 1, 0, 600000), +(2760, 4230109, 2060000, 1, 1, 0, 30000), +(2761, 4230109, 2061000, 1, 1, 0, 30000), +(2762, 4230109, 4010001, 1, 1, 0, 9000), +(2763, 4230109, 4004002, 1, 1, 0, 10000), +(2764, 4230109, 2000002, 1, 1, 0, 20000), +(2765, 4230109, 2000003, 1, 1, 0, 20000), +(2766, 4230109, 2040901, 1, 1, 0, 300), +(2767, 4230109, 1032018, 1, 1, 0, 1000), +(2768, 4230109, 1402002, 1, 1, 0, 700), +(2769, 4230109, 1002180, 1, 1, 0, 1500), +(2770, 4230109, 1082070, 1, 1, 0, 1000), +(2771, 4230109, 1051024, 1, 1, 0, 700), +(2772, 4230109, 1002154, 1, 1, 0, 1500), +(2773, 4230109, 1002167, 1, 1, 0, 1500), +(2774, 4230109, 1472017, 1, 1, 0, 500), +(2775, 4230109, 1072117, 1, 1, 0, 800), +(2776, 4230109, 1040087, 1, 1, 0, 800), +(2777, 4230109, 1060076, 1, 1, 0, 800), +(2778, 4230109, 1462007, 1, 1, 0, 500), +(2779, 4230109, 1092004, 1, 1, 0, 700), +(2780, 4230109, 1482006, 1, 1, 0, 500), +(2781, 4230109, 2043212, 1, 1, 0, 300), +(2782, 4230109, 2044414, 1, 1, 0, 300), +(2783, 4230109, 4130000, 1, 1, 0, 6000), +(2784, 4230109, 4130005, 1, 1, 0, 6000), +(2785, 4230109, 4130014, 1, 1, 0, 6000), +(2786, 4230110, 4000102, 1, 1, 0, 600000), +(2787, 4230110, 2060000, 1, 1, 0, 30000), +(2788, 4230110, 2061000, 1, 1, 0, 30000), +(2789, 4230110, 4020008, 1, 1, 0, 9000), +(2790, 4230110, 4004000, 1, 1, 0, 10000), +(2791, 4230110, 2000002, 1, 1, 0, 20000), +(2792, 4230110, 2000004, 1, 1, 0, 20000), +(2793, 4230110, 2040504, 1, 1, 0, 300), +(2794, 4230110, 2044002, 1, 1, 0, 300), +(2795, 4230110, 2044301, 1, 1, 0, 300), +(2796, 4230110, 1302013, 1, 1, 0, 700), +(2797, 4230110, 1002004, 1, 1, 0, 1500), +(2798, 4230110, 1041067, 1, 1, 0, 800), +(2799, 4230110, 1061062, 1, 1, 0, 800), +(2800, 4230110, 1002144, 1, 1, 0, 1500), +(2801, 4230110, 1002170, 1, 1, 0, 1500), +(2802, 4230110, 1002181, 1, 1, 0, 1500), +(2803, 4230110, 1040082, 1, 1, 0, 800), +(2804, 4230110, 1060071, 1, 1, 0, 800), +(2805, 4230110, 1061083, 1, 1, 0, 800), +(2806, 4230110, 1041084, 1, 1, 0, 800), +(2807, 4230110, 1040088, 1, 1, 0, 800), +(2808, 4230110, 1060077, 1, 1, 0, 800), +(2809, 4230110, 1082081, 1, 1, 0, 1000), +(2810, 4230110, 1082083, 1, 1, 0, 1000), +(2811, 4230110, 1072135, 1, 1, 0, 800), +(2812, 4230110, 1082195, 1, 1, 0, 1000), +(2813, 4230110, 2044902, 1, 1, 0, 300), +(2814, 4230110, 2040618, 1, 1, 0, 300), +(2815, 4230110, 2040627, 1, 1, 0, 300), +(2816, 4230110, 2040931, 1, 1, 0, 300), +(2817, 4230110, 2044014, 1, 1, 0, 300), +(2818, 4230110, 4130002, 1, 1, 0, 6000), +(2819, 4230110, 4130010, 1, 1, 0, 6000), +(2820, 4230110, 4130011, 1, 1, 0, 6000), +(2821, 4230111, 4000111, 1, 1, 0, 600000), +(2822, 4230111, 2060000, 1, 1, 0, 30000), +(2823, 4230111, 2061000, 1, 1, 0, 30000), +(2824, 4230111, 4010002, 1, 1, 0, 9000), +(2825, 4230111, 4010004, 1, 1, 0, 9000), +(2826, 4230111, 4004001, 1, 1, 0, 10000), +(2827, 4230111, 2000002, 1, 1, 0, 20000), +(2828, 4230111, 2000003, 1, 1, 0, 20000), +(2829, 4230111, 2040602, 1, 1, 0, 300), +(2830, 4230111, 2043302, 1, 1, 0, 300), +(2831, 4230111, 1041051, 1, 1, 0, 800), +(2832, 4230111, 1061047, 1, 1, 0, 800), +(2833, 4230111, 1051007, 1, 1, 0, 700), +(2834, 4230111, 1050021, 1, 1, 0, 700), +(2835, 4230111, 1002021, 1, 1, 0, 1500), +(2836, 4230111, 1002153, 1, 1, 0, 1500), +(2837, 4230111, 1002168, 1, 1, 0, 1500), +(2838, 4230111, 1072116, 1, 1, 0, 800), +(2839, 4230111, 1072127, 1, 1, 0, 800), +(2840, 4230111, 1072123, 1, 1, 0, 800), +(2841, 4230111, 1302010, 1, 1, 0, 700), +(2842, 4230111, 1472018, 1, 1, 0, 500), +(2843, 4230111, 1002628, 1, 1, 0, 1500), +(2844, 4230111, 2040926, 1, 1, 0, 300), +(2845, 4230111, 2044010, 1, 1, 0, 300), +(2846, 4230111, 4130003, 1, 1, 0, 6000), +(2847, 4230111, 4130006, 1, 1, 0, 6000), +(2848, 4230111, 4130015, 1, 1, 0, 6000), +(2849, 4230112, 4000112, 1, 1, 0, 600000), +(2850, 4230112, 2060000, 1, 1, 0, 30000), +(2851, 4230112, 2061000, 1, 1, 0, 30000), +(2852, 4230112, 4004001, 1, 1, 0, 10000), +(2853, 4230112, 2002008, 1, 1, 0, 20000), +(2854, 4230112, 2000002, 1, 1, 0, 20000), +(2855, 4230112, 2000004, 1, 1, 0, 20000), +(2856, 4230112, 2040004, 1, 1, 0, 300), +(2857, 4230112, 2040502, 1, 1, 0, 300), +(2858, 4230112, 1302016, 1, 1, 0, 700), +(2859, 4230112, 1302010, 1, 1, 0, 700), +(2860, 4230112, 1072101, 1, 1, 0, 800), +(2861, 4230112, 1051026, 1, 1, 0, 700), +(2862, 4230112, 1072000, 1, 1, 0, 800), +(2863, 4230112, 1072110, 1, 1, 0, 800), +(2864, 4230112, 1082025, 1, 1, 0, 1000), +(2865, 4230112, 1002169, 1, 1, 0, 1500), +(2866, 4230112, 1472020, 1, 1, 0, 500), +(2867, 4230112, 1412003, 1, 1, 0, 700), +(2868, 4230112, 1402003, 1, 1, 0, 700), +(2869, 4230112, 1040097, 1, 1, 0, 800), +(2870, 4230112, 1060086, 1, 1, 0, 800), +(2871, 4230112, 1002214, 1, 1, 0, 1500), +(2872, 4230112, 1492007, 1, 1, 0, 500), +(2873, 4230112, 2049000, 1, 1, 0, 150), +(2874, 4230112, 4130003, 1, 1, 0, 6000), +(2875, 4230112, 4130010, 1, 1, 0, 6000), +(2876, 4230113, 4000114, 1, 1, 0, 600000), +(2877, 4230113, 2060000, 1, 1, 0, 30000), +(2878, 4230113, 2061000, 1, 1, 0, 30000), +(2879, 4230113, 4010003, 1, 1, 0, 9000), +(2880, 4230113, 4004003, 1, 1, 0, 10000), +(2881, 4230113, 2000002, 1, 1, 0, 20000), +(2882, 4230113, 2000003, 1, 1, 0, 20000), +(2883, 4230113, 1382019, 1, 1, 0, 700), +(2884, 4230113, 2040401, 1, 1, 0, 300), +(2885, 4230113, 2044701, 1, 1, 0, 300), +(2886, 4230113, 1002047, 1, 1, 0, 1500), +(2887, 4230113, 1002139, 1, 1, 0, 1500), +(2888, 4230113, 1002142, 1, 1, 0, 1500), +(2889, 4230113, 1040061, 1, 1, 0, 800), +(2890, 4230113, 1060050, 1, 1, 0, 800), +(2891, 4230113, 1051025, 1, 1, 0, 700), +(2892, 4230113, 1082071, 1, 1, 0, 1000), +(2893, 4230113, 1082023, 1, 1, 0, 1000), +(2894, 4230113, 1072108, 1, 1, 0, 800), +(2895, 4230113, 1032018, 1, 1, 0, 1000), +(2896, 4230113, 1372007, 1, 1, 0, 700), +(2897, 4230113, 1332016, 1, 1, 0, 500), +(2898, 4230113, 1322017, 1, 1, 0, 700), +(2899, 4230113, 1052113, 1, 1, 0, 700), +(2900, 4230113, 4130008, 1, 1, 0, 6000), +(2901, 4230113, 4130013, 1, 1, 0, 6000), +(2902, 4230113, 4130017, 1, 1, 0, 6000), +(2903, 4230114, 4000115, 1, 1, 0, 600000), +(2904, 4230114, 2060000, 1, 1, 0, 30000), +(2905, 4230114, 2061000, 1, 1, 0, 30000), +(2906, 4230114, 4020007, 1, 1, 0, 9000), +(2907, 4230114, 2002010, 1, 1, 0, 20000), +(2908, 4230114, 4004000, 1, 1, 0, 10000), +(2909, 4230114, 2000002, 1, 1, 0, 20000), +(2910, 4230114, 2000003, 1, 1, 0, 20000), +(2911, 4230114, 2040804, 1, 1, 0, 300), +(2912, 4230114, 1402007, 1, 1, 0, 700), +(2913, 4230114, 1092029, 1, 1, 0, 700), +(2914, 4230114, 1002176, 1, 1, 0, 1500), +(2915, 4230114, 1002143, 1, 1, 0, 1500), +(2916, 4230114, 1040076, 1, 1, 0, 800), +(2917, 4230114, 1060065, 1, 1, 0, 800), +(2918, 4230114, 1050036, 1, 1, 0, 700), +(2919, 4230114, 1040085, 1, 1, 0, 800), +(2920, 4230114, 1060074, 1, 1, 0, 800), +(2921, 4230114, 1082074, 1, 1, 0, 1000), +(2922, 4230114, 1072116, 1, 1, 0, 800), +(2923, 4230114, 1092013, 1, 1, 0, 700), +(2924, 4230114, 1432004, 1, 1, 0, 500), +(2925, 4230114, 1312008, 1, 1, 0, 700), +(2926, 4230114, 1052113, 1, 1, 0, 700), +(2927, 4230114, 4130006, 1, 1, 0, 6000), +(2928, 4230114, 4130016, 1, 1, 0, 6000), +(2929, 4230114, 4130017, 1, 1, 0, 6000), +(2930, 4230115, 4000115, 1, 1, 0, 600000), +(2931, 4230115, 2060000, 1, 1, 0, 30000), +(2932, 4230115, 2061000, 1, 1, 0, 30000), +(2933, 4230115, 2002010, 1, 1, 0, 20000), +(2934, 4230115, 4020000, 1, 1, 0, 9000), +(2935, 4230115, 4020006, 1, 1, 0, 9000), +(2936, 4230115, 4004003, 1, 1, 0, 10000), +(2937, 4230115, 2000002, 1, 1, 0, 20000), +(2938, 4230115, 2000004, 1, 1, 0, 20000), +(2939, 4230115, 2043802, 1, 1, 0, 300), +(2940, 4230115, 2044102, 1, 1, 0, 300), +(2941, 4230115, 4006001, 1, 1, 0, 10000), +(2942, 4230115, 2070004, 1, 1, 0, 500), +(2943, 4230115, 1082069, 1, 1, 0, 1000), +(2944, 4230115, 1072000, 1, 1, 0, 800), +(2945, 4230115, 1072118, 1, 1, 0, 800), +(2946, 4230115, 1060069, 1, 1, 0, 800), +(2947, 4230115, 1040079, 1, 1, 0, 800), +(2948, 4230115, 1050049, 1, 1, 0, 700), +(2949, 4230115, 1041088, 1, 1, 0, 800), +(2950, 4230115, 1061087, 1, 1, 0, 800), +(2951, 4230115, 1082065, 1, 1, 0, 1000), +(2952, 4230115, 1072141, 1, 1, 0, 800), +(2953, 4230115, 1422005, 1, 1, 0, 700), +(2954, 4230115, 1472021, 1, 1, 0, 500), +(2955, 4230115, 1482007, 1, 1, 0, 500), +(2956, 4230115, 2040029, 1, 1, 0, 300), +(2957, 4230115, 2040617, 1, 1, 0, 300), +(2958, 4230115, 2040931, 1, 1, 0, 300), +(2959, 4230115, 2044214, 1, 1, 0, 300), +(2960, 4230115, 4130011, 1, 1, 0, 6000), +(2961, 4230115, 4130015, 1, 1, 0, 6000), +(2962, 4230115, 4130016, 1, 1, 0, 6000), +(2963, 4230116, 4000117, 1, 1, 0, 600000), +(2964, 4230116, 2002009, 1, 1, 0, 20000), +(2965, 4230116, 2000002, 1, 1, 0, 20000), +(2966, 4230116, 2000003, 1, 1, 0, 20000), +(2967, 4230116, 4010001, 1, 1, 0, 9000), +(2968, 4230116, 4010004, 1, 1, 0, 9000), +(2969, 4230116, 4004002, 1, 1, 0, 10000), +(2970, 4230116, 2041005, 1, 1, 0, 300), +(2971, 4230116, 1302016, 1, 1, 0, 700), +(2972, 4230116, 2060000, 1, 1, 0, 30000), +(2973, 4230116, 2061000, 1, 1, 0, 30000), +(2974, 4230116, 4020007, 1, 1, 0, 9000), +(2975, 4230116, 1372001, 1, 1, 0, 700), +(2976, 4230116, 1322015, 1, 1, 0, 700), +(2977, 4230116, 1402006, 1, 1, 0, 700), +(2978, 4230116, 1092007, 1, 1, 0, 700), +(2979, 4230116, 1072109, 1, 1, 0, 800), +(2980, 4230116, 1072120, 1, 1, 0, 800), +(2981, 4230116, 1082062, 1, 1, 0, 1000), +(2982, 4230116, 1040084, 1, 1, 0, 800), +(2983, 4230116, 1060073, 1, 1, 0, 800), +(2984, 4230116, 1050047, 1, 1, 0, 700), +(2985, 4230116, 1002211, 1, 1, 0, 1500), +(2986, 4230116, 1002028, 1, 1, 0, 1500), +(2987, 4230116, 1082195, 1, 1, 0, 1000), +(2988, 4230116, 4130007, 1, 1, 0, 6000), +(2989, 4230116, 4130017, 1, 1, 0, 6000), +(2990, 4230117, 4000118, 1, 1, 0, 600000), +(2991, 4230117, 4010003, 1, 1, 0, 9000), +(2992, 4230117, 4020007, 1, 1, 0, 9000), +(2993, 4230117, 2002007, 1, 1, 0, 20000), +(2994, 4230117, 4004000, 1, 1, 0, 10000), +(2995, 4230117, 2000002, 1, 1, 0, 20000), +(2996, 4230117, 2000003, 1, 1, 0, 20000), +(2997, 4230117, 2040707, 1, 1, 0, 300), +(2998, 4230117, 2060000, 1, 1, 0, 30000), +(2999, 4230117, 2061000, 1, 1, 0, 30000), +(3000, 4230117, 1092020, 1, 1, 0, 700), +(3001, 4230117, 2070002, 1, 1, 0, 500), +(3002, 4230117, 1082047, 1, 1, 0, 1000), +(3003, 4230117, 1082008, 1, 1, 0, 1000), +(3004, 4230117, 1041085, 1, 1, 0, 800), +(3005, 4230117, 1061084, 1, 1, 0, 800), +(3006, 4230117, 1060068, 1, 1, 0, 800), +(3007, 4230117, 1040080, 1, 1, 0, 800), +(3008, 4230117, 1050049, 1, 1, 0, 700), +(3009, 4230117, 1002208, 1, 1, 0, 1500), +(3010, 4230117, 1002212, 1, 1, 0, 1500), +(3011, 4230117, 1002217, 1, 1, 0, 1500), +(3012, 4230117, 1312008, 1, 1, 0, 700), +(3013, 4230117, 1332003, 1, 1, 0, 500), +(3014, 4230117, 1492006, 1, 1, 0, 500), +(3015, 4230117, 4130009, 1, 1, 0, 6000), +(3016, 4230117, 4130010, 1, 1, 0, 6000), +(3017, 4230118, 4000119, 1, 1, 0, 600000), +(3018, 4230118, 2002009, 1, 1, 0, 20000), +(3019, 4230118, 4010002, 1, 1, 0, 9000), +(3020, 4230118, 4020006, 1, 1, 0, 9000), +(3021, 4230118, 4004001, 1, 1, 0, 10000), +(3022, 4230118, 2040802, 1, 1, 0, 300), +(3023, 4230118, 2000002, 1, 1, 0, 20000), +(3024, 4230118, 2000004, 1, 1, 0, 20000), +(3025, 4230118, 2060000, 1, 1, 0, 30000), +(3026, 4230118, 2061000, 1, 1, 0, 30000), +(3027, 4230118, 2070004, 1, 1, 0, 500), +(3028, 4230118, 1041068, 1, 1, 0, 800), +(3029, 4230118, 1061063, 1, 1, 0, 800), +(3030, 4230118, 1050038, 1, 1, 0, 700), +(3031, 4230118, 1002155, 1, 1, 0, 1500), +(3032, 4230118, 1061070, 1, 1, 0, 800), +(3033, 4230118, 1041075, 1, 1, 0, 800), +(3034, 4230118, 1082024, 1, 1, 0, 1000), +(3035, 4230118, 1040000, 1, 1, 0, 800), +(3036, 4230118, 1060075, 1, 1, 0, 800), +(3037, 4230118, 1002024, 1, 1, 0, 1500), +(3038, 4230118, 1032012, 1, 1, 0, 1000), +(3039, 4230118, 1072143, 1, 1, 0, 800), +(3040, 4230118, 1422005, 1, 1, 0, 700), +(3041, 4230118, 1472021, 1, 1, 0, 500), +(3042, 4230118, 1072300, 1, 1, 0, 800), +(3043, 4230118, 2040031, 1, 1, 0, 300), +(3044, 4230118, 2040931, 1, 1, 0, 300), +(3045, 4230118, 4130004, 1, 1, 0, 6000), +(3046, 4230119, 4000120, 1, 1, 0, 600000), +(3047, 4230119, 2000002, 1, 1, 0, 20000), +(3048, 4230119, 2002006, 1, 1, 0, 20000), +(3049, 4230119, 2000003, 1, 1, 0, 20000), +(3050, 4230119, 4020002, 1, 1, 0, 9000), +(3051, 4230119, 4010005, 1, 1, 0, 9000), +(3052, 4230119, 4004003, 1, 1, 0, 10000), +(3053, 4230119, 2040804, 1, 1, 0, 300), +(3054, 4230119, 2060000, 1, 1, 0, 30000), +(3055, 4230119, 2061000, 1, 1, 0, 30000), +(3056, 4230119, 4131004, 1, 1, 0, 6000), +(3057, 4230119, 1092019, 1, 1, 0, 700), +(3058, 4230119, 1002178, 1, 1, 0, 1500), +(3059, 4230119, 1051016, 1, 1, 0, 700), +(3060, 4230119, 1082068, 1, 1, 0, 1000), +(3061, 4230119, 1072002, 1, 1, 0, 800), +(3062, 4230119, 1050035, 1, 1, 0, 700), +(3063, 4230119, 1041075, 1, 1, 0, 800), +(3064, 4230119, 1061070, 1, 1, 0, 800), +(3065, 4230119, 1061083, 1, 1, 0, 800), +(3066, 4230119, 1041084, 1, 1, 0, 800), +(3067, 4230119, 1082080, 1, 1, 0, 1000), +(3068, 4230119, 1072124, 1, 1, 0, 800), +(3069, 4230119, 1082067, 1, 1, 0, 1000), +(3070, 4230119, 1082195, 1, 1, 0, 1000), +(3071, 4230119, 2330001, 1, 1, 0, 500), +(3072, 4230119, 2044110, 1, 1, 0, 300), +(3073, 4230119, 4130001, 1, 1, 0, 6000), +(3074, 4230119, 4130006, 1, 1, 0, 6000), +(3075, 4230120, 4000121, 1, 1, 0, 600000), +(3076, 4230120, 4131004, 1, 1, 0, 6000), +(3077, 4230120, 4020003, 1, 1, 0, 9000), +(3078, 4230120, 4004001, 1, 1, 0, 10000), +(3079, 4230120, 2040804, 1, 1, 0, 300), +(3080, 4230120, 2000002, 1, 1, 0, 20000), +(3081, 4230120, 2000004, 1, 1, 0, 20000), +(3082, 4230120, 2060000, 1, 1, 0, 30000), +(3083, 4230120, 2061000, 1, 1, 0, 30000), +(3084, 4230120, 4006001, 1, 1, 0, 10000), +(3085, 4230120, 1002141, 1, 1, 0, 1500), +(3086, 4230120, 1002135, 1, 1, 0, 1500), +(3087, 4230120, 1041086, 1, 1, 0, 800), +(3088, 4230120, 1061085, 1, 1, 0, 800), +(3089, 4230120, 1061080, 1, 1, 0, 800), +(3090, 4230120, 1041081, 1, 1, 0, 800), +(3091, 4230120, 1040084, 1, 1, 0, 800), +(3092, 4230120, 1061071, 1, 1, 0, 800), +(3093, 4230120, 1051030, 1, 1, 0, 700), +(3094, 4230120, 1051039, 1, 1, 0, 700), +(3095, 4230120, 1082084, 1, 1, 0, 1000), +(3096, 4230120, 1072131, 1, 1, 0, 800), +(3097, 4230120, 1432004, 1, 1, 0, 500), +(3098, 4230120, 1452008, 1, 1, 0, 500), +(3099, 4230120, 1482007, 1, 1, 0, 500), +(3100, 4230120, 2040324, 1, 1, 0, 300), +(3101, 4230120, 2040530, 1, 1, 0, 300), +(3102, 4230120, 4130001, 1, 1, 0, 6000), +(3103, 4230120, 4130002, 1, 1, 0, 6000), +(3104, 4230121, 4000122, 1, 1, 0, 600000), +(3105, 4230121, 4131012, 1, 1, 0, 6000), +(3106, 4230121, 4020004, 1, 1, 0, 9000), +(3107, 4230121, 4020005, 1, 1, 0, 9000), +(3108, 4230121, 4004000, 1, 1, 0, 10000), +(3109, 4230121, 2043802, 1, 1, 0, 300), +(3110, 4230121, 2000002, 1, 1, 0, 20000), +(3111, 4230121, 2000004, 1, 1, 0, 20000), +(3112, 4230121, 2060000, 1, 1, 0, 30000), +(3113, 4230121, 2061000, 1, 1, 0, 30000), +(3114, 4230121, 1041053, 1, 1, 0, 800), +(3115, 4230121, 1061049, 1, 1, 0, 800), +(3116, 4230121, 1051015, 1, 1, 0, 700), +(3117, 4230121, 1082047, 1, 1, 0, 1000), +(3118, 4230121, 1051024, 1, 1, 0, 700), +(3119, 4230121, 1002155, 1, 1, 0, 1500), +(3120, 4230121, 1002184, 1, 1, 0, 1500), +(3121, 4230121, 1082072, 1, 1, 0, 1000), +(3122, 4230121, 1372007, 1, 1, 0, 700), +(3123, 4230121, 1040089, 1, 1, 0, 800), +(3124, 4230121, 1060078, 1, 1, 0, 800), +(3125, 4230121, 1061076, 1, 1, 0, 800), +(3126, 4230121, 1041077, 1, 1, 0, 800), +(3127, 4230121, 1412003, 1, 1, 0, 700), +(3128, 4230121, 1082198, 1, 1, 0, 1000), +(3129, 4230121, 2044901, 1, 1, 0, 300), +(3130, 4230121, 4130000, 1, 1, 0, 6000), +(3131, 4230121, 4130006, 1, 1, 0, 6000), +(3132, 4230121, 4130013, 1, 1, 0, 6000), +(3133, 4230123, 4000156, 1, 1, 0, 600000), +(3134, 4230123, 2000002, 1, 1, 0, 20000), +(3135, 4230123, 2000003, 1, 1, 0, 20000), +(3136, 4230123, 4000157, 1, 1, 0, 100000), +(3137, 4230123, 4020008, 1, 1, 0, 9000), +(3138, 4230123, 4020004, 1, 1, 0, 9000), +(3139, 4230123, 4004003, 1, 1, 0, 10000), +(3140, 4230123, 4003004, 1, 1, 0, 200000), +(3141, 4230123, 2048004, 1, 1, 0, 300), +(3142, 4230123, 2070002, 1, 1, 0, 500), +(3143, 4230123, 2044501, 1, 1, 0, 300), +(3144, 4230123, 1442009, 1, 1, 0, 700), +(3145, 4230123, 2060000, 1, 1, 0, 30000), +(3146, 4230123, 2061000, 1, 1, 0, 30000), +(3147, 4230123, 1452008, 1, 1, 0, 500), +(3148, 4230123, 1002024, 1, 1, 0, 1500), +(3149, 4230123, 1472017, 1, 1, 0, 500), +(3150, 4230123, 1041083, 1, 1, 0, 800), +(3151, 4230123, 1061082, 1, 1, 0, 800), +(3152, 4230123, 1082198, 1, 1, 0, 1000), +(3153, 4230123, 2044801, 1, 1, 0, 300), +(3154, 4230123, 2044805, 1, 1, 0, 300), +(3155, 4230123, 4130008, 1, 1, 0, 6000), +(3156, 4230124, 4000155, 1, 1, 0, 600000), +(3157, 4230124, 2000002, 1, 1, 0, 20000), +(3158, 4230124, 2000003, 1, 1, 0, 20000), +(3159, 4230124, 4000157, 1, 1, 0, 100000), +(3160, 4230124, 4010006, 1, 1, 0, 9000), +(3161, 4230124, 4020007, 1, 1, 0, 9000), +(3162, 4230124, 2000004, 1, 1, 0, 20000), +(3163, 4230124, 2060000, 1, 1, 0, 30000), +(3164, 4230124, 2061000, 1, 1, 0, 30000), +(3165, 4230124, 4004004, 1, 1, 0, 10000), +(3166, 4230124, 2041019, 1, 1, 0, 300), +(3167, 4230124, 1002045, 1, 1, 0, 1500), +(3168, 4230124, 1061062, 1, 1, 0, 800), +(3169, 4230124, 1041067, 1, 1, 0, 800), +(3170, 4230124, 1050037, 1, 1, 0, 700), +(3171, 4230124, 1041076, 1, 1, 0, 800), +(3172, 4230124, 1060073, 1, 1, 0, 800), +(3173, 4230124, 1412005, 1, 1, 0, 700), +(3174, 4230124, 1452007, 1, 1, 0, 500), +(3175, 4230124, 1002213, 1, 1, 0, 1500), +(3176, 4230124, 1002085, 1, 1, 0, 1500), +(3177, 4230124, 1032012, 1, 1, 0, 1000), +(3178, 4230124, 1040096, 1, 1, 0, 800), +(3179, 4230124, 1060085, 1, 1, 0, 800), +(3180, 4230124, 1002631, 1, 1, 0, 1500), +(3181, 4230124, 4130008, 1, 1, 0, 6000), +(3182, 4230124, 4130012, 1, 1, 0, 6000), +(3183, 4230124, 4130014, 1, 1, 0, 6000), +(3184, 4230125, 4000204, 1, 1, 0, 600000), +(3185, 4230125, 2000002, 1, 1, 0, 20000), +(3186, 4230125, 2000003, 1, 1, 0, 20000), +(3187, 4230125, 4020007, 1, 1, 0, 9000), +(3188, 4230125, 4010004, 1, 1, 0, 9000), +(3189, 4230125, 4010000, 1, 1, 0, 9000), +(3190, 4230125, 2060000, 1, 1, 0, 30000), +(3191, 4230125, 2061000, 1, 1, 0, 30000), +(3192, 4230125, 1002047, 1, 1, 0, 1500), +(3193, 4230125, 1002081, 1, 1, 0, 1500), +(3194, 4230125, 1002144, 1, 1, 0, 1500), +(3195, 4230125, 1002178, 1, 1, 0, 1500), +(3196, 4230125, 1422007, 1, 1, 0, 700), +(3197, 4230125, 1382019, 1, 1, 0, 700), +(3198, 4230125, 1332016, 1, 1, 0, 500), +(3199, 4230125, 1050052, 1, 1, 0, 700), +(3200, 4230125, 1072118, 1, 1, 0, 800), +(3201, 4230125, 1072108, 1, 1, 0, 800), +(3202, 4230125, 1072126, 1, 1, 0, 800), +(3203, 4230125, 2070002, 1, 1, 0, 500), +(3204, 4230125, 4006000, 1, 1, 0, 10000), +(3205, 4230125, 2044301, 1, 1, 0, 300), +(3206, 4230125, 2040705, 1, 1, 0, 300), +(3207, 4230125, 2040824, 1, 1, 0, 300), +(3208, 4230125, 2040929, 1, 1, 0, 300), +(3209, 4230125, 4130002, 1, 1, 0, 6000), +(3210, 4230125, 4130011, 1, 1, 0, 6000), +(3211, 4230126, 4000205, 1, 1, 0, 600000), +(3212, 4230126, 2041014, 1, 1, 0, 300), +(3213, 4230126, 4020003, 1, 1, 0, 9000), +(3214, 4230126, 2000002, 1, 1, 0, 20000), +(3215, 4230126, 2000004, 1, 1, 0, 20000), +(3216, 4230126, 2000003, 1, 1, 0, 20000), +(3217, 4230126, 4020006, 1, 1, 0, 9000), +(3218, 4230126, 4010003, 1, 1, 0, 9000), +(3219, 4230126, 2060000, 1, 1, 0, 30000), +(3220, 4230126, 2061000, 1, 1, 0, 30000), +(3221, 4230126, 1041084, 1, 1, 0, 800), +(3222, 4230126, 1060075, 1, 1, 0, 800), +(3223, 4230126, 1041082, 1, 1, 0, 800), +(3224, 4230126, 1060069, 1, 1, 0, 800), +(3225, 4230126, 1050048, 1, 1, 0, 700), +(3226, 4230126, 1051032, 1, 1, 0, 700), +(3227, 4230126, 1082010, 1, 1, 0, 1000), +(3228, 4230126, 2044201, 1, 1, 0, 300), +(3229, 4230126, 1082066, 1, 1, 0, 1000), +(3230, 4230126, 1082092, 1, 1, 0, 1000), +(3231, 4230126, 1082089, 1, 1, 0, 1000), +(3232, 4230126, 1082059, 1, 1, 0, 1000), +(3233, 4230126, 4006001, 1, 1, 0, 10000), +(3234, 4230126, 1002631, 1, 1, 0, 1500), +(3235, 4230126, 2040419, 1, 1, 0, 300), +(3236, 4230126, 2040425, 1, 1, 0, 300), +(3237, 4230126, 2049000, 1, 1, 0, 150), +(3238, 4230126, 4130004, 1, 1, 0, 6000), +(3239, 4230126, 4130008, 1, 1, 0, 6000), +(3240, 4230126, 4130012, 1, 1, 0, 6000), +(3241, 4230200, 2000002, 1, 1, 0, 20000), +(3242, 4230200, 2022040, 1, 1, 0, 20000), +(3243, 4230200, 2000003, 1, 1, 0, 20000), +(3244, 4230200, 4010002, 1, 1, 0, 9000), +(3245, 4230200, 4010003, 1, 1, 0, 9000), +(3246, 4230200, 4004001, 1, 1, 0, 10000), +(3247, 4230200, 2040001, 1, 1, 0, 300), +(3248, 4230200, 2040704, 1, 1, 0, 300), +(3249, 4230200, 4000158, 1, 1, 0, 600000), +(3250, 4230200, 1072112, 1, 1, 0, 800), +(3251, 4230200, 1051027, 1, 1, 0, 700), +(3252, 4230200, 1002170, 1, 1, 0, 1500), +(3253, 4230200, 1040000, 1, 1, 0, 800), +(3254, 4230200, 1060000, 1, 1, 0, 800), +(3255, 4230200, 1432005, 1, 1, 0, 500), +(3256, 4230200, 1472014, 1, 1, 0, 500), +(3257, 4230200, 1462006, 1, 1, 0, 500), +(3258, 4230200, 1002207, 1, 1, 0, 1500), +(3259, 4230200, 1002215, 1, 1, 0, 1500), +(3260, 4230200, 1040094, 1, 1, 0, 800), +(3261, 4230200, 1060083, 1, 1, 0, 800), +(3262, 4230200, 1051038, 1, 1, 0, 700), +(3263, 4230200, 1041088, 1, 1, 0, 800), +(3264, 4230200, 1061087, 1, 1, 0, 800), +(3265, 4230200, 1072300, 1, 1, 0, 800), +(3266, 4230200, 2040620, 1, 1, 0, 300), +(3267, 4230200, 2044310, 1, 1, 0, 300), +(3268, 4230200, 4130003, 1, 1, 0, 6000), +(3269, 4230200, 4130007, 1, 1, 0, 6000), +(3270, 4230201, 4000159, 1, 1, 0, 600000), +(3271, 4230201, 2002004, 1, 1, 0, 20000), +(3272, 4230201, 2000002, 1, 1, 0, 20000), +(3273, 4230201, 2000003, 1, 1, 0, 20000), +(3274, 4230201, 2022040, 1, 1, 0, 20000), +(3275, 4230201, 4020003, 1, 1, 0, 9000), +(3276, 4230201, 4010004, 1, 1, 0, 9000), +(3277, 4230201, 4004002, 1, 1, 0, 10000), +(3278, 4230201, 2040801, 1, 1, 0, 300), +(3279, 4230201, 2040901, 1, 1, 0, 300), +(3280, 4230201, 2060000, 1, 1, 0, 30000), +(3281, 4230201, 2061000, 1, 1, 0, 30000), +(3282, 4230201, 1072106, 1, 1, 0, 800), +(3283, 4230201, 1072102, 1, 1, 0, 800), +(3284, 4230201, 1082055, 1, 1, 0, 1000), +(3285, 4230201, 1002137, 1, 1, 0, 1500), +(3286, 4230201, 1072126, 1, 1, 0, 800), +(3287, 4230201, 1082024, 1, 1, 0, 1000), +(3288, 4230201, 1041074, 1, 1, 0, 800), +(3289, 4230201, 1061069, 1, 1, 0, 800), +(3290, 4230201, 1051031, 1, 1, 0, 700), +(3291, 4230201, 1041078, 1, 1, 0, 800), +(3292, 4230201, 1061077, 1, 1, 0, 800), +(3293, 4230201, 1051037, 1, 1, 0, 700), +(3294, 4230201, 1072140, 1, 1, 0, 800), +(3295, 4230201, 1082011, 1, 1, 0, 1000), +(3296, 4230201, 2040417, 1, 1, 0, 300), +(3297, 4230201, 4130006, 1, 1, 0, 6000), +(3298, 4230201, 4130016, 1, 1, 0, 6000), +(3299, 4230300, 4000169, 1, 1, 0, 600000), +(3300, 4230300, 4000021, 1, 1, 0, 50000), +(3301, 4230300, 2000002, 1, 1, 0, 20000), +(3302, 4230300, 2000003, 1, 1, 0, 20000), +(3303, 4230300, 4020005, 1, 1, 0, 9000), +(3304, 4230300, 4010004, 1, 1, 0, 9000), +(3305, 4230300, 4004001, 1, 1, 0, 10000), +(3306, 4230300, 2060000, 1, 1, 0, 30000), +(3307, 4230300, 2061000, 1, 1, 0, 30000), +(3308, 4230300, 1302016, 1, 1, 0, 700), +(3309, 4230300, 1082072, 1, 1, 0, 1000), +(3310, 4230300, 1072109, 1, 1, 0, 800), +(3311, 4230300, 1072112, 1, 1, 0, 800), +(3312, 4230300, 1092014, 1, 1, 0, 700), +(3313, 4230300, 1032011, 1, 1, 0, 1000), +(3314, 4230300, 1312007, 1, 1, 0, 700), +(3315, 4230300, 2070002, 1, 1, 0, 500), +(3316, 4230300, 1102001, 1, 1, 0, 1000), +(3317, 4230300, 4006000, 1, 1, 0, 10000), +(3318, 4230300, 2040705, 1, 1, 0, 300), +(3319, 4230300, 1482006, 1, 1, 0, 500), +(3320, 4230300, 2040029, 1, 1, 0, 300), +(3321, 4230300, 2040417, 1, 1, 0, 300), +(3322, 4230300, 4130009, 1, 1, 0, 6000), +(3323, 4230300, 4130015, 1, 1, 0, 6000), +(3324, 4230300, 4130017, 1, 1, 0, 6000), +(3325, 4230400, 4000178, 1, 1, 0, 600000), +(3326, 4230400, 2044001, 1, 1, 0, 300), +(3327, 4230400, 2060000, 1, 1, 0, 30000), +(3328, 4230400, 2061000, 1, 1, 0, 30000), +(3329, 4230400, 4020008, 1, 1, 0, 9000), +(3330, 4230400, 4010001, 1, 1, 0, 9000), +(3331, 4230400, 2000002, 1, 1, 0, 20000), +(3332, 4230400, 2000003, 1, 1, 0, 20000), +(3333, 4230400, 2000004, 1, 1, 0, 20000), +(3334, 4230400, 1002184, 1, 1, 0, 1500), +(3335, 4230400, 1032018, 1, 1, 0, 1000), +(3336, 4230400, 1041082, 1, 1, 0, 800), +(3337, 4230400, 1061081, 1, 1, 0, 800), +(3338, 4230400, 1050047, 1, 1, 0, 700), +(3339, 4230400, 1082071, 1, 1, 0, 1000), +(3340, 4230400, 1072116, 1, 1, 0, 800), +(3341, 4230400, 1072126, 1, 1, 0, 800), +(3342, 4230400, 4020007, 1, 1, 0, 9000), +(3343, 4230400, 2040923, 1, 1, 0, 300), +(3344, 4230400, 4130001, 1, 1, 0, 6000), +(3345, 4230400, 4130010, 1, 1, 0, 6000), +(3346, 4230400, 4130011, 1, 1, 0, 6000), +(3347, 4230500, 4000276, 1, 1, 0, 600000), +(3348, 4230500, 4000021, 1, 1, 0, 50000), +(3349, 4230500, 2060000, 1, 1, 0, 30000), +(3350, 4230500, 2061000, 1, 1, 0, 30000), +(3351, 4230500, 2040001, 1, 1, 0, 300), +(3352, 4230500, 2000002, 1, 1, 0, 20000), +(3353, 4230500, 4010006, 1, 1, 0, 9000), +(3354, 4230500, 2000003, 1, 1, 0, 20000), +(3355, 4230500, 1002023, 1, 1, 0, 1500), +(3356, 4230500, 4010001, 1, 1, 0, 9000), +(3357, 4230500, 1002103, 1, 1, 0, 1500), +(3358, 4230500, 1002092, 1, 1, 0, 1500), +(3359, 4230500, 1002155, 1, 1, 0, 1500), +(3360, 4230500, 1051016, 1, 1, 0, 700), +(3361, 4230500, 1061061, 1, 1, 0, 800), +(3362, 4230500, 1041066, 1, 1, 0, 800), +(3363, 4230500, 1050038, 1, 1, 0, 700), +(3364, 4230500, 1041095, 1, 1, 0, 800), +(3365, 4230500, 1061094, 1, 1, 0, 800), +(3366, 4230500, 1482006, 1, 1, 0, 500), +(3367, 4230500, 2330001, 1, 1, 0, 500), +(3368, 4230500, 4130004, 1, 1, 0, 6000), +(3369, 4230500, 4130014, 1, 1, 0, 6000), +(3370, 4230500, 4130016, 1, 1, 0, 6000), +(3371, 4230501, 4000277, 1, 1, 0, 600000), +(3372, 4230501, 2060000, 1, 1, 0, 30000), +(3373, 4230501, 2061000, 1, 1, 0, 30000), +(3374, 4230501, 4010001, 1, 1, 0, 9000), +(3375, 4230501, 2000002, 1, 1, 0, 20000), +(3376, 4230501, 2000003, 1, 1, 0, 20000), +(3377, 4230501, 2040901, 1, 1, 0, 300), +(3378, 4230501, 1472018, 1, 1, 0, 500), +(3379, 4230501, 1032018, 1, 1, 0, 1000), +(3380, 4230501, 1072110, 1, 1, 0, 800), +(3381, 4230501, 1051026, 1, 1, 0, 700), +(3382, 4230501, 1061076, 1, 1, 0, 800), +(3383, 4230501, 1002217, 1, 1, 0, 1500), +(3384, 4230501, 4004002, 1, 1, 0, 10000), +(3385, 4230501, 1072300, 1, 1, 0, 800), +(3386, 4230501, 2040420, 1, 1, 0, 300), +(3387, 4230501, 2049000, 1, 1, 0, 150), +(3388, 4230501, 4130000, 1, 1, 0, 6000), +(3389, 4230501, 4130009, 1, 1, 0, 6000), +(3390, 4230501, 4130011, 1, 1, 0, 6000), +(3391, 4230502, 4000278, 1, 1, 0, 600000), +(3392, 4230502, 2000002, 1, 1, 0, 20000), +(3393, 4230502, 2000003, 1, 1, 0, 20000), +(3394, 4230502, 4020008, 1, 1, 0, 9000), +(3395, 4230502, 4020004, 1, 1, 0, 9000), +(3396, 4230502, 4004003, 1, 1, 0, 10000), +(3397, 4230502, 2048004, 1, 1, 0, 300), +(3398, 4230502, 2070002, 1, 1, 0, 500), +(3399, 4230502, 2044501, 1, 1, 0, 300), +(3400, 4230502, 1442009, 1, 1, 0, 700), +(3401, 4230502, 2060000, 1, 1, 0, 30000), +(3402, 4230502, 2061000, 1, 1, 0, 30000), +(3403, 4230502, 1452008, 1, 1, 0, 500), +(3404, 4230502, 1002024, 1, 1, 0, 1500), +(3405, 4230502, 1041083, 1, 1, 0, 800), +(3406, 4230502, 1061082, 1, 1, 0, 800), +(3407, 4230502, 1072303, 1, 1, 0, 800), +(3408, 4230502, 2040823, 1, 1, 0, 300), +(3409, 4230502, 2043114, 1, 1, 0, 300), +(3410, 4230502, 4130003, 1, 1, 0, 6000), +(3411, 4230502, 4130009, 1, 1, 0, 6000), +(3412, 4230502, 4130017, 1, 1, 0, 6000), +(3413, 4230503, 4000281, 1, 1, 0, 600000), +(3414, 4230503, 2000002, 1, 1, 0, 20000), +(3415, 4230503, 2000003, 1, 1, 0, 20000), +(3416, 4230503, 4020005, 1, 1, 0, 9000), +(3417, 4230503, 4010004, 1, 1, 0, 9000), +(3418, 4230503, 4004001, 1, 1, 0, 10000), +(3419, 4230503, 2060000, 1, 1, 0, 30000), +(3420, 4230503, 2061000, 1, 1, 0, 30000), +(3421, 4230503, 1032008, 1, 1, 0, 1000), +(3422, 4230503, 1002081, 1, 1, 0, 1500), +(3423, 4230503, 1040089, 1, 1, 0, 800), +(3424, 4230503, 1060078, 1, 1, 0, 800), +(3425, 4230503, 1050052, 1, 1, 0, 700), +(3426, 4230503, 1102001, 1, 1, 0, 1000), +(3427, 4230503, 2040705, 1, 1, 0, 300), +(3428, 4230503, 4000280, 1, 1, 0, 600000), +(3429, 4230503, 1492006, 1, 1, 0, 500), +(3430, 4230503, 2044410, 1, 1, 0, 300), +(3431, 4230503, 4130001, 1, 1, 0, 6000), +(3432, 4230503, 4130007, 1, 1, 0, 6000), +(3433, 4230504, 4000281, 1, 1, 0, 600000), +(3434, 4230504, 2000002, 1, 1, 0, 20000), +(3435, 4230504, 2000003, 1, 1, 0, 20000), +(3436, 4230504, 4010002, 1, 1, 0, 9000), +(3437, 4230504, 4010004, 1, 1, 0, 9000), +(3438, 4230504, 4004000, 1, 1, 0, 10000), +(3439, 4230504, 2060000, 1, 1, 0, 30000), +(3440, 4230504, 2061000, 1, 1, 0, 30000), +(3441, 4230504, 2040504, 1, 1, 0, 300), +(3442, 4230504, 2044002, 1, 1, 0, 300), +(3443, 4230504, 1002085, 1, 1, 0, 1500), +(3444, 4230504, 1382001, 1, 1, 0, 700), +(3445, 4230504, 1082010, 1, 1, 0, 1000), +(3446, 4230504, 1041077, 1, 1, 0, 800), +(3447, 4230504, 4000279, 1, 1, 0, 600000), +(3448, 4230504, 1002631, 1, 1, 0, 1500), +(3449, 4230504, 2330002, 1, 1, 0, 500), +(3450, 4230504, 2044310, 1, 1, 0, 300), +(3451, 4230504, 4130002, 1, 1, 0, 6000), +(3452, 4230504, 4130013, 1, 1, 0, 6000), +(3453, 4230505, 4000291, 1, 1, 0, 600000), +(3454, 4230505, 2000002, 1, 1, 0, 20000), +(3455, 4230505, 2000003, 1, 1, 0, 20000), +(3456, 4230505, 4020000, 1, 1, 0, 9000), +(3457, 4230505, 4020006, 1, 1, 0, 9000), +(3458, 4230505, 2044102, 1, 1, 0, 300), +(3459, 4230505, 1372007, 1, 1, 0, 700), +(3460, 4230505, 1002215, 1, 1, 0, 1500), +(3461, 4230505, 4006001, 1, 1, 0, 10000), +(3462, 4230505, 1040089, 1, 1, 0, 800), +(3463, 4230505, 1050045, 1, 1, 0, 700), +(3464, 4230505, 4004002, 1, 1, 0, 10000), +(3465, 4230505, 2040001, 1, 1, 0, 300), +(3466, 4230505, 1052116, 1, 1, 0, 700), +(3467, 4230505, 2330002, 1, 1, 0, 500), +(3468, 4230505, 4130001, 1, 1, 0, 6000), +(3469, 4230505, 4130014, 1, 1, 0, 6000), +(3470, 4230505, 4130016, 1, 1, 0, 6000), +(3471, 4230506, 4000292, 1, 1, 0, 600000), +(3472, 4230506, 2000002, 1, 1, 0, 20000), +(3473, 4230506, 2000003, 1, 1, 0, 20000), +(3474, 4230506, 4010001, 1, 1, 0, 9000), +(3475, 4230506, 4020000, 1, 1, 0, 9000), +(3476, 4230506, 1041086, 1, 1, 0, 800), +(3477, 4230506, 1061085, 1, 1, 0, 800), +(3478, 4230506, 1302013, 1, 1, 0, 700), +(3479, 4230506, 1002083, 1, 1, 0, 1500), +(3480, 4230506, 1032007, 1, 1, 0, 1000), +(3481, 4230506, 1041080, 1, 1, 0, 800), +(3482, 4230506, 1061079, 1, 1, 0, 800), +(3483, 4230506, 1002212, 1, 1, 0, 1500), +(3484, 4230506, 1041092, 1, 1, 0, 800), +(3485, 4230506, 1061091, 1, 1, 0, 800), +(3486, 4230506, 1102003, 1, 1, 0, 1000), +(3487, 4230506, 4006001, 1, 1, 0, 10000), +(3488, 4230506, 1492007, 1, 1, 0, 500), +(3489, 4230506, 2040622, 1, 1, 0, 300), +(3490, 4230506, 2044110, 1, 1, 0, 300), +(3491, 4230506, 2044312, 1, 1, 0, 300), +(3492, 4230506, 2049100, 1, 1, 0, 150), +(3493, 4230506, 4130000, 1, 1, 0, 6000), +(3494, 4230506, 4130017, 1, 1, 0, 6000), +(3495, 4230600, 2000003, 1, 1, 0, 20000), +(3496, 4230600, 2060000, 1, 1, 0, 30000), +(3497, 4230600, 2061000, 1, 1, 0, 30000), +(3498, 4230600, 2000002, 1, 1, 0, 20000), +(3499, 4230600, 4000332, 1, 1, 0, 600000), +(3500, 4230600, 4020001, 1, 1, 0, 9000), +(3501, 4230600, 4004003, 1, 1, 0, 10000), +(3502, 4230600, 4006001, 1, 1, 0, 10000), +(3503, 4230600, 2044401, 1, 1, 0, 300), +(3504, 4230600, 2070003, 1, 1, 0, 500), +(3505, 4230600, 1372012, 1, 1, 0, 700), +(3506, 4230600, 1432003, 1, 1, 0, 500), +(3507, 4230600, 1452007, 1, 1, 0, 500), +(3508, 4230600, 1102000, 1, 1, 0, 1000), +(3509, 4230600, 1002210, 1, 1, 0, 1500), +(3510, 4230600, 1072002, 1, 1, 0, 800), +(3511, 4230600, 1082055, 1, 1, 0, 1000), +(3512, 4230600, 1041082, 1, 1, 0, 800), +(3513, 4230600, 1061081, 1, 1, 0, 800), +(3514, 4230600, 4010007, 1, 1, 0, 9000), +(3515, 4230600, 1492006, 1, 1, 0, 500), +(3516, 4230600, 2044802, 1, 1, 0, 300), +(3517, 4230600, 2040823, 1, 1, 0, 300), +(3518, 4230600, 2044412, 1, 1, 0, 300), +(3519, 4230600, 4130000, 1, 1, 0, 6000), +(3520, 4230600, 4130016, 1, 1, 0, 6000), +(3521, 4240000, 4000125, 1, 1, 0, 600000), +(3522, 4240000, 2060000, 1, 1, 0, 30000), +(3523, 4240000, 2061000, 1, 1, 0, 30000), +(3524, 4240000, 2000002, 1, 1, 0, 20000), +(3525, 4240000, 2000004, 1, 1, 0, 20000), +(3526, 4240000, 2002008, 1, 1, 0, 20000), +(3527, 4240000, 1102016, 1, 1, 0, 1000), +(3528, 4240000, 4010006, 1, 1, 0, 9000), +(3529, 4240000, 4020008, 1, 1, 0, 9000), +(3530, 4240000, 4004003, 1, 1, 0, 10000), +(3531, 4240000, 2043801, 1, 1, 0, 300), +(3532, 4240000, 4006001, 1, 1, 0, 10000), +(3533, 4240000, 4021009, 1, 1, 0, 9000), +(3534, 4240000, 1322016, 1, 1, 0, 700), +(3535, 4240000, 1041074, 1, 1, 0, 800), +(3536, 4240000, 1061069, 1, 1, 0, 800), +(3537, 4240000, 1041083, 1, 1, 0, 800), +(3538, 4240000, 1061082, 1, 1, 0, 800), +(3539, 4240000, 1332003, 1, 1, 0, 500), +(3540, 4240000, 1072122, 1, 1, 0, 800), +(3541, 4240000, 1072130, 1, 1, 0, 800), +(3542, 4240000, 1072133, 1, 1, 0, 800), +(3543, 4240000, 1082080, 1, 1, 0, 1000), +(3544, 4240000, 1072125, 1, 1, 0, 800), +(3545, 4240000, 1002216, 1, 1, 0, 1500), +(3546, 4240000, 1002101, 1, 1, 0, 1500), +(3547, 4240000, 2040029, 1, 1, 0, 300), +(3548, 4240000, 2040619, 1, 1, 0, 300), +(3549, 4240000, 2044114, 1, 1, 0, 300), +(3550, 4240000, 4130006, 1, 1, 0, 6000), +(3551, 4240000, 4130011, 1, 1, 0, 6000), +(3552, 4250000, 4000436, 1, 1, 0, 600000), +(3553, 4250000, 2000002, 1, 1, 0, 20000), +(3554, 4250000, 2000003, 1, 1, 0, 20000), +(3555, 4250000, 4010005, 1, 1, 0, 9000), +(3556, 4250000, 4020004, 1, 1, 0, 9000), +(3557, 4250000, 2040004, 1, 1, 0, 300), +(3558, 4250000, 1002025, 1, 1, 0, 1500), +(3559, 4250000, 1051025, 1, 1, 0, 700), +(3560, 4250000, 1082083, 1, 1, 0, 1000), +(3561, 4250000, 1072109, 1, 1, 0, 800), +(3562, 4250000, 1492006, 1, 1, 0, 500), +(3563, 4250000, 4130005, 1, 1, 0, 6000), +(3564, 4250000, 4130015, 1, 1, 0, 6000), +(3565, 4250000, 4130017, 1, 1, 0, 6000), +(3566, 4250001, 2000002, 1, 1, 0, 20000), +(3567, 4250001, 2000003, 1, 1, 0, 20000), +(3568, 4250001, 4010004, 1, 1, 0, 9000), +(3569, 4250001, 4020005, 1, 1, 0, 9000), +(3570, 4250001, 2040627, 1, 1, 0, 300), +(3571, 4250001, 1002215, 1, 1, 0, 1500), +(3572, 4250001, 1051038, 1, 1, 0, 700), +(3573, 4250001, 1082066, 1, 1, 0, 1000), +(3574, 4250001, 1072303, 1, 1, 0, 800), +(3575, 4250001, 1442005, 1, 1, 0, 700), +(3576, 4250001, 4000438, 1, 1, 0, 600000), +(3577, 4250001, 4130014, 1, 1, 0, 6000), +(3578, 5090000, 4000413, 1, 1, 0, 600000), +(3579, 5090001, 4000412, 1, 1, 0, 600000), +(3580, 5100000, 4000048, 1, 1, 0, 600000), +(3581, 5100000, 4003005, 1, 1, 0, 200000), +(3582, 5100000, 4000021, 1, 1, 0, 50000), +(3583, 5100000, 2000002, 1, 1, 0, 20000), +(3584, 5100000, 2000003, 1, 1, 0, 20000), +(3585, 5100000, 2000004, 1, 1, 0, 20000), +(3586, 5100000, 4020001, 1, 1, 0, 9000), +(3587, 5100000, 4010002, 1, 1, 0, 9000), +(3588, 5100000, 1072089, 1, 1, 0, 800), +(3589, 5100000, 1082038, 1, 1, 0, 1000), +(3590, 5100000, 1452006, 1, 1, 0, 500), +(3591, 5100000, 1442009, 1, 1, 0, 700), +(3592, 5100000, 1051044, 1, 1, 0, 700), +(3593, 5100000, 1051045, 1, 1, 0, 700), +(3594, 5100000, 2044602, 1, 1, 0, 300), +(3595, 5100000, 1041096, 1, 1, 0, 800), +(3596, 5100000, 1061095, 1, 1, 0, 800), +(3597, 5100000, 2040804, 1, 1, 0, 300), +(3598, 5100000, 4004002, 1, 1, 0, 10000), +(3599, 5100000, 1051037, 1, 1, 0, 700), +(3600, 5100000, 1052116, 1, 1, 0, 700), +(3601, 5100000, 2040321, 1, 1, 0, 300), +(3602, 5100000, 2040933, 1, 1, 0, 300), +(3603, 5100000, 2040925, 1, 1, 0, 300), +(3604, 5100000, 2043019, 1, 1, 0, 300), +(3605, 5100000, 2043110, 1, 1, 0, 300), +(3606, 5100000, 4130010, 1, 1, 0, 6000), +(3607, 5100000, 4130011, 1, 1, 0, 6000), +(3608, 5100002, 4000081, 1, 1, 0, 600000), +(3609, 5100002, 2000002, 1, 1, 0, 20000), +(3610, 5100002, 2000003, 1, 1, 0, 20000), +(3611, 5100002, 4010001, 1, 1, 0, 9000), +(3612, 5100002, 4020000, 1, 1, 0, 9000), +(3613, 5100002, 4004000, 1, 1, 0, 10000), +(3614, 5100002, 2041010, 1, 1, 0, 300), +(3615, 5100002, 2070003, 1, 1, 0, 500), +(3616, 5100002, 4006000, 1, 1, 0, 10000), +(3617, 5100002, 1051025, 1, 1, 0, 700), +(3618, 5100002, 1302009, 1, 1, 0, 700), +(3619, 5100002, 1041076, 1, 1, 0, 800), +(3620, 5100002, 1061071, 1, 1, 0, 800), +(3621, 5100002, 1332016, 1, 1, 0, 500), +(3622, 5100002, 1322017, 1, 1, 0, 700), +(3623, 5100002, 1002209, 1, 1, 0, 1500), +(3624, 5100002, 1002214, 1, 1, 0, 1500), +(3625, 5100002, 1040087, 1, 1, 0, 800), +(3626, 5100002, 1060076, 1, 1, 0, 800), +(3627, 5100002, 1072150, 1, 1, 0, 800), +(3628, 5100002, 1002242, 1, 1, 0, 1500), +(3629, 5100002, 1492007, 1, 1, 0, 500), +(3630, 5100002, 2040326, 1, 1, 0, 300), +(3631, 5100002, 2049000, 1, 1, 0, 150), +(3632, 5100002, 4130001, 1, 1, 0, 6000), +(3633, 5100002, 4130007, 1, 1, 0, 6000), +(3634, 5100003, 4000170, 1, 1, 0, 600000), +(3635, 5100003, 4000021, 1, 1, 0, 50000), +(3636, 5100003, 2000002, 1, 1, 0, 20000), +(3637, 5100003, 2000003, 1, 1, 0, 20000), +(3638, 5100003, 2000004, 1, 1, 0, 20000), +(3639, 5100003, 4020001, 1, 1, 0, 9000), +(3640, 5100003, 4010002, 1, 1, 0, 9000), +(3641, 5100003, 1332011, 1, 1, 0, 500), +(3642, 5100003, 1072118, 1, 1, 0, 800), +(3643, 5100003, 1051038, 1, 1, 0, 700), +(3644, 5100003, 2040901, 1, 1, 0, 300), +(3645, 5100003, 2002003, 1, 1, 0, 20000), +(3646, 5100003, 1322017, 1, 1, 0, 700), +(3647, 5100003, 2044602, 1, 1, 0, 300), +(3648, 5100003, 1041088, 1, 1, 0, 800), +(3649, 5100003, 1060077, 1, 1, 0, 800), +(3650, 5100003, 2040804, 1, 1, 0, 300), +(3651, 5100003, 4004002, 1, 1, 0, 10000), +(3652, 5100003, 1312008, 1, 1, 0, 700), +(3653, 5100003, 1082198, 1, 1, 0, 1000), +(3654, 5100003, 2044805, 1, 1, 0, 300), +(3655, 5100003, 4130003, 1, 1, 0, 6000), +(3656, 5100003, 4130008, 1, 1, 0, 6000), +(3657, 5100003, 4130016, 1, 1, 0, 6000), +(3658, 5100004, 4000172, 1, 1, 0, 600000), +(3659, 5100004, 4000021, 1, 1, 0, 50000), +(3660, 5100004, 4004004, 1, 1, 0, 10000), +(3661, 5100004, 2000003, 1, 1, 0, 20000), +(3662, 5100004, 2000004, 1, 1, 0, 20000), +(3663, 5100004, 4020004, 1, 1, 0, 9000), +(3664, 5100004, 4010005, 1, 1, 0, 9000), +(3665, 5100004, 1032021, 1, 1, 0, 1000), +(3666, 5100004, 1072134, 1, 1, 0, 800), +(3667, 5100004, 1082066, 1, 1, 0, 1000), +(3668, 5100004, 1050058, 1, 1, 0, 700), +(3669, 5100004, 1051046, 1, 1, 0, 700), +(3670, 5100004, 2043801, 1, 1, 0, 300), +(3671, 5100004, 1082081, 1, 1, 0, 1000), +(3672, 5100004, 1432006, 1, 1, 0, 500), +(3673, 5100004, 1040099, 1, 1, 0, 800), +(3674, 5100004, 1060088, 1, 1, 0, 800), +(3675, 5100004, 4004002, 1, 1, 0, 10000), +(3676, 5100004, 1040087, 1, 1, 0, 800), +(3677, 5100004, 1060076, 1, 1, 0, 800), +(3678, 5100004, 2043701, 1, 1, 0, 300), +(3679, 5100004, 1052119, 1, 1, 0, 700), +(3680, 5100004, 2040420, 1, 1, 0, 300), +(3681, 5100004, 4130003, 1, 1, 0, 6000), +(3682, 5100004, 4130005, 1, 1, 0, 6000), +(3683, 5100004, 4130011, 1, 1, 0, 6000), +(3684, 5100005, 4000171, 1, 1, 0, 600000), +(3685, 5100005, 2000002, 1, 1, 0, 20000), +(3686, 5100005, 4000021, 1, 1, 0, 50000), +(3687, 5100005, 2000004, 1, 1, 0, 20000), +(3688, 5100005, 2000003, 1, 1, 0, 20000), +(3689, 5100005, 4010005, 1, 1, 0, 9000), +(3690, 5100005, 4010001, 1, 1, 0, 9000), +(3691, 5100005, 4004003, 1, 1, 0, 10000), +(3692, 5100005, 4006000, 1, 1, 0, 10000), +(3693, 5100005, 2041023, 1, 1, 0, 300), +(3694, 5100005, 1402006, 1, 1, 0, 700), +(3695, 5100005, 2044201, 1, 1, 0, 300), +(3696, 5100005, 1051045, 1, 1, 0, 700), +(3697, 5100005, 2070004, 1, 1, 0, 500), +(3698, 5100005, 1422007, 1, 1, 0, 700), +(3699, 5100005, 1040095, 1, 1, 0, 800), +(3700, 5100005, 1060084, 1, 1, 0, 800), +(3701, 5100005, 1041079, 1, 1, 0, 800), +(3702, 5100005, 1061078, 1, 1, 0, 800), +(3703, 5100005, 2044901, 1, 1, 0, 300), +(3704, 5100005, 2040316, 1, 1, 0, 300), +(3705, 5100005, 2040621, 1, 1, 0, 300), +(3706, 5100005, 4130008, 1, 1, 0, 6000), +(3707, 5100005, 4130009, 1, 1, 0, 6000), +(3708, 5110300, 2000002, 1, 1, 0, 20000), +(3709, 5110300, 2000003, 1, 1, 0, 20000), +(3710, 5110300, 4004002, 1, 1, 0, 10000), +(3711, 5110300, 4020005, 1, 1, 0, 9000), +(3712, 5110300, 1332011, 1, 1, 0, 500), +(3713, 5110300, 1072118, 1, 1, 0, 800), +(3714, 5110300, 1051038, 1, 1, 0, 700), +(3715, 5110300, 2040901, 1, 1, 0, 300), +(3716, 5110300, 2002003, 1, 1, 0, 20000), +(3717, 5110300, 2044602, 1, 1, 0, 300), +(3718, 5110300, 1041088, 1, 1, 0, 800), +(3719, 5110300, 1060077, 1, 1, 0, 800), +(3720, 5110300, 1312008, 1, 1, 0, 700), +(3721, 5110300, 4000360, 1, 1, 0, 600000), +(3722, 5110300, 1482007, 1, 1, 0, 500), +(3723, 5110300, 2044902, 1, 1, 0, 300), +(3724, 5110300, 1052116, 1, 1, 0, 700), +(3725, 5110300, 2040027, 1, 1, 0, 300), +(3726, 5110300, 2040317, 1, 1, 0, 300), +(3727, 5110300, 4130000, 1, 1, 0, 6000), +(3728, 5110300, 4130004, 1, 1, 0, 6000), +(3729, 5110300, 4130006, 1, 1, 0, 6000), +(3730, 5110301, 4004004, 1, 1, 0, 10000), +(3731, 5110301, 2000002, 1, 1, 0, 20000), +(3732, 5110301, 2000003, 1, 1, 0, 20000), +(3733, 5110301, 4020005, 1, 1, 0, 9000), +(3734, 5110301, 1002159, 1, 1, 0, 1500), +(3735, 5110301, 1040057, 1, 1, 0, 800), +(3736, 5110301, 1082004, 1, 1, 0, 1000), +(3737, 5110301, 1040096, 1, 1, 0, 800), +(3738, 5110301, 1060085, 1, 1, 0, 800), +(3739, 5110301, 1050052, 1, 1, 0, 700), +(3740, 5110301, 1040087, 1, 1, 0, 800), +(3741, 5110301, 1060076, 1, 1, 0, 800), +(3742, 5110301, 1040091, 1, 1, 0, 800), +(3743, 5110301, 1060080, 1, 1, 0, 800), +(3744, 5110301, 4000364, 1, 1, 0, 600000), +(3745, 5110301, 1492008, 1, 1, 0, 500), +(3746, 5110301, 2040323, 1, 1, 0, 300), +(3747, 5110301, 2040422, 1, 1, 0, 300), +(3748, 5110301, 2043017, 1, 1, 0, 300), +(3749, 5110301, 4130001, 1, 1, 0, 6000), +(3750, 5110301, 4130005, 1, 1, 0, 6000), +(3751, 5110301, 4130006, 1, 1, 0, 6000), +(3752, 5110302, 2000003, 1, 1, 0, 20000), +(3753, 5110302, 2000002, 1, 1, 0, 20000), +(3754, 5110302, 2000004, 1, 1, 0, 20000), +(3755, 5110302, 4010006, 1, 1, 0, 9000), +(3756, 5110302, 1082066, 1, 1, 0, 1000), +(3757, 5110302, 1072146, 1, 1, 0, 800), +(3758, 5110302, 1041077, 1, 1, 0, 800), +(3759, 5110302, 1061076, 1, 1, 0, 800), +(3760, 5110302, 1051037, 1, 1, 0, 700), +(3761, 5110302, 1002029, 1, 1, 0, 1500), +(3762, 5110302, 1002248, 1, 1, 0, 1500), +(3763, 5110302, 1002269, 1, 1, 0, 1500), +(3764, 5110302, 2040804, 1, 1, 0, 300), +(3765, 5110302, 2040901, 1, 1, 0, 300), +(3766, 5110302, 4000365, 1, 1, 0, 600000), +(3767, 5110302, 1082201, 1, 1, 0, 1000), +(3768, 5110302, 2040425, 1, 1, 0, 300), +(3769, 5110302, 2040923, 1, 1, 0, 300), +(3770, 5110302, 2044114, 1, 1, 0, 300), +(3771, 5110302, 4130008, 1, 1, 0, 6000), +(3772, 5110302, 4130009, 1, 1, 0, 6000), +(3773, 5120000, 4000061, 1, 1, 0, 600000), +(3774, 5120000, 4003005, 1, 1, 0, 200000), +(3775, 5120000, 2041017, 1, 1, 0, 300), +(3776, 5120000, 4004004, 1, 1, 0, 10000), +(3777, 5120000, 2000002, 1, 1, 0, 20000), +(3778, 5120000, 2000004, 1, 1, 0, 20000), +(3779, 5120000, 2000003, 1, 1, 0, 20000), +(3780, 5120000, 4020002, 1, 1, 0, 9000), +(3781, 5120000, 4010006, 1, 1, 0, 9000), +(3782, 5120000, 4004000, 1, 1, 0, 10000), +(3783, 5120000, 1092007, 1, 1, 0, 700), +(3784, 5120000, 2070002, 1, 1, 0, 500), +(3785, 5120000, 4006001, 1, 1, 0, 10000), +(3786, 5120000, 2040504, 1, 1, 0, 300), +(3787, 5120000, 1002185, 1, 1, 0, 1500), +(3788, 5120000, 1060070, 1, 1, 0, 800), +(3789, 5120000, 1040081, 1, 1, 0, 800), +(3790, 5120000, 1422007, 1, 1, 0, 700), +(3791, 5120000, 1051033, 1, 1, 0, 700), +(3792, 5120000, 1002086, 1, 1, 0, 1500), +(3793, 5120000, 1040088, 1, 1, 0, 800), +(3794, 5120000, 1060077, 1, 1, 0, 800), +(3795, 5120000, 1072134, 1, 1, 0, 800), +(3796, 5120000, 1072128, 1, 1, 0, 800), +(3797, 5120000, 1072144, 1, 1, 0, 800), +(3798, 5120000, 1082086, 1, 1, 0, 1000), +(3799, 5120000, 1082201, 1, 1, 0, 1000), +(3800, 5120000, 2330002, 1, 1, 0, 500), +(3801, 5120000, 2040324, 1, 1, 0, 300), +(3802, 5120000, 2040423, 1, 1, 0, 300), +(3803, 5120000, 2043017, 1, 1, 0, 300), +(3804, 5120000, 4130010, 1, 1, 0, 6000), +(3805, 5120001, 4000070, 1, 1, 0, 600000), +(3806, 5120001, 4003005, 1, 1, 0, 200000), +(3807, 5120001, 2000002, 1, 1, 0, 20000), +(3808, 5120001, 2000004, 1, 1, 0, 20000), +(3809, 5120001, 2000003, 1, 1, 0, 20000), +(3810, 5120001, 4020000, 1, 1, 0, 9000), +(3811, 5120001, 4010005, 1, 1, 0, 9000), +(3812, 5120001, 4004000, 1, 1, 0, 10000), +(3813, 5120001, 4006000, 1, 1, 0, 10000), +(3814, 5120001, 2041012, 1, 1, 0, 300), +(3815, 5120001, 2043002, 1, 1, 0, 300), +(3816, 5120001, 1072115, 1, 1, 0, 800), +(3817, 5120001, 1072126, 1, 1, 0, 800), +(3818, 5120001, 1082074, 1, 1, 0, 1000), +(3819, 5120001, 1402007, 1, 1, 0, 700), +(3820, 5120001, 1002028, 1, 1, 0, 1500), +(3821, 5120001, 1032013, 1, 1, 0, 1000), +(3822, 5120001, 1040094, 1, 1, 0, 800), +(3823, 5120001, 1060083, 1, 1, 0, 800), +(3824, 5120001, 1041089, 1, 1, 0, 800), +(3825, 5120001, 1061088, 1, 1, 0, 800), +(3826, 5120001, 1050054, 1, 1, 0, 700), +(3827, 5120001, 1050058, 1, 1, 0, 700), +(3828, 5120001, 1072306, 1, 1, 0, 800), +(3829, 5120001, 2331000, 1, 1, 0, 500), +(3830, 5120001, 2040933, 1, 1, 0, 300), +(3831, 5120001, 2044212, 1, 1, 0, 300), +(3832, 5120001, 4130000, 1, 1, 0, 6000), +(3833, 5120001, 4130008, 1, 1, 0, 6000), +(3834, 5120001, 4130009, 1, 1, 0, 6000), +(3835, 5120002, 4000071, 1, 1, 0, 600000), +(3836, 5120002, 4003005, 1, 1, 0, 200000), +(3837, 5120002, 2000002, 1, 1, 0, 20000), +(3838, 5120002, 2000004, 1, 1, 0, 20000), +(3839, 5120002, 2000003, 1, 1, 0, 20000), +(3840, 5120002, 4020003, 1, 1, 0, 9000), +(3841, 5120002, 4010002, 1, 1, 0, 9000), +(3842, 5120002, 4004001, 1, 1, 0, 10000), +(3843, 5120002, 4006001, 1, 1, 0, 10000), +(3844, 5120002, 2041017, 1, 1, 0, 300), +(3845, 5120002, 2044001, 1, 1, 0, 300), +(3846, 5120002, 1312007, 1, 1, 0, 700), +(3847, 5120002, 1040084, 1, 1, 0, 800), +(3848, 5120002, 1060073, 1, 1, 0, 800), +(3849, 5120002, 1002045, 1, 1, 0, 1500), +(3850, 5120002, 1002024, 1, 1, 0, 1500), +(3851, 5120002, 1302010, 1, 1, 0, 700), +(3852, 5120002, 1082009, 1, 1, 0, 1000), +(3853, 5120002, 1082081, 1, 1, 0, 1000), +(3854, 5120002, 1072123, 1, 1, 0, 800), +(3855, 5120002, 1072131, 1, 1, 0, 800), +(3856, 5120002, 1051041, 1, 1, 0, 700), +(3857, 5120002, 1002267, 1, 1, 0, 1500), +(3858, 5120002, 1002631, 1, 1, 0, 1500), +(3859, 5120002, 2330002, 1, 1, 0, 500), +(3860, 5120002, 2044212, 1, 1, 0, 300), +(3861, 5120002, 2049100, 1, 1, 0, 150), +(3862, 5120002, 4130002, 1, 1, 0, 6000), +(3863, 5120002, 4130014, 1, 1, 0, 6000), +(3864, 5120003, 4000072, 1, 1, 0, 600000), +(3865, 5120003, 4003005, 1, 1, 0, 200000), +(3866, 5120003, 2000002, 1, 1, 0, 20000), +(3867, 5120003, 2000004, 1, 1, 0, 20000), +(3868, 5120003, 2000003, 1, 1, 0, 20000), +(3869, 5120003, 4020005, 1, 1, 0, 9000), +(3870, 5120003, 4010001, 1, 1, 0, 9000), +(3871, 5120003, 4004003, 1, 1, 0, 10000), +(3872, 5120003, 4006000, 1, 1, 0, 10000), +(3873, 5120003, 2041023, 1, 1, 0, 300), +(3874, 5120003, 1032019, 1, 1, 0, 1000), +(3875, 5120003, 2070004, 1, 1, 0, 500); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(3876, 5120003, 2070010, 1, 1, 0, 500), +(3877, 5120003, 1002153, 1, 1, 0, 1500), +(3878, 5120003, 1002181, 1, 1, 0, 1500), +(3879, 5120003, 1032011, 1, 1, 0, 1000), +(3880, 5120003, 1041085, 1, 1, 0, 800), +(3881, 5120003, 1061084, 1, 1, 0, 800), +(3882, 5120003, 1051034, 1, 1, 0, 700), +(3883, 5120003, 1061077, 1, 1, 0, 800), +(3884, 5120003, 1041078, 1, 1, 0, 800), +(3885, 5120003, 1050052, 1, 1, 0, 700), +(3886, 5120003, 1072135, 1, 1, 0, 800), +(3887, 5120003, 1082082, 1, 1, 0, 1000), +(3888, 5120003, 1332015, 1, 1, 0, 500), +(3889, 5120003, 1322018, 1, 1, 0, 700), +(3890, 5120003, 1002634, 1, 1, 0, 1500), +(3891, 5120003, 2332000, 1, 1, 0, 500), +(3892, 5120003, 2040323, 1, 1, 0, 300), +(3893, 5120003, 2040924, 1, 1, 0, 300), +(3894, 5120003, 4130005, 1, 1, 0, 6000), +(3895, 5120003, 4130012, 1, 1, 0, 6000), +(3896, 5120100, 4000126, 1, 1, 0, 600000), +(3897, 5120100, 2060000, 1, 1, 0, 300000), +(3898, 5120100, 2061000, 1, 1, 0, 300000), +(3899, 5120100, 2000002, 1, 1, 0, 200000), +(3900, 5120100, 2000004, 1, 1, 0, 999999), +(3901, 5120100, 2002010, 1, 1, 0, 200000), +(3902, 5120100, 1032014, 1, 1, 0, 10000), +(3903, 5120100, 4004000, 1, 1, 0, 100000), +(3904, 5120100, 4020001, 1, 1, 0, 90000), +(3905, 5120100, 4010006, 1, 1, 0, 90000), +(3906, 5120100, 4020007, 1, 1, 0, 90000), +(3907, 5120100, 4011007, 1, 1, 0, 90000), +(3908, 5120100, 2044602, 1, 1, 0, 3000), +(3909, 5120100, 1041082, 1, 1, 0, 8000), +(3910, 5120100, 1061081, 1, 1, 0, 8000), +(3911, 5120100, 1002154, 1, 1, 0, 15000), +(3912, 5120100, 1082010, 1, 1, 0, 10000), +(3913, 5120100, 1082067, 1, 1, 0, 10000), +(3914, 5120100, 1072142, 1, 1, 0, 8000), +(3915, 5120100, 1040096, 1, 1, 0, 8000), +(3916, 5120100, 1060085, 1, 1, 0, 8000), +(3917, 5120100, 1002211, 1, 1, 0, 15000), +(3918, 5120100, 1402011, 1, 1, 0, 7000), +(3919, 5120100, 1092010, 1, 1, 0, 7000), +(3920, 5120100, 1412007, 1, 1, 0, 7000), +(3921, 5120100, 2043017, 1, 1, 0, 3000), +(3922, 5120100, 4130004, 1, 1, 0, 60000), +(3923, 5120100, 4130013, 1, 1, 0, 60000), +(3924, 5120500, 4000283, 1, 1, 0, 600000), +(3925, 5120500, 4000284, 1, 1, 0, 600000), +(3926, 5120500, 4000021, 1, 1, 0, 50000), +(3927, 5120500, 4003005, 1, 1, 0, 200000), +(3928, 5120500, 4004004, 1, 1, 0, 10000), +(3929, 5120500, 2000003, 1, 1, 0, 20000), +(3930, 5120500, 2000002, 1, 1, 0, 20000), +(3931, 5120500, 4020004, 1, 1, 0, 9000), +(3932, 5120500, 4010005, 1, 1, 0, 9000), +(3933, 5120500, 1032021, 1, 1, 0, 1000), +(3934, 5120500, 1072134, 1, 1, 0, 800), +(3935, 5120500, 1082066, 1, 1, 0, 1000), +(3936, 5120500, 1050058, 1, 1, 0, 700), +(3937, 5120500, 1082081, 1, 1, 0, 1000), +(3938, 5120500, 1040099, 1, 1, 0, 800), +(3939, 5120500, 1060088, 1, 1, 0, 800), +(3940, 5120500, 4004002, 1, 1, 0, 10000), +(3941, 5120500, 2043801, 1, 1, 0, 300), +(3942, 5120500, 1432006, 1, 1, 0, 500), +(3943, 5120500, 2043701, 1, 1, 0, 300), +(3944, 5120500, 1082201, 1, 1, 0, 1000), +(3945, 5120500, 2330002, 1, 1, 0, 500), +(3946, 5120500, 2040031, 1, 1, 0, 300), +(3947, 5120500, 2040515, 1, 1, 0, 300), +(3948, 5120500, 2049100, 1, 1, 0, 150), +(3949, 5120500, 4130000, 1, 1, 0, 6000), +(3950, 5120500, 4130009, 1, 1, 0, 6000), +(3951, 5120501, 4000293, 1, 1, 0, 600000), +(3952, 5120501, 2000002, 1, 1, 0, 20000), +(3953, 5120501, 2000003, 1, 1, 0, 20000), +(3954, 5120501, 4020005, 1, 1, 0, 9000), +(3955, 5120501, 4010001, 1, 1, 0, 9000), +(3956, 5120501, 4004003, 1, 1, 0, 10000), +(3957, 5120501, 4006000, 1, 1, 0, 10000), +(3958, 5120501, 2041023, 1, 1, 0, 300), +(3959, 5120501, 1050052, 1, 1, 0, 700), +(3960, 5120501, 1051037, 1, 1, 0, 700), +(3961, 5120501, 1032019, 1, 1, 0, 1000), +(3962, 5120501, 1040102, 1, 1, 0, 800), +(3963, 5120501, 1060090, 1, 1, 0, 800), +(3964, 5120501, 1051041, 1, 1, 0, 700), +(3965, 5120501, 1482008, 1, 1, 0, 500), +(3966, 5120501, 2040423, 1, 1, 0, 300), +(3967, 5120501, 2044310, 1, 1, 0, 300), +(3968, 5120501, 4130016, 1, 1, 0, 6000), +(3969, 5120501, 4130017, 1, 1, 0, 6000), +(3970, 5120502, 4000294, 1, 1, 0, 600000), +(3971, 5120502, 4004004, 1, 1, 0, 10000), +(3972, 5120502, 2000002, 1, 1, 0, 20000), +(3973, 5120502, 2000003, 1, 1, 0, 20000), +(3974, 5120502, 4020005, 1, 1, 0, 9000), +(3975, 5120502, 1002159, 1, 1, 0, 1500), +(3976, 5120502, 1040057, 1, 1, 0, 800), +(3977, 5120502, 1082004, 1, 1, 0, 1000), +(3978, 5120502, 1040096, 1, 1, 0, 800), +(3979, 5120502, 1060085, 1, 1, 0, 800), +(3980, 5120502, 1050052, 1, 1, 0, 700), +(3981, 5120502, 1040087, 1, 1, 0, 800), +(3982, 5120502, 1060076, 1, 1, 0, 800), +(3983, 5120502, 4006000, 1, 1, 0, 10000), +(3984, 5120502, 1040091, 1, 1, 0, 800), +(3985, 5120502, 1060080, 1, 1, 0, 800), +(3986, 5120502, 1052116, 1, 1, 0, 700), +(3987, 5120502, 2040425, 1, 1, 0, 300), +(3988, 5120502, 2040927, 1, 1, 0, 300), +(3989, 5120502, 4130000, 1, 1, 0, 6000), +(3990, 5120502, 4130003, 1, 1, 0, 6000), +(3991, 5120502, 4130005, 1, 1, 0, 6000), +(3992, 5120503, 4000286, 1, 1, 0, 600000), +(3993, 5120503, 2000002, 1, 1, 0, 20000), +(3994, 5120503, 2000003, 1, 1, 0, 20000), +(3995, 5120503, 4004002, 1, 1, 0, 10000), +(3996, 5120503, 4020005, 1, 1, 0, 9000), +(3997, 5120503, 1332011, 1, 1, 0, 500), +(3998, 5120503, 1072118, 1, 1, 0, 800), +(3999, 5120503, 1051038, 1, 1, 0, 700), +(4000, 5120503, 2040901, 1, 1, 0, 300), +(4001, 5120503, 2002003, 1, 1, 0, 20000), +(4002, 5120503, 2044602, 1, 1, 0, 300), +(4003, 5120503, 1041088, 1, 1, 0, 800), +(4004, 5120503, 1060077, 1, 1, 0, 800), +(4005, 5120503, 1312008, 1, 1, 0, 700), +(4006, 5120503, 1072303, 1, 1, 0, 800), +(4007, 5120503, 2040026, 1, 1, 0, 300), +(4008, 5120503, 2040422, 1, 1, 0, 300), +(4009, 5120503, 2040925, 1, 1, 0, 300), +(4010, 5120503, 2040927, 1, 1, 0, 300), +(4011, 5120503, 4130002, 1, 1, 0, 6000), +(4012, 5120503, 4130010, 1, 1, 0, 6000), +(4013, 5120503, 4130013, 1, 1, 0, 6000), +(4014, 5120504, 4000287, 1, 1, 0, 600000), +(4015, 5120504, 2000002, 1, 1, 0, 20000), +(4016, 5120504, 2000003, 1, 1, 0, 20000), +(4017, 5120504, 4020002, 1, 1, 0, 9000), +(4018, 5120504, 4010006, 1, 1, 0, 9000), +(4019, 5120504, 4004000, 1, 1, 0, 10000), +(4020, 5120504, 1002215, 1, 1, 0, 1500), +(4021, 5120504, 1040097, 1, 1, 0, 800), +(4022, 5120504, 1060086, 1, 1, 0, 800), +(4023, 5120504, 1092007, 1, 1, 0, 700), +(4024, 5120504, 1072072, 1, 1, 0, 800), +(4025, 5120504, 1040105, 1, 1, 0, 800), +(4026, 5120504, 1060093, 1, 1, 0, 800), +(4027, 5120504, 4006001, 1, 1, 0, 10000), +(4028, 5120504, 2040504, 1, 1, 0, 300), +(4029, 5120504, 1002634, 1, 1, 0, 1500), +(4030, 5120504, 2330002, 1, 1, 0, 500), +(4031, 5120504, 2040619, 1, 1, 0, 300), +(4032, 5120504, 2040825, 1, 1, 0, 300), +(4033, 5120504, 2040931, 1, 1, 0, 300), +(4034, 5120504, 4130007, 1, 1, 0, 6000), +(4035, 5120504, 4130012, 1, 1, 0, 6000), +(4036, 5120505, 4000021, 1, 1, 0, 50000), +(4037, 5120505, 4003005, 1, 1, 0, 200000), +(4038, 5120505, 2000003, 1, 1, 0, 20000), +(4039, 5120505, 2000002, 1, 1, 0, 20000), +(4040, 5120505, 2000004, 1, 1, 0, 20000), +(4041, 5120505, 4010006, 1, 1, 0, 9000), +(4042, 5120505, 1082066, 1, 1, 0, 1000), +(4043, 5120505, 1072146, 1, 1, 0, 800), +(4044, 5120505, 1041077, 1, 1, 0, 800), +(4045, 5120505, 1061076, 1, 1, 0, 800), +(4046, 5120505, 1051037, 1, 1, 0, 700), +(4047, 5120505, 1002029, 1, 1, 0, 1500), +(4048, 5120505, 1002248, 1, 1, 0, 1500), +(4049, 5120505, 1002269, 1, 1, 0, 1500), +(4050, 5120505, 4000288, 1, 1, 0, 600000), +(4051, 5120505, 2040804, 1, 1, 0, 300), +(4052, 5120505, 2040901, 1, 1, 0, 300), +(4053, 5120505, 1052119, 1, 1, 0, 700), +(4054, 5120505, 2040421, 1, 1, 0, 300), +(4055, 5120505, 2040534, 1, 1, 0, 300), +(4056, 5120505, 2040928, 1, 1, 0, 300), +(4057, 5120505, 2049000, 1, 1, 0, 150), +(4058, 5120505, 4130004, 1, 1, 0, 6000), +(4059, 5120505, 4130008, 1, 1, 0, 6000), +(4060, 5120505, 4130009, 1, 1, 0, 6000), +(4061, 5120506, 4000298, 1, 1, 0, 600000), +(4062, 5120506, 2000002, 1, 1, 0, 20000), +(4063, 5120506, 2000003, 1, 1, 0, 20000), +(4064, 5120506, 4020008, 1, 1, 0, 9000), +(4065, 5120506, 4010006, 1, 1, 0, 9000), +(4066, 5120506, 1002168, 1, 1, 0, 1500), +(4067, 5120506, 1002092, 1, 1, 0, 1500), +(4068, 5120506, 1040086, 1, 1, 0, 800), +(4069, 5120506, 1072127, 1, 1, 0, 800), +(4070, 5120506, 1402006, 1, 1, 0, 700), +(4071, 5120506, 2044201, 1, 1, 0, 300), +(4072, 5120506, 1040095, 1, 1, 0, 800), +(4073, 5120506, 1060084, 1, 1, 0, 800), +(4074, 5120506, 1452004, 1, 1, 0, 500), +(4075, 5120506, 1412007, 1, 1, 0, 700), +(4076, 5120506, 1050059, 1, 1, 0, 700), +(4077, 5120506, 1442010, 1, 1, 0, 700), +(4078, 5120506, 4000299, 1, 1, 0, 600000), +(4079, 5120506, 1492007, 1, 1, 0, 500), +(4080, 5120506, 2330002, 1, 1, 0, 500), +(4081, 5120506, 2040317, 1, 1, 0, 300), +(4082, 5120506, 2040617, 1, 1, 0, 300), +(4083, 5120506, 2040825, 1, 1, 0, 300), +(4084, 5120506, 2040927, 1, 1, 0, 300), +(4085, 5120506, 4130006, 1, 1, 0, 6000), +(4086, 5120506, 4130014, 1, 1, 0, 6000), +(4087, 5130100, 4000014, 1, 1, 0, 600000), +(4088, 5130100, 2000002, 1, 1, 0, 20000), +(4089, 5130100, 2002004, 1, 1, 0, 20000), +(4090, 5130100, 2012000, 1, 1, 0, 20000), +(4091, 5130100, 2012003, 1, 1, 0, 20000), +(4092, 5130100, 4010006, 1, 1, 0, 9000), +(4093, 5130100, 4020007, 1, 1, 0, 9000), +(4094, 5130100, 4000030, 1, 1, 0, 60000), +(4095, 5130100, 2000004, 1, 1, 0, 20000), +(4096, 5130100, 2070003, 1, 1, 0, 500), +(4097, 5130100, 1452007, 1, 1, 0, 500), +(4098, 5130100, 1432005, 1, 1, 0, 500), +(4099, 5130100, 1072108, 1, 1, 0, 800), +(4100, 5130100, 1072116, 1, 1, 0, 800), +(4101, 5130100, 1412005, 1, 1, 0, 700), +(4102, 5130100, 1051030, 1, 1, 0, 700), +(4103, 5130100, 1051037, 1, 1, 0, 700), +(4104, 5130100, 1040089, 1, 1, 0, 800), +(4105, 5130100, 1060078, 1, 1, 0, 800), +(4106, 5130100, 1041077, 1, 1, 0, 800), +(4107, 5130100, 1061076, 1, 1, 0, 800), +(4108, 5130100, 1082083, 1, 1, 0, 1000), +(4109, 5130100, 1382006, 1, 1, 0, 700), +(4110, 5130100, 1092008, 1, 1, 0, 700), +(4111, 5130100, 1462004, 1, 1, 0, 500), +(4112, 5130100, 2002001, 1, 1, 0, 20000), +(4113, 5130100, 4010004, 1, 1, 0, 9000), +(4114, 5130100, 1002631, 1, 1, 0, 1500), +(4115, 5130100, 2040422, 1, 1, 0, 300), +(4116, 5130100, 4130004, 1, 1, 0, 6000), +(4117, 5130100, 4130009, 1, 1, 0, 6000), +(4118, 5130100, 4130015, 1, 1, 0, 6000), +(4119, 5130101, 4000022, 1, 1, 0, 600000), +(4120, 5130101, 4020008, 1, 1, 0, 9000), +(4121, 5130101, 2000004, 1, 1, 0, 20000), +(4122, 5130101, 1092002, 1, 1, 0, 700), +(4123, 5130101, 2000003, 1, 1, 0, 20000), +(4124, 5130101, 2044501, 1, 1, 0, 300), +(4125, 5130101, 2044601, 1, 1, 0, 300), +(4126, 5130101, 1372012, 1, 1, 0, 700), +(4127, 5130101, 1082025, 1, 1, 0, 1000), +(4128, 5130101, 1082076, 1, 1, 0, 1000), +(4129, 5130101, 1072121, 1, 1, 0, 800), +(4130, 5130101, 1072143, 1, 1, 0, 800), +(4131, 5130101, 1041080, 1, 1, 0, 800), +(4132, 5130101, 1061079, 1, 1, 0, 800), +(4133, 5130101, 1002086, 1, 1, 0, 1500), +(4134, 5130101, 1050048, 1, 1, 0, 700), +(4135, 5130101, 1002247, 1, 1, 0, 1500), +(4136, 5130101, 1041091, 1, 1, 0, 800), +(4137, 5130101, 1061090, 1, 1, 0, 800), +(4138, 5130101, 1312009, 1, 1, 0, 700), +(4139, 5130101, 1452005, 1, 1, 0, 500), +(4140, 5130101, 1032002, 1, 1, 0, 1000), +(4141, 5130101, 2070003, 1, 1, 0, 500), +(4142, 5130101, 2000006, 1, 1, 0, 20000), +(4143, 5130101, 1040084, 1, 1, 0, 800), +(4144, 5130101, 1072303, 1, 1, 0, 800), +(4145, 5130101, 4130010, 1, 1, 0, 6000), +(4146, 5130101, 4130013, 1, 1, 0, 6000), +(4147, 5130102, 1050039, 1, 1, 0, 700), +(4148, 5130102, 4000025, 1, 1, 0, 600000), +(4149, 5130102, 4004004, 1, 1, 0, 10000), +(4150, 5130102, 2000003, 1, 1, 0, 20000), +(4151, 5130102, 2000004, 1, 1, 0, 20000), +(4152, 5130102, 4020008, 1, 1, 0, 9000), +(4153, 5130102, 2070004, 1, 1, 0, 500), +(4154, 5130102, 2044201, 1, 1, 0, 300), +(4155, 5130102, 1040085, 1, 1, 0, 800), +(4156, 5130102, 1060074, 1, 1, 0, 800), +(4157, 5130102, 1061069, 1, 1, 0, 800), +(4158, 5130102, 1041074, 1, 1, 0, 800), +(4159, 5130102, 1072120, 1, 1, 0, 800), +(4160, 5130102, 1002209, 1, 1, 0, 1500), +(4161, 5130102, 1002214, 1, 1, 0, 1500), +(4162, 5130102, 1082009, 1, 1, 0, 1000), +(4163, 5130102, 1002022, 1, 1, 0, 1500), +(4164, 5130102, 1032021, 1, 1, 0, 1000), +(4165, 5130102, 1082088, 1, 1, 0, 1000), +(4166, 5130102, 1072139, 1, 1, 0, 800), +(4167, 5130102, 1102018, 1, 1, 0, 1000), +(4168, 5130102, 1002249, 1, 1, 0, 1500), +(4169, 5130102, 1040091, 1, 1, 0, 800), +(4170, 5130102, 1060080, 1, 1, 0, 800), +(4171, 5130102, 1050059, 1, 1, 0, 700), +(4172, 5130102, 1382007, 1, 1, 0, 700), +(4173, 5130102, 1492008, 1, 1, 0, 500), +(4174, 5130102, 2044802, 1, 1, 0, 300), +(4175, 5130102, 2040425, 1, 1, 0, 300), +(4176, 5130102, 2040618, 1, 1, 0, 300), +(4177, 5130102, 4130000, 1, 1, 0, 6000), +(4178, 5130102, 4130016, 1, 1, 0, 6000), +(4179, 5130102, 4130017, 1, 1, 0, 6000), +(4180, 5130103, 4000033, 1, 1, 0, 600000), +(4181, 5130103, 2000002, 1, 1, 0, 20000), +(4182, 5130103, 2000004, 1, 1, 0, 20000), +(4183, 5130103, 2000003, 1, 1, 0, 20000), +(4184, 5130103, 4010000, 1, 1, 0, 9000), +(4185, 5130103, 4020004, 1, 1, 0, 9000), +(4186, 5130103, 4020007, 1, 1, 0, 9000), +(4187, 5130103, 1332031, 1, 1, 0, 500), +(4188, 5130103, 1382019, 1, 1, 0, 700), +(4189, 5130103, 1050046, 1, 1, 0, 700), +(4190, 5130103, 1002218, 1, 1, 0, 1500), +(4191, 5130103, 1002210, 1, 1, 0, 1500), +(4192, 5130103, 1051038, 1, 1, 0, 700), +(4193, 5130103, 1041079, 1, 1, 0, 800), +(4194, 5130103, 1061078, 1, 1, 0, 800), +(4195, 5130103, 1040098, 1, 1, 0, 800), +(4196, 5130103, 1060087, 1, 1, 0, 800), +(4197, 5130103, 1092009, 1, 1, 0, 700), +(4198, 5130103, 1082092, 1, 1, 0, 1000), +(4199, 5130103, 1052119, 1, 1, 0, 700), +(4200, 5130103, 2044801, 1, 1, 0, 300), +(4201, 5130103, 2040027, 1, 1, 0, 300), +(4202, 5130103, 2043212, 1, 1, 0, 300), +(4203, 5130103, 2044212, 1, 1, 0, 300), +(4204, 5130103, 4130007, 1, 1, 0, 6000), +(4205, 5130103, 4130011, 1, 1, 0, 6000), +(4206, 5130104, 4000051, 1, 1, 0, 600000), +(4207, 5130104, 4003004, 1, 1, 0, 200000), +(4208, 5130104, 2041019, 1, 1, 0, 300), +(4209, 5130104, 4000021, 1, 1, 0, 50000), +(4210, 5130104, 2000003, 1, 1, 0, 20000), +(4211, 5130104, 2000004, 1, 1, 0, 20000), +(4212, 5130104, 4020001, 1, 1, 0, 9000), +(4213, 5130104, 4010001, 1, 1, 0, 9000), +(4214, 5130104, 2070003, 1, 1, 0, 500), +(4215, 5130104, 2060000, 1, 1, 0, 30000), +(4216, 5130104, 2061000, 1, 1, 0, 30000), +(4217, 5130104, 4004003, 1, 1, 0, 10000), +(4218, 5130104, 1102000, 1, 1, 0, 1000), +(4219, 5130104, 1082064, 1, 1, 0, 1000), +(4220, 5130104, 1082075, 1, 1, 0, 1000), +(4221, 5130104, 1072119, 1, 1, 0, 800), +(4222, 5130104, 1072127, 1, 1, 0, 800), +(4223, 5130104, 1002213, 1, 1, 0, 1500), +(4224, 5130104, 1002215, 1, 1, 0, 1500), +(4225, 5130104, 1040097, 1, 1, 0, 800), +(4226, 5130104, 1060086, 1, 1, 0, 800), +(4227, 5130104, 1050052, 1, 1, 0, 700), +(4228, 5130104, 1332017, 1, 1, 0, 500), +(4229, 5130104, 1422009, 1, 1, 0, 700), +(4230, 5130104, 1462008, 1, 1, 0, 500), +(4231, 5130104, 1482007, 1, 1, 0, 500), +(4232, 5130104, 2040326, 1, 1, 0, 300), +(4233, 5130104, 2044110, 1, 1, 0, 300), +(4234, 5130104, 2044809, 1, 1, 0, 300), +(4235, 5130104, 4130002, 1, 1, 0, 6000), +(4236, 5130104, 4130015, 1, 1, 0, 6000), +(4237, 5130104, 4130017, 1, 1, 0, 6000), +(4238, 5130105, 4000055, 1, 1, 0, 600000), +(4239, 5130105, 4003004, 1, 1, 0, 200000), +(4240, 5130105, 4004004, 1, 1, 0, 10000), +(4241, 5130105, 4000021, 1, 1, 0, 50000), +(4242, 5130105, 2000003, 1, 1, 0, 20000), +(4243, 5130105, 2000004, 1, 1, 0, 20000), +(4244, 5130105, 4020004, 1, 1, 0, 9000), +(4245, 5130105, 4010005, 1, 1, 0, 9000), +(4246, 5130105, 4004002, 1, 1, 0, 10000), +(4247, 5130105, 2043701, 1, 1, 0, 300), +(4248, 5130105, 1041086, 1, 1, 0, 800), +(4249, 5130105, 1061085, 1, 1, 0, 800), +(4250, 5130105, 1041082, 1, 1, 0, 800), +(4251, 5130105, 1061081, 1, 1, 0, 800), +(4252, 5130105, 1002208, 1, 1, 0, 1500), +(4253, 5130105, 1002216, 1, 1, 0, 1500), +(4254, 5130105, 1032021, 1, 1, 0, 1000), +(4255, 5130105, 1382006, 1, 1, 0, 700), +(4256, 5130105, 1102015, 1, 1, 0, 1000), +(4257, 5130105, 1072151, 1, 1, 0, 800), +(4258, 5130105, 1072138, 1, 1, 0, 800), +(4259, 5130105, 1082059, 1, 1, 0, 1000), +(4260, 5130105, 1082090, 1, 1, 0, 1000), +(4261, 5130105, 1092010, 1, 1, 0, 700), +(4262, 5130105, 1040102, 1, 1, 0, 800), +(4263, 5130105, 1060090, 1, 1, 0, 800), +(4264, 5130105, 2040027, 1, 1, 0, 300), +(4265, 5130105, 2040317, 1, 1, 0, 300), +(4266, 5130105, 2044112, 1, 1, 0, 300), +(4267, 5130105, 4130007, 1, 1, 0, 6000), +(4268, 5130105, 4130017, 1, 1, 0, 6000), +(4269, 5130107, 4000069, 1, 1, 0, 600000), +(4270, 5130107, 2000003, 1, 1, 0, 20000), +(4271, 5130107, 2000004, 1, 1, 0, 20000), +(4272, 5130107, 2000002, 1, 1, 0, 20000), +(4273, 5130107, 4010000, 1, 1, 0, 9000), +(4274, 5130107, 4020006, 1, 1, 0, 9000), +(4275, 5130107, 4004000, 1, 1, 0, 10000), +(4276, 5130107, 1082062, 1, 1, 0, 1000), +(4277, 5130107, 1082071, 1, 1, 0, 1000), +(4278, 5130107, 1072109, 1, 1, 0, 800), +(4279, 5130107, 1072117, 1, 1, 0, 800), +(4280, 5130107, 1322016, 1, 1, 0, 700), +(4281, 5130107, 1312008, 1, 1, 0, 700), +(4282, 5130107, 1051039, 1, 1, 0, 700), +(4283, 5130107, 1040094, 1, 1, 0, 800), +(4284, 5130107, 1060083, 1, 1, 0, 800), +(4285, 5130107, 1032019, 1, 1, 0, 1000), +(4286, 5130107, 1002244, 1, 1, 0, 1500), +(4287, 5130107, 1102016, 1, 1, 0, 1000), +(4288, 5130107, 1040092, 1, 1, 0, 800), +(4289, 5130107, 1060081, 1, 1, 0, 800), +(4290, 5130107, 1002269, 1, 1, 0, 1500), +(4291, 5130107, 1002247, 1, 1, 0, 1500), +(4292, 5130107, 1040105, 1, 1, 0, 800), +(4293, 5130107, 1060093, 1, 1, 0, 800), +(4294, 5130107, 1482008, 1, 1, 0, 500), +(4295, 5130107, 2040026, 1, 1, 0, 300), +(4296, 5130107, 2040515, 1, 1, 0, 300), +(4297, 5130107, 4130001, 1, 1, 0, 6000), +(4298, 5130107, 4130006, 1, 1, 0, 6000), +(4299, 5130107, 4130011, 1, 1, 0, 6000), +(4300, 5130108, 4000069, 1, 1, 0, 600000), +(4301, 5130108, 4000082, 1, 1, 0, 40000), +(4302, 5130108, 2000003, 1, 1, 0, 20000), +(4303, 5130108, 2000004, 1, 1, 0, 20000), +(4304, 5130108, 2000002, 1, 1, 0, 20000), +(4305, 5130108, 4010001, 1, 1, 0, 9000), +(4306, 5130108, 4020004, 1, 1, 0, 9000), +(4307, 5130108, 4004002, 1, 1, 0, 10000), +(4308, 5130108, 2040402, 1, 1, 0, 300), +(4309, 5130108, 1002169, 1, 1, 0, 1500), +(4310, 5130108, 1002155, 1, 1, 0, 1500), +(4311, 5130108, 1041084, 1, 1, 0, 800), +(4312, 5130108, 1061083, 1, 1, 0, 800), +(4313, 5130108, 1332011, 1, 1, 0, 500), +(4314, 5130108, 1032018, 1, 1, 0, 1000), +(4315, 5130108, 1072130, 1, 1, 0, 800), +(4316, 5130108, 1072133, 1, 1, 0, 800), +(4317, 5130108, 1072141, 1, 1, 0, 800), +(4318, 5130108, 1051046, 1, 1, 0, 700), +(4319, 5130108, 1102017, 1, 1, 0, 1000), +(4320, 5130108, 1051043, 1, 1, 0, 700), +(4321, 5130108, 1092011, 1, 1, 0, 700), +(4322, 5130108, 1082094, 1, 1, 0, 1000), +(4323, 5130108, 1002084, 1, 1, 0, 1500), +(4324, 5130108, 1002243, 1, 1, 0, 1500), +(4325, 5130108, 1041100, 1, 1, 0, 800), +(4326, 5130108, 1061099, 1, 1, 0, 800), +(4327, 5130108, 2040029, 1, 1, 0, 300), +(4328, 5130108, 2040419, 1, 1, 0, 300), +(4329, 5130108, 4130002, 1, 1, 0, 6000), +(4330, 5130108, 4130014, 1, 1, 0, 6000), +(4331, 5130108, 4130015, 1, 1, 0, 6000), +(4332, 5140000, 4000052, 1, 1, 0, 600000), +(4333, 5140000, 4003005, 1, 1, 0, 200000), +(4334, 5140000, 4000021, 1, 1, 0, 50000), +(4335, 5140000, 2000003, 1, 1, 0, 20000), +(4336, 5140000, 2000004, 1, 1, 0, 20000), +(4337, 5140000, 2070004, 1, 1, 0, 500), +(4338, 5140000, 4020007, 1, 1, 0, 9000), +(4339, 5140000, 4020000, 1, 1, 0, 9000), +(4340, 5140000, 2060000, 1, 1, 0, 30000), +(4341, 5140000, 2040901, 1, 1, 0, 300), +(4342, 5140000, 4004001, 1, 1, 0, 10000), +(4343, 5140000, 4006001, 1, 1, 0, 10000), +(4344, 5140000, 2061000, 1, 1, 0, 30000), +(4345, 5140000, 1422008, 1, 1, 0, 700), +(4346, 5140000, 1472014, 1, 1, 0, 500), +(4347, 5140000, 1082072, 1, 1, 0, 1000), +(4348, 5140000, 1072114, 1, 1, 0, 800), +(4349, 5140000, 1072127, 1, 1, 0, 800), +(4350, 5140000, 1082066, 1, 1, 0, 1000), +(4351, 5140000, 1072134, 1, 1, 0, 800), +(4352, 5140000, 1050051, 1, 1, 0, 700), +(4353, 5140000, 1041077, 1, 1, 0, 800), +(4354, 5140000, 1061076, 1, 1, 0, 800), +(4355, 5140000, 1050053, 1, 1, 0, 700), +(4356, 5140000, 1032014, 1, 1, 0, 1000), +(4357, 5140000, 1412007, 1, 1, 0, 700), +(4358, 5140000, 1050059, 1, 1, 0, 700), +(4359, 5140000, 1002029, 1, 1, 0, 1500), +(4360, 5140000, 1072151, 1, 1, 0, 800), +(4361, 5140000, 1102021, 1, 1, 0, 1000), +(4362, 5140000, 1041097, 1, 1, 0, 800), +(4363, 5140000, 1061096, 1, 1, 0, 800), +(4364, 5140000, 1002634, 1, 1, 0, 1500), +(4365, 5140000, 2040024, 1, 1, 0, 300), +(4366, 5140000, 2044214, 1, 1, 0, 300), +(4367, 5140000, 4130001, 1, 1, 0, 6000), +(4368, 5140000, 4130003, 1, 1, 0, 6000), +(4369, 5140000, 4130013, 1, 1, 0, 6000), +(4370, 5150000, 4000177, 1, 1, 0, 600000), +(4371, 5150000, 2060000, 1, 1, 0, 30000), +(4372, 5150000, 2061000, 1, 1, 0, 30000), +(4373, 5150000, 1082066, 1, 1, 0, 1000), +(4374, 5150000, 1072146, 1, 1, 0, 800), +(4375, 5150000, 1082087, 1, 1, 0, 1000), +(4376, 5150000, 4010006, 1, 1, 0, 9000), +(4377, 5150000, 2000004, 1, 1, 0, 20000), +(4378, 5150000, 1041077, 1, 1, 0, 800), +(4379, 5150000, 1061076, 1, 1, 0, 800), +(4380, 5150000, 2000003, 1, 1, 0, 20000), +(4381, 5150000, 2000002, 1, 1, 0, 20000), +(4382, 5150000, 1051037, 1, 1, 0, 700), +(4383, 5150000, 1041094, 1, 1, 0, 800), +(4384, 5150000, 1061093, 1, 1, 0, 800), +(4385, 5150000, 1040092, 1, 1, 0, 800), +(4386, 5150000, 1060081, 1, 1, 0, 800), +(4387, 5150000, 2040804, 1, 1, 0, 300), +(4388, 5150000, 2040901, 1, 1, 0, 300), +(4389, 5150000, 1002029, 1, 1, 0, 1500), +(4390, 5150000, 1002248, 1, 1, 0, 1500), +(4391, 5150000, 1002269, 1, 1, 0, 1500), +(4392, 5150000, 1372014, 1, 1, 0, 700), +(4393, 5150000, 1072306, 1, 1, 0, 800), +(4394, 5150000, 2040824, 1, 1, 0, 300), +(4395, 5150000, 2040928, 1, 1, 0, 300), +(4396, 5150000, 4130005, 1, 1, 0, 6000), +(4397, 5150000, 4130007, 1, 1, 0, 6000), +(4398, 5150001, 4000206, 1, 1, 0, 600000), +(4399, 5150001, 2000003, 1, 1, 0, 20000), +(4400, 5150001, 2000004, 1, 1, 0, 20000), +(4401, 5150001, 4020004, 1, 1, 0, 9000), +(4402, 5150001, 4010005, 1, 1, 0, 9000), +(4403, 5150001, 1072122, 1, 1, 0, 800), +(4404, 5150001, 1072132, 1, 1, 0, 800), +(4405, 5150001, 1072140, 1, 1, 0, 800), +(4406, 5150001, 1072128, 1, 1, 0, 800), +(4407, 5150001, 2043801, 1, 1, 0, 300), +(4408, 5150001, 1040092, 1, 1, 0, 800), +(4409, 5150001, 1060081, 1, 1, 0, 800), +(4410, 5150001, 1040098, 1, 1, 0, 800), +(4411, 5150001, 1060087, 1, 1, 0, 800), +(4412, 5150001, 1050059, 1, 1, 0, 700), +(4413, 5150001, 1051045, 1, 1, 0, 700), +(4414, 5150001, 1002030, 1, 1, 0, 1500), +(4415, 5150001, 1002252, 1, 1, 0, 1500), +(4416, 5150001, 1002281, 1, 1, 0, 1500), +(4417, 5150001, 1002287, 1, 1, 0, 1500), +(4418, 5150001, 2044701, 1, 1, 0, 300), +(4419, 5150001, 2043701, 1, 1, 0, 300), +(4420, 5150001, 1072306, 1, 1, 0, 800), +(4421, 5150001, 2043210, 1, 1, 0, 300), +(4422, 5150001, 2044312, 1, 1, 0, 300), +(4423, 5150001, 4130003, 1, 1, 0, 6000), +(4424, 5150001, 4130010, 1, 1, 0, 6000), +(4425, 5200000, 4000083, 1, 1, 0, 600000), +(4426, 5200000, 4010000, 1, 1, 0, 9000), +(4427, 5200000, 4020006, 1, 1, 0, 9000), +(4428, 5200000, 4004003, 1, 1, 0, 10000), +(4429, 5200000, 2044102, 1, 1, 0, 300), +(4430, 5200000, 2000001, 1, 1, 0, 20000), +(4431, 5200000, 2000003, 1, 1, 0, 20000), +(4432, 5200000, 1002129, 1, 1, 0, 1500), +(4433, 5200000, 1322002, 1, 1, 0, 700), +(4434, 5200000, 1322004, 1, 1, 0, 700), +(4435, 5200000, 1040016, 1, 1, 0, 800), +(4436, 5200000, 1060011, 1, 1, 0, 800), +(4437, 5200000, 1041048, 1, 1, 0, 800), +(4438, 5200000, 1061044, 1, 1, 0, 800), +(4439, 5200000, 2070000, 1, 1, 0, 500), +(4440, 5200000, 2060001, 1, 1, 0, 30000), +(4441, 5200000, 2061001, 1, 1, 0, 30000), +(4442, 5200000, 1482002, 1, 1, 0, 500), +(4443, 5200000, 2044212, 1, 1, 0, 300), +(4444, 5200001, 4000084, 1, 1, 0, 600000), +(4445, 5200001, 4020002, 1, 1, 0, 9000), +(4446, 5200001, 4010002, 1, 1, 0, 9000), +(4447, 5200001, 4004001, 1, 1, 0, 10000), +(4448, 5200001, 4006000, 1, 1, 0, 10000), +(4449, 5200001, 2041016, 1, 1, 0, 300), +(4450, 5200001, 2000001, 1, 1, 0, 20000), +(4451, 5200001, 2000003, 1, 1, 0, 20000), +(4452, 5200001, 1002142, 1, 1, 0, 1500), +(4453, 5200001, 1040024, 1, 1, 0, 800), +(4454, 5200001, 1062006, 1, 1, 0, 800), +(4455, 5200001, 1322009, 1, 1, 0, 700), +(4456, 5200001, 1061043, 1, 1, 0, 800), +(4457, 5200001, 1041047, 1, 1, 0, 800), +(4458, 5200001, 1442003, 1, 1, 0, 700), +(4459, 5200001, 1050026, 1, 1, 0, 700), +(4460, 5200001, 2060001, 1, 1, 0, 30000), +(4461, 5200001, 2061001, 1, 1, 0, 30000), +(4462, 5200001, 2049000, 1, 1, 0, 150), +(4463, 5200002, 4000085, 1, 1, 0, 600000), +(4464, 5200002, 4020000, 1, 1, 0, 9000), +(4465, 5200002, 4010005, 1, 1, 0, 9000), +(4466, 5200002, 4004001, 1, 1, 0, 10000), +(4467, 5200002, 4006000, 1, 1, 0, 10000), +(4468, 5200002, 2040805, 1, 1, 0, 300), +(4469, 5200002, 2000001, 1, 1, 0, 20000), +(4470, 5200002, 2000003, 1, 1, 0, 20000), +(4471, 5200002, 1082052, 1, 1, 0, 1000), +(4472, 5200002, 1041059, 1, 1, 0, 800), +(4473, 5200002, 1061055, 1, 1, 0, 800), +(4474, 5200002, 1041054, 1, 1, 0, 800), +(4475, 5200002, 1061050, 1, 1, 0, 800), +(4476, 5200002, 1032009, 1, 1, 0, 1000), +(4477, 5200002, 1041064, 1, 1, 0, 800), +(4478, 5200002, 1072089, 1, 1, 0, 800), +(4479, 5200002, 1452006, 1, 1, 0, 500), +(4480, 5200002, 1050000, 1, 1, 0, 700), +(4481, 5200002, 2060001, 1, 1, 0, 30000), +(4482, 5200002, 2061001, 1, 1, 0, 30000), +(4483, 5200002, 2040926, 1, 1, 0, 300), +(4484, 5220000, 4000043, 1, 1, 0, 600000), +(4485, 5220000, 4000043, 1, 1, 0, 600000), +(4486, 5220000, 4000043, 1, 1, 0, 600000), +(4487, 5220000, 4000044, 1, 1, 0, 600000), +(4488, 5220000, 4000044, 1, 1, 0, 600000), +(4489, 5220000, 4000044, 1, 1, 0, 600000), +(4490, 5220000, 4010003, 1, 1, 0, 90000), +(4491, 5220000, 4020005, 1, 1, 0, 90000), +(4492, 5220000, 2000002, 1, 1, 0, 200000), +(4493, 5220000, 2000003, 1, 1, 0, 200000), +(4494, 5220000, 2001001, 1, 1, 0, 200000), +(4495, 5220000, 2002000, 1, 1, 0, 200000), +(4496, 5220000, 2041022, 1, 1, 0, 3000), +(4497, 5220000, 2044601, 1, 1, 0, 3000), +(4498, 5220000, 2041013, 1, 1, 0, 3000), +(4499, 5220000, 2044701, 1, 1, 0, 3000), +(4500, 5220000, 2048001, 1, 1, 0, 3000), +(4501, 5220000, 2040707, 1, 1, 0, 3000), +(4502, 5220000, 2040004, 1, 1, 0, 3000), +(4503, 5220000, 2040513, 1, 1, 0, 3000), +(4504, 5220000, 2040704, 1, 1, 0, 3000), +(4505, 5220000, 2040804, 1, 1, 0, 3000), +(4506, 5220000, 2040702, 1, 1, 0, 3000), +(4507, 5220000, 2040802, 1, 1, 0, 3000), +(4508, 5220000, 2040902, 1, 1, 0, 3000), +(4509, 5220000, 2041002, 1, 1, 0, 3000), +(4510, 5220000, 2043002, 1, 1, 0, 3000), +(4511, 5220000, 2060000, 1, 1, 0, 300000), +(4512, 5220000, 2061000, 1, 1, 0, 300000), +(4513, 5220000, 1002029, 1, 1, 0, 15000), +(4514, 5220000, 1002246, 1, 1, 0, 15000), +(4515, 5220000, 1002270, 1, 1, 0, 15000), +(4516, 5220000, 1002249, 1, 1, 0, 15000), +(4517, 5220000, 1040093, 1, 1, 0, 8000), +(4518, 5220000, 1041092, 1, 1, 0, 8000), +(4519, 5220000, 1050056, 1, 1, 0, 7000), +(4520, 5220000, 1051047, 1, 1, 0, 7000), +(4521, 5220000, 1050060, 1, 1, 0, 7000), +(4522, 5220000, 1051041, 1, 1, 0, 7000), +(4523, 5220000, 1040100, 1, 1, 0, 8000), +(4524, 5220000, 1041095, 1, 1, 0, 8000), +(4525, 5220000, 1082061, 1, 1, 0, 10000), +(4526, 5220000, 1082088, 1, 1, 0, 10000), +(4527, 5220000, 1082091, 1, 1, 0, 10000), +(4528, 5220000, 1082094, 1, 1, 0, 10000), +(4529, 5220000, 1072149, 1, 1, 0, 8000), +(4530, 5220000, 1072136, 1, 1, 0, 8000), +(4531, 5220000, 1072144, 1, 1, 0, 8000), +(4532, 5220000, 1072152, 1, 1, 0, 8000), +(4533, 5220000, 1002634, 1, 1, 0, 15000), +(4534, 5220000, 1052119, 1, 1, 0, 7000), +(4535, 5220000, 1082201, 1, 1, 0, 10000), +(4536, 5220000, 1072306, 1, 1, 0, 8000), +(4537, 5220000, 3010008, 1, 1, 0, 5000), +(4538, 5220002, 4000029, 1, 1, 0, 600000), +(4539, 5220002, 4000029, 1, 1, 0, 600000), +(4540, 5220002, 4000029, 1, 1, 0, 600000), +(4541, 5220002, 4000031, 1, 1, 0, 600000), +(4542, 5220002, 4000031, 1, 1, 0, 600000), +(4543, 5220002, 4000031, 1, 1, 0, 600000), +(4544, 5220002, 4000021, 1, 1, 0, 500000), +(4545, 5220002, 4000021, 1, 1, 0, 500000), +(4546, 5220002, 4000021, 1, 1, 0, 500000), +(4547, 5220002, 4000026, 1, 1, 0, 600000), +(4548, 5220002, 4000026, 1, 1, 0, 600000), +(4549, 5220002, 4000026, 1, 1, 0, 600000), +(4550, 5220002, 4010005, 1, 1, 0, 90000), +(4551, 5220002, 4020005, 1, 1, 0, 90000), +(4552, 5220002, 2000002, 1, 1, 0, 200000), +(4553, 5220002, 2000003, 1, 1, 0, 200000), +(4554, 5220002, 2002002, 1, 1, 0, 200000), +(4555, 5220002, 2002003, 1, 1, 0, 200000), +(4556, 5220002, 2040301, 1, 1, 0, 3000), +(4557, 5220002, 2040504, 1, 1, 0, 3000), +(4558, 5220002, 2040707, 1, 1, 0, 3000), +(4559, 5220002, 2040801, 1, 1, 0, 3000), +(4560, 5220002, 2040901, 1, 1, 0, 3000), +(4561, 5220002, 2041016, 1, 1, 0, 3000), +(4562, 5220002, 2043801, 1, 1, 0, 3000), +(4563, 5220002, 2044101, 1, 1, 0, 3000), +(4564, 5220002, 2044601, 1, 1, 0, 3000), +(4565, 5220002, 2044701, 1, 1, 0, 3000), +(4566, 5220002, 2040514, 1, 1, 0, 3000), +(4567, 5220002, 2041002, 1, 1, 0, 3000), +(4568, 5220002, 2041017, 1, 1, 0, 3000), +(4569, 5220002, 2043702, 1, 1, 0, 3000), +(4570, 5220002, 2044302, 1, 1, 0, 3000), +(4571, 5220002, 2060000, 1, 1, 0, 300000), +(4572, 5220002, 2061000, 1, 1, 0, 300000), +(4573, 5220002, 1302010, 1, 1, 0, 7000), +(4574, 5220002, 1312008, 1, 1, 0, 7000), +(4575, 5220002, 1322017, 1, 1, 0, 7000), +(4576, 5220002, 1332003, 1, 1, 0, 5000), +(4577, 5220002, 1372007, 1, 1, 0, 7000), +(4578, 5220002, 1382006, 1, 1, 0, 7000), +(4579, 5220002, 1402003, 1, 1, 0, 7000), +(4580, 5220002, 1412003, 1, 1, 0, 7000), +(4581, 5220002, 1422005, 1, 1, 0, 7000), +(4582, 5220002, 1432004, 1, 1, 0, 5000), +(4583, 5220002, 1442005, 1, 1, 0, 7000), +(4584, 5220002, 1452008, 1, 1, 0, 5000), +(4585, 5220002, 1462007, 1, 1, 0, 5000), +(4586, 5220002, 1472021, 1, 1, 0, 5000), +(4587, 5220002, 1482007, 1, 1, 0, 5000), +(4588, 5220002, 1492007, 1, 1, 0, 5000), +(4589, 5220002, 2044802, 1, 1, 0, 3000), +(4590, 5220002, 2044901, 1, 1, 0, 3000), +(4591, 5220002, 1432039, 1, 1, 0, 5000), +(4592, 5220002, 2040931, 1, 1, 0, 3000), +(4593, 5220002, 2040928, 1, 1, 0, 3000), +(4594, 5220003, 4000113, 1, 1, 0, 600000), +(4595, 5220003, 4000113, 1, 1, 0, 600000), +(4596, 5220003, 4000113, 1, 1, 0, 600000), +(4597, 5220003, 4000114, 1, 1, 0, 600000), +(4598, 5220003, 4000114, 1, 1, 0, 600000), +(4599, 5220003, 4000114, 1, 1, 0, 600000), +(4600, 5220003, 4000115, 1, 1, 0, 600000), +(4601, 5220003, 4000115, 1, 1, 0, 600000), +(4602, 5220003, 4000115, 1, 1, 0, 600000), +(4603, 5220003, 4004001, 1, 1, 0, 100000), +(4604, 5220003, 4010003, 1, 1, 0, 90000), +(4605, 5220003, 4020006, 1, 1, 0, 90000), +(4606, 5220003, 2000002, 1, 1, 0, 200000), +(4607, 5220003, 2000003, 1, 1, 0, 200000), +(4608, 5220003, 2002002, 1, 1, 0, 200000), +(4609, 5220003, 2002003, 1, 1, 0, 200000), +(4610, 5220003, 2040401, 1, 1, 0, 3000), +(4611, 5220003, 2040516, 1, 1, 0, 3000), +(4612, 5220003, 2040704, 1, 1, 0, 3000), +(4613, 5220003, 2040804, 1, 1, 0, 3000), +(4614, 5220003, 2041013, 1, 1, 0, 3000), +(4615, 5220003, 2041016, 1, 1, 0, 3000), +(4616, 5220003, 2043201, 1, 1, 0, 3000), +(4617, 5220003, 2043701, 1, 1, 0, 3000), +(4618, 5220003, 2044201, 1, 1, 0, 3000), +(4619, 5220003, 2044301, 1, 1, 0, 3000), +(4620, 5220003, 2040302, 1, 1, 0, 3000), +(4621, 5220003, 2040502, 1, 1, 0, 3000), +(4622, 5220003, 2041002, 1, 1, 0, 3000), +(4623, 5220003, 2043802, 1, 1, 0, 3000), +(4624, 5220003, 2044502, 1, 1, 0, 3000), +(4625, 5220003, 2060000, 1, 1, 0, 300000), +(4626, 5220003, 2061000, 1, 1, 0, 300000), +(4627, 5220003, 1302011, 1, 1, 0, 7000), +(4628, 5220003, 1312009, 1, 1, 0, 7000), +(4629, 5220003, 1322018, 1, 1, 0, 7000), +(4630, 5220003, 1332015, 1, 1, 0, 5000), +(4631, 5220003, 1332017, 1, 1, 0, 5000), +(4632, 5220003, 1372014, 1, 1, 0, 7000), +(4633, 5220003, 1382007, 1, 1, 0, 7000), +(4634, 5220003, 1402011, 1, 1, 0, 7000), +(4635, 5220003, 1412007, 1, 1, 0, 7000), +(4636, 5220003, 1422009, 1, 1, 0, 7000), +(4637, 5220003, 1432006, 1, 1, 0, 5000), +(4638, 5220003, 1442010, 1, 1, 0, 7000), +(4639, 5220003, 1452004, 1, 1, 0, 5000), +(4640, 5220003, 1462008, 1, 1, 0, 5000), +(4641, 5220003, 1472025, 1, 1, 0, 5000), +(4642, 5220003, 1482008, 1, 1, 0, 5000), +(4643, 5220003, 1492008, 1, 1, 0, 5000), +(4644, 5220003, 2044801, 1, 1, 0, 3000), +(4645, 5220003, 2044902, 1, 1, 0, 3000), +(4646, 5220003, 1372033, 1, 1, 0, 7000), +(4647, 5220003, 2040627, 1, 1, 0, 3000), +(4648, 5220003, 2040825, 1, 1, 0, 3000), +(4649, 5220003, 2040933, 1, 1, 0, 3000), +(4650, 5220003, 2044114, 1, 1, 0, 3000), +(4651, 5220003, 2044807, 1, 1, 0, 3000), +(4652, 5220004, 2040001, 1, 1, 0, 3000), +(4653, 5220004, 2040004, 1, 1, 0, 3000), +(4654, 5220004, 2040301, 1, 1, 0, 3000), +(4655, 5220004, 2040401, 1, 1, 0, 3000), +(4656, 5220004, 2040501, 1, 1, 0, 3000), +(4657, 5220004, 2040504, 1, 1, 0, 3000), +(4658, 5220004, 2040601, 1, 1, 0, 3000), +(4659, 5220004, 2040701, 1, 1, 0, 3000), +(4660, 5220004, 2040704, 1, 1, 0, 3000), +(4661, 5220004, 2040707, 1, 1, 0, 3000), +(4662, 5220004, 2040801, 1, 1, 0, 3000), +(4663, 5220004, 2041001, 1, 1, 0, 3000), +(4664, 5220004, 2041004, 1, 1, 0, 3000), +(4665, 5220004, 2040804, 1, 1, 0, 3000), +(4666, 5220004, 2040901, 1, 1, 0, 3000), +(4667, 5220004, 2070005, 1, 1, 0, 4000), +(4668, 5220004, 1102002, 1, 1, 0, 10000), +(4669, 5220004, 1032013, 1, 1, 0, 10000), +(4670, 5220004, 2000005, 1, 1, 0, 999999), +(4671, 5220004, 1452009, 1, 1, 0, 5000), +(4672, 5220004, 1382007, 1, 1, 0, 7000), +(4673, 5220004, 1462009, 1, 1, 0, 5000), +(4674, 5220004, 1322019, 1, 1, 0, 7000), +(4675, 5220004, 1312010, 1, 1, 0, 7000), +(4676, 5220004, 1412008, 1, 1, 0, 7000), +(4677, 5220004, 1422010, 1, 1, 0, 7000), +(4678, 5220004, 1472026, 1, 1, 0, 5000), +(4679, 5220004, 1432007, 1, 1, 0, 5000), +(4680, 5220004, 1442008, 1, 1, 0, 7000), +(4681, 5220004, 1302012, 1, 1, 0, 7000), +(4682, 5220004, 1402012, 1, 1, 0, 7000), +(4683, 5220004, 1332018, 1, 1, 0, 5000), +(4684, 5220004, 1332019, 1, 1, 0, 5000), +(4685, 5220004, 2043001, 1, 1, 0, 3000), +(4686, 5220004, 2043101, 1, 1, 0, 3000), +(4687, 5220004, 2043201, 1, 1, 0, 3000), +(4688, 5220004, 2043301, 1, 1, 0, 3000), +(4689, 5220004, 2043701, 1, 1, 0, 3000), +(4690, 5220004, 2043801, 1, 1, 0, 3000), +(4691, 5220004, 2044001, 1, 1, 0, 3000), +(4692, 5220004, 2044101, 1, 1, 0, 3000), +(4693, 5220004, 2044201, 1, 1, 0, 3000), +(4694, 5220004, 2044301, 1, 1, 0, 3000), +(4695, 5220004, 2044401, 1, 1, 0, 3000), +(4696, 5220004, 2044501, 1, 1, 0, 3000), +(4697, 5220004, 2044601, 1, 1, 0, 3000), +(4698, 5220004, 2044701, 1, 1, 0, 3000), +(4699, 5220004, 2000004, 1, 1, 0, 999999), +(4700, 5220004, 1092017, 1, 1, 0, 7000), +(4701, 5250000, 2000002, 1, 1, 0, 20000), +(4702, 5250000, 2000003, 1, 1, 0, 20000), +(4703, 5250000, 4010002, 1, 1, 0, 9000), +(4704, 5250000, 4020002, 1, 1, 0, 9000), +(4705, 5250000, 2044312, 1, 1, 0, 300), +(4706, 5250000, 1002208, 1, 1, 0, 1500), +(4707, 5250000, 1052116, 1, 1, 0, 700), +(4708, 5250000, 1082010, 1, 1, 0, 1000), +(4709, 5250000, 1072143, 1, 1, 0, 800), +(4710, 5250000, 1452004, 1, 1, 0, 500), +(4711, 5250000, 4000437, 1, 1, 0, 600000), +(4712, 5250000, 4130003, 1, 1, 0, 6000), +(4713, 5250000, 4130014, 1, 1, 0, 6000), +(4714, 5250000, 4130017, 1, 1, 0, 6000), +(4715, 5250001, 2000002, 1, 1, 0, 20000), +(4716, 5250001, 2000003, 1, 1, 0, 20000), +(4717, 5250001, 4010000, 1, 1, 0, 9000), +(4718, 5250001, 4020000, 1, 1, 0, 9000), +(4719, 5250001, 2041014, 1, 1, 0, 300), +(4720, 5250001, 1002214, 1, 1, 0, 1500), +(4721, 5250001, 1040096, 1, 1, 0, 800), +(4722, 5250001, 1041079, 1, 1, 0, 800), +(4723, 5250001, 1082198, 1, 1, 0, 1000), +(4724, 5250001, 1072133, 1, 1, 0, 800), +(4725, 5250001, 1372007, 1, 1, 0, 700), +(4726, 5250001, 4000439, 1, 1, 0, 600000), +(4727, 5250001, 4130015, 1, 1, 0, 6000), +(4728, 5250001, 4130016, 1, 1, 0, 6000), +(4729, 5250002, 4000440, 1, 1, 0, 600000), +(4730, 5250002, 2000002, 1, 1, 0, 20000), +(4731, 5250002, 2000003, 1, 1, 0, 20000), +(4732, 5250002, 4010001, 1, 1, 0, 9000), +(4733, 5250002, 4020003, 1, 1, 0, 9000), +(4734, 5250002, 2044802, 1, 1, 0, 300), +(4735, 5250002, 1002634, 1, 1, 0, 1500), +(4736, 5250002, 1040092, 1, 1, 0, 800), +(4737, 5250002, 1041093, 1, 1, 0, 800), +(4738, 5250002, 1082087, 1, 1, 0, 1000), +(4739, 5250002, 1072145, 1, 1, 0, 800), +(4740, 5250002, 1332015, 1, 1, 0, 500), +(4741, 5250002, 4130001, 1, 1, 0, 6000), +(4742, 5250002, 4130014, 1, 1, 0, 6000), +(4743, 5300000, 4000086, 1, 1, 0, 600000), +(4744, 5300000, 4010001, 1, 1, 0, 9000), +(4745, 5300000, 4020003, 1, 1, 0, 9000), +(4746, 5300000, 4004000, 1, 1, 0, 10000), +(4747, 5300000, 4006001, 1, 1, 0, 10000), +(4748, 5300000, 2000002, 1, 1, 0, 20000), +(4749, 5300000, 2000003, 1, 1, 0, 20000), +(4750, 5300000, 2050001, 1, 1, 0, 50000), +(4751, 5300000, 2070001, 1, 1, 0, 500), +(4752, 5300000, 4020007, 1, 1, 0, 9000), +(4753, 5300000, 1082016, 1, 1, 0, 1000), +(4754, 5300000, 1002035, 1, 1, 0, 1500), +(4755, 5300000, 1002165, 1, 1, 0, 1500), +(4756, 5300000, 1041048, 1, 1, 0, 800), +(4757, 5300000, 1061044, 1, 1, 0, 800), +(4758, 5300000, 1072081, 1, 1, 0, 800), +(4759, 5300000, 1072075, 1, 1, 0, 800), +(4760, 5300000, 1382017, 1, 1, 0, 700), +(4761, 5300000, 1032002, 1, 1, 0, 1000), +(4762, 5300000, 1040030, 1, 1, 0, 800), +(4763, 5300000, 1060020, 1, 1, 0, 800), +(4764, 5300000, 1082054, 1, 1, 0, 1000), +(4765, 5300000, 2040705, 1, 1, 0, 300), +(4766, 5300000, 1482004, 1, 1, 0, 500), +(4767, 5300000, 4130000, 1, 1, 0, 6000), +(4768, 5300000, 4130005, 1, 1, 0, 6000), +(4769, 5300000, 4130011, 1, 1, 0, 6000), +(4770, 5300001, 4000087, 1, 1, 0, 600000), +(4771, 5300001, 4010000, 1, 1, 0, 9000), +(4772, 5300001, 4020004, 1, 1, 0, 9000), +(4773, 5300001, 4004001, 1, 1, 0, 10000), +(4774, 5300001, 4006001, 1, 1, 0, 10000), +(4775, 5300001, 2040402, 1, 1, 0, 300), +(4776, 5300001, 2000002, 1, 1, 0, 20000), +(4777, 5300001, 2000003, 1, 1, 0, 20000), +(4778, 5300001, 2050000, 1, 1, 0, 50000), +(4779, 5300001, 1002175, 1, 1, 0, 1500), +(4780, 5300001, 1402002, 1, 1, 0, 700), +(4781, 5300001, 1050029, 1, 1, 0, 700), +(4782, 5300001, 1002138, 1, 1, 0, 1500), +(4783, 5300001, 1041068, 1, 1, 0, 800), +(4784, 5300001, 1061063, 1, 1, 0, 800), +(4785, 5300001, 1082036, 1, 1, 0, 1000), +(4786, 5300001, 1072105, 1, 1, 0, 800), +(4787, 5300001, 1332014, 1, 1, 0, 500), +(4788, 5300001, 1051023, 1, 1, 0, 700), +(4789, 5300001, 1002625, 1, 1, 0, 1500), +(4790, 5300001, 2040623, 1, 1, 0, 300), +(4791, 5300001, 4130013, 1, 1, 0, 6000), +(4792, 5300001, 4130016, 1, 1, 0, 6000), +(4793, 5300100, 4000041, 1, 1, 0, 600000), +(4794, 5300100, 4004004, 1, 1, 0, 10000), +(4795, 5300100, 2000002, 1, 1, 0, 20000), +(4796, 5300100, 2000003, 1, 1, 0, 20000), +(4797, 5300100, 4020008, 1, 1, 0, 9000), +(4798, 5300100, 4010006, 1, 1, 0, 9000), +(4799, 5300100, 2000004, 1, 1, 0, 20000), +(4800, 5300100, 4006000, 1, 1, 0, 10000), +(4801, 5300100, 1002168, 1, 1, 0, 1500), +(4802, 5300100, 1002092, 1, 1, 0, 1500), +(4803, 5300100, 1040086, 1, 1, 0, 800), +(4804, 5300100, 1060000, 1, 1, 0, 800), +(4805, 5300100, 1051031, 1, 1, 0, 700), +(4806, 5300100, 1051039, 1, 1, 0, 700), +(4807, 5300100, 1082011, 1, 1, 0, 1000), +(4808, 5300100, 1452008, 1, 1, 0, 500), +(4809, 5300100, 1072143, 1, 1, 0, 800), +(4810, 5300100, 1472020, 1, 1, 0, 500), +(4811, 5300100, 1032019, 1, 1, 0, 1000), +(4812, 5300100, 1040090, 1, 1, 0, 800), +(4813, 5300100, 1060079, 1, 1, 0, 800), +(4814, 5300100, 1452004, 1, 1, 0, 500), +(4815, 5300100, 1072137, 1, 1, 0, 800), +(4816, 5300100, 1082093, 1, 1, 0, 1000), +(4817, 5300100, 1082198, 1, 1, 0, 1000), +(4818, 5300100, 4130006, 1, 1, 0, 6000), +(4819, 5300100, 4130010, 1, 1, 0, 6000), +(4820, 5300100, 4130016, 1, 1, 0, 6000), +(4821, 5400000, 4000088, 1, 1, 0, 600000), +(4822, 5400000, 4020005, 1, 1, 0, 9000), +(4823, 5400000, 4010003, 1, 1, 0, 9000), +(4824, 5400000, 4004003, 1, 1, 0, 10000), +(4825, 5400000, 4006000, 1, 1, 0, 10000), +(4826, 5400000, 2043801, 1, 1, 0, 300), +(4827, 5400000, 2000002, 1, 1, 0, 20000), +(4828, 5400000, 2000003, 1, 1, 0, 20000), +(4829, 5400000, 2050002, 1, 1, 0, 50000), +(4830, 5400000, 1432008, 1, 1, 0, 500), +(4831, 5400000, 2070002, 1, 1, 0, 500), +(4832, 5400000, 2060001, 1, 1, 0, 30000), +(4833, 5400000, 2061001, 1, 1, 0, 30000), +(4834, 5400000, 1060045, 1, 1, 0, 800), +(4835, 5400000, 1040059, 1, 1, 0, 800), +(4836, 5400000, 1002177, 1, 1, 0, 1500), +(4837, 5400000, 1041067, 1, 1, 0, 800), +(4838, 5400000, 1061062, 1, 1, 0, 800), +(4839, 5400000, 1051001, 1, 1, 0, 700), +(4840, 5400000, 1422008, 1, 1, 0, 700), +(4841, 5400000, 1002021, 1, 1, 0, 1500), +(4842, 5400000, 1082062, 1, 1, 0, 1000), +(4843, 5400000, 1072108, 1, 1, 0, 800), +(4844, 5400000, 1422007, 1, 1, 0, 700), +(4845, 5400000, 1082192, 1, 1, 0, 1000), +(4846, 5400000, 2044801, 1, 1, 0, 300), +(4847, 5400000, 2044809, 1, 1, 0, 300), +(4848, 5400000, 4130002, 1, 1, 0, 6000), +(4849, 5400000, 4130011, 1, 1, 0, 6000), +(4850, 5400000, 4130014, 1, 1, 0, 6000), +(4851, 6090000, 4000336, 1, 1, 0, 600000), +(4852, 6090001, 4000415, 1, 1, 0, 600000), +(4853, 6090003, 4000416, 1, 1, 0, 600000), +(4854, 6090004, 4000419, 1, 1, 0, 600000), +(4855, 6110300, 2000006, 1, 1, 0, 20000), +(4856, 6110300, 4020007, 1, 1, 0, 9000), +(4857, 6110300, 4010000, 1, 1, 0, 9000), +(4858, 6110300, 4004000, 1, 1, 0, 10000), +(4859, 6110300, 1041078, 1, 1, 0, 800), +(4860, 6110300, 1041089, 1, 1, 0, 800), +(4861, 6110300, 1002022, 1, 1, 0, 1500), +(4862, 6110300, 1032019, 1, 1, 0, 1000), +(4863, 6110300, 1051047, 1, 1, 0, 700), +(4864, 6110300, 1040099, 1, 1, 0, 800), +(4865, 6110300, 1060088, 1, 1, 0, 800), +(4866, 6110300, 1432006, 1, 1, 0, 500), +(4867, 6110300, 1462008, 1, 1, 0, 500), +(4868, 6110300, 1472024, 1, 1, 0, 500), +(4869, 6110300, 1102022, 1, 1, 0, 1000), +(4870, 6110300, 1382007, 1, 1, 0, 700), +(4871, 6110300, 1472026, 1, 1, 0, 500), +(4872, 6110300, 1082107, 1, 1, 0, 1000), +(4873, 6110300, 1040104, 1, 1, 0, 800), +(4874, 6110300, 1060092, 1, 1, 0, 800), +(4875, 6110300, 1072157, 1, 1, 0, 800), +(4876, 6110300, 1032020, 1, 1, 0, 1000), +(4877, 6110300, 1051062, 1, 1, 0, 700), +(4878, 6110300, 4000354, 1, 1, 0, 600000), +(4879, 6110300, 1072306, 1, 1, 0, 800), +(4880, 6110300, 2040933, 1, 1, 0, 300), +(4881, 6110300, 2049100, 1, 1, 0, 150), +(4882, 6110300, 4130004, 1, 1, 0, 6000), +(4883, 6110300, 4130009, 1, 1, 0, 6000), +(4884, 6110300, 4130011, 1, 1, 0, 6000), +(4885, 6110301, 2000002, 1, 1, 0, 20000), +(4886, 6110301, 2000006, 1, 1, 0, 20000), +(4887, 6110301, 2000004, 1, 1, 0, 20000), +(4888, 6110301, 4020005, 1, 1, 0, 9000), +(4889, 6110301, 4010002, 1, 1, 0, 9000), +(4890, 6110301, 4004001, 1, 1, 0, 10000), +(4891, 6110301, 1092015, 1, 1, 0, 700), +(4892, 6110301, 1472027, 1, 1, 0, 500), +(4893, 6110301, 1050088, 1, 1, 0, 700), +(4894, 6110301, 1072080, 1, 1, 0, 800), +(4895, 6110301, 1072085, 1, 1, 0, 800), +(4896, 6110301, 1032015, 1, 1, 0, 1000), +(4897, 6110301, 1050081, 1, 1, 0, 700), +(4898, 6110301, 1051078, 1, 1, 0, 700), +(4899, 6110301, 1002289, 1, 1, 0, 1500), +(4900, 6110301, 1462008, 1, 1, 0, 500), +(4901, 6110301, 1322018, 1, 1, 0, 700), +(4902, 6110301, 2043302, 1, 1, 0, 300), +(4903, 6110301, 4000363, 1, 1, 0, 600000), +(4904, 6110301, 1072309, 1, 1, 0, 800), +(4905, 6110301, 2330003, 1, 1, 0, 500), +(4906, 6110301, 2040621, 1, 1, 0, 300), +(4907, 6110301, 2049000, 1, 1, 0, 150), +(4908, 6110301, 4130001, 1, 1, 0, 6000), +(4909, 6110301, 4130007, 1, 1, 0, 6000), +(4910, 6130100, 4000014, 1, 1, 0, 600000), +(4911, 6130100, 2000006, 1, 1, 0, 20000), +(4912, 6130100, 2000004, 1, 1, 0, 20000), +(4913, 6130100, 4020007, 1, 1, 0, 9000), +(4914, 6130100, 4010005, 1, 1, 0, 9000), +(4915, 6130100, 2070005, 1, 1, 0, 400), +(4916, 6130100, 4000030, 1, 1, 0, 60000), +(4917, 6130100, 1060068, 1, 1, 0, 800), +(4918, 6130100, 1040080, 1, 1, 0, 800), +(4919, 6130100, 1040083, 1, 1, 0, 800), +(4920, 6130100, 1060072, 1, 1, 0, 800), +(4921, 6130100, 1041080, 1, 1, 0, 800), +(4922, 6130100, 1061079, 1, 1, 0, 800), +(4923, 6130100, 1082067, 1, 1, 0, 1000), +(4924, 6130100, 1092004, 1, 1, 0, 700), +(4925, 6130100, 1050056, 1, 1, 0, 700), +(4926, 6130100, 1372014, 1, 1, 0, 700), +(4927, 6130100, 1002246, 1, 1, 0, 1500), +(4928, 6130100, 1002248, 1, 1, 0, 1500), +(4929, 6130100, 1072136, 1, 1, 0, 800), +(4930, 6130100, 1072146, 1, 1, 0, 800), +(4931, 6130100, 1072148, 1, 1, 0, 800), +(4932, 6130100, 1040100, 1, 1, 0, 800), +(4933, 6130100, 1060089, 1, 1, 0, 800), +(4934, 6130100, 1102022, 1, 1, 0, 1000), +(4935, 6130100, 1060091, 1, 1, 0, 800), +(4936, 6130100, 1040103, 1, 1, 0, 800), +(4937, 6130100, 1072160, 1, 1, 0, 800), +(4938, 6130100, 1072162, 1, 1, 0, 800), +(4939, 6130100, 1082106, 1, 1, 0, 1000), +(4940, 6130100, 1482008, 1, 1, 0, 500), +(4941, 6130100, 2331000, 1, 1, 0, 500), +(4942, 6130100, 2040319, 1, 1, 0, 300), +(4943, 6130100, 4130004, 1, 1, 0, 6000), +(4944, 6130100, 4130014, 1, 1, 0, 6000), +(4945, 6130101, 4000040, 1, 1, 0, 600000), +(4946, 6130101, 1092012, 1, 1, 0, 7000), +(4947, 6130101, 2070006, 1, 1, 0, 2000), +(4948, 6130101, 2040001, 1, 1, 0, 3000), +(4949, 6130101, 2040004, 1, 1, 0, 3000), +(4950, 6130101, 2040301, 1, 1, 0, 3000), +(4951, 6130101, 2040401, 1, 1, 0, 3000), +(4952, 6130101, 2040501, 1, 1, 0, 3000), +(4953, 6130101, 2040504, 1, 1, 0, 3000), +(4954, 6130101, 2040601, 1, 1, 0, 3000), +(4955, 6130101, 2040701, 1, 1, 0, 3000), +(4956, 6130101, 2040704, 1, 1, 0, 3000), +(4957, 6130101, 2040707, 1, 1, 0, 3000), +(4958, 6130101, 2040801, 1, 1, 0, 3000), +(4959, 6130101, 2041001, 1, 1, 0, 3000), +(4960, 6130101, 2041004, 1, 1, 0, 3000), +(4961, 6130101, 2040804, 1, 1, 0, 3000), +(4962, 6130101, 2040901, 1, 1, 0, 3000), +(4963, 6130101, 1032019, 1, 1, 0, 10000), +(4964, 6130101, 1382006, 1, 1, 0, 7000), +(4965, 6130101, 2331000, 1, 1, 0, 5000), +(4966, 6130101, 2040427, 1, 1, 0, 3000), +(4967, 6130101, 2040618, 1, 1, 0, 3000), +(4968, 6130101, 2040619, 1, 1, 0, 3000), +(4969, 6130101, 2040024, 1, 1, 0, 3000), +(4970, 6130101, 2043212, 1, 1, 0, 3000), +(4971, 6130103, 4000050, 1, 1, 0, 600000), +(4972, 6130103, 2000006, 1, 1, 0, 20000), +(4973, 6130103, 2000004, 1, 1, 0, 20000), +(4974, 6130103, 4020008, 1, 1, 0, 9000), +(4975, 6130103, 4010001, 1, 1, 0, 9000), +(4976, 6130103, 2040401, 1, 1, 0, 300), +(4977, 6130103, 4004002, 1, 1, 0, 10000), +(4978, 6130103, 1050045, 1, 1, 0, 700), +(4979, 6130103, 1040087, 1, 1, 0, 800), +(4980, 6130103, 1060076, 1, 1, 0, 800), +(4981, 6130103, 1040097, 1, 1, 0, 800), +(4982, 6130103, 1060086, 1, 1, 0, 800), +(4983, 6130103, 1002170, 1, 1, 0, 1500), +(4984, 6130103, 1002025, 1, 1, 0, 1500), +(4985, 6130103, 1040093, 1, 1, 0, 800), +(4986, 6130103, 1060082, 1, 1, 0, 800), +(4987, 6130103, 1072150, 1, 1, 0, 800), +(4988, 6130103, 1072138, 1, 1, 0, 800), +(4989, 6130103, 1082060, 1, 1, 0, 1000), +(4990, 6130103, 1072145, 1, 1, 0, 800), +(4991, 6130103, 1102024, 1, 1, 0, 1000), +(4992, 6130103, 1072157, 1, 1, 0, 800), +(4993, 6130103, 1002286, 1, 1, 0, 1500), +(4994, 6130103, 1302012, 1, 1, 0, 700), +(4995, 6130103, 1082095, 1, 1, 0, 1000), +(4996, 6130103, 2040418, 1, 1, 0, 300), +(4997, 6130103, 4130008, 1, 1, 0, 6000), +(4998, 6130103, 4130015, 1, 1, 0, 6000), +(4999, 6130200, 4000128, 1, 1, 0, 600000), +(5000, 6130200, 4010001, 1, 1, 0, 9000), +(5001, 6130200, 2000006, 1, 1, 0, 20000), +(5002, 6130200, 2000004, 1, 1, 0, 20000), +(5003, 6130200, 4020008, 1, 1, 0, 9000), +(5004, 6130200, 4010005, 1, 1, 0, 9000), +(5005, 6130200, 2043701, 1, 1, 0, 300), +(5006, 6130200, 2043801, 1, 1, 0, 300), +(5007, 6130200, 2041001, 1, 1, 0, 300), +(5008, 6130200, 4004001, 1, 1, 0, 10000), +(5009, 6130200, 1002182, 1, 1, 0, 1500), +(5010, 6130200, 1002093, 1, 1, 0, 1500), +(5011, 6130200, 1050046, 1, 1, 0, 700), +(5012, 6130200, 1032012, 1, 1, 0, 1000), +(5013, 6130200, 1040088, 1, 1, 0, 800), +(5014, 6130200, 1060077, 1, 1, 0, 800), +(5015, 6130200, 1072122, 1, 1, 0, 800), +(5016, 6130200, 1082094, 1, 1, 0, 1000), +(5017, 6130200, 1082061, 1, 1, 0, 1000), +(5018, 6130200, 1082087, 1, 1, 0, 1000), +(5019, 6130200, 1072152, 1, 1, 0, 800), +(5020, 6130200, 1051042, 1, 1, 0, 700), +(5021, 6130200, 1302011, 1, 1, 0, 700), +(5022, 6130200, 1102015, 1, 1, 0, 1000), +(5023, 6130200, 1452009, 1, 1, 0, 500), +(5024, 6130200, 1082098, 1, 1, 0, 1000), +(5025, 6130200, 1312010, 1, 1, 0, 700), +(5026, 6130200, 1072163, 1, 1, 0, 800), +(5027, 6130200, 1052122, 1, 1, 0, 700), +(5028, 6130200, 2043112, 1, 1, 0, 300), +(5029, 6130200, 2044312, 1, 1, 0, 300), +(5030, 6130200, 4130004, 1, 1, 0, 6000), +(5031, 6130200, 4130012, 1, 1, 0, 6000), +(5032, 6130200, 4130015, 1, 1, 0, 6000), +(5033, 6130202, 4000173, 1, 1, 0, 600000), +(5034, 6130202, 2000006, 1, 1, 0, 20000), +(5035, 6130202, 2000004, 1, 1, 0, 20000), +(5036, 6130202, 4020008, 1, 1, 0, 9000), +(5037, 6130202, 4010001, 1, 1, 0, 9000), +(5038, 6130202, 1432004, 1, 1, 0, 500), +(5039, 6130202, 1442009, 1, 1, 0, 700), +(5040, 6130202, 1452008, 1, 1, 0, 500), +(5041, 6130202, 1462006, 1, 1, 0, 500), +(5042, 6130202, 1082086, 1, 1, 0, 1000), +(5043, 6130202, 1082093, 1, 1, 0, 1000), +(5044, 6130202, 1072144, 1, 1, 0, 800), +(5045, 6130202, 2040401, 1, 1, 0, 300), +(5046, 6130202, 1060088, 1, 1, 0, 800), +(5047, 6130202, 1040099, 1, 1, 0, 800), +(5048, 6130202, 1102018, 1, 1, 0, 1000), +(5049, 6130202, 1041091, 1, 1, 0, 800), +(5050, 6130202, 1061090, 1, 1, 0, 800), +(5051, 6130202, 2040004, 1, 1, 0, 300), +(5052, 6130202, 4004002, 1, 1, 0, 10000), +(5053, 6130202, 2040501, 1, 1, 0, 300), +(5054, 6130202, 1040089, 1, 1, 0, 800), +(5055, 6130202, 1060078, 1, 1, 0, 800), +(5056, 6130202, 4130002, 1, 1, 0, 6000), +(5057, 6130203, 4000283, 1, 1, 0, 600000), +(5058, 6130203, 4000285, 1, 1, 0, 600000), +(5059, 6130203, 4000021, 1, 1, 0, 50000), +(5060, 6130203, 4003005, 1, 1, 0, 200000), +(5061, 6130203, 2000006, 1, 1, 0, 20000), +(5062, 6130203, 2000004, 1, 1, 0, 20000), +(5063, 6130203, 4020007, 1, 1, 0, 9000), +(5064, 6130203, 4010005, 1, 1, 0, 9000), +(5065, 6130203, 2070005, 1, 1, 0, 400), +(5066, 6130203, 1041083, 1, 1, 0, 800), +(5067, 6130203, 1061082, 1, 1, 0, 800), +(5068, 6130203, 1072090, 1, 1, 0, 800), +(5069, 6130203, 1041079, 1, 1, 0, 800), +(5070, 6130203, 1061078, 1, 1, 0, 800), +(5071, 6130203, 1002215, 1, 1, 0, 1500), +(5072, 6130203, 1102015, 1, 1, 0, 1000), +(5073, 6130203, 1050056, 1, 1, 0, 700), +(5074, 6130203, 1002637, 1, 1, 0, 1500), +(5075, 6130203, 2040622, 1, 1, 0, 300), +(5076, 6130203, 2043112, 1, 1, 0, 300), +(5077, 6130203, 2044014, 1, 1, 0, 300), +(5078, 6130203, 4130002, 1, 1, 0, 6000), +(5079, 6130203, 4130005, 1, 1, 0, 6000), +(5080, 6130203, 4130013, 1, 1, 0, 6000), +(5081, 6130204, 4000295, 1, 1, 0, 600000), +(5082, 6130204, 4003005, 1, 1, 0, 200000), +(5083, 6130204, 4000021, 1, 1, 0, 50000), +(5084, 6130204, 2000002, 1, 1, 0, 20000), +(5085, 6130204, 2000006, 1, 1, 0, 20000), +(5086, 6130204, 2000004, 1, 1, 0, 20000), +(5087, 6130204, 4020004, 1, 1, 0, 9000), +(5088, 6130204, 4010006, 1, 1, 0, 9000), +(5089, 6130204, 1040093, 1, 1, 0, 800), +(5090, 6130204, 1060082, 1, 1, 0, 800), +(5091, 6130204, 1051064, 1, 1, 0, 700), +(5092, 6130204, 1051065, 1, 1, 0, 700), +(5093, 6130204, 1082062, 1, 1, 0, 1000), +(5094, 6130204, 1040104, 1, 1, 0, 800), +(5095, 6130204, 1060092, 1, 1, 0, 800), +(5096, 6130204, 4004000, 1, 1, 0, 10000), +(5097, 6130204, 1040107, 1, 1, 0, 800), +(5098, 6130204, 1060095, 1, 1, 0, 800), +(5099, 6130204, 2040301, 1, 1, 0, 300), +(5100, 6130204, 2043001, 1, 1, 0, 300), +(5101, 6130204, 1402011, 1, 1, 0, 700), +(5102, 6130204, 1402003, 1, 1, 0, 700), +(5103, 6130204, 1052119, 1, 1, 0, 700), +(5104, 6130204, 2330003, 1, 1, 0, 500), +(5105, 6130204, 2044802, 1, 1, 0, 300), +(5106, 6130204, 2040421, 1, 1, 0, 300), +(5107, 6130204, 2049000, 1, 1, 0, 150), +(5108, 6130204, 4130000, 1, 1, 0, 6000), +(5109, 6130204, 4130012, 1, 1, 0, 6000), +(5110, 6130207, 4000282, 1, 1, 0, 600000), +(5111, 6130207, 4000021, 1, 1, 0, 50000), +(5112, 6130207, 4003005, 1, 1, 0, 200000), +(5113, 6130207, 2000002, 1, 1, 0, 20000), +(5114, 6130207, 2000006, 1, 1, 0, 20000), +(5115, 6130207, 4020004, 1, 1, 0, 9000), +(5116, 6130207, 1040109, 1, 1, 0, 800), +(5117, 6130207, 1060098, 1, 1, 0, 800), +(5118, 6130207, 1032011, 1, 1, 0, 1000), +(5119, 6130207, 1102017, 1, 1, 0, 1000), +(5120, 6130207, 1051030, 1, 1, 0, 700), +(5121, 6130207, 1002210, 1, 1, 0, 1500), +(5122, 6130207, 1051046, 1, 1, 0, 700), +(5123, 6130207, 1452008, 1, 1, 0, 500), +(5124, 6130207, 2043701, 1, 1, 0, 300), +(5125, 6130207, 1072309, 1, 1, 0, 800), +(5126, 6130207, 2330003, 1, 1, 0, 500), +(5127, 6130207, 2040328, 1, 1, 0, 300), +(5128, 6130207, 2044112, 1, 1, 0, 300), +(5129, 6130207, 4130006, 1, 1, 0, 6000), +(5130, 6130207, 4130007, 1, 1, 0, 6000), +(5131, 6130208, 4000296, 1, 1, 0, 600000), +(5132, 6130208, 2000002, 1, 1, 0, 20000), +(5133, 6130208, 2000006, 1, 1, 0, 20000), +(5134, 6130208, 2000004, 1, 1, 0, 20000), +(5135, 6130208, 4020005, 1, 1, 0, 9000), +(5136, 6130208, 4010002, 1, 1, 0, 9000), +(5137, 6130208, 4004001, 1, 1, 0, 10000), +(5138, 6130208, 1092015, 1, 1, 0, 700), +(5139, 6130208, 1472027, 1, 1, 0, 500), +(5140, 6130208, 1050088, 1, 1, 0, 700), +(5141, 6130208, 1072080, 1, 1, 0, 800), +(5142, 6130208, 1072085, 1, 1, 0, 800), +(5143, 6130208, 1032015, 1, 1, 0, 1000), +(5144, 6130208, 1050081, 1, 1, 0, 700), +(5145, 6130208, 1051078, 1, 1, 0, 700), +(5146, 6130208, 1002289, 1, 1, 0, 1500), +(5147, 6130208, 1462008, 1, 1, 0, 500), +(5148, 6130208, 1322018, 1, 1, 0, 700), +(5149, 6130208, 2043302, 1, 1, 0, 300), +(5150, 6130208, 1082204, 1, 1, 0, 1000), +(5151, 6130208, 2044902, 1, 1, 0, 300), +(5152, 6130208, 4130006, 1, 1, 0, 6000), +(5153, 6130208, 4130008, 1, 1, 0, 6000), +(5154, 6130208, 4130012, 1, 1, 0, 6000), +(5155, 6130209, 4000289, 1, 1, 0, 600000), +(5156, 6130209, 4000021, 1, 1, 0, 50000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(5157, 6130209, 4003005, 1, 1, 0, 200000), +(5158, 6130209, 4020004, 1, 1, 0, 9000), +(5159, 6130209, 4020002, 1, 1, 0, 9000), +(5160, 6130209, 2000002, 1, 1, 0, 20000), +(5161, 6130209, 2000004, 1, 1, 0, 20000), +(5162, 6130209, 4004003, 1, 1, 0, 10000), +(5163, 6130209, 1032014, 1, 1, 0, 1000), +(5164, 6130209, 1040096, 1, 1, 0, 800), +(5165, 6130209, 1060085, 1, 1, 0, 800), +(5166, 6130209, 1092015, 1, 1, 0, 700), +(5167, 6130209, 1332019, 1, 1, 0, 500), +(5168, 6130209, 4006000, 1, 1, 0, 10000), +(5169, 6130209, 2040301, 1, 1, 0, 300), +(5170, 6130209, 1492008, 1, 1, 0, 500), +(5171, 6130209, 2040925, 1, 1, 0, 300), +(5172, 6130209, 2043017, 1, 1, 0, 300), +(5173, 6130209, 2043110, 1, 1, 0, 300), +(5174, 6130209, 4130014, 1, 1, 0, 6000), +(5175, 6130209, 4130017, 1, 1, 0, 6000), +(5176, 6220000, 4000032, 1, 1, 0, 600000), +(5177, 6220000, 4000032, 1, 1, 0, 600000), +(5178, 6220000, 4000032, 1, 1, 0, 600000), +(5179, 6220000, 4000033, 1, 1, 0, 600000), +(5180, 6220000, 4000033, 1, 1, 0, 600000), +(5181, 6220000, 4000033, 1, 1, 0, 600000), +(5182, 6220000, 4000021, 1, 1, 0, 500000), +(5183, 6220000, 4000021, 1, 1, 0, 500000), +(5184, 6220000, 4000021, 1, 1, 0, 500000), +(5185, 6220000, 4010002, 1, 1, 0, 90000), +(5186, 6220000, 4020003, 1, 1, 0, 90000), +(5187, 6220000, 2000002, 1, 1, 0, 200000), +(5188, 6220000, 2000003, 1, 1, 0, 200000), +(5189, 6220000, 2002000, 1, 1, 0, 200000), +(5190, 6220000, 2002001, 1, 1, 0, 200000), +(5191, 6220000, 2040004, 1, 1, 0, 3000), +(5192, 6220000, 2040501, 1, 1, 0, 3000), +(5193, 6220000, 2040516, 1, 1, 0, 3000), +(5194, 6220000, 2040804, 1, 1, 0, 3000), +(5195, 6220000, 2041001, 1, 1, 0, 3000), +(5196, 6220000, 2043301, 1, 1, 0, 3000), +(5197, 6220000, 2044001, 1, 1, 0, 3000), +(5198, 6220000, 2044401, 1, 1, 0, 3000), +(5199, 6220000, 2044601, 1, 1, 0, 3000), +(5200, 6220000, 2044701, 1, 1, 0, 3000), +(5201, 6220000, 2040702, 1, 1, 0, 3000), +(5202, 6220000, 2041008, 1, 1, 0, 3000), +(5203, 6220000, 2044502, 1, 1, 0, 3000), +(5204, 6220000, 2044702, 1, 1, 0, 3000), +(5205, 6220000, 2048002, 1, 1, 0, 3000), +(5206, 6220000, 2060000, 1, 1, 0, 300000), +(5207, 6220000, 2061000, 1, 1, 0, 300000), +(5208, 6220000, 1302012, 1, 1, 0, 7000), +(5209, 6220000, 1312010, 1, 1, 0, 7000), +(5210, 6220000, 1322019, 1, 1, 0, 7000), +(5211, 6220000, 1332018, 1, 1, 0, 5000), +(5212, 6220000, 1372015, 1, 1, 0, 7000), +(5213, 6220000, 1382010, 1, 1, 0, 7000), +(5214, 6220000, 1402012, 1, 1, 0, 7000), +(5215, 6220000, 1412008, 1, 1, 0, 7000), +(5216, 6220000, 1422010, 1, 1, 0, 7000), +(5217, 6220000, 1432007, 1, 1, 0, 5000), +(5218, 6220000, 1442008, 1, 1, 0, 7000), +(5219, 6220000, 1452011, 1, 1, 0, 5000), +(5220, 6220000, 1462009, 1, 1, 0, 5000), +(5221, 6220000, 1472029, 1, 1, 0, 5000), +(5222, 6220000, 1482009, 1, 1, 0, 5000), +(5223, 6220000, 1492009, 1, 1, 0, 5000), +(5224, 6220000, 2040031, 1, 1, 0, 3000), +(5225, 6220000, 2040627, 1, 1, 0, 3000), +(5226, 6220000, 2044312, 1, 1, 0, 3000), +(5227, 6220000, 2044807, 1, 1, 0, 3000), +(5228, 6220001, 4000117, 1, 1, 0, 600000), +(5229, 6220001, 4000118, 1, 1, 0, 600000), +(5230, 6220001, 4000119, 1, 1, 0, 600000), +(5231, 6220001, 4004001, 1, 1, 0, 100000), +(5232, 6220001, 4004000, 1, 1, 0, 100000), +(5233, 6220001, 2000002, 1, 1, 0, 200000), +(5234, 6220001, 2000003, 1, 1, 0, 200000), +(5235, 6220001, 2040516, 1, 1, 0, 3000), +(5236, 6220001, 2040707, 1, 1, 0, 3000), +(5237, 6220001, 2040804, 1, 1, 0, 3000), +(5238, 6220001, 2041016, 1, 1, 0, 3000), +(5239, 6220001, 2043101, 1, 1, 0, 3000), +(5240, 6220001, 2043301, 1, 1, 0, 3000), +(5241, 6220001, 2044401, 1, 1, 0, 3000), +(5242, 6220001, 2044301, 1, 1, 0, 3000), +(5243, 6220001, 2044901, 1, 1, 0, 3000), +(5244, 6220001, 2330003, 1, 1, 0, 5000), +(5245, 6220001, 2070004, 1, 1, 0, 5000), +(5246, 6220001, 1002024, 1, 1, 0, 15000), +(5247, 6220001, 1002095, 1, 1, 0, 15000), +(5248, 6220001, 1002254, 1, 1, 0, 15000), +(5249, 6220001, 1002289, 1, 1, 0, 15000), +(5250, 6220001, 1002285, 1, 1, 0, 15000), +(5251, 6220001, 1002637, 1, 1, 0, 15000), +(5252, 6220001, 1302049, 1, 1, 0, 7000), +(5253, 6220001, 2040425, 1, 1, 0, 3000), +(5254, 6220001, 2040925, 1, 1, 0, 3000), +(5255, 6220001, 2043214, 1, 1, 0, 3000), +(5256, 6220001, 2049000, 1, 1, 0, 1500), +(5257, 6230100, 4000027, 1, 1, 0, 600000), +(5258, 6230100, 2000006, 1, 1, 0, 20000), +(5259, 6230100, 4020008, 1, 1, 0, 9000), +(5260, 6230100, 4010006, 1, 1, 0, 9000), +(5261, 6230100, 2043701, 1, 1, 0, 300), +(5262, 6230100, 2070004, 1, 1, 0, 500), +(5263, 6230100, 1422005, 1, 1, 0, 700), +(5264, 6230100, 1002218, 1, 1, 0, 1500), +(5265, 6230100, 2000005, 1, 1, 0, 20000), +(5266, 6230100, 1002021, 1, 1, 0, 1500), +(5267, 6230100, 1002166, 1, 1, 0, 1500), +(5268, 6230100, 1050047, 1, 1, 0, 700), +(5269, 6230100, 1040095, 1, 1, 0, 800), +(5270, 6230100, 1060084, 1, 1, 0, 800), +(5271, 6230100, 1041087, 1, 1, 0, 800), +(5272, 6230100, 1061086, 1, 1, 0, 800), +(5273, 6230100, 1051045, 1, 1, 0, 700), +(5274, 6230100, 1082061, 1, 1, 0, 1000), +(5275, 6230100, 1050060, 1, 1, 0, 700), +(5276, 6230100, 1082090, 1, 1, 0, 1000), +(5277, 6230100, 1072148, 1, 1, 0, 800), +(5278, 6230100, 1472023, 1, 1, 0, 500), +(5279, 6230100, 1442010, 1, 1, 0, 700), +(5280, 6230100, 1102016, 1, 1, 0, 1000), +(5281, 6230100, 1051054, 1, 1, 0, 700), +(5282, 6230100, 1082106, 1, 1, 0, 1000), +(5283, 6230100, 1072154, 1, 1, 0, 800), +(5284, 6230100, 1041103, 1, 1, 0, 800), +(5285, 6230100, 1061102, 1, 1, 0, 800), +(5286, 6230100, 1082204, 1, 1, 0, 1000), +(5287, 6230100, 2040323, 1, 1, 0, 300), +(5288, 6230100, 2040823, 1, 1, 0, 300), +(5289, 6230100, 2043212, 1, 1, 0, 300), +(5290, 6230100, 2044809, 1, 1, 0, 300), +(5291, 6230100, 2049100, 1, 1, 0, 150), +(5292, 6230100, 4130011, 1, 1, 0, 6000), +(5293, 6230100, 4130012, 1, 1, 0, 6000), +(5294, 6230100, 4130016, 1, 1, 0, 6000), +(5295, 6230200, 4000057, 1, 1, 0, 600000), +(5296, 6230200, 4004004, 1, 1, 0, 10000), +(5297, 6230200, 2000006, 1, 1, 0, 20000), +(5298, 6230200, 2000004, 1, 1, 0, 20000), +(5299, 6230200, 4020000, 1, 1, 0, 9000), +(5300, 6230200, 4010004, 1, 1, 0, 9000), +(5301, 6230200, 4004003, 1, 1, 0, 10000), +(5302, 6230200, 4006000, 1, 1, 0, 10000), +(5303, 6230200, 1002218, 1, 1, 0, 1500), +(5304, 6230200, 1472020, 1, 1, 0, 500), +(5305, 6230200, 1002100, 1, 1, 0, 1500), +(5306, 6230200, 1050055, 1, 1, 0, 700), +(5307, 6230200, 1002268, 1, 1, 0, 1500), +(5308, 6230200, 1082087, 1, 1, 0, 1000), +(5309, 6230200, 1041094, 1, 1, 0, 800), +(5310, 6230200, 1061093, 1, 1, 0, 800), +(5311, 6230200, 1102018, 1, 1, 0, 1000), +(5312, 6230200, 1092011, 1, 1, 0, 700), +(5313, 6230200, 1472025, 1, 1, 0, 500), +(5314, 6230200, 1082088, 1, 1, 0, 1000), +(5315, 6230200, 1332017, 1, 1, 0, 500), +(5316, 6230200, 1472023, 1, 1, 0, 500), +(5317, 6230200, 1051052, 1, 1, 0, 700), +(5318, 6230200, 1072164, 1, 1, 0, 800), +(5319, 6230200, 1072155, 1, 1, 0, 800), +(5320, 6230200, 1072161, 1, 1, 0, 800), +(5321, 6230200, 2040419, 1, 1, 0, 300), +(5322, 6230200, 2040620, 1, 1, 0, 300), +(5323, 6230200, 4130005, 1, 1, 0, 6000), +(5324, 6230200, 4130013, 1, 1, 0, 6000), +(5325, 6230300, 4000129, 1, 1, 0, 600000), +(5326, 6230300, 4020008, 1, 1, 0, 9000), +(5327, 6230300, 4010006, 1, 1, 0, 9000), +(5328, 6230300, 2000002, 1, 1, 0, 20000), +(5329, 6230300, 2000004, 1, 1, 0, 20000), +(5330, 6230300, 4004003, 1, 1, 0, 10000), +(5331, 6230300, 2040301, 1, 1, 0, 300), +(5332, 6230300, 4006000, 1, 1, 0, 10000), +(5333, 6230300, 4004004, 1, 1, 0, 10000), +(5334, 6230300, 1051031, 1, 1, 0, 700), +(5335, 6230300, 1082065, 1, 1, 0, 1000), +(5336, 6230300, 1072125, 1, 1, 0, 800), +(5337, 6230300, 1040089, 1, 1, 0, 800), +(5338, 6230300, 1060078, 1, 1, 0, 800), +(5339, 6230300, 1002101, 1, 1, 0, 1500), +(5340, 6230300, 1002242, 1, 1, 0, 1500), +(5341, 6230300, 1040099, 1, 1, 0, 800), +(5342, 6230300, 1060088, 1, 1, 0, 800), +(5343, 6230300, 1051042, 1, 1, 0, 700), +(5344, 6230300, 1082060, 1, 1, 0, 1000), +(5345, 6230300, 1102024, 1, 1, 0, 1000), +(5346, 6230300, 1050061, 1, 1, 0, 700), +(5347, 6230300, 1432007, 1, 1, 0, 500), +(5348, 6230300, 1082096, 1, 1, 0, 1000), +(5349, 6230300, 1072158, 1, 1, 0, 800), +(5350, 6230300, 1032015, 1, 1, 0, 1000), +(5351, 6230300, 1482008, 1, 1, 0, 500), +(5352, 6230300, 2044801, 1, 1, 0, 300), +(5353, 6230300, 2040318, 1, 1, 0, 300), +(5354, 6230300, 2040622, 1, 1, 0, 300), +(5355, 6230300, 4130001, 1, 1, 0, 6000), +(5356, 6230400, 4000143, 1, 1, 0, 600000), +(5357, 6230400, 2000002, 1, 1, 0, 20000), +(5358, 6230400, 2000004, 1, 1, 0, 20000), +(5359, 6230400, 2043802, 1, 1, 0, 300), +(5360, 6230400, 2040804, 1, 1, 0, 300), +(5361, 6230400, 2002000, 1, 1, 0, 20000), +(5362, 6230400, 4004000, 1, 1, 0, 10000), +(5363, 6230400, 4010000, 1, 1, 0, 9000), +(5364, 6230400, 4020003, 1, 1, 0, 9000), +(5365, 6230400, 1051034, 1, 1, 0, 700), +(5366, 6230400, 1002085, 1, 1, 0, 1500), +(5367, 6230400, 1002210, 1, 1, 0, 1500), +(5368, 6230400, 1051037, 1, 1, 0, 700), +(5369, 6230400, 1040096, 1, 1, 0, 800), +(5370, 6230400, 1060085, 1, 1, 0, 800), +(5371, 6230400, 1372014, 1, 1, 0, 700), +(5372, 6230400, 1082091, 1, 1, 0, 1000), +(5373, 6230400, 1082093, 1, 1, 0, 1000), +(5374, 6230400, 1082086, 1, 1, 0, 1000), +(5375, 6230400, 1072149, 1, 1, 0, 800), +(5376, 6230400, 1472024, 1, 1, 0, 500), +(5377, 6230400, 1102017, 1, 1, 0, 1000), +(5378, 6230400, 1322018, 1, 1, 0, 700), +(5379, 6230400, 1032020, 1, 1, 0, 1000), +(5380, 6230400, 1002281, 1, 1, 0, 1500), +(5381, 6230400, 1002286, 1, 1, 0, 1500), +(5382, 6230400, 1082099, 1, 1, 0, 1000), +(5383, 6230400, 1041098, 1, 1, 0, 800), +(5384, 6230400, 1061097, 1, 1, 0, 800), +(5385, 6230400, 1032014, 1, 1, 0, 1000), +(5386, 6230400, 1492009, 1, 1, 0, 500), +(5387, 6230400, 2044902, 1, 1, 0, 300), +(5388, 6230400, 2040422, 1, 1, 0, 300), +(5389, 6230400, 2040530, 1, 1, 0, 300), +(5390, 6230400, 2040924, 1, 1, 0, 300), +(5391, 6230400, 2044414, 1, 1, 0, 300), +(5392, 6230400, 4130012, 1, 1, 0, 6000), +(5393, 6230400, 4130013, 1, 1, 0, 6000), +(5394, 6230401, 2040515, 1, 1, 0, 300), +(5395, 6230401, 2044410, 1, 1, 0, 300), +(5396, 6230401, 4130009, 1, 1, 0, 6000), +(5397, 6230401, 4130010, 1, 1, 0, 6000), +(5398, 6230401, 4130014, 1, 1, 0, 6000), +(5399, 6230500, 4000144, 1, 1, 0, 600000), +(5400, 6230500, 4000021, 1, 1, 0, 50000), +(5401, 6230500, 2000002, 1, 1, 0, 20000), +(5402, 6230500, 2000004, 1, 1, 0, 20000), +(5403, 6230500, 4010006, 1, 1, 0, 9000), +(5404, 6230500, 4020006, 1, 1, 0, 9000), +(5405, 6230500, 4006000, 1, 1, 0, 10000), +(5406, 6230500, 4004004, 1, 1, 0, 10000), +(5407, 6230500, 2041022, 1, 1, 0, 300), +(5408, 6230500, 2043301, 1, 1, 0, 300), +(5409, 6230500, 1050049, 1, 1, 0, 700), +(5410, 6230500, 1072123, 1, 1, 0, 800), +(5411, 6230500, 1082085, 1, 1, 0, 1000), +(5412, 6230500, 1050056, 1, 1, 0, 700), +(5413, 6230500, 1002084, 1, 1, 0, 1500), +(5414, 6230500, 1002249, 1, 1, 0, 1500), +(5415, 6230500, 1002270, 1, 1, 0, 1500), +(5416, 6230500, 1002244, 1, 1, 0, 1500), +(5417, 6230500, 1040091, 1, 1, 0, 800), +(5418, 6230500, 1060080, 1, 1, 0, 800), +(5419, 6230500, 1072161, 1, 1, 0, 800), +(5420, 6230500, 1072166, 1, 1, 0, 800), +(5421, 6230500, 1082103, 1, 1, 0, 1000), +(5422, 6230500, 1332019, 1, 1, 0, 500), +(5423, 6230500, 1072159, 1, 1, 0, 800), +(5424, 6230500, 1002637, 1, 1, 0, 1500), +(5425, 6230500, 2040620, 1, 1, 0, 300), +(5426, 6230500, 4130001, 1, 1, 0, 6000), +(5427, 6230500, 4130007, 1, 1, 0, 6000), +(5428, 6230600, 4000185, 1, 1, 0, 600000), +(5429, 6230600, 2000006, 1, 1, 0, 20000), +(5430, 6230600, 2000004, 1, 1, 0, 20000), +(5431, 6230600, 4000030, 1, 1, 0, 60000), +(5432, 6230600, 4010006, 1, 1, 0, 9000), +(5433, 6230600, 4010004, 1, 1, 0, 9000), +(5434, 6230600, 4020005, 1, 1, 0, 9000), +(5435, 6230600, 1040094, 1, 1, 0, 800), +(5436, 6230600, 1060083, 1, 1, 0, 800), +(5437, 6230600, 1041085, 1, 1, 0, 800), +(5438, 6230600, 1061083, 1, 1, 0, 800), +(5439, 6230600, 1040091, 1, 1, 0, 800), +(5440, 6230600, 1060080, 1, 1, 0, 800), +(5441, 6230600, 1041091, 1, 1, 0, 800), +(5442, 6230600, 1061090, 1, 1, 0, 800), +(5443, 6230600, 1051043, 1, 1, 0, 700), +(5444, 6230600, 1051046, 1, 1, 0, 700), +(5445, 6230600, 1082095, 1, 1, 0, 1000), +(5446, 6230600, 1082098, 1, 1, 0, 1000), +(5447, 6230600, 1072158, 1, 1, 0, 800), +(5448, 6230600, 1472024, 1, 1, 0, 500), +(5449, 6230600, 4006000, 1, 1, 0, 10000), +(5450, 6230600, 1462008, 1, 1, 0, 500), +(5451, 6230600, 4020007, 1, 1, 0, 9000), +(5452, 6230600, 1002634, 1, 1, 0, 1500), +(5453, 6230600, 2332000, 1, 1, 0, 500), +(5454, 6230600, 2040317, 1, 1, 0, 300), +(5455, 6230600, 2040328, 1, 1, 0, 300), +(5456, 6230600, 2040928, 1, 1, 0, 300), +(5457, 6230600, 2044112, 1, 1, 0, 300), +(5458, 6230600, 2044414, 1, 1, 0, 300), +(5459, 6230600, 4130006, 1, 1, 0, 6000), +(5460, 6230600, 4130011, 1, 1, 0, 6000), +(5461, 6230600, 4130015, 1, 1, 0, 6000), +(5462, 6230601, 4000186, 1, 1, 0, 600000), +(5463, 6230601, 4020008, 1, 1, 0, 9000), +(5464, 6230601, 2041001, 1, 1, 0, 300), +(5465, 6230601, 2000002, 1, 1, 0, 20000), +(5466, 6230601, 2000004, 1, 1, 0, 20000), +(5467, 6230601, 4010003, 1, 1, 0, 9000), +(5468, 6230601, 4010005, 1, 1, 0, 9000), +(5469, 6230601, 4000030, 1, 1, 0, 60000), +(5470, 6230601, 2041004, 1, 1, 0, 300), +(5471, 6230601, 2040401, 1, 1, 0, 300), +(5472, 6230601, 1002242, 1, 1, 0, 1500), +(5473, 6230601, 1002247, 1, 1, 0, 1500), +(5474, 6230601, 1002208, 1, 1, 0, 1500), +(5475, 6230601, 1092017, 1, 1, 0, 700), +(5476, 6230601, 1442010, 1, 1, 0, 700), +(5477, 6230601, 1432007, 1, 1, 0, 500), +(5478, 6230601, 1412008, 1, 1, 0, 700), +(5479, 6230601, 1082109, 1, 1, 0, 1000), +(5480, 6230601, 1041097, 1, 1, 0, 800), +(5481, 6230601, 1061096, 1, 1, 0, 800), +(5482, 6230601, 2040001, 1, 1, 0, 300), +(5483, 6230601, 1061100, 1, 1, 0, 800), +(5484, 6230601, 1041101, 1, 1, 0, 800), +(5485, 6230601, 1072172, 1, 1, 0, 800), +(5486, 6230601, 1372015, 1, 1, 0, 700), +(5487, 6230601, 4020007, 1, 1, 0, 9000), +(5488, 6230601, 1052122, 1, 1, 0, 700), +(5489, 6230601, 2040024, 1, 1, 0, 300), +(5490, 6230601, 2040625, 1, 1, 0, 300), +(5491, 6230601, 4130007, 1, 1, 0, 6000), +(5492, 6230601, 4130015, 1, 1, 0, 6000), +(5493, 6230602, 4000207, 1, 1, 0, 600000), +(5494, 6230602, 2000002, 1, 1, 0, 20000), +(5495, 6230602, 2000004, 1, 1, 0, 20000), +(5496, 6230602, 2043802, 1, 1, 0, 300), +(5497, 6230602, 2040804, 1, 1, 0, 300), +(5498, 6230602, 2002000, 1, 1, 0, 20000), +(5499, 6230602, 4010000, 1, 1, 0, 9000), +(5500, 6230602, 4020003, 1, 1, 0, 9000), +(5501, 6230602, 1082010, 1, 1, 0, 1000), +(5502, 6230602, 1082065, 1, 1, 0, 1000), +(5503, 6230602, 1082082, 1, 1, 0, 1000), +(5504, 6230602, 1082085, 1, 1, 0, 1000), +(5505, 6230602, 1092011, 1, 1, 0, 700), +(5506, 6230602, 1302011, 1, 1, 0, 700), +(5507, 6230602, 1332017, 1, 1, 0, 500), +(5508, 6230602, 1472023, 1, 1, 0, 500), +(5509, 6230602, 1002084, 1, 1, 0, 1500), +(5510, 6230602, 1002246, 1, 1, 0, 1500), +(5511, 6230602, 1002248, 1, 1, 0, 1500), +(5512, 6230602, 1002269, 1, 1, 0, 1500), +(5513, 6230602, 1082103, 1, 1, 0, 1000), +(5514, 6230602, 1082106, 1, 1, 0, 1000), +(5515, 6230602, 1082098, 1, 1, 0, 1000), +(5516, 6230602, 1082096, 1, 1, 0, 1000), +(5517, 6230602, 1482009, 1, 1, 0, 500), +(5518, 6230602, 2330002, 1, 1, 0, 500), +(5519, 6230602, 2040328, 1, 1, 0, 300), +(5520, 6230602, 2040417, 1, 1, 0, 300), +(5521, 6230602, 2040423, 1, 1, 0, 300), +(5522, 6230602, 2040928, 1, 1, 0, 300), +(5523, 6230602, 4130000, 1, 1, 0, 6000), +(5524, 6230602, 4130010, 1, 1, 0, 6000), +(5525, 6230602, 4130016, 1, 1, 0, 6000), +(5526, 6300000, 4000049, 1, 1, 0, 600000), +(5527, 6300000, 4003005, 1, 1, 0, 200000), +(5528, 6300000, 4000021, 1, 1, 0, 50000), +(5529, 6300000, 2000006, 1, 1, 0, 20000), +(5530, 6300000, 4020007, 1, 1, 0, 9000), +(5531, 6300000, 4010000, 1, 1, 0, 9000), +(5532, 6300000, 4004000, 1, 1, 0, 10000), +(5533, 6300000, 1041078, 1, 1, 0, 800), +(5534, 6300000, 1041089, 1, 1, 0, 800), +(5535, 6300000, 1002022, 1, 1, 0, 1500), +(5536, 6300000, 1032019, 1, 1, 0, 1000), +(5537, 6300000, 1051047, 1, 1, 0, 700), +(5538, 6300000, 1040099, 1, 1, 0, 800), +(5539, 6300000, 1060088, 1, 1, 0, 800), +(5540, 6300000, 1432006, 1, 1, 0, 500), +(5541, 6300000, 1462008, 1, 1, 0, 500), +(5542, 6300000, 1472024, 1, 1, 0, 500), +(5543, 6300000, 1102022, 1, 1, 0, 1000), +(5544, 6300000, 1382007, 1, 1, 0, 700), +(5545, 6300000, 1472026, 1, 1, 0, 500), +(5546, 6300000, 1082107, 1, 1, 0, 1000), +(5547, 6300000, 1040104, 1, 1, 0, 800), +(5548, 6300000, 1060092, 1, 1, 0, 800), +(5549, 6300000, 1072157, 1, 1, 0, 800), +(5550, 6300000, 1032020, 1, 1, 0, 1000), +(5551, 6300000, 1051062, 1, 1, 0, 700), +(5552, 6300005, 4000176, 1, 1, 0, 600000), +(5553, 6300005, 1032014, 1, 1, 0, 10000), +(5554, 6300005, 1102024, 1, 1, 0, 10000), +(5555, 6300005, 2070006, 1, 1, 0, 2000), +(5556, 6300005, 2043101, 1, 1, 0, 3000), +(5557, 6300005, 2043201, 1, 1, 0, 3000), +(5558, 6300005, 2043301, 1, 1, 0, 3000), +(5559, 6300005, 2043701, 1, 1, 0, 3000), +(5560, 6300005, 2043801, 1, 1, 0, 3000), +(5561, 6300005, 2044001, 1, 1, 0, 3000), +(5562, 6300005, 2044101, 1, 1, 0, 3000), +(5563, 6300005, 2044201, 1, 1, 0, 3000), +(5564, 6300005, 2044301, 1, 1, 0, 3000), +(5565, 6300005, 2044401, 1, 1, 0, 3000), +(5566, 6300005, 2044501, 1, 1, 0, 3000), +(5567, 6300005, 2044601, 1, 1, 0, 3000), +(5568, 6300005, 2044701, 1, 1, 0, 3000), +(5569, 6300005, 2048001, 1, 1, 0, 3000), +(5570, 6300005, 2048004, 1, 1, 0, 3000), +(5571, 6300005, 2043001, 1, 1, 0, 3000), +(5572, 6300005, 1092010, 1, 1, 0, 7000), +(5573, 6300005, 2332000, 1, 1, 0, 5000), +(5574, 6300005, 2044801, 1, 1, 0, 3000), +(5575, 6300005, 2044901, 1, 1, 0, 3000), +(5576, 6300005, 2040422, 1, 1, 0, 3000), +(5577, 6300005, 2043019, 1, 1, 0, 3000), +(5578, 6300100, 4000130, 1, 1, 0, 600000), +(5579, 6300100, 2041022, 1, 1, 0, 300), +(5580, 6300100, 4004004, 1, 1, 0, 10000), +(5581, 6300100, 2000001, 1, 1, 0, 20000), +(5582, 6300100, 2000004, 1, 1, 0, 20000), +(5583, 6300100, 4020003, 1, 1, 0, 9000), +(5584, 6300100, 4010006, 1, 1, 0, 9000), +(5585, 6300100, 4004001, 1, 1, 0, 10000), +(5586, 6300100, 1040098, 1, 1, 0, 800), +(5587, 6300100, 1060087, 1, 1, 0, 800), +(5588, 6300100, 1072139, 1, 1, 0, 800), +(5589, 6300100, 1041093, 1, 1, 0, 800), +(5590, 6300100, 1061092, 1, 1, 0, 800), +(5591, 6300100, 1072158, 1, 1, 0, 800), +(5592, 6300100, 1082097, 1, 1, 0, 1000), +(5593, 6300100, 1051065, 1, 1, 0, 700), +(5594, 6300100, 1061097, 1, 1, 0, 800), +(5595, 6300100, 1041098, 1, 1, 0, 800), +(5596, 6300100, 1082108, 1, 1, 0, 1000), +(5597, 6300100, 1040106, 1, 1, 0, 800), +(5598, 6300100, 1060094, 1, 1, 0, 800), +(5599, 6300100, 1472027, 1, 1, 0, 500), +(5600, 6300100, 1452010, 1, 1, 0, 500), +(5601, 6300100, 1442008, 1, 1, 0, 700), +(5602, 6300100, 1072172, 1, 1, 0, 800), +(5603, 6300100, 1082122, 1, 1, 0, 1000), +(5604, 6300100, 1082109, 1, 1, 0, 1000), +(5605, 6300100, 1050082, 1, 1, 0, 700), +(5606, 6300100, 1492010, 1, 1, 0, 500), +(5607, 6300100, 2040421, 1, 1, 0, 300), +(5608, 6300100, 2040825, 1, 1, 0, 300), +(5609, 6300100, 4130003, 1, 1, 0, 6000), +(5610, 6300100, 4130004, 1, 1, 0, 6000), +(5611, 6400000, 4000056, 1, 1, 0, 600000), +(5612, 6400000, 4003004, 1, 1, 0, 200000), +(5613, 6400000, 2041022, 1, 1, 0, 300), +(5614, 6400000, 4004004, 1, 1, 0, 10000), +(5615, 6400000, 4000021, 1, 1, 0, 50000), +(5616, 6400000, 2000002, 1, 1, 0, 20000), +(5617, 6400000, 2000004, 1, 1, 0, 20000), +(5618, 6400000, 4020003, 1, 1, 0, 9000), +(5619, 6400000, 4010006, 1, 1, 0, 9000), +(5620, 6400000, 4003002, 1, 1, 0, 200000), +(5621, 6400000, 4004001, 1, 1, 0, 10000), +(5622, 6400000, 1082084, 1, 1, 0, 1000), +(5623, 6400000, 1072142, 1, 1, 0, 800), +(5624, 6400000, 1442005, 1, 1, 0, 700), +(5625, 6400000, 1472019, 1, 1, 0, 500), +(5626, 6400000, 1051045, 1, 1, 0, 700), +(5627, 6400000, 1002245, 1, 1, 0, 1500), +(5628, 6400000, 1050060, 1, 1, 0, 700), +(5629, 6400000, 1040092, 1, 1, 0, 800), +(5630, 6400000, 1060081, 1, 1, 0, 800), +(5631, 6400000, 1041096, 1, 1, 0, 800), +(5632, 6400000, 1061095, 1, 1, 0, 800), +(5633, 6400000, 1002030, 1, 1, 0, 1500), +(5634, 6400000, 1032015, 1, 1, 0, 1000), +(5635, 6400000, 1061096, 1, 1, 0, 800), +(5636, 6400000, 1041097, 1, 1, 0, 800), +(5637, 6400000, 1072166, 1, 1, 0, 800), +(5638, 6400000, 1082097, 1, 1, 0, 1000), +(5639, 6400000, 1002271, 1, 1, 0, 1500), +(5640, 6400000, 1002338, 1, 1, 0, 1500), +(5641, 6400100, 4000131, 1, 1, 0, 600000), +(5642, 6400100, 2000002, 1, 1, 0, 20000), +(5643, 6400100, 2000004, 1, 1, 0, 20000), +(5644, 6400100, 4020003, 1, 1, 0, 9000), +(5645, 6400100, 4010006, 1, 1, 0, 9000), +(5646, 6400100, 4004004, 1, 1, 0, 10000), +(5647, 6400100, 2002008, 1, 1, 0, 20000), +(5648, 6400100, 2044001, 1, 1, 0, 300), +(5649, 6400100, 2041013, 1, 1, 0, 300), +(5650, 6400100, 1051046, 1, 1, 0, 700), +(5651, 6400100, 1002268, 1, 1, 0, 1500), +(5652, 6400100, 1072149, 1, 1, 0, 800), +(5653, 6400100, 1002282, 1, 1, 0, 1500), +(5654, 6400100, 1041099, 1, 1, 0, 800), +(5655, 6400100, 1061098, 1, 1, 0, 800), +(5656, 6400100, 1050061, 1, 1, 0, 700), +(5657, 6400100, 1082098, 1, 1, 0, 1000), +(5658, 6400100, 1092017, 1, 1, 0, 700), +(5659, 6400100, 1472029, 1, 1, 0, 500), +(5660, 6400100, 1002289, 1, 1, 0, 1500), +(5661, 6400100, 1002252, 1, 1, 0, 1500), +(5662, 6400100, 1040106, 1, 1, 0, 800), +(5663, 6400100, 1060094, 1, 1, 0, 800), +(5664, 6400100, 1412008, 1, 1, 0, 700), +(5665, 6400100, 1032022, 1, 1, 0, 1000), +(5666, 6400100, 1051058, 1, 1, 0, 700), +(5667, 6400100, 1050077, 1, 1, 0, 700), +(5668, 6400100, 1072173, 1, 1, 0, 800), +(5669, 6400100, 1082116, 1, 1, 0, 1000), +(5670, 6400100, 1082207, 1, 1, 0, 1000), +(5671, 6400100, 2040321, 1, 1, 0, 300), +(5672, 6400100, 2040534, 1, 1, 0, 300), +(5673, 6400100, 2043114, 1, 1, 0, 300), +(5674, 6400100, 4130000, 1, 1, 0, 6000), +(5675, 6400100, 4130002, 1, 1, 0, 6000), +(5676, 6400100, 4130013, 1, 1, 0, 6000), +(5677, 7090000, 4000411, 1, 1, 0, 600000), +(5678, 7110300, 2000006, 1, 1, 0, 20000), +(5679, 7110300, 4020001, 1, 1, 0, 9000), +(5680, 7110300, 4010003, 1, 1, 0, 9000), +(5681, 7110300, 2043701, 1, 1, 0, 300), +(5682, 7110300, 2044701, 1, 1, 0, 300), +(5683, 7110300, 4004000, 1, 1, 0, 10000), +(5684, 7110300, 4006000, 1, 1, 0, 10000), +(5685, 7110300, 2040302, 1, 1, 0, 300), +(5686, 7110300, 1050055, 1, 1, 0, 700), +(5687, 7110300, 1041094, 1, 1, 0, 800), +(5688, 7110300, 1061093, 1, 1, 0, 800), +(5689, 7110300, 1050069, 1, 1, 0, 700), +(5690, 7110300, 1040102, 1, 1, 0, 800), +(5691, 7110300, 1060090, 1, 1, 0, 800), +(5692, 7110300, 1082100, 1, 1, 0, 1000), +(5693, 7110300, 1041102, 1, 1, 0, 800), +(5694, 7110300, 1061101, 1, 1, 0, 800), +(5695, 7110300, 1002254, 1, 1, 0, 1500), +(5696, 7110300, 1002288, 1, 1, 0, 1500), +(5697, 7110300, 1092015, 1, 1, 0, 700), +(5698, 7110300, 1332018, 1, 1, 0, 500), +(5699, 7110300, 1402012, 1, 1, 0, 700), +(5700, 7110300, 1472029, 1, 1, 0, 500), +(5701, 7110300, 1322020, 1, 1, 0, 700), +(5702, 7110300, 1002273, 1, 1, 0, 1500), +(5703, 7110300, 1002339, 1, 1, 0, 1500), +(5704, 7110300, 1051066, 1, 1, 0, 700), +(5705, 7110300, 1041105, 1, 1, 0, 800), +(5706, 7110300, 1061104, 1, 1, 0, 800), +(5707, 7110300, 4000362, 1, 1, 0, 600000), +(5708, 7110300, 1082204, 1, 1, 0, 1000), +(5709, 7110300, 2330003, 1, 1, 0, 500), +(5710, 7110300, 2040026, 1, 1, 0, 300), +(5711, 7110300, 2040319, 1, 1, 0, 300), +(5712, 7110300, 4130009, 1, 1, 0, 6000), +(5713, 7110300, 4130015, 1, 1, 0, 6000), +(5714, 7110301, 2000006, 1, 1, 0, 20000), +(5715, 7110301, 2000004, 1, 1, 0, 20000), +(5716, 7110301, 4010004, 1, 1, 0, 9000), +(5717, 7110301, 4020006, 1, 1, 0, 9000), +(5718, 7110301, 4004003, 1, 1, 0, 10000), +(5719, 7110301, 2044601, 1, 1, 0, 300), +(5720, 7110301, 1051044, 1, 1, 0, 700), +(5721, 7110301, 1002029, 1, 1, 0, 1500), +(5722, 7110301, 1002248, 1, 1, 0, 1500), +(5723, 7110301, 1051041, 1, 1, 0, 700), +(5724, 7110301, 1072147, 1, 1, 0, 800), +(5725, 7110301, 1072150, 1, 1, 0, 800), +(5726, 7110301, 1072145, 1, 1, 0, 800), +(5727, 7110301, 1051053, 1, 1, 0, 700), +(5728, 7110301, 1002094, 1, 1, 0, 1500), +(5729, 7110301, 1002253, 1, 1, 0, 1500), +(5730, 7110301, 1051062, 1, 1, 0, 700), +(5731, 7110301, 1040105, 1, 1, 0, 800), +(5732, 7110301, 1060093, 1, 1, 0, 800), +(5733, 7110301, 1050063, 1, 1, 0, 700), +(5734, 7110301, 1402012, 1, 1, 0, 700), +(5735, 7110301, 1040108, 1, 1, 0, 800), +(5736, 7110301, 1060097, 1, 1, 0, 800), +(5737, 7110301, 1072210, 1, 1, 0, 800), +(5738, 7110301, 1002275, 1, 1, 0, 1500), +(5739, 7110301, 1072177, 1, 1, 0, 800), +(5740, 7110301, 4000361, 1, 1, 0, 600000), +(5741, 7110301, 1482010, 1, 1, 0, 500), +(5742, 7110301, 2044801, 1, 1, 0, 300), +(5743, 7110301, 2040025, 1, 1, 0, 300), +(5744, 7110301, 2040621, 1, 1, 0, 300), +(5745, 7110301, 2040933, 1, 1, 0, 300), +(5746, 7110301, 4130004, 1, 1, 0, 6000), +(5747, 7110301, 4130005, 1, 1, 0, 6000), +(5748, 7110301, 4130007, 1, 1, 0, 6000), +(5749, 7130000, 4000074, 1, 1, 0, 600000), +(5750, 7130000, 2050004, 1, 1, 0, 50000), +(5751, 7130000, 2000006, 1, 1, 0, 20000), +(5752, 7130000, 2000004, 1, 1, 0, 20000), +(5753, 7130000, 4010004, 1, 1, 0, 9000), +(5754, 7130000, 4020006, 1, 1, 0, 9000), +(5755, 7130000, 4006001, 1, 1, 0, 10000), +(5756, 7130000, 4004003, 1, 1, 0, 10000), +(5757, 7130000, 2044601, 1, 1, 0, 300), +(5758, 7130000, 1051044, 1, 1, 0, 700), +(5759, 7130000, 1002029, 1, 1, 0, 1500), +(5760, 7130000, 1002248, 1, 1, 0, 1500), +(5761, 7130000, 1051041, 1, 1, 0, 700), +(5762, 7130000, 1072147, 1, 1, 0, 800), +(5763, 7130000, 1072150, 1, 1, 0, 800), +(5764, 7130000, 1072145, 1, 1, 0, 800), +(5765, 7130000, 1051053, 1, 1, 0, 700), +(5766, 7130000, 1002094, 1, 1, 0, 1500), +(5767, 7130000, 1002253, 1, 1, 0, 1500), +(5768, 7130000, 1051062, 1, 1, 0, 700), +(5769, 7130000, 1040105, 1, 1, 0, 800), +(5770, 7130000, 1060093, 1, 1, 0, 800), +(5771, 7130000, 1050063, 1, 1, 0, 700), +(5772, 7130000, 1402012, 1, 1, 0, 700), +(5773, 7130000, 1040108, 1, 1, 0, 800), +(5774, 7130000, 1060097, 1, 1, 0, 800), +(5775, 7130000, 1072210, 1, 1, 0, 800), +(5776, 7130000, 1002275, 1, 1, 0, 1500), +(5777, 7130000, 1072177, 1, 1, 0, 800), +(5778, 7130000, 4161021, 1, 1, 0, 6000), +(5779, 7130000, 1072312, 1, 1, 0, 800), +(5780, 7130000, 2044901, 1, 1, 0, 300), +(5781, 7130000, 2040419, 1, 1, 0, 300), +(5782, 7130000, 2040427, 1, 1, 0, 300), +(5783, 7130000, 4130008, 1, 1, 0, 6000), +(5784, 7130000, 4130010, 1, 1, 0, 6000), +(5785, 7130000, 4130011, 1, 1, 0, 6000), +(5786, 7130001, 4000079, 1, 1, 0, 600000), +(5787, 7130001, 2050000, 1, 1, 0, 50000), +(5788, 7130001, 2000006, 1, 1, 0, 20000), +(5789, 7130001, 2000004, 1, 1, 0, 20000), +(5790, 7130001, 4020007, 1, 1, 0, 9000), +(5791, 7130001, 4010004, 1, 1, 0, 9000), +(5792, 7130001, 2044301, 1, 1, 0, 300), +(5793, 7130001, 2041021, 1, 1, 0, 300), +(5794, 7130001, 1312009, 1, 1, 0, 700), +(5795, 7130001, 1332015, 1, 1, 0, 500), +(5796, 7130001, 1402011, 1, 1, 0, 700), +(5797, 7130001, 1002246, 1, 1, 0, 1500), +(5798, 7130001, 1032014, 1, 1, 0, 1000), +(5799, 7130001, 1041095, 1, 1, 0, 800), +(5800, 7130001, 1061094, 1, 1, 0, 800), +(5801, 7130001, 1072146, 1, 1, 0, 800), +(5802, 7130001, 1051054, 1, 1, 0, 700), +(5803, 7130001, 1372015, 1, 1, 0, 700), +(5804, 7130001, 1050070, 1, 1, 0, 700), +(5805, 7130001, 1050069, 1, 1, 0, 700), +(5806, 7130001, 1072165, 1, 1, 0, 800), +(5807, 7130001, 1082105, 1, 1, 0, 1000), +(5808, 7130001, 1082108, 1, 1, 0, 1000), +(5809, 7130001, 1041102, 1, 1, 0, 800), +(5810, 7130001, 1061101, 1, 1, 0, 800), +(5811, 7130001, 1002095, 1, 1, 0, 1500), +(5812, 7130001, 1032016, 1, 1, 0, 1000), +(5813, 7130001, 1372016, 1, 1, 0, 700), +(5814, 7130001, 1492009, 1, 1, 0, 500), +(5815, 7130001, 2040618, 1, 1, 0, 300), +(5816, 7130001, 4130002, 1, 1, 0, 6000), +(5817, 7130001, 4130003, 1, 1, 0, 6000), +(5818, 7130002, 4000236, 1, 1, 0, 600000), +(5819, 7130002, 2000006, 1, 1, 0, 20000), +(5820, 7130002, 2000004, 1, 1, 0, 20000), +(5821, 7130002, 4010000, 1, 1, 0, 9000), +(5822, 7130002, 4020001, 1, 1, 0, 9000), +(5823, 7130002, 2040902, 1, 1, 0, 300), +(5824, 7130002, 2040801, 1, 1, 0, 300), +(5825, 7130002, 4006000, 1, 1, 0, 10000), +(5826, 7130002, 4004001, 1, 1, 0, 10000), +(5827, 7130002, 1040103, 1, 1, 0, 800), +(5828, 7130002, 1060091, 1, 1, 0, 800), +(5829, 7130002, 1082100, 1, 1, 0, 1000), +(5830, 7130002, 1072184, 1, 1, 0, 800), +(5831, 7130002, 1002285, 1, 1, 0, 1500), +(5832, 7130002, 1302012, 1, 1, 0, 700), +(5833, 7130002, 1332019, 1, 1, 0, 500), +(5834, 7130002, 1382007, 1, 1, 0, 700), +(5835, 7130002, 1092011, 1, 1, 0, 700), +(5836, 7130002, 1002640, 1, 1, 0, 1500), +(5837, 7130002, 2330003, 1, 1, 0, 500), +(5838, 7130002, 2040625, 1, 1, 0, 300), +(5839, 7130002, 2044014, 1, 1, 0, 300), +(5840, 7130002, 4130000, 1, 1, 0, 6000), +(5841, 7130002, 4130005, 1, 1, 0, 6000), +(5842, 7130003, 4000237, 1, 1, 0, 600000), +(5843, 7130003, 2000006, 1, 1, 0, 20000), +(5844, 7130003, 2000004, 1, 1, 0, 20000), +(5845, 7130003, 4010003, 1, 1, 0, 9000), +(5846, 7130003, 4020003, 1, 1, 0, 9000), +(5847, 7130003, 2044101, 1, 1, 0, 300), +(5848, 7130003, 2041002, 1, 1, 0, 300), +(5849, 7130003, 4006000, 1, 1, 0, 10000), +(5850, 7130003, 4004003, 1, 1, 0, 10000), +(5851, 7130003, 2070005, 1, 1, 0, 400), +(5852, 7130003, 1072156, 1, 1, 0, 800), +(5853, 7130003, 1002253, 1, 1, 0, 1500), +(5854, 7130003, 1051063, 1, 1, 0, 700), +(5855, 7130003, 1082096, 1, 1, 0, 1000), +(5856, 7130003, 1092016, 1, 1, 0, 700), +(5857, 7130003, 1432007, 1, 1, 0, 500), +(5858, 7130003, 1372015, 1, 1, 0, 700), +(5859, 7130003, 1412008, 1, 1, 0, 700), +(5860, 7130003, 1002640, 1, 1, 0, 1500), +(5861, 7130003, 2040423, 1, 1, 0, 300), +(5862, 7130003, 4130001, 1, 1, 0, 6000), +(5863, 7130003, 4130010, 1, 1, 0, 6000), +(5864, 7130003, 4130013, 1, 1, 0, 6000), +(5865, 7130004, 4000231, 1, 1, 0, 600000), +(5866, 7130004, 2000006, 1, 1, 0, 20000), +(5867, 7130004, 2000004, 1, 1, 0, 20000), +(5868, 7130004, 4010004, 1, 1, 0, 9000), +(5869, 7130004, 4020004, 1, 1, 0, 9000), +(5870, 7130004, 2041008, 1, 1, 0, 300), +(5871, 7130004, 2044401, 1, 1, 0, 300), +(5872, 7130004, 4006001, 1, 1, 0, 10000), +(5873, 7130004, 4004004, 1, 1, 0, 10000), +(5874, 7130004, 1002338, 1, 1, 0, 1500), +(5875, 7130004, 1050074, 1, 1, 0, 700), +(5876, 7130004, 1082107, 1, 1, 0, 1000), +(5877, 7130004, 1072161, 1, 1, 0, 800), +(5878, 7130004, 1102029, 1, 1, 0, 1000), +(5879, 7130004, 1452010, 1, 1, 0, 500), +(5880, 7130004, 1402012, 1, 1, 0, 700), +(5881, 7130004, 1322028, 1, 1, 0, 700), +(5882, 7130004, 1032022, 1, 1, 0, 1000), +(5883, 7130004, 1072312, 1, 1, 0, 800), +(5884, 7130004, 2330003, 1, 1, 0, 500), +(5885, 7130010, 4000147, 1, 1, 0, 600000), +(5886, 7130010, 2050004, 1, 1, 0, 50000), +(5887, 7130010, 2000006, 1, 1, 0, 20000), +(5888, 7130010, 2000002, 1, 1, 0, 20000), +(5889, 7130010, 2002005, 1, 1, 0, 20000), +(5890, 7130010, 2020015, 1, 1, 0, 20000), +(5891, 7130010, 4020008, 1, 1, 0, 9000), +(5892, 7130010, 4020005, 1, 1, 0, 9000), +(5893, 7130010, 4004002, 1, 1, 0, 10000), +(5894, 7130010, 4006001, 1, 1, 0, 10000), +(5895, 7130010, 2040601, 1, 1, 0, 300), +(5896, 7130010, 2041016, 1, 1, 0, 300), +(5897, 7130010, 1302016, 1, 1, 0, 700), +(5898, 7130010, 1051065, 1, 1, 0, 700), +(5899, 7130010, 1072154, 1, 1, 0, 800), +(5900, 7130010, 1041101, 1, 1, 0, 800), +(5901, 7130010, 1061100, 1, 1, 0, 800), +(5902, 7130010, 1452010, 1, 1, 0, 500), +(5903, 7130010, 1102030, 1, 1, 0, 1000), +(5904, 7130010, 1050073, 1, 1, 0, 700), +(5905, 7130010, 1412009, 1, 1, 0, 700), +(5906, 7130010, 1332022, 1, 1, 0, 500), +(5907, 7130010, 1082123, 1, 1, 0, 1000), +(5908, 7130010, 1082118, 1, 1, 0, 1000), +(5909, 7130010, 1051078, 1, 1, 0, 700), +(5910, 7130010, 1072184, 1, 1, 0, 800), +(5911, 7130010, 1002328, 1, 1, 0, 1500), +(5912, 7130010, 1051077, 1, 1, 0, 700), +(5913, 7130010, 1050088, 1, 1, 0, 700), +(5914, 7130010, 1072196, 1, 1, 0, 800), +(5915, 7130010, 1072209, 1, 1, 0, 800), +(5916, 7130010, 1082142, 1, 1, 0, 1000), +(5917, 7130010, 1372016, 1, 1, 0, 700), +(5918, 7130010, 1082207, 1, 1, 0, 1000), +(5919, 7130010, 2040025, 1, 1, 0, 300), +(5920, 7130010, 2040418, 1, 1, 0, 300), +(5921, 7130010, 2040923, 1, 1, 0, 300), +(5922, 7130010, 2040928, 1, 1, 0, 300), +(5923, 7130010, 2044412, 1, 1, 0, 300), +(5924, 7130010, 4130002, 1, 1, 0, 6000), +(5925, 7130010, 4130004, 1, 1, 0, 6000), +(5926, 7130010, 4130006, 1, 1, 0, 6000), +(5927, 7130020, 4000179, 1, 1, 0, 600000), +(5928, 7130020, 2050004, 1, 1, 0, 50000), +(5929, 7130020, 2000006, 1, 1, 0, 20000), +(5930, 7130020, 2000002, 1, 1, 0, 20000), +(5931, 7130020, 2002003, 1, 1, 0, 20000), +(5932, 7130020, 2020015, 1, 1, 0, 20000), +(5933, 7130020, 2022040, 1, 1, 0, 20000), +(5934, 7130020, 1072164, 1, 1, 0, 800), +(5935, 7130020, 4020008, 1, 1, 0, 9000), +(5936, 7130020, 4010001, 1, 1, 0, 9000), +(5937, 7130020, 4004003, 1, 1, 0, 10000), +(5938, 7130020, 4006001, 1, 1, 0, 10000), +(5939, 7130020, 1002329, 1, 1, 0, 1500), +(5940, 7130020, 2044701, 1, 1, 0, 300), +(5941, 7130020, 1002287, 1, 1, 0, 1500), +(5942, 7130020, 1041101, 1, 1, 0, 800), +(5943, 7130020, 1061100, 1, 1, 0, 800), +(5944, 7130020, 1051095, 1, 1, 0, 700), +(5945, 7130020, 1051078, 1, 1, 0, 700), +(5946, 7130020, 1072152, 1, 1, 0, 800), +(5947, 7130020, 2048001, 1, 1, 0, 300), +(5948, 7130020, 1422012, 1, 1, 0, 700), +(5949, 7130020, 1002323, 1, 1, 0, 1500), +(5950, 7130020, 1102032, 1, 1, 0, 1000), +(5951, 7130020, 1072194, 1, 1, 0, 800), +(5952, 7130020, 1102035, 1, 1, 0, 1000), +(5953, 7130020, 1072312, 1, 1, 0, 800), +(5954, 7130020, 2044901, 1, 1, 0, 300), +(5955, 7130020, 2040324, 1, 1, 0, 300), +(5956, 7130020, 2040421, 1, 1, 0, 300), +(5957, 7130020, 4130010, 1, 1, 0, 6000), +(5958, 7130020, 4130013, 1, 1, 0, 6000), +(5959, 7130100, 2000006, 1, 1, 0, 20000), +(5960, 7130100, 2000004, 1, 1, 0, 20000), +(5961, 7130100, 4010006, 1, 1, 0, 9000), +(5962, 7130100, 4000028, 1, 1, 0, 600000), +(5963, 7130100, 2070005, 1, 1, 0, 400), +(5964, 7130100, 2043101, 1, 1, 0, 300), +(5965, 7130100, 4006000, 1, 1, 0, 10000), +(5966, 7130100, 1041093, 1, 1, 0, 800), +(5967, 7130100, 1061092, 1, 1, 0, 800), +(5968, 7130100, 1040100, 1, 1, 0, 800), +(5969, 7130100, 1060089, 1, 1, 0, 800), +(5970, 7130100, 1050067, 1, 1, 0, 700), +(5971, 7130100, 1051055, 1, 1, 0, 700), +(5972, 7130100, 1002095, 1, 1, 0, 1500), +(5973, 7130100, 1002287, 1, 1, 0, 1500), +(5974, 7130100, 1002283, 1, 1, 0, 1500), +(5975, 7130100, 1051064, 1, 1, 0, 700), +(5976, 7130100, 1072163, 1, 1, 0, 800), +(5977, 7130100, 1322019, 1, 1, 0, 700), +(5978, 7130100, 1452009, 1, 1, 0, 500), +(5979, 7130100, 1472026, 1, 1, 0, 500), +(5980, 7130100, 1102027, 1, 1, 0, 1000), +(5981, 7130100, 1082115, 1, 1, 0, 1000), +(5982, 7130100, 1072184, 1, 1, 0, 800), +(5983, 7130100, 1002272, 1, 1, 0, 1500), +(5984, 7130100, 1082118, 1, 1, 0, 1000), +(5985, 7130100, 1002637, 1, 1, 0, 1500), +(5986, 7130100, 2040421, 1, 1, 0, 300), +(5987, 7130100, 2049000, 1, 1, 0, 150), +(5988, 7130100, 4130008, 1, 1, 0, 6000), +(5989, 7130100, 4130014, 1, 1, 0, 6000), +(5990, 7130101, 2000005, 1, 1, 0, 20000), +(5991, 7130101, 4020008, 1, 1, 0, 9000), +(5992, 7130101, 4010003, 1, 1, 0, 9000), +(5993, 7130101, 2044101, 1, 1, 0, 300), +(5994, 7130101, 4000046, 1, 1, 0, 600000), +(5995, 7130101, 4006001, 1, 1, 0, 10000), +(5996, 7130101, 1051047, 1, 1, 0, 700), +(5997, 7130101, 1041091, 1, 1, 0, 800), +(5998, 7130101, 1061090, 1, 1, 0, 800), +(5999, 7130101, 1412008, 1, 1, 0, 700), +(6000, 7130101, 1452011, 1, 1, 0, 500), +(6001, 7130101, 1422010, 1, 1, 0, 700), +(6002, 7130101, 1082100, 1, 1, 0, 1000), +(6003, 7130101, 1072167, 1, 1, 0, 800), +(6004, 7130101, 1041103, 1, 1, 0, 800), +(6005, 7130101, 1061102, 1, 1, 0, 800), +(6006, 7130101, 1092016, 1, 1, 0, 700), +(6007, 7130101, 1051063, 1, 1, 0, 700), +(6008, 7130101, 1002284, 1, 1, 0, 1500), +(6009, 7130101, 1082104, 1, 1, 0, 1000), +(6010, 7130101, 1102028, 1, 1, 0, 1000), +(6011, 7130101, 1382010, 1, 1, 0, 700), +(6012, 7130101, 1051056, 1, 1, 0, 700), +(6013, 7130101, 1002327, 1, 1, 0, 1500), +(6014, 7130101, 1050077, 1, 1, 0, 700), +(6015, 7130101, 1072211, 1, 1, 0, 800), +(6016, 7130101, 1482009, 1, 1, 0, 500), +(6017, 7130101, 2044114, 1, 1, 0, 300), +(6018, 7130101, 4130008, 1, 1, 0, 6000), +(6019, 7130101, 4130012, 1, 1, 0, 6000), +(6020, 7130101, 4130014, 1, 1, 0, 6000), +(6021, 7130102, 4000050, 1, 1, 0, 600000), +(6022, 7130102, 2041020, 1, 1, 0, 300), +(6023, 7130102, 2000006, 1, 1, 0, 20000), +(6024, 7130102, 2000004, 1, 1, 0, 20000), +(6025, 7130102, 4020008, 1, 1, 0, 9000), +(6026, 7130102, 4010001, 1, 1, 0, 9000), +(6027, 7130102, 2043801, 1, 1, 0, 300), +(6028, 7130102, 2044702, 1, 1, 0, 300), +(6029, 7130102, 2070010, 1, 1, 0, 500), +(6030, 7130102, 4004002, 1, 1, 0, 10000), +(6031, 7130102, 2041005, 1, 1, 0, 300), +(6032, 7130102, 1002185, 1, 1, 0, 1500), +(6033, 7130102, 1041081, 1, 1, 0, 800), +(6034, 7130102, 1061080, 1, 1, 0, 800), +(6035, 7130102, 1050047, 1, 1, 0, 700), +(6036, 7130102, 1002028, 1, 1, 0, 1500), +(6037, 7130102, 1072124, 1, 1, 0, 800), +(6038, 7130102, 1072128, 1, 1, 0, 800), +(6039, 7130102, 1082081, 1, 1, 0, 1000), +(6040, 7130102, 1082010, 1, 1, 0, 1000), +(6041, 7130102, 1432006, 1, 1, 0, 500), +(6042, 7130102, 1472022, 1, 1, 0, 500), +(6043, 7130102, 1082091, 1, 1, 0, 1000), +(6044, 7130102, 1442010, 1, 1, 0, 700), +(6045, 7130102, 1102023, 1, 1, 0, 1000), +(6046, 7130102, 1072137, 1, 1, 0, 800), +(6047, 7130102, 1050068, 1, 1, 0, 700), +(6048, 7130102, 1002030, 1, 1, 0, 1500), +(6049, 7130102, 1002282, 1, 1, 0, 1500), +(6050, 7130102, 1050063, 1, 1, 0, 700), +(6051, 7130102, 1492008, 1, 1, 0, 500), +(6052, 7130102, 2044901, 1, 1, 0, 300), +(6053, 7130102, 2040625, 1, 1, 0, 300), +(6054, 7130102, 4130010, 1, 1, 0, 6000), +(6055, 7130102, 4130017, 1, 1, 0, 6000), +(6056, 7130102, 4000049, 1, 1, 0, 600000), +(6057, 7130102, 4130003, 1, 1, 0, 6000), +(6058, 7130102, 4003005, 1, 1, 0, 200000), +(6059, 7130102, 2041023, 1, 1, 0, 300), +(6060, 7130102, 4000021, 1, 1, 0, 50000), +(6061, 7130102, 4020005, 1, 1, 0, 9000), +(6062, 7130102, 4010005, 1, 1, 0, 9000), +(6063, 7130102, 1050069, 1, 1, 0, 700), +(6064, 7130102, 1051054, 1, 1, 0, 700), +(6065, 7130102, 2044101, 1, 1, 0, 300), +(6066, 7130102, 1402012, 1, 1, 0, 700), +(6067, 7130102, 1422009, 1, 1, 0, 700), +(6068, 7130102, 2070005, 1, 1, 0, 400), +(6069, 7130102, 1050074, 1, 1, 0, 700), +(6070, 7130102, 1051058, 1, 1, 0, 700), +(6071, 7130102, 1032011, 1, 1, 0, 1000), +(6072, 7130102, 1092006, 1, 1, 0, 700), +(6073, 7130102, 1332015, 1, 1, 0, 500), +(6074, 7130102, 1002084, 1, 1, 0, 1500), +(6075, 7130102, 4004000, 1, 1, 0, 10000), +(6076, 7130102, 1452011, 1, 1, 0, 500), +(6077, 7130102, 2040025, 1, 1, 0, 300), +(6078, 7130102, 2043017, 1, 1, 0, 300), +(6079, 7130102, 2043210, 1, 1, 0, 300), +(6080, 7130102, 2044214, 1, 1, 0, 300), +(6081, 7130103, 4000208, 1, 1, 0, 600000), +(6082, 7130103, 2002003, 1, 1, 0, 20000), +(6083, 7130103, 2002004, 1, 1, 0, 20000), +(6084, 7130103, 2000006, 1, 1, 0, 20000), +(6085, 7130103, 2000004, 1, 1, 0, 20000), +(6086, 7130103, 4020007, 1, 1, 0, 9000), +(6087, 7130103, 4020002, 1, 1, 0, 9000), +(6088, 7130103, 4020001, 1, 1, 0, 9000), +(6089, 7130103, 4006001, 1, 1, 0, 10000), +(6090, 7130103, 2040301, 1, 1, 0, 300), +(6091, 7130103, 2040516, 1, 1, 0, 300), +(6092, 7130103, 1040092, 1, 1, 0, 800), +(6093, 7130103, 1060081, 1, 1, 0, 800), +(6094, 7130103, 1041092, 1, 1, 0, 800), +(6095, 7130103, 1061091, 1, 1, 0, 800), +(6096, 7130103, 1041095, 1, 1, 0, 800), +(6097, 7130103, 1061094, 1, 1, 0, 800), +(6098, 7130103, 1050061, 1, 1, 0, 700), +(6099, 7130103, 1051063, 1, 1, 0, 700), +(6100, 7130103, 1051054, 1, 1, 0, 700), +(6101, 7130103, 1092023, 1, 1, 0, 700), +(6102, 7130103, 1072182, 1, 1, 0, 800), +(6103, 7130103, 1072172, 1, 1, 0, 800), +(6104, 7130103, 1072210, 1, 1, 0, 800), +(6105, 7130103, 1072177, 1, 1, 0, 800), +(6106, 7130103, 1082207, 1, 1, 0, 1000), +(6107, 7130103, 2040418, 1, 1, 0, 300), +(6108, 7130103, 4130001, 1, 1, 0, 6000), +(6109, 7130103, 4130004, 1, 1, 0, 6000), +(6110, 7130103, 4130012, 1, 1, 0, 6000), +(6111, 7130104, 2000002, 1, 1, 0, 20000), +(6112, 7130104, 2000006, 1, 1, 0, 20000), +(6113, 7130104, 2000004, 1, 1, 0, 20000), +(6114, 7130104, 4010001, 1, 1, 0, 9000), +(6115, 7130104, 4020000, 1, 1, 0, 9000), +(6116, 7130104, 4006001, 1, 1, 0, 10000), +(6117, 7130104, 4004000, 1, 1, 0, 10000), +(6118, 7130104, 1002095, 1, 1, 0, 1500), +(6119, 7130104, 1051054, 1, 1, 0, 700), +(6120, 7130104, 1082110, 1, 1, 0, 1000), +(6121, 7130104, 1072163, 1, 1, 0, 800), +(6122, 7130104, 1472028, 1, 1, 0, 500), +(6123, 7130104, 1032020, 1, 1, 0, 1000), +(6124, 7130104, 1102023, 1, 1, 0, 1000), +(6125, 7130104, 2040002, 1, 1, 0, 300), +(6126, 7130104, 2040705, 1, 1, 0, 300), +(6127, 7130104, 1332018, 1, 1, 0, 500), +(6128, 7130104, 1422010, 1, 1, 0, 700), +(6129, 7130104, 4000297, 1, 1, 0, 600000), +(6130, 7130104, 1082204, 1, 1, 0, 1000), +(6131, 7130104, 2040427, 1, 1, 0, 300), +(6132, 7130104, 2040824, 1, 1, 0, 300), +(6133, 7130104, 2049100, 1, 1, 0, 150), +(6134, 7130104, 4130000, 1, 1, 0, 6000), +(6135, 7130104, 4130017, 1, 1, 0, 6000), +(6136, 7130200, 4000053, 1, 1, 0, 600000), +(6137, 7130200, 2000006, 1, 1, 0, 20000), +(6138, 7130200, 4020001, 1, 1, 0, 9000), +(6139, 7130200, 4010003, 1, 1, 0, 9000), +(6140, 7130200, 2043701, 1, 1, 0, 300), +(6141, 7130200, 2044701, 1, 1, 0, 300), +(6142, 7130200, 4004000, 1, 1, 0, 10000), +(6143, 7130200, 4006000, 1, 1, 0, 10000), +(6144, 7130200, 2040302, 1, 1, 0, 300), +(6145, 7130200, 1050055, 1, 1, 0, 700), +(6146, 7130200, 1041094, 1, 1, 0, 800), +(6147, 7130200, 1061093, 1, 1, 0, 800), +(6148, 7130200, 1050069, 1, 1, 0, 700), +(6149, 7130200, 1040102, 1, 1, 0, 800), +(6150, 7130200, 1060090, 1, 1, 0, 800), +(6151, 7130200, 1082100, 1, 1, 0, 1000), +(6152, 7130200, 1041102, 1, 1, 0, 800), +(6153, 7130200, 1061101, 1, 1, 0, 800), +(6154, 7130200, 1002254, 1, 1, 0, 1500), +(6155, 7130200, 1002288, 1, 1, 0, 1500), +(6156, 7130200, 1092015, 1, 1, 0, 700), +(6157, 7130200, 1332018, 1, 1, 0, 500), +(6158, 7130200, 1402012, 1, 1, 0, 700), +(6159, 7130200, 1472029, 1, 1, 0, 500), +(6160, 7130200, 1322020, 1, 1, 0, 700), +(6161, 7130200, 1002273, 1, 1, 0, 1500), +(6162, 7130200, 1002339, 1, 1, 0, 1500), +(6163, 7130200, 1051066, 1, 1, 0, 700), +(6164, 7130200, 1041105, 1, 1, 0, 800), +(6165, 7130200, 1061104, 1, 1, 0, 800), +(6166, 7130200, 1072309, 1, 1, 0, 800), +(6167, 7130200, 2040031, 1, 1, 0, 300), +(6168, 7130200, 4130006, 1, 1, 0, 6000), +(6169, 7130200, 4130009, 1, 1, 0, 6000), +(6170, 7130200, 4130014, 1, 1, 0, 6000), +(6171, 7130300, 4000148, 1, 1, 0, 600000), +(6172, 7130300, 2000005, 1, 1, 0, 20000), +(6173, 7130300, 2000004, 1, 1, 0, 20000), +(6174, 7130300, 2002004, 1, 1, 0, 20000), +(6175, 7130300, 4006001, 1, 1, 0, 10000), +(6176, 7130300, 4010006, 1, 1, 0, 9000), +(6177, 7130300, 4020006, 1, 1, 0, 9000), +(6178, 7130300, 2044301, 1, 1, 0, 300), +(6179, 7130300, 2041009, 1, 1, 0, 300), +(6180, 7130300, 1002284, 1, 1, 0, 1500), +(6181, 7130300, 1002253, 1, 1, 0, 1500), +(6182, 7130300, 1072155, 1, 1, 0, 800), +(6183, 7130300, 1072167, 1, 1, 0, 800), +(6184, 7130300, 1050074, 1, 1, 0, 700), +(6185, 7130300, 1302018, 1, 1, 0, 700), +(6186, 7130300, 1002274, 1, 1, 0, 1500), +(6187, 7130300, 1002276, 1, 1, 0, 1500), +(6188, 7130300, 1041107, 1, 1, 0, 800), +(6189, 7130300, 1061106, 1, 1, 0, 800), +(6190, 7130300, 1050080, 1, 1, 0, 700), +(6191, 7130300, 1051068, 1, 1, 0, 700), +(6192, 7130300, 1072212, 1, 1, 0, 800), +(6193, 7130300, 1082110, 1, 1, 0, 1000), +(6194, 7130300, 1041121, 1, 1, 0, 800), +(6195, 7130300, 1061120, 1, 1, 0, 800), +(6196, 7130300, 1072203, 1, 1, 0, 800), +(6197, 7130300, 1072206, 1, 1, 0, 800), +(6198, 7130300, 1082143, 1, 1, 0, 1000), +(6199, 7130300, 1072312, 1, 1, 0, 800), +(6200, 7130300, 2040031, 1, 1, 0, 300), +(6201, 7130300, 2040823, 1, 1, 0, 300), +(6202, 7130300, 2043210, 1, 1, 0, 300), +(6203, 7130300, 4130000, 1, 1, 0, 6000), +(6204, 7130400, 4010001, 1, 1, 0, 90000), +(6205, 7130400, 4020001, 1, 1, 0, 90000), +(6206, 7130400, 4004003, 1, 1, 0, 100000), +(6207, 7130400, 4006001, 1, 1, 0, 100000), +(6208, 7130400, 2000006, 1, 1, 0, 999999), +(6209, 7130400, 2000004, 1, 1, 0, 999999), +(6210, 7130400, 2002003, 1, 1, 0, 200000), +(6211, 7130400, 2040504, 1, 1, 0, 3000), +(6212, 7130400, 1050058, 1, 1, 0, 7000), +(6213, 7130400, 1041094, 1, 1, 0, 8000), +(6214, 7130400, 1061093, 1, 1, 0, 8000), +(6215, 7130400, 2040302, 1, 1, 0, 3000), +(6216, 7130400, 1092016, 1, 1, 0, 7000), +(6217, 7130400, 1102021, 1, 1, 0, 10000), +(6218, 7130400, 1462009, 1, 1, 0, 5000), +(6219, 7130400, 1472024, 1, 1, 0, 5000), +(6220, 7130400, 1040102, 1, 1, 0, 8000), +(6221, 7130400, 1060090, 1, 1, 0, 8000), +(6222, 7130400, 1072309, 1, 1, 0, 8000), +(6223, 7130400, 4130002, 1, 1, 0, 60000), +(6224, 7130400, 4130005, 1, 1, 0, 60000), +(6225, 7130400, 4130015, 1, 1, 0, 60000), +(6226, 7130401, 4010004, 1, 1, 0, 90000), +(6227, 7130401, 4020000, 1, 1, 0, 90000), +(6228, 7130401, 4004002, 1, 1, 0, 100000), +(6229, 7130401, 4006001, 1, 1, 0, 100000), +(6230, 7130401, 2000006, 1, 1, 0, 999999), +(6231, 7130401, 2000004, 1, 1, 0, 999999), +(6232, 7130401, 2002000, 1, 1, 0, 200000), +(6233, 7130401, 2040601, 1, 1, 0, 3000), +(6234, 7130401, 2040701, 1, 1, 0, 3000), +(6235, 7130401, 1051041, 1, 1, 0, 7000), +(6236, 7130401, 1442010, 1, 1, 0, 7000), +(6237, 7130401, 1072158, 1, 1, 0, 8000), +(6238, 7130401, 1072163, 1, 1, 0, 8000), +(6239, 7130401, 1412008, 1, 1, 0, 7000), +(6240, 7130401, 1040106, 1, 1, 0, 8000), +(6241, 7130401, 1060094, 1, 1, 0, 8000), +(6242, 7130401, 1422009, 1, 1, 0, 7000), +(6243, 7130401, 1032022, 1, 1, 0, 10000), +(6244, 7130401, 1452010, 1, 1, 0, 5000), +(6245, 7130401, 2070007, 1, 1, 0, 2000), +(6246, 7130401, 1482009, 1, 1, 0, 5000), +(6247, 7130401, 2040620, 1, 1, 0, 3000), +(6248, 7130401, 2044012, 1, 1, 0, 3000), +(6249, 7130401, 4130006, 1, 1, 0, 60000), +(6250, 7130401, 4130015, 1, 1, 0, 60000), +(6251, 7130402, 4010006, 1, 1, 0, 90000), +(6252, 7130402, 4020006, 1, 1, 0, 90000), +(6253, 7130402, 4004001, 1, 1, 0, 100000), +(6254, 7130402, 4006000, 1, 1, 0, 100000), +(6255, 7130402, 2000006, 1, 1, 0, 999999), +(6256, 7130402, 2000004, 1, 1, 0, 999999), +(6257, 7130402, 2002006, 1, 1, 0, 200000), +(6258, 7130402, 2041007, 1, 1, 0, 3000), +(6259, 7130402, 1032019, 1, 1, 0, 10000), +(6260, 7130402, 1082090, 1, 1, 0, 10000), +(6261, 7130402, 1041092, 1, 1, 0, 8000), +(6262, 7130402, 1061091, 1, 1, 0, 8000), +(6263, 7130402, 2043001, 1, 1, 0, 3000), +(6264, 7130402, 1032022, 1, 1, 0, 10000), +(6265, 7130402, 1402012, 1, 1, 0, 7000), +(6266, 7130402, 1072155, 1, 1, 0, 8000), +(6267, 7130402, 1422005, 1, 1, 0, 7000), +(6268, 7130402, 1041101, 1, 1, 0, 8000), +(6269, 7130402, 1061100, 1, 1, 0, 8000), +(6270, 7130402, 2070007, 1, 1, 0, 2000), +(6271, 7130402, 1002637, 1, 1, 0, 15000), +(6272, 7130402, 2330003, 1, 1, 0, 5000), +(6273, 7130402, 2040024, 1, 1, 0, 3000), +(6274, 7130402, 2040534, 1, 1, 0, 3000), +(6275, 7130402, 2043112, 1, 1, 0, 3000), +(6276, 7130402, 4130017, 1, 1, 0, 60000), +(6277, 7130500, 4000226, 1, 1, 0, 600000), +(6278, 7130500, 2000006, 1, 1, 0, 20000), +(6279, 7130500, 2000004, 1, 1, 0, 20000), +(6280, 7130500, 4010001, 1, 1, 0, 9000), +(6281, 7130500, 4020000, 1, 1, 0, 9000), +(6282, 7130500, 2040002, 1, 1, 0, 300), +(6283, 7130500, 2040705, 1, 1, 0, 300), +(6284, 7130500, 4006001, 1, 1, 0, 10000), +(6285, 7130500, 4004000, 1, 1, 0, 10000), +(6286, 7130500, 1002095, 1, 1, 0, 1500), +(6287, 7130500, 1051054, 1, 1, 0, 700), +(6288, 7130500, 1082110, 1, 1, 0, 1000), +(6289, 7130500, 1072163, 1, 1, 0, 800), +(6290, 7130500, 1332018, 1, 1, 0, 500), +(6291, 7130500, 1422010, 1, 1, 0, 700), +(6292, 7130500, 1472028, 1, 1, 0, 500), +(6293, 7130500, 1032020, 1, 1, 0, 1000), +(6294, 7130500, 1102023, 1, 1, 0, 1000), +(6295, 7130500, 4000227, 1, 1, 0, 600000), +(6296, 7130500, 4000228, 1, 1, 0, 600000), +(6297, 7130500, 1052122, 1, 1, 0, 700), +(6298, 7130500, 2040326, 1, 1, 0, 300), +(6299, 7130500, 2040623, 1, 1, 0, 300), +(6300, 7130500, 2040824, 1, 1, 0, 300), +(6301, 7130500, 4130007, 1, 1, 0, 6000), +(6302, 7130500, 4130011, 1, 1, 0, 6000), +(6303, 7130500, 4130015, 1, 1, 0, 6000), +(6304, 7130501, 4000229, 1, 1, 0, 600000), +(6305, 7130501, 2000006, 1, 1, 0, 20000), +(6306, 7130501, 2000004, 1, 1, 0, 20000), +(6307, 7130501, 4010002, 1, 1, 0, 9000), +(6308, 7130501, 4020002, 1, 1, 0, 9000), +(6309, 7130501, 2040505, 1, 1, 0, 300), +(6310, 7130501, 2043002, 1, 1, 0, 300), +(6311, 7130501, 4006001, 1, 1, 0, 10000), +(6312, 7130501, 4004002, 1, 1, 0, 10000), +(6313, 7130501, 1082105, 1, 1, 0, 1000), +(6314, 7130501, 1072178, 1, 1, 0, 800), +(6315, 7130501, 1002276, 1, 1, 0, 1500), +(6316, 7130501, 1041103, 1, 1, 0, 800), +(6317, 7130501, 1061102, 1, 1, 0, 800), +(6318, 7130501, 1472027, 1, 1, 0, 500), +(6319, 7130501, 1302018, 1, 1, 0, 700), +(6320, 7130501, 2070005, 1, 1, 0, 400), +(6321, 7130501, 1102027, 1, 1, 0, 1000), +(6322, 7130501, 1092016, 1, 1, 0, 700), +(6323, 7130501, 4000230, 1, 1, 0, 600000), +(6324, 7130501, 1052122, 1, 1, 0, 700), +(6325, 7130501, 2040321, 1, 1, 0, 300), +(6326, 7130501, 2040515, 1, 1, 0, 300), +(6327, 7130501, 2040625, 1, 1, 0, 300), +(6328, 7130501, 4130008, 1, 1, 0, 6000), +(6329, 7130501, 4130010, 1, 1, 0, 6000), +(6330, 7130600, 2000006, 1, 1, 0, 20000), +(6331, 7130600, 2000004, 1, 1, 0, 20000), +(6332, 7130600, 4010001, 1, 1, 0, 9000), +(6333, 7130600, 4010000, 1, 1, 0, 9000), +(6334, 7130600, 2044101, 1, 1, 0, 300), +(6335, 7130600, 2041008, 1, 1, 0, 300), +(6336, 7130600, 4006001, 1, 1, 0, 10000), +(6337, 7130600, 4004002, 1, 1, 0, 10000), +(6338, 7130600, 1051062, 1, 1, 0, 700), +(6339, 7130600, 1002287, 1, 1, 0, 1500), +(6340, 7130600, 1082119, 1, 1, 0, 1000), +(6341, 7130600, 1072211, 1, 1, 0, 800), +(6342, 7130600, 1332019, 1, 1, 0, 500), +(6343, 7130600, 1452009, 1, 1, 0, 500), +(6344, 7130600, 4000260, 1, 1, 0, 600000), +(6345, 7130600, 2040512, 1, 1, 0, 300), +(6346, 7130600, 2044010, 1, 1, 0, 300), +(6347, 7130600, 4130001, 1, 1, 0, 6000), +(6348, 7130600, 4130005, 1, 1, 0, 6000), +(6349, 7130600, 4130017, 1, 1, 0, 6000), +(6350, 7130601, 2000006, 1, 1, 0, 20000), +(6351, 7130601, 2000004, 1, 1, 0, 20000), +(6352, 7130601, 4020007, 1, 1, 0, 9000), +(6353, 7130601, 4020001, 1, 1, 0, 9000), +(6354, 7130601, 2044602, 1, 1, 0, 300), +(6355, 7130601, 2043701, 1, 1, 0, 300), +(6356, 7130601, 4006000, 1, 1, 0, 10000), +(6357, 7130601, 4004003, 1, 1, 0, 10000), +(6358, 7130601, 1040106, 1, 1, 0, 800), +(6359, 7130601, 1060094, 1, 1, 0, 800), +(6360, 7130601, 1002252, 1, 1, 0, 1500), +(6361, 7130601, 1082125, 1, 1, 0, 1000), +(6362, 7130601, 1072212, 1, 1, 0, 800), +(6363, 7130601, 1462009, 1, 1, 0, 500), +(6364, 7130601, 1322019, 1, 1, 0, 700), +(6365, 7130601, 4000261, 1, 1, 0, 600000), +(6366, 7130601, 1052125, 1, 1, 0, 700), +(6367, 7130601, 2044802, 1, 1, 0, 300), +(6368, 7130601, 2040927, 1, 1, 0, 300), +(6369, 7130601, 4130003, 1, 1, 0, 6000), +(6370, 7130601, 4130011, 1, 1, 0, 6000), +(6371, 7130601, 4130016, 1, 1, 0, 6000), +(6372, 7140000, 4000132, 1, 1, 0, 600000), +(6373, 7140000, 2000006, 1, 1, 0, 20000), +(6374, 7140000, 4004001, 1, 1, 0, 10000), +(6375, 7140000, 4020002, 1, 1, 0, 9000), +(6376, 7140000, 4010002, 1, 1, 0, 9000), +(6377, 7140000, 2041001, 1, 1, 0, 300), +(6378, 7140000, 2040502, 1, 1, 0, 300), +(6379, 7140000, 1040107, 1, 1, 0, 800), +(6380, 7140000, 1060095, 1, 1, 0, 800), +(6381, 7140000, 1002094, 1, 1, 0, 1500), +(6382, 7140000, 1002287, 1, 1, 0, 1500), +(6383, 7140000, 1040108, 1, 1, 0, 800), +(6384, 7140000, 1060097, 1, 1, 0, 800), +(6385, 7140000, 1050082, 1, 1, 0, 700), +(6386, 7140000, 1002273, 1, 1, 0, 1500), +(6387, 7140000, 1002277, 1, 1, 0, 1500), +(6388, 7140000, 1002338, 1, 1, 0, 1500), +(6389, 7140000, 1072182, 1, 1, 0, 800), +(6390, 7140000, 1082114, 1, 1, 0, 1000), +(6391, 7140000, 1092025, 1, 1, 0, 700), +(6392, 7140000, 1462011, 1, 1, 0, 500), +(6393, 7140000, 1432010, 1, 1, 0, 500), +(6394, 7140000, 1050089, 1, 1, 0, 700), +(6395, 7140000, 1072192, 1, 1, 0, 800), +(6396, 7140000, 1072207, 1, 1, 0, 800), +(6397, 7140000, 1082128, 1, 1, 0, 1000), +(6398, 7140000, 1002640, 1, 1, 0, 1500), +(6399, 7140000, 2040924, 1, 1, 0, 300), +(6400, 7140000, 2043015, 1, 1, 0, 300), +(6401, 7140000, 4130001, 1, 1, 0, 6000), +(6402, 7140000, 4130005, 1, 1, 0, 6000), +(6403, 7160000, 4000133, 1, 1, 0, 600000), +(6404, 7160000, 2000006, 1, 1, 0, 20000), +(6405, 7160000, 2000002, 1, 1, 0, 20000), +(6406, 7160000, 4020008, 1, 1, 0, 9000), +(6407, 7160000, 4010003, 1, 1, 0, 9000), +(6408, 7160000, 2044401, 1, 1, 0, 300), +(6409, 7160000, 4006001, 1, 1, 0, 10000), +(6410, 7160000, 4004000, 1, 1, 0, 10000), +(6411, 7160000, 4131007, 1, 1, 0, 6000), +(6412, 7160000, 2070005, 1, 1, 0, 400), +(6413, 7160000, 1050070, 1, 1, 0, 700), +(6414, 7160000, 1452011, 1, 1, 0, 500), +(6415, 7160000, 1082103, 1, 1, 0, 1000), +(6416, 7160000, 1040107, 1, 1, 0, 800), +(6417, 7160000, 1060095, 1, 1, 0, 800), +(6418, 7160000, 1051057, 1, 1, 0, 700), +(6419, 7160000, 1002330, 1, 1, 0, 1500), +(6420, 7160000, 1002272, 1, 1, 0, 1500), +(6421, 7160000, 1032016, 1, 1, 0, 1000), +(6422, 7160000, 1041105, 1, 1, 0, 800), +(6423, 7160000, 1061104, 1, 1, 0, 800), +(6424, 7160000, 1050075, 1, 1, 0, 700), +(6425, 7160000, 1051077, 1, 1, 0, 700), +(6426, 7160000, 1051066, 1, 1, 0, 700), +(6427, 7160000, 1072173, 1, 1, 0, 800), +(6428, 7160000, 1082116, 1, 1, 0, 1000), +(6429, 7160000, 1082109, 1, 1, 0, 1000), +(6430, 7160000, 1082121, 1, 1, 0, 1000), +(6431, 7160000, 1041115, 1, 1, 0, 800), +(6432, 7160000, 1061114, 1, 1, 0, 800), +(6433, 7160000, 1072197, 1, 1, 0, 800), +(6434, 7160000, 1082125, 1, 1, 0, 1000), +(6435, 7160000, 1082131, 1, 1, 0, 1000), +(6436, 7160000, 2330003, 1, 1, 0, 500), +(6437, 7160000, 1492010, 1, 1, 0, 500), +(6438, 7160000, 2040619, 1, 1, 0, 300), +(6439, 7160000, 4130003, 1, 1, 0, 6000), +(6440, 7160000, 4130007, 1, 1, 0, 6000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(6441, 7160000, 4130011, 1, 1, 0, 6000), +(6442, 7220000, 4000284, 1, 1, 0, 600000), +(6443, 7220000, 4000284, 1, 1, 0, 600000), +(6444, 7220000, 4000284, 1, 1, 0, 600000), +(6445, 7220000, 4000285, 1, 1, 0, 600000), +(6446, 7220000, 4000285, 1, 1, 0, 600000), +(6447, 7220000, 4000285, 1, 1, 0, 600000), +(6448, 7220000, 4000021, 1, 1, 0, 500000), +(6449, 7220000, 4000021, 1, 1, 0, 500000), +(6450, 7220000, 4000021, 1, 1, 0, 500000), +(6451, 7220000, 4000283, 1, 1, 0, 600000), +(6452, 7220000, 4000283, 1, 1, 0, 600000), +(6453, 7220000, 4000283, 1, 1, 0, 600000), +(6454, 7220000, 4004000, 1, 1, 0, 100000), +(6455, 7220000, 4010001, 1, 1, 0, 90000), +(6456, 7220000, 4020006, 1, 1, 0, 90000), +(6457, 7220000, 2000002, 1, 1, 0, 200000), +(6458, 7220000, 2000003, 1, 1, 0, 200000), +(6459, 7220000, 2002004, 1, 1, 0, 200000), +(6460, 7220000, 2002011, 1, 1, 0, 200000), +(6461, 7220000, 2022142, 1, 1, 0, 200000), +(6462, 7220000, 2040901, 1, 1, 0, 3000), +(6463, 7220000, 2041001, 1, 1, 0, 3000), +(6464, 7220000, 2043801, 1, 1, 0, 3000), +(6465, 7220000, 2043101, 1, 1, 0, 3000), +(6466, 7220000, 2041010, 1, 1, 0, 3000), +(6467, 7220000, 2043301, 1, 1, 0, 3000), +(6468, 7220000, 2044101, 1, 1, 0, 3000), +(6469, 7220000, 2044501, 1, 1, 0, 3000), +(6470, 7220000, 2041022, 1, 1, 0, 3000), +(6471, 7220000, 2044601, 1, 1, 0, 3000), +(6472, 7220000, 2048005, 1, 1, 0, 3000), +(6473, 7220000, 2040005, 1, 1, 0, 3000), +(6474, 7220000, 2040514, 1, 1, 0, 3000), +(6475, 7220000, 2040705, 1, 1, 0, 3000), +(6476, 7220000, 2040805, 1, 1, 0, 3000), +(6477, 7220000, 2060001, 1, 1, 0, 300000), +(6478, 7220000, 2061001, 1, 1, 0, 300000), +(6479, 7220000, 2070004, 1, 1, 0, 5000), +(6480, 7220000, 1302012, 1, 1, 0, 7000), +(6481, 7220000, 1312010, 1, 1, 0, 7000), +(6482, 7220000, 1322019, 1, 1, 0, 7000), +(6483, 7220000, 1332018, 1, 1, 0, 5000), +(6484, 7220000, 1372015, 1, 1, 0, 7000), +(6485, 7220000, 1382010, 1, 1, 0, 7000), +(6486, 7220000, 1402012, 1, 1, 0, 7000), +(6487, 7220000, 1412008, 1, 1, 0, 7000), +(6488, 7220000, 1422010, 1, 1, 0, 7000), +(6489, 7220000, 1432007, 1, 1, 0, 5000), +(6490, 7220000, 1442008, 1, 1, 0, 7000), +(6491, 7220000, 1452011, 1, 1, 0, 5000), +(6492, 7220000, 1462009, 1, 1, 0, 5000), +(6493, 7220000, 1472029, 1, 1, 0, 5000), +(6494, 7220000, 1482009, 1, 1, 0, 5000), +(6495, 7220000, 1492009, 1, 1, 0, 5000), +(6496, 7220000, 2044801, 1, 1, 0, 3000), +(6497, 7220000, 2040025, 1, 1, 0, 3000), +(6498, 7220000, 2040825, 1, 1, 0, 3000), +(6499, 7220000, 2043019, 1, 1, 0, 3000), +(6500, 7220000, 2044014, 1, 1, 0, 3000), +(6501, 7220000, 2044312, 1, 1, 0, 3000), +(6502, 7220000, 2044412, 1, 1, 0, 3000), +(6503, 7220000, 2049100, 1, 1, 0, 3000), +(6504, 7220001, 4000172, 1, 1, 0, 600000), +(6505, 7220001, 4000172, 1, 1, 0, 600000), +(6506, 7220001, 4000172, 1, 1, 0, 600000), +(6507, 7220001, 4000172, 1, 1, 0, 600000), +(6508, 7220001, 4000172, 1, 1, 0, 600000), +(6509, 7220001, 4000172, 1, 1, 0, 600000), +(6510, 7220001, 4000172, 1, 1, 0, 600000), +(6511, 7220001, 4000172, 1, 1, 0, 600000), +(6512, 7220001, 4000021, 1, 1, 0, 500000), +(6513, 7220001, 4004002, 1, 1, 0, 100000), +(6514, 7220001, 4010004, 1, 1, 0, 90000), +(6515, 7220001, 4020004, 1, 1, 0, 90000), +(6516, 7220001, 2000002, 1, 1, 0, 200000), +(6517, 7220001, 2000003, 1, 1, 0, 200000), +(6518, 7220001, 2002002, 1, 1, 0, 200000), +(6519, 7220001, 2002000, 1, 1, 0, 200000), +(6520, 7220001, 2040301, 1, 1, 0, 3000), +(6521, 7220001, 2040501, 1, 1, 0, 3000), +(6522, 7220001, 2040513, 1, 1, 0, 3000), +(6523, 7220001, 2040701, 1, 1, 0, 3000), +(6524, 7220001, 2040804, 1, 1, 0, 3000), +(6525, 7220001, 2041010, 1, 1, 0, 3000), +(6526, 7220001, 2043301, 1, 1, 0, 3000), +(6527, 7220001, 2043801, 1, 1, 0, 3000), +(6528, 7220001, 2044501, 1, 1, 0, 3000), +(6529, 7220001, 2041016, 1, 1, 0, 3000), +(6530, 7220001, 2041017, 1, 1, 0, 3000), +(6531, 7220001, 2043702, 1, 1, 0, 3000), +(6532, 7220001, 2044702, 1, 1, 0, 3000), +(6533, 7220001, 2040902, 1, 1, 0, 3000), +(6534, 7220001, 2040602, 1, 1, 0, 3000), +(6535, 7220001, 2060001, 1, 1, 0, 300000), +(6536, 7220001, 2061001, 1, 1, 0, 300000), +(6537, 7220001, 2070005, 1, 1, 0, 4000), +(6538, 7220001, 1002095, 1, 1, 0, 15000), +(6539, 7220001, 1002254, 1, 1, 0, 15000), +(6540, 7220001, 1002289, 1, 1, 0, 15000), +(6541, 7220001, 1002285, 1, 1, 0, 15000), +(6542, 7220001, 1040103, 1, 1, 0, 8000), +(6543, 7220001, 1041099, 1, 1, 0, 8000), +(6544, 7220001, 1050070, 1, 1, 0, 7000), +(6545, 7220001, 1051055, 1, 1, 0, 7000), +(6546, 7220001, 1050064, 1, 1, 0, 7000), +(6547, 7220001, 1051065, 1, 1, 0, 7000), +(6548, 7220001, 1040107, 1, 1, 0, 8000), +(6549, 7220001, 1041100, 1, 1, 0, 8000), +(6550, 7220001, 1082105, 1, 1, 0, 10000), +(6551, 7220001, 1082100, 1, 1, 0, 10000), +(6552, 7220001, 1082108, 1, 1, 0, 10000), +(6553, 7220001, 1082097, 1, 1, 0, 10000), +(6554, 7220001, 1072156, 1, 1, 0, 8000), +(6555, 7220001, 1072160, 1, 1, 0, 8000), +(6556, 7220001, 1072167, 1, 1, 0, 8000), +(6557, 7220001, 1072161, 1, 1, 0, 8000), +(6558, 7220001, 1002637, 1, 1, 0, 15000), +(6559, 7220001, 1052122, 1, 1, 0, 7000), +(6560, 7220001, 1082204, 1, 1, 0, 10000), +(6561, 7220001, 1072309, 1, 1, 0, 8000), +(6562, 7220001, 2044802, 1, 1, 0, 3000), +(6563, 7220001, 2044901, 1, 1, 0, 3000), +(6564, 7220001, 2040025, 1, 1, 0, 3000), +(6565, 7220001, 2040427, 1, 1, 0, 3000), +(6566, 7220001, 2040625, 1, 1, 0, 3000), +(6567, 7220001, 2040933, 1, 1, 0, 3000), +(6568, 7220001, 2043017, 1, 1, 0, 3000), +(6569, 7220002, 4000298, 1, 1, 0, 600000), +(6570, 7220002, 4000298, 1, 1, 0, 600000), +(6571, 7220002, 4000298, 1, 1, 0, 600000), +(6572, 7220002, 4000289, 1, 1, 0, 600000), +(6573, 7220002, 4000289, 1, 1, 0, 600000), +(6574, 7220002, 4000289, 1, 1, 0, 600000), +(6575, 7220002, 4003005, 1, 1, 0, 200000), +(6576, 7220002, 4004004, 1, 1, 0, 100000), +(6577, 7220002, 4010005, 1, 1, 0, 90000), +(6578, 7220002, 4020008, 1, 1, 0, 90000), +(6579, 7220002, 2000002, 1, 1, 0, 200000), +(6580, 7220002, 2000003, 1, 1, 0, 200000), +(6581, 7220002, 2002002, 1, 1, 0, 200000), +(6582, 7220002, 2002003, 1, 1, 0, 200000), +(6583, 7220002, 2022149, 1, 1, 0, 200000), +(6584, 7220002, 2040004, 1, 1, 0, 3000), +(6585, 7220002, 2040504, 1, 1, 0, 3000), +(6586, 7220002, 2040601, 1, 1, 0, 3000), +(6587, 7220002, 2040701, 1, 1, 0, 3000), +(6588, 7220002, 2040707, 1, 1, 0, 3000), +(6589, 7220002, 2040801, 1, 1, 0, 3000), +(6590, 7220002, 2041010, 1, 1, 0, 3000), +(6591, 7220002, 2043101, 1, 1, 0, 3000), +(6592, 7220002, 2044001, 1, 1, 0, 3000), +(6593, 7220002, 2044601, 1, 1, 0, 3000), +(6594, 7220002, 2040402, 1, 1, 0, 3000), +(6595, 7220002, 2040514, 1, 1, 0, 3000), +(6596, 7220002, 2040702, 1, 1, 0, 3000), +(6597, 7220002, 2041005, 1, 1, 0, 3000), +(6598, 7220002, 2044302, 1, 1, 0, 3000), +(6599, 7220002, 2060001, 1, 1, 0, 300000), +(6600, 7220002, 2061001, 1, 1, 0, 300000), +(6601, 7220002, 1302018, 1, 1, 0, 7000), +(6602, 7220002, 1312011, 1, 1, 0, 7000), +(6603, 7220002, 1322028, 1, 1, 0, 7000), +(6604, 7220002, 1332023, 1, 1, 0, 5000), +(6605, 7220002, 1372016, 1, 1, 0, 7000), +(6606, 7220002, 1382008, 1, 1, 0, 7000), +(6607, 7220002, 1402004, 1, 1, 0, 7000), +(6608, 7220002, 1412009, 1, 1, 0, 7000), +(6609, 7220002, 1422012, 1, 1, 0, 7000), +(6610, 7220002, 1432010, 1, 1, 0, 5000), +(6611, 7220002, 1442019, 1, 1, 0, 7000), +(6612, 7220002, 1452015, 1, 1, 0, 5000), +(6613, 7220002, 1462013, 1, 1, 0, 5000), +(6614, 7220002, 1472031, 1, 1, 0, 5000), +(6615, 7220002, 1482010, 1, 1, 0, 5000), +(6616, 7220002, 1492010, 1, 1, 0, 5000), +(6617, 7220002, 2044902, 1, 1, 0, 3000), +(6618, 7220002, 2040619, 1, 1, 0, 3000), +(6619, 7220002, 2044414, 1, 1, 0, 3000), +(6620, 7220002, 2049000, 1, 1, 0, 1500), +(6621, 8090000, 4000418, 1, 1, 0, 600000), +(6622, 8110300, 2000006, 1, 1, 0, 20000), +(6623, 8110300, 2000005, 1, 1, 0, 20000), +(6624, 8110300, 4010005, 1, 1, 0, 9000), +(6625, 8110300, 4020005, 1, 1, 0, 9000), +(6626, 8110300, 2044602, 1, 1, 0, 300), +(6627, 8110300, 2041005, 1, 1, 0, 300), +(6628, 8110300, 4006000, 1, 1, 0, 10000), +(6629, 8110300, 4004000, 1, 1, 0, 10000), +(6630, 8110300, 2000002, 1, 1, 0, 20000), +(6631, 8110300, 2070005, 1, 1, 0, 400), +(6632, 8110300, 1082114, 1, 1, 0, 1000), +(6633, 8110300, 1072158, 1, 1, 0, 800), +(6634, 8110300, 1002288, 1, 1, 0, 1500), +(6635, 8110300, 1040107, 1, 1, 0, 800), +(6636, 8110300, 1060095, 1, 1, 0, 800), +(6637, 8110300, 1452011, 1, 1, 0, 500), +(6638, 8110300, 1442008, 1, 1, 0, 700), +(6639, 8110300, 1312010, 1, 1, 0, 700), +(6640, 8110300, 1102031, 1, 1, 0, 1000), +(6641, 8110300, 4000355, 1, 1, 0, 600000), +(6642, 8110300, 2044902, 1, 1, 0, 300), +(6643, 8110300, 2044807, 1, 1, 0, 300), +(6644, 8110300, 4130012, 1, 1, 0, 6000), +(6645, 8110300, 4130013, 1, 1, 0, 6000), +(6646, 8130100, 4021008, 1, 1, 0, 90000), +(6647, 8130100, 2000005, 1, 1, 0, 999999), +(6648, 8130100, 1452009, 1, 1, 0, 5000), +(6649, 8130100, 1382007, 1, 1, 0, 7000), +(6650, 8130100, 1462009, 1, 1, 0, 5000), +(6651, 8130100, 1322019, 1, 1, 0, 7000), +(6652, 8130100, 1312010, 1, 1, 0, 7000), +(6653, 8130100, 1412008, 1, 1, 0, 7000), +(6654, 8130100, 1422010, 1, 1, 0, 7000), +(6655, 8130100, 1472026, 1, 1, 0, 5000), +(6656, 8130100, 1432007, 1, 1, 0, 5000), +(6657, 8130100, 1442008, 1, 1, 0, 7000), +(6658, 8130100, 1302012, 1, 1, 0, 7000), +(6659, 8130100, 1402012, 1, 1, 0, 7000), +(6660, 8130100, 1332018, 1, 1, 0, 5000), +(6661, 8130100, 1332019, 1, 1, 0, 5000), +(6662, 8130100, 2043001, 1, 1, 0, 3000), +(6663, 8130100, 2043101, 1, 1, 0, 3000), +(6664, 8130100, 2043201, 1, 1, 0, 3000), +(6665, 8130100, 2043301, 1, 1, 0, 3000), +(6666, 8130100, 2043701, 1, 1, 0, 3000), +(6667, 8130100, 2043801, 1, 1, 0, 3000), +(6668, 8130100, 2044001, 1, 1, 0, 3000), +(6669, 8130100, 2044101, 1, 1, 0, 3000), +(6670, 8130100, 2044201, 1, 1, 0, 3000), +(6671, 8130100, 2044301, 1, 1, 0, 3000), +(6672, 8130100, 2044401, 1, 1, 0, 3000), +(6673, 8130100, 2044501, 1, 1, 0, 3000), +(6674, 8130100, 2044601, 1, 1, 0, 3000), +(6675, 8130100, 2044701, 1, 1, 0, 3000), +(6676, 8130100, 2000004, 1, 1, 0, 999999), +(6677, 8130100, 1092016, 1, 1, 0, 7000), +(6678, 8130100, 2070007, 1, 1, 0, 2000), +(6679, 8130100, 1482009, 1, 1, 0, 5000), +(6680, 8130100, 1492009, 1, 1, 0, 5000), +(6681, 8130100, 2044801, 1, 1, 0, 3000), +(6682, 8130100, 2044901, 1, 1, 0, 3000), +(6683, 8130100, 2040419, 1, 1, 0, 3000), +(6684, 8130100, 2040622, 1, 1, 0, 3000), +(6685, 8130100, 2049000, 1, 1, 0, 1500), +(6686, 8140000, 4000054, 1, 1, 0, 600000), +(6687, 8140000, 4003005, 1, 1, 0, 200000), +(6688, 8140000, 1402004, 1, 1, 0, 700), +(6689, 8140000, 2040902, 1, 1, 0, 300), +(6690, 8140000, 2070006, 1, 1, 0, 200), +(6691, 8140000, 4010001, 1, 1, 0, 9000), +(6692, 8140000, 4020008, 1, 1, 0, 9000), +(6693, 8140000, 4010003, 1, 1, 0, 9000), +(6694, 8140000, 4004001, 1, 1, 0, 10000), +(6695, 8140000, 4006001, 1, 1, 0, 10000), +(6696, 8140000, 4020006, 1, 1, 0, 9000), +(6697, 8140000, 1051053, 1, 1, 0, 700), +(6698, 8140000, 1442008, 1, 1, 0, 700), +(6699, 8140000, 1002285, 1, 1, 0, 1500), +(6700, 8140000, 1040104, 1, 1, 0, 800), +(6701, 8140000, 1060092, 1, 1, 0, 800), +(6702, 8140000, 1050064, 1, 1, 0, 700), +(6703, 8140000, 1472028, 1, 1, 0, 500), +(6704, 8140000, 1102029, 1, 1, 0, 1000), +(6705, 8140000, 1002271, 1, 1, 0, 1500), +(6706, 8140000, 1002275, 1, 1, 0, 1500), +(6707, 8140000, 1072172, 1, 1, 0, 800), +(6708, 8140000, 1072178, 1, 1, 0, 800), +(6709, 8140000, 1072210, 1, 1, 0, 800), +(6710, 8140000, 1032023, 1, 1, 0, 1000), +(6711, 8140000, 1050092, 1, 1, 0, 700), +(6712, 8140000, 1051082, 1, 1, 0, 700), +(6713, 8140000, 1072193, 1, 1, 0, 800), +(6714, 8140000, 1082129, 1, 1, 0, 1000), +(6715, 8140000, 1482010, 1, 1, 0, 500), +(6716, 8140000, 2040825, 1, 1, 0, 300), +(6717, 8140000, 2040933, 1, 1, 0, 300), +(6718, 8140000, 2044010, 1, 1, 0, 300), +(6719, 8140000, 4130007, 1, 1, 0, 6000), +(6720, 8140001, 4000238, 1, 1, 0, 600000), +(6721, 8140001, 2000006, 1, 1, 0, 20000), +(6722, 8140001, 2000005, 1, 1, 0, 20000), +(6723, 8140001, 4010005, 1, 1, 0, 9000), +(6724, 8140001, 4020005, 1, 1, 0, 9000), +(6725, 8140001, 2044602, 1, 1, 0, 300), +(6726, 8140001, 2041005, 1, 1, 0, 300), +(6727, 8140001, 4006000, 1, 1, 0, 10000), +(6728, 8140001, 4004000, 1, 1, 0, 10000), +(6729, 8140001, 2000002, 1, 1, 0, 20000), +(6730, 8140001, 2070005, 1, 1, 0, 400), +(6731, 8140001, 1082114, 1, 1, 0, 1000), +(6732, 8140001, 1072158, 1, 1, 0, 800), +(6733, 8140001, 1002288, 1, 1, 0, 1500), +(6734, 8140001, 1040107, 1, 1, 0, 800), +(6735, 8140001, 1060095, 1, 1, 0, 800), +(6736, 8140001, 1452011, 1, 1, 0, 500), +(6737, 8140001, 1442008, 1, 1, 0, 700), +(6738, 8140001, 1312010, 1, 1, 0, 700), +(6739, 8140001, 1102031, 1, 1, 0, 1000), +(6740, 8140001, 1492010, 1, 1, 0, 500), +(6741, 8140001, 2040318, 1, 1, 0, 300), +(6742, 8140001, 2040824, 1, 1, 0, 300), +(6743, 8140001, 2044310, 1, 1, 0, 300), +(6744, 8140001, 2044805, 1, 1, 0, 300), +(6745, 8140001, 4130004, 1, 1, 0, 6000), +(6746, 8140001, 4130015, 1, 1, 0, 6000), +(6747, 8140001, 4130016, 1, 1, 0, 6000), +(6748, 8140002, 4000239, 1, 1, 0, 600000), +(6749, 8140002, 2000006, 1, 1, 0, 20000), +(6750, 8140002, 2000005, 1, 1, 0, 20000), +(6751, 8140002, 4010006, 1, 1, 0, 9000), +(6752, 8140002, 4020007, 1, 1, 0, 9000), +(6753, 8140002, 2040707, 1, 1, 0, 300), +(6754, 8140002, 2043301, 1, 1, 0, 300), +(6755, 8140002, 4006001, 1, 1, 0, 10000), +(6756, 8140002, 4004001, 1, 1, 0, 10000), +(6757, 8140002, 2000002, 1, 1, 0, 20000), +(6758, 8140002, 1102030, 1, 1, 0, 1000), +(6759, 8140002, 1002339, 1, 1, 0, 1500), +(6760, 8140002, 1051057, 1, 1, 0, 700), +(6761, 8140002, 1082112, 1, 1, 0, 1000), +(6762, 8140002, 1072173, 1, 1, 0, 800), +(6763, 8140002, 1472029, 1, 1, 0, 500), +(6764, 8140002, 1382010, 1, 1, 0, 700), +(6765, 8140002, 1462012, 1, 1, 0, 500), +(6766, 8140002, 2070005, 1, 1, 0, 400), +(6767, 8140002, 1032022, 1, 1, 0, 1000), +(6768, 8140002, 4000240, 1, 1, 0, 600000), +(6769, 8140002, 1052125, 1, 1, 0, 700), +(6770, 8140002, 2330003, 1, 1, 0, 500), +(6771, 8140002, 2040026, 1, 1, 0, 300), +(6772, 8140002, 2040316, 1, 1, 0, 300), +(6773, 8140002, 2043015, 1, 1, 0, 300), +(6774, 8140002, 2049000, 1, 1, 0, 150), +(6775, 8140002, 4130000, 1, 1, 0, 6000), +(6776, 8140002, 4130002, 1, 1, 0, 6000), +(6777, 8140002, 4130010, 1, 1, 0, 6000), +(6778, 8140100, 4000057, 1, 1, 0, 600000), +(6779, 8140100, 4004004, 1, 1, 0, 10000), +(6780, 8140100, 2000006, 1, 1, 0, 20000), +(6781, 8140100, 2000004, 1, 1, 0, 20000), +(6782, 8140100, 4020007, 1, 1, 0, 9000), +(6783, 8140100, 4010003, 1, 1, 0, 9000), +(6784, 8140100, 2070004, 1, 1, 0, 500), +(6785, 8140100, 4004003, 1, 1, 0, 10000), +(6786, 8140100, 4006000, 1, 1, 0, 10000), +(6787, 8140100, 1002217, 1, 1, 0, 1500), +(6788, 8140100, 1032013, 1, 1, 0, 1000), +(6789, 8140100, 1072131, 1, 1, 0, 800), +(6790, 8140100, 1050055, 1, 1, 0, 700), +(6791, 8140100, 1422009, 1, 1, 0, 700), +(6792, 8140100, 1072152, 1, 1, 0, 800), +(6793, 8140100, 1002267, 1, 1, 0, 1500), +(6794, 8140100, 1041092, 1, 1, 0, 800), +(6795, 8140100, 1061091, 1, 1, 0, 800), +(6796, 8140100, 1092009, 1, 1, 0, 700), +(6797, 8140100, 1102021, 1, 1, 0, 1000), +(6798, 8140100, 1032020, 1, 1, 0, 1000), +(6799, 8140100, 1462009, 1, 1, 0, 500), +(6800, 8140100, 1302012, 1, 1, 0, 700), +(6801, 8140100, 1082095, 1, 1, 0, 1000), +(6802, 8140100, 1082099, 1, 1, 0, 1000), +(6803, 8140100, 1002283, 1, 1, 0, 1500), +(6804, 8140100, 2040328, 1, 1, 0, 300), +(6805, 8140100, 2040512, 1, 1, 0, 300), +(6806, 8140100, 4130002, 1, 1, 0, 6000), +(6807, 8140100, 4130003, 1, 1, 0, 6000), +(6808, 8140100, 4130009, 1, 1, 0, 6000), +(6809, 8140100, 4000056, 1, 1, 0, 600000), +(6810, 8140100, 4003004, 1, 1, 0, 200000), +(6811, 8140100, 4004004, 1, 1, 0, 10000), +(6812, 8140100, 4010001, 1, 1, 0, 9000), +(6813, 8140100, 4020002, 1, 1, 0, 9000), +(6814, 8140100, 1072127, 1, 1, 0, 800), +(6815, 8140100, 1412007, 1, 1, 0, 700), +(6816, 8140100, 1332019, 1, 1, 0, 500), +(6817, 8140100, 1472022, 1, 1, 0, 500), +(6818, 8140100, 1302011, 1, 1, 0, 700), +(6819, 8140100, 2044001, 1, 1, 0, 300), +(6820, 8140100, 2043801, 1, 1, 0, 300), +(6821, 8140100, 1051030, 1, 1, 0, 700), +(6822, 8140100, 1051031, 1, 1, 0, 700), +(6823, 8140100, 1051034, 1, 1, 0, 700), +(6824, 8140100, 1412003, 1, 1, 0, 700), +(6825, 8140100, 1302018, 1, 1, 0, 700), +(6826, 8140100, 4004001, 1, 1, 0, 10000), +(6827, 8140100, 1040100, 1, 1, 0, 800), +(6828, 8140100, 1060089, 1, 1, 0, 800), +(6829, 8140100, 1492009, 1, 1, 0, 500), +(6830, 8140100, 2044802, 1, 1, 0, 300), +(6831, 8140100, 2040318, 1, 1, 0, 300), +(6832, 8140100, 2040619, 1, 1, 0, 300), +(6833, 8140100, 2040927, 1, 1, 0, 300), +(6834, 8140100, 2044012, 1, 1, 0, 300), +(6835, 8140100, 4130004, 1, 1, 0, 6000), +(6836, 8140101, 4000234, 1, 1, 0, 600000), +(6837, 8140101, 2000006, 1, 1, 0, 20000), +(6838, 8140101, 2000005, 1, 1, 0, 20000), +(6839, 8140101, 4010003, 1, 1, 0, 9000), +(6840, 8140101, 4020001, 1, 1, 0, 9000), +(6841, 8140101, 2048004, 1, 1, 0, 300), +(6842, 8140101, 2040901, 1, 1, 0, 300), +(6843, 8140101, 4006001, 1, 1, 0, 10000), +(6844, 8140101, 4004003, 1, 1, 0, 10000), +(6845, 8140101, 2000002, 1, 1, 0, 20000), +(6846, 8140101, 1082117, 1, 1, 0, 1000), +(6847, 8140101, 1072179, 1, 1, 0, 800), +(6848, 8140101, 1002328, 1, 1, 0, 1500), +(6849, 8140101, 1040109, 1, 1, 0, 800), +(6850, 8140101, 1060098, 1, 1, 0, 800), +(6851, 8140101, 1452014, 1, 1, 0, 500), +(6852, 8140101, 1382008, 1, 1, 0, 700), +(6853, 8140101, 1032023, 1, 1, 0, 1000), +(6854, 8140101, 1092026, 1, 1, 0, 700), +(6855, 8140101, 1312030, 1, 1, 0, 700), +(6856, 8140101, 1402035, 1, 1, 0, 700), +(6857, 8140101, 1472053, 1, 1, 0, 500), +(6858, 8140101, 1002640, 1, 1, 0, 1500), +(6859, 8140101, 2040825, 1, 1, 0, 300), +(6860, 8140101, 4130001, 1, 1, 0, 6000), +(6861, 8140101, 4130007, 1, 1, 0, 6000), +(6862, 8140102, 4000232, 1, 1, 0, 600000), +(6863, 8140102, 2000006, 1, 1, 0, 20000), +(6864, 8140102, 2000005, 1, 1, 0, 20000), +(6865, 8140102, 4010001, 1, 1, 0, 9000), +(6866, 8140102, 4020000, 1, 1, 0, 9000), +(6867, 8140102, 2040805, 1, 1, 0, 300), +(6868, 8140102, 2040703, 1, 1, 0, 300), +(6869, 8140102, 4006000, 1, 1, 0, 10000), +(6870, 8140102, 4004004, 1, 1, 0, 10000), +(6871, 8140102, 2000002, 1, 1, 0, 20000), +(6872, 8140102, 1072211, 1, 1, 0, 800), +(6873, 8140102, 1002274, 1, 1, 0, 1500), +(6874, 8140102, 1051068, 1, 1, 0, 700), +(6875, 8140102, 1082118, 1, 1, 0, 1000), +(6876, 8140102, 1402004, 1, 1, 0, 700), +(6877, 8140102, 1332023, 1, 1, 0, 500), +(6878, 8140102, 1032022, 1, 1, 0, 1000), +(6879, 8140102, 1092023, 1, 1, 0, 700), +(6880, 8140102, 1422027, 1, 1, 0, 700), +(6881, 8140102, 1452019, 1, 1, 0, 500), +(6882, 8140102, 1382035, 1, 1, 0, 700), +(6883, 8140102, 1432004, 1, 1, 0, 500), +(6884, 8140102, 4161015, 1, 1, 0, 6000), +(6885, 8140102, 1002643, 1, 1, 0, 1500), +(6886, 8140102, 2331000, 1, 1, 0, 500), +(6887, 8140102, 2040321, 1, 1, 0, 300), +(6888, 8140102, 2040622, 1, 1, 0, 300), +(6889, 8140102, 2044807, 1, 1, 0, 300), +(6890, 8140102, 4130000, 1, 1, 0, 6000), +(6891, 8140102, 4130002, 1, 1, 0, 6000), +(6892, 8140102, 4130013, 1, 1, 0, 6000), +(6893, 8140103, 4000233, 1, 1, 0, 600000), +(6894, 8140103, 2000006, 1, 1, 0, 20000), +(6895, 8140103, 2000005, 1, 1, 0, 20000), +(6896, 8140103, 4010000, 1, 1, 0, 9000), +(6897, 8140103, 4020001, 1, 1, 0, 9000), +(6898, 8140103, 2040004, 1, 1, 0, 300), +(6899, 8140103, 2043701, 1, 1, 0, 300), +(6900, 8140103, 4006000, 1, 1, 0, 10000), +(6901, 8140103, 4004002, 1, 1, 0, 10000), +(6902, 8140103, 2000002, 1, 1, 0, 20000), +(6903, 8140103, 1082116, 1, 1, 0, 1000), +(6904, 8140103, 1072177, 1, 1, 0, 800), +(6905, 8140103, 1002277, 1, 1, 0, 1500), +(6906, 8140103, 1041106, 1, 1, 0, 800), +(6907, 8140103, 1061105, 1, 1, 0, 800), +(6908, 8140103, 1412009, 1, 1, 0, 700), +(6909, 8140103, 1452013, 1, 1, 0, 500), +(6910, 8140103, 1442019, 1, 1, 0, 700), +(6911, 8140103, 1102032, 1, 1, 0, 1000), +(6912, 8140103, 1332051, 1, 1, 0, 500), +(6913, 8140103, 1322045, 1, 1, 0, 700), +(6914, 8140103, 1412021, 1, 1, 0, 700), +(6915, 8140103, 1432011, 1, 1, 0, 500), +(6916, 8140103, 4161016, 1, 1, 0, 6000), +(6917, 8140103, 1492010, 1, 1, 0, 500), +(6918, 8140103, 2332000, 1, 1, 0, 500), +(6919, 8140103, 2044314, 1, 1, 0, 300), +(6920, 8140103, 4130005, 1, 1, 0, 6000), +(6921, 8140103, 4130011, 1, 1, 0, 6000), +(6922, 8140103, 4130017, 1, 1, 0, 6000), +(6923, 8140110, 4000241, 1, 1, 0, 600000), +(6924, 8140110, 2000006, 1, 1, 0, 20000), +(6925, 8140110, 2000005, 1, 1, 0, 20000), +(6926, 8140110, 4020008, 1, 1, 0, 9000), +(6927, 8140110, 4010006, 1, 1, 0, 9000), +(6928, 8140110, 2044702, 1, 1, 0, 300), +(6929, 8140110, 2043802, 1, 1, 0, 300), +(6930, 8140110, 4006000, 1, 1, 0, 10000), +(6931, 8140110, 4004002, 1, 1, 0, 10000), +(6932, 8140110, 2000002, 1, 1, 0, 20000), +(6933, 8140110, 1050083, 1, 1, 0, 700), +(6934, 8140110, 1082119, 1, 1, 0, 1000), +(6935, 8140110, 1072185, 1, 1, 0, 800), +(6936, 8140110, 1002330, 1, 1, 0, 1500), +(6937, 8140110, 1092027, 1, 1, 0, 700), +(6938, 8140110, 1452015, 1, 1, 0, 500), +(6939, 8140110, 1462013, 1, 1, 0, 500), +(6940, 8140110, 1432010, 1, 1, 0, 500), +(6941, 8140110, 1302056, 1, 1, 0, 700), +(6942, 8140110, 1372010, 1, 1, 0, 700), +(6943, 8140110, 1332052, 1, 1, 0, 500), +(6944, 8140110, 1482010, 1, 1, 0, 500), +(6945, 8140110, 2044801, 1, 1, 0, 300), +(6946, 8140111, 4000242, 1, 1, 0, 600000), +(6947, 8140111, 2000006, 1, 1, 0, 20000), +(6948, 8140111, 2000005, 1, 1, 0, 20000), +(6949, 8140111, 4010003, 1, 1, 0, 9000), +(6950, 8140111, 4020003, 1, 1, 0, 9000), +(6951, 8140111, 2041014, 1, 1, 0, 300), +(6952, 8140111, 2044001, 1, 1, 0, 300), +(6953, 8140111, 4006001, 1, 1, 0, 10000), +(6954, 8140111, 4004003, 1, 1, 0, 10000), +(6955, 8140111, 2000002, 1, 1, 0, 20000), +(6956, 8140111, 2070006, 1, 1, 0, 200), +(6957, 8140111, 1051080, 1, 1, 0, 700), +(6958, 8140111, 1082122, 1, 1, 0, 1000), +(6959, 8140111, 1072183, 1, 1, 0, 800), +(6960, 8140111, 1002328, 1, 1, 0, 1500), +(6961, 8140111, 1092025, 1, 1, 0, 700), +(6962, 8140111, 1372016, 1, 1, 0, 700), +(6963, 8140111, 1472031, 1, 1, 0, 500), +(6964, 8140111, 1032023, 1, 1, 0, 1000), +(6965, 8140111, 1432030, 1, 1, 0, 500), +(6966, 8140111, 1442044, 1, 1, 0, 700), +(6967, 8140111, 1462015, 1, 1, 0, 500), +(6968, 8140111, 2330003, 1, 1, 0, 500), +(6969, 8140111, 1482010, 1, 1, 0, 500), +(6970, 8140111, 2040323, 1, 1, 0, 300), +(6971, 8140111, 2043214, 1, 1, 0, 300), +(6972, 8140111, 4130001, 1, 1, 0, 6000), +(6973, 8140111, 4130007, 1, 1, 0, 6000), +(6974, 8140111, 4130012, 1, 1, 0, 6000), +(6975, 8140200, 4000145, 1, 1, 0, 600000), +(6976, 8140200, 4010001, 1, 1, 0, 9000), +(6977, 8140200, 4020001, 1, 1, 0, 9000), +(6978, 8140200, 4004003, 1, 1, 0, 10000), +(6979, 8140200, 4006001, 1, 1, 0, 10000), +(6980, 8140200, 2000006, 1, 1, 0, 20000), +(6981, 8140200, 2000004, 1, 1, 0, 20000), +(6982, 8140200, 2002003, 1, 1, 0, 20000), +(6983, 8140200, 2040302, 1, 1, 0, 300), +(6984, 8140200, 2040802, 1, 1, 0, 300), +(6985, 8140200, 2020014, 1, 1, 0, 20000), +(6986, 8140200, 1050054, 1, 1, 0, 700), +(6987, 8140200, 1002270, 1, 1, 0, 1500), +(6988, 8140200, 1040093, 1, 1, 0, 800), +(6989, 8140200, 1060082, 1, 1, 0, 800), +(6990, 8140200, 1082059, 1, 1, 0, 1000), +(6991, 8140200, 1072144, 1, 1, 0, 800), +(6992, 8140200, 1050058, 1, 1, 0, 700), +(6993, 8140200, 1472022, 1, 1, 0, 500), +(6994, 8140200, 1051052, 1, 1, 0, 700), +(6995, 8140200, 1072162, 1, 1, 0, 800), +(6996, 8140200, 1082104, 1, 1, 0, 1000), +(6997, 8140200, 1072159, 1, 1, 0, 800), +(6998, 8140200, 1051062, 1, 1, 0, 700), +(6999, 8140200, 1032015, 1, 1, 0, 1000), +(7000, 8140200, 1322019, 1, 1, 0, 700), +(7001, 8140200, 1032022, 1, 1, 0, 1000), +(7002, 8140200, 1050073, 1, 1, 0, 700), +(7003, 8140200, 1072182, 1, 1, 0, 800), +(7004, 8140200, 1082114, 1, 1, 0, 1000), +(7005, 8140200, 1482009, 1, 1, 0, 500), +(7006, 8140200, 2040318, 1, 1, 0, 300), +(7007, 8140200, 2040925, 1, 1, 0, 300), +(7008, 8140200, 4130000, 1, 1, 0, 6000), +(7009, 8140200, 4130014, 1, 1, 0, 6000), +(7010, 8140200, 4130016, 1, 1, 0, 6000), +(7011, 8140300, 4000146, 1, 1, 0, 600000), +(7012, 8140300, 2000006, 1, 1, 0, 20000), +(7013, 8140300, 2000004, 1, 1, 0, 20000), +(7014, 8140300, 4020007, 1, 1, 0, 9000), +(7015, 8140300, 4010005, 1, 1, 0, 9000), +(7016, 8140300, 4006000, 1, 1, 0, 10000), +(7017, 8140300, 4004004, 1, 1, 0, 10000), +(7018, 8140300, 2040513, 1, 1, 0, 300), +(7019, 8140300, 2044602, 1, 1, 0, 300), +(7020, 8140300, 1051043, 1, 1, 0, 700), +(7021, 8140300, 1041096, 1, 1, 0, 800), +(7022, 8140300, 1061095, 1, 1, 0, 800), +(7023, 8140300, 1040090, 1, 1, 0, 800), +(7024, 8140300, 1060079, 1, 1, 0, 800), +(7025, 8140300, 1051055, 1, 1, 0, 700), +(7026, 8140300, 1060095, 1, 1, 0, 800), +(7027, 8140300, 1040107, 1, 1, 0, 800), +(7028, 8140300, 1002252, 1, 1, 0, 1500), +(7029, 8140300, 1002289, 1, 1, 0, 1500), +(7030, 8140300, 1072160, 1, 1, 0, 800), +(7031, 8140300, 1041099, 1, 1, 0, 800), +(7032, 8140300, 1061098, 1, 1, 0, 800), +(7033, 8140300, 1002288, 1, 1, 0, 1500), +(7034, 8140300, 1472027, 1, 1, 0, 500), +(7035, 8140300, 1322020, 1, 1, 0, 700), +(7036, 8140300, 1382010, 1, 1, 0, 700), +(7037, 8140300, 1051057, 1, 1, 0, 700), +(7038, 8140300, 1040109, 1, 1, 0, 800), +(7039, 8140300, 1060098, 1, 1, 0, 800), +(7040, 8140300, 1002277, 1, 1, 0, 1500), +(7041, 8140300, 1002340, 1, 1, 0, 1500), +(7042, 8140300, 2070005, 1, 1, 0, 400), +(7043, 8140300, 1492009, 1, 1, 0, 500), +(7044, 8140300, 2040622, 1, 1, 0, 300), +(7045, 8140300, 2040623, 1, 1, 0, 300), +(7046, 8140300, 2043110, 1, 1, 0, 300), +(7047, 8140300, 4130016, 1, 1, 0, 6000), +(7048, 8140300, 4130017, 1, 1, 0, 6000), +(7049, 8140500, 4000080, 1, 1, 0, 600000), +(7050, 8140500, 4003005, 1, 1, 0, 200000), +(7051, 8140500, 2000006, 1, 1, 0, 20000), +(7052, 8140500, 2000005, 1, 1, 0, 20000), +(7053, 8140500, 4020007, 1, 1, 0, 9000), +(7054, 8140500, 4020001, 1, 1, 0, 9000), +(7055, 8140500, 4004000, 1, 1, 0, 10000), +(7056, 8140500, 2044001, 1, 1, 0, 300), +(7057, 8140500, 2041022, 1, 1, 0, 300), +(7058, 8140500, 1050070, 1, 1, 0, 700), +(7059, 8140500, 1072156, 1, 1, 0, 800), +(7060, 8140500, 1072164, 1, 1, 0, 800), +(7061, 8140500, 1082096, 1, 1, 0, 1000), +(7062, 8140500, 1312011, 1, 1, 0, 700), +(7063, 8140500, 1082111, 1, 1, 0, 1000), +(7064, 8140500, 1082117, 1, 1, 0, 1000), +(7065, 8140500, 1082121, 1, 1, 0, 1000), +(7066, 8140500, 1092024, 1, 1, 0, 700), +(7067, 8140500, 1072174, 1, 1, 0, 800), +(7068, 8140500, 1050078, 1, 1, 0, 700), +(7069, 8140500, 1060098, 1, 1, 0, 800), +(7070, 8140500, 1040109, 1, 1, 0, 800), +(7071, 8140500, 1002340, 1, 1, 0, 1500), +(7072, 8140500, 1452014, 1, 1, 0, 500), +(7073, 8140500, 1060104, 1, 1, 0, 800), +(7074, 8140500, 1040115, 1, 1, 0, 800), +(7075, 8140500, 1072208, 1, 1, 0, 800), +(7076, 8140500, 1082126, 1, 1, 0, 1000), +(7077, 8140500, 1032017, 1, 1, 0, 1000), +(7078, 8140500, 1072195, 1, 1, 0, 800), +(7079, 8140500, 1052125, 1, 1, 0, 700), +(7080, 8140500, 4130006, 1, 1, 0, 6000), +(7081, 8140500, 4130014, 1, 1, 0, 6000), +(7082, 8140600, 4000182, 1, 1, 0, 600000), +(7083, 8140600, 2000006, 1, 1, 0, 20000), +(7084, 8140600, 2000005, 1, 1, 0, 20000), +(7085, 8140600, 2020015, 1, 1, 0, 20000), +(7086, 8140600, 2020013, 1, 1, 0, 20000), +(7087, 8140600, 4020007, 1, 1, 0, 9000), +(7088, 8140600, 4020001, 1, 1, 0, 9000), +(7089, 8140600, 4004000, 1, 1, 0, 10000), +(7090, 8140600, 2040401, 1, 1, 0, 300), +(7091, 8140600, 2040501, 1, 1, 0, 300), +(7092, 8140600, 1472028, 1, 1, 0, 500), +(7093, 8140600, 2040513, 1, 1, 0, 300), +(7094, 8140600, 1452013, 1, 1, 0, 500), +(7095, 8140600, 1472023, 1, 1, 0, 500), +(7096, 8140600, 1462008, 1, 1, 0, 500), +(7097, 8140600, 1102030, 1, 1, 0, 1000), +(7098, 8140600, 1040111, 1, 1, 0, 800), +(7099, 8140600, 1060100, 1, 1, 0, 800), +(7100, 8140600, 1060098, 1, 1, 0, 800), +(7101, 8140600, 1040109, 1, 1, 0, 800), +(7102, 8140600, 1082108, 1, 1, 0, 1000), +(7103, 8140600, 1082117, 1, 1, 0, 1000), +(7104, 8140600, 1032017, 1, 1, 0, 1000), +(7105, 8140600, 1072160, 1, 1, 0, 800), +(7106, 8140600, 1002324, 1, 1, 0, 1500), +(7107, 8140600, 1072194, 1, 1, 0, 800), +(7108, 8140600, 1072205, 1, 1, 0, 800), +(7109, 8140600, 1052128, 1, 1, 0, 700), +(7110, 8140600, 2040929, 1, 1, 0, 300), +(7111, 8140600, 2049100, 1, 1, 0, 150), +(7112, 8140600, 4130010, 1, 1, 0, 6000), +(7113, 8140600, 4130015, 1, 1, 0, 6000), +(7114, 8140600, 4130016, 1, 1, 0, 6000), +(7115, 8140700, 2000006, 1, 1, 0, 20000), +(7116, 8140700, 2000005, 1, 1, 0, 20000), +(7117, 8140700, 4020007, 1, 1, 0, 9000), +(7118, 8140700, 4020001, 1, 1, 0, 9000), +(7119, 8140700, 4004000, 1, 1, 0, 10000), +(7120, 8140700, 1002528, 1, 1, 0, 1500), +(7121, 8140700, 1040117, 1, 1, 0, 800), +(7122, 8140700, 1060106, 1, 1, 0, 800), +(7123, 8140700, 1041120, 1, 1, 0, 800), +(7124, 8140700, 1061119, 1, 1, 0, 800), +(7125, 8140700, 1082134, 1, 1, 0, 1000), +(7126, 8140700, 1072204, 1, 1, 0, 800), +(7127, 8140700, 1372009, 1, 1, 0, 700), +(7128, 8140700, 1472033, 1, 1, 0, 500), +(7129, 8140700, 2043801, 1, 1, 0, 300), +(7130, 8140700, 2041022, 1, 1, 0, 300), +(7131, 8140700, 4000262, 1, 1, 0, 600000), +(7132, 8140700, 4000244, 1, 1, 0, 2000), +(7133, 8140700, 4000245, 1, 1, 0, 2000), +(7134, 8140700, 1082207, 1, 1, 0, 1000), +(7135, 8140700, 2044902, 1, 1, 0, 300), +(7136, 8140700, 2290106, 1, 1, 0, 500), +(7137, 8140700, 2040515, 1, 1, 0, 300), +(7138, 8140700, 2044314, 1, 1, 0, 300), +(7139, 8140700, 2044805, 1, 1, 0, 300), +(7140, 8140700, 4130007, 1, 1, 0, 6000), +(7141, 8140700, 4130012, 1, 1, 0, 6000), +(7142, 8140701, 2000006, 1, 1, 0, 20000), +(7143, 8140701, 2000005, 1, 1, 0, 20000), +(7144, 8140701, 4010001, 1, 1, 0, 9000), +(7145, 8140701, 4020005, 1, 1, 0, 9000), +(7146, 8140701, 4004001, 1, 1, 0, 10000), +(7147, 8140701, 1002365, 1, 1, 0, 1500), +(7148, 8140701, 1040111, 1, 1, 0, 800), +(7149, 8140701, 1060100, 1, 1, 0, 800), +(7150, 8140701, 1051096, 1, 1, 0, 700), +(7151, 8140701, 1082144, 1, 1, 0, 1000), +(7152, 8140701, 1072197, 1, 1, 0, 800), +(7153, 8140701, 1302023, 1, 1, 0, 700), +(7154, 8140701, 1332027, 1, 1, 0, 500), +(7155, 8140701, 2044601, 1, 1, 0, 300), +(7156, 8140701, 2044101, 1, 1, 0, 300), +(7157, 8140701, 4000263, 1, 1, 0, 600000), +(7158, 8140701, 4000244, 1, 1, 0, 2000), +(7159, 8140701, 4000245, 1, 1, 0, 2000), +(7160, 8140701, 1082210, 1, 1, 0, 1000), +(7161, 8140701, 2290122, 1, 1, 0, 500), +(7162, 8140701, 2040925, 1, 1, 0, 300), +(7163, 8140701, 4130003, 1, 1, 0, 6000), +(7164, 8140701, 4130008, 1, 1, 0, 6000), +(7165, 8140702, 2000006, 1, 1, 0, 20000), +(7166, 8140702, 2000005, 1, 1, 0, 20000), +(7167, 8140702, 4020003, 1, 1, 0, 9000), +(7168, 8140702, 4020008, 1, 1, 0, 9000), +(7169, 8140702, 4004002, 1, 1, 0, 10000), +(7170, 8140702, 1002403, 1, 1, 0, 1500), +(7171, 8140702, 1050092, 1, 1, 0, 700), +(7172, 8140702, 1041117, 1, 1, 0, 800), +(7173, 8140702, 1061116, 1, 1, 0, 800), +(7174, 8140702, 1050106, 1, 1, 0, 700), +(7175, 8140702, 1082139, 1, 1, 0, 1000), +(7176, 8140702, 1072206, 1, 1, 0, 800), +(7177, 8140702, 1312015, 1, 1, 0, 700), +(7178, 8140702, 1452017, 1, 1, 0, 500), +(7179, 8140702, 2044701, 1, 1, 0, 300), +(7180, 8140702, 2040602, 1, 1, 0, 300), +(7181, 8140702, 4000264, 1, 1, 0, 600000), +(7182, 8140702, 4000244, 1, 1, 0, 2000), +(7183, 8140702, 4000245, 1, 1, 0, 2000), +(7184, 8140702, 1492011, 1, 1, 0, 500), +(7185, 8140702, 2290112, 1, 1, 0, 500), +(7186, 8140702, 2040621, 1, 1, 0, 300), +(7187, 8140702, 2043015, 1, 1, 0, 300), +(7188, 8140702, 4130004, 1, 1, 0, 6000), +(7189, 8140702, 4130005, 1, 1, 0, 6000), +(7190, 8140702, 4130015, 1, 1, 0, 6000), +(7191, 8140703, 2000006, 1, 1, 0, 20000), +(7192, 8140703, 2000005, 1, 1, 0, 20000), +(7193, 8140703, 4020008, 1, 1, 0, 9000), +(7194, 8140703, 4020006, 1, 1, 0, 9000), +(7195, 8140703, 4004003, 1, 1, 0, 10000), +(7196, 8140703, 1002325, 1, 1, 0, 1500), +(7197, 8140703, 1050090, 1, 1, 0, 700), +(7198, 8140703, 1051082, 1, 1, 0, 700), +(7199, 8140703, 1082151, 1, 1, 0, 1000), +(7200, 8140703, 1040120, 1, 1, 0, 800), +(7201, 8140703, 1060109, 1, 1, 0, 800), +(7202, 8140703, 1072212, 1, 1, 0, 800), +(7203, 8140703, 1322029, 1, 1, 0, 700), +(7204, 8140703, 1442020, 1, 1, 0, 700), +(7205, 8140703, 2043801, 1, 1, 0, 300), +(7206, 8140703, 2040901, 1, 1, 0, 300), +(7207, 8140703, 4000265, 1, 1, 0, 600000), +(7208, 8140703, 4000244, 1, 1, 0, 2000), +(7209, 8140703, 4000245, 1, 1, 0, 2000), +(7210, 8140703, 1082159, 1, 1, 0, 1000), +(7211, 8140703, 2290088, 1, 1, 0, 500), +(7212, 8140703, 1002643, 1, 1, 0, 1500), +(7213, 8140703, 2044801, 1, 1, 0, 300), +(7214, 8140703, 2290099, 1, 1, 0, 500), +(7215, 8141000, 4000134, 1, 1, 0, 600000), +(7216, 8141000, 2000002, 1, 1, 0, 20000), +(7217, 8141000, 2000006, 1, 1, 0, 20000), +(7218, 8141000, 4010001, 1, 1, 0, 9000), +(7219, 8141000, 4020008, 1, 1, 0, 9000), +(7220, 8141000, 4004000, 1, 1, 0, 10000), +(7221, 8141000, 2044602, 1, 1, 0, 300), +(7222, 8141000, 2070006, 1, 1, 0, 200), +(7223, 8141000, 1051063, 1, 1, 0, 700), +(7224, 8141000, 1002254, 1, 1, 0, 1500), +(7225, 8141000, 1002285, 1, 1, 0, 1500), +(7226, 8141000, 1422010, 1, 1, 0, 700), +(7227, 8141000, 1050074, 1, 1, 0, 700), +(7228, 8141000, 1050072, 1, 1, 0, 700), +(7229, 8141000, 1322028, 1, 1, 0, 700), +(7230, 8141000, 1002327, 1, 1, 0, 1500), +(7231, 8141000, 1002278, 1, 1, 0, 1500), +(7232, 8141000, 1050083, 1, 1, 0, 700), +(7233, 8141000, 1041106, 1, 1, 0, 800), +(7234, 8141000, 1061105, 1, 1, 0, 800), +(7235, 8141000, 1050076, 1, 1, 0, 700), +(7236, 8141000, 1082115, 1, 1, 0, 1000), +(7237, 8141000, 1051068, 1, 1, 0, 700), +(7238, 8141000, 1051079, 1, 1, 0, 700), +(7239, 8141000, 1040112, 1, 1, 0, 800), +(7240, 8141000, 1060101, 1, 1, 0, 800), +(7241, 8141000, 1041117, 1, 1, 0, 800), +(7242, 8141000, 1061116, 1, 1, 0, 800), +(7243, 8141000, 1082132, 1, 1, 0, 1000), +(7244, 8141000, 2290082, 1, 1, 0, 500), +(7245, 8141000, 1072315, 1, 1, 0, 800), +(7246, 8141000, 2044802, 1, 1, 0, 300), +(7247, 8141000, 2290097, 1, 1, 0, 500), +(7248, 8141000, 2040317, 1, 1, 0, 300), +(7249, 8141000, 2040929, 1, 1, 0, 300), +(7250, 8141000, 2044809, 1, 1, 0, 300), +(7251, 8141000, 2049000, 1, 1, 0, 150), +(7252, 8141000, 4130013, 1, 1, 0, 6000), +(7253, 8141100, 4000135, 1, 1, 0, 600000), +(7254, 8141100, 2000006, 1, 1, 0, 20000), +(7255, 8141100, 2000005, 1, 1, 0, 20000), +(7256, 8141100, 4020008, 1, 1, 0, 9000), +(7257, 8141100, 4004004, 1, 1, 0, 10000), +(7258, 8141100, 2043002, 1, 1, 0, 300), +(7259, 8141100, 2040902, 1, 1, 0, 300), +(7260, 8141100, 4131003, 1, 1, 0, 6000), +(7261, 8141100, 4006001, 1, 1, 0, 10000), +(7262, 8141100, 1082105, 1, 1, 0, 1000), +(7263, 8141100, 1072165, 1, 1, 0, 800), +(7264, 8141100, 1051058, 1, 1, 0, 700), +(7265, 8141100, 1402015, 1, 1, 0, 700), +(7266, 8141100, 1050081, 1, 1, 0, 700), +(7267, 8141100, 1050077, 1, 1, 0, 700), +(7268, 8141100, 1002329, 1, 1, 0, 1500), +(7269, 8141100, 1051080, 1, 1, 0, 700), +(7270, 8141100, 1072185, 1, 1, 0, 800), +(7271, 8141100, 1082119, 1, 1, 0, 1000), +(7272, 8141100, 1462012, 1, 1, 0, 500), +(7273, 8141100, 1050093, 1, 1, 0, 700), +(7274, 8141100, 1051083, 1, 1, 0, 700), +(7275, 8141100, 1061115, 1, 1, 0, 800), +(7276, 8141100, 1041116, 1, 1, 0, 800), +(7277, 8141100, 1082134, 1, 1, 0, 1000), +(7278, 8141100, 2040025, 1, 1, 0, 300), +(7279, 8141100, 2040031, 1, 1, 0, 300), +(7280, 8141100, 2040418, 1, 1, 0, 300), +(7281, 8141100, 2040427, 1, 1, 0, 300), +(7282, 8141100, 4130000, 1, 1, 0, 6000), +(7283, 8141100, 4130010, 1, 1, 0, 6000), +(7284, 8141100, 4130016, 1, 1, 0, 6000), +(7285, 8141300, 4000183, 1, 1, 0, 600000), +(7286, 8141300, 2000005, 1, 1, 0, 20000), +(7287, 8141300, 2020013, 1, 1, 0, 20000), +(7288, 8141300, 2002001, 1, 1, 0, 20000), +(7289, 8141300, 2000002, 1, 1, 0, 20000), +(7290, 8141300, 4020006, 1, 1, 0, 9000), +(7291, 8141300, 4004004, 1, 1, 0, 10000), +(7292, 8141300, 4006000, 1, 1, 0, 10000), +(7293, 8141300, 2020015, 1, 1, 0, 20000), +(7294, 8141300, 4010006, 1, 1, 0, 9000), +(7295, 8141300, 2040601, 1, 1, 0, 300), +(7296, 8141300, 2040701, 1, 1, 0, 300), +(7297, 8141300, 1072207, 1, 1, 0, 800), +(7298, 8141300, 1032020, 1, 1, 0, 1000), +(7299, 8141300, 1002271, 1, 1, 0, 1500), +(7300, 8141300, 1072183, 1, 1, 0, 800), +(7301, 8141300, 1102026, 1, 1, 0, 1000), +(7302, 8141300, 1041119, 1, 1, 0, 800), +(7303, 8141300, 1061118, 1, 1, 0, 800), +(7304, 8141300, 1452011, 1, 1, 0, 500), +(7305, 8141300, 1442008, 1, 1, 0, 700), +(7306, 8141300, 1432007, 1, 1, 0, 500), +(7307, 8141300, 1050089, 1, 1, 0, 700), +(7308, 8141300, 1051083, 1, 1, 0, 700), +(7309, 8141300, 1092027, 1, 1, 0, 700), +(7310, 8141300, 1002365, 1, 1, 0, 1500), +(7311, 8141300, 1072224, 1, 1, 0, 800), +(7312, 8141300, 1482011, 1, 1, 0, 500), +(7313, 8141300, 2290098, 1, 1, 0, 500), +(7314, 8141300, 2040618, 1, 1, 0, 300), +(7315, 8141300, 2040512, 1, 1, 0, 300), +(7316, 8141300, 2040627, 1, 1, 0, 300), +(7317, 8141300, 4130006, 1, 1, 0, 6000), +(7318, 8141300, 4130008, 1, 1, 0, 6000), +(7319, 8141300, 4130014, 1, 1, 0, 6000), +(7320, 8142000, 4000149, 1, 1, 0, 600000), +(7321, 8142000, 2000005, 1, 1, 0, 20000), +(7322, 8142000, 2002001, 1, 1, 0, 20000), +(7323, 8142000, 2000002, 1, 1, 0, 20000), +(7324, 8142000, 4020003, 1, 1, 0, 9000), +(7325, 8142000, 4004004, 1, 1, 0, 10000), +(7326, 8142000, 4006000, 1, 1, 0, 10000), +(7327, 8142000, 2020015, 1, 1, 0, 20000), +(7328, 8142000, 2044001, 1, 1, 0, 300), +(7329, 8142000, 2041022, 1, 1, 0, 300), +(7330, 8142000, 1432007, 1, 1, 0, 500), +(7331, 8142000, 1082107, 1, 1, 0, 1000), +(7332, 8142000, 1051056, 1, 1, 0, 700), +(7333, 8142000, 1332023, 1, 1, 0, 500), +(7334, 8142000, 1082112, 1, 1, 0, 1000), +(7335, 8142000, 1082116, 1, 1, 0, 1000), +(7336, 8142000, 1040110, 1, 1, 0, 800), +(7337, 8142000, 1060099, 1, 1, 0, 800), +(7338, 8142000, 1050076, 1, 1, 0, 700), +(7339, 8142000, 1072212, 1, 1, 0, 800), +(7340, 8142000, 1002339, 1, 1, 0, 1500), +(7341, 8142000, 1051078, 1, 1, 0, 700), +(7342, 8142000, 1452013, 1, 1, 0, 500), +(7343, 8142000, 1051067, 1, 1, 0, 700), +(7344, 8142000, 1051096, 1, 1, 0, 700), +(7345, 8142000, 1050091, 1, 1, 0, 700), +(7346, 8142000, 1040111, 1, 1, 0, 800), +(7347, 8142000, 1060100, 1, 1, 0, 800), +(7348, 8142000, 1082133, 1, 1, 0, 1000), +(7349, 8142000, 1492011, 1, 1, 0, 500), +(7350, 8142000, 2040427, 1, 1, 0, 300), +(7351, 8142000, 4130003, 1, 1, 0, 6000), +(7352, 8142000, 4130009, 1, 1, 0, 6000), +(7353, 8142100, 4000184, 1, 1, 0, 600000), +(7354, 8142100, 2000006, 1, 1, 0, 20000), +(7355, 8142100, 2000005, 1, 1, 0, 20000), +(7356, 8142100, 4010004, 1, 1, 0, 9000), +(7357, 8142100, 4020004, 1, 1, 0, 9000), +(7358, 8142100, 4004001, 1, 1, 0, 10000), +(7359, 8142100, 4006000, 1, 1, 0, 10000), +(7360, 8142100, 1412009, 1, 1, 0, 700), +(7361, 8142100, 2040801, 1, 1, 0, 300), +(7362, 8142100, 2040804, 1, 1, 0, 300), +(7363, 8142100, 1422010, 1, 1, 0, 700), +(7364, 8142100, 1092025, 1, 1, 0, 700), +(7365, 8142100, 1072197, 1, 1, 0, 800), +(7366, 8142100, 1040110, 1, 1, 0, 800), +(7367, 8142100, 1060099, 1, 1, 0, 800), +(7368, 8142100, 1032017, 1, 1, 0, 1000), +(7369, 8142100, 1041118, 1, 1, 0, 800), +(7370, 8142100, 1061117, 1, 1, 0, 800), +(7371, 8142100, 1050090, 1, 1, 0, 700), +(7372, 8142100, 1051084, 1, 1, 0, 700), +(7373, 8142100, 1050095, 1, 1, 0, 700), +(7374, 8142100, 1051097, 1, 1, 0, 700), +(7375, 8142100, 4006001, 1, 1, 0, 10000), +(7376, 8142100, 1092026, 1, 1, 0, 700), +(7377, 8142100, 1002325, 1, 1, 0, 1500), +(7378, 8142100, 1092028, 1, 1, 0, 700), +(7379, 8142100, 1072220, 1, 1, 0, 800), +(7380, 8142100, 2290032, 1, 1, 0, 500), +(7381, 8142100, 2290114, 1, 1, 0, 500), +(7382, 8142100, 2040318, 1, 1, 0, 300), +(7383, 8142100, 2043019, 1, 1, 0, 300), +(7384, 8142100, 4130000, 1, 1, 0, 6000), +(7385, 8142100, 4130009, 1, 1, 0, 6000), +(7386, 8143000, 4000150, 1, 1, 0, 600000), +(7387, 8143000, 2000002, 1, 1, 0, 20000), +(7388, 8143000, 2000005, 1, 1, 0, 20000), +(7389, 8143000, 2022003, 1, 1, 0, 20000), +(7390, 8143000, 2002002, 1, 1, 0, 20000), +(7391, 8143000, 4010001, 1, 1, 0, 9000), +(7392, 8143000, 4006001, 1, 1, 0, 10000), +(7393, 8143000, 4010002, 1, 1, 0, 9000), +(7394, 8143000, 2044702, 1, 1, 0, 300), +(7395, 8143000, 2040401, 1, 1, 0, 300), +(7396, 8143000, 1002283, 1, 1, 0, 1500), +(7397, 8143000, 1050064, 1, 1, 0, 700), +(7398, 8143000, 1092016, 1, 1, 0, 700), +(7399, 8143000, 1422012, 1, 1, 0, 700), +(7400, 8143000, 1462010, 1, 1, 0, 500), +(7401, 8143000, 1082122, 1, 1, 0, 1000), +(7402, 8143000, 1082120, 1, 1, 0, 1000), +(7403, 8143000, 1072183, 1, 1, 0, 800), +(7404, 8143000, 1082117, 1, 1, 0, 1000), +(7405, 8143000, 1072179, 1, 1, 0, 800), +(7406, 8143000, 1002328, 1, 1, 0, 1500), +(7407, 8143000, 1051094, 1, 1, 0, 700), +(7408, 8143000, 1002402, 1, 1, 0, 1500), +(7409, 8143000, 1061118, 1, 1, 0, 800), +(7410, 8143000, 1041119, 1, 1, 0, 800), +(7411, 8143000, 1040116, 1, 1, 0, 800), +(7412, 8143000, 1060105, 1, 1, 0, 800), +(7413, 8143000, 1051084, 1, 1, 0, 700), +(7414, 8143000, 1082130, 1, 1, 0, 1000), +(7415, 8143000, 2043019, 1, 1, 0, 300), +(7416, 8143000, 4130011, 1, 1, 0, 6000), +(7417, 8143000, 4130016, 1, 1, 0, 6000), +(7418, 8143000, 4130017, 1, 1, 0, 6000), +(7419, 8150000, 2040002, 1, 1, 0, 3000), +(7420, 8150000, 2040005, 1, 1, 0, 3000), +(7421, 8150000, 2040302, 1, 1, 0, 3000), +(7422, 8150000, 2040402, 1, 1, 0, 3000), +(7423, 8150000, 2040502, 1, 1, 0, 3000), +(7424, 8150000, 2040505, 1, 1, 0, 3000), +(7425, 8150000, 2040602, 1, 1, 0, 3000), +(7426, 8150000, 2040702, 1, 1, 0, 3000), +(7427, 8150000, 2040705, 1, 1, 0, 3000), +(7428, 8150000, 2040708, 1, 1, 0, 3000), +(7429, 8150000, 2040802, 1, 1, 0, 3000), +(7430, 8150000, 2040805, 1, 1, 0, 3000), +(7431, 8150000, 2040902, 1, 1, 0, 3000), +(7432, 8150000, 2043002, 1, 1, 0, 3000), +(7433, 8150000, 2043102, 1, 1, 0, 3000), +(7434, 8150000, 2043202, 1, 1, 0, 3000), +(7435, 8150000, 2043302, 1, 1, 0, 3000), +(7436, 8150000, 2043702, 1, 1, 0, 3000), +(7437, 8150000, 2043802, 1, 1, 0, 3000), +(7438, 8150000, 2044002, 1, 1, 0, 3000), +(7439, 8150000, 2044102, 1, 1, 0, 3000), +(7440, 8150000, 2044202, 1, 1, 0, 3000), +(7441, 8150000, 2044302, 1, 1, 0, 3000), +(7442, 8150000, 2044402, 1, 1, 0, 3000), +(7443, 8150000, 2044502, 1, 1, 0, 3000), +(7444, 8150000, 2044602, 1, 1, 0, 3000), +(7445, 8150000, 2044702, 1, 1, 0, 3000), +(7446, 8150000, 2070007, 1, 1, 0, 2000), +(7447, 8150000, 2044802, 1, 1, 0, 3000), +(7448, 8150000, 2044902, 1, 1, 0, 3000), +(7449, 8150000, 2040029, 1, 1, 0, 3000), +(7450, 8150000, 2040425, 1, 1, 0, 3000), +(7451, 8150000, 2043212, 1, 1, 0, 3000), +(7452, 8150000, 2044012, 1, 1, 0, 3000), +(7453, 8150000, 2044212, 1, 1, 0, 3000), +(7454, 8150100, 4000180, 1, 1, 0, 600000), +(7455, 8150100, 2000006, 1, 1, 0, 20000), +(7456, 8150100, 2022003, 1, 1, 0, 20000), +(7457, 8150100, 4006000, 1, 1, 0, 10000), +(7458, 8150100, 2000005, 1, 1, 0, 20000), +(7459, 8150100, 4006001, 1, 1, 0, 10000), +(7460, 8150100, 2020013, 1, 1, 0, 20000), +(7461, 8150100, 4004002, 1, 1, 0, 10000), +(7462, 8150100, 4010005, 1, 1, 0, 9000), +(7463, 8150100, 2040901, 1, 1, 0, 300), +(7464, 8150100, 2041001, 1, 1, 0, 300), +(7465, 8150100, 1082142, 1, 1, 0, 1000), +(7466, 8150100, 1072192, 1, 1, 0, 800), +(7467, 8150100, 1072204, 1, 1, 0, 800), +(7468, 8150100, 1032017, 1, 1, 0, 1000), +(7469, 8150100, 1040112, 1, 1, 0, 800), +(7470, 8150100, 1060101, 1, 1, 0, 800), +(7471, 8150100, 1322028, 1, 1, 0, 700), +(7472, 8150100, 1332022, 1, 1, 0, 500), +(7473, 8150100, 1002405, 1, 1, 0, 1500), +(7474, 8150100, 2041013, 1, 1, 0, 300), +(7475, 8150100, 1002366, 1, 1, 0, 1500), +(7476, 8150100, 1072214, 1, 1, 0, 800), +(7477, 8150100, 4161018, 1, 1, 0, 6000), +(7478, 8150100, 1072315, 1, 1, 0, 800), +(7479, 8150100, 1052131, 1, 1, 0, 700), +(7480, 8150100, 2044902, 1, 1, 0, 300), +(7481, 8150100, 2290118, 1, 1, 0, 500), +(7482, 8150100, 4130006, 1, 1, 0, 6000), +(7483, 8150100, 4130007, 1, 1, 0, 6000), +(7484, 8150101, 4000181, 1, 1, 0, 600000), +(7485, 8150101, 2000006, 1, 1, 0, 20000), +(7486, 8150101, 2022003, 1, 1, 0, 20000), +(7487, 8150101, 4006000, 1, 1, 0, 10000), +(7488, 8150101, 2000005, 1, 1, 0, 20000), +(7489, 8150101, 4006001, 1, 1, 0, 10000), +(7490, 8150101, 2020013, 1, 1, 0, 20000), +(7491, 8150101, 4010002, 1, 1, 0, 9000), +(7492, 8150101, 4020007, 1, 1, 0, 9000), +(7493, 8150101, 2041022, 1, 1, 0, 300), +(7494, 8150101, 2043001, 1, 1, 0, 300), +(7495, 8150101, 1082143, 1, 1, 0, 1000), +(7496, 8150101, 1072193, 1, 1, 0, 800), +(7497, 8150101, 1072203, 1, 1, 0, 800), +(7498, 8150101, 1002403, 1, 1, 0, 1500), +(7499, 8150101, 1040117, 1, 1, 0, 800), +(7500, 8150101, 1060106, 1, 1, 0, 800), +(7501, 8150101, 1302018, 1, 1, 0, 700), +(7502, 8150101, 1312011, 1, 1, 0, 700), +(7503, 8150101, 1032023, 1, 1, 0, 1000), +(7504, 8150101, 2040301, 1, 1, 0, 300), +(7505, 8150101, 1002326, 1, 1, 0, 1500), +(7506, 8150101, 1072223, 1, 1, 0, 800), +(7507, 8150101, 2290042, 1, 1, 0, 500), +(7508, 8150101, 2290052, 1, 1, 0, 500), +(7509, 8150101, 4161018, 1, 1, 0, 6000), +(7510, 8150101, 1072318, 1, 1, 0, 800), +(7511, 8150101, 2290102, 1, 1, 0, 500), +(7512, 8150101, 2040420, 1, 1, 0, 300), +(7513, 8150101, 2040931, 1, 1, 0, 300), +(7514, 8150101, 2049100, 1, 1, 0, 150), +(7515, 8150101, 4130009, 1, 1, 0, 6000), +(7516, 8150101, 4130010, 1, 1, 0, 6000), +(7517, 8150200, 2000006, 1, 1, 0, 20000), +(7518, 8150200, 2000005, 1, 1, 0, 20000), +(7519, 8150200, 2022003, 1, 1, 0, 20000), +(7520, 8150200, 2020015, 1, 1, 0, 20000), +(7521, 8150200, 4010005, 1, 1, 0, 9000), +(7522, 8150200, 4010002, 1, 1, 0, 9000), +(7523, 8150200, 4004004, 1, 1, 0, 10000), +(7524, 8150200, 1002529, 1, 1, 0, 1500), +(7525, 8150200, 1050102, 1, 1, 0, 700), +(7526, 8150200, 1051105, 1, 1, 0, 700), +(7527, 8150200, 1051092, 1, 1, 0, 700), +(7528, 8150200, 1082135, 1, 1, 0, 1000), +(7529, 8150200, 1072194, 1, 1, 0, 800), +(7530, 8150200, 1092026, 1, 1, 0, 700), +(7531, 8150200, 1402005, 1, 1, 0, 700), +(7532, 8150200, 1462018, 1, 1, 0, 500), +(7533, 8150200, 2040001, 1, 1, 0, 300), +(7534, 8150200, 2043301, 1, 1, 0, 300), +(7535, 8150200, 4000266, 1, 1, 0, 600000), +(7536, 8150200, 4000244, 1, 1, 0, 2000), +(7537, 8150200, 4000245, 1, 1, 0, 2000), +(7538, 8150200, 1082210, 1, 1, 0, 1000), +(7539, 8150200, 1002646, 1, 1, 0, 1500), +(7540, 8150200, 2290100, 1, 1, 0, 500), +(7541, 8150200, 2040425, 1, 1, 0, 300), +(7542, 8150200, 4130005, 1, 1, 0, 6000), +(7543, 8150201, 2000006, 1, 1, 0, 20000), +(7544, 8150201, 2000005, 1, 1, 0, 20000), +(7545, 8150201, 2022003, 1, 1, 0, 20000), +(7546, 8150201, 2020013, 1, 1, 0, 20000), +(7547, 8150201, 4010001, 1, 1, 0, 9000), +(7548, 8150201, 4020002, 1, 1, 0, 9000), +(7549, 8150201, 4004004, 1, 1, 0, 10000), +(7550, 8150201, 1002530, 1, 1, 0, 1500), +(7551, 8150201, 1050098, 1, 1, 0, 700), +(7552, 8150201, 1041122, 1, 1, 0, 800), +(7553, 8150201, 1061121, 1, 1, 0, 800), +(7554, 8150201, 1051101, 1, 1, 0, 700), +(7555, 8150201, 1082158, 1, 1, 0, 1000), +(7556, 8150201, 1072208, 1, 1, 0, 800), +(7557, 8150201, 1092027, 1, 1, 0, 700), +(7558, 8150201, 1402016, 1, 1, 0, 700), +(7559, 8150201, 1382035, 1, 1, 0, 700), +(7560, 8150201, 2040302, 1, 1, 0, 300), +(7561, 8150201, 2040501, 1, 1, 0, 300), +(7562, 8150201, 4000267, 1, 1, 0, 600000), +(7563, 8150201, 4000244, 1, 1, 0, 2000), +(7564, 8150201, 4000245, 1, 1, 0, 2000), +(7565, 8150201, 1082136, 1, 1, 0, 1000), +(7566, 8150201, 2290004, 1, 1, 0, 500), +(7567, 8150201, 2290006, 1, 1, 0, 500), +(7568, 8150201, 2290024, 1, 1, 0, 500), +(7569, 8150201, 2290036, 1, 1, 0, 500), +(7570, 8150201, 2290056, 1, 1, 0, 500), +(7571, 8150201, 2290072, 1, 1, 0, 500), +(7572, 8150201, 2290078, 1, 1, 0, 500), +(7573, 8150201, 1492012, 1, 1, 0, 500), +(7574, 8150201, 2044802, 1, 1, 0, 300), +(7575, 8150201, 2290117, 1, 1, 0, 500), +(7576, 8150201, 2040618, 1, 1, 0, 300), +(7577, 8150201, 2044012, 1, 1, 0, 300), +(7578, 8150201, 2044210, 1, 1, 0, 300), +(7579, 8150201, 2049100, 1, 1, 0, 150), +(7580, 8150201, 4130002, 1, 1, 0, 6000), +(7581, 8150201, 4130015, 1, 1, 0, 6000), +(7582, 8150201, 4130017, 1, 1, 0, 6000), +(7583, 8150300, 2000006, 1, 1, 0, 20000), +(7584, 8150300, 2000005, 1, 1, 0, 20000), +(7585, 8150300, 4004002, 1, 1, 0, 10000), +(7586, 8150300, 4010001, 1, 1, 0, 9000), +(7587, 8150300, 4020000, 1, 1, 0, 9000), +(7588, 8150300, 4006001, 1, 1, 0, 10000), +(7589, 8150300, 1002365, 1, 1, 0, 1500), +(7590, 8150300, 1050089, 1, 1, 0, 700), +(7591, 8150300, 1041118, 1, 1, 0, 800), +(7592, 8150300, 1061116, 1, 1, 0, 800), +(7593, 8150300, 1082129, 1, 1, 0, 1000), +(7594, 8150300, 1072223, 1, 1, 0, 800), +(7595, 8150300, 1452017, 1, 1, 0, 500), +(7596, 8150300, 2040701, 1, 1, 0, 300), +(7597, 8150300, 2040516, 1, 1, 0, 300), +(7598, 8150300, 2043002, 1, 1, 0, 300), +(7599, 8150300, 4000268, 1, 1, 0, 600000), +(7600, 8150300, 4000244, 1, 1, 0, 2000), +(7601, 8150300, 4000245, 1, 1, 0, 2000), +(7602, 8150300, 1052128, 1, 1, 0, 700), +(7603, 8150300, 2044901, 1, 1, 0, 300), +(7604, 8150300, 2290120, 1, 1, 0, 500), +(7605, 8150300, 2043114, 1, 1, 0, 300), +(7606, 8150300, 4130002, 1, 1, 0, 6000), +(7607, 8150300, 4130005, 1, 1, 0, 6000), +(7608, 8150300, 4130013, 1, 1, 0, 6000), +(7609, 8150301, 4000269, 1, 1, 0, 600000), +(7610, 8150301, 2000006, 1, 1, 0, 20000), +(7611, 8150301, 2022003, 1, 1, 0, 20000), +(7612, 8150301, 4006000, 1, 1, 0, 10000), +(7613, 8150301, 2000005, 1, 1, 0, 20000), +(7614, 8150301, 4004003, 1, 1, 0, 10000), +(7615, 8150301, 4020005, 1, 1, 0, 9000), +(7616, 8150301, 4010004, 1, 1, 0, 9000), +(7617, 8150301, 1002532, 1, 1, 0, 1500), +(7618, 8150301, 1050094, 1, 1, 0, 700), +(7619, 8150301, 1051105, 1, 1, 0, 700), +(7620, 8150301, 1082143, 1, 1, 0, 1000), +(7621, 8150301, 1072227, 1, 1, 0, 800), +(7622, 8150301, 1422013, 1, 1, 0, 700), +(7623, 8150301, 1372010, 1, 1, 0, 700), +(7624, 8150301, 2040401, 1, 1, 0, 300), +(7625, 8150301, 2040001, 1, 1, 0, 300), +(7626, 8150301, 2044001, 1, 1, 0, 300), +(7627, 8150301, 4000244, 1, 1, 0, 2000), +(7628, 8150301, 4000245, 1, 1, 0, 2000), +(7629, 8150301, 1082213, 1, 1, 0, 1000), +(7630, 8150301, 2290101, 1, 1, 0, 500), +(7631, 8150301, 2040924, 1, 1, 0, 300), +(7632, 8150301, 4130004, 1, 1, 0, 6000), +(7633, 8150301, 4130013, 1, 1, 0, 6000), +(7634, 8150302, 4000270, 1, 1, 0, 600000), +(7635, 8150302, 2000006, 1, 1, 0, 20000), +(7636, 8150302, 2000005, 1, 1, 0, 20000), +(7637, 8150302, 2022003, 1, 1, 0, 20000), +(7638, 8150302, 2020013, 1, 1, 0, 20000), +(7639, 8150302, 4004000, 1, 1, 0, 10000), +(7640, 8150302, 4020002, 1, 1, 0, 9000), +(7641, 8150302, 4010005, 1, 1, 0, 9000), +(7642, 8150302, 4006001, 1, 1, 0, 10000), +(7643, 8150302, 4006000, 1, 1, 0, 10000), +(7644, 8150302, 1002531, 1, 1, 0, 1500), +(7645, 8150302, 1040115, 1, 1, 0, 800), +(7646, 8150302, 1060107, 1, 1, 0, 800), +(7647, 8150302, 1051095, 1, 1, 0, 700), +(7648, 8150302, 1082127, 1, 1, 0, 1000), +(7649, 8150302, 1072214, 1, 1, 0, 800), +(7650, 8150302, 1332027, 1, 1, 0, 500), +(7651, 8150302, 1442020, 1, 1, 0, 700), +(7652, 8150302, 2040302, 1, 1, 0, 300), +(7653, 8150302, 2044301, 1, 1, 0, 300), +(7654, 8150302, 2044402, 1, 1, 0, 300), +(7655, 8150302, 4131004, 1, 1, 0, 6000), +(7656, 8150302, 4000244, 1, 1, 0, 2000), +(7657, 8150302, 4000245, 1, 1, 0, 2000), +(7658, 8150302, 2290010, 1, 1, 0, 500), +(7659, 8150302, 2290019, 1, 1, 0, 500), +(7660, 8150302, 2290026, 1, 1, 0, 500), +(7661, 8150302, 2290076, 1, 1, 0, 500), +(7662, 8150302, 1482012, 1, 1, 0, 500), +(7663, 8150302, 2290119, 1, 1, 0, 500), +(7664, 8150302, 4130009, 1, 1, 0, 6000), +(7665, 8150302, 4130014, 1, 1, 0, 6000), +(7666, 8150302, 4130017, 1, 1, 0, 6000), +(7667, 8160000, 4000151, 1, 1, 0, 600000), +(7668, 8160000, 2000006, 1, 1, 0, 20000), +(7669, 8160000, 2022003, 1, 1, 0, 20000), +(7670, 8160000, 4006000, 1, 1, 0, 10000), +(7671, 8160000, 4010001, 1, 1, 0, 9000), +(7672, 8160000, 4020002, 1, 1, 0, 9000), +(7673, 8160000, 4004003, 1, 1, 0, 10000), +(7674, 8160000, 2040705, 1, 1, 0, 300), +(7675, 8160000, 2040602, 1, 1, 0, 300), +(7676, 8160000, 1092015, 1, 1, 0, 700), +(7677, 8160000, 1462009, 1, 1, 0, 500), +(7678, 8160000, 1472028, 1, 1, 0, 500), +(7679, 8160000, 1050062, 1, 1, 0, 700), +(7680, 8160000, 1442019, 1, 1, 0, 700), +(7681, 8160000, 1472031, 1, 1, 0, 500), +(7682, 8160000, 1452015, 1, 1, 0, 500), +(7683, 8160000, 1050081, 1, 1, 0, 700), +(7684, 8160000, 1002329, 1, 1, 0, 1500), +(7685, 8160000, 1072179, 1, 1, 0, 800), +(7686, 8160000, 1082123, 1, 1, 0, 1000), +(7687, 8160000, 1051079, 1, 1, 0, 700), +(7688, 8160000, 1032023, 1, 1, 0, 1000), +(7689, 8160000, 1051095, 1, 1, 0, 700), +(7690, 8160000, 1092026, 1, 1, 0, 700), +(7691, 8160000, 1002403, 1, 1, 0, 1500), +(7692, 8160000, 1040118, 1, 1, 0, 800), +(7693, 8160000, 1060107, 1, 1, 0, 800), +(7694, 8160000, 1061119, 1, 1, 0, 800), +(7695, 8160000, 1041120, 1, 1, 0, 800), +(7696, 8160000, 1072213, 1, 1, 0, 800), +(7697, 8160000, 1052131, 1, 1, 0, 700), +(7698, 8160000, 2040924, 1, 1, 0, 300), +(7699, 8160000, 4130003, 1, 1, 0, 6000), +(7700, 8160000, 4130004, 1, 1, 0, 6000), +(7701, 8160000, 4130014, 1, 1, 0, 6000), +(7702, 8170000, 4000152, 1, 1, 0, 600000), +(7703, 8170000, 4010004, 1, 1, 0, 9000), +(7704, 8170000, 4010005, 1, 1, 0, 9000), +(7705, 8170000, 2000006, 1, 1, 0, 20000), +(7706, 8170000, 2000005, 1, 1, 0, 20000), +(7707, 8170000, 4004004, 1, 1, 0, 10000), +(7708, 8170000, 4006001, 1, 1, 0, 10000), +(7709, 8170000, 2040702, 1, 1, 0, 300), +(7710, 8170000, 2040802, 1, 1, 0, 300), +(7711, 8170000, 4020008, 1, 1, 0, 9000), +(7712, 8170000, 2002001, 1, 1, 0, 20000), +(7713, 8170000, 1002281, 1, 1, 0, 1500), +(7714, 8170000, 1092017, 1, 1, 0, 700), +(7715, 8170000, 1332018, 1, 1, 0, 500), +(7716, 8170000, 1332019, 1, 1, 0, 500), +(7717, 8170000, 1050072, 1, 1, 0, 700), +(7718, 8170000, 1452012, 1, 1, 0, 500), +(7719, 8170000, 1072177, 1, 1, 0, 800), +(7720, 8170000, 1041107, 1, 1, 0, 800), +(7721, 8170000, 1061106, 1, 1, 0, 800), +(7722, 8170000, 1050083, 1, 1, 0, 700), +(7723, 8170000, 1051069, 1, 1, 0, 700); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(7724, 8170000, 1072211, 1, 1, 0, 800), +(7725, 8170000, 1072178, 1, 1, 0, 800), +(7726, 8170000, 1462013, 1, 1, 0, 500), +(7727, 8170000, 1102031, 1, 1, 0, 1000), +(7728, 8170000, 1050095, 1, 1, 0, 700), +(7729, 8170000, 1092027, 1, 1, 0, 700), +(7730, 8170000, 1002404, 1, 1, 0, 1500), +(7731, 8170000, 1032017, 1, 1, 0, 1000), +(7732, 8170000, 1040113, 1, 1, 0, 800), +(7733, 8170000, 1060102, 1, 1, 0, 800), +(7734, 8170000, 1072227, 1, 1, 0, 800), +(7735, 8170000, 2040512, 1, 1, 0, 300), +(7736, 8170000, 4130001, 1, 1, 0, 6000), +(7737, 8170000, 4130003, 1, 1, 0, 6000), +(7738, 8170000, 4130008, 1, 1, 0, 6000), +(7739, 8180000, 2000005, 1, 1, 0, 999999), +(7740, 8180000, 2000004, 1, 1, 0, 999999), +(7741, 8180000, 1302056, 1, 1, 0, 7000), +(7742, 8180000, 1312030, 1, 1, 0, 7000), +(7743, 8180000, 1322045, 1, 1, 0, 7000), +(7744, 8180000, 1332051, 1, 1, 0, 5000), +(7745, 8180000, 1332052, 1, 1, 0, 5000), +(7746, 8180000, 1372010, 1, 1, 0, 7000), +(7747, 8180000, 1382035, 1, 1, 0, 7000), +(7748, 8180000, 1402035, 1, 1, 0, 7000), +(7749, 8180000, 1412021, 1, 1, 0, 7000), +(7750, 8180000, 1422027, 1, 1, 0, 7000), +(7751, 8180000, 1432030, 1, 1, 0, 5000), +(7752, 8180000, 1442044, 1, 1, 0, 7000), +(7753, 8180000, 1452019, 1, 1, 0, 5000), +(7754, 8180000, 1462015, 1, 1, 0, 5000), +(7755, 8180000, 1472053, 1, 1, 0, 5000), +(7756, 8180000, 2043001, 1, 1, 0, 3000), +(7757, 8180000, 2043101, 1, 1, 0, 3000), +(7758, 8180000, 2043201, 1, 1, 0, 3000), +(7759, 8180000, 2043301, 1, 1, 0, 3000), +(7760, 8180000, 2043701, 1, 1, 0, 3000), +(7761, 8180000, 2043801, 1, 1, 0, 3000), +(7762, 8180000, 2044001, 1, 1, 0, 3000), +(7763, 8180000, 2044101, 1, 1, 0, 3000), +(7764, 8180000, 2044301, 1, 1, 0, 3000), +(7765, 8180000, 2044201, 1, 1, 0, 3000), +(7766, 8180000, 2044401, 1, 1, 0, 3000), +(7767, 8180000, 2044501, 1, 1, 0, 3000), +(7768, 8180000, 2044601, 1, 1, 0, 3000), +(7769, 8180000, 2044701, 1, 1, 0, 3000), +(7770, 8180000, 2040805, 1, 1, 0, 3000), +(7771, 8180000, 4004000, 1, 1, 0, 100000), +(7772, 8180000, 4004001, 1, 1, 0, 100000), +(7773, 8180000, 4004002, 1, 1, 0, 100000), +(7774, 8180000, 4004003, 1, 1, 0, 100000), +(7775, 8180000, 4000235, 1, 1, 0, 600000), +(7776, 8180000, 4000244, 1, 1, 0, 20000), +(7777, 8180000, 4000245, 1, 1, 0, 20000), +(7778, 8180000, 2290003, 1, 1, 0, 5000), +(7779, 8180000, 2290015, 1, 1, 0, 5000), +(7780, 8180000, 2290030, 1, 1, 0, 5000), +(7781, 8180000, 2290035, 1, 1, 0, 5000), +(7782, 8180000, 2290036, 1, 1, 0, 5000), +(7783, 8180000, 2290063, 1, 1, 0, 5000), +(7784, 8180000, 2290080, 1, 1, 0, 5000), +(7785, 8180000, 1482012, 1, 1, 0, 5000), +(7786, 8180000, 1492012, 1, 1, 0, 5000), +(7787, 8180000, 2044801, 1, 1, 0, 3000), +(7788, 8180000, 2044901, 1, 1, 0, 3000), +(7789, 8180000, 2290098, 1, 1, 0, 5000), +(7790, 8180000, 2290101, 1, 1, 0, 5000), +(7791, 8180000, 2290117, 1, 1, 0, 5000), +(7792, 8180000, 2040328, 1, 1, 0, 3000), +(7793, 8180000, 2040824, 1, 1, 0, 3000), +(7794, 8180000, 2043112, 1, 1, 0, 3000), +(7795, 8180000, 2044014, 1, 1, 0, 3000), +(7796, 8180000, 2049000, 1, 1, 0, 1500), +(7797, 8180001, 2000005, 1, 1, 0, 999999), +(7798, 8180001, 2000004, 1, 1, 0, 999999), +(7799, 8180001, 1302056, 1, 1, 0, 7000), +(7800, 8180001, 1312030, 1, 1, 0, 7000), +(7801, 8180001, 1322045, 1, 1, 0, 7000), +(7802, 8180001, 1332051, 1, 1, 0, 5000), +(7803, 8180001, 1332052, 1, 1, 0, 5000), +(7804, 8180001, 1372010, 1, 1, 0, 7000), +(7805, 8180001, 1382035, 1, 1, 0, 7000), +(7806, 8180001, 1402035, 1, 1, 0, 7000), +(7807, 8180001, 1412021, 1, 1, 0, 7000), +(7808, 8180001, 1422027, 1, 1, 0, 7000), +(7809, 8180001, 1432030, 1, 1, 0, 5000), +(7810, 8180001, 1442044, 1, 1, 0, 7000), +(7811, 8180001, 1452019, 1, 1, 0, 5000), +(7812, 8180001, 1462015, 1, 1, 0, 5000), +(7813, 8180001, 1472053, 1, 1, 0, 5000), +(7814, 8180001, 2040002, 1, 1, 0, 3000), +(7815, 8180001, 2040005, 1, 1, 0, 3000), +(7816, 8180001, 2040302, 1, 1, 0, 3000), +(7817, 8180001, 2040402, 1, 1, 0, 3000), +(7818, 8180001, 2040502, 1, 1, 0, 3000), +(7819, 8180001, 2040505, 1, 1, 0, 3000), +(7820, 8180001, 2040513, 1, 1, 0, 3000), +(7821, 8180001, 2040516, 1, 1, 0, 3000), +(7822, 8180001, 2040602, 1, 1, 0, 3000), +(7823, 8180001, 2040702, 1, 1, 0, 3000), +(7824, 8180001, 2040705, 1, 1, 0, 3000), +(7825, 8180001, 2040708, 1, 1, 0, 3000), +(7826, 8180001, 2040802, 1, 1, 0, 3000), +(7827, 8180001, 2040902, 1, 1, 0, 3000), +(7828, 8180001, 4004000, 1, 1, 0, 100000), +(7829, 8180001, 4004001, 1, 1, 0, 100000), +(7830, 8180001, 4004002, 1, 1, 0, 100000), +(7831, 8180001, 4004003, 1, 1, 0, 100000), +(7832, 8180001, 4000243, 1, 1, 0, 600000), +(7833, 8180001, 4000244, 1, 1, 0, 20000), +(7834, 8180001, 4000245, 1, 1, 0, 20000), +(7835, 8180001, 2290018, 1, 1, 0, 5000), +(7836, 8180001, 2290019, 1, 1, 0, 5000), +(7837, 8180001, 2290032, 1, 1, 0, 5000), +(7838, 8180001, 2290042, 1, 1, 0, 5000), +(7839, 8180001, 2290059, 1, 1, 0, 5000), +(7840, 8180001, 2290069, 1, 1, 0, 5000), +(7841, 8180001, 2290072, 1, 1, 0, 5000), +(7842, 8180001, 2290092, 1, 1, 0, 5000), +(7843, 8180001, 1482012, 1, 1, 0, 5000), +(7844, 8180001, 1492012, 1, 1, 0, 5000), +(7845, 8180001, 2290100, 1, 1, 0, 5000), +(7846, 8180001, 2290102, 1, 1, 0, 5000), +(7847, 8180001, 2290119, 1, 1, 0, 5000), +(7848, 8180001, 2040618, 1, 1, 0, 3000), +(7849, 8180001, 2040532, 1, 1, 0, 3000), +(7850, 8180001, 2040925, 1, 1, 0, 3000), +(7851, 8180001, 2043114, 1, 1, 0, 3000), +(7852, 8180001, 2043214, 1, 1, 0, 3000), +(7853, 8180001, 2044112, 1, 1, 0, 3000), +(7854, 8180001, 2049100, 1, 1, 0, 3000), +(7855, 8190000, 4000272, 1, 1, 0, 600000), +(7856, 8190000, 2000006, 1, 1, 0, 20000), +(7857, 8190000, 2000005, 1, 1, 0, 20000), +(7858, 8190000, 2022003, 1, 1, 0, 20000), +(7859, 8190000, 2020013, 1, 1, 0, 20000), +(7860, 8190000, 4004001, 1, 1, 0, 10000), +(7861, 8190000, 4010000, 1, 1, 0, 9000), +(7862, 8190000, 4020004, 1, 1, 0, 9000), +(7863, 8190000, 4006001, 1, 1, 0, 10000), +(7864, 8190000, 4006000, 1, 1, 0, 10000), +(7865, 8190000, 1002398, 1, 1, 0, 1500), +(7866, 8190000, 1040111, 1, 1, 0, 800), +(7867, 8190000, 1060102, 1, 1, 0, 800), +(7868, 8190000, 1051092, 1, 1, 0, 700), +(7869, 8190000, 1082158, 1, 1, 0, 1000), +(7870, 8190000, 1072228, 1, 1, 0, 800), +(7871, 8190000, 1332052, 1, 1, 0, 500), +(7872, 8190000, 1402016, 1, 1, 0, 700), +(7873, 8190000, 2044702, 1, 1, 0, 300), +(7874, 8190000, 2040004, 1, 1, 0, 300), +(7875, 8190000, 4000244, 1, 1, 0, 2000), +(7876, 8190000, 4000245, 1, 1, 0, 2000), +(7877, 8190000, 2290030, 1, 1, 0, 500), +(7878, 8190000, 2290044, 1, 1, 0, 500), +(7879, 8190000, 2290054, 1, 1, 0, 500), +(7880, 8190000, 2290066, 1, 1, 0, 500), +(7881, 8190000, 2290092, 1, 1, 0, 500), +(7882, 8190000, 2290103, 1, 1, 0, 500), +(7883, 8190000, 1002646, 1, 1, 0, 1500), +(7884, 8190000, 2040419, 1, 1, 0, 300), +(7885, 8190000, 2044110, 1, 1, 0, 300), +(7886, 8190000, 2049000, 1, 1, 0, 150), +(7887, 8190000, 4130004, 1, 1, 0, 6000), +(7888, 8190000, 4130006, 1, 1, 0, 6000), +(7889, 8190000, 4130008, 1, 1, 0, 6000), +(7890, 8190002, 4000271, 1, 1, 0, 600000), +(7891, 8190002, 2022003, 1, 1, 0, 20000), +(7892, 8190002, 2000006, 1, 1, 0, 20000), +(7893, 8190002, 2000005, 1, 1, 0, 20000), +(7894, 8190002, 4004003, 1, 1, 0, 10000), +(7895, 8190002, 4020007, 1, 1, 0, 9000), +(7896, 8190002, 4010005, 1, 1, 0, 9000), +(7897, 8190002, 4006001, 1, 1, 0, 10000), +(7898, 8190002, 4006000, 1, 1, 0, 10000), +(7899, 8190002, 1002406, 1, 1, 0, 1500), +(7900, 8190002, 1051101, 1, 1, 0, 700), +(7901, 8190002, 1050097, 1, 1, 0, 700), +(7902, 8190002, 1082139, 1, 1, 0, 1000), +(7903, 8190002, 1072225, 1, 1, 0, 800), +(7904, 8190002, 1032023, 1, 1, 0, 1000), +(7905, 8190002, 1412021, 1, 1, 0, 700), +(7906, 8190002, 1452019, 1, 1, 0, 500), +(7907, 8190002, 2043801, 1, 1, 0, 300), +(7908, 8190002, 2041023, 1, 1, 0, 300), +(7909, 8190002, 2040707, 1, 1, 0, 300), +(7910, 8190002, 4130013, 1, 1, 0, 6000), +(7911, 8190002, 4000244, 1, 1, 0, 2000), +(7912, 8190002, 4000245, 1, 1, 0, 2000), +(7913, 8190002, 1082152, 1, 1, 0, 1000), +(7914, 8190002, 2290000, 1, 1, 0, 500), +(7915, 8190002, 2290008, 1, 1, 0, 500), +(7916, 8190002, 2290018, 1, 1, 0, 500), +(7917, 8190002, 2290038, 1, 1, 0, 500), +(7918, 8190002, 2290060, 1, 1, 0, 500), +(7919, 8190002, 2290080, 1, 1, 0, 500), +(7920, 8190002, 1492012, 1, 1, 0, 500), +(7921, 8190002, 2290124, 1, 1, 0, 500), +(7922, 8190002, 1082213, 1, 1, 0, 1000), +(7923, 8190002, 2044901, 1, 1, 0, 300), +(7924, 8190003, 4000274, 1, 1, 0, 600000), +(7925, 8190003, 2022003, 1, 1, 0, 20000), +(7926, 8190003, 2000006, 1, 1, 0, 20000), +(7927, 8190003, 2000005, 1, 1, 0, 20000), +(7928, 8190003, 4004001, 1, 1, 0, 10000), +(7929, 8190003, 4010001, 1, 1, 0, 9000), +(7930, 8190003, 4020001, 1, 1, 0, 9000), +(7931, 8190003, 4006001, 1, 1, 0, 10000), +(7932, 8190003, 4006000, 1, 1, 0, 10000), +(7933, 8190003, 1002377, 1, 1, 0, 1500), +(7934, 8190003, 1050107, 1, 1, 0, 700), +(7935, 8190003, 1050103, 1, 1, 0, 700), +(7936, 8190003, 1082135, 1, 1, 0, 1000), +(7937, 8190003, 1072221, 1, 1, 0, 800), +(7938, 8190003, 1032017, 1, 1, 0, 1000), +(7939, 8190003, 1422027, 1, 1, 0, 700), +(7940, 8190003, 1332051, 1, 1, 0, 500), +(7941, 8190003, 2044602, 1, 1, 0, 300), +(7942, 8190003, 2043301, 1, 1, 0, 300), +(7943, 8190003, 2040805, 1, 1, 0, 300), +(7944, 8190003, 4000244, 1, 1, 0, 2000), +(7945, 8190003, 4000245, 1, 1, 0, 2000), +(7946, 8190003, 1082140, 1, 1, 0, 1000), +(7947, 8190003, 2290012, 1, 1, 0, 500), +(7948, 8190003, 2290014, 1, 1, 0, 500), +(7949, 8190003, 2290050, 1, 1, 0, 500), +(7950, 8190003, 2290062, 1, 1, 0, 500), +(7951, 8190003, 2290070, 1, 1, 0, 500), +(7952, 8190003, 2290086, 1, 1, 0, 500), +(7953, 8190003, 1482011, 1, 1, 0, 500), +(7954, 8190003, 1072318, 1, 1, 0, 800), +(7955, 8190003, 2044902, 1, 1, 0, 300), +(7956, 8190003, 2290108, 1, 1, 0, 500), +(7957, 8190003, 2040534, 1, 1, 0, 300), +(7958, 8190003, 2040627, 1, 1, 0, 300), +(7959, 8190003, 2049000, 1, 1, 0, 150), +(7960, 8190003, 4130001, 1, 1, 0, 6000), +(7961, 8190003, 4130014, 1, 1, 0, 6000), +(7962, 8190004, 4000273, 1, 1, 0, 600000), +(7963, 8190004, 2022003, 1, 1, 0, 20000), +(7964, 8190004, 2000006, 1, 1, 0, 20000), +(7965, 8190004, 2000005, 1, 1, 0, 20000), +(7966, 8190004, 4004004, 1, 1, 0, 10000), +(7967, 8190004, 4020006, 1, 1, 0, 9000), +(7968, 8190004, 4020002, 1, 1, 0, 9000), +(7969, 8190004, 4006001, 1, 1, 0, 10000), +(7970, 8190004, 4006000, 1, 1, 0, 10000), +(7971, 8190004, 1002380, 1, 1, 0, 1500), +(7972, 8190004, 1051102, 1, 1, 0, 700), +(7973, 8190004, 1040121, 1, 1, 0, 800), +(7974, 8190004, 1060109, 1, 1, 0, 800), +(7975, 8190004, 1082151, 1, 1, 0, 1000), +(7976, 8190004, 1072215, 1, 1, 0, 800), +(7977, 8190004, 1322045, 1, 1, 0, 700), +(7978, 8190004, 1302056, 1, 1, 0, 700), +(7979, 8190004, 2041004, 1, 1, 0, 300), +(7980, 8190004, 2041013, 1, 1, 0, 300), +(7981, 8190004, 2044201, 1, 1, 0, 300), +(7982, 8190004, 4000244, 1, 1, 0, 2000), +(7983, 8190004, 4000245, 1, 1, 0, 2000), +(7984, 8190004, 2290002, 1, 1, 0, 500), +(7985, 8190004, 2290009, 1, 1, 0, 500), +(7986, 8190004, 2290034, 1, 1, 0, 500), +(7987, 8190004, 2290058, 1, 1, 0, 500), +(7988, 8190004, 2290068, 1, 1, 0, 500), +(7989, 8190004, 2290090, 1, 1, 0, 500), +(7990, 8190004, 2290053, 1, 1, 0, 500), +(7991, 8190004, 1482012, 1, 1, 0, 500), +(7992, 8190004, 2044801, 1, 1, 0, 300), +(7993, 8190004, 2290121, 1, 1, 0, 500), +(7994, 8190004, 2040326, 1, 1, 0, 300), +(7995, 8190004, 2040530, 1, 1, 0, 300), +(7996, 8190004, 2040924, 1, 1, 0, 300), +(7997, 8190004, 2044214, 1, 1, 0, 300), +(7998, 8190004, 4130010, 1, 1, 0, 6000), +(7999, 8200000, 4000443, 1, 1, 0, 600000), +(8000, 8200000, 1002640, 1, 1, 0, 1500), +(8001, 8200000, 1041107, 1, 1, 0, 800), +(8002, 8200000, 1040110, 1, 1, 0, 800), +(8003, 8200000, 1082112, 1, 1, 0, 1000), +(8004, 8200000, 1072179, 1, 1, 0, 800), +(8005, 8200000, 1102028, 1, 1, 0, 1000), +(8006, 8200000, 1402015, 1, 1, 0, 700), +(8007, 8200000, 1452011, 1, 1, 0, 500), +(8008, 8200000, 4004002, 1, 1, 0, 10000), +(8009, 8200000, 4010000, 1, 1, 0, 9000), +(8010, 8200000, 4020000, 1, 1, 0, 9000), +(8011, 8200000, 4130000, 1, 1, 0, 6000), +(8012, 8200000, 4130013, 1, 1, 0, 6000), +(8013, 8200000, 2330004, 1, 1, 0, 500), +(8014, 8200000, 2040532, 1, 1, 0, 300), +(8015, 8200000, 2044112, 1, 1, 0, 300), +(8016, 8200000, 2044807, 1, 1, 0, 300), +(8017, 8200001, 4000444, 1, 1, 0, 600000), +(8018, 8200001, 4000446, 1, 1, 0, 10000), +(8019, 8200001, 2000006, 1, 1, 0, 20000), +(8020, 8200001, 2022003, 1, 1, 0, 20000), +(8021, 8200001, 4004003, 1, 1, 0, 10000), +(8022, 8200001, 4010001, 1, 1, 0, 9000), +(8023, 8200001, 4020001, 1, 1, 0, 9000), +(8024, 8200001, 1002532, 1, 1, 0, 1500), +(8025, 8200001, 1072205, 1, 1, 0, 800), +(8026, 8200001, 1082144, 1, 1, 0, 1000), +(8027, 8200001, 1052128, 1, 1, 0, 700), +(8028, 8200001, 1051097, 1, 1, 0, 700), +(8029, 8200001, 1382035, 1, 1, 0, 700), +(8030, 8200001, 1402005, 1, 1, 0, 700), +(8031, 8200001, 1312015, 1, 1, 0, 700), +(8032, 8200001, 4130001, 1, 1, 0, 6000), +(8033, 8200001, 4130014, 1, 1, 0, 6000), +(8034, 8200001, 2043301, 1, 1, 0, 300), +(8035, 8200001, 2040321, 1, 1, 0, 300), +(8036, 8200001, 2040029, 1, 1, 0, 300), +(8037, 8200001, 2290050, 1, 1, 0, 500), +(8038, 8200002, 4000445, 1, 1, 0, 600000), +(8039, 8200002, 4000446, 1, 1, 0, 10000), +(8040, 8200002, 2000006, 1, 1, 0, 20000), +(8041, 8200002, 2022003, 1, 1, 0, 20000), +(8042, 8200002, 4004000, 1, 1, 0, 10000), +(8043, 8200002, 4010002, 1, 1, 0, 9000), +(8044, 8200002, 4020002, 1, 1, 0, 9000), +(8045, 8200002, 1040113, 1, 1, 0, 800), +(8046, 8200002, 1060102, 1, 1, 0, 800), +(8047, 8200002, 1002366, 1, 1, 0, 1500), +(8048, 8200002, 1072195, 1, 1, 0, 800), +(8049, 8200002, 1082210, 1, 1, 0, 1000), +(8050, 8200002, 1051085, 1, 1, 0, 700), +(8051, 8200002, 1452017, 1, 1, 0, 500), +(8052, 8200002, 1402016, 1, 1, 0, 700), +(8053, 8200002, 1442044, 1, 1, 0, 700), +(8054, 8200002, 1092027, 1, 1, 0, 700), +(8055, 8200002, 4130002, 1, 1, 0, 6000), +(8056, 8200002, 4130015, 1, 1, 0, 6000), +(8057, 8200002, 2330004, 1, 1, 0, 500), +(8058, 8200002, 2040707, 1, 1, 0, 300), +(8059, 8200002, 2044212, 1, 1, 0, 300), +(8060, 8200002, 2044401, 1, 1, 0, 300), +(8061, 8200002, 2290066, 1, 1, 0, 500), +(8062, 8200003, 4000447, 1, 1, 0, 600000), +(8063, 8200003, 4000459, 1, 1, 0, 20000), +(8064, 8200003, 2000006, 1, 1, 0, 20000), +(8065, 8200003, 2022003, 1, 1, 0, 20000), +(8066, 8200003, 4004001, 1, 1, 0, 10000), +(8067, 8200003, 4010006, 1, 1, 0, 9000), +(8068, 8200003, 4020006, 1, 1, 0, 9000), +(8069, 8200003, 1082130, 1, 1, 0, 1000), +(8070, 8200003, 1050095, 1, 1, 0, 700), +(8071, 8200003, 1002405, 1, 1, 0, 1500), +(8072, 8200003, 1072315, 1, 1, 0, 800), +(8073, 8200003, 1041118, 1, 1, 0, 800), +(8074, 8200003, 1061117, 1, 1, 0, 800), +(8075, 8200003, 1332027, 1, 1, 0, 500), +(8076, 8200003, 1482012, 1, 1, 0, 500), +(8077, 8200003, 1412010, 1, 1, 0, 700), +(8078, 8200003, 4130003, 1, 1, 0, 6000), +(8079, 8200003, 4130016, 1, 1, 0, 6000), +(8080, 8200003, 2330004, 1, 1, 0, 500), +(8081, 8200003, 2044412, 1, 1, 0, 300), +(8082, 8200003, 2044702, 1, 1, 0, 300), +(8083, 8200003, 2040927, 1, 1, 0, 300), +(8084, 8200003, 2290056, 1, 1, 0, 500), +(8085, 8200004, 4000448, 1, 1, 0, 600000), +(8086, 8200004, 4000459, 1, 1, 0, 20000), +(8087, 8200004, 2000006, 1, 1, 0, 20000), +(8088, 8200004, 2022003, 1, 1, 0, 20000), +(8089, 8200004, 2020015, 1, 1, 0, 20000), +(8090, 8200004, 4004001, 1, 1, 0, 10000), +(8091, 8200004, 4010001, 1, 1, 0, 9000), +(8092, 8200004, 4020008, 1, 1, 0, 9000), +(8093, 8200004, 1072198, 1, 1, 0, 800), +(8094, 8200004, 1082132, 1, 1, 0, 1000), +(8095, 8200004, 1050091, 1, 1, 0, 700), +(8096, 8200004, 1002326, 1, 1, 0, 1500), +(8097, 8200004, 1041121, 1, 1, 0, 800), +(8098, 8200004, 1061120, 1, 1, 0, 800), +(8099, 8200004, 1482011, 1, 1, 0, 500), +(8100, 8200004, 1302056, 1, 1, 0, 700), +(8101, 8200004, 1422013, 1, 1, 0, 700), +(8102, 8200004, 1092036, 1, 1, 0, 700), +(8103, 8200004, 4130004, 1, 1, 0, 6000), +(8104, 8200004, 4130017, 1, 1, 0, 6000), +(8105, 8200004, 2040025, 1, 1, 0, 300), +(8106, 8200004, 2044312, 1, 1, 0, 300), +(8107, 8200004, 2044901, 1, 1, 0, 300), +(8108, 8200004, 2290073, 1, 1, 0, 500), +(8109, 8200005, 4000449, 1, 1, 0, 600000), +(8110, 8200005, 4000451, 1, 1, 0, 10000), +(8111, 8200005, 2000006, 1, 1, 0, 20000), +(8112, 8200005, 2022003, 1, 1, 0, 20000), +(8113, 8200005, 2020013, 1, 1, 0, 20000), +(8114, 8200005, 4004000, 1, 1, 0, 10000), +(8115, 8200005, 4010004, 1, 1, 0, 9000), +(8116, 8200005, 4020001, 1, 1, 0, 9000), +(8117, 8200005, 1072207, 1, 1, 0, 800), +(8118, 8200005, 1082127, 1, 1, 0, 1000), +(8119, 8200005, 1040118, 1, 1, 0, 800), +(8120, 8200005, 1060107, 1, 1, 0, 800), +(8121, 8200005, 1002643, 1, 1, 0, 1500), +(8122, 8200005, 1051103, 1, 1, 0, 700), +(8123, 8200005, 1302023, 1, 1, 0, 700), +(8124, 8200005, 1322029, 1, 1, 0, 700), +(8125, 8200005, 4130005, 1, 1, 0, 6000), +(8126, 8200005, 2044012, 1, 1, 0, 300), +(8127, 8200005, 2040931, 1, 1, 0, 300), +(8128, 8200005, 2290079, 1, 1, 0, 500), +(8129, 8200006, 4000450, 1, 1, 0, 600000), +(8130, 8200006, 4000451, 1, 1, 0, 10000), +(8131, 8200006, 2000006, 1, 1, 0, 20000), +(8132, 8200006, 2000005, 1, 1, 0, 20000), +(8133, 8200006, 2022003, 1, 1, 0, 20000), +(8134, 8200006, 4004003, 1, 1, 0, 10000), +(8135, 8200006, 4010003, 1, 1, 0, 9000), +(8136, 8200006, 4020003, 1, 1, 0, 9000), +(8137, 8200006, 1002378, 1, 1, 0, 1500), +(8138, 8200006, 1072227, 1, 1, 0, 800), +(8139, 8200006, 1082135, 1, 1, 0, 1000), +(8140, 8200006, 1052131, 1, 1, 0, 700), +(8141, 8200006, 1051107, 1, 1, 0, 700), +(8142, 8200006, 1382035, 1, 1, 0, 700), +(8143, 8200006, 1462017, 1, 1, 0, 500), +(8144, 8200006, 1412021, 1, 1, 0, 700), +(8145, 8200006, 1032023, 1, 1, 0, 1000), +(8146, 8200006, 4130006, 1, 1, 0, 6000), +(8147, 8200006, 2040317, 1, 1, 0, 300), +(8148, 8200006, 2040824, 1, 1, 0, 300), +(8149, 8200006, 2290077, 1, 1, 0, 500), +(8150, 8200007, 4000452, 1, 1, 0, 600000), +(8151, 8200007, 4000459, 1, 1, 0, 20000), +(8152, 8200007, 2000006, 1, 1, 0, 20000), +(8153, 8200007, 2022003, 1, 1, 0, 20000), +(8154, 8200007, 4004002, 1, 1, 0, 10000), +(8155, 8200007, 4010004, 1, 1, 0, 9000), +(8156, 8200007, 4020004, 1, 1, 0, 9000), +(8157, 8200007, 1040121, 1, 1, 0, 800), +(8158, 8200007, 1041124, 1, 1, 0, 800), +(8159, 8200007, 1002400, 1, 1, 0, 1500), +(8160, 8200007, 1072214, 1, 1, 0, 800), +(8161, 8200007, 1082213, 1, 1, 0, 1000), +(8162, 8200007, 1051091, 1, 1, 0, 700), +(8163, 8200007, 1462018, 1, 1, 0, 500), +(8164, 8200007, 1332052, 1, 1, 0, 500), +(8165, 8200007, 1422027, 1, 1, 0, 700), +(8166, 8200007, 4130007, 1, 1, 0, 6000), +(8167, 8200007, 2040701, 1, 1, 0, 300), +(8168, 8200007, 2044301, 1, 1, 0, 300), +(8169, 8200007, 2040302, 1, 1, 0, 300), +(8170, 8200007, 2290007, 1, 1, 0, 500), +(8171, 8200008, 4000453, 1, 1, 0, 600000), +(8172, 8200008, 4000459, 1, 1, 0, 20000), +(8173, 8200008, 2000006, 1, 1, 0, 20000), +(8174, 8200008, 2022003, 1, 1, 0, 20000), +(8175, 8200008, 4004000, 1, 1, 0, 10000), +(8176, 8200008, 4010005, 1, 1, 0, 9000), +(8177, 8200008, 4020005, 1, 1, 0, 9000), +(8178, 8200008, 1082140, 1, 1, 0, 1000), +(8179, 8200008, 1050104, 1, 1, 0, 700), +(8180, 8200008, 1002407, 1, 1, 0, 1500), +(8181, 8200008, 1072318, 1, 1, 0, 800), +(8182, 8200008, 1060111, 1, 1, 0, 800), +(8183, 8200008, 1061123, 1, 1, 0, 800), +(8184, 8200008, 1472033, 1, 1, 0, 500), +(8185, 8200008, 1442020, 1, 1, 0, 700), +(8186, 8200008, 1472053, 1, 1, 0, 500), +(8187, 8200008, 4130008, 1, 1, 0, 6000), +(8188, 8200008, 2044101, 1, 1, 0, 300), +(8189, 8200008, 2044501, 1, 1, 0, 300), +(8190, 8200008, 2290006, 1, 1, 0, 500), +(8191, 8200009, 4000454, 1, 1, 0, 600000), +(8192, 8200009, 4000456, 1, 1, 0, 10000), +(8193, 8200009, 2000006, 1, 1, 0, 20000), +(8194, 8200009, 2022003, 1, 1, 0, 20000), +(8195, 8200009, 4004001, 1, 1, 0, 10000), +(8196, 8200009, 4010000, 1, 1, 0, 9000), +(8197, 8200009, 4020007, 1, 1, 0, 9000), +(8198, 8200009, 1072221, 1, 1, 0, 800), +(8199, 8200009, 1082153, 1, 1, 0, 1000), +(8200, 8200009, 1050108, 1, 1, 0, 700), +(8201, 8200009, 1002381, 1, 1, 0, 1500), +(8202, 8200009, 1492011, 1, 1, 0, 500), +(8203, 8200009, 1432011, 1, 1, 0, 500), +(8204, 8200009, 1402035, 1, 1, 0, 700), +(8205, 8200009, 4130000, 1, 1, 0, 6000), +(8206, 8200009, 4130009, 1, 1, 0, 6000), +(8207, 8200009, 2044601, 1, 1, 0, 300), +(8208, 8200009, 2044001, 1, 1, 0, 300), +(8209, 8200009, 2040924, 1, 1, 0, 300), +(8210, 8200009, 2290039, 1, 1, 0, 500), +(8211, 8200010, 4000455, 1, 1, 0, 600000), +(8212, 8200010, 4000456, 1, 1, 0, 10000), +(8213, 8200010, 2000006, 1, 1, 0, 20000), +(8214, 8200010, 2000005, 1, 1, 0, 20000), +(8215, 8200010, 2022003, 1, 1, 0, 20000), +(8216, 8200010, 4004003, 1, 1, 0, 10000), +(8217, 8200010, 4010002, 1, 1, 0, 9000), +(8218, 8200010, 4020000, 1, 1, 0, 9000), +(8219, 8200010, 1072225, 1, 1, 0, 800), +(8220, 8200010, 1082158, 1, 1, 0, 1000), +(8221, 8200010, 1050099, 1, 1, 0, 700), +(8222, 8200010, 1002646, 1, 1, 0, 1500), +(8223, 8200010, 1432030, 1, 1, 0, 500), +(8224, 8200010, 1312030, 1, 1, 0, 700), +(8225, 8200010, 4130001, 1, 1, 0, 6000), +(8226, 8200010, 4130010, 1, 1, 0, 6000), +(8227, 8200010, 2043801, 1, 1, 0, 300), +(8228, 8200010, 2041022, 1, 1, 0, 300), +(8229, 8200010, 2290089, 1, 1, 0, 500), +(8230, 8200011, 4000457, 1, 1, 0, 600000), +(8231, 8200011, 4000459, 1, 1, 0, 20000), +(8232, 8200011, 2000006, 1, 1, 0, 20000), +(8233, 8200011, 2000005, 1, 1, 0, 20000), +(8234, 8200011, 2022003, 1, 1, 0, 20000), +(8235, 8200011, 4004002, 1, 1, 0, 10000), +(8236, 8200011, 4010003, 1, 1, 0, 9000), +(8237, 8200011, 4020002, 1, 1, 0, 9000), +(8238, 8200011, 1002379, 1, 1, 0, 1500), +(8239, 8200011, 1072229, 1, 1, 0, 800), +(8240, 8200011, 1082138, 1, 1, 0, 1000), +(8241, 8200011, 1052131, 1, 1, 0, 700), +(8242, 8200011, 1372010, 1, 1, 0, 700), +(8243, 8200011, 1322045, 1, 1, 0, 700), +(8244, 8200011, 4130002, 1, 1, 0, 6000), +(8245, 8200011, 4130011, 1, 1, 0, 6000), +(8246, 8200011, 2044201, 1, 1, 0, 300), +(8247, 8200011, 2041008, 1, 1, 0, 300), +(8248, 8200011, 2044602, 1, 1, 0, 300), +(8249, 8200011, 2290046, 1, 1, 0, 500), +(8250, 8200012, 4000458, 1, 1, 0, 600000), +(8251, 8200012, 4000459, 1, 1, 0, 20000), +(8252, 8200012, 2000006, 1, 1, 0, 20000), +(8253, 8200012, 2000005, 1, 1, 0, 20000), +(8254, 8200012, 2022003, 1, 1, 0, 20000), +(8255, 8200012, 4004002, 1, 1, 0, 10000), +(8256, 8200012, 4010000, 1, 1, 0, 9000), +(8257, 8200012, 4020000, 1, 1, 0, 9000), +(8258, 8200012, 1040122, 1, 1, 0, 800), +(8259, 8200012, 1060111, 1, 1, 0, 800), +(8260, 8200012, 1002401, 1, 1, 0, 1500), +(8261, 8200012, 1072216, 1, 1, 0, 800), +(8262, 8200012, 1082213, 1, 1, 0, 1000), +(8263, 8200012, 1452021, 1, 1, 0, 500), +(8264, 8200012, 1322045, 1, 1, 0, 700), +(8265, 8200012, 4130003, 1, 1, 0, 6000), +(8266, 8200012, 4130012, 1, 1, 0, 6000), +(8267, 8200012, 2040501, 1, 1, 0, 300), +(8268, 8200012, 2043701, 1, 1, 0, 300), +(8269, 8200012, 2290093, 1, 1, 0, 500), +(8270, 8220000, 4000073, 1, 1, 0, 600000), +(8271, 8220000, 4000073, 1, 1, 0, 600000), +(8272, 8220000, 4000073, 1, 1, 0, 600000), +(8273, 8220000, 4000074, 1, 1, 0, 600000), +(8274, 8220000, 4000074, 1, 1, 0, 600000), +(8275, 8220000, 4000074, 1, 1, 0, 600000), +(8276, 8220000, 4000021, 1, 1, 0, 500000), +(8277, 8220000, 4000021, 1, 1, 0, 500000), +(8278, 8220000, 4000021, 1, 1, 0, 500000), +(8279, 8220000, 4006000, 1, 1, 0, 100000), +(8280, 8220000, 4004004, 1, 1, 0, 100000), +(8281, 8220000, 4010006, 1, 1, 0, 90000), +(8282, 8220000, 4020008, 1, 1, 0, 90000), +(8283, 8220000, 2000004, 1, 1, 0, 999999), +(8284, 8220000, 2000006, 1, 1, 0, 999999), +(8285, 8220000, 2002003, 1, 1, 0, 200000), +(8286, 8220000, 2012001, 1, 1, 0, 200000), +(8287, 8220000, 2040707, 1, 1, 0, 3000), +(8288, 8220000, 2041007, 1, 1, 0, 3000), +(8289, 8220000, 2043701, 1, 1, 0, 3000), +(8290, 8220000, 2044301, 1, 1, 0, 3000), +(8291, 8220000, 2041019, 1, 1, 0, 3000), +(8292, 8220000, 2044401, 1, 1, 0, 3000), +(8293, 8220000, 2040001, 1, 1, 0, 3000), +(8294, 8220000, 2040301, 1, 1, 0, 3000), +(8295, 8220000, 2040401, 1, 1, 0, 3000), +(8296, 8220000, 2043301, 1, 1, 0, 3000), +(8297, 8220000, 2044302, 1, 1, 0, 3000), +(8298, 8220000, 2041020, 1, 1, 0, 3000), +(8299, 8220000, 2044402, 1, 1, 0, 3000), +(8300, 8220000, 2040002, 1, 1, 0, 3000), +(8301, 8220000, 2040302, 1, 1, 0, 3000), +(8302, 8220000, 2060001, 1, 1, 0, 300000), +(8303, 8220000, 2061001, 1, 1, 0, 300000), +(8304, 8220000, 1002532, 1, 1, 0, 15000), +(8305, 8220000, 1002366, 1, 1, 0, 15000), +(8306, 8220000, 1002405, 1, 1, 0, 15000), +(8307, 8220000, 1002326, 1, 1, 0, 15000), +(8308, 8220000, 1040113, 1, 1, 0, 8000), +(8309, 8220000, 1041121, 1, 1, 0, 8000), +(8310, 8220000, 1050095, 1, 1, 0, 7000), +(8311, 8220000, 1051097, 1, 1, 0, 7000), +(8312, 8220000, 1050091, 1, 1, 0, 7000), +(8313, 8220000, 1051085, 1, 1, 0, 7000), +(8314, 8220000, 1040117, 1, 1, 0, 8000), +(8315, 8220000, 1041117, 1, 1, 0, 8000), +(8316, 8220000, 1082130, 1, 1, 0, 10000), +(8317, 8220000, 1082134, 1, 1, 0, 10000), +(8318, 8220000, 1082127, 1, 1, 0, 10000), +(8319, 8220000, 1082144, 1, 1, 0, 10000), +(8320, 8220000, 1072198, 1, 1, 0, 8000), +(8321, 8220000, 1072209, 1, 1, 0, 8000), +(8322, 8220000, 1072205, 1, 1, 0, 8000), +(8323, 8220000, 1072194, 1, 1, 0, 8000), +(8324, 8220000, 1002643, 1, 1, 0, 15000), +(8325, 8220000, 1052128, 1, 1, 0, 7000), +(8326, 8220000, 1082210, 1, 1, 0, 10000), +(8327, 8220000, 1072315, 1, 1, 0, 8000), +(8328, 8220000, 2043017, 1, 1, 0, 3000), +(8329, 8220000, 2044114, 1, 1, 0, 3000), +(8330, 8220000, 2044214, 1, 1, 0, 3000), +(8331, 8220001, 4000048, 1, 1, 0, 600000), +(8332, 8220001, 4000049, 1, 1, 0, 600000), +(8333, 8220001, 4000051, 1, 1, 0, 600000), +(8334, 8220001, 4000257, 1, 1, 0, 600000), +(8335, 8220001, 4000021, 1, 1, 0, 500000), +(8336, 8220001, 4004002, 1, 1, 0, 100000), +(8337, 8220001, 4010004, 1, 1, 0, 90000), +(8338, 8220001, 4020004, 1, 1, 0, 90000), +(8339, 8220001, 2000004, 1, 1, 0, 999999), +(8340, 8220001, 2000006, 1, 1, 0, 999999), +(8341, 8220001, 2022001, 1, 1, 0, 200000), +(8342, 8220001, 2022186, 1, 1, 0, 200000), +(8343, 8220001, 2043701, 1, 1, 0, 3000), +(8344, 8220001, 2041016, 1, 1, 0, 3000), +(8345, 8220001, 2043801, 1, 1, 0, 3000), +(8346, 8220001, 2040804, 1, 1, 0, 3000), +(8347, 8220001, 2040501, 1, 1, 0, 3000), +(8348, 8220001, 2040601, 1, 1, 0, 3000), +(8349, 8220001, 2040701, 1, 1, 0, 3000), +(8350, 8220001, 2040801, 1, 1, 0, 3000), +(8351, 8220001, 2040901, 1, 1, 0, 3000), +(8352, 8220001, 2041001, 1, 1, 0, 3000), +(8353, 8220001, 2041008, 1, 1, 0, 3000), +(8354, 8220001, 2043302, 1, 1, 0, 3000), +(8355, 8220001, 2043702, 1, 1, 0, 3000), +(8356, 8220001, 2041017, 1, 1, 0, 3000), +(8357, 8220001, 2043802, 1, 1, 0, 3000), +(8358, 8220001, 2060001, 1, 1, 0, 300000), +(8359, 8220001, 2061001, 1, 1, 0, 300000), +(8360, 8220001, 2070008, 1, 1, 0, 5000), +(8361, 8220001, 1302023, 1, 1, 0, 7000), +(8362, 8220001, 1312015, 1, 1, 0, 7000), +(8363, 8220001, 1322029, 1, 1, 0, 7000), +(8364, 8220001, 1332027, 1, 1, 0, 5000), +(8365, 8220001, 1382035, 1, 1, 0, 7000), +(8366, 8220001, 1402016, 1, 1, 0, 7000), +(8367, 8220001, 1412010, 1, 1, 0, 7000), +(8368, 8220001, 1422013, 1, 1, 0, 7000), +(8369, 8220001, 1432011, 1, 1, 0, 5000), +(8370, 8220001, 1442020, 1, 1, 0, 7000), +(8371, 8220001, 1452017, 1, 1, 0, 5000), +(8372, 8220001, 1462018, 1, 1, 0, 5000), +(8373, 8220001, 1472033, 1, 1, 0, 5000), +(8374, 8220001, 1032017, 1, 1, 0, 10000), +(8375, 8220001, 1092028, 1, 1, 0, 7000), +(8376, 8220001, 1482011, 1, 1, 0, 5000), +(8377, 8220001, 1492011, 1, 1, 0, 5000), +(8378, 8220001, 2044802, 1, 1, 0, 3000), +(8379, 8220001, 2040026, 1, 1, 0, 3000), +(8380, 8220001, 2040323, 1, 1, 0, 3000), +(8381, 8220001, 2040927, 1, 1, 0, 3000), +(8382, 8220001, 2044314, 1, 1, 0, 3000), +(8383, 8220001, 2049100, 1, 1, 0, 3000), +(8384, 8220002, 4000364, 1, 1, 0, 600000), +(8385, 8220002, 4000364, 1, 1, 0, 600000), +(8386, 8220002, 4000364, 1, 1, 0, 600000), +(8387, 8220002, 4000365, 1, 1, 0, 600000), +(8388, 8220002, 4000365, 1, 1, 0, 600000), +(8389, 8220002, 4000365, 1, 1, 0, 600000), +(8390, 8220002, 4000356, 1, 1, 0, 600000), +(8391, 8220002, 4000356, 1, 1, 0, 600000), +(8392, 8220002, 4000356, 1, 1, 0, 600000), +(8393, 8220002, 4004004, 1, 1, 0, 100000), +(8394, 8220002, 4010005, 1, 1, 0, 90000), +(8395, 8220002, 4020008, 1, 1, 0, 90000), +(8396, 8220002, 2000004, 1, 1, 0, 999999), +(8397, 8220002, 2000006, 1, 1, 0, 999999), +(8398, 8220002, 2040301, 1, 1, 0, 3000), +(8399, 8220002, 2040501, 1, 1, 0, 3000), +(8400, 8220002, 2040504, 1, 1, 0, 3000), +(8401, 8220002, 2040513, 1, 1, 0, 3000), +(8402, 8220002, 2040516, 1, 1, 0, 3000), +(8403, 8220002, 2041007, 1, 1, 0, 3000), +(8404, 8220002, 2041013, 1, 1, 0, 3000), +(8405, 8220002, 2041016, 1, 1, 0, 3000), +(8406, 8220002, 2041019, 1, 1, 0, 3000), +(8407, 8220002, 2041022, 1, 1, 0, 3000), +(8408, 8220002, 1372009, 1, 1, 0, 7000), +(8409, 8220002, 1302023, 1, 1, 0, 7000), +(8410, 8220002, 1312015, 1, 1, 0, 7000), +(8411, 8220002, 1322029, 1, 1, 0, 7000), +(8412, 8220002, 1402005, 1, 1, 0, 7000), +(8413, 8220002, 1402016, 1, 1, 0, 7000), +(8414, 8220002, 1412010, 1, 1, 0, 7000), +(8415, 8220002, 1422013, 1, 1, 0, 7000), +(8416, 8220002, 1432011, 1, 1, 0, 5000), +(8417, 8220002, 1442020, 1, 1, 0, 7000), +(8418, 8220002, 1452017, 1, 1, 0, 5000), +(8419, 8220002, 1462018, 1, 1, 0, 5000), +(8420, 8220002, 1332027, 1, 1, 0, 5000), +(8421, 8220002, 1472033, 1, 1, 0, 5000), +(8422, 8220002, 1332026, 1, 1, 0, 5000), +(8423, 8220002, 1482011, 1, 1, 0, 5000), +(8424, 8220002, 1492011, 1, 1, 0, 5000), +(8425, 8220002, 1382008, 1, 1, 0, 7000), +(8426, 8220002, 2070007, 1, 1, 0, 2000), +(8427, 8220002, 2330003, 1, 1, 0, 5000), +(8428, 8220002, 2040326, 1, 1, 0, 3000), +(8429, 8220002, 2040422, 1, 1, 0, 3000), +(8430, 8220002, 2040532, 1, 1, 0, 3000), +(8431, 8220002, 2040931, 1, 1, 0, 3000), +(8432, 8220003, 4000268, 1, 1, 0, 600000), +(8433, 8220003, 4000268, 1, 1, 0, 600000), +(8434, 8220003, 4000268, 1, 1, 0, 600000), +(8435, 8220003, 4000269, 1, 1, 0, 600000), +(8436, 8220003, 4000269, 1, 1, 0, 600000), +(8437, 8220003, 4000269, 1, 1, 0, 600000), +(8438, 8220003, 4000270, 1, 1, 0, 600000), +(8439, 8220003, 4000270, 1, 1, 0, 600000), +(8440, 8220003, 4000270, 1, 1, 0, 600000), +(8441, 8220003, 4006001, 1, 1, 0, 100000), +(8442, 8220003, 4006000, 1, 1, 0, 100000), +(8443, 8220003, 2000005, 1, 1, 0, 999999), +(8444, 8220003, 2000006, 1, 1, 0, 999999), +(8445, 8220003, 2020013, 1, 1, 0, 999999), +(8446, 8220003, 2290006, 1, 1, 0, 5000), +(8447, 8220003, 2290031, 1, 1, 0, 5000), +(8448, 8220003, 2290033, 1, 1, 0, 5000), +(8449, 8220003, 2290061, 1, 1, 0, 5000), +(8450, 8220003, 2290077, 1, 1, 0, 5000), +(8451, 8220003, 2290105, 1, 1, 0, 5000), +(8452, 8220003, 2290118, 1, 1, 0, 5000), +(8453, 8220003, 1382035, 1, 1, 0, 7000), +(8454, 8220003, 1372010, 1, 1, 0, 7000), +(8455, 8220003, 1302056, 1, 1, 0, 7000), +(8456, 8220003, 1312030, 1, 1, 0, 7000), +(8457, 8220003, 1322045, 1, 1, 0, 7000), +(8458, 8220003, 1402035, 1, 1, 0, 7000), +(8459, 8220003, 1412021, 1, 1, 0, 7000), +(8460, 8220003, 1422027, 1, 1, 0, 7000), +(8461, 8220003, 1432030, 1, 1, 0, 5000), +(8462, 8220003, 1442044, 1, 1, 0, 7000), +(8463, 8220003, 1452019, 1, 1, 0, 5000), +(8464, 8220003, 1462015, 1, 1, 0, 5000), +(8465, 8220003, 1332052, 1, 1, 0, 5000), +(8466, 8220003, 1472053, 1, 1, 0, 5000), +(8467, 8220003, 1332051, 1, 1, 0, 5000), +(8468, 8220003, 1482012, 1, 1, 0, 5000), +(8469, 8220003, 1492012, 1, 1, 0, 5000), +(8470, 8220003, 2040824, 1, 1, 0, 3000), +(8471, 8220003, 2044212, 1, 1, 0, 3000), +(8472, 8220004, 4000460, 1, 1, 0, 600000), +(8473, 8220004, 4006001, 1, 1, 0, 100000), +(8474, 8220004, 4006000, 1, 1, 0, 100000), +(8475, 8220004, 2000005, 1, 1, 0, 999999), +(8476, 8220004, 2000006, 1, 1, 0, 999999), +(8477, 8220004, 2020013, 1, 1, 0, 999999), +(8478, 8220004, 2290018, 1, 1, 0, 5000), +(8479, 8220004, 2290019, 1, 1, 0, 5000), +(8480, 8220004, 2290025, 1, 1, 0, 5000), +(8481, 8220004, 2290059, 1, 1, 0, 5000), +(8482, 8220004, 2290077, 1, 1, 0, 5000), +(8483, 8220004, 2290106, 1, 1, 0, 5000), +(8484, 8220004, 1082141, 1, 1, 0, 10000), +(8485, 8220004, 1050105, 1, 1, 0, 7000), +(8486, 8220004, 1002405, 1, 1, 0, 15000), +(8487, 8220004, 1072318, 1, 1, 0, 8000), +(8488, 8220004, 1051093, 1, 1, 0, 7000), +(8489, 8220004, 1332052, 1, 1, 0, 5000), +(8490, 8220004, 1322045, 1, 1, 0, 7000), +(8491, 8220004, 1372010, 1, 1, 0, 7000), +(8492, 8220004, 2049000, 1, 1, 0, 1500), +(8493, 8220004, 2330004, 1, 1, 0, 5000), +(8494, 8220004, 2040326, 1, 1, 0, 3000), +(8495, 8220004, 2040924, 1, 1, 0, 3000), +(8496, 8220004, 2040025, 1, 1, 0, 3000), +(8497, 8220004, 2040532, 1, 1, 0, 3000), +(8498, 8220004, 2040029, 1, 1, 0, 3000), +(8499, 8220005, 4000461, 1, 1, 0, 600000), +(8500, 8220005, 4006001, 1, 1, 0, 100000), +(8501, 8220005, 4006000, 1, 1, 0, 100000), +(8502, 8220005, 2000005, 1, 1, 0, 999999), +(8503, 8220005, 2000006, 1, 1, 0, 999999), +(8504, 8220005, 2020013, 1, 1, 0, 999999), +(8505, 8220005, 2290003, 1, 1, 0, 5000), +(8506, 8220005, 2290037, 1, 1, 0, 5000), +(8507, 8220005, 2290055, 1, 1, 0, 5000), +(8508, 8220005, 2290080, 1, 1, 0, 5000), +(8509, 8220005, 2290099, 1, 1, 0, 5000), +(8510, 8220005, 1072222, 1, 1, 0, 8000), +(8511, 8220005, 1082154, 1, 1, 0, 10000), +(8512, 8220005, 1050108, 1, 1, 0, 7000), +(8513, 8220005, 1002382, 1, 1, 0, 15000), +(8514, 8220005, 1051104, 1, 1, 0, 7000), +(8515, 8220005, 1482012, 1, 1, 0, 5000), +(8516, 8220005, 1402035, 1, 1, 0, 7000), +(8517, 8220005, 1452021, 1, 1, 0, 5000), +(8518, 8220005, 2049000, 1, 1, 0, 1500), +(8519, 8220005, 2040317, 1, 1, 0, 3000), +(8520, 8220005, 2040321, 1, 1, 0, 3000), +(8521, 8220005, 2040931, 1, 1, 0, 3000), +(8522, 8220005, 2040927, 1, 1, 0, 3000), +(8523, 8220006, 4000462, 1, 1, 0, 600000), +(8524, 8220006, 4006001, 1, 1, 0, 100000), +(8525, 8220006, 4006000, 1, 1, 0, 100000), +(8526, 8220006, 2000005, 1, 1, 0, 999999), +(8527, 8220006, 2000006, 1, 1, 0, 999999), +(8528, 8220006, 2020013, 1, 1, 0, 999999), +(8529, 8220006, 2290013, 1, 1, 0, 5000), +(8530, 8220006, 2290043, 1, 1, 0, 5000), +(8531, 8220006, 2290061, 1, 1, 0, 5000), +(8532, 8220006, 2290120, 1, 1, 0, 5000), +(8533, 8220006, 2290090, 1, 1, 0, 5000), +(8534, 8220006, 1072226, 1, 1, 0, 8000), +(8535, 8220006, 1082160, 1, 1, 0, 10000), +(8536, 8220006, 1050099, 1, 1, 0, 7000), +(8537, 8220006, 1002646, 1, 1, 0, 15000), +(8538, 8220006, 1051107, 1, 1, 0, 7000), +(8539, 8220006, 1432030, 1, 1, 0, 5000), +(8540, 8220006, 1462017, 1, 1, 0, 5000), +(8541, 8220006, 1472053, 1, 1, 0, 5000), +(8542, 8220006, 1492012, 1, 1, 0, 5000), +(8543, 8220006, 2049100, 1, 1, 0, 3000), +(8544, 8220006, 2043701, 1, 1, 0, 3000), +(8545, 8220006, 2044701, 1, 1, 0, 3000), +(8546, 8220006, 2044301, 1, 1, 0, 3000), +(8547, 8220006, 2044501, 1, 1, 0, 3000), +(8548, 8220006, 2044801, 1, 1, 0, 3000), +(8549, 8220006, 2044901, 1, 1, 0, 3000), +(8550, 8220007, 2000005, 1, 1, 0, 999999), +(8551, 8220007, 2000004, 1, 1, 0, 999999), +(8552, 8220007, 1032030, 1, 1, 0, 10000), +(8553, 8220007, 1382007, 1, 1, 0, 7000), +(8554, 8220007, 1322019, 1, 1, 0, 7000), +(8555, 8220007, 1312010, 1, 1, 0, 7000), +(8556, 8220007, 1412008, 1, 1, 0, 7000), +(8557, 8220007, 1432007, 1, 1, 0, 5000), +(8558, 8220007, 1302012, 1, 1, 0, 7000), +(8559, 8220007, 1332018, 1, 1, 0, 5000), +(8560, 8220007, 1332019, 1, 1, 0, 5000), +(8561, 8220007, 2043001, 1, 1, 0, 3000), +(8562, 8220007, 2043101, 1, 1, 0, 3000), +(8563, 8220007, 2043301, 1, 1, 0, 3000), +(8564, 8220007, 2043701, 1, 1, 0, 3000), +(8565, 8220007, 2044001, 1, 1, 0, 3000), +(8566, 8220007, 2044201, 1, 1, 0, 3000), +(8567, 8220007, 2044301, 1, 1, 0, 3000), +(8568, 8220007, 2044501, 1, 1, 0, 3000), +(8569, 8220007, 2044601, 1, 1, 0, 3000), +(8570, 8220007, 2044701, 1, 1, 0, 3000), +(8571, 8220009, 2000005, 1, 1, 0, 999999), +(8572, 8220009, 1452009, 1, 1, 0, 5000), +(8573, 8220009, 1382007, 1, 1, 0, 7000), +(8574, 8220009, 1462009, 1, 1, 0, 5000), +(8575, 8220009, 1322019, 1, 1, 0, 7000), +(8576, 8220009, 1312010, 1, 1, 0, 7000), +(8577, 8220009, 1412008, 1, 1, 0, 7000), +(8578, 8220009, 1422010, 1, 1, 0, 7000), +(8579, 8220009, 1472026, 1, 1, 0, 5000), +(8580, 8220009, 1432007, 1, 1, 0, 5000), +(8581, 8220009, 1442008, 1, 1, 0, 7000), +(8582, 8220009, 1302012, 1, 1, 0, 7000), +(8583, 8220009, 1402012, 1, 1, 0, 7000), +(8584, 8220009, 1332018, 1, 1, 0, 5000), +(8585, 8220009, 1332019, 1, 1, 0, 5000), +(8586, 8220009, 2043001, 1, 1, 0, 3000), +(8587, 8220009, 2043101, 1, 1, 0, 3000), +(8588, 8220009, 2043201, 1, 1, 0, 3000), +(8589, 8220009, 2043301, 1, 1, 0, 3000), +(8590, 8220009, 2043701, 1, 1, 0, 3000), +(8591, 8220009, 2043801, 1, 1, 0, 3000), +(8592, 8220009, 2044001, 1, 1, 0, 3000), +(8593, 8220009, 2044101, 1, 1, 0, 3000), +(8594, 8220009, 2044201, 1, 1, 0, 3000), +(8595, 8220009, 2044301, 1, 1, 0, 3000), +(8596, 8220009, 2044401, 1, 1, 0, 3000), +(8597, 8220009, 2044501, 1, 1, 0, 3000), +(8598, 8220009, 2044601, 1, 1, 0, 3000), +(8599, 8220009, 2044701, 1, 1, 0, 3000), +(8600, 8220009, 2000004, 1, 1, 0, 999999), +(8601, 8220009, 1092017, 1, 1, 0, 7000), +(8602, 8500002, 2020013, 1, 1, 0, 999999), +(8603, 8500002, 2020015, 1, 1, 0, 999999), +(8604, 8500002, 2000005, 1, 1, 0, 999999), +(8605, 8500002, 1312015, 1, 1, 0, 7000), +(8606, 8500002, 1332026, 1, 1, 0, 5000), +(8607, 8500002, 1332027, 1, 1, 0, 5000), +(8608, 8500002, 1462018, 1, 1, 0, 5000), +(8609, 8500002, 1372009, 1, 1, 0, 7000), +(8610, 8500002, 2041013, 1, 1, 0, 3000), +(8611, 8500002, 2041016, 1, 1, 0, 3000), +(8612, 8500002, 2041019, 1, 1, 0, 3000), +(8613, 8500002, 2041022, 1, 1, 0, 3000), +(8614, 8500002, 2290006, 1, 1, 0, 5000), +(8615, 8500002, 2290011, 1, 1, 0, 5000), +(8616, 8500002, 2290013, 1, 1, 0, 5000), +(8617, 8500002, 2290028, 1, 1, 0, 5000), +(8618, 8500002, 2290037, 1, 1, 0, 5000), +(8619, 8500002, 2290043, 1, 1, 0, 5000), +(8620, 8500002, 2290051, 1, 1, 0, 5000), +(8621, 8500002, 2290056, 1, 1, 0, 5000), +(8622, 8500002, 2290061, 1, 1, 0, 5000), +(8623, 8500002, 2290066, 1, 1, 0, 5000), +(8624, 8500002, 2290071, 1, 1, 0, 5000), +(8625, 8500002, 2290078, 1, 1, 0, 5000), +(8626, 8500002, 2290089, 1, 1, 0, 5000), +(8627, 8500002, 2290091, 1, 1, 0, 5000), +(8628, 8500002, 2000004, 1, 1, 0, 999999), +(8629, 8500002, 1072213, 1, 1, 0, 8000), +(8630, 8500002, 1072224, 1, 1, 0, 8000), +(8631, 8500002, 1072227, 1, 1, 0, 8000), +(8632, 8500002, 1072220, 1, 1, 0, 8000), +(8633, 8500002, 1040120, 1, 1, 0, 8000), +(8634, 8500002, 1060109, 1, 1, 0, 8000), +(8635, 8500002, 1041122, 1, 1, 0, 8000), +(8636, 8500002, 1061121, 1, 1, 0, 8000), +(8637, 8500002, 1050106, 1, 1, 0, 7000), +(8638, 8500002, 1051105, 1, 1, 0, 7000), +(8639, 8500002, 1050102, 1, 1, 0, 7000), +(8640, 8500002, 1051101, 1, 1, 0, 7000), +(8641, 8500002, 1050098, 1, 1, 0, 7000), +(8642, 8500002, 1051092, 1, 1, 0, 7000), +(8643, 8500002, 1002377, 1, 1, 0, 15000), +(8644, 8500002, 1082158, 1, 1, 0, 10000), +(8645, 8500002, 1072221, 1, 1, 0, 8000), +(8646, 8500002, 1482011, 1, 1, 0, 5000), +(8647, 8500002, 1002646, 1, 1, 0, 15000), +(8648, 8500002, 1052131, 1, 1, 0, 7000), +(8649, 8500002, 1082213, 1, 1, 0, 10000), +(8650, 8500002, 1072318, 1, 1, 0, 8000), +(8651, 8500002, 2290104, 1, 1, 0, 5000), +(8652, 8500002, 2290107, 1, 1, 0, 5000), +(8653, 8500002, 2290121, 1, 1, 0, 5000), +(8654, 8500002, 2290123, 1, 1, 0, 5000), +(8655, 8500002, 2040318, 1, 1, 0, 3000), +(8656, 8500002, 2040321, 1, 1, 0, 3000), +(8657, 8500002, 2040419, 1, 1, 0, 3000), +(8658, 8500002, 2040421, 1, 1, 0, 3000), +(8659, 8500002, 2044809, 1, 1, 0, 3000), +(8660, 8500002, 2049100, 1, 1, 0, 3000), +(8661, 8510000, 2020013, 1, 1, 0, 999999), +(8662, 8510000, 2020015, 1, 1, 0, 999999), +(8663, 8510000, 2000005, 1, 1, 0, 999999), +(8664, 8510000, 2000004, 1, 1, 0, 999999), +(8665, 8510000, 1302023, 1, 1, 0, 7000), +(8666, 8510000, 1322029, 1, 1, 0, 7000), +(8667, 8510000, 1402005, 1, 1, 0, 7000), +(8668, 8510000, 1412010, 1, 1, 0, 7000), +(8669, 8510000, 1040121, 1, 1, 0, 8000), +(8670, 8510000, 1060110, 1, 1, 0, 8000), +(8671, 8510000, 1050103, 1, 1, 0, 7000), +(8672, 8510000, 1051102, 1, 1, 0, 7000), +(8673, 8510000, 1050097, 1, 1, 0, 7000), +(8674, 8510000, 1051091, 1, 1, 0, 7000), +(8675, 8510000, 1041123, 1, 1, 0, 8000), +(8676, 8510000, 1061122, 1, 1, 0, 8000), +(8677, 8510000, 1050107, 1, 1, 0, 7000), +(8678, 8510000, 1051106, 1, 1, 0, 7000), +(8679, 8510000, 2040513, 1, 1, 0, 3000), +(8680, 8510000, 2040516, 1, 1, 0, 3000), +(8681, 8510000, 2040501, 1, 1, 0, 3000), +(8682, 8510000, 2040504, 1, 1, 0, 3000), +(8683, 8510000, 2040401, 1, 1, 0, 3000), +(8684, 8510000, 4001085, 1, 1, 0, 600000), +(8685, 8510000, 4000175, 1, 1, 0, 600000), +(8686, 8510000, 1492011, 1, 1, 0, 5000), +(8687, 8510000, 1052131, 1, 1, 0, 7000), +(8688, 8510000, 2290000, 1, 1, 0, 5000), +(8689, 8510000, 2290001, 1, 1, 0, 5000), +(8690, 8510000, 2290004, 1, 1, 0, 5000), +(8691, 8510000, 2290005, 1, 1, 0, 5000), +(8692, 8510000, 2290024, 1, 1, 0, 5000), +(8693, 8510000, 2290025, 1, 1, 0, 5000), +(8694, 8510000, 2290026, 1, 1, 0, 5000), +(8695, 8510000, 2290027, 1, 1, 0, 5000), +(8696, 8510000, 2290052, 1, 1, 0, 5000), +(8697, 8510000, 2290053, 1, 1, 0, 5000), +(8698, 8510000, 2290054, 1, 1, 0, 5000), +(8699, 8510000, 2290055, 1, 1, 0, 5000), +(8700, 8510000, 2290076, 1, 1, 0, 5000), +(8701, 8510000, 2290077, 1, 1, 0, 5000), +(8702, 8510000, 2290082, 1, 1, 0, 5000), +(8703, 8510000, 2290083, 1, 1, 0, 5000), +(8704, 8510000, 2290097, 1, 1, 0, 5000), +(8705, 8510000, 2290099, 1, 1, 0, 5000), +(8706, 8510000, 2290106, 1, 1, 0, 5000), +(8707, 8510000, 2290108, 1, 1, 0, 5000), +(8708, 8510000, 2290112, 1, 1, 0, 5000), +(8709, 8510000, 2290114, 1, 1, 0, 5000), +(8710, 8510000, 2290122, 1, 1, 0, 5000), +(8711, 8510000, 2290124, 1, 1, 0, 5000), +(8712, 8800002, 2020013, 1, 1, 0, 999999), +(8713, 8800002, 2020015, 1, 1, 0, 999999), +(8714, 8800002, 2000005, 1, 1, 0, 999999), +(8715, 8800002, 1002357, 1, 1, 0, 999999), +(8716, 8800002, 1002357, 1, 1, 0, 999999), +(8717, 8800002, 1002357, 1, 1, 0, 300000), +(8718, 8800002, 1002357, 1, 1, 0, 300000), +(8719, 8800002, 1002357, 1, 1, 0, 300000), +(8720, 8800002, 2280007, 1, 1, 0, 1350000), +(8721, 8800002, 2280008, 1, 1, 0, 1350000), +(8722, 8800002, 2280009, 1, 1, 0, 1350000), +(8723, 8800002, 2280010, 1, 1, 0, 1350000), +(8724, 8800002, 2290007, 1, 1, 0, 22500), +(8725, 8800002, 2290016, 1, 1, 0, 22500), +(8726, 8800002, 2290020, 1, 1, 0, 22500), +(8727, 8800002, 2290022, 1, 1, 0, 22500), +(8728, 8800002, 2290029, 1, 1, 0, 22500), +(8729, 8800002, 2290040, 1, 1, 0, 22500), +(8730, 8800002, 2290046, 1, 1, 0, 22500), +(8731, 8800002, 2290048, 1, 1, 0, 22500), +(8732, 8800002, 2290057, 1, 1, 0, 22500), +(8733, 8800002, 2290064, 1, 1, 0, 22500), +(8734, 8800002, 2290067, 1, 1, 0, 22500), +(8735, 8800002, 2290074, 1, 1, 0, 22500), +(8736, 8800002, 2290079, 1, 1, 0, 22500), +(8737, 8800002, 2290084, 1, 1, 0, 22500), +(8738, 8800002, 2290094, 1, 1, 0, 22500), +(8739, 8800002, 1302056, 1, 1, 0, 31500), +(8740, 8800002, 1312030, 1, 1, 0, 31500), +(8741, 8800002, 1322045, 1, 1, 0, 31500), +(8742, 8800002, 1332051, 1, 1, 0, 22500), +(8743, 8800002, 1332052, 1, 1, 0, 22500), +(8744, 8800002, 1372010, 1, 1, 0, 31500), +(8745, 8800002, 1382035, 1, 1, 0, 31500), +(8746, 8800002, 1402035, 1, 1, 0, 31500), +(8747, 8800002, 1412021, 1, 1, 0, 31500), +(8748, 8800002, 1422027, 1, 1, 0, 31500), +(8749, 8800002, 1432030, 1, 1, 0, 22500), +(8750, 8800002, 1442044, 1, 1, 0, 31500), +(8751, 8800002, 1452019, 1, 1, 0, 22500), +(8752, 8800002, 1452020, 1, 1, 0, 22500), +(8753, 8800002, 1462015, 1, 1, 0, 22500), +(8754, 8800002, 1462016, 1, 1, 0, 22500), +(8755, 8800002, 1472053, 1, 1, 0, 22500), +(8756, 8800002, 2000004, 1, 1, 0, 999999), +(8757, 8800002, 1482012, 1, 1, 0, 22500), +(8758, 8800002, 1492012, 1, 1, 0, 22500), +(8759, 8800002, 2290110, 1, 1, 0, 22500), +(8760, 8800002, 2290115, 1, 1, 0, 22500), +(8761, 8800002, 2040026, 1, 1, 0, 13500), +(8762, 8800002, 2040031, 1, 1, 0, 13500), +(8763, 8800002, 2040321, 1, 1, 0, 13500), +(8764, 8800002, 2040328, 1, 1, 0, 13500), +(8765, 8800002, 2040512, 1, 1, 0, 13500), +(8766, 8800002, 2049000, 1, 1, 0, 6750), +(8767, 8800002, 2049100, 1, 1, 0, 13500), +(8768, 8810018, 2020013, 1, 1, 0, 999999), +(8769, 8810018, 2020015, 1, 1, 0, 999999), +(8770, 8810018, 2000005, 1, 1, 0, 999999), +(8771, 8810018, 2000006, 1, 1, 0, 999999), +(8772, 8810018, 2000004, 1, 1, 0, 999999), +(8773, 8810018, 1302056, 1, 1, 0, 1512000), +(8774, 8810018, 1312030, 1, 1, 0, 1512000), +(8775, 8810018, 1322045, 1, 1, 0, 1512000), +(8776, 8810018, 1332051, 1, 1, 0, 1080000), +(8777, 8810018, 1332052, 1, 1, 0, 1080000), +(8778, 8810018, 1372010, 1, 1, 0, 1512000), +(8779, 8810018, 1382035, 1, 1, 0, 1512000), +(8780, 8810018, 1402035, 1, 1, 0, 1512000), +(8781, 8810018, 1412021, 1, 1, 0, 1512000), +(8782, 8810018, 1422027, 1, 1, 0, 1512000), +(8783, 8810018, 1432030, 1, 1, 0, 1080000), +(8784, 8810018, 1442044, 1, 1, 0, 1512000), +(8785, 8810018, 1452019, 1, 1, 0, 1080000), +(8786, 8810018, 1452020, 1, 1, 0, 1080000), +(8787, 8810018, 1452021, 1, 1, 0, 1080000), +(8788, 8810018, 1462015, 1, 1, 0, 1080000), +(8789, 8810018, 1462016, 1, 1, 0, 1080000), +(8790, 8810018, 1462017, 1, 1, 0, 1080000), +(8791, 8810018, 1472053, 1, 1, 0, 1080000), +(8792, 8810018, 1372032, 1, 1, 0, 1512000), +(8793, 8810018, 1302059, 1, 1, 0, 1512000), +(8794, 8810018, 1312031, 1, 1, 0, 1512000), +(8795, 8810018, 1322052, 1, 1, 0, 1512000), +(8796, 8810018, 1332049, 1, 1, 0, 1080000), +(8797, 8810018, 1332050, 1, 1, 0, 1080000), +(8798, 8810018, 1382036, 1, 1, 0, 1512000), +(8799, 8810018, 1402036, 1, 1, 0, 1512000), +(8800, 8810018, 1412026, 1, 1, 0, 1512000), +(8801, 8810018, 1422028, 1, 1, 0, 1512000), +(8802, 8810018, 1432038, 1, 1, 0, 1080000), +(8803, 8810018, 1442045, 1, 1, 0, 1512000), +(8804, 8810018, 1452044, 1, 1, 0, 1080000), +(8805, 8810018, 1462039, 1, 1, 0, 1080000), +(8806, 8810018, 1472051, 1, 1, 0, 1080000), +(8807, 8810018, 1472052, 1, 1, 0, 1080000), +(8808, 8810018, 1122000, 1, 1, 0, 999999), +(8809, 8810018, 1122000, 1, 1, 0, 999999), +(8810, 8810018, 1122000, 1, 1, 0, 300000), +(8811, 8810018, 1122000, 1, 1, 0, 300000), +(8812, 8810018, 2290017, 1, 1, 0, 1080000), +(8813, 8810018, 2290021, 1, 1, 0, 1080000), +(8814, 8810018, 2290023, 1, 1, 0, 1080000), +(8815, 8810018, 2290041, 1, 1, 0, 1080000), +(8816, 8810018, 2290047, 1, 1, 0, 1080000), +(8817, 8810018, 2290049, 1, 1, 0, 1080000), +(8818, 8810018, 2290065, 1, 1, 0, 1080000), +(8819, 8810018, 2290075, 1, 1, 0, 1080000), +(8820, 8810018, 2290085, 1, 1, 0, 1080000), +(8821, 8810018, 2290095, 1, 1, 0, 1080000), +(8822, 8810018, 2290096, 1, 1, 0, 800000), +(8823, 8810018, 1482012, 1, 1, 0, 1080000), +(8824, 8810018, 1492012, 1, 1, 0, 1080000), +(8825, 8810018, 1482013, 1, 1, 0, 1080000), +(8826, 8810018, 1492013, 1, 1, 0, 1080000), +(8827, 8810018, 2290111, 1, 1, 0, 1080000), +(8828, 8810018, 2290116, 1, 1, 0, 1080000), +(8829, 8810018, 2040317, 1, 1, 0, 648000), +(8830, 8810018, 2040418, 1, 1, 0, 648000), +(8831, 8810018, 2040421, 1, 1, 0, 648000), +(8832, 8810018, 2040512, 1, 1, 0, 648000), +(8833, 8810018, 2040515, 1, 1, 0, 648000), +(8834, 8810018, 2040625, 1, 1, 0, 648000), +(8835, 8810018, 2049000, 1, 1, 0, 324000), +(8836, 8810018, 2049100, 1, 1, 0, 648000), +(8837, 9300003, 1072369, 1, 1, 0, 300000), +(8838, 9300012, 4001023, 1, 1, 0, 999999), +(8839, 9300028, 4001024, 1, 1, 0, 999999), +(8840, 9300039, 4001054, 1, 1, 0, 600000), +(8841, 9300119, 2000002, 1, 1, 0, 200000), +(8842, 9300119, 2000004, 1, 1, 0, 999999), +(8843, 9300119, 2000006, 1, 1, 0, 999999), +(8844, 9300119, 2020013, 1, 1, 0, 999999), +(8845, 9300119, 2020014, 1, 1, 0, 200000), +(8846, 9300119, 2020015, 1, 1, 0, 999999), +(8847, 9300119, 2041010, 1, 1, 0, 3000), +(8848, 9300119, 2040502, 1, 1, 0, 3000), +(8849, 9300119, 2044201, 1, 1, 0, 3000), +(8850, 9300119, 2040001, 1, 1, 0, 3000), +(8851, 9300119, 2040601, 1, 1, 0, 3000), +(8852, 9300119, 2040505, 1, 1, 0, 3000), +(8853, 9300119, 2040002, 1, 1, 0, 3000), +(8854, 9300119, 2040401, 1, 1, 0, 3000), +(8855, 9300119, 2043201, 1, 1, 0, 3000), +(8856, 9300119, 2044101, 1, 1, 0, 3000), +(8857, 9300119, 2043101, 1, 1, 0, 3000), +(8858, 9300119, 2040801, 1, 1, 0, 3000), +(8859, 9300139, 2000002, 1, 1, 0, 200000), +(8860, 9300139, 2000004, 1, 1, 0, 999999), +(8861, 9300139, 2000006, 1, 1, 0, 999999), +(8862, 9300139, 2020013, 1, 1, 0, 999999), +(8863, 9300139, 2020014, 1, 1, 0, 200000), +(8864, 9300139, 2020015, 1, 1, 0, 999999), +(8865, 9300139, 2044601, 1, 1, 0, 3000), +(8866, 9300139, 2040707, 1, 1, 0, 3000), +(8867, 9300139, 2044401, 1, 1, 0, 3000), +(8868, 9300139, 2040504, 1, 1, 0, 3000), +(8869, 9300139, 2044501, 1, 1, 0, 3000), +(8870, 9300139, 2044001, 1, 1, 0, 3000), +(8871, 9300139, 2043701, 1, 1, 0, 3000), +(8872, 9300139, 2043001, 1, 1, 0, 3000), +(8873, 9300139, 2040004, 1, 1, 0, 3000), +(8874, 9300139, 2044701, 1, 1, 0, 3000), +(8875, 9300139, 2043801, 1, 1, 0, 3000), +(8876, 9300139, 2043301, 1, 1, 0, 3000), +(8877, 9300182, 4001164, 1, 1, 0, 600000), +(8878, 9300182, 2000002, 1, 1, 0, 200000), +(8879, 9300182, 2000006, 1, 1, 0, 999999), +(8880, 9300182, 2020013, 1, 1, 0, 999999), +(8881, 9300182, 2020014, 1, 1, 0, 200000), +(8882, 9300182, 2020015, 1, 1, 0, 999999), +(8883, 9300182, 2043001, 1, 1, 0, 3000), +(8884, 9300182, 2043101, 1, 1, 0, 3000), +(8885, 9300182, 2043201, 1, 1, 0, 3000), +(8886, 9300182, 2043301, 1, 1, 0, 3000), +(8887, 9300182, 2043701, 1, 1, 0, 3000), +(8888, 9300182, 2043801, 1, 1, 0, 3000), +(8889, 9300182, 2044001, 1, 1, 0, 3000), +(8890, 9300182, 2044101, 1, 1, 0, 3000), +(8891, 9300182, 2044201, 1, 1, 0, 3000), +(8892, 9300182, 2044301, 1, 1, 0, 3000), +(8893, 9300182, 2044401, 1, 1, 0, 3000), +(8894, 9300182, 2044501, 1, 1, 0, 3000), +(8895, 9300182, 2044601, 1, 1, 0, 3000), +(8896, 9300182, 2044701, 1, 1, 0, 3000), +(8897, 9300182, 2049000, 1, 1, 0, 1500), +(8898, 9300215, 2022413, 1, 1, 0, 200000), +(8899, 9300215, 2022414, 1, 1, 0, 200000), +(8900, 9300215, 2022415, 1, 1, 0, 200000), +(8901, 9300215, 2022416, 1, 1, 0, 200000), +(8902, 9300215, 2022417, 1, 1, 0, 200000), +(8903, 9300215, 2022418, 1, 1, 0, 200000), +(8904, 9300215, 2022419, 1, 1, 0, 200000), +(8905, 9300215, 2022420, 1, 1, 0, 200000), +(8906, 9300215, 2022421, 1, 1, 0, 200000), +(8907, 9300274, 4000001, 1, 1, 0, 600000), +(8908, 9300274, 2000000, 1, 1, 0, 20000), +(8909, 9300274, 2040705, 1, 1, 0, 300), +(8910, 9300274, 1072004, 1, 1, 0, 800), +(8911, 9300274, 1002043, 1, 1, 0, 1500), +(8912, 9300274, 1432000, 1, 1, 0, 500), +(8913, 9300274, 1312000, 1, 1, 0, 700), +(8914, 9300274, 2060000, 1, 1, 0, 30000), +(8915, 9300274, 4010000, 1, 1, 0, 9000), +(8916, 9300274, 4020007, 1, 1, 0, 9000), +(8917, 9300274, 2061000, 1, 1, 0, 30000), +(8918, 9300274, 1082012, 1, 1, 0, 1000), +(8919, 9300274, 1072015, 1, 1, 0, 800), +(8920, 9300274, 1072031, 1, 1, 0, 800), +(8921, 9300274, 4030001, 1, 1, 0, 300), +(8922, 9300274, 1052095, 1, 1, 0, 700), +(8923, 9300274, 2330000, 1, 1, 0, 500), +(8924, 9500317, 4001141, 1, 1, 0, 600000), +(8925, 9500317, 2022279, 1, 1, 0, 200000), +(8926, 8830000, 1302112, 1, 1, 0, 7000), +(8927, 8830000, 1302113, 1, 1, 0, 7000), +(8928, 8830000, 1312042, 1, 1, 0, 7000), +(8929, 8830000, 1312043, 1, 1, 0, 7000), +(8930, 8830000, 1322068, 1, 1, 0, 7000), +(8931, 8830000, 1322069, 1, 1, 0, 7000), +(8932, 8830000, 1332084, 1, 1, 0, 5000), +(8933, 8830000, 1332085, 1, 1, 0, 5000), +(8934, 8830000, 1332086, 1, 1, 0, 5000), +(8935, 8830000, 1332087, 1, 1, 0, 5000), +(8936, 8830000, 1372050, 1, 1, 0, 7000), +(8937, 8830000, 1382066, 1, 1, 0, 7000), +(8938, 8830000, 1382067, 1, 1, 0, 7000), +(8939, 8830000, 1402056, 1, 1, 0, 7000), +(8940, 8830000, 1402057, 1, 1, 0, 7000), +(8941, 8830000, 1402058, 1, 1, 0, 7000), +(8942, 8830000, 1402059, 1, 1, 0, 7000), +(8943, 8830000, 1412038, 1, 1, 0, 7000), +(8944, 8830000, 1412039, 1, 1, 0, 7000), +(8945, 8830000, 1422042, 1, 1, 0, 7000), +(8946, 8830000, 1422043, 1, 1, 0, 7000), +(8947, 8830000, 1432054, 1, 1, 0, 5000), +(8948, 8830000, 1432055, 1, 1, 0, 5000), +(8949, 8830000, 1442074, 1, 1, 0, 7000), +(8950, 8830000, 1442075, 1, 1, 0, 7000), +(8951, 8830000, 1452066, 1, 1, 0, 5000), +(8952, 8830000, 1452067, 1, 1, 0, 5000), +(8953, 8830000, 1452068, 1, 1, 0, 5000), +(8954, 8830000, 1452069, 1, 1, 0, 5000), +(8955, 8830000, 1452070, 1, 1, 0, 5000), +(8956, 8830000, 1462059, 1, 1, 0, 5000), +(8957, 8830000, 1462060, 1, 1, 0, 5000), +(8958, 8830000, 1462061, 1, 1, 0, 5000), +(8959, 8830000, 1462062, 1, 1, 0, 5000), +(8960, 8830000, 1462063, 1, 1, 0, 5000), +(8961, 8830000, 1472083, 1, 1, 0, 5000), +(8962, 8830000, 1472084, 1, 1, 0, 5000), +(8963, 8830000, 1482031, 1, 1, 0, 5000), +(8964, 8830000, 1482032, 1, 1, 0, 5000), +(8965, 8830000, 1492035, 1, 1, 0, 5000), +(8966, 8830000, 1492036, 1, 1, 0, 5000), +(8967, 8830000, 2000004, 1, 1, 0, 999999), +(8968, 8830000, 2000005, 1, 1, 0, 999999), +(8969, 8830000, 2000006, 1, 1, 0, 999999), +(8970, 8830000, 2030000, 1, 1, 0, 200000), +(8971, 8830000, 2050004, 1, 1, 0, 500000), +(8972, 8830000, 2020001, 1, 1, 0, 200000), +(8973, 8830000, 2020000, 1, 1, 0, 200000), +(8974, 8830000, 2000016, 1, 1, 0, 200000), +(8975, 8830000, 2020005, 1, 1, 0, 200000), +(8976, 8830000, 2020003, 1, 1, 0, 200000), +(8977, 8830000, 2020009, 1, 1, 0, 200000), +(8978, 8830000, 2020006, 1, 1, 0, 200000), +(8979, 8830000, 2020007, 1, 1, 0, 200000), +(8980, 8830000, 2022000, 1, 1, 0, 200000), +(8981, 8830000, 2020010, 1, 1, 0, 200000), +(8982, 8830000, 2001000, 1, 1, 0, 200000), +(8983, 8830000, 2001002, 1, 1, 0, 200000), +(8984, 8830000, 2020012, 1, 1, 0, 200000), +(8985, 8830000, 2020013, 1, 1, 0, 999999), +(8986, 8830000, 2020014, 1, 1, 0, 200000), +(8987, 8830000, 2020015, 1, 1, 0, 999999), +(8988, 8830000, 2049100, 1, 1, 0, 3000), +(8989, 8830000, 2049000, 1, 1, 0, 1500); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(8990, 8830000, 2040739, 1, 1, 0, 3000), +(8991, 8830000, 1072376, 1, 1, 0, 8000), +(8992, 8830000, 4001261, 1, 1, 0, 600000), +(8993, 8830000, 2330005, 1, 1, 0, 5000), +(8994, 8830000, 1382068, 1, 1, 0, 7000), +(8995, 8830000, 1402062, 1, 1, 0, 7000), +(8996, 8830000, 1472086, 1, 1, 0, 5000), +(8997, 8830000, 1442078, 1, 1, 0, 7000), +(8998, 8830000, 1452071, 1, 1, 0, 5000), +(8999, 8830000, 1492037, 1, 1, 0, 5000), +(9000, 100134, 4000497, 1, 1, 0, 600000), +(9001, 100134, 2000000, 1, 1, 0, 20000), +(9002, 100134, 2010009, 1, 1, 0, 20000), +(9003, 100134, 4010002, 1, 1, 0, 9000), +(9004, 100134, 4020002, 1, 1, 0, 9000), +(9005, 100134, 2040500, 1, 1, 0, 300), +(9006, 100134, 2044400, 1, 1, 0, 300), +(9007, 100134, 1002042, 1, 1, 0, 1500), +(9008, 100134, 1002051, 1, 1, 0, 1500), +(9009, 100134, 1032003, 1, 1, 0, 1000), +(9010, 100134, 1040009, 1, 1, 0, 800), +(9011, 100134, 1060009, 1, 1, 0, 800), +(9012, 100134, 1051000, 1, 1, 0, 700), +(9013, 100134, 1072050, 1, 1, 0, 800), +(9014, 100133, 4000496, 1, 1, 0, 600000), +(9015, 100133, 2000000, 1, 1, 0, 20000), +(9016, 100133, 2010009, 1, 1, 0, 20000), +(9017, 100133, 4010001, 1, 1, 0, 9000), +(9018, 100133, 4020003, 1, 1, 0, 9000), +(9019, 100133, 2048000, 1, 1, 0, 300), +(9020, 100133, 2041004, 1, 1, 0, 300), +(9021, 100133, 1002041, 1, 1, 0, 1500), +(9022, 100133, 1002007, 1, 1, 0, 1500), +(9023, 100133, 1032001, 1, 1, 0, 1000), +(9024, 100133, 1040038, 1, 1, 0, 800), +(9025, 100133, 1060028, 1, 1, 0, 800), +(9026, 100133, 1041064, 1, 1, 0, 800), +(9027, 100133, 1061023, 1, 1, 0, 800), +(9028, 100133, 1072009, 1, 1, 0, 800), +(9029, 100133, 1082000, 1, 1, 0, 1000), +(9030, 100133, 1442006, 1, 1, 0, 700), +(9031, 100132, 4000495, 1, 1, 0, 600000), +(9032, 100132, 2000000, 1, 1, 0, 20000), +(9033, 100132, 2010009, 1, 1, 0, 20000), +(9034, 100132, 4010000, 1, 1, 0, 9000), +(9035, 100132, 4020007, 1, 1, 0, 9000), +(9036, 100132, 2040823, 1, 1, 0, 300), +(9037, 100132, 2041018, 1, 1, 0, 300), +(9038, 100132, 1002001, 1, 1, 0, 1500), +(9039, 100132, 1002003, 1, 1, 0, 1500), +(9040, 100132, 1040014, 1, 1, 0, 800), +(9041, 100132, 1040015, 1, 1, 0, 800), +(9042, 100132, 1060008, 1, 1, 0, 800), +(9043, 100132, 1041014, 1, 1, 0, 800), +(9044, 100132, 1061014, 1, 1, 0, 800), +(9045, 100132, 1072004, 1, 1, 0, 800), +(9046, 100132, 1082003, 1, 1, 0, 1000), +(9047, 100132, 1442000, 1, 1, 0, 700), +(9048, 100131, 4000494, 1, 1, 0, 600000), +(9049, 100131, 2000000, 1, 1, 0, 20000), +(9050, 100131, 2010009, 1, 1, 0, 20000), +(9051, 100131, 4010006, 1, 1, 0, 9000), +(9052, 100131, 4020006, 1, 1, 0, 9000), +(9053, 100131, 2040400, 1, 1, 0, 300), +(9054, 100131, 2040618, 1, 1, 0, 300), +(9055, 100131, 1002019, 1, 1, 0, 1500), +(9056, 100131, 1002002, 1, 1, 0, 1500), +(9057, 100131, 1040013, 1, 1, 0, 800), +(9058, 100131, 1041012, 1, 1, 0, 800), +(9059, 100131, 1060004, 1, 1, 0, 800), +(9060, 100131, 1072005, 1, 1, 0, 800), +(9061, 100130, 4000493, 1, 1, 0, 600000), +(9062, 100130, 2010000, 1, 1, 0, 20000), +(9063, 100130, 2010009, 1, 1, 0, 20000), +(9064, 100130, 4010005, 1, 1, 0, 9000), +(9065, 100130, 4020005, 1, 1, 0, 9000), +(9066, 100130, 2040003, 1, 1, 0, 300), +(9067, 100130, 1002008, 1, 1, 0, 1500), +(9068, 100130, 1040010, 1, 1, 0, 800), +(9069, 100130, 1041004, 1, 1, 0, 800), +(9070, 100130, 1060007, 1, 1, 0, 800), +(9071, 1110130, 4000012, 1, 1, 0, 600000), +(9072, 1110130, 2000000, 1, 1, 0, 20000), +(9073, 1110130, 2043102, 1, 1, 0, 300), +(9074, 1110130, 2000003, 1, 1, 0, 20000), +(9075, 1110130, 4020003, 1, 1, 0, 9000), +(9076, 1110130, 1322000, 1, 1, 0, 700), +(9077, 1110130, 2060000, 1, 1, 0, 30000), +(9078, 1110130, 1041044, 1, 1, 0, 800), +(9079, 1110130, 1061037, 1, 1, 0, 800), +(9080, 1110130, 4010004, 1, 1, 0, 9000), +(9081, 1110130, 1092008, 1, 1, 0, 700), +(9082, 1110130, 1041017, 1, 1, 0, 800), +(9083, 1110130, 1061012, 1, 1, 0, 800), +(9084, 1110130, 1462002, 1, 1, 0, 500), +(9085, 1110130, 2061000, 1, 1, 0, 30000), +(9086, 1110130, 1041063, 1, 1, 0, 800), +(9087, 1110130, 1061059, 1, 1, 0, 800), +(9088, 1110130, 1452003, 1, 1, 0, 500), +(9089, 1110130, 2048000, 1, 1, 0, 300), +(9090, 1110130, 1002033, 1, 1, 0, 1500), +(9091, 1110130, 1302007, 1, 1, 0, 700), +(9092, 1110130, 4020002, 1, 1, 0, 9000), +(9093, 1110130, 1032001, 1, 1, 0, 1000), +(9094, 1110130, 1002010, 1, 1, 0, 1500), +(9095, 1110130, 2000001, 1, 1, 0, 20000), +(9096, 1110130, 1002143, 1, 1, 0, 1500), +(9097, 1110130, 1432005, 1, 1, 0, 500), +(9098, 1110130, 1412012, 1, 1, 0, 700), +(9099, 1110130, 1072285, 1, 1, 0, 800), +(9100, 1110130, 1482001, 1, 1, 0, 500), +(9101, 1140130, 2000000, 1, 1, 0, 20000), +(9102, 1140130, 2000003, 1, 1, 0, 20000), +(9103, 1140130, 4000195, 1, 1, 0, 600000), +(9104, 1140130, 2060000, 1, 1, 0, 30000), +(9105, 1140130, 2061000, 1, 1, 0, 30000), +(9106, 1140130, 4010000, 1, 1, 0, 9000), +(9107, 1140130, 4020007, 1, 1, 0, 9000), +(9108, 1140130, 4010004, 1, 1, 0, 9000), +(9109, 1140130, 2040501, 1, 1, 0, 300), +(9110, 1140130, 2040801, 1, 1, 0, 300), +(9111, 1140130, 1041062, 1, 1, 0, 800), +(9112, 1140130, 1061058, 1, 1, 0, 800), +(9113, 1140130, 1050010, 1, 1, 0, 700), +(9114, 1140130, 2048001, 1, 1, 0, 300), +(9115, 1140130, 1041029, 1, 1, 0, 800), +(9116, 1140130, 1061027, 1, 1, 0, 800), +(9117, 1140130, 1072046, 1, 1, 0, 800), +(9118, 1140130, 1072066, 1, 1, 0, 800), +(9119, 1140130, 1082018, 1, 1, 0, 1000), +(9120, 1140130, 1002107, 1, 1, 0, 1500), +(9121, 1140130, 1002113, 1, 1, 0, 1500), +(9122, 1140130, 1050003, 1, 1, 0, 700), +(9123, 1140130, 1412012, 1, 1, 0, 700), +(9124, 1140130, 1082180, 1, 1, 0, 1000), +(9125, 1140130, 2044802, 1, 1, 0, 300), +(9126, 2230131, 4000008, 1, 1, 0, 600000), +(9127, 2230131, 2000001, 1, 1, 0, 20000), +(9128, 2230131, 2002000, 1, 1, 0, 20000), +(9129, 2230131, 2044302, 1, 1, 0, 300), +(9130, 2230131, 1032000, 1, 1, 0, 1000), +(9131, 2230131, 1032004, 1, 1, 0, 1000), +(9132, 2230131, 1452001, 1, 1, 0, 500), +(9133, 2230131, 1412002, 1, 1, 0, 700), +(9134, 2230131, 2060000, 1, 1, 0, 30000), +(9135, 2230131, 4010002, 1, 1, 0, 9000), +(9136, 2230131, 4020003, 1, 1, 0, 9000), +(9137, 2230131, 1002158, 1, 1, 0, 1500), +(9138, 2230131, 2000003, 1, 1, 0, 20000), +(9139, 2230131, 1040048, 1, 1, 0, 800), +(9140, 2230131, 2061000, 1, 1, 0, 30000), +(9141, 2230131, 1060038, 1, 1, 0, 800), +(9142, 2230131, 1372003, 1, 1, 0, 700), +(9143, 2230131, 1060018, 1, 1, 0, 800), +(9144, 2230131, 1040026, 1, 1, 0, 800), +(9145, 2230131, 1040009, 1, 1, 0, 800), +(9146, 2230131, 4010003, 1, 1, 0, 9000), +(9147, 2230131, 2000002, 1, 1, 0, 20000), +(9148, 2230131, 1050030, 1, 1, 0, 700), +(9149, 2230131, 1050031, 1, 1, 0, 700), +(9150, 2230131, 1432003, 1, 1, 0, 500), +(9151, 2230131, 1002035, 1, 1, 0, 1500), +(9152, 2230131, 1312007, 1, 1, 0, 700), +(9153, 2230131, 1040021, 1, 1, 0, 800), +(9154, 2230131, 1082183, 1, 1, 0, 1000), +(9155, 2230131, 1492003, 1, 1, 0, 500), +(9156, 2230131, 2049100, 1, 1, 0, 300), +(9157, 3300000, 2000003, 1, 1, 0, 20000), +(9158, 3300000, 2060000, 1, 1, 0, 30000), +(9159, 3300000, 2061000, 1, 1, 0, 30000), +(9160, 3300000, 2000002, 1, 1, 0, 20000), +(9161, 3300000, 4010005, 1, 1, 0, 9000), +(9162, 3300000, 4020000, 1, 1, 0, 9000), +(9163, 3300000, 2044701, 1, 1, 0, 300), +(9164, 3300000, 1332020, 1, 1, 0, 500), +(9165, 3300000, 1040000, 1, 1, 0, 800), +(9166, 3300000, 1060075, 1, 1, 0, 800), +(9167, 3300000, 1402010, 1, 1, 0, 700), +(9168, 3300000, 1032007, 1, 1, 0, 1000), +(9169, 3300000, 1072078, 1, 1, 0, 800), +(9170, 3300000, 1082046, 1, 1, 0, 1000), +(9171, 3300000, 1002156, 1, 1, 0, 1500), +(9172, 3300000, 1002622, 1, 1, 0, 1500), +(9173, 3300000, 4130005, 1, 1, 0, 6000), +(9174, 3300000, 4130009, 1, 1, 0, 6000), +(9175, 3300000, 4130021, 1, 1, 0, 6000), +(9176, 3300000, 4000499, 1, 1, 0, 600000), +(9177, 3300000, 2043216, 1, 1, 0, 300), +(9178, 3300000, 2043311, 1, 1, 0, 300), +(9179, 3300000, 2382092, 1, 1, 0, 20000), +(9180, 3300003, 4131008, 1, 1, 0, 6000), +(9181, 3300003, 2060000, 1, 1, 0, 30000), +(9182, 3300003, 2061000, 1, 1, 0, 30000), +(9183, 3300003, 4020000, 1, 1, 0, 9000), +(9184, 3300003, 4020001, 1, 1, 0, 9000), +(9185, 3300003, 2000002, 1, 1, 0, 20000), +(9186, 3300003, 2000003, 1, 1, 0, 20000), +(9187, 3300003, 1041042, 1, 1, 0, 800), +(9188, 3300003, 1061035, 1, 1, 0, 800), +(9189, 3300003, 1002023, 1, 1, 0, 1500), +(9190, 3300003, 1002163, 1, 1, 0, 1500), +(9191, 3300003, 1032010, 1, 1, 0, 1000), +(9192, 3300003, 1040062, 1, 1, 0, 800), +(9193, 3300003, 1060051, 1, 1, 0, 800), +(9194, 3300003, 1051015, 1, 1, 0, 700), +(9195, 3300003, 1302004, 1, 1, 0, 700), +(9196, 3300003, 1332014, 1, 1, 0, 500), +(9197, 3300003, 1072119, 1, 1, 0, 800), +(9198, 3300003, 1072110, 1, 1, 0, 800), +(9199, 3300003, 1082063, 1, 1, 0, 1000), +(9200, 3300003, 1002625, 1, 1, 0, 1500), +(9201, 3300003, 2330001, 1, 1, 0, 500), +(9202, 3300003, 4130000, 1, 1, 0, 6000), +(9203, 3300003, 4130014, 1, 1, 0, 6000), +(9204, 3300003, 4130017, 1, 1, 0, 6000), +(9205, 3300003, 4000502, 1, 1, 0, 600000), +(9206, 3300003, 2044416, 1, 1, 0, 300), +(9207, 3300003, 2043711, 1, 1, 0, 300), +(9208, 3300003, 2382095, 1, 1, 0, 20000), +(9209, 3300002, 4131003, 1, 1, 0, 6000), +(9210, 3300002, 2060000, 1, 1, 0, 30000), +(9211, 3300002, 2061000, 1, 1, 0, 30000), +(9212, 3300002, 4010001, 1, 1, 0, 9000), +(9213, 3300002, 4020000, 1, 1, 0, 9000), +(9214, 3300002, 4004001, 1, 1, 0, 10000), +(9215, 3300002, 2000002, 1, 1, 0, 20000), +(9216, 3300002, 2000003, 1, 1, 0, 20000), +(9217, 3300002, 2040701, 1, 1, 0, 300), +(9218, 3300002, 1462000, 1, 1, 0, 500), +(9219, 3300002, 1322014, 1, 1, 0, 700), +(9220, 3300002, 1050030, 1, 1, 0, 700), +(9221, 3300002, 1040058, 1, 1, 0, 800), +(9222, 3300002, 1060044, 1, 1, 0, 800), +(9223, 3300002, 1041058, 1, 1, 0, 800), +(9224, 3300002, 1061054, 1, 1, 0, 800), +(9225, 3300002, 1072101, 1, 1, 0, 800), +(9226, 3300002, 1002013, 1, 1, 0, 1500), +(9227, 3300002, 1052107, 1, 1, 0, 700), +(9228, 3300002, 4000501, 1, 1, 0, 600000), +(9229, 3300002, 2044216, 1, 1, 0, 300), +(9230, 3300002, 2044316, 1, 1, 0, 300), +(9231, 3300002, 2382094, 1, 1, 0, 20000), +(9232, 3300001, 2000003, 1, 1, 0, 20000), +(9233, 3300001, 2060000, 1, 1, 0, 30000), +(9234, 3300001, 2061000, 1, 1, 0, 30000), +(9235, 3300001, 2000002, 1, 1, 0, 20000), +(9236, 3300001, 4010005, 1, 1, 0, 9000), +(9237, 3300001, 4020000, 1, 1, 0, 9000), +(9238, 3300001, 2044701, 1, 1, 0, 300), +(9239, 3300001, 1332020, 1, 1, 0, 500), +(9240, 3300001, 1040000, 1, 1, 0, 800), +(9241, 3300001, 1060075, 1, 1, 0, 800), +(9242, 3300001, 1402010, 1, 1, 0, 700), +(9243, 3300001, 1032007, 1, 1, 0, 1000), +(9244, 3300001, 1072078, 1, 1, 0, 800), +(9245, 3300001, 1082046, 1, 1, 0, 1000), +(9246, 3300001, 1002156, 1, 1, 0, 1500), +(9247, 3300001, 4010007, 1, 1, 0, 9000), +(9248, 3300001, 1002622, 1, 1, 0, 1500), +(9249, 3300001, 4130005, 1, 1, 0, 6000), +(9250, 3300001, 4130009, 1, 1, 0, 6000), +(9251, 3300001, 4130021, 1, 1, 0, 6000), +(9252, 3300001, 4000500, 1, 1, 0, 600000), +(9253, 3300001, 4000507, 1, 1, 0, 600000), +(9254, 3300001, 2044024, 1, 1, 0, 300), +(9255, 3300001, 2044116, 1, 1, 0, 300), +(9256, 3300001, 2382093, 1, 1, 0, 20000), +(9257, 3300004, 4131008, 1, 1, 0, 6000), +(9258, 3300004, 2060000, 1, 1, 0, 30000), +(9259, 3300004, 2061000, 1, 1, 0, 30000), +(9260, 3300004, 4020000, 1, 1, 0, 9000), +(9261, 3300004, 4020001, 1, 1, 0, 9000), +(9262, 3300004, 2000002, 1, 1, 0, 20000), +(9263, 3300004, 2000003, 1, 1, 0, 20000), +(9264, 3300004, 1041042, 1, 1, 0, 800), +(9265, 3300004, 1061035, 1, 1, 0, 800), +(9266, 3300004, 1002023, 1, 1, 0, 1500), +(9267, 3300004, 1002163, 1, 1, 0, 1500), +(9268, 3300004, 1032010, 1, 1, 0, 1000), +(9269, 3300004, 1040062, 1, 1, 0, 800), +(9270, 3300004, 1060051, 1, 1, 0, 800), +(9271, 3300004, 1051015, 1, 1, 0, 700), +(9272, 3300004, 1302004, 1, 1, 0, 700), +(9273, 3300004, 1332014, 1, 1, 0, 500), +(9274, 3300004, 1072119, 1, 1, 0, 800), +(9275, 3300004, 1072110, 1, 1, 0, 800), +(9276, 3300004, 1082063, 1, 1, 0, 1000), +(9277, 3300004, 1002625, 1, 1, 0, 1500), +(9278, 3300004, 2330001, 1, 1, 0, 500), +(9279, 3300004, 4130000, 1, 1, 0, 6000), +(9280, 3300004, 4130014, 1, 1, 0, 6000), +(9281, 3300004, 4130017, 1, 1, 0, 6000), +(9282, 3300004, 4000503, 1, 1, 0, 600000), +(9283, 3300004, 2044611, 1, 1, 0, 300), +(9284, 3300004, 2044711, 1, 1, 0, 300), +(9285, 3300004, 2044816, 1, 1, 0, 300), +(9286, 3300004, 2382096, 1, 1, 0, 20000), +(9287, 3300005, 2022570, 1, 1, 0, 20000), +(9288, 3300005, 2022571, 1, 1, 0, 20000), +(9289, 3300005, 2022572, 1, 1, 0, 20000), +(9290, 3300005, 2022573, 1, 1, 0, 20000), +(9291, 3300005, 2022574, 1, 1, 0, 20000), +(9292, 3300005, 2000001, 1, 1, 0, 20000), +(9293, 3300005, 2000003, 1, 1, 0, 20000), +(9294, 3300005, 2040004, 1, 1, 0, 300), +(9295, 3300005, 2040501, 1, 1, 0, 300), +(9296, 3300005, 2040504, 1, 1, 0, 300), +(9297, 3300005, 2040801, 1, 1, 0, 300), +(9298, 3300005, 2041007, 1, 1, 0, 300), +(9299, 3300005, 2041004, 1, 1, 0, 300), +(9300, 3300005, 2043801, 1, 1, 0, 300), +(9301, 3300005, 2044001, 1, 1, 0, 300), +(9302, 3300005, 2044201, 1, 1, 0, 300), +(9303, 3300005, 2044601, 1, 1, 0, 300), +(9304, 3300005, 2044801, 1, 1, 0, 300), +(9305, 3300005, 1082073, 1, 1, 0, 1000), +(9306, 3300005, 1082025, 1, 1, 0, 1000), +(9307, 3300005, 1082064, 1, 1, 0, 1000), +(9308, 3300005, 1082074, 1, 1, 0, 1000), +(9309, 3300005, 1082195, 1, 1, 0, 1000), +(9310, 3300005, 1032013, 1, 1, 0, 1000), +(9311, 3300005, 4000504, 1, 1, 0, 600000), +(9312, 3300005, 2043216, 1, 1, 0, 300), +(9313, 3300005, 2043311, 1, 1, 0, 300), +(9314, 3300005, 2044024, 1, 1, 0, 300), +(9315, 3300005, 2044116, 1, 1, 0, 300), +(9316, 3300005, 2044216, 1, 1, 0, 300), +(9317, 3300005, 2044316, 1, 1, 0, 300), +(9318, 3300005, 2044416, 1, 1, 0, 300), +(9319, 3300005, 2043711, 1, 1, 0, 300), +(9320, 3300005, 2043811, 1, 1, 0, 300), +(9321, 3300005, 2044511, 1, 1, 0, 300), +(9322, 3300005, 2044611, 1, 1, 0, 300), +(9323, 3300005, 2044711, 1, 1, 0, 300), +(9324, 3300005, 2044816, 1, 1, 0, 300), +(9325, 3300005, 2388067, 1, 1, 0, 20000), +(9326, 3300006, 2022575, 1, 1, 0, 20000), +(9327, 3300006, 2022576, 1, 1, 0, 20000), +(9328, 3300006, 2022577, 1, 1, 0, 20000), +(9329, 3300006, 2022578, 1, 1, 0, 20000), +(9330, 3300006, 2022579, 1, 1, 0, 20000), +(9331, 3300006, 2000001, 1, 1, 0, 20000), +(9332, 3300006, 2000003, 1, 1, 0, 20000), +(9333, 3300006, 2040701, 1, 1, 0, 300), +(9334, 3300006, 2040801, 1, 1, 0, 300), +(9335, 3300006, 2040901, 1, 1, 0, 300), +(9336, 3300006, 2041001, 1, 1, 0, 300), +(9337, 3300006, 2043001, 1, 1, 0, 300), +(9338, 3300006, 2043101, 1, 1, 0, 300), +(9339, 3300006, 2041010, 1, 1, 0, 300), +(9340, 3300006, 2043201, 1, 1, 0, 300), +(9341, 3300006, 2041004, 1, 1, 0, 300), +(9342, 3300006, 2060000, 1, 1, 0, 30000), +(9343, 3300006, 2061000, 1, 1, 0, 30000), +(9344, 3300006, 2041017, 1, 1, 0, 300), +(9345, 3300006, 2040402, 1, 1, 0, 300), +(9346, 3300006, 2044002, 1, 1, 0, 300), +(9347, 3300006, 2040502, 1, 1, 0, 300), +(9348, 3300006, 2040602, 1, 1, 0, 300), +(9349, 3300006, 2041016, 1, 1, 0, 300), +(9350, 3300006, 2070009, 1, 1, 0, 500), +(9351, 3300006, 1002098, 1, 1, 0, 1500), +(9352, 3300006, 1002154, 1, 1, 0, 1500), +(9353, 3300006, 1002170, 1, 1, 0, 1500), +(9354, 3300006, 1002185, 1, 1, 0, 1500), +(9355, 3300006, 1040085, 1, 1, 0, 800), +(9356, 3300006, 1041086, 1, 1, 0, 800), +(9357, 3300006, 1050039, 1, 1, 0, 700), +(9358, 3300006, 1051026, 1, 1, 0, 700), +(9359, 3300006, 1040080, 1, 1, 0, 800), +(9360, 3300006, 1041083, 1, 1, 0, 800), +(9361, 3300006, 1040084, 1, 1, 0, 800), +(9362, 3300006, 1041076, 1, 1, 0, 800), +(9363, 3300006, 1082025, 1, 1, 0, 1000), +(9364, 3300006, 1082064, 1, 1, 0, 1000), +(9365, 3300006, 1082073, 1, 1, 0, 1000), +(9366, 3300006, 1082074, 1, 1, 0, 1000), +(9367, 3300006, 1072126, 1, 1, 0, 800), +(9368, 3300006, 1072117, 1, 1, 0, 800), +(9369, 3300006, 1072118, 1, 1, 0, 800), +(9370, 3300006, 1072107, 1, 1, 0, 800), +(9371, 3300006, 1002628, 1, 1, 0, 1500), +(9372, 3300006, 1052113, 1, 1, 0, 700), +(9373, 3300006, 1082195, 1, 1, 0, 1000), +(9374, 3300006, 1072300, 1, 1, 0, 800), +(9375, 3300006, 2044112, 1, 1, 0, 300), +(9376, 3300006, 2044412, 1, 1, 0, 300), +(9377, 3300006, 4000506, 1, 1, 0, 600000), +(9378, 3300006, 2043216, 1, 1, 0, 300), +(9379, 3300006, 2043311, 1, 1, 0, 300), +(9380, 3300006, 2044024, 1, 1, 0, 300), +(9381, 3300006, 2044116, 1, 1, 0, 300), +(9382, 3300006, 2044216, 1, 1, 0, 300), +(9383, 3300006, 2044316, 1, 1, 0, 300), +(9384, 3300006, 2044416, 1, 1, 0, 300), +(9385, 3300006, 2043711, 1, 1, 0, 300), +(9386, 3300006, 2043811, 1, 1, 0, 300), +(9387, 3300006, 2044511, 1, 1, 0, 300), +(9388, 3300006, 2044611, 1, 1, 0, 300), +(9389, 3300006, 2044711, 1, 1, 0, 300), +(9390, 3300006, 2044816, 1, 1, 0, 300), +(9391, 3300006, 2388068, 1, 1, 0, 20000), +(9392, 3300007, 2022580, 1, 1, 0, 20000), +(9393, 3300007, 2022581, 1, 1, 0, 20000), +(9394, 3300007, 2022582, 1, 1, 0, 20000), +(9395, 3300007, 2022583, 1, 1, 0, 20000), +(9396, 3300007, 2022584, 1, 1, 0, 20000), +(9397, 3300007, 4010000, 1, 1, 0, 9000), +(9398, 3300007, 4020000, 1, 1, 0, 9000), +(9399, 3300007, 2000000, 1, 1, 0, 20000), +(9400, 3300007, 2010009, 1, 1, 0, 20000), +(9401, 3300007, 2020014, 1, 1, 0, 20000), +(9402, 3300007, 2040001, 1, 1, 0, 300), +(9403, 3300007, 2040301, 1, 1, 0, 300), +(9404, 3300007, 2040401, 1, 1, 0, 300), +(9405, 3300007, 2043201, 1, 1, 0, 300), +(9406, 3300007, 2043701, 1, 1, 0, 300), +(9407, 3300007, 2041016, 1, 1, 0, 300), +(9408, 3300007, 2043801, 1, 1, 0, 300), +(9409, 3300007, 2044001, 1, 1, 0, 300), +(9410, 3300007, 2040501, 1, 1, 0, 300), +(9411, 3300007, 2040601, 1, 1, 0, 300), +(9412, 3300007, 2060000, 1, 1, 0, 30000), +(9413, 3300007, 2061000, 1, 1, 0, 30000), +(9414, 3300007, 2070000, 1, 1, 0, 500), +(9415, 3300007, 1002049, 1, 1, 0, 1500), +(9416, 3300007, 1002073, 1, 1, 0, 1500), +(9417, 3300007, 1002159, 1, 1, 0, 1500), +(9418, 3300007, 1002150, 1, 1, 0, 1500), +(9419, 3300007, 1040041, 1, 1, 0, 800), +(9420, 3300007, 1041024, 1, 1, 0, 800), +(9421, 3300007, 1050025, 1, 1, 0, 700), +(9422, 3300007, 1051005, 1, 1, 0, 700), +(9423, 3300007, 1040023, 1, 1, 0, 800), +(9424, 3300007, 1041033, 1, 1, 0, 800), +(9425, 3300007, 1040050, 1, 1, 0, 800), +(9426, 3300007, 1041060, 1, 1, 0, 800), +(9427, 3300007, 1082001, 1, 1, 0, 1000), +(9428, 3300007, 1082028, 1, 1, 0, 1000), +(9429, 3300007, 1082018, 1, 1, 0, 1000), +(9430, 3300007, 1082039, 1, 1, 0, 1000), +(9431, 3300007, 1072052, 1, 1, 0, 800), +(9432, 3300007, 1072074, 1, 1, 0, 800), +(9433, 3300007, 1072069, 1, 1, 0, 800), +(9434, 3300007, 1072087, 1, 1, 0, 800), +(9435, 3300007, 2040002, 1, 1, 0, 300), +(9436, 3300007, 2040302, 1, 1, 0, 300), +(9437, 3300007, 2040402, 1, 1, 0, 300), +(9438, 3300007, 2043302, 1, 1, 0, 300), +(9439, 3300007, 2043702, 1, 1, 0, 300), +(9440, 3300007, 1002619, 1, 1, 0, 1500), +(9441, 3300007, 1052104, 1, 1, 0, 700), +(9442, 3300007, 1082186, 1, 1, 0, 1000), +(9443, 3300007, 1072291, 1, 1, 0, 800), +(9444, 3300007, 2330000, 1, 1, 0, 500), +(9445, 3300007, 2044801, 1, 1, 0, 300), +(9446, 3300007, 2044902, 1, 1, 0, 300), +(9447, 3300007, 2040418, 1, 1, 0, 300), +(9448, 3300007, 2040928, 1, 1, 0, 300), +(9449, 3300007, 2043114, 1, 1, 0, 300), +(9450, 3300007, 2044414, 1, 1, 0, 300), +(9451, 3300007, 4000505, 1, 1, 0, 600000), +(9452, 3300007, 2043216, 1, 1, 0, 300), +(9453, 3300007, 2043311, 1, 1, 0, 300), +(9454, 3300007, 2044024, 1, 1, 0, 300), +(9455, 3300007, 2044116, 1, 1, 0, 300), +(9456, 3300007, 2044216, 1, 1, 0, 300), +(9457, 3300007, 2044316, 1, 1, 0, 300), +(9458, 3300007, 2044416, 1, 1, 0, 300), +(9459, 3300007, 2043711, 1, 1, 0, 300), +(9460, 3300007, 2043811, 1, 1, 0, 300), +(9461, 3300007, 2044511, 1, 1, 0, 300), +(9462, 3300007, 2044611, 1, 1, 0, 300), +(9463, 3300007, 2044711, 1, 1, 0, 300), +(9464, 3300007, 2044816, 1, 1, 0, 300), +(9465, 3300007, 2388069, 1, 1, 0, 20000), +(9466, 3300008, 4001318, 1, 1, 0, 600000), +(9467, 3300008, 4010005, 1, 1, 0, 90000), +(9468, 3300008, 4020005, 1, 1, 0, 90000), +(9469, 3300008, 2000002, 1, 1, 0, 200000), +(9470, 3300008, 2000003, 1, 1, 0, 200000), +(9471, 3300008, 2002002, 1, 1, 0, 200000), +(9472, 3300008, 2002003, 1, 1, 0, 200000), +(9473, 3300008, 2040301, 1, 1, 0, 3000), +(9474, 3300008, 2040504, 1, 1, 0, 3000), +(9475, 3300008, 2040707, 1, 1, 0, 3000), +(9476, 3300008, 2040801, 1, 1, 0, 3000), +(9477, 3300008, 2040901, 1, 1, 0, 3000), +(9478, 3300008, 2041016, 1, 1, 0, 3000), +(9479, 3300008, 2043801, 1, 1, 0, 3000), +(9480, 3300008, 2044101, 1, 1, 0, 3000), +(9481, 3300008, 2044601, 1, 1, 0, 3000), +(9482, 3300008, 2044701, 1, 1, 0, 3000), +(9483, 3300008, 2040514, 1, 1, 0, 3000), +(9484, 3300008, 2041002, 1, 1, 0, 3000), +(9485, 3300008, 2041017, 1, 1, 0, 3000), +(9486, 3300008, 2043702, 1, 1, 0, 3000), +(9487, 3300008, 2044302, 1, 1, 0, 3000), +(9488, 3300008, 2060000, 1, 1, 0, 300000), +(9489, 3300008, 2061000, 1, 1, 0, 300000), +(9490, 3300008, 1302010, 1, 1, 0, 7000), +(9491, 3300008, 1312008, 1, 1, 0, 7000), +(9492, 3300008, 1322017, 1, 1, 0, 7000), +(9493, 3300008, 1332003, 1, 1, 0, 5000), +(9494, 3300008, 1372007, 1, 1, 0, 7000), +(9495, 3300008, 1382006, 1, 1, 0, 7000), +(9496, 3300008, 1402003, 1, 1, 0, 7000), +(9497, 3300008, 1412003, 1, 1, 0, 7000), +(9498, 3300008, 1422005, 1, 1, 0, 7000), +(9499, 3300008, 1432004, 1, 1, 0, 5000), +(9500, 3300008, 1442005, 1, 1, 0, 7000), +(9501, 3300008, 1452008, 1, 1, 0, 5000), +(9502, 3300008, 1462007, 1, 1, 0, 5000), +(9503, 3300008, 1472021, 1, 1, 0, 5000), +(9504, 3300008, 1482007, 1, 1, 0, 5000), +(9505, 3300008, 1492007, 1, 1, 0, 5000), +(9506, 3300008, 2044802, 1, 1, 0, 3000), +(9507, 3300008, 2044901, 1, 1, 0, 3000), +(9508, 3300008, 2040931, 1, 1, 0, 3000), +(9509, 3300008, 2040928, 1, 1, 0, 3000), +(9510, 3300008, 2043216, 1, 1, 0, 3000), +(9511, 3300008, 2043311, 1, 1, 0, 3000), +(9512, 3300008, 2044024, 1, 1, 0, 3000), +(9513, 3300008, 2044116, 1, 1, 0, 3000), +(9514, 3300008, 2044216, 1, 1, 0, 3000), +(9515, 3300008, 2044316, 1, 1, 0, 3000), +(9516, 3300008, 2044416, 1, 1, 0, 3000), +(9517, 3300008, 2043711, 1, 1, 0, 3000), +(9518, 3300008, 2043811, 1, 1, 0, 3000), +(9519, 3300008, 2044511, 1, 1, 0, 3000), +(9520, 3300008, 2044611, 1, 1, 0, 3000), +(9521, 3300008, 2044711, 1, 1, 0, 3000), +(9522, 3300008, 2044816, 1, 1, 0, 3000), +(9523, 100100, 2380000, 1, 1, 0, 1000), +(9524, 100101, 2380001, 1, 1, 0, 1000), +(9525, 130100, 2380003, 1, 1, 0, 1000), +(9526, 130101, 2380004, 1, 1, 0, 1000), +(9527, 210100, 2380005, 1, 1, 0, 1000), +(9528, 1210100, 2380006, 1, 1, 0, 1000), +(9529, 1210102, 2380007, 1, 1, 0, 1000), +(9530, 1110101, 2380008, 1, 1, 0, 1000), +(9531, 1210101, 2380009, 1, 1, 0, 1000), +(9532, 1120100, 2380010, 1, 1, 0, 1000), +(9533, 1110100, 2380011, 1, 1, 0, 1000), +(9534, 1210103, 2380012, 1, 1, 0, 1000), +(9535, 1130100, 2381000, 1, 1, 0, 1000), +(9536, 1140100, 2381001, 1, 1, 0, 1000), +(9537, 2220100, 2381002, 1, 1, 0, 1000), +(9538, 2300100, 2381003, 1, 1, 0, 1000), +(9539, 2130103, 2381006, 1, 1, 0, 1000), +(9540, 2110200, 2381007, 1, 1, 0, 1000), +(9541, 2130100, 2381008, 1, 1, 0, 1000), +(9542, 2230108, 2381009, 1, 1, 0, 1000), +(9543, 2100102, 2381010, 1, 1, 0, 1000), +(9544, 2230103, 2381011, 1, 1, 0, 1000), +(9545, 5200000, 2381012, 1, 1, 0, 1000), +(9546, 2230105, 2381013, 1, 1, 0, 1000), +(9547, 2230110, 2381014, 1, 1, 0, 1000), +(9548, 2100105, 2381015, 1, 1, 0, 1000), +(9549, 2230101, 2381016, 1, 1, 0, 1000), +(9550, 2230107, 2381017, 1, 1, 0, 1000), +(9551, 2230111, 2381018, 1, 1, 0, 1000), +(9552, 2100106, 2381019, 1, 1, 0, 1000), +(9553, 2110300, 2381020, 1, 1, 0, 1000), +(9554, 2230106, 2381021, 1, 1, 0, 1000), +(9555, 2230102, 2381022, 1, 1, 0, 1000), +(9556, 2100103, 2381023, 1, 1, 0, 1000), +(9557, 2230100, 2381024, 1, 1, 0, 1000), +(9558, 2100107, 2381025, 1, 1, 0, 1000), +(9559, 2230109, 2381026, 1, 1, 0, 1000), +(9560, 2230104, 2381027, 1, 1, 0, 1000), +(9561, 2100104, 2381028, 1, 1, 0, 1000), +(9562, 2230200, 2381029, 1, 1, 0, 1000), +(9563, 2110301, 2381031, 1, 1, 0, 1000), +(9564, 3000000, 2381032, 1, 1, 0, 1000), +(9565, 3000005, 2381034, 1, 1, 0, 1000), +(9566, 3000006, 2381035, 1, 1, 0, 1000), +(9567, 3100102, 2381036, 1, 1, 0, 1000), +(9568, 5200001, 2381037, 1, 1, 0, 1000), +(9569, 5200002, 2381038, 1, 1, 0, 1000), +(9570, 3230307, 2382000, 1, 1, 0, 1000), +(9571, 3110100, 2382002, 1, 1, 0, 1000), +(9572, 3110101, 2382004, 1, 1, 0, 1000), +(9573, 3110102, 2382005, 1, 1, 0, 1000), +(9574, 5300000, 2382006, 1, 1, 0, 1000), +(9575, 3230104, 2382007, 1, 1, 0, 1000), +(9576, 3110300, 2382009, 1, 1, 0, 1000), +(9577, 3210200, 2382011, 1, 1, 0, 1000), +(9578, 3210201, 2382012, 1, 1, 0, 1000), +(9579, 3210202, 2382013, 1, 1, 0, 1000), +(9580, 5300001, 2382014, 1, 1, 0, 1000), +(9581, 3210204, 2382015, 1, 1, 0, 1000), +(9582, 3210205, 2382016, 1, 1, 0, 1000), +(9583, 3210207, 2382017, 1, 1, 0, 1000), +(9584, 3230100, 2382018, 1, 1, 0, 1000), +(9585, 3230101, 2382019, 1, 1, 0, 1000), +(9586, 3230200, 2382020, 1, 1, 0, 1000), +(9587, 3230302, 2382022, 1, 1, 0, 1000), +(9588, 5400000, 2382023, 1, 1, 0, 1000), +(9589, 3110302, 2382024, 1, 1, 0, 1000), +(9590, 3210203, 2382025, 1, 1, 0, 1000), +(9591, 3210206, 2382026, 1, 1, 0, 1000), +(9592, 3210450, 2382027, 1, 1, 0, 1000), +(9593, 3210208, 2382028, 1, 1, 0, 1000), +(9594, 3210800, 2382029, 1, 1, 0, 1000), +(9595, 3230102, 2382030, 1, 1, 0, 1000), +(9596, 3230303, 2382031, 1, 1, 0, 1000), +(9597, 3230306, 2382032, 1, 1, 0, 1000), +(9598, 3230103, 2382033, 1, 1, 0, 1000), +(9599, 3230304, 2382034, 1, 1, 0, 1000), +(9600, 3230405, 2382035, 1, 1, 0, 1000), +(9601, 3110303, 2382036, 1, 1, 0, 1000), +(9602, 3230308, 2382037, 1, 1, 0, 1000), +(9603, 3230305, 2382038, 1, 1, 0, 1000), +(9604, 4230100, 2382039, 1, 1, 0, 1000), +(9605, 4230101, 2382040, 1, 1, 0, 1000), +(9606, 4230113, 2382041, 1, 1, 0, 1000), +(9607, 4230200, 2382043, 1, 1, 0, 1000), +(9608, 4230201, 2382044, 1, 1, 0, 1000), +(9609, 4230500, 2382045, 1, 1, 0, 1000), +(9610, 4230107, 2382047, 1, 1, 0, 1000), +(9611, 4230111, 2382048, 1, 1, 0, 1000), +(9612, 4230114, 2382049, 1, 1, 0, 1000), +(9613, 4230119, 2382050, 1, 1, 0, 1000), +(9614, 4230501, 2382051, 1, 1, 0, 1000), +(9615, 4230105, 2382052, 1, 1, 0, 1000), +(9616, 4230103, 2382053, 1, 1, 0, 1000), +(9617, 4230109, 2382054, 1, 1, 0, 1000), +(9618, 4230124, 2382056, 1, 1, 0, 1000), +(9619, 4110300, 2382057, 1, 1, 0, 1000), +(9620, 4230108, 2382058, 1, 1, 0, 1000), +(9621, 4230123, 2382059, 1, 1, 0, 1000), +(9622, 4230502, 2382060, 1, 1, 0, 1000), +(9623, 4230120, 2382061, 1, 1, 0, 1000), +(9624, 4230112, 2382062, 1, 1, 0, 1000), +(9625, 4230125, 2382063, 1, 1, 0, 1000), +(9626, 4230106, 2382064, 1, 1, 0, 1000), +(9627, 4130100, 2382065, 1, 1, 0, 1000), +(9628, 4230110, 2382066, 1, 1, 0, 1000), +(9629, 4230300, 2382068, 1, 1, 0, 1000), +(9630, 4230400, 2382069, 1, 1, 0, 1000), +(9631, 4230503, 2382070, 1, 1, 0, 1000), +(9632, 4230504, 2382071, 1, 1, 0, 1000), +(9633, 4110301, 2382072, 1, 1, 0, 1000), +(9634, 4250000, 2382076, 1, 1, 0, 1000), +(9635, 4230121, 2383000, 1, 1, 0, 1000), +(9636, 4130101, 2383001, 1, 1, 0, 1000), +(9637, 4230115, 2383002, 1, 1, 0, 1000), +(9638, 4130102, 2383003, 1, 1, 0, 1000), +(9639, 4130103, 2383004, 1, 1, 0, 25000), +(9640, 4230505, 2383006, 1, 1, 0, 1000), +(9641, 9300255, 2383007, 1, 1, 0, 1000), +(9642, 4230102, 2383008, 1, 1, 0, 1000), +(9643, 4230104, 2383009, 1, 1, 0, 1000), +(9644, 4230506, 2383010, 1, 1, 0, 1000), +(9645, 5130100, 2383012, 1, 1, 0, 1000), +(9646, 5100000, 2383013, 1, 1, 0, 1000), +(9647, 5100003, 2383014, 1, 1, 0, 1000), +(9648, 5120503, 2383015, 1, 1, 0, 1000), +(9649, 9300144, 2383016, 1, 1, 0, 1000), +(9650, 5100002, 2383017, 1, 1, 0, 1000), +(9651, 5120504, 2383018, 1, 1, 0, 1000), +(9652, 5130103, 2383019, 1, 1, 0, 1000), +(9653, 5120001, 2383021, 1, 1, 0, 1000), +(9654, 5120002, 2383022, 1, 1, 0, 1000), +(9655, 5120003, 2383023, 1, 1, 0, 1000), +(9656, 5100005, 2383024, 1, 1, 0, 1000), +(9657, 5120501, 2383025, 1, 1, 0, 1000), +(9658, 5120100, 2383026, 1, 1, 0, 25000), +(9659, 5120502, 2383027, 1, 1, 0, 1000), +(9660, 9300149, 2383028, 1, 1, 0, 1000), +(9661, 5300100, 2383029, 1, 1, 0, 1000), +(9662, 5130101, 2383030, 1, 1, 0, 1000), +(9663, 5130104, 2383031, 1, 1, 0, 1000), +(9664, 5120506, 2383032, 1, 1, 0, 1000), +(9665, 5130105, 2383033, 1, 1, 0, 1000), +(9666, 5120500, 2383035, 1, 1, 0, 1000), +(9667, 5150001, 2383036, 1, 1, 0, 1000), +(9668, 5130107, 2383037, 1, 1, 0, 1000), +(9669, 5130108, 2383038, 1, 1, 0, 1000), +(9670, 5130102, 2383039, 1, 1, 0, 1000), +(9671, 5140000, 2383040, 1, 1, 0, 1000), +(9672, 5120505, 2383041, 1, 1, 0, 1000), +(9673, 5110302, 2383042, 1, 1, 0, 1000), +(9674, 5150000, 2383043, 1, 1, 0, 1000), +(9675, 6130100, 2383044, 1, 1, 0, 1000), +(9676, 6130103, 2383045, 1, 1, 0, 1000), +(9677, 6130201, 2383046, 1, 1, 0, 1000), +(9678, 6130203, 2383047, 1, 1, 0, 1000), +(9679, 5090000, 2383048, 1, 1, 0, 25000), +(9680, 5090001, 2383049, 1, 1, 0, 25000), +(9681, 4250001, 2383056, 1, 1, 0, 1000), +(9682, 5250000, 2383057, 1, 1, 0, 1000), +(9683, 5250002, 2383058, 1, 1, 0, 1000), +(9684, 5250001, 2383059, 1, 1, 0, 1000), +(9685, 6130200, 2384000, 1, 1, 0, 1000), +(9686, 9400201, 2384001, 1, 1, 0, 1000), +(9687, 6130207, 2384002, 1, 1, 0, 1000), +(9688, 6230602, 2384003, 1, 1, 0, 1000), +(9689, 6230400, 2384004, 1, 1, 0, 1000), +(9690, 6230600, 2384006, 1, 1, 0, 1000), +(9691, 6230200, 2384007, 1, 1, 0, 1000), +(9692, 6130204, 2384008, 1, 1, 0, 1000), +(9693, 6300000, 2384009, 1, 1, 0, 1000), +(9694, 6090000, 2384010, 1, 1, 0, 25000), +(9695, 6110300, 2384011, 1, 1, 0, 1000), +(9696, 6230300, 2384012, 1, 1, 0, 1000), +(9697, 6130209, 2384013, 1, 1, 0, 1000), +(9698, 6230500, 2384014, 1, 1, 0, 1000), +(9699, 6230601, 2384015, 1, 1, 0, 1000), +(9700, 6400000, 2384016, 1, 1, 0, 1000), +(9701, 6130208, 2384017, 1, 1, 0, 1000), +(9702, 9300146, 2384018, 1, 1, 0, 1000), +(9703, 8140200, 2384019, 1, 1, 0, 1000), +(9704, 7130100, 2384020, 1, 1, 0, 1000), +(9705, 7130400, 2384021, 1, 1, 0, 25000), +(9706, 7130401, 2384022, 1, 1, 0, 25000), +(9707, 7130402, 2384023, 1, 1, 0, 25000), +(9708, 7130500, 2384024, 1, 1, 0, 1000), +(9709, 7130104, 2384025, 1, 1, 0, 1000), +(9710, 7130001, 2384026, 1, 1, 0, 1000), +(9711, 7130002, 2384027, 1, 1, 0, 1000), +(9712, 7130600, 2384028, 1, 1, 0, 1000), +(9713, 7130103, 2384029, 1, 1, 0, 1000), +(9714, 6300100, 2384032, 1, 1, 0, 1000), +(9715, 7130501, 2384033, 1, 1, 0, 1000), +(9716, 7130200, 2384035, 1, 1, 0, 1000), +(9717, 7130101, 2384036, 1, 1, 0, 1000), +(9718, 6090001, 2384037, 1, 1, 0, 25000), +(9719, 7090000, 2384038, 1, 1, 0, 25000), +(9720, 6090003, 2384039, 1, 1, 0, 25000), +(9721, 6090004, 2384040, 1, 1, 0, 25000), +(9722, 8140300, 2385000, 1, 1, 0, 1000), +(9723, 7130003, 2385001, 1, 1, 0, 1000), +(9724, 7130601, 2385002, 1, 1, 0, 1000), +(9725, 6400100, 2385003, 1, 1, 0, 1000), +(9726, 7130102, 2385004, 1, 1, 0, 1000), +(9727, 7130004, 2385005, 1, 1, 0, 1000), +(9728, 8140000, 2385006, 1, 1, 0, 1000), +(9729, 8140001, 2385007, 1, 1, 0, 1000), +(9730, 8110300, 2385008, 1, 1, 0, 1000), +(9731, 8140100, 2385009, 1, 1, 0, 1000), +(9732, 8140002, 2385011, 1, 1, 0, 1000), +(9733, 7130010, 2385012, 1, 1, 0, 1000), +(9734, 7130020, 2385013, 1, 1, 0, 1000), +(9735, 8140110, 2385014, 1, 1, 0, 1000), +(9736, 8140101, 2385016, 1, 1, 0, 1000), +(9737, 8140102, 2385017, 1, 1, 0, 1000), +(9738, 8140103, 2385018, 1, 1, 0, 1000), +(9739, 8140111, 2385019, 1, 1, 0, 1000), +(9740, 7130300, 2385020, 1, 1, 0, 1000), +(9741, 8140500, 2385021, 1, 1, 0, 1000), +(9742, 8140700, 2385022, 1, 1, 0, 1000), +(9743, 8090000, 2385023, 1, 1, 0, 25000), +(9744, 8200000, 2385025, 1, 1, 0, 1000), +(9745, 8140600, 2386000, 1, 1, 0, 1000), +(9746, 8140701, 2386001, 1, 1, 0, 1000), +(9747, 9300324, 2386002, 1, 1, 0, 25000), +(9748, 8141300, 2386003, 1, 1, 0, 1000), +(9749, 8142000, 2386004, 1, 1, 0, 1000), +(9750, 8140702, 2386005, 1, 1, 0, 1000), +(9751, 8140703, 2386006, 1, 1, 0, 1000), +(9752, 8142100, 2386007, 1, 1, 0, 1000), +(9753, 8150300, 2386008, 1, 1, 0, 1000), +(9754, 9500136, 2386009, 1, 1, 0, 1000), +(9755, 9500137, 2386010, 1, 1, 0, 1000), +(9756, 8150200, 2386011, 1, 1, 0, 1000), +(9757, 8150100, 2386012, 1, 1, 0, 1000), +(9758, 8150301, 2386013, 1, 1, 0, 1000), +(9759, 8150101, 2386014, 1, 1, 0, 1000), +(9760, 8150302, 2386015, 1, 1, 0, 1000), +(9761, 8150201, 2386016, 1, 1, 0, 1000), +(9762, 8190000, 2386017, 1, 1, 0, 1000), +(9763, 8200001, 2386021, 1, 1, 0, 1000), +(9764, 8200002, 2386022, 1, 1, 0, 1000), +(9765, 8200003, 2386023, 1, 1, 0, 1000), +(9766, 8200004, 2386024, 1, 1, 0, 1000), +(9767, 8160000, 2387000, 1, 1, 0, 1000), +(9768, 8170000, 2387001, 1, 1, 0, 1000), +(9769, 8190003, 2387002, 1, 1, 0, 1000), +(9770, 8190004, 2387003, 1, 1, 0, 1000), +(9771, 8190002, 2387004, 1, 1, 0, 1000), +(9772, 8200005, 2387006, 1, 1, 0, 1000), +(9773, 8200006, 2387007, 1, 1, 0, 1000), +(9774, 8200007, 2387008, 1, 1, 0, 1000), +(9775, 8200008, 2387009, 1, 1, 0, 1000), +(9776, 8200009, 2387010, 1, 1, 0, 1000), +(9777, 8200010, 2387011, 1, 1, 0, 1000), +(9778, 8200011, 2387012, 1, 1, 0, 1000), +(9779, 8200012, 2387013, 1, 1, 0, 1000), +(9780, 9300184, 2388000, 1, 1, 0, 25000), +(9781, 9300003, 2388001, 1, 1, 0, 1000), +(9782, 5220002, 2388002, 1, 1, 0, 25000), +(9783, 5220000, 2388003, 1, 1, 0, 25000), +(9784, 9300012, 2388004, 1, 1, 0, 25000), +(9785, 5220003, 2388005, 1, 1, 0, 25000), +(9786, 6130101, 2388006, 1, 1, 0, 25000), +(9787, 6220000, 2388007, 1, 1, 0, 25000), +(9788, 6300005, 2388008, 1, 1, 0, 25000), +(9789, 7220001, 2388009, 1, 1, 0, 25000), +(9790, 7220000, 2388010, 1, 1, 0, 25000), +(9791, 9300119, 2388011, 1, 1, 0, 25000), +(9792, 9300039, 2388012, 1, 1, 0, 25000), +(9793, 7220002, 2388013, 1, 1, 0, 25000), +(9794, 9300139, 2388014, 1, 1, 0, 25000), +(9795, 8220001, 2388016, 1, 1, 0, 25000), +(9796, 8150000, 2388017, 1, 1, 0, 25000), +(9797, 8180000, 2388018, 1, 1, 0, 25000), +(9798, 8180001, 2388019, 1, 1, 0, 25000), +(9799, 8510000, 2388020, 1, 1, 0, 25000), +(9800, 9300028, 2388021, 1, 1, 0, 25000), +(9801, 8500002, 2388022, 1, 1, 0, 25000), +(9802, 3220000, 2388025, 1, 1, 0, 25000), +(9803, 8130100, 2388026, 1, 1, 0, 25000), +(9804, 9500317, 2388028, 1, 1, 0, 25000), +(9805, 3220001, 2388029, 1, 1, 0, 25000), +(9806, 4220000, 2388030, 1, 1, 0, 25000), +(9807, 6220001, 2388031, 1, 1, 0, 25000), +(9808, 8220003, 2388033, 1, 1, 0, 25000), +(9809, 8220004, 2388040, 1, 1, 0, 25000), +(9810, 8220005, 2388041, 1, 1, 0, 25000), +(9811, 8220006, 2388042, 1, 1, 0, 25000), +(9812, 8820000, 2388043, 1, 1, 0, 25000), +(9813, 9300274, 2380013, 1, 1, 0, 1000), +(9814, 8830000, 2388055, 1, 1, 0, 25000), +(9815, 1110130, 2380014, 1, 1, 0, 1000), +(9816, 100130, 2380015, 1, 1, 0, 1000), +(9817, 100131, 2380016, 1, 1, 0, 1000), +(9818, 100132, 2380017, 1, 1, 0, 1000), +(9819, 100133, 2380018, 1, 1, 0, 1000), +(9820, 100134, 2380019, 1, 1, 0, 1000), +(9821, 2230131, 2381083, 1, 1, 0, 1000), +(9822, 3300001, 2382093, 1, 1, 0, 1000), +(9823, 3300002, 2382094, 1, 1, 0, 1000), +(9824, 3300003, 2382095, 1, 1, 0, 1000), +(9825, 3300004, 2382096, 1, 1, 0, 1000), +(9826, 5220004, 2388052, 1, 1, 0, 25000), +(9827, 8220007, 2388053, 1, 1, 0, 25000), +(9828, 8220009, 2388054, 1, 1, 0, 25000), +(9829, 3300006, 2388068, 1, 1, 0, 1000), +(9830, 3300007, 2388069, 1, 1, 0, 1000), +(9831, 8170000, 0, 664, 996, 0, 400000), +(9832, 8160000, 0, 664, 996, 0, 400000), +(9833, 8141000, 0, 625, 926, 0, 400000), +(9834, 8142000, 0, 622, 948, 0, 400000), +(9835, 8142100, 0, 638, 944, 0, 400000), +(9836, 9420516, 0, 638, 944, 0, 400000), +(9837, 9420515, 0, 600, 900, 0, 400000), +(9838, 8141100, 0, 646, 959, 0, 400000), +(9839, 8143000, 0, 416, 623, 0, 400000), +(9840, 9400013, 0, 697, 1020, 0, 400000), +(9841, 6400000, 0, 333, 493, 0, 400000), +(9842, 6230200, 0, 325, 486, 0, 400000), +(9843, 7140000, 0, 361, 540, 0, 400000), +(9844, 7130010, 0, 364, 545, 0, 400000), +(9845, 7160000, 0, 400, 600, 0, 400000), +(9846, 7130300, 0, 408, 610, 0, 400000), +(9847, 8140500, 0, 640, 960, 0, 400000), +(9848, 7130001, 0, 344, 516, 0, 400000), +(9849, 7130600, 0, 347, 515, 0, 400000), +(9850, 6300100, 0, 320, 480, 0, 400000), +(9851, 7130501, 0, 352, 528, 0, 400000), +(9852, 7130101, 0, 409, 599, 0, 400000), +(9853, 7130200, 0, 417, 548, 0, 400000), +(9854, 8140300, 0, 468, 960, 0, 400000), +(9855, 6400100, 0, 334, 497, 0, 400000), +(9856, 6300000, 0, 417, 548, 0, 400000), +(9857, 8130100, 0, 1621, 2387, 0, 400000), +(9858, 6130200, 0, 312, 468, 0, 400000), +(9859, 9400201, 0, 320, 463, 0, 400000), +(9860, 6230400, 0, 328, 492, 0, 400000), +(9861, 6230602, 0, 328, 492, 0, 400000), +(9862, 6230600, 0, 324, 486, 0, 400000), +(9863, 5100000, 0, 330, 490, 0, 400000), +(9864, 6230300, 0, 320, 480, 0, 400000), +(9865, 6230500, 0, 332, 498, 0, 400000), +(9866, 6230601, 0, 332, 498, 0, 400000), +(9867, 7130100, 0, 340, 500, 0, 400000), +(9868, 8140200, 0, 336, 509, 0, 400000), +(9869, 5100002, 0, 212, 381, 0, 400000), +(9870, 5120504, 0, 208, 312, 0, 400000), +(9871, 5130103, 0, 224, 336, 0, 400000), +(9872, 5120000, 0, 224, 336, 0, 400000), +(9873, 5120001, 0, 235, 348, 0, 400000), +(9874, 5120002, 0, 235, 348, 0, 400000), +(9875, 5120003, 0, 235, 348, 0, 400000), +(9876, 5100005, 0, 232, 348, 0, 400000), +(9877, 5120100, 0, 324, 486, 0, 400000), +(9878, 5130101, 0, 256, 348, 0, 400000), +(9879, 5130104, 0, 254, 386, 0, 400000), +(9880, 5300100, 0, 251, 359, 0, 400000), +(9881, 9400204, 0, 200, 305, 0, 400000), +(9882, 5100004, 0, 268, 402, 0, 400000), +(9883, 5130107, 0, 273, 408, 0, 400000), +(9884, 5150001, 0, 272, 408, 0, 400000), +(9885, 5140000, 0, 280, 420, 0, 400000), +(9886, 5130102, 0, 280, 420, 0, 400000), +(9887, 5150000, 0, 296, 447, 0, 400000), +(9888, 9400003, 0, 280, 420, 0, 400000), +(9889, 6130100, 0, 304, 456, 0, 400000), +(9890, 6130101, 0, 800, 1196, 0, 400000), +(9891, 6130202, 0, 304, 456, 0, 400000), +(9892, 100100, 0, 4, 6, 0, 400000), +(9893, 100101, 0, 8, 12, 0, 400000), +(9894, 120100, 0, 8, 12, 0, 400000), +(9895, 130100, 0, 12, 18, 0, 400000), +(9896, 130101, 0, 12, 18, 0, 400000), +(9897, 210100, 0, 12, 18, 0, 400000), +(9898, 1210100, 0, 14, 21, 0, 400000), +(9899, 1210102, 0, 16, 24, 0, 400000), +(9900, 1210101, 0, 20, 30, 0, 400000), +(9901, 1110101, 0, 20, 30, 0, 400000), +(9902, 1120100, 0, 24, 36, 0, 400000), +(9903, 1210103, 0, 24, 36, 0, 400000), +(9904, 1110100, 0, 28, 42, 0, 400000), +(9905, 1130100, 0, 32, 48, 0, 400000), +(9906, 1140100, 0, 34, 47, 0, 400000), +(9907, 2220100, 0, 36, 54, 0, 400000), +(9908, 2300100, 0, 32, 48, 0, 400000), +(9909, 2130103, 0, 33, 49, 0, 400000), +(9910, 2110200, 0, 36, 54, 0, 400000), +(9911, 2130100, 0, 40, 60, 0, 400000), +(9912, 2230108, 0, 40, 60, 0, 400000), +(9913, 9600002, 0, 43, 65, 0, 400000), +(9914, 2100102, 0, 40, 60, 0, 400000), +(9915, 5200000, 0, 60, 90, 0, 400000), +(9916, 2230103, 0, 47, 62, 0, 400000), +(9917, 2070010, 0, 44, 66, 0, 400000), +(9918, 2100105, 0, 44, 63, 0, 400000), +(9919, 2230101, 0, 44, 66, 0, 400000), +(9920, 2230102, 0, 44, 66, 0, 400000), +(9921, 9400000, 0, 40, 60, 0, 400000), +(9922, 7130500, 0, 337, 501, 0, 400000), +(9923, 2230100, 0, 48, 72, 0, 400000), +(9924, 2230106, 0, 44, 66, 0, 400000), +(9925, 9600003, 0, 58, 81, 0, 400000), +(9926, 2100103, 0, 49, 66, 0, 400000), +(9927, 2230104, 0, 56, 78, 0, 400000), +(9928, 2230109, 0, 52, 78, 0, 400000), +(9929, 2100104, 0, 52, 77, 0, 400000), +(9930, 2230200, 0, 52, 78, 0, 400000), +(9931, 3000002, 0, 80, 120, 0, 400000), +(9932, 9400010, 0, 52, 78, 0, 400000), +(9933, 5200001, 0, 64, 96, 0, 400000), +(9934, 5200002, 0, 64, 96, 0, 400000), +(9935, 3000000, 0, 52, 78, 0, 400000), +(9936, 9400002, 0, 52, 78, 0, 400000), +(9937, 3230400, 0, 97, 139, 0, 400000), +(9938, 3000006, 0, 56, 84, 0, 400000), +(9939, 9600004, 0, 64, 99, 0, 400000), +(9940, 3230307, 0, 100, 144, 0, 400000), +(9941, 3110300, 0, 70, 114, 0, 400000), +(9942, 3110100, 0, 74, 144, 0, 400000), +(9943, 3210100, 0, 76, 114, 0, 400000), +(9944, 3110102, 0, 80, 120, 0, 400000), +(9945, 3110101, 0, 80, 120, 0, 400000), +(9946, 3230104, 0, 56, 84, 0, 400000), +(9947, 5300000, 0, 68, 102, 0, 400000), +(9948, 5300001, 0, 72, 108, 0, 400000), +(9949, 3210200, 0, 80, 120, 0, 400000), +(9950, 3210201, 0, 80, 120, 0, 400000), +(9951, 3210202, 0, 80, 120, 0, 400000), +(9952, 9600006, 0, 83, 116, 0, 400000), +(9953, 9400509, 0, 232, 348, 0, 400000), +(9954, 3210205, 0, 84, 126, 0, 400000), +(9955, 3210204, 0, 84, 126, 0, 400000), +(9956, 3210207, 0, 84, 126, 0, 400000), +(9957, 3230100, 0, 60, 90, 0, 400000), +(9958, 3230101, 0, 56, 84, 0, 400000), +(9959, 3230200, 0, 56, 84, 0, 400000), +(9960, 3230300, 0, 94, 144, 0, 400000), +(9961, 5400000, 0, 76, 114, 0, 400000), +(9962, 3230302, 0, 76, 114, 0, 400000), +(9963, 9600005, 0, 93, 138, 0, 400000), +(9964, 3210206, 0, 76, 114, 0, 400000), +(9965, 3210203, 0, 76, 114, 0, 400000), +(9966, 3210208, 0, 76, 114, 0, 400000), +(9967, 3210450, 0, 75, 114, 0, 400000), +(9968, 3230405, 0, 96, 114, 0, 400000), +(9969, 3230102, 0, 92, 138, 0, 400000), +(9970, 3210800, 0, 88, 132, 0, 400000), +(9971, 3230303, 0, 96, 144, 0, 400000), +(9972, 3230306, 0, 96, 144, 0, 400000), +(9973, 9600008, 0, 43, 60, 0, 400000), +(9974, 3230103, 0, 96, 144, 0, 400000), +(9975, 3230304, 0, 96, 144, 0, 400000), +(9976, 9600007, 0, 136, 162, 0, 400000), +(9977, 3230308, 0, 96, 144, 0, 400000), +(9978, 3230305, 0, 96, 144, 0, 400000), +(9979, 4230100, 0, 96, 144, 0, 400000), +(9980, 4230101, 0, 104, 156, 0, 400000), +(9981, 4230113, 0, 108, 162, 0, 400000), +(9982, 4230200, 0, 104, 156, 0, 400000), +(9983, 4230201, 0, 108, 162, 0, 400000), +(9984, 4230116, 0, 108, 162, 0, 400000), +(9985, 9400011, 0, 95, 135, 0, 400000), +(9986, 4230500, 0, 96, 144, 0, 400000), +(9987, 4230107, 0, 112, 168, 0, 400000), +(9988, 4230111, 0, 116, 174, 0, 400000), +(9989, 4230114, 0, 117, 174, 0, 400000), +(9990, 4230119, 0, 116, 174, 0, 400000), +(9991, 4230501, 0, 128, 192, 0, 400000), +(9992, 4230105, 0, 120, 180, 0, 400000), +(9993, 4230103, 0, 120, 180, 0, 400000), +(9994, 4230109, 0, 123, 190, 0, 400000), +(9995, 4230124, 0, 120, 180, 0, 400000), +(9996, 4230117, 0, 128, 192, 0, 400000), +(9997, 4230108, 0, 132, 198, 0, 400000), +(9998, 4230123, 0, 132, 198, 0, 400000), +(9999, 4230112, 0, 140, 210, 0, 400000), +(10000, 4230120, 0, 140, 210, 0, 400000), +(10001, 4230106, 0, 114, 216, 0, 400000), +(10002, 4130100, 0, 160, 240, 0, 400000), +(10003, 4230110, 0, 164, 246, 0, 400000), +(10004, 4000077, 0, 148, 222, 0, 400000), +(10005, 4230118, 0, 164, 246, 0, 400000), +(10006, 4230300, 0, 160, 240, 0, 400000), +(10007, 4130101, 0, 168, 252, 0, 400000), +(10008, 4230115, 0, 172, 258, 0, 400000), +(10009, 4230121, 0, 164, 246, 0, 400000), +(10010, 4130102, 0, 172, 258, 0, 400000), +(10011, 4230126, 0, 172, 258, 0, 400000), +(10012, 9400101, 0, 88, 132, 0, 400000), +(10013, 4230505, 0, 177, 258, 0, 400000), +(10014, 4230506, 0, 180, 268, 0, 400000), +(10015, 4230102, 0, 176, 246, 0, 400000), +(10016, 4230104, 0, 176, 246, 0, 400000), +(10017, 5130100, 0, 200, 300, 0, 400000), +(10018, 5100003, 0, 200, 300, 0, 400000), +(10019, 5120503, 0, 208, 312, 0, 400000), +(10020, 5110301, 0, 240, 360, 0, 400000), +(10021, 5110302, 0, 288, 432, 0, 400000), +(10022, 9400121, 0, 1000, 5000, 0, 400000), +(10023, 9400112, 0, 10000, 20000, 0, 400000), +(10024, 9400112, 0, 10000, 20000, 0, 400000), +(10025, 9400113, 0, 20000, 50000, 0, 400000), +(10026, 9400113, 0, 20000, 50000, 0, 400000), +(10027, 9400300, 0, 20000, 30000, 0, 400000), +(10028, 9400300, 0, 20000, 30000, 0, 400000), +(10029, 9400300, 0, 20000, 30000, 0, 400000), +(10030, 9410009, 0, 50, 90, 0, 400000), +(10031, 9410011, 0, 50, 90, 0, 400000), +(10032, 9420540, 0, 500, 700, 0, 400000), +(10033, 9400014, 0, 1000, 5000, 0, 400000), +(10034, 8180001, 0, 3000, 6000, 0, 400000), +(10035, 8180000, 0, 3000, 6000, 0, 400000), +(10036, 8140102, 0, 500, 800, 0, 400000), +(10037, 8140103, 0, 500, 800, 0, 400000), +(10038, 8140101, 0, 500, 800, 0, 400000), +(10039, 8140700, 0, 500, 800, 0, 400000), +(10040, 8140701, 0, 600, 900, 0, 400000), +(10041, 9400551, 0, 1000, 5000, 0, 400000), +(10042, 8190003, 0, 697, 1020, 0, 400000), +(10043, 8190004, 0, 750, 1150, 0, 400000), +(10044, 8190005, 0, 800, 1200, 0, 400000), +(10045, 8140110, 0, 500, 800, 0, 400000), +(10046, 8140111, 0, 600, 900, 0, 400000), +(10047, 9400575, 0, 1000, 5000, 0, 400000), +(10048, 8190000, 0, 800, 1200, 0, 400000), +(10049, 8190002, 0, 900, 1300, 0, 400000), +(10050, 9400545, 0, 600, 900, 0, 400000), +(10051, 9001000, 0, 200, 400, 0, 400000), +(10052, 9001001, 0, 200, 400, 0, 400000), +(10053, 9001002, 0, 200, 400, 0, 400000), +(10054, 9001003, 0, 200, 400, 0, 400000), +(10055, 9420500, 0, 36, 54, 0, 400000), +(10056, 9420502, 0, 30, 42, 0, 400000), +(10057, 9420506, 0, 56, 69, 0, 400000), +(10058, 9420503, 0, 76, 114, 0, 400000), +(10059, 9420501, 0, 92, 138, 0, 400000), +(10060, 9420504, 0, 208, 312, 0, 400000), +(10061, 9420505, 0, 232, 348, 0, 400000), +(10062, 9420508, 0, 254, 364, 0, 400000), +(10063, 9420509, 0, 280, 420, 0, 400000), +(10064, 9420510, 0, 329, 482, 0, 400000), +(10065, 9420511, 0, 304, 456, 0, 400000), +(10066, 9420512, 0, 332, 495, 0, 400000), +(10067, 9420513, 0, 1059, 2941, 0, 400000), +(10068, 6130208, 0, 312, 475, 0, 400000), +(10069, 7130104, 0, 332, 495, 0, 400000), +(10070, 8810018, 0, 40000, 50000, 0, 400000), +(10071, 8140001, 0, 500, 700, 0, 400000), +(10072, 8140002, 0, 600, 800, 0, 400000), +(10073, 4110302, 0, 180, 270, 0, 400000), +(10074, 2220000, 0, 30, 70, 0, 400000), +(10075, 9420519, 0, 700, 750, 0, 400000), +(10076, 9420517, 0, 750, 850, 0, 400000), +(10077, 8220002, 0, 300, 600, 0, 400000), +(10078, 8220004, 0, 12000, 14000, 0, 400000), +(10079, 8200011, 0, 750, 1050, 0, 400000), +(10080, 8220001, 0, 700, 900, 0, 400000), +(10081, 8820001, 0, 40000, 50000, 0, 400000), +(10082, 100120, 0, 1, 5, 0, 400000), +(10083, 100121, 0, 10, 14, 0, 400000), +(10084, 7130020, 0, 300, 450, 0, 400000), +(10085, 9300328, 0, 4, 6, 0, 400000), +(10086, 9400569, 0, 500, 800, 0, 400000), +(10087, 9500168, 0, 500, 800, 0, 400000), +(10088, 9500169, 0, 500, 800, 0, 400000), +(10089, 9500170, 0, 500, 800, 0, 400000), +(10090, 9500171, 0, 500, 800, 0, 400000), +(10091, 9500172, 0, 500, 800, 0, 400000), +(10092, 9500173, 0, 500, 800, 0, 400000), +(10093, 9500174, 0, 500, 800, 0, 400000), +(10094, 9500175, 0, 500, 800, 0, 400000), +(10095, 9500176, 0, 500, 800, 0, 400000), +(10096, 8220000, 0, 500, 800, 0, 400000), +(10097, 9420544, 0, 2000, 5000, 0, 400000), +(10098, 9420549, 0, 2000, 5000, 0, 400000), +(10099, 8200000, 0, 400, 600, 0, 400000), +(10100, 8200001, 0, 640, 920, 0, 400000), +(10101, 8200002, 0, 650, 930, 0, 400000), +(10102, 8200003, 0, 640, 950, 0, 400000), +(10103, 8200004, 0, 640, 956, 0, 400000), +(10104, 8200005, 0, 650, 980, 0, 400000), +(10105, 8200006, 0, 680, 1050, 0, 400000), +(10106, 8200007, 0, 680, 990, 0, 400000), +(10107, 8200008, 0, 690, 1020, 0, 400000), +(10108, 8200009, 0, 700, 1060, 0, 400000), +(10109, 8200010, 0, 710, 1070, 0, 400000), +(10110, 8200012, 0, 760, 1070, 0, 400000), +(10111, 6110301, 0, 330, 500, 0, 400000), +(10112, 9400110, 0, 171, 227, 0, 400000), +(10113, 9400111, 0, 175, 240, 0, 400000), +(10114, 9400100, 0, 64, 96, 0, 400000), +(10115, 9400101, 0, 88, 112, 0, 400000), +(10116, 9400102, 0, 88, 132, 0, 400000), +(10117, 9400103, 0, 200, 300, 0, 400000), +(10118, 9420522, 0, 1000, 2000, 0, 400000), +(10119, 9420522, 0, 1000, 2000, 0, 400000), +(10120, 9420522, 0, 1000, 2000, 0, 400000), +(10121, 9420522, 0, 1000, 2000, 0, 400000), +(10122, 9420522, 0, 1000, 2000, 0, 400000), +(10123, 9420522, 0, 1000, 2000, 0, 400000), +(10124, 8810018, 0, 30000, 40000, 0, 700000), +(10125, 8810018, 0, 30000, 40000, 0, 700000), +(10126, 8810018, 0, 30000, 40000, 0, 700000), +(10127, 8810018, 0, 30000, 40000, 0, 700000), +(10128, 8810018, 0, 30000, 40000, 0, 700000), +(10129, 8810018, 0, 30000, 40000, 0, 700000), +(10130, 8810018, 0, 30000, 40000, 0, 700000), +(10131, 8810018, 0, 30000, 40000, 0, 700000), +(10132, 8810018, 0, 30000, 40000, 0, 700000), +(10133, 8810018, 0, 30000, 40000, 0, 700000), +(10134, 8800002, 0, 10000, 15000, 0, 700000), +(10135, 8800002, 0, 10000, 15000, 0, 700000), +(10136, 8800002, 0, 10000, 15000, 0, 700000), +(10137, 8800002, 0, 10000, 15000, 0, 700000), +(10138, 8800002, 0, 10000, 15000, 0, 700000), +(10139, 8800002, 0, 10000, 15000, 0, 700000), +(10140, 8800002, 0, 10000, 15000, 0, 700000), +(10141, 8800002, 0, 10000, 15000, 0, 700000), +(10142, 8800002, 0, 10000, 15000, 0, 700000), +(10143, 8800002, 0, 10000, 15000, 0, 700000), +(10144, 8510000, 0, 10000, 20000, 0, 400000), +(10145, 8510000, 0, 10000, 20000, 0, 400000), +(10146, 8510000, 0, 10000, 20000, 0, 400000), +(10147, 8510000, 0, 10000, 20000, 0, 400000), +(10148, 8510000, 0, 10000, 20000, 0, 400000), +(10149, 8520000, 0, 10000, 20000, 0, 400000), +(10150, 8520000, 0, 10000, 20000, 0, 400000), +(10151, 8520000, 0, 10000, 20000, 0, 400000), +(10152, 8520000, 0, 10000, 20000, 0, 400000), +(10153, 8520000, 0, 10000, 20000, 0, 400000), +(10154, 8500002, 0, 10000, 20000, 0, 400000), +(10155, 8500002, 0, 10000, 20000, 0, 400000), +(10156, 8500002, 0, 10000, 20000, 0, 400000), +(10157, 8500002, 0, 10000, 20000, 0, 400000), +(10158, 8500002, 0, 10000, 20000, 0, 400000), +(10159, 9400409, 0, 10000, 20000, 0, 400000), +(10160, 9400409, 0, 10000, 20000, 0, 400000), +(10161, 9400409, 0, 10000, 20000, 0, 400000), +(10162, 9400409, 0, 10000, 20000, 0, 400000), +(10163, 9400409, 0, 10000, 20000, 0, 400000), +(10164, 6230100, 4031213, 1, 1, 2097, 200000), +(10165, 7130100, 4031214, 1, 1, 2097, 200000), +(10166, 7220001, 4031793, 1, 1, 3647, 999999), +(10167, 7130101, 4031215, 1, 1, 2097, 200000), +(10168, 210100, 4031273, 1, 1, 2104, 500000), +(10169, 2220100, 2022016, 1, 1, 8164, 100000), +(10170, 2130100, 4031153, 1, 1, 2070, 10000), +(10171, 2230106, 4031268, 1, 1, 3629, 30000), +(10172, 2230105, 4031259, 1, 1, 3080, 30000), +(10173, 2230106, 4031260, 1, 1, 3080, 30000), +(10174, 2230108, 4031261, 1, 1, 3080, 30000), +(10175, 2230200, 4031262, 1, 1, 3081, 30000), +(10176, 3230104, 4031263, 1, 1, 3081, 30000), +(10177, 2230109, 4031264, 1, 1, 3081, 30000), +(10178, 4230200, 4031265, 1, 1, 3082, 30000), +(10179, 4230123, 4031266, 1, 1, 3082, 30000), +(10180, 4230124, 4031267, 1, 1, 3082, 30000), +(10181, 4230116, 4031103, 1, 1, 3414, 100000), +(10182, 4230117, 4031104, 1, 1, 3414, 100000), +(10183, 4230118, 4031105, 1, 1, 3414, 100000), +(10184, 4240000, 4031106, 1, 1, 3414, 100000), +(10185, 7130400, 4031232, 1, 1, 3611, 1000000), +(10186, 7130401, 4031233, 1, 1, 3611, 1000000), +(10187, 7130402, 4031234, 1, 1, 3611, 1000000), +(10188, 5100004, 4031790, 1, 1, 3642, 100000), +(10189, 4230113, 4031675, 1, 1, 4917, 1000000), +(10190, 9400546, 4031681, 1, 1, 4915, 1000000), +(10191, 9600005, 4000191, 1, 1, 0, 1000000), +(10192, 9600006, 4000192, 1, 1, 0, 1000000), +(10193, 8500002, 4031196, 1, 1, 0, 1000000), +(10194, 8500002, 4031196, 1, 1, 0, 1000000), +(10195, 8500002, 4031196, 1, 1, 0, 187500), +(10196, 8500002, 4031196, 1, 1, 0, 125000), +(10197, 3000006, 4031209, 1, 1, 0, 500000), +(10198, 2230109, 4031209, 1, 1, 0, 500000), +(10199, 2230200, 4031209, 1, 1, 0, 500000), +(10200, 3230104, 4031209, 1, 1, 0, 500000), +(10201, 3230306, 4031159, 1, 1, 2074, 500000), +(10202, 9500400, 4031224, 1, 1, 3607, 1000000), +(10203, 9500400, 4031223, 1, 1, 3607, 1000000), +(10204, 9420003, 4031400, 1, 1, 8761, 1000000), +(10205, 9420001, 4031401, 1, 1, 8761, 1000000), +(10206, 9300097, 4031472, 1, 1, 6301, 100000), +(10207, 9300098, 4031472, 1, 1, 6301, 100000), +(10208, 9300099, 4031472, 1, 1, 6301, 100000), +(10209, 5300100, 4031925, 1, 1, 2223, 100000), +(10210, 1110100, 4031146, 1, 1, 2065, 1000000), +(10211, 1130100, 4031147, 1, 1, 2065, 1000000), +(10212, 2230102, 4031155, 1, 1, 2071, 1000000), +(10213, 3230100, 4031239, 1, 1, 2099, 50000), +(10214, 4230100, 4031212, 1, 1, 2096, 500000), +(10215, 5300000, 4031311, 1, 1, 3093, 1000000), +(10216, 8140600, 4031256, 1, 1, 3076, 100000), +(10217, 8140600, 4031251, 1, 1, 3076, 300000), +(10218, 8510000, 4031253, 1, 1, 3076, 1000000), +(10219, 8520000, 4031253, 1, 1, 3076, 1000000), +(10220, 5130107, 4031218, 1, 1, 3071, 10000), +(10221, 5130108, 4031218, 1, 1, 3071, 10000), +(10222, 3230200, 4031309, 1, 1, 3088, 500000), +(10223, 4230106, 4031309, 1, 1, 3088, 500000), +(10224, 5120000, 4031309, 1, 1, 3088, 500000), +(10225, 8150100, 4031252, 1, 1, 3078, 10000), +(10226, 8150101, 4031252, 1, 1, 3078, 10000), +(10227, 8150100, 4031254, 1, 1, 3078, 10000), +(10228, 8150101, 4031254, 1, 1, 3078, 10000), +(10229, 8150100, 4031255, 1, 1, 3078, 10000), +(10230, 8150101, 4031255, 1, 1, 3078, 10000), +(10231, 4240000, 4031926, 1, 1, 3454, 1000000), +(10232, 4230118, 4031926, 1, 1, 3454, 10000), +(10233, 4230117, 4031926, 1, 1, 3454, 10000), +(10234, 4230116, 4031926, 1, 1, 3454, 10000), +(10235, 6130202, 4031222, 1, 1, 3621, 100000), +(10236, 3230302, 4031089, 1, 1, 3223, 100000), +(10237, 4230119, 4031090, 1, 1, 3227, 100000), +(10238, 3210205, 4031093, 1, 1, 3229, 1000000), +(10239, 3110102, 4031129, 1, 1, 3207, 1000000), +(10240, 4230119, 4031206, 1, 1, 3441, 50000), +(10241, 3230400, 4031140, 1, 1, 3440, 100000), +(10242, 3230400, 4031135, 1, 1, 3438, 100000), +(10243, 3210208, 4031279, 1, 1, 3632, 1000000), +(10244, 2230106, 4031269, 1, 1, 3629, 1000000), +(10245, 4230300, 4031241, 1, 1, 3606, 1000000), +(10246, 4230112, 4031115, 1, 1, 3416, 100000), +(10247, 4240000, 4031102, 1, 1, 3413, 1000000), +(10248, 6230300, 4031189, 1, 1, 3448, 100000), +(10249, 6230300, 4031195, 1, 1, 3449, 500000), +(10250, 130101, 4031846, 1, 1, 2173, 50000), +(10251, 1210100, 4031846, 1, 1, 2173, 50000), +(10252, 8180001, 4031464, 1, 1, 6303, 1000000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(10253, 7130104, 4031436, 1, 1, 3828, 1000000), +(10254, 3110302, 4031694, 1, 1, 3312, 50000), +(10255, 3110303, 4031694, 1, 1, 3312, 100000), +(10256, 5120506, 4031432, 1, 1, 3810, 1000000), +(10257, 6130209, 4031433, 1, 1, 3804, 100000), +(10258, 9400110, 4031139, 1, 1, 8005, 100000), +(10259, 9400111, 4031139, 1, 1, 8005, 100000), +(10260, 9600002, 4000188, 1, 1, 0, 1000000), +(10261, 9600001, 4000187, 1, 1, 0, 1000000), +(10262, 9420005, 4000252, 1, 1, 0, 1000000), +(10263, 9420005, 4000253, 1, 1, 0, 1000000), +(10264, 3110100, 4031405, 1, 1, 8732, 500000), +(10265, 9600007, 4000193, 1, 1, 0, 1000000), +(10266, 9400543, 4031680, 1, 1, 4914, 300000), +(10267, 9420003, 4000251, 1, 1, 0, 1000000), +(10268, 4230116, 4031674, 1, 1, 4916, 300000), +(10269, 9600003, 4000189, 1, 1, 0, 1000000), +(10270, 9600004, 4000190, 1, 1, 0, 1000000), +(10271, 9420002, 4000248, 1, 1, 0, 1000000), +(10272, 3110100, 4031164, 1, 1, 2084, 300000), +(10274, 2000, 4031161, 1, 1, 1008, 1000000), +(10275, 2000, 4031162, 1, 1, 1008, 1000000), +(10276, 6130200, 4031170, 1, 1, 7100, 500000), +(10277, 6230300, 4031170, 1, 1, 7100, 500000), +(10278, 6230400, 4031170, 1, 1, 7100, 500000), +(10279, 6230500, 4031170, 1, 1, 7100, 500000), +(10280, 6300100, 4031170, 1, 1, 7100, 500000), +(10281, 6400100, 4031170, 1, 1, 7100, 500000), +(10282, 7130010, 4031170, 1, 1, 7100, 500000), +(10283, 7130300, 4031170, 1, 1, 7100, 500000), +(10284, 7140000, 4031170, 1, 1, 7100, 500000), +(10285, 8140200, 4031170, 1, 1, 7100, 500000), +(10286, 8140300, 4031170, 1, 1, 7100, 500000), +(10287, 8141000, 4031170, 1, 1, 7100, 500000), +(10288, 8141100, 4031170, 1, 1, 7100, 500000), +(10289, 8142000, 4031170, 1, 1, 7100, 500000), +(10290, 8143000, 4031170, 1, 1, 7100, 500000), +(10291, 8160000, 4031170, 1, 1, 7100, 500000), +(10292, 8170000, 4031170, 1, 1, 7100, 500000), +(10293, 9500127, 4031170, 1, 1, 7100, 500000), +(10294, 9500135, 4031170, 1, 1, 7100, 500000), +(10295, 9500136, 4031170, 1, 1, 7100, 500000), +(10296, 9500137, 4031170, 1, 1, 7100, 500000), +(10297, 7130300, 4031171, 1, 1, 7101, 400000), +(10298, 7160000, 4031171, 1, 1, 7101, 400000), +(10299, 6130200, 4031175, 1, 1, 7101, 300000), +(10300, 6230300, 4031175, 1, 1, 7101, 300000), +(10301, 6230400, 4031175, 1, 1, 7101, 300000), +(10302, 6230500, 4031175, 1, 1, 7101, 300000), +(10303, 6300100, 4031175, 1, 1, 7101, 350000), +(10304, 6400100, 4031175, 1, 1, 7101, 350000), +(10305, 7130010, 4031175, 1, 1, 7101, 400000), +(10306, 7130300, 4031175, 1, 1, 7101, 400000), +(10307, 7140000, 4031175, 1, 1, 7101, 400000), +(10308, 8140200, 4031175, 1, 1, 7101, 350000), +(10309, 8140300, 4031175, 1, 1, 7101, 350000), +(10310, 8141000, 4031175, 1, 1, 7101, 450000), +(10311, 8141100, 4031175, 1, 1, 7101, 450000), +(10312, 8142000, 4031175, 1, 1, 7101, 450000), +(10313, 8143000, 4031175, 1, 1, 7101, 450000), +(10314, 8160000, 4031175, 1, 1, 7101, 600000), +(10315, 8170000, 4031175, 1, 1, 7101, 600000), +(10316, 9500127, 4031175, 1, 1, 7101, 300000), +(10317, 9500135, 4031175, 1, 1, 7101, 400000), +(10318, 9500136, 4031175, 1, 1, 7101, 450000), +(10319, 9500137, 4031175, 1, 1, 7101, 450000), +(10320, 8141100, 4031176, 1, 1, 7104, 50000), +(10321, 8143000, 4031176, 1, 1, 7104, 50000), +(10322, 9500136, 4031176, 1, 1, 7104, 50000), +(10323, 9500137, 4031176, 1, 1, 7104, 50000), +(10324, 8141100, 4031177, 1, 1, 7104, 100000), +(10325, 8143000, 4031177, 1, 1, 7104, 100000), +(10326, 9500136, 4031177, 1, 1, 7104, 100000), +(10327, 9500137, 4031177, 1, 1, 7104, 100000), +(10328, 8141100, 4031178, 1, 1, 7104, 10000), +(10329, 8143000, 4031178, 1, 1, 7104, 10000), +(10330, 9500136, 4031178, 1, 1, 7104, 10000), +(10331, 9500137, 4031178, 1, 1, 7104, 10000), +(10332, 8160000, 4031172, 1, 1, 7103, 50000), +(10333, 8170000, 4031172, 1, 1, 7103, 50000), +(10334, 8141000, 4031193, 1, 1, 3446, 60000), +(10335, 7130501, 4031412, 1, 1, 3712, 100000), +(10336, 8140111, 4031413, 1, 1, 3712, 100000), +(10337, 8150201, 4031414, 1, 1, 3712, 100000), +(10338, 8150302, 4031415, 1, 1, 3712, 100000), +(10339, 8180000, 4001076, 1, 1, 7301, 1000000), +(10340, 8180000, 4001076, 1, 1, 7301, 1000000), +(10341, 8180000, 4001076, 1, 1, 7301, 1000000), +(10342, 8150200, 4001075, 1, 1, 7301, 50000), +(10343, 8150201, 4001075, 1, 1, 7301, 50000), +(10344, 8150300, 4001077, 1, 1, 7301, 60000), +(10345, 8150301, 4001077, 1, 1, 7301, 60000), +(10346, 8150302, 4001077, 1, 1, 7301, 60000), +(10347, 8150200, 4001079, 1, 1, 7301, 60000), +(10348, 8180000, 4001104, 1, 1, 7303, 1000000), +(10349, 8180000, 4001104, 1, 1, 7303, 1000000), +(10350, 8180000, 4001104, 1, 1, 7303, 1000000), +(10351, 8150200, 4001103, 1, 1, 7303, 50000), +(10352, 8150201, 4001103, 1, 1, 7303, 50000), +(10353, 8150300, 4001105, 1, 1, 7303, 60000), +(10354, 8150301, 4001105, 1, 1, 7303, 60000), +(10355, 8150302, 4001105, 1, 1, 7303, 60000), +(10356, 8150200, 4001079, 1, 1, 7303, 60000), +(10357, 8180000, 4031343, 1, 1, 6904, 400000), +(10358, 8180001, 4031344, 1, 1, 6904, 400000), +(10359, 8180000, 4031511, 1, 1, 6914, 400000), +(10360, 8180001, 4031512, 1, 1, 6914, 400000), +(10361, 8180000, 4031514, 1, 1, 6924, 400000), +(10362, 8180001, 4031515, 1, 1, 6924, 400000), +(10363, 8180000, 4031517, 1, 1, 6934, 400000), +(10364, 8180001, 4031518, 1, 1, 6934, 400000), +(10365, 8180000, 4031860, 1, 1, 6944, 400000), +(10366, 8180001, 4031861, 1, 1, 6944, 400000), +(10367, 8140101, 4031465, 1, 1, 6250, 5000), +(10368, 8140101, 4031487, 1, 1, 6251, 5000), +(10369, 8140102, 4031465, 1, 1, 6250, 5000), +(10370, 8140102, 4031487, 1, 1, 6251, 5000), +(10371, 8140103, 4031465, 1, 1, 6250, 5000), +(10372, 8140103, 4031487, 1, 1, 6251, 5000), +(10373, 8140101, 4031487, 1, 1, 6251, 5000), +(10374, 8150300, 4031449, 1, 1, 6120, 60000), +(10375, 8150300, 4031449, 1, 1, 6120, 60000), +(10376, 8150300, 4031449, 1, 1, 6120, 60000), +(10377, 8150301, 4031449, 1, 1, 6120, 60000), +(10378, 8150301, 4031449, 1, 1, 6120, 60000), +(10379, 8150301, 4031449, 1, 1, 6120, 60000), +(10380, 8150302, 4031449, 1, 1, 6120, 60000), +(10381, 8150302, 4031449, 1, 1, 6120, 60000), +(10382, 8150302, 4031449, 1, 1, 6120, 60000), +(10383, 8150300, 4031482, 1, 1, 6121, 20000), +(10384, 8150300, 4031482, 1, 1, 6121, 20000), +(10385, 8150300, 4031482, 1, 1, 6121, 20000), +(10386, 8150301, 4031482, 1, 1, 6121, 20000), +(10387, 8150301, 4031482, 1, 1, 6121, 20000), +(10388, 8150301, 4031482, 1, 1, 6121, 20000), +(10389, 8150302, 4031482, 1, 1, 6121, 20000), +(10390, 8150302, 4031482, 1, 1, 6121, 20000), +(10391, 8150302, 4031482, 1, 1, 6121, 20000), +(10392, 8150300, 4031483, 1, 1, 6122, 20000), +(10393, 8150300, 4031483, 1, 1, 6122, 20000), +(10394, 8150300, 4031483, 1, 1, 6122, 20000), +(10395, 8150301, 4031483, 1, 1, 6122, 20000), +(10396, 8150301, 4031483, 1, 1, 6122, 20000), +(10397, 8150301, 4031483, 1, 1, 6122, 20000), +(10398, 8150302, 4031483, 1, 1, 6122, 20000), +(10399, 8150302, 4031483, 1, 1, 6122, 20000), +(10400, 8150302, 4031483, 1, 1, 6122, 20000), +(10401, 8150300, 4031484, 1, 1, 6123, 20000), +(10402, 8150300, 4031484, 1, 1, 6123, 20000), +(10403, 8150300, 4031484, 1, 1, 6123, 20000), +(10404, 8150301, 4031484, 1, 1, 6123, 20000), +(10405, 8150301, 4031484, 1, 1, 6123, 20000), +(10406, 8150301, 4031484, 1, 1, 6123, 20000), +(10407, 8150302, 4031484, 1, 1, 6123, 20000), +(10408, 8150302, 4031484, 1, 1, 6123, 20000), +(10409, 8150302, 4031484, 1, 1, 6123, 20000), +(10410, 8150300, 4031485, 1, 1, 6124, 20000), +(10411, 8150300, 4031485, 1, 1, 6124, 20000), +(10412, 8150300, 4031485, 1, 1, 6124, 20000), +(10413, 8150301, 4031485, 1, 1, 6124, 20000), +(10414, 8150301, 4031485, 1, 1, 6124, 20000), +(10415, 8150301, 4031485, 1, 1, 6124, 20000), +(10416, 8150302, 4031485, 1, 1, 6124, 20000), +(10417, 8150302, 4031485, 1, 1, 6124, 20000), +(10418, 8150302, 4031485, 1, 1, 6124, 20000), +(10419, 8130100, 4031466, 1, 1, 6107, 500000), +(10420, 7130101, 4031466, 1, 1, 6107, 80000), +(10421, 7130100, 4031466, 1, 1, 6107, 80000), +(10422, 6230100, 4031466, 1, 1, 6107, 30000), +(10423, 9300100, 4031470, 1, 1, 6225, 250000), +(10424, 9300086, 4031470, 1, 1, 6225, 250000), +(10425, 9300100, 4031469, 1, 1, 6315, 250000), +(10426, 9300086, 4031469, 1, 1, 6315, 250000), +(10427, 8160000, 4031474, 1, 1, 6295, 50000), +(10428, 8160000, 4031473, 1, 1, 6226, 20000), +(10429, 8160000, 4031496, 1, 1, 6316, 20000), +(10430, 9300079, 4031461, 1, 1, 6169, 30000), +(10431, 9300078, 4031461, 1, 1, 6169, 30000), +(10432, 9300077, 4031461, 1, 1, 6169, 30000), +(10433, 9300076, 4031461, 1, 1, 6169, 30000), +(10434, 9300075, 4031461, 1, 1, 6169, 30000), +(10435, 9300074, 4031461, 1, 1, 6169, 30000), +(10436, 9300073, 4031461, 1, 1, 6169, 30000), +(10437, 9300072, 4031461, 1, 1, 6169, 30000), +(10438, 9300071, 4031461, 1, 1, 6169, 30000), +(10439, 9300070, 4031461, 1, 1, 6169, 30000), +(10440, 9300069, 4031461, 1, 1, 6169, 30000), +(10441, 9300068, 4031461, 1, 1, 6169, 30000), +(10442, 9300067, 4031461, 1, 1, 6169, 30000), +(10443, 9300066, 4031461, 1, 1, 6169, 30000), +(10444, 9300065, 4031461, 1, 1, 6169, 30000), +(10445, 9300274, 4032190, 1, 1, 20705, 50000), +(10446, 9300274, 4032314, 1, 1, 21709, 150000), +(10447, 1210102, 4032314, 1, 1, 21709, 150000), +(10448, 1210100, 4032340, 1, 1, 21710, 200000), +(10449, 9300274, 4032315, 1, 1, 21711, 50000), +(10450, 1110130, 4032316, 1, 1, 21714, 50000), +(10451, 100121, 4000483, 1, 1, 0, 400000), +(10452, 9001011, 4032096, 1, 1, 20201, 700000), +(10453, 9001011, 4032097, 1, 1, 20202, 700000), +(10454, 9001011, 4032098, 1, 1, 20203, 700000), +(10455, 9001011, 4032099, 1, 1, 20204, 700000), +(10456, 9001011, 4032100, 1, 1, 20205, 700000), +(10457, 9001009, 4032101, 1, 1, 20301, 700000), +(10458, 9001009, 4032102, 1, 1, 20302, 700000), +(10459, 9001009, 4032103, 1, 1, 20303, 700000), +(10460, 9001009, 4032104, 1, 1, 20304, 700000), +(10461, 9001009, 4032105, 1, 1, 20305, 700000), +(10462, 9300289, 4032120, 1, 1, 20601, 999999), +(10463, 9300289, 4032121, 1, 1, 20602, 999999), +(10464, 9300289, 4032122, 1, 1, 20603, 999999), +(10465, 9300289, 4032123, 1, 1, 20604, 999999), +(10466, 9300289, 4032124, 1, 1, 20605, 999999), +(10467, 9300294, 4032125, 1, 1, 20611, 999999), +(10468, 9300294, 4032126, 1, 1, 20612, 999999), +(10469, 9300294, 4032127, 1, 1, 20613, 999999), +(10470, 9300294, 4032128, 1, 1, 20614, 999999), +(10471, 9300294, 4032129, 1, 1, 20615, 999999), +(10472, 8200011, 2290048, 1, 1, 0, 600), +(10473, 8200011, 2290040, 1, 1, 0, 600), +(10474, 9420549, 2280010, 1, 1, 0, 50000), +(10475, 9420549, 2280009, 1, 1, 0, 70000), +(10476, 9420549, 2280008, 1, 1, 0, 50000), +(10477, 9420549, 2280007, 1, 1, 0, 50000), +(10478, 9420544, 2280010, 1, 1, 0, 70000), +(10479, 9420544, 2280009, 1, 1, 0, 90000), +(10480, 9420544, 2280008, 1, 1, 0, 70000), +(10481, 9420544, 2280007, 1, 1, 0, 70000), +(10482, 8520000, 2280010, 1, 1, 0, 30000), +(10483, 8520000, 2280009, 1, 1, 0, 50000), +(10484, 8520000, 2280008, 1, 1, 0, 30000), +(10485, 8520000, 2280007, 1, 1, 0, 30000), +(10486, 8510000, 2280010, 1, 1, 0, 30000), +(10487, 8510000, 2280009, 1, 1, 0, 50000), +(10488, 8510000, 2280008, 1, 1, 0, 30000), +(10489, 8510000, 2280007, 1, 1, 0, 30000), +(10490, 8500002, 2280010, 1, 1, 0, 35000), +(10491, 8500002, 2280009, 1, 1, 0, 50000), +(10492, 8500002, 2280008, 1, 1, 0, 35000), +(10493, 8500002, 2280007, 1, 1, 0, 35000), +(10494, 8140701, 4031872, 1, 1, 6340, 60000), +(10495, 8140700, 4031871, 1, 1, 6350, 60000), +(10496, 8500002, 4031869, 1, 1, 6360, 999999), +(10497, 8141000, 4031873, 1, 1, 6380, 60000), +(10498, 8141100, 4031874, 1, 1, 6390, 60000), +(10499, 7130101, 4001112, 1, 1, 0, 1000), +(10500, 8170000, 4001112, 1, 1, 0, 1500), +(10501, 5130107, 4001107, 1, 1, 0, 1000), +(10502, 8143000, 4001107, 1, 1, 0, 1500), +(10503, 7160000, 4001110, 1, 1, 0, 1000), +(10504, 8150100, 4161018, 1, 1, 0, 1000), +(10505, 7130000, 4161021, 1, 1, 0, 1000), +(10506, 8150000, 4001111, 1, 1, 0, 999999), +(10507, 8140000, 4031477, 1, 1, 0, 10000), +(10508, 8170000, 4031453, 1, 1, 6291, 50000), +(10509, 8160000, 4031474, 1, 1, 6295, 50000), +(10510, 8180001, 4031479, 1, 1, 6151, 999999), +(10511, 8130100, 4031475, 1, 1, 6153, 999999), +(10512, 8140000, 4031460, 1, 1, 6168, 10000), +(10513, 8180001, 4031457, 1, 1, 6231, 400000), +(10514, 8170000, 4031458, 1, 1, 6231, 10000), +(10515, 6130104, 4031459, 1, 1, 6231, 500000), +(10516, 9300094, 2280004, 1, 1, 0, 7000), +(10517, 9300095, 2280004, 1, 1, 0, 7000), +(10518, 9300094, 2280005, 1, 1, 0, 7000), +(10519, 9300095, 2280005, 1, 1, 0, 7000), +(10520, 9300094, 2280006, 1, 1, 0, 7000), +(10521, 9300095, 2280006, 1, 1, 0, 7000), +(10522, 8500002, 4001084, 1, 1, 0, 999999), +(10523, 8800002, 4001083, 1, 1, 0, 999999), +(10524, 9300367, 2022179, 1, 1, 0, 300000), +(10525, 9300368, 2022179, 1, 1, 0, 300000), +(10526, 9300369, 2022179, 1, 1, 0, 300000), +(10527, 9300370, 2022179, 1, 1, 0, 300000), +(10528, 9300371, 2022179, 1, 1, 0, 300000), +(10529, 9300372, 2022179, 1, 1, 0, 300000), +(10530, 9300373, 2022179, 1, 1, 0, 300000), +(10531, 9300374, 2022179, 1, 1, 0, 300000), +(10532, 9300375, 2022179, 1, 1, 0, 300000), +(10533, 9300376, 2022179, 1, 1, 0, 300000), +(10534, 9300377, 2022179, 1, 1, 0, 300000), +(10535, 9300367, 1002971, 1, 1, 0, 40000), +(10536, 9300368, 1002971, 1, 1, 0, 40000), +(10537, 9300369, 1002971, 1, 1, 0, 40000), +(10538, 9300370, 1002971, 1, 1, 0, 40000), +(10539, 9300371, 1002971, 1, 1, 0, 40000), +(10540, 9300372, 1002971, 1, 1, 0, 40000), +(10541, 9300373, 1002971, 1, 1, 0, 40000), +(10542, 9300374, 1002971, 1, 1, 0, 40000), +(10543, 9300375, 1002971, 1, 1, 0, 40000), +(10544, 9300376, 1002971, 1, 1, 0, 40000), +(10545, 9300377, 1002971, 1, 1, 0, 40000), +(10546, 9300367, 1442046, 1, 1, 0, 30000), +(10547, 9300368, 1442046, 1, 1, 0, 30000), +(10548, 9300369, 1442046, 1, 1, 0, 30000), +(10549, 9300370, 1442046, 1, 1, 0, 30000), +(10550, 9300371, 1442046, 1, 1, 0, 30000), +(10551, 9300372, 1442046, 1, 1, 0, 30000), +(10552, 9300373, 1442046, 1, 1, 0, 30000), +(10553, 9300374, 1442046, 1, 1, 0, 30000), +(10554, 9300375, 1442046, 1, 1, 0, 30000), +(10555, 9300376, 1442046, 1, 1, 0, 30000), +(10556, 9300377, 1442046, 1, 1, 0, 30000), +(10557, 9300367, 1442057, 1, 1, 0, 40000), +(10558, 9300368, 1442057, 1, 1, 0, 40000), +(10559, 9300369, 1442057, 1, 1, 0, 40000), +(10560, 9300370, 1442057, 1, 1, 0, 40000), +(10561, 9300371, 1442057, 1, 1, 0, 40000), +(10562, 9300372, 1442057, 1, 1, 0, 40000), +(10563, 9300373, 1442057, 1, 1, 0, 40000), +(10564, 9300374, 1442057, 1, 1, 0, 40000), +(10565, 9300375, 1442057, 1, 1, 0, 40000), +(10566, 9300376, 1442057, 1, 1, 0, 40000), +(10567, 9300377, 1442057, 1, 1, 0, 40000), +(10568, 8200001, 4020009, 1, 1, 0, 1000), +(10569, 8200002, 4020009, 1, 1, 0, 1000), +(10570, 8200003, 4020009, 1, 1, 0, 1000), +(10571, 8200004, 4020009, 1, 1, 0, 1000), +(10572, 8200005, 4020009, 1, 1, 0, 1000), +(10573, 8200006, 4020009, 1, 1, 0, 1000), +(10574, 8200007, 4020009, 1, 1, 0, 1000), +(10575, 8200008, 4020009, 1, 1, 0, 1000), +(10576, 8200009, 4020009, 1, 1, 0, 1000), +(10577, 8200010, 4020009, 1, 1, 0, 1000), +(10578, 8200011, 4020009, 1, 1, 0, 1000), +(10579, 8200012, 4020009, 1, 1, 0, 1000), +(10580, 9300000, 4001008, 1, 1, 0, 999999), +(10581, 9300001, 4001007, 1, 1, 0, 200000), +(10582, 9300002, 4001008, 1, 1, 0, 999999), +(10583, 9300003, 4001008, 1, 1, 0, 999999), +(11218, 4230109, 1452016, 1, 1, 0, 700), +(10585, 9300005, 4001022, 1, 1, 0, 999999), +(10586, 9300006, 4001022, 1, 1, 0, 999999), +(10587, 9300007, 4001022, 1, 1, 0, 999999), +(10588, 9300008, 4001022, 1, 1, 0, 999999), +(10589, 9300014, 4001022, 1, 1, 0, 999999), +(10590, 9300010, 4001022, 1, 1, 0, 999999), +(10591, 9300012, 4001023, 1, 1, 0, 999999), +(10592, 9300170, 4001156, 1, 1, 0, 999999), +(10593, 9300171, 4001156, 1, 1, 0, 999999), +(10594, 9300169, 4001156, 1, 1, 0, 999999), +(10595, 9000100, 4031013, 1, 1, 0, 300000), +(10596, 9000101, 4031013, 1, 1, 0, 300000), +(10597, 9000000, 4031013, 1, 1, 0, 300000), +(10598, 9000001, 4031013, 1, 1, 0, 300000), +(10599, 9000200, 4031013, 1, 1, 0, 300000), +(10600, 9000201, 4031013, 1, 1, 0, 300000), +(10601, 9000300, 4031013, 1, 1, 0, 300000), +(10602, 9000301, 4031013, 1, 1, 0, 300000), +(10603, 8180000, 4031511, 1, 1, 6904, 600000), +(10604, 8180001, 4031511, 1, 1, 6904, 600000), +(10605, 9400407, 4000343, 1, 1, 0, 100000), +(10606, 9300018, 4031802, 1, 1, 1035, 999999), +(10607, 6110301, 4031745, 1, 1, 3358, 5000), +(10608, 9302010, 2022524, 1, 1, 0, 100000), +(10609, 9400256, 4032192, 1, 1, 0, 50000), +(10610, 9400257, 4032192, 1, 1, 0, 50000), +(10611, 9410066, 5490001, 1, 1, 0, 700000), +(10612, 9410066, 5490001, 1, 1, 0, 700000), +(10613, 9410066, 5490000, 1, 1, 0, 300000), +(10614, 9410066, 4000306, 1, 1, 0, 700000), +(10615, 9410066, 4000306, 1, 1, 0, 700000), +(10616, 9410066, 4000306, 1, 1, 0, 700000), +(10617, 9410066, 4000306, 1, 1, 0, 700000), +(10618, 9410066, 4000306, 1, 1, 0, 700000), +(10619, 9410066, 4000306, 1, 1, 0, 700000), +(10620, 9410066, 4000306, 1, 1, 0, 700000), +(10621, 9410066, 4000306, 1, 1, 0, 700000), +(10622, 9410066, 4000306, 1, 1, 0, 700000), +(10623, 9410066, 4000306, 1, 1, 0, 700000), +(10624, 9410066, 4000306, 1, 1, 0, 700000), +(10625, 9410066, 4000306, 1, 1, 0, 700000), +(10626, 9410066, 4000306, 1, 1, 0, 700000), +(10627, 9410066, 4000306, 1, 1, 0, 700000), +(10628, 9410066, 4000306, 1, 1, 0, 700000), +(10629, 9410066, 4000306, 1, 1, 0, 700000), +(10630, 9410066, 4000306, 1, 1, 0, 700000), +(10631, 9410066, 4000306, 1, 1, 0, 700000), +(10632, 9410066, 4000306, 1, 1, 0, 700000), +(10633, 9410066, 4000306, 1, 1, 0, 700000), +(10634, 9420015, 2022042, 1, 1, 0, 700000), +(10635, 9420015, 2022042, 1, 1, 0, 700000), +(10636, 9420015, 2022042, 1, 1, 0, 700000), +(10637, 9420015, 2022042, 1, 1, 0, 700000), +(10638, 9420015, 2022042, 1, 1, 0, 700000), +(10639, 9420015, 4032176, 1, 1, 0, 700000), +(10640, 9420015, 4032176, 1, 1, 0, 700000), +(10641, 9420015, 4032176, 1, 1, 0, 700000), +(10642, 9420015, 4032176, 1, 1, 0, 700000), +(10643, 9420015, 4032176, 1, 1, 0, 700000), +(10644, 9420015, 4032176, 1, 1, 0, 700000), +(10645, 9420015, 4032176, 1, 1, 0, 700000), +(10646, 9420015, 4032176, 1, 1, 0, 700000), +(10647, 9420015, 4032176, 1, 1, 0, 700000), +(10648, 9420015, 4032176, 1, 1, 0, 700000), +(10649, 9420015, 4032176, 1, 1, 0, 700000), +(10650, 9420015, 4032176, 1, 1, 0, 700000), +(10651, 9420015, 4032176, 1, 1, 0, 700000), +(10652, 9420015, 4032176, 1, 1, 0, 700000), +(10653, 9420015, 4032176, 1, 1, 0, 700000), +(10654, 9420015, 4032176, 1, 1, 0, 700000), +(10655, 9420015, 4032176, 1, 1, 0, 700000), +(10656, 9420015, 4032176, 1, 1, 0, 700000), +(10657, 9420015, 4032176, 1, 1, 0, 700000), +(10658, 9420015, 4032176, 1, 1, 0, 700000), +(10659, 9420015, 4000420, 1, 1, 0, 700000), +(10660, 9420015, 4000420, 1, 1, 0, 700000), +(10661, 9420015, 4000420, 1, 1, 0, 700000), +(10662, 9420015, 4000420, 1, 1, 0, 700000), +(10663, 9420015, 4000420, 1, 1, 0, 700000), +(10664, 9420015, 4000420, 1, 1, 0, 700000), +(10665, 9420015, 4000420, 1, 1, 0, 700000), +(10666, 9420015, 4000420, 1, 1, 0, 700000), +(10667, 9420015, 4000420, 1, 1, 0, 700000), +(10668, 9420015, 4000420, 1, 1, 0, 700000), +(10669, 9420015, 4000420, 1, 1, 0, 700000), +(10670, 9420015, 4000420, 1, 1, 0, 700000), +(10671, 9420015, 4000420, 1, 1, 0, 700000), +(10672, 9420015, 4000420, 1, 1, 0, 700000), +(10673, 9420015, 4000420, 1, 1, 0, 700000), +(10674, 9420015, 4000420, 1, 1, 0, 700000), +(10675, 9420015, 4000420, 1, 1, 0, 700000), +(10676, 9420015, 4000420, 1, 1, 0, 700000), +(10677, 9420015, 4000420, 1, 1, 0, 700000), +(10678, 9420015, 4000420, 1, 1, 0, 700000), +(10679, 9420015, 4000420, 1, 1, 0, 700000), +(10680, 9420015, 4000420, 1, 1, 0, 700000), +(10681, 9420015, 4000420, 1, 1, 0, 700000), +(10682, 9420015, 4000420, 1, 1, 0, 700000), +(10683, 9420015, 4000420, 1, 1, 0, 700000), +(10684, 9420015, 4000420, 1, 1, 0, 700000), +(10685, 9420015, 4000420, 1, 1, 0, 700000), +(10686, 9420015, 4000420, 1, 1, 0, 700000), +(10687, 9420015, 4000420, 1, 1, 0, 700000), +(10688, 9420015, 4000420, 1, 1, 0, 700000), +(10689, 9420015, 4000420, 1, 1, 0, 700000), +(10690, 9420015, 4000420, 1, 1, 0, 700000), +(10691, 9420015, 4000420, 1, 1, 0, 700000), +(10692, 9420015, 4000420, 1, 1, 0, 700000), +(10693, 9420015, 4000420, 1, 1, 0, 700000), +(10694, 9420015, 4000420, 1, 1, 0, 700000), +(10695, 9420015, 4000420, 1, 1, 0, 700000), +(10696, 9420015, 4000420, 1, 1, 0, 700000), +(10697, 9420015, 4000420, 1, 1, 0, 700000), +(10698, 9420015, 4000420, 1, 1, 0, 700000), +(10699, 9420015, 4000421, 1, 1, 0, 700000), +(10700, 9420015, 4000421, 1, 1, 0, 700000), +(10701, 9420015, 4000421, 1, 1, 0, 700000), +(10702, 9420015, 4000421, 1, 1, 0, 700000), +(10703, 9420015, 4000421, 1, 1, 0, 700000), +(10704, 9420015, 4000421, 1, 1, 0, 700000), +(10705, 9420015, 4000421, 1, 1, 0, 700000), +(10706, 9420015, 4000421, 1, 1, 0, 700000), +(10707, 9420015, 4000421, 1, 1, 0, 700000), +(10708, 9420015, 4000421, 1, 1, 0, 700000), +(10709, 9420015, 4000421, 1, 1, 0, 700000), +(10710, 9420015, 4000421, 1, 1, 0, 700000), +(10711, 9420015, 4000421, 1, 1, 0, 700000), +(10712, 9420015, 4000421, 1, 1, 0, 700000), +(10713, 9420015, 4000421, 1, 1, 0, 700000), +(10714, 9420015, 4000421, 1, 1, 0, 700000), +(10715, 9420015, 4000421, 1, 1, 0, 700000), +(10716, 9420015, 4000421, 1, 1, 0, 700000), +(10717, 9420015, 4000421, 1, 1, 0, 700000), +(10718, 9420015, 4000421, 1, 1, 0, 700000), +(10719, 9420015, 4000421, 1, 1, 0, 700000), +(10720, 9420015, 4000421, 1, 1, 0, 700000), +(10721, 9420015, 4000421, 1, 1, 0, 700000), +(10722, 9420015, 4000421, 1, 1, 0, 700000), +(10723, 9420015, 4000421, 1, 1, 0, 700000), +(10724, 9420015, 4000421, 1, 1, 0, 700000), +(10725, 9420015, 4000421, 1, 1, 0, 700000), +(10726, 9420015, 4000421, 1, 1, 0, 700000), +(10727, 9420015, 4000421, 1, 1, 0, 700000), +(10728, 9420015, 4000421, 1, 1, 0, 700000), +(10729, 9420015, 4000421, 1, 1, 0, 700000), +(10730, 9420015, 4000421, 1, 1, 0, 700000), +(10731, 9420015, 4000421, 1, 1, 0, 700000), +(10732, 9420015, 4000421, 1, 1, 0, 700000), +(10733, 9420015, 4000421, 1, 1, 0, 700000), +(10734, 9420015, 4000421, 1, 1, 0, 700000), +(10735, 9420015, 4000421, 1, 1, 0, 700000), +(10736, 9420015, 4000421, 1, 1, 0, 700000), +(10737, 9420015, 4000421, 1, 1, 0, 700000), +(10738, 9420015, 4000421, 1, 1, 0, 700000), +(10739, 9400569, 2022311, 1, 4, 0, 700000), +(10740, 9400569, 2020017, 1, 4, 0, 700000), +(10741, 9400569, 2020018, 1, 4, 0, 700000), +(10742, 9400569, 2022310, 1, 4, 0, 700000), +(10743, 9400569, 2022456, 1, 4, 0, 700000), +(10744, 9400569, 2020014, 1, 4, 0, 700000), +(10745, 9400569, 2020015, 1, 4, 0, 700000), +(10746, 9400569, 2002001, 1, 4, 0, 700000), +(10747, 9400569, 2002005, 1, 4, 0, 700000), +(10748, 9400569, 2002003, 1, 4, 0, 700000), +(10749, 9400569, 2002205, 1, 4, 0, 700000), +(10750, 9500168, 2022311, 1, 4, 0, 700000), +(10751, 9500168, 2020017, 1, 4, 0, 700000), +(10752, 9500168, 2020018, 1, 4, 0, 700000), +(10753, 9500168, 2022310, 1, 4, 0, 700000), +(10754, 9500168, 2022456, 1, 4, 0, 700000), +(10755, 9500168, 2020014, 1, 4, 0, 700000), +(10756, 9500168, 2020015, 1, 4, 0, 700000), +(10757, 9500168, 2002001, 1, 4, 0, 700000), +(10758, 9500168, 2002005, 1, 4, 0, 700000), +(10759, 9500168, 2002003, 1, 4, 0, 700000), +(10760, 9500168, 2002205, 1, 4, 0, 700000), +(10761, 9500169, 2022311, 1, 4, 0, 700000), +(10762, 9500169, 2020017, 1, 4, 0, 700000), +(10763, 9500169, 2020018, 1, 4, 0, 700000), +(10764, 9500169, 2022310, 1, 4, 0, 700000), +(10765, 9500169, 2022456, 1, 4, 0, 700000), +(10766, 9500169, 2020014, 1, 4, 0, 700000), +(10767, 9500169, 2020015, 1, 4, 0, 700000), +(10768, 9500169, 2002001, 1, 4, 0, 700000), +(10769, 9500169, 2002005, 1, 4, 0, 700000), +(10770, 9500169, 2002003, 1, 4, 0, 700000), +(10771, 9500169, 2002205, 1, 4, 0, 700000), +(10772, 9500170, 2022311, 1, 4, 0, 700000), +(10773, 9500170, 2020017, 1, 4, 0, 700000), +(10774, 9500170, 2020018, 1, 4, 0, 700000), +(10775, 9500170, 2022310, 1, 4, 0, 700000), +(10776, 9500170, 2022456, 1, 4, 0, 700000), +(10777, 9500170, 2020014, 1, 4, 0, 700000), +(10778, 9500170, 2020015, 1, 4, 0, 700000), +(10779, 9500170, 2002001, 1, 4, 0, 700000), +(10780, 9500170, 2002005, 1, 4, 0, 700000), +(10781, 9500170, 2002003, 1, 4, 0, 700000), +(10782, 9500170, 2002205, 1, 4, 0, 700000), +(10783, 9500171, 2022311, 1, 4, 0, 700000), +(10784, 9500171, 2020017, 1, 4, 0, 700000), +(10785, 9500171, 2020018, 1, 4, 0, 700000), +(10786, 9500171, 2022310, 1, 4, 0, 700000), +(10787, 9500171, 2022456, 1, 4, 0, 700000), +(10788, 9500171, 2020014, 1, 4, 0, 700000), +(10789, 9500171, 2020015, 1, 4, 0, 700000), +(10790, 9500171, 2002001, 1, 4, 0, 700000), +(10791, 9500171, 2002005, 1, 4, 0, 700000), +(10792, 9500171, 2002003, 1, 4, 0, 700000), +(10793, 9500171, 2002205, 1, 4, 0, 700000), +(10794, 9500172, 2022311, 1, 4, 0, 700000), +(10795, 9500172, 2020017, 1, 4, 0, 700000), +(10796, 9500172, 2020018, 1, 4, 0, 700000), +(10797, 9500172, 2022310, 1, 4, 0, 700000), +(10798, 9500172, 2022456, 1, 4, 0, 700000), +(10799, 9500172, 2020014, 1, 4, 0, 700000), +(10800, 9500172, 2020015, 1, 4, 0, 700000), +(10801, 9500172, 2002001, 1, 4, 0, 700000), +(10802, 9500172, 2002005, 1, 4, 0, 700000), +(10803, 9500172, 2002003, 1, 4, 0, 700000), +(10804, 9500172, 2002205, 1, 4, 0, 700000), +(10805, 9500173, 2022311, 1, 4, 0, 700000), +(10806, 9500173, 2020017, 1, 4, 0, 700000), +(10807, 9500173, 2020018, 1, 4, 0, 700000), +(10808, 9500173, 2022310, 1, 4, 0, 700000), +(10809, 9500173, 2022456, 1, 4, 0, 700000), +(10810, 9500173, 2020014, 1, 4, 0, 700000), +(10811, 9500173, 2020015, 1, 4, 0, 700000), +(10812, 9500173, 2002001, 1, 4, 0, 700000), +(10813, 9500173, 2002005, 1, 4, 0, 700000), +(10814, 9500173, 2002003, 1, 4, 0, 700000), +(10815, 9500173, 2002205, 1, 4, 0, 700000), +(10816, 9500174, 2022311, 1, 4, 0, 700000), +(10817, 9500174, 2020017, 1, 4, 0, 700000), +(10818, 9500174, 2020018, 1, 4, 0, 700000), +(10819, 9500174, 2022310, 1, 4, 0, 700000), +(10820, 9500174, 2022456, 1, 4, 0, 700000), +(10821, 9500174, 2020014, 1, 4, 0, 700000), +(10822, 9500174, 2020015, 1, 4, 0, 700000), +(10823, 9500174, 2002001, 1, 4, 0, 700000), +(10824, 9500174, 2002005, 1, 4, 0, 700000), +(10825, 9500174, 2002003, 1, 4, 0, 700000), +(10826, 9500174, 2002205, 1, 4, 0, 700000), +(10827, 9500175, 2022311, 1, 4, 0, 700000), +(10828, 9500175, 2020017, 1, 4, 0, 700000), +(10829, 9500175, 2020018, 1, 4, 0, 700000), +(10830, 9500175, 2022310, 1, 4, 0, 700000), +(10831, 9500175, 2022456, 1, 4, 0, 700000), +(10832, 9500175, 2020014, 1, 4, 0, 700000), +(10833, 9500175, 2020015, 1, 4, 0, 700000), +(10834, 9500175, 2002001, 1, 4, 0, 700000), +(10835, 9500175, 2002005, 1, 4, 0, 700000), +(10836, 9500175, 2002003, 1, 4, 0, 700000), +(10837, 9500175, 2002205, 1, 4, 0, 700000), +(10838, 9500176, 2022311, 1, 4, 0, 700000), +(10839, 9500176, 2020017, 1, 4, 0, 700000), +(10840, 9500176, 2020018, 1, 4, 0, 700000), +(10841, 9500176, 2022310, 1, 4, 0, 700000), +(10842, 9500176, 2022456, 1, 4, 0, 700000), +(10843, 9500176, 2020014, 1, 4, 0, 700000), +(10844, 9500176, 2020015, 1, 4, 0, 700000), +(10845, 9500176, 2002001, 1, 4, 0, 700000), +(10846, 9500176, 2002005, 1, 4, 0, 700000), +(10847, 9500176, 2002003, 1, 4, 0, 700000), +(10848, 9500176, 2002205, 1, 4, 0, 700000), +(10849, 9300217, 2022430, 1, 1, 0, 700000), +(10850, 9300217, 2022431, 1, 1, 0, 700000), +(10851, 9300217, 2022432, 1, 1, 0, 700000), +(10852, 9300217, 2022433, 1, 1, 0, 700000), +(10853, 9300218, 2022430, 1, 1, 0, 700000), +(10854, 9300218, 2022431, 1, 1, 0, 700000), +(10855, 9300218, 2022432, 1, 1, 0, 700000), +(10856, 9300218, 2022433, 1, 1, 0, 700000), +(10857, 9300219, 2022430, 1, 1, 0, 700000), +(10858, 9300219, 2022431, 1, 1, 0, 700000), +(10859, 9300219, 2022432, 1, 1, 0, 700000), +(10860, 9300219, 2022433, 1, 1, 0, 700000), +(10861, 9300220, 2022430, 1, 1, 0, 700000), +(10862, 9300220, 2022431, 1, 1, 0, 700000), +(10863, 9300220, 2022432, 1, 1, 0, 700000), +(10864, 9300220, 2022433, 1, 1, 0, 700000), +(10865, 9300221, 2022430, 1, 1, 0, 700000), +(10866, 9300221, 2022431, 1, 1, 0, 700000), +(10867, 9300221, 2022432, 1, 1, 0, 700000), +(10868, 9300221, 2022433, 1, 1, 0, 700000), +(10869, 9300222, 2022430, 1, 1, 0, 700000), +(10870, 9300222, 2022431, 1, 1, 0, 700000), +(10871, 9300222, 2022432, 1, 1, 0, 700000), +(10872, 9300222, 2022433, 1, 1, 0, 700000), +(10873, 9300223, 2022430, 1, 1, 0, 700000), +(10874, 9300223, 2022431, 1, 1, 0, 700000), +(10875, 9300223, 2022432, 1, 1, 0, 700000), +(10876, 9300223, 2022433, 1, 1, 0, 700000), +(10877, 9300224, 2022430, 1, 1, 0, 700000), +(10878, 9300224, 2022431, 1, 1, 0, 700000), +(10879, 9300224, 2022432, 1, 1, 0, 700000), +(10880, 9300224, 2022433, 1, 1, 0, 700000), +(10881, 9300225, 2022430, 1, 1, 0, 700000), +(10882, 9300225, 2022431, 1, 1, 0, 700000), +(10883, 9300225, 2022432, 1, 1, 0, 700000), +(10884, 9300225, 2022433, 1, 1, 0, 700000), +(10885, 9300226, 2022430, 1, 1, 0, 700000), +(10886, 9300226, 2022431, 1, 1, 0, 700000), +(10887, 9300226, 2022432, 1, 1, 0, 700000), +(10888, 9300226, 2022433, 1, 1, 0, 700000), +(10889, 9300227, 2022430, 1, 1, 0, 700000), +(10890, 9300227, 2022431, 1, 1, 0, 700000), +(10891, 9300227, 2022432, 1, 1, 0, 700000), +(10892, 9300227, 2022433, 1, 1, 0, 700000), +(10893, 9300228, 2022430, 1, 1, 0, 700000), +(10894, 9300228, 2022431, 1, 1, 0, 700000), +(10895, 9300228, 2022432, 1, 1, 0, 700000), +(10896, 9300228, 2022433, 1, 1, 0, 700000), +(10897, 9300229, 2022430, 1, 1, 0, 700000), +(10898, 9300229, 2022431, 1, 1, 0, 700000), +(10899, 9300229, 2022432, 1, 1, 0, 700000), +(10900, 9300229, 2022433, 1, 1, 0, 700000), +(10901, 9300230, 2022430, 1, 1, 0, 700000), +(10902, 9300230, 2022431, 1, 1, 0, 700000), +(10903, 9300230, 2022432, 1, 1, 0, 700000), +(10904, 9300230, 2022433, 1, 1, 0, 700000), +(10905, 9300231, 2022430, 1, 1, 0, 700000), +(10906, 9300231, 2022431, 1, 1, 0, 700000), +(10907, 9300231, 2022432, 1, 1, 0, 700000), +(10908, 9300231, 2022433, 1, 1, 0, 700000), +(10909, 9300232, 2022430, 1, 1, 0, 700000), +(10910, 9300232, 2022431, 1, 1, 0, 700000), +(10911, 9300232, 2022432, 1, 1, 0, 700000), +(10912, 9300232, 2022433, 1, 1, 0, 700000), +(10913, 9300233, 2022430, 1, 1, 0, 700000), +(10914, 9300233, 2022431, 1, 1, 0, 700000), +(10915, 9300233, 2022432, 1, 1, 0, 700000), +(10916, 9300233, 2022433, 1, 1, 0, 700000), +(10917, 9300234, 2022430, 1, 1, 0, 700000), +(10918, 9300234, 2022431, 1, 1, 0, 700000), +(10919, 9300234, 2022432, 1, 1, 0, 700000), +(10920, 9300234, 2022433, 1, 1, 0, 700000), +(10921, 9300235, 2022430, 1, 1, 0, 700000), +(10922, 9300235, 2022431, 1, 1, 0, 700000), +(10923, 9300235, 2022432, 1, 1, 0, 700000), +(10924, 9300235, 2022433, 1, 1, 0, 700000), +(10925, 9300236, 2022430, 1, 1, 0, 700000), +(10926, 9300236, 2022431, 1, 1, 0, 700000), +(10927, 9300236, 2022432, 1, 1, 0, 700000), +(10928, 9300236, 2022433, 1, 1, 0, 700000), +(10929, 9300237, 2022430, 1, 1, 0, 700000), +(10930, 9300237, 2022431, 1, 1, 0, 700000), +(10931, 9300237, 2022432, 1, 1, 0, 700000), +(10932, 9300237, 2022433, 1, 1, 0, 700000), +(10933, 9300238, 2022430, 1, 1, 0, 700000), +(10934, 9300238, 2022431, 1, 1, 0, 700000), +(10935, 9300238, 2022432, 1, 1, 0, 700000), +(10936, 9300238, 2022433, 1, 1, 0, 700000), +(10937, 9300239, 2022430, 1, 1, 0, 700000), +(10938, 9300239, 2022431, 1, 1, 0, 700000), +(10939, 9300239, 2022432, 1, 1, 0, 700000), +(10940, 9300239, 2022433, 1, 1, 0, 700000), +(10941, 9300240, 2022430, 1, 1, 0, 700000), +(10942, 9300240, 2022431, 1, 1, 0, 700000), +(10943, 9300240, 2022432, 1, 1, 0, 700000), +(10944, 9300240, 2022433, 1, 1, 0, 700000), +(10945, 9300241, 2022430, 1, 1, 0, 700000), +(10946, 9300241, 2022431, 1, 1, 0, 700000), +(10947, 9300241, 2022432, 1, 1, 0, 700000), +(10948, 9300241, 2022433, 1, 1, 0, 700000), +(10949, 9300242, 2022430, 1, 1, 0, 700000), +(10950, 9300242, 2022431, 1, 1, 0, 700000), +(10951, 9300242, 2022432, 1, 1, 0, 700000), +(10952, 9300242, 2022433, 1, 1, 0, 700000), +(10953, 9300243, 2022430, 1, 1, 0, 700000), +(10954, 9300243, 2022431, 1, 1, 0, 700000), +(10955, 9300243, 2022432, 1, 1, 0, 700000), +(10956, 9300243, 2022433, 1, 1, 0, 700000), +(10957, 9300244, 2022430, 1, 1, 0, 700000), +(10958, 9300244, 2022431, 1, 1, 0, 700000), +(10959, 9300244, 2022432, 1, 1, 0, 700000), +(10960, 9300244, 2022433, 1, 1, 0, 700000), +(10961, 9300245, 2022430, 1, 1, 0, 700000), +(10962, 9300245, 2022431, 1, 1, 0, 700000), +(10963, 9300245, 2022432, 1, 1, 0, 700000), +(10964, 9300245, 2022433, 1, 1, 0, 700000), +(10965, 9300246, 2022430, 1, 1, 0, 700000), +(10966, 9300246, 2022431, 1, 1, 0, 700000), +(10967, 9300246, 2022432, 1, 1, 0, 700000), +(10968, 9300246, 2022433, 1, 1, 0, 700000), +(10969, 9300247, 2022430, 1, 1, 0, 700000), +(10970, 9300247, 2022431, 1, 1, 0, 700000), +(10971, 9300247, 2022432, 1, 1, 0, 700000), +(10972, 9300247, 2022433, 1, 1, 0, 700000), +(10973, 9300248, 2022430, 1, 1, 0, 700000), +(10974, 9300248, 2022431, 1, 1, 0, 700000), +(10975, 9300248, 2022432, 1, 1, 0, 700000), +(10976, 9300248, 2022433, 1, 1, 0, 700000), +(10977, 9300249, 2022430, 1, 1, 0, 700000), +(10978, 9300249, 2022431, 1, 1, 0, 700000), +(10979, 9300249, 2022432, 1, 1, 0, 700000), +(10980, 9300249, 2022433, 1, 1, 0, 700000), +(10981, 9300250, 2022430, 1, 1, 0, 700000), +(10982, 9300250, 2022431, 1, 1, 0, 700000), +(10983, 9300250, 2022432, 1, 1, 0, 700000), +(10984, 9300250, 2022433, 1, 1, 0, 700000), +(10985, 9300251, 2022430, 1, 1, 0, 700000), +(10986, 9300251, 2022431, 1, 1, 0, 700000), +(10987, 9300251, 2022432, 1, 1, 0, 700000), +(10988, 9300251, 2022433, 1, 1, 0, 700000), +(10989, 9300252, 2022430, 1, 1, 0, 700000), +(10990, 9300252, 2022431, 1, 1, 0, 700000), +(10991, 9300252, 2022432, 1, 1, 0, 700000), +(10992, 9300252, 2022433, 1, 1, 0, 700000), +(10993, 9300253, 2022430, 1, 1, 0, 700000), +(10994, 9300253, 2022431, 1, 1, 0, 700000), +(10995, 9300253, 2022432, 1, 1, 0, 700000), +(10996, 9300253, 2022433, 1, 1, 0, 700000), +(10997, 9300254, 2022430, 1, 1, 0, 700000), +(10998, 9300254, 2022431, 1, 1, 0, 700000), +(10999, 9300254, 2022432, 1, 1, 0, 700000), +(11000, 9300254, 2022433, 1, 1, 0, 700000), +(11001, 9300255, 2022430, 1, 1, 0, 700000), +(11002, 9300255, 2022431, 1, 1, 0, 700000), +(11003, 9300255, 2022432, 1, 1, 0, 700000), +(11004, 9300255, 2022433, 1, 1, 0, 700000), +(11005, 9300256, 2022430, 1, 1, 0, 700000), +(11006, 9300256, 2022431, 1, 1, 0, 700000), +(11007, 9300256, 2022432, 1, 1, 0, 700000), +(11008, 9300256, 2022433, 1, 1, 0, 700000), +(11009, 9300257, 2022430, 1, 1, 0, 700000), +(11010, 9300257, 2022431, 1, 1, 0, 700000), +(11011, 9300257, 2022432, 1, 1, 0, 700000), +(11012, 9300257, 2022433, 1, 1, 0, 700000), +(11013, 9300258, 2022430, 1, 1, 0, 700000), +(11014, 9300258, 2022431, 1, 1, 0, 700000), +(11015, 9300258, 2022432, 1, 1, 0, 700000), +(11016, 9300258, 2022433, 1, 1, 0, 700000), +(11017, 9300259, 2022430, 1, 1, 0, 700000), +(11018, 9300259, 2022431, 1, 1, 0, 700000), +(11019, 9300259, 2022432, 1, 1, 0, 700000), +(11020, 9300259, 2022433, 1, 1, 0, 700000), +(11021, 9300260, 2022430, 1, 1, 0, 700000), +(11022, 9300260, 2022431, 1, 1, 0, 700000), +(11023, 9300260, 2022432, 1, 1, 0, 700000), +(11024, 9300260, 2022433, 1, 1, 0, 700000), +(11025, 9300261, 2022430, 1, 1, 0, 700000), +(11026, 9300261, 2022431, 1, 1, 0, 700000), +(11027, 9300261, 2022432, 1, 1, 0, 700000), +(11028, 9300261, 2022433, 1, 1, 0, 700000), +(11029, 9300262, 2022430, 1, 1, 0, 700000), +(11030, 9300262, 2022431, 1, 1, 0, 700000), +(11031, 9300262, 2022432, 1, 1, 0, 700000), +(11032, 9300262, 2022433, 1, 1, 0, 700000), +(11033, 9300263, 2022430, 1, 1, 0, 700000), +(11034, 9300263, 2022431, 1, 1, 0, 700000), +(11035, 9300263, 2022432, 1, 1, 0, 700000), +(11036, 9300263, 2022433, 1, 1, 0, 700000), +(11037, 9300264, 2022430, 1, 1, 0, 700000), +(11038, 9300264, 2022431, 1, 1, 0, 700000), +(11039, 9300264, 2022432, 1, 1, 0, 700000), +(11040, 9300264, 2022433, 1, 1, 0, 700000), +(11041, 9300265, 2022430, 1, 1, 0, 700000), +(11042, 9300265, 2022431, 1, 1, 0, 700000), +(11043, 9300265, 2022432, 1, 1, 0, 700000), +(11044, 9300265, 2022433, 1, 1, 0, 700000), +(11045, 9300266, 2022430, 1, 1, 0, 700000), +(11046, 9300266, 2022431, 1, 1, 0, 700000), +(11047, 9300266, 2022432, 1, 1, 0, 700000), +(11048, 9300266, 2022433, 1, 1, 0, 700000), +(11049, 9300267, 2022430, 1, 1, 0, 700000), +(11050, 9300267, 2022431, 1, 1, 0, 700000), +(11051, 9300267, 2022432, 1, 1, 0, 700000), +(11052, 9300267, 2022433, 1, 1, 0, 700000), +(11053, 9300270, 2022430, 1, 1, 0, 700000), +(11054, 9300270, 2022431, 1, 1, 0, 700000), +(11055, 9300270, 2022432, 1, 1, 0, 700000), +(11056, 9300270, 2022433, 1, 1, 0, 700000), +(11057, 8140500, 4007007, 1, 1, 0, 10000), +(11058, 4230502, 4007007, 1, 1, 0, 10000), +(11059, 3210205, 4007007, 1, 1, 0, 10000), +(11060, 8200012, 4007007, 1, 1, 0, 10000), +(11061, 8150200, 4007007, 1, 1, 0, 10000), +(11062, 5120003, 4007007, 1, 1, 0, 10000), +(11063, 5130104, 4007007, 1, 1, 0, 10000), +(11064, 6110300, 4007007, 1, 1, 0, 10000), +(11065, 7130000, 4007007, 1, 1, 0, 10000), +(11066, 4230119, 4007007, 1, 1, 0, 10000), +(11067, 6130204, 4007007, 1, 1, 0, 10000), +(11068, 3110102, 4007007, 1, 1, 0, 10000), +(11069, 8142100, 4007007, 1, 1, 0, 10000), +(11070, 8190003, 4007007, 1, 1, 0, 10000), +(11071, 5120506, 4007007, 1, 1, 0, 10000), +(11072, 4230118, 4007007, 1, 1, 0, 10000), +(11073, 4230101, 4007007, 1, 1, 0, 10000), +(11074, 7130104, 4007002, 1, 1, 0, 10000), +(11075, 3230400, 4007002, 1, 1, 0, 10000), +(11076, 5300001, 4007002, 1, 1, 0, 10000), +(11077, 4230124, 4007002, 1, 1, 0, 10000), +(11078, 7140000, 4007002, 1, 1, 0, 10000), +(11079, 8143000, 4007002, 1, 1, 0, 10000), +(11080, 4110300, 4007002, 1, 1, 0, 10000), +(11081, 5100000, 4007002, 1, 1, 0, 10000), +(11082, 4230106, 4007002, 1, 1, 0, 10000), +(11083, 4230115, 4007002, 1, 1, 0, 10000), +(11084, 6230500, 4007002, 1, 1, 0, 10000), +(11085, 9400011, 4007002, 1, 1, 0, 10000), +(11086, 3210208, 4007002, 1, 1, 0, 10000), +(11087, 6110301, 4007002, 1, 1, 0, 10000), +(11088, 8141000, 4007002, 1, 1, 0, 10000), +(11089, 8190003, 4007002, 1, 1, 0, 10000), +(11090, 5120506, 4007002, 1, 1, 0, 10000), +(11091, 4230101, 4007002, 1, 1, 0, 10000), +(11092, 3230306, 4007000, 1, 1, 0, 10000), +(11093, 5130103, 4007000, 1, 1, 0, 10000), +(11094, 3110300, 4007000, 1, 1, 0, 10000), +(11095, 4230600, 4007000, 1, 1, 0, 10000), +(11096, 8150200, 4007000, 1, 1, 0, 10000), +(11097, 7110301, 4007000, 1, 1, 0, 10000), +(11098, 3210200, 4007000, 1, 1, 0, 10000), +(11099, 8190000, 4007000, 1, 1, 0, 10000), +(11100, 5400000, 4007000, 1, 1, 0, 10000), +(11101, 3230101, 4007000, 1, 1, 0, 10000), +(11102, 5100000, 4007000, 1, 1, 0, 10000), +(11103, 4230115, 4007000, 1, 1, 0, 10000), +(11104, 5110302, 4007000, 1, 1, 0, 10000), +(11105, 4230114, 4007000, 1, 1, 0, 10000), +(11106, 4110301, 4007000, 1, 1, 0, 10000), +(11107, 8142100, 4007000, 1, 1, 0, 10000), +(11108, 5110301, 4007000, 1, 1, 0, 10000), +(11109, 5100004, 4007000, 1, 1, 0, 10000), +(11110, 6110301, 4007000, 1, 1, 0, 10000), +(11111, 8190003, 4007000, 1, 1, 0, 10000), +(11112, 6230400, 4007000, 1, 1, 0, 10000), +(11113, 3230200, 4007000, 1, 1, 0, 10000), +(11114, 5130101, 4007000, 1, 1, 0, 10000), +(11115, 5120503, 4007000, 1, 1, 0, 10000), +(11116, 5120504, 4007000, 1, 1, 0, 10000), +(11117, 4230102, 4007000, 1, 1, 0, 10000), +(11118, 4230101, 4007000, 1, 1, 0, 10000), +(11119, 3210100, 4007003, 1, 1, 0, 10000), +(11120, 5120001, 4007003, 1, 1, 0, 10000), +(11121, 3230101, 4007003, 1, 1, 0, 10000), +(11122, 3110302, 4007003, 1, 1, 0, 10000), +(11123, 4230101, 4007003, 1, 1, 0, 10000), +(11124, 4230119, 4007003, 1, 1, 0, 10000), +(11125, 4250000, 4007003, 1, 1, 0, 10000), +(11126, 4230102, 4007003, 1, 1, 0, 10000), +(11127, 5110302, 4007003, 1, 1, 0, 10000), +(11128, 9400012, 4007003, 1, 1, 0, 10000), +(11129, 8140110, 4007003, 1, 1, 0, 10000), +(11130, 8150201, 4007003, 1, 1, 0, 10000), +(11131, 8190003, 4007003, 1, 1, 0, 10000), +(11132, 3110100, 4007005, 1, 1, 0, 10000), +(11133, 3210205, 4007005, 1, 1, 0, 10000), +(11134, 5400000, 4007005, 1, 1, 0, 10000), +(11135, 3230306, 4007005, 1, 1, 0, 10000), +(11136, 4230101, 4007005, 1, 1, 0, 10000), +(11137, 4230107, 4007005, 1, 1, 0, 10000), +(11138, 4250000, 4007005, 1, 1, 0, 10000), +(11139, 4110301, 4007005, 1, 1, 0, 10000), +(11140, 5130107, 4007005, 1, 1, 0, 10000), +(11141, 6110300, 4007005, 1, 1, 0, 10000), +(11142, 8200003, 4007005, 1, 1, 0, 10000), +(11143, 8190000, 4007005, 1, 1, 0, 10000), +(11144, 3110300, 4007006, 1, 1, 0, 10000), +(11145, 5400000, 4007006, 1, 1, 0, 10000), +(11146, 3210200, 4007006, 1, 1, 0, 10000), +(11147, 4230101, 4007006, 1, 1, 0, 10000), +(11148, 4110302, 4007006, 1, 1, 0, 10000), +(11149, 4110301, 4007006, 1, 1, 0, 10000), +(11150, 4230115, 4007006, 1, 1, 0, 10000), +(11151, 4230102, 4007006, 1, 1, 0, 10000), +(11152, 4230600, 4007006, 1, 1, 0, 10000), +(11153, 5120504, 4007006, 1, 1, 0, 10000), +(11154, 5130103, 4007006, 1, 1, 0, 10000), +(11155, 5110301, 4007006, 1, 1, 0, 10000), +(11156, 5130101, 4007006, 1, 1, 0, 10000), +(11157, 5100004, 4007006, 1, 1, 0, 10000), +(11158, 5110302, 4007006, 1, 1, 0, 10000), +(11159, 8142100, 4007006, 1, 1, 0, 10000), +(11160, 8200001, 4007006, 1, 1, 0, 10000), +(11161, 3210100, 4007001, 1, 1, 0, 10000), +(11162, 2230102, 4007001, 1, 1, 0, 10000), +(11163, 3110102, 4007001, 1, 1, 0, 10000), +(11164, 3210200, 4007001, 1, 1, 0, 10000), +(11165, 4230200, 4007001, 1, 1, 0, 10000), +(11166, 4230101, 4007001, 1, 1, 0, 10000), +(11167, 4230105, 4007001, 1, 1, 0, 10000), +(11168, 4230122, 4007001, 1, 1, 0, 10000), +(11169, 4110302, 4007001, 1, 1, 0, 10000), +(11170, 5100000, 4007001, 1, 1, 0, 10000), +(11171, 5130103, 4007001, 1, 1, 0, 10000), +(11172, 5120001, 4007001, 1, 1, 0, 10000), +(11173, 5120003, 4007001, 1, 1, 0, 10000), +(11174, 5130101, 4007001, 1, 1, 0, 10000), +(11175, 6130209, 4007001, 1, 1, 0, 10000), +(11176, 7110301, 4007001, 1, 1, 0, 10000), +(11177, 8200000, 4007001, 1, 1, 0, 10000), +(11178, 8140110, 4007001, 1, 1, 0, 10000), +(11179, 7160000, 4007001, 1, 1, 0, 10000), +(11180, 8140101, 4007001, 1, 1, 0, 10000), +(11181, 8140500, 4007001, 1, 1, 0, 10000), +(11182, 8141300, 4007001, 1, 1, 0, 10000), +(11183, 8200003, 4007001, 1, 1, 0, 10000), +(11184, 8190002, 4007001, 1, 1, 0, 10000), +(11185, 8190005, 4007001, 1, 1, 0, 10000), +(11186, 8200012, 4007001, 1, 1, 0, 10000), +(11187, 4110300, 4007004, 1, 1, 0, 10000), +(11188, 3230400, 4007004, 1, 1, 0, 10000), +(11189, 3110300, 4007004, 1, 1, 0, 10000), +(11190, 5300001, 4007004, 1, 1, 0, 10000), +(11191, 3210208, 4007004, 1, 1, 0, 10000), +(11192, 3210450, 4007004, 1, 1, 0, 10000), +(11193, 4230113, 4007004, 1, 1, 0, 10000), +(11194, 4230101, 4007004, 1, 1, 0, 10000), +(11195, 4230119, 4007004, 1, 1, 0, 10000), +(11196, 4230600, 4007004, 1, 1, 0, 10000), +(11197, 5120503, 4007004, 1, 1, 0, 10000), +(11198, 5130107, 4007004, 1, 1, 0, 10000), +(11199, 6130103, 4007004, 1, 1, 0, 10000), +(11200, 6130208, 4007004, 1, 1, 0, 10000), +(11201, 8190003, 4007004, 1, 1, 0, 10000), +(11202, 8200009, 4007004, 1, 1, 0, 10000), +(11203, 8200011, 4007004, 1, 1, 0, 10000), +(11204, 8200001, 4007004, 1, 1, 0, 10000), +(11205, 9420003, 4007004, 1, 1, 0, 10000), +(11206, 4130104, 4000062, 1, 1, 0, 10000), +(11207, 4230122, 4000058, 1, 1, 0, 10000), +(11208, 9001000, 4031059, 1, 1, 0, 999999), +(11209, 9001001, 4031059, 1, 1, 0, 999999), +(11210, 9001002, 4031059, 1, 1, 0, 999999), +(11211, 9001003, 4031059, 1, 1, 0, 999999), +(11212, 9001008, 4031059, 1, 1, 0, 499999), +(11213, 9001005, 4031013, 1, 1, 0, 300000), +(11214, 9001012, 4032311, 1, 1, 0, 300000), +(11215, 9001012, 4032311, 1, 1, 0, 300000), +(11216, 9001013, 4032312, 1, 1, 0, 999999), +(11217, 9001013, 4032339, 1, 1, 0, 999999), +(11219, 4230113, 1452016, 1, 1, 0, 700), +(11220, 4230103, 1452016, 1, 1, 0, 700), +(11221, 2230102, 1452016, 1, 1, 0, 700), +(11222, 6230100, 1452016, 1, 1, 0, 700), +(11223, 2110200, 1452016, 1, 1, 0, 700), +(11224, 2230104, 1452016, 1, 1, 0, 700), +(11225, 9400570, 1452016, 1, 1, 0, 700), +(11226, 4230106, 1452016, 1, 1, 0, 700), +(11227, 5120502, 1452016, 1, 1, 0, 700), +(11228, 3230400, 1452022, 1, 1, 0, 700), +(11229, 2230102, 1452022, 1, 1, 0, 700), +(11230, 6130100, 1452022, 1, 1, 0, 700), +(11231, 4230103, 1452022, 1, 1, 0, 700), +(11232, 5130100, 1452022, 1, 1, 0, 700), +(11233, 9400570, 1452022, 1, 1, 0, 700), +(11234, 3210208, 1452022, 1, 1, 0, 700), +(11235, 6130204, 1452022, 1, 1, 0, 700), +(11236, 7130103, 1452022, 1, 1, 0, 700), +(11237, 8140000, 1452022, 1, 1, 0, 700), +(11238, 5200000, 1452022, 1, 1, 0, 700), +(11239, 2100104, 1452022, 1, 1, 0, 700), +(11240, 3210800, 1452022, 1, 1, 0, 700), +(11241, 4230121, 1452022, 1, 1, 0, 700), +(11242, 4230101, 1472030, 1, 1, 0, 700), +(11243, 4230102, 1472030, 1, 1, 0, 700), +(11244, 7130100, 1472030, 1, 1, 0, 700), +(11245, 2230101, 1472030, 1, 1, 0, 700), +(11246, 3210200, 1472030, 1, 1, 0, 700), +(11247, 7130200, 1472030, 1, 1, 0, 700), +(11248, 9400570, 1472030, 1, 1, 0, 700), +(11249, 2230110, 1472030, 1, 1, 0, 700), +(11250, 5200001, 1472030, 1, 1, 0, 700), +(11251, 3110303, 1472030, 1, 1, 0, 700), +(11252, 4130101, 1472030, 1, 1, 0, 700), +(11253, 5120506, 1472030, 1, 1, 0, 700), +(11254, 1130100, 1472032, 1, 1, 0, 700), +(11255, 4230111, 1472032, 1, 1, 0, 700), +(11256, 4230112, 1472032, 1, 1, 0, 700), +(11257, 7130102, 1472032, 1, 1, 0, 700), +(11258, 3210100, 1472032, 1, 1, 0, 700), +(11259, 2230102, 1472032, 1, 1, 0, 700), +(11260, 4130100, 1472032, 1, 1, 0, 700), +(11261, 9400570, 1472032, 1, 1, 0, 700), +(11262, 3230306, 1472032, 1, 1, 0, 700), +(11263, 6130203, 1472032, 1, 1, 0, 700), +(11264, 7130000, 1472032, 1, 1, 0, 700), +(11265, 8140002, 1472032, 1, 1, 0, 700), +(11266, 3230200, 1462014, 1, 1, 0, 700), +(11267, 4230109, 1462014, 1, 1, 0, 700), +(11268, 2230102, 1462014, 1, 1, 0, 700), +(11269, 9400570, 1462014, 1, 1, 0, 700), +(11270, 5300100, 1462019, 1, 1, 0, 700), +(11271, 4230109, 1462019, 1, 1, 0, 700), +(11272, 4230110, 1462019, 1, 1, 0, 700), +(11273, 9400570, 1462019, 1, 1, 0, 700), +(11274, 5400000, 1462019, 1, 1, 0, 700), +(11275, 4230505, 1462019, 1, 1, 0, 700), +(11276, 6230602, 1462019, 1, 1, 0, 700), +(11277, 7110301, 1462019, 1, 1, 0, 700), +(11278, 7140000, 1462019, 1, 1, 0, 700), +(11279, 2230102, 1332025, 1, 1, 0, 700), +(11280, 8140500, 1332025, 1, 1, 0, 700), +(11281, 2230103, 1332025, 1, 1, 0, 700), +(11282, 4230101, 1332025, 1, 1, 0, 700), +(11283, 9400570, 1332025, 1, 1, 0, 700), +(11284, 3100101, 1332025, 1, 1, 0, 700), +(11285, 4230117, 1332025, 1, 1, 0, 700), +(11286, 5110302, 1332025, 1, 1, 0, 700), +(11287, 7130500, 1332025, 1, 1, 0, 700), +(11288, 7130200, 1332025, 1, 1, 0, 700), +(11289, 9400570, 1302020, 1, 1, 0, 700), +(11652, 6110300, 1382039, 1, 1, 0, 750), +(11651, 5100002, 1382039, 1, 1, 0, 750), +(11650, 6230300, 1332056, 1, 1, 0, 750), +(11649, 5120505, 1332056, 1, 1, 0, 750), +(11648, 5120502, 1332056, 1, 1, 0, 750), +(11647, 5110302, 1332056, 1, 1, 0, 750), +(11646, 5100005, 1332056, 1, 1, 0, 750), +(11297, 9400512, 1302030, 1, 1, 0, 700), +(11298, 3000005, 1302030, 1, 1, 0, 700), +(11299, 4230102, 1302030, 1, 1, 0, 700), +(11300, 9400570, 1302030, 1, 1, 0, 700), +(11301, 3110102, 1302030, 1, 1, 0, 700), +(11302, 4230124, 1302030, 1, 1, 0, 700), +(11303, 5150001, 1302030, 1, 1, 0, 700), +(11304, 6400000, 1302030, 1, 1, 0, 700), +(11305, 4230105, 1442024, 1, 1, 0, 700), +(11306, 3110100, 1442024, 1, 1, 0, 700), +(11307, 8110300, 1442024, 1, 1, 0, 700), +(11308, 9400570, 1442024, 1, 1, 0, 700), +(11309, 3230100, 1442024, 1, 1, 0, 700), +(11310, 4230300, 1442024, 1, 1, 0, 700), +(11311, 6130207, 1442024, 1, 1, 0, 700), +(11312, 7130002, 1442024, 1, 1, 0, 700), +(11313, 3230305, 1432012, 1, 1, 0, 700), +(11314, 6230300, 1432012, 1, 1, 0, 700), +(11315, 2230102, 1432012, 1, 1, 0, 700), +(11316, 9400570, 1432012, 1, 1, 0, 700), +(11317, 3230200, 1432012, 1, 1, 0, 700), +(11318, 4230118, 1432012, 1, 1, 0, 700), +(11319, 6130202, 1432012, 1, 1, 0, 700), +(11320, 6110300, 1432012, 1, 1, 0, 700), +(11321, 7130004, 1432012, 1, 1, 0, 700), +(11322, 7130300, 1382009, 1, 1, 0, 700), +(11323, 3000000, 1382009, 1, 1, 0, 700), +(11324, 3110100, 1382009, 1, 1, 0, 700), +(11325, 9400570, 1382009, 1, 1, 0, 700), +(11326, 2230103, 1382009, 1, 1, 0, 700), +(11327, 2100107, 1382009, 1, 1, 0, 700), +(11328, 3210100, 1382009, 1, 1, 0, 700), +(11329, 4230502, 1382009, 1, 1, 0, 700), +(11804, 9420530, 1482007, 1, 1, 0, 333333), +(11803, 9420530, 1002166, 1, 1, 0, 2000), +(11802, 9420530, 1002212, 1, 1, 0, 2000), +(11801, 9420530, 1032012, 1, 1, 0, 1800), +(11800, 9420530, 1060080, 1, 1, 0, 2000), +(11799, 9420530, 1040091, 1, 1, 0, 2000), +(11798, 9420530, 1051010, 1, 1, 0, 1800), +(11797, 9420530, 1051006, 1, 1, 0, 1800), +(11796, 9420530, 1082028, 1, 1, 0, 2000), +(11795, 9420530, 1092008, 1, 1, 0, 1800), +(11774, 9420534, 1082104, 1, 1, 0, 2000), +(11773, 9420534, 1072041, 1, 1, 0, 2000), +(11772, 9420534, 1061102, 1, 1, 0, 2000), +(11771, 9420534, 1041103, 1, 1, 0, 2000), +(11770, 9420534, 1050068, 1, 1, 0, 1800), +(11769, 9420534, 1050067, 1, 1, 0, 1800), +(11768, 9420534, 1061077, 1, 1, 0, 2000), +(11767, 9420534, 1032011, 1, 1, 0, 1800), +(11766, 9420534, 1472016, 1, 1, 0, 1300), +(11765, 9420534, 1442037, 1, 1, 0, 1800), +(11764, 9420534, 2044701, 1, 1, 0, 1000), +(11763, 9420534, 4130013, 1, 1, 0, 5000), +(11762, 9420534, 4004004, 1, 1, 0, 5000), +(11761, 9420534, 4010002, 1, 1, 0, 300), +(11746, 9420536, 1051079, 1, 1, 0, 1800), +(11745, 9420536, 1050082, 1, 1, 0, 1800), +(11744, 9420536, 1050064, 1, 1, 0, 1800), +(11743, 9420536, 1051065, 1, 1, 0, 1800), +(11742, 9420536, 1051058, 1, 1, 0, 1800), +(11741, 9420536, 1050074, 1, 1, 0, 1800), +(11740, 9420536, 1092016, 1, 1, 0, 1800), +(11739, 9420536, 1072154, 1, 1, 0, 2000), +(11738, 9420536, 1072167, 1, 1, 0, 2000), +(11737, 9420536, 1082105, 1, 1, 0, 2000), +(11736, 9420536, 1082097, 1, 1, 0, 2000), +(11735, 9420536, 1382007, 1, 1, 0, 1800), +(11722, 5130102, 1322054, 1, 1, 0, 750), +(11721, 5110302, 1322054, 1, 1, 0, 750), +(11720, 5250002, 1422029, 1, 1, 0, 750), +(11719, 6230500, 1422029, 1, 1, 0, 750), +(11718, 6130209, 1422029, 1, 1, 0, 750), +(11717, 5030107, 1422029, 1, 1, 0, 750), +(11716, 5130105, 1422029, 1, 1, 0, 750), +(11715, 6110301, 1312032, 1, 1, 0, 750), +(11714, 5300100, 1312032, 1, 1, 0, 750), +(11713, 5120506, 1312032, 1, 1, 0, 750), +(11712, 5120002, 1312032, 1, 1, 0, 750), +(11711, 5110301, 1312032, 1, 1, 0, 750), +(11698, 5250002, 1092046, 1, 1, 0, 750), +(11697, 6300000, 1092046, 1, 1, 0, 750), +(11696, 5130104, 1092046, 1, 1, 0, 750), +(11695, 6130209, 1092045, 1, 1, 0, 750), +(11690, 6130209, 1432040, 1, 1, 0, 750), +(11689, 6110300, 1432040, 1, 1, 0, 750), +(11688, 5130104, 1432040, 1, 1, 0, 750), +(11687, 5120100, 1432040, 1, 1, 0, 750), +(11686, 5120001, 1432040, 1, 1, 0, 750), +(11685, 6300000, 1402039, 1, 1, 0, 750), +(11684, 6130200, 1402039, 1, 1, 0, 750), +(11683, 5150000, 1402039, 1, 1, 0, 750), +(11682, 5120506, 1402039, 1, 1, 0, 750), +(11672, 5120502, 1442051, 1, 1, 0, 750), +(11671, 5110302, 1442051, 1, 1, 0, 750), +(11670, 6230601, 1482022, 1, 1, 0, 750), +(11669, 6230401, 1482022, 1, 1, 0, 750), +(11668, 5130104, 1482022, 1, 1, 0, 750), +(11667, 5120003, 1482022, 1, 1, 0, 750), +(11666, 5100002, 1482022, 1, 1, 0, 750), +(11665, 7130500, 1492022, 1, 1, 0, 750), +(11664, 7130402, 1492022, 1, 1, 0, 1250), +(11663, 6300002, 1492022, 1, 1, 0, 750), +(11645, 6230600, 1332055, 1, 1, 0, 750), +(11644, 6230400, 1332055, 1, 1, 0, 750), +(11643, 6130204, 1332055, 1, 1, 0, 750), +(11642, 6110300, 1332055, 1, 1, 0, 750), +(11641, 5150001, 1332055, 1, 1, 0, 750), +(11640, 6230601, 1462040, 1, 1, 0, 750), +(11639, 6130209, 1462040, 1, 1, 0, 750), +(11638, 5140000, 1462040, 1, 1, 0, 750), +(11629, 6220001, 1472055, 1, 1, 0, 1250), +(11628, 6220000, 1472055, 1, 1, 0, 1250), +(11627, 5120500, 1472055, 1, 1, 0, 750), +(11626, 5120000, 1472055, 1, 1, 0, 750), +(11625, 9001006, 4031013, 1, 1, 0, 400000), +(11624, 8190003, 4031461, 1, 1, 6169, 1000), +(11623, 9400218, 4001106, 25, 50, 0, 999999), +(11622, 9400217, 4001106, 1, 3, 0, 999999), +(11613, 2110200, 4032390, 1, 1, 2248, 100000), +(11612, 8140200, 1382012, 1, 1, 0, 700), +(11611, 7130600, 1382012, 1, 1, 0, 700), +(11610, 5100004, 1382012, 1, 1, 0, 700), +(11609, 4230123, 1382012, 1, 1, 0, 700), +(11608, 5300001, 1382012, 1, 1, 0, 700), +(11607, 9400570, 1382012, 1, 1, 0, 700), +(11606, 2110200, 1382012, 1, 1, 0, 700), +(11597, 6300001, 1492021, 1, 1, 0, 700), +(11596, 3230102, 1492021, 1, 1, 0, 700), +(11595, 3000006, 1492021, 1, 1, 0, 700), +(11594, 5130101, 1492020, 1, 1, 0, 700), +(11593, 5200002, 1492020, 1, 1, 0, 700), +(11592, 1140100, 1492020, 1, 1, 0, 700), +(11591, 7160000, 1482021, 1, 1, 0, 700), +(11590, 7130501, 1482021, 1, 1, 0, 700), +(11589, 6130208, 1482021, 1, 1, 0, 700), +(11579, 4230503, 1422014, 1, 1, 0, 700), +(11578, 3230302, 1422014, 1, 1, 0, 700), +(11577, 9400570, 1422014, 1, 1, 0, 700), +(11576, 7130001, 1422014, 1, 1, 0, 700), +(11575, 7130000, 1422014, 1, 1, 0, 700), +(11574, 3000005, 1422014, 1, 1, 0, 700), +(11573, 5130100, 1422014, 1, 1, 0, 700), +(11572, 7130100, 1422014, 1, 1, 0, 700), +(11794, 9420530, 1472013, 1, 1, 0, 1300), +(11793, 9420530, 1462007, 1, 1, 0, 1500), +(11792, 9420530, 1452007, 1, 1, 0, 1500), +(11791, 9420530, 1432004, 1, 1, 0, 1500), +(11790, 9420530, 1382019, 1, 1, 0, 1800), +(11789, 9420530, 2041002, 1, 1, 0, 1000), +(11788, 9420530, 2040901, 1, 1, 0, 1000); +INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(11787, 9420530, 2020014, 1, 1, 0, 10000), +(11786, 9420530, 400006, 1, 1, 0, 333333), +(11785, 9420530, 400002, 1, 1, 0, 10000), +(11760, 9420534, 4020008, 1, 1, 0, 300), +(11759, 9420534, 4006000, 1, 1, 0, 5000), +(11758, 9420534, 400004, 1, 1, 0, 333333), +(11757, 9420534, 400002, 1, 1, 0, 10000), +(11756, 9420534, 4000472, 1, 1, 0, 300000), +(11755, 9420536, 2332000, 1, 1, 0, 500), +(11754, 9420536, 2330004, 1, 1, 0, 500), +(11753, 9420536, 1482009, 1, 1, 0, 2000), +(11752, 9420536, 1082204, 1, 1, 0, 2000), +(11751, 9420536, 1072309, 1, 1, 0, 2000), +(11750, 9420536, 1002095, 1, 1, 0, 2000), +(11749, 9420536, 1002273, 1, 1, 0, 2000), +(11748, 9420536, 1002278, 1, 1, 0, 2000), +(11747, 9420536, 1032021, 1, 1, 0, 1800), +(11734, 9420536, 1332019, 1, 1, 0, 1500), +(11733, 9420536, 1462011, 1, 1, 0, 1500), +(11732, 9420536, 1452011, 1, 1, 0, 1500), +(11731, 9420536, 1422005, 1, 1, 0, 1800), +(11730, 9420536, 2040805, 1, 1, 0, 1000), +(11729, 9420536, 400004, 1, 1, 0, 333333), +(11728, 9420536, 2022003, 1, 1, 0, 333333), +(11727, 9420536, 2070008, 1, 1, 0, 500), +(11726, 9420536, 4000474, 1, 1, 0, 300000), +(11725, 6130203, 1322054, 1, 1, 0, 750), +(11724, 6130100, 1322054, 1, 1, 0, 750), +(11723, 5130108, 1322054, 1, 1, 0, 750), +(11710, 6230601, 1412027, 1, 1, 0, 750), +(11709, 6230401, 1412027, 1, 1, 0, 750), +(11708, 6130209, 1412027, 1, 1, 0, 750), +(11707, 6110301, 1412027, 1, 1, 0, 750), +(11706, 5120506, 1412027, 1, 1, 0, 750), +(11705, 6230601, 1092047, 1, 1, 0, 750), +(11704, 6230401, 1092047, 1, 1, 0, 750), +(11703, 6220001, 1092047, 1, 1, 0, 750), +(11702, 6230602, 1092047, 1, 1, 0, 750), +(11701, 5140000, 1092047, 1, 1, 0, 750), +(11700, 5130101, 1092046, 1, 1, 0, 750), +(11699, 6110300, 1092046, 1, 1, 0, 750), +(11694, 5120500, 1092045, 1, 1, 0, 750), +(11693, 6300001, 1092045, 1, 1, 0, 750), +(11692, 6230300, 1092045, 1, 1, 0, 750), +(11691, 6230401, 1092045, 1, 1, 0, 750), +(11681, 5120002, 1402039, 1, 1, 0, 750), +(11680, 5250000, 1302064, 1, 1, 0, 750), +(11679, 5130104, 1302064, 1, 1, 0, 750), +(11678, 5130101, 1302064, 1, 1, 0, 750), +(11677, 5120506, 1302064, 1, 1, 0, 750), +(11676, 5120502, 1302064, 1, 1, 0, 750), +(11675, 5250002, 1442051, 1, 1, 0, 750), +(11674, 5250001, 1442051, 1, 1, 0, 750), +(11673, 5250000, 1442051, 1, 1, 0, 750), +(11662, 6230500, 1492022, 1, 1, 0, 750), +(11661, 5220003, 1492022, 1, 1, 0, 1250), +(11660, 6230401, 1372034, 1, 1, 0, 750), +(11659, 6230400, 1372034, 1, 1, 0, 750), +(11658, 5250000, 1372034, 1, 1, 0, 750), +(11657, 5120503, 1372034, 1, 1, 0, 750), +(11656, 5100004, 1372034, 1, 1, 0, 750), +(11655, 6230201, 1382039, 1, 1, 0, 750), +(11654, 6130218, 1382039, 1, 1, 0, 750), +(11653, 6130204, 1382039, 1, 1, 0, 750), +(11637, 5130102, 1462040, 1, 1, 0, 750), +(11636, 5130101, 1462040, 1, 1, 0, 750), +(11635, 6300001, 1452045, 1, 1, 0, 750), +(11634, 6230602, 1452045, 1, 1, 0, 750), +(11633, 6230100, 1452045, 1, 1, 0, 750), +(11632, 6130209, 1452045, 1, 1, 0, 750), +(11631, 5130108, 1452045, 1, 1, 0, 750), +(11630, 6230400, 1472055, 1, 1, 0, 750), +(11621, 9400216, 4001106, 1, 3, 0, 999999), +(11620, 9400215, 4001106, 1, 3, 0, 999999), +(11619, 9400214, 4001106, 1, 3, 0, 999999), +(11618, 9400213, 4001106, 1, 3, 0, 999999), +(11617, 9400212, 4001106, 1, 1, 0, 999999), +(11616, 9400211, 4001106, 1, 1, 0, 999999), +(11615, 9400209, 4001106, 1, 3, 0, 999999), +(11614, 9400209, 4001106, 1, 3, 0, 999999), +(11605, 3110102, 1382012, 1, 1, 0, 700), +(11604, 2230107, 1092030, 1, 1, 0, 700), +(11603, 1210103, 1092030, 1, 1, 0, 700), +(11602, 4230114, 1092030, 1, 1, 0, 700), +(11601, 5100002, 1092030, 1, 1, 0, 700), +(11600, 4230600, 1092030, 1, 1, 0, 700), +(11599, 8140110, 1492021, 1, 1, 0, 700), +(11598, 6300100, 1492021, 1, 1, 0, 700), +(11588, 4240000, 1482021, 1, 1, 0, 700), +(11587, 4230500, 1482021, 1, 1, 0, 700), +(11586, 5130104, 1482020, 1, 1, 0, 700), +(11585, 4230116, 1482020, 1, 1, 0, 700), +(11584, 3230400, 1482020, 1, 1, 0, 700), +(11583, 2230101, 1482020, 1, 1, 0, 700), +(11582, 7130003, 1422014, 1, 1, 0, 700), +(11581, 7130104, 1422014, 1, 1, 0, 700), +(11580, 5130107, 1422014, 1, 1, 0, 700), +(11571, 4230100, 1422014, 1, 1, 0, 700), +(11570, 7130601, 1412011, 1, 1, 0, 700), +(11569, 6110301, 1412011, 1, 1, 0, 700), +(11568, 4230120, 1412011, 1, 1, 0, 700), +(11567, 3210205, 1412011, 1, 1, 0, 700), +(11566, 9400570, 1412011, 1, 1, 0, 700), +(11565, 7130001, 1412011, 1, 1, 0, 700), +(11564, 2230102, 1412011, 1, 1, 0, 700), +(11784, 9420530, 400004, 1, 1, 0, 333333), +(11783, 9420530, 2002009, 1, 1, 0, 333333), +(11782, 9420530, 4020007, 1, 1, 0, 300), +(11781, 9420530, 4010004, 1, 1, 0, 300), +(11780, 9420530, 4000468, 1, 1, 0, 300000), +(11779, 9420534, 2044901, 1, 1, 0, 1000), +(11778, 9420534, 2330003, 1, 1, 0, 500), +(11777, 9420534, 1002254, 1, 1, 0, 2000), +(11776, 9420534, 1382015, 1, 1, 0, 1800), +(11775, 9420534, 1452010, 1, 1, 0, 1500), +(11805, 9420530, 1492007, 1, 1, 0, 333333), +(11806, 9420015, 4000420, 1, 1, 0, 300000), +(11807, 9420015, 4000421, 1, 1, 0, 300000), +(11808, 9420500, 4000369, 1, 1, 0, 300000), +(11809, 9420500, 4000370, 1, 1, 0, 300000), +(11810, 9420500, 400001, 1, 1, 0, 333333), +(11811, 9420500, 2002002, 1, 1, 0, 333333), +(11812, 9420500, 2044002, 1, 1, 0, 1000), +(11813, 9420500, 1332001, 1, 1, 0, 1500), +(11814, 9420500, 1382002, 1, 1, 0, 1800), +(11815, 9420500, 1002178, 1, 1, 0, 2000), +(11816, 9420500, 2060000, 1, 1, 0, 10000), +(11817, 9420500, 4010006, 1, 1, 0, 300), +(11818, 9420500, 4020005, 1, 1, 0, 300), +(11819, 9420500, 2020028, 1, 1, 0, 20000), +(11820, 9420500, 400003, 1, 1, 0, 10000), +(11821, 9420500, 1060052, 1, 1, 0, 2000), +(11822, 9420500, 1051006, 1, 1, 0, 1800), +(11823, 9420500, 1051007, 1, 1, 0, 1800), +(11824, 9420500, 1002142, 1, 1, 0, 2000), +(11825, 9420500, 2061000, 1, 1, 0, 10000), +(11826, 9420500, 1422008, 1, 1, 0, 1800), +(11827, 9420500, 4030012, 1, 1, 0, 300), +(11828, 9420500, 1052095, 1, 1, 0, 1800), +(11829, 9420500, 2330001, 1, 1, 0, 500), +(11830, 9420501, 4000372, 1, 1, 0, 300000), +(11831, 9420501, 400003, 1, 1, 0, 10000), +(11832, 9420501, 400002, 1, 1, 0, 10000), +(11833, 9420501, 404000, 1, 1, 0, 300), +(11834, 9420501, 4010005, 1, 1, 0, 300), +(11835, 9420501, 2043301, 1, 1, 0, 1000), +(11836, 9420501, 1072103, 1, 1, 0, 2000), +(11837, 9420501, 1032008, 1, 1, 0, 1800), +(11838, 9420501, 1050011, 1, 1, 0, 1800), +(11839, 9420501, 1040044, 1, 1, 0, 2000), +(11840, 9420501, 1060033, 1, 1, 0, 2000), +(11841, 9420501, 1302017, 1, 1, 0, 1800), +(11842, 9420501, 2048005, 1, 1, 0, 1000), +(11843, 9420501, 2020028, 1, 1, 0, 20000), +(11844, 9420501, 1050051, 1, 1, 0, 1800), +(11845, 9420501, 1040099, 1, 1, 0, 2000), +(11846, 9420501, 1060088, 1, 1, 0, 2000), +(11847, 9420501, 1050058, 1, 1, 0, 1800), +(11848, 9420501, 1332020, 1, 1, 0, 1500), +(11849, 9420501, 4006001, 1, 1, 0, 5000), +(11850, 9420501, 4030012, 1, 1, 0, 300), +(11851, 9420501, 1072297, 1, 1, 0, 2000), +(11852, 9420501, 1482001, 1, 1, 0, 2000), +(11853, 9420501, 1482005, 1, 1, 0, 2000), +(11854, 9420501, 1492005, 1, 1, 0, 2000), +(11855, 9420502, 4000366, 1, 1, 0, 300000), +(11856, 9420502, 4000367, 1, 1, 0, 300000), +(11857, 9420502, 400000, 1, 1, 0, 10000), +(11858, 9420502, 2043202, 1, 1, 0, 1000), +(11859, 9420502, 1372001, 1, 1, 0, 1800), +(11860, 9420502, 400003, 1, 1, 0, 10000), +(11861, 9420502, 1072008, 1, 1, 0, 2000), +(11862, 9420502, 2060000, 1, 1, 0, 10000), +(11863, 9420502, 4010005, 1, 1, 0, 300), +(11864, 9420502, 4020004, 1, 1, 0, 300), +(11865, 9420502, 1312016, 1, 1, 0, 1800), +(11866, 9420502, 1051008, 1, 1, 0, 1800), +(11867, 9420502, 1051009, 1, 1, 0, 1800), +(11868, 9420502, 2020028, 1, 1, 0, 20000), +(11869, 9420502, 1092007, 1, 1, 0, 1800), +(11870, 9420502, 1002141, 1, 1, 0, 2000), +(11871, 9420502, 1002177, 1, 1, 0, 2000), +(11872, 9420502, 1040074, 1, 1, 0, 2000), +(11873, 9420502, 1060063, 1, 1, 0, 2000), +(11874, 9420502, 2061000, 1, 1, 0, 10000), +(11875, 9420502, 1402009, 1, 1, 0, 1800), +(11876, 9420502, 1002610, 1, 1, 0, 2000), +(11877, 9420502, 2330000, 1, 1, 0, 500), +(11878, 9420503, 4000371, 1, 1, 0, 300000), +(11879, 9420503, 4000370, 1, 1, 0, 300000), +(11880, 9420503, 1061047, 1, 1, 0, 2000), +(11881, 9420503, 1061048, 1, 1, 0, 2000), +(11882, 9420503, 1061049, 1, 1, 0, 2000), +(11883, 9420503, 2070001, 1, 1, 0, 500), +(11884, 9420503, 1060050, 1, 1, 0, 2000), +(11885, 9420503, 1060051, 1, 1, 0, 2000), +(11886, 9420503, 4001000, 1, 1, 0, 5000), +(11887, 9420503, 1040061, 1, 1, 0, 2000), +(11888, 9420503, 1002137, 1, 1, 0, 2000), +(11889, 9420503, 400002, 1, 1, 0, 10000), +(11890, 9420503, 400003, 1, 1, 0, 10000), +(11891, 9420503, 1002153, 1, 1, 0, 2000), +(11892, 9420503, 1002181, 1, 1, 0, 2000), +(11893, 9420503, 2020028, 1, 1, 0, 20000), +(11894, 9420503, 404000, 1, 1, 0, 300), +(11895, 9420503, 4010001, 1, 1, 0, 300), +(11896, 9420503, 1041075, 1, 1, 0, 2000), +(11897, 9420503, 1061070, 1, 1, 0, 2000), +(11898, 9420503, 1002613, 1, 1, 0, 2000), +(11899, 9420504, 4000377, 1, 1, 0, 300000), +(11900, 9420504, 4004004, 1, 1, 0, 5000), +(11901, 9420504, 400002, 1, 1, 0, 10000), +(11902, 9420504, 400004, 1, 1, 0, 333333), +(11903, 9420504, 400003, 1, 1, 0, 10000), +(11904, 9420504, 4010001, 1, 1, 0, 300), +(11905, 9420504, 404000, 1, 1, 0, 300), +(11906, 9420504, 1041086, 1, 1, 0, 2000), +(11907, 9420504, 1061085, 1, 1, 0, 2000), +(11908, 9420504, 1302013, 1, 1, 0, 1800), +(11909, 9420504, 1002083, 1, 1, 0, 2000), +(11910, 9420504, 1032007, 1, 1, 0, 1800), +(11911, 9420504, 1041080, 1, 1, 0, 2000), +(11912, 9420504, 1061079, 1, 1, 0, 2000), +(11913, 9420504, 1040094, 1, 1, 0, 2000), +(11914, 9420504, 1060083, 1, 1, 0, 2000), +(11915, 9420504, 1002211, 1, 1, 0, 2000), +(11916, 9420504, 1002212, 1, 1, 0, 2000), +(11917, 9420504, 2020028, 1, 1, 0, 20000), +(11918, 9420504, 1041092, 1, 1, 0, 2000), +(11919, 9420504, 1061091, 1, 1, 0, 2000), +(11920, 9420504, 1102003, 1, 1, 0, 2000), +(11921, 9420504, 4006001, 1, 1, 0, 5000), +(11922, 9420504, 4030012, 1, 1, 0, 300), +(11923, 9420504, 1072291, 1, 1, 0, 2000), +(11924, 9420504, 1082186, 1, 1, 0, 2000), +(11925, 9420504, 1482003, 1, 1, 0, 333333), +(11926, 9420504, 2331000, 1, 1, 0, 500), +(11927, 9420505, 4000378, 1, 1, 0, 300000), +(11928, 9420505, 400002, 1, 1, 0, 10000), +(11929, 9420505, 2002004, 1, 1, 0, 10000), +(11930, 9420505, 1032002, 1, 1, 0, 1800), +(11931, 9420505, 1041014, 1, 1, 0, 2000), +(11932, 9420505, 1002185, 1, 1, 0, 2000), +(11933, 9420505, 1002167, 1, 1, 0, 2000), +(11934, 9420505, 2020028, 1, 1, 0, 20000), +(11935, 9420505, 4010006, 1, 1, 0, 300), +(11936, 9420505, 4020007, 1, 1, 0, 300), +(11937, 9420505, 1002036, 1, 1, 0, 2000), +(11938, 9420505, 400004, 1, 1, 0, 333333), +(11939, 9420505, 2070003, 1, 1, 0, 500), +(11940, 9420505, 1041065, 1, 1, 0, 2000), +(11941, 9420505, 1061060, 1, 1, 0, 2000), +(11942, 9420505, 1051038, 1, 1, 0, 1800), +(11943, 9420505, 1051039, 1, 1, 0, 1800), +(11944, 9420505, 4030012, 1, 1, 0, 300), +(11945, 9420505, 1002616, 1, 1, 0, 2000), +(11946, 9420505, 1052101, 1, 1, 0, 1800), +(11947, 9420505, 1082183, 1, 1, 0, 2000), +(11948, 9420506, 4000368, 1, 1, 0, 300000), +(11949, 9420506, 400001, 1, 1, 0, 333333), +(11950, 9420506, 2002000, 1, 1, 0, 10000), +(11951, 9420506, 2044302, 1, 1, 0, 1000), +(11952, 9420506, 1032000, 1, 1, 0, 1800), +(11953, 9420506, 1002179, 1, 1, 0, 2000), +(11954, 9420506, 1050030, 1, 1, 0, 1800), +(11955, 9420506, 1050031, 1, 1, 0, 1800), +(11956, 9420506, 2060000, 1, 1, 0, 10000), +(11957, 9420506, 4010002, 1, 1, 0, 300), +(11958, 9420506, 4020003, 1, 1, 0, 300), +(11959, 9420506, 2020028, 1, 1, 0, 20000), +(11960, 9420506, 1432003, 1, 1, 0, 1500), +(11961, 9420506, 400003, 1, 1, 0, 10000), +(11962, 9420506, 1002035, 1, 1, 0, 2000), +(11963, 9420506, 2061000, 1, 1, 0, 10000), +(11964, 9420506, 1312007, 1, 1, 0, 1800), +(11965, 9420506, 1040021, 1, 1, 0, 2000), +(11966, 9420506, 1040081, 1, 1, 0, 2000), +(11967, 9420506, 1060070, 1, 1, 0, 2000), +(11968, 9420507, 4000374, 1, 1, 0, 300000), +(11969, 9420507, 4000375, 1, 1, 0, 300000), +(11970, 9420507, 4000376, 1, 1, 0, 300000), +(11971, 9420507, 400004, 1, 1, 0, 333333), +(11972, 9420507, 400003, 1, 1, 0, 10000), +(11973, 9420507, 4010003, 1, 1, 0, 300), +(11974, 9420507, 4020002, 1, 1, 0, 300), +(11975, 9420507, 1302016, 1, 1, 0, 1800), +(11976, 9420507, 1051032, 1, 1, 0, 1800), +(11977, 9420507, 1051033, 1, 1, 0, 1800), +(11978, 9420507, 2043201, 1, 1, 0, 1000), +(11979, 9420507, 1041027, 1, 1, 0, 1200), +(11980, 9420507, 1061025, 1, 1, 0, 1200), +(11981, 9420507, 1040089, 1, 1, 0, 1200), +(11982, 9420507, 1060078, 1, 1, 0, 1200), +(11983, 9420507, 2020028, 1, 1, 0, 20000), +(11984, 9420507, 1002213, 1, 1, 0, 1200), +(11985, 9420507, 1002214, 1, 1, 0, 1200), +(11986, 9420507, 1002216, 1, 1, 0, 1200), +(11987, 9420507, 1050053, 1, 1, 0, 1800), +(11988, 9420507, 1050054, 1, 1, 0, 1800), +(11989, 9420507, 1002242, 1, 1, 0, 1200), +(11990, 9420507, 1002243, 1, 1, 0, 1200), +(11991, 9420507, 1002619, 1, 1, 0, 1200), +(11992, 9420507, 1052104, 1, 1, 0, 1800), +(11993, 9420507, 1482002, 1, 1, 0, 1800), +(11994, 9420507, 1492002, 1, 1, 0, 1800), +(11995, 9420507, 2044802, 1, 1, 0, 1000), +(11996, 9420508, 4000373, 1, 1, 0, 300000), +(11997, 9420508, 400002, 1, 1, 0, 10000), +(11998, 9420508, 400003, 1, 1, 0, 10000), +(11999, 9420508, 4020005, 1, 1, 0, 300), +(12000, 9420508, 4010003, 1, 1, 0, 300), +(12001, 9420508, 400004, 1, 1, 0, 333333), +(12002, 9420508, 2060000, 1, 1, 0, 10000), +(12003, 9420508, 2061000, 1, 1, 0, 10000), +(12004, 9420508, 1060074, 1, 1, 0, 2000), +(12005, 9420508, 1002128, 1, 1, 0, 2000), +(12006, 9420508, 1072054, 1, 1, 0, 2000), +(12007, 9420508, 1051010, 1, 1, 0, 1800), +(12008, 9420508, 2020028, 1, 1, 0, 20000), +(12009, 9420508, 1041078, 1, 1, 0, 2000), +(12010, 9420508, 1061077, 1, 1, 0, 2000), +(12011, 9420508, 1040086, 1, 1, 0, 2000), +(12012, 9420508, 1040095, 1, 1, 0, 2000), +(12013, 9420508, 1060084, 1, 1, 0, 2000), +(12014, 9420508, 1041087, 1, 1, 0, 2000), +(12015, 9420508, 1061086, 1, 1, 0, 2000), +(12016, 9420508, 1002217, 1, 1, 0, 2000), +(12017, 9420508, 1072288, 1, 1, 0, 2000), +(12018, 9420508, 1072294, 1, 1, 0, 2000), +(12019, 9420508, 1482000, 1, 1, 0, 2000), +(12020, 9420508, 1482004, 1, 1, 0, 2000), +(12021, 9420508, 1482006, 1, 1, 0, 2000), +(12022, 9420508, 1492004, 1, 1, 0, 2000), +(12023, 9420508, 1492006, 1, 1, 0, 2000), +(12024, 9420509, 4000380, 1, 1, 0, 300000), +(12025, 9420509, 1050039, 1, 1, 0, 1800), +(12026, 9420509, 4004004, 1, 1, 0, 5000), +(12027, 9420509, 400003, 1, 1, 0, 10000), +(12028, 9420509, 400004, 1, 1, 0, 333333), +(12029, 9420509, 1051001, 1, 1, 0, 1800), +(12030, 9420509, 1051014, 1, 1, 0, 1800), +(12031, 9420509, 4020008, 1, 1, 0, 300), +(12032, 9420509, 2070004, 1, 1, 0, 500), +(12033, 9420509, 1060064, 1, 1, 0, 2000), +(12034, 9420509, 1040075, 1, 1, 0, 2000), +(12035, 9420509, 2044201, 1, 1, 0, 1000), +(12036, 9420509, 2020028, 1, 1, 0, 20000), +(12037, 9420509, 1402007, 1, 1, 0, 1800), +(12038, 9420509, 1050036, 1, 1, 0, 1800), +(12039, 9420509, 1050037, 1, 1, 0, 1800), +(12040, 9420509, 4001005, 1, 1, 0, 5000), +(12041, 9420509, 1050059, 1, 1, 0, 1800), +(12042, 9420509, 1050060, 1, 1, 0, 1800), +(12043, 9420509, 1041093, 1, 1, 0, 2000), +(12044, 9420509, 1061092, 1, 1, 0, 2000), +(12045, 9420509, 1002631, 1, 1, 0, 2000), +(12046, 9420509, 1052116, 1, 1, 0, 1800), +(12047, 9420509, 2330002, 1, 1, 0, 500), +(12048, 9420510, 4000379, 1, 1, 0, 300000), +(12049, 9420510, 1061071, 1, 1, 0, 2000), +(12050, 9420510, 400006, 1, 1, 0, 333333), +(12051, 9420510, 4020008, 1, 1, 0, 300), +(12052, 9420510, 4010006, 1, 1, 0, 300), +(12053, 9420510, 1040109, 1, 1, 0, 2000), +(12054, 9420510, 1060098, 1, 1, 0, 2000), +(12055, 9420510, 1041068, 1, 1, 0, 2000), +(12056, 9420510, 1061063, 1, 1, 0, 2000), +(12057, 9420510, 1032011, 1, 1, 0, 1800), +(12058, 9420510, 1452008, 1, 1, 0, 1500), +(12059, 9420510, 1102017, 1, 1, 0, 2000), +(12060, 9420510, 1312008, 1, 1, 0, 1800), +(12061, 9420510, 2043701, 1, 1, 0, 1000), +(12062, 9420510, 1041076, 1, 1, 0, 2000), +(12063, 9420510, 1051030, 1, 1, 0, 1800), +(12064, 9420510, 2020028, 1, 1, 0, 20000), +(12065, 9420510, 1051031, 1, 1, 0, 1800), +(12066, 9420510, 1051034, 1, 1, 0, 1800), +(12067, 9420510, 1002209, 1, 1, 0, 2000), +(12068, 9420510, 1002210, 1, 1, 0, 2000), +(12069, 9420510, 1051046, 1, 1, 0, 1800), +(12070, 9420510, 1051047, 1, 1, 0, 1800), +(12071, 9420510, 4030012, 1, 1, 0, 300), +(12072, 9420510, 1492001, 1, 1, 0, 3000), +(12073, 9420511, 4000382, 1, 1, 0, 300000), +(12074, 9420511, 400006, 1, 1, 0, 333333), +(12075, 9420511, 400004, 1, 1, 0, 333333), +(12076, 9420511, 4020007, 1, 1, 0, 300), +(12077, 9420511, 4010005, 1, 1, 0, 300), +(12078, 9420511, 2070005, 1, 1, 0, 500), +(12079, 9420511, 1041083, 1, 1, 0, 2000), +(12080, 9420511, 1061082, 1, 1, 0, 2000), +(12081, 9420511, 1072090, 1, 1, 0, 2000), +(12082, 9420511, 1041079, 1, 1, 0, 2000), +(12083, 9420511, 1061078, 1, 1, 0, 2000), +(12084, 9420511, 4001006, 1, 1, 0, 1000), +(12085, 9420511, 2020028, 1, 1, 0, 20000), +(12086, 9420511, 1002215, 1, 1, 0, 2000), +(12087, 9420511, 1050055, 1, 1, 0, 1800), +(12088, 9420511, 1102015, 1, 1, 0, 2000), +(12089, 9420511, 1050056, 1, 1, 0, 1800), +(12090, 9420511, 1041098, 1, 1, 0, 2000), +(12091, 9420511, 1482008, 1, 1, 0, 3000), +(12092, 9420511, 1492008, 1, 1, 0, 3000), +(12093, 9420512, 4000383, 1, 1, 0, 300000), +(12094, 9420512, 400002, 1, 1, 0, 10000), +(12095, 9420512, 400004, 1, 1, 0, 333333), +(12096, 9420512, 4010006, 1, 1, 0, 300), +(12097, 9420512, 4020006, 1, 1, 0, 300), +(12098, 9420512, 4006000, 1, 1, 0, 5000), +(12099, 9420512, 4004004, 1, 1, 0, 5000), +(12100, 9420512, 2020028, 1, 1, 0, 20000), +(12101, 9420512, 1040093, 1, 1, 0, 2000), +(12102, 9420512, 1060082, 1, 1, 0, 2000), +(12103, 9420512, 1082082, 1, 1, 0, 2000), +(12104, 9420512, 1302011, 1, 1, 0, 1800), +(12105, 9420512, 1312009, 1, 1, 0, 1800), +(12106, 9420512, 1040089, 1, 1, 0, 2000), +(12107, 9420512, 1060078, 1, 1, 0, 2000), +(12108, 9420512, 2041022, 1, 1, 0, 1000), +(12109, 9420512, 2043301, 1, 1, 0, 1000), +(12110, 9420512, 1032015, 1, 1, 0, 1800), +(12111, 9420512, 1050093, 1, 1, 0, 1800), +(12112, 9420512, 1002637, 1, 1, 0, 2000), +(12113, 9420512, 1052122, 1, 1, 0, 1800), +(12114, 9420512, 2330003, 1, 1, 0, 500), +(12115, 9420513, 4000384, 1, 1, 0, 300000), +(12116, 9420513, 4000385, 1, 1, 0, 300000), +(12117, 9420513, 2020013, 1, 1, 0, 333333), +(12118, 9420513, 2020015, 1, 1, 0, 333333), +(12119, 9420513, 400006, 1, 1, 0, 333333), +(12120, 9420513, 1072178, 1, 1, 0, 4000), +(12121, 9420513, 1040112, 1, 1, 0, 4000), +(12122, 9420513, 1041120, 1, 1, 0, 4000), +(12123, 9420513, 1061119, 1, 1, 0, 4000), +(12124, 9420513, 1051097, 1, 1, 0, 3000), +(12125, 9420513, 1060106, 1, 1, 0, 4000), +(12126, 9420513, 1041118, 1, 1, 0, 4000), +(12127, 9420513, 1072198, 1, 1, 0, 4000), +(12128, 9420513, 1312015, 1, 1, 0, 3000), +(12129, 9420513, 1332026, 1, 1, 0, 25000), +(12130, 9420513, 1462018, 1, 1, 0, 25000), +(12131, 9420513, 1372009, 1, 1, 0, 3000), +(12132, 9420513, 2041022, 1, 1, 0, 1000), +(12133, 9420513, 2290118, 1, 1, 0, 4000), +(12134, 9420513, 2290100, 1, 1, 0, 4000), +(12135, 9420514, 4000429, 1, 1, 0, 300000), +(12136, 9420514, 400006, 1, 1, 0, 333333), +(12137, 9420514, 400005, 1, 1, 0, 333333), +(12138, 9420514, 4020008, 1, 1, 0, 300), +(12139, 9420514, 4010006, 1, 1, 0, 300), +(12140, 9420514, 2044702, 1, 1, 0, 1000), +(12141, 9420514, 2043802, 1, 1, 0, 1000), +(12142, 9420514, 4006000, 1, 1, 0, 5000), +(12143, 9420514, 4004002, 1, 1, 0, 5000), +(12144, 9420514, 400002, 1, 1, 0, 10000), +(12145, 9420514, 1050083, 1, 1, 0, 1800), +(12146, 9420514, 1082119, 1, 1, 0, 2000), +(12147, 9420514, 1072185, 1, 1, 0, 2000), +(12148, 9420514, 1002330, 1, 1, 0, 2000), +(12149, 9420514, 1092027, 1, 1, 0, 1800), +(12150, 9420514, 1452015, 1, 1, 0, 1500), +(12151, 9420514, 1462013, 1, 1, 0, 1500), +(12152, 9420514, 1432010, 1, 1, 0, 1500), +(12153, 9420514, 1302056, 1, 1, 0, 1800), +(12154, 9420514, 1372010, 1, 1, 0, 1800), +(12155, 9420514, 1332052, 1, 1, 0, 1500), +(12156, 9420514, 1002640, 1, 1, 0, 2000), +(12157, 9420514, 1052125, 1, 1, 0, 1800), +(12158, 9420514, 1082207, 1, 1, 0, 2000), +(12159, 9420514, 2330004, 1, 1, 0, 500), +(12160, 9420514, 2290099, 1, 1, 0, 2000), +(12161, 9420516, 4000431, 1, 1, 0, 300000), +(12162, 9420516, 400006, 1, 1, 0, 333333), +(12163, 9420516, 400005, 1, 1, 0, 333333), +(12164, 9420516, 4004002, 1, 1, 0, 5000), +(12165, 9420516, 4010001, 1, 1, 0, 300), +(12166, 9420516, 404000, 1, 1, 0, 300), +(12167, 9420516, 4006001, 1, 1, 0, 5000), +(12168, 9420516, 1002365, 1, 1, 0, 2000), +(12169, 9420516, 1050089, 1, 1, 0, 1800), +(12170, 9420516, 1041118, 1, 1, 0, 2000), +(12171, 9420516, 1061116, 1, 1, 0, 2000), +(12172, 9420516, 1082129, 1, 1, 0, 2000), +(12173, 9420516, 1072223, 1, 1, 0, 2000), +(12174, 9420516, 1452017, 1, 1, 0, 1500), +(12175, 9420516, 2040701, 1, 1, 0, 1000), +(12176, 9420516, 2040516, 1, 1, 0, 1000), +(12177, 9420516, 2043002, 1, 1, 0, 1000), +(12178, 9420515, 4000430, 1, 1, 0, 300000), +(12179, 9420515, 400006, 1, 1, 0, 333333), +(12180, 9420515, 400005, 1, 1, 0, 333333), +(12181, 9420515, 4010003, 1, 1, 0, 300), +(12182, 9420515, 4020001, 1, 1, 0, 300), +(12183, 9420515, 2048004, 1, 1, 0, 1000), +(12184, 9420515, 2040901, 1, 1, 0, 1000), +(12185, 9420515, 4006001, 1, 1, 0, 5000), +(12186, 9420515, 4004003, 1, 1, 0, 5000), +(12187, 9420515, 400002, 1, 1, 0, 10000), +(12188, 9420515, 1082117, 1, 1, 0, 2000), +(12189, 9420515, 1072179, 1, 1, 0, 2000), +(12190, 9420515, 1002328, 1, 1, 0, 2000), +(12191, 9420515, 1040109, 1, 1, 0, 2000), +(12192, 9420515, 1060098, 1, 1, 0, 2000), +(12193, 9420515, 1452014, 1, 1, 0, 1500), +(12194, 9420515, 1382008, 1, 1, 0, 1800), +(12195, 9420515, 1032023, 1, 1, 0, 1800), +(12196, 9420515, 1092026, 1, 1, 0, 1800), +(12197, 9420515, 1312030, 1, 1, 0, 1800), +(12198, 9420515, 1402035, 1, 1, 0, 1800), +(12199, 9420515, 1472053, 1, 1, 0, 1300), +(12200, 9420517, 4000432, 1, 1, 0, 300000), +(12201, 9420517, 2022003, 1, 1, 0, 333333), +(12202, 9420517, 400006, 1, 1, 0, 333333), +(12203, 9420517, 400005, 1, 1, 0, 333333), +(12204, 9420517, 4004003, 1, 1, 0, 5000), +(12205, 9420517, 4020007, 1, 1, 0, 300), +(12206, 9420517, 4010005, 1, 1, 0, 300), +(12207, 9420517, 4006001, 1, 1, 0, 5000), +(12208, 9420517, 4006000, 1, 1, 0, 5000), +(12209, 9420517, 1002406, 1, 1, 0, 2000), +(12210, 9420517, 1051101, 1, 1, 0, 1800), +(12211, 9420517, 1050097, 1, 1, 0, 1800), +(12212, 9420517, 1082139, 1, 1, 0, 2000), +(12213, 9420517, 1072225, 1, 1, 0, 2000), +(12214, 9420517, 1032023, 1, 1, 0, 1800), +(12215, 9420517, 1412021, 1, 1, 0, 1800), +(12216, 9420517, 1452019, 1, 1, 0, 1500), +(12217, 9420517, 2043801, 1, 1, 0, 1000), +(12218, 9420517, 2041023, 1, 1, 0, 1000), +(12219, 9420517, 2040707, 1, 1, 0, 1000), +(12220, 9420517, 1082152, 1, 1, 0, 2000), +(12221, 9420517, 2290000, 1, 1, 0, 2000), +(12222, 9420517, 2290008, 1, 1, 0, 2000), +(12223, 9420517, 2290018, 1, 1, 0, 2000), +(12224, 9420517, 2290038, 1, 1, 0, 2000), +(12225, 9420517, 2290060, 1, 1, 0, 2000), +(12226, 9420517, 2290080, 1, 1, 0, 2000), +(12227, 9420517, 2290103, 1, 1, 0, 2000), +(12228, 9420518, 400006, 1, 1, 0, 333333), +(12229, 9420518, 400005, 1, 1, 0, 333333), +(12230, 9420518, 2022003, 1, 1, 0, 333333), +(12231, 9420518, 2020013, 1, 1, 0, 333333), +(12232, 9420518, 4010001, 1, 1, 0, 300), +(12233, 9420518, 4020002, 1, 1, 0, 300), +(12234, 9420518, 4004004, 1, 1, 0, 5000), +(12235, 9420518, 1002530, 1, 1, 0, 2000), +(12236, 9420518, 1050098, 1, 1, 0, 1800), +(12237, 9420518, 1041122, 1, 1, 0, 2000), +(12238, 9420518, 1061121, 1, 1, 0, 2000), +(12239, 9420518, 1051101, 1, 1, 0, 1800), +(12240, 9420518, 1082158, 1, 1, 0, 2000), +(12241, 9420518, 1072208, 1, 1, 0, 2000), +(12242, 9420518, 1092027, 1, 1, 0, 1800), +(12243, 9420518, 1402016, 1, 1, 0, 1800), +(12244, 9420518, 1382035, 1, 1, 0, 1800), +(12245, 9420518, 2040302, 1, 1, 0, 1000), +(12246, 9420518, 2040501, 1, 1, 0, 1000), +(12247, 9420518, 4000433, 1, 1, 0, 300000), +(12248, 9420518, 1082136, 1, 1, 0, 2000), +(12249, 9420518, 2044902, 1, 1, 0, 1000), +(12250, 9420518, 2290123, 1, 1, 0, 2000), +(12251, 9420519, 4000434, 1, 1, 0, 300000), +(12252, 9420519, 2022003, 1, 1, 0, 333333), +(12253, 9420519, 400006, 1, 1, 0, 333333), +(12254, 9420519, 400005, 1, 1, 0, 333333), +(12255, 9420519, 4004004, 1, 1, 0, 5000), +(12256, 9420519, 4020006, 1, 1, 0, 300), +(12257, 9420519, 4020002, 1, 1, 0, 300), +(12258, 9420519, 4006001, 1, 1, 0, 5000), +(12259, 9420519, 4006000, 1, 1, 0, 5000), +(12260, 9420519, 1002380, 1, 1, 0, 2000), +(12261, 9420519, 1051102, 1, 1, 0, 1800), +(12262, 9420519, 1040121, 1, 1, 0, 2000), +(12263, 9420519, 1060109, 1, 1, 0, 2000), +(12264, 9420519, 1082151, 1, 1, 0, 2000), +(12265, 9420519, 1072215, 1, 1, 0, 2000), +(12266, 9420519, 1322045, 1, 1, 0, 1800), +(12267, 9420519, 1302056, 1, 1, 0, 1800), +(12268, 9420519, 2041004, 1, 1, 0, 1000), +(12269, 9420519, 2041013, 1, 1, 0, 1000), +(12270, 9420519, 2044201, 1, 1, 0, 1000), +(12271, 9420519, 2330005, 1, 1, 0, 500), +(12272, 9420519, 2290113, 1, 1, 0, 2000), +(12273, 9420522, 2020013, 1, 1, 0, 333333), +(12274, 9420522, 2020015, 1, 1, 0, 333333), +(12275, 9420522, 400005, 1, 1, 0, 333333), +(12276, 9420522, 1302056, 1, 1, 0, 3000), +(12277, 9420522, 1312030, 1, 1, 0, 3000), +(12278, 9420522, 1322045, 1, 1, 0, 3000), +(12279, 9420522, 1332051, 1, 1, 0, 25000), +(12280, 9420522, 1332052, 1, 1, 0, 25000), +(12281, 9420522, 1372010, 1, 1, 0, 3000), +(12282, 9420522, 1382035, 1, 1, 0, 3000), +(12283, 9420522, 1402035, 1, 1, 0, 3000), +(12284, 9420522, 1412021, 1, 1, 0, 3000), +(12285, 9420522, 1422027, 1, 1, 0, 3000), +(12286, 9420522, 1432030, 1, 1, 0, 25000), +(12287, 9420522, 1442044, 1, 1, 0, 3000), +(12288, 9420522, 1452019, 1, 1, 0, 25000), +(12289, 9420522, 1452020, 1, 1, 0, 25000), +(12290, 9420522, 1462015, 1, 1, 0, 25000), +(12291, 9420522, 1462016, 1, 1, 0, 25000), +(12292, 9420522, 1472053, 1, 1, 0, 13000), +(12293, 9420522, 400004, 1, 1, 0, 333333), +(12294, 9420522, 2290028, 1, 1, 0, 4000), +(12295, 9420522, 2290037, 1, 1, 0, 4000), +(12296, 9420522, 2290043, 1, 1, 0, 4000), +(12297, 9420522, 2290066, 1, 1, 0, 4000), +(12298, 9420522, 2290089, 1, 1, 0, 4000), +(12299, 9420522, 2290091, 1, 1, 0, 4000), +(12300, 9420522, 2290011, 1, 1, 0, 4000), +(12301, 9420522, 2290001, 1, 1, 0, 4000), +(12302, 9420522, 2290025, 1, 1, 0, 4000), +(12303, 9420522, 2290083, 1, 1, 0, 4000), +(12304, 9420522, 2290000, 1, 1, 0, 4000), +(12305, 9420522, 2290082, 1, 1, 0, 4000), +(12306, 9420522, 4000435, 1, 1, 0, 300000), +(12307, 9420522, 2290107, 1, 1, 0, 4000), +(12308, 9420527, 4000465, 1, 1, 0, 300000), +(12309, 9420527, 400006, 1, 1, 0, 333333), +(12310, 9420527, 2020028, 1, 1, 0, 20000), +(12311, 9420527, 401000, 1, 1, 0, 300), +(12312, 9420527, 4020001, 1, 1, 0, 300), +(12313, 9420527, 2002010, 1, 1, 0, 333333), +(12314, 9420527, 2040101, 1, 1, 0, 1000), +(12315, 9420527, 2040311, 1, 1, 0, 1000), +(12316, 9420527, 4130010, 1, 1, 0, 5000), +(12317, 9420527, 1332015, 1, 1, 0, 1500), +(12318, 9420527, 1302013, 1, 1, 0, 1800), +(12319, 9420527, 1472017, 1, 1, 0, 1300), +(12320, 9420527, 1082064, 1, 1, 0, 2000), +(12321, 9420527, 1072124, 1, 1, 0, 2000), +(12322, 9420527, 1072055, 1, 1, 0, 2000), +(12323, 9420527, 1050047, 1, 1, 0, 1800), +(12324, 9420527, 1050046, 1, 1, 0, 1800), +(12325, 9420527, 1051039, 1, 1, 0, 1800), +(12326, 9420527, 2060001, 1, 1, 0, 10000), +(12327, 9420527, 2061001, 1, 1, 0, 10000), +(12328, 9420527, 1002625, 1, 1, 0, 2000), +(12329, 9420527, 1052110, 1, 1, 0, 1800), +(12330, 9420527, 1082192, 1, 1, 0, 2000), +(12331, 9420527, 1492000, 1, 1, 0, 333333), +(12332, 9420527, 2330000, 1, 1, 0, 500), +(12333, 9420528, 4000466, 1, 1, 0, 300000), +(12334, 9420528, 2020006, 1, 1, 0, 333333), +(12335, 9420528, 400010, 1, 1, 0, 333333), +(12336, 9420528, 2050004, 1, 1, 0, 5000), +(12337, 9420528, 4010001, 1, 1, 0, 300), +(12338, 9420528, 4020002, 1, 1, 0, 300), +(12339, 9420528, 2040516, 1, 1, 0, 1000), +(12340, 9420528, 2044501, 1, 1, 0, 1000), +(12341, 9420528, 4131008, 1, 1, 0, 5000), +(12342, 9420528, 4130000, 1, 1, 0, 5000), +(12343, 9420528, 2040704, 1, 1, 0, 1000), +(12344, 9420528, 4004001, 1, 1, 0, 5000), +(12345, 9420528, 1302016, 1, 1, 0, 1800), +(12346, 9420528, 1322017, 1, 1, 0, 1800), +(12347, 9420528, 1332016, 1, 1, 0, 1500), +(12348, 9420528, 1372012, 1, 1, 0, 1800), +(12349, 9420528, 1102003, 1, 1, 0, 2000), +(12350, 9420528, 1082050, 1, 1, 0, 2000), +(12351, 9420528, 1060078, 1, 1, 0, 2000), +(12352, 9420528, 1072134, 1, 1, 0, 2000), +(12353, 9420528, 1032018, 1, 1, 0, 1800), +(12354, 9420528, 1002024, 1, 1, 0, 2000), +(12355, 9420528, 4006000, 1, 1, 0, 5000), +(12356, 9420528, 1002628, 1, 1, 0, 2000), +(12357, 9420528, 1052113, 1, 1, 0, 1800), +(12358, 9420528, 1072285, 1, 1, 0, 2000), +(12359, 9420528, 1072300, 1, 1, 0, 2000), +(12360, 9420528, 1082195, 1, 1, 0, 2000), +(12361, 9420528, 2330001, 1, 1, 0, 500), +(12362, 9420529, 4000467, 1, 1, 0, 300000), +(12363, 9420529, 400006, 1, 1, 0, 333333), +(12364, 9420529, 4006001, 1, 1, 0, 5000), +(12365, 9420529, 2040005, 1, 1, 0, 1000), +(12366, 9420529, 2043801, 1, 1, 0, 1000), +(12367, 9420529, 4004000, 1, 1, 0, 5000), +(12368, 9420529, 4003002, 1, 1, 0, 20000), +(12369, 9420529, 1402010, 1, 1, 0, 1800), +(12370, 9420529, 1412003, 1, 1, 0, 1800), +(12371, 9420529, 1452008, 1, 1, 0, 1500), +(12372, 9420529, 1462006, 1, 1, 0, 1500), +(12373, 9420529, 1472021, 1, 1, 0, 1300), +(12374, 9420529, 2040302, 1, 1, 0, 1000), +(12375, 9420529, 1092009, 1, 1, 0, 1800), +(12376, 9420529, 1082083, 1, 1, 0, 2000), +(12377, 9420529, 1082072, 1, 1, 0, 2000), +(12378, 9420529, 1040089, 1, 1, 0, 2000), +(12379, 9420529, 1041080, 1, 1, 0, 2000), +(12380, 9420529, 1051030, 1, 1, 0, 1800), +(12381, 9420529, 1051038, 1, 1, 0, 1800), +(12382, 9420529, 1002184, 1, 1, 0, 2000), +(12383, 9420529, 1002099, 1, 1, 0, 2000), +(12384, 9420529, 1002216, 1, 1, 0, 2000), +(12385, 9420529, 1040096, 1, 1, 0, 2000), +(12386, 9420529, 1060085, 1, 1, 0, 2000), +(12387, 9420529, 1052098, 1, 1, 0, 1800), +(12388, 9420529, 1072303, 1, 1, 0, 2000), +(12389, 9420529, 1082198, 1, 1, 0, 2000), +(12390, 9420531, 4000469, 1, 1, 0, 300000), +(12391, 9420531, 2060001, 1, 1, 0, 10000), +(12392, 9420531, 2061001, 1, 1, 0, 10000), +(12393, 9420531, 4003005, 1, 1, 0, 40000), +(12394, 9420531, 4004003, 1, 1, 0, 5000), +(12395, 9420531, 4010002, 1, 1, 0, 300), +(12396, 9420531, 4020006, 1, 1, 0, 300), +(12397, 9420531, 400002, 1, 1, 0, 10000), +(12398, 9420531, 400006, 1, 1, 0, 333333), +(12399, 9420531, 400005, 1, 1, 0, 333333), +(12400, 9420531, 1332017, 1, 1, 0, 1500), +(12401, 9420531, 1302010, 1, 1, 0, 1800), +(12402, 9420531, 1372007, 1, 1, 0, 1800), +(12403, 9420531, 1402003, 1, 1, 0, 1800), +(12404, 9420531, 1412007, 1, 1, 0, 1800), +(12405, 9420531, 1452004, 1, 1, 0, 1500), +(12406, 9420531, 1092012, 1, 1, 0, 1800), +(12407, 9420531, 1082067, 1, 1, 0, 2000), +(12408, 9420531, 1082091, 1, 1, 0, 2000), +(12409, 9420531, 1041081, 1, 1, 0, 2000), +(12410, 9420531, 1061080, 1, 1, 0, 2000), +(12411, 9420531, 1041093, 1, 1, 0, 2000), +(12412, 9420531, 1061092, 1, 1, 0, 2000), +(12413, 9420531, 2040804, 1, 1, 0, 500), +(12414, 9420531, 2041005, 1, 1, 0, 1000), +(12415, 9420531, 2330002, 1, 1, 0, 500), +(12416, 9420532, 4000470, 1, 1, 0, 300000), +(12417, 9420532, 400002, 1, 1, 0, 10000), +(12418, 9420532, 400006, 1, 1, 0, 333333), +(12419, 9420532, 2043009, 1, 1, 0, 1000), +(12420, 9420532, 2044102, 1, 1, 0, 1000), +(12421, 9420532, 1032008, 1, 1, 0, 1800), +(12422, 9420532, 1002243, 1, 1, 0, 2000), +(12423, 9420532, 1002244, 1, 1, 0, 2000), +(12424, 9420532, 1002270, 1, 1, 0, 2000), +(12425, 9420532, 1002155, 1, 1, 0, 2000), +(12426, 9420532, 1051043, 1, 1, 0, 1800), +(12427, 9420532, 1041087, 1, 1, 0, 2000), +(12428, 9420532, 1061086, 1, 1, 0, 2000), +(12429, 9420532, 1041095, 1, 1, 0, 2000), +(12430, 9420532, 1061094, 1, 1, 0, 2000), +(12431, 9420532, 1072149, 1, 1, 0, 2000), +(12432, 9420532, 1072110, 1, 1, 0, 2000), +(12433, 9420532, 1051046, 1, 1, 0, 1800), +(12434, 9420532, 1051047, 1, 1, 0, 1800), +(12435, 9420532, 1102017, 1, 1, 0, 2000), +(12436, 9420532, 1472020, 1, 1, 0, 1300), +(12437, 9420532, 1332021, 1, 1, 0, 1500), +(12438, 9420532, 1332029, 1, 1, 0, 1500), +(12439, 9420532, 1372017, 1, 1, 0, 1800), +(12440, 9420532, 1002622, 1, 1, 0, 2000), +(12441, 9420532, 1052107, 1, 1, 0, 1800), +(12442, 9420532, 1082189, 1, 1, 0, 2000), +(12443, 9420532, 1492003, 1, 1, 0, 2000), +(12444, 9420533, 4000471, 1, 1, 0, 300000), +(12445, 9420533, 2002004, 1, 1, 0, 10000), +(12446, 9420533, 400009, 1, 1, 0, 333333), +(12447, 9420533, 400006, 1, 1, 0, 333333), +(12448, 9420533, 2002011, 1, 1, 0, 10000), +(12449, 9420533, 2044302, 1, 1, 0, 1000), +(12450, 9420533, 2048001, 1, 1, 0, 1000), +(12451, 9420533, 1312009, 1, 1, 0, 1800), +(12452, 9420533, 1322012, 1, 1, 0, 1800), +(12453, 9420533, 1332020, 1, 1, 0, 1500), +(12454, 9420533, 1372008, 1, 1, 0, 1800), +(12455, 9420533, 1402017, 1, 1, 0, 1800), +(12456, 9420533, 1432007, 1, 1, 0, 1500), +(12457, 9420533, 1051023, 1, 1, 0, 1800), +(12458, 9420533, 1051038, 1, 1, 0, 1800), +(12459, 9420533, 1050052, 1, 1, 0, 1800), +(12460, 9420533, 1050039, 1, 1, 0, 1800), +(12461, 9420533, 1040105, 1, 1, 0, 2000), +(12462, 9420533, 1060093, 1, 1, 0, 2000), +(12463, 9420533, 1041096, 1, 1, 0, 2000), +(12464, 9420533, 1061095, 1, 1, 0, 2000), +(12465, 9420533, 1002248, 1, 1, 0, 2000), +(12466, 9420533, 1002249, 1, 1, 0, 2000), +(12467, 9420533, 1002254, 1, 1, 0, 2000), +(12468, 9420533, 1082180, 1, 1, 0, 2000), +(12469, 9420535, 4000473, 1, 1, 0, 300000), +(12470, 9420535, 4030009, 1, 1, 0, 300), +(12471, 9420535, 400002, 1, 1, 0, 10000), +(12472, 9420535, 400004, 1, 1, 0, 333333), +(12473, 9420535, 2020028, 1, 1, 0, 20000), +(12474, 9420535, 4030012, 1, 1, 0, 300), +(12475, 9420535, 2022003, 1, 1, 0, 333333), +(12476, 9420535, 2044402, 1, 1, 0, 1000), +(12477, 9420535, 2043701, 1, 1, 0, 1000), +(12478, 9420535, 4010006, 1, 1, 0, 300), +(12479, 9420535, 404000, 1, 1, 0, 300), +(12480, 9420535, 1050060, 1, 1, 0, 1800), +(12481, 9420535, 1041076, 1, 1, 0, 2000), +(12482, 9420535, 1061071, 1, 1, 0, 2000), +(12483, 9420535, 1322007, 1, 1, 0, 1800), +(12484, 9420535, 1442009, 1, 1, 0, 1800), +(12485, 9420535, 1102012, 1, 1, 0, 2000), +(12486, 9420535, 1092029, 1, 1, 0, 1800), +(12487, 9420535, 1072018, 1, 1, 0, 2000), +(12488, 9420535, 1072159, 1, 1, 0, 2000), +(12489, 9420535, 1072161, 1, 1, 0, 2000), +(12490, 9420535, 1051016, 1, 1, 0, 1800), +(12491, 9420535, 1050070, 1, 1, 0, 1800), +(12492, 9420535, 1051055, 1, 1, 0, 1800), +(12493, 9420535, 1032020, 1, 1, 0, 1800), +(12494, 9420535, 1082106, 1, 1, 0, 2000), +(12495, 9420535, 1082093, 1, 1, 0, 2000), +(12496, 9420535, 1492009, 1, 1, 0, 2000), +(12497, 9420537, 4000475, 1, 1, 0, 300000), +(12498, 9420537, 2022003, 1, 1, 0, 333333), +(12499, 9420537, 400006, 1, 1, 0, 333333), +(12500, 9420537, 1322009, 1, 1, 0, 1800), +(12501, 9420537, 4010005, 1, 1, 0, 300), +(12502, 9420537, 4020007, 1, 1, 0, 300), +(12503, 9420537, 4006000, 1, 1, 0, 5000), +(12504, 9420537, 4004002, 1, 1, 0, 5000), +(12505, 9420537, 1372015, 1, 1, 0, 1800), +(12506, 9420537, 1102030, 1, 1, 0, 2000), +(12507, 9420537, 1041102, 1, 1, 0, 2000), +(12508, 9420537, 1061101, 1, 1, 0, 2000), +(12509, 9420537, 1050083, 1, 1, 0, 1800), +(12510, 9420537, 1051080, 1, 1, 0, 1800), +(12511, 9420537, 1072155, 1, 1, 0, 2000), +(12512, 9420537, 1072165, 1, 1, 0, 2000), +(12513, 9420537, 1032022, 1, 1, 0, 1800), +(12514, 9420537, 1002252, 1, 1, 0, 2000), +(12515, 9420537, 1002284, 1, 1, 0, 2000), +(12516, 9420537, 1002289, 1, 1, 0, 2000), +(12517, 9420537, 1452011, 1, 1, 0, 1500), +(12518, 9420537, 1462013, 1, 1, 0, 1500), +(12519, 9420537, 1472027, 1, 1, 0, 1300), +(12520, 9420537, 2043301, 1, 1, 0, 1000), +(12521, 9420537, 2040513, 1, 1, 0, 1000), +(12522, 9420537, 1002634, 1, 1, 0, 2000), +(12523, 9420537, 1052119, 1, 1, 0, 1800), +(12524, 9420537, 1072306, 1, 1, 0, 2000), +(12525, 9420537, 1082201, 1, 1, 0, 2000), +(12526, 9420538, 4000476, 1, 1, 0, 300000), +(12527, 9420538, 4010002, 1, 1, 0, 300), +(12528, 9420538, 4010001, 1, 1, 0, 300), +(12529, 9420538, 4004002, 1, 1, 0, 5000), +(12530, 9420538, 400006, 1, 1, 0, 333333), +(12531, 9420538, 400004, 1, 1, 0, 333333), +(12532, 9420538, 2070004, 1, 1, 0, 500), +(12533, 9420538, 4006000, 1, 1, 0, 5000), +(12534, 9420538, 2040705, 1, 1, 0, 1000), +(12535, 9420538, 2041017, 1, 1, 0, 1000), +(12536, 9420538, 1432010, 1, 1, 0, 1500), +(12537, 9420538, 1422012, 1, 1, 0, 1800), +(12538, 9420538, 1102029, 1, 1, 0, 2000), +(12539, 9420538, 1092015, 1, 1, 0, 1800), +(12540, 9420538, 1082123, 1, 1, 0, 2000), +(12541, 9420538, 1082112, 1, 1, 0, 2000), +(12542, 9420538, 1060091, 1, 1, 0, 2000), +(12543, 9420538, 1060094, 1, 1, 0, 2000), +(12544, 9420538, 1002274, 1, 1, 0, 2000), +(12545, 9420538, 1002278, 1, 1, 0, 2000), +(12546, 9420538, 1072179, 1, 1, 0, 2000), +(12547, 9420538, 1072163, 1, 1, 0, 2000), +(12548, 9420538, 1072155, 1, 1, 0, 2000), +(12549, 9420538, 1040109, 1, 1, 0, 2000), +(12550, 9420538, 1041106, 1, 1, 0, 2000), +(12551, 9420538, 1060098, 1, 1, 0, 2000), +(12552, 9420538, 1072312, 1, 1, 0, 2000), +(12553, 9420538, 1482010, 1, 1, 0, 2000), +(12554, 9420538, 1492010, 1, 1, 0, 2000), +(12555, 9420539, 4000477, 1, 1, 0, 300000), +(12556, 9420539, 401000, 1, 1, 0, 300), +(12557, 9420539, 4010002, 1, 1, 0, 300), +(12558, 9420539, 4020005, 1, 1, 0, 300), +(12559, 9420539, 4004004, 1, 1, 0, 5000), +(12560, 9420539, 400006, 1, 1, 0, 333333), +(12561, 9420539, 400009, 1, 1, 0, 333333), +(12562, 9420539, 2002008, 1, 1, 0, 333333), +(12563, 9420539, 2070005, 1, 1, 0, 500), +(12564, 9420539, 4006001, 1, 1, 0, 5000), +(12565, 9420539, 4006000, 1, 1, 0, 5000), +(12566, 9420539, 2040514, 1, 1, 0, 1000), +(12567, 9420539, 2040802, 1, 1, 0, 1000), +(12568, 9420539, 2044601, 1, 1, 0, 1000), +(12569, 9420539, 1412009, 1, 1, 0, 1800), +(12570, 9420539, 1402033, 1, 1, 0, 1800), +(12571, 9420539, 1382028, 1, 1, 0, 1800), +(12572, 9420539, 1102035, 1, 1, 0, 2000), +(12573, 9420539, 1102031, 1, 1, 0, 2000), +(12574, 9420539, 1082116, 1, 1, 0, 2000), +(12575, 9420539, 1082108, 1, 1, 0, 2000), +(12576, 9420539, 1082099, 1, 1, 0, 2000), +(12577, 9420539, 1002284, 1, 1, 0, 2000), +(12578, 9420539, 1050074, 1, 1, 0, 1800), +(12579, 9420539, 1050083, 1, 1, 0, 1800), +(12580, 9420539, 1050078, 1, 1, 0, 1800), +(12581, 9420540, 4000478, 1, 1, 0, 300000), +(12582, 9420540, 4010003, 1, 1, 0, 300), +(12583, 9420540, 4010006, 1, 1, 0, 300), +(12584, 9420540, 404000, 1, 1, 0, 300), +(12585, 9420540, 4004000, 1, 1, 0, 5000), +(12586, 9420540, 400005, 1, 1, 0, 333333), +(12587, 9420540, 400011, 1, 1, 0, 333333), +(12588, 9420540, 2002006, 1, 1, 0, 10000), +(12589, 9420540, 2070012, 1, 1, 0, 20000), +(12590, 9420540, 4006001, 1, 1, 0, 5000), +(12591, 9420540, 2022003, 1, 1, 0, 40000), +(12592, 9420540, 2041014, 1, 1, 0, 1000), +(12593, 9420540, 2040804, 1, 1, 0, 500), +(12594, 9420540, 2040613, 1, 1, 0, 1000), +(12595, 9420540, 1452017, 1, 1, 0, 1500), +(12596, 9420540, 1472031, 1, 1, 0, 1300), +(12597, 9420540, 1002329, 1, 1, 0, 2000), +(12598, 9420540, 1002366, 1, 1, 0, 2000), +(12599, 9420540, 1002405, 1, 1, 0, 2000), +(12600, 9420540, 1050095, 1, 1, 0, 1800), +(12601, 9420540, 1051097, 1, 1, 0, 1800), +(12602, 9420540, 1072198, 1, 1, 0, 2000), +(12603, 9420540, 1072209, 1, 1, 0, 2000), +(12604, 9420540, 1082134, 1, 1, 0, 2000), +(12605, 9420540, 2330005, 1, 1, 0, 500), +(12606, 9420540, 2290120, 1, 1, 0, 2000), +(12607, 9420544, 1032031, 1, 1, 0, 3000), +(12608, 9420544, 4001241, 1, 1, 0, 300000), +(12609, 9420544, 2020013, 1, 1, 0, 333333), +(12610, 9420544, 2020014, 1, 1, 0, 100000), +(12611, 9420544, 1302056, 1, 1, 0, 3000), +(12612, 9420544, 1312030, 1, 1, 0, 3000), +(12613, 9420544, 1322045, 1, 1, 0, 3000), +(12614, 9420544, 1332051, 1, 1, 0, 25000), +(12615, 9420544, 1332052, 1, 1, 0, 25000), +(12616, 9420544, 1372010, 1, 1, 0, 3000), +(12617, 9420544, 1382035, 1, 1, 0, 3000), +(12618, 9420544, 1402035, 1, 1, 0, 3000), +(12619, 9420544, 1422027, 1, 1, 0, 3000), +(12620, 9420544, 1412021, 1, 1, 0, 3000), +(12621, 9420544, 1432030, 1, 1, 0, 25000), +(12622, 9420544, 1452020, 1, 1, 0, 25000), +(12623, 9420544, 1462015, 1, 1, 0, 25000), +(12624, 9420544, 1462016, 1, 1, 0, 25000), +(12625, 9420544, 1472053, 1, 1, 0, 13000), +(12626, 9420544, 1452019, 1, 1, 0, 25000), +(12627, 9420544, 1442044, 1, 1, 0, 3000), +(12628, 9420544, 1492012, 1, 1, 0, 333333), +(12629, 9420544, 1482012, 1, 1, 0, 333333), +(12630, 9420544, 2043001, 1, 1, 0, 1000), +(12631, 9420544, 2043101, 1, 1, 0, 1000), +(12632, 9420544, 2043201, 1, 1, 0, 1000), +(12633, 9420544, 2043301, 1, 1, 0, 1000), +(12634, 9420544, 2043701, 1, 1, 0, 1000), +(12635, 9420544, 2043801, 1, 1, 0, 1000), +(12636, 9420544, 2044001, 1, 1, 0, 1000), +(12637, 9420544, 2044101, 1, 1, 0, 1000), +(12638, 9420544, 2044301, 1, 1, 0, 1000), +(12639, 9420544, 2044201, 1, 1, 0, 1000), +(12640, 9420544, 2044401, 1, 1, 0, 1000), +(12641, 9420544, 2044501, 1, 1, 0, 1000), +(12642, 9420544, 2044601, 1, 1, 0, 1000), +(12643, 9420544, 2044701, 1, 1, 0, 1000), +(12644, 9420544, 2040804, 1, 1, 0, 500), +(12645, 9420544, 2040001, 1, 1, 0, 1000), +(12646, 9420544, 2040004, 1, 1, 0, 1000), +(12647, 9420544, 2040301, 1, 1, 0, 1000), +(12648, 9420544, 2040401, 1, 1, 0, 1000), +(12649, 9420544, 2040501, 1, 1, 0, 1000), +(12650, 9420544, 2040504, 1, 1, 0, 1000), +(12651, 9420544, 2040516, 1, 1, 0, 1000), +(12652, 9420544, 2040513, 1, 1, 0, 1000), +(12653, 9420544, 2040601, 1, 1, 0, 1000), +(12654, 9420544, 2040701, 1, 1, 0, 1000), +(12655, 9420544, 2040704, 1, 1, 0, 1000), +(12656, 9420544, 2040707, 1, 1, 0, 1000), +(12657, 9420544, 2040801, 1, 1, 0, 1000), +(12658, 9420544, 2040901, 1, 1, 0, 1000), +(12659, 9420544, 2290098, 1, 1, 0, 4000), +(12660, 9420544, 2290015, 1, 1, 0, 4000), +(12661, 9420544, 2290027, 1, 1, 0, 4000), +(12662, 9420544, 2290089, 1, 1, 0, 4000), +(12663, 9420544, 2290054, 1, 1, 0, 4000), +(12664, 9420544, 2290119, 1, 1, 0, 4000), +(12665, 9420544, 2290002, 1, 1, 0, 4000), +(12666, 9420544, 2290022, 1, 1, 0, 4000), +(12667, 9420544, 2290034, 1, 1, 0, 4000), +(12668, 9420544, 2290105, 1, 1, 0, 4000), +(12669, 9420544, 2290110, 1, 1, 0, 4000), +(12670, 9420544, 2290094, 1, 1, 0, 4000), +(12671, 9420544, 2290052, 1, 1, 0, 4000), +(12672, 9420544, 1002926, 1, 1, 0, 300000), +(12673, 9420544, 1002926, 1, 1, 0, 300000), +(12674, 9420544, 1002926, 1, 1, 0, 300000), +(12675, 9420544, 1002926, 1, 1, 0, 300000), +(12676, 9420544, 1002926, 1, 1, 0, 300000), +(12677, 9420549, 1032031, 1, 1, 0, 3000), +(12678, 9420549, 2043001, 1, 1, 0, 1000), +(12679, 9420549, 2020013, 1, 1, 0, 333333), +(12680, 9420549, 2020014, 1, 1, 0, 100000), +(12681, 9420549, 1302056, 1, 1, 0, 3000), +(12682, 9420549, 1312030, 1, 1, 0, 3000), +(12683, 9420549, 1322045, 1, 1, 0, 3000), +(12684, 9420549, 1332051, 1, 1, 0, 25000), +(12685, 9420549, 1332052, 1, 1, 0, 25000), +(12686, 9420549, 1372010, 1, 1, 0, 3000), +(12687, 9420549, 1382035, 1, 1, 0, 3000), +(12688, 9420549, 1402035, 1, 1, 0, 3000), +(12689, 9420549, 1422027, 1, 1, 0, 3000), +(12690, 9420549, 1412021, 1, 1, 0, 3000), +(12691, 9420549, 1432030, 1, 1, 0, 25000), +(12692, 9420549, 1452020, 1, 1, 0, 25000), +(12693, 9420549, 1462015, 1, 1, 0, 25000), +(12694, 9420549, 1462016, 1, 1, 0, 25000), +(12695, 9420549, 1472053, 1, 1, 0, 13000), +(12696, 9420549, 1452019, 1, 1, 0, 25000), +(12697, 9420549, 1442044, 1, 1, 0, 3000), +(12698, 9420549, 1492012, 1, 1, 0, 333333), +(12699, 9420549, 1482012, 1, 1, 0, 333333), +(12700, 9420549, 2043101, 1, 1, 0, 1000), +(12701, 9420549, 2043201, 1, 1, 0, 1000), +(12702, 9420549, 2043301, 1, 1, 0, 1000), +(12703, 9420549, 2043701, 1, 1, 0, 1000), +(12704, 9420549, 2043801, 1, 1, 0, 1000), +(12705, 9420549, 2044001, 1, 1, 0, 1000), +(12706, 9420549, 2044101, 1, 1, 0, 1000), +(12707, 9420549, 2044301, 1, 1, 0, 1000), +(12708, 9420549, 2044201, 1, 1, 0, 1000), +(12709, 9420549, 2044401, 1, 1, 0, 1000), +(12710, 9420549, 2044501, 1, 1, 0, 1000), +(12711, 9420549, 2044601, 1, 1, 0, 1000), +(12712, 9420549, 2044701, 1, 1, 0, 1000), +(12713, 9420549, 2040804, 1, 1, 0, 500), +(12714, 9420549, 2040001, 1, 1, 0, 1000), +(12715, 9420549, 2040004, 1, 1, 0, 1000), +(12716, 9420549, 2040301, 1, 1, 0, 1000), +(12717, 9420549, 2040401, 1, 1, 0, 1000), +(12718, 9420549, 2040501, 1, 1, 0, 1000), +(12719, 9420549, 2040504, 1, 1, 0, 1000), +(12720, 9420549, 2040516, 1, 1, 0, 1000), +(12721, 9420549, 2040513, 1, 1, 0, 1000), +(12722, 9420549, 2040601, 1, 1, 0, 1000), +(12723, 9420549, 2040701, 1, 1, 0, 1000), +(12724, 9420549, 2040704, 1, 1, 0, 1000), +(12725, 9420549, 2040707, 1, 1, 0, 1000), +(12726, 9420549, 2040801, 1, 1, 0, 1000), +(12727, 9420549, 2040901, 1, 1, 0, 1000), +(12728, 9420549, 2290098, 1, 1, 0, 4000), +(12729, 9420549, 2290015, 1, 1, 0, 4000), +(12730, 9420549, 2290027, 1, 1, 0, 4000), +(12731, 9420549, 2290089, 1, 1, 0, 4000), +(12732, 9420549, 2290054, 1, 1, 0, 4000), +(12733, 9420549, 2290119, 1, 1, 0, 4000), +(12734, 9420549, 2290002, 1, 1, 0, 4000), +(12735, 9420549, 2290022, 1, 1, 0, 4000), +(12736, 9420549, 2290034, 1, 1, 0, 4000), +(12737, 9420549, 2290105, 1, 1, 0, 4000), +(12738, 9420549, 2290110, 1, 1, 0, 4000), +(12739, 9420549, 2290094, 1, 1, 0, 4000), +(12740, 9420549, 2290052, 1, 1, 0, 4000), +(12741, 9420549, 4001242, 1, 1, 0, 300000), +(12742, 9420549, 1002927, 1, 1, 0, 300000), +(12743, 9420549, 1002927, 1, 1, 0, 300000), +(12744, 9420549, 1002927, 1, 1, 0, 300000), +(12745, 9420549, 1002927, 1, 1, 0, 300000), +(12746, 8140700, 2290126, 1, 1, 0, 1500), +(12747, 8500002, 2290126, 1, 1, 0, 40000), +(12748, 8150300, 2290127, 1, 1, 0, 1500), +(12749, 8220004, 2290127, 1, 1, 0, 15000), +(12750, 8180001, 2290128, 1, 1, 0, 15000), +(12751, 8150302, 2290128, 1, 1, 0, 1500), +(12752, 8200001, 2290129, 1, 1, 0, 1500), +(12753, 8500002, 2290129, 1, 1, 0, 40000), +(12754, 8180000, 2290130, 1, 1, 0, 15000), +(12755, 8190004, 2290130, 1, 1, 0, 1500), +(12756, 8200002, 2290131, 1, 1, 0, 1500), +(12757, 8220005, 2290131, 1, 1, 0, 15000), +(12758, 8800002, 2280015, 1, 1, 0, 50000), +(12759, 8220005, 2290136, 1, 1, 0, 15000), +(12760, 8200003, 2290136, 1, 1, 0, 1500), +(12761, 8200007, 2290136, 1, 1, 0, 1500), +(12762, 8810018, 2290137, 1, 1, 0, 45000), +(12763, 8200012, 2290137, 1, 1, 0, 1500), +(12764, 8800002, 2280016, 1, 1, 0, 45000), +(12765, 8220006, 2290138, 1, 1, 0, 15000), +(12766, 8200006, 2290138, 1, 1, 0, 1500), +(12767, 8200012, 2290139, 1, 1, 0, 1500), +(12768, 8810018, 2290139, 1, 1, 0, 45000), +(12769, 8800002, 2280014, 1, 1, 0, 45000), +(12770, 8200004, 2290134, 1, 1, 0, 1500), +(12771, 8220004, 2290134, 1, 1, 0, 15000), +(12772, 8220006, 2290135, 1, 1, 0, 15000), +(12773, 8150200, 2290135, 1, 1, 0, 1500), +(12774, 8800002, 2280013, 1, 1, 0, 45000), +(12775, 8140600, 2290132, 1, 1, 0, 1500), +(12776, 851000, 2290132, 1, 1, 0, 15000), +(12777, 8520000, 2290132, 1, 1, 0, 15000), +(12778, 8810018, 2290133, 1, 1, 0, 45000), +(12779, 8200008, 2290133, 1, 1, 0, 1500), +(12780, 6130200, 4031171, 1, 1, 7101, 100000), +(12781, 8141100, 4031171, 1, 1, 7101, 100000), +(12782, 8142000, 4031171, 1, 1, 7101, 100000), +(12783, 8143000, 4031171, 1, 1, 7101, 100000), +(12784, 8160000, 4031171, 1, 1, 7101, 100000), +(12785, 8170000, 4031171, 1, 1, 7101, 100000), +(12786, 9500127, 4031171, 1, 1, 7101, 100000), +(12787, 9500135, 4031171, 1, 1, 7101, 100000), +(12788, 9500136, 4031171, 1, 1, 7101, 100000), +(12789, 8141000, 4031171, 1, 1, 7101, 100000), +(12790, 8140300, 4031171, 1, 1, 7101, 100000), +(12791, 8140200, 4031171, 1, 1, 7101, 100000), +(12792, 6230300, 4031171, 1, 1, 7101, 100000), +(12793, 6230400, 4031171, 1, 1, 7101, 100000), +(12794, 6230500, 4031171, 1, 1, 7101, 100000), +(12795, 6300100, 4031171, 1, 1, 7101, 100000), +(12796, 6400100, 4031171, 1, 1, 7101, 100000), +(12797, 7130010, 4031171, 1, 1, 7101, 100000), +(12798, 7130300, 4031171, 1, 1, 7101, 100000), +(12799, 7140000, 4031171, 1, 1, 7101, 100000), +(12800, 9500137, 4031171, 1, 1, 7101, 100000); \ No newline at end of file diff --git a/sql/db_shopupdate.sql b/sql/db_shopupdate.sql new file mode 100644 index 0000000000..8e4713dd70 --- /dev/null +++ b/sql/db_shopupdate.sql @@ -0,0 +1,63 @@ +UPDATE shopitems SET itemid=1812005, price=1000 WHERE shopitemid=18; +UPDATE shopitems SET itemid=1812004, price=1000 WHERE shopitemid=19; +UPDATE shopitems SET itemid=2120000, price=100 WHERE shopitemid=20; +UPDATE shopitems SET itemid=1812000, price=1000 WHERE shopitemid=21; +UPDATE shopitems SET itemid=1812001, price=1000 WHERE shopitemid=22; +UPDATE shopitems SET itemid=2040025, price=500000 WHERE shopitemid=995032; +UPDATE shopitems SET itemid=2040029, price=500000 WHERE shopitemid=995033; +UPDATE shopitems SET itemid=2040301, price=400000 WHERE shopitemid=995034; +UPDATE shopitems SET itemid=2040317, price=400000 WHERE shopitemid=995035; +UPDATE shopitems SET itemid=2040321, price=400000 WHERE shopitemid=995036; +UPDATE shopitems SET itemid=2040413, price=400000 WHERE shopitemid=995037; +UPDATE shopitems SET itemid=2040418, price=400000 WHERE shopitemid=995038; +UPDATE shopitems SET itemid=2040501, price=250000 WHERE shopitemid=995039; +UPDATE shopitems SET itemid=2040513, price=250000 WHERE shopitemid=995040; +UPDATE shopitems SET itemid=2040516, price=250000 WHERE shopitemid=995041; +UPDATE shopitems SET itemid=2040532, price=250000 WHERE shopitemid=995042; +UPDATE shopitems SET itemid=2040613, price=400000 WHERE shopitemid=995043; +UPDATE shopitems SET itemid=2040701, price=450000 WHERE shopitemid=995044; +UPDATE shopitems SET itemid=2040704, price=450000 WHERE shopitemid=995045; +UPDATE shopitems SET itemid=2040804, price=550000 WHERE shopitemid=995046; +UPDATE shopitems SET itemid=2040914, price=300000 WHERE shopitemid=995047; +UPDATE shopitems SET itemid=2040919, price=300000 WHERE shopitemid=995048; +UPDATE shopitems SET itemid=2041013, price=300000 WHERE shopitemid=995049; +UPDATE shopitems SET itemid=2041016, price=300000 WHERE shopitemid=995050; +UPDATE shopitems SET itemid=2041019, price=300000 WHERE shopitemid=995051; +UPDATE shopitems SET itemid=2041022, price=300000 WHERE shopitemid=995052; +UPDATE shopitems SET itemid=2044901, price=520000 WHERE shopitemid=995053; +UPDATE shopitems SET itemid=2044701, price=520000 WHERE shopitemid=995054; +UPDATE shopitems SET itemid=2043001, price=520000 WHERE shopitemid=995055; +UPDATE shopitems SET itemid=2043801, price=520000 WHERE shopitemid=995056; +UPDATE shopitems SET itemid=2044601, price=520000 WHERE shopitemid=995057; +UPDATE shopitems SET itemid=2040727, price=10000 WHERE shopitemid=995058; +UPDATE shopitems SET itemid=2040807, price=1500000 WHERE shopitemid=995059; +UPDATE shopitems SET itemid=2040026, price=15000 WHERE shopitemid=995060; +UPDATE shopitems SET itemid=2040031, price=15000 WHERE shopitemid=995061; +UPDATE shopitems SET itemid=2040302, price=25000 WHERE shopitemid=995062; +UPDATE shopitems SET itemid=2040318, price=25000 WHERE shopitemid=995063; +UPDATE shopitems SET itemid=2040323, price=25000 WHERE shopitemid=995064; +UPDATE shopitems SET itemid=2040412, price=20000 WHERE shopitemid=995065; +UPDATE shopitems SET itemid=2040419, price=20000 WHERE shopitemid=995066; +UPDATE shopitems SET itemid=2040502, price=25000 WHERE shopitemid=995067; +UPDATE shopitems SET itemid=2040514, price=25000 WHERE shopitemid=995068; +UPDATE shopitems SET itemid=2040517, price=25000 WHERE shopitemid=995069; +UPDATE shopitems SET itemid=2040534, price=25000 WHERE shopitemid=995070; +UPDATE shopitems SET itemid=2040612, price=20000 WHERE shopitemid=995071; +UPDATE shopitems SET itemid=2040702, price=20000 WHERE shopitemid=995072; +UPDATE shopitems SET itemid=2040705, price=25000 WHERE shopitemid=995073; +UPDATE shopitems SET itemid=2040805, price=100000 WHERE shopitemid=995074; +UPDATE shopitems SET itemid=2040915, price=55000 WHERE shopitemid=995075; +UPDATE shopitems SET itemid=2040920, price=55000 WHERE shopitemid=995076; +UPDATE shopitems SET itemid=2041014, price=30000 WHERE shopitemid=995077; +UPDATE shopitems SET itemid=2041017, price=30000 WHERE shopitemid=995078; +UPDATE shopitems SET itemid=2041020, price=30000 WHERE shopitemid=995079; +UPDATE shopitems SET itemid=2041023, price=30000 WHERE shopitemid=995080; +UPDATE shopitems SET itemid=2044902, price=50000 WHERE shopitemid=995081; +UPDATE shopitems SET itemid=2044702, price=50000 WHERE shopitemid=995082; +UPDATE shopitems SET itemid=2043002, price=50000 WHERE shopitemid=995083; +UPDATE shopitems SET itemid=2043802, price=50000 WHERE shopitemid=995084; +UPDATE shopitems SET itemid=2044602, price=50000 WHERE shopitemid=995085; +UPDATE shopitems SET itemid=2070016, price=100000000 WHERE shopitemid=996196; +UPDATE shopitems SET itemid=2070018, price=175000000 WHERE shopitemid=996197; +UPDATE shopitems SET itemid=2030007, price=700000 WHERE shopitemid=994782; +UPDATE shopitems SET itemid=4001017, price=30000000 WHERE shopitemid=994783; \ No newline at end of file diff --git a/sql/errors.txt b/sql/errors.txt new file mode 100644 index 0000000000..76f8bd2c7c --- /dev/null +++ b/sql/errors.txt @@ -0,0 +1,602 @@ +Oblivion Monk Trainee : Dark Katinas (Male) +Star Pixie : Star Pixie Starpiece +Star Pixie : Blue White-Line Boots +Spirit Viking : Scroll for Knuckler for Accuracy 10% +Spirit Viking : Spirit Viking Card +Spirit Viking : Dark Battle Lord +Spirit Viking : Heaven Justice +Iron Boar : Maroon Jangoon Boots +Iron Boar : Gold Tail +Iron Boar : Justice Katara +Voodoo : Steel Pow +Green Hobi : Pin Hov Charm +Green Hobi : Blue Stud +Zombie Lupin : Equip Enhancement Scroll +Zombie Lupin : Gold Mask +Reinforced Mithril Mutae : Reinforced Mithril Mutae Card +Yeti : Gold Tail +Blue Kentaurus : Kentaurus Marrow +Blue Kentaurus : Infinity Wrath +Iruvata : Iruvata Card +Iruvata : Heaven Justice +Snowman : Red-Bean Soup +White Fang : White Fang Tail +White Fang : Blue Jangoon Boots +Green Cornian : Cornian Marrow +Green Cornian : [Mastery Book] Venom +Green Cornian : Red Katte (Female) +Dodo : Whale Helmet +Dodo : Scroll for Overall Armor for STR 60% +Dodo : [Mastery Book] Slash Storm 20 +Dodo : Dark Katte (Female) +Ultra Gray : Ultra Gray Card +Lorang : Lorang Claws +Lorang : Dark Piette Pants +Buffoon : Buffoon Grandpa Clock +Buffoon : Blue Battle Lord +Buffoon : Blue Stud +Buffoon : Infinity Wrath +Flaming Raccoon : Kinoko Ramen (Salt) +Red Kentaurus : Kentaurus Flame +Red Kentaurus : Scroll for Knuckler for Accuracy 60% +Red Kentaurus : Serpent Tongue +Red Kentaurus : Dragon Tail +Red Kentaurus : Heavenly Katara +Mighty Maple Eater : Fireman Axe +Tauromacis : Ascalon Katara +Tauromacis : Black Pirate Bandana +Krappy : Krappi Card +Roloduck : Blue Hunter Armor +Roloduck : Blue Hunter Pants +Crow : Fish Cake (Skewer) +Male Mannequin : Male Mannequin Fedora +Male Mannequin : Dark Scroll for Accessory for STR 70% +Male Mannequin : Male Mannequin Card +Male Mannequin : Majestic Katara +Leader B : Leader B Charm +Leader B : Kinoko Ramen (Roasted Pork) +Typhon : Dark Scroll for Cape for Weapon Def 70% +Leader A : Leader A Shades +Leader A : Dark Scroll for Cape for Magic Def 70% +Leader A : Serpent Tongue +Soul Teddy : Scroll for Pole Arm for Accuracy 10% +Soul Teddy : Steel Pow +Soul Teddy : Heavenly Katara +Beetle : Beetle Horn +Beetle : Equip Enhancement Scroll +Beetle : Ascalon Katara +Froscola : Blue Battle Lord +White Yeti and King Pepe : Scroll for Pole Arm for Accuracy 10% +White Yeti and King Pepe : King Pepe Scroll for One-handed BW Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Dagger Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Two-handed Sword Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Two-handed Axe Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Two-handed BW Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Spear Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Polearm Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Wand Magic Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Staff Magic Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Bow Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Crossbow Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Thief Attacks 60% +White Yeti and King Pepe : King Pepe Scroll for Knuckle Attacks 60% +Harp : Harp Tail Feather +Harp : Scroll for Knuckler for Accuracy 100% +Harp : Heavenly Katara +Harp : Infinity Wrath +Lucida : Green Pirate Bottom +Lucida : Brown Stud +Lucida : Brown Stud Pants +Jr. Grupin : Equip Enhancement Scroll +Iron Hog : Iron Hog Metal Hoof +Sophilia Doll : Fireman Axe +Sophilia Doll : Maroon Jangoon Boots +Tiru : Tiru Feather +Female Mannequin : Female Mannequin Wig +Female Mannequin : Dark Scroll for Accessory for STR 70% +Female Mannequin : Female Mannequin Card +Female Mannequin : Majestic Katara +Poison Golem Level 3 : Poison Golem Card +Malady : Malady Experimental Frog +Malady : Potential Scroll +Malady : Steel Pow +Vikerola : Dark Battle Lord +Wooden Target Dummy : Wooden Target Dummy Card +Wooden Target Dummy : Brown Stud +Wooden Target Dummy : Brown Stud Pants +Cynical Orange Mushroom : Basic Archer Glove +Extra A : Littleman A Badge +Extra A : Gold Snowboard +Extra B : Littleman B Name Plate +Extra B : Fairy Honey +Extra B : Brown Jangoon Boots +Hodori : Majestic Katara +Extra C : Littleman C Necklace +Extra D : Cat Eye +Extra D : Gold Snowboard +Extra D : Serpent Tongue +King Sage Cat : Scroll for Pole Arm for Accuracy 10% +King Sage Cat : Heaven Justice +King Sage Cat : Dragon Tail +King Sage Cat : Infinity Wrath +Homunscullo : Homunsculer Sand +Homunscullo : Homunsculer Blood +D. Roy : D. Roy Card +Nospeed : Arwen Glass Shoes +Ribbon Pig : Pig Ribbon +Ribbon Pig : Champion Katara +Grim Phantom Watch : [Storybook] Black Book +Grim Phantom Watch : Grim Phantom Watch Card +Qualm Guardian : Blue Katte (Female) +Qualm Guardian : Blue Katina Boots +Yeti Doll : Justice Katara +King Bloctopus : Green White-Line Boots +Bigfoot : Bigfoot Toe +Green King Goblin : Black Pirate Bandana +Dreamy Ghost : Kinoko Ramen (Roasted Pork) +MT-09 : MT-09 Fuel +Gryphon : Duck Tube [1] +Gryphon : Serpent Tongue +Risell Squid : Dark Pirate Bottom +Dark Axe Stump : Stump Teardrop +Blue Wyvern : Equip Enhancement Scroll +Nest Golem : Blue Katinas (Male) +Cheap Amplifier : Dark Scroll for Accessory for STR 70% +Cheap Amplifier : Cheap Amplifier Card +Manon : Manon Tail +Manon : Manon Cry +Saitie : Parwen Entry Pass +Saitie : Red Battle Lord +Drumming Bunny : Shoes Production Manual +Drumming Bunny : Scroll for Pole Arm for Accuracy 10% +Drumming Bunny : Gold Snowboard +Drumming Bunny : Lion Fang +Dyle : Scroll for Knuckler for Accuracy 60% +Crimson Tree : Crimson Wood +Crimson Tree : Crimson Wood +Blue Flower Serpent : Blue Flower Serpent Card +Blue Flower Serpent : Scroll for Pole Arm for Accuracy 100% +Blue Flower Serpent : Cat Eye +Spirit of Rock : Spirit of Rock Music Score +Spirit of Rock : Dark Scroll for Accessory for STR 70% +Spirit of Rock : Rock Spirit Card +Prototype Lord : Prototype Lord Card +Seruf : Lion Fang +Seruf : Serpent Tongue +Dark Wyvern : Blue Katina Boots +Mateon : Mateon Tentacle +Mateon : Equip Enhancement Scroll +Mateon : Dark Pennance +Mateon : Gold Pendant +Mr. Anchor : [Storybook] Black Book +Master Robo : Lion Fang +Master Robo : Brown Jangoon Boots +Master Robo : Gold Wings +Ginseng Jar : Ginseng Jar Card +Scuba Pepe : Equip Enhancement Scroll +Ghost Pirate : Blue Battle Lord +Ghost Pirate : Green Pirate Bottom +Ghost Pirate : Heavenly Katara +Leatty : Green White-Line Boots +Tiv : Tiv Feather +Gold Yeti and King Pepe : King Pepe Scroll for One-handed BW Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Dagger Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Two-handed Sword Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Two-handed Axe Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Two-handed BW Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Spear Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Polearm Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Wand Magic Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Staff Magic Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Bow Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Claw Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Crossbow Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Thief Attacks 60% +Gold Yeti and King Pepe : King Pepe Scroll for Knuckle Attacks 60% +Gold Yeti and King Pepe : Maroon Jangoon Boots +Slime : Champion Katara +Rodeo : Brown Stud +Rodeo : Brown Stud Pants +Octopus : Champion Katara +Luster Pixie : Luster Pixie Sunpiece +Luster Pixie : Luster Pixie Card +Nightshadow : Heaven Justice +Nightshadow : Infinity Wrath +Dual Beetle : Dual Beetle Horn +Skeleton Soldier : Skeleton Soldier Card +Master Death Teddy : Green Battle Lord +Master Death Teddy : Bloodsoaked Katara +Sakura Cellion : Maroon Jangoon Boots +Pig : Pig Head +Fire Boar : Fire Boar Tooth +Fire Boar : Arwen Glass Shoes +Fire Boar : Fire Boar Card +Panda Teddy : Maroon Jangoon Boots +Morphed Blin : Serpent Tongue +Morphed Blin : Steel Pow +Lunar Pixie : Lunar Pixie Moonpiece +Lunar Pixie : Gold Wings +Curse Eye : "Blackbull" deed to the land +Curse Eye : Gold Snowboard +Jr. Cellion : Cat Eye +Barnard Gray : Barnard Gray Card +Faust : Lupin Banana +Faust : Lion Fang +Faust : Serpent Tongue +Gatekeeper : Gate Keeper Card +Gatekeeper : Red Battle Lord +Griffey : [Mastery Book] Flame Wheel 20 +Griffey : Meteor Katara +Shark : Heaven Justice +Deep Buffoon : Deep Buffoon Rock Piece +Deep Buffoon : Blue Stud +Deep Buffoon : Blazing Dragon Katara +Melon Bubble Tea : Melon Bubble Tea Card +Melon Bubble Tea : Maroon Jangoon Boots +Tino : Tino Feather +Bone Fish : Equip Enhancement Scroll +Bone Fish : Potential Scroll +I.AM.ROBOT : Lion Fang +I.AM.ROBOT : Serpent Tongue +Lilynouch : Knight Mask +Lilynouch : [Mastery Book] Dragon Breath +Dark Pepe : Serpent Coil +Dark Pepe : Serpent Coil +Toy Trojan : Toy Soldier Sword +Toy Trojan : Justice Katara +Sparker : Scroll for Knuckler for Accuracy 100% +Sparker : Justice Katara +Dark Drake : Dark Drake Horn +Electrophant : Serpent Tongue +Electrophant : Lion Fang +Tick-Tock : Tick-Tock Egg +Mecateon : Mecateon Laser Gun +Mecateon : Majestic Katara +Helmet Pepe : King Pepe Scroll for Polearm Attacks 60% +Helmet Pepe : King Pepe Scroll for Wand Magic Attacks 60% +Blue Mushroom : Thermal Fabric +Blue Mushroom : Purple Jewelry Shoes +Ratz : One-Handed Mace Forging Manual +Snow Witch : Ice Tears +Flyeye : Flyeye Wing +Flyeye : Flyeye Card +Headless Horseman : Devil Sunrise +Royal Guard : Royal Guard Card +Royal Guard : Scroll for Knuckler for Accuracy 10% +Royal Guard : Heaven Justice +Royal Guard : Dark Battle Lord +Triple Rumo : Blue Jangoon Boots +Triple Rumo : Brown Jangoon Boots +Pianus : Miniature Pianus +Pianus : Pianus Scream +Pianus : Scroll for Overall Armor for STR 60% +Pianus : [Mastery Book] Blaze 20 +Pianus : Blue Katte (Female) +Pianus : Blue Katinas (Male) +Rombot : Rombot Memory Card +Rombot : Serpent Tongue +Roid : Potential Scroll +Roid : Equip Enhancement Scroll +Robby : Robby Electronic Induction Device +Robby : Robby Card +Robby : Blue Stud +Blue Snail : Grey/Brown Training Shirt +Blue Snail : Grey/Brown Training Pants +Afterlord : Afterlord Card +Afterlord : Scroll for Overall Armor for STR 60% +Afterlord : Heaven Gate +Afterlord : Bloodsoaked Katara +Block Golem : Block Golem Card +Lyka : Guardian Horn +Lyka : Dark Katinas (Male) +Jr. Wraith : Equip Enhancement Scroll +Jr. Wraith : Potential Scroll +Sentinel : Fireman Axe +Ice Drake : Blue Battle Lord +Ice Drake : Gold Mask +Overlord A : Overlord A Card +Overlord B : Overlord B Card +Latest Hits Compilation : Dark Scroll for Accessory for STR 70% +Latest Hits Compilation : Latest Hits Compilation Card +Water Goblin : Serpent Coil +Water Goblin : Serpent Coil +Retz : Retz Card +Retz : Cat Eye +Retz : Blue Jangoon Boots +Hoodoo : Steel Pow +Pink Bean : Pink Bean Card +Pink Bean : [Mastery Book] Maple Warrior 30 +Paper Lantern Ghost : Fish Cake (Skewer) +Paper Lantern Ghost : Cat Eye +Cold Shark : Frozen Shark Fin +Cold Eye : Icicles +Croco : Potential Scroll +Croco : Gold Pendant +Croco : Majestic Katara +Bubble Fish : Bubble Fish Thoughts +Officer Skeleton : Serpent Coil +Officer Skeleton : Serpent Coil +Murumuru : Murumuru Furball +Zeno : Black Pirate Bandana +Panda : Ascalon Katara +Panda : Black Pirate Bandana +Iron Mutae : Iron Mutae Card +Snail : Red Mini Skirt +Hankie : Hankie Panfluit +Hankie : Heaven Justice +Silver Slime : Silver Slime Card +Silver Slime : Beige Elf Shoes +Zeta Gray : Zeta Gray Card +Zeta Gray : Dark Piette Pants +Zombie Mushroom : The Charm of the Undead +Zombie Mushroom : Hunter Bow +Zombie Mushroom : Guardian Katara +Pepe : Majestic Katara +Grupin : Icicles +Grupin : Equip Enhancement Scroll +Hobi : Hov Shorts +Yabber Doo : Beige Elf Shoes +Royal Cactus : Dark Hunter Armor +Royal Cactus : Dark Hunter Pants +Dual Ghost Pirate : Dual Pirate Propeller +Dual Ghost Pirate : Infinity Wrath +Memory Monk Trainee : [Mastery Book] Venom 30 +Memory Monk Trainee : Devil Sunrise +Coolie Zombie : Zombie Lost Tooth +Coolie Zombie : [Storybook] Black Book +Coolie Zombie : Brown Stud +Coolie Zombie : Brown Stud Pants +Blood Harp : Blood Harp Crown +Blood Harp : Heavenly Katara +Black Kentaurus : Kentaurus Skull +Black Kentaurus : Gold Arund +Black Kentaurus : Blazing Dragon Katara +Rash : Rash Furball +Rash : Anasthetic Powder +Imperial Guard : Imperial Guard Card +The Book Ghost : The Book Ghost Sheet of Paper +The Book Ghost : Blue Jangoon Boots +Drake : Drake Meat +Drake : Drake Blood +Oblivion Guardian : [Mastery Book] Blessing of the Onyx 30 +Zakum3 : [Skill Book] Advanced Combo +Zakum3 : [Mastery Book] Smoke Bomb +Zakum3 : [Mastery Book] Sanctuary +Zakum3 : [Mastery Book] Venom +Zakum3 : [Mastery Book] Crossbow Expert +Zakum3 : Zakum Helmet (1) +Zakum3 : Devil Sunrise +Zakum3 : Zakum Tree Branch +Jr. Newtie : Equip Enhancement Scroll +Jr. Newtie : Devil Sunrise +Jr. Newtie : Red Katte (Female) +Jr. Pepe : Jr. Pepe Fish +Miner Zombie : Zombie Lost Tooth +Miner Zombie : Zombie Lost Gold Tooth +Miner Zombie : Minor Zombie Card +Miner Zombie : Ascalon Katara +Aufheben : Aufheben Time Sand +Aufheben : Aufheben Card +Eye of Time : Scroll for Overall Armor for STR 60% +Eye of Time : Scroll for Knuckler for Accuracy 60% +Eye of Time : Heaven Gate +Psycho Jack : Fireman Axe +Psycho Jack : Red Hunter Armor +Psycho Jack : Red Hunter Pants +Psycho Jack : Red White-Line Boots +Death Teddy : Blazing Dragon Katara +Bain : Bain Spiky Collar +Bain : Gold Arund +Dark Nependeath : Equip Enhancement Scroll +Dark Nependeath : Dark Piette Pants +Timu : Timu Feather +Mano : Rainbow Colored Snail Shell +Dark Stone Golem : Dark Stone Golem Card +Scorpion : Cat Eye Stone +King Clang : Lorang Claws +King Clang : Clang Claws +Nependeath : Nependeath Honey +Phantom Watch : Dragon Tail +Phantom Watch : Dark Pirate Bottom +Reinforced Iron Mutae : Reinforced Iron Mutae Card +Master Chronos : Brown Jangoon Boots +Crimson Balrog the Kidnapper : [Skill Book] Dragon Breath +Lazy Buffy : Heavenly Katara +Red Slime : Kinoko Ramen (Salt) +Evil Eye : Cat Eye +Maverick Type D : Maverick Type D Card +Maverick Type D : Green Battle Lord +Maverick Type A : Maverick Type A Card +Maverick Type A : Infinity Wrath +Klock : Heavenly Katara +Tiguru : Tiguru Feather +Tortie : Lion Fang +Shade : Someone Hat +Dunas : Dunas Time Sand +Dunas : Dunas Card +Timer : Scroll for Knuckler for Accuracy 60% +Timer : Serpent Coil +Timer : Serpent Coil +Maverick Type S : Maverick Type S Card +Poison Poopa : Poison Poopa Poisonous Spikes +Poison Poopa : Blue White-Line Boots +Murupia : Murupia Furball +Chief Gray : Chief Gray Sign +Chief Gray : Chief Gray Card +Chief Gray : Dark Pennance +Skelosaurus : Meteor Katara +Oberon : Oberon Time Sand +Oberon : Oberon Card +Mr. Alli : Mr. Alli Leather +Mr. Alli : Lion Fang +Cellion : Maroon Jangoon Boots +Qualm Monk Trainee : [Mastery Book] Blessing of the Onyx 20 +Chronos : Chronos Egg +Kiyo : Kiyo Beak +Cherry Bubble Tea : Cherry Bubble Tea Card +Cherry Bubble Tea : Maroon Jangoon Boots +Pink Teddy : Teddy Yellow Ribbon +Pink Teddy : White/Purple Gift Box +Rexton : [Mastery Book] Spirit Claw +Master of Disguise : The Lost Treasure [1] +Master of Disguise : The Lost Treasure [2] +Master of Disguise : The Lost Treasure [3] +Master of Disguise : The Lost Treasure [4] +Master of Disguise : The Lost Treasure [5] +Neo Huroid : Gold Mask +Jr. Pepe Doll : Guardian Katara +Dual Birk : Dual Birk Tiny Tail +Muru : Muru Furball +Grey Yeti and King Pepe : King Pepe Scroll for One-handed BW Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Dagger Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Two-handed Sword Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Two-handed Axe Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Two-handed BW Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Spear Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Polearm Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Bow Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Crossbow Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Wand Magic Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Staff Magic Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Thief Attacks 60% +Grey Yeti and King Pepe : King Pepe Scroll for Knuckle Attacks 60% +Wild Kargo : Gold Wings +Bubbling : Bubbling Large Bubble +Bubbling : Blue Jewelry Shoes +Bubbling : Champion Katara +Papulatus : [Mastery Book] High Mastery 30 +Papulatus : Red Katte (Female) +Papulatus : Red Katinas (Male) +Plateon : Plateon Helmet +Plateon : Serpent Tongue +Nightghost : Ghost Headband +Nightghost : Serpent Coil +Nightghost : Serpent Coil +Mango Bubble Tea : Mango Bubble Tea Card +Mango Bubble Tea : Maroon Jangoon Boots +Homunculus : Homunculus Card +Homunculus : Green Pirate Bottom +Homunculus : Brown Stud +Homunculus : Brown Stud Pants +Orange Mushroom : Hunter Bow +Orange Mushroom : Basic Archer Glove +Scarf Plead : Worn-Out Muffler +Scarf Plead : Green Hunter Armor +Scarf Plead : Green Hunter Pants +Female Boss : Lady Boss Comb +Female Boss : Devil Sunrise +Hogul : Hogul Card +Memory Guardian : Meteor Katara +Poison Mushroom : King Pepe Scroll for Two-handed Sword Attacks 60% +Poison Mushroom : King Pepe Scroll for Two-handed Axe Attacks 60% +Poison Mushroom : Justice Katara +Homun : Gold Pendant +Homun : Ascalon Katara +Greatest Oldies : Dark Scroll for Accessory for STR 70% +Greatest Oldies : Greatest Oldies Card +Kid Mannequin : Kid Mannequin Bunny Suit +Kid Mannequin : Dark Scroll for Accessory for STR 70% +Kid Mannequin : Kid Mannequin Card +Kid Mannequin : Justice Katara +Dark Rash : Dark Rash Furball +Cerebes : Beige Elf Shoes +Grizzly : Equip Enhancement Scroll +Lioner : Gold Tail +Lioner : Majestic Katara +Red Wyvern : Equip Enhancement Scroll +Gigantic Spirit Viking : Gigantic Spirit Viking Card +Gigantic Spirit Viking : Heaven Gate +Gigantic Spirit Viking : Red Battle Lord +Gigantic Spirit Viking : Beige Elf Shoes +Hector : Blue Jangoon Boots +Hector : Serpent Coil +Hector : Serpent Coil +Crimson Balrog : [Storybook] Crimson Balrog Proposal +Memory Monk : [Mastery Book] High Mastery 30 +Lupin : Lupin Banana +Tae Roon : Mind And Heart Medicine +Birk : Birk Chewed Grass +Birk : Dark Battle Lord +Birk : Blazing Dragon Katara +Clang : Clang Claws +Clang : Lion Fang +Straw Target Dummy : Straw Target Dummy Card +Royal Guard Pepe : King Pepe Scroll for Crossbow Attacks 60% +Royal Guard Pepe : King Pepe Scroll for Thief Attacks 60% +Royal Guard Pepe : King Pepe Scroll for Knuckle Attacks 60% +Blue King Goblin : Blue Stud +Nightmare : Blue Jangoon Boots +Renegade Spores : King Pepe Scroll for One-handed BW Attacks 60% +Renegade Spores : King Pepe Scroll for Dagger Attacks 60% +Renegade Spores : Potential Scroll +Prime Minister : King Pepe Scroll for One-handed BW Attacks 60% +Prime Minister : King Pepe Scroll for Dagger Attacks 60% +Prime Minister : King Pepe Scroll for Two-handed Sword Attacks 60% +Prime Minister : King Pepe Scroll for Two-handed Axe Attacks 60% +Prime Minister : King Pepe Scroll for Two-handed BW Attacks 60% +Prime Minister : King Pepe Scroll for Spear Attacks 60% +Prime Minister : King Pepe Scroll for Polearm Attacks 60% +Prime Minister : King Pepe Scroll for Wand Magic Attacks 60% +Prime Minister : King Pepe Scroll for Staff Magic Attacks 60% +Prime Minister : King Pepe Scroll for Bow Attacks 60% +Prime Minister : King Pepe Scroll for Crossbow Attacks 60% +Prime Minister : King Pepe Scroll for Thief Attacks 60% +Prime Minister : King Pepe Scroll for Knuckle Attacks 60% +Prime Minister : Lion Fang +Prime Minister : Serpent Tongue +Prime Minister : Justice Katara +Prime Minister : Guardian Katara +Ear Plug Plead : Ear Muffs +Oly Oly : Somebody Tire +Samiho : Samiho Card +Charmer : Charmer Flute +Murupa : Murupa Furball +Murukun : Murukun Furball +Bob : Bob Snail Shell +Horny Mushroom : Guardian Katara +Brown Teddy : Teddy Cotton +Brown Teddy : Equip Enhancement Scroll +Brown Teddy : Guardian Katara +Thanatos : Thanatos' Strap +Thanatos : [Storybook] Black Book +Thanatos : Dark Battle Lord +Mummydog : Mummydog Card +Dark Cornian : Devil Sunrise +Dark Cornian : Red Katinas (Male) +Intoxicated Pig : King Pepe Scroll for Two-handed BW Attacks 60% +Intoxicated Pig : King Pepe Scroll for Spear Attacks 60% +Red Flower Serpent : Red Flower Serpent Card +Red Flower Serpent : Gold Mask +Propelly : Lion Fang +Propelly : Fireman Axe +Propelly : Dark Pennance +Platoon Chronos : Equip Enhancement Scroll +Platoon Chronos : Serpent Tongue +Chirppy : Fireman Axe +Chirppy : Red Hunter Armor +Chirppy : Red White-Line Boots +Planey : Brown Jangoon Boots +Zombie Mushmom : Zombie Mushmom Card +Dark Leatty : Black Guise +Dark Leatty : Green White-Line Boots +Ligator : Equip Enhancement Scroll +Male Boss : Boss Pomade +Cloud Fox : Sushi (Salmon) +Cloud Fox : Fish Cake (Skewer) +Cloud Fox : Cat Eye +Bodyguard B : Bodyguard B Bullet Shell +Baby Typhon : Dark Scroll for Cape for Weapon Def 70% +Bodyguard A : Bodyguard A Tie Pin +Ergoth : Ergoth Jawbone +Annoyed Zombie Mushroom : The Charm of the Undead +Annoyed Zombie Mushroom : Hunter Bow +Cico : Seahorse Horn +Robo : Blue Jangoon Boots +Wraith : Cat Eye +Wraith : Gold Pendant +Red Drake : Dark Piette Pants +Killa Bee : Cat Eye +Skeledog : Skeledog Bone +Skeledog : Maroon Jangoon Boots +Windraider : Scroll for Gloves for DEX 15% +Tutorial Muru : Tutorial Muru Furball diff --git a/sql/original/DEPRECATED-dropupdate.sql b/sql/original/DEPRECATED-dropupdate.sql new file mode 100644 index 0000000000..510f959eb9 --- /dev/null +++ b/sql/original/DEPRECATED-dropupdate.sql @@ -0,0 +1,15 @@ +#OBS.: este sql só deverá ser utilizado se for descoberto falhas de listagem de dados em +#AMBOS O SPIDER E OS DROPS ORIGINAIS!!! + +UPDATE drop_data SET chance=10000 WHERE (itemid >= 2380000 AND itemid < 2390000) AND (chance= 1000); + +INSERT INTO `drop_data` (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(120100, 2380002, 1, 1, 0, 10000), +(4230116, 2382042, 1, 1, 0, 10000), +(4230117, 2382055, 1, 1, 0, 10000), +(2230101, 4032399, 1, 1, 2251, 10000), +(100100, 4001352, 1, 1, 28205, 7000), +(100101, 4001352, 1, 1, 28205, 7000), +(120100, 4001352, 1, 1, 28205, 7000), +(130101, 4001352, 1, 1, 28205, 7000), +(1210100, 4001352, 1, 1, 28205, 7000); \ No newline at end of file diff --git a/sql/original/db_drops - Copy.sql b/sql/original/db_drops - Copy.sql new file mode 100644 index 0000000000..48aed39815 --- /dev/null +++ b/sql/original/db_drops - Copy.sql @@ -0,0 +1,18764 @@ + -- drop the temporary table if exists + Drop table if exists temp_data; + + CREATE TABLE IF NOT EXISTS temp_data ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `dropperid` int(11) NOT NULL, + `itemid` int(11) NOT NULL DEFAULT '0', + `minimum_quantity` int(11) NOT NULL DEFAULT '1', + `maximum_quantity` int(11) NOT NULL DEFAULT '1', + `questid` int(11) NOT NULL DEFAULT '0', + `chance` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `mobid` (`dropperid`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; + + INSERT INTO temp_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES + #-- copy+paste inside here as many drop data as possible from the spider (drop generator) -- + +(100100, 4000019, 1, 1, 0, 200000), +(100100, 2000000, 1, 1, 0, 40000), +(100100, 2040002, 1, 1, 0, 750), +(100100, 2041045, 1, 1, 0, 750), +(100100, 2041043, 1, 1, 0, 750), +(100100, 2380000, 1, 1, 0, 0), +(100100, 4020000, 1, 1, 0, 7000), +(100100, 4010000, 1, 1, 0, 7000), +(100100, 1002067, 1, 1, 0, 700), +(100100, 1302000, 1, 1, 0, 700), +(100100, 1040002, 1, 1, 0, 700), +(100100, 1052095, 1, 1, 0, 700), +(100120, 4003004, 1, 1, 0, 7000), +(100120, 2010000, 1, 1, 0, 3000), +(100120, 2061000, 10, 50, 0, 10000), +(100120, 2060000, 10, 50, 0, 10000), +(100120, 4020000, 1, 1, 0, 7000), +(100130, 2380015, 1, 1, 0, 0), +(100130, 2010000, 1, 1, 0, 3000), +(100130, 2010009, 1, 1, 0, 3000), +(100130, 2040003, 1, 1, 0, 750), +(100130, 4010005, 1, 1, 0, 7000), +(100130, 4020005, 1, 1, 0, 7000), +(100130, 1002008, 1, 1, 0, 700), +(100130, 1040010, 1, 1, 0, 700), +(100130, 1041004, 1, 1, 0, 700), +(100130, 1060007, 1, 1, 0, 700), +(100101, 4000000, 1, 1, 0, 200000), +(9300217, 4000000, 1, 1, 0, 200000), +(100101, 4030012, 1, 1, 0, 10000), +(9300217, 4030012, 1, 1, 0, 10000), +(100101, 2000000, 1, 1, 0, 40000), +(9300217, 2000000, 1, 1, 0, 40000), +(100101, 2041006, 1, 1, 0, 750), +(9300217, 2041006, 1, 1, 0, 750), +(100101, 2041043, 1, 1, 0, 750), +(9300217, 2041043, 1, 1, 0, 750), +(100101, 2380001, 1, 1, 0, 0), +(9300217, 2380001, 1, 1, 0, 0), +(100101, 4020004, 1, 1, 0, 7000), +(9300217, 4020004, 1, 1, 0, 7000), +(100101, 4010001, 1, 1, 0, 7000), +(9300217, 4010001, 1, 1, 0, 7000), +(100101, 4020001, 1, 1, 0, 7000), +(9300217, 4020001, 1, 1, 0, 7000), +(100101, 4010004, 1, 1, 0, 7000), +(9300217, 4010004, 1, 1, 0, 7000), +(100101, 1040006, 1, 1, 0, 700), +(9300217, 1040006, 1, 1, 0, 700), +(100101, 1060004, 1, 1, 0, 700), +(9300217, 1060004, 1, 1, 0, 700), +(100101, 1040013, 1, 1, 0, 700), +(9300217, 1040013, 1, 1, 0, 700), +(100101, 1041012, 1, 1, 0, 700), +(9300217, 1041012, 1, 1, 0, 700), +(120100, 4000011, 1, 1, 0, 200000), +(120100, 2000000, 1, 1, 0, 40000), +(120100, 2041007, 1, 1, 0, 750), +(120100, 2380002, 1, 1, 0, 0), +(120100, 4010002, 1, 1, 0, 7000), +(120100, 4020002, 1, 1, 0, 7000), +(120100, 1062000, 1, 1, 0, 700), +(120100, 1312004, 1, 1, 0, 700), +(120100, 1060007, 1, 1, 0, 700), +(120100, 1332006, 1, 1, 0, 700), +(120100, 1061009, 1, 1, 0, 700), +(120100, 1332006, 1, 1, 0, 700), +(100121, 4003004, 1, 1, 0, 7000), +(100121, 2000000, 1, 1, 0, 40000), +(100121, 2060000, 10, 50, 0, 10000), +(100131, 2380016, 1, 1, 0, 0), +(100131, 2000000, 1, 1, 0, 40000), +(100131, 2010009, 1, 1, 0, 3000), +(100131, 2040400, 1, 1, 0, 750), +(100131, 2040619, 1, 1, 0, 750), +(100131, 4010006, 1, 1, 0, 7000), +(100131, 4020006, 1, 1, 0, 7000), +(100131, 1002019, 1, 1, 0, 700), +(100131, 1040013, 1, 1, 0, 700), +(100131, 1041012, 1, 1, 0, 700), +(100131, 1060004, 1, 1, 0, 700), +(100131, 1072005, 1, 1, 0, 700), +(100131, 1002002, 1, 1, 0, 700), +(130100, 4000003, 1, 1, 0, 200000), +(9300219, 4000003, 1, 1, 0, 200000), +(130100, 4030009, 1, 1, 0, 10000), +(9300219, 4030009, 1, 1, 0, 10000), +(130100, 4001358, 1, 1, 0, 7000), +(9300219, 4001358, 1, 1, 0, 7000), +(130100, 2000000, 1, 1, 0, 40000), +(9300219, 2000000, 1, 1, 0, 40000), +(130100, 2040402, 1, 1, 0, 750), +(9300219, 2040402, 1, 1, 0, 750), +(130100, 2041008, 1, 1, 0, 750), +(9300219, 2041008, 1, 1, 0, 750), +(130100, 2380003, 1, 1, 0, 0), +(9300219, 2380003, 1, 1, 0, 0), +(130100, 4010003, 1, 1, 0, 7000), +(9300219, 4010003, 1, 1, 0, 7000), +(130100, 4020003, 1, 1, 0, 7000), +(9300219, 4020003, 1, 1, 0, 7000), +(130100, 1041002, 1, 1, 0, 700), +(9300219, 1041002, 1, 1, 0, 700), +(130100, 1322005, 1, 1, 0, 700), +(9300219, 1322005, 1, 1, 0, 700), +(130100, 1072008, 1, 1, 0, 700), +(9300219, 1072008, 1, 1, 0, 700), +(130100, 1082003, 1, 1, 0, 700), +(9300219, 1082003, 1, 1, 0, 700), +(130100, 1072007, 1, 1, 0, 700), +(9300219, 1072007, 1, 1, 0, 700), +(130100, 1452003, 1, 1, 0, 700), +(9300219, 1452003, 1, 1, 0, 700), +(130100, 1332000, 1, 1, 0, 700), +(9300219, 1332000, 1, 1, 0, 700), +(130100, 1492000, 1, 1, 0, 700), +(9300219, 1492000, 1, 1, 0, 700), +(130100, 1482001, 1, 1, 0, 700), +(9300219, 1482001, 1, 1, 0, 700), +(130101, 4000016, 1, 1, 0, 200000), +(9300218, 4000016, 1, 1, 0, 200000), +(130101, 4001359, 1, 1, 0, 7000), +(9300218, 4001359, 1, 1, 0, 7000), +(130101, 2000000, 1, 1, 0, 40000), +(9300218, 2000000, 1, 1, 0, 40000), +(130101, 2040502, 1, 1, 0, 750), +(9300218, 2040502, 1, 1, 0, 750), +(130101, 2041009, 1, 1, 0, 750), +(9300218, 2041009, 1, 1, 0, 750), +(130101, 2380004, 1, 1, 0, 0), +(9300218, 2380004, 1, 1, 0, 0), +(130101, 4020004, 1, 1, 0, 7000), +(9300218, 4020004, 1, 1, 0, 7000), +(130101, 4010004, 1, 1, 0, 7000), +(9300218, 4010004, 1, 1, 0, 7000), +(130101, 1302000, 1, 1, 0, 700), +(9300218, 1302000, 1, 1, 0, 700), +(130101, 1322007, 1, 1, 0, 700), +(9300218, 1322007, 1, 1, 0, 700), +(130101, 1372002, 1, 1, 0, 700), +(9300218, 1372002, 1, 1, 0, 700), +(130101, 1032003, 1, 1, 0, 700), +(9300218, 1032003, 1, 1, 0, 700), +(130101, 1072005, 1, 1, 0, 700), +(9300218, 1072005, 1, 1, 0, 700), +(130101, 1041006, 1, 1, 0, 700), +(9300218, 1041006, 1, 1, 0, 700), +(130101, 1402001, 1, 1, 0, 700), +(9300218, 1402001, 1, 1, 0, 700), +(130101, 1372002, 1, 1, 0, 700), +(9300218, 1372002, 1, 1, 0, 700), +(130101, 1402001, 1, 1, 0, 700), +(9300218, 1402001, 1, 1, 0, 700), +(130101, 1072060, 1, 1, 0, 700), +(9300218, 1072060, 1, 1, 0, 700), +(130101, 1082029, 1, 1, 0, 700), +(9300218, 1082029, 1, 1, 0, 700), +(130101, 1060022, 1, 1, 0, 700), +(9300218, 1060022, 1, 1, 0, 700), +(130101, 1402001, 1, 1, 0, 700), +(9300218, 1402001, 1, 1, 0, 700), +(130101, 1052095, 1, 1, 0, 700), +(9300218, 1052095, 1, 1, 0, 700), +(100122, 4003004, 1, 1, 0, 7000), +(100122, 2000000, 1, 1, 0, 40000), +(100122, 4020002, 1, 1, 0, 7000), +(100122, 4010002, 1, 1, 0, 7000), +(100122, 1452002, 1, 1, 0, 700), +(100132, 4010000, 1, 1, 0, 7000), +(100132, 4020007, 1, 1, 0, 7000), +(100132, 2380017, 1, 1, 0, 0), +(100132, 2000000, 1, 1, 0, 40000), +(100132, 2010009, 1, 1, 0, 3000), +(100132, 2040823, 1, 1, 0, 750), +(100132, 2041018, 1, 1, 0, 750), +(100132, 1002001, 1, 1, 0, 700), +(100132, 1040014, 1, 1, 0, 700), +(100132, 1072004, 1, 1, 0, 700), +(100132, 1002003, 1, 1, 0, 700), +(100132, 1040015, 1, 1, 0, 700), +(100132, 1060008, 1, 1, 0, 700), +(100132, 1041014, 1, 1, 0, 700), +(100132, 1061014, 1, 1, 0, 700), +(100132, 1082003, 1, 1, 0, 700), +(100132, 1442000, 1, 1, 0, 700), +(100132, 1442000, 1, 1, 0, 700), +(100132, 1442000, 1, 1, 0, 700), +(210100, 4000004, 1, 1, 0, 200000), +(9300223, 4000004, 1, 1, 0, 200000), +(9500100, 4000004, 1, 1, 0, 200000), +(210100, 4000010, 1, 1, 0, 200000), +(9300223, 4000010, 1, 1, 0, 200000), +(9500100, 4000010, 1, 1, 0, 200000), +(210100, 4030000, 1, 1, 0, 10000), +(9300223, 4030000, 1, 1, 0, 10000), +(9500100, 4030000, 1, 1, 0, 10000), +(210100, 2000000, 1, 1, 0, 40000), +(9300223, 2000000, 1, 1, 0, 40000), +(9500100, 2000000, 1, 1, 0, 40000), +(210100, 2040602, 1, 1, 0, 750), +(9300223, 2040602, 1, 1, 0, 750), +(9500100, 2040602, 1, 1, 0, 750), +(210100, 2040600, 1, 1, 0, 750), +(9300223, 2040600, 1, 1, 0, 750), +(9500100, 2040600, 1, 1, 0, 750), +(210100, 2040505, 1, 1, 0, 750), +(9300223, 2040505, 1, 1, 0, 750), +(9500100, 2040505, 1, 1, 0, 750), +(210100, 2041018, 1, 1, 0, 750), +(9300223, 2041018, 1, 1, 0, 750), +(9500100, 2041018, 1, 1, 0, 750), +(210100, 2041043, 1, 1, 0, 750), +(9300223, 2041043, 1, 1, 0, 750), +(9500100, 2041043, 1, 1, 0, 750), +(210100, 2380005, 1, 1, 0, 0), +(9300223, 2380005, 1, 1, 0, 0), +(9500100, 2380005, 1, 1, 0, 0), +(210100, 4020005, 1, 1, 0, 7000), +(9300223, 4020005, 1, 1, 0, 7000), +(9500100, 4020005, 1, 1, 0, 7000), +(210100, 4010005, 1, 1, 0, 7000), +(9300223, 4010005, 1, 1, 0, 7000), +(9500100, 4010005, 1, 1, 0, 7000), +(210100, 1002019, 1, 1, 0, 700), +(9300223, 1002019, 1, 1, 0, 700), +(9500100, 1002019, 1, 1, 0, 700), +(210100, 1060002, 1, 1, 0, 700), +(9300223, 1060002, 1, 1, 0, 700), +(9500100, 1060002, 1, 1, 0, 700), +(210100, 1322007, 1, 1, 0, 700), +(9300223, 1322007, 1, 1, 0, 700), +(9500100, 1322007, 1, 1, 0, 700), +(210100, 1072008, 1, 1, 0, 700), +(9300223, 1072008, 1, 1, 0, 700), +(9500100, 1072008, 1, 1, 0, 700), +(210100, 1442029, 1, 1, 0, 700), +(9300223, 1442029, 1, 1, 0, 700), +(9500100, 1442029, 1, 1, 0, 700), +(210100, 1412001, 1, 1, 0, 700), +(9300223, 1412001, 1, 1, 0, 700), +(9500100, 1412001, 1, 1, 0, 700), +(210100, 1412002, 1, 1, 0, 700), +(9300223, 1412002, 1, 1, 0, 700), +(9500100, 1412002, 1, 1, 0, 700), +(210100, 1432001, 1, 1, 0, 700), +(9300223, 1432001, 1, 1, 0, 700), +(9500100, 1432001, 1, 1, 0, 700), +(210100, 1432000, 1, 1, 0, 700), +(9300223, 1432000, 1, 1, 0, 700), +(9500100, 1432000, 1, 1, 0, 700), +(210100, 1082019, 1, 1, 0, 700), +(9300223, 1082019, 1, 1, 0, 700), +(9500100, 1082019, 1, 1, 0, 700), +(210100, 1072023, 1, 1, 0, 700), +(9300223, 1072023, 1, 1, 0, 700), +(9500100, 1072023, 1, 1, 0, 700), +(210100, 1412001, 1, 1, 0, 700), +(9300223, 1412001, 1, 1, 0, 700), +(9500100, 1412001, 1, 1, 0, 700), +(210100, 1432001, 1, 1, 0, 700), +(9300223, 1432001, 1, 1, 0, 700), +(9500100, 1432001, 1, 1, 0, 700), +(210100, 1412001, 1, 1, 0, 700), +(9300223, 1412001, 1, 1, 0, 700), +(9500100, 1412001, 1, 1, 0, 700), +(210100, 1432001, 1, 1, 0, 700), +(9300223, 1432001, 1, 1, 0, 700), +(9500100, 1432001, 1, 1, 0, 700), +(210100, 1482000, 1, 1, 0, 700), +(9300223, 1482000, 1, 1, 0, 700), +(9500100, 1482000, 1, 1, 0, 700), +(1210100, 4000021, 1, 1, 0, 200000), +(9300058, 4000021, 1, 1, 0, 200000), +(9300155, 4000021, 1, 1, 0, 200000), +(9400241, 4000021, 1, 1, 0, 200000), +(9500101, 4000021, 1, 1, 0, 200000), +(1210100, 4032130, 1, 1, 0, 10000), +(9300058, 4032130, 1, 1, 0, 10000), +(9300155, 4032130, 1, 1, 0, 10000), +(9400241, 4032130, 1, 1, 0, 10000), +(9500101, 4032130, 1, 1, 0, 10000), +(1210100, 2000000, 1, 1, 0, 40000), +(9300058, 2000000, 1, 1, 0, 40000), +(9300155, 2000000, 1, 1, 0, 40000), +(9400241, 2000000, 1, 1, 0, 40000), +(9500101, 2000000, 1, 1, 0, 40000), +(1210100, 2040702, 1, 1, 0, 750), +(9300058, 2040702, 1, 1, 0, 750), +(9300155, 2040702, 1, 1, 0, 750), +(9400241, 2040702, 1, 1, 0, 750), +(9500101, 2040702, 1, 1, 0, 750), +(1210100, 2041021, 1, 1, 0, 750), +(9300058, 2041021, 1, 1, 0, 750), +(9300155, 2041021, 1, 1, 0, 750), +(9400241, 2041021, 1, 1, 0, 750), +(9500101, 2041021, 1, 1, 0, 750), +(1210100, 4030011, 1, 1, 0, 10000), +(9300058, 4030011, 1, 1, 0, 10000), +(9300155, 4030011, 1, 1, 0, 10000), +(9400241, 4030011, 1, 1, 0, 10000), +(9500101, 4030011, 1, 1, 0, 10000), +(1210100, 4030012, 1, 1, 0, 10000), +(9300058, 4030012, 1, 1, 0, 10000), +(9300155, 4030012, 1, 1, 0, 10000), +(9400241, 4030012, 1, 1, 0, 10000), +(9500101, 4030012, 1, 1, 0, 10000), +(1210100, 2380006, 1, 1, 0, 0), +(9300058, 2380006, 1, 1, 0, 0), +(9300155, 2380006, 1, 1, 0, 0), +(9400241, 2380006, 1, 1, 0, 0), +(9500101, 2380006, 1, 1, 0, 0), +(1210100, 4010006, 1, 1, 0, 7000), +(9300058, 4010006, 1, 1, 0, 7000), +(9300155, 4010006, 1, 1, 0, 7000), +(9400241, 4010006, 1, 1, 0, 7000), +(9500101, 4010006, 1, 1, 0, 7000), +(1210100, 4020006, 1, 1, 0, 7000), +(9300058, 4020006, 1, 1, 0, 7000), +(9300155, 4020006, 1, 1, 0, 7000), +(9400241, 4020006, 1, 1, 0, 7000), +(9500101, 4020006, 1, 1, 0, 7000), +(1210100, 1041012, 1, 1, 0, 700), +(9300058, 1041012, 1, 1, 0, 700), +(9300155, 1041012, 1, 1, 0, 700), +(9400241, 1041012, 1, 1, 0, 700), +(9500101, 1041012, 1, 1, 0, 700), +(1210100, 1002008, 1, 1, 0, 700), +(9300058, 1002008, 1, 1, 0, 700), +(9300155, 1002008, 1, 1, 0, 700), +(9400241, 1002008, 1, 1, 0, 700), +(9500101, 1002008, 1, 1, 0, 700), +(1210100, 1402018, 1, 1, 0, 700), +(9300058, 1402018, 1, 1, 0, 700), +(9300155, 1402018, 1, 1, 0, 700), +(9400241, 1402018, 1, 1, 0, 700), +(9500101, 1402018, 1, 1, 0, 700), +(1210100, 1422000, 1, 1, 0, 700), +(9300058, 1422000, 1, 1, 0, 700), +(9300155, 1422000, 1, 1, 0, 700), +(9400241, 1422000, 1, 1, 0, 700), +(9500101, 1422000, 1, 1, 0, 700), +(1210100, 1041014, 1, 1, 0, 700), +(9300058, 1041014, 1, 1, 0, 700), +(9300155, 1041014, 1, 1, 0, 700), +(9400241, 1041014, 1, 1, 0, 700), +(9500101, 1041014, 1, 1, 0, 700), +(1210100, 1422000, 1, 1, 0, 700), +(9300058, 1422000, 1, 1, 0, 700), +(9300155, 1422000, 1, 1, 0, 700), +(9400241, 1422000, 1, 1, 0, 700), +(9500101, 1422000, 1, 1, 0, 700), +(1210100, 1062002, 1, 1, 0, 700), +(9300058, 1062002, 1, 1, 0, 700), +(9300155, 1062002, 1, 1, 0, 700), +(9400241, 1062002, 1, 1, 0, 700), +(9500101, 1062002, 1, 1, 0, 700), +(1210100, 1422000, 1, 1, 0, 700), +(9300058, 1422000, 1, 1, 0, 700), +(9300155, 1422000, 1, 1, 0, 700), +(9400241, 1422000, 1, 1, 0, 700), +(9500101, 1422000, 1, 1, 0, 700), +(1210100, 1040034, 1, 1, 0, 700), +(9300058, 1040034, 1, 1, 0, 700), +(9300155, 1040034, 1, 1, 0, 700), +(9400241, 1040034, 1, 1, 0, 700), +(9500101, 1040034, 1, 1, 0, 700), +(1210100, 1472000, 1, 1, 0, 700), +(9300058, 1472000, 1, 1, 0, 700), +(9300155, 1472000, 1, 1, 0, 700), +(9400241, 1472000, 1, 1, 0, 700), +(9500101, 1472000, 1, 1, 0, 700), +(1210100, 1002610, 1, 1, 0, 700), +(9300058, 1002610, 1, 1, 0, 700), +(9300155, 1002610, 1, 1, 0, 700), +(9400241, 1002610, 1, 1, 0, 700), +(9500101, 1002610, 1, 1, 0, 700), +(100123, 4003004, 1, 1, 0, 7000), +(100123, 2000000, 1, 1, 0, 40000), +(100123, 2061000, 10, 50, 0, 10000), +(100123, 4010003, 1, 1, 0, 7000), +(100133, 2380018, 1, 1, 0, 0), +(100133, 2000000, 1, 1, 0, 40000), +(100133, 2010009, 1, 1, 0, 3000), +(100133, 2048000, 1, 1, 0, 750), +(100133, 2041045, 1, 1, 0, 750), +(100133, 4010001, 1, 1, 0, 7000), +(100133, 4020003, 1, 1, 0, 7000), +(100133, 1002041, 1, 1, 0, 700), +(100133, 1032001, 1, 1, 0, 700), +(100133, 1002007, 1, 1, 0, 700), +(100133, 1040038, 1, 1, 0, 700), +(100133, 1060028, 1, 1, 0, 700), +(100133, 1041064, 1, 1, 0, 700), +(100133, 1061023, 1, 1, 0, 700), +(100133, 1072009, 1, 1, 0, 700), +(100133, 1082000, 1, 1, 0, 700), +(100133, 1442006, 1, 1, 0, 700), +(1210102, 4000001, 1, 1, 0, 200000), +(9300229, 4000001, 1, 1, 0, 200000), +(9500102, 4000001, 1, 1, 0, 200000), +(1210102, 4030001, 1, 1, 0, 10000), +(9300229, 4030001, 1, 1, 0, 10000), +(9500102, 4030001, 1, 1, 0, 10000), +(1210102, 4001345, 1, 1, 0, 7000), +(9300229, 4001345, 1, 1, 0, 7000), +(9500102, 4001345, 1, 1, 0, 7000), +(1210102, 2000000, 1, 1, 0, 40000), +(9300229, 2000000, 1, 1, 0, 40000), +(9500102, 2000000, 1, 1, 0, 40000), +(1210102, 2040705, 1, 1, 0, 750), +(9300229, 2040705, 1, 1, 0, 750), +(9500102, 2040705, 1, 1, 0, 750), +(1210102, 2040001, 1, 1, 0, 750), +(9300229, 2040001, 1, 1, 0, 750), +(9500102, 2040001, 1, 1, 0, 750), +(1210102, 2041009, 1, 1, 0, 750), +(9300229, 2041009, 1, 1, 0, 750), +(9500102, 2041009, 1, 1, 0, 750), +(1210102, 2330000, 1, 1, 0, 400), +(9300229, 2330000, 1, 1, 0, 400), +(9500102, 2330000, 1, 1, 0, 400), +(1210102, 2380007, 1, 1, 0, 0), +(9300229, 2380007, 1, 1, 0, 0), +(9500102, 2380007, 1, 1, 0, 0), +(1210102, 4010000, 1, 1, 0, 7000), +(9300229, 4010000, 1, 1, 0, 7000), +(9500102, 4010000, 1, 1, 0, 7000), +(1210102, 4020007, 1, 1, 0, 7000), +(9300229, 4020007, 1, 1, 0, 7000), +(9500102, 4020007, 1, 1, 0, 7000), +(1210102, 1312000, 1, 1, 0, 700), +(9300229, 1312000, 1, 1, 0, 700), +(9500102, 1312000, 1, 1, 0, 700), +(1210102, 1072004, 1, 1, 0, 700), +(9300229, 1072004, 1, 1, 0, 700), +(9500102, 1072004, 1, 1, 0, 700), +(1210102, 1432000, 1, 1, 0, 700), +(9300229, 1432000, 1, 1, 0, 700), +(9500102, 1432000, 1, 1, 0, 700), +(1210102, 1002043, 1, 1, 0, 700), +(9300229, 1002043, 1, 1, 0, 700), +(9500102, 1002043, 1, 1, 0, 700), +(1210102, 1432000, 1, 1, 0, 700), +(9300229, 1432000, 1, 1, 0, 700), +(9500102, 1432000, 1, 1, 0, 700), +(1210102, 1072015, 1, 1, 0, 700), +(9300229, 1072015, 1, 1, 0, 700), +(9500102, 1072015, 1, 1, 0, 700), +(1210102, 1432000, 1, 1, 0, 700), +(9300229, 1432000, 1, 1, 0, 700), +(9500102, 1432000, 1, 1, 0, 700), +(1210102, 1072031, 1, 1, 0, 700), +(9300229, 1072031, 1, 1, 0, 700), +(9500102, 1072031, 1, 1, 0, 700), +(1210102, 1052095, 1, 1, 0, 700), +(9300229, 1052095, 1, 1, 0, 700), +(9500102, 1052095, 1, 1, 0, 700), +(9300274, 4000001, 1, 1, 0, 200000), +(9300274, 4030001, 1, 1, 0, 10000), +(9300274, 2000000, 1, 1, 0, 40000), +(9300274, 2060000, 10, 50, 0, 10000), +(9300274, 2061000, 10, 50, 0, 10000), +(9300274, 2040705, 1, 1, 0, 750), +(9300274, 2330000, 1, 1, 0, 400), +(9300274, 2380013, 1, 1, 0, 0), +(9300274, 4010000, 1, 1, 0, 7000), +(9300274, 4020007, 1, 1, 0, 7000), +(9300274, 1312000, 1, 1, 0, 700), +(9300274, 1072004, 1, 1, 0, 700), +(9300274, 1432000, 1, 1, 0, 700), +(9300274, 1002043, 1, 1, 0, 700), +(9300274, 1432000, 1, 1, 0, 700), +(9300274, 1432000, 1, 1, 0, 700), +(9300274, 1072031, 1, 1, 0, 700), +(9300274, 1052095, 1, 1, 0, 700), +(100124, 4003004, 1, 1, 0, 7000), +(100124, 2010009, 1, 1, 0, 3000), +(100124, 2000000, 1, 1, 0, 40000), +(100124, 2060000, 10, 50, 0, 10000), +(100124, 2061000, 10, 50, 0, 10000), +(100124, 4010004, 1, 1, 0, 7000), +(100124, 4020004, 1, 1, 0, 7000), +(100134, 2380019, 1, 1, 0, 0), +(100134, 2000000, 1, 1, 0, 40000), +(100134, 2010009, 1, 1, 0, 3000), +(100134, 2040500, 1, 1, 0, 750), +(100134, 2044400, 1, 1, 0, 750), +(100134, 4010002, 1, 1, 0, 7000), +(100134, 4020002, 1, 1, 0, 7000), +(100134, 1002042, 1, 1, 0, 700), +(100134, 1032003, 1, 1, 0, 700), +(100134, 1002051, 1, 1, 0, 700), +(100134, 1040009, 1, 1, 0, 700), +(100134, 1060009, 1, 1, 0, 700), +(100134, 1051000, 1, 1, 0, 700), +(100134, 1072050, 1, 1, 0, 700), +(1210101, 4000021, 1, 1, 0, 200000), +(9300059, 4000021, 1, 1, 0, 200000), +(9400242, 4000021, 1, 1, 0, 200000), +(1210101, 4003004, 1, 1, 0, 7000), +(9300059, 4003004, 1, 1, 0, 7000), +(9400242, 4003004, 1, 1, 0, 7000), +(1210101, 4030012, 1, 1, 0, 10000), +(9300059, 4030012, 1, 1, 0, 10000), +(9400242, 4030012, 1, 1, 0, 10000), +(1210101, 4001343, 1, 1, 0, 7000), +(9300059, 4001343, 1, 1, 0, 7000), +(9400242, 4001343, 1, 1, 0, 7000), +(1210101, 4001342, 1, 1, 0, 7000), +(9300059, 4001342, 1, 1, 0, 7000), +(9400242, 4001342, 1, 1, 0, 7000), +(1210101, 2000000, 1, 1, 0, 40000), +(9300059, 2000000, 1, 1, 0, 40000), +(9400242, 2000000, 1, 1, 0, 40000), +(1210101, 2040902, 1, 1, 0, 750), +(9300059, 2040902, 1, 1, 0, 750), +(9400242, 2040902, 1, 1, 0, 750), +(1210101, 2380009, 1, 1, 0, 0), +(9300059, 2380009, 1, 1, 0, 0), +(9400242, 2380009, 1, 1, 0, 0), +(1210101, 4020001, 1, 1, 0, 7000), +(9300059, 4020001, 1, 1, 0, 7000), +(9400242, 4020001, 1, 1, 0, 7000), +(1210101, 4010002, 1, 1, 0, 7000), +(9300059, 4010002, 1, 1, 0, 7000), +(9400242, 4010002, 1, 1, 0, 7000), +(1210101, 1041012, 1, 1, 0, 700), +(9300059, 1041012, 1, 1, 0, 700), +(9400242, 1041012, 1, 1, 0, 700), +(1210101, 1032003, 1, 1, 0, 700), +(9300059, 1032003, 1, 1, 0, 700), +(9400242, 1032003, 1, 1, 0, 700), +(1210101, 1040014, 1, 1, 0, 700), +(9300059, 1040014, 1, 1, 0, 700), +(9400242, 1040014, 1, 1, 0, 700), +(1210101, 1061028, 1, 1, 0, 700), +(9300059, 1061028, 1, 1, 0, 700), +(9400242, 1061028, 1, 1, 0, 700), +(1210101, 1462014, 1, 1, 0, 700), +(9300059, 1462014, 1, 1, 0, 700), +(9400242, 1462014, 1, 1, 0, 700), +(1210101, 1040011, 1, 1, 0, 700), +(9300059, 1040011, 1, 1, 0, 700), +(9400242, 1040011, 1, 1, 0, 700), +(1210101, 1060024, 1, 1, 0, 700), +(9300059, 1060024, 1, 1, 0, 700), +(9400242, 1060024, 1, 1, 0, 700), +(1210101, 1492000, 1, 1, 0, 700), +(9300059, 1492000, 1, 1, 0, 700), +(9400242, 1492000, 1, 1, 0, 700), +(1210101, 1052098, 1, 1, 0, 700), +(9300059, 1052098, 1, 1, 0, 700), +(9400242, 1052098, 1, 1, 0, 700), +(1210101, 1072285, 1, 1, 0, 700), +(9300059, 1072285, 1, 1, 0, 700), +(9400242, 1072285, 1, 1, 0, 700), +(1110101, 1012031, 1, 1, 0, 700), +(1110101, 4030009, 1, 1, 0, 10000), +(1110101, 4001344, 1, 1, 0, 7000), +(1110101, 4001356, 1, 1, 0, 7000), +(1110101, 4001360, 1, 1, 0, 7000), +(1110101, 2000000, 1, 1, 0, 40000), +(1110101, 2040802, 1, 1, 0, 750), +(1110101, 2380008, 1, 1, 0, 0), +(1110101, 4010001, 1, 1, 0, 7000), +(1110101, 4020000, 1, 1, 0, 7000), +(1110101, 1092003, 1, 1, 0, 700), +(1110101, 1432012, 1, 1, 0, 700), +(1110101, 1442000, 1, 1, 0, 700), +(1110101, 1041018, 1, 1, 0, 700), +(1110101, 1061013, 1, 1, 0, 700), +(1110101, 1382000, 1, 1, 0, 700), +(1110101, 1041061, 1, 1, 0, 700), +(1110101, 1061057, 1, 1, 0, 700), +(1110101, 1442000, 1, 1, 0, 700), +(1110101, 1442000, 1, 1, 0, 700), +(1110101, 1482000, 1, 1, 0, 700), +(1110101, 1002613, 1, 1, 0, 700), +(1120100, 4000006, 1, 1, 0, 200000), +(9500104, 4000006, 1, 1, 0, 200000), +(1120100, 4030010, 1, 1, 0, 10000), +(9500104, 4030010, 1, 1, 0, 10000), +(1120100, 4030012, 1, 1, 0, 10000), +(9500104, 4030012, 1, 1, 0, 10000), +(1120100, 2000000, 1, 1, 0, 40000), +(9500104, 2000000, 1, 1, 0, 40000), +(1120100, 2000003, 1, 1, 0, 40000), +(9500104, 2000003, 1, 1, 0, 40000), +(1120100, 2043002, 1, 1, 0, 750), +(9500104, 2043002, 1, 1, 0, 750), +(1120100, 2380010, 1, 1, 0, 0), +(9500104, 2380010, 1, 1, 0, 0), +(1120100, 4010003, 1, 1, 0, 7000), +(9500104, 4010003, 1, 1, 0, 7000), +(1120100, 4020002, 1, 1, 0, 7000), +(9500104, 4020002, 1, 1, 0, 7000), +(1120100, 1442013, 1, 1, 0, 700), +(9500104, 1442013, 1, 1, 0, 700), +(1120100, 1032001, 1, 1, 0, 700), +(9500104, 1032001, 1, 1, 0, 700), +(1120100, 1412011, 1, 1, 0, 700), +(9500104, 1412011, 1, 1, 0, 700), +(1120100, 1040037, 1, 1, 0, 700), +(9500104, 1040037, 1, 1, 0, 700), +(1120100, 1060027, 1, 1, 0, 700), +(9500104, 1060027, 1, 1, 0, 700), +(1120100, 1092007, 1, 1, 0, 700), +(9500104, 1092007, 1, 1, 0, 700), +(1120100, 1092000, 1, 1, 0, 700), +(9500104, 1092000, 1, 1, 0, 700), +(1120100, 1061022, 1, 1, 0, 700), +(9500104, 1061022, 1, 1, 0, 700), +(1210103, 2000000, 1, 1, 0, 40000), +(9500103, 2000000, 1, 1, 0, 40000), +(1210103, 2000003, 1, 1, 0, 40000), +(9500103, 2000003, 1, 1, 0, 40000), +(1210103, 2043302, 1, 1, 0, 750), +(9500103, 2043302, 1, 1, 0, 750), +(1210103, 2048001, 1, 1, 0, 750), +(9500103, 2048001, 1, 1, 0, 750), +(1210103, 2048000, 1, 1, 0, 750), +(9500103, 2048000, 1, 1, 0, 750), +(1210103, 2041015, 1, 1, 0, 750), +(9500103, 2041015, 1, 1, 0, 750), +(1210103, 2041045, 1, 1, 0, 750), +(9500103, 2041045, 1, 1, 0, 750), +(1210103, 4006000, 1, 1, 0, 7000), +(9500103, 4006000, 1, 1, 0, 7000), +(1210103, 2330000, 1, 1, 0, 400), +(9500103, 2330000, 1, 1, 0, 400), +(1210103, 2380012, 1, 1, 0, 0), +(9500103, 2380012, 1, 1, 0, 0), +(1210103, 4020005, 1, 1, 0, 7000), +(9500103, 4020005, 1, 1, 0, 7000), +(1210103, 4010002, 1, 1, 0, 7000), +(9500103, 4010002, 1, 1, 0, 7000), +(1210103, 1092030, 1, 1, 0, 700), +(9500103, 1092030, 1, 1, 0, 700), +(1210103, 1432008, 1, 1, 0, 700), +(9500103, 1432008, 1, 1, 0, 700), +(1210103, 1322023, 1, 1, 0, 700), +(9500103, 1322023, 1, 1, 0, 700), +(1210103, 1442029, 1, 1, 0, 700), +(9500103, 1442029, 1, 1, 0, 700), +(1210103, 1402018, 1, 1, 0, 700), +(9500103, 1402018, 1, 1, 0, 700), +(1210103, 1412002, 1, 1, 0, 700), +(9500103, 1412002, 1, 1, 0, 700), +(1210103, 1432000, 1, 1, 0, 700), +(9500103, 1432000, 1, 1, 0, 700), +(1210103, 1002075, 1, 1, 0, 700), +(9500103, 1002075, 1, 1, 0, 700), +(1210103, 1432000, 1, 1, 0, 700), +(9500103, 1432000, 1, 1, 0, 700), +(1210103, 1041062, 1, 1, 0, 700), +(9500103, 1041062, 1, 1, 0, 700), +(1210103, 1061058, 1, 1, 0, 700), +(9500103, 1061058, 1, 1, 0, 700), +(1210103, 1040035, 1, 1, 0, 700), +(9500103, 1040035, 1, 1, 0, 700), +(1210103, 1060025, 1, 1, 0, 700), +(9500103, 1060025, 1, 1, 0, 700), +(1210103, 1432000, 1, 1, 0, 700), +(9500103, 1432000, 1, 1, 0, 700), +(1210103, 1082180, 1, 1, 0, 700), +(9500103, 1082180, 1, 1, 0, 700), +(1210103, 1492001, 1, 1, 0, 700), +(9500103, 1492001, 1, 1, 0, 700), +(1110100, 4000012, 1, 1, 0, 200000), +(9500105, 4000012, 1, 1, 0, 200000), +(9101000, 4000012, 1, 1, 0, 200000), +(1110100, 2000000, 1, 1, 0, 40000), +(9500105, 2000000, 1, 1, 0, 40000), +(9101000, 2000000, 1, 1, 0, 40000), +(1110100, 2000003, 1, 1, 0, 40000), +(9500105, 2000003, 1, 1, 0, 40000), +(9101000, 2000003, 1, 1, 0, 40000), +(1110100, 2043102, 1, 1, 0, 750), +(9500105, 2043102, 1, 1, 0, 750), +(9101000, 2043102, 1, 1, 0, 750), +(1110100, 2040902, 1, 1, 0, 750), +(9500105, 2040902, 1, 1, 0, 750), +(9101000, 2040902, 1, 1, 0, 750), +(1110100, 2041020, 1, 1, 0, 750), +(9500105, 2041020, 1, 1, 0, 750), +(9101000, 2041020, 1, 1, 0, 750), +(1110100, 2048001, 1, 1, 0, 750), +(9500105, 2048001, 1, 1, 0, 750), +(9101000, 2048001, 1, 1, 0, 750), +(1110100, 2048000, 1, 1, 0, 750), +(9500105, 2048000, 1, 1, 0, 750), +(9101000, 2048000, 1, 1, 0, 750), +(1110100, 2048003, 1, 1, 0, 750), +(9500105, 2048003, 1, 1, 0, 750), +(9101000, 2048003, 1, 1, 0, 750), +(1110100, 2044701, 1, 1, 0, 750), +(9500105, 2044701, 1, 1, 0, 750), +(9101000, 2044701, 1, 1, 0, 750), +(1110100, 2380011, 1, 1, 0, 0), +(9500105, 2380011, 1, 1, 0, 0), +(9101000, 2380011, 1, 1, 0, 0), +(1110100, 4020003, 1, 1, 0, 7000), +(9500105, 4020003, 1, 1, 0, 7000), +(9101000, 4020003, 1, 1, 0, 7000), +(1110100, 4010005, 1, 1, 0, 7000), +(9500105, 4010005, 1, 1, 0, 7000), +(9101000, 4010005, 1, 1, 0, 7000), +(1110100, 4010004, 1, 1, 0, 7000), +(9500105, 4010004, 1, 1, 0, 7000), +(9101000, 4010004, 1, 1, 0, 7000), +(1110100, 1302020, 1, 1, 0, 700), +(9500105, 1302020, 1, 1, 0, 700), +(9101000, 1302020, 1, 1, 0, 700), +(1110100, 1302030, 1, 1, 0, 700), +(9500105, 1302030, 1, 1, 0, 700), +(9101000, 1302030, 1, 1, 0, 700), +(1110100, 1092008, 1, 1, 0, 700), +(9500105, 1092008, 1, 1, 0, 700), +(9101000, 1092008, 1, 1, 0, 700), +(1110100, 1442013, 1, 1, 0, 700), +(9500105, 1442013, 1, 1, 0, 700), +(9101000, 1442013, 1, 1, 0, 700), +(1110100, 1412002, 1, 1, 0, 700), +(9500105, 1412002, 1, 1, 0, 700), +(9101000, 1412002, 1, 1, 0, 700), +(1110100, 1322000, 1, 1, 0, 700), +(9500105, 1322000, 1, 1, 0, 700), +(9101000, 1322000, 1, 1, 0, 700), +(1110100, 1432005, 1, 1, 0, 700), +(9500105, 1432005, 1, 1, 0, 700), +(9101000, 1432005, 1, 1, 0, 700), +(1110100, 1382012, 1, 1, 0, 700), +(9500105, 1382012, 1, 1, 0, 700), +(9101000, 1382012, 1, 1, 0, 700), +(1110100, 1041017, 1, 1, 0, 700), +(9500105, 1041017, 1, 1, 0, 700), +(9101000, 1041017, 1, 1, 0, 700), +(1110100, 1061012, 1, 1, 0, 700), +(9500105, 1061012, 1, 1, 0, 700), +(9101000, 1061012, 1, 1, 0, 700), +(1110100, 1041018, 1, 1, 0, 700), +(9500105, 1041018, 1, 1, 0, 700), +(9101000, 1041018, 1, 1, 0, 700), +(1110100, 1002143, 1, 1, 0, 700), +(9500105, 1002143, 1, 1, 0, 700), +(9101000, 1002143, 1, 1, 0, 700), +(1110100, 1462002, 1, 1, 0, 700), +(9500105, 1462002, 1, 1, 0, 700), +(9101000, 1462002, 1, 1, 0, 700), +(1110100, 1452003, 1, 1, 0, 700), +(9500105, 1452003, 1, 1, 0, 700), +(9101000, 1452003, 1, 1, 0, 700), +(1110100, 1452022, 1, 1, 0, 700), +(9500105, 1452022, 1, 1, 0, 700), +(9101000, 1452022, 1, 1, 0, 700), +(1110100, 1041063, 1, 1, 0, 700), +(9500105, 1041063, 1, 1, 0, 700), +(9101000, 1041063, 1, 1, 0, 700), +(1110100, 1061059, 1, 1, 0, 700), +(9500105, 1061059, 1, 1, 0, 700), +(9101000, 1061059, 1, 1, 0, 700), +(1110100, 1041044, 1, 1, 0, 700), +(9500105, 1041044, 1, 1, 0, 700), +(9101000, 1041044, 1, 1, 0, 700), +(1110100, 1061037, 1, 1, 0, 700), +(9500105, 1061037, 1, 1, 0, 700), +(9101000, 1061037, 1, 1, 0, 700), +(1110100, 1060031, 1, 1, 0, 700), +(9500105, 1060031, 1, 1, 0, 700), +(9101000, 1060031, 1, 1, 0, 700), +(1110100, 1072285, 1, 1, 0, 700), +(9500105, 1072285, 1, 1, 0, 700), +(9101000, 1072285, 1, 1, 0, 700), +(1110100, 1482001, 1, 1, 0, 700), +(9500105, 1482001, 1, 1, 0, 700), +(9101000, 1482001, 1, 1, 0, 700), +(1110130, 2380014, 1, 1, 0, 0), +(1110130, 2000000, 1, 1, 0, 40000), +(1110130, 2043109, 1, 1, 0, 750), +(1110130, 2000003, 1, 1, 0, 40000), +(1110130, 2060000, 10, 50, 0, 10000), +(1110130, 2061000, 10, 50, 0, 10000), +(1110130, 2048000, 1, 1, 0, 750), +(1110130, 2000001, 1, 1, 0, 40000), +(1110130, 4020002, 1, 1, 0, 7000), +(1110130, 4010004, 1, 1, 0, 7000), +(1110130, 4020003, 1, 1, 0, 7000), +(1110130, 1092008, 1, 1, 0, 700), +(1110130, 1002033, 1, 1, 0, 700), +(1110130, 1302007, 1, 1, 0, 700), +(1110130, 1032001, 1, 1, 0, 700), +(1110130, 1322000, 1, 1, 0, 700), +(1110130, 1432005, 1, 1, 0, 700), +(1110130, 1412002, 1, 1, 0, 700), +(1110130, 1322000, 1, 1, 0, 700), +(1110130, 1041017, 1, 1, 0, 700), +(1110130, 1061012, 1, 1, 0, 700), +(1110130, 1002143, 1, 1, 0, 700), +(1110130, 1462002, 1, 1, 0, 700), +(1110130, 1041063, 1, 1, 0, 700), +(1110130, 1061059, 1, 1, 0, 700), +(1110130, 1452003, 1, 1, 0, 700), +(1110130, 1002010, 1, 1, 0, 700), +(1110130, 1041044, 1, 1, 0, 700), +(1110130, 1061037, 1, 1, 0, 700), +(1110130, 1072285, 1, 1, 0, 700), +(1110130, 1482001, 1, 1, 0, 700), +(1130100, 4000018, 1, 1, 0, 200000), +(9300220, 4000018, 1, 1, 0, 200000), +(1130100, 2000000, 1, 1, 0, 40000), +(9300220, 2000000, 1, 1, 0, 40000), +(1130100, 2000003, 1, 1, 0, 40000), +(9300220, 2000003, 1, 1, 0, 40000), +(1130100, 2043202, 1, 1, 0, 750), +(9300220, 2043202, 1, 1, 0, 750), +(1130100, 2070009, 1, 1, 0, 400), +(9300220, 2070009, 1, 1, 0, 400), +(1130100, 2381000, 1, 1, 0, 20000), +(9300220, 2381000, 1, 1, 0, 20000), +(1130100, 4010005, 1, 1, 0, 7000), +(9300220, 4010005, 1, 1, 0, 7000), +(1130100, 4020004, 1, 1, 0, 7000), +(9300220, 4020004, 1, 1, 0, 7000), +(1130100, 1002097, 1, 1, 0, 700), +(9300220, 1002097, 1, 1, 0, 700), +(1130100, 1402009, 1, 1, 0, 700), +(9300220, 1402009, 1, 1, 0, 700), +(1130100, 1032003, 1, 1, 0, 700), +(9300220, 1032003, 1, 1, 0, 700), +(1130100, 1092007, 1, 1, 0, 700), +(9300220, 1092007, 1, 1, 0, 700), +(1130100, 1312016, 1, 1, 0, 700), +(9300220, 1312016, 1, 1, 0, 700), +(1130100, 1372001, 1, 1, 0, 700), +(9300220, 1372001, 1, 1, 0, 700), +(1130100, 1060015, 1, 1, 0, 700), +(9300220, 1060015, 1, 1, 0, 700), +(1130100, 1040019, 1, 1, 0, 700), +(9300220, 1040019, 1, 1, 0, 700), +(1130100, 1382004, 1, 1, 0, 700), +(9300220, 1382004, 1, 1, 0, 700), +(1130100, 1002118, 1, 1, 0, 700), +(9300220, 1002118, 1, 1, 0, 700), +(1130100, 1041045, 1, 1, 0, 700), +(9300220, 1041045, 1, 1, 0, 700), +(1130100, 1061038, 1, 1, 0, 700), +(9300220, 1061038, 1, 1, 0, 700), +(1130100, 1051008, 1, 1, 0, 700), +(9300220, 1051008, 1, 1, 0, 700), +(1130100, 1492001, 1, 1, 0, 700), +(9300220, 1492001, 1, 1, 0, 700), +(9420502, 4000367, 1, 1, 0, 200000), +(9420502, 4000366, 1, 1, 0, 200000), +(9420502, 2000000, 1, 1, 0, 40000), +(9420502, 4010005, 1, 1, 0, 7000), +(9420502, 4020004, 1, 1, 0, 7000), +(9420502, 1072048, 1, 1, 0, 700), +(9420502, 1382002, 1, 1, 0, 700), +(9420502, 1002177, 1, 1, 0, 700), +(1140100, 4000195, 1, 1, 0, 200000), +(9101002, 4000195, 1, 1, 0, 200000), +(1140100, 4030012, 1, 1, 0, 10000), +(9101002, 4030012, 1, 1, 0, 10000), +(1140100, 2000000, 1, 1, 0, 40000), +(9101002, 2000000, 1, 1, 0, 40000), +(1140100, 2000003, 1, 1, 0, 40000), +(9101002, 2000003, 1, 1, 0, 40000), +(1140100, 2040801, 1, 1, 0, 750), +(9101002, 2040801, 1, 1, 0, 750), +(1140100, 2048001, 1, 1, 0, 750), +(9101002, 2048001, 1, 1, 0, 750), +(1140100, 2040901, 1, 1, 0, 750), +(9101002, 2040901, 1, 1, 0, 750), +(1140100, 2040504, 1, 1, 0, 750), +(9101002, 2040504, 1, 1, 0, 750), +(1140100, 2044002, 1, 1, 0, 750), +(9101002, 2044002, 1, 1, 0, 750), +(1140100, 2044804, 1, 1, 0, 750), +(9101002, 2044804, 1, 1, 0, 750), +(1140100, 2381001, 1, 1, 0, 20000), +(9101002, 2381001, 1, 1, 0, 20000), +(1140100, 4010004, 1, 1, 0, 7000), +(9101002, 4010004, 1, 1, 0, 7000), +(1140100, 4010000, 1, 1, 0, 7000), +(9101002, 4010000, 1, 1, 0, 7000), +(1140100, 4020007, 1, 1, 0, 7000), +(9101002, 4020007, 1, 1, 0, 7000), +(1140100, 1412002, 1, 1, 0, 700), +(9101002, 1412002, 1, 1, 0, 700), +(1140100, 1072046, 1, 1, 0, 700), +(9101002, 1072046, 1, 1, 0, 700), +(1140100, 1061027, 1, 1, 0, 700), +(9101002, 1061027, 1, 1, 0, 700), +(1140100, 1040018, 1, 1, 0, 700), +(9101002, 1040018, 1, 1, 0, 700), +(1140100, 1050010, 1, 1, 0, 700), +(9101002, 1050010, 1, 1, 0, 700), +(1140100, 1050003, 1, 1, 0, 700), +(9101002, 1050003, 1, 1, 0, 700), +(1140100, 1041062, 1, 1, 0, 700), +(9101002, 1041062, 1, 1, 0, 700), +(1140100, 1002113, 1, 1, 0, 700), +(9101002, 1002113, 1, 1, 0, 700), +(1140100, 1061058, 1, 1, 0, 700), +(9101002, 1061058, 1, 1, 0, 700), +(1140100, 1082018, 1, 1, 0, 700), +(9101002, 1082018, 1, 1, 0, 700), +(1140100, 1072066, 1, 1, 0, 700), +(9101002, 1072066, 1, 1, 0, 700), +(1140100, 1002107, 1, 1, 0, 700), +(9101002, 1002107, 1, 1, 0, 700), +(1140100, 1082180, 1, 1, 0, 700), +(9101002, 1082180, 1, 1, 0, 700), +(1140130, 4000195, 1, 1, 0, 200000), +(1140130, 2381082, 1, 1, 0, 20000), +(1140130, 2000000, 1, 1, 0, 40000), +(1140130, 2000003, 1, 1, 0, 40000), +(1140130, 2060000, 10, 50, 0, 10000), +(1140130, 2061000, 10, 50, 0, 10000), +(1140130, 2040501, 1, 1, 0, 750), +(1140130, 2040801, 1, 1, 0, 750), +(1140130, 2048001, 1, 1, 0, 750), +(1140130, 2044804, 1, 1, 0, 750), +(1140130, 4010000, 1, 1, 0, 7000), +(1140130, 4010004, 1, 1, 0, 7000), +(1140130, 4020007, 1, 1, 0, 7000), +(1140130, 1412002, 1, 1, 0, 700), +(1140130, 1072046, 1, 1, 0, 700), +(1140130, 1050010, 1, 1, 0, 700), +(1140130, 1041029, 1, 1, 0, 700), +(1140130, 1061027, 1, 1, 0, 700), +(1140130, 1050003, 1, 1, 0, 700), +(1140130, 1041062, 1, 1, 0, 700), +(1140130, 1061058, 1, 1, 0, 700), +(1140130, 1082018, 1, 1, 0, 700), +(1140130, 1002113, 1, 1, 0, 700), +(1140130, 1072066, 1, 1, 0, 700), +(1140130, 1002107, 1, 1, 0, 700), +(1140130, 1082180, 1, 1, 0, 700), +(9400538, 4030012, 1, 1, 0, 10000), +(9400538, 4131010, 1, 1, 0, 3000), +(9400538, 2000000, 1, 1, 0, 40000), +(9400538, 2000003, 1, 1, 0, 40000), +(9400538, 2022189, 1, 1, 0, 3000), +(9400538, 2048001, 1, 1, 0, 750), +(9400538, 2041045, 1, 1, 0, 750), +(9400538, 2044702, 1, 1, 0, 750), +(9400538, 2043302, 1, 1, 0, 750), +(9400538, 2041017, 1, 1, 0, 750), +(9400538, 4020007, 1, 1, 0, 7000), +(9400538, 4010004, 1, 1, 0, 7000), +(9400538, 4010000, 1, 1, 0, 7000), +(9400538, 1412002, 1, 1, 0, 700), +(9400538, 1382018, 1, 1, 0, 700), +(9400538, 1050035, 1, 1, 0, 700), +(2220100, 4000009, 1, 1, 0, 200000), +(9300259, 4000009, 1, 1, 0, 200000), +(2220100, 4030012, 1, 1, 0, 10000), +(9300259, 4030012, 1, 1, 0, 10000), +(2220100, 2022016, 1, 1, 0, 3000), +(9300259, 2022016, 1, 1, 0, 3000), +(2220100, 2000001, 1, 1, 0, 40000), +(9300259, 2000001, 1, 1, 0, 40000), +(2220100, 2000003, 1, 1, 0, 40000), +(9300259, 2000003, 1, 1, 0, 40000), +(2220100, 2002002, 1, 1, 0, 10000), +(9300259, 2002002, 1, 1, 0, 10000), +(2220100, 2044002, 1, 1, 0, 750), +(9300259, 2044002, 1, 1, 0, 750), +(2220100, 2040602, 1, 1, 0, 750), +(9300259, 2040602, 1, 1, 0, 750), +(2220100, 2381002, 1, 1, 0, 20000), +(9300259, 2381002, 1, 1, 0, 20000), +(2220100, 4010006, 1, 1, 0, 7000), +(9300259, 4010006, 1, 1, 0, 7000), +(2220100, 4020005, 1, 1, 0, 7000), +(9300259, 4020005, 1, 1, 0, 7000), +(2220100, 1302020, 1, 1, 0, 700), +(9300259, 1302020, 1, 1, 0, 700), +(2220100, 1332006, 1, 1, 0, 700), +(9300259, 1332006, 1, 1, 0, 700), +(2220100, 1051000, 1, 1, 0, 700), +(9300259, 1051000, 1, 1, 0, 700), +(2220100, 1412002, 1, 1, 0, 700), +(9300259, 1412002, 1, 1, 0, 700), +(2220100, 1040012, 1, 1, 0, 700), +(9300259, 1040012, 1, 1, 0, 700), +(2220100, 1060010, 1, 1, 0, 700), +(9300259, 1060010, 1, 1, 0, 700), +(2220100, 1442001, 1, 1, 0, 700), +(9300259, 1442001, 1, 1, 0, 700), +(2220100, 1041027, 1, 1, 0, 700), +(9300259, 1041027, 1, 1, 0, 700), +(2220100, 1332006, 1, 1, 0, 700), +(9300259, 1332006, 1, 1, 0, 700), +(2220100, 1002127, 1, 1, 0, 700), +(9300259, 1002127, 1, 1, 0, 700), +(2220100, 1002613, 1, 1, 0, 700), +(9300259, 1002613, 1, 1, 0, 700), +(2220100, 1002616, 1, 1, 0, 700), +(9300259, 1002616, 1, 1, 0, 700), +(2220100, 1002619, 1, 1, 0, 700), +(9300259, 1002619, 1, 1, 0, 700), +(2300100, 4000042, 1, 1, 0, 200000), +(9300063, 4000042, 1, 1, 0, 200000), +(9300082, 4000042, 1, 1, 0, 200000), +(9400503, 4000042, 1, 1, 0, 200000), +(2300100, 4003004, 1, 1, 0, 7000), +(9300063, 4003004, 1, 1, 0, 7000), +(9300082, 4003004, 1, 1, 0, 7000), +(9400503, 4003004, 1, 1, 0, 7000), +(2300100, 2000001, 1, 1, 0, 40000), +(9300063, 2000001, 1, 1, 0, 40000), +(9300082, 2000001, 1, 1, 0, 40000), +(9400503, 2000001, 1, 4, 0, 40000), +(2300100, 2000003, 1, 1, 0, 40000), +(9300063, 2000003, 1, 1, 0, 40000), +(9300082, 2000003, 1, 1, 0, 40000), +(9400503, 2000003, 1, 4, 0, 40000), +(2300100, 2010004, 1, 1, 0, 3000), +(9300063, 2010004, 1, 1, 0, 3000), +(9300082, 2010004, 1, 1, 0, 3000), +(9400503, 2010004, 1, 4, 0, 3000), +(2300100, 2048004, 1, 1, 0, 750), +(9300063, 2048004, 1, 1, 0, 750), +(9300082, 2048004, 1, 1, 0, 750), +(9400503, 2048004, 1, 4, 0, 10000), +(2300100, 2041044, 1, 1, 0, 750), +(9300063, 2041044, 1, 1, 0, 750), +(9300082, 2041044, 1, 1, 0, 750), +(9400503, 2041044, 1, 4, 0, 10000), +(2300100, 2040024, 1, 1, 0, 750), +(9300063, 2040024, 1, 1, 0, 750), +(9300082, 2040024, 1, 1, 0, 750), +(9400503, 2040024, 1, 4, 0, 10000), +(2300100, 2381003, 1, 1, 0, 20000), +(9300063, 2381003, 1, 1, 0, 20000), +(9300082, 2381003, 1, 1, 0, 20000), +(9400503, 2381003, 1, 4, 0, 20000), +(2300100, 4010001, 1, 1, 0, 7000), +(9300063, 4010001, 1, 1, 0, 7000), +(9300082, 4010001, 1, 1, 0, 7000), +(9400503, 4010001, 1, 1, 0, 7000), +(2300100, 4020000, 1, 1, 0, 7000), +(9300063, 4020000, 1, 1, 0, 7000), +(9300082, 4020000, 1, 1, 0, 7000), +(9400503, 4020000, 1, 1, 0, 7000), +(2300100, 1082002, 1, 1, 0, 700), +(9300063, 1082002, 1, 1, 0, 700), +(9300082, 1082002, 1, 1, 0, 700), +(9400503, 1082002, 1, 1, 0, 40000), +(2300100, 1040009, 1, 1, 0, 700), +(9300063, 1040009, 1, 1, 0, 700), +(9300082, 1040009, 1, 1, 0, 700), +(9400503, 1040009, 1, 1, 0, 40000), +(2300100, 1060009, 1, 1, 0, 700), +(9300063, 1060009, 1, 1, 0, 700), +(9300082, 1060009, 1, 1, 0, 700), +(9400503, 1060009, 1, 1, 0, 40000), +(2300100, 1452005, 1, 1, 0, 700), +(9300063, 1452005, 1, 1, 0, 700), +(9300082, 1452005, 1, 1, 0, 700), +(9400503, 1452005, 1, 1, 0, 40000), +(2300100, 1002119, 1, 1, 0, 700), +(9300063, 1002119, 1, 1, 0, 700), +(9300082, 1002119, 1, 1, 0, 700), +(9400503, 1002119, 1, 1, 0, 40000), +(2300100, 1472030, 1, 1, 0, 700), +(9300063, 1472030, 1, 1, 0, 700), +(9300082, 1472030, 1, 1, 0, 700), +(9400503, 1472030, 1, 1, 0, 40000), +(2300100, 1332025, 1, 1, 0, 700), +(9300063, 1332025, 1, 1, 0, 700), +(9300082, 1332025, 1, 1, 0, 700), +(9400503, 1332025, 1, 1, 0, 40000), +(2300100, 1040043, 1, 1, 0, 700), +(9300063, 1040043, 1, 1, 0, 700), +(9300082, 1040043, 1, 1, 0, 700), +(9400503, 1040043, 1, 1, 0, 40000), +(2300100, 1060032, 1, 1, 0, 700), +(9300063, 1060032, 1, 1, 0, 700), +(9300082, 1060032, 1, 1, 0, 700), +(9400503, 1060032, 1, 1, 0, 40000), +(2300100, 1041039, 1, 1, 0, 700), +(9300063, 1041039, 1, 1, 0, 700), +(9300082, 1041039, 1, 1, 0, 700), +(9400503, 1041039, 1, 1, 0, 40000), +(2300100, 1061041, 1, 1, 0, 700), +(9300063, 1061041, 1, 1, 0, 700), +(9300082, 1061041, 1, 1, 0, 700), +(9400503, 1061041, 1, 1, 0, 40000), +(2300100, 1052098, 1, 1, 0, 700), +(9300063, 1052098, 1, 1, 0, 700), +(9300082, 1052098, 1, 1, 0, 700), +(9400503, 1052098, 1, 1, 0, 40000), +(2300100, 1052101, 1, 1, 0, 700), +(9300063, 1052101, 1, 1, 0, 700), +(9300082, 1052101, 1, 1, 0, 700), +(9400503, 1052101, 1, 1, 0, 40000), +(2100100, 5240005, 1, 1, 0, 7000), +(2100100, 4003004, 1, 1, 0, 7000), +(2100100, 2000001, 1, 1, 0, 40000), +(2100100, 2000003, 1, 1, 0, 40000), +(2100100, 2060000, 10, 50, 0, 10000), +(2100100, 2061000, 10, 50, 0, 10000), +(2100100, 2040601, 1, 1, 0, 750), +(2100100, 2381004, 1, 1, 0, 20000), +(2100100, 4010001, 1, 1, 0, 7000), +(2100100, 4020006, 1, 1, 0, 7000), +(2100100, 4010007, 1, 1, 0, 7000), +(2100100, 1082002, 1, 1, 0, 700), +(2100100, 1032009, 1, 1, 0, 700), +(2100100, 1050005, 1, 1, 0, 700), +(2100100, 1332010, 1, 1, 0, 700), +(2100100, 1072007, 1, 1, 0, 700), +(2100100, 1050025, 1, 1, 0, 700), +(2100100, 1382002, 1, 1, 0, 700), +(2100100, 1002119, 1, 1, 0, 700), +(2100100, 1332010, 1, 1, 0, 700), +(2100100, 1072288, 1, 1, 0, 700), +(9300184, 4000016, 1, 1, 0, 200000), +(9500306, 4000016, 1, 1, 0, 200000), +(9500337, 4000016, 1, 1, 0, 200000), +(9303000, 4000016, 1, 1, 0, 200000), +(9300184, 4000000, 1, 1, 0, 200000), +(9500306, 4000000, 1, 1, 0, 200000), +(9500337, 4000000, 1, 1, 0, 200000), +(9303000, 4000000, 1, 1, 0, 200000), +(9300184, 2070000, 1, 4, 0, 2500), +(9500306, 2070000, 1, 4, 0, 2500), +(9500337, 2070000, 1, 4, 0, 2500), +(9303000, 2070000, 1, 1, 0, 400), +(9300184, 2010009, 1, 4, 0, 3000), +(9500306, 2010009, 1, 4, 0, 3000), +(9500337, 2010009, 1, 4, 0, 3000), +(9303000, 2010009, 1, 1, 0, 3000), +(9300184, 2020014, 1, 4, 0, 3000), +(9500306, 2020014, 1, 4, 0, 3000), +(9500337, 2020014, 1, 4, 0, 3000), +(9303000, 2020014, 1, 1, 0, 3000), +(9300184, 2044001, 1, 4, 0, 10000), +(9500306, 2044001, 1, 4, 0, 10000), +(9500337, 2044001, 1, 4, 0, 10000), +(9303000, 2044001, 1, 1, 0, 750), +(9300184, 2041016, 1, 4, 0, 10000), +(9500306, 2041016, 1, 4, 0, 10000), +(9500337, 2041016, 1, 4, 0, 10000), +(9303000, 2041016, 1, 1, 0, 750), +(9300184, 2040301, 1, 4, 0, 10000), +(9500306, 2040301, 1, 4, 0, 10000), +(9500337, 2040301, 1, 4, 0, 10000), +(9303000, 2040301, 1, 1, 0, 750), +(9300184, 2041019, 1, 4, 0, 10000), +(9500306, 2041019, 1, 4, 0, 10000), +(9500337, 2041019, 1, 4, 0, 10000), +(9303000, 2041019, 1, 1, 0, 750), +(9300184, 2044002, 1, 4, 0, 10000), +(9500306, 2044002, 1, 4, 0, 10000), +(9500337, 2044002, 1, 4, 0, 10000), +(9303000, 2044002, 1, 1, 0, 750), +(9300184, 2043801, 1, 4, 0, 10000), +(9500306, 2043801, 1, 4, 0, 10000), +(9500337, 2043801, 1, 4, 0, 10000), +(9303000, 2043801, 1, 1, 0, 750), +(9300184, 2043701, 1, 4, 0, 10000), +(9500306, 2043701, 1, 4, 0, 10000), +(9500337, 2043701, 1, 4, 0, 10000), +(9303000, 2043701, 1, 1, 0, 750), +(9300184, 2040002, 1, 4, 0, 10000), +(9500306, 2040002, 1, 4, 0, 10000), +(9500337, 2040002, 1, 4, 0, 10000), +(9303000, 2040002, 1, 1, 0, 750), +(9300184, 2040001, 1, 4, 0, 10000), +(9500306, 2040001, 1, 4, 0, 10000), +(9500337, 2040001, 1, 4, 0, 10000), +(9303000, 2040001, 1, 1, 0, 750), +(9300184, 2040401, 1, 4, 0, 10000), +(9500306, 2040401, 1, 4, 0, 10000), +(9500337, 2040401, 1, 4, 0, 10000), +(9303000, 2040401, 1, 1, 0, 750), +(9300184, 2040501, 1, 4, 0, 10000), +(9500306, 2040501, 1, 4, 0, 10000), +(9500337, 2040501, 1, 4, 0, 10000), +(9303000, 2040501, 1, 1, 0, 750), +(9300184, 2043201, 1, 4, 0, 10000), +(9500306, 2043201, 1, 4, 0, 10000), +(9500337, 2043201, 1, 4, 0, 10000), +(9303000, 2043201, 1, 1, 0, 750), +(9300184, 2040704, 1, 4, 0, 10000), +(9500306, 2040704, 1, 4, 0, 10000), +(9500337, 2040704, 1, 4, 0, 10000), +(9303000, 2040704, 1, 1, 0, 750), +(9300184, 2043702, 1, 4, 0, 10000), +(9500306, 2043702, 1, 4, 0, 10000), +(9500337, 2043702, 1, 4, 0, 10000), +(9303000, 2043702, 1, 1, 0, 750), +(9300184, 2043302, 1, 4, 0, 10000), +(9500306, 2043302, 1, 4, 0, 10000), +(9500337, 2043302, 1, 4, 0, 10000), +(9303000, 2043302, 1, 1, 0, 750), +(9300184, 2330000, 1, 4, 0, 2500), +(9500306, 2330000, 1, 4, 0, 2500), +(9500337, 2330000, 1, 4, 0, 2500), +(9303000, 2330000, 1, 1, 0, 400), +(9300184, 2388000, 1, 4, 0, 20000), +(9500306, 2388000, 1, 4, 0, 20000), +(9500337, 2388000, 1, 4, 0, 20000), +(9303000, 2388000, 1, 1, 0, 20000), +(9300184, 1002049, 1, 1, 0, 40000), +(9500306, 1002049, 1, 1, 0, 40000), +(9500337, 1002049, 1, 1, 0, 40000), +(9303000, 1002049, 1, 1, 0, 700), +(9300184, 1072074, 1, 1, 0, 40000), +(9500306, 1072074, 1, 1, 0, 40000), +(9500337, 1072074, 1, 1, 0, 40000), +(9303000, 1072074, 1, 1, 0, 700), +(9300184, 1002073, 1, 1, 0, 40000), +(9500306, 1002073, 1, 1, 0, 40000), +(9500337, 1002073, 1, 1, 0, 40000), +(9303000, 1002073, 1, 1, 0, 700), +(9300184, 1082028, 1, 1, 0, 40000), +(9500306, 1082028, 1, 1, 0, 40000), +(9500337, 1082028, 1, 1, 0, 40000), +(9303000, 1082028, 1, 1, 0, 700), +(9300184, 1040025, 1, 1, 0, 40000), +(9500306, 1040025, 1, 1, 0, 40000), +(9500337, 1040025, 1, 1, 0, 40000), +(9303000, 1040025, 1, 1, 0, 700), +(2130103, 4000034, 1, 1, 0, 200000), +(2130103, 2000001, 1, 1, 0, 40000), +(2130103, 2010003, 1, 1, 0, 3000), +(2130103, 2040902, 1, 1, 0, 750), +(2130103, 2048003, 1, 1, 0, 750), +(2130103, 2049101, 1, 1, 0, 400), +(2130103, 2381006, 1, 1, 0, 20000), +(2130103, 4010002, 1, 1, 0, 7000), +(2130103, 4020006, 1, 1, 0, 7000), +(2130103, 1442024, 1, 1, 0, 700), +(2130103, 1050005, 1, 1, 0, 700), +(2130103, 1332008, 1, 1, 0, 700), +(2130103, 1041021, 1, 1, 0, 700), +(2130103, 1061018, 1, 1, 0, 700), +(2130103, 1002027, 1, 1, 0, 700), +(2130103, 1041031, 1, 1, 0, 700), +(2130103, 1061028, 1, 1, 0, 700), +(2130103, 1072069, 1, 1, 0, 700), +(2130103, 1332008, 1, 1, 0, 700), +(2130103, 1482002, 1, 1, 0, 700), +(9400539, 4030012, 1, 1, 0, 10000), +(9400539, 2000001, 1, 1, 0, 40000), +(9400539, 2010004, 1, 1, 0, 3000), +(9400539, 2002002, 1, 1, 0, 10000), +(9400539, 4010001, 1, 1, 0, 7000), +(9400539, 4010006, 1, 1, 0, 7000), +(9400539, 4020005, 1, 1, 0, 7000), +(9400539, 1332006, 1, 1, 0, 700), +(9400539, 1040012, 1, 1, 0, 700), +(9400539, 1060010, 1, 1, 0, 700), +(9400539, 1041027, 1, 1, 0, 700), +(9400539, 1332006, 1, 1, 0, 700), +(9400539, 1002127, 1, 1, 0, 700), +(9400556, 4032027, 1, 1, 0, 10000), +(9400565, 4032027, 1, 1, 0, 10000), +(9400556, 4032029, 1, 1, 0, 10000), +(9400565, 4032029, 1, 1, 0, 10000), +(9400556, 4032030, 1, 1, 0, 10000), +(9400565, 4032030, 1, 1, 0, 10000), +(9400556, 4032028, 1, 1, 0, 10000), +(9400565, 4032028, 1, 1, 0, 10000), +(9400556, 2022247, 1, 1, 0, 3000), +(9400565, 2022247, 1, 1, 0, 3000), +(9400556, 2022248, 1, 1, 0, 3000), +(9400565, 2022248, 1, 1, 0, 3000), +(9400556, 2022249, 1, 1, 0, 3000), +(9400565, 2022249, 1, 1, 0, 3000), +(9400556, 2022250, 1, 1, 0, 3000), +(9400565, 2022250, 1, 1, 0, 3000), +(9400556, 2022251, 1, 1, 0, 3000), +(9400565, 2022251, 1, 1, 0, 3000), +(9400556, 2022246, 1, 1, 0, 3000), +(9400565, 2022246, 1, 1, 0, 3000), +(9400556, 2022244, 1, 1, 0, 3000), +(9400565, 2022244, 1, 1, 0, 3000), +(9400556, 1041021, 1, 1, 0, 700), +(9400565, 1041021, 1, 1, 0, 700), +(9400556, 1002027, 1, 1, 0, 700), +(9400565, 1002027, 1, 1, 0, 700), +(9400556, 1332008, 1, 1, 0, 700), +(9400565, 1332008, 1, 1, 0, 700), +(9400556, 1041008, 1, 1, 0, 700), +(9400565, 1041008, 1, 1, 0, 700), +(9400556, 1040044, 1, 1, 0, 700), +(9400565, 1040044, 1, 1, 0, 700), +(9400556, 1060033, 1, 1, 0, 700), +(9400565, 1060033, 1, 1, 0, 700), +(9400556, 1332008, 1, 1, 0, 700), +(9400565, 1332008, 1, 1, 0, 700), +(2100101, 4000325, 1, 1, 0, 200000), +(2100101, 4003004, 1, 1, 0, 7000), +(2100101, 2000001, 1, 1, 0, 40000), +(2100101, 2000003, 1, 1, 0, 40000), +(2100101, 2002002, 1, 1, 0, 10000), +(2100101, 2060000, 10, 50, 0, 10000), +(2100101, 2061000, 10, 50, 0, 10000), +(2100101, 2044602, 1, 1, 0, 750), +(2100101, 2381005, 1, 1, 0, 20000), +(2100101, 4010006, 1, 1, 0, 7000), +(2100101, 4020001, 1, 1, 0, 7000), +(2100101, 4010007, 1, 1, 0, 7000), +(2100101, 1060017, 1, 1, 0, 700), +(2100101, 1092021, 1, 1, 0, 700), +(2100101, 1061028, 1, 1, 0, 700), +(2100101, 1041027, 1, 1, 0, 700), +(2100101, 1061025, 1, 1, 0, 700), +(2100101, 1002129, 1, 1, 0, 700), +(2100101, 1472006, 1, 1, 0, 700), +(2100101, 1082183, 1, 1, 0, 700), +(2110200, 4000015, 1, 1, 0, 200000), +(9400246, 4000015, 1, 1, 0, 200000), +(9500106, 4000015, 1, 1, 0, 200000), +(2110200, 4030012, 1, 1, 0, 10000), +(9400246, 4030012, 1, 1, 0, 10000), +(9500106, 4030012, 1, 1, 0, 10000), +(2110200, 2000003, 1, 1, 0, 40000), +(9400246, 2000003, 1, 1, 0, 40000), +(9500106, 2000003, 1, 1, 0, 40000), +(2110200, 2000001, 1, 1, 0, 40000), +(9400246, 2000001, 1, 1, 0, 40000), +(9500106, 2000001, 1, 1, 0, 40000), +(2110200, 2002003, 1, 1, 0, 10000), +(9400246, 2002003, 1, 1, 0, 10000), +(9500106, 2002003, 1, 1, 0, 10000), +(2110200, 2044102, 1, 1, 0, 750), +(9400246, 2044102, 1, 1, 0, 750), +(9500106, 2044102, 1, 1, 0, 750), +(2110200, 2044001, 1, 1, 0, 750), +(9400246, 2044001, 1, 1, 0, 750), +(9500106, 2044001, 1, 1, 0, 750), +(2110200, 2048000, 1, 1, 0, 750), +(9400246, 2048000, 1, 1, 0, 750), +(9500106, 2048000, 1, 1, 0, 750), +(2110200, 2041044, 1, 1, 0, 750), +(9400246, 2041044, 1, 1, 0, 750), +(9500106, 2041044, 1, 1, 0, 750), +(2110200, 2330000, 1, 1, 0, 400), +(9400246, 2330000, 1, 1, 0, 400), +(9500106, 2330000, 1, 1, 0, 400), +(2110200, 2381007, 1, 1, 0, 20000), +(9400246, 2381007, 1, 1, 0, 20000), +(9500106, 2381007, 1, 1, 0, 20000), +(2110200, 4020006, 1, 1, 0, 7000), +(9400246, 4020006, 1, 1, 0, 7000), +(9500106, 4020006, 1, 1, 0, 7000), +(2110200, 4010000, 1, 1, 0, 7000), +(9400246, 4010000, 1, 1, 0, 7000), +(9500106, 4010000, 1, 1, 0, 7000), +(2110200, 1060002, 1, 1, 0, 700), +(9400246, 1060002, 1, 1, 0, 700), +(9500106, 1060002, 1, 1, 0, 700), +(2110200, 1050006, 1, 1, 0, 700), +(9400246, 1050006, 1, 1, 0, 700), +(9500106, 1050006, 1, 1, 0, 700), +(2110200, 1002005, 1, 1, 0, 700), +(9400246, 1002005, 1, 1, 0, 700), +(9500106, 1002005, 1, 1, 0, 700), +(2110200, 1442001, 1, 1, 0, 700), +(9400246, 1442001, 1, 1, 0, 700), +(9500106, 1442001, 1, 1, 0, 700), +(2110200, 1082000, 1, 1, 0, 700), +(9400246, 1082000, 1, 1, 0, 700), +(9500106, 1082000, 1, 1, 0, 700), +(2110200, 1302004, 1, 1, 0, 700), +(9400246, 1302004, 1, 1, 0, 700), +(9500106, 1302004, 1, 1, 0, 700), +(2110200, 1092000, 1, 1, 0, 700), +(9400246, 1092000, 1, 1, 0, 700), +(9500106, 1092000, 1, 1, 0, 700), +(2110200, 1412002, 1, 1, 0, 700), +(9400246, 1412002, 1, 1, 0, 700), +(9500106, 1412002, 1, 1, 0, 700), +(2110200, 1382012, 1, 1, 0, 700), +(9400246, 1382012, 1, 1, 0, 700), +(9500106, 1382012, 1, 1, 0, 700), +(2110200, 1072073, 1, 1, 0, 700), +(9400246, 1072073, 1, 1, 0, 700), +(9500106, 1072073, 1, 1, 0, 700), +(2110200, 1002038, 1, 1, 0, 700), +(9400246, 1002038, 1, 1, 0, 700), +(9500106, 1002038, 1, 1, 0, 700), +(2110200, 1462014, 1, 1, 0, 700), +(9400246, 1462014, 1, 1, 0, 700), +(9500106, 1462014, 1, 1, 0, 700), +(2110200, 1002138, 1, 1, 0, 700), +(9400246, 1002138, 1, 1, 0, 700), +(9500106, 1002138, 1, 1, 0, 700), +(2110200, 1041008, 1, 1, 0, 700), +(9400246, 1041008, 1, 1, 0, 700), +(9500106, 1041008, 1, 1, 0, 700), +(2110200, 1061006, 1, 1, 0, 700), +(9400246, 1061006, 1, 1, 0, 700), +(9500106, 1061006, 1, 1, 0, 700), +(2110200, 1462004, 1, 1, 0, 700), +(9400246, 1462004, 1, 1, 0, 700), +(9500106, 1462004, 1, 1, 0, 700), +(2110200, 1040044, 1, 1, 0, 700), +(9400246, 1040044, 1, 1, 0, 700), +(9500106, 1040044, 1, 1, 0, 700), +(2110200, 1060033, 1, 1, 0, 700), +(9400246, 1060033, 1, 1, 0, 700), +(9500106, 1060033, 1, 1, 0, 700), +(2110200, 1002182, 1, 1, 0, 700), +(9400246, 1002182, 1, 1, 0, 700), +(9500106, 1002182, 1, 1, 0, 700), +(2110200, 1060038, 1, 1, 0, 700), +(9400246, 1060038, 1, 1, 0, 700), +(9500106, 1060038, 1, 1, 0, 700), +(2110200, 1492002, 1, 1, 0, 700), +(9400246, 1492002, 1, 1, 0, 700), +(9500106, 1492002, 1, 1, 0, 700), +(2110200, 1052104, 1, 1, 0, 700), +(9400246, 1052104, 1, 1, 0, 700), +(9500106, 1052104, 1, 1, 0, 700), +(2130100, 4000018, 1, 1, 0, 200000), +(2130100, 4000215, 1, 1, 0, 200000), +(2130100, 2000001, 1, 1, 0, 40000), +(2130100, 2000003, 1, 1, 0, 40000), +(2130100, 2012002, 1, 1, 0, 3000), +(2130100, 2070009, 1, 1, 0, 400), +(2130100, 2044202, 1, 1, 0, 750), +(2130100, 4006001, 1, 1, 0, 7000), +(2130100, 2381008, 1, 1, 0, 20000), +(2130100, 4020007, 1, 1, 0, 7000), +(2130100, 4010001, 1, 1, 0, 7000), +(2130100, 1051003, 1, 1, 0, 700), +(2130100, 1041028, 1, 1, 0, 700), +(2130100, 1061026, 1, 1, 0, 700), +(2130100, 1472006, 1, 1, 0, 700), +(2130100, 1472009, 1, 1, 0, 700), +(2130100, 1072087, 1, 1, 0, 700), +(2130100, 1472012, 1, 1, 0, 700), +(2130100, 1002616, 1, 1, 0, 700), +(2230108, 4000160, 1, 1, 0, 200000), +(2230108, 2000001, 1, 1, 0, 40000), +(2230108, 2002003, 1, 1, 0, 10000), +(2230108, 4006001, 1, 1, 0, 7000), +(2230108, 2044202, 1, 1, 0, 750), +(2230108, 2381009, 1, 1, 0, 20000), +(2230108, 4010000, 1, 1, 0, 7000), +(2230108, 4020007, 1, 1, 0, 7000), +(2230108, 1402000, 1, 1, 0, 700), +(2230108, 1051005, 1, 1, 0, 700), +(2230108, 1050024, 1, 1, 0, 700), +(2230108, 1041027, 1, 1, 0, 700), +(2230108, 1061025, 1, 1, 0, 700), +(2230108, 1052101, 1, 1, 0, 700), +(2100102, 4000329, 1, 1, 0, 200000), +(2100102, 2000001, 1, 1, 0, 40000), +(2100102, 2000003, 1, 1, 0, 40000), +(2100102, 2022155, 1, 1, 0, 3000), +(2100102, 2060000, 10, 50, 0, 10000), +(2100102, 2061000, 10, 50, 0, 10000), +(2100102, 2040705, 1, 1, 0, 750), +(2100102, 2044102, 1, 1, 0, 750), +(2100102, 2381010, 1, 1, 0, 20000), +(2100102, 4010002, 1, 1, 0, 7000), +(2100102, 4020004, 1, 1, 0, 7000), +(2100102, 4010007, 1, 1, 0, 7000), +(2100102, 1032006, 1, 1, 0, 700), +(2100102, 1002048, 1, 1, 0, 700), +(2100102, 1050024, 1, 1, 0, 700), +(2100102, 1051004, 1, 1, 0, 700), +(2100102, 1462003, 1, 1, 0, 700), +(2100102, 1072027, 1, 1, 0, 700), +(2100102, 1040044, 1, 1, 0, 700), +(2100102, 1060033, 1, 1, 0, 700), +(2100102, 1082183, 1, 1, 0, 700), +(2100102, 1082186, 1, 1, 0, 700), +(5200000, 4000083, 1, 1, 0, 200000), +(5200000, 2000001, 1, 1, 0, 40000), +(5200000, 2000003, 1, 1, 0, 40000), +(5200000, 2070000, 1, 1, 0, 400), +(5200000, 2060001, 10, 50, 0, 10000), +(5200000, 2061001, 10, 50, 0, 10000), +(5200000, 2044102, 1, 1, 0, 750), +(5200000, 2381012, 1, 1, 0, 20000), +(5200000, 4010000, 1, 1, 0, 7000), +(5200000, 4020006, 1, 1, 0, 7000), +(5200000, 4004003, 1, 1, 0, 3000), +(5200000, 1442014, 1, 1, 0, 700), +(5200000, 1040016, 1, 1, 0, 700), +(5200000, 1060011, 1, 1, 0, 700), +(5200000, 1322004, 1, 1, 0, 700), +(5200000, 1322002, 1, 1, 0, 700), +(5200000, 1322002, 1, 1, 0, 700), +(5200000, 1002142, 1, 1, 0, 700), +(5200000, 1462019, 1, 1, 0, 700), +(5200000, 1462014, 1, 1, 0, 700), +(5200000, 1452005, 1, 1, 0, 700), +(5200000, 1002129, 1, 1, 0, 700), +(5200000, 1041048, 1, 1, 0, 700), +(5200000, 1061044, 1, 1, 0, 700), +(5200000, 1482002, 1, 1, 0, 700), +(2230110, 4000196, 1, 1, 0, 200000), +(2230110, 4030012, 1, 1, 0, 10000), +(2230110, 2000001, 1, 1, 0, 40000), +(2230110, 2000003, 1, 1, 0, 40000), +(2230110, 2002003, 1, 1, 0, 10000), +(2230110, 2041016, 1, 1, 0, 750), +(2230110, 2040901, 1, 1, 0, 750), +(2230110, 2040501, 1, 1, 0, 750), +(2230110, 2040805, 1, 1, 0, 750), +(2230110, 2330000, 1, 1, 0, 400), +(2230110, 2381014, 1, 1, 0, 20000), +(2230110, 4010000, 1, 1, 0, 7000), +(2230110, 4020002, 1, 1, 0, 7000), +(2230110, 4020001, 1, 1, 0, 7000), +(2230110, 1332010, 1, 1, 0, 700), +(2230110, 1082006, 1, 1, 0, 700), +(2230110, 1072053, 1, 1, 0, 700), +(2230110, 1082026, 1, 1, 0, 700), +(2230110, 1060014, 1, 1, 0, 700), +(2230110, 1040020, 1, 1, 0, 700), +(2230110, 1002121, 1, 1, 0, 700), +(2230110, 1332010, 1, 1, 0, 700), +(2230110, 1072087, 1, 1, 0, 700), +(2230110, 1002131, 1, 1, 0, 700), +(2230110, 1082043, 1, 1, 0, 700), +(2230110, 1002616, 1, 1, 0, 700), +(2100105, 4000328, 1, 1, 0, 200000), +(2100105, 2000001, 1, 1, 0, 40000), +(2100105, 2000003, 1, 1, 0, 40000), +(2100105, 2060000, 10, 50, 0, 10000), +(2100105, 2061000, 10, 50, 0, 10000), +(2100105, 4006001, 1, 1, 0, 7000), +(2100105, 2044002, 1, 1, 0, 750), +(2100105, 2040902, 1, 1, 0, 750), +(2100105, 2330000, 1, 1, 0, 400), +(2100105, 2381015, 1, 1, 0, 20000), +(2100105, 4010004, 1, 1, 0, 7000), +(2100105, 4010007, 1, 1, 0, 7000), +(2100105, 1302006, 1, 1, 0, 700), +(2100105, 1072007, 1, 1, 0, 700), +(2100105, 1002013, 1, 1, 0, 700), +(2100105, 1372004, 1, 1, 0, 700), +(2100105, 1082020, 1, 1, 0, 700), +(2100105, 1002119, 1, 1, 0, 700), +(2100105, 1452003, 1, 1, 0, 700), +(2100105, 1302006, 1, 1, 0, 700), +(2100105, 1072086, 1, 1, 0, 700), +(2100105, 1052101, 1, 1, 0, 700), +(2100105, 1482003, 1, 1, 0, 700), +(9420506, 4000368, 1, 1, 0, 200000), +(9420506, 2002000, 1, 1, 0, 10000), +(9420506, 2000001, 1, 1, 0, 40000), +(9420506, 2000003, 1, 1, 0, 40000), +(2230103, 4000097, 1, 1, 0, 200000), +(2230103, 4030016, 1, 1, 0, 10000), +(2230103, 4030012, 1, 1, 0, 10000), +(2230103, 4031072, 1, 1, 0, 7000), +(2230103, 4131000, 1, 1, 0, 3000), +(2230103, 2000000, 1, 1, 0, 40000), +(2230103, 2000001, 1, 1, 0, 40000), +(2230103, 2002006, 1, 1, 0, 10000), +(2230103, 2070000, 1, 1, 0, 400), +(2230103, 2040900, 1, 1, 0, 750), +(2230103, 2381011, 1, 1, 0, 20000), +(2230103, 4010003, 1, 1, 0, 7000), +(2230103, 4004003, 1, 1, 0, 3000), +(2230103, 1002020, 1, 1, 0, 700), +(2230103, 1332020, 1, 1, 0, 700), +(2230103, 1402010, 1, 1, 0, 700), +(2230103, 1322022, 1, 1, 0, 700), +(2230103, 1302003, 1, 1, 0, 700), +(2230103, 1312003, 1, 1, 0, 700), +(2230103, 1050023, 1, 1, 0, 700), +(2230103, 1462003, 1, 1, 0, 700), +(2230103, 1082017, 1, 1, 0, 700), +(2230103, 1302003, 1, 1, 0, 700), +(2230103, 1332025, 1, 1, 0, 700), +(2230103, 1072288, 1, 1, 0, 700), +(2230103, 1072291, 1, 1, 0, 700), +(2230105, 4000161, 1, 1, 0, 200000), +(2230105, 4030012, 1, 1, 0, 10000), +(2230105, 4131000, 1, 1, 0, 3000), +(2230105, 2000001, 1, 1, 0, 40000), +(2230105, 2381013, 1, 1, 0, 20000), +(2230105, 4010001, 1, 1, 0, 7000), +(2230105, 4004003, 1, 1, 0, 3000), +(2230105, 1322022, 1, 1, 0, 700), +(2230105, 1032005, 1, 1, 0, 700), +(2230105, 1050011, 1, 1, 0, 700), +(2230105, 1322004, 1, 1, 0, 700), +(2230105, 1072046, 1, 1, 0, 700), +(2230105, 1072007, 1, 1, 0, 700), +(2230105, 1312003, 1, 1, 0, 700), +(2230105, 1041042, 1, 1, 0, 700), +(2230105, 1061035, 1, 1, 0, 700), +(2230105, 1082016, 1, 1, 0, 700), +(2230105, 1492002, 1, 1, 0, 700), +(2230101, 2000001, 1, 1, 0, 40000), +(9300238, 2000001, 1, 1, 0, 40000), +(9400245, 2000001, 1, 1, 0, 40000), +(9101001, 2000001, 1, 1, 0, 40000), +(2230101, 2000003, 1, 1, 0, 40000), +(9300238, 2000003, 1, 1, 0, 40000), +(9400245, 2000003, 1, 1, 0, 40000), +(9101001, 2000003, 1, 1, 0, 40000), +(2230101, 2002000, 1, 1, 0, 10000), +(9300238, 2002000, 1, 1, 0, 10000), +(9400245, 2002000, 1, 1, 0, 10000), +(9101001, 2002000, 1, 1, 0, 10000), +(2230101, 2044302, 1, 1, 0, 750), +(9300238, 2044302, 1, 1, 0, 750), +(9400245, 2044302, 1, 1, 0, 750), +(9101001, 2044302, 1, 1, 0, 750), +(2230101, 2049101, 1, 1, 0, 400), +(9300238, 2049101, 1, 1, 0, 400), +(9400245, 2049101, 1, 1, 0, 400), +(9101001, 2049101, 1, 1, 0, 400), +(2230101, 2020028, 1, 1, 0, 3000), +(9300238, 2020028, 1, 1, 0, 3000), +(9400245, 2020028, 1, 1, 0, 3000), +(9101001, 2020028, 1, 1, 0, 3000), +(2230101, 2381016, 1, 1, 0, 20000), +(9300238, 2381016, 1, 1, 0, 20000), +(9400245, 2381016, 1, 1, 0, 20000), +(9101001, 2381016, 1, 1, 0, 20000), +(2230101, 4010002, 1, 1, 0, 7000), +(9300238, 4010002, 1, 1, 0, 7000), +(9400245, 4010002, 1, 1, 0, 7000), +(9101001, 4010002, 1, 1, 0, 7000), +(2230101, 4020003, 1, 1, 0, 7000), +(9300238, 4020003, 1, 1, 0, 7000), +(9400245, 4020003, 1, 1, 0, 7000), +(9101001, 4020003, 1, 1, 0, 7000), +(2230101, 1032004, 1, 1, 0, 700), +(9300238, 1032004, 1, 1, 0, 700), +(9400245, 1032004, 1, 1, 0, 700), +(9101001, 1032004, 1, 1, 0, 700), +(2230101, 1032000, 1, 1, 0, 700), +(9300238, 1032000, 1, 1, 0, 700), +(9400245, 1032000, 1, 1, 0, 700), +(9101001, 1032000, 1, 1, 0, 700), +(2230101, 1412002, 1, 1, 0, 700), +(9300238, 1412002, 1, 1, 0, 700), +(9400245, 1412002, 1, 1, 0, 700), +(9101001, 1412002, 1, 1, 0, 700), +(2230101, 1060018, 1, 1, 0, 700), +(9300238, 1060018, 1, 1, 0, 700), +(9400245, 1060018, 1, 1, 0, 700), +(9101001, 1060018, 1, 1, 0, 700), +(2230101, 1002005, 1, 1, 0, 700), +(9300238, 1002005, 1, 1, 0, 700), +(9400245, 1002005, 1, 1, 0, 700), +(9101001, 1002005, 1, 1, 0, 700), +(2230101, 1040026, 1, 1, 0, 700), +(9300238, 1040026, 1, 1, 0, 700), +(9400245, 1040026, 1, 1, 0, 700), +(9101001, 1040026, 1, 1, 0, 700), +(2230101, 1432003, 1, 1, 0, 700), +(9300238, 1432003, 1, 1, 0, 700), +(9400245, 1432003, 1, 1, 0, 700), +(9101001, 1432003, 1, 1, 0, 700), +(2230101, 1082062, 1, 1, 0, 700), +(9300238, 1082062, 1, 1, 0, 700), +(9400245, 1082062, 1, 1, 0, 700), +(9101001, 1082062, 1, 1, 0, 700), +(2230101, 1372003, 1, 1, 0, 700), +(9300238, 1372003, 1, 1, 0, 700), +(9400245, 1372003, 1, 1, 0, 700), +(9101001, 1372003, 1, 1, 0, 700), +(2230101, 1002158, 1, 1, 0, 700), +(9300238, 1002158, 1, 1, 0, 700), +(9400245, 1002158, 1, 1, 0, 700), +(9101001, 1002158, 1, 1, 0, 700), +(2230101, 1472030, 1, 1, 0, 700), +(9300238, 1472030, 1, 1, 0, 700), +(9400245, 1472030, 1, 1, 0, 700), +(9101001, 1472030, 1, 1, 0, 700), +(2230101, 1040048, 1, 1, 0, 700), +(9300238, 1040048, 1, 1, 0, 700), +(9400245, 1040048, 1, 1, 0, 700), +(9101001, 1040048, 1, 1, 0, 700), +(2230101, 1060038, 1, 1, 0, 700), +(9300238, 1060038, 1, 1, 0, 700), +(9400245, 1060038, 1, 1, 0, 700), +(9101001, 1060038, 1, 1, 0, 700), +(2230101, 1040044, 1, 1, 0, 700), +(9300238, 1040044, 1, 1, 0, 700), +(9400245, 1040044, 1, 1, 0, 700), +(9101001, 1040044, 1, 1, 0, 700), +(2230101, 1082183, 1, 1, 0, 700), +(9300238, 1082183, 1, 1, 0, 700), +(9400245, 1082183, 1, 1, 0, 700), +(9101001, 1082183, 1, 1, 0, 700), +(2230101, 1492003, 1, 1, 0, 700), +(9300238, 1492003, 1, 1, 0, 700), +(9400245, 1492003, 1, 1, 0, 700), +(9101001, 1492003, 1, 1, 0, 700), +(2230107, 4000162, 1, 1, 0, 200000), +(2230107, 2000003, 1, 1, 0, 40000), +(2230107, 2002000, 1, 1, 0, 10000), +(2230107, 2000001, 1, 1, 0, 40000), +(2230107, 2044302, 1, 1, 0, 750), +(2230107, 2041045, 1, 1, 0, 750), +(2230107, 2060000, 10, 50, 0, 10000), +(2230107, 2061000, 10, 50, 0, 10000), +(2230107, 2043110, 1, 1, 0, 750), +(2230107, 4010002, 1, 1, 0, 7000), +(2230107, 4020005, 1, 1, 0, 7000), +(2230107, 1402000, 1, 1, 0, 700), +(2230107, 1072051, 1, 1, 0, 700), +(2230107, 1050029, 1, 1, 0, 700), +(2230107, 1082026, 1, 1, 0, 700), +(2230107, 1041051, 1, 1, 0, 700), +(2230107, 1061047, 1, 1, 0, 700), +(2230107, 1040024, 1, 1, 0, 700), +(2230107, 1062006, 1, 1, 0, 700), +(2230107, 1332004, 1, 1, 0, 700), +(2230107, 1041058, 1, 1, 0, 700), +(2230107, 1061054, 1, 1, 0, 700), +(2230107, 1072288, 1, 1, 0, 700), +(2230111, 4000197, 1, 1, 0, 200000), +(2230111, 2000001, 1, 1, 0, 40000), +(2230111, 2000003, 1, 1, 0, 40000), +(2230111, 2002000, 1, 1, 0, 10000), +(2230111, 2040301, 1, 1, 0, 750), +(2230111, 2043801, 1, 1, 0, 750), +(2230111, 2044301, 1, 1, 0, 750), +(2230111, 2381018, 1, 1, 0, 20000), +(2230111, 4010001, 1, 1, 0, 7000), +(2230111, 4020003, 1, 1, 0, 7000), +(2230111, 4010005, 1, 1, 0, 7000), +(2230111, 1061019, 1, 1, 0, 700), +(2230111, 1082006, 1, 1, 0, 700), +(2230111, 1302002, 1, 1, 0, 700), +(2230111, 1041023, 1, 1, 0, 700), +(2230111, 1082051, 1, 1, 0, 700), +(2230111, 1372004, 1, 1, 0, 700), +(2230111, 1452005, 1, 1, 0, 700), +(2230111, 1082049, 1, 1, 0, 700), +(2230111, 1040042, 1, 1, 0, 700), +(2230111, 1060031, 1, 1, 0, 700), +(2230111, 1482002, 1, 1, 0, 700), +(2100106, 2000001, 1, 1, 0, 40000), +(2100106, 2000003, 1, 1, 0, 40000), +(2100106, 2002004, 1, 1, 0, 10000), +(2100106, 2060000, 10, 50, 0, 10000), +(2100106, 2061000, 10, 50, 0, 10000), +(2100106, 2044501, 1, 1, 0, 750), +(2100106, 2330000, 1, 1, 0, 400), +(2100106, 2381019, 1, 1, 0, 20000), +(2100106, 4020000, 1, 1, 0, 7000), +(2100106, 4020007, 1, 1, 0, 7000), +(2100106, 4010007, 1, 1, 0, 7000), +(2100106, 1032004, 1, 1, 0, 700), +(2100106, 1432001, 1, 1, 0, 700), +(2100106, 1402002, 1, 1, 0, 700), +(2100106, 1002055, 1, 1, 0, 700), +(2100106, 1050001, 1, 1, 0, 700), +(2100106, 1432001, 1, 1, 0, 700), +(2100106, 1082068, 1, 1, 0, 700), +(2100106, 1432001, 1, 1, 0, 700), +(2100106, 1060037, 1, 1, 0, 700), +(2100106, 1040049, 1, 1, 0, 700), +(2100106, 1492002, 1, 1, 0, 700), +(2110300, 4000350, 1, 1, 0, 200000), +(9400239, 4000350, 1, 1, 0, 200000), +(9400248, 4000350, 1, 1, 0, 200000), +(2110300, 2000001, 1, 1, 0, 40000), +(9400239, 2000001, 1, 1, 0, 40000), +(9400248, 2000001, 1, 1, 0, 40000), +(2110300, 2000003, 1, 1, 0, 40000), +(9400239, 2000003, 1, 1, 0, 40000), +(9400248, 2000003, 1, 1, 0, 40000), +(2110300, 2002004, 1, 1, 0, 10000), +(9400239, 2002004, 1, 1, 0, 10000), +(9400248, 2002004, 1, 1, 0, 10000), +(2110300, 2060000, 10, 50, 0, 10000), +(9400239, 2060000, 10, 50, 0, 10000), +(9400248, 2060000, 10, 50, 0, 10000), +(2110300, 2061000, 10, 50, 0, 10000), +(9400239, 2061000, 10, 50, 0, 10000), +(9400248, 2061000, 10, 50, 0, 10000), +(2110300, 2044501, 1, 1, 0, 750), +(9400239, 2044501, 1, 1, 0, 750), +(9400248, 2044501, 1, 1, 0, 750), +(2110300, 2381020, 1, 1, 0, 20000), +(9400239, 2381020, 1, 1, 0, 20000), +(9400248, 2381020, 1, 1, 0, 20000), +(2110300, 4020000, 1, 1, 0, 7000), +(9400239, 4020000, 1, 1, 0, 7000), +(9400248, 4020000, 1, 1, 0, 7000), +(2110300, 4020007, 1, 1, 0, 7000), +(9400239, 4020007, 1, 1, 0, 7000), +(9400248, 4020007, 1, 1, 0, 7000), +(2110300, 4010007, 1, 1, 0, 7000), +(9400239, 4010007, 1, 1, 0, 7000), +(9400248, 4010007, 1, 1, 0, 7000), +(2110300, 1032004, 1, 1, 0, 700), +(9400239, 1032004, 1, 1, 0, 700), +(9400248, 1032004, 1, 1, 0, 700), +(2110300, 1432001, 1, 1, 0, 700), +(9400239, 1432001, 1, 1, 0, 700), +(9400248, 1432001, 1, 1, 0, 700), +(2110300, 1402002, 1, 1, 0, 700), +(9400239, 1402002, 1, 1, 0, 700), +(9400248, 1402002, 1, 1, 0, 700), +(2110300, 1002055, 1, 1, 0, 700), +(9400239, 1002055, 1, 1, 0, 700), +(9400248, 1002055, 1, 1, 0, 700), +(2110300, 1050001, 1, 1, 0, 700), +(9400239, 1050001, 1, 1, 0, 700), +(9400248, 1050001, 1, 1, 0, 700), +(2110300, 1432001, 1, 1, 0, 700), +(9400239, 1432001, 1, 1, 0, 700), +(9400248, 1432001, 1, 1, 0, 700), +(2110300, 1082068, 1, 1, 0, 700), +(9400239, 1082068, 1, 1, 0, 700), +(9400248, 1082068, 1, 1, 0, 700), +(2110300, 1432001, 1, 1, 0, 700), +(9400239, 1432001, 1, 1, 0, 700), +(9400248, 1432001, 1, 1, 0, 700), +(2110300, 1060037, 1, 1, 0, 700), +(9400239, 1060037, 1, 1, 0, 700), +(9400248, 1060037, 1, 1, 0, 700), +(2110300, 1040049, 1, 1, 0, 700), +(9400239, 1040049, 1, 1, 0, 700), +(9400248, 1040049, 1, 1, 0, 700), +(2110300, 1002619, 1, 1, 0, 700), +(9400239, 1002619, 1, 1, 0, 700), +(9400248, 1002619, 1, 1, 0, 700), +(2230131, 2000001, 1, 1, 0, 40000), +(2230131, 2002000, 1, 1, 0, 10000), +(2230131, 2000003, 1, 1, 0, 40000), +(2230131, 2000002, 1, 1, 0, 40000), +(2230131, 2381083, 1, 1, 0, 20000), +(2230131, 2060000, 10, 50, 0, 10000), +(2230131, 2061000, 10, 50, 0, 10000), +(2230131, 2049101, 1, 1, 0, 400), +(2230131, 2044302, 1, 1, 0, 750), +(2230131, 4010002, 1, 1, 0, 7000), +(2230131, 4020003, 1, 1, 0, 7000), +(2230131, 4010003, 1, 1, 0, 7000), +(2230131, 1032000, 1, 1, 0, 700), +(2230131, 1032004, 1, 1, 0, 700), +(2230131, 1412002, 1, 1, 0, 700), +(2230131, 1060018, 1, 1, 0, 700), +(2230131, 1040026, 1, 1, 0, 700), +(2230131, 1040021, 1, 1, 0, 700), +(2230131, 1040009, 1, 1, 0, 700), +(2230131, 1432003, 1, 1, 0, 700), +(2230131, 1312007, 1, 1, 0, 700), +(2230131, 1372003, 1, 1, 0, 700), +(2230131, 1050030, 1, 1, 0, 700), +(2230131, 1002035, 1, 1, 0, 700), +(2230131, 1002158, 1, 1, 0, 700), +(2230131, 1040048, 1, 1, 0, 700), +(2230131, 1060038, 1, 1, 0, 700), +(2230131, 1082183, 1, 1, 0, 700), +(2230131, 1492003, 1, 1, 0, 700), +(2230102, 4000020, 1, 1, 0, 200000), +(2230102, 4000021, 1, 1, 0, 200000), +(2230102, 4003004, 1, 1, 0, 7000), +(2230102, 4001372, 1, 1, 0, 7000), +(2230102, 2000001, 1, 1, 0, 40000), +(2230102, 2000003, 1, 1, 0, 40000), +(2230102, 2002004, 1, 1, 0, 10000), +(2230102, 4006001, 1, 1, 0, 7000), +(2230102, 2330001, 1, 1, 0, 400), +(2230102, 2381022, 1, 1, 0, 20000), +(2230102, 4010003, 1, 1, 0, 7000), +(2230102, 4020004, 1, 1, 0, 7000), +(2230102, 1032000, 1, 1, 0, 700), +(2230102, 1032002, 1, 1, 0, 700), +(2230102, 1432012, 1, 1, 0, 700), +(2230102, 1412011, 1, 1, 0, 700), +(2230102, 1432003, 1, 1, 0, 700), +(2230102, 1072039, 1, 1, 0, 700), +(2230102, 1402006, 1, 1, 0, 700), +(2230102, 1072041, 1, 1, 0, 700), +(2230102, 1382017, 1, 1, 0, 700), +(2230102, 1051005, 1, 1, 0, 700), +(2230102, 1051004, 1, 1, 0, 700), +(2230102, 1002064, 1, 1, 0, 700), +(2230102, 1002579, 1, 1, 0, 700), +(2230102, 1452016, 1, 1, 0, 700), +(2230102, 1452022, 1, 1, 0, 700), +(2230102, 1041013, 1, 1, 0, 700), +(2230102, 1061024, 1, 1, 0, 700), +(2230102, 1061006, 1, 1, 0, 700), +(2230102, 1041028, 1, 1, 0, 700), +(2230102, 1040079, 1, 1, 0, 700), +(2230102, 1060069, 1, 1, 0, 700), +(2230102, 1472032, 1, 1, 0, 700), +(2230102, 1332025, 1, 1, 0, 700), +(2230102, 1072033, 1, 1, 0, 700), +(2230102, 1472009, 1, 1, 0, 700), +(2230102, 1072085, 1, 1, 0, 700), +(2230102, 1082186, 1, 1, 0, 700), +(9400000, 4000064, 1, 1, 0, 200000), +(9400009, 4000064, 1, 1, 0, 200000), +(9400000, 4130004, 1, 1, 0, 3000), +(9400009, 4130004, 1, 1, 0, 3000), +(9400000, 4130006, 1, 1, 0, 3000), +(9400009, 4130006, 1, 1, 0, 3000), +(9400000, 4130005, 1, 1, 0, 3000), +(9400009, 4130005, 1, 1, 0, 3000), +(9400000, 2000006, 1, 1, 0, 40000), +(9400009, 2000006, 1, 1, 0, 40000), +(9400000, 2022014, 1, 1, 0, 3000), +(9400009, 2022014, 1, 1, 0, 3000), +(9400000, 2070002, 1, 1, 0, 400), +(9400009, 2070002, 1, 1, 0, 400), +(9400000, 2060001, 10, 50, 0, 10000), +(9400009, 2060001, 10, 50, 0, 10000), +(9400000, 2040013, 1, 1, 0, 750), +(9400009, 2040013, 1, 1, 0, 750), +(9400000, 2040719, 1, 1, 0, 750), +(9400009, 2040719, 1, 1, 0, 750), +(9400000, 2044904, 1, 1, 0, 750), +(9400009, 2044904, 1, 1, 0, 750), +(9400000, 4010000, 1, 1, 0, 7000), +(9400009, 4010000, 1, 1, 0, 7000), +(9400000, 4020006, 1, 1, 0, 7000), +(9400009, 4020006, 1, 1, 0, 7000), +(9400000, 1302027, 1, 1, 0, 700), +(9400009, 1302027, 1, 1, 0, 700), +(9400000, 1072056, 1, 1, 0, 700), +(9400009, 1072056, 1, 1, 0, 700), +(9400000, 1092008, 1, 1, 0, 700), +(9400009, 1092008, 1, 1, 0, 700), +(9400000, 1442013, 1, 1, 0, 700), +(9400009, 1442013, 1, 1, 0, 700), +(9400000, 1050006, 1, 1, 0, 700), +(9400009, 1050006, 1, 1, 0, 700), +(9400000, 1051011, 1, 1, 0, 700), +(9400009, 1051011, 1, 1, 0, 700), +(9400000, 1372003, 1, 1, 0, 700), +(9400009, 1372003, 1, 1, 0, 700), +(9400000, 1452005, 1, 1, 0, 700), +(9400009, 1452005, 1, 1, 0, 700), +(9400000, 1002172, 1, 1, 0, 700), +(9400009, 1002172, 1, 1, 0, 700), +(9400000, 1082032, 1, 1, 0, 700), +(9400009, 1082032, 1, 1, 0, 700), +(2230106, 2002005, 1, 1, 0, 10000), +(9410019, 2002005, 1, 1, 0, 10000), +(2230106, 2002001, 1, 1, 0, 10000), +(9410019, 2002001, 1, 1, 0, 10000), +(2230106, 2381021, 1, 1, 0, 20000), +(9410019, 2381021, 1, 1, 0, 20000), +(2230106, 4010003, 1, 1, 0, 7000), +(9410019, 4010003, 1, 1, 0, 7000), +(2230106, 4020004, 1, 1, 0, 7000), +(9410019, 4020004, 1, 1, 0, 7000), +(2230106, 4004003, 1, 1, 0, 3000), +(9410019, 4004003, 1, 1, 0, 3000), +(2230106, 1322023, 1, 1, 0, 700), +(9410019, 1322023, 1, 1, 0, 700), +(2230106, 1442014, 1, 1, 0, 700), +(9410019, 1442014, 1, 1, 0, 700), +(2230106, 1072051, 1, 1, 0, 700), +(9410019, 1072051, 1, 1, 0, 700), +(2230106, 1040040, 1, 1, 0, 700), +(9410019, 1040040, 1, 1, 0, 700), +(2230106, 1002158, 1, 1, 0, 700), +(9410019, 1002158, 1, 1, 0, 700), +(2230106, 1332013, 1, 1, 0, 700), +(9410019, 1332013, 1, 1, 0, 700), +(2230106, 1332009, 1, 1, 0, 700), +(9410019, 1332009, 1, 1, 0, 700), +(2230106, 1041050, 1, 1, 0, 700), +(9410019, 1041050, 1, 1, 0, 700), +(2230106, 1061046, 1, 1, 0, 700), +(9410019, 1061046, 1, 1, 0, 700), +(2230106, 1041040, 1, 1, 0, 700), +(9410019, 1041040, 1, 1, 0, 700), +(2230106, 1061033, 1, 1, 0, 700), +(9410019, 1061033, 1, 1, 0, 700), +(2230106, 1002146, 1, 1, 0, 700), +(9410019, 1002146, 1, 1, 0, 700), +(2230106, 1052104, 1, 1, 0, 700), +(9410019, 1052104, 1, 1, 0, 700), +(9400540, 4032023, 1, 1, 0, 10000), +(9400541, 4032023, 1, 1, 0, 10000), +(9400540, 2000001, 1, 1, 0, 40000), +(9400541, 2000001, 1, 1, 0, 40000), +(9400540, 2010004, 1, 1, 0, 3000), +(9400541, 2010004, 1, 1, 0, 3000), +(9400540, 2040601, 1, 1, 0, 750), +(9400541, 2040601, 1, 1, 0, 750), +(9400540, 2060004, 10, 50, 0, 10000), +(9400541, 2060004, 10, 50, 0, 10000), +(9400540, 2061004, 10, 50, 0, 10000), +(9400541, 2061004, 10, 50, 0, 10000), +(9400540, 4010004, 1, 1, 0, 7000), +(9400541, 4010004, 1, 1, 0, 7000), +(9400540, 4020005, 1, 1, 0, 7000), +(9400541, 4020005, 1, 1, 0, 7000), +(9400540, 1032009, 1, 1, 0, 700), +(9400541, 1032009, 1, 1, 0, 700), +(9400540, 1302004, 1, 1, 0, 700), +(9400541, 1302004, 1, 1, 0, 700), +(9400540, 1002047, 1, 1, 0, 700), +(9400541, 1002047, 1, 1, 0, 700), +(9400540, 1062006, 1, 1, 0, 700), +(9400541, 1062006, 1, 1, 0, 700), +(9400540, 1060050, 1, 1, 0, 700), +(9400541, 1060050, 1, 1, 0, 700), +(2100103, 4000330, 1, 1, 0, 200000), +(9300221, 4000330, 1, 1, 0, 200000), +(2100103, 4030012, 1, 1, 0, 10000), +(9300221, 4030012, 1, 1, 0, 10000), +(2100103, 2000001, 1, 1, 0, 40000), +(9300221, 2000001, 1, 1, 0, 40000), +(2100103, 2000003, 1, 1, 0, 40000), +(9300221, 2000003, 1, 1, 0, 40000), +(2100103, 2022155, 1, 1, 0, 3000), +(9300221, 2022155, 1, 1, 0, 3000), +(2100103, 2060000, 10, 50, 0, 10000), +(9300221, 2060000, 10, 50, 0, 10000), +(2100103, 2061000, 10, 50, 0, 10000), +(9300221, 2061000, 10, 50, 0, 10000), +(2100103, 2040501, 1, 1, 0, 750), +(9300221, 2040501, 1, 1, 0, 750), +(2100103, 2381023, 1, 1, 0, 20000), +(9300221, 2381023, 1, 1, 0, 20000), +(2100103, 4010003, 1, 1, 0, 7000), +(9300221, 4010003, 1, 1, 0, 7000), +(2100103, 4020004, 1, 1, 0, 7000), +(9300221, 4020004, 1, 1, 0, 7000), +(2100103, 4010007, 1, 1, 0, 7000), +(9300221, 4010007, 1, 1, 0, 7000), +(2100103, 1002096, 1, 1, 0, 700), +(9300221, 1002096, 1, 1, 0, 700), +(2100103, 1322009, 1, 1, 0, 700), +(9300221, 1322009, 1, 1, 0, 700), +(2100103, 1072054, 1, 1, 0, 700), +(9300221, 1072054, 1, 1, 0, 700), +(2100103, 1092002, 1, 1, 0, 700), +(9300221, 1092002, 1, 1, 0, 700), +(2100103, 1050011, 1, 1, 0, 700), +(9300221, 1050011, 1, 1, 0, 700), +(2100103, 1432002, 1, 1, 0, 700), +(9300221, 1432002, 1, 1, 0, 700), +(2100103, 1072078, 1, 1, 0, 700), +(9300221, 1072078, 1, 1, 0, 700), +(2100103, 1082016, 1, 1, 0, 700), +(9300221, 1082016, 1, 1, 0, 700), +(2100103, 1041058, 1, 1, 0, 700), +(9300221, 1041058, 1, 1, 0, 700), +(2100103, 1061054, 1, 1, 0, 700), +(9300221, 1061054, 1, 1, 0, 700), +(2100103, 1072291, 1, 1, 0, 700), +(9300221, 1072291, 1, 1, 0, 700), +(9400609, 2000003, 1, 4, 0, 40000), +(9400609, 2000002, 1, 4, 0, 40000), +(9400609, 2002004, 1, 4, 0, 10000), +(9400609, 4010000, 1, 1, 0, 7000), +(9400609, 4010004, 1, 1, 0, 7000), +(9400609, 4010002, 1, 1, 0, 7000), +(9400609, 4010001, 1, 1, 0, 7000), +(9400610, 2000002, 1, 4, 0, 40000), +(9400623, 2000002, 1, 4, 0, 40000), +(9400610, 4010002, 1, 1, 0, 7000), +(9400623, 4010002, 1, 1, 0, 7000), +(9400612, 4020000, 1, 1, 0, 7000), +(9400612, 4010001, 1, 1, 0, 7000), +(9400612, 4010002, 1, 1, 0, 7000), +(9400612, 2000003, 1, 4, 0, 40000), +(9400612, 2000002, 1, 4, 0, 40000), +(9400612, 4010000, 1, 1, 0, 7000), +(9400612, 1082257, 1, 1, 0, 40000), +(9400612, 1003032, 1, 1, 0, 40000), +(9400612, 1072420, 1, 1, 0, 40000), +(2230112, 4000020, 1, 1, 0, 200000), +(2230112, 4003004, 1, 1, 0, 7000), +(2230112, 4000021, 1, 1, 0, 200000), +(2230112, 4000047, 1, 1, 0, 200000), +(2230112, 2000001, 1, 1, 0, 40000), +(2230112, 2002004, 1, 1, 0, 10000), +(2230112, 2060000, 10, 50, 0, 10000), +(2230112, 2000003, 1, 1, 0, 40000), +(2230112, 2061000, 10, 50, 0, 10000), +(2230112, 2330001, 1, 1, 0, 400), +(2230112, 4010003, 1, 1, 0, 7000), +(2230112, 4020004, 1, 1, 0, 7000), +(2230112, 1032000, 1, 1, 0, 700), +(2230112, 1032002, 1, 1, 0, 700), +(2230112, 1072039, 1, 1, 0, 700), +(2230112, 1432003, 1, 1, 0, 700), +(2230112, 1402006, 1, 1, 0, 700), +(2230112, 1412005, 1, 1, 0, 700), +(2230112, 1051005, 1, 1, 0, 700), +(2230112, 1002064, 1, 1, 0, 700), +(2230112, 1382017, 1, 1, 0, 700), +(2230112, 1002151, 1, 1, 0, 700), +(2230112, 1041013, 1, 1, 0, 700), +(2230112, 1061024, 1, 1, 0, 700), +(2230112, 1040079, 1, 1, 0, 700), +(2230112, 1060069, 1, 1, 0, 700), +(2230112, 1452005, 1, 1, 0, 700), +(2230112, 1462004, 1, 1, 0, 700), +(2230112, 1002166, 1, 1, 0, 700), +(2230112, 1072033, 1, 1, 0, 700), +(2230112, 1060050, 1, 1, 0, 700), +(2230112, 1082186, 1, 1, 0, 700), +(2230100, 4000007, 1, 1, 0, 200000), +(2230100, 4030012, 1, 1, 0, 10000), +(2230100, 4001373, 1, 1, 0, 7000), +(2230100, 2000001, 1, 1, 0, 40000), +(2230100, 2000003, 1, 1, 0, 40000), +(2230100, 2002001, 1, 1, 0, 10000), +(2230100, 2060000, 10, 50, 0, 10000), +(2230100, 2061000, 10, 50, 0, 10000), +(2230100, 2044402, 1, 1, 0, 750), +(2230100, 2381024, 1, 1, 0, 20000), +(2230100, 4010004, 1, 1, 0, 7000), +(2230100, 4020005, 1, 1, 0, 7000), +(2230100, 1032009, 1, 1, 0, 700), +(2230100, 1302020, 1, 1, 0, 700), +(2230100, 1051012, 1, 1, 0, 700), +(2230100, 1302004, 1, 1, 0, 700), +(2230100, 1002047, 1, 1, 0, 700), +(2230100, 1050000, 1, 1, 0, 700), +(2230100, 1382012, 1, 1, 0, 700), +(2230100, 1050026, 1, 1, 0, 700), +(2230100, 1062006, 1, 1, 0, 700), +(2230100, 1040022, 1, 1, 0, 700), +(2230100, 1041060, 1, 1, 0, 700), +(2230100, 1061056, 1, 1, 0, 700), +(2230100, 1482003, 1, 1, 0, 700), +(2100107, 2000001, 1, 1, 0, 40000), +(2100107, 2000003, 1, 1, 0, 40000), +(2100107, 2060000, 10, 50, 0, 10000), +(2100107, 2061000, 10, 50, 0, 10000), +(2100107, 2070002, 1, 1, 0, 400), +(2100107, 2048001, 1, 1, 0, 750), +(2100107, 2381025, 1, 1, 0, 20000), +(2100107, 4020002, 1, 1, 0, 7000), +(2100107, 4020003, 1, 1, 0, 7000), +(2100107, 4010007, 1, 1, 0, 7000), +(2100107, 1051011, 1, 1, 0, 700), +(2100107, 1382017, 1, 1, 0, 700), +(2100107, 1002141, 1, 1, 0, 700), +(2100107, 1040059, 1, 1, 0, 700), +(2100107, 1060045, 1, 1, 0, 700), +(2100107, 1332004, 1, 1, 0, 700), +(2100107, 1492003, 1, 1, 0, 700), +(9400547, 4000391, 1, 1, 0, 200000), +(9400550, 4000391, 1, 1, 0, 200000), +(9400547, 4030012, 1, 1, 0, 10000), +(9400550, 4030012, 1, 1, 0, 10000), +(9400547, 4131010, 1, 1, 0, 3000), +(9400550, 4131010, 1, 1, 0, 3000), +(9400547, 2000002, 1, 1, 0, 40000), +(9400550, 2000002, 1, 1, 0, 40000), +(9400547, 2000003, 1, 1, 0, 40000), +(9400550, 2000003, 1, 1, 0, 40000), +(9400547, 2002007, 1, 1, 0, 10000), +(9400550, 2002007, 1, 1, 0, 10000), +(9400547, 2060000, 10, 50, 0, 10000), +(9400550, 2060000, 10, 50, 0, 10000), +(9400547, 2061000, 10, 50, 0, 10000), +(9400550, 2061000, 10, 50, 0, 10000), +(9400547, 2040801, 1, 1, 0, 750), +(9400550, 2040801, 1, 1, 0, 750), +(9400547, 2070002, 1, 1, 0, 400), +(9400550, 2070002, 1, 1, 0, 400), +(9400547, 4010001, 1, 1, 0, 7000), +(9400550, 4010001, 1, 1, 0, 7000), +(9400547, 4010002, 1, 1, 0, 7000), +(9400550, 4010002, 1, 1, 0, 7000), +(9400547, 4004002, 1, 1, 0, 3000), +(9400550, 4004002, 1, 1, 0, 3000), +(9400547, 1332010, 1, 1, 0, 700), +(9400550, 1332010, 1, 1, 0, 700), +(9400547, 1041041, 1, 1, 0, 700), +(9400550, 1041041, 1, 1, 0, 700), +(9400547, 1061034, 1, 1, 0, 700), +(9400550, 1061034, 1, 1, 0, 700), +(9400547, 1382002, 1, 1, 0, 700), +(9400550, 1382002, 1, 1, 0, 700), +(9400547, 1050028, 1, 1, 0, 700), +(9400550, 1050028, 1, 1, 0, 700), +(9400547, 1002162, 1, 1, 0, 700), +(9400550, 1002162, 1, 1, 0, 700), +(9400547, 1082042, 1, 1, 0, 700), +(9400550, 1082042, 1, 1, 0, 700), +(9400547, 1082043, 1, 1, 0, 700), +(9400550, 1082043, 1, 1, 0, 700), +(9400547, 1332010, 1, 1, 0, 700), +(9400550, 1332010, 1, 1, 0, 700), +(9400547, 1472018, 1, 1, 0, 700), +(9400550, 1472018, 1, 1, 0, 700), +(2100104, 4000331, 1, 1, 0, 200000), +(9300222, 4000331, 1, 1, 0, 200000), +(2100104, 2000001, 1, 1, 0, 40000), +(9300222, 2000001, 1, 1, 0, 40000), +(2100104, 2002003, 1, 1, 0, 10000), +(9300222, 2002003, 1, 1, 0, 10000), +(2100104, 2022155, 1, 1, 0, 3000), +(9300222, 2022155, 1, 1, 0, 3000), +(2100104, 2060000, 10, 50, 0, 10000), +(9300222, 2060000, 10, 50, 0, 10000), +(2100104, 2061000, 10, 50, 0, 10000), +(9300222, 2061000, 10, 50, 0, 10000), +(2100104, 2041044, 1, 1, 0, 750), +(9300222, 2041044, 1, 1, 0, 750), +(2100104, 2043216, 1, 1, 0, 750), +(9300222, 2043216, 1, 1, 0, 750), +(2100104, 2381028, 1, 1, 0, 20000), +(9300222, 2381028, 1, 1, 0, 20000), +(2100104, 4020006, 1, 1, 0, 7000), +(9300222, 4020006, 1, 1, 0, 7000), +(2100104, 4020005, 1, 1, 0, 7000), +(9300222, 4020005, 1, 1, 0, 7000), +(2100104, 4004001, 1, 1, 0, 3000), +(9300222, 4004001, 1, 1, 0, 3000), +(2100104, 4010007, 1, 1, 0, 7000), +(9300222, 4010007, 1, 1, 0, 7000), +(2100104, 1322003, 1, 1, 0, 700), +(9300222, 1322003, 1, 1, 0, 700), +(2100104, 1442001, 1, 1, 0, 700), +(9300222, 1442001, 1, 1, 0, 700), +(2100104, 1002004, 1, 1, 0, 700), +(9300222, 1002004, 1, 1, 0, 700), +(2100104, 1082052, 1, 1, 0, 700), +(9300222, 1082052, 1, 1, 0, 700), +(2100104, 1092019, 1, 1, 0, 700), +(9300222, 1092019, 1, 1, 0, 700), +(2100104, 1082186, 1, 1, 0, 700), +(9300222, 1082186, 1, 1, 0, 700), +(9420500, 4000370, 1, 1, 0, 200000), +(9420500, 4000369, 1, 1, 0, 200000), +(9420500, 2002002, 1, 1, 0, 10000), +(9420500, 2000001, 1, 1, 0, 40000), +(9420500, 2002003, 1, 1, 0, 10000), +(9420500, 2060000, 10, 50, 0, 10000), +(9420500, 2061000, 10, 50, 0, 10000), +(9420500, 2044002, 1, 1, 0, 750), +(9420500, 4010006, 1, 1, 0, 7000), +(9420500, 4020005, 1, 1, 0, 7000), +(9420500, 1092007, 1, 1, 0, 700), +(9420500, 1002141, 1, 1, 0, 700), +(9420500, 1060052, 1, 1, 0, 700), +(9420500, 1332001, 1, 1, 0, 700), +(9420500, 1002178, 1, 1, 0, 700), +(9420500, 1051007, 1, 1, 0, 700), +(9420500, 1051009, 1, 1, 0, 700), +(2230104, 4000098, 1, 1, 0, 200000), +(2230104, 4131010, 1, 1, 0, 3000), +(2230104, 2000002, 1, 1, 0, 40000), +(2230104, 2000003, 1, 1, 0, 40000), +(2230104, 2002007, 1, 1, 0, 10000), +(2230104, 2040601, 1, 1, 0, 750), +(2230104, 2070002, 1, 1, 0, 400), +(2230104, 2381027, 1, 1, 0, 20000), +(2230104, 4010002, 1, 1, 0, 7000), +(2230104, 4010001, 1, 1, 0, 7000), +(2230104, 4004002, 1, 1, 0, 3000), +(2230104, 1302020, 1, 1, 0, 700), +(2230104, 1332010, 1, 1, 0, 700), +(2230104, 1041041, 1, 1, 0, 700), +(2230104, 1061034, 1, 1, 0, 700), +(2230104, 1382002, 1, 1, 0, 700), +(2230104, 1050028, 1, 1, 0, 700), +(2230104, 1082043, 1, 1, 0, 700), +(2230104, 1332010, 1, 1, 0, 700), +(2230104, 1052104, 1, 1, 0, 700), +(2230109, 4031209, 1, 1, 0, 7000), +(9410016, 4031209, 1, 1, 0, 7000), +(2230109, 4131010, 1, 1, 0, 3000), +(9410016, 4131010, 1, 1, 0, 3000), +(2230109, 2000002, 1, 1, 0, 40000), +(9410016, 2000002, 1, 1, 0, 40000), +(2230109, 2002002, 1, 1, 0, 10000), +(9410016, 2002002, 1, 1, 0, 10000), +(2230109, 2070002, 1, 1, 0, 400), +(9410016, 2070002, 1, 1, 0, 400), +(2230109, 2040801, 1, 1, 0, 750), +(9410016, 2040801, 1, 1, 0, 750), +(2230109, 2040707, 1, 1, 0, 750), +(9410016, 2040707, 1, 1, 0, 750), +(2230109, 4006000, 1, 1, 0, 7000), +(9410016, 4006000, 1, 1, 0, 7000), +(2230109, 2381026, 1, 1, 0, 20000), +(9410016, 2381026, 1, 1, 0, 20000), +(2230109, 4010001, 1, 1, 0, 7000), +(9410016, 4010001, 1, 1, 0, 7000), +(2230109, 4020003, 1, 1, 0, 7000), +(9410016, 4020003, 1, 1, 0, 7000), +(2230109, 4004002, 1, 1, 0, 3000), +(9410016, 4004002, 1, 1, 0, 3000), +(2230109, 1442011, 1, 1, 0, 700), +(9410016, 1442011, 1, 1, 0, 700), +(2230109, 1322024, 1, 1, 0, 700), +(9410016, 1322024, 1, 1, 0, 700), +(2230109, 1032007, 1, 1, 0, 700), +(9410016, 1032007, 1, 1, 0, 700), +(2230109, 1072027, 1, 1, 0, 700), +(9410016, 1072027, 1, 1, 0, 700), +(2230109, 1040041, 1, 1, 0, 700), +(9410016, 1040041, 1, 1, 0, 700), +(2230109, 1060030, 1, 1, 0, 700), +(9410016, 1060030, 1, 1, 0, 700), +(2230109, 1050021, 1, 1, 0, 700), +(9410016, 1050021, 1, 1, 0, 700), +(2230109, 1002065, 1, 1, 0, 700), +(9410016, 1002065, 1, 1, 0, 700), +(2230109, 1060051, 1, 1, 0, 700), +(9410016, 1060051, 1, 1, 0, 700), +(2230109, 1051007, 1, 1, 0, 700), +(9410016, 1051007, 1, 1, 0, 700), +(2230109, 1002619, 1, 1, 0, 700), +(9410016, 1002619, 1, 1, 0, 700), +(2230200, 4000165, 1, 1, 0, 200000), +(2230200, 4031209, 1, 1, 0, 7000), +(2230200, 4006000, 1, 1, 0, 7000), +(2230200, 2000001, 1, 1, 0, 40000), +(2230200, 2040501, 1, 1, 0, 750), +(2230200, 2044601, 1, 1, 0, 750), +(2230200, 2381029, 1, 1, 0, 20000), +(2230200, 4010006, 1, 1, 0, 7000), +(2230200, 4020002, 1, 1, 0, 7000), +(2230200, 4004000, 1, 1, 0, 3000), +(2230200, 1322024, 1, 1, 0, 700), +(2230200, 1412000, 1, 1, 0, 700), +(2230200, 1412006, 1, 1, 0, 700), +(2230200, 1422001, 1, 1, 0, 700), +(2230200, 1462000, 1, 1, 0, 700), +(2230200, 1002160, 1, 1, 0, 700), +(2230200, 1040072, 1, 1, 0, 700), +(2230200, 1040062, 1, 1, 0, 700), +(2230200, 1060051, 1, 1, 0, 700), +(2230200, 1072291, 1, 1, 0, 700), +(2110301, 4000351, 1, 1, 0, 200000), +(9300157, 4000351, 1, 1, 0, 200000), +(2110301, 2000001, 1, 1, 0, 40000), +(9300157, 2000001, 1, 1, 0, 40000), +(2110301, 2000003, 1, 1, 0, 40000), +(9300157, 2000003, 1, 1, 0, 40000), +(2110301, 2330001, 1, 1, 0, 400), +(9300157, 2330001, 1, 1, 0, 400), +(2110301, 2043701, 1, 1, 0, 750), +(9300157, 2043701, 1, 1, 0, 750), +(2110301, 2043002, 1, 1, 0, 750), +(9300157, 2043002, 1, 1, 0, 750), +(2110301, 2381031, 1, 1, 0, 20000), +(9300157, 2381031, 1, 1, 0, 20000), +(2110301, 4004002, 1, 1, 0, 3000), +(9300157, 4004002, 1, 1, 0, 3000), +(2110301, 4010007, 1, 1, 0, 7000), +(9300157, 4010007, 1, 1, 0, 7000), +(2110301, 4010001, 1, 1, 0, 7000), +(9300157, 4010001, 1, 1, 0, 7000), +(2110301, 1332009, 1, 1, 0, 700), +(9300157, 1332009, 1, 1, 0, 700), +(2110301, 1082005, 1, 1, 0, 700), +(9300157, 1082005, 1, 1, 0, 700), +(2110301, 1050029, 1, 1, 0, 700), +(9300157, 1050029, 1, 1, 0, 700), +(2110301, 1002164, 1, 1, 0, 700), +(9300157, 1002164, 1, 1, 0, 700), +(2110301, 1332009, 1, 1, 0, 700), +(9300157, 1332009, 1, 1, 0, 700), +(2110301, 1040062, 1, 1, 0, 700), +(9300157, 1040062, 1, 1, 0, 700), +(2110301, 1492003, 1, 1, 0, 700), +(9300157, 1492003, 1, 1, 0, 700), +(9400010, 4000065, 1, 1, 0, 200000), +(9400010, 4130013, 1, 1, 0, 3000), +(9400010, 4130002, 1, 1, 0, 3000), +(9400010, 4130001, 1, 1, 0, 3000), +(9400010, 2022023, 1, 1, 0, 3000), +(9400010, 2022024, 1, 1, 0, 3000), +(9400010, 2040408, 1, 1, 0, 750), +(9400010, 2044209, 1, 1, 0, 750), +(9400010, 4010006, 1, 1, 0, 7000), +(9400010, 4020004, 1, 1, 0, 7000), +(9400010, 1332020, 1, 1, 0, 700), +(9400010, 1032004, 1, 1, 0, 700), +(9400010, 1442021, 1, 1, 0, 700), +(9400010, 1432016, 1, 1, 0, 700), +(9400010, 1322015, 1, 1, 0, 700), +(9400010, 1322010, 1, 1, 0, 700), +(9400010, 1322011, 1, 1, 0, 700), +(9400010, 1072076, 1, 1, 0, 700), +(9400010, 1072077, 1, 1, 0, 700), +(9400010, 1041067, 1, 1, 0, 700), +(9400010, 1041068, 1, 1, 0, 700), +(9400010, 1060063, 1, 1, 0, 700), +(9400010, 1060064, 1, 1, 0, 700), +(9400010, 1051008, 1, 1, 0, 700), +(5200001, 4000084, 1, 1, 0, 200000), +(5200001, 2000001, 1, 1, 0, 40000), +(5200001, 2000003, 1, 1, 0, 40000), +(5200001, 2060001, 10, 50, 0, 10000), +(5200001, 2061001, 10, 50, 0, 10000), +(5200001, 4006000, 1, 1, 0, 7000), +(5200001, 4006001, 1, 1, 0, 7000), +(5200001, 2041016, 1, 1, 0, 750), +(5200001, 2381037, 1, 1, 0, 20000), +(5200001, 2049000, 1, 1, 0, 400), +(5200001, 4010002, 1, 1, 0, 7000), +(5200001, 4020002, 1, 1, 0, 7000), +(5200001, 4004001, 1, 1, 0, 3000), +(5200001, 1322009, 1, 1, 0, 700), +(5200001, 1442003, 1, 1, 0, 700), +(5200001, 1422007, 1, 1, 0, 700), +(5200001, 1050026, 1, 1, 0, 700), +(5200001, 1002142, 1, 1, 0, 700), +(5200001, 1040024, 1, 1, 0, 700), +(5200001, 1062006, 1, 1, 0, 700), +(5200001, 1041047, 1, 1, 0, 700), +(5200001, 1061043, 1, 1, 0, 700), +(5200002, 4000085, 1, 1, 0, 200000), +(5200002, 2000001, 1, 1, 0, 40000), +(5200002, 2000003, 1, 1, 0, 40000), +(5200002, 2060001, 10, 50, 0, 10000), +(5200002, 2061001, 10, 50, 0, 10000), +(5200002, 4006000, 1, 1, 0, 7000), +(5200002, 2040805, 1, 1, 0, 750), +(5200002, 2381038, 1, 1, 0, 20000), +(5200002, 4010005, 1, 1, 0, 7000), +(5200002, 4020000, 1, 1, 0, 7000), +(5200002, 4004001, 1, 1, 0, 3000), +(5200002, 1032009, 1, 1, 0, 700), +(5200002, 1050000, 1, 1, 0, 700), +(5200002, 1041064, 1, 1, 0, 700), +(5200002, 1082052, 1, 1, 0, 700), +(5200002, 1061050, 1, 1, 0, 700), +(5200002, 1452006, 1, 1, 0, 700), +(5200002, 1041059, 1, 1, 0, 700), +(5200002, 1061055, 1, 1, 0, 700), +(3000000, 4000063, 1, 1, 0, 200000), +(3000000, 2000001, 1, 1, 0, 40000), +(3000000, 2000003, 1, 1, 0, 40000), +(3000000, 2041046, 1, 1, 0, 750), +(3000000, 2041045, 1, 1, 0, 750), +(3000000, 2041016, 1, 1, 0, 750), +(3000000, 4006000, 1, 1, 0, 7000), +(3000000, 2381032, 1, 1, 0, 20000), +(3000000, 4010002, 1, 1, 0, 7000), +(3000000, 4020004, 1, 1, 0, 7000), +(3000000, 4004000, 1, 1, 0, 3000), +(3000000, 1312016, 1, 1, 0, 700), +(3000000, 1040021, 1, 1, 0, 700), +(3000000, 1382009, 1, 1, 0, 700), +(3000000, 1382018, 1, 1, 0, 700), +(3000000, 1002137, 1, 1, 0, 700), +(3000000, 1040061, 1, 1, 0, 700), +(3000000, 1082037, 1, 1, 0, 700), +(3000000, 1002622, 1, 1, 0, 700), +(9400002, 4000066, 1, 1, 0, 200000), +(9400002, 4130015, 1, 1, 0, 3000), +(9400002, 4130013, 1, 1, 0, 3000), +(9400002, 4130014, 1, 1, 0, 3000), +(9400002, 2044002, 1, 1, 0, 750), +(9400002, 2044009, 1, 1, 0, 750), +(9400002, 2043109, 1, 1, 0, 750), +(9400002, 2048001, 1, 1, 0, 750), +(9400002, 4020001, 1, 1, 0, 7000), +(9400002, 4010001, 1, 1, 0, 7000), +(9400002, 1322027, 1, 1, 0, 700), +(9400002, 1302031, 1, 1, 0, 700), +(9400002, 1302017, 1, 1, 0, 700), +(9400002, 1002418, 1, 1, 0, 700), +(9400002, 1051014, 1, 1, 0, 700), +(9400002, 1312006, 1, 1, 0, 700), +(9400002, 1072039, 1, 1, 0, 700), +(9400002, 1040073, 1, 1, 0, 700), +(9400002, 1462004, 1, 1, 0, 700), +(9400002, 1002138, 1, 1, 0, 700), +(9400002, 1002139, 1, 1, 0, 700), +(3230400, 4000127, 1, 1, 0, 200000), +(9200016, 4000127, 1, 1, 0, 200000), +(9400238, 4000127, 1, 1, 0, 200000), +(9400247, 4000127, 1, 1, 0, 200000), +(9500107, 4000127, 1, 1, 0, 200000), +(3230400, 4030009, 1, 1, 0, 10000), +(9200016, 4030009, 1, 1, 0, 10000), +(9400238, 4030009, 1, 1, 0, 10000), +(9400247, 4030009, 1, 1, 0, 10000), +(9500107, 4030009, 1, 1, 0, 10000), +(3230400, 4130012, 1, 1, 0, 3000), +(9200016, 4130012, 1, 1, 0, 3000), +(9400238, 4130012, 1, 1, 0, 3000), +(9400247, 4130012, 1, 1, 0, 3000), +(9500107, 4130012, 1, 1, 0, 3000), +(3230400, 4130015, 1, 1, 0, 3000), +(9200016, 4130015, 1, 1, 0, 3000), +(9400238, 4130015, 1, 1, 0, 3000), +(9400247, 4130015, 1, 1, 0, 3000), +(9500107, 4130015, 1, 1, 0, 3000), +(3230400, 4130013, 1, 1, 0, 3000), +(9200016, 4130013, 1, 1, 0, 3000), +(9400238, 4130013, 1, 1, 0, 3000), +(9400247, 4130013, 1, 1, 0, 3000), +(9500107, 4130013, 1, 1, 0, 3000), +(3230400, 2000002, 1, 1, 0, 40000), +(9200016, 2000002, 1, 1, 0, 40000), +(9400238, 2000002, 1, 1, 0, 40000), +(9400247, 2000002, 1, 1, 0, 40000), +(9500107, 2000002, 1, 1, 0, 40000), +(3230400, 2000003, 1, 1, 0, 40000), +(9200016, 2000003, 1, 1, 0, 40000), +(9400238, 2000003, 1, 1, 0, 40000), +(9400247, 2000003, 1, 1, 0, 40000), +(9500107, 2000003, 1, 1, 0, 40000), +(3230400, 2044902, 1, 1, 0, 750), +(9200016, 2044902, 1, 1, 0, 750), +(9400238, 2044902, 1, 1, 0, 750), +(9400247, 2044902, 1, 1, 0, 750), +(9500107, 2044902, 1, 1, 0, 750), +(3230400, 2043201, 1, 1, 0, 750), +(9200016, 2043201, 1, 1, 0, 750), +(9400238, 2043201, 1, 1, 0, 750), +(9400247, 2043201, 1, 1, 0, 750), +(9500107, 2043201, 1, 1, 0, 750), +(3230400, 2070002, 1, 1, 0, 400), +(9200016, 2070002, 1, 1, 0, 400), +(9400238, 2070002, 1, 1, 0, 400), +(9400247, 2070002, 1, 1, 0, 400), +(9500107, 2070002, 1, 1, 0, 400), +(3230400, 2049101, 1, 1, 0, 400), +(9200016, 2049101, 1, 1, 0, 400), +(9400238, 2049101, 1, 1, 0, 400), +(9400247, 2049101, 1, 1, 0, 400), +(9500107, 2049101, 1, 1, 0, 400), +(3230400, 4006001, 1, 1, 0, 7000), +(9200016, 4006001, 1, 1, 0, 7000), +(9400238, 4006001, 1, 1, 0, 7000), +(9400247, 4006001, 1, 1, 0, 7000), +(9500107, 4006001, 1, 1, 0, 7000), +(3230400, 2382001, 1, 1, 0, 20000), +(9200016, 2382001, 1, 1, 0, 20000), +(9400238, 2382001, 1, 1, 0, 20000), +(9400247, 2382001, 1, 1, 0, 20000), +(9500107, 2382001, 1, 1, 0, 20000), +(3230400, 4020007, 1, 1, 0, 7000), +(9200016, 4020007, 1, 1, 0, 7000), +(9400238, 4020007, 1, 1, 0, 7000), +(9400247, 4020007, 1, 1, 0, 7000), +(9500107, 4020007, 1, 1, 0, 7000), +(3230400, 4010001, 1, 1, 0, 7000), +(9200016, 4010001, 1, 1, 0, 7000), +(9400238, 4010001, 1, 1, 0, 7000), +(9400247, 4010001, 1, 1, 0, 7000), +(9500107, 4010001, 1, 1, 0, 7000), +(3230400, 4004004, 1, 1, 0, 3000), +(9200016, 4004004, 1, 1, 0, 3000), +(9400238, 4004004, 1, 1, 0, 3000), +(9400247, 4004004, 1, 1, 0, 3000), +(9500107, 4004004, 1, 1, 0, 3000), +(3230400, 1092008, 1, 1, 0, 700), +(9200016, 1092008, 1, 1, 0, 700), +(9400238, 1092008, 1, 1, 0, 700), +(9400247, 1092008, 1, 1, 0, 700), +(9500107, 1092008, 1, 1, 0, 700), +(3230400, 1302013, 1, 1, 0, 700), +(9200016, 1302013, 1, 1, 0, 700), +(9400238, 1302013, 1, 1, 0, 700), +(9400247, 1302013, 1, 1, 0, 700), +(9500107, 1302013, 1, 1, 0, 700), +(3230400, 1402010, 1, 1, 0, 700), +(9200016, 1402010, 1, 1, 0, 700), +(9400238, 1402010, 1, 1, 0, 700), +(9400247, 1402010, 1, 1, 0, 700), +(9500107, 1402010, 1, 1, 0, 700), +(3230400, 1050011, 1, 1, 0, 700), +(9200016, 1050011, 1, 1, 0, 700), +(9400238, 1050011, 1, 1, 0, 700), +(9400247, 1050011, 1, 1, 0, 700), +(9500107, 1050011, 1, 1, 0, 700), +(3230400, 1402008, 1, 1, 0, 700), +(9200016, 1402008, 1, 1, 0, 700), +(9400238, 1402008, 1, 1, 0, 700), +(9400247, 1402008, 1, 1, 0, 700), +(9500107, 1402008, 1, 1, 0, 700), +(3230400, 1041084, 1, 1, 0, 700), +(9200016, 1041084, 1, 1, 0, 700), +(9400238, 1041084, 1, 1, 0, 700), +(9400247, 1041084, 1, 1, 0, 700), +(9500107, 1041084, 1, 1, 0, 700), +(3230400, 1061083, 1, 1, 0, 700), +(9200016, 1061083, 1, 1, 0, 700), +(9400238, 1061083, 1, 1, 0, 700), +(9400247, 1061083, 1, 1, 0, 700), +(9500107, 1061083, 1, 1, 0, 700), +(3230400, 1072132, 1, 1, 0, 700), +(9200016, 1072132, 1, 1, 0, 700), +(9400238, 1072132, 1, 1, 0, 700), +(9400247, 1072132, 1, 1, 0, 700), +(9500107, 1072132, 1, 1, 0, 700), +(3230400, 1082053, 1, 1, 0, 700), +(9200016, 1082053, 1, 1, 0, 700), +(9400238, 1082053, 1, 1, 0, 700), +(9400247, 1082053, 1, 1, 0, 700), +(9500107, 1082053, 1, 1, 0, 700), +(3230400, 1372000, 1, 1, 0, 700), +(9200016, 1372000, 1, 1, 0, 700), +(9400238, 1372000, 1, 1, 0, 700), +(9400247, 1372000, 1, 1, 0, 700), +(9500107, 1372000, 1, 1, 0, 700), +(3230400, 1002144, 1, 1, 0, 700), +(9200016, 1002144, 1, 1, 0, 700), +(9400238, 1002144, 1, 1, 0, 700), +(9400247, 1002144, 1, 1, 0, 700), +(9500107, 1002144, 1, 1, 0, 700), +(3230400, 1452022, 1, 1, 0, 700), +(9200016, 1452022, 1, 1, 0, 700), +(9400238, 1452022, 1, 1, 0, 700), +(9400247, 1452022, 1, 1, 0, 700), +(9500107, 1452022, 1, 1, 0, 700), +(3230400, 1040025, 1, 1, 0, 700), +(9200016, 1040025, 1, 1, 0, 700), +(9400238, 1040025, 1, 1, 0, 700), +(9400247, 1040025, 1, 1, 0, 700), +(9500107, 1040025, 1, 1, 0, 700), +(3230400, 1040074, 1, 1, 0, 700), +(9200016, 1040074, 1, 1, 0, 700), +(9400238, 1040074, 1, 1, 0, 700), +(9400247, 1040074, 1, 1, 0, 700), +(9500107, 1040074, 1, 1, 0, 700), +(3230400, 1060063, 1, 1, 0, 700), +(9200016, 1060063, 1, 1, 0, 700), +(9400238, 1060063, 1, 1, 0, 700), +(9400247, 1060063, 1, 1, 0, 700), +(9500107, 1060063, 1, 1, 0, 700), +(3230400, 1062006, 1, 1, 0, 700), +(9200016, 1062006, 1, 1, 0, 700), +(9400238, 1062006, 1, 1, 0, 700), +(9400247, 1062006, 1, 1, 0, 700), +(9500107, 1062006, 1, 1, 0, 700), +(3230400, 1041049, 1, 1, 0, 700), +(9200016, 1041049, 1, 1, 0, 700), +(9400238, 1041049, 1, 1, 0, 700), +(9400247, 1041049, 1, 1, 0, 700), +(9500107, 1041049, 1, 1, 0, 700), +(3230400, 1061045, 1, 1, 0, 700), +(9200016, 1061045, 1, 1, 0, 700), +(9400238, 1061045, 1, 1, 0, 700), +(9400247, 1061045, 1, 1, 0, 700), +(9500107, 1061045, 1, 1, 0, 700), +(3230400, 1492004, 1, 1, 0, 700), +(9200016, 1492004, 1, 1, 0, 700), +(9400238, 1492004, 1, 1, 0, 700), +(9400247, 1492004, 1, 1, 0, 700), +(9500107, 1492004, 1, 1, 0, 700), +(3000006, 4000166, 1, 1, 0, 200000), +(3000006, 4031209, 1, 1, 0, 7000), +(3000006, 4131003, 1, 1, 0, 3000), +(3000006, 2000002, 1, 1, 0, 40000), +(3000006, 2000003, 1, 1, 0, 40000), +(3000006, 2040601, 1, 1, 0, 750), +(3000006, 2040530, 1, 1, 0, 750), +(3000006, 2040424, 1, 1, 0, 750), +(3000006, 2381035, 1, 1, 0, 20000), +(3000006, 2060000, 10, 50, 0, 10000), +(3000006, 2061000, 10, 50, 0, 10000), +(3000006, 4010005, 1, 1, 0, 7000), +(3000006, 4020001, 1, 1, 0, 7000), +(3000006, 4004001, 1, 1, 0, 3000), +(3000006, 1082005, 1, 1, 0, 700), +(3000006, 1382017, 1, 1, 0, 700), +(3000006, 1050002, 1, 1, 0, 700), +(3000006, 1040040, 1, 1, 0, 700), +(3000006, 1060060, 1, 1, 0, 700), +(3000006, 1041052, 1, 1, 0, 700), +(3000006, 1061048, 1, 1, 0, 700), +(3000006, 1462000, 1, 1, 0, 700), +(3000006, 1082046, 1, 1, 0, 700), +(3000006, 1072086, 1, 1, 0, 700), +(3000006, 1072103, 1, 1, 0, 700), +(3000006, 1082189, 1, 1, 0, 700), +(9400548, 4031937, 1, 1, 0, 7000), +(9400548, 2000001, 1, 1, 0, 40000), +(9400548, 2060000, 10, 50, 0, 10000), +(9400548, 2061000, 10, 50, 0, 10000), +(9400548, 2041046, 1, 1, 0, 750), +(9400548, 4010002, 1, 1, 0, 7000), +(9400548, 4020004, 1, 1, 0, 7000), +(9400548, 4020007, 1, 1, 0, 7000), +(9400548, 4004003, 1, 1, 0, 3000), +(9400548, 1032006, 1, 1, 0, 700), +(9400548, 1040021, 1, 1, 0, 700), +(9400548, 1312016, 1, 1, 0, 700), +(9400548, 1412003, 1, 1, 0, 700), +(9400548, 1312008, 1, 1, 0, 700), +(9400548, 1060017, 1, 1, 0, 700), +(9400548, 1382018, 1, 1, 0, 700), +(9400548, 1002137, 1, 1, 0, 700), +(9400548, 1060050, 1, 1, 0, 700), +(9400548, 1082037, 1, 1, 0, 700), +(9400557, 2022245, 1, 1, 0, 3000), +(9400558, 4000399, 1, 1, 0, 200000), +(9400558, 4003000, 1, 1, 0, 7000), +(9400558, 2000003, 1, 1, 0, 40000), +(9400558, 2000002, 1, 1, 0, 40000), +(9400558, 2022244, 1, 1, 0, 3000), +(9400558, 2060000, 10, 50, 0, 10000), +(9400558, 2061000, 10, 50, 0, 10000), +(9400558, 2041044, 1, 1, 0, 750), +(9400558, 1082008, 1, 1, 0, 700), +(9400558, 1302004, 1, 1, 0, 700), +(9400558, 1002036, 1, 1, 0, 700), +(9400558, 1002152, 1, 1, 0, 700), +(9400558, 1051004, 1, 1, 0, 700), +(9400558, 1072120, 1, 1, 0, 700), +(9400558, 1332004, 1, 1, 0, 700), +(9400558, 1002183, 1, 1, 0, 700), +(3100102, 4003004, 1, 1, 0, 7000), +(3100102, 2000002, 1, 1, 0, 40000), +(3100102, 2000003, 1, 1, 0, 40000), +(3100102, 2060000, 10, 50, 0, 10000), +(3100102, 2061000, 10, 50, 0, 10000), +(3100102, 4006000, 1, 1, 0, 7000), +(3100102, 2040401, 1, 1, 0, 750), +(3100102, 2041018, 1, 1, 0, 750), +(3100102, 2381036, 1, 1, 0, 20000), +(3100102, 4020002, 1, 1, 0, 7000), +(3100102, 4010007, 1, 1, 0, 7000), +(3100102, 1050022, 1, 1, 0, 700), +(3100102, 1041052, 1, 1, 0, 700), +(3100102, 1061048, 1, 1, 0, 700), +(3100102, 1082069, 1, 1, 0, 700), +(3100102, 1462004, 1, 1, 0, 700), +(3100102, 1472011, 1, 1, 0, 700), +(3100102, 1002181, 1, 1, 0, 700), +(3100102, 1072294, 1, 1, 0, 700), +(3300000, 4000499, 1, 1, 0, 200000), +(3300000, 4130021, 1, 1, 0, 3000), +(3300000, 4130009, 1, 1, 0, 3000), +(3300000, 4130005, 1, 1, 0, 3000), +(3300000, 2382092, 1, 1, 0, 20000), +(3300000, 2000003, 1, 1, 0, 40000), +(3300000, 2000002, 1, 1, 0, 40000), +(3300000, 2060000, 10, 50, 0, 10000), +(3300000, 2061000, 10, 50, 0, 10000), +(3300000, 2044701, 1, 1, 0, 750), +(3300000, 4010005, 1, 1, 0, 7000), +(3300000, 4020000, 1, 1, 0, 7000), +(3300000, 1332020, 1, 1, 0, 700), +(3300000, 1402010, 1, 1, 0, 700), +(3300000, 1032007, 1, 1, 0, 700), +(3300000, 1040000, 1, 1, 0, 700), +(3300000, 1060075, 1, 1, 0, 700), +(3300000, 1072078, 1, 1, 0, 700), +(3300000, 1002156, 1, 1, 0, 700), +(3300000, 1082046, 1, 1, 0, 700), +(3300000, 1002622, 1, 1, 0, 700), +(3300001, 4000500, 1, 1, 0, 200000), +(3300001, 4000507, 1, 1, 0, 200000), +(3300001, 4130021, 1, 1, 0, 3000), +(3300001, 2382093, 1, 1, 0, 20000), +(3300001, 2044701, 1, 1, 0, 750), +(3300001, 2000002, 1, 1, 0, 40000), +(3300001, 2061000, 10, 50, 0, 10000), +(3300001, 2060000, 10, 50, 0, 10000), +(3300001, 2000003, 1, 1, 0, 40000), +(3300001, 4010005, 1, 1, 0, 7000), +(3300001, 4020000, 1, 1, 0, 7000), +(3300001, 4010007, 1, 1, 0, 7000), +(3300001, 1332020, 1, 1, 0, 700), +(3300001, 1402010, 1, 1, 0, 700), +(3300001, 1032007, 1, 1, 0, 700), +(3300001, 1040000, 1, 1, 0, 700), +(3300001, 1060075, 1, 1, 0, 700), +(3300001, 1072078, 1, 1, 0, 700), +(3300001, 1002156, 1, 1, 0, 700), +(3300001, 1082046, 1, 1, 0, 700), +(3300001, 1002622, 1, 1, 0, 700), +(3000005, 4131003, 1, 1, 0, 3000), +(9300127, 4131003, 1, 1, 0, 3000), +(3000005, 2000002, 1, 1, 0, 40000), +(9300127, 2000002, 1, 1, 0, 40000), +(3000005, 2000003, 1, 1, 0, 40000), +(9300127, 2000003, 1, 1, 0, 40000), +(3000005, 2040701, 1, 1, 0, 750), +(9300127, 2040701, 1, 1, 0, 750), +(3000005, 2381034, 1, 1, 0, 20000), +(9300127, 2381034, 1, 1, 0, 20000), +(3000005, 4020000, 1, 1, 0, 7000), +(9300127, 4020000, 1, 1, 0, 7000), +(3000005, 4010001, 1, 1, 0, 7000), +(9300127, 4010001, 1, 1, 0, 7000), +(3000005, 4004001, 1, 1, 0, 3000), +(9300127, 4004001, 1, 1, 0, 3000), +(3000005, 1422014, 1, 1, 0, 700), +(9300127, 1422014, 1, 1, 0, 700), +(3000005, 1322014, 1, 1, 0, 700), +(9300127, 1322014, 1, 1, 0, 700), +(3000005, 1082007, 1, 1, 0, 700), +(9300127, 1082007, 1, 1, 0, 700), +(3000005, 1050030, 1, 1, 0, 700), +(9300127, 1050030, 1, 1, 0, 700), +(3000005, 1002013, 1, 1, 0, 700), +(9300127, 1002013, 1, 1, 0, 700), +(3000005, 1462000, 1, 1, 0, 700), +(9300127, 1462000, 1, 1, 0, 700), +(3000005, 1072101, 1, 1, 0, 700), +(9300127, 1072101, 1, 1, 0, 700), +(3000005, 1041058, 1, 1, 0, 700), +(9300127, 1041058, 1, 1, 0, 700), +(3000005, 1061054, 1, 1, 0, 700), +(9300127, 1061054, 1, 1, 0, 700), +(3000005, 1040058, 1, 1, 0, 700), +(9300127, 1040058, 1, 1, 0, 700), +(3000005, 1060044, 1, 1, 0, 700), +(9300127, 1060044, 1, 1, 0, 700), +(3000005, 1472014, 1, 1, 0, 700), +(9300127, 1472014, 1, 1, 0, 700), +(3000005, 1082046, 1, 1, 0, 700), +(9300127, 1082046, 1, 1, 0, 700), +(3000005, 1052107, 1, 1, 0, 700), +(9300127, 1052107, 1, 1, 0, 700), +(3230307, 4000123, 1, 1, 0, 200000), +(3230307, 4000003, 1, 1, 0, 200000), +(3230307, 4130014, 1, 1, 0, 3000), +(3230307, 2000002, 1, 1, 0, 40000), +(3230307, 2000003, 1, 1, 0, 40000), +(3230307, 2070003, 1, 1, 0, 400), +(3230307, 2382000, 1, 1, 0, 20000), +(3230307, 4020008, 1, 1, 0, 7000), +(3230307, 4004001, 1, 1, 0, 3000), +(3230307, 1082023, 1, 1, 0, 700), +(3230307, 1082008, 1, 1, 0, 700), +(3230307, 1302004, 1, 1, 0, 700), +(3230307, 1051004, 1, 1, 0, 700), +(3230307, 1002152, 1, 1, 0, 700), +(3230307, 1051032, 1, 1, 0, 700), +(3230307, 1002036, 1, 1, 0, 700), +(3230307, 1072120, 1, 1, 0, 700), +(3230307, 1002183, 1, 1, 0, 700), +(3230307, 1332004, 1, 1, 0, 700), +(3300002, 4000501, 1, 1, 0, 200000), +(3300002, 4131003, 1, 1, 0, 3000), +(3300002, 2382094, 1, 1, 0, 20000), +(3300002, 2060000, 10, 50, 0, 10000), +(3300002, 2061000, 10, 50, 0, 10000), +(3300002, 2000002, 1, 1, 0, 40000), +(3300002, 2000003, 1, 1, 0, 40000), +(3300002, 2040701, 1, 1, 0, 750), +(3300002, 4010001, 1, 1, 0, 7000), +(3300002, 4020000, 1, 1, 0, 7000), +(3300002, 4004001, 1, 1, 0, 3000), +(3300002, 1322014, 1, 1, 0, 700), +(3300002, 1050030, 1, 1, 0, 700), +(3300002, 1002013, 1, 1, 0, 700), +(3300002, 1462000, 1, 1, 0, 700), +(3300002, 1072101, 1, 1, 0, 700), +(3300002, 1040058, 1, 1, 0, 700), +(3300002, 1060044, 1, 1, 0, 700), +(3300002, 1041058, 1, 1, 0, 700), +(3300002, 1061054, 1, 1, 0, 700), +(3300002, 1052107, 1, 1, 0, 700), +(3110100, 4000032, 1, 1, 0, 200000), +(9300234, 4000032, 1, 1, 0, 200000), +(9500108, 4000032, 1, 1, 0, 200000), +(3110100, 4031164, 1, 1, 0, 7000), +(9300234, 4031164, 1, 1, 0, 7000), +(9500108, 4031164, 1, 1, 0, 7000), +(3110100, 4031405, 1, 1, 0, 7000), +(9300234, 4031405, 1, 1, 0, 7000), +(9500108, 4031405, 1, 1, 0, 7000), +(3110100, 2000002, 1, 1, 0, 40000), +(9300234, 2000002, 1, 1, 0, 40000), +(9500108, 2000002, 1, 1, 0, 40000), +(3110100, 2000003, 1, 1, 0, 40000), +(9300234, 2000003, 1, 1, 0, 40000), +(9500108, 2000003, 1, 1, 0, 40000), +(3110100, 2000004, 1, 1, 0, 40000), +(9300234, 2000004, 1, 1, 0, 40000), +(9500108, 2000004, 1, 1, 0, 40000), +(3110100, 4006000, 1, 1, 0, 7000), +(9300234, 4006000, 1, 1, 0, 7000), +(9500108, 4006000, 1, 1, 0, 7000), +(3110100, 2041044, 1, 1, 0, 750), +(9300234, 2041044, 1, 1, 0, 750), +(9500108, 2041044, 1, 1, 0, 750), +(3110100, 2382002, 1, 1, 0, 20000), +(9300234, 2382002, 1, 1, 0, 20000), +(9500108, 2382002, 1, 1, 0, 20000), +(3110100, 4010002, 1, 1, 0, 7000), +(9300234, 4010002, 1, 1, 0, 7000), +(9500108, 4010002, 1, 1, 0, 7000), +(3110100, 4020002, 1, 1, 0, 7000), +(9300234, 4020002, 1, 1, 0, 7000), +(9500108, 4020002, 1, 1, 0, 7000), +(3110100, 1442011, 1, 1, 0, 700), +(9300234, 1442011, 1, 1, 0, 700), +(9500108, 1442011, 1, 1, 0, 700), +(3110100, 1322009, 1, 1, 0, 700), +(9300234, 1322009, 1, 1, 0, 700), +(9500108, 1322009, 1, 1, 0, 700), +(3110100, 1442028, 1, 1, 0, 700), +(9300234, 1442028, 1, 1, 0, 700), +(9500108, 1442028, 1, 1, 0, 700), +(3110100, 1442024, 1, 1, 0, 700), +(9300234, 1442024, 1, 1, 0, 700), +(9500108, 1442024, 1, 1, 0, 700), +(3110100, 1432005, 1, 1, 0, 700), +(9300234, 1432005, 1, 1, 0, 700), +(9500108, 1432005, 1, 1, 0, 700), +(3110100, 1422001, 1, 1, 0, 700), +(9300234, 1422001, 1, 1, 0, 700), +(9500108, 1422001, 1, 1, 0, 700), +(3110100, 1092012, 1, 1, 0, 700), +(9300234, 1092012, 1, 1, 0, 700), +(9500108, 1092012, 1, 1, 0, 700), +(3110100, 1072112, 1, 1, 0, 700), +(9300234, 1072112, 1, 1, 0, 700), +(9500108, 1072112, 1, 1, 0, 700), +(3110100, 1051013, 1, 1, 0, 700), +(9300234, 1051013, 1, 1, 0, 700), +(9500108, 1051013, 1, 1, 0, 700), +(3110100, 1382009, 1, 1, 0, 700), +(9300234, 1382009, 1, 1, 0, 700), +(9500108, 1382009, 1, 1, 0, 700), +(3110100, 1041051, 1, 1, 0, 700), +(9300234, 1041051, 1, 1, 0, 700), +(9500108, 1041051, 1, 1, 0, 700), +(3110100, 1061047, 1, 1, 0, 700), +(9300234, 1061047, 1, 1, 0, 700), +(9500108, 1061047, 1, 1, 0, 700), +(3110100, 1082049, 1, 1, 0, 700), +(9300234, 1082049, 1, 1, 0, 700), +(9500108, 1082049, 1, 1, 0, 700), +(3110100, 1082046, 1, 1, 0, 700), +(9300234, 1082046, 1, 1, 0, 700), +(9500108, 1082046, 1, 1, 0, 700), +(3110100, 1061078, 1, 1, 0, 700), +(9300234, 1061078, 1, 1, 0, 700), +(9500108, 1061078, 1, 1, 0, 700), +(3110100, 1332014, 1, 1, 0, 700), +(9300234, 1332014, 1, 1, 0, 700), +(9500108, 1332014, 1, 1, 0, 700), +(3110100, 1002622, 1, 1, 0, 700), +(9300234, 1002622, 1, 1, 0, 700), +(9500108, 1002622, 1, 1, 0, 700), +(3210100, 4000021, 1, 1, 0, 200000), +(3210100, 2000002, 1, 1, 0, 40000), +(3210100, 2000003, 1, 1, 0, 40000), +(3210100, 2070001, 1, 1, 0, 400), +(3210100, 2060005, 10, 50, 0, 10000), +(3210100, 2070003, 1, 1, 0, 400), +(3210100, 4006001, 1, 1, 0, 7000), +(3210100, 4010001, 1, 1, 0, 7000), +(3210100, 4020000, 1, 1, 0, 7000), +(3210100, 4020007, 1, 1, 0, 7000), +(3210100, 1332020, 1, 1, 0, 700), +(3210100, 1040026, 1, 1, 0, 700), +(3210100, 1060019, 1, 1, 0, 700), +(3210100, 1372012, 1, 1, 0, 700), +(3210100, 1072091, 1, 1, 0, 700), +(3210100, 1082052, 1, 1, 0, 700), +(3210100, 1072103, 1, 1, 0, 700), +(3210100, 1452005, 1, 1, 0, 700), +(3210100, 1462005, 1, 1, 0, 700), +(3210100, 1072079, 1, 1, 0, 700), +(3210100, 1472032, 1, 1, 0, 700), +(3210100, 1472012, 1, 1, 0, 700), +(3210100, 1082044, 1, 1, 0, 700), +(3210100, 1002178, 1, 1, 0, 700), +(3210100, 1052107, 1, 1, 0, 700), +(3230104, 4000167, 1, 1, 0, 200000), +(3230104, 4031209, 1, 1, 0, 7000), +(3230104, 4030012, 1, 1, 0, 10000), +(3230104, 2000002, 1, 1, 0, 40000), +(3230104, 2022040, 1, 1, 0, 3000), +(3230104, 2070002, 1, 1, 0, 400), +(3230104, 2040801, 1, 1, 0, 750), +(3230104, 2040701, 1, 1, 0, 750), +(3230104, 2382007, 1, 1, 0, 20000), +(3230104, 4010001, 1, 1, 0, 7000), +(3230104, 4020000, 1, 1, 0, 7000), +(3230104, 1332020, 1, 1, 0, 700), +(3230104, 1322026, 1, 1, 0, 700), +(3230104, 1082023, 1, 1, 0, 700), +(3230104, 1002023, 1, 1, 0, 700), +(3230104, 1051014, 1, 1, 0, 700), +(3230104, 1402006, 1, 1, 0, 700), +(3230104, 1072114, 1, 1, 0, 700), +(3230104, 1041052, 1, 1, 0, 700), +(3230104, 1061048, 1, 1, 0, 700), +(3230104, 1382018, 1, 1, 0, 700), +(3230104, 1002135, 1, 1, 0, 700), +(3230104, 1041056, 1, 1, 0, 700), +(3230104, 1061052, 1, 1, 0, 700), +(3230104, 1082073, 1, 1, 0, 700), +(3230104, 1041050, 1, 1, 0, 700), +(3230104, 1061046, 1, 1, 0, 700), +(3230104, 1002184, 1, 1, 0, 700), +(3230104, 1482004, 1, 1, 0, 700), +(5300000, 4000086, 1, 1, 0, 200000), +(5300000, 4030012, 1, 1, 0, 10000), +(5300000, 2000002, 1, 1, 0, 40000), +(5300000, 2000003, 1, 1, 0, 40000), +(5300000, 4006001, 1, 1, 0, 7000), +(5300000, 2070001, 1, 1, 0, 400), +(5300000, 2050001, 1, 1, 0, 3000), +(5300000, 2040705, 1, 1, 0, 750), +(5300000, 2382006, 1, 1, 0, 20000), +(5300000, 4010001, 1, 1, 0, 7000), +(5300000, 4020003, 1, 1, 0, 7000), +(5300000, 4004000, 1, 1, 0, 3000), +(5300000, 4020007, 1, 1, 0, 7000), +(5300000, 1032002, 1, 1, 0, 700), +(5300000, 1060017, 1, 1, 0, 700), +(5300000, 1040030, 1, 1, 0, 700), +(5300000, 1060020, 1, 1, 0, 700), +(5300000, 1382017, 1, 1, 0, 700), +(5300000, 1072075, 1, 1, 0, 700), +(5300000, 1082054, 1, 1, 0, 700), +(5300000, 1002035, 1, 1, 0, 700), +(5300000, 1050029, 1, 1, 0, 700), +(5300000, 1051023, 1, 1, 0, 700), +(5300000, 1002165, 1, 1, 0, 700), +(5300000, 1072081, 1, 1, 0, 700), +(5300000, 1082016, 1, 1, 0, 700), +(5300000, 1041048, 1, 1, 0, 700), +(5300000, 1061044, 1, 1, 0, 700), +(5300000, 1332014, 1, 1, 0, 700), +(5300000, 1482004, 1, 1, 0, 700), +(3110300, 4000353, 1, 1, 0, 200000), +(3110300, 2000002, 1, 1, 0, 40000), +(3110300, 2000003, 1, 1, 0, 40000), +(3110300, 2060000, 10, 50, 0, 10000), +(3110300, 2061000, 10, 50, 0, 10000), +(3110300, 4006000, 1, 1, 0, 7000), +(3110300, 2044701, 1, 1, 0, 750), +(3110300, 2049101, 1, 1, 0, 400), +(3110300, 2382009, 1, 1, 0, 20000), +(3110300, 4010005, 1, 1, 0, 7000), +(3110300, 4020000, 1, 1, 0, 7000), +(3110300, 4010007, 1, 1, 0, 7000), +(3110300, 1032007, 1, 1, 0, 700), +(3110300, 1402010, 1, 1, 0, 700), +(3110300, 1332020, 1, 1, 0, 700), +(3110300, 1040000, 1, 1, 0, 700), +(3110300, 1060075, 1, 1, 0, 700), +(3110300, 1072078, 1, 1, 0, 700), +(3110300, 1082046, 1, 1, 0, 700), +(3110300, 1072294, 1, 1, 0, 700), +(9400633, 2022113, 1, 4, 0, 3000), +(9400633, 2000004, 1, 4, 0, 40000), +(9400633, 2000005, 1, 4, 0, 40000), +(9400633, 2020016, 1, 4, 0, 3000), +(9400633, 1302133, 1, 1, 0, 40000), +(9400633, 1432061, 1, 1, 0, 40000), +(9400633, 1372058, 1, 1, 0, 40000), +(9400633, 1382080, 1, 1, 0, 40000), +(9400633, 1452085, 1, 1, 0, 40000), +(9400633, 1462075, 1, 1, 0, 40000), +(9400633, 1472100, 1, 1, 0, 40000), +(9400633, 1492048, 1, 1, 0, 40000), +(9400633, 1482046, 1, 1, 0, 40000), +(3300003, 4000502, 1, 1, 0, 200000), +(3300003, 4130014, 1, 1, 0, 3000), +(3300003, 4130000, 1, 1, 0, 3000), +(3300003, 4130017, 1, 1, 0, 3000), +(3300003, 4131008, 1, 1, 0, 3000), +(3300003, 2382095, 1, 1, 0, 20000), +(3300003, 2060000, 10, 50, 0, 10000), +(3300003, 2061000, 10, 50, 0, 10000), +(3300003, 2000002, 1, 1, 0, 40000), +(3300003, 2000003, 1, 1, 0, 40000), +(3300003, 2330001, 1, 1, 0, 400), +(3300003, 4020000, 1, 1, 0, 7000), +(3300003, 4020001, 1, 1, 0, 7000), +(3300003, 1032010, 1, 1, 0, 700), +(3300003, 1002023, 1, 1, 0, 700), +(3300003, 1051015, 1, 1, 0, 700), +(3300003, 1302004, 1, 1, 0, 700), +(3300003, 1041042, 1, 1, 0, 700), +(3300003, 1061035, 1, 1, 0, 700), +(3300003, 1082063, 1, 1, 0, 700), +(3300003, 1002163, 1, 1, 0, 700), +(3300003, 1072119, 1, 1, 0, 700), +(3300003, 1040062, 1, 1, 0, 700), +(3300003, 1060051, 1, 1, 0, 700), +(3300003, 1332014, 1, 1, 0, 700), +(3300003, 1072110, 1, 1, 0, 700), +(3300003, 1002625, 1, 1, 0, 700), +(3110102, 4000095, 1, 1, 0, 200000), +(9300129, 4000095, 1, 1, 0, 200000), +(9500109, 4000095, 1, 1, 0, 200000), +(3110102, 4000021, 1, 1, 0, 200000), +(9300129, 4000021, 1, 1, 0, 200000), +(9500109, 4000021, 1, 1, 0, 200000), +(3110102, 2000002, 1, 1, 0, 40000), +(9300129, 2000002, 1, 1, 0, 40000), +(9500109, 2000002, 1, 1, 0, 40000), +(3110102, 2000003, 1, 1, 0, 40000), +(9300129, 2000003, 1, 1, 0, 40000), +(9500109, 2000003, 1, 1, 0, 40000), +(3110102, 2044401, 1, 1, 0, 750), +(9300129, 2044401, 1, 1, 0, 750), +(9500109, 2044401, 1, 1, 0, 750), +(3110102, 2382005, 1, 1, 0, 20000), +(9300129, 2382005, 1, 1, 0, 20000), +(9500109, 2382005, 1, 1, 0, 20000), +(3110102, 4010001, 1, 1, 0, 7000), +(9300129, 4010001, 1, 1, 0, 7000), +(9500109, 4010001, 1, 1, 0, 7000), +(3110102, 4020002, 1, 1, 0, 7000), +(9300129, 4020002, 1, 1, 0, 7000), +(9500109, 4020002, 1, 1, 0, 7000), +(3110102, 4010005, 1, 1, 0, 7000), +(9300129, 4010005, 1, 1, 0, 7000), +(9500109, 4010005, 1, 1, 0, 7000), +(3110102, 4004000, 1, 1, 0, 3000), +(9300129, 4004000, 1, 1, 0, 3000), +(9500109, 4004000, 1, 1, 0, 3000), +(3110102, 1040029, 1, 1, 0, 700), +(9300129, 1040029, 1, 1, 0, 700), +(9500109, 1040029, 1, 1, 0, 700), +(3110102, 1312006, 1, 1, 0, 700), +(9300129, 1312006, 1, 1, 0, 700), +(9500109, 1312006, 1, 1, 0, 700), +(3110102, 1060020, 1, 1, 0, 700), +(9300129, 1060020, 1, 1, 0, 700), +(9500109, 1060020, 1, 1, 0, 700), +(3110102, 1322016, 1, 1, 0, 700), +(9300129, 1322016, 1, 1, 0, 700), +(9500109, 1322016, 1, 1, 0, 700), +(3110102, 1082051, 1, 1, 0, 700), +(9300129, 1082051, 1, 1, 0, 700), +(9500109, 1082051, 1, 1, 0, 700), +(3110102, 1002145, 1, 1, 0, 700), +(9300129, 1002145, 1, 1, 0, 700), +(9500109, 1002145, 1, 1, 0, 700), +(3110102, 1002164, 1, 1, 0, 700), +(9300129, 1002164, 1, 1, 0, 700), +(9500109, 1002164, 1, 1, 0, 700), +(3110102, 1082068, 1, 1, 0, 700), +(9300129, 1082068, 1, 1, 0, 700), +(9500109, 1082068, 1, 1, 0, 700), +(3110102, 1332009, 1, 1, 0, 700), +(9300129, 1332009, 1, 1, 0, 700), +(9500109, 1332009, 1, 1, 0, 700), +(3110102, 1072035, 1, 1, 0, 700), +(9300129, 1072035, 1, 1, 0, 700), +(9500109, 1072035, 1, 1, 0, 700), +(3110102, 1002173, 1, 1, 0, 700), +(9300129, 1002173, 1, 1, 0, 700), +(9500109, 1002173, 1, 1, 0, 700), +(3110102, 1072294, 1, 1, 0, 700), +(9300129, 1072294, 1, 1, 0, 700), +(9500109, 1072294, 1, 1, 0, 700), +(3110101, 4030014, 1, 1, 0, 10000), +(3110101, 4131001, 1, 1, 0, 3000), +(3110101, 2000002, 1, 1, 0, 40000), +(3110101, 2000003, 1, 1, 0, 40000), +(3110101, 2002009, 1, 1, 0, 10000), +(3110101, 2043200, 1, 1, 0, 750), +(3110101, 2041017, 1, 1, 0, 750), +(3110101, 2330001, 1, 1, 0, 400), +(3110101, 2382004, 1, 1, 0, 20000), +(3110101, 4020001, 1, 1, 0, 7000), +(3110101, 4004001, 1, 1, 0, 3000), +(3110101, 1082007, 1, 1, 0, 700), +(3110101, 1082035, 1, 1, 0, 700), +(3110101, 1092007, 1, 1, 0, 700), +(3110101, 1050030, 1, 1, 0, 700), +(3110101, 1050002, 1, 1, 0, 700), +(3110101, 1072077, 1, 1, 0, 700), +(3110101, 1072090, 1, 1, 0, 700), +(3110101, 1041055, 1, 1, 0, 700), +(3110101, 1061051, 1, 1, 0, 700), +(3110101, 1462004, 1, 1, 0, 700), +(3110101, 1040062, 1, 1, 0, 700), +(3110101, 1060051, 1, 1, 0, 700), +(3110101, 1472014, 1, 1, 0, 700), +(3110101, 1082189, 1, 1, 0, 700), +(5300001, 4000087, 1, 1, 0, 200000), +(5300001, 2000002, 1, 1, 0, 40000), +(5300001, 2000003, 1, 1, 0, 40000), +(5300001, 2050000, 1, 1, 0, 3000), +(5300001, 4006001, 1, 1, 0, 7000), +(5300001, 2040402, 1, 1, 0, 750), +(5300001, 2382014, 1, 1, 0, 20000), +(5300001, 4010000, 1, 1, 0, 7000), +(5300001, 4020004, 1, 1, 0, 7000), +(5300001, 4004001, 1, 1, 0, 3000), +(5300001, 1402002, 1, 1, 0, 700), +(5300001, 1082036, 1, 1, 0, 700), +(5300001, 1050029, 1, 1, 0, 700), +(5300001, 1051023, 1, 1, 0, 700), +(5300001, 1041068, 1, 1, 0, 700), +(5300001, 1061063, 1, 1, 0, 700), +(5300001, 1002138, 1, 1, 0, 700), +(5300001, 1332014, 1, 1, 0, 700), +(5300001, 1002625, 1, 1, 0, 700), +(3210201, 4000073, 1, 1, 0, 200000), +(3210201, 4000021, 1, 1, 0, 200000), +(3210201, 4003004, 1, 1, 0, 7000), +(3210201, 2050099, 1, 1, 0, 3000), +(3210201, 4030012, 1, 1, 0, 10000), +(3210201, 2000002, 1, 1, 0, 40000), +(3210201, 2000003, 1, 1, 0, 40000), +(3210201, 2070003, 1, 1, 0, 400), +(3210201, 4006000, 1, 1, 0, 7000), +(3210201, 4006001, 1, 1, 0, 7000), +(3210201, 2044501, 1, 1, 0, 750), +(3210201, 2382012, 1, 1, 0, 20000), +(3210201, 4010002, 1, 1, 0, 7000), +(3210201, 4020003, 1, 1, 0, 7000), +(3210201, 4004001, 1, 1, 0, 3000), +(3210201, 4020007, 1, 1, 0, 7000), +(3210201, 1051016, 1, 1, 0, 700), +(3210201, 1442001, 1, 1, 0, 700), +(3210201, 1072089, 1, 1, 0, 700), +(3210201, 1050036, 1, 1, 0, 700), +(3210201, 1051024, 1, 1, 0, 700), +(3210201, 1082070, 1, 1, 0, 700), +(3210201, 1072083, 1, 1, 0, 700), +(3210201, 1472013, 1, 1, 0, 700), +(3210201, 1332012, 1, 1, 0, 700), +(3210201, 1002172, 1, 1, 0, 700), +(3210201, 1492004, 1, 1, 0, 700), +(3210202, 4000073, 1, 1, 0, 200000), +(3210202, 4003004, 1, 1, 0, 7000), +(3210202, 4000021, 1, 1, 0, 200000), +(3210202, 4030012, 1, 1, 0, 10000), +(3210202, 2000002, 1, 1, 0, 40000), +(3210202, 2000003, 1, 1, 0, 40000), +(3210202, 4006000, 1, 1, 0, 7000), +(3210202, 2070003, 1, 1, 0, 400), +(3210202, 2043701, 1, 1, 0, 750), +(3210202, 2041016, 1, 1, 0, 750), +(3210202, 2382013, 1, 1, 0, 20000), +(3210202, 4020005, 1, 1, 0, 7000), +(3210202, 4010001, 1, 1, 0, 7000), +(3210202, 4004003, 1, 1, 0, 3000), +(3210202, 4004001, 1, 1, 0, 3000), +(3210202, 1032011, 1, 1, 0, 700), +(3210202, 1302017, 1, 1, 0, 700), +(3210202, 1040028, 1, 1, 0, 700), +(3210202, 1060020, 1, 1, 0, 700), +(3210202, 1322015, 1, 1, 0, 700), +(3210202, 1041053, 1, 1, 0, 700), +(3210202, 1061049, 1, 1, 0, 700), +(3210202, 1002037, 1, 1, 0, 700), +(3210202, 1041066, 1, 1, 0, 700), +(3210202, 1061061, 1, 1, 0, 700), +(3210202, 1002163, 1, 1, 0, 700), +(3210202, 1332001, 1, 1, 0, 700), +(3210202, 1082045, 1, 1, 0, 700), +(3210202, 1492004, 1, 1, 0, 700), +(3210202, 1002628, 1, 1, 0, 700), +(9400509, 4000070, 1, 1, 0, 200000), +(9400509, 4003005, 1, 1, 0, 7000), +(9400509, 4031523, 1, 1, 0, 7000), +(9400509, 4030009, 1, 1, 0, 10000), +(9400509, 2000002, 1, 1, 0, 40000), +(9400509, 2000003, 1, 1, 0, 40000), +(9400509, 2000004, 1, 1, 0, 40000), +(9400509, 2041018, 1, 1, 0, 750), +(9400509, 2041012, 1, 1, 0, 750), +(9400509, 2043002, 1, 1, 0, 750), +(9400509, 4006000, 1, 1, 0, 7000), +(9400509, 4020003, 1, 1, 0, 7000), +(9400509, 4020000, 1, 1, 0, 7000), +(9400509, 4010005, 1, 1, 0, 7000), +(9400509, 4004000, 1, 1, 0, 3000), +(9400509, 1032013, 1, 1, 0, 700), +(9400509, 1402007, 1, 1, 0, 700), +(9400509, 1041089, 1, 1, 0, 700), +(9400509, 1061088, 1, 1, 0, 700), +(9400509, 1002028, 1, 1, 0, 700), +(9400509, 1072115, 1, 1, 0, 700), +(9400509, 1072114, 1, 1, 0, 700), +(9400509, 1050054, 1, 1, 0, 700), +(9400509, 1050058, 1, 1, 0, 700), +(9400509, 1050060, 1, 1, 0, 700), +(9400509, 1040094, 1, 1, 0, 700), +(9400509, 1060083, 1, 1, 0, 700), +(9400509, 1082074, 1, 1, 0, 700), +(9400509, 1082042, 1, 1, 0, 700), +(9420503, 4000370, 1, 1, 0, 200000), +(9420503, 4000371, 1, 1, 0, 200000), +(9420503, 2000002, 1, 1, 0, 40000), +(9420503, 2000003, 1, 1, 0, 40000), +(9420503, 2070001, 1, 1, 0, 400), +(9420503, 4010001, 1, 1, 0, 7000), +(9420503, 4020000, 1, 1, 0, 7000), +(9420503, 1061048, 1, 1, 0, 700), +(9420503, 1002153, 1, 1, 0, 700), +(9420503, 1002137, 1, 1, 0, 700), +(9420503, 1061070, 1, 1, 0, 700), +(9420503, 1040061, 1, 1, 0, 700), +(9420503, 1002181, 1, 1, 0, 700), +(9420503, 1060050, 1, 1, 0, 700), +(3300004, 4000503, 1, 1, 0, 200000), +(3300004, 4130014, 1, 1, 0, 3000), +(3300004, 4130000, 1, 1, 0, 3000), +(3300004, 4130017, 1, 1, 0, 3000), +(3300004, 4131008, 1, 1, 0, 3000), +(3300004, 2382096, 1, 1, 0, 20000), +(3300004, 2060000, 10, 50, 0, 10000), +(3300004, 2061000, 10, 50, 0, 10000), +(3300004, 2000002, 1, 1, 0, 40000), +(3300004, 2000003, 1, 1, 0, 40000), +(3300004, 2330001, 1, 1, 0, 400), +(3300004, 4020000, 1, 1, 0, 7000), +(3300004, 4020001, 1, 1, 0, 7000), +(3300004, 1032010, 1, 1, 0, 700), +(3300004, 1002023, 1, 1, 0, 700), +(3300004, 1051015, 1, 1, 0, 700), +(3300004, 1302004, 1, 1, 0, 700), +(3300004, 1041042, 1, 1, 0, 700), +(3300004, 1061035, 1, 1, 0, 700), +(3300004, 1082063, 1, 1, 0, 700), +(3300004, 1002163, 1, 1, 0, 700), +(3300004, 1072119, 1, 1, 0, 700), +(3300004, 1040062, 1, 1, 0, 700), +(3300004, 1060051, 1, 1, 0, 700), +(3300004, 1332014, 1, 1, 0, 700), +(3300004, 1072110, 1, 1, 0, 700), +(3300004, 1002625, 1, 1, 0, 700), +(3210200, 4000073, 1, 1, 0, 200000), +(3210200, 4003004, 1, 1, 0, 7000), +(3210200, 4000021, 1, 1, 0, 200000), +(3210200, 2050099, 1, 1, 0, 3000), +(3210200, 4030012, 1, 1, 0, 10000), +(3210200, 4130021, 1, 1, 0, 3000), +(3210200, 2000002, 1, 1, 0, 40000), +(3210200, 2000003, 1, 1, 0, 40000), +(3210200, 2050003, 1, 1, 0, 3000), +(3210200, 4006000, 1, 1, 0, 7000), +(3210200, 2070001, 1, 1, 0, 400), +(3210200, 2044701, 1, 1, 0, 750), +(3210200, 2382011, 1, 1, 0, 20000), +(3210200, 4020000, 1, 1, 0, 7000), +(3210200, 4020001, 1, 1, 0, 7000), +(3210200, 4004000, 1, 1, 0, 3000), +(3210200, 1322009, 1, 1, 0, 700), +(3210200, 1412006, 1, 1, 0, 700), +(3210200, 1072041, 1, 1, 0, 700), +(3210200, 1072002, 1, 1, 0, 700), +(3210200, 1072112, 1, 1, 0, 700), +(3210200, 1002086, 1, 1, 0, 700), +(3210200, 1050036, 1, 1, 0, 700), +(3210200, 1050035, 1, 1, 0, 700), +(3210200, 1002145, 1, 1, 0, 700), +(3210200, 1002038, 1, 1, 0, 700), +(3210200, 1462005, 1, 1, 0, 700), +(3210200, 1040073, 1, 1, 0, 700), +(3210200, 1060062, 1, 1, 0, 700), +(3210200, 1082073, 1, 1, 0, 700), +(3210200, 1072069, 1, 1, 0, 700), +(3210200, 1472030, 1, 1, 0, 700), +(3210200, 1002174, 1, 1, 0, 700), +(3210200, 1040061, 1, 1, 0, 700), +(3210200, 1082042, 1, 1, 0, 700), +(3210200, 1082043, 1, 1, 0, 700), +(3210200, 1332014, 1, 1, 0, 700), +(3210200, 1052107, 1, 1, 0, 700), +(3210204, 4000109, 1, 1, 0, 200000), +(3210204, 4003005, 1, 1, 0, 7000), +(3210204, 4003004, 1, 1, 0, 7000), +(3210204, 4130000, 1, 1, 0, 3000), +(3210204, 2000002, 1, 1, 0, 40000), +(3210204, 2000003, 1, 1, 0, 40000), +(3210204, 2043202, 1, 1, 0, 750), +(3210204, 2382015, 1, 1, 0, 20000), +(3210204, 4020006, 1, 1, 0, 7000), +(3210204, 4010004, 1, 1, 0, 7000), +(3210204, 4004002, 1, 1, 0, 3000), +(3210204, 1050021, 1, 1, 0, 700), +(3210204, 1050031, 1, 1, 0, 700), +(3210204, 1082053, 1, 1, 0, 700), +(3210204, 1332011, 1, 1, 0, 700), +(3210204, 1040060, 1, 1, 0, 700), +(3210204, 1060044, 1, 1, 0, 700), +(3210204, 1052110, 1, 1, 0, 700), +(3210205, 4000096, 1, 1, 0, 200000), +(3210205, 4000021, 1, 1, 0, 200000), +(3210205, 4130007, 1, 1, 0, 3000), +(3210205, 4130005, 1, 1, 0, 3000), +(3210205, 2000002, 1, 1, 0, 40000), +(3210205, 2000003, 1, 1, 0, 40000), +(3210205, 2002010, 1, 1, 0, 10000), +(3210205, 2050001, 1, 1, 0, 3000), +(3210205, 2040703, 1, 1, 0, 750), +(3210205, 2382016, 1, 1, 0, 20000), +(3210205, 4020005, 1, 1, 0, 7000), +(3210205, 4004002, 1, 1, 0, 3000), +(3210205, 1002048, 1, 1, 0, 700), +(3210205, 1051015, 1, 1, 0, 700), +(3210205, 1050037, 1, 1, 0, 700), +(3210205, 1382019, 1, 1, 0, 700), +(3210205, 1041043, 1, 1, 0, 700), +(3210205, 1061036, 1, 1, 0, 700), +(3210205, 1002136, 1, 1, 0, 700), +(3210205, 1040076, 1, 1, 0, 700), +(3210205, 1060065, 1, 1, 0, 700), +(3210205, 1082075, 1, 1, 0, 700), +(3210205, 1040057, 1, 1, 0, 700), +(3210205, 1060043, 1, 1, 0, 700), +(3210205, 1052113, 1, 1, 0, 700), +(3210207, 4000113, 1, 1, 0, 200000), +(9300232, 4000113, 1, 1, 0, 200000), +(3210207, 4031992, 1, 1, 0, 7000), +(9300232, 4031992, 1, 1, 0, 7000), +(3210207, 4131011, 1, 1, 0, 3000), +(9300232, 4131011, 1, 1, 0, 3000), +(3210207, 2000002, 1, 1, 0, 40000), +(9300232, 2000002, 1, 1, 0, 40000), +(3210207, 2000003, 1, 1, 0, 40000), +(9300232, 2000003, 1, 1, 0, 40000), +(3210207, 2060005, 10, 50, 0, 10000), +(9300232, 2060005, 10, 50, 0, 10000), +(3210207, 2041018, 1, 1, 0, 750), +(9300232, 2041018, 1, 1, 0, 750), +(3210207, 2382017, 1, 1, 0, 20000), +(9300232, 2382017, 1, 1, 0, 20000), +(3210207, 4020002, 1, 1, 0, 7000), +(9300232, 4020002, 1, 1, 0, 7000), +(3210207, 4020000, 1, 1, 0, 7000), +(9300232, 4020000, 1, 1, 0, 7000), +(3210207, 4004000, 1, 1, 0, 3000), +(9300232, 4004000, 1, 1, 0, 3000), +(3210207, 4020007, 1, 1, 0, 7000), +(9300232, 4020007, 1, 1, 0, 7000), +(3210207, 1412005, 1, 1, 0, 700), +(9300232, 1412005, 1, 1, 0, 700), +(3210207, 1082024, 1, 1, 0, 700), +(9300232, 1082024, 1, 1, 0, 700), +(3210207, 1050038, 1, 1, 0, 700), +(9300232, 1050038, 1, 1, 0, 700), +(3210207, 1372001, 1, 1, 0, 700), +(9300232, 1372001, 1, 1, 0, 700), +(3210207, 1082055, 1, 1, 0, 700), +(9300232, 1082055, 1, 1, 0, 700), +(3210207, 1072076, 1, 1, 0, 700), +(9300232, 1072076, 1, 1, 0, 700), +(3210207, 1041069, 1, 1, 0, 700), +(9300232, 1041069, 1, 1, 0, 700), +(3210207, 1061064, 1, 1, 0, 700), +(9300232, 1061064, 1, 1, 0, 700), +(3210207, 1452006, 1, 1, 0, 700), +(9300232, 1452006, 1, 1, 0, 700), +(3210207, 1002139, 1, 1, 0, 700), +(9300232, 1002139, 1, 1, 0, 700), +(3210207, 1082048, 1, 1, 0, 700), +(9300232, 1082048, 1, 1, 0, 700), +(3210207, 1002178, 1, 1, 0, 700), +(9300232, 1002178, 1, 1, 0, 700), +(3210207, 1072107, 1, 1, 0, 700), +(9300232, 1072107, 1, 1, 0, 700), +(3210207, 1072297, 1, 1, 0, 700), +(9300232, 1072297, 1, 1, 0, 700), +(3230100, 4000013, 1, 1, 0, 200000), +(3230100, 4030012, 1, 1, 0, 10000), +(3230100, 2000002, 1, 1, 0, 40000), +(3230100, 2000003, 1, 1, 0, 40000), +(3230100, 2002005, 1, 1, 0, 10000), +(3230100, 2044502, 1, 1, 0, 750), +(3230100, 2044904, 1, 1, 0, 750), +(3230100, 2330001, 1, 1, 0, 400), +(3230100, 2382018, 1, 1, 0, 20000), +(3230100, 4010005, 1, 1, 0, 7000), +(3230100, 4020006, 1, 1, 0, 7000), +(3230100, 1302020, 1, 1, 0, 700), +(3230100, 1302030, 1, 1, 0, 700), +(3230100, 1322003, 1, 1, 0, 700), +(3230100, 1002025, 1, 1, 0, 700), +(3230100, 1040021, 1, 1, 0, 700), +(3230100, 1432003, 1, 1, 0, 700), +(3230100, 1060016, 1, 1, 0, 700), +(3230100, 1442024, 1, 1, 0, 700), +(3230100, 1002143, 1, 1, 0, 700), +(3230100, 1051025, 1, 1, 0, 700), +(3230100, 1050045, 1, 1, 0, 700), +(3230100, 1040079, 1, 1, 0, 700), +(3230100, 1060069, 1, 1, 0, 700), +(3230100, 1002180, 1, 1, 0, 700), +(3230100, 1040063, 1, 1, 0, 700), +(3230100, 1060052, 1, 1, 0, 700), +(3230100, 1061069, 1, 1, 0, 700), +(3230100, 1482004, 1, 1, 0, 700), +(3230100, 1492006, 1, 1, 0, 700), +(3230100, 1482005, 1, 1, 0, 700), +(3230101, 4000035, 1, 1, 0, 200000), +(9400501, 4000035, 1, 1, 0, 200000), +(9500111, 4000035, 1, 1, 0, 200000), +(9500157, 4000035, 1, 1, 0, 200000), +(3230101, 2000002, 1, 1, 0, 40000), +(9400501, 2000002, 1, 1, 0, 40000), +(9500111, 2000002, 1, 1, 0, 40000), +(9500157, 2000002, 1, 1, 0, 40000), +(3230101, 2070002, 1, 1, 0, 400), +(9400501, 2070002, 1, 1, 0, 400), +(9500111, 2070002, 1, 1, 0, 400), +(9500157, 2070002, 1, 1, 0, 400), +(3230101, 2048000, 1, 1, 0, 750), +(9400501, 2048000, 1, 1, 0, 750), +(9500111, 2048000, 1, 1, 0, 750), +(9500157, 2048000, 1, 1, 0, 750), +(3230101, 2040027, 1, 1, 0, 750), +(9400501, 2040027, 1, 1, 0, 750), +(9500111, 2040027, 1, 1, 0, 750), +(9500157, 2040027, 1, 1, 0, 750), +(3230101, 2048001, 1, 1, 0, 750), +(9400501, 2048001, 1, 1, 0, 750), +(9500111, 2048001, 1, 1, 0, 750), +(9500157, 2048001, 1, 1, 0, 750), +(3230101, 2043301, 1, 1, 0, 750), +(9400501, 2043301, 1, 1, 0, 750), +(9500111, 2043301, 1, 1, 0, 750), +(9500157, 2043301, 1, 1, 0, 750), +(3230101, 2040005, 1, 1, 0, 750), +(9400501, 2040005, 1, 1, 0, 750), +(9500111, 2040005, 1, 1, 0, 750), +(9500157, 2040005, 1, 1, 0, 750), +(3230101, 2048002, 1, 1, 0, 750), +(9400501, 2048002, 1, 1, 0, 750), +(9500111, 2048002, 1, 1, 0, 750), +(9500157, 2048002, 1, 1, 0, 750), +(3230101, 2382019, 1, 1, 0, 20000), +(9400501, 2382019, 1, 1, 0, 20000), +(9500111, 2382019, 1, 1, 0, 20000), +(9500157, 2382019, 1, 1, 0, 20000), +(3230101, 4010003, 1, 1, 0, 7000), +(9400501, 4010003, 1, 1, 0, 7000), +(9500111, 4010003, 1, 1, 0, 7000), +(9500157, 4010003, 1, 1, 0, 7000), +(3230101, 4020004, 1, 1, 0, 7000), +(9400501, 4020004, 1, 1, 0, 7000), +(9500111, 4020004, 1, 1, 0, 7000), +(9500157, 4020004, 1, 1, 0, 7000), +(3230101, 4004000, 1, 1, 0, 3000), +(9400501, 4004000, 1, 1, 0, 3000), +(9500111, 4004000, 1, 1, 0, 3000), +(9500157, 4004000, 1, 1, 0, 3000), +(3230101, 1412004, 1, 1, 0, 700), +(9400501, 1412004, 1, 1, 0, 700), +(9500111, 1412004, 1, 1, 0, 700), +(9500157, 1412004, 1, 1, 0, 700), +(3230101, 1050022, 1, 1, 0, 700), +(9400501, 1050022, 1, 1, 0, 700), +(9500111, 1050022, 1, 1, 0, 700), +(9500157, 1050022, 1, 1, 0, 700), +(3230101, 1051010, 1, 1, 0, 700), +(9400501, 1051010, 1, 1, 0, 700), +(9500111, 1051010, 1, 1, 0, 700), +(9500157, 1051010, 1, 1, 0, 700), +(3230101, 1082056, 1, 1, 0, 700), +(9400501, 1082056, 1, 1, 0, 700), +(9500111, 1082056, 1, 1, 0, 700), +(9500157, 1082056, 1, 1, 0, 700), +(3230101, 1072114, 1, 1, 0, 700), +(9400501, 1072114, 1, 1, 0, 700), +(9500111, 1072114, 1, 1, 0, 700), +(9500157, 1072114, 1, 1, 0, 700), +(3230101, 1452000, 1, 1, 0, 700), +(9400501, 1452000, 1, 1, 0, 700), +(9500111, 1452000, 1, 1, 0, 700), +(9500157, 1452000, 1, 1, 0, 700), +(3230101, 1072118, 1, 1, 0, 700), +(9400501, 1072118, 1, 1, 0, 700), +(9500111, 1072118, 1, 1, 0, 700), +(9500157, 1072118, 1, 1, 0, 700), +(3230101, 1082069, 1, 1, 0, 700), +(9400501, 1082069, 1, 1, 0, 700), +(9500111, 1082069, 1, 1, 0, 700), +(9500157, 1082069, 1, 1, 0, 700), +(3230101, 1040080, 1, 1, 0, 700), +(9400501, 1040080, 1, 1, 0, 700), +(9500111, 1040080, 1, 1, 0, 700), +(9500157, 1040080, 1, 1, 0, 700), +(3230101, 1082047, 1, 1, 0, 700), +(9400501, 1082047, 1, 1, 0, 700), +(9500111, 1082047, 1, 1, 0, 700), +(9500157, 1082047, 1, 1, 0, 700), +(3230101, 1472016, 1, 1, 0, 700), +(9400501, 1472016, 1, 1, 0, 700), +(9500111, 1472016, 1, 1, 0, 700), +(9500157, 1472016, 1, 1, 0, 700), +(3230101, 1051008, 1, 1, 0, 700), +(9400501, 1051008, 1, 1, 0, 700), +(9500111, 1051008, 1, 1, 0, 700), +(9500157, 1051008, 1, 1, 0, 700), +(3230101, 1492005, 1, 1, 0, 700), +(9400501, 1492005, 1, 1, 0, 700), +(9500111, 1492005, 1, 1, 0, 700), +(9500157, 1492005, 1, 1, 0, 700), +(3230200, 4003004, 1, 1, 0, 7000), +(9500110, 4003004, 1, 1, 0, 7000), +(3230200, 4030012, 1, 1, 0, 10000), +(9500110, 4030012, 1, 1, 0, 10000), +(3230200, 2000002, 1, 1, 0, 40000), +(9500110, 2000002, 1, 1, 0, 40000), +(3230200, 2000003, 1, 1, 0, 40000), +(9500110, 2000003, 1, 1, 0, 40000), +(3230200, 2040902, 1, 1, 0, 750), +(9500110, 2040902, 1, 1, 0, 750), +(3230200, 2041012, 1, 1, 0, 750), +(9500110, 2041012, 1, 1, 0, 750), +(3230200, 2041046, 1, 1, 0, 750), +(9500110, 2041046, 1, 1, 0, 750), +(3230200, 4006000, 1, 1, 0, 7000), +(9500110, 4006000, 1, 1, 0, 7000), +(3230200, 2382020, 1, 1, 0, 20000), +(9500110, 2382020, 1, 1, 0, 20000), +(3230200, 4010001, 1, 1, 0, 7000), +(9500110, 4010001, 1, 1, 0, 7000), +(3230200, 4020000, 1, 1, 0, 7000), +(9500110, 4020000, 1, 1, 0, 7000), +(3230200, 4004001, 1, 1, 0, 3000), +(9500110, 4004001, 1, 1, 0, 3000), +(3230200, 1432008, 1, 1, 0, 700), +(9500110, 1432008, 1, 1, 0, 700), +(3230200, 1092008, 1, 1, 0, 700), +(9500110, 1092008, 1, 1, 0, 700), +(3230200, 1322027, 1, 1, 0, 700), +(9500110, 1322027, 1, 1, 0, 700), +(3230200, 1302017, 1, 1, 0, 700), +(9500110, 1302017, 1, 1, 0, 700), +(3230200, 1092007, 1, 1, 0, 700), +(9500110, 1092007, 1, 1, 0, 700), +(3230200, 1082005, 1, 1, 0, 700), +(9500110, 1082005, 1, 1, 0, 700), +(3230200, 1302009, 1, 1, 0, 700), +(9500110, 1302009, 1, 1, 0, 700), +(3230200, 1051027, 1, 1, 0, 700), +(9500110, 1051027, 1, 1, 0, 700), +(3230200, 1002152, 1, 1, 0, 700), +(9500110, 1002152, 1, 1, 0, 700), +(3230200, 1462014, 1, 1, 0, 700), +(9500110, 1462014, 1, 1, 0, 700), +(3230200, 1072102, 1, 1, 0, 700), +(9500110, 1072102, 1, 1, 0, 700), +(3230200, 1452007, 1, 1, 0, 700), +(9500110, 1452007, 1, 1, 0, 700), +(3230200, 1041065, 1, 1, 0, 700), +(9500110, 1041065, 1, 1, 0, 700), +(3230200, 1061060, 1, 1, 0, 700), +(9500110, 1061060, 1, 1, 0, 700), +(3230200, 1082050, 1, 1, 0, 700), +(9500110, 1082050, 1, 1, 0, 700), +(3230200, 1002176, 1, 1, 0, 700), +(9500110, 1002176, 1, 1, 0, 700), +(3230200, 1002625, 1, 1, 0, 700), +(9500110, 1002625, 1, 1, 0, 700), +(5400000, 2050002, 1, 1, 0, 3000), +(9500112, 2050002, 1, 1, 0, 3000), +(5400000, 2060001, 10, 50, 0, 10000), +(9500112, 2060001, 10, 50, 0, 10000), +(5400000, 2061001, 10, 50, 0, 10000), +(9500112, 2061001, 10, 50, 0, 10000), +(5400000, 2070002, 1, 1, 0, 400), +(9500112, 2070002, 1, 1, 0, 400), +(5400000, 2000002, 1, 1, 0, 40000), +(9500112, 2000002, 1, 1, 0, 40000), +(5400000, 2000003, 1, 1, 0, 40000), +(9500112, 2000003, 1, 1, 0, 40000), +(5400000, 4006000, 1, 1, 0, 7000), +(9500112, 4006000, 1, 1, 0, 7000), +(5400000, 2043801, 1, 1, 0, 750), +(9500112, 2043801, 1, 1, 0, 750), +(5400000, 2044803, 1, 1, 0, 750), +(9500112, 2044803, 1, 1, 0, 750), +(5400000, 2382023, 1, 1, 0, 20000), +(9500112, 2382023, 1, 1, 0, 20000), +(5400000, 4010003, 1, 1, 0, 7000), +(9500112, 4010003, 1, 1, 0, 7000), +(5400000, 4020005, 1, 1, 0, 7000), +(9500112, 4020005, 1, 1, 0, 7000), +(5400000, 4004003, 1, 1, 0, 3000), +(9500112, 4004003, 1, 1, 0, 3000), +(5400000, 1432008, 1, 1, 0, 700), +(9500112, 1432008, 1, 1, 0, 700), +(5400000, 1040030, 1, 1, 0, 700), +(9500112, 1040030, 1, 1, 0, 700), +(5400000, 1422007, 1, 1, 0, 700), +(9500112, 1422007, 1, 1, 0, 700), +(5400000, 1422008, 1, 1, 0, 700), +(9500112, 1422008, 1, 1, 0, 700), +(5400000, 1002021, 1, 1, 0, 700), +(9500112, 1002021, 1, 1, 0, 700), +(5400000, 1051001, 1, 1, 0, 700), +(9500112, 1051001, 1, 1, 0, 700), +(5400000, 1382017, 1, 1, 0, 700), +(9500112, 1382017, 1, 1, 0, 700), +(5400000, 1082062, 1, 1, 0, 700), +(9500112, 1082062, 1, 1, 0, 700), +(5400000, 1041067, 1, 1, 0, 700), +(9500112, 1041067, 1, 1, 0, 700), +(5400000, 1061062, 1, 1, 0, 700), +(9500112, 1061062, 1, 1, 0, 700), +(5400000, 1072108, 1, 1, 0, 700), +(9500112, 1072108, 1, 1, 0, 700), +(5400000, 1040059, 1, 1, 0, 700), +(9500112, 1040059, 1, 1, 0, 700), +(5400000, 1060045, 1, 1, 0, 700), +(9500112, 1060045, 1, 1, 0, 700), +(5400000, 1002177, 1, 1, 0, 700), +(9500112, 1002177, 1, 1, 0, 700), +(5400000, 1082192, 1, 1, 0, 700), +(9500112, 1082192, 1, 1, 0, 700), +(3220000, 4000003, 1, 1, 0, 200000), +(9300185, 4000003, 1, 1, 0, 200000), +(9500307, 4000003, 1, 1, 0, 200000), +(9500338, 4000003, 1, 1, 0, 200000), +(9303001, 4000003, 1, 1, 0, 200000), +(3220000, 4000018, 1, 1, 0, 200000), +(9300185, 4000018, 1, 1, 0, 200000), +(9500307, 4000018, 1, 1, 0, 200000), +(9500338, 4000018, 1, 1, 0, 200000), +(9303001, 4000018, 1, 1, 0, 200000), +(3220000, 1012031, 1, 1, 0, 40000), +(9300185, 1012031, 1, 1, 0, 40000), +(9500307, 1012031, 1, 1, 0, 40000), +(9500338, 1012031, 1, 1, 0, 40000), +(9303001, 1012031, 1, 1, 0, 700), +(3220000, 4003001, 1, 1, 0, 7000), +(9300185, 4003001, 1, 1, 0, 7000), +(9500307, 4003001, 1, 1, 0, 7000), +(9500338, 4003001, 1, 1, 0, 7000), +(9303001, 4003001, 1, 1, 0, 7000), +(3220000, 4000195, 1, 1, 0, 200000), +(9300185, 4000195, 1, 1, 0, 200000), +(9500307, 4000195, 1, 1, 0, 200000), +(9500338, 4000195, 1, 1, 0, 200000), +(9303001, 4000195, 1, 1, 0, 200000), +(3220000, 2000001, 1, 4, 0, 40000), +(9300185, 2000001, 1, 4, 0, 40000), +(9500307, 2000001, 1, 4, 0, 40000), +(9500338, 2000001, 1, 4, 0, 40000), +(9303001, 2000001, 1, 1, 0, 40000), +(3220000, 2000003, 1, 4, 0, 40000), +(9300185, 2000003, 1, 4, 0, 40000), +(9500307, 2000003, 1, 4, 0, 40000), +(9500338, 2000003, 1, 4, 0, 40000), +(9303001, 2000003, 1, 1, 0, 40000), +(3220000, 2012002, 1, 4, 0, 3000), +(9300185, 2012002, 1, 4, 0, 3000), +(9500307, 2012002, 1, 4, 0, 3000), +(9500338, 2012002, 1, 4, 0, 3000), +(9303001, 2012002, 1, 1, 0, 3000), +(3220000, 2041017, 1, 4, 0, 10000), +(9300185, 2041017, 1, 4, 0, 10000), +(9500307, 2041017, 1, 4, 0, 10000), +(9500338, 2041017, 1, 4, 0, 10000), +(9303001, 2041017, 1, 1, 0, 750), +(3220000, 2041016, 1, 4, 0, 10000), +(9300185, 2041016, 1, 4, 0, 10000), +(9500307, 2041016, 1, 4, 0, 10000), +(9500338, 2041016, 1, 4, 0, 10000), +(9303001, 2041016, 1, 1, 0, 750), +(3220000, 2041043, 1, 4, 0, 10000), +(9300185, 2041043, 1, 4, 0, 10000), +(9500307, 2041043, 1, 4, 0, 10000), +(9500338, 2041043, 1, 4, 0, 10000), +(9303001, 2041043, 1, 1, 0, 750), +(3220000, 2041010, 1, 4, 0, 10000), +(9300185, 2041010, 1, 4, 0, 10000), +(9500307, 2041010, 1, 4, 0, 10000), +(9500338, 2041010, 1, 4, 0, 10000), +(9303001, 2041010, 1, 1, 0, 750), +(3220000, 2041045, 1, 4, 0, 10000), +(9300185, 2041045, 1, 4, 0, 10000), +(9500307, 2041045, 1, 4, 0, 10000), +(9500338, 2041045, 1, 4, 0, 10000), +(9303001, 2041045, 1, 1, 0, 750), +(3220000, 2040801, 1, 4, 0, 10000), +(9300185, 2040801, 1, 4, 0, 10000), +(9500307, 2040801, 1, 4, 0, 10000), +(9500338, 2040801, 1, 4, 0, 10000), +(9303001, 2040801, 1, 1, 0, 750), +(3220000, 2043101, 1, 4, 0, 10000), +(9300185, 2043101, 1, 4, 0, 10000), +(9500307, 2043101, 1, 4, 0, 10000), +(9500338, 2043101, 1, 4, 0, 10000), +(9303001, 2043101, 1, 1, 0, 750), +(3220000, 2043201, 1, 4, 0, 10000), +(9300185, 2043201, 1, 4, 0, 10000), +(9500307, 2043201, 1, 4, 0, 10000), +(9500338, 2043201, 1, 4, 0, 10000), +(9303001, 2043201, 1, 1, 0, 750), +(3220000, 2043001, 1, 4, 0, 10000), +(9300185, 2043001, 1, 4, 0, 10000), +(9500307, 2043001, 1, 4, 0, 10000), +(9500338, 2043001, 1, 4, 0, 10000), +(9303001, 2043001, 1, 1, 0, 750), +(3220000, 2040502, 1, 4, 0, 10000), +(9300185, 2040502, 1, 4, 0, 10000), +(9500307, 2040502, 1, 4, 0, 10000), +(9500338, 2040502, 1, 4, 0, 10000), +(9303001, 2040502, 1, 1, 0, 750), +(3220000, 2040901, 1, 4, 0, 10000), +(9300185, 2040901, 1, 4, 0, 10000), +(9500307, 2040901, 1, 4, 0, 10000), +(9500338, 2040901, 1, 4, 0, 10000), +(9303001, 2040901, 1, 1, 0, 750), +(3220000, 2040701, 1, 4, 0, 10000), +(9300185, 2040701, 1, 4, 0, 10000), +(9500307, 2040701, 1, 4, 0, 10000), +(9500338, 2040701, 1, 4, 0, 10000), +(9303001, 2040701, 1, 1, 0, 750), +(3220000, 2040402, 1, 4, 0, 10000), +(9300185, 2040402, 1, 4, 0, 10000), +(9500307, 2040402, 1, 4, 0, 10000), +(9500338, 2040402, 1, 4, 0, 10000), +(9303001, 2040402, 1, 1, 0, 750), +(3220000, 2044201, 1, 4, 0, 10000), +(9300185, 2044201, 1, 4, 0, 10000), +(9500307, 2044201, 1, 4, 0, 10000), +(9500338, 2044201, 1, 4, 0, 10000), +(9303001, 2044201, 1, 1, 0, 750), +(3220000, 2044002, 1, 4, 0, 10000), +(9300185, 2044002, 1, 4, 0, 10000), +(9500307, 2044002, 1, 4, 0, 10000), +(9500338, 2044002, 1, 4, 0, 10000), +(9303001, 2044002, 1, 1, 0, 750), +(3220000, 2388025, 1, 4, 0, 20000), +(9300185, 2388025, 1, 4, 0, 20000), +(9500307, 2388025, 1, 4, 0, 20000), +(9500338, 2388025, 1, 4, 0, 20000), +(9303001, 2388025, 1, 1, 0, 20000), +(3220000, 4020001, 1, 1, 0, 7000), +(9300185, 4020001, 1, 1, 0, 7000), +(9500307, 4020001, 1, 1, 0, 7000), +(9500338, 4020001, 1, 1, 0, 7000), +(9303001, 4020001, 1, 1, 0, 7000), +(3220000, 4010000, 1, 1, 0, 7000), +(9300185, 4010000, 1, 1, 0, 7000), +(9500307, 4010000, 1, 1, 0, 7000), +(9500338, 4010000, 1, 1, 0, 7000), +(9303001, 4010000, 1, 1, 0, 7000), +(3220000, 1082025, 1, 1, 0, 40000), +(9300185, 1082025, 1, 1, 0, 40000), +(9500307, 1082025, 1, 1, 0, 40000), +(9500338, 1082025, 1, 1, 0, 40000), +(9303001, 1082025, 1, 1, 0, 700), +(3220000, 1041083, 1, 1, 0, 40000), +(9300185, 1041083, 1, 1, 0, 40000), +(9500307, 1041083, 1, 1, 0, 40000), +(9500338, 1041083, 1, 1, 0, 40000), +(9303001, 1041083, 1, 1, 0, 700), +(3220000, 1002170, 1, 1, 0, 40000), +(9300185, 1002170, 1, 1, 0, 40000), +(9500307, 1002170, 1, 1, 0, 40000), +(9500338, 1002170, 1, 1, 0, 40000), +(9303001, 1002170, 1, 1, 0, 700), +(3220000, 1082074, 1, 1, 0, 40000), +(9300185, 1082074, 1, 1, 0, 40000), +(9500307, 1082074, 1, 1, 0, 40000), +(9500338, 1082074, 1, 1, 0, 40000), +(9303001, 1082074, 1, 1, 0, 700), +(3220000, 1072107, 1, 1, 0, 40000), +(9300185, 1072107, 1, 1, 0, 40000), +(9500307, 1072107, 1, 1, 0, 40000), +(9500338, 1072107, 1, 1, 0, 40000), +(9303001, 1072107, 1, 1, 0, 700), +(3220000, 1002185, 1, 1, 0, 40000), +(9300185, 1002185, 1, 1, 0, 40000), +(9500307, 1002185, 1, 1, 0, 40000), +(9500338, 1002185, 1, 1, 0, 40000), +(9303001, 1002185, 1, 1, 0, 700), +(3220000, 1072087, 1, 1, 0, 40000), +(9300185, 1072087, 1, 1, 0, 40000), +(9500307, 1072087, 1, 1, 0, 40000), +(9500338, 1072087, 1, 1, 0, 40000), +(9303001, 1072087, 1, 1, 0, 700), +(3110302, 4000356, 1, 1, 0, 200000), +(3110302, 2000002, 1, 1, 0, 40000), +(3110302, 2000003, 1, 1, 0, 40000), +(3110302, 2002005, 1, 1, 0, 10000), +(3110302, 2060000, 10, 50, 0, 10000), +(3110302, 2061000, 10, 50, 0, 10000), +(3110302, 2044502, 1, 1, 0, 750), +(3110302, 2382024, 1, 1, 0, 20000), +(3110302, 4010005, 1, 1, 0, 7000), +(3110302, 4020006, 1, 1, 0, 7000), +(3110302, 1322003, 1, 1, 0, 700), +(3110302, 1002025, 1, 1, 0, 700), +(3110302, 1040021, 1, 1, 0, 700), +(3110302, 1432003, 1, 1, 0, 700), +(3110302, 1060016, 1, 1, 0, 700), +(3110302, 1002143, 1, 1, 0, 700), +(3110302, 1051025, 1, 1, 0, 700), +(3110302, 1040079, 1, 1, 0, 700), +(3110302, 1060069, 1, 1, 0, 700), +(3110302, 1002180, 1, 1, 0, 700), +(3110302, 1040063, 1, 1, 0, 700), +(3110302, 1060052, 1, 1, 0, 700), +(3110302, 1072297, 1, 1, 0, 700), +(3300005, 4000504, 1, 1, 0, 200000), +(3300005, 2388067, 1, 1, 0, 20000), +(3300005, 2022570, 1, 1, 0, 3000), +(3300005, 2022571, 1, 1, 0, 3000), +(3300005, 2022572, 1, 1, 0, 3000), +(3300005, 2022573, 1, 1, 0, 3000), +(3300005, 2022574, 1, 1, 0, 3000), +(3300005, 2000001, 1, 1, 0, 40000), +(3300005, 2000003, 1, 1, 0, 40000), +(3300005, 2040004, 1, 1, 0, 750), +(3300005, 2040501, 1, 1, 0, 750), +(3300005, 2040504, 1, 1, 0, 750), +(3300005, 2040801, 1, 1, 0, 750), +(3300005, 2041007, 1, 1, 0, 750), +(3300005, 2041045, 1, 1, 0, 750), +(3300005, 2043801, 1, 1, 0, 750), +(3300005, 2044001, 1, 1, 0, 750), +(3300005, 2044201, 1, 1, 0, 750), +(3300005, 2044803, 1, 1, 0, 750), +(3300005, 2044601, 1, 1, 0, 750), +(3300005, 1032013, 1, 1, 0, 700), +(3300005, 1082025, 1, 1, 0, 700), +(3300005, 1082064, 1, 1, 0, 700), +(3300005, 1082073, 1, 1, 0, 700), +(3300005, 1082074, 1, 1, 0, 700), +(3300005, 1082195, 1, 1, 0, 700), +(3300006, 4000506, 1, 1, 0, 200000), +(3300006, 2388068, 1, 1, 0, 20000), +(3300006, 2022575, 1, 1, 0, 3000), +(3300006, 2022576, 1, 1, 0, 3000), +(3300006, 2022577, 1, 1, 0, 3000), +(3300006, 2022578, 1, 1, 0, 3000), +(3300006, 2022579, 1, 1, 0, 3000), +(3300006, 2000001, 1, 1, 0, 40000), +(3300006, 2000003, 1, 1, 0, 40000), +(3300006, 2040701, 1, 1, 0, 750), +(3300006, 2040801, 1, 1, 0, 750), +(3300006, 2040901, 1, 1, 0, 750), +(3300006, 2041043, 1, 1, 0, 750), +(3300006, 2043101, 1, 1, 0, 750), +(3300006, 2043001, 1, 1, 0, 750), +(3300006, 2043201, 1, 1, 0, 750), +(3300006, 2041010, 1, 1, 0, 750), +(3300006, 2041045, 1, 1, 0, 750), +(3300006, 2060000, 10, 50, 0, 10000), +(3300006, 2061000, 10, 50, 0, 10000), +(3300006, 2041017, 1, 1, 0, 750), +(3300006, 2040402, 1, 1, 0, 750), +(3300006, 2044002, 1, 1, 0, 750), +(3300006, 2040502, 1, 1, 0, 750), +(3300006, 2040602, 1, 1, 0, 750), +(3300006, 2041016, 1, 1, 0, 750), +(3300006, 2070009, 1, 1, 0, 400), +(3300006, 2044113, 1, 1, 0, 750), +(3300006, 2044413, 1, 1, 0, 750), +(3300006, 1002098, 1, 1, 0, 700), +(3300006, 1040085, 1, 1, 0, 700), +(3300006, 1041086, 1, 1, 0, 700), +(3300006, 1082025, 1, 1, 0, 700), +(3300006, 1002154, 1, 1, 0, 700), +(3300006, 1050039, 1, 1, 0, 700), +(3300006, 1051026, 1, 1, 0, 700), +(3300006, 1082064, 1, 1, 0, 700), +(3300006, 1072117, 1, 1, 0, 700), +(3300006, 1002170, 1, 1, 0, 700), +(3300006, 1040080, 1, 1, 0, 700), +(3300006, 1041083, 1, 1, 0, 700), +(3300006, 1082073, 1, 1, 0, 700), +(3300006, 1072118, 1, 1, 0, 700), +(3300006, 1002185, 1, 1, 0, 700), +(3300006, 1040084, 1, 1, 0, 700), +(3300006, 1040084, 1, 1, 0, 700), +(3300006, 1082074, 1, 1, 0, 700), +(3300006, 1072107, 1, 1, 0, 700), +(3300006, 1002628, 1, 1, 0, 700), +(3300006, 1052113, 1, 1, 0, 700), +(3300006, 1082195, 1, 1, 0, 700), +(3300006, 1072300, 1, 1, 0, 700), +(3300007, 4000505, 1, 1, 0, 200000), +(3300007, 2388069, 1, 1, 0, 20000), +(3300007, 2022580, 1, 1, 0, 3000), +(3300007, 2022581, 1, 1, 0, 3000), +(3300007, 2022582, 1, 1, 0, 3000), +(3300007, 2022583, 1, 1, 0, 3000), +(3300007, 2022584, 1, 1, 0, 3000), +(3300007, 2000000, 1, 1, 0, 40000), +(3300007, 2010009, 1, 1, 0, 3000), +(3300007, 2020014, 1, 1, 0, 3000), +(3300007, 2040001, 1, 1, 0, 750), +(3300007, 2040301, 1, 1, 0, 750), +(3300007, 2040401, 1, 1, 0, 750), +(3300007, 2043201, 1, 1, 0, 750), +(3300007, 2043701, 1, 1, 0, 750), +(3300007, 2041016, 1, 1, 0, 750), +(3300007, 2043801, 1, 1, 0, 750), +(3300007, 2044001, 1, 1, 0, 750), +(3300007, 2040501, 1, 1, 0, 750), +(3300007, 2040601, 1, 1, 0, 750), +(3300007, 2060000, 10, 50, 0, 10000), +(3300007, 2061000, 10, 50, 0, 10000), +(3300007, 2070000, 1, 1, 0, 400), +(3300007, 2040002, 1, 1, 0, 750), +(3300007, 2040302, 1, 1, 0, 750), +(3300007, 2040402, 1, 1, 0, 750), +(3300007, 2043302, 1, 1, 0, 750), +(3300007, 2043702, 1, 1, 0, 750), +(3300007, 2330000, 1, 1, 0, 400), +(3300007, 2044803, 1, 1, 0, 750), +(3300007, 2044904, 1, 1, 0, 750), +(3300007, 2040419, 1, 1, 0, 750), +(3300007, 2040930, 1, 1, 0, 750), +(3300007, 2043116, 1, 1, 0, 750), +(3300007, 4010000, 1, 1, 0, 7000), +(3300007, 4020000, 1, 1, 0, 7000), +(3300007, 1002049, 1, 1, 0, 700), +(3300007, 1040041, 1, 1, 0, 700), +(3300007, 1041024, 1, 1, 0, 700), +(3300007, 1082001, 1, 1, 0, 700), +(3300007, 1072052, 1, 1, 0, 700), +(3300007, 1002073, 1, 1, 0, 700), +(3300007, 1050025, 1, 1, 0, 700), +(3300007, 1051005, 1, 1, 0, 700), +(3300007, 1082028, 1, 1, 0, 700), +(3300007, 1072074, 1, 1, 0, 700), +(3300007, 1002159, 1, 1, 0, 700), +(3300007, 1040023, 1, 1, 0, 700), +(3300007, 1040025, 1, 1, 0, 700), +(3300007, 1082018, 1, 1, 0, 700), +(3300007, 1072069, 1, 1, 0, 700), +(3300007, 1002150, 1, 1, 0, 700), +(3300007, 1040050, 1, 1, 0, 700), +(3300007, 1041060, 1, 1, 0, 700), +(3300007, 1082039, 1, 1, 0, 700), +(3300007, 1072087, 1, 1, 0, 700), +(3300007, 1002619, 1, 1, 0, 700), +(3300007, 1052104, 1, 1, 0, 700), +(3300007, 1082186, 1, 1, 0, 700), +(3300007, 1072291, 1, 1, 0, 700), +(9001012, 4032311, 1, 1, 0, 10000), +(3400000, 4000539, 1, 1, 0, 200000), +(3400000, 2000001, 1, 1, 0, 40000), +(3400000, 2000003, 1, 1, 0, 40000), +(3400000, 2000006, 1, 1, 0, 40000), +(3400000, 2022003, 1, 1, 0, 3000), +(3400000, 2000004, 1, 1, 0, 40000), +(3400000, 2040004, 1, 1, 0, 750), +(3400000, 2040504, 1, 1, 0, 750), +(3400000, 2049212, 1, 1, 0, 400), +(3400000, 2049214, 1, 1, 0, 400), +(3400000, 4020007, 1, 1, 0, 7000), +(3400000, 4004000, 1, 1, 0, 3000), +(3400000, 1002098, 1, 1, 0, 700), +(3400000, 1002154, 1, 1, 0, 700), +(3400000, 1072117, 1, 1, 0, 700), +(3400000, 1002170, 1, 1, 0, 700), +(3400000, 1072118, 1, 1, 0, 700), +(3400000, 1002185, 1, 1, 0, 700), +(3400000, 1072107, 1, 1, 0, 700), +(3400000, 1002628, 1, 1, 0, 700), +(3400000, 1072300, 1, 1, 0, 700), +(9410011, 1072117, 1, 1, 0, 700), +(9410011, 1072107, 1, 1, 0, 700), +(9410011, 1002628, 1, 1, 0, 700), +(3230302, 4000099, 1, 1, 0, 200000), +(3230302, 4001125, 1, 1, 0, 7000), +(3230302, 4030013, 1, 1, 0, 10000), +(3230302, 4131008, 1, 1, 0, 3000), +(3230302, 2000002, 1, 1, 0, 40000), +(3230302, 2000003, 1, 1, 0, 40000), +(3230302, 2041023, 1, 1, 0, 750), +(3230302, 2382022, 1, 1, 0, 20000), +(3230302, 4010006, 1, 1, 0, 7000), +(3230302, 4020004, 1, 1, 0, 7000), +(3230302, 4004001, 1, 1, 0, 3000), +(3230302, 4004003, 1, 1, 0, 3000), +(3230302, 1072040, 1, 1, 0, 700), +(3230302, 1442009, 1, 1, 0, 700), +(3230302, 1072078, 1, 1, 0, 700), +(3230302, 1002141, 1, 1, 0, 700), +(3230302, 1462006, 1, 1, 0, 700), +(3230302, 1040075, 1, 1, 0, 700), +(3230302, 1060064, 1, 1, 0, 700), +(3230302, 1040082, 1, 1, 0, 700), +(3230302, 1060071, 1, 1, 0, 700), +(3230302, 1472010, 1, 1, 0, 700), +(3230302, 1051009, 1, 1, 0, 700), +(3230302, 1052110, 1, 1, 0, 700), +(3210203, 4000108, 1, 1, 0, 200000), +(9500113, 4000108, 1, 1, 0, 200000), +(3210203, 4030015, 1, 1, 0, 10000), +(9500113, 4030015, 1, 1, 0, 10000), +(3210203, 4130003, 1, 1, 0, 3000), +(9500113, 4130003, 1, 1, 0, 3000), +(3210203, 4131009, 1, 1, 0, 3000), +(9500113, 4131009, 1, 1, 0, 3000), +(3210203, 2002008, 1, 1, 0, 10000), +(9500113, 2002008, 1, 1, 0, 10000), +(3210203, 2044501, 1, 1, 0, 750), +(9500113, 2044501, 1, 1, 0, 750), +(3210203, 2049101, 1, 1, 0, 400), +(9500113, 2049101, 1, 1, 0, 400), +(3210203, 2382025, 1, 1, 0, 20000), +(9500113, 2382025, 1, 1, 0, 20000), +(3210203, 4010002, 1, 1, 0, 7000), +(9500113, 4010002, 1, 1, 0, 7000), +(3210203, 4004003, 1, 1, 0, 3000), +(9500113, 4004003, 1, 1, 0, 3000), +(3210203, 1040021, 1, 1, 0, 700), +(9500113, 1040021, 1, 1, 0, 700), +(3210203, 1082025, 1, 1, 0, 700), +(9500113, 1082025, 1, 1, 0, 700), +(3210203, 1312007, 1, 1, 0, 700), +(9500113, 1312007, 1, 1, 0, 700), +(3210203, 1060018, 1, 1, 0, 700), +(9500113, 1060018, 1, 1, 0, 700), +(3210203, 1050039, 1, 1, 0, 700), +(9500113, 1050039, 1, 1, 0, 700), +(3210203, 1002153, 1, 1, 0, 700), +(9500113, 1002153, 1, 1, 0, 700), +(3210203, 1072114, 1, 1, 0, 700), +(9500113, 1072114, 1, 1, 0, 700), +(3210203, 1072080, 1, 1, 0, 700), +(9500113, 1072080, 1, 1, 0, 700), +(3210203, 1002166, 1, 1, 0, 700), +(9500113, 1002166, 1, 1, 0, 700), +(3210203, 1332031, 1, 1, 0, 700), +(9500113, 1332031, 1, 1, 0, 700), +(3210203, 1051006, 1, 1, 0, 700), +(9500113, 1051006, 1, 1, 0, 700), +(3210203, 1482005, 1, 1, 0, 700), +(9500113, 1482005, 1, 1, 0, 700), +(9400542, 4130003, 1, 1, 0, 3000), +(9400542, 4131009, 1, 1, 0, 3000), +(9400542, 2000002, 1, 1, 0, 40000), +(9400542, 2002001, 1, 1, 0, 10000), +(9400542, 2002008, 1, 1, 0, 10000), +(9400542, 2044709, 1, 1, 0, 750), +(9400542, 2040805, 1, 1, 0, 750), +(9400542, 2060004, 10, 50, 0, 10000), +(9400542, 2061004, 10, 50, 0, 10000), +(9400542, 1032039, 1, 1, 0, 700), +(9400542, 1050039, 1, 1, 0, 700), +(9400542, 1332031, 1, 1, 0, 700), +(3400001, 2000001, 1, 1, 0, 40000), +(3400001, 2000003, 1, 1, 0, 40000), +(3400001, 2000006, 1, 1, 0, 40000), +(3400001, 2022003, 1, 1, 0, 3000), +(3400001, 2000004, 1, 1, 0, 40000), +(3400001, 2040004, 1, 1, 0, 750), +(3400001, 2040504, 1, 1, 0, 750), +(3400001, 2049212, 1, 1, 0, 400), +(3400001, 2049214, 1, 1, 0, 400), +(3400001, 4020007, 1, 1, 0, 7000), +(3400001, 4004000, 1, 1, 0, 3000), +(3400001, 1002098, 1, 1, 0, 700), +(3400001, 1002154, 1, 1, 0, 700), +(3400001, 1072117, 1, 1, 0, 700), +(3400001, 1002170, 1, 1, 0, 700), +(3400001, 1072118, 1, 1, 0, 700), +(3400001, 1002185, 1, 1, 0, 700), +(3400001, 1072107, 1, 1, 0, 700), +(3400001, 1002628, 1, 1, 0, 700), +(3400001, 1072300, 1, 1, 0, 700), +(3210206, 4000103, 1, 1, 0, 200000), +(9500117, 4000103, 1, 1, 0, 200000), +(3210206, 4131006, 1, 1, 0, 3000), +(9500117, 4131006, 1, 1, 0, 3000), +(3210206, 2000002, 1, 1, 0, 40000), +(9500117, 2000002, 1, 1, 0, 40000), +(3210206, 2000003, 1, 1, 0, 40000), +(9500117, 2000003, 1, 1, 0, 40000), +(3210206, 2043001, 1, 1, 0, 750), +(9500117, 2043001, 1, 1, 0, 750), +(3210206, 2070003, 1, 1, 0, 400), +(9500117, 2070003, 1, 1, 0, 400), +(3210206, 2382026, 1, 1, 0, 20000), +(9500117, 2382026, 1, 1, 0, 20000), +(3210206, 4010003, 1, 1, 0, 7000), +(9500117, 4010003, 1, 1, 0, 7000), +(3210206, 4020008, 1, 1, 0, 7000), +(9500117, 4020008, 1, 1, 0, 7000), +(3210206, 4020005, 1, 1, 0, 7000), +(9500117, 4020005, 1, 1, 0, 7000), +(3210206, 4004000, 1, 1, 0, 3000), +(9500117, 4004000, 1, 1, 0, 3000), +(3210206, 1332020, 1, 1, 0, 700), +(9500117, 1332020, 1, 1, 0, 700), +(3210206, 1072003, 1, 1, 0, 700), +(9500117, 1072003, 1, 1, 0, 700), +(3210206, 1040000, 1, 1, 0, 700), +(9500117, 1040000, 1, 1, 0, 700), +(3210206, 1051032, 1, 1, 0, 700), +(9500117, 1051032, 1, 1, 0, 700), +(3210206, 1072103, 1, 1, 0, 700), +(9500117, 1072103, 1, 1, 0, 700), +(3210206, 1002168, 1, 1, 0, 700), +(9500117, 1002168, 1, 1, 0, 700), +(3210206, 1002212, 1, 1, 0, 700), +(9500117, 1002212, 1, 1, 0, 700), +(3210206, 1072082, 1, 1, 0, 700), +(9500117, 1072082, 1, 1, 0, 700), +(3210206, 1040081, 1, 1, 0, 700), +(9500117, 1040081, 1, 1, 0, 700), +(3210206, 1002179, 1, 1, 0, 700), +(9500117, 1002179, 1, 1, 0, 700), +(3210206, 1002207, 1, 1, 0, 700), +(9500117, 1002207, 1, 1, 0, 700), +(3210206, 1492005, 1, 1, 0, 700), +(9500117, 1492005, 1, 1, 0, 700), +(3210208, 4000168, 1, 1, 0, 200000), +(3210208, 4030012, 1, 1, 0, 10000), +(3210208, 4130003, 1, 1, 0, 3000), +(3210208, 4131009, 1, 1, 0, 3000), +(3210208, 2000002, 1, 1, 0, 40000), +(3210208, 2000003, 1, 1, 0, 40000), +(3210208, 2002005, 1, 1, 0, 10000), +(3210208, 2044501, 1, 1, 0, 750), +(3210208, 4004003, 1, 1, 0, 3000), +(3210208, 4010002, 1, 1, 0, 7000), +(3210208, 1002048, 1, 1, 0, 700), +(3210208, 1072117, 1, 1, 0, 700), +(3210208, 1382018, 1, 1, 0, 700), +(3210208, 1041052, 1, 1, 0, 700), +(3210208, 1061048, 1, 1, 0, 700), +(3210208, 1082072, 1, 1, 0, 700), +(3210208, 1041065, 1, 1, 0, 700), +(3210208, 1061060, 1, 1, 0, 700), +(3210208, 1002173, 1, 1, 0, 700), +(3210208, 1051008, 1, 1, 0, 700), +(3210208, 1082076, 1, 1, 0, 700), +(3210208, 1052110, 1, 1, 0, 700), +(3210208, 1082195, 1, 1, 0, 700), +(3210450, 4000153, 1, 1, 0, 200000), +(3210450, 4131008, 1, 1, 0, 3000), +(3210450, 2000002, 1, 1, 0, 40000), +(3210450, 2022040, 1, 1, 0, 3000), +(3210450, 2040320, 1, 1, 0, 750), +(3210450, 2330001, 1, 1, 0, 400), +(3210450, 2382027, 1, 1, 0, 20000), +(3210450, 4020001, 1, 1, 0, 7000), +(3210450, 4020000, 1, 1, 0, 7000), +(3210450, 1032010, 1, 1, 0, 700), +(3210450, 1051015, 1, 1, 0, 700), +(3210450, 1302004, 1, 1, 0, 700), +(3210450, 1002023, 1, 1, 0, 700), +(3210450, 1041042, 1, 1, 0, 700), +(3210450, 1082063, 1, 1, 0, 700), +(3210450, 1002137, 1, 1, 0, 700), +(3210450, 1002163, 1, 1, 0, 700), +(3210450, 1060045, 1, 1, 0, 700), +(3210450, 1040062, 1, 1, 0, 700), +(3210450, 1060051, 1, 1, 0, 700), +(3210450, 1332031, 1, 1, 0, 700), +(3210450, 1072110, 1, 1, 0, 700), +(3210450, 1332014, 1, 1, 0, 700), +(3210450, 1041050, 1, 1, 0, 700), +(3210450, 1002625, 1, 1, 0, 700), +(3230102, 4030012, 1, 1, 0, 10000), +(9300227, 4030012, 1, 1, 0, 10000), +(9500115, 4030012, 1, 1, 0, 10000), +(3230102, 2000002, 1, 1, 0, 40000), +(9300227, 2000002, 1, 1, 0, 40000), +(9500115, 2000002, 1, 1, 0, 40000), +(3230102, 2000003, 1, 1, 0, 40000), +(9300227, 2000003, 1, 1, 0, 40000), +(9500115, 2000003, 1, 1, 0, 40000), +(3230102, 2048005, 1, 1, 0, 750), +(9300227, 2048005, 1, 1, 0, 750), +(9500115, 2048005, 1, 1, 0, 750), +(3230102, 2048002, 1, 1, 0, 750), +(9300227, 2048002, 1, 1, 0, 750), +(9500115, 2048002, 1, 1, 0, 750), +(3230102, 2043301, 1, 1, 0, 750), +(9300227, 2043301, 1, 1, 0, 750), +(9500115, 2043301, 1, 1, 0, 750), +(3230102, 4006001, 1, 1, 0, 7000), +(9300227, 4006001, 1, 1, 0, 7000), +(9500115, 4006001, 1, 1, 0, 7000), +(3230102, 2382030, 1, 1, 0, 20000), +(9300227, 2382030, 1, 1, 0, 20000), +(9500115, 2382030, 1, 1, 0, 20000), +(3230102, 4010005, 1, 1, 0, 7000), +(9300227, 4010005, 1, 1, 0, 7000), +(9500115, 4010005, 1, 1, 0, 7000), +(3230102, 4020000, 1, 1, 0, 7000), +(9300227, 4020000, 1, 1, 0, 7000), +(9500115, 4020000, 1, 1, 0, 7000), +(3230102, 1302020, 1, 1, 0, 700), +(9300227, 1302020, 1, 1, 0, 700), +(9500115, 1302020, 1, 1, 0, 700), +(3230102, 1302030, 1, 1, 0, 700), +(9300227, 1302030, 1, 1, 0, 700), +(9500115, 1302030, 1, 1, 0, 700), +(3230102, 1322023, 1, 1, 0, 700), +(9300227, 1322023, 1, 1, 0, 700), +(9500115, 1322023, 1, 1, 0, 700), +(3230102, 1322022, 1, 1, 0, 700), +(9300227, 1322022, 1, 1, 0, 700), +(9500115, 1322022, 1, 1, 0, 700), +(3230102, 1332020, 1, 1, 0, 700), +(9300227, 1332020, 1, 1, 0, 700), +(9500115, 1332020, 1, 1, 0, 700), +(3230102, 1322024, 1, 1, 0, 700), +(9300227, 1322024, 1, 1, 0, 700), +(9500115, 1322024, 1, 1, 0, 700), +(3230102, 1302017, 1, 1, 0, 700), +(9300227, 1302017, 1, 1, 0, 700), +(9500115, 1302017, 1, 1, 0, 700), +(3230102, 1322021, 1, 1, 0, 700), +(9300227, 1322021, 1, 1, 0, 700), +(9500115, 1322021, 1, 1, 0, 700), +(3230102, 1442027, 1, 1, 0, 700), +(9300227, 1442027, 1, 1, 0, 700), +(9500115, 1442027, 1, 1, 0, 700), +(3230102, 1442028, 1, 1, 0, 700), +(9300227, 1442028, 1, 1, 0, 700), +(9500115, 1442028, 1, 1, 0, 700), +(3230102, 1092014, 1, 1, 0, 700), +(9300227, 1092014, 1, 1, 0, 700), +(9500115, 1092014, 1, 1, 0, 700), +(3230102, 1442001, 1, 1, 0, 700), +(9300227, 1442001, 1, 1, 0, 700), +(9500115, 1442001, 1, 1, 0, 700), +(3230102, 1050000, 1, 1, 0, 700), +(9300227, 1050000, 1, 1, 0, 700), +(9500115, 1050000, 1, 1, 0, 700), +(3230102, 1072113, 1, 1, 0, 700), +(9300227, 1072113, 1, 1, 0, 700), +(9500115, 1072113, 1, 1, 0, 700), +(3230102, 1082056, 1, 1, 0, 700), +(9300227, 1082056, 1, 1, 0, 700), +(9500115, 1082056, 1, 1, 0, 700), +(3230102, 1382017, 1, 1, 0, 700), +(9300227, 1382017, 1, 1, 0, 700), +(9500115, 1382017, 1, 1, 0, 700), +(3230102, 1050038, 1, 1, 0, 700), +(9300227, 1050038, 1, 1, 0, 700), +(9500115, 1050038, 1, 1, 0, 700), +(3230102, 1072121, 1, 1, 0, 700), +(9300227, 1072121, 1, 1, 0, 700), +(9500115, 1072121, 1, 1, 0, 700), +(3230102, 1040080, 1, 1, 0, 700), +(9300227, 1040080, 1, 1, 0, 700), +(9500115, 1040080, 1, 1, 0, 700), +(3230102, 1452005, 1, 1, 0, 700), +(9300227, 1452005, 1, 1, 0, 700), +(9500115, 1452005, 1, 1, 0, 700), +(3230102, 1082074, 1, 1, 0, 700), +(9300227, 1082074, 1, 1, 0, 700), +(9500115, 1082074, 1, 1, 0, 700), +(3230102, 1041074, 1, 1, 0, 700), +(9300227, 1041074, 1, 1, 0, 700), +(9500115, 1041074, 1, 1, 0, 700), +(3230102, 1061069, 1, 1, 0, 700), +(9300227, 1061069, 1, 1, 0, 700), +(9500115, 1061069, 1, 1, 0, 700), +(3230102, 1072297, 1, 1, 0, 700), +(9300227, 1072297, 1, 1, 0, 700), +(9500115, 1072297, 1, 1, 0, 700), +(3230102, 1482006, 1, 1, 0, 700), +(9300227, 1482006, 1, 1, 0, 700), +(9500115, 1482006, 1, 1, 0, 700), +(3230306, 4000115, 1, 1, 0, 200000), +(3230306, 4031992, 1, 1, 0, 7000), +(3230306, 4031159, 1, 1, 0, 7000), +(3230306, 4031203, 1, 1, 0, 7000), +(3230306, 2000002, 1, 1, 0, 40000), +(3230306, 2000003, 1, 1, 0, 40000), +(3230306, 2002006, 1, 1, 0, 10000), +(3230306, 4006000, 1, 1, 0, 7000), +(3230306, 2044201, 1, 1, 0, 750), +(3230306, 2043702, 1, 1, 0, 750), +(3230306, 2044902, 1, 1, 0, 750), +(3230306, 2070003, 1, 1, 0, 400), +(3230306, 2070004, 1, 1, 0, 400), +(3230306, 2060000, 10, 50, 0, 10000), +(3230306, 2061000, 10, 50, 0, 10000), +(3230306, 2382032, 1, 1, 0, 20000), +(3230306, 4010001, 1, 1, 0, 7000), +(3230306, 4010006, 1, 1, 0, 7000), +(3230306, 4004002, 1, 1, 0, 3000), +(3230306, 1002025, 1, 1, 0, 700), +(3230306, 1060074, 1, 1, 0, 700), +(3230306, 1040085, 1, 1, 0, 700), +(3230306, 1072041, 1, 1, 0, 700), +(3230306, 1002155, 1, 1, 0, 700), +(3230306, 1072089, 1, 1, 0, 700), +(3230306, 1092021, 1, 1, 0, 700), +(3230306, 1050036, 1, 1, 0, 700), +(3230306, 1082069, 1, 1, 0, 700), +(3230306, 1040079, 1, 1, 0, 700), +(3230306, 1041069, 1, 1, 0, 700), +(3230306, 1061064, 1, 1, 0, 700), +(3230306, 1051006, 1, 1, 0, 700), +(3230306, 1060052, 1, 1, 0, 700), +(3230306, 1072032, 1, 1, 0, 700), +(3230306, 1002182, 1, 1, 0, 700), +(3230306, 1492005, 1, 1, 0, 700), +(3400002, 4000540, 1, 1, 0, 200000), +(3400002, 2000001, 1, 1, 0, 40000), +(3400002, 2000003, 1, 1, 0, 40000), +(3400002, 2000006, 1, 1, 0, 40000), +(3400002, 2040004, 1, 1, 0, 750), +(3400002, 2040504, 1, 1, 0, 750), +(3400002, 2049212, 1, 1, 0, 400), +(3400002, 2049214, 1, 1, 0, 400), +(3400002, 4020007, 1, 1, 0, 7000), +(3400002, 4004000, 1, 1, 0, 3000), +(3400002, 1002098, 1, 1, 0, 700), +(3400002, 1002154, 1, 1, 0, 700), +(3400002, 1072117, 1, 1, 0, 700), +(3400002, 1002170, 1, 1, 0, 700), +(3400002, 1072118, 1, 1, 0, 700), +(3400002, 1002185, 1, 1, 0, 700), +(3400002, 1072107, 1, 1, 0, 700), +(3400002, 1002628, 1, 1, 0, 700), +(3400002, 1072300, 1, 1, 0, 700), +(3210800, 4000026, 1, 1, 0, 200000), +(9300225, 4000026, 1, 1, 0, 200000), +(3210800, 4000021, 1, 1, 0, 200000), +(9300225, 4000021, 1, 1, 0, 200000), +(3210800, 4003004, 1, 1, 0, 7000), +(9300225, 4003004, 1, 1, 0, 7000), +(3210800, 4030012, 1, 1, 0, 10000), +(9300225, 4030012, 1, 1, 0, 10000), +(3210800, 4130001, 1, 1, 0, 3000), +(9300225, 4130001, 1, 1, 0, 3000), +(3210800, 2000003, 1, 1, 0, 40000), +(9300225, 2000003, 1, 1, 0, 40000), +(3210800, 2070003, 1, 1, 0, 400), +(9300225, 2070003, 1, 1, 0, 400), +(3210800, 2060005, 10, 50, 0, 10000), +(9300225, 2060005, 10, 50, 0, 10000), +(3210800, 2041010, 1, 1, 0, 750), +(9300225, 2041010, 1, 1, 0, 750), +(3210800, 2382029, 1, 1, 0, 20000), +(9300225, 2382029, 1, 1, 0, 20000), +(3210800, 4010004, 1, 1, 0, 7000), +(9300225, 4010004, 1, 1, 0, 7000), +(3210800, 4020003, 1, 1, 0, 7000), +(9300225, 4020003, 1, 1, 0, 7000), +(3210800, 1402010, 1, 1, 0, 700), +(9300225, 1402010, 1, 1, 0, 700), +(3210800, 1051014, 1, 1, 0, 700), +(9300225, 1051014, 1, 1, 0, 700), +(3210800, 1092013, 1, 1, 0, 700), +(9300225, 1092013, 1, 1, 0, 700), +(3210800, 1072116, 1, 1, 0, 700), +(9300225, 1072116, 1, 1, 0, 700), +(3210800, 1002038, 1, 1, 0, 700), +(9300225, 1002038, 1, 1, 0, 700), +(3210800, 1040075, 1, 1, 0, 700), +(9300225, 1040075, 1, 1, 0, 700), +(3210800, 1060064, 1, 1, 0, 700), +(9300225, 1060064, 1, 1, 0, 700), +(3210800, 1462014, 1, 1, 0, 700), +(9300225, 1462014, 1, 1, 0, 700), +(3210800, 1002136, 1, 1, 0, 700), +(9300225, 1002136, 1, 1, 0, 700), +(3210800, 1041050, 1, 1, 0, 700), +(9300225, 1041050, 1, 1, 0, 700), +(3210800, 1061046, 1, 1, 0, 700), +(9300225, 1061046, 1, 1, 0, 700), +(3210800, 1472017, 1, 1, 0, 700), +(9300225, 1472017, 1, 1, 0, 700), +(3210800, 1002172, 1, 1, 0, 700), +(9300225, 1002172, 1, 1, 0, 700), +(3210800, 1072109, 1, 1, 0, 700), +(9300225, 1072109, 1, 1, 0, 700), +(3210800, 1082192, 1, 1, 0, 700), +(9300225, 1082192, 1, 1, 0, 700), +(3210800, 1072300, 1, 1, 0, 700), +(9300225, 1072300, 1, 1, 0, 700), +(3230303, 4000104, 1, 1, 0, 200000), +(3230303, 4131007, 1, 1, 0, 3000), +(3230303, 2000002, 1, 1, 0, 40000), +(3230303, 2000003, 1, 1, 0, 40000), +(3230303, 2043301, 1, 1, 0, 750), +(3230303, 2382031, 1, 1, 0, 20000), +(3230303, 4010005, 1, 1, 0, 7000), +(3230303, 4020004, 1, 1, 0, 7000), +(3230303, 4004001, 1, 1, 0, 3000), +(3230303, 1322003, 1, 1, 0, 700), +(3230303, 1002092, 1, 1, 0, 700), +(3230303, 1072091, 1, 1, 0, 700), +(3230303, 1372003, 1, 1, 0, 700), +(3230303, 1092021, 1, 1, 0, 700), +(3230303, 1041081, 1, 1, 0, 700), +(3230303, 1462007, 1, 1, 0, 700), +(3230303, 1002168, 1, 1, 0, 700), +(3230303, 1002181, 1, 1, 0, 700), +(3230303, 1472018, 1, 1, 0, 700), +(3230303, 1082046, 1, 1, 0, 700), +(3230303, 1482005, 1, 1, 0, 700), +(3230405, 4000154, 1, 1, 0, 200000), +(9410020, 4000154, 1, 1, 0, 200000), +(3230405, 4031209, 1, 1, 0, 7000), +(9410020, 4031209, 1, 1, 0, 7000), +(3230405, 2002005, 1, 1, 0, 10000), +(9410020, 2002005, 1, 1, 0, 10000), +(3230405, 2022040, 1, 1, 0, 3000), +(9410020, 2022040, 1, 1, 0, 3000), +(3230405, 2040707, 1, 1, 0, 750), +(9410020, 2040707, 1, 1, 0, 750), +(3230405, 2382035, 1, 1, 0, 20000), +(9410020, 2382035, 1, 1, 0, 20000), +(3230405, 4010000, 1, 1, 0, 7000), +(9410020, 4010000, 1, 1, 0, 7000), +(3230405, 4010001, 1, 1, 0, 7000), +(9410020, 4010001, 1, 1, 0, 7000), +(3230405, 4020002, 1, 1, 0, 7000), +(9410020, 4020002, 1, 1, 0, 7000), +(3230405, 1302009, 1, 1, 0, 700), +(9410020, 1302009, 1, 1, 0, 700), +(3230405, 1312007, 1, 1, 0, 700), +(9410020, 1312007, 1, 1, 0, 700), +(3230405, 1372012, 1, 1, 0, 700), +(9410020, 1372012, 1, 1, 0, 700), +(3230405, 1082054, 1, 1, 0, 700), +(9410020, 1082054, 1, 1, 0, 700), +(3230405, 1040073, 1, 1, 0, 700), +(9410020, 1040073, 1, 1, 0, 700), +(3230405, 1332031, 1, 1, 0, 700), +(9410020, 1332031, 1, 1, 0, 700), +(3230405, 1332011, 1, 1, 0, 700), +(9410020, 1332011, 1, 1, 0, 700), +(3230405, 1072128, 1, 1, 0, 700), +(9410020, 1072128, 1, 1, 0, 700), +(3230405, 1002177, 1, 1, 0, 700), +(9410020, 1002177, 1, 1, 0, 700), +(3230405, 1082192, 1, 1, 0, 700), +(9410020, 1082192, 1, 1, 0, 700), +(9400515, 4031593, 1, 1, 0, 7000), +(3110303, 4000356, 1, 1, 0, 200000), +(3110303, 2000002, 1, 1, 0, 40000), +(3110303, 2000003, 1, 1, 0, 40000), +(3110303, 2002005, 1, 1, 0, 10000), +(3110303, 2060000, 10, 50, 0, 10000), +(3110303, 2061000, 10, 50, 0, 10000), +(3110303, 2330001, 1, 1, 0, 400), +(3110303, 2040320, 1, 1, 0, 750), +(3110303, 2382036, 1, 1, 0, 20000), +(3110303, 4010001, 1, 1, 0, 7000), +(3110303, 4020005, 1, 1, 0, 7000), +(3110303, 4004003, 1, 1, 0, 3000), +(3110303, 1032018, 1, 1, 0, 700), +(3110303, 1040086, 1, 1, 0, 700), +(3110303, 1432003, 1, 1, 0, 700), +(3110303, 1082010, 1, 1, 0, 700), +(3110303, 1382018, 1, 1, 0, 700), +(3110303, 1082082, 1, 1, 0, 700), +(3110303, 1082085, 1, 1, 0, 700), +(3110303, 1462005, 1, 1, 0, 700), +(3110303, 1002167, 1, 1, 0, 700), +(3110303, 1072129, 1, 1, 0, 700), +(3110303, 1040084, 1, 1, 0, 700), +(3110303, 1002183, 1, 1, 0, 700), +(3110303, 1472012, 1, 1, 0, 700), +(3110303, 1060073, 1, 1, 0, 700), +(3220001, 4000329, 1, 1, 0, 200000), +(9300186, 4000329, 1, 1, 0, 200000), +(9500339, 4000329, 1, 1, 0, 200000), +(9303003, 4000329, 1, 1, 0, 200000), +(3220001, 4000330, 1, 1, 0, 200000), +(9300186, 4000330, 1, 1, 0, 200000), +(9500339, 4000330, 1, 1, 0, 200000), +(9303003, 4000330, 1, 1, 0, 200000), +(3220001, 4000331, 1, 1, 0, 200000), +(9300186, 4000331, 1, 1, 0, 200000), +(9500339, 4000331, 1, 1, 0, 200000), +(9303003, 4000331, 1, 1, 0, 200000), +(3220001, 2000003, 1, 4, 0, 40000), +(9300186, 2000003, 1, 4, 0, 40000), +(9500339, 2000003, 1, 4, 0, 40000), +(9303003, 2000003, 1, 1, 0, 40000), +(3220001, 2000001, 1, 4, 0, 40000), +(9300186, 2000001, 1, 4, 0, 40000), +(9500339, 2000001, 1, 4, 0, 40000), +(9303003, 2000001, 1, 1, 0, 40000), +(3220001, 2022155, 1, 4, 0, 3000), +(9300186, 2022155, 1, 4, 0, 3000), +(9500339, 2022155, 1, 4, 0, 3000), +(9303003, 2022155, 1, 1, 0, 3000), +(3220001, 2041007, 1, 4, 0, 10000), +(9300186, 2041007, 1, 4, 0, 10000), +(9500339, 2041007, 1, 4, 0, 10000), +(9303003, 2041007, 1, 1, 0, 750), +(3220001, 2041045, 1, 4, 0, 10000), +(9300186, 2041045, 1, 4, 0, 10000), +(9500339, 2041045, 1, 4, 0, 10000), +(9303003, 2041045, 1, 1, 0, 750), +(3220001, 2044601, 1, 4, 0, 10000), +(9300186, 2044601, 1, 4, 0, 10000), +(9500339, 2044601, 1, 4, 0, 10000), +(9303003, 2044601, 1, 1, 0, 750), +(3220001, 2040801, 1, 4, 0, 10000), +(9300186, 2040801, 1, 4, 0, 10000), +(9500339, 2040801, 1, 4, 0, 10000), +(9303003, 2040801, 1, 1, 0, 750), +(3220001, 2040004, 1, 4, 0, 10000), +(9300186, 2040004, 1, 4, 0, 10000), +(9500339, 2040004, 1, 4, 0, 10000), +(9303003, 2040004, 1, 1, 0, 750), +(3220001, 2044803, 1, 4, 0, 10000), +(9300186, 2044803, 1, 4, 0, 10000), +(9500339, 2044803, 1, 4, 0, 10000), +(9303003, 2044803, 1, 1, 0, 750), +(3220001, 2040504, 1, 4, 0, 10000), +(9300186, 2040504, 1, 4, 0, 10000), +(9500339, 2040504, 1, 4, 0, 10000), +(9303003, 2040504, 1, 1, 0, 750), +(3220001, 2040501, 1, 4, 0, 10000), +(9300186, 2040501, 1, 4, 0, 10000), +(9500339, 2040501, 1, 4, 0, 10000), +(9303003, 2040501, 1, 1, 0, 750), +(3220001, 2040516, 1, 4, 0, 10000), +(9300186, 2040516, 1, 4, 0, 10000), +(9500339, 2040516, 1, 4, 0, 10000), +(9303003, 2040516, 1, 1, 0, 750), +(3220001, 2043801, 1, 4, 0, 10000), +(9300186, 2043801, 1, 4, 0, 10000), +(9500339, 2043801, 1, 4, 0, 10000), +(9303003, 2043801, 1, 1, 0, 750), +(3220001, 2044201, 1, 4, 0, 10000), +(9300186, 2044201, 1, 4, 0, 10000), +(9500339, 2044201, 1, 4, 0, 10000), +(9303003, 2044201, 1, 1, 0, 750), +(3220001, 2044001, 1, 4, 0, 10000), +(9300186, 2044001, 1, 4, 0, 10000), +(9500339, 2044001, 1, 4, 0, 10000), +(9303003, 2044001, 1, 1, 0, 750), +(3220001, 2388029, 1, 4, 0, 20000), +(9300186, 2388029, 1, 4, 0, 20000), +(9500339, 2388029, 1, 4, 0, 20000), +(9303003, 2388029, 1, 1, 0, 20000), +(3220001, 4010002, 1, 1, 0, 7000), +(9300186, 4010002, 1, 1, 0, 7000), +(9500339, 4010002, 1, 1, 0, 7000), +(9303003, 4010002, 1, 1, 0, 7000), +(3220001, 4020003, 1, 1, 0, 7000), +(9300186, 4020003, 1, 1, 0, 7000), +(9500339, 4020003, 1, 1, 0, 7000), +(9303003, 4020003, 1, 1, 0, 7000), +(3220001, 4010007, 1, 1, 0, 7000), +(9300186, 4010007, 1, 1, 0, 7000), +(9500339, 4010007, 1, 1, 0, 7000), +(9303003, 4010007, 1, 1, 0, 7000), +(3220001, 1032013, 1, 1, 0, 40000), +(9300186, 1032013, 1, 1, 0, 40000), +(9500339, 1032013, 1, 1, 0, 40000), +(9303003, 1032013, 1, 1, 0, 700), +(3220001, 1302063, 1, 1, 0, 40000), +(9300186, 1302063, 1, 1, 0, 40000), +(9500339, 1302063, 1, 1, 0, 40000), +(9303003, 1302063, 1, 1, 0, 700), +(3220001, 1082025, 1, 1, 0, 40000), +(9300186, 1082025, 1, 1, 0, 40000), +(9500339, 1082025, 1, 1, 0, 40000), +(9303003, 1082025, 1, 1, 0, 700), +(3220001, 1082064, 1, 1, 0, 40000), +(9300186, 1082064, 1, 1, 0, 40000), +(9500339, 1082064, 1, 1, 0, 40000), +(9303003, 1082064, 1, 1, 0, 700), +(3220001, 1082073, 1, 1, 0, 40000), +(9300186, 1082073, 1, 1, 0, 40000), +(9500339, 1082073, 1, 1, 0, 40000), +(9303003, 1082073, 1, 1, 0, 700), +(3220001, 1082074, 1, 1, 0, 40000), +(9300186, 1082074, 1, 1, 0, 40000), +(9500339, 1082074, 1, 1, 0, 40000), +(9303003, 1082074, 1, 1, 0, 700), +(3220001, 1082195, 1, 1, 0, 40000), +(9300186, 1082195, 1, 1, 0, 40000), +(9500339, 1082195, 1, 1, 0, 40000), +(9303003, 1082195, 1, 1, 0, 700), +(3300008, 4001318, 1, 1, 0, 7000), +(3300008, 2388070, 1, 4, 0, 20000), +(3300008, 2000002, 1, 4, 0, 40000), +(3300008, 2000003, 1, 4, 0, 40000), +(3300008, 2002002, 1, 4, 0, 10000), +(3300008, 2002003, 1, 4, 0, 10000), +(3300008, 2040301, 1, 4, 0, 10000), +(3300008, 2040504, 1, 4, 0, 10000), +(3300008, 2040707, 1, 4, 0, 10000), +(3300008, 2040801, 1, 4, 0, 10000), +(3300008, 2040901, 1, 4, 0, 10000), +(3300008, 2041016, 1, 4, 0, 10000), +(3300008, 2043801, 1, 4, 0, 10000), +(3300008, 2044101, 1, 4, 0, 10000), +(3300008, 2044601, 1, 4, 0, 10000), +(3300008, 2044701, 1, 4, 0, 10000), +(3300008, 2040514, 1, 4, 0, 10000), +(3300008, 2041044, 1, 4, 0, 10000), +(3300008, 2041017, 1, 4, 0, 10000), +(3300008, 2043702, 1, 4, 0, 10000), +(3300008, 2044302, 1, 4, 0, 10000), +(3300008, 2060000, 10, 50, 0, 10000), +(3300008, 2061000, 10, 50, 0, 10000), +(3300008, 2044804, 1, 4, 0, 10000), +(3300008, 2044902, 1, 4, 0, 10000), +(3300008, 2040932, 1, 4, 0, 10000), +(3300008, 2040930, 1, 4, 0, 10000), +(3300008, 4010005, 1, 1, 0, 7000), +(3300008, 4020005, 1, 1, 0, 7000), +(3300008, 1302010, 1, 1, 0, 40000), +(3300008, 1312008, 1, 1, 0, 40000), +(3300008, 1322017, 1, 1, 0, 40000), +(3300008, 1412003, 1, 1, 0, 40000), +(3300008, 1422005, 1, 1, 0, 40000), +(3300008, 1442005, 1, 1, 0, 40000), +(3300008, 1372007, 1, 1, 0, 40000), +(3300008, 1382006, 1, 1, 0, 40000), +(3300008, 1452008, 1, 1, 0, 40000), +(3300008, 1462007, 1, 1, 0, 40000), +(3300008, 1332003, 1, 1, 0, 40000), +(3300008, 1472021, 1, 1, 0, 40000), +(3300008, 1482007, 1, 1, 0, 40000), +(3300008, 1492007, 1, 1, 0, 40000), +(3230103, 4000100, 1, 1, 0, 200000), +(9300134, 4000100, 1, 1, 0, 200000), +(3230103, 4131013, 1, 1, 0, 3000), +(9300134, 4131013, 1, 1, 0, 3000), +(3230103, 2000002, 1, 1, 0, 40000), +(9300134, 2000002, 1, 1, 0, 40000), +(3230103, 2000003, 1, 1, 0, 40000), +(9300134, 2000003, 1, 1, 0, 40000), +(3230103, 2002007, 1, 1, 0, 10000), +(9300134, 2002007, 1, 1, 0, 10000), +(3230103, 2040320, 1, 1, 0, 750), +(9300134, 2040320, 1, 1, 0, 750), +(3230103, 2382033, 1, 1, 0, 20000), +(9300134, 2382033, 1, 1, 0, 20000), +(3230103, 4020003, 1, 1, 0, 7000), +(9300134, 4020003, 1, 1, 0, 7000), +(3230103, 4020001, 1, 1, 0, 7000), +(9300134, 4020001, 1, 1, 0, 7000), +(3230103, 4004000, 1, 1, 0, 3000), +(9300134, 4004000, 1, 1, 0, 3000), +(3230103, 1002025, 1, 1, 0, 700), +(9300134, 1002025, 1, 1, 0, 700), +(3230103, 1002093, 1, 1, 0, 700), +(9300134, 1002093, 1, 1, 0, 700), +(3230103, 1442003, 1, 1, 0, 700), +(9300134, 1442003, 1, 1, 0, 700), +(3230103, 1082035, 1, 1, 0, 700), +(9300134, 1082035, 1, 1, 0, 700), +(3230103, 1050045, 1, 1, 0, 700), +(9300134, 1050045, 1, 1, 0, 700), +(3230103, 1072078, 1, 1, 0, 700), +(9300134, 1072078, 1, 1, 0, 700), +(3230103, 1002154, 1, 1, 0, 700), +(9300134, 1002154, 1, 1, 0, 700), +(3230103, 1452006, 1, 1, 0, 700), +(9300134, 1452006, 1, 1, 0, 700), +(3230103, 1041082, 1, 1, 0, 700), +(9300134, 1041082, 1, 1, 0, 700), +(3230103, 1061081, 1, 1, 0, 700), +(9300134, 1061081, 1, 1, 0, 700), +(3230103, 1472011, 1, 1, 0, 700), +(9300134, 1472011, 1, 1, 0, 700), +(3230103, 1040083, 1, 1, 0, 700), +(9300134, 1040083, 1, 1, 0, 700), +(3230103, 1060072, 1, 1, 0, 700), +(9300134, 1060072, 1, 1, 0, 700), +(3230103, 1002625, 1, 1, 0, 700), +(9300134, 1002625, 1, 1, 0, 700), +(3230304, 4000105, 1, 1, 0, 200000), +(3230304, 4130007, 1, 1, 0, 3000), +(3230304, 4131005, 1, 1, 0, 3000), +(3230304, 2000002, 1, 1, 0, 40000), +(3230304, 2000003, 1, 1, 0, 40000), +(3230304, 2040320, 1, 1, 0, 750), +(3230304, 2382034, 1, 1, 0, 20000), +(3230304, 4020005, 1, 1, 0, 7000), +(3230304, 4004003, 1, 1, 0, 3000), +(3230304, 1032018, 1, 1, 0, 700), +(3230304, 1040000, 1, 1, 0, 700), +(3230304, 1432003, 1, 1, 0, 700), +(3230304, 1382018, 1, 1, 0, 700), +(3230304, 1082082, 1, 1, 0, 700), +(3230304, 1462005, 1, 1, 0, 700), +(3230304, 1002167, 1, 1, 0, 700), +(3230304, 1472015, 1, 1, 0, 700), +(3230304, 1040084, 1, 1, 0, 700), +(3230304, 1060073, 1, 1, 0, 700), +(3230304, 1472012, 1, 1, 0, 700), +(3230304, 1072129, 1, 1, 0, 700), +(3230304, 1002183, 1, 1, 0, 700), +(3230304, 1052110, 1, 1, 0, 700), +(3230305, 4000018, 1, 1, 0, 200000), +(9300011, 4000018, 1, 1, 0, 200000), +(9300131, 4000018, 1, 1, 0, 200000), +(9500119, 4000018, 1, 1, 0, 200000), +(3230305, 4000003, 1, 1, 0, 200000), +(9300011, 4000003, 1, 1, 0, 200000), +(9300131, 4000003, 1, 1, 0, 200000), +(9500119, 4000003, 1, 1, 0, 200000), +(3230305, 4030009, 1, 1, 0, 10000), +(9300011, 4030009, 1, 1, 0, 10000), +(9300131, 4030009, 1, 1, 0, 10000), +(9500119, 4030009, 1, 1, 0, 10000), +(3230305, 4130008, 1, 1, 0, 3000), +(9300011, 4130008, 1, 1, 0, 3000), +(9300131, 4130008, 1, 1, 0, 3000), +(9500119, 4130008, 1, 1, 0, 3000), +(3230305, 2000002, 1, 1, 0, 40000), +(9300011, 2000002, 1, 1, 0, 40000), +(9300131, 2000002, 1, 1, 0, 40000), +(9500119, 2000002, 1, 1, 0, 40000), +(3230305, 2000003, 1, 1, 0, 40000), +(9300011, 2000003, 1, 1, 0, 40000), +(9300131, 2000003, 1, 1, 0, 40000), +(9500119, 2000003, 1, 1, 0, 40000), +(3230305, 2060000, 10, 50, 0, 10000), +(9300011, 2060000, 10, 50, 0, 10000), +(9300131, 2060000, 10, 50, 0, 10000), +(9500119, 2060000, 10, 50, 0, 10000), +(3230305, 2061000, 10, 50, 0, 10000), +(9300011, 2061000, 10, 50, 0, 10000), +(9300131, 2061000, 10, 50, 0, 10000), +(9500119, 2061000, 10, 50, 0, 10000), +(3230305, 2041043, 1, 1, 0, 750), +(9300011, 2041043, 1, 1, 0, 750), +(9300131, 2041043, 1, 1, 0, 750), +(9500119, 2041043, 1, 1, 0, 750), +(3230305, 2330001, 1, 1, 0, 400), +(9300011, 2330001, 1, 1, 0, 400), +(9300131, 2330001, 1, 1, 0, 400), +(9500119, 2330001, 1, 1, 0, 400), +(3230305, 2382038, 1, 1, 0, 20000), +(9300011, 2382038, 1, 1, 0, 20000), +(9300131, 2382038, 1, 1, 0, 20000), +(9500119, 2382038, 1, 1, 0, 20000), +(3230305, 4020003, 1, 1, 0, 7000), +(9300011, 4020003, 1, 1, 0, 7000), +(9300131, 4020003, 1, 1, 0, 7000), +(9500119, 4020003, 1, 1, 0, 7000), +(3230305, 4004001, 1, 1, 0, 3000), +(9300011, 4004001, 1, 1, 0, 3000), +(9300131, 4004001, 1, 1, 0, 3000), +(9500119, 4004001, 1, 1, 0, 3000), +(3230305, 1032002, 1, 1, 0, 700), +(9300011, 1032002, 1, 1, 0, 700), +(9300131, 1032002, 1, 1, 0, 700), +(9500119, 1032002, 1, 1, 0, 700), +(3230305, 1432012, 1, 1, 0, 700), +(9300011, 1432012, 1, 1, 0, 700), +(9300131, 1432012, 1, 1, 0, 700), +(9500119, 1432012, 1, 1, 0, 700), +(3230305, 1002099, 1, 1, 0, 700), +(9300011, 1002099, 1, 1, 0, 700), +(9300131, 1002099, 1, 1, 0, 700), +(9500119, 1002099, 1, 1, 0, 700), +(3230305, 1040029, 1, 1, 0, 700), +(9300011, 1040029, 1, 1, 0, 700), +(9300131, 1040029, 1, 1, 0, 700), +(9500119, 1040029, 1, 1, 0, 700), +(3230305, 1051033, 1, 1, 0, 700), +(9300011, 1051033, 1, 1, 0, 700), +(9300131, 1051033, 1, 1, 0, 700), +(9500119, 1051033, 1, 1, 0, 700), +(3230305, 1082064, 1, 1, 0, 700), +(9300011, 1082064, 1, 1, 0, 700), +(9300131, 1082064, 1, 1, 0, 700), +(9500119, 1082064, 1, 1, 0, 700), +(3230305, 1041066, 1, 1, 0, 700), +(9300011, 1041066, 1, 1, 0, 700), +(9300131, 1041066, 1, 1, 0, 700), +(9500119, 1041066, 1, 1, 0, 700), +(3230305, 1061061, 1, 1, 0, 700), +(9300011, 1061061, 1, 1, 0, 700), +(9300131, 1061061, 1, 1, 0, 700), +(9500119, 1061061, 1, 1, 0, 700), +(3230305, 1072119, 1, 1, 0, 700), +(9300011, 1072119, 1, 1, 0, 700), +(9300131, 1072119, 1, 1, 0, 700), +(9500119, 1072119, 1, 1, 0, 700), +(3230305, 1082075, 1, 1, 0, 700), +(9300011, 1082075, 1, 1, 0, 700), +(9300131, 1082075, 1, 1, 0, 700), +(9500119, 1082075, 1, 1, 0, 700), +(3230305, 1002184, 1, 1, 0, 700), +(9300011, 1002184, 1, 1, 0, 700), +(9300131, 1002184, 1, 1, 0, 700), +(9500119, 1002184, 1, 1, 0, 700), +(3230305, 1492005, 1, 1, 0, 700), +(9300011, 1492005, 1, 1, 0, 700), +(9300131, 1492005, 1, 1, 0, 700), +(9500119, 1492005, 1, 1, 0, 700), +(3230308, 4000116, 1, 1, 0, 200000), +(9500118, 4000116, 1, 1, 0, 200000), +(3230308, 4000003, 1, 1, 0, 200000), +(9500118, 4000003, 1, 1, 0, 200000), +(3230308, 4003005, 1, 1, 0, 7000), +(9500118, 4003005, 1, 1, 0, 7000), +(3230308, 4130005, 1, 1, 0, 3000), +(9500118, 4130005, 1, 1, 0, 3000), +(3230308, 2000002, 1, 1, 0, 40000), +(9500118, 2000002, 1, 1, 0, 40000), +(3230308, 2000003, 1, 1, 0, 40000), +(9500118, 2000003, 1, 1, 0, 40000), +(3230308, 2382037, 1, 1, 0, 20000), +(9500118, 2382037, 1, 1, 0, 20000), +(3230308, 4020001, 1, 1, 0, 7000), +(9500118, 4020001, 1, 1, 0, 7000), +(3230308, 4020008, 1, 1, 0, 7000), +(9500118, 4020008, 1, 1, 0, 7000), +(3230308, 4004002, 1, 1, 0, 3000), +(9500118, 4004002, 1, 1, 0, 3000), +(3230308, 4010001, 1, 1, 0, 7000), +(9500118, 4010001, 1, 1, 0, 7000), +(3230308, 1322003, 1, 1, 0, 700), +(9500118, 1322003, 1, 1, 0, 700), +(3230308, 1082010, 1, 1, 0, 700), +(9500118, 1082010, 1, 1, 0, 700), +(3230308, 1402006, 1, 1, 0, 700), +(9500118, 1402006, 1, 1, 0, 700), +(3230308, 1422008, 1, 1, 0, 700), +(9500118, 1422008, 1, 1, 0, 700), +(3230308, 1092012, 1, 1, 0, 700), +(9500118, 1092012, 1, 1, 0, 700), +(3230308, 1372000, 1, 1, 0, 700), +(9500118, 1372000, 1, 1, 0, 700), +(3230308, 1072115, 1, 1, 0, 700), +(9500118, 1072115, 1, 1, 0, 700), +(3230308, 1051033, 1, 1, 0, 700), +(9500118, 1051033, 1, 1, 0, 700), +(3230308, 1082073, 1, 1, 0, 700), +(9500118, 1082073, 1, 1, 0, 700), +(3230308, 1082083, 1, 1, 0, 700), +(9500118, 1082083, 1, 1, 0, 700), +(3230308, 1072107, 1, 1, 0, 700), +(9500118, 1072107, 1, 1, 0, 700), +(3230308, 1032011, 1, 1, 0, 700), +(9500118, 1032011, 1, 1, 0, 700), +(3230308, 1082065, 1, 1, 0, 700), +(9500118, 1082065, 1, 1, 0, 700), +(3230308, 1482005, 1, 1, 0, 700), +(9500118, 1482005, 1, 1, 0, 700), +(4230100, 4000023, 1, 1, 0, 200000), +(4230100, 4030012, 1, 1, 0, 10000), +(4230100, 2000002, 1, 1, 0, 40000), +(4230100, 2000003, 1, 1, 0, 40000), +(4230100, 2070002, 1, 1, 0, 400), +(4230100, 2040001, 1, 1, 0, 750), +(4230100, 2049101, 1, 1, 0, 400), +(4230100, 2382039, 1, 1, 0, 20000), +(4230100, 4010001, 1, 1, 0, 7000), +(4230100, 4010006, 1, 1, 0, 7000), +(4230100, 1422014, 1, 1, 0, 700), +(4230100, 1412004, 1, 1, 0, 700), +(4230100, 1002098, 1, 1, 0, 700), +(4230100, 1072132, 1, 1, 0, 700), +(4230100, 1002103, 1, 1, 0, 700), +(4230100, 1072140, 1, 1, 0, 700), +(4230100, 1072090, 1, 1, 0, 700), +(4230100, 1002166, 1, 1, 0, 700), +(4230100, 1002169, 1, 1, 0, 700), +(4230100, 1462004, 1, 1, 0, 700), +(4230100, 1082066, 1, 1, 0, 700), +(4230100, 1041075, 1, 1, 0, 700), +(4230100, 1061070, 1, 1, 0, 700), +(4230100, 1472013, 1, 1, 0, 700), +(4230100, 1472017, 1, 1, 0, 700), +(4230101, 4000031, 1, 1, 0, 200000), +(9300226, 4000031, 1, 1, 0, 200000), +(9500116, 4000031, 1, 1, 0, 200000), +(4230101, 4003004, 1, 1, 0, 7000), +(9300226, 4003004, 1, 1, 0, 7000), +(9500116, 4003004, 1, 1, 0, 7000), +(4230101, 2000002, 1, 1, 0, 40000), +(9300226, 2000002, 1, 1, 0, 40000), +(9500116, 2000002, 1, 1, 0, 40000), +(4230101, 2000003, 1, 1, 0, 40000), +(9300226, 2000003, 1, 1, 0, 40000), +(9500116, 2000003, 1, 1, 0, 40000), +(4230101, 2382040, 1, 1, 0, 20000), +(9300226, 2382040, 1, 1, 0, 20000), +(9500116, 2382040, 1, 1, 0, 20000), +(4230101, 4010005, 1, 1, 0, 7000), +(9300226, 4010005, 1, 1, 0, 7000), +(9500116, 4010005, 1, 1, 0, 7000), +(4230101, 4020001, 1, 1, 0, 7000), +(9300226, 4020001, 1, 1, 0, 7000), +(9500116, 4020001, 1, 1, 0, 7000), +(4230101, 1302013, 1, 1, 0, 700), +(9300226, 1302013, 1, 1, 0, 700), +(9500116, 1302013, 1, 1, 0, 700), +(4230101, 1002080, 1, 1, 0, 700), +(9300226, 1002080, 1, 1, 0, 700), +(9500116, 1002080, 1, 1, 0, 700), +(4230101, 1051001, 1, 1, 0, 700), +(9300226, 1051001, 1, 1, 0, 700), +(9500116, 1051001, 1, 1, 0, 700), +(4230101, 1041086, 1, 1, 0, 700), +(9300226, 1041086, 1, 1, 0, 700), +(9500116, 1041086, 1, 1, 0, 700), +(4230101, 1061085, 1, 1, 0, 700), +(9300226, 1061085, 1, 1, 0, 700), +(9500116, 1061085, 1, 1, 0, 700), +(4230101, 1442003, 1, 1, 0, 700), +(9300226, 1442003, 1, 1, 0, 700), +(9500116, 1442003, 1, 1, 0, 700), +(4230101, 1442005, 1, 1, 0, 700), +(9300226, 1442005, 1, 1, 0, 700), +(9500116, 1442005, 1, 1, 0, 700), +(4230101, 1382012, 1, 1, 0, 700), +(9300226, 1382012, 1, 1, 0, 700), +(9500116, 1382012, 1, 1, 0, 700), +(4230101, 1002151, 1, 1, 0, 700), +(9300226, 1002151, 1, 1, 0, 700), +(9500116, 1002151, 1, 1, 0, 700), +(4230101, 1382001, 1, 1, 0, 700), +(9300226, 1382001, 1, 1, 0, 700), +(9500116, 1382001, 1, 1, 0, 700), +(4230101, 1050039, 1, 1, 0, 700), +(9300226, 1050039, 1, 1, 0, 700), +(9500116, 1050039, 1, 1, 0, 700), +(4230101, 1462007, 1, 1, 0, 700), +(9300226, 1462007, 1, 1, 0, 700), +(9500116, 1462007, 1, 1, 0, 700), +(4230101, 1462006, 1, 1, 0, 700), +(9300226, 1462006, 1, 1, 0, 700), +(9500116, 1462006, 1, 1, 0, 700), +(4230101, 1040074, 1, 1, 0, 700), +(9300226, 1040074, 1, 1, 0, 700), +(9500116, 1040074, 1, 1, 0, 700), +(4230101, 1060063, 1, 1, 0, 700), +(9300226, 1060063, 1, 1, 0, 700), +(9500116, 1060063, 1, 1, 0, 700), +(4230101, 1332025, 1, 1, 0, 700), +(9300226, 1332025, 1, 1, 0, 700), +(9500116, 1332025, 1, 1, 0, 700), +(4230101, 1472030, 1, 1, 0, 700), +(9300226, 1472030, 1, 1, 0, 700), +(9500116, 1472030, 1, 1, 0, 700), +(4230101, 1332003, 1, 1, 0, 700), +(9300226, 1332003, 1, 1, 0, 700), +(9500116, 1332003, 1, 1, 0, 700), +(4230101, 1472015, 1, 1, 0, 700), +(9300226, 1472015, 1, 1, 0, 700), +(9500116, 1472015, 1, 1, 0, 700), +(4230101, 1002185, 1, 1, 0, 700), +(9300226, 1002185, 1, 1, 0, 700), +(9500116, 1002185, 1, 1, 0, 700), +(4230101, 1051009, 1, 1, 0, 700), +(9300226, 1051009, 1, 1, 0, 700), +(9500116, 1051009, 1, 1, 0, 700), +(4230101, 1002628, 1, 1, 0, 700), +(9300226, 1002628, 1, 1, 0, 700), +(9500116, 1002628, 1, 1, 0, 700), +(9300003, 2388001, 1, 1, 0, 20000), +(9300187, 2388001, 1, 4, 0, 20000), +(9500168, 2388001, 1, 4, 0, 20000), +(9500325, 2388001, 1, 4, 0, 20000), +(9500340, 2388001, 1, 1, 0, 20000), +(9303002, 2388001, 1, 1, 0, 20000), +(9300003, 1072369, 1, 1, 0, 700), +(9300187, 1072369, 1, 1, 0, 40000), +(9500168, 1072369, 1, 1, 0, 40000), +(9500325, 1072369, 1, 1, 0, 40000), +(9500340, 1072369, 1, 1, 0, 700), +(9303002, 1072369, 1, 1, 0, 700), +(4230113, 4000114, 1, 1, 0, 200000), +(9300132, 4000114, 1, 1, 0, 200000), +(9300233, 4000114, 1, 1, 0, 200000), +(4230113, 4031098, 1, 1, 0, 7000), +(9300132, 4031098, 1, 1, 0, 7000), +(9300233, 4031098, 1, 1, 0, 7000), +(4230113, 4031992, 1, 1, 0, 7000), +(9300132, 4031992, 1, 1, 0, 7000), +(9300233, 4031992, 1, 1, 0, 7000), +(4230113, 2000002, 1, 1, 0, 40000), +(9300132, 2000002, 1, 1, 0, 40000), +(9300233, 2000002, 1, 1, 0, 40000), +(4230113, 2000003, 1, 1, 0, 40000), +(9300132, 2000003, 1, 1, 0, 40000), +(9300233, 2000003, 1, 1, 0, 40000), +(4230113, 2060000, 10, 50, 0, 10000), +(9300132, 2060000, 10, 50, 0, 10000), +(9300233, 2060000, 10, 50, 0, 10000), +(4230113, 2061000, 10, 50, 0, 10000), +(9300132, 2061000, 10, 50, 0, 10000), +(9300233, 2061000, 10, 50, 0, 10000), +(4230113, 2043102, 1, 1, 0, 750), +(9300132, 2043102, 1, 1, 0, 750), +(9300233, 2043102, 1, 1, 0, 750), +(4230113, 2044701, 1, 1, 0, 750), +(9300132, 2044701, 1, 1, 0, 750), +(9300233, 2044701, 1, 1, 0, 750), +(4230113, 2040401, 1, 1, 0, 750), +(9300132, 2040401, 1, 1, 0, 750), +(9300233, 2040401, 1, 1, 0, 750), +(4230113, 2382041, 1, 1, 0, 20000), +(9300132, 2382041, 1, 1, 0, 20000), +(9300233, 2382041, 1, 1, 0, 20000), +(4230113, 4010003, 1, 1, 0, 7000), +(9300132, 4010003, 1, 1, 0, 7000), +(9300233, 4010003, 1, 1, 0, 7000), +(4230113, 4004003, 1, 1, 0, 3000), +(9300132, 4004003, 1, 1, 0, 3000), +(9300233, 4004003, 1, 1, 0, 3000), +(4230113, 1032018, 1, 1, 0, 700), +(9300132, 1032018, 1, 1, 0, 700), +(9300233, 1032018, 1, 1, 0, 700), +(4230113, 1332016, 1, 1, 0, 700), +(9300132, 1332016, 1, 1, 0, 700), +(9300233, 1332016, 1, 1, 0, 700), +(4230113, 1082023, 1, 1, 0, 700), +(9300132, 1082023, 1, 1, 0, 700), +(9300233, 1082023, 1, 1, 0, 700), +(4230113, 1322017, 1, 1, 0, 700), +(9300132, 1322017, 1, 1, 0, 700), +(9300233, 1322017, 1, 1, 0, 700), +(4230113, 1002047, 1, 1, 0, 700), +(9300132, 1002047, 1, 1, 0, 700), +(9300233, 1002047, 1, 1, 0, 700), +(4230113, 1382019, 1, 1, 0, 700), +(9300132, 1382019, 1, 1, 0, 700), +(9300233, 1382019, 1, 1, 0, 700), +(4230113, 1002142, 1, 1, 0, 700), +(9300132, 1002142, 1, 1, 0, 700), +(9300233, 1002142, 1, 1, 0, 700), +(4230113, 1372007, 1, 1, 0, 700), +(9300132, 1372007, 1, 1, 0, 700), +(9300233, 1372007, 1, 1, 0, 700), +(4230113, 1051025, 1, 1, 0, 700), +(9300132, 1051025, 1, 1, 0, 700), +(9300233, 1051025, 1, 1, 0, 700), +(4230113, 1382001, 1, 1, 0, 700), +(9300132, 1382001, 1, 1, 0, 700), +(9300233, 1382001, 1, 1, 0, 700), +(4230113, 1452016, 1, 1, 0, 700), +(9300132, 1452016, 1, 1, 0, 700), +(9300233, 1452016, 1, 1, 0, 700), +(4230113, 1082071, 1, 1, 0, 700), +(9300132, 1082071, 1, 1, 0, 700), +(9300233, 1082071, 1, 1, 0, 700), +(4230113, 1002139, 1, 1, 0, 700), +(9300132, 1002139, 1, 1, 0, 700), +(9300233, 1002139, 1, 1, 0, 700), +(4230113, 1332016, 1, 1, 0, 700), +(9300132, 1332016, 1, 1, 0, 700), +(9300233, 1332016, 1, 1, 0, 700), +(4230113, 1040061, 1, 1, 0, 700), +(9300132, 1040061, 1, 1, 0, 700), +(9300233, 1040061, 1, 1, 0, 700), +(4230113, 1060050, 1, 1, 0, 700), +(9300132, 1060050, 1, 1, 0, 700), +(9300233, 1060050, 1, 1, 0, 700), +(4230113, 1072108, 1, 1, 0, 700), +(9300132, 1072108, 1, 1, 0, 700), +(9300233, 1072108, 1, 1, 0, 700), +(4230113, 1052113, 1, 1, 0, 700), +(9300132, 1052113, 1, 1, 0, 700), +(9300233, 1052113, 1, 1, 0, 700), +(4230200, 4000158, 1, 1, 0, 200000), +(9410018, 4000158, 1, 1, 0, 200000), +(4230200, 4031209, 1, 1, 0, 7000), +(9410018, 4031209, 1, 1, 0, 7000), +(4230200, 2022040, 1, 1, 0, 3000), +(9410018, 2022040, 1, 1, 0, 3000), +(4230200, 2040707, 1, 1, 0, 750), +(9410018, 2040707, 1, 1, 0, 750), +(4230200, 2040704, 1, 1, 0, 750), +(9410018, 2040704, 1, 1, 0, 750), +(4230200, 2040801, 1, 1, 0, 750), +(9410018, 2040801, 1, 1, 0, 750), +(4230200, 2382043, 1, 1, 0, 20000), +(9410018, 2382043, 1, 1, 0, 20000), +(4230200, 4010002, 1, 1, 0, 7000), +(9410018, 4010002, 1, 1, 0, 7000), +(4230200, 4010003, 1, 1, 0, 7000), +(9410018, 4010003, 1, 1, 0, 7000), +(4230200, 4004001, 1, 1, 0, 3000), +(9410018, 4004001, 1, 1, 0, 3000), +(4230200, 1041088, 1, 1, 0, 700), +(9410018, 1041088, 1, 1, 0, 700), +(4230200, 1051027, 1, 1, 0, 700), +(9410018, 1051027, 1, 1, 0, 700), +(4230200, 1002170, 1, 1, 0, 700), +(9410018, 1002170, 1, 1, 0, 700), +(4230200, 1002207, 1, 1, 0, 700), +(9410018, 1002207, 1, 1, 0, 700), +(4230200, 1060083, 1, 1, 0, 700), +(9410018, 1060083, 1, 1, 0, 700), +(4230200, 1072110, 1, 1, 0, 700), +(9410018, 1072110, 1, 1, 0, 700), +(4230200, 1472014, 1, 1, 0, 700), +(9410018, 1472014, 1, 1, 0, 700), +(4230201, 4031209, 1, 1, 0, 7000), +(4230201, 2022040, 1, 1, 0, 3000), +(4230201, 2000002, 1, 1, 0, 40000), +(4230201, 2000003, 1, 1, 0, 40000), +(4230201, 2002004, 1, 1, 0, 10000), +(4230201, 2048001, 1, 1, 0, 750), +(4230201, 2382044, 1, 1, 0, 20000), +(4230201, 4010004, 1, 1, 0, 7000), +(4230201, 4020003, 1, 1, 0, 7000), +(4230201, 4004002, 1, 1, 0, 3000), +(4230201, 1082024, 1, 1, 0, 700), +(4230201, 1082011, 1, 1, 0, 700), +(4230201, 1072140, 1, 1, 0, 700), +(4230201, 1082055, 1, 1, 0, 700), +(4230201, 1051031, 1, 1, 0, 700), +(4230201, 1462006, 1, 1, 0, 700), +(4230201, 1072102, 1, 1, 0, 700), +(4230201, 1051037, 1, 1, 0, 700), +(4230201, 1041074, 1, 1, 0, 700), +(4230201, 1061077, 1, 1, 0, 700), +(9400516, 4031593, 1, 1, 0, 7000), +(4230500, 4000276, 1, 1, 0, 200000), +(4230500, 4000021, 1, 1, 0, 200000), +(4230500, 4130014, 1, 1, 0, 3000), +(4230500, 4130016, 1, 1, 0, 3000), +(4230500, 4130004, 1, 1, 0, 3000), +(4230500, 2000003, 1, 1, 0, 40000), +(4230500, 2000002, 1, 1, 0, 40000), +(4230500, 2330001, 1, 1, 0, 400), +(4230500, 2382045, 1, 1, 0, 20000), +(4230500, 2060000, 10, 50, 0, 10000), +(4230500, 2061000, 10, 50, 0, 10000), +(4230500, 2040001, 1, 1, 0, 750), +(4230500, 4010006, 1, 1, 0, 7000), +(4230500, 4010001, 1, 1, 0, 7000), +(4230500, 1002023, 1, 1, 0, 700), +(4230500, 1002092, 1, 1, 0, 700), +(4230500, 1051016, 1, 1, 0, 700), +(4230500, 1002155, 1, 1, 0, 700), +(4230500, 1002103, 1, 1, 0, 700), +(4230500, 1050038, 1, 1, 0, 700), +(4230500, 1061061, 1, 1, 0, 700), +(4230500, 1041066, 1, 1, 0, 700), +(4230500, 1061094, 1, 1, 0, 700), +(4230500, 1041095, 1, 1, 0, 700), +(4230500, 1482006, 1, 1, 0, 700), +(9400563, 4000018, 1, 1, 0, 200000), +(9400563, 4130009, 1, 1, 0, 3000), +(9400563, 2000003, 1, 1, 0, 40000), +(9400563, 2000002, 1, 1, 0, 40000), +(9400563, 2022250, 1, 1, 0, 3000), +(9400563, 2022251, 1, 1, 0, 3000), +(9400563, 2022244, 1, 1, 0, 3000), +(9400563, 2043302, 1, 1, 0, 750), +(9400563, 2040602, 1, 1, 0, 750), +(9400563, 2061000, 10, 50, 0, 10000), +(9400563, 2060000, 10, 50, 0, 10000), +(9400563, 1302010, 1, 1, 0, 700), +(9400563, 1002021, 1, 1, 0, 700), +(9400563, 1050021, 1, 1, 0, 700), +(9400563, 1002036, 1, 1, 0, 700), +(9400563, 1092029, 1, 1, 0, 700), +(9400563, 1082082, 1, 1, 0, 700), +(9400563, 1050036, 1, 1, 0, 700), +(9400563, 1002143, 1, 1, 0, 700), +(9400563, 1040076, 1, 1, 0, 700), +(9400563, 1060065, 1, 1, 0, 700), +(9400563, 1002176, 1, 1, 0, 700), +(9400563, 1082074, 1, 1, 0, 700), +(9400573, 4032005, 1, 1, 0, 10000), +(9400573, 4130009, 1, 1, 0, 3000), +(9400573, 4130005, 1, 1, 0, 3000), +(9400573, 4131012, 1, 1, 0, 3000), +(9400573, 2000006, 1, 1, 0, 40000), +(9400573, 2000005, 1, 1, 0, 40000), +(9400573, 2002002, 1, 1, 0, 10000), +(9400573, 2002001, 1, 1, 0, 10000), +(9400573, 2040013, 1, 1, 0, 750), +(9400573, 2043108, 1, 1, 0, 750), +(9400573, 2044608, 1, 1, 0, 750), +(9400573, 2040410, 1, 1, 0, 750), +(9400573, 2040613, 1, 1, 0, 750), +(9400573, 2040612, 1, 1, 0, 750), +(9400573, 4006000, 1, 1, 0, 7000), +(9400573, 2070004, 1, 1, 0, 400), +(9400573, 1002090, 1, 1, 0, 700), +(9400573, 1002020, 1, 1, 0, 700), +(9400573, 1092019, 1, 1, 0, 700), +(9400011, 4000222, 1, 1, 0, 200000), +(9400011, 4130011, 1, 1, 0, 3000), +(9400011, 4130010, 1, 1, 0, 3000), +(9400011, 2000006, 1, 1, 0, 40000), +(9400011, 2002004, 1, 1, 0, 10000), +(9400011, 2060002, 10, 50, 0, 10000), +(9400011, 2022027, 1, 1, 0, 3000), +(9400011, 2040015, 1, 1, 0, 750), +(9400011, 2043309, 1, 1, 0, 750), +(9400011, 2044408, 1, 1, 0, 750), +(9400011, 2040514, 1, 1, 0, 750), +(9400011, 2040409, 1, 1, 0, 750), +(9400011, 2044108, 1, 1, 0, 750), +(9400011, 2044208, 1, 1, 0, 750), +(9400011, 2330002, 1, 1, 0, 400), +(9400011, 4004004, 1, 1, 0, 3000), +(9400011, 1332029, 1, 1, 0, 700), +(9400011, 1302009, 1, 1, 0, 700), +(9400011, 1040088, 1, 1, 0, 700), +(9400011, 1060075, 1, 1, 0, 700), +(9400011, 1051032, 1, 1, 0, 700), +(9400011, 1050048, 1, 1, 0, 700), +(9400011, 1092019, 1, 1, 0, 700), +(9400011, 1061079, 1, 1, 0, 700), +(9400011, 1060073, 1, 1, 0, 700), +(4230116, 4000117, 1, 1, 0, 200000), +(9300103, 4000117, 1, 1, 0, 200000), +(9300332, 4000117, 1, 1, 0, 200000), +(9500366, 4000117, 1, 1, 0, 200000), +(4230116, 4030012, 1, 1, 0, 10000), +(9300103, 4030012, 1, 1, 0, 10000), +(9300332, 4030012, 1, 1, 0, 10000), +(9500366, 4030012, 1, 1, 0, 10000), +(4230116, 4131013, 1, 1, 0, 3000), +(9300103, 4131013, 1, 1, 0, 3000), +(9300332, 4131013, 1, 1, 0, 3000), +(9500366, 4131013, 1, 1, 0, 3000), +(4230116, 4131012, 1, 1, 0, 3000), +(9300103, 4131012, 1, 1, 0, 3000), +(9300332, 4131012, 1, 1, 0, 3000), +(9500366, 4131012, 1, 1, 0, 3000), +(4230116, 2000002, 1, 1, 0, 40000), +(9300103, 2000002, 1, 1, 0, 40000), +(9300332, 2000002, 1, 1, 0, 40000), +(9500366, 2000002, 1, 1, 0, 40000), +(4230116, 2000003, 1, 1, 0, 40000), +(9300103, 2000003, 1, 1, 0, 40000), +(9300332, 2000003, 1, 1, 0, 40000), +(9500366, 2000003, 1, 1, 0, 40000), +(4230116, 2002009, 1, 1, 0, 10000), +(9300103, 2002009, 1, 1, 0, 10000), +(9300332, 2002009, 1, 1, 0, 10000), +(9500366, 2002009, 1, 1, 0, 10000), +(4230116, 2041046, 1, 1, 0, 750), +(9300103, 2041046, 1, 1, 0, 750), +(9300332, 2041046, 1, 1, 0, 750), +(9500366, 2041046, 1, 1, 0, 750), +(4230116, 2040704, 1, 1, 0, 750), +(9300103, 2040704, 1, 1, 0, 750), +(9300332, 2040704, 1, 1, 0, 750), +(9500366, 2040704, 1, 1, 0, 750), +(4230116, 2060000, 10, 50, 0, 10000), +(9300103, 2060000, 10, 50, 0, 10000), +(9300332, 2060000, 10, 50, 0, 10000), +(9500366, 2060000, 10, 50, 0, 10000), +(4230116, 4010001, 1, 1, 0, 7000), +(9300103, 4010001, 1, 1, 0, 7000), +(9300332, 4010001, 1, 1, 0, 7000), +(9500366, 4010001, 1, 1, 0, 7000), +(4230116, 4010004, 1, 1, 0, 7000), +(9300103, 4010004, 1, 1, 0, 7000), +(9300332, 4010004, 1, 1, 0, 7000), +(9500366, 4010004, 1, 1, 0, 7000), +(4230116, 4004002, 1, 1, 0, 3000), +(9300103, 4004002, 1, 1, 0, 3000), +(9300332, 4004002, 1, 1, 0, 3000), +(9500366, 4004002, 1, 1, 0, 3000), +(4230116, 4020007, 1, 1, 0, 7000), +(9300103, 4020007, 1, 1, 0, 7000), +(9300332, 4020007, 1, 1, 0, 7000), +(9500366, 4020007, 1, 1, 0, 7000), +(4230116, 1302016, 1, 1, 0, 700), +(9300103, 1302016, 1, 1, 0, 700), +(9300332, 1302016, 1, 1, 0, 700), +(9500366, 1302016, 1, 1, 0, 700), +(4230116, 1092007, 1, 1, 0, 700), +(9300103, 1092007, 1, 1, 0, 700), +(9300332, 1092007, 1, 1, 0, 700), +(9500366, 1092007, 1, 1, 0, 700), +(4230116, 1402006, 1, 1, 0, 700), +(9300103, 1402006, 1, 1, 0, 700), +(9300332, 1402006, 1, 1, 0, 700), +(9500366, 1402006, 1, 1, 0, 700), +(4230116, 1050047, 1, 1, 0, 700), +(9300103, 1050047, 1, 1, 0, 700), +(9300332, 1050047, 1, 1, 0, 700), +(9500366, 1050047, 1, 1, 0, 700), +(4230116, 1372001, 1, 1, 0, 700), +(9300103, 1372001, 1, 1, 0, 700), +(9300332, 1372001, 1, 1, 0, 700), +(9500366, 1372001, 1, 1, 0, 700), +(4230116, 1002211, 1, 1, 0, 700), +(9300103, 1002211, 1, 1, 0, 700), +(9300332, 1002211, 1, 1, 0, 700), +(9500366, 1002211, 1, 1, 0, 700), +(4230116, 1072120, 1, 1, 0, 700), +(9300103, 1072120, 1, 1, 0, 700), +(9300332, 1072120, 1, 1, 0, 700), +(9500366, 1072120, 1, 1, 0, 700), +(4230116, 1072109, 1, 1, 0, 700), +(9300103, 1072109, 1, 1, 0, 700), +(9300332, 1072109, 1, 1, 0, 700), +(9500366, 1072109, 1, 1, 0, 700), +(4230116, 1040084, 1, 1, 0, 700), +(9300103, 1040084, 1, 1, 0, 700), +(9300332, 1040084, 1, 1, 0, 700), +(9500366, 1040084, 1, 1, 0, 700), +(4230116, 1060073, 1, 1, 0, 700), +(9300103, 1060073, 1, 1, 0, 700), +(9300332, 1060073, 1, 1, 0, 700), +(9500366, 1060073, 1, 1, 0, 700), +(4230116, 1082195, 1, 1, 0, 700), +(9300103, 1082195, 1, 1, 0, 700), +(9300332, 1082195, 1, 1, 0, 700), +(9500366, 1082195, 1, 1, 0, 700), +(4230107, 4003004, 1, 1, 0, 7000), +(9300062, 4003004, 1, 1, 0, 7000), +(9300081, 4003004, 1, 1, 0, 7000), +(4230107, 4030012, 1, 1, 0, 10000), +(9300062, 4030012, 1, 1, 0, 10000), +(9300081, 4030012, 1, 1, 0, 10000), +(4230107, 2000003, 1, 1, 0, 40000), +(9300062, 2000003, 1, 1, 0, 40000), +(9300081, 2000003, 1, 1, 0, 40000), +(4230107, 2000002, 1, 1, 0, 40000), +(9300062, 2000002, 1, 1, 0, 40000), +(9300081, 2000002, 1, 1, 0, 40000), +(4230107, 4006000, 1, 1, 0, 7000), +(9300062, 4006000, 1, 1, 0, 7000), +(9300081, 4006000, 1, 1, 0, 7000), +(4230107, 2041014, 1, 1, 0, 750), +(9300062, 2041014, 1, 1, 0, 750), +(9300081, 2041014, 1, 1, 0, 750), +(4230107, 2043202, 1, 1, 0, 750), +(9300062, 2043202, 1, 1, 0, 750), +(9300081, 2043202, 1, 1, 0, 750), +(4230107, 4020004, 1, 1, 0, 7000), +(9300062, 4020004, 1, 1, 0, 7000), +(9300081, 4020004, 1, 1, 0, 7000), +(4230107, 4020007, 1, 1, 0, 7000), +(9300062, 4020007, 1, 1, 0, 7000), +(9300081, 4020007, 1, 1, 0, 7000), +(4230107, 4010005, 1, 1, 0, 7000), +(9300062, 4010005, 1, 1, 0, 7000), +(9300081, 4010005, 1, 1, 0, 7000), +(4230107, 4004002, 1, 1, 0, 3000), +(9300062, 4004002, 1, 1, 0, 3000), +(9300081, 4004002, 1, 1, 0, 3000), +(4230107, 1332020, 1, 1, 0, 700), +(9300062, 1332020, 1, 1, 0, 700), +(9300081, 1332020, 1, 1, 0, 700), +(4230107, 1060020, 1, 1, 0, 700), +(9300062, 1060020, 1, 1, 0, 700), +(9300081, 1060020, 1, 1, 0, 700), +(4230107, 1040030, 1, 1, 0, 700), +(9300062, 1040030, 1, 1, 0, 700), +(9300081, 1040030, 1, 1, 0, 700), +(4230107, 1072134, 1, 1, 0, 700), +(9300062, 1072134, 1, 1, 0, 700), +(9300081, 1072134, 1, 1, 0, 700), +(4230107, 1082063, 1, 1, 0, 700), +(9300062, 1082063, 1, 1, 0, 700), +(9300081, 1082063, 1, 1, 0, 700), +(4230107, 1050049, 1, 1, 0, 700), +(9300062, 1050049, 1, 1, 0, 700), +(9300081, 1050049, 1, 1, 0, 700), +(4230107, 1051030, 1, 1, 0, 700), +(9300062, 1051030, 1, 1, 0, 700), +(9300081, 1051030, 1, 1, 0, 700), +(4230107, 1050035, 1, 1, 0, 700), +(9300062, 1050035, 1, 1, 0, 700), +(9300081, 1050035, 1, 1, 0, 700), +(4230107, 1051027, 1, 1, 0, 700), +(9300062, 1051027, 1, 1, 0, 700), +(9300081, 1051027, 1, 1, 0, 700), +(4230107, 1040072, 1, 1, 0, 700), +(9300062, 1040072, 1, 1, 0, 700), +(9300081, 1040072, 1, 1, 0, 700), +(4230107, 1060061, 1, 1, 0, 700), +(9300062, 1060061, 1, 1, 0, 700), +(9300081, 1060061, 1, 1, 0, 700), +(4230107, 1452008, 1, 1, 0, 700), +(9300062, 1452008, 1, 1, 0, 700), +(9300081, 1452008, 1, 1, 0, 700), +(4230107, 1082072, 1, 1, 0, 700), +(9300062, 1082072, 1, 1, 0, 700), +(9300081, 1082072, 1, 1, 0, 700), +(4230107, 1072129, 1, 1, 0, 700), +(9300062, 1072129, 1, 1, 0, 700), +(9300081, 1072129, 1, 1, 0, 700), +(4230107, 1040082, 1, 1, 0, 700), +(9300062, 1040082, 1, 1, 0, 700), +(9300081, 1040082, 1, 1, 0, 700), +(4230107, 1060071, 1, 1, 0, 700), +(9300062, 1060071, 1, 1, 0, 700), +(9300081, 1060071, 1, 1, 0, 700), +(4230114, 4000115, 1, 1, 0, 200000), +(9300230, 4000115, 1, 1, 0, 200000), +(4230114, 4031992, 1, 1, 0, 7000), +(9300230, 4031992, 1, 1, 0, 7000), +(4230114, 4130015, 1, 1, 0, 3000), +(9300230, 4130015, 1, 1, 0, 3000), +(4230114, 4130009, 1, 1, 0, 3000), +(9300230, 4130009, 1, 1, 0, 3000), +(4230114, 2000002, 1, 1, 0, 40000), +(9300230, 2000002, 1, 1, 0, 40000), +(4230114, 2000003, 1, 1, 0, 40000), +(9300230, 2000003, 1, 1, 0, 40000), +(4230114, 2002010, 1, 1, 0, 10000), +(9300230, 2002010, 1, 1, 0, 10000), +(4230114, 2040804, 1, 1, 0, 750), +(9300230, 2040804, 1, 1, 0, 750), +(4230114, 2382049, 1, 1, 0, 20000), +(9300230, 2382049, 1, 1, 0, 20000), +(4230114, 4020007, 1, 1, 0, 7000), +(9300230, 4020007, 1, 1, 0, 7000), +(4230114, 4004000, 1, 1, 0, 3000), +(9300230, 4004000, 1, 1, 0, 3000), +(4230114, 1092030, 1, 1, 0, 700), +(9300230, 1092030, 1, 1, 0, 700), +(4230114, 1312008, 1, 1, 0, 700), +(9300230, 1312008, 1, 1, 0, 700), +(4230114, 1060074, 1, 1, 0, 700), +(9300230, 1060074, 1, 1, 0, 700), +(4230114, 1402007, 1, 1, 0, 700), +(9300230, 1402007, 1, 1, 0, 700), +(4230114, 1040085, 1, 1, 0, 700), +(9300230, 1040085, 1, 1, 0, 700), +(4230114, 1092013, 1, 1, 0, 700), +(9300230, 1092013, 1, 1, 0, 700), +(4230114, 1382012, 1, 1, 0, 700), +(9300230, 1382012, 1, 1, 0, 700), +(4230114, 1072116, 1, 1, 0, 700), +(9300230, 1072116, 1, 1, 0, 700), +(4230114, 1002143, 1, 1, 0, 700), +(9300230, 1002143, 1, 1, 0, 700), +(4230114, 1050036, 1, 1, 0, 700), +(9300230, 1050036, 1, 1, 0, 700), +(4230114, 1092029, 1, 1, 0, 700), +(9300230, 1092029, 1, 1, 0, 700), +(4230114, 1040076, 1, 1, 0, 700), +(9300230, 1040076, 1, 1, 0, 700), +(4230114, 1060065, 1, 1, 0, 700), +(9300230, 1060065, 1, 1, 0, 700), +(4230114, 1082074, 1, 1, 0, 700), +(9300230, 1082074, 1, 1, 0, 700), +(4230114, 1002176, 1, 1, 0, 700), +(9300230, 1002176, 1, 1, 0, 700), +(4230114, 1002178, 1, 1, 0, 700), +(9300230, 1002178, 1, 1, 0, 700), +(4230114, 1002177, 1, 1, 0, 700), +(9300230, 1002177, 1, 1, 0, 700), +(4230114, 1052113, 1, 1, 0, 700), +(9300230, 1052113, 1, 1, 0, 700), +(4230119, 4130012, 1, 1, 0, 3000), +(9300335, 4130012, 1, 1, 0, 3000), +(9500371, 4130012, 1, 1, 0, 3000), +(4230119, 4130013, 1, 1, 0, 3000), +(9300335, 4130013, 1, 1, 0, 3000), +(9500371, 4130013, 1, 1, 0, 3000), +(4230119, 4130021, 1, 1, 0, 3000), +(9300335, 4130021, 1, 1, 0, 3000), +(9500371, 4130021, 1, 1, 0, 3000), +(4230119, 4131004, 1, 1, 0, 3000), +(9300335, 4131004, 1, 1, 0, 3000), +(9500371, 4131004, 1, 1, 0, 3000), +(4230119, 2000002, 1, 1, 0, 40000), +(9300335, 2000002, 1, 1, 0, 40000), +(9500371, 2000002, 1, 1, 0, 40000), +(4230119, 2000003, 1, 1, 0, 40000), +(9300335, 2000003, 1, 1, 0, 40000), +(9500371, 2000003, 1, 1, 0, 40000), +(4230119, 2002006, 1, 1, 0, 10000), +(9300335, 2002006, 1, 1, 0, 10000), +(9500371, 2002006, 1, 1, 0, 10000), +(4230119, 2040804, 1, 1, 0, 750), +(9300335, 2040804, 1, 1, 0, 750), +(9500371, 2040804, 1, 1, 0, 750), +(4230119, 2330001, 1, 1, 0, 400), +(9300335, 2330001, 1, 1, 0, 400), +(9500371, 2330001, 1, 1, 0, 400), +(4230119, 2382050, 1, 1, 0, 20000), +(9300335, 2382050, 1, 1, 0, 20000), +(9500371, 2382050, 1, 1, 0, 20000), +(4230119, 4010005, 1, 1, 0, 7000), +(9300335, 4010005, 1, 1, 0, 7000), +(9500371, 4010005, 1, 1, 0, 7000), +(4230119, 4020002, 1, 1, 0, 7000), +(9300335, 4020002, 1, 1, 0, 7000), +(9500371, 4020002, 1, 1, 0, 7000), +(4230119, 4004003, 1, 1, 0, 3000), +(9300335, 4004003, 1, 1, 0, 3000), +(9500371, 4004003, 1, 1, 0, 3000), +(4230119, 1051016, 1, 1, 0, 700), +(9300335, 1051016, 1, 1, 0, 700), +(9500371, 1051016, 1, 1, 0, 700), +(4230119, 1072002, 1, 1, 0, 700), +(9300335, 1072002, 1, 1, 0, 700), +(9500371, 1072002, 1, 1, 0, 700), +(4230119, 1041084, 1, 1, 0, 700), +(9300335, 1041084, 1, 1, 0, 700), +(9500371, 1041084, 1, 1, 0, 700), +(4230119, 1061083, 1, 1, 0, 700), +(9300335, 1061083, 1, 1, 0, 700), +(9500371, 1061083, 1, 1, 0, 700), +(4230119, 1082025, 1, 1, 0, 700), +(9300335, 1082025, 1, 1, 0, 700), +(9500371, 1082025, 1, 1, 0, 700), +(4230119, 1050035, 1, 1, 0, 700), +(9300335, 1050035, 1, 1, 0, 700), +(9500371, 1050035, 1, 1, 0, 700), +(4230119, 1082068, 1, 1, 0, 700), +(9300335, 1082068, 1, 1, 0, 700), +(9500371, 1082068, 1, 1, 0, 700), +(4230119, 1072124, 1, 1, 0, 700), +(9300335, 1072124, 1, 1, 0, 700), +(9500371, 1072124, 1, 1, 0, 700), +(4230119, 1082067, 1, 1, 0, 700), +(9300335, 1082067, 1, 1, 0, 700), +(9500371, 1082067, 1, 1, 0, 700), +(4230119, 1002178, 1, 1, 0, 700), +(9300335, 1002178, 1, 1, 0, 700), +(9500371, 1002178, 1, 1, 0, 700), +(4230119, 1041075, 1, 1, 0, 700), +(9300335, 1041075, 1, 1, 0, 700), +(9500371, 1041075, 1, 1, 0, 700), +(4230119, 1061070, 1, 1, 0, 700), +(9300335, 1061070, 1, 1, 0, 700), +(9500371, 1061070, 1, 1, 0, 700), +(4230119, 1072131, 1, 1, 0, 700), +(9300335, 1072131, 1, 1, 0, 700), +(9500371, 1072131, 1, 1, 0, 700), +(4230119, 1092019, 1, 1, 0, 700), +(9300335, 1092019, 1, 1, 0, 700), +(9500371, 1092019, 1, 1, 0, 700), +(9400543, 4032025, 1, 1, 0, 10000), +(9400543, 4032023, 1, 1, 0, 10000), +(9400543, 4032022, 1, 1, 0, 10000), +(9400543, 4130015, 1, 1, 0, 3000), +(9400543, 4130009, 1, 1, 0, 3000), +(9400543, 2000002, 1, 1, 0, 40000), +(9400543, 2000003, 1, 1, 0, 40000), +(9400543, 2002010, 1, 1, 0, 10000), +(9400543, 2040804, 1, 1, 0, 750), +(9400543, 2041046, 1, 1, 0, 750), +(9400543, 2043102, 1, 1, 0, 750), +(9400543, 2060004, 10, 50, 0, 10000), +(9400543, 2061004, 10, 50, 0, 10000), +(9400543, 4020007, 1, 1, 0, 7000), +(9400543, 4004000, 1, 1, 0, 3000), +(9400543, 1402007, 1, 1, 0, 700), +(9400543, 1312008, 1, 1, 0, 700), +(9400543, 1040085, 1, 1, 0, 700), +(9400543, 1092013, 1, 1, 0, 700), +(9400543, 1060074, 1, 1, 0, 700), +(9400543, 1002143, 1, 1, 0, 700), +(9400543, 1051026, 1, 1, 0, 700), +(9400543, 1050035, 1, 1, 0, 700), +(9400543, 1050036, 1, 1, 0, 700), +(9400543, 1072116, 1, 1, 0, 700), +(9400543, 1041083, 1, 1, 0, 700), +(9400543, 1061082, 1, 1, 0, 700), +(9400543, 1051038, 1, 1, 0, 700), +(9400543, 1002169, 1, 1, 0, 700), +(9400543, 1472019, 1, 1, 0, 700), +(9400543, 1002171, 1, 1, 0, 700), +(9400543, 1082074, 1, 1, 0, 700), +(9400543, 1002176, 1, 1, 0, 700), +(9400543, 1072110, 1, 1, 0, 700), +(4230501, 4000290, 1, 1, 0, 200000), +(4230501, 4000277, 1, 1, 0, 200000), +(4230501, 4130000, 1, 1, 0, 3000), +(4230501, 4130009, 1, 1, 0, 3000), +(4230501, 4130011, 1, 1, 0, 3000), +(4230501, 2382051, 1, 1, 0, 20000), +(4230501, 2060000, 10, 50, 0, 10000), +(4230501, 2061000, 10, 50, 0, 10000), +(4230501, 2000002, 1, 1, 0, 40000), +(4230501, 2000003, 1, 1, 0, 40000), +(4230501, 2040901, 1, 1, 0, 750), +(4230501, 2040420, 1, 1, 0, 750), +(4230501, 2049000, 1, 1, 0, 400), +(4230501, 4004003, 1, 1, 0, 3000), +(4230501, 4010001, 1, 1, 0, 7000), +(4230501, 4004002, 1, 1, 0, 3000), +(4230501, 1032018, 1, 1, 0, 700), +(4230501, 1051026, 1, 1, 0, 700), +(4230501, 1002217, 1, 1, 0, 700), +(4230501, 1072110, 1, 1, 0, 700), +(4230501, 1061076, 1, 1, 0, 700), +(4230501, 1472018, 1, 1, 0, 700), +(4230501, 1072300, 1, 1, 0, 700), +(4230111, 4000111, 1, 1, 0, 200000), +(9300133, 4000111, 1, 1, 0, 200000), +(4230111, 4030012, 1, 1, 0, 10000), +(9300133, 4030012, 1, 1, 0, 10000), +(4230111, 4130011, 1, 1, 0, 3000), +(9300133, 4130011, 1, 1, 0, 3000), +(4230111, 2000002, 1, 1, 0, 40000), +(9300133, 2000002, 1, 1, 0, 40000), +(4230111, 2000003, 1, 1, 0, 40000), +(9300133, 2000003, 1, 1, 0, 40000), +(4230111, 2061000, 10, 50, 0, 10000), +(9300133, 2061000, 10, 50, 0, 10000), +(4230111, 2040602, 1, 1, 0, 750), +(9300133, 2040602, 1, 1, 0, 750), +(4230111, 2043302, 1, 1, 0, 750), +(9300133, 2043302, 1, 1, 0, 750), +(4230111, 2382048, 1, 1, 0, 20000), +(9300133, 2382048, 1, 1, 0, 20000), +(4230111, 4010004, 1, 1, 0, 7000), +(9300133, 4010004, 1, 1, 0, 7000), +(4230111, 4010002, 1, 1, 0, 7000), +(9300133, 4010002, 1, 1, 0, 7000), +(4230111, 4004001, 1, 1, 0, 3000), +(9300133, 4004001, 1, 1, 0, 3000), +(4230111, 1050021, 1, 1, 0, 700), +(9300133, 1050021, 1, 1, 0, 700), +(4230111, 1082025, 1, 1, 0, 700), +(9300133, 1082025, 1, 1, 0, 700), +(4230111, 1302010, 1, 1, 0, 700), +(9300133, 1302010, 1, 1, 0, 700), +(4230111, 1002021, 1, 1, 0, 700), +(9300133, 1002021, 1, 1, 0, 700), +(4230111, 1041051, 1, 1, 0, 700), +(9300133, 1041051, 1, 1, 0, 700), +(4230111, 1061047, 1, 1, 0, 700), +(9300133, 1061047, 1, 1, 0, 700), +(4230111, 1002153, 1, 1, 0, 700), +(9300133, 1002153, 1, 1, 0, 700), +(4230111, 1002155, 1, 1, 0, 700), +(9300133, 1002155, 1, 1, 0, 700), +(4230111, 1072116, 1, 1, 0, 700), +(9300133, 1072116, 1, 1, 0, 700), +(4230111, 1002168, 1, 1, 0, 700), +(9300133, 1002168, 1, 1, 0, 700), +(4230111, 1072123, 1, 1, 0, 700), +(9300133, 1072123, 1, 1, 0, 700), +(4230111, 1472032, 1, 1, 0, 700), +(9300133, 1472032, 1, 1, 0, 700), +(4230111, 1051007, 1, 1, 0, 700), +(9300133, 1051007, 1, 1, 0, 700), +(4230111, 1472018, 1, 1, 0, 700), +(9300133, 1472018, 1, 1, 0, 700), +(4230111, 1002628, 1, 1, 0, 700), +(9300133, 1002628, 1, 1, 0, 700), +(4230105, 4000058, 1, 1, 0, 200000), +(4230122, 4000058, 1, 1, 0, 200000), +(4230105, 2000002, 1, 1, 0, 40000), +(4230122, 2000002, 1, 1, 0, 40000), +(4230105, 2000003, 1, 1, 0, 40000), +(4230122, 2000003, 1, 1, 0, 40000), +(4230105, 2041011, 1, 1, 0, 750), +(4230122, 2041011, 1, 1, 0, 750), +(4230105, 2044501, 1, 1, 0, 750), +(4230122, 2044501, 1, 1, 0, 750), +(4230105, 2041043, 1, 1, 0, 750), +(4230122, 2041043, 1, 1, 0, 750), +(4230105, 2382052, 1, 1, 0, 20000), +(4230122, 2382052, 1, 1, 0, 20000), +(4230105, 4010000, 1, 1, 0, 7000), +(4230122, 4010000, 1, 1, 0, 7000), +(4230105, 4020003, 1, 1, 0, 7000), +(4230122, 4020003, 1, 1, 0, 7000), +(4230105, 4004003, 1, 1, 0, 3000), +(4230122, 4004003, 1, 1, 0, 3000), +(4230105, 1332020, 1, 1, 0, 700), +(4230122, 1332020, 1, 1, 0, 700), +(4230105, 1442024, 1, 1, 0, 700), +(4230122, 1442024, 1, 1, 0, 700), +(4230105, 1002098, 1, 1, 0, 700), +(4230122, 1002098, 1, 1, 0, 700), +(4230105, 1082011, 1, 1, 0, 700), +(4230122, 1082011, 1, 1, 0, 700), +(4230105, 1382019, 1, 1, 0, 700), +(4230122, 1382019, 1, 1, 0, 700), +(4230105, 1050048, 1, 1, 0, 700), +(4230122, 1050048, 1, 1, 0, 700), +(4230105, 1041083, 1, 1, 0, 700), +(4230122, 1041083, 1, 1, 0, 700), +(4230105, 1061082, 1, 1, 0, 700), +(4230122, 1061082, 1, 1, 0, 700), +(4230105, 1072103, 1, 1, 0, 700), +(4230122, 1072103, 1, 1, 0, 700), +(4230105, 1051038, 1, 1, 0, 700), +(4230122, 1051038, 1, 1, 0, 700), +(4230105, 1002182, 1, 1, 0, 700), +(4230122, 1002182, 1, 1, 0, 700), +(4230105, 1472015, 1, 1, 0, 700), +(4230122, 1472015, 1, 1, 0, 700), +(4230105, 1040083, 1, 1, 0, 700), +(4230122, 1040083, 1, 1, 0, 700), +(4230105, 1060072, 1, 1, 0, 700), +(4230122, 1060072, 1, 1, 0, 700), +(4230105, 1072130, 1, 1, 0, 700), +(4230122, 1072130, 1, 1, 0, 700), +(4230103, 2000002, 1, 1, 0, 40000), +(9300060, 2000002, 1, 1, 0, 40000), +(4230103, 2000003, 1, 1, 0, 40000), +(9300060, 2000003, 1, 1, 0, 40000), +(4230103, 2000004, 1, 1, 0, 40000), +(9300060, 2000004, 1, 1, 0, 40000), +(4230103, 2060000, 10, 50, 0, 10000), +(9300060, 2060000, 10, 50, 0, 10000), +(4230103, 2061000, 10, 50, 0, 10000), +(9300060, 2061000, 10, 50, 0, 10000), +(4230103, 2382053, 1, 1, 0, 20000), +(9300060, 2382053, 1, 1, 0, 20000), +(4230103, 4010003, 1, 1, 0, 7000), +(9300060, 4010003, 1, 1, 0, 7000), +(4230103, 4020005, 1, 1, 0, 7000), +(9300060, 4020005, 1, 1, 0, 7000), +(4230103, 4010001, 1, 1, 0, 7000), +(9300060, 4010001, 1, 1, 0, 7000), +(4230103, 1092014, 1, 1, 0, 700), +(9300060, 1092014, 1, 1, 0, 700), +(4230103, 1322017, 1, 1, 0, 700), +(9300060, 1322017, 1, 1, 0, 700), +(4230103, 1312006, 1, 1, 0, 700), +(9300060, 1312006, 1, 1, 0, 700), +(4230103, 1442001, 1, 1, 0, 700), +(9300060, 1442001, 1, 1, 0, 700), +(4230103, 1072114, 1, 1, 0, 700), +(9300060, 1072114, 1, 1, 0, 700), +(4230103, 1051034, 1, 1, 0, 700), +(9300060, 1051034, 1, 1, 0, 700), +(4230103, 1002151, 1, 1, 0, 700), +(9300060, 1002151, 1, 1, 0, 700), +(4230103, 1050052, 1, 1, 0, 700), +(9300060, 1050052, 1, 1, 0, 700), +(4230103, 1050051, 1, 1, 0, 700), +(9300060, 1050051, 1, 1, 0, 700), +(4230103, 1072121, 1, 1, 0, 700), +(9300060, 1072121, 1, 1, 0, 700), +(4230103, 1472019, 1, 1, 0, 700), +(9300060, 1472019, 1, 1, 0, 700), +(4230103, 1082076, 1, 1, 0, 700), +(9300060, 1082076, 1, 1, 0, 700), +(4230103, 1332001, 1, 1, 0, 700), +(9300060, 1332001, 1, 1, 0, 700), +(4230103, 1002179, 1, 1, 0, 700), +(9300060, 1002179, 1, 1, 0, 700), +(4230103, 1472009, 1, 1, 0, 700), +(9300060, 1472009, 1, 1, 0, 700), +(4230124, 4000155, 1, 1, 0, 200000), +(9300090, 4000155, 1, 1, 0, 200000), +(9420501, 4000155, 1, 1, 0, 200000), +(4230124, 4000157, 1, 1, 0, 200000), +(9300090, 4000157, 1, 1, 0, 200000), +(9420501, 4000157, 1, 1, 0, 200000), +(4230124, 4031209, 1, 1, 0, 7000), +(9300090, 4031209, 1, 1, 0, 7000), +(9420501, 4031209, 1, 1, 0, 7000), +(4230124, 4030012, 1, 1, 0, 10000), +(9300090, 4030012, 1, 1, 0, 10000), +(9420501, 4030012, 1, 1, 0, 10000), +(4230124, 2000002, 1, 1, 0, 40000), +(9300090, 2000002, 1, 4, 0, 40000), +(9420501, 2000002, 1, 1, 0, 40000), +(4230124, 2000003, 1, 1, 0, 40000), +(9300090, 2000003, 1, 4, 0, 40000), +(9420501, 2000003, 1, 1, 0, 40000), +(4230124, 2000004, 1, 1, 0, 40000), +(9300090, 2000004, 1, 4, 0, 40000), +(9420501, 2000004, 1, 1, 0, 40000), +(4230124, 2041019, 1, 1, 0, 750), +(9300090, 2041019, 1, 4, 0, 10000), +(9420501, 2041019, 1, 1, 0, 750), +(4230124, 2040901, 1, 1, 0, 750), +(9300090, 2040901, 1, 4, 0, 10000), +(9420501, 2040901, 1, 1, 0, 750), +(4230124, 2382056, 1, 1, 0, 20000), +(9300090, 2382056, 1, 4, 0, 20000), +(9420501, 2382056, 1, 1, 0, 20000), +(4230124, 4010006, 1, 1, 0, 7000), +(9300090, 4010006, 1, 1, 0, 7000), +(9420501, 4010006, 1, 1, 0, 7000), +(4230124, 4020002, 1, 1, 0, 7000), +(9300090, 4020002, 1, 1, 0, 7000), +(9420501, 4020002, 1, 1, 0, 7000), +(4230124, 4020007, 1, 1, 0, 7000), +(9300090, 4020007, 1, 1, 0, 7000), +(9420501, 4020007, 1, 1, 0, 7000), +(4230124, 1032012, 1, 1, 0, 700), +(9300090, 1032012, 1, 1, 0, 40000), +(9420501, 1032012, 1, 1, 0, 700), +(4230124, 1002045, 1, 1, 0, 700), +(9300090, 1002045, 1, 1, 0, 40000), +(9420501, 1002045, 1, 1, 0, 700), +(4230124, 1002085, 1, 1, 0, 700), +(9300090, 1002085, 1, 1, 0, 40000), +(9420501, 1002085, 1, 1, 0, 700), +(4230124, 1412005, 1, 1, 0, 700), +(9300090, 1412005, 1, 1, 0, 40000), +(9420501, 1412005, 1, 1, 0, 700), +(4230124, 1050037, 1, 1, 0, 700), +(9300090, 1050037, 1, 1, 0, 40000), +(9420501, 1050037, 1, 1, 0, 700), +(4230124, 1382018, 1, 1, 0, 700), +(9300090, 1382018, 1, 1, 0, 40000), +(9420501, 1382018, 1, 1, 0, 700), +(4230124, 1041067, 1, 1, 0, 700), +(9300090, 1041067, 1, 1, 0, 40000), +(9420501, 1041067, 1, 1, 0, 700), +(4230124, 1061062, 1, 1, 0, 700), +(9300090, 1061062, 1, 1, 0, 40000), +(9420501, 1061062, 1, 1, 0, 700), +(4230124, 1452007, 1, 1, 0, 700), +(9300090, 1452007, 1, 1, 0, 40000), +(9420501, 1452007, 1, 1, 0, 700), +(4230124, 1002213, 1, 1, 0, 700), +(9300090, 1002213, 1, 1, 0, 40000), +(9420501, 1002213, 1, 1, 0, 700), +(4230124, 1060085, 1, 1, 0, 700), +(9300090, 1060085, 1, 1, 0, 40000), +(9420501, 1060085, 1, 1, 0, 700), +(4230124, 1040084, 1, 1, 0, 700), +(9300090, 1040084, 1, 1, 0, 40000), +(9420501, 1040084, 1, 1, 0, 700), +(4230124, 1002631, 1, 1, 0, 700), +(9300090, 1002631, 1, 1, 0, 40000), +(9420501, 1002631, 1, 1, 0, 700), +(4250000, 4000436, 1, 1, 0, 200000), +(4250000, 4130015, 1, 1, 0, 3000), +(4250000, 4130017, 1, 1, 0, 3000), +(4250000, 4130005, 1, 1, 0, 3000), +(4250000, 2040004, 1, 1, 0, 750), +(4250000, 2382076, 1, 1, 0, 20000), +(4250000, 4010005, 1, 1, 0, 7000), +(4250000, 4020004, 1, 1, 0, 7000), +(4250000, 1002025, 1, 1, 0, 700), +(4250000, 1051025, 1, 1, 0, 700), +(4250000, 1082083, 1, 1, 0, 700), +(4250000, 1072109, 1, 1, 0, 700), +(4250000, 1492006, 1, 1, 0, 700), +(4110300, 4000357, 1, 1, 0, 200000), +(4110300, 4030012, 1, 1, 0, 10000), +(4110300, 4130012, 1, 1, 0, 3000), +(4110300, 4130022, 1, 1, 0, 3000), +(4110300, 2000002, 1, 1, 0, 40000), +(4110300, 2000003, 1, 1, 0, 40000), +(4110300, 2000004, 1, 1, 0, 40000), +(4110300, 2060000, 10, 50, 0, 10000), +(4110300, 2061000, 10, 50, 0, 10000), +(4110300, 2330002, 1, 1, 0, 400), +(4110300, 2041019, 1, 1, 0, 750), +(4110300, 4130012, 1, 1, 0, 3000), +(4110300, 4010006, 1, 1, 0, 7000), +(4110300, 4020007, 1, 1, 0, 7000), +(4110300, 4004004, 1, 1, 0, 3000), +(4110300, 1032012, 1, 1, 0, 700), +(4110300, 1002085, 1, 1, 0, 700), +(4110300, 1002045, 1, 1, 0, 700), +(4110300, 1412005, 1, 1, 0, 700), +(4110300, 1050037, 1, 1, 0, 700), +(4110300, 1061062, 1, 1, 0, 700), +(4110300, 1002213, 1, 1, 0, 700), +(4110300, 1041067, 1, 1, 0, 700), +(4110300, 1452007, 1, 1, 0, 700), +(4110300, 1040096, 1, 1, 0, 700), +(4110300, 1060085, 1, 1, 0, 700), +(4110300, 1040084, 1, 1, 0, 700), +(4110300, 1060073, 1, 1, 0, 700), +(4110300, 1052116, 1, 1, 0, 700), +(4230117, 4000118, 1, 1, 0, 200000), +(9300104, 4000118, 1, 1, 0, 200000), +(9500367, 4000118, 1, 1, 0, 200000), +(4230117, 4130001, 1, 1, 0, 3000), +(9300104, 4130001, 1, 1, 0, 3000), +(9500367, 4130001, 1, 1, 0, 3000), +(4230117, 2000002, 1, 1, 0, 40000), +(9300104, 2000002, 1, 1, 0, 40000), +(9500367, 2000002, 1, 1, 0, 40000), +(4230117, 2000003, 1, 1, 0, 40000), +(9300104, 2000003, 1, 1, 0, 40000), +(9500367, 2000003, 1, 1, 0, 40000), +(4230117, 2002007, 1, 1, 0, 10000), +(9300104, 2002007, 1, 1, 0, 10000), +(9500367, 2002007, 1, 1, 0, 10000), +(4230117, 2040707, 1, 1, 0, 750), +(9300104, 2040707, 1, 1, 0, 750), +(9500367, 2040707, 1, 1, 0, 750), +(4230117, 2070002, 1, 1, 0, 400), +(9300104, 2070002, 1, 1, 0, 400), +(9500367, 2070002, 1, 1, 0, 400), +(4230117, 4010003, 1, 1, 0, 7000), +(9300104, 4010003, 1, 1, 0, 7000), +(9500367, 4010003, 1, 1, 0, 7000), +(4230117, 4020007, 1, 1, 0, 7000), +(9300104, 4020007, 1, 1, 0, 7000), +(9500367, 4020007, 1, 1, 0, 7000), +(4230117, 4004000, 1, 1, 0, 3000), +(9300104, 4004000, 1, 1, 0, 3000), +(9500367, 4004000, 1, 1, 0, 3000), +(4230117, 1312008, 1, 1, 0, 700), +(9300104, 1312008, 1, 1, 0, 700), +(9500367, 1312008, 1, 1, 0, 700), +(4230117, 1082036, 1, 1, 0, 700), +(9300104, 1082036, 1, 1, 0, 700), +(9500367, 1082036, 1, 1, 0, 700), +(4230117, 1050049, 1, 1, 0, 700), +(9300104, 1050049, 1, 1, 0, 700), +(9500367, 1050049, 1, 1, 0, 700), +(4230117, 1002217, 1, 1, 0, 700), +(9300104, 1002217, 1, 1, 0, 700), +(9500367, 1002217, 1, 1, 0, 700), +(4230117, 1040080, 1, 1, 0, 700), +(9300104, 1040080, 1, 1, 0, 700), +(9500367, 1040080, 1, 1, 0, 700), +(4230117, 1002212, 1, 1, 0, 700), +(9300104, 1002212, 1, 1, 0, 700), +(9500367, 1002212, 1, 1, 0, 700), +(4230117, 1332003, 1, 1, 0, 700), +(9300104, 1332003, 1, 1, 0, 700), +(9500367, 1332003, 1, 1, 0, 700), +(4230117, 1092020, 1, 1, 0, 700), +(9300104, 1092020, 1, 1, 0, 700), +(9500367, 1092020, 1, 1, 0, 700), +(4230117, 1002208, 1, 1, 0, 700), +(9300104, 1002208, 1, 1, 0, 700), +(9500367, 1002208, 1, 1, 0, 700), +(4230117, 1082047, 1, 1, 0, 700), +(9300104, 1082047, 1, 1, 0, 700), +(9500367, 1082047, 1, 1, 0, 700), +(4230117, 1492006, 1, 1, 0, 700), +(9300104, 1492006, 1, 1, 0, 700), +(9500367, 1492006, 1, 1, 0, 700), +(4230109, 4000101, 1, 1, 0, 200000), +(4230109, 4130010, 1, 1, 0, 3000), +(4230109, 2000002, 1, 1, 0, 40000), +(4230109, 2000003, 1, 1, 0, 40000), +(4230109, 2040901, 1, 1, 0, 750), +(4230109, 2060000, 10, 50, 0, 10000), +(4230109, 2061000, 10, 50, 0, 10000), +(4230109, 4030012, 1, 1, 0, 10000), +(4230109, 4010001, 1, 1, 0, 7000), +(4230109, 4004002, 1, 1, 0, 3000), +(4230109, 1032018, 1, 1, 0, 700), +(4230109, 1402002, 1, 1, 0, 700), +(4230109, 1092004, 1, 1, 0, 700), +(4230109, 1040087, 1, 1, 0, 700), +(4230109, 1060076, 1, 1, 0, 700), +(4230109, 1051024, 1, 1, 0, 700), +(4230109, 1072117, 1, 1, 0, 700), +(4230109, 1002154, 1, 1, 0, 700), +(4230109, 1050037, 1, 1, 0, 700), +(4230109, 1452016, 1, 1, 0, 700), +(4230109, 1462014, 1, 1, 0, 700), +(4230109, 1462019, 1, 1, 0, 700), +(4230109, 1462007, 1, 1, 0, 700), +(4230109, 1002167, 1, 1, 0, 700), +(4230109, 1082070, 1, 1, 0, 700), +(4230109, 1002180, 1, 1, 0, 700), +(4230109, 1472017, 1, 1, 0, 700), +(4230109, 1482006, 1, 1, 0, 700), +(4230108, 4000078, 1, 1, 0, 200000), +(4230108, 4003004, 1, 1, 0, 7000), +(4230108, 4000021, 1, 1, 0, 200000), +(4230108, 2000002, 1, 1, 0, 40000), +(4230108, 2000003, 1, 1, 0, 40000), +(4230108, 2070002, 1, 1, 0, 400), +(4230108, 2041017, 1, 1, 0, 750), +(4230108, 2382058, 1, 1, 0, 20000), +(4230108, 4010001, 1, 1, 0, 7000), +(4230108, 4020006, 1, 1, 0, 7000), +(4230108, 4004003, 1, 1, 0, 3000), +(4230108, 1432008, 1, 1, 0, 700), +(4230108, 1442005, 1, 1, 0, 700), +(4230108, 1422007, 1, 1, 0, 700), +(4230108, 1072113, 1, 1, 0, 700), +(4230108, 1002086, 1, 1, 0, 700), +(4230108, 1040087, 1, 1, 0, 700), +(4230108, 1050031, 1, 1, 0, 700), +(4230108, 1002218, 1, 1, 0, 700), +(4230108, 1041082, 1, 1, 0, 700), +(4230108, 1061081, 1, 1, 0, 700), +(4230108, 1082073, 1, 1, 0, 700), +(4230108, 1041095, 1, 1, 0, 700), +(4230108, 1072108, 1, 1, 0, 700), +(4230108, 1472018, 1, 1, 0, 700), +(4230123, 4000156, 1, 1, 0, 200000), +(4230123, 4000157, 1, 1, 0, 200000), +(4230123, 4031209, 1, 1, 0, 7000), +(4230123, 4030012, 1, 1, 0, 10000), +(4230123, 4003004, 1, 1, 0, 7000), +(4230123, 4130015, 1, 1, 0, 3000), +(4230123, 4130008, 1, 1, 0, 3000), +(4230123, 2070002, 1, 1, 0, 400), +(4230123, 2002004, 1, 1, 0, 10000), +(4230123, 2048004, 1, 1, 0, 750), +(4230123, 2044501, 1, 1, 0, 750), +(4230123, 2382059, 1, 1, 0, 20000), +(4230123, 2000002, 1, 1, 0, 40000), +(4230123, 2000003, 1, 1, 0, 40000), +(4230123, 2060000, 10, 50, 0, 10000), +(4230123, 2061000, 10, 50, 0, 10000), +(4230123, 2044803, 1, 1, 0, 750), +(4230123, 4020008, 1, 1, 0, 7000), +(4230123, 4020004, 1, 1, 0, 7000), +(4230123, 4004003, 1, 1, 0, 3000), +(4230123, 1002024, 1, 1, 0, 700), +(4230123, 1442009, 1, 1, 0, 700), +(4230123, 1452008, 1, 1, 0, 700), +(4230123, 1041083, 1, 1, 0, 700), +(4230123, 1061082, 1, 1, 0, 700), +(4230123, 1472017, 1, 1, 0, 700), +(4230123, 1082198, 1, 1, 0, 700), +(4230502, 4000290, 1, 1, 0, 200000), +(4230502, 4000278, 1, 1, 0, 200000), +(4230502, 4130015, 1, 1, 0, 3000), +(4230502, 2000002, 1, 1, 0, 40000), +(4230502, 2070002, 1, 1, 0, 400), +(4230502, 2382060, 1, 1, 0, 20000), +(4230502, 4020004, 1, 1, 0, 7000), +(4230502, 4004003, 1, 1, 0, 3000), +(4230502, 4020008, 1, 1, 0, 7000), +(4230502, 4010006, 1, 1, 0, 7000), +(4230502, 4004002, 1, 1, 0, 3000), +(4230502, 1002024, 1, 1, 0, 700), +(4230502, 1452008, 1, 1, 0, 700), +(4230502, 1061051, 1, 1, 0, 700), +(4230502, 1072303, 1, 1, 0, 700), +(9420508, 1040086, 1, 1, 0, 700), +(9420508, 1041087, 1, 1, 0, 700), +(9420508, 1051010, 1, 1, 0, 700), +(9420508, 1002128, 1, 1, 0, 700), +(4300006, 2000001, 1, 1, 0, 40000), +(4300006, 2000003, 1, 1, 0, 40000), +(4300006, 2000006, 1, 1, 0, 40000), +(4300006, 2022003, 1, 1, 0, 3000), +(4300006, 2000004, 1, 1, 0, 40000), +(4300006, 2040004, 1, 1, 0, 750), +(4300006, 2040501, 1, 1, 0, 750), +(4300006, 2040504, 1, 1, 0, 750), +(4300006, 2040801, 1, 1, 0, 750), +(4300006, 2041007, 1, 1, 0, 750), +(4300006, 2041045, 1, 1, 0, 750), +(4300006, 2049206, 1, 1, 0, 400), +(4300006, 2049208, 1, 1, 0, 400), +(4300006, 2049210, 1, 1, 0, 400), +(4300006, 4020008, 1, 1, 0, 7000), +(4300006, 4004000, 1, 1, 0, 3000), +(4300006, 1302009, 1, 1, 0, 700), +(4300006, 1312007, 1, 1, 0, 700), +(4300006, 1322016, 1, 1, 0, 700), +(4300006, 1402007, 1, 1, 0, 700), +(4300006, 1412005, 1, 1, 0, 700), +(4300006, 1422007, 1, 1, 0, 700), +(4300006, 1432005, 1, 1, 0, 700), +(4300006, 1442009, 1, 1, 0, 700), +(4300006, 1382019, 1, 1, 0, 700), +(4300006, 1452007, 1, 1, 0, 700), +(4300006, 1332011, 1, 1, 0, 700), +(4300006, 1332031, 1, 1, 0, 700), +(4300006, 1472014, 1, 1, 0, 700), +(4300006, 1472015, 1, 1, 0, 700), +(4300006, 1472016, 1, 1, 0, 700), +(4300006, 1472017, 1, 1, 0, 700), +(4300006, 1482006, 1, 1, 0, 700), +(4300006, 1492006, 1, 1, 0, 700), +(4230112, 4000112, 1, 1, 0, 200000), +(4230112, 4031115, 1, 1, 0, 7000), +(4230112, 4030012, 1, 1, 0, 10000), +(4230112, 2000002, 1, 1, 0, 40000), +(4230112, 2000004, 1, 1, 0, 40000), +(4230112, 2060000, 10, 50, 0, 10000), +(4230112, 2061000, 10, 50, 0, 10000), +(4230112, 2002008, 1, 1, 0, 10000), +(4230112, 2040502, 1, 1, 0, 750), +(4230112, 2040004, 1, 1, 0, 750), +(4230112, 2382062, 1, 1, 0, 20000), +(4230112, 2049000, 1, 1, 0, 400), +(4230112, 4004001, 1, 1, 0, 3000), +(4230112, 1302016, 1, 1, 0, 700), +(4230112, 1412003, 1, 1, 0, 700), +(4230112, 1302010, 1, 1, 0, 700), +(4230112, 1051026, 1, 1, 0, 700), +(4230112, 1072101, 1, 1, 0, 700), +(4230112, 1002169, 1, 1, 0, 700), +(4230112, 1002214, 1, 1, 0, 700), +(4230112, 1472032, 1, 1, 0, 700), +(4230112, 1472020, 1, 1, 0, 700), +(4230112, 1040097, 1, 1, 0, 700), +(4230112, 1060086, 1, 1, 0, 700), +(4230112, 1072110, 1, 1, 0, 700), +(4230112, 1492007, 1, 1, 0, 700), +(4230125, 2000002, 1, 1, 0, 40000), +(4230125, 2000003, 1, 1, 0, 40000), +(4230125, 2070002, 1, 1, 0, 400), +(4230125, 4006000, 1, 1, 0, 7000), +(4230125, 2382063, 1, 1, 0, 20000), +(4230125, 4010004, 1, 1, 0, 7000), +(4230125, 4010000, 1, 1, 0, 7000), +(4230125, 4020007, 1, 1, 0, 7000), +(4230125, 1002081, 1, 1, 0, 700), +(4230125, 1422007, 1, 1, 0, 700), +(4230125, 1002047, 1, 1, 0, 700), +(4230125, 1382019, 1, 1, 0, 700), +(4230125, 1002144, 1, 1, 0, 700), +(4230125, 1050052, 1, 1, 0, 700), +(4230125, 1072118, 1, 1, 0, 700), +(4230125, 1072108, 1, 1, 0, 700), +(4230125, 1002178, 1, 1, 0, 700), +(9400546, 4032024, 1, 1, 0, 10000), +(9400546, 4032025, 1, 1, 0, 10000), +(9400546, 2000004, 1, 1, 0, 40000), +(9400546, 2002008, 1, 1, 0, 10000), +(9400546, 2044301, 1, 1, 0, 750), +(9400546, 2040504, 1, 1, 0, 750), +(9400546, 4004001, 1, 1, 0, 3000), +(9400546, 1302016, 1, 1, 0, 700), +(9400546, 1040085, 1, 1, 0, 700), +(9400546, 1082025, 1, 1, 0, 700), +(9400546, 1302010, 1, 1, 0, 700), +(9400546, 1402007, 1, 1, 0, 700), +(9400546, 1412003, 1, 1, 0, 700), +(9400546, 1051026, 1, 1, 0, 700), +(9400546, 1002214, 1, 1, 0, 700), +(9400546, 1002169, 1, 1, 0, 700), +(9400546, 1072101, 1, 1, 0, 700), +(9400546, 1472020, 1, 1, 0, 700), +(9400546, 1040097, 1, 1, 0, 700), +(9400546, 1060086, 1, 1, 0, 700), +(9400546, 1072110, 1, 1, 0, 700), +(4300007, 2000001, 1, 1, 0, 40000), +(4300007, 2000003, 1, 1, 0, 40000), +(4300007, 2000006, 1, 1, 0, 40000), +(4300007, 2022003, 1, 1, 0, 3000), +(4300007, 2000004, 1, 1, 0, 40000), +(4300007, 2040004, 1, 1, 0, 750), +(4300007, 2040501, 1, 1, 0, 750), +(4300007, 2040504, 1, 1, 0, 750), +(4300007, 2040801, 1, 1, 0, 750), +(4300007, 2041007, 1, 1, 0, 750), +(4300007, 2041045, 1, 1, 0, 750), +(4300007, 2049206, 1, 1, 0, 400), +(4300007, 2049208, 1, 1, 0, 400), +(4300007, 2049210, 1, 1, 0, 400), +(4300007, 4020008, 1, 1, 0, 7000), +(4300007, 4004000, 1, 1, 0, 3000), +(4300007, 1302009, 1, 1, 0, 700), +(4300007, 1312007, 1, 1, 0, 700), +(4300007, 1322016, 1, 1, 0, 700), +(4300007, 1402007, 1, 1, 0, 700), +(4300007, 1412005, 1, 1, 0, 700), +(4300007, 1422007, 1, 1, 0, 700), +(4300007, 1432005, 1, 1, 0, 700), +(4300007, 1442009, 1, 1, 0, 700), +(4300007, 1382019, 1, 1, 0, 700), +(4300007, 1452007, 1, 1, 0, 700), +(4300007, 1332011, 1, 1, 0, 700), +(4300007, 1332031, 1, 1, 0, 700), +(4300007, 1472014, 1, 1, 0, 700), +(4300007, 1472015, 1, 1, 0, 700), +(4300007, 1472016, 1, 1, 0, 700), +(4300007, 1472017, 1, 1, 0, 700), +(4300007, 1482006, 1, 1, 0, 700), +(4300007, 1492006, 1, 1, 0, 700), +(4230120, 4030012, 1, 1, 0, 10000), +(9500372, 4030012, 1, 1, 0, 10000), +(4230120, 4131004, 1, 1, 0, 3000), +(9500372, 4131004, 1, 1, 0, 3000), +(4230120, 2000002, 1, 1, 0, 40000), +(9500372, 2000002, 1, 1, 0, 40000), +(4230120, 2000004, 1, 1, 0, 40000), +(9500372, 2000004, 1, 1, 0, 40000), +(4230120, 4006001, 1, 1, 0, 7000), +(9500372, 4006001, 1, 1, 0, 7000), +(4230120, 2040804, 1, 1, 0, 750), +(9500372, 2040804, 1, 1, 0, 750), +(4230120, 2382061, 1, 1, 0, 20000), +(9500372, 2382061, 1, 1, 0, 20000), +(4230120, 4020003, 1, 1, 0, 7000), +(9500372, 4020003, 1, 1, 0, 7000), +(4230120, 4004000, 1, 1, 0, 3000), +(9500372, 4004000, 1, 1, 0, 3000), +(4230120, 4004001, 1, 1, 0, 3000), +(9500372, 4004001, 1, 1, 0, 3000), +(4230120, 1041086, 1, 1, 0, 700), +(9500372, 1041086, 1, 1, 0, 700), +(4230120, 1061085, 1, 1, 0, 700), +(9500372, 1061085, 1, 1, 0, 700), +(4230120, 1051030, 1, 1, 0, 700), +(9500372, 1051030, 1, 1, 0, 700), +(4230120, 1051031, 1, 1, 0, 700), +(9500372, 1051031, 1, 1, 0, 700), +(4230120, 1002141, 1, 1, 0, 700), +(9500372, 1002141, 1, 1, 0, 700), +(4230120, 1051039, 1, 1, 0, 700), +(9500372, 1051039, 1, 1, 0, 700), +(4230120, 1452008, 1, 1, 0, 700), +(9500372, 1452008, 1, 1, 0, 700), +(4230120, 1082084, 1, 1, 0, 700), +(9500372, 1082084, 1, 1, 0, 700), +(4230120, 1041081, 1, 1, 0, 700), +(9500372, 1041081, 1, 1, 0, 700), +(4230120, 1061080, 1, 1, 0, 700), +(9500372, 1061080, 1, 1, 0, 700), +(4230120, 1002135, 1, 1, 0, 700), +(9500372, 1002135, 1, 1, 0, 700), +(4230120, 1040084, 1, 1, 0, 700), +(9500372, 1040084, 1, 1, 0, 700), +(4230120, 1060073, 1, 1, 0, 700), +(9500372, 1060073, 1, 1, 0, 700), +(4230120, 1072131, 1, 1, 0, 700), +(9500372, 1072131, 1, 1, 0, 700), +(4230120, 1482007, 1, 1, 0, 700), +(9500372, 1482007, 1, 1, 0, 700), +(4230106, 4003004, 1, 1, 0, 7000), +(4230106, 4030012, 1, 1, 0, 10000), +(4230106, 2000002, 1, 1, 0, 40000), +(4230106, 2000003, 1, 1, 0, 40000), +(4230106, 2070002, 1, 1, 0, 400), +(4230106, 2041012, 1, 1, 0, 750), +(4230106, 2040705, 1, 1, 0, 750), +(4230106, 4006000, 1, 1, 0, 7000), +(4230106, 2382064, 1, 1, 0, 20000), +(4230106, 4010004, 1, 1, 0, 7000), +(4230106, 4020005, 1, 1, 0, 7000), +(4230106, 4004001, 1, 1, 0, 3000), +(4230106, 1302016, 1, 1, 0, 700), +(4230106, 1060075, 1, 1, 0, 700), +(4230106, 1092007, 1, 1, 0, 700), +(4230106, 1040086, 1, 1, 0, 700), +(4230106, 1082036, 1, 1, 0, 700), +(4230106, 1002216, 1, 1, 0, 700), +(4230106, 1051032, 1, 1, 0, 700), +(4230106, 1040081, 1, 1, 0, 700), +(4230106, 1060070, 1, 1, 0, 700), +(4230106, 1050052, 1, 1, 0, 700), +(4230106, 1072118, 1, 1, 0, 700), +(4230106, 1041080, 1, 1, 0, 700), +(4230106, 1061079, 1, 1, 0, 700), +(4230106, 1002210, 1, 1, 0, 700), +(4230106, 1082045, 1, 1, 0, 700), +(4230106, 1002628, 1, 1, 0, 700), +(4230106, 1082201, 1, 1, 0, 700), +(4130100, 4000030, 1, 1, 0, 200000), +(4130100, 4000014, 1, 1, 0, 200000), +(4130100, 2000004, 1, 1, 0, 40000), +(4130100, 2044702, 1, 1, 0, 750), +(4130100, 2049101, 1, 1, 0, 400), +(4130100, 4006001, 1, 1, 0, 7000), +(4130100, 2382065, 1, 1, 0, 20000), +(4130100, 4010005, 1, 1, 0, 7000), +(4130100, 4020008, 1, 1, 0, 7000), +(4130100, 1050022, 1, 1, 0, 700), +(4130100, 1002045, 1, 1, 0, 700), +(4130100, 1072133, 1, 1, 0, 700), +(4130100, 1332016, 1, 1, 0, 700), +(4130100, 1322016, 1, 1, 0, 700), +(4130100, 1302010, 1, 1, 0, 700), +(4130100, 1382001, 1, 1, 0, 700), +(4130100, 1082064, 1, 1, 0, 700), +(4130100, 1050046, 1, 1, 0, 700), +(4130100, 1072125, 1, 1, 0, 700), +(4130100, 1040079, 1, 1, 0, 700), +(4130100, 1060069, 1, 1, 0, 700), +(4130100, 1002138, 1, 1, 0, 700), +(4130100, 1472032, 1, 1, 0, 700), +(4130100, 1332016, 1, 1, 0, 700), +(4130100, 1472012, 1, 1, 0, 700), +(4130100, 1052113, 1, 1, 0, 700), +(4230110, 4000102, 1, 1, 0, 200000), +(9500120, 4000102, 1, 1, 0, 200000), +(4230110, 4030012, 1, 1, 0, 10000), +(9500120, 4030012, 1, 1, 0, 10000), +(4230110, 2000002, 1, 1, 0, 40000), +(9500120, 2000002, 1, 1, 0, 40000), +(4230110, 2000004, 1, 1, 0, 40000), +(9500120, 2000004, 1, 1, 0, 40000), +(4230110, 2060000, 10, 50, 0, 10000), +(9500120, 2060000, 10, 50, 0, 10000), +(4230110, 2061000, 10, 50, 0, 10000), +(9500120, 2061000, 10, 50, 0, 10000), +(4230110, 2044301, 1, 1, 0, 750), +(9500120, 2044301, 1, 1, 0, 750), +(4230110, 2040504, 1, 1, 0, 750), +(9500120, 2040504, 1, 1, 0, 750), +(4230110, 2044002, 1, 1, 0, 750), +(9500120, 2044002, 1, 1, 0, 750), +(4230110, 2044904, 1, 1, 0, 750), +(9500120, 2044904, 1, 1, 0, 750), +(4230110, 2382066, 1, 1, 0, 20000), +(9500120, 2382066, 1, 1, 0, 20000), +(4230110, 4020008, 1, 1, 0, 7000), +(9500120, 4020008, 1, 1, 0, 7000), +(4230110, 4004000, 1, 1, 0, 3000), +(9500120, 4004000, 1, 1, 0, 3000), +(4230110, 1302013, 1, 1, 0, 700), +(9500120, 1302013, 1, 1, 0, 700), +(4230110, 1072135, 1, 1, 0, 700), +(9500120, 1072135, 1, 1, 0, 700), +(4230110, 1040088, 1, 1, 0, 700), +(9500120, 1040088, 1, 1, 0, 700), +(4230110, 1060077, 1, 1, 0, 700), +(9500120, 1060077, 1, 1, 0, 700), +(4230110, 1041084, 1, 1, 0, 700), +(9500120, 1041084, 1, 1, 0, 700), +(4230110, 1002004, 1, 1, 0, 700), +(9500120, 1002004, 1, 1, 0, 700), +(4230110, 1082081, 1, 1, 0, 700), +(9500120, 1082081, 1, 1, 0, 700), +(4230110, 1002144, 1, 1, 0, 700), +(9500120, 1002144, 1, 1, 0, 700), +(4230110, 1462019, 1, 1, 0, 700), +(9500120, 1462019, 1, 1, 0, 700), +(4230110, 1002170, 1, 1, 0, 700), +(9500120, 1002170, 1, 1, 0, 700), +(4230110, 1041067, 1, 1, 0, 700), +(9500120, 1041067, 1, 1, 0, 700), +(4230110, 1082083, 1, 1, 0, 700), +(9500120, 1082083, 1, 1, 0, 700), +(4230110, 1040082, 1, 1, 0, 700), +(9500120, 1040082, 1, 1, 0, 700), +(4230110, 1060071, 1, 1, 0, 700), +(9500120, 1060071, 1, 1, 0, 700), +(4230110, 1002181, 1, 1, 0, 700), +(9500120, 1002181, 1, 1, 0, 700), +(4230110, 1082195, 1, 1, 0, 700), +(9500120, 1082195, 1, 1, 0, 700), +(4230400, 4000178, 1, 1, 0, 200000), +(4230400, 2000003, 1, 1, 0, 40000), +(4230400, 2000002, 1, 1, 0, 40000), +(4230400, 2000004, 1, 1, 0, 40000), +(4230400, 2044001, 1, 1, 0, 750), +(4230400, 2382069, 1, 1, 0, 20000), +(4230400, 4004001, 1, 1, 0, 3000), +(4230400, 4020008, 1, 1, 0, 7000), +(4230400, 4020007, 1, 1, 0, 7000), +(4230400, 1032018, 1, 1, 0, 700), +(4230400, 1050047, 1, 1, 0, 700), +(4230400, 1072116, 1, 1, 0, 700), +(4230400, 1082071, 1, 1, 0, 700), +(4230400, 1041082, 1, 1, 0, 700), +(4230400, 1061081, 1, 1, 0, 700), +(4230400, 1002184, 1, 1, 0, 700), +(9400100, 2060003, 10, 50, 0, 10000), +(9400100, 2000006, 1, 1, 0, 40000), +(9400100, 2040515, 1, 1, 0, 750), +(9400100, 4020000, 1, 1, 0, 7000), +(9400100, 4010005, 1, 1, 0, 7000), +(9400100, 1072056, 1, 1, 0, 700), +(9400100, 1032007, 1, 1, 0, 700), +(9400100, 1332021, 1, 1, 0, 700), +(9400100, 1332029, 1, 1, 0, 700), +(9400100, 1402001, 1, 1, 0, 700), +(9400100, 1060079, 1, 1, 0, 700), +(9400100, 1051026, 1, 1, 0, 700), +(9400100, 1402001, 1, 1, 0, 700), +(9400100, 1060069, 1, 1, 0, 700), +(9400100, 1402001, 1, 1, 0, 700), +(9400100, 1072107, 1, 1, 0, 700), +(4230118, 4000119, 1, 1, 0, 200000), +(9300240, 4000119, 1, 1, 0, 200000), +(9300333, 4000119, 1, 1, 0, 200000), +(9500368, 4000119, 1, 1, 0, 200000), +(4230118, 4130002, 1, 1, 0, 3000), +(9300240, 4130002, 1, 1, 0, 3000), +(9300333, 4130002, 1, 1, 0, 3000), +(9500368, 4130002, 1, 1, 0, 3000), +(4230118, 4130006, 1, 1, 0, 3000), +(9300240, 4130006, 1, 1, 0, 3000), +(9300333, 4130006, 1, 1, 0, 3000), +(9500368, 4130006, 1, 1, 0, 3000), +(4230118, 2000002, 1, 1, 0, 40000), +(9300240, 2000002, 1, 1, 0, 40000), +(9300333, 2000002, 1, 1, 0, 40000), +(9500368, 2000002, 1, 1, 0, 40000), +(4230118, 2000004, 1, 1, 0, 40000), +(9300240, 2000004, 1, 1, 0, 40000), +(9300333, 2000004, 1, 1, 0, 40000), +(9500368, 2000004, 1, 1, 0, 40000), +(4230118, 2002007, 1, 1, 0, 10000), +(9300240, 2002007, 1, 1, 0, 10000), +(9300333, 2002007, 1, 1, 0, 10000), +(9500368, 2002007, 1, 1, 0, 10000), +(4230118, 2040802, 1, 1, 0, 750), +(9300240, 2040802, 1, 1, 0, 750), +(9300333, 2040802, 1, 1, 0, 750), +(9500368, 2040802, 1, 1, 0, 750), +(4230118, 2070004, 1, 1, 0, 400), +(9300240, 2070004, 1, 1, 0, 400), +(9300333, 2070004, 1, 1, 0, 400), +(9500368, 2070004, 1, 1, 0, 400), +(4230118, 4010002, 1, 1, 0, 7000), +(9300240, 4010002, 1, 1, 0, 7000), +(9300333, 4010002, 1, 1, 0, 7000), +(9500368, 4010002, 1, 1, 0, 7000), +(4230118, 4020006, 1, 1, 0, 7000), +(9300240, 4020006, 1, 1, 0, 7000), +(9300333, 4020006, 1, 1, 0, 7000), +(9500368, 4020006, 1, 1, 0, 7000), +(4230118, 4004001, 1, 1, 0, 3000), +(9300240, 4004001, 1, 1, 0, 3000), +(9300333, 4004001, 1, 1, 0, 3000), +(9500368, 4004001, 1, 1, 0, 3000), +(4230118, 1032012, 1, 1, 0, 700), +(9300240, 1032012, 1, 1, 0, 700), +(9300333, 1032012, 1, 1, 0, 700), +(9500368, 1032012, 1, 1, 0, 700), +(4230118, 1082024, 1, 1, 0, 700), +(9300240, 1082024, 1, 1, 0, 700), +(9300333, 1082024, 1, 1, 0, 700), +(9500368, 1082024, 1, 1, 0, 700), +(4230118, 1002024, 1, 1, 0, 700), +(9300240, 1002024, 1, 1, 0, 700), +(9300333, 1002024, 1, 1, 0, 700), +(9500368, 1002024, 1, 1, 0, 700), +(4230118, 1422005, 1, 1, 0, 700), +(9300240, 1422005, 1, 1, 0, 700), +(9300333, 1422005, 1, 1, 0, 700), +(9500368, 1422005, 1, 1, 0, 700), +(4230118, 1002155, 1, 1, 0, 700), +(9300240, 1002155, 1, 1, 0, 700), +(9300333, 1002155, 1, 1, 0, 700), +(9500368, 1002155, 1, 1, 0, 700), +(4230118, 1050038, 1, 1, 0, 700), +(9300240, 1050038, 1, 1, 0, 700), +(9300333, 1050038, 1, 1, 0, 700), +(9500368, 1050038, 1, 1, 0, 700), +(4230118, 1041068, 1, 1, 0, 700), +(9300240, 1041068, 1, 1, 0, 700), +(9300333, 1041068, 1, 1, 0, 700), +(9500368, 1041068, 1, 1, 0, 700), +(4230118, 1472021, 1, 1, 0, 700), +(9300240, 1472021, 1, 1, 0, 700), +(9300333, 1472021, 1, 1, 0, 700), +(9500368, 1472021, 1, 1, 0, 700), +(4230118, 1332003, 1, 1, 0, 700), +(9300240, 1332003, 1, 1, 0, 700), +(9300333, 1332003, 1, 1, 0, 700), +(9500368, 1332003, 1, 1, 0, 700), +(4230118, 1072300, 1, 1, 0, 700), +(9300240, 1072300, 1, 1, 0, 700), +(9300333, 1072300, 1, 1, 0, 700), +(9500368, 1072300, 1, 1, 0, 700), +(4230300, 4000169, 1, 1, 0, 200000), +(9300061, 4000169, 1, 1, 0, 200000), +(4230300, 4000021, 1, 1, 0, 200000), +(9300061, 4000021, 1, 1, 0, 200000), +(4230300, 2000002, 1, 1, 0, 40000), +(9300061, 2000002, 1, 1, 0, 40000), +(4230300, 2000003, 1, 1, 0, 40000), +(9300061, 2000003, 1, 1, 0, 40000), +(4230300, 2000004, 1, 1, 0, 40000), +(9300061, 2000004, 1, 1, 0, 40000), +(4230300, 4006000, 1, 1, 0, 7000), +(9300061, 4006000, 1, 1, 0, 7000), +(4230300, 2060000, 10, 50, 0, 10000), +(9300061, 2060000, 10, 50, 0, 10000), +(4230300, 2061000, 10, 50, 0, 10000), +(9300061, 2061000, 10, 50, 0, 10000), +(4230300, 2070002, 1, 1, 0, 400), +(9300061, 2070002, 1, 1, 0, 400), +(4230300, 2044202, 1, 1, 0, 750), +(9300061, 2044202, 1, 1, 0, 750), +(4230300, 2040705, 1, 1, 0, 750), +(9300061, 2040705, 1, 1, 0, 750), +(4230300, 2040707, 1, 1, 0, 750), +(9300061, 2040707, 1, 1, 0, 750), +(4230300, 2382068, 1, 1, 0, 20000), +(9300061, 2382068, 1, 1, 0, 20000), +(4230300, 4010004, 1, 1, 0, 7000), +(9300061, 4010004, 1, 1, 0, 7000), +(4230300, 4020005, 1, 1, 0, 7000), +(9300061, 4020005, 1, 1, 0, 7000), +(4230300, 4004001, 1, 1, 0, 3000), +(9300061, 4004001, 1, 1, 0, 3000), +(4230300, 1302016, 1, 1, 0, 700), +(9300061, 1302016, 1, 1, 0, 700), +(4230300, 1102001, 1, 1, 0, 700), +(9300061, 1102001, 1, 1, 0, 700), +(4230300, 1032011, 1, 1, 0, 700), +(9300061, 1032011, 1, 1, 0, 700), +(4230300, 1312007, 1, 1, 0, 700), +(9300061, 1312007, 1, 1, 0, 700), +(4230300, 1072112, 1, 1, 0, 700), +(9300061, 1072112, 1, 1, 0, 700), +(4230300, 1092014, 1, 1, 0, 700), +(9300061, 1092014, 1, 1, 0, 700), +(4230300, 1040040, 1, 1, 0, 700), +(9300061, 1040040, 1, 1, 0, 700), +(4230300, 1082072, 1, 1, 0, 700), +(9300061, 1082072, 1, 1, 0, 700), +(4230300, 1072087, 1, 1, 0, 700), +(9300061, 1072087, 1, 1, 0, 700), +(4230300, 1072109, 1, 1, 0, 700), +(9300061, 1072109, 1, 1, 0, 700), +(4230300, 1482006, 1, 1, 0, 700), +(9300061, 1482006, 1, 1, 0, 700), +(4230504, 4000279, 1, 1, 0, 200000), +(9300161, 4000279, 1, 1, 0, 200000), +(4230504, 4000281, 1, 1, 0, 200000), +(9300161, 4000281, 1, 1, 0, 200000), +(4230504, 4130002, 1, 1, 0, 3000), +(9300161, 4130002, 1, 1, 0, 3000), +(4230504, 4130013, 1, 1, 0, 3000), +(9300161, 4130013, 1, 1, 0, 3000), +(4230504, 2000002, 1, 1, 0, 40000), +(9300161, 2000002, 1, 4, 0, 40000), +(4230504, 2000003, 1, 1, 0, 40000), +(9300161, 2000003, 1, 4, 0, 40000), +(4230504, 2060000, 10, 50, 0, 10000), +(9300161, 2060000, 10, 50, 0, 10000), +(4230504, 2061000, 10, 50, 0, 10000), +(9300161, 2061000, 10, 50, 0, 10000), +(4230504, 2330002, 1, 1, 0, 400), +(9300161, 2330002, 1, 4, 0, 2500), +(4230504, 2040504, 1, 1, 0, 750), +(9300161, 2040504, 1, 4, 0, 10000), +(4230504, 2044310, 1, 1, 0, 750), +(9300161, 2044310, 1, 4, 0, 10000), +(4230504, 2044002, 1, 1, 0, 750), +(9300161, 2044002, 1, 4, 0, 10000), +(4230504, 4010002, 1, 1, 0, 7000), +(9300161, 4010002, 1, 1, 0, 7000), +(4230504, 4010004, 1, 1, 0, 7000), +(9300161, 4010004, 1, 1, 0, 7000), +(4230504, 4004000, 1, 1, 0, 3000), +(9300161, 4004000, 1, 1, 0, 3000), +(4230504, 1082010, 1, 1, 0, 700), +(9300161, 1082010, 1, 1, 0, 40000), +(4230504, 1002085, 1, 1, 0, 700), +(9300161, 1002085, 1, 1, 0, 40000), +(4230504, 1382001, 1, 1, 0, 700), +(9300161, 1382001, 1, 1, 0, 40000), +(4230504, 1041077, 1, 1, 0, 700), +(9300161, 1041077, 1, 1, 0, 40000), +(4230504, 1002631, 1, 1, 0, 700), +(9300161, 1002631, 1, 1, 0, 40000), +(4110301, 4000358, 1, 1, 0, 200000), +(9300143, 4000358, 1, 1, 0, 200000), +(9300252, 4000358, 1, 1, 0, 200000), +(9300254, 4000358, 1, 1, 0, 200000), +(4110301, 2000002, 1, 1, 0, 40000), +(9300143, 2000002, 1, 1, 0, 40000), +(9300252, 2000002, 1, 1, 0, 40000), +(9300254, 2000002, 1, 1, 0, 40000), +(4110301, 2000003, 1, 1, 0, 40000), +(9300143, 2000003, 1, 1, 0, 40000), +(9300252, 2000003, 1, 1, 0, 40000), +(9300254, 2000003, 1, 1, 0, 40000), +(4110301, 2060000, 10, 50, 0, 10000), +(9300143, 2060000, 10, 50, 0, 10000), +(9300252, 2060000, 10, 50, 0, 10000), +(9300254, 2060000, 10, 50, 0, 10000), +(4110301, 2061000, 10, 50, 0, 10000), +(9300143, 2061000, 10, 50, 0, 10000), +(9300252, 2061000, 10, 50, 0, 10000), +(9300254, 2061000, 10, 50, 0, 10000), +(4110301, 2040504, 1, 1, 0, 750), +(9300143, 2040504, 1, 1, 0, 750), +(9300252, 2040504, 1, 1, 0, 750), +(9300254, 2040504, 1, 1, 0, 750), +(4110301, 2044002, 1, 1, 0, 750), +(9300143, 2044002, 1, 1, 0, 750), +(9300252, 2044002, 1, 1, 0, 750), +(9300254, 2044002, 1, 1, 0, 750), +(4110301, 2044904, 1, 1, 0, 750), +(9300143, 2044904, 1, 1, 0, 750), +(9300252, 2044904, 1, 1, 0, 750), +(9300254, 2044904, 1, 1, 0, 750), +(4110301, 4010002, 1, 1, 0, 7000), +(9300143, 4010002, 1, 1, 0, 7000), +(9300252, 4010002, 1, 1, 0, 7000), +(9300254, 4010002, 1, 1, 0, 7000), +(4110301, 4010004, 1, 1, 0, 7000), +(9300143, 4010004, 1, 1, 0, 7000), +(9300252, 4010004, 1, 1, 0, 7000), +(9300254, 4010004, 1, 1, 0, 7000), +(4110301, 4004000, 1, 1, 0, 3000), +(9300143, 4004000, 1, 1, 0, 3000), +(9300252, 4004000, 1, 1, 0, 3000), +(9300254, 4004000, 1, 1, 0, 3000), +(4110301, 1002085, 1, 1, 0, 700), +(9300143, 1002085, 1, 1, 0, 700), +(9300252, 1002085, 1, 1, 0, 700), +(9300254, 1002085, 1, 1, 0, 700), +(4110301, 1082010, 1, 1, 0, 700), +(9300143, 1082010, 1, 1, 0, 700), +(9300252, 1082010, 1, 1, 0, 700), +(9300254, 1082010, 1, 1, 0, 700), +(4110301, 1382001, 1, 1, 0, 700), +(9300143, 1382001, 1, 1, 0, 700), +(9300252, 1382001, 1, 1, 0, 700), +(9300254, 1382001, 1, 1, 0, 700), +(4110301, 1041077, 1, 1, 0, 700), +(9300143, 1041077, 1, 1, 0, 700), +(9300252, 1041077, 1, 1, 0, 700), +(9300254, 1041077, 1, 1, 0, 700), +(4110301, 1052116, 1, 1, 0, 700), +(9300143, 1052116, 1, 1, 0, 700), +(9300252, 1052116, 1, 1, 0, 700), +(9300254, 1052116, 1, 1, 0, 700), +(4220000, 4000167, 1, 1, 0, 200000), +(4220001, 4000167, 1, 1, 0, 200000), +(9303014, 4000167, 1, 1, 0, 200000), +(4220000, 4000166, 1, 1, 0, 200000), +(4220001, 4000166, 1, 1, 0, 200000), +(9303014, 4000166, 1, 1, 0, 200000), +(4220000, 4032474, 1, 1, 0, 10000), +(4220001, 4032474, 1, 1, 0, 10000), +(9303014, 4032474, 1, 1, 0, 10000), +(4220000, 2000002, 1, 4, 0, 40000), +(4220001, 2000002, 1, 4, 0, 40000), +(9303014, 2000002, 1, 1, 0, 40000), +(4220000, 2000003, 1, 4, 0, 40000), +(4220001, 2000003, 1, 4, 0, 40000), +(9303014, 2000003, 1, 1, 0, 40000), +(4220000, 2049101, 1, 4, 0, 2500), +(4220001, 2049101, 1, 4, 0, 2500), +(9303014, 2049101, 1, 1, 0, 400), +(4220000, 2040517, 1, 4, 0, 10000), +(4220001, 2040517, 1, 4, 0, 10000), +(9303014, 2040517, 1, 1, 0, 750), +(4220000, 2040516, 1, 4, 0, 10000), +(4220001, 2040516, 1, 4, 0, 10000), +(9303014, 2040516, 1, 1, 0, 750), +(4220000, 2040320, 1, 4, 0, 10000), +(4220001, 2040320, 1, 4, 0, 10000), +(9303014, 2040320, 1, 1, 0, 750), +(4220000, 2040301, 1, 4, 0, 10000), +(4220001, 2040301, 1, 4, 0, 10000), +(9303014, 2040301, 1, 1, 0, 750), +(4220000, 2040705, 1, 4, 0, 10000), +(4220001, 2040705, 1, 4, 0, 10000), +(9303014, 2040705, 1, 1, 0, 750), +(4220000, 2040704, 1, 4, 0, 10000), +(4220001, 2040704, 1, 4, 0, 10000), +(9303014, 2040704, 1, 1, 0, 750), +(4220000, 2040805, 1, 4, 0, 10000), +(4220001, 2040805, 1, 4, 0, 10000), +(9303014, 2040805, 1, 1, 0, 750), +(4220000, 2040804, 1, 4, 0, 10000), +(4220001, 2040804, 1, 4, 0, 10000), +(9303014, 2040804, 1, 1, 0, 750), +(4220000, 2041008, 1, 4, 0, 10000), +(4220001, 2041008, 1, 4, 0, 10000), +(9303014, 2041008, 1, 1, 0, 750), +(4220000, 2041007, 1, 4, 0, 10000), +(4220001, 2041007, 1, 4, 0, 10000), +(9303014, 2041007, 1, 1, 0, 750), +(4220000, 2388030, 1, 4, 0, 20000), +(4220001, 2388030, 1, 4, 0, 20000), +(9303014, 2388030, 1, 1, 0, 20000), +(4220000, 4010003, 1, 1, 0, 7000), +(4220001, 4010003, 1, 1, 0, 7000), +(9303014, 4010003, 1, 1, 0, 7000), +(4220000, 4010002, 1, 1, 0, 7000), +(4220001, 4010002, 1, 1, 0, 7000), +(9303014, 4010002, 1, 1, 0, 7000), +(4220000, 1442018, 1, 1, 0, 40000), +(4220001, 1442018, 1, 1, 0, 40000), +(9303014, 1442018, 1, 1, 0, 700), +(4220000, 1302010, 1, 1, 0, 40000), +(4220001, 1302010, 1, 1, 0, 40000), +(9303014, 1302010, 1, 1, 0, 700), +(4220000, 1312008, 1, 1, 0, 40000), +(4220001, 1312008, 1, 1, 0, 40000), +(9303014, 1312008, 1, 1, 0, 700), +(4220000, 1412003, 1, 1, 0, 40000), +(4220001, 1412003, 1, 1, 0, 40000), +(9303014, 1412003, 1, 1, 0, 700), +(4220000, 1322017, 1, 1, 0, 40000), +(4220001, 1322017, 1, 1, 0, 40000), +(9303014, 1322017, 1, 1, 0, 700), +(4220000, 1422005, 1, 1, 0, 40000), +(4220001, 1422005, 1, 1, 0, 40000), +(9303014, 1422005, 1, 1, 0, 700), +(4220000, 1442005, 1, 1, 0, 40000), +(4220001, 1442005, 1, 1, 0, 40000), +(9303014, 1442005, 1, 1, 0, 700), +(4220000, 1372007, 1, 1, 0, 40000), +(4220001, 1372007, 1, 1, 0, 40000), +(9303014, 1372007, 1, 1, 0, 700), +(4220000, 1382006, 1, 1, 0, 40000), +(4220001, 1382006, 1, 1, 0, 40000), +(9303014, 1382006, 1, 1, 0, 700), +(4220000, 1452008, 1, 1, 0, 40000), +(4220001, 1452008, 1, 1, 0, 40000), +(9303014, 1452008, 1, 1, 0, 700), +(4220000, 1462007, 1, 1, 0, 40000), +(4220001, 1462007, 1, 1, 0, 40000), +(9303014, 1462007, 1, 1, 0, 700), +(4220000, 1472020, 1, 1, 0, 40000), +(4220001, 1472020, 1, 1, 0, 40000), +(9303014, 1472020, 1, 1, 0, 700), +(4220000, 1332016, 1, 1, 0, 40000), +(4220001, 1332016, 1, 1, 0, 40000), +(9303014, 1332016, 1, 1, 0, 700), +(4220000, 1332003, 1, 1, 0, 40000), +(4220001, 1332003, 1, 1, 0, 40000), +(9303014, 1332003, 1, 1, 0, 700), +(4220000, 1482007, 1, 1, 0, 40000), +(4220001, 1482007, 1, 1, 0, 40000), +(9303014, 1482007, 1, 1, 0, 700), +(4220000, 1492007, 1, 1, 0, 40000), +(4220001, 1492007, 1, 1, 0, 40000), +(9303014, 1492007, 1, 1, 0, 700), +(9420527, 4000465, 1, 1, 0, 200000), +(9420527, 4131008, 1, 1, 0, 3000), +(9420527, 2060001, 10, 50, 0, 10000), +(9420527, 2061001, 10, 50, 0, 10000), +(9420527, 2000006, 1, 1, 0, 40000), +(9420527, 2002010, 1, 1, 0, 10000), +(9420527, 2020028, 1, 1, 0, 3000), +(9420527, 4010000, 1, 1, 0, 7000), +(9420527, 4020001, 1, 1, 0, 7000), +(9420527, 1072055, 1, 1, 0, 700), +(9420527, 1072134, 1, 1, 0, 700), +(9420527, 1050046, 1, 1, 0, 700), +(9420527, 1072124, 1, 1, 0, 700), +(9420527, 1492000, 1, 1, 0, 700), +(9420527, 1052110, 1, 1, 0, 700), +(4300008, 2000001, 1, 1, 0, 40000), +(4300008, 2000003, 1, 1, 0, 40000), +(4300008, 2000006, 1, 1, 0, 40000), +(4300008, 2022003, 1, 1, 0, 3000), +(4300008, 2000004, 1, 1, 0, 40000), +(4300008, 2040004, 1, 1, 0, 750), +(4300008, 2040501, 1, 1, 0, 750), +(4300008, 2040504, 1, 1, 0, 750), +(4300008, 2040801, 1, 1, 0, 750), +(4300008, 2041007, 1, 1, 0, 750), +(4300008, 2041045, 1, 1, 0, 750), +(4300008, 2049206, 1, 1, 0, 400), +(4300008, 2049208, 1, 1, 0, 400), +(4300008, 2049210, 1, 1, 0, 400), +(4300008, 4020008, 1, 1, 0, 7000), +(4300008, 4004000, 1, 1, 0, 3000), +(4300008, 1302009, 1, 1, 0, 700), +(4300008, 1312007, 1, 1, 0, 700), +(4300008, 1322016, 1, 1, 0, 700), +(4300008, 1402007, 1, 1, 0, 700), +(4300008, 1412005, 1, 1, 0, 700), +(4300008, 1422007, 1, 1, 0, 700), +(4300008, 1432005, 1, 1, 0, 700), +(4300008, 1442009, 1, 1, 0, 700), +(4300008, 1382019, 1, 1, 0, 700), +(4300008, 1452007, 1, 1, 0, 700), +(4300008, 1332011, 1, 1, 0, 700), +(4300008, 1332031, 1, 1, 0, 700), +(4300008, 1472014, 1, 1, 0, 700), +(4300008, 1472015, 1, 1, 0, 700), +(4300008, 1472016, 1, 1, 0, 700), +(4300008, 1472017, 1, 1, 0, 700), +(4300008, 1482006, 1, 1, 0, 700), +(4300008, 1492006, 1, 1, 0, 700), +(4230503, 4000280, 1, 1, 0, 200000), +(9300160, 4000280, 1, 1, 0, 200000), +(4230503, 4000281, 1, 1, 0, 200000), +(9300160, 4000281, 1, 1, 0, 200000), +(4230503, 4130001, 1, 1, 0, 3000), +(9300160, 4130001, 1, 1, 0, 3000), +(4230503, 4130007, 1, 1, 0, 3000), +(9300160, 4130007, 1, 1, 0, 3000), +(4230503, 2000002, 1, 1, 0, 40000), +(9300160, 2000002, 1, 4, 0, 40000), +(4230503, 2000003, 1, 1, 0, 40000), +(9300160, 2000003, 1, 4, 0, 40000), +(4230503, 2060000, 10, 50, 0, 10000), +(9300160, 2060000, 10, 50, 0, 10000), +(4230503, 2061000, 10, 50, 0, 10000), +(9300160, 2061000, 10, 50, 0, 10000), +(4230503, 2040705, 1, 1, 0, 750), +(9300160, 2040705, 1, 4, 0, 10000), +(4230503, 4020005, 1, 1, 0, 7000), +(9300160, 4020005, 1, 1, 0, 7000), +(4230503, 4010004, 1, 1, 0, 7000), +(9300160, 4010004, 1, 1, 0, 7000), +(4230503, 4004001, 1, 1, 0, 3000), +(9300160, 4004001, 1, 1, 0, 3000), +(4230503, 1102001, 1, 1, 0, 700), +(9300160, 1102001, 1, 1, 0, 40000), +(4230503, 1002081, 1, 1, 0, 700), +(9300160, 1002081, 1, 1, 0, 40000), +(4230503, 1040089, 1, 1, 0, 700), +(9300160, 1040089, 1, 1, 0, 40000), +(4230503, 1060078, 1, 1, 0, 700), +(9300160, 1060078, 1, 1, 0, 40000), +(4230503, 1050052, 1, 1, 0, 700), +(9300160, 1050052, 1, 1, 0, 40000), +(4230503, 1492006, 1, 1, 0, 700), +(9300160, 1492006, 1, 1, 0, 40000), +(4130101, 4000045, 1, 1, 0, 200000), +(4130101, 4030012, 1, 1, 0, 10000), +(4130101, 2000002, 1, 1, 0, 40000), +(4130101, 2000003, 1, 1, 0, 40000), +(4130101, 2000004, 1, 1, 0, 40000), +(4130101, 2040805, 1, 1, 0, 750), +(4130101, 2041013, 1, 1, 0, 750), +(4130101, 2383001, 1, 1, 0, 20000), +(4130101, 4010002, 1, 1, 0, 7000), +(4130101, 4020001, 1, 1, 0, 7000), +(4130101, 1322021, 1, 1, 0, 700), +(4130101, 1322026, 1, 1, 0, 700), +(4130101, 1442016, 1, 1, 0, 700), +(4130101, 1442027, 1, 1, 0, 700), +(4130101, 1442028, 1, 1, 0, 700), +(4130101, 1041089, 1, 1, 0, 700), +(4130101, 1061088, 1, 1, 0, 700), +(4130101, 1092004, 1, 1, 0, 700), +(4130101, 1002152, 1, 1, 0, 700), +(4130101, 1072142, 1, 1, 0, 700), +(4130101, 1041081, 1, 1, 0, 700), +(4130101, 1061080, 1, 1, 0, 700), +(4130101, 1072124, 1, 1, 0, 700), +(4130101, 1472016, 1, 1, 0, 700), +(4130101, 1002183, 1, 1, 0, 700), +(4130101, 1041079, 1, 1, 0, 700), +(4130101, 1061078, 1, 1, 0, 700), +(4130101, 1072303, 1, 1, 0, 700), +(4230115, 4000115, 1, 1, 0, 200000), +(9300231, 4000115, 1, 1, 0, 200000), +(4230115, 4031992, 1, 1, 0, 7000), +(9300231, 4031992, 1, 1, 0, 7000), +(4230115, 4030012, 1, 1, 0, 10000), +(9300231, 4030012, 1, 1, 0, 10000), +(4230115, 4130012, 1, 1, 0, 3000), +(9300231, 4130012, 1, 1, 0, 3000), +(4230115, 2000002, 1, 1, 0, 40000), +(9300231, 2000002, 1, 1, 0, 40000), +(4230115, 2000004, 1, 1, 0, 40000), +(9300231, 2000004, 1, 1, 0, 40000), +(4230115, 4006001, 1, 1, 0, 7000), +(9300231, 4006001, 1, 1, 0, 7000), +(4230115, 2002010, 1, 1, 0, 10000), +(9300231, 2002010, 1, 1, 0, 10000), +(4230115, 2060000, 10, 50, 0, 10000), +(9300231, 2060000, 10, 50, 0, 10000), +(4230115, 2061000, 10, 50, 0, 10000), +(9300231, 2061000, 10, 50, 0, 10000), +(4230115, 2044102, 1, 1, 0, 750), +(9300231, 2044102, 1, 1, 0, 750), +(4230115, 2043802, 1, 1, 0, 750), +(9300231, 2043802, 1, 1, 0, 750), +(4230115, 2044216, 1, 1, 0, 750), +(9300231, 2044216, 1, 1, 0, 750), +(4230115, 2040030, 1, 1, 0, 750), +(9300231, 2040030, 1, 1, 0, 750), +(4230115, 2040617, 1, 1, 0, 750), +(9300231, 2040617, 1, 1, 0, 750), +(4230115, 2070004, 1, 1, 0, 400), +(9300231, 2070004, 1, 1, 0, 400), +(4230115, 2383002, 1, 1, 0, 20000), +(9300231, 2383002, 1, 1, 0, 20000), +(4230115, 4020000, 1, 1, 0, 7000), +(9300231, 4020000, 1, 1, 0, 7000), +(4230115, 4020006, 1, 1, 0, 7000), +(9300231, 4020006, 1, 1, 0, 7000), +(4230115, 4004003, 1, 1, 0, 3000), +(9300231, 4004003, 1, 1, 0, 3000), +(4230115, 1302030, 1, 1, 0, 700), +(9300231, 1302030, 1, 1, 0, 700), +(4230115, 1302020, 1, 1, 0, 700), +(9300231, 1302020, 1, 1, 0, 700), +(4230115, 1422005, 1, 1, 0, 700), +(9300231, 1422005, 1, 1, 0, 700), +(4230115, 1041088, 1, 1, 0, 700), +(9300231, 1041088, 1, 1, 0, 700), +(4230115, 1061087, 1, 1, 0, 700), +(9300231, 1061087, 1, 1, 0, 700), +(4230115, 1060075, 1, 1, 0, 700), +(9300231, 1060075, 1, 1, 0, 700), +(4230115, 1050049, 1, 1, 0, 700), +(9300231, 1050049, 1, 1, 0, 700), +(4230115, 1050045, 1, 1, 0, 700), +(9300231, 1050045, 1, 1, 0, 700), +(4230115, 1072141, 1, 1, 0, 700), +(9300231, 1072141, 1, 1, 0, 700), +(4230115, 1372007, 1, 1, 0, 700), +(9300231, 1372007, 1, 1, 0, 700), +(4230115, 1082069, 1, 1, 0, 700), +(9300231, 1082069, 1, 1, 0, 700), +(4230115, 1040079, 1, 1, 0, 700), +(9300231, 1040079, 1, 1, 0, 700), +(4230115, 1060069, 1, 1, 0, 700), +(9300231, 1060069, 1, 1, 0, 700), +(4230115, 1072118, 1, 1, 0, 700), +(9300231, 1072118, 1, 1, 0, 700), +(4230115, 1472021, 1, 1, 0, 700), +(9300231, 1472021, 1, 1, 0, 700), +(4230115, 1082065, 1, 1, 0, 700), +(9300231, 1082065, 1, 1, 0, 700), +(4230115, 1482007, 1, 1, 0, 700), +(9300231, 1482007, 1, 1, 0, 700), +(4250001, 4000438, 1, 1, 0, 200000), +(4250001, 4130014, 1, 1, 0, 3000), +(4250001, 2000002, 1, 1, 0, 40000), +(4250001, 2000003, 1, 1, 0, 40000), +(4250001, 2383056, 1, 1, 0, 20000), +(4250001, 4010004, 1, 1, 0, 7000), +(4250001, 4020005, 1, 1, 0, 7000), +(4250001, 1442005, 1, 1, 0, 700), +(4250001, 1002215, 1, 1, 0, 700), +(4250001, 1051038, 1, 1, 0, 700), +(4250001, 1082066, 1, 1, 0, 700), +(4250001, 1072303, 1, 1, 0, 700), +(4300009, 4000528, 1, 1, 0, 200000), +(4300009, 2000001, 1, 1, 0, 40000), +(4300009, 2000003, 1, 1, 0, 40000), +(4300009, 2000006, 1, 1, 0, 40000), +(4300009, 2022003, 1, 1, 0, 3000), +(4300009, 2000004, 1, 1, 0, 40000), +(4300009, 2040004, 1, 1, 0, 750), +(4300009, 2040501, 1, 1, 0, 750), +(4300009, 2040504, 1, 1, 0, 750), +(4300009, 2040801, 1, 1, 0, 750), +(4300009, 2041007, 1, 1, 0, 750), +(4300009, 2041045, 1, 1, 0, 750), +(4300009, 2049206, 1, 1, 0, 400), +(4300009, 2049208, 1, 1, 0, 400), +(4300009, 2049210, 1, 1, 0, 400), +(4300009, 4020008, 1, 1, 0, 7000), +(4300009, 4004000, 1, 1, 0, 3000), +(4300009, 1302009, 1, 1, 0, 700), +(4300009, 1312007, 1, 1, 0, 700), +(4300009, 1322016, 1, 1, 0, 700), +(4300009, 1402007, 1, 1, 0, 700), +(4300009, 1412005, 1, 1, 0, 700), +(4300009, 1422007, 1, 1, 0, 700), +(4300009, 1432005, 1, 1, 0, 700), +(4300009, 1442009, 1, 1, 0, 700), +(4300009, 1382019, 1, 1, 0, 700), +(4300009, 1452007, 1, 1, 0, 700), +(4300009, 1332011, 1, 1, 0, 700), +(4300009, 1332031, 1, 1, 0, 700), +(4300009, 1472014, 1, 1, 0, 700), +(4300009, 1472015, 1, 1, 0, 700), +(4300009, 1472016, 1, 1, 0, 700), +(4300009, 1472017, 1, 1, 0, 700), +(4300009, 1482006, 1, 1, 0, 700), +(4300009, 1492006, 1, 1, 0, 700), +(4230121, 4030012, 1, 1, 0, 10000), +(9300336, 4030012, 1, 1, 0, 10000), +(9300337, 4030012, 1, 1, 0, 10000), +(9500370, 4030012, 1, 1, 0, 10000), +(4230121, 4131012, 1, 1, 0, 3000), +(9300336, 4131012, 1, 1, 0, 3000), +(9300337, 4131012, 1, 1, 0, 3000), +(9500370, 4131012, 1, 1, 0, 3000), +(4230121, 2000002, 1, 1, 0, 40000), +(9300336, 2000002, 1, 1, 0, 40000), +(9300337, 2000002, 1, 1, 0, 40000), +(9500370, 2000002, 1, 1, 0, 40000), +(4230121, 2000004, 1, 1, 0, 40000), +(9300336, 2000004, 1, 1, 0, 40000), +(9300337, 2000004, 1, 1, 0, 40000), +(9500370, 2000004, 1, 1, 0, 40000), +(4230121, 2002008, 1, 1, 0, 10000), +(9300336, 2002008, 1, 1, 0, 10000), +(9300337, 2002008, 1, 1, 0, 10000), +(9500370, 2002008, 1, 1, 0, 10000), +(4230121, 2043802, 1, 1, 0, 750), +(9300336, 2043802, 1, 1, 0, 750), +(9300337, 2043802, 1, 1, 0, 750), +(9500370, 2043802, 1, 1, 0, 750), +(4230121, 2383000, 1, 1, 0, 20000), +(9300336, 2383000, 1, 1, 0, 20000), +(9300337, 2383000, 1, 1, 0, 20000), +(9500370, 2383000, 1, 1, 0, 20000), +(4230121, 4020005, 1, 1, 0, 7000), +(9300336, 4020005, 1, 1, 0, 7000), +(9300337, 4020005, 1, 1, 0, 7000), +(9500370, 4020005, 1, 1, 0, 7000), +(4230121, 4020004, 1, 1, 0, 7000), +(9300336, 4020004, 1, 1, 0, 7000), +(9300337, 4020004, 1, 1, 0, 7000), +(9500370, 4020004, 1, 1, 0, 7000), +(4230121, 4004000, 1, 1, 0, 3000), +(9300336, 4004000, 1, 1, 0, 3000), +(9300337, 4004000, 1, 1, 0, 3000), +(9500370, 4004000, 1, 1, 0, 3000), +(4230121, 1442016, 1, 1, 0, 700), +(9300336, 1442016, 1, 1, 0, 700), +(9300337, 1442016, 1, 1, 0, 700), +(9500370, 1442016, 1, 1, 0, 700), +(4230121, 1040089, 1, 1, 0, 700), +(9300336, 1040089, 1, 1, 0, 700), +(9300337, 1040089, 1, 1, 0, 700), +(9500370, 1040089, 1, 1, 0, 700), +(4230121, 1060078, 1, 1, 0, 700), +(9300336, 1060078, 1, 1, 0, 700), +(9300337, 1060078, 1, 1, 0, 700), +(9500370, 1060078, 1, 1, 0, 700), +(4230121, 1412003, 1, 1, 0, 700), +(9300336, 1412003, 1, 1, 0, 700), +(9300337, 1412003, 1, 1, 0, 700), +(9500370, 1412003, 1, 1, 0, 700), +(4230121, 1051015, 1, 1, 0, 700), +(9300336, 1051015, 1, 1, 0, 700), +(9300337, 1051015, 1, 1, 0, 700), +(9500370, 1051015, 1, 1, 0, 700), +(4230121, 1002155, 1, 1, 0, 700), +(9300336, 1002155, 1, 1, 0, 700), +(9300337, 1002155, 1, 1, 0, 700), +(9500370, 1002155, 1, 1, 0, 700), +(4230121, 1051024, 1, 1, 0, 700), +(9300336, 1051024, 1, 1, 0, 700), +(9300337, 1051024, 1, 1, 0, 700), +(9500370, 1051024, 1, 1, 0, 700), +(4230121, 1372007, 1, 1, 0, 700), +(9300336, 1372007, 1, 1, 0, 700), +(9300337, 1372007, 1, 1, 0, 700), +(9500370, 1372007, 1, 1, 0, 700), +(4230121, 1041053, 1, 1, 0, 700), +(9300336, 1041053, 1, 1, 0, 700), +(9300337, 1041053, 1, 1, 0, 700), +(9500370, 1041053, 1, 1, 0, 700), +(4230121, 1061049, 1, 1, 0, 700), +(9300336, 1061049, 1, 1, 0, 700), +(9300337, 1061049, 1, 1, 0, 700), +(9500370, 1061049, 1, 1, 0, 700), +(4230121, 1082072, 1, 1, 0, 700), +(9300336, 1082072, 1, 1, 0, 700), +(9300337, 1082072, 1, 1, 0, 700), +(9500370, 1082072, 1, 1, 0, 700), +(4230121, 1452008, 1, 1, 0, 700), +(9300336, 1452008, 1, 1, 0, 700), +(9300337, 1452008, 1, 1, 0, 700), +(9500370, 1452008, 1, 1, 0, 700), +(4230121, 1082047, 1, 1, 0, 700), +(9300336, 1082047, 1, 1, 0, 700), +(9300337, 1082047, 1, 1, 0, 700), +(9500370, 1082047, 1, 1, 0, 700), +(4230121, 1041077, 1, 1, 0, 700), +(9300336, 1041077, 1, 1, 0, 700), +(9300337, 1041077, 1, 1, 0, 700), +(9500370, 1041077, 1, 1, 0, 700), +(4230121, 1061076, 1, 1, 0, 700), +(9300336, 1061076, 1, 1, 0, 700), +(9300337, 1061076, 1, 1, 0, 700), +(9500370, 1061076, 1, 1, 0, 700), +(4230121, 1002184, 1, 1, 0, 700), +(9300336, 1002184, 1, 1, 0, 700), +(9300337, 1002184, 1, 1, 0, 700), +(9500370, 1002184, 1, 1, 0, 700), +(4230121, 1082198, 1, 1, 0, 700), +(9300336, 1082198, 1, 1, 0, 700), +(9300337, 1082198, 1, 1, 0, 700), +(9500370, 1082198, 1, 1, 0, 700), +(4130102, 4000062, 1, 1, 0, 200000), +(4130104, 4000062, 1, 1, 0, 200000), +(4130102, 2000002, 1, 1, 0, 40000), +(4130104, 2000002, 1, 1, 0, 40000), +(4130102, 2000003, 1, 1, 0, 40000), +(4130104, 2000003, 1, 1, 0, 40000), +(4130102, 2000004, 1, 1, 0, 40000), +(4130104, 2000004, 1, 1, 0, 40000), +(4130102, 2041014, 1, 1, 0, 750), +(4130104, 2041014, 1, 1, 0, 750), +(4130102, 2044201, 1, 1, 0, 750), +(4130104, 2044201, 1, 1, 0, 750), +(4130102, 4006001, 1, 1, 0, 7000), +(4130104, 4006001, 1, 1, 0, 7000), +(4130102, 2383003, 1, 1, 0, 20000), +(4130104, 2383003, 1, 1, 0, 20000), +(4130102, 4010003, 1, 1, 0, 7000), +(4130104, 4010003, 1, 1, 0, 7000), +(4130102, 4020006, 1, 1, 0, 7000), +(4130104, 4020006, 1, 1, 0, 7000), +(4130102, 4004000, 1, 1, 0, 3000), +(4130104, 4004000, 1, 1, 0, 3000), +(4130102, 4004004, 1, 1, 0, 3000), +(4130104, 4004004, 1, 1, 0, 3000), +(4130102, 1302013, 1, 1, 0, 700), +(4130104, 1302013, 1, 1, 0, 700), +(4130102, 1041087, 1, 1, 0, 700), +(4130104, 1041087, 1, 1, 0, 700), +(4130102, 1061086, 1, 1, 0, 700), +(4130104, 1061086, 1, 1, 0, 700), +(4130102, 1002092, 1, 1, 0, 700), +(4130104, 1002092, 1, 1, 0, 700), +(4130102, 1051027, 1, 1, 0, 700), +(4130104, 1051027, 1, 1, 0, 700), +(4130102, 1082063, 1, 1, 0, 700), +(4130104, 1082063, 1, 1, 0, 700), +(4130102, 1072110, 1, 1, 0, 700), +(4130104, 1072110, 1, 1, 0, 700), +(4130102, 1040096, 1, 1, 0, 700), +(4130104, 1040096, 1, 1, 0, 700), +(4130102, 1060085, 1, 1, 0, 700), +(4130104, 1060085, 1, 1, 0, 700), +(4130102, 1060084, 1, 1, 0, 700), +(4130104, 1060084, 1, 1, 0, 700), +(4130103, 4030012, 1, 1, 0, 10000), +(9300136, 4030012, 1, 1, 0, 10000), +(9303006, 4030012, 1, 1, 0, 10000), +(4130103, 2000002, 1, 4, 0, 40000), +(9300136, 2000002, 1, 4, 0, 40000), +(9303006, 2000002, 1, 1, 0, 40000), +(4130103, 2000004, 1, 4, 0, 40000), +(9300136, 2000004, 1, 4, 0, 40000), +(9303006, 2000004, 1, 1, 0, 40000), +(4130103, 4006000, 1, 1, 0, 7000), +(9300136, 4006000, 1, 1, 0, 7000), +(9303006, 4006000, 1, 1, 0, 7000), +(4130103, 2383004, 1, 4, 0, 20000), +(9300136, 2383004, 1, 4, 0, 20000), +(9303006, 2383004, 1, 1, 0, 20000), +(4130103, 4005002, 1, 1, 0, 7000), +(9300136, 4005002, 1, 1, 0, 7000), +(9303006, 4005002, 1, 1, 0, 7000), +(4130103, 4004002, 1, 1, 0, 3000), +(9300136, 4004002, 1, 1, 0, 3000), +(9303006, 4004002, 1, 1, 0, 3000), +(4130103, 4020008, 1, 1, 0, 7000), +(9300136, 4020008, 1, 1, 0, 7000), +(9303006, 4020008, 1, 1, 0, 7000), +(4130103, 1312008, 1, 1, 0, 40000), +(9300136, 1312008, 1, 1, 0, 40000), +(9303006, 1312008, 1, 1, 0, 700), +(4130103, 1442009, 1, 1, 0, 40000), +(9300136, 1442009, 1, 1, 0, 40000), +(9303006, 1442009, 1, 1, 0, 700), +(4130103, 1372012, 1, 1, 0, 40000), +(9300136, 1372012, 1, 1, 0, 40000), +(9303006, 1372012, 1, 1, 0, 700), +(4130103, 1372007, 1, 1, 0, 40000), +(9300136, 1372007, 1, 1, 0, 40000), +(9303006, 1372007, 1, 1, 0, 700), +(4130103, 1072140, 1, 1, 0, 40000), +(9300136, 1072140, 1, 1, 0, 40000), +(9303006, 1072140, 1, 1, 0, 700), +(4130103, 1082071, 1, 1, 0, 40000), +(9300136, 1082071, 1, 1, 0, 40000), +(9303006, 1082071, 1, 1, 0, 700), +(4130103, 1462006, 1, 1, 0, 40000), +(9300136, 1462006, 1, 1, 0, 40000), +(9303006, 1462006, 1, 1, 0, 700), +(4130103, 1041080, 1, 1, 0, 40000), +(9300136, 1041080, 1, 1, 0, 40000), +(9303006, 1041080, 1, 1, 0, 700), +(4130103, 1472013, 1, 1, 0, 40000), +(9300136, 1472013, 1, 1, 0, 40000), +(9303006, 1472013, 1, 1, 0, 700), +(4130103, 1072129, 1, 1, 0, 40000), +(9300136, 1072129, 1, 1, 0, 40000), +(9303006, 1072129, 1, 1, 0, 700), +(4130103, 1040063, 1, 1, 0, 40000), +(9300136, 1040063, 1, 1, 0, 40000), +(9303006, 1040063, 1, 1, 0, 700), +(4130103, 1472019, 1, 1, 0, 40000), +(9300136, 1472019, 1, 1, 0, 40000), +(9303006, 1472019, 1, 1, 0, 700), +(4230126, 4000205, 1, 1, 0, 200000), +(4230126, 2000002, 1, 1, 0, 40000), +(4230126, 2000003, 1, 1, 0, 40000), +(4230126, 2000004, 1, 1, 0, 40000), +(4230126, 4006000, 1, 1, 0, 7000), +(4230126, 2044201, 1, 1, 0, 750), +(4230126, 2040705, 1, 1, 0, 750), +(4230126, 4010003, 1, 1, 0, 7000), +(4230126, 4020006, 1, 1, 0, 7000), +(4230126, 4020003, 1, 1, 0, 7000), +(4230126, 1041084, 1, 1, 0, 700), +(4230126, 1082010, 1, 1, 0, 700), +(4230126, 1082059, 1, 1, 0, 700), +(4230126, 1050048, 1, 1, 0, 700), +(4230126, 1051032, 1, 1, 0, 700), +(4230126, 1041082, 1, 1, 0, 700), +(4230126, 1082089, 1, 1, 0, 700), +(4230126, 1041079, 1, 1, 0, 700), +(4230126, 1082092, 1, 1, 0, 700), +(4230126, 1002631, 1, 1, 0, 700), +(9400101, 2061003, 10, 50, 0, 10000), +(9400101, 2000006, 1, 1, 0, 40000), +(9400101, 2040513, 1, 1, 0, 750), +(9400101, 2041037, 1, 1, 0, 750), +(9400101, 2041017, 1, 1, 0, 750), +(9400101, 2040813, 1, 1, 0, 750), +(9400101, 4010001, 1, 1, 0, 7000), +(9400101, 4020003, 1, 1, 0, 7000), +(9400101, 1322012, 1, 1, 0, 700), +(9400101, 1072063, 1, 1, 0, 700), +(9400101, 1302010, 1, 1, 0, 700), +(9400101, 1322017, 1, 1, 0, 700), +(9400101, 1002047, 1, 1, 0, 700), +(9400101, 1050037, 1, 1, 0, 700), +(9400101, 1002183, 1, 1, 0, 700), +(9400101, 1040061, 1, 1, 0, 700), +(9400101, 1061056, 1, 1, 0, 700), +(4230505, 4000291, 1, 1, 0, 200000), +(4230505, 4030012, 1, 1, 0, 10000), +(4230505, 4130012, 1, 1, 0, 3000), +(4230505, 2000002, 1, 1, 0, 40000), +(4230505, 2000003, 1, 1, 0, 40000), +(4230505, 4006001, 1, 1, 0, 7000), +(4230505, 2383006, 1, 1, 0, 20000), +(4230505, 4020000, 1, 1, 0, 7000), +(4230505, 4020006, 1, 1, 0, 7000), +(4230505, 4004002, 1, 1, 0, 3000), +(4230505, 1040089, 1, 1, 0, 700), +(4230505, 1050045, 1, 1, 0, 700), +(4230505, 1002215, 1, 1, 0, 700), +(4230505, 1372007, 1, 1, 0, 700), +(4230505, 1002212, 1, 1, 0, 700), +(4230505, 1052116, 1, 1, 0, 700), +(9300255, 4000359, 1, 1, 0, 200000), +(9300255, 4030012, 1, 1, 0, 10000), +(9300255, 4130012, 1, 1, 0, 3000), +(9300255, 2000002, 1, 1, 0, 40000), +(9300255, 2000003, 1, 1, 0, 40000), +(9300255, 4006001, 1, 1, 0, 7000), +(9300255, 2044102, 1, 1, 0, 750), +(9300255, 2040002, 1, 1, 0, 750), +(9300255, 2383007, 1, 1, 0, 20000), +(9300255, 4020000, 1, 1, 0, 7000), +(9300255, 4020006, 1, 1, 0, 7000), +(9300255, 4004002, 1, 1, 0, 3000), +(9300255, 1040089, 1, 1, 0, 700), +(9300255, 1372007, 1, 1, 0, 700), +(9300255, 1002215, 1, 1, 0, 700), +(9300255, 1050045, 1, 1, 0, 700), +(9420528, 4000466, 1, 1, 0, 200000), +(9420528, 4131008, 1, 1, 0, 3000), +(9420528, 2000010, 1, 1, 0, 40000), +(9420528, 2020006, 1, 1, 0, 3000), +(9420528, 2050004, 1, 1, 0, 3000), +(9420528, 2040516, 1, 1, 0, 750), +(9420528, 2044501, 1, 1, 0, 750), +(9420528, 2040704, 1, 1, 0, 750), +(9420528, 2330001, 1, 1, 0, 400), +(9420528, 4006000, 1, 1, 0, 7000), +(9420528, 4020002, 1, 1, 0, 7000), +(9420528, 4004001, 1, 1, 0, 3000), +(9420528, 4010001, 1, 1, 0, 7000), +(9420528, 4010000, 1, 1, 0, 7000), +(9420528, 1032018, 1, 1, 0, 700), +(9420528, 1302016, 1, 1, 0, 700), +(9420528, 1102003, 1, 1, 0, 700), +(9420528, 1060078, 1, 1, 0, 700), +(9420528, 1322017, 1, 1, 0, 700), +(9420528, 1332016, 1, 1, 0, 700), +(9420528, 1072134, 1, 1, 0, 700), +(9420528, 1002024, 1, 1, 0, 700), +(9420528, 1372012, 1, 1, 0, 700), +(9420528, 1082050, 1, 1, 0, 700), +(9420528, 1332016, 1, 1, 0, 700), +(9420528, 1072300, 1, 1, 0, 700), +(9420528, 1002628, 1, 1, 0, 700), +(9420528, 1052113, 1, 1, 0, 700), +(9420528, 1072285, 1, 1, 0, 700), +(9420528, 1082195, 1, 1, 0, 700), +(4300010, 4000529, 1, 1, 0, 200000), +(4300014, 4000529, 1, 1, 0, 200000), +(4300010, 2000001, 1, 1, 0, 40000), +(4300014, 2000001, 1, 1, 0, 40000), +(4300010, 2000003, 1, 1, 0, 40000), +(4300014, 2000003, 1, 1, 0, 40000), +(4300010, 2000006, 1, 1, 0, 40000), +(4300014, 2000006, 1, 1, 0, 40000), +(4300010, 2022003, 1, 1, 0, 3000), +(4300014, 2022003, 1, 1, 0, 3000), +(4300010, 2000004, 1, 1, 0, 40000), +(4300014, 2000004, 1, 1, 0, 40000), +(4300010, 2040004, 1, 1, 0, 750), +(4300014, 2040004, 1, 1, 0, 750), +(4300010, 2040501, 1, 1, 0, 750), +(4300014, 2040501, 1, 1, 0, 750), +(4300010, 2040504, 1, 1, 0, 750), +(4300014, 2040504, 1, 1, 0, 750), +(4300010, 2040801, 1, 1, 0, 750), +(4300014, 2040801, 1, 1, 0, 750), +(4300010, 2041007, 1, 1, 0, 750), +(4300014, 2041007, 1, 1, 0, 750), +(4300010, 2041045, 1, 1, 0, 750), +(4300014, 2041045, 1, 1, 0, 750), +(4300010, 2049206, 1, 1, 0, 400), +(4300014, 2049206, 1, 1, 0, 400), +(4300010, 2049208, 1, 1, 0, 400), +(4300014, 2049208, 1, 1, 0, 400), +(4300010, 2049210, 1, 1, 0, 400), +(4300014, 2049210, 1, 1, 0, 400), +(4300010, 4020008, 1, 1, 0, 7000), +(4300014, 4020008, 1, 1, 0, 7000), +(4300010, 4004000, 1, 1, 0, 3000), +(4300014, 4004000, 1, 1, 0, 3000), +(4300010, 1302009, 1, 1, 0, 700), +(4300014, 1302009, 1, 1, 0, 700), +(4300010, 1312007, 1, 1, 0, 700), +(4300014, 1312007, 1, 1, 0, 700), +(4300010, 1322016, 1, 1, 0, 700), +(4300014, 1322016, 1, 1, 0, 700), +(4300010, 1402007, 1, 1, 0, 700), +(4300014, 1402007, 1, 1, 0, 700), +(4300010, 1412005, 1, 1, 0, 700), +(4300014, 1412005, 1, 1, 0, 700), +(4300010, 1422007, 1, 1, 0, 700), +(4300014, 1422007, 1, 1, 0, 700), +(4300010, 1432005, 1, 1, 0, 700), +(4300014, 1432005, 1, 1, 0, 700), +(4300010, 1442009, 1, 1, 0, 700), +(4300014, 1442009, 1, 1, 0, 700), +(4300010, 1382019, 1, 1, 0, 700), +(4300014, 1382019, 1, 1, 0, 700), +(4300010, 1452007, 1, 1, 0, 700), +(4300014, 1452007, 1, 1, 0, 700), +(4300010, 1332011, 1, 1, 0, 700), +(4300014, 1332011, 1, 1, 0, 700), +(4300010, 1332031, 1, 1, 0, 700), +(4300014, 1332031, 1, 1, 0, 700), +(4300010, 1472014, 1, 1, 0, 700), +(4300014, 1472014, 1, 1, 0, 700), +(4300010, 1472015, 1, 1, 0, 700), +(4300014, 1472015, 1, 1, 0, 700), +(4300010, 1472016, 1, 1, 0, 700), +(4300014, 1472016, 1, 1, 0, 700), +(4300010, 1472017, 1, 1, 0, 700), +(4300014, 1472017, 1, 1, 0, 700), +(4300010, 1482006, 1, 1, 0, 700), +(4300014, 1482006, 1, 1, 0, 700), +(4300010, 1492006, 1, 1, 0, 700), +(4300014, 1492006, 1, 1, 0, 700), +(4230104, 2000003, 1, 1, 0, 40000), +(9300228, 2000003, 1, 1, 0, 40000), +(4230104, 2000004, 1, 1, 0, 40000), +(9300228, 2000004, 1, 1, 0, 40000), +(4230104, 2043202, 1, 1, 0, 750), +(9300228, 2043202, 1, 1, 0, 750), +(4230104, 2383009, 1, 1, 0, 20000), +(9300228, 2383009, 1, 1, 0, 20000), +(4230104, 4010003, 1, 1, 0, 7000), +(9300228, 4010003, 1, 1, 0, 7000), +(4230104, 4020002, 1, 1, 0, 7000), +(9300228, 4020002, 1, 1, 0, 7000), +(4230104, 1442011, 1, 1, 0, 700), +(9300228, 1442011, 1, 1, 0, 700), +(4230104, 1302016, 1, 1, 0, 700), +(9300228, 1302016, 1, 1, 0, 700), +(4230104, 1002025, 1, 1, 0, 700), +(9300228, 1002025, 1, 1, 0, 700), +(4230104, 1002085, 1, 1, 0, 700), +(9300228, 1002085, 1, 1, 0, 700), +(4230104, 1041087, 1, 1, 0, 700), +(9300228, 1041087, 1, 1, 0, 700), +(4230104, 1061086, 1, 1, 0, 700), +(9300228, 1061086, 1, 1, 0, 700), +(4230104, 1412003, 1, 1, 0, 700), +(9300228, 1412003, 1, 1, 0, 700), +(4230104, 1002217, 1, 1, 0, 700), +(9300228, 1002217, 1, 1, 0, 700), +(4230104, 1382001, 1, 1, 0, 700), +(9300228, 1382001, 1, 1, 0, 700), +(4230104, 1041082, 1, 1, 0, 700), +(9300228, 1041082, 1, 1, 0, 700), +(4230104, 1061081, 1, 1, 0, 700), +(9300228, 1061081, 1, 1, 0, 700), +(4230104, 1041081, 1, 1, 0, 700), +(9300228, 1041081, 1, 1, 0, 700), +(4230104, 1041079, 1, 1, 0, 700), +(9300228, 1041079, 1, 1, 0, 700), +(4230104, 1061078, 1, 1, 0, 700), +(9300228, 1061078, 1, 1, 0, 700), +(4230104, 1040083, 1, 1, 0, 700), +(9300228, 1040083, 1, 1, 0, 700), +(4230104, 1040095, 1, 1, 0, 700), +(9300228, 1040095, 1, 1, 0, 700), +(4230104, 1060084, 1, 1, 0, 700), +(9300228, 1060084, 1, 1, 0, 700), +(4230104, 1482007, 1, 1, 0, 700), +(9300228, 1482007, 1, 1, 0, 700), +(4230506, 4000292, 1, 1, 0, 200000), +(4230506, 2000002, 1, 1, 0, 40000), +(4230506, 2000003, 1, 1, 0, 40000), +(4230506, 2330002, 1, 1, 0, 400), +(4230506, 2044902, 1, 1, 0, 750), +(4230506, 2049101, 1, 1, 0, 400), +(4230506, 4020000, 1, 1, 0, 7000), +(4230506, 4010001, 1, 1, 0, 7000), +(4230506, 1302013, 1, 1, 0, 700), +(4230506, 1002083, 1, 1, 0, 700), +(4230506, 1032007, 1, 1, 0, 700), +(4230506, 1102003, 1, 1, 0, 700), +(4230506, 1061085, 1, 1, 0, 700), +(4230506, 1041092, 1, 1, 0, 700), +(4230506, 1061091, 1, 1, 0, 700), +(4230506, 1041086, 1, 1, 0, 700), +(4230506, 1061079, 1, 1, 0, 700), +(4230506, 1492007, 1, 1, 0, 700), +(9420507, 4000374, 1, 1, 0, 200000), +(9420507, 4000364, 1, 1, 0, 200000), +(9420507, 4000375, 1, 1, 0, 200000), +(9420507, 2000004, 1, 1, 0, 40000), +(9420507, 2020028, 1, 1, 0, 3000), +(9420507, 2043201, 1, 1, 0, 750), +(9420507, 2043001, 1, 1, 0, 750), +(9420507, 4010003, 1, 1, 0, 7000), +(9420507, 4010000, 1, 1, 0, 7000), +(9420507, 4020002, 1, 1, 0, 7000), +(9420507, 1302017, 1, 1, 0, 700), +(9420507, 1302016, 1, 1, 0, 700), +(9420507, 1041087, 1, 1, 0, 700), +(9420507, 1040089, 1, 1, 0, 700), +(9420507, 1060078, 1, 1, 0, 700), +(9420507, 1002243, 1, 1, 0, 700), +(9420507, 1002242, 1, 1, 0, 700), +(9420507, 1050053, 1, 1, 0, 700), +(9420507, 1050054, 1, 1, 0, 700), +(9420507, 1051032, 1, 1, 0, 700), +(9420507, 1051033, 1, 1, 0, 700), +(9420507, 1002216, 1, 1, 0, 700), +(9420507, 1002214, 1, 1, 0, 700), +(9420507, 1002213, 1, 1, 0, 700), +(9420507, 1041027, 1, 1, 0, 700), +(9420507, 1061025, 1, 1, 0, 700), +(9420507, 1332001, 1, 1, 0, 700), +(9420507, 1002619, 1, 1, 0, 700), +(9420507, 1492002, 1, 1, 0, 700), +(4300011, 4000536, 1, 1, 0, 200000), +(4300015, 4000536, 1, 1, 0, 200000), +(4300011, 2000001, 1, 1, 0, 40000), +(4300015, 2000001, 1, 1, 0, 40000), +(4300011, 2000003, 1, 1, 0, 40000), +(4300015, 2000003, 1, 1, 0, 40000), +(4300011, 2000006, 1, 1, 0, 40000), +(4300015, 2000006, 1, 1, 0, 40000), +(4300011, 2022003, 1, 1, 0, 3000), +(4300015, 2022003, 1, 1, 0, 3000), +(4300011, 2000004, 1, 1, 0, 40000), +(4300015, 2000004, 1, 1, 0, 40000), +(4300011, 2040004, 1, 1, 0, 750), +(4300015, 2040004, 1, 1, 0, 750), +(4300011, 2040501, 1, 1, 0, 750), +(4300015, 2040501, 1, 1, 0, 750), +(4300011, 2040504, 1, 1, 0, 750), +(4300015, 2040504, 1, 1, 0, 750), +(4300011, 2040801, 1, 1, 0, 750), +(4300015, 2040801, 1, 1, 0, 750), +(4300011, 2041007, 1, 1, 0, 750), +(4300015, 2041007, 1, 1, 0, 750), +(4300011, 2041045, 1, 1, 0, 750), +(4300015, 2041045, 1, 1, 0, 750), +(4300011, 2049206, 1, 1, 0, 400), +(4300015, 2049206, 1, 1, 0, 400), +(4300011, 2049208, 1, 1, 0, 400), +(4300015, 2049208, 1, 1, 0, 400), +(4300011, 2049210, 1, 1, 0, 400), +(4300015, 2049210, 1, 1, 0, 400), +(4300011, 4020008, 1, 1, 0, 7000), +(4300015, 4020008, 1, 1, 0, 7000), +(4300011, 4004000, 1, 1, 0, 3000), +(4300015, 4004000, 1, 1, 0, 3000), +(4300011, 1302009, 1, 1, 0, 700), +(4300015, 1302009, 1, 1, 0, 700), +(4300011, 1312007, 1, 1, 0, 700), +(4300015, 1312007, 1, 1, 0, 700), +(4300011, 1322016, 1, 1, 0, 700), +(4300015, 1322016, 1, 1, 0, 700), +(4300011, 1402007, 1, 1, 0, 700), +(4300015, 1402007, 1, 1, 0, 700), +(4300011, 1412005, 1, 1, 0, 700), +(4300015, 1412005, 1, 1, 0, 700), +(4300011, 1422007, 1, 1, 0, 700), +(4300015, 1422007, 1, 1, 0, 700), +(4300011, 1432005, 1, 1, 0, 700), +(4300015, 1432005, 1, 1, 0, 700), +(4300011, 1442009, 1, 1, 0, 700), +(4300015, 1442009, 1, 1, 0, 700), +(4300011, 1382019, 1, 1, 0, 700), +(4300015, 1382019, 1, 1, 0, 700), +(4300011, 1452007, 1, 1, 0, 700), +(4300015, 1452007, 1, 1, 0, 700), +(4300011, 1332011, 1, 1, 0, 700), +(4300015, 1332011, 1, 1, 0, 700), +(4300011, 1332031, 1, 1, 0, 700), +(4300015, 1332031, 1, 1, 0, 700), +(4300011, 1472014, 1, 1, 0, 700), +(4300015, 1472014, 1, 1, 0, 700), +(4300011, 1472015, 1, 1, 0, 700), +(4300015, 1472015, 1, 1, 0, 700), +(4300011, 1472016, 1, 1, 0, 700), +(4300015, 1472016, 1, 1, 0, 700), +(4300011, 1472017, 1, 1, 0, 700), +(4300015, 1472017, 1, 1, 0, 700), +(4300011, 1482006, 1, 1, 0, 700), +(4300015, 1482006, 1, 1, 0, 700), +(4300011, 1492006, 1, 1, 0, 700), +(4300015, 1492006, 1, 1, 0, 700), +(4230102, 4000036, 1, 1, 0, 200000), +(9400502, 4000036, 1, 1, 0, 200000), +(9500121, 4000036, 1, 1, 0, 200000), +(9500156, 4000036, 1, 1, 0, 200000), +(4230102, 4030012, 1, 1, 0, 10000), +(9400502, 4030012, 1, 1, 0, 10000), +(9500121, 4030012, 1, 1, 0, 10000), +(9500156, 4030012, 1, 1, 0, 10000), +(4230102, 4130018, 1, 1, 0, 3000), +(9400502, 4130018, 1, 1, 0, 3000), +(9500121, 4130018, 1, 1, 0, 3000), +(9500156, 4130018, 1, 1, 0, 3000), +(4230102, 4130007, 1, 1, 0, 3000), +(9400502, 4130007, 1, 1, 0, 3000), +(9500121, 4130007, 1, 1, 0, 3000), +(9500156, 4130007, 1, 1, 0, 3000), +(4230102, 2000003, 1, 1, 0, 40000), +(9400502, 2000003, 1, 4, 0, 40000), +(9500121, 2000003, 1, 1, 0, 40000), +(9500156, 2000003, 1, 1, 0, 40000), +(4230102, 2000002, 1, 1, 0, 40000), +(9400502, 2000002, 1, 4, 0, 40000), +(9500121, 2000002, 1, 1, 0, 40000), +(9500156, 2000002, 1, 1, 0, 40000), +(4230102, 2000004, 1, 1, 0, 40000), +(9400502, 2000004, 1, 4, 0, 40000), +(9500121, 2000004, 1, 1, 0, 40000), +(9500156, 2000004, 1, 1, 0, 40000), +(4230102, 4006001, 1, 1, 0, 7000), +(9400502, 4006001, 1, 1, 0, 7000), +(9500121, 4006001, 1, 1, 0, 7000), +(9500156, 4006001, 1, 1, 0, 7000), +(4230102, 2020028, 1, 1, 0, 3000), +(9400502, 2020028, 1, 4, 0, 3000), +(9500121, 2020028, 1, 1, 0, 3000), +(9500156, 2020028, 1, 1, 0, 3000), +(4230102, 2330002, 1, 1, 0, 400), +(9400502, 2330002, 1, 4, 0, 2500), +(9500121, 2330002, 1, 1, 0, 400), +(9500156, 2330002, 1, 1, 0, 400), +(4230102, 2383008, 1, 1, 0, 20000), +(9400502, 2383008, 1, 4, 0, 20000), +(9500121, 2383008, 1, 1, 0, 20000), +(9500156, 2383008, 1, 1, 0, 20000), +(4230102, 4010001, 1, 1, 0, 7000), +(9400502, 4010001, 1, 1, 0, 7000), +(9500121, 4010001, 1, 1, 0, 7000), +(9500156, 4010001, 1, 1, 0, 7000), +(4230102, 4020000, 1, 1, 0, 7000), +(9400502, 4020000, 1, 1, 0, 7000), +(9500121, 4020000, 1, 1, 0, 7000), +(9500156, 4020000, 1, 1, 0, 7000), +(4230102, 4004004, 1, 1, 0, 3000), +(9400502, 4004004, 1, 1, 0, 3000), +(9500121, 4004004, 1, 1, 0, 3000), +(9500156, 4004004, 1, 1, 0, 3000), +(4230102, 1302013, 1, 1, 0, 700), +(9400502, 1302013, 1, 1, 0, 40000), +(9500121, 1302013, 1, 1, 0, 700), +(9500156, 1302013, 1, 1, 0, 700), +(4230102, 1002099, 1, 1, 0, 700), +(9400502, 1002099, 1, 1, 0, 40000), +(9500121, 1002099, 1, 1, 0, 700), +(9500156, 1002099, 1, 1, 0, 700), +(4230102, 1060074, 1, 1, 0, 700), +(9400502, 1060074, 1, 1, 0, 40000), +(9500121, 1060074, 1, 1, 0, 700), +(9500156, 1060074, 1, 1, 0, 700), +(4230102, 1040085, 1, 1, 0, 700), +(9400502, 1040085, 1, 1, 0, 40000), +(9500121, 1040085, 1, 1, 0, 700), +(9500156, 1040085, 1, 1, 0, 700), +(4230102, 1002215, 1, 1, 0, 700), +(9400502, 1002215, 1, 1, 0, 40000), +(9500121, 1002215, 1, 1, 0, 700), +(9500156, 1002215, 1, 1, 0, 700), +(4230102, 1072141, 1, 1, 0, 700), +(9400502, 1072141, 1, 1, 0, 40000), +(9500121, 1072141, 1, 1, 0, 700), +(9500156, 1072141, 1, 1, 0, 700), +(4230102, 1072114, 1, 1, 0, 700), +(9400502, 1072114, 1, 1, 0, 40000), +(9500121, 1072114, 1, 1, 0, 700), +(9500156, 1072114, 1, 1, 0, 700), +(4230102, 1002211, 1, 1, 0, 700), +(9400502, 1002211, 1, 1, 0, 40000), +(9500121, 1002211, 1, 1, 0, 700), +(9500156, 1002211, 1, 1, 0, 700), +(4230102, 1002212, 1, 1, 0, 700), +(9400502, 1002212, 1, 1, 0, 40000), +(9500121, 1002212, 1, 1, 0, 700), +(9500156, 1002212, 1, 1, 0, 700), +(4230102, 1472030, 1, 1, 0, 700), +(9400502, 1472030, 1, 1, 0, 40000), +(9500121, 1472030, 1, 1, 0, 700), +(9500156, 1472030, 1, 1, 0, 700), +(4230102, 1082066, 1, 1, 0, 700), +(9400502, 1082066, 1, 1, 0, 40000), +(9500121, 1082066, 1, 1, 0, 700), +(9500156, 1082066, 1, 1, 0, 700), +(4230102, 1040061, 1, 1, 0, 700), +(9400502, 1040061, 1, 1, 0, 40000), +(9500121, 1040061, 1, 1, 0, 700), +(9500156, 1040061, 1, 1, 0, 700), +(4230102, 1060050, 1, 1, 0, 700), +(9400502, 1060050, 1, 1, 0, 40000), +(9500121, 1060050, 1, 1, 0, 700), +(9500156, 1060050, 1, 1, 0, 700), +(4230102, 1002207, 1, 1, 0, 700), +(9400502, 1002207, 1, 1, 0, 40000), +(9500121, 1002207, 1, 1, 0, 700), +(9500156, 1002207, 1, 1, 0, 700), +(4230102, 1072303, 1, 1, 0, 700), +(9400502, 1072303, 1, 1, 0, 40000), +(9500121, 1072303, 1, 1, 0, 700), +(9500156, 1072303, 1, 1, 0, 700), +(4240000, 4021009, 1, 1, 0, 7000), +(9300334, 4021009, 1, 1, 0, 7000), +(9500122, 4021009, 1, 1, 0, 7000), +(9500369, 4021009, 1, 1, 0, 7000), +(4240000, 4130015, 1, 1, 0, 3000), +(9300334, 4130015, 1, 1, 0, 3000), +(9500122, 4130015, 1, 1, 0, 3000), +(9500369, 4130015, 1, 1, 0, 3000), +(4240000, 4130000, 1, 1, 0, 3000), +(9300334, 4130000, 1, 1, 0, 3000), +(9500122, 4130000, 1, 1, 0, 3000), +(9500369, 4130000, 1, 1, 0, 3000), +(4240000, 2000002, 1, 1, 0, 40000), +(9300334, 2000002, 1, 1, 0, 40000), +(9500122, 2000002, 1, 1, 0, 40000), +(9500369, 2000002, 1, 1, 0, 40000), +(4240000, 2000004, 1, 1, 0, 40000), +(9300334, 2000004, 1, 1, 0, 40000), +(9500122, 2000004, 1, 1, 0, 40000), +(9500369, 2000004, 1, 1, 0, 40000), +(4240000, 2002008, 1, 1, 0, 10000), +(9300334, 2002008, 1, 1, 0, 10000), +(9500122, 2002008, 1, 1, 0, 10000), +(9500369, 2002008, 1, 1, 0, 10000), +(4240000, 2043801, 1, 1, 0, 750), +(9300334, 2043801, 1, 1, 0, 750), +(9500122, 2043801, 1, 1, 0, 750), +(9500369, 2043801, 1, 1, 0, 750), +(4240000, 2060000, 10, 50, 0, 10000), +(9300334, 2060000, 10, 50, 0, 10000), +(9500122, 2060000, 10, 50, 0, 10000), +(9500369, 2060000, 10, 50, 0, 10000), +(4240000, 4010006, 1, 1, 0, 7000), +(9300334, 4010006, 1, 1, 0, 7000), +(9500122, 4010006, 1, 1, 0, 7000), +(9500369, 4010006, 1, 1, 0, 7000), +(4240000, 4020008, 1, 1, 0, 7000), +(9300334, 4020008, 1, 1, 0, 7000), +(9500122, 4020008, 1, 1, 0, 7000), +(9500369, 4020008, 1, 1, 0, 7000), +(4240000, 4004001, 1, 1, 0, 3000), +(9300334, 4004001, 1, 1, 0, 3000), +(9500122, 4004001, 1, 1, 0, 3000), +(9500369, 4004001, 1, 1, 0, 3000), +(4240000, 1102016, 1, 1, 0, 700), +(9300334, 1102016, 1, 1, 0, 700), +(9500122, 1102016, 1, 1, 0, 700), +(9500369, 1102016, 1, 1, 0, 700), +(4240000, 1002101, 1, 1, 0, 700), +(9300334, 1002101, 1, 1, 0, 700), +(9500122, 1002101, 1, 1, 0, 700), +(9500369, 1002101, 1, 1, 0, 700), +(4240000, 1072133, 1, 1, 0, 700), +(9300334, 1072133, 1, 1, 0, 700), +(9500122, 1072133, 1, 1, 0, 700), +(9500369, 1072133, 1, 1, 0, 700), +(4240000, 1002216, 1, 1, 0, 700), +(9300334, 1002216, 1, 1, 0, 700), +(9500122, 1002216, 1, 1, 0, 700), +(9500369, 1002216, 1, 1, 0, 700), +(4240000, 1041083, 1, 1, 0, 700), +(9300334, 1041083, 1, 1, 0, 700), +(9500122, 1041083, 1, 1, 0, 700), +(9500369, 1041083, 1, 1, 0, 700), +(4240000, 1061082, 1, 1, 0, 700), +(9300334, 1061082, 1, 1, 0, 700), +(9500122, 1061082, 1, 1, 0, 700), +(9500369, 1061082, 1, 1, 0, 700), +(4240000, 1072122, 1, 1, 0, 700), +(9300334, 1072122, 1, 1, 0, 700), +(9500122, 1072122, 1, 1, 0, 700), +(9500369, 1072122, 1, 1, 0, 700), +(4240000, 1072125, 1, 1, 0, 700), +(9300334, 1072125, 1, 1, 0, 700), +(9500122, 1072125, 1, 1, 0, 700), +(9500369, 1072125, 1, 1, 0, 700), +(4240000, 1072130, 1, 1, 0, 700), +(9300334, 1072130, 1, 1, 0, 700), +(9500122, 1072130, 1, 1, 0, 700), +(9500369, 1072130, 1, 1, 0, 700), +(4240000, 1041074, 1, 1, 0, 700), +(9300334, 1041074, 1, 1, 0, 700), +(9500122, 1041074, 1, 1, 0, 700), +(9500369, 1041074, 1, 1, 0, 700), +(4300013, 2000001, 1, 4, 0, 40000), +(4300013, 2000003, 1, 4, 0, 40000), +(4300013, 2000006, 1, 4, 0, 40000), +(4300013, 2022003, 1, 4, 0, 3000), +(4300013, 2000004, 1, 4, 0, 40000), +(4300013, 2040004, 1, 4, 0, 10000), +(4300013, 2040501, 1, 4, 0, 10000), +(4300013, 2040504, 1, 4, 0, 10000), +(4300013, 2040801, 1, 4, 0, 10000), +(4300013, 2041007, 1, 4, 0, 10000), +(4300013, 2041045, 1, 4, 0, 10000), +(4300013, 2049206, 1, 4, 0, 2500), +(4300013, 2049208, 1, 4, 0, 2500), +(4300013, 2049210, 1, 4, 0, 2500), +(4300013, 2049206, 1, 4, 0, 2500), +(4300013, 2049208, 1, 4, 0, 2500), +(4300013, 2049210, 1, 4, 0, 2500), +(4300013, 2049212, 1, 4, 0, 2500), +(4300013, 4020008, 1, 1, 0, 7000), +(4300013, 4004000, 1, 1, 0, 3000), +(4300013, 1302009, 1, 1, 0, 40000), +(4300013, 1312007, 1, 1, 0, 40000), +(4300013, 1322016, 1, 1, 0, 40000), +(4300013, 1402007, 1, 1, 0, 40000), +(4300013, 1412005, 1, 1, 0, 40000), +(4300013, 1422007, 1, 1, 0, 40000), +(4300013, 1432005, 1, 1, 0, 40000), +(4300013, 1442009, 1, 1, 0, 40000), +(4300013, 1382019, 1, 1, 0, 40000), +(4300013, 1452007, 1, 1, 0, 40000), +(4300013, 1332011, 1, 1, 0, 40000), +(4300013, 1332031, 1, 1, 0, 40000), +(4300013, 1472014, 1, 1, 0, 40000), +(4300013, 1472015, 1, 1, 0, 40000), +(4300013, 1472016, 1, 1, 0, 40000), +(4300013, 1472017, 1, 1, 0, 40000), +(4300013, 1482006, 1, 1, 0, 40000), +(4300013, 1492006, 1, 1, 0, 40000), +(5100000, 4000048, 1, 1, 0, 200000), +(5100000, 4000021, 1, 1, 0, 200000), +(5100000, 4003005, 1, 1, 0, 7000), +(5100000, 2022066, 1, 1, 0, 3000), +(5100000, 2000002, 1, 1, 0, 40000), +(5100000, 2000003, 1, 1, 0, 40000), +(5100000, 2040804, 1, 1, 0, 750), +(5100000, 2044602, 1, 1, 0, 750), +(5100000, 2383013, 1, 1, 0, 20000), +(5100000, 4010002, 1, 1, 0, 7000), +(5100000, 4020001, 1, 1, 0, 7000), +(5100000, 4004002, 1, 1, 0, 3000), +(5100000, 1092030, 1, 1, 0, 700), +(5100000, 1442009, 1, 1, 0, 700), +(5100000, 1002100, 1, 1, 0, 700), +(5100000, 1072089, 1, 1, 0, 700), +(5100000, 1050053, 1, 1, 0, 700), +(5100000, 1051045, 1, 1, 0, 700), +(5100000, 1051037, 1, 1, 0, 700), +(5100000, 1452006, 1, 1, 0, 700), +(5100000, 1082038, 1, 1, 0, 700), +(5100000, 1061095, 1, 1, 0, 700), +(5100000, 1041096, 1, 1, 0, 700), +(5130100, 4000030, 1, 1, 0, 200000), +(5130100, 4000014, 1, 1, 0, 200000), +(5130100, 4030012, 1, 1, 0, 10000), +(5130100, 4001077, 1, 1, 0, 7000), +(5130100, 2000002, 1, 1, 0, 40000), +(5130100, 2002004, 1, 1, 0, 10000), +(5130100, 2000004, 1, 1, 0, 40000), +(5130100, 2070003, 1, 1, 0, 400), +(5130100, 2383012, 1, 1, 0, 20000), +(5130100, 2040026, 1, 1, 0, 750), +(5130100, 4010006, 1, 1, 0, 7000), +(5130100, 4020007, 1, 1, 0, 7000), +(5130100, 1422014, 1, 1, 0, 700), +(5130100, 1332016, 1, 1, 0, 700), +(5130100, 1432005, 1, 1, 0, 700), +(5130100, 1412005, 1, 1, 0, 700), +(5130100, 1040089, 1, 1, 0, 700), +(5130100, 1060078, 1, 1, 0, 700), +(5130100, 1382006, 1, 1, 0, 700), +(5130100, 1051030, 1, 1, 0, 700), +(5130100, 1051045, 1, 1, 0, 700), +(5130100, 1072114, 1, 1, 0, 700), +(5130100, 1452022, 1, 1, 0, 700), +(5130100, 1082083, 1, 1, 0, 700), +(5130100, 1452007, 1, 1, 0, 700), +(5130100, 1051037, 1, 1, 0, 700), +(5130100, 1332016, 1, 1, 0, 700), +(5130100, 1041079, 1, 1, 0, 700), +(5130100, 1041077, 1, 1, 0, 700), +(5130100, 1061076, 1, 1, 0, 700), +(5130100, 1072108, 1, 1, 0, 700), +(5130100, 1472017, 1, 1, 0, 700), +(5130100, 1002631, 1, 1, 0, 700), +(9400102, 2020001, 1, 1, 0, 3000), +(9400102, 2040608, 1, 1, 0, 750), +(9400102, 2040524, 1, 1, 0, 750), +(9400102, 2040814, 1, 1, 0, 750), +(9400102, 4010003, 1, 1, 0, 7000), +(9400102, 4020001, 1, 1, 0, 7000), +(9400102, 1402010, 1, 1, 0, 700), +(9400102, 1072064, 1, 1, 0, 700), +(9400102, 1002026, 1, 1, 0, 700), +(9400102, 1442016, 1, 1, 0, 700), +(9400102, 1312012, 1, 1, 0, 700), +(9400102, 1002154, 1, 1, 0, 700), +(9400102, 1050052, 1, 1, 0, 700), +(9400102, 1051039, 1, 1, 0, 700), +(9400102, 1040096, 1, 1, 0, 700), +(5100003, 4000170, 1, 1, 0, 200000), +(5100003, 4000021, 1, 1, 0, 200000), +(5100003, 2000002, 1, 1, 0, 40000), +(5100003, 2000003, 1, 1, 0, 40000), +(5100003, 2002003, 1, 1, 0, 10000), +(5100003, 2000004, 1, 1, 0, 40000), +(5100003, 2040901, 1, 1, 0, 750), +(5100003, 2044602, 1, 1, 0, 750), +(5100003, 2040805, 1, 1, 0, 750), +(5100003, 2383014, 1, 1, 0, 20000), +(5100003, 4020001, 1, 1, 0, 7000), +(5100003, 4010002, 1, 1, 0, 7000), +(5100003, 4004002, 1, 1, 0, 3000), +(5100003, 1442016, 1, 1, 0, 700), +(5100003, 1060077, 1, 1, 0, 700), +(5100003, 1041088, 1, 1, 0, 700), +(5100003, 1322017, 1, 1, 0, 700), +(5100003, 1312008, 1, 1, 0, 700), +(5100003, 1442009, 1, 1, 0, 700), +(5100003, 1051038, 1, 1, 0, 700), +(5100003, 1072118, 1, 1, 0, 700), +(5100003, 1332011, 1, 1, 0, 700), +(5100003, 1082198, 1, 1, 0, 700), +(5120503, 4000286, 1, 1, 0, 200000), +(5120503, 2000003, 1, 1, 0, 40000), +(5120503, 2000002, 1, 1, 0, 40000), +(5120503, 2040001, 1, 1, 0, 750), +(5120503, 2040901, 1, 1, 0, 750), +(5120503, 2044602, 1, 1, 0, 750), +(5120503, 4020005, 1, 1, 0, 7000), +(5120503, 4004002, 1, 1, 0, 3000), +(5120503, 1312008, 1, 1, 0, 700), +(5120503, 1041088, 1, 1, 0, 700), +(5120503, 1060077, 1, 1, 0, 700), +(5120503, 1072118, 1, 1, 0, 700), +(5120503, 1051038, 1, 1, 0, 700), +(5120503, 1332011, 1, 1, 0, 700), +(5120503, 1072303, 1, 1, 0, 700), +(9400560, 4032030, 1, 1, 0, 10000), +(9400560, 2048003, 1, 1, 0, 750), +(9400560, 2070002, 1, 1, 0, 400), +(9400560, 2022249, 1, 1, 0, 3000), +(9400560, 1032011, 1, 1, 0, 700), +(9400560, 1402007, 1, 1, 0, 700), +(9400560, 1002028, 1, 1, 0, 700), +(9400560, 1072135, 1, 1, 0, 700), +(9400560, 1051034, 1, 1, 0, 700), +(9400560, 1082082, 1, 1, 0, 700), +(9400560, 1040076, 1, 1, 0, 700), +(9400560, 1050052, 1, 1, 0, 700), +(9400560, 1332015, 1, 1, 0, 700), +(9400560, 1002183, 1, 1, 0, 700), +(9400560, 1061077, 1, 1, 0, 700), +(9420504, 4000377, 1, 1, 0, 200000), +(9420504, 4030012, 1, 1, 0, 10000), +(9420504, 2020028, 1, 1, 0, 3000), +(9420504, 2000003, 1, 1, 0, 40000), +(9420504, 2000002, 1, 1, 0, 40000), +(9420504, 4010001, 1, 1, 0, 7000), +(9420504, 1102003, 1, 1, 0, 700), +(9300144, 4000360, 1, 1, 0, 200000), +(9300253, 4000360, 1, 1, 0, 200000), +(9300144, 2000002, 1, 1, 0, 40000), +(9300253, 2000002, 1, 1, 0, 40000), +(9300144, 2000003, 1, 1, 0, 40000), +(9300253, 2000003, 1, 1, 0, 40000), +(9300144, 2002003, 1, 1, 0, 10000), +(9300253, 2002003, 1, 1, 0, 10000), +(9300144, 2044602, 1, 1, 0, 750), +(9300253, 2044602, 1, 1, 0, 750), +(9300144, 2040001, 1, 1, 0, 750), +(9300253, 2040001, 1, 1, 0, 750), +(9300144, 4020005, 1, 1, 0, 7000), +(9300253, 4020005, 1, 1, 0, 7000), +(9300144, 4004002, 1, 1, 0, 3000), +(9300253, 4004002, 1, 1, 0, 3000), +(9300144, 1312008, 1, 1, 0, 700), +(9300253, 1312008, 1, 1, 0, 700), +(9300144, 1041088, 1, 1, 0, 700), +(9300253, 1041088, 1, 1, 0, 700), +(9300144, 1061087, 1, 1, 0, 700), +(9300253, 1061087, 1, 1, 0, 700), +(9300144, 1072118, 1, 1, 0, 700), +(9300253, 1072118, 1, 1, 0, 700), +(9300144, 1051038, 1, 1, 0, 700), +(9300253, 1051038, 1, 1, 0, 700), +(9300144, 1332011, 1, 1, 0, 700), +(9300253, 1332011, 1, 1, 0, 700), +(5220002, 4000031, 1, 1, 0, 200000), +(9300189, 4000031, 1, 1, 0, 200000), +(9500308, 4000031, 1, 1, 0, 200000), +(9500341, 4000031, 1, 1, 0, 200000), +(5220002, 4000021, 1, 1, 0, 200000), +(9300189, 4000021, 1, 1, 0, 200000), +(9500308, 4000021, 1, 1, 0, 200000), +(9500341, 4000021, 1, 1, 0, 200000), +(5220002, 4000026, 1, 1, 0, 200000), +(9300189, 4000026, 1, 1, 0, 200000), +(9500308, 4000026, 1, 1, 0, 200000), +(9500341, 4000026, 1, 1, 0, 200000), +(5220002, 2044902, 1, 4, 0, 10000), +(9300189, 2044902, 1, 4, 0, 10000), +(9500308, 2044902, 1, 4, 0, 10000), +(9500341, 2044902, 1, 4, 0, 10000), +(5220002, 2040504, 1, 4, 0, 10000), +(9300189, 2040504, 1, 4, 0, 10000), +(9500308, 2040504, 1, 4, 0, 10000), +(9500341, 2040504, 1, 4, 0, 10000), +(5220002, 2040301, 1, 4, 0, 10000), +(9300189, 2040301, 1, 4, 0, 10000), +(9500308, 2040301, 1, 4, 0, 10000), +(9500341, 2040301, 1, 4, 0, 10000), +(5220002, 2040801, 1, 4, 0, 10000), +(9300189, 2040801, 1, 4, 0, 10000), +(9500308, 2040801, 1, 4, 0, 10000), +(9500341, 2040801, 1, 4, 0, 10000), +(5220002, 2388002, 1, 4, 0, 20000), +(9300189, 2388002, 1, 4, 0, 20000), +(9500308, 2388002, 1, 4, 0, 20000), +(9500341, 2388002, 1, 4, 0, 20000), +(5220002, 2000002, 1, 4, 0, 40000), +(9300189, 2000002, 1, 4, 0, 40000), +(9500308, 2000002, 1, 4, 0, 40000), +(9500341, 2000002, 1, 4, 0, 40000), +(5220002, 2000003, 1, 4, 0, 40000), +(9300189, 2000003, 1, 4, 0, 40000), +(9500308, 2000003, 1, 4, 0, 40000), +(9500341, 2000003, 1, 4, 0, 40000), +(5220002, 2002002, 1, 4, 0, 10000), +(9300189, 2002002, 1, 4, 0, 10000), +(9500308, 2002002, 1, 4, 0, 10000), +(9500341, 2002002, 1, 4, 0, 10000), +(5220002, 2002003, 1, 4, 0, 10000), +(9300189, 2002003, 1, 4, 0, 10000), +(9500308, 2002003, 1, 4, 0, 10000), +(9500341, 2002003, 1, 4, 0, 10000), +(5220002, 2040707, 1, 4, 0, 10000), +(9300189, 2040707, 1, 4, 0, 10000), +(9500308, 2040707, 1, 4, 0, 10000), +(9500341, 2040707, 1, 4, 0, 10000), +(5220002, 2040901, 1, 4, 0, 10000), +(9300189, 2040901, 1, 4, 0, 10000), +(9500308, 2040901, 1, 4, 0, 10000), +(9500341, 2040901, 1, 4, 0, 10000), +(5220002, 2041016, 1, 4, 0, 10000), +(9300189, 2041016, 1, 4, 0, 10000), +(9500308, 2041016, 1, 4, 0, 10000), +(9500341, 2041016, 1, 4, 0, 10000), +(5220002, 2043801, 1, 4, 0, 10000), +(9300189, 2043801, 1, 4, 0, 10000), +(9500308, 2043801, 1, 4, 0, 10000), +(9500341, 2043801, 1, 4, 0, 10000), +(5220002, 2044101, 1, 4, 0, 10000), +(9300189, 2044101, 1, 4, 0, 10000), +(9500308, 2044101, 1, 4, 0, 10000), +(9500341, 2044101, 1, 4, 0, 10000), +(5220002, 2044601, 1, 4, 0, 10000), +(9300189, 2044601, 1, 4, 0, 10000), +(9500308, 2044601, 1, 4, 0, 10000), +(9500341, 2044601, 1, 4, 0, 10000), +(5220002, 2044701, 1, 4, 0, 10000), +(9300189, 2044701, 1, 4, 0, 10000), +(9500308, 2044701, 1, 4, 0, 10000), +(9500341, 2044701, 1, 4, 0, 10000), +(5220002, 2040514, 1, 4, 0, 10000), +(9300189, 2040514, 1, 4, 0, 10000), +(9500308, 2040514, 1, 4, 0, 10000), +(9500341, 2040514, 1, 4, 0, 10000), +(5220002, 2041044, 1, 4, 0, 10000), +(9300189, 2041044, 1, 4, 0, 10000), +(9500308, 2041044, 1, 4, 0, 10000), +(9500341, 2041044, 1, 4, 0, 10000), +(5220002, 2041017, 1, 4, 0, 10000), +(9300189, 2041017, 1, 4, 0, 10000), +(9500308, 2041017, 1, 4, 0, 10000), +(9500341, 2041017, 1, 4, 0, 10000), +(5220002, 2043702, 1, 4, 0, 10000), +(9300189, 2043702, 1, 4, 0, 10000), +(9500308, 2043702, 1, 4, 0, 10000), +(9500341, 2043702, 1, 4, 0, 10000), +(5220002, 2044302, 1, 4, 0, 10000), +(9300189, 2044302, 1, 4, 0, 10000), +(9500308, 2044302, 1, 4, 0, 10000), +(9500341, 2044302, 1, 4, 0, 10000), +(5220002, 2040932, 1, 4, 0, 10000), +(9300189, 2040932, 1, 4, 0, 10000), +(9500308, 2040932, 1, 4, 0, 10000), +(9500341, 2040932, 1, 4, 0, 10000), +(5220002, 2040930, 1, 4, 0, 10000), +(9300189, 2040930, 1, 4, 0, 10000), +(9500308, 2040930, 1, 4, 0, 10000), +(9500341, 2040930, 1, 4, 0, 10000), +(5220002, 2044804, 1, 4, 0, 10000), +(9300189, 2044804, 1, 4, 0, 10000), +(9500308, 2044804, 1, 4, 0, 10000), +(9500341, 2044804, 1, 4, 0, 10000), +(5220002, 2060000, 10, 50, 0, 10000), +(9300189, 2060000, 10, 50, 0, 10000), +(9500308, 2060000, 10, 50, 0, 10000), +(9500341, 2060000, 10, 50, 0, 10000), +(5220002, 2061000, 10, 50, 0, 10000), +(9300189, 2061000, 10, 50, 0, 10000), +(9500308, 2061000, 10, 50, 0, 10000), +(9500341, 2061000, 10, 50, 0, 10000), +(5220002, 4010005, 1, 1, 0, 7000), +(9300189, 4010005, 1, 1, 0, 7000), +(9500308, 4010005, 1, 1, 0, 7000), +(9500341, 4010005, 1, 1, 0, 7000), +(5220002, 4020005, 1, 1, 0, 7000), +(9300189, 4020005, 1, 1, 0, 7000), +(9500308, 4020005, 1, 1, 0, 7000), +(9500341, 4020005, 1, 1, 0, 7000), +(5220002, 1432039, 1, 1, 0, 40000), +(9300189, 1432039, 1, 1, 0, 40000), +(9500308, 1432039, 1, 1, 0, 40000), +(9500341, 1432039, 1, 1, 0, 40000), +(5220002, 1302010, 1, 1, 0, 40000), +(9300189, 1302010, 1, 1, 0, 40000), +(9500308, 1302010, 1, 1, 0, 40000), +(9500341, 1302010, 1, 1, 0, 40000), +(5220002, 1312008, 1, 1, 0, 40000), +(9300189, 1312008, 1, 1, 0, 40000), +(9500308, 1312008, 1, 1, 0, 40000), +(9500341, 1312008, 1, 1, 0, 40000), +(5220002, 1322017, 1, 1, 0, 40000), +(9300189, 1322017, 1, 1, 0, 40000), +(9500308, 1322017, 1, 1, 0, 40000), +(9500341, 1322017, 1, 1, 0, 40000), +(5220002, 1412003, 1, 1, 0, 40000), +(9300189, 1412003, 1, 1, 0, 40000), +(9500308, 1412003, 1, 1, 0, 40000), +(9500341, 1412003, 1, 1, 0, 40000), +(5220002, 1422005, 1, 1, 0, 40000), +(9300189, 1422005, 1, 1, 0, 40000), +(9500308, 1422005, 1, 1, 0, 40000), +(9500341, 1422005, 1, 1, 0, 40000), +(5220002, 1442005, 1, 1, 0, 40000), +(9300189, 1442005, 1, 1, 0, 40000), +(9500308, 1442005, 1, 1, 0, 40000), +(9500341, 1442005, 1, 1, 0, 40000), +(5220002, 1372007, 1, 1, 0, 40000), +(9300189, 1372007, 1, 1, 0, 40000), +(9500308, 1372007, 1, 1, 0, 40000), +(9500341, 1372007, 1, 1, 0, 40000), +(5220002, 1382006, 1, 1, 0, 40000), +(9300189, 1382006, 1, 1, 0, 40000), +(9500308, 1382006, 1, 1, 0, 40000), +(9500341, 1382006, 1, 1, 0, 40000), +(5220002, 1452008, 1, 1, 0, 40000), +(9300189, 1452008, 1, 1, 0, 40000), +(9500308, 1452008, 1, 1, 0, 40000), +(9500341, 1452008, 1, 1, 0, 40000), +(5220002, 1462007, 1, 1, 0, 40000), +(9300189, 1462007, 1, 1, 0, 40000), +(9500308, 1462007, 1, 1, 0, 40000), +(9500341, 1462007, 1, 1, 0, 40000), +(5220002, 1472021, 1, 1, 0, 40000), +(9300189, 1472021, 1, 1, 0, 40000), +(9500308, 1472021, 1, 1, 0, 40000), +(9500341, 1472021, 1, 1, 0, 40000), +(5220002, 1482007, 1, 1, 0, 40000), +(9300189, 1482007, 1, 1, 0, 40000), +(9500308, 1482007, 1, 1, 0, 40000), +(9500341, 1482007, 1, 1, 0, 40000), +(5220002, 1492007, 1, 1, 0, 40000), +(9300189, 1492007, 1, 1, 0, 40000), +(9500308, 1492007, 1, 1, 0, 40000), +(9500341, 1492007, 1, 1, 0, 40000), +(9400544, 4003005, 1, 1, 0, 7000), +(9400544, 4031937, 1, 1, 0, 7000), +(9400544, 4131009, 1, 1, 0, 3000), +(9400544, 2000004, 1, 1, 0, 40000), +(9400544, 2044008, 1, 1, 0, 750), +(9400544, 2044002, 1, 1, 0, 750), +(9400544, 4010003, 1, 1, 0, 7000), +(9400544, 4020002, 1, 1, 0, 7000), +(9400544, 1302016, 1, 1, 0, 700), +(9400544, 1412003, 1, 1, 0, 700), +(9400544, 1041087, 1, 1, 0, 700), +(9400544, 1061086, 1, 1, 0, 700), +(9400544, 1002085, 1, 1, 0, 700), +(9400544, 1002025, 1, 1, 0, 700), +(9400544, 1061098, 1, 1, 0, 700), +(9400544, 1382006, 1, 1, 0, 700), +(9400544, 1002217, 1, 1, 0, 700), +(9400544, 1382001, 1, 1, 0, 700), +(9400544, 1041082, 1, 1, 0, 700), +(9400544, 1061081, 1, 1, 0, 700), +(9400544, 1061082, 1, 1, 0, 700), +(9400544, 1040095, 1, 1, 0, 700), +(9400544, 1060084, 1, 1, 0, 700), +(9400544, 1061077, 1, 1, 0, 700), +(9400544, 1040083, 1, 1, 0, 700), +(9400544, 1060072, 1, 1, 0, 700), +(5100002, 4000081, 1, 1, 0, 200000), +(5100002, 2000003, 1, 1, 0, 40000), +(5100002, 2000002, 1, 1, 0, 40000), +(5100002, 2070003, 1, 1, 0, 400), +(5100002, 2041010, 1, 1, 0, 750), +(5100002, 2383017, 1, 1, 0, 20000), +(5100002, 4020000, 1, 1, 0, 7000), +(5100002, 4010001, 1, 1, 0, 7000), +(5100002, 4004000, 1, 1, 0, 3000), +(5100002, 1060076, 1, 1, 0, 700), +(5100002, 1302009, 1, 1, 0, 700), +(5100002, 1322017, 1, 1, 0, 700), +(5100002, 1051025, 1, 1, 0, 700), +(5100002, 1002209, 1, 1, 0, 700), +(5100002, 1060073, 1, 1, 0, 700), +(5100002, 1072150, 1, 1, 0, 700), +(5100002, 1492007, 1, 1, 0, 700), +(5120504, 4000287, 1, 1, 0, 200000), +(5120504, 2000002, 1, 1, 0, 40000), +(5120504, 2000003, 1, 1, 0, 40000), +(5120504, 2040504, 1, 1, 0, 750), +(5120504, 4006001, 1, 1, 0, 7000), +(5120504, 4020002, 1, 1, 0, 7000), +(5120504, 4010006, 1, 1, 0, 7000), +(5120504, 4004000, 1, 1, 0, 3000), +(5120504, 1072072, 1, 1, 0, 700), +(5120504, 1002215, 1, 1, 0, 700), +(5120504, 1040097, 1, 1, 0, 700), +(5120504, 1060086, 1, 1, 0, 700), +(5250001, 4000439, 1, 1, 0, 200000), +(9300247, 4000439, 1, 1, 0, 200000), +(5250001, 4130015, 1, 1, 0, 3000), +(9300247, 4130015, 1, 1, 0, 3000), +(5250001, 4130016, 1, 1, 0, 3000), +(9300247, 4130016, 1, 1, 0, 3000), +(5250001, 2000002, 1, 1, 0, 40000), +(9300247, 2000002, 1, 1, 0, 40000), +(5250001, 2000003, 1, 1, 0, 40000), +(9300247, 2000003, 1, 1, 0, 40000), +(5250001, 2383059, 1, 1, 0, 20000), +(9300247, 2383059, 1, 1, 0, 20000), +(5250001, 4010000, 1, 1, 0, 7000), +(9300247, 4010000, 1, 1, 0, 7000), +(5250001, 4020000, 1, 1, 0, 7000), +(9300247, 4020000, 1, 1, 0, 7000), +(5250001, 1072133, 1, 1, 0, 700), +(9300247, 1072133, 1, 1, 0, 700), +(5250001, 1372007, 1, 1, 0, 700), +(9300247, 1372007, 1, 1, 0, 700), +(5250001, 1002214, 1, 1, 0, 700), +(9300247, 1002214, 1, 1, 0, 700), +(5250001, 1040096, 1, 1, 0, 700), +(9300247, 1040096, 1, 1, 0, 700), +(5250001, 1041079, 1, 1, 0, 700), +(9300247, 1041079, 1, 1, 0, 700), +(5250001, 1082198, 1, 1, 0, 700), +(9300247, 1082198, 1, 1, 0, 700), +(5130103, 4000033, 1, 1, 0, 200000), +(5130103, 2000002, 1, 1, 0, 40000), +(5130103, 2000003, 1, 1, 0, 40000), +(5130103, 2000004, 1, 1, 0, 40000), +(5130103, 2383019, 1, 1, 0, 20000), +(5130103, 4010000, 1, 1, 0, 7000), +(5130103, 4020004, 1, 1, 0, 7000), +(5130103, 4020007, 1, 1, 0, 7000), +(5130103, 1092009, 1, 1, 0, 700), +(5130103, 1002218, 1, 1, 0, 700), +(5130103, 1382019, 1, 1, 0, 700), +(5130103, 1050046, 1, 1, 0, 700), +(5130103, 1051037, 1, 1, 0, 700), +(5130103, 1332031, 1, 1, 0, 700), +(5130103, 1040098, 1, 1, 0, 700), +(5130103, 1060087, 1, 1, 0, 700), +(5130103, 1041079, 1, 1, 0, 700), +(5130103, 1061078, 1, 1, 0, 700), +(5130103, 1082092, 1, 1, 0, 700), +(5130103, 1002210, 1, 1, 0, 700), +(5130103, 1052119, 1, 1, 0, 700), +(5120000, 2000002, 1, 1, 0, 40000), +(9300236, 2000002, 1, 1, 0, 40000), +(5120000, 2000003, 1, 1, 0, 40000), +(9300236, 2000003, 1, 1, 0, 40000), +(5120000, 2000004, 1, 1, 0, 40000), +(9300236, 2000004, 1, 1, 0, 40000), +(5120000, 2070002, 1, 1, 0, 400), +(9300236, 2070002, 1, 1, 0, 400), +(5120000, 2041017, 1, 1, 0, 750), +(9300236, 2041017, 1, 1, 0, 750), +(5120000, 2040504, 1, 1, 0, 750), +(9300236, 2040504, 1, 1, 0, 750), +(5120000, 4006001, 1, 1, 0, 7000), +(9300236, 4006001, 1, 1, 0, 7000), +(5120000, 2330002, 1, 1, 0, 400), +(9300236, 2330002, 1, 1, 0, 400), +(5120000, 2040412, 1, 1, 0, 750), +(9300236, 2040412, 1, 1, 0, 750), +(5120000, 4010006, 1, 1, 0, 7000), +(9300236, 4010006, 1, 1, 0, 7000), +(5120000, 4020002, 1, 1, 0, 7000), +(9300236, 4020002, 1, 1, 0, 7000), +(5120000, 4004000, 1, 1, 0, 3000), +(9300236, 4004000, 1, 1, 0, 3000), +(5120000, 4004004, 1, 1, 0, 3000), +(9300236, 4004004, 1, 1, 0, 3000), +(5120000, 1422007, 1, 1, 0, 700), +(9300236, 1422007, 1, 1, 0, 700), +(5120000, 1072134, 1, 1, 0, 700), +(9300236, 1072134, 1, 1, 0, 700), +(5120000, 1040088, 1, 1, 0, 700), +(9300236, 1040088, 1, 1, 0, 700), +(5120000, 1060077, 1, 1, 0, 700), +(9300236, 1060077, 1, 1, 0, 700), +(5120000, 1002086, 1, 1, 0, 700), +(9300236, 1002086, 1, 1, 0, 700), +(5120000, 1082086, 1, 1, 0, 700), +(9300236, 1082086, 1, 1, 0, 700), +(5120000, 1051033, 1, 1, 0, 700), +(9300236, 1051033, 1, 1, 0, 700), +(5120000, 1051034, 1, 1, 0, 700), +(9300236, 1051034, 1, 1, 0, 700), +(5120000, 1072144, 1, 1, 0, 700), +(9300236, 1072144, 1, 1, 0, 700), +(5120000, 1040081, 1, 1, 0, 700), +(9300236, 1040081, 1, 1, 0, 700), +(5120000, 1060070, 1, 1, 0, 700), +(9300236, 1060070, 1, 1, 0, 700), +(5120000, 1072118, 1, 1, 0, 700), +(9300236, 1072118, 1, 1, 0, 700), +(5120000, 1002210, 1, 1, 0, 700), +(9300236, 1002210, 1, 1, 0, 700), +(5120000, 1002185, 1, 1, 0, 700), +(9300236, 1002185, 1, 1, 0, 700), +(5120000, 1072128, 1, 1, 0, 700), +(9300236, 1072128, 1, 1, 0, 700), +(5120000, 1082201, 1, 1, 0, 700), +(9300236, 1082201, 1, 1, 0, 700), +(9420529, 4000467, 1, 1, 0, 200000), +(9420529, 2000006, 1, 1, 0, 40000), +(9420529, 2020014, 1, 1, 0, 3000), +(9420529, 1412003, 1, 1, 0, 700), +(9420529, 1002099, 1, 1, 0, 700), +(9420529, 1092009, 1, 1, 0, 700), +(9420529, 1040091, 1, 1, 0, 700), +(9420529, 1082028, 1, 1, 0, 700), +(9420529, 1002216, 1, 1, 0, 700), +(9420529, 1452008, 1, 1, 0, 700), +(9420529, 1051038, 1, 1, 0, 700), +(9420529, 1082072, 1, 1, 0, 700), +(9420529, 1002184, 1, 1, 0, 700), +(9420529, 1040096, 1, 1, 0, 700), +(9420529, 1041080, 1, 1, 0, 700), +(9420529, 1052098, 1, 1, 0, 700), +(5120001, 4000070, 1, 1, 0, 200000), +(5120001, 4003005, 1, 1, 0, 7000), +(5120001, 2000002, 1, 1, 0, 40000), +(5120001, 2000003, 1, 1, 0, 40000), +(5120001, 2000004, 1, 1, 0, 40000), +(5120001, 2050003, 1, 1, 0, 3000), +(5120001, 4006000, 1, 1, 0, 7000), +(5120001, 2041012, 1, 1, 0, 750), +(5120001, 2043102, 1, 1, 0, 750), +(5120001, 2331000, 1, 1, 0, 0), +(5120001, 2383021, 1, 1, 0, 20000), +(5120001, 4020000, 1, 1, 0, 7000), +(5120001, 4010005, 1, 1, 0, 7000), +(5120001, 4004000, 1, 1, 0, 3000), +(5120001, 1032013, 1, 1, 0, 700), +(5120001, 1402007, 1, 1, 0, 700), +(5120001, 1041089, 1, 1, 0, 700), +(5120001, 1061088, 1, 1, 0, 700), +(5120001, 1002028, 1, 1, 0, 700), +(5120001, 1050054, 1, 1, 0, 700), +(5120001, 1072115, 1, 1, 0, 700), +(5120001, 1050058, 1, 1, 0, 700), +(5120001, 1040094, 1, 1, 0, 700), +(5120001, 1060083, 1, 1, 0, 700), +(5120001, 1082074, 1, 1, 0, 700), +(5120001, 1072306, 1, 1, 0, 700), +(5120002, 4000071, 1, 1, 0, 200000), +(5120002, 4003005, 1, 1, 0, 7000), +(5120002, 2000002, 1, 1, 0, 40000), +(5120002, 2000003, 1, 1, 0, 40000), +(5120002, 2000004, 1, 1, 0, 40000), +(5120002, 4006001, 1, 1, 0, 7000), +(5120002, 2041017, 1, 1, 0, 750), +(5120002, 2044001, 1, 1, 0, 750), +(5120002, 2049101, 1, 1, 0, 400), +(5120002, 2330002, 1, 1, 0, 400), +(5120002, 2383022, 1, 1, 0, 20000), +(5120002, 4020003, 1, 1, 0, 7000), +(5120002, 4010002, 1, 1, 0, 7000), +(5120002, 4004001, 1, 1, 0, 3000), +(5120002, 1002045, 1, 1, 0, 700), +(5120002, 1002024, 1, 1, 0, 700), +(5120002, 1302010, 1, 1, 0, 700), +(5120002, 1312007, 1, 1, 0, 700), +(5120002, 1082009, 1, 1, 0, 700), +(5120002, 1082081, 1, 1, 0, 700), +(5120002, 1002267, 1, 1, 0, 700), +(5120002, 1051041, 1, 1, 0, 700), +(5120002, 1072131, 1, 1, 0, 700), +(5120002, 1002181, 1, 1, 0, 700), +(5120002, 1040084, 1, 1, 0, 700), +(5120002, 1060073, 1, 1, 0, 700), +(5120002, 1002631, 1, 1, 0, 700), +(5120003, 4000072, 1, 1, 0, 200000), +(5120003, 4003005, 1, 1, 0, 7000), +(5120003, 2000002, 1, 1, 0, 40000), +(5120003, 2000003, 1, 1, 0, 40000), +(5120003, 2000004, 1, 1, 0, 40000), +(5120003, 2070004, 1, 1, 0, 400), +(5120003, 4006000, 1, 1, 0, 7000), +(5120003, 2044002, 1, 1, 0, 750), +(5120003, 2041023, 1, 1, 0, 750), +(5120003, 2040925, 1, 1, 0, 750), +(5120003, 2331000, 1, 1, 0, 0), +(5120003, 2383023, 1, 1, 0, 20000), +(5120003, 4010001, 1, 1, 0, 7000), +(5120003, 4020005, 1, 1, 0, 7000), +(5120003, 4004003, 1, 1, 0, 3000), +(5120003, 1032011, 1, 1, 0, 700), +(5120003, 1032019, 1, 1, 0, 700), +(5120003, 1322025, 1, 1, 0, 700), +(5120003, 1041085, 1, 1, 0, 700), +(5120003, 1061084, 1, 1, 0, 700), +(5120003, 1072135, 1, 1, 0, 700), +(5120003, 1322018, 1, 1, 0, 700), +(5120003, 1082082, 1, 1, 0, 700), +(5120003, 1050047, 1, 1, 0, 700), +(5120003, 1051034, 1, 1, 0, 700), +(5120003, 1002153, 1, 1, 0, 700), +(5120003, 1382006, 1, 1, 0, 700), +(5120003, 1002038, 1, 1, 0, 700), +(5120003, 1050052, 1, 1, 0, 700), +(5120003, 1332015, 1, 1, 0, 700), +(5120003, 1032011, 1, 1, 0, 700), +(5120003, 1061077, 1, 1, 0, 700), +(5120003, 1002181, 1, 1, 0, 700), +(5120003, 1002634, 1, 1, 0, 700), +(5100005, 4000171, 1, 1, 0, 200000), +(5100005, 4000021, 1, 1, 0, 200000), +(5100005, 4006000, 1, 1, 0, 7000), +(5100005, 4130009, 1, 1, 0, 3000), +(5100005, 4130008, 1, 1, 0, 3000), +(5100005, 2070004, 1, 1, 0, 400), +(5100005, 2000002, 1, 1, 0, 40000), +(5100005, 2000003, 1, 1, 0, 40000), +(5100005, 2000004, 1, 1, 0, 40000), +(5100005, 2041023, 1, 1, 0, 750), +(5100005, 2044201, 1, 1, 0, 750), +(5100005, 2044902, 1, 1, 0, 750), +(5100005, 2040316, 1, 1, 0, 750), +(5100005, 2040622, 1, 1, 0, 750), +(5100005, 4010001, 1, 1, 0, 7000), +(5100005, 4010005, 1, 1, 0, 7000), +(5100005, 4004003, 1, 1, 0, 3000), +(5100005, 1422007, 1, 1, 0, 700), +(5100005, 1402006, 1, 1, 0, 700), +(5100005, 1051045, 1, 1, 0, 700), +(5100005, 1041079, 1, 1, 0, 700), +(5100005, 1061078, 1, 1, 0, 700), +(5100005, 1040095, 1, 1, 0, 700), +(5100005, 1060084, 1, 1, 0, 700), +(5120501, 4000293, 1, 1, 0, 200000), +(5120501, 4006000, 1, 1, 0, 7000), +(5120501, 2383025, 1, 1, 0, 20000), +(5120501, 4020005, 1, 1, 0, 7000), +(5120501, 4004003, 1, 1, 0, 3000), +(5120501, 1032019, 1, 1, 0, 700), +(5120501, 1040102, 1, 1, 0, 700), +(5120501, 1060090, 1, 1, 0, 700), +(5120501, 1051041, 1, 1, 0, 700), +(5120501, 1482008, 1, 1, 0, 700), +(9420505, 4000378, 1, 1, 0, 200000), +(9420505, 4030012, 1, 1, 0, 10000), +(9420505, 2000003, 1, 1, 0, 40000), +(9420505, 2002004, 1, 1, 0, 10000), +(9420505, 2000004, 1, 1, 0, 40000), +(9420505, 2070003, 1, 1, 0, 400), +(9420505, 2000002, 1, 1, 0, 40000), +(9420505, 4010001, 1, 1, 0, 7000), +(9420505, 4010006, 1, 1, 0, 7000), +(9420505, 1002083, 1, 1, 0, 700), +(9420505, 1032002, 1, 1, 0, 700), +(9420505, 1432005, 1, 1, 0, 700), +(9420505, 1041014, 1, 1, 0, 700), +(9420505, 1041065, 1, 1, 0, 700), +(9420505, 1061070, 1, 1, 0, 700), +(5120100, 4011007, 1, 1, 0, 7000), +(5120100, 2000002, 1, 4, 0, 40000), +(5120100, 2000004, 1, 4, 0, 40000), +(5120100, 2002010, 1, 4, 0, 10000), +(5120100, 2060000, 10, 50, 0, 10000), +(5120100, 2061000, 10, 50, 0, 10000), +(5120100, 2383026, 1, 4, 0, 20000), +(5120100, 4020007, 1, 1, 0, 7000), +(5120100, 4020001, 1, 1, 0, 7000), +(5120100, 4010006, 1, 1, 0, 7000), +(5120100, 4004000, 1, 1, 0, 3000), +(5120100, 1032014, 1, 1, 0, 40000), +(5120100, 1092010, 1, 1, 0, 40000), +(5120100, 1412007, 1, 1, 0, 40000), +(5120100, 1302056, 1, 1, 0, 40000), +(5120100, 1072142, 1, 1, 0, 40000), +(5120100, 1002154, 1, 1, 0, 40000), +(5120100, 1041082, 1, 1, 0, 40000), +(5120100, 1002211, 1, 1, 0, 40000), +(5120100, 1040095, 1, 1, 0, 40000), +(5120502, 4000294, 1, 1, 0, 200000), +(5120502, 2000002, 1, 1, 0, 40000), +(5120502, 2000003, 1, 1, 0, 40000), +(5120502, 2383027, 1, 1, 0, 20000), +(5120502, 4004004, 1, 1, 0, 3000), +(5120502, 4020005, 1, 1, 0, 7000), +(5120502, 1040091, 1, 1, 0, 700), +(5120502, 1040087, 1, 1, 0, 700), +(5120502, 1060076, 1, 1, 0, 700), +(5120502, 1082004, 1, 1, 0, 700), +(5120502, 1040102, 1, 1, 0, 700), +(5120502, 1060090, 1, 1, 0, 700), +(5120502, 1050052, 1, 1, 0, 700), +(5120502, 1040096, 1, 1, 0, 700), +(5120502, 1060085, 1, 1, 0, 700), +(5120502, 1052116, 1, 1, 0, 700), +(9300149, 4000364, 1, 1, 0, 200000), +(9300149, 4130001, 1, 1, 0, 3000), +(9300149, 4130005, 1, 1, 0, 3000), +(9300149, 4130006, 1, 1, 0, 3000), +(9300149, 2000002, 1, 1, 0, 40000), +(9300149, 2000003, 1, 1, 0, 40000), +(9300149, 2383028, 1, 1, 0, 20000), +(9300149, 2040325, 1, 1, 0, 750), +(9300149, 2040424, 1, 1, 0, 750), +(9300149, 2043018, 1, 1, 0, 750), +(9300149, 4020005, 1, 1, 0, 7000), +(9300149, 4004004, 1, 1, 0, 3000), +(9300149, 1040091, 1, 1, 0, 700), +(9300149, 1060080, 1, 1, 0, 700), +(9300149, 1040087, 1, 1, 0, 700), +(9300149, 1060076, 1, 1, 0, 700), +(9300149, 1082004, 1, 1, 0, 700), +(9300149, 1050052, 1, 1, 0, 700), +(9300149, 1002159, 1, 1, 0, 700), +(9300149, 1462014, 1, 1, 0, 700), +(9300149, 1040096, 1, 1, 0, 700), +(9300149, 1060085, 1, 1, 0, 700), +(9300149, 1040057, 1, 1, 0, 700), +(9300149, 1492008, 1, 1, 0, 700), +(5130101, 4000022, 1, 1, 0, 200000), +(9400243, 4000022, 1, 1, 0, 200000), +(5130101, 2000003, 1, 1, 0, 40000), +(9400243, 2000003, 1, 1, 0, 40000), +(5130101, 2000004, 1, 1, 0, 40000), +(9400243, 2000004, 1, 1, 0, 40000), +(5130101, 2070002, 1, 1, 0, 400), +(9400243, 2070002, 1, 1, 0, 400), +(5130101, 2070003, 1, 1, 0, 400), +(9400243, 2070003, 1, 1, 0, 400), +(5130101, 2044501, 1, 1, 0, 750), +(9400243, 2044501, 1, 1, 0, 750), +(5130101, 2044601, 1, 1, 0, 750), +(9400243, 2044601, 1, 1, 0, 750), +(5130101, 2383030, 1, 1, 0, 20000), +(9400243, 2383030, 1, 1, 0, 20000), +(5130101, 4020008, 1, 1, 0, 7000), +(9400243, 4020008, 1, 1, 0, 7000), +(5130101, 1312009, 1, 1, 0, 700), +(9400243, 1312009, 1, 1, 0, 700), +(5130101, 1002086, 1, 1, 0, 700), +(9400243, 1002086, 1, 1, 0, 700), +(5130101, 1092002, 1, 1, 0, 700), +(9400243, 1092002, 1, 1, 0, 700), +(5130101, 1082025, 1, 1, 0, 700), +(9400243, 1082025, 1, 1, 0, 700), +(5130101, 1041091, 1, 1, 0, 700), +(9400243, 1041091, 1, 1, 0, 700), +(5130101, 1061090, 1, 1, 0, 700), +(9400243, 1061090, 1, 1, 0, 700), +(5130101, 1372012, 1, 1, 0, 700), +(9400243, 1372012, 1, 1, 0, 700), +(5130101, 1050048, 1, 1, 0, 700), +(9400243, 1050048, 1, 1, 0, 700), +(5130101, 1072143, 1, 1, 0, 700), +(9400243, 1072143, 1, 1, 0, 700), +(5130101, 1072121, 1, 1, 0, 700), +(9400243, 1072121, 1, 1, 0, 700), +(5130101, 1002247, 1, 1, 0, 700), +(9400243, 1002247, 1, 1, 0, 700), +(5130101, 1041080, 1, 1, 0, 700), +(9400243, 1041080, 1, 1, 0, 700), +(5130101, 1061079, 1, 1, 0, 700), +(9400243, 1061079, 1, 1, 0, 700), +(5130101, 1082076, 1, 1, 0, 700), +(9400243, 1082076, 1, 1, 0, 700), +(5130101, 1072303, 1, 1, 0, 700), +(9400243, 1072303, 1, 1, 0, 700), +(5130104, 4000051, 1, 1, 0, 200000), +(5130104, 4000021, 1, 1, 0, 200000), +(5130104, 4003004, 1, 1, 0, 7000), +(5130104, 2000003, 1, 1, 0, 40000), +(5130104, 2000004, 1, 1, 0, 40000), +(5130104, 2070003, 1, 1, 0, 400), +(5130104, 2041019, 1, 1, 0, 750), +(5130104, 2383031, 1, 1, 0, 20000), +(5130104, 4010001, 1, 1, 0, 7000), +(5130104, 4020001, 1, 1, 0, 7000), +(5130104, 4004003, 1, 1, 0, 3000), +(5130104, 1102000, 1, 1, 0, 700), +(5130104, 1422009, 1, 1, 0, 700), +(5130104, 1442024, 1, 1, 0, 700), +(5130104, 1082064, 1, 1, 0, 700), +(5130104, 1002215, 1, 1, 0, 700), +(5130104, 1002213, 1, 1, 0, 700), +(5130104, 1462008, 1, 1, 0, 700), +(5130104, 1050052, 1, 1, 0, 700), +(5130104, 1072119, 1, 1, 0, 700), +(5130104, 1040097, 1, 1, 0, 700), +(5130104, 1060086, 1, 1, 0, 700), +(5130104, 1082075, 1, 1, 0, 700), +(5130104, 1482007, 1, 1, 0, 700), +(5300100, 4030012, 1, 1, 0, 10000), +(9400200, 4030012, 1, 1, 0, 10000), +(9400500, 4030012, 1, 1, 0, 10000), +(9400644, 4030012, 1, 1, 0, 10000), +(5300100, 2000002, 1, 1, 0, 40000), +(9400200, 2000002, 1, 1, 0, 40000), +(9400500, 2000002, 1, 4, 0, 40000), +(9400644, 2000002, 1, 1, 0, 40000), +(5300100, 2000003, 1, 1, 0, 40000), +(9400200, 2000003, 1, 1, 0, 40000), +(9400500, 2000003, 1, 4, 0, 40000), +(9400644, 2000003, 1, 1, 0, 40000), +(5300100, 2000004, 1, 1, 0, 40000), +(9400200, 2000004, 1, 1, 0, 40000), +(9400500, 2000004, 1, 4, 0, 40000), +(9400644, 2000004, 1, 1, 0, 40000), +(5300100, 2043801, 1, 1, 0, 750), +(9400200, 2043801, 1, 1, 0, 750), +(9400500, 2043801, 1, 4, 0, 10000), +(9400644, 2043801, 1, 1, 0, 750), +(5300100, 4006000, 1, 1, 0, 7000), +(9400200, 4006000, 1, 1, 0, 7000), +(9400500, 4006000, 1, 1, 0, 7000), +(9400644, 4006000, 1, 1, 0, 7000), +(5300100, 2383029, 1, 1, 0, 20000), +(9400200, 2383029, 1, 1, 0, 20000), +(9400500, 2383029, 1, 4, 0, 20000), +(9400644, 2383029, 1, 1, 0, 20000), +(5300100, 4010006, 1, 1, 0, 7000), +(9400200, 4010006, 1, 1, 0, 7000), +(9400500, 4010006, 1, 1, 0, 7000), +(9400644, 4010006, 1, 1, 0, 7000), +(5300100, 4020008, 1, 1, 0, 7000), +(9400200, 4020008, 1, 1, 0, 7000), +(9400500, 4020008, 1, 1, 0, 7000), +(9400644, 4020008, 1, 1, 0, 7000), +(5300100, 4004004, 1, 1, 0, 3000), +(9400200, 4004004, 1, 1, 0, 3000), +(9400500, 4004004, 1, 1, 0, 3000), +(9400644, 4004004, 1, 1, 0, 3000), +(5300100, 1032019, 1, 1, 0, 700), +(9400200, 1032019, 1, 1, 0, 700), +(9400500, 1032019, 1, 1, 0, 40000), +(9400644, 1032019, 1, 1, 0, 700), +(5300100, 1040086, 1, 1, 0, 700), +(9400200, 1040086, 1, 1, 0, 700), +(9400500, 1040086, 1, 1, 0, 40000), +(9400644, 1040086, 1, 1, 0, 700), +(5300100, 1040090, 1, 1, 0, 700), +(9400200, 1040090, 1, 1, 0, 700), +(9400500, 1040090, 1, 1, 0, 40000), +(9400644, 1040090, 1, 1, 0, 700), +(5300100, 1060079, 1, 1, 0, 700), +(9400200, 1060079, 1, 1, 0, 700), +(9400500, 1060079, 1, 1, 0, 40000), +(9400644, 1060079, 1, 1, 0, 700), +(5300100, 1082011, 1, 1, 0, 700), +(9400200, 1082011, 1, 1, 0, 700), +(9400500, 1082011, 1, 1, 0, 40000), +(9400644, 1082011, 1, 1, 0, 700), +(5300100, 1060000, 1, 1, 0, 700), +(9400200, 1060000, 1, 1, 0, 700), +(9400500, 1060000, 1, 1, 0, 40000), +(9400644, 1060000, 1, 1, 0, 700), +(5300100, 1002092, 1, 1, 0, 700), +(9400200, 1002092, 1, 1, 0, 700), +(9400500, 1002092, 1, 1, 0, 40000), +(9400644, 1002092, 1, 1, 0, 700), +(5300100, 1382001, 1, 1, 0, 700), +(9400200, 1382001, 1, 1, 0, 700), +(9400500, 1382001, 1, 1, 0, 40000), +(9400644, 1382001, 1, 1, 0, 700), +(5300100, 1051031, 1, 1, 0, 700), +(9400200, 1051031, 1, 1, 0, 700), +(9400500, 1051031, 1, 1, 0, 40000), +(9400644, 1051031, 1, 1, 0, 700), +(5300100, 1072143, 1, 1, 0, 700), +(9400200, 1072143, 1, 1, 0, 700), +(9400500, 1072143, 1, 1, 0, 40000), +(9400644, 1072143, 1, 1, 0, 700), +(5300100, 1072137, 1, 1, 0, 700), +(9400200, 1072137, 1, 1, 0, 700), +(9400500, 1072137, 1, 1, 0, 40000), +(9400644, 1072137, 1, 1, 0, 700), +(5300100, 1452008, 1, 1, 0, 700), +(9400200, 1452008, 1, 1, 0, 700), +(9400500, 1452008, 1, 1, 0, 40000), +(9400644, 1452008, 1, 1, 0, 700), +(5300100, 1452004, 1, 1, 0, 700), +(9400200, 1452004, 1, 1, 0, 700), +(9400500, 1452004, 1, 1, 0, 40000), +(9400644, 1452004, 1, 1, 0, 700), +(5300100, 1002168, 1, 1, 0, 700), +(9400200, 1002168, 1, 1, 0, 700), +(9400500, 1002168, 1, 1, 0, 40000), +(9400644, 1002168, 1, 1, 0, 700), +(5300100, 1051039, 1, 1, 0, 700), +(9400200, 1051039, 1, 1, 0, 700), +(9400500, 1051039, 1, 1, 0, 40000), +(9400644, 1051039, 1, 1, 0, 700), +(5300100, 1472020, 1, 1, 0, 700), +(9400200, 1472020, 1, 1, 0, 700), +(9400500, 1472020, 1, 1, 0, 40000), +(9400644, 1472020, 1, 1, 0, 700), +(5300100, 1332003, 1, 1, 0, 700), +(9400200, 1332003, 1, 1, 0, 700), +(9400500, 1332003, 1, 1, 0, 40000), +(9400644, 1332003, 1, 1, 0, 700), +(5300100, 1082198, 1, 1, 0, 700), +(9400200, 1082198, 1, 1, 0, 700), +(9400500, 1082198, 1, 1, 0, 40000), +(9400644, 1082198, 1, 1, 0, 700), +(5120506, 4000298, 1, 1, 0, 200000), +(9300164, 4000298, 1, 1, 0, 200000), +(5120506, 2044201, 1, 1, 0, 750), +(9300164, 2044201, 1, 1, 0, 750), +(5120506, 2330002, 1, 1, 0, 400), +(9300164, 2330002, 1, 1, 0, 400), +(5120506, 2383032, 1, 1, 0, 20000), +(9300164, 2383032, 1, 1, 0, 20000), +(5120506, 4010006, 1, 1, 0, 7000), +(9300164, 4010006, 1, 1, 0, 7000), +(5120506, 4020008, 1, 1, 0, 7000), +(9300164, 4020008, 1, 1, 0, 7000), +(5120506, 1412007, 1, 1, 0, 700), +(9300164, 1412007, 1, 1, 0, 700), +(5120506, 1002092, 1, 1, 0, 700), +(9300164, 1002092, 1, 1, 0, 700), +(5120506, 1402006, 1, 1, 0, 700), +(9300164, 1402006, 1, 1, 0, 700), +(5120506, 1442010, 1, 1, 0, 700), +(9300164, 1442010, 1, 1, 0, 700), +(5120506, 1040086, 1, 1, 0, 700), +(9300164, 1040086, 1, 1, 0, 700), +(5120506, 1452004, 1, 1, 0, 700), +(9300164, 1452004, 1, 1, 0, 700), +(5120506, 1002168, 1, 1, 0, 700), +(9300164, 1002168, 1, 1, 0, 700), +(5120506, 1050059, 1, 1, 0, 700), +(9300164, 1050059, 1, 1, 0, 700), +(5120506, 1040096, 1, 1, 0, 700), +(9300164, 1040096, 1, 1, 0, 700), +(5120506, 1040095, 1, 1, 0, 700), +(9300164, 1040095, 1, 1, 0, 700), +(5120506, 1060084, 1, 1, 0, 700), +(9300164, 1060084, 1, 1, 0, 700), +(5120506, 1492007, 1, 1, 0, 700), +(9300164, 1492007, 1, 1, 0, 700), +(5220000, 2000002, 1, 4, 0, 40000), +(5220001, 2000002, 1, 4, 0, 40000), +(9300190, 2000002, 1, 4, 0, 40000), +(9500309, 2000002, 1, 4, 0, 40000), +(9500342, 2000002, 1, 4, 0, 40000), +(5220000, 2000003, 1, 4, 0, 40000), +(5220001, 2000003, 1, 4, 0, 40000), +(9300190, 2000003, 1, 4, 0, 40000), +(9500309, 2000003, 1, 4, 0, 40000), +(9500342, 2000003, 1, 4, 0, 40000), +(5220000, 2002000, 1, 4, 0, 10000), +(5220001, 2002000, 1, 4, 0, 10000), +(9300190, 2002000, 1, 4, 0, 10000), +(9500309, 2002000, 1, 4, 0, 10000), +(9500342, 2002000, 1, 4, 0, 10000), +(5220000, 2001001, 1, 4, 0, 10000), +(5220001, 2001001, 1, 4, 0, 10000), +(9300190, 2001001, 1, 4, 0, 10000), +(9500309, 2001001, 1, 4, 0, 10000), +(9500342, 2001001, 1, 4, 0, 10000), +(5220000, 2041022, 1, 4, 0, 10000), +(5220001, 2041022, 1, 4, 0, 10000), +(9300190, 2041022, 1, 4, 0, 10000), +(9500309, 2041022, 1, 4, 0, 10000), +(9500342, 2041022, 1, 4, 0, 10000), +(5220000, 2040004, 1, 4, 0, 10000), +(5220001, 2040004, 1, 4, 0, 10000), +(9300190, 2040004, 1, 4, 0, 10000), +(9500309, 2040004, 1, 4, 0, 10000), +(9500342, 2040004, 1, 4, 0, 10000), +(5220000, 2040513, 1, 4, 0, 10000), +(5220001, 2040513, 1, 4, 0, 10000), +(9300190, 2040513, 1, 4, 0, 10000), +(9500309, 2040513, 1, 4, 0, 10000), +(9500342, 2040513, 1, 4, 0, 10000), +(5220000, 2040902, 1, 4, 0, 10000), +(5220001, 2040902, 1, 4, 0, 10000), +(9300190, 2040902, 1, 4, 0, 10000), +(9500309, 2040902, 1, 4, 0, 10000), +(9500342, 2040902, 1, 4, 0, 10000), +(5220000, 2048001, 1, 4, 0, 10000), +(5220001, 2048001, 1, 4, 0, 10000), +(9300190, 2048001, 1, 4, 0, 10000), +(9500309, 2048001, 1, 4, 0, 10000), +(9500342, 2048001, 1, 4, 0, 10000), +(5220000, 2040704, 1, 4, 0, 10000), +(5220001, 2040704, 1, 4, 0, 10000), +(9300190, 2040704, 1, 4, 0, 10000), +(9500309, 2040704, 1, 4, 0, 10000), +(9500342, 2040704, 1, 4, 0, 10000), +(5220000, 2044701, 1, 4, 0, 10000), +(5220001, 2044701, 1, 4, 0, 10000), +(9300190, 2044701, 1, 4, 0, 10000), +(9500309, 2044701, 1, 4, 0, 10000), +(9500342, 2044701, 1, 4, 0, 10000), +(5220000, 2040804, 1, 4, 0, 10000), +(5220001, 2040804, 1, 4, 0, 10000), +(9300190, 2040804, 1, 4, 0, 10000), +(9500309, 2040804, 1, 4, 0, 10000), +(9500342, 2040804, 1, 4, 0, 10000), +(5220000, 2040702, 1, 4, 0, 10000), +(5220001, 2040702, 1, 4, 0, 10000), +(9300190, 2040702, 1, 4, 0, 10000), +(9500309, 2040702, 1, 4, 0, 10000), +(9500342, 2040702, 1, 4, 0, 10000), +(5220000, 2043301, 1, 4, 0, 10000), +(5220001, 2043301, 1, 4, 0, 10000), +(9300190, 2043301, 1, 4, 0, 10000), +(9500309, 2043301, 1, 4, 0, 10000), +(9500342, 2043301, 1, 4, 0, 10000), +(5220000, 2044601, 1, 4, 0, 10000), +(5220001, 2044601, 1, 4, 0, 10000), +(9300190, 2044601, 1, 4, 0, 10000), +(9500309, 2044601, 1, 4, 0, 10000), +(9500342, 2044601, 1, 4, 0, 10000), +(5220000, 2041013, 1, 4, 0, 10000), +(5220001, 2041013, 1, 4, 0, 10000), +(9300190, 2041013, 1, 4, 0, 10000), +(9500309, 2041013, 1, 4, 0, 10000), +(9500342, 2041013, 1, 4, 0, 10000), +(5220000, 2041046, 1, 4, 0, 10000), +(5220001, 2041046, 1, 4, 0, 10000), +(9300190, 2041046, 1, 4, 0, 10000), +(9500309, 2041046, 1, 4, 0, 10000), +(9500342, 2041046, 1, 4, 0, 10000), +(5220000, 2043002, 1, 4, 0, 10000), +(5220001, 2043002, 1, 4, 0, 10000), +(9300190, 2043002, 1, 4, 0, 10000), +(9500309, 2043002, 1, 4, 0, 10000), +(9500342, 2043002, 1, 4, 0, 10000), +(5220000, 2388003, 1, 4, 0, 20000), +(5220001, 2388003, 1, 4, 0, 20000), +(9300190, 2388003, 1, 4, 0, 20000), +(9500309, 2388003, 1, 4, 0, 20000), +(9500342, 2388003, 1, 4, 0, 20000), +(5220000, 4010003, 1, 1, 0, 7000), +(5220001, 4010003, 1, 1, 0, 7000), +(9300190, 4010003, 1, 1, 0, 7000), +(9500309, 4010003, 1, 1, 0, 7000), +(9500342, 4010003, 1, 1, 0, 7000), +(5220000, 4020005, 1, 1, 0, 7000), +(5220001, 4020005, 1, 1, 0, 7000), +(9300190, 4020005, 1, 1, 0, 7000), +(9500309, 4020005, 1, 1, 0, 7000), +(9500342, 4020005, 1, 1, 0, 7000), +(5220000, 1002029, 1, 1, 0, 40000), +(5220001, 1002029, 1, 1, 0, 40000), +(9300190, 1002029, 1, 1, 0, 40000), +(9500309, 1002029, 1, 1, 0, 40000), +(9500342, 1002029, 1, 1, 0, 40000), +(5220000, 1040093, 1, 1, 0, 40000), +(5220001, 1040093, 1, 1, 0, 40000), +(9300190, 1040093, 1, 1, 0, 40000), +(9500309, 1040093, 1, 1, 0, 40000), +(9500342, 1040093, 1, 1, 0, 40000), +(5220000, 1082061, 1, 1, 0, 40000), +(5220001, 1082061, 1, 1, 0, 40000), +(9300190, 1082061, 1, 1, 0, 40000), +(9500309, 1082061, 1, 1, 0, 40000), +(9500342, 1082061, 1, 1, 0, 40000), +(5220000, 1072149, 1, 1, 0, 40000), +(5220001, 1072149, 1, 1, 0, 40000), +(9300190, 1072149, 1, 1, 0, 40000), +(9500309, 1072149, 1, 1, 0, 40000), +(9500342, 1072149, 1, 1, 0, 40000), +(5220000, 1050056, 1, 1, 0, 40000), +(5220001, 1050056, 1, 1, 0, 40000), +(9300190, 1050056, 1, 1, 0, 40000), +(9500309, 1050056, 1, 1, 0, 40000), +(9500342, 1050056, 1, 1, 0, 40000), +(5220000, 1051047, 1, 1, 0, 40000), +(5220001, 1051047, 1, 1, 0, 40000), +(9300190, 1051047, 1, 1, 0, 40000), +(9500309, 1051047, 1, 1, 0, 40000), +(9500342, 1051047, 1, 1, 0, 40000), +(5220000, 1002246, 1, 1, 0, 40000), +(5220001, 1002246, 1, 1, 0, 40000), +(9300190, 1002246, 1, 1, 0, 40000), +(9500309, 1002246, 1, 1, 0, 40000), +(9500342, 1002246, 1, 1, 0, 40000), +(5220000, 1041092, 1, 1, 0, 40000), +(5220001, 1041092, 1, 1, 0, 40000), +(9300190, 1041092, 1, 1, 0, 40000), +(9500309, 1041092, 1, 1, 0, 40000), +(9500342, 1041092, 1, 1, 0, 40000), +(5220000, 1082088, 1, 1, 0, 40000), +(5220001, 1082088, 1, 1, 0, 40000), +(9300190, 1082088, 1, 1, 0, 40000), +(9500309, 1082088, 1, 1, 0, 40000), +(9500342, 1082088, 1, 1, 0, 40000), +(5220000, 1072136, 1, 1, 0, 40000), +(5220001, 1072136, 1, 1, 0, 40000), +(9300190, 1072136, 1, 1, 0, 40000), +(9500309, 1072136, 1, 1, 0, 40000), +(9500342, 1072136, 1, 1, 0, 40000), +(5220000, 1002270, 1, 1, 0, 40000), +(5220001, 1002270, 1, 1, 0, 40000), +(9300190, 1002270, 1, 1, 0, 40000), +(9500309, 1002270, 1, 1, 0, 40000), +(9500342, 1002270, 1, 1, 0, 40000), +(5220000, 1050060, 1, 1, 0, 40000), +(5220001, 1050060, 1, 1, 0, 40000), +(9300190, 1050060, 1, 1, 0, 40000), +(9500309, 1050060, 1, 1, 0, 40000), +(9500342, 1050060, 1, 1, 0, 40000), +(5220000, 1051041, 1, 1, 0, 40000), +(5220001, 1051041, 1, 1, 0, 40000), +(9300190, 1051041, 1, 1, 0, 40000), +(9500309, 1051041, 1, 1, 0, 40000), +(9500342, 1051041, 1, 1, 0, 40000), +(5220000, 1082091, 1, 1, 0, 40000), +(5220001, 1082091, 1, 1, 0, 40000), +(9300190, 1082091, 1, 1, 0, 40000), +(9500309, 1082091, 1, 1, 0, 40000), +(9500342, 1082091, 1, 1, 0, 40000), +(5220000, 1072144, 1, 1, 0, 40000), +(5220001, 1072144, 1, 1, 0, 40000), +(9300190, 1072144, 1, 1, 0, 40000), +(9500309, 1072144, 1, 1, 0, 40000), +(9500342, 1072144, 1, 1, 0, 40000), +(5220000, 1002249, 1, 1, 0, 40000), +(5220001, 1002249, 1, 1, 0, 40000), +(9300190, 1002249, 1, 1, 0, 40000), +(9500309, 1002249, 1, 1, 0, 40000), +(9500342, 1002249, 1, 1, 0, 40000), +(5220000, 1040100, 1, 1, 0, 40000), +(5220001, 1040100, 1, 1, 0, 40000), +(9300190, 1040100, 1, 1, 0, 40000), +(9500309, 1040100, 1, 1, 0, 40000), +(9500342, 1040100, 1, 1, 0, 40000), +(5220000, 1041095, 1, 1, 0, 40000), +(5220001, 1041095, 1, 1, 0, 40000), +(9300190, 1041095, 1, 1, 0, 40000), +(9500309, 1041095, 1, 1, 0, 40000), +(9500342, 1041095, 1, 1, 0, 40000), +(5220000, 1082094, 1, 1, 0, 40000), +(5220001, 1082094, 1, 1, 0, 40000), +(9300190, 1082094, 1, 1, 0, 40000), +(9500309, 1082094, 1, 1, 0, 40000), +(9500342, 1082094, 1, 1, 0, 40000), +(5220000, 1072152, 1, 1, 0, 40000), +(5220001, 1072152, 1, 1, 0, 40000), +(9300190, 1072152, 1, 1, 0, 40000), +(9500309, 1072152, 1, 1, 0, 40000), +(9500342, 1072152, 1, 1, 0, 40000), +(5220000, 1052119, 1, 1, 0, 40000), +(5220001, 1052119, 1, 1, 0, 40000), +(9300190, 1052119, 1, 1, 0, 40000), +(9500309, 1052119, 1, 1, 0, 40000), +(9500342, 1052119, 1, 1, 0, 40000), +(5220000, 1002634, 1, 1, 0, 40000), +(5220001, 1002634, 1, 1, 0, 40000), +(9300190, 1002634, 1, 1, 0, 40000), +(9500309, 1002634, 1, 1, 0, 40000), +(9500342, 1002634, 1, 1, 0, 40000), +(5220000, 1082201, 1, 1, 0, 40000), +(5220001, 1082201, 1, 1, 0, 40000), +(9300190, 1082201, 1, 1, 0, 40000), +(9500309, 1082201, 1, 1, 0, 40000), +(9500342, 1082201, 1, 1, 0, 40000), +(5220000, 1072306, 1, 1, 0, 40000), +(5220001, 1072306, 1, 1, 0, 40000), +(9300190, 1072306, 1, 1, 0, 40000), +(9500309, 1072306, 1, 1, 0, 40000), +(9500342, 1072306, 1, 1, 0, 40000), +(5250000, 4000437, 1, 1, 0, 200000), +(5250000, 4130014, 1, 1, 0, 3000), +(5250000, 4130003, 1, 1, 0, 3000), +(5250000, 2000002, 1, 1, 0, 40000), +(5250000, 2000003, 1, 1, 0, 40000), +(5250000, 2044313, 1, 1, 0, 750), +(5250000, 2383057, 1, 1, 0, 20000), +(5250000, 4010002, 1, 1, 0, 7000), +(5250000, 4020002, 1, 1, 0, 7000), +(5250000, 1082010, 1, 1, 0, 700), +(5250000, 1072143, 1, 1, 0, 700), +(5250000, 1452004, 1, 1, 0, 700), +(5250000, 1002208, 1, 1, 0, 700), +(5250000, 1052116, 1, 1, 0, 700), +(9400204, 4130005, 1, 1, 0, 3000), +(7120103, 4130005, 1, 1, 0, 3000), +(9300384, 4130005, 1, 1, 0, 3000), +(9400204, 4131004, 1, 1, 0, 3000), +(7120103, 4131004, 1, 1, 0, 3000), +(9300384, 4131004, 1, 1, 0, 3000), +(9400204, 2060003, 10, 50, 0, 10000), +(7120103, 2060003, 10, 50, 0, 10000), +(9300384, 2060003, 10, 50, 0, 10000), +(9400204, 2001000, 1, 1, 0, 10000), +(7120103, 2001000, 1, 1, 0, 10000), +(9300384, 2001000, 1, 1, 0, 10000), +(9400204, 2002001, 1, 1, 0, 10000), +(7120103, 2002001, 1, 1, 0, 10000), +(9300384, 2002001, 1, 1, 0, 10000), +(9400204, 2040409, 1, 1, 0, 750), +(7120103, 2040409, 1, 1, 0, 750), +(9300384, 2040409, 1, 1, 0, 750), +(9400204, 2044209, 1, 1, 0, 750), +(7120103, 2044209, 1, 1, 0, 750), +(9300384, 2044209, 1, 1, 0, 750), +(9400204, 2044608, 1, 1, 0, 750), +(7120103, 2044608, 1, 1, 0, 750), +(9300384, 2044608, 1, 1, 0, 750), +(9400204, 4010005, 1, 1, 0, 7000), +(7120103, 4010005, 1, 1, 0, 7000), +(9300384, 4010005, 1, 1, 0, 7000), +(9400204, 4004000, 1, 1, 0, 3000), +(7120103, 4004000, 1, 1, 0, 3000), +(9300384, 4004000, 1, 1, 0, 3000), +(9400204, 1032013, 1, 1, 0, 700), +(7120103, 1032013, 1, 1, 0, 700), +(9300384, 1032013, 1, 1, 0, 700), +(9400204, 1102012, 1, 1, 0, 700), +(7120103, 1102012, 1, 1, 0, 700), +(9300384, 1102012, 1, 1, 0, 700), +(9400204, 1032032, 1, 1, 0, 700), +(7120103, 1032032, 1, 1, 0, 700), +(9300384, 1032032, 1, 1, 0, 700), +(9400204, 1412003, 1, 1, 0, 700), +(7120103, 1412003, 1, 1, 0, 700), +(9300384, 1412003, 1, 1, 0, 700), +(9400204, 1002215, 1, 1, 0, 700), +(7120103, 1002215, 1, 1, 0, 700), +(9300384, 1002215, 1, 1, 0, 700), +(9400204, 1452023, 1, 1, 0, 700), +(7120103, 1452023, 1, 1, 0, 700), +(9300384, 1452023, 1, 1, 0, 700), +(9400204, 1072130, 1, 1, 0, 700), +(7120103, 1072130, 1, 1, 0, 700), +(9300384, 1072130, 1, 1, 0, 700), +(9400204, 1072150, 1, 1, 0, 700), +(7120103, 1072150, 1, 1, 0, 700), +(9300384, 1072150, 1, 1, 0, 700), +(9400204, 1492007, 1, 1, 0, 700), +(7120103, 1492007, 1, 1, 0, 700), +(9300384, 1492007, 1, 1, 0, 700), +(5130105, 4000055, 1, 1, 0, 200000), +(5130105, 4003004, 1, 1, 0, 7000), +(5130105, 2000003, 1, 1, 0, 40000), +(5130105, 2000004, 1, 1, 0, 40000), +(5130105, 2043701, 1, 1, 0, 750), +(5130105, 2383033, 1, 1, 0, 20000), +(5130105, 4020004, 1, 1, 0, 7000), +(5130105, 4004002, 1, 1, 0, 3000), +(5130105, 4004004, 1, 1, 0, 3000), +(5130105, 1061085, 1, 1, 0, 700), +(5130105, 1382012, 1, 1, 0, 700), +(5130105, 1382006, 1, 1, 0, 700), +(5130105, 1072151, 1, 1, 0, 700), +(9300012, 4001023, 1, 1, 0, 7000), +(9300192, 4001023, 1, 1, 0, 7000), +(9500172, 4001023, 1, 1, 0, 7000), +(9500330, 4001023, 1, 1, 0, 7000), +(9500343, 4001023, 1, 1, 0, 7000), +(9300012, 2388004, 1, 4, 0, 20000), +(9300192, 2388004, 1, 4, 0, 20000), +(9500172, 2388004, 1, 4, 0, 20000), +(9500330, 2388004, 1, 4, 0, 20000), +(9500343, 2388004, 1, 4, 0, 20000), +(5100004, 4000172, 1, 1, 0, 200000), +(9300243, 4000172, 1, 1, 0, 200000), +(5100004, 4000021, 1, 1, 0, 200000), +(9300243, 4000021, 1, 1, 0, 200000), +(5100004, 4130003, 1, 1, 0, 3000), +(9300243, 4130003, 1, 1, 0, 3000), +(5100004, 4130005, 1, 1, 0, 3000), +(9300243, 4130005, 1, 1, 0, 3000), +(5100004, 4130011, 1, 1, 0, 3000), +(9300243, 4130011, 1, 1, 0, 3000), +(5100004, 2000003, 1, 1, 0, 40000), +(9300243, 2000003, 1, 1, 0, 40000), +(5100004, 2000004, 1, 1, 0, 40000), +(9300243, 2000004, 1, 1, 0, 40000), +(5100004, 2043701, 1, 1, 0, 750), +(9300243, 2043701, 1, 1, 0, 750), +(5100004, 2043801, 1, 1, 0, 750), +(9300243, 2043801, 1, 1, 0, 750), +(5100004, 2040420, 1, 1, 0, 750), +(9300243, 2040420, 1, 1, 0, 750), +(5100004, 4004002, 1, 1, 0, 3000), +(9300243, 4004002, 1, 1, 0, 3000), +(5100004, 4004004, 1, 1, 0, 3000), +(9300243, 4004004, 1, 1, 0, 3000), +(5100004, 4010005, 1, 1, 0, 7000), +(9300243, 4010005, 1, 1, 0, 7000), +(5100004, 4020004, 1, 1, 0, 7000), +(9300243, 4020004, 1, 1, 0, 7000), +(5100004, 1032021, 1, 1, 0, 700), +(9300243, 1032021, 1, 1, 0, 700), +(5100004, 1040087, 1, 1, 0, 700), +(9300243, 1040087, 1, 1, 0, 700), +(5100004, 1060076, 1, 1, 0, 700), +(9300243, 1060076, 1, 1, 0, 700), +(5100004, 1432006, 1, 1, 0, 700), +(9300243, 1432006, 1, 1, 0, 700), +(5100004, 1072134, 1, 1, 0, 700), +(9300243, 1072134, 1, 1, 0, 700), +(5100004, 1082081, 1, 1, 0, 700), +(9300243, 1082081, 1, 1, 0, 700), +(5100004, 1051046, 1, 1, 0, 700), +(9300243, 1051046, 1, 1, 0, 700), +(5100004, 1050058, 1, 1, 0, 700), +(9300243, 1050058, 1, 1, 0, 700), +(5100004, 1040099, 1, 1, 0, 700), +(9300243, 1040099, 1, 1, 0, 700), +(5100004, 1060088, 1, 1, 0, 700), +(9300243, 1060088, 1, 1, 0, 700), +(5100004, 1082066, 1, 1, 0, 700), +(9300243, 1082066, 1, 1, 0, 700), +(5100004, 1052119, 1, 1, 0, 700), +(9300243, 1052119, 1, 1, 0, 700), +(5120500, 4000283, 1, 1, 0, 200000), +(9300244, 4000283, 1, 1, 0, 200000), +(5120500, 1132001, 1, 1, 0, 700), +(9300244, 1132001, 1, 1, 0, 700), +(5120500, 4000021, 1, 1, 0, 200000), +(9300244, 4000021, 1, 1, 0, 200000), +(5120500, 4003005, 1, 1, 0, 7000), +(9300244, 4003005, 1, 1, 0, 7000), +(5120500, 4130000, 1, 1, 0, 3000), +(9300244, 4130000, 1, 1, 0, 3000), +(5120500, 4130021, 1, 1, 0, 3000), +(9300244, 4130021, 1, 1, 0, 3000), +(5120500, 4130009, 1, 1, 0, 3000), +(9300244, 4130009, 1, 1, 0, 3000), +(5120500, 2043801, 1, 1, 0, 750), +(9300244, 2043801, 1, 1, 0, 750), +(5120500, 2043701, 1, 1, 0, 750), +(9300244, 2043701, 1, 1, 0, 750), +(5120500, 2040515, 1, 1, 0, 750), +(9300244, 2040515, 1, 1, 0, 750), +(5120500, 2049101, 1, 1, 0, 400), +(9300244, 2049101, 1, 1, 0, 400), +(5120500, 2330002, 1, 1, 0, 400), +(9300244, 2330002, 1, 1, 0, 400), +(5120500, 2383035, 1, 1, 0, 20000), +(9300244, 2383035, 1, 1, 0, 20000), +(5120500, 2040033, 1, 1, 0, 750), +(9300244, 2040033, 1, 1, 0, 750), +(5120500, 4020007, 1, 1, 0, 7000), +(9300244, 4020007, 1, 1, 0, 7000), +(5120500, 4020004, 1, 1, 0, 7000), +(9300244, 4020004, 1, 1, 0, 7000), +(5120500, 4004004, 1, 1, 0, 3000), +(9300244, 4004004, 1, 1, 0, 3000), +(5120500, 4004002, 1, 1, 0, 3000), +(9300244, 4004002, 1, 1, 0, 3000), +(5120500, 4010005, 1, 1, 0, 7000), +(9300244, 4010005, 1, 1, 0, 7000), +(5120500, 1032021, 1, 1, 0, 700), +(9300244, 1032021, 1, 1, 0, 700), +(5120500, 1432006, 1, 1, 0, 700), +(9300244, 1432006, 1, 1, 0, 700), +(5120500, 1072134, 1, 1, 0, 700), +(9300244, 1072134, 1, 1, 0, 700), +(5120500, 1082081, 1, 1, 0, 700), +(9300244, 1082081, 1, 1, 0, 700), +(5120500, 1050058, 1, 1, 0, 700), +(9300244, 1050058, 1, 1, 0, 700), +(5120500, 1040099, 1, 1, 0, 700), +(9300244, 1040099, 1, 1, 0, 700), +(5120500, 1060088, 1, 1, 0, 700), +(9300244, 1060088, 1, 1, 0, 700), +(5120500, 1082066, 1, 1, 0, 700), +(9300244, 1082066, 1, 1, 0, 700), +(5120500, 1082201, 1, 1, 0, 700), +(9300244, 1082201, 1, 1, 0, 700), +(9420530, 2040504, 1, 1, 0, 750), +(9420530, 2000004, 1, 1, 0, 40000), +(9420530, 4020007, 1, 1, 0, 7000), +(9420530, 4010004, 1, 1, 0, 7000), +(9420530, 1002212, 1, 1, 0, 700), +(9420530, 1472013, 1, 1, 0, 700), +(9420530, 1051006, 1, 1, 0, 700), +(5130107, 4031218, 1, 1, 0, 7000), +(9400504, 4031218, 1, 1, 0, 7000), +(5130107, 2000002, 1, 1, 0, 40000), +(9400504, 2000002, 1, 1, 0, 40000), +(5130107, 2000003, 1, 1, 0, 40000), +(9400504, 2000003, 1, 1, 0, 40000), +(5130107, 2000004, 1, 1, 0, 40000), +(9400504, 2000004, 1, 1, 0, 40000), +(5130107, 2040602, 1, 1, 0, 750), +(9400504, 2040602, 1, 1, 0, 750), +(5130107, 2383037, 1, 1, 0, 20000), +(9400504, 2383037, 1, 1, 0, 20000), +(5130107, 4010000, 1, 1, 0, 7000), +(9400504, 4010000, 1, 1, 0, 7000), +(5130107, 4020006, 1, 1, 0, 7000), +(9400504, 4020006, 1, 1, 0, 7000), +(5130107, 4004000, 1, 1, 0, 3000), +(9400504, 4004000, 1, 1, 0, 3000), +(5130107, 1032019, 1, 1, 0, 700), +(9400504, 1032019, 1, 1, 0, 700), +(5130107, 1102016, 1, 1, 0, 700), +(9400504, 1102016, 1, 1, 0, 700), +(5130107, 1312008, 1, 1, 0, 700), +(9400504, 1312008, 1, 1, 0, 700), +(5130107, 1040092, 1, 1, 0, 700), +(9400504, 1040092, 1, 1, 0, 700), +(5130107, 1060081, 1, 1, 0, 700), +(9400504, 1060081, 1, 1, 0, 700), +(5130107, 1322016, 1, 1, 0, 700), +(9400504, 1322016, 1, 1, 0, 700), +(5130107, 1082062, 1, 1, 0, 700), +(9400504, 1082062, 1, 1, 0, 700), +(5130107, 1072117, 1, 1, 0, 700), +(9400504, 1072117, 1, 1, 0, 700), +(5130107, 1002244, 1, 1, 0, 700), +(9400504, 1002244, 1, 1, 0, 700), +(5130107, 1372007, 1, 1, 0, 700), +(9400504, 1372007, 1, 1, 0, 700), +(5130107, 1082071, 1, 1, 0, 700), +(9400504, 1082071, 1, 1, 0, 700), +(5130107, 1051039, 1, 1, 0, 700), +(9400504, 1051039, 1, 1, 0, 700), +(5130107, 1002269, 1, 1, 0, 700), +(9400504, 1002269, 1, 1, 0, 700), +(5130107, 1002247, 1, 1, 0, 700), +(9400504, 1002247, 1, 1, 0, 700), +(5130107, 1072109, 1, 1, 0, 700), +(9400504, 1072109, 1, 1, 0, 700), +(5130107, 1040094, 1, 1, 0, 700), +(9400504, 1040094, 1, 1, 0, 700), +(5130107, 1060083, 1, 1, 0, 700), +(9400504, 1060083, 1, 1, 0, 700), +(5130107, 1482008, 1, 1, 0, 700), +(9400504, 1482008, 1, 1, 0, 700), +(5130108, 4031218, 1, 1, 0, 7000), +(5130108, 2000002, 1, 1, 0, 40000), +(5130108, 2000003, 1, 1, 0, 40000), +(5130108, 2000004, 1, 1, 0, 40000), +(5130108, 2040402, 1, 1, 0, 750), +(5130108, 4010001, 1, 1, 0, 7000), +(5130108, 4020004, 1, 1, 0, 7000), +(5130108, 4004002, 1, 1, 0, 3000), +(5130108, 1102017, 1, 1, 0, 700), +(5130108, 1032018, 1, 1, 0, 700), +(5130108, 1092011, 1, 1, 0, 700), +(5130108, 1002084, 1, 1, 0, 700), +(5130108, 1041084, 1, 1, 0, 700), +(5130108, 1051046, 1, 1, 0, 700), +(5130108, 1002155, 1, 1, 0, 700), +(5130108, 1002243, 1, 1, 0, 700), +(5130108, 1072141, 1, 1, 0, 700), +(5130108, 1002169, 1, 1, 0, 700), +(5130108, 1051043, 1, 1, 0, 700), +(5130108, 1051063, 1, 1, 0, 700), +(5130108, 1072130, 1, 1, 0, 700), +(5130108, 1082094, 1, 1, 0, 700), +(5130108, 1332011, 1, 1, 0, 700), +(5130108, 1041100, 1, 1, 0, 700), +(5130108, 1061099, 1, 1, 0, 700), +(5150001, 4000206, 1, 1, 0, 200000), +(5150001, 2000003, 1, 1, 0, 40000), +(5150001, 2000004, 1, 1, 0, 40000), +(5150001, 2043801, 1, 1, 0, 750), +(5150001, 2043701, 1, 1, 0, 750), +(5150001, 2040804, 1, 1, 0, 750), +(5150001, 2044701, 1, 1, 0, 750), +(5150001, 2043802, 1, 1, 0, 750), +(5150001, 4010005, 1, 1, 0, 7000), +(5150001, 4020004, 1, 1, 0, 7000), +(5150001, 1040092, 1, 1, 0, 700), +(5150001, 1060081, 1, 1, 0, 700), +(5150001, 1002030, 1, 1, 0, 700), +(5150001, 1072132, 1, 1, 0, 700), +(5150001, 1051045, 1, 1, 0, 700), +(5150001, 1072140, 1, 1, 0, 700), +(5150001, 1002252, 1, 1, 0, 700), +(5150001, 1050059, 1, 1, 0, 700), +(5150001, 1002287, 1, 1, 0, 700), +(5150001, 1072122, 1, 1, 0, 700), +(5150001, 1040098, 1, 1, 0, 700), +(5150001, 1060087, 1, 1, 0, 700), +(5150001, 1002281, 1, 1, 0, 700), +(5150001, 1072128, 1, 1, 0, 700), +(5250002, 4000440, 1, 1, 0, 200000), +(5250002, 4130014, 1, 1, 0, 3000), +(5250002, 2000002, 1, 1, 0, 40000), +(5250002, 2000003, 1, 1, 0, 40000), +(5250002, 2044804, 1, 1, 0, 750), +(5250002, 2383058, 1, 1, 0, 20000), +(5250002, 4010001, 1, 1, 0, 7000), +(5250002, 4020003, 1, 1, 0, 7000), +(5250002, 1040092, 1, 1, 0, 700), +(5250002, 1041093, 1, 1, 0, 700), +(5250002, 1082087, 1, 1, 0, 700), +(5250002, 1072145, 1, 1, 0, 700), +(5250002, 1332015, 1, 1, 0, 700), +(5250002, 1002634, 1, 1, 0, 700), +(5140000, 4000021, 1, 1, 0, 200000), +(9200019, 4000021, 1, 1, 0, 200000), +(5140000, 2000003, 1, 1, 0, 40000), +(9200019, 2000003, 1, 1, 0, 40000), +(5140000, 2000004, 1, 1, 0, 40000), +(9200019, 2000004, 1, 1, 0, 40000), +(5140000, 2040901, 1, 1, 0, 750), +(9200019, 2040901, 1, 1, 0, 750), +(5140000, 4006001, 1, 1, 0, 7000), +(9200019, 4006001, 1, 1, 0, 7000), +(5140000, 2070004, 1, 1, 0, 400), +(9200019, 2070004, 1, 1, 0, 400), +(5140000, 2020028, 1, 1, 0, 3000), +(9200019, 2020028, 1, 1, 0, 3000), +(5140000, 2383040, 1, 1, 0, 20000), +(9200019, 2383040, 1, 1, 0, 20000), +(5140000, 4020000, 1, 1, 0, 7000), +(9200019, 4020000, 1, 1, 0, 7000), +(5140000, 4020007, 1, 1, 0, 7000), +(9200019, 4020007, 1, 1, 0, 7000), +(5140000, 4004001, 1, 1, 0, 3000), +(9200019, 4004001, 1, 1, 0, 3000), +(5140000, 1102021, 1, 1, 0, 700), +(9200019, 1102021, 1, 1, 0, 700), +(5140000, 1032014, 1, 1, 0, 700), +(9200019, 1032014, 1, 1, 0, 700), +(5140000, 1002029, 1, 1, 0, 700), +(9200019, 1002029, 1, 1, 0, 700), +(5140000, 1041097, 1, 1, 0, 700), +(9200019, 1041097, 1, 1, 0, 700), +(5140000, 1061096, 1, 1, 0, 700), +(9200019, 1061096, 1, 1, 0, 700), +(5140000, 1072134, 1, 1, 0, 700), +(9200019, 1072134, 1, 1, 0, 700), +(5140000, 1422008, 1, 1, 0, 700), +(9200019, 1422008, 1, 1, 0, 700), +(5140000, 1412007, 1, 1, 0, 700), +(9200019, 1412007, 1, 1, 0, 700), +(5140000, 1050053, 1, 1, 0, 700), +(9200019, 1050053, 1, 1, 0, 700), +(5140000, 1072114, 1, 1, 0, 700), +(9200019, 1072114, 1, 1, 0, 700), +(5140000, 1050051, 1, 1, 0, 700), +(9200019, 1050051, 1, 1, 0, 700), +(5140000, 1050052, 1, 1, 0, 700), +(9200019, 1050052, 1, 1, 0, 700), +(5140000, 1082072, 1, 1, 0, 700), +(9200019, 1082072, 1, 1, 0, 700), +(5140000, 1050059, 1, 1, 0, 700), +(9200019, 1050059, 1, 1, 0, 700), +(5140000, 1041077, 1, 1, 0, 700), +(9200019, 1041077, 1, 1, 0, 700), +(5140000, 1061076, 1, 1, 0, 700), +(9200019, 1061076, 1, 1, 0, 700), +(5140000, 1472014, 1, 1, 0, 700), +(9200019, 1472014, 1, 1, 0, 700), +(5140000, 1072151, 1, 1, 0, 700), +(9200019, 1072151, 1, 1, 0, 700), +(5140000, 1060089, 1, 1, 0, 700), +(9200019, 1060089, 1, 1, 0, 700), +(5140000, 1082066, 1, 1, 0, 700), +(9200019, 1082066, 1, 1, 0, 700), +(5140000, 1002634, 1, 1, 0, 700), +(9200019, 1002634, 1, 1, 0, 700), +(5130102, 4000025, 1, 1, 0, 200000), +(5130102, 4001005, 1, 1, 0, 7000), +(5130102, 2000003, 1, 1, 0, 40000), +(5130102, 2000004, 1, 1, 0, 40000), +(5130102, 2070004, 1, 1, 0, 400), +(5130102, 2044001, 1, 1, 0, 750), +(5130102, 2044101, 1, 1, 0, 750), +(5130102, 2044201, 1, 1, 0, 750), +(5130102, 4020008, 1, 1, 0, 7000), +(5130102, 4004004, 1, 1, 0, 3000), +(5130102, 1102018, 1, 1, 0, 700), +(5130102, 1032021, 1, 1, 0, 700), +(5130102, 1040091, 1, 1, 0, 700), +(5130102, 1060080, 1, 1, 0, 700), +(5130102, 1002022, 1, 1, 0, 700), +(5130102, 1040085, 1, 1, 0, 700), +(5130102, 1060074, 1, 1, 0, 700), +(5130102, 1082009, 1, 1, 0, 700), +(5130102, 1072139, 1, 1, 0, 700), +(5130102, 1082088, 1, 1, 0, 700), +(5130102, 1382007, 1, 1, 0, 700), +(5130102, 1050039, 1, 1, 0, 700), +(5130102, 1002214, 1, 1, 0, 700), +(5130102, 1050059, 1, 1, 0, 700), +(5130102, 1072120, 1, 1, 0, 700), +(5130102, 1002249, 1, 1, 0, 700), +(5130102, 1002209, 1, 1, 0, 700), +(5130102, 1041074, 1, 1, 0, 700), +(5130102, 1061069, 1, 1, 0, 700), +(5130102, 1492008, 1, 1, 0, 700), +(5120505, 4000288, 1, 1, 0, 200000), +(5120505, 4000021, 1, 1, 0, 200000), +(5120505, 4003005, 1, 1, 0, 7000), +(5120505, 2000002, 1, 1, 0, 40000), +(5120505, 2000003, 1, 1, 0, 40000), +(5120505, 2040804, 1, 1, 0, 750), +(5120505, 2383041, 1, 1, 0, 20000), +(5120505, 4010006, 1, 1, 0, 7000), +(5120505, 1002029, 1, 1, 0, 700), +(5120505, 1072146, 1, 1, 0, 700), +(5120505, 1051037, 1, 1, 0, 700), +(5120505, 1002248, 1, 1, 0, 700), +(5120505, 1052119, 1, 1, 0, 700), +(9420509, 4000380, 1, 1, 0, 200000), +(9420509, 4001005, 1, 1, 0, 7000), +(9420509, 2000004, 1, 1, 0, 40000), +(9420509, 2070004, 1, 1, 0, 400), +(9420509, 2044201, 1, 1, 0, 750), +(9420509, 2020028, 1, 1, 0, 3000), +(9420509, 4010006, 1, 1, 0, 7000), +(9420509, 4020008, 1, 1, 0, 7000), +(9420509, 4004004, 1, 1, 0, 3000), +(9420509, 1060081, 1, 1, 0, 700), +(9420509, 1041093, 1, 1, 0, 700), +(9420509, 1051014, 1, 1, 0, 700), +(9420509, 1051001, 1, 1, 0, 700), +(9420509, 1402007, 1, 1, 0, 700), +(9420509, 1050037, 1, 1, 0, 700), +(9420509, 1050036, 1, 1, 0, 700), +(9420509, 1050039, 1, 1, 0, 700), +(9420509, 1050059, 1, 1, 0, 700), +(9420509, 1050060, 1, 1, 0, 700), +(9420509, 1040075, 1, 1, 0, 700), +(9420509, 1060064, 1, 1, 0, 700), +(9420509, 1051039, 1, 1, 0, 700), +(9420509, 1002210, 1, 1, 0, 700), +(5110302, 4000365, 1, 1, 0, 200000), +(9300148, 4000365, 1, 1, 0, 200000), +(9300150, 4000365, 1, 1, 0, 200000), +(5110302, 2000004, 1, 1, 0, 40000), +(9300148, 2000004, 1, 1, 0, 40000), +(9300150, 2000004, 1, 1, 0, 40000), +(5110302, 2000002, 1, 1, 0, 40000), +(9300148, 2000002, 1, 1, 0, 40000), +(9300150, 2000002, 1, 1, 0, 40000), +(5110302, 2000003, 1, 1, 0, 40000), +(9300148, 2000003, 1, 1, 0, 40000), +(9300150, 2000003, 1, 1, 0, 40000), +(5110302, 2040804, 1, 1, 0, 750), +(9300148, 2040804, 1, 1, 0, 750), +(9300150, 2040804, 1, 1, 0, 750), +(5110302, 2040901, 1, 1, 0, 750), +(9300148, 2040901, 1, 1, 0, 750), +(9300150, 2040901, 1, 1, 0, 750), +(5110302, 2040923, 1, 1, 0, 750), +(9300148, 2040923, 1, 1, 0, 750), +(9300150, 2040923, 1, 1, 0, 750), +(5110302, 2043018, 1, 1, 0, 750), +(9300148, 2043018, 1, 1, 0, 750), +(9300150, 2043018, 1, 1, 0, 750), +(5110302, 2043116, 1, 1, 0, 750), +(9300148, 2043116, 1, 1, 0, 750), +(9300150, 2043116, 1, 1, 0, 750), +(5110302, 2383042, 1, 1, 0, 20000), +(9300148, 2383042, 1, 1, 0, 20000), +(9300150, 2383042, 1, 1, 0, 20000), +(5110302, 4010006, 1, 1, 0, 7000), +(9300148, 4010006, 1, 1, 0, 7000), +(9300150, 4010006, 1, 1, 0, 7000), +(5110302, 1002029, 1, 1, 0, 700), +(9300148, 1002029, 1, 1, 0, 700), +(9300150, 1002029, 1, 1, 0, 700), +(5110302, 1051037, 1, 1, 0, 700), +(9300148, 1051037, 1, 1, 0, 700), +(9300150, 1051037, 1, 1, 0, 700), +(5110302, 1002269, 1, 1, 0, 700), +(9300148, 1002269, 1, 1, 0, 700), +(9300150, 1002269, 1, 1, 0, 700), +(5110302, 1072146, 1, 1, 0, 700), +(9300148, 1072146, 1, 1, 0, 700), +(9300150, 1072146, 1, 1, 0, 700), +(5110302, 1041077, 1, 1, 0, 700), +(9300148, 1041077, 1, 1, 0, 700), +(9300150, 1041077, 1, 1, 0, 700), +(5110302, 1041079, 1, 1, 0, 700), +(9300148, 1041079, 1, 1, 0, 700), +(9300150, 1041079, 1, 1, 0, 700), +(5110302, 1061076, 1, 1, 0, 700), +(9300148, 1061076, 1, 1, 0, 700), +(9300150, 1061076, 1, 1, 0, 700), +(5110302, 1002248, 1, 1, 0, 700), +(9300148, 1002248, 1, 1, 0, 700), +(9300150, 1002248, 1, 1, 0, 700), +(5110302, 1082201, 1, 1, 0, 700), +(9300148, 1082201, 1, 1, 0, 700), +(9300150, 1082201, 1, 1, 0, 700), +(5150000, 4000177, 1, 1, 0, 200000), +(9400244, 4000177, 1, 1, 0, 200000), +(9500123, 4000177, 1, 1, 0, 200000), +(5150000, 2000002, 1, 1, 0, 40000), +(9400244, 2000002, 1, 1, 0, 40000), +(9500123, 2000002, 1, 1, 0, 40000), +(5150000, 2000003, 1, 1, 0, 40000), +(9400244, 2000003, 1, 1, 0, 40000), +(9500123, 2000003, 1, 1, 0, 40000), +(5150000, 2000004, 1, 1, 0, 40000), +(9400244, 2000004, 1, 1, 0, 40000), +(9500123, 2000004, 1, 1, 0, 40000), +(5150000, 2060000, 10, 50, 0, 10000), +(9400244, 2060000, 10, 50, 0, 10000), +(9500123, 2060000, 10, 50, 0, 10000), +(5150000, 2061000, 10, 50, 0, 10000), +(9400244, 2061000, 10, 50, 0, 10000), +(9500123, 2061000, 10, 50, 0, 10000), +(5150000, 2040804, 1, 1, 0, 750), +(9400244, 2040804, 1, 1, 0, 750), +(9500123, 2040804, 1, 1, 0, 750), +(5150000, 2040901, 1, 1, 0, 750), +(9400244, 2040901, 1, 1, 0, 750), +(9500123, 2040901, 1, 1, 0, 750), +(5150000, 2044501, 1, 1, 0, 750), +(9400244, 2044501, 1, 1, 0, 750), +(9500123, 2044501, 1, 1, 0, 750), +(5150000, 2070004, 1, 1, 0, 400), +(9400244, 2070004, 1, 1, 0, 400), +(9500123, 2070004, 1, 1, 0, 400), +(5150000, 2383043, 1, 1, 0, 20000), +(9400244, 2383043, 1, 1, 0, 20000), +(9500123, 2383043, 1, 1, 0, 20000), +(5150000, 4010006, 1, 1, 0, 7000), +(9400244, 4010006, 1, 1, 0, 7000), +(9500123, 4010006, 1, 1, 0, 7000), +(5150000, 4020008, 1, 1, 0, 7000), +(9400244, 4020008, 1, 1, 0, 7000), +(9500123, 4020008, 1, 1, 0, 7000), +(5150000, 1002029, 1, 1, 0, 700), +(9400244, 1002029, 1, 1, 0, 700), +(9500123, 1002029, 1, 1, 0, 700), +(5150000, 1040092, 1, 1, 0, 700), +(9400244, 1040092, 1, 1, 0, 700), +(9500123, 1040092, 1, 1, 0, 700), +(5150000, 1060081, 1, 1, 0, 700), +(9400244, 1060081, 1, 1, 0, 700), +(9500123, 1060081, 1, 1, 0, 700), +(5150000, 1060080, 1, 1, 0, 700), +(9400244, 1060080, 1, 1, 0, 700), +(9500123, 1060080, 1, 1, 0, 700), +(5150000, 1372014, 1, 1, 0, 700), +(9400244, 1372014, 1, 1, 0, 700), +(9500123, 1372014, 1, 1, 0, 700), +(5150000, 1082087, 1, 1, 0, 700), +(9400244, 1082087, 1, 1, 0, 700), +(9500123, 1082087, 1, 1, 0, 700), +(5150000, 1051037, 1, 1, 0, 700), +(9400244, 1051037, 1, 1, 0, 700), +(9500123, 1051037, 1, 1, 0, 700), +(5150000, 1002269, 1, 1, 0, 700), +(9400244, 1002269, 1, 1, 0, 700), +(9500123, 1002269, 1, 1, 0, 700), +(5150000, 1072146, 1, 1, 0, 700), +(9400244, 1072146, 1, 1, 0, 700), +(9500123, 1072146, 1, 1, 0, 700), +(5150000, 1002248, 1, 1, 0, 700), +(9400244, 1002248, 1, 1, 0, 700), +(9500123, 1002248, 1, 1, 0, 700), +(5150000, 1082066, 1, 1, 0, 700), +(9400244, 1082066, 1, 1, 0, 700), +(9500123, 1082066, 1, 1, 0, 700), +(5150000, 1041077, 1, 1, 0, 700), +(9400244, 1041077, 1, 1, 0, 700), +(9500123, 1041077, 1, 1, 0, 700), +(5150000, 1061076, 1, 1, 0, 700), +(9400244, 1061076, 1, 1, 0, 700), +(9500123, 1061076, 1, 1, 0, 700), +(5150000, 1002184, 1, 1, 0, 700), +(9400244, 1002184, 1, 1, 0, 700), +(9500123, 1002184, 1, 1, 0, 700), +(5150000, 1041094, 1, 1, 0, 700), +(9400244, 1041094, 1, 1, 0, 700), +(9500123, 1041094, 1, 1, 0, 700), +(5150000, 1061093, 1, 1, 0, 700), +(9400244, 1061093, 1, 1, 0, 700), +(9500123, 1061093, 1, 1, 0, 700), +(5150000, 1072306, 1, 1, 0, 700), +(9400244, 1072306, 1, 1, 0, 700), +(9500123, 1072306, 1, 1, 0, 700), +(5220003, 4000115, 1, 1, 0, 200000), +(9300193, 4000115, 1, 1, 0, 200000), +(9500310, 4000115, 1, 1, 0, 200000), +(9500344, 4000115, 1, 1, 0, 200000), +(5220003, 4000114, 1, 1, 0, 200000), +(9300193, 4000114, 1, 1, 0, 200000), +(9500310, 4000114, 1, 1, 0, 200000), +(9500344, 4000114, 1, 1, 0, 200000), +(5220003, 4000113, 1, 1, 0, 200000), +(9300193, 4000113, 1, 1, 0, 200000), +(9500310, 4000113, 1, 1, 0, 200000), +(9500344, 4000113, 1, 1, 0, 200000), +(5220003, 2000002, 1, 4, 0, 40000), +(9300193, 2000002, 1, 4, 0, 40000), +(9500310, 2000002, 1, 4, 0, 40000), +(9500344, 2000002, 1, 4, 0, 40000), +(5220003, 2000003, 1, 4, 0, 40000), +(9300193, 2000003, 1, 4, 0, 40000), +(9500310, 2000003, 1, 4, 0, 40000), +(9500344, 2000003, 1, 4, 0, 40000), +(5220003, 2002002, 1, 4, 0, 10000), +(9300193, 2002002, 1, 4, 0, 10000), +(9500310, 2002002, 1, 4, 0, 10000), +(9500344, 2002002, 1, 4, 0, 10000), +(5220003, 2002003, 1, 4, 0, 10000), +(9300193, 2002003, 1, 4, 0, 10000), +(9500310, 2002003, 1, 4, 0, 10000), +(9500344, 2002003, 1, 4, 0, 10000), +(5220003, 2060000, 10, 50, 0, 10000), +(9300193, 2060000, 10, 50, 0, 10000), +(9500310, 2060000, 10, 50, 0, 10000), +(9500344, 2060000, 10, 50, 0, 10000), +(5220003, 2061000, 10, 50, 0, 10000), +(9300193, 2061000, 10, 50, 0, 10000), +(9500310, 2061000, 10, 50, 0, 10000), +(9500344, 2061000, 10, 50, 0, 10000), +(5220003, 2040614, 1, 4, 0, 10000), +(9300193, 2040614, 1, 4, 0, 10000), +(9500310, 2040614, 1, 4, 0, 10000), +(9500344, 2040614, 1, 4, 0, 10000), +(5220003, 2044502, 1, 4, 0, 10000), +(9300193, 2044502, 1, 4, 0, 10000), +(9500310, 2044502, 1, 4, 0, 10000), +(9500344, 2044502, 1, 4, 0, 10000), +(5220003, 2041016, 1, 4, 0, 10000), +(9300193, 2041016, 1, 4, 0, 10000), +(9500310, 2041016, 1, 4, 0, 10000), +(9500344, 2041016, 1, 4, 0, 10000), +(5220003, 2041013, 1, 4, 0, 10000), +(9300193, 2041013, 1, 4, 0, 10000), +(9500310, 2041013, 1, 4, 0, 10000), +(9500344, 2041013, 1, 4, 0, 10000), +(5220003, 2041046, 1, 4, 0, 10000), +(9300193, 2041046, 1, 4, 0, 10000), +(9500310, 2041046, 1, 4, 0, 10000), +(9500344, 2041046, 1, 4, 0, 10000), +(5220003, 2040302, 1, 4, 0, 10000), +(9300193, 2040302, 1, 4, 0, 10000), +(9500310, 2040302, 1, 4, 0, 10000), +(9500344, 2040302, 1, 4, 0, 10000), +(5220003, 2040804, 1, 4, 0, 10000), +(9300193, 2040804, 1, 4, 0, 10000), +(9500310, 2040804, 1, 4, 0, 10000), +(9500344, 2040804, 1, 4, 0, 10000), +(5220003, 2040827, 1, 4, 0, 10000), +(9300193, 2040827, 1, 4, 0, 10000), +(9500310, 2040827, 1, 4, 0, 10000), +(9500344, 2040827, 1, 4, 0, 10000), +(5220003, 2044904, 1, 4, 0, 10000), +(9300193, 2044904, 1, 4, 0, 10000), +(9500310, 2044904, 1, 4, 0, 10000), +(9500344, 2044904, 1, 4, 0, 10000), +(5220003, 2044803, 1, 4, 0, 10000), +(9300193, 2044803, 1, 4, 0, 10000), +(9500310, 2044803, 1, 4, 0, 10000), +(9500344, 2044803, 1, 4, 0, 10000), +(5220003, 2043201, 1, 4, 0, 10000), +(9300193, 2043201, 1, 4, 0, 10000), +(9500310, 2043201, 1, 4, 0, 10000), +(9500344, 2043201, 1, 4, 0, 10000), +(5220003, 2040502, 1, 4, 0, 10000), +(9300193, 2040502, 1, 4, 0, 10000), +(9500310, 2040502, 1, 4, 0, 10000), +(9500344, 2040502, 1, 4, 0, 10000), +(5220003, 2040516, 1, 4, 0, 10000), +(9300193, 2040516, 1, 4, 0, 10000), +(9500310, 2040516, 1, 4, 0, 10000), +(9500344, 2040516, 1, 4, 0, 10000), +(5220003, 2040935, 1, 4, 0, 10000), +(9300193, 2040935, 1, 4, 0, 10000), +(9500310, 2040935, 1, 4, 0, 10000), +(9500344, 2040935, 1, 4, 0, 10000), +(5220003, 2040704, 1, 4, 0, 10000), +(9300193, 2040704, 1, 4, 0, 10000), +(9500310, 2040704, 1, 4, 0, 10000), +(9500344, 2040704, 1, 4, 0, 10000), +(5220003, 2044301, 1, 4, 0, 10000), +(9300193, 2044301, 1, 4, 0, 10000), +(9500310, 2044301, 1, 4, 0, 10000), +(9500344, 2044301, 1, 4, 0, 10000), +(5220003, 2040401, 1, 4, 0, 10000), +(9300193, 2040401, 1, 4, 0, 10000), +(9500310, 2040401, 1, 4, 0, 10000), +(9500344, 2040401, 1, 4, 0, 10000), +(5220003, 2044116, 1, 4, 0, 10000), +(9300193, 2044116, 1, 4, 0, 10000), +(9500310, 2044116, 1, 4, 0, 10000), +(9500344, 2044116, 1, 4, 0, 10000), +(5220003, 2044201, 1, 4, 0, 10000), +(9300193, 2044201, 1, 4, 0, 10000), +(9500310, 2044201, 1, 4, 0, 10000), +(9500344, 2044201, 1, 4, 0, 10000), +(5220003, 2043701, 1, 4, 0, 10000), +(9300193, 2043701, 1, 4, 0, 10000), +(9500310, 2043701, 1, 4, 0, 10000), +(9500344, 2043701, 1, 4, 0, 10000), +(5220003, 2388005, 1, 4, 0, 20000), +(9300193, 2388005, 1, 4, 0, 20000), +(9500310, 2388005, 1, 4, 0, 20000), +(9500344, 2388005, 1, 4, 0, 20000), +(5220003, 4004001, 1, 1, 0, 3000), +(9300193, 4004001, 1, 1, 0, 3000), +(9500310, 4004001, 1, 1, 0, 3000), +(9500344, 4004001, 1, 1, 0, 3000), +(5220003, 4010003, 1, 1, 0, 7000), +(9300193, 4010003, 1, 1, 0, 7000), +(9500310, 4010003, 1, 1, 0, 7000), +(9500344, 4010003, 1, 1, 0, 7000), +(5220003, 4020006, 1, 1, 0, 7000), +(9300193, 4020006, 1, 1, 0, 7000), +(9500310, 4020006, 1, 1, 0, 7000), +(9500344, 4020006, 1, 1, 0, 7000), +(5220003, 1302011, 1, 1, 0, 40000), +(9300193, 1302011, 1, 1, 0, 40000), +(9500310, 1302011, 1, 1, 0, 40000), +(9500344, 1302011, 1, 1, 0, 40000), +(5220003, 1312009, 1, 1, 0, 40000), +(9300193, 1312009, 1, 1, 0, 40000), +(9500310, 1312009, 1, 1, 0, 40000), +(9500344, 1312009, 1, 1, 0, 40000), +(5220003, 1322018, 1, 1, 0, 40000), +(9300193, 1322018, 1, 1, 0, 40000), +(9500310, 1322018, 1, 1, 0, 40000), +(9500344, 1322018, 1, 1, 0, 40000), +(5220003, 1302056, 1, 1, 0, 40000), +(9300193, 1302056, 1, 1, 0, 40000), +(9500310, 1302056, 1, 1, 0, 40000), +(9500344, 1302056, 1, 1, 0, 40000), +(5220003, 1412007, 1, 1, 0, 40000), +(9300193, 1412007, 1, 1, 0, 40000), +(9500310, 1412007, 1, 1, 0, 40000), +(9500344, 1412007, 1, 1, 0, 40000), +(5220003, 1422009, 1, 1, 0, 40000), +(9300193, 1422009, 1, 1, 0, 40000), +(9500310, 1422009, 1, 1, 0, 40000), +(9500344, 1422009, 1, 1, 0, 40000), +(5220003, 1432006, 1, 1, 0, 40000), +(9300193, 1432006, 1, 1, 0, 40000), +(9500310, 1432006, 1, 1, 0, 40000), +(9500344, 1432006, 1, 1, 0, 40000), +(5220003, 1442010, 1, 1, 0, 40000), +(9300193, 1442010, 1, 1, 0, 40000), +(9500310, 1442010, 1, 1, 0, 40000), +(9500344, 1442010, 1, 1, 0, 40000), +(5220003, 1372014, 1, 1, 0, 40000), +(9300193, 1372014, 1, 1, 0, 40000), +(9500310, 1372014, 1, 1, 0, 40000), +(9500344, 1372014, 1, 1, 0, 40000), +(5220003, 1452004, 1, 1, 0, 40000), +(9300193, 1452004, 1, 1, 0, 40000), +(9500310, 1452004, 1, 1, 0, 40000), +(9500344, 1452004, 1, 1, 0, 40000), +(5220003, 1462008, 1, 1, 0, 40000), +(9300193, 1462008, 1, 1, 0, 40000), +(9500310, 1462008, 1, 1, 0, 40000), +(9500344, 1462008, 1, 1, 0, 40000), +(5220003, 1332015, 1, 1, 0, 40000), +(9300193, 1332015, 1, 1, 0, 40000), +(9500310, 1332015, 1, 1, 0, 40000), +(9500344, 1332015, 1, 1, 0, 40000), +(5220003, 1472025, 1, 1, 0, 40000), +(9300193, 1472025, 1, 1, 0, 40000), +(9500310, 1472025, 1, 1, 0, 40000), +(9500344, 1472025, 1, 1, 0, 40000), +(5220003, 1482008, 1, 1, 0, 40000), +(9300193, 1482008, 1, 1, 0, 40000), +(9500310, 1482008, 1, 1, 0, 40000), +(9500344, 1482008, 1, 1, 0, 40000), +(5220003, 1492008, 1, 1, 0, 40000), +(9300193, 1492008, 1, 1, 0, 40000), +(9500310, 1492008, 1, 1, 0, 40000), +(9500344, 1492008, 1, 1, 0, 40000), +(9420531, 4000469, 1, 1, 0, 200000), +(9420550, 4000469, 1, 1, 0, 200000), +(9420531, 4003005, 1, 1, 0, 7000), +(9420550, 4003005, 1, 1, 0, 7000), +(9420531, 2000006, 1, 1, 0, 40000), +(9420550, 2000006, 1, 1, 0, 40000), +(9420531, 2000005, 1, 1, 0, 40000), +(9420550, 2000005, 1, 1, 0, 40000), +(9420531, 2000002, 1, 1, 0, 40000), +(9420550, 2000002, 1, 1, 0, 40000), +(9420531, 1092012, 1, 1, 0, 700), +(9420550, 1092012, 1, 1, 0, 700), +(9420532, 4000470, 1, 1, 0, 200000), +(9420545, 4000470, 1, 1, 0, 200000), +(9420532, 2000006, 1, 1, 0, 40000), +(9420545, 2000006, 1, 1, 0, 40000), +(9420532, 2330004, 1, 1, 0, 400), +(9420545, 2330004, 1, 1, 0, 400), +(9420532, 1072149, 1, 1, 0, 700), +(9420545, 1072149, 1, 1, 0, 700), +(9420532, 1002244, 1, 1, 0, 700), +(9420545, 1002244, 1, 1, 0, 700), +(9420532, 1051046, 1, 1, 0, 700), +(9420545, 1051046, 1, 1, 0, 700), +(9420532, 1051047, 1, 1, 0, 700), +(9420545, 1051047, 1, 1, 0, 700), +(9420532, 1002270, 1, 1, 0, 700), +(9420545, 1002270, 1, 1, 0, 700), +(9420532, 1061094, 1, 1, 0, 700), +(9420545, 1061094, 1, 1, 0, 700), +(9420532, 1041095, 1, 1, 0, 700), +(9420545, 1041095, 1, 1, 0, 700), +(9420532, 1052107, 1, 1, 0, 700), +(9420545, 1052107, 1, 1, 0, 700), +(9400003, 2022017, 1, 1, 0, 3000), +(9400003, 2020010, 1, 1, 0, 3000), +(9400003, 2022027, 1, 1, 0, 3000), +(9400003, 4006000, 1, 1, 0, 7000), +(9400003, 4006001, 1, 1, 0, 7000), +(9400003, 2070005, 1, 1, 0, 400), +(9400003, 2041040, 1, 1, 0, 750), +(9400003, 2040522, 1, 1, 0, 750), +(9400003, 2040017, 1, 1, 0, 750), +(9400003, 2041043, 1, 1, 0, 750), +(9400003, 2044709, 1, 1, 0, 750), +(9400003, 2043309, 1, 1, 0, 750), +(9400003, 4004003, 1, 1, 0, 3000), +(9400003, 4020002, 1, 1, 0, 7000), +(9400003, 1332030, 1, 1, 0, 700), +(9400003, 1302013, 1, 1, 0, 700), +(9400003, 1041091, 1, 1, 0, 700), +(9400003, 1302012, 1, 1, 0, 700), +(9400003, 1002246, 1, 1, 0, 700), +(9400003, 1050060, 1, 1, 0, 700), +(9400003, 1041096, 1, 1, 0, 700), +(9400003, 1002247, 1, 1, 0, 700), +(9400003, 1092020, 1, 1, 0, 700), +(6130100, 4000014, 1, 1, 0, 200000), +(9500125, 4000014, 1, 1, 0, 200000), +(6130100, 4000030, 1, 1, 0, 200000), +(9500125, 4000030, 1, 1, 0, 200000), +(6130100, 2050099, 1, 1, 0, 3000), +(9500125, 2050099, 1, 1, 0, 3000), +(6130100, 2000006, 1, 1, 0, 40000), +(9500125, 2000006, 1, 1, 0, 40000), +(6130100, 2000004, 1, 1, 0, 40000), +(9500125, 2000004, 1, 1, 0, 40000), +(6130100, 2070005, 1, 1, 0, 400), +(9500125, 2070005, 1, 1, 0, 400), +(6130100, 2040901, 1, 1, 0, 750), +(9500125, 2040901, 1, 1, 0, 750), +(6130100, 2040301, 1, 1, 0, 750), +(9500125, 2040301, 1, 1, 0, 750), +(6130100, 2040302, 1, 1, 0, 750), +(9500125, 2040302, 1, 1, 0, 750), +(6130100, 2331000, 1, 1, 0, 0), +(9500125, 2331000, 1, 1, 0, 0), +(6130100, 2383044, 1, 1, 0, 20000), +(9500125, 2383044, 1, 1, 0, 20000), +(6130100, 4010005, 1, 1, 0, 7000), +(9500125, 4010005, 1, 1, 0, 7000), +(6130100, 4020007, 1, 1, 0, 7000), +(9500125, 4020007, 1, 1, 0, 7000), +(6130100, 1102022, 1, 1, 0, 700), +(9500125, 1102022, 1, 1, 0, 700), +(6130100, 1072148, 1, 1, 0, 700), +(9500125, 1072148, 1, 1, 0, 700), +(6130100, 1040103, 1, 1, 0, 700), +(9500125, 1040103, 1, 1, 0, 700), +(6130100, 1060091, 1, 1, 0, 700), +(9500125, 1060091, 1, 1, 0, 700), +(6130100, 1332016, 1, 1, 0, 700), +(9500125, 1332016, 1, 1, 0, 700), +(6130100, 1092004, 1, 1, 0, 700), +(9500125, 1092004, 1, 1, 0, 700), +(6130100, 1372014, 1, 1, 0, 700), +(9500125, 1372014, 1, 1, 0, 700), +(6130100, 1002246, 1, 1, 0, 700), +(9500125, 1002246, 1, 1, 0, 700), +(6130100, 1372012, 1, 1, 0, 700), +(9500125, 1372012, 1, 1, 0, 700), +(6130100, 1072160, 1, 1, 0, 700), +(9500125, 1072160, 1, 1, 0, 700), +(6130100, 1072136, 1, 1, 0, 700), +(9500125, 1072136, 1, 1, 0, 700), +(6130100, 1050046, 1, 1, 0, 700), +(9500125, 1050046, 1, 1, 0, 700), +(6130100, 1050056, 1, 1, 0, 700), +(9500125, 1050056, 1, 1, 0, 700), +(6130100, 1040079, 1, 1, 0, 700), +(9500125, 1040079, 1, 1, 0, 700), +(6130100, 1040080, 1, 1, 0, 700), +(9500125, 1040080, 1, 1, 0, 700), +(6130100, 1082106, 1, 1, 0, 700), +(9500125, 1082106, 1, 1, 0, 700), +(6130100, 1072146, 1, 1, 0, 700), +(9500125, 1072146, 1, 1, 0, 700), +(6130100, 1082067, 1, 1, 0, 700), +(9500125, 1082067, 1, 1, 0, 700), +(6130100, 1002248, 1, 1, 0, 700), +(9500125, 1002248, 1, 1, 0, 700), +(6130100, 1041080, 1, 1, 0, 700), +(9500125, 1041080, 1, 1, 0, 700), +(6130100, 1061079, 1, 1, 0, 700), +(9500125, 1061079, 1, 1, 0, 700), +(6130100, 1040100, 1, 1, 0, 700), +(9500125, 1040100, 1, 1, 0, 700), +(6130100, 1060089, 1, 1, 0, 700), +(9500125, 1060089, 1, 1, 0, 700), +(6130100, 1072162, 1, 1, 0, 700), +(9500125, 1072162, 1, 1, 0, 700), +(6130100, 1332016, 1, 1, 0, 700), +(9500125, 1332016, 1, 1, 0, 700), +(6130100, 1040083, 1, 1, 0, 700), +(9500125, 1040083, 1, 1, 0, 700), +(6130100, 1060072, 1, 1, 0, 700), +(9500125, 1060072, 1, 1, 0, 700), +(6130100, 1061102, 1, 1, 0, 700), +(9500125, 1061102, 1, 1, 0, 700), +(6130100, 1482008, 1, 1, 0, 700), +(9500125, 1482008, 1, 1, 0, 700), +(6130101, 4000040, 1, 1, 0, 200000), +(9300191, 4000040, 1, 1, 0, 200000), +(9500124, 4000040, 1, 1, 0, 200000), +(9500326, 4000040, 1, 1, 0, 200000), +(9500345, 4000040, 1, 1, 0, 200000), +(9303004, 4000040, 1, 1, 0, 200000), +(6130101, 4030001, 1, 1, 0, 10000), +(9300191, 4030001, 1, 1, 0, 10000), +(9500124, 4030001, 1, 1, 0, 10000), +(9500326, 4030001, 1, 1, 0, 10000), +(9500345, 4030001, 1, 1, 0, 10000), +(9303004, 4030001, 1, 1, 0, 10000), +(6130101, 2070006, 1, 4, 0, 2500), +(9300191, 2070006, 1, 4, 0, 2500), +(9500124, 2070006, 1, 4, 0, 2500), +(9500326, 2070006, 1, 4, 0, 2500), +(9500345, 2070006, 1, 4, 0, 2500), +(9303004, 2070006, 1, 1, 0, 400), +(6130101, 2040024, 1, 4, 0, 10000), +(9300191, 2040024, 1, 4, 0, 10000), +(9500124, 2040024, 1, 4, 0, 10000), +(9500326, 2040024, 1, 4, 0, 10000), +(9500345, 2040024, 1, 4, 0, 10000), +(9303004, 2040024, 1, 1, 0, 750), +(6130101, 2040804, 1, 4, 0, 10000), +(9300191, 2040804, 1, 4, 0, 10000), +(9500124, 2040804, 1, 4, 0, 10000), +(9500326, 2040804, 1, 4, 0, 10000), +(9500345, 2040804, 1, 4, 0, 10000), +(9303004, 2040804, 1, 1, 0, 750), +(6130101, 2040001, 1, 4, 0, 10000), +(9300191, 2040001, 1, 4, 0, 10000), +(9500124, 2040001, 1, 4, 0, 10000), +(9500326, 2040001, 1, 4, 0, 10000), +(9500345, 2040001, 1, 4, 0, 10000), +(9303004, 2040001, 1, 1, 0, 750), +(6130101, 2040004, 1, 4, 0, 10000), +(9300191, 2040004, 1, 4, 0, 10000), +(9500124, 2040004, 1, 4, 0, 10000), +(9500326, 2040004, 1, 4, 0, 10000), +(9500345, 2040004, 1, 4, 0, 10000), +(9303004, 2040004, 1, 1, 0, 750), +(6130101, 2040504, 1, 4, 0, 10000), +(9300191, 2040504, 1, 4, 0, 10000), +(9500124, 2040504, 1, 4, 0, 10000), +(9500326, 2040504, 1, 4, 0, 10000), +(9500345, 2040504, 1, 4, 0, 10000), +(9303004, 2040504, 1, 1, 0, 750), +(6130101, 2040501, 1, 4, 0, 10000), +(9300191, 2040501, 1, 4, 0, 10000), +(9500124, 2040501, 1, 4, 0, 10000), +(9500326, 2040501, 1, 4, 0, 10000), +(9500345, 2040501, 1, 4, 0, 10000), +(9303004, 2040501, 1, 1, 0, 750), +(6130101, 2040401, 1, 4, 0, 10000), +(9300191, 2040401, 1, 4, 0, 10000), +(9500124, 2040401, 1, 4, 0, 10000), +(9500326, 2040401, 1, 4, 0, 10000), +(9500345, 2040401, 1, 4, 0, 10000), +(9303004, 2040401, 1, 1, 0, 750), +(6130101, 2040601, 1, 4, 0, 10000), +(9300191, 2040601, 1, 4, 0, 10000), +(9500124, 2040601, 1, 4, 0, 10000), +(9500326, 2040601, 1, 4, 0, 10000), +(9500345, 2040601, 1, 4, 0, 10000), +(9303004, 2040601, 1, 1, 0, 750), +(6130101, 2040901, 1, 4, 0, 10000), +(9300191, 2040901, 1, 4, 0, 10000), +(9500124, 2040901, 1, 4, 0, 10000), +(9500326, 2040901, 1, 4, 0, 10000), +(9500345, 2040901, 1, 4, 0, 10000), +(9303004, 2040901, 1, 1, 0, 750), +(6130101, 2040801, 1, 4, 0, 10000), +(9300191, 2040801, 1, 4, 0, 10000), +(9500124, 2040801, 1, 4, 0, 10000), +(9500326, 2040801, 1, 4, 0, 10000), +(9500345, 2040801, 1, 4, 0, 10000), +(9303004, 2040801, 1, 1, 0, 750), +(6130101, 2040707, 1, 4, 0, 10000), +(9300191, 2040707, 1, 4, 0, 10000), +(9500124, 2040707, 1, 4, 0, 10000), +(9500326, 2040707, 1, 4, 0, 10000), +(9500345, 2040707, 1, 4, 0, 10000), +(9303004, 2040707, 1, 1, 0, 750), +(6130101, 2040704, 1, 4, 0, 10000), +(9300191, 2040704, 1, 4, 0, 10000), +(9500124, 2040704, 1, 4, 0, 10000), +(9500326, 2040704, 1, 4, 0, 10000), +(9500345, 2040704, 1, 4, 0, 10000), +(9303004, 2040704, 1, 1, 0, 750), +(6130101, 2040701, 1, 4, 0, 10000), +(9300191, 2040701, 1, 4, 0, 10000), +(9500124, 2040701, 1, 4, 0, 10000), +(9500326, 2040701, 1, 4, 0, 10000), +(9500345, 2040701, 1, 4, 0, 10000), +(9303004, 2040701, 1, 1, 0, 750), +(6130101, 2040301, 1, 4, 0, 10000), +(9300191, 2040301, 1, 4, 0, 10000), +(9500124, 2040301, 1, 4, 0, 10000), +(9500326, 2040301, 1, 4, 0, 10000), +(9500345, 2040301, 1, 4, 0, 10000), +(9303004, 2040301, 1, 1, 0, 750), +(6130101, 2041043, 1, 4, 0, 10000), +(9300191, 2041043, 1, 4, 0, 10000), +(9500124, 2041043, 1, 4, 0, 10000), +(9500326, 2041043, 1, 4, 0, 10000), +(9500345, 2041043, 1, 4, 0, 10000), +(9303004, 2041043, 1, 1, 0, 750), +(6130101, 2041045, 1, 4, 0, 10000), +(9300191, 2041045, 1, 4, 0, 10000), +(9500124, 2041045, 1, 4, 0, 10000), +(9500326, 2041045, 1, 4, 0, 10000), +(9500345, 2041045, 1, 4, 0, 10000), +(9303004, 2041045, 1, 1, 0, 750), +(6130101, 2331000, 1, 4, 0, 0), +(9300191, 2331000, 1, 4, 0, 0), +(9500124, 2331000, 1, 4, 0, 0), +(9500326, 2331000, 1, 4, 0, 0), +(9500345, 2331000, 1, 4, 0, 0), +(9303004, 2331000, 1, 1, 0, 0), +(6130101, 2388006, 1, 4, 0, 20000), +(9300191, 2388006, 1, 4, 0, 20000), +(9500124, 2388006, 1, 4, 0, 20000), +(9500326, 2388006, 1, 4, 0, 20000), +(9500345, 2388006, 1, 4, 0, 20000), +(9303004, 2388006, 1, 1, 0, 20000), +(6130101, 1032013, 1, 1, 0, 40000), +(9300191, 1032013, 1, 1, 0, 40000), +(9500124, 1032013, 1, 1, 0, 40000), +(9500326, 1032013, 1, 1, 0, 40000), +(9500345, 1032013, 1, 1, 0, 40000), +(9303004, 1032013, 1, 1, 0, 700), +(6130101, 1092012, 1, 1, 0, 40000), +(9300191, 1092012, 1, 1, 0, 40000), +(9500124, 1092012, 1, 1, 0, 40000), +(9500326, 1092012, 1, 1, 0, 40000), +(9500345, 1092012, 1, 1, 0, 40000), +(9303004, 1092012, 1, 1, 0, 700), +(6130101, 1372000, 1, 1, 0, 40000), +(9300191, 1372000, 1, 1, 0, 40000), +(9500124, 1372000, 1, 1, 0, 40000), +(9500326, 1372000, 1, 1, 0, 40000), +(9500345, 1372000, 1, 1, 0, 40000), +(9303004, 1372000, 1, 1, 0, 700), +(6130103, 1702131, 1, 1, 0, 700), +(6130103, 2000006, 1, 1, 0, 40000), +(6130103, 2000004, 1, 1, 0, 40000), +(6130103, 2040401, 1, 1, 0, 750), +(6130103, 2383045, 1, 1, 0, 20000), +(6130103, 4010001, 1, 1, 0, 7000), +(6130103, 4020008, 1, 1, 0, 7000), +(6130103, 4004002, 1, 1, 0, 3000), +(6130103, 1102024, 1, 1, 0, 700), +(6130103, 1302012, 1, 1, 0, 700), +(6130103, 1002025, 1, 1, 0, 700), +(6130103, 1040087, 1, 1, 0, 700), +(6130103, 1060076, 1, 1, 0, 700), +(6130103, 1040093, 1, 1, 0, 700), +(6130103, 1060082, 1, 1, 0, 700), +(6130103, 1082060, 1, 1, 0, 700), +(6130103, 1072138, 1, 1, 0, 700), +(6130103, 1050045, 1, 1, 0, 700), +(6130103, 1072157, 1, 1, 0, 700), +(6130103, 1002170, 1, 1, 0, 700), +(6130103, 1002286, 1, 1, 0, 700), +(6130103, 1072145, 1, 1, 0, 700), +(6130103, 1072150, 1, 1, 0, 700), +(6130103, 1040097, 1, 1, 0, 700), +(6130103, 1060086, 1, 1, 0, 700), +(6130103, 1082095, 1, 1, 0, 700), +(6130103, 1472020, 1, 1, 0, 700), +(6130202, 4000173, 1, 1, 0, 200000), +(6130202, 2000006, 1, 1, 0, 40000), +(6130202, 2000004, 1, 1, 0, 40000), +(6130202, 2040004, 1, 1, 0, 750), +(6130202, 2040501, 1, 1, 0, 750), +(6130202, 2040401, 1, 1, 0, 750), +(6130202, 2383046, 1, 1, 0, 20000), +(6130202, 4004002, 1, 1, 0, 3000), +(6130202, 4010001, 1, 1, 0, 7000), +(6130202, 4020008, 1, 1, 0, 7000), +(6130202, 1102018, 1, 1, 0, 700), +(6130202, 1061090, 1, 1, 0, 700), +(6130202, 1040089, 1, 1, 0, 700), +(6130202, 1442009, 1, 1, 0, 700), +(6130202, 1041091, 1, 1, 0, 700), +(6130202, 1082086, 1, 1, 0, 700), +(6130202, 1462006, 1, 1, 0, 700), +(6130202, 1452008, 1, 1, 0, 700), +(6130202, 1040099, 1, 1, 0, 700), +(6130203, 4000283, 1, 1, 0, 200000), +(9300245, 4000283, 1, 1, 0, 200000), +(6130203, 1132003, 1, 1, 0, 700), +(9300245, 1132003, 1, 1, 0, 700), +(6130203, 2070005, 1, 1, 0, 400), +(9300245, 2070005, 1, 1, 0, 400), +(6130203, 2383047, 1, 1, 0, 20000), +(9300245, 2383047, 1, 1, 0, 20000), +(6130203, 4010005, 1, 1, 0, 7000), +(9300245, 4010005, 1, 1, 0, 7000), +(6130203, 4020007, 1, 1, 0, 7000), +(9300245, 4020007, 1, 1, 0, 7000), +(6130203, 1102015, 1, 1, 0, 700), +(9300245, 1102015, 1, 1, 0, 700), +(6130203, 1050056, 1, 1, 0, 700), +(9300245, 1050056, 1, 1, 0, 700), +(6130203, 1072090, 1, 1, 0, 700), +(9300245, 1072090, 1, 1, 0, 700), +(6130203, 1002215, 1, 1, 0, 700), +(9300245, 1002215, 1, 1, 0, 700), +(6130203, 1041083, 1, 1, 0, 700), +(9300245, 1041083, 1, 1, 0, 700), +(6130203, 1061082, 1, 1, 0, 700), +(9300245, 1061082, 1, 1, 0, 700), +(6130203, 1082066, 1, 1, 0, 700), +(9300245, 1082066, 1, 1, 0, 700), +(6130203, 1041079, 1, 1, 0, 700), +(9300245, 1041079, 1, 1, 0, 700), +(6130203, 1061078, 1, 1, 0, 700), +(9300245, 1061078, 1, 1, 0, 700), +(9400561, 2000006, 1, 1, 0, 40000), +(9400561, 2022245, 1, 1, 0, 3000), +(9400561, 2043701, 1, 1, 0, 750), +(9400561, 2330002, 1, 1, 0, 400), +(9400561, 1072148, 1, 1, 0, 700), +(9400561, 1072154, 1, 1, 0, 700), +(9400561, 1041087, 1, 1, 0, 700), +(9400561, 1061086, 1, 1, 0, 700), +(9400561, 1442010, 1, 1, 0, 700), +(9400561, 1082061, 1, 1, 0, 700), +(9400561, 1050047, 1, 1, 0, 700), +(9400561, 1051054, 1, 1, 0, 700), +(9400561, 1050069, 1, 1, 0, 700), +(9400561, 1082091, 1, 1, 0, 700), +(9400561, 1002286, 1, 1, 0, 700), +(9400561, 1002281, 1, 1, 0, 700), +(9400561, 1040096, 1, 1, 0, 700), +(9400561, 1060085, 1, 1, 0, 700), +(9400561, 1002210, 1, 1, 0, 700), +(9400561, 1072303, 1, 1, 0, 700), +(9400561, 1002634, 1, 1, 0, 700), +(9400562, 2022247, 1, 1, 0, 3000), +(9400562, 2000006, 1, 1, 0, 40000), +(9400562, 2043701, 1, 1, 0, 750), +(9400562, 2330002, 1, 1, 0, 400), +(9400562, 1082061, 1, 1, 0, 700), +(9400562, 1072148, 1, 1, 0, 700), +(9400562, 1041087, 1, 1, 0, 700), +(9400562, 1061086, 1, 1, 0, 700), +(9400562, 1442010, 1, 1, 0, 700), +(9400562, 1051034, 1, 1, 0, 700), +(9400562, 1050047, 1, 1, 0, 700), +(9400562, 1051054, 1, 1, 0, 700), +(9400562, 1092029, 1, 1, 0, 700), +(9400562, 1082091, 1, 1, 0, 700), +(9400562, 1002286, 1, 1, 0, 700), +(9400562, 1002281, 1, 1, 0, 700), +(9400562, 1040096, 1, 1, 0, 700), +(9400562, 1060085, 1, 1, 0, 700), +(9400562, 1002210, 1, 1, 0, 700), +(9400562, 1072303, 1, 1, 0, 700), +(9400562, 1002634, 1, 1, 0, 700), +(9420511, 4000382, 1, 1, 0, 200000), +(9420511, 2050099, 1, 1, 0, 3000), +(9420511, 2000006, 1, 1, 0, 40000), +(9420511, 2020028, 1, 1, 0, 3000), +(9420511, 2070005, 1, 1, 0, 400), +(9420511, 4020007, 1, 1, 0, 7000), +(9420511, 4010005, 1, 1, 0, 7000), +(9420511, 1102015, 1, 1, 0, 700), +(9420511, 1102016, 1, 1, 0, 700), +(9420511, 1041098, 1, 1, 0, 700), +(9420511, 1040090, 1, 1, 0, 700), +(9420511, 1002215, 1, 1, 0, 700), +(9420511, 1050055, 1, 1, 0, 700), +(9420511, 1050056, 1, 1, 0, 700), +(9420511, 1072090, 1, 1, 0, 700), +(9420511, 1051031, 1, 1, 0, 700), +(9420511, 1051034, 1, 1, 0, 700), +(9420511, 1382006, 1, 1, 0, 700), +(9420511, 1041083, 1, 1, 0, 700), +(9420511, 1061082, 1, 1, 0, 700), +(9420511, 1041079, 1, 1, 0, 700), +(9420511, 1061078, 1, 1, 0, 700), +(9420511, 1082066, 1, 1, 0, 700), +(9420511, 1492008, 1, 1, 0, 700), +(9400012, 4000223, 1, 1, 0, 200000), +(9400012, 4130005, 1, 1, 0, 3000), +(9400012, 4131003, 1, 1, 0, 3000), +(9400012, 2000006, 1, 1, 0, 40000), +(9400012, 2040602, 1, 1, 0, 750), +(9400012, 2040516, 1, 1, 0, 750), +(9400012, 2040707, 1, 1, 0, 750), +(9400012, 2040720, 1, 1, 0, 750), +(9400012, 2044508, 1, 1, 0, 750), +(9400012, 2040524, 1, 1, 0, 750), +(9400012, 1002084, 1, 1, 0, 700), +(9400012, 1412007, 1, 1, 0, 700), +(9400012, 1041091, 1, 1, 0, 700), +(9400012, 1432006, 1, 1, 0, 700), +(9400012, 1040087, 1, 1, 0, 700), +(9400012, 1382006, 1, 1, 0, 700), +(9400012, 1051046, 1, 1, 0, 700), +(9400012, 1462008, 1, 1, 0, 700), +(9400012, 1002269, 1, 1, 0, 700), +(9400012, 1041095, 1, 1, 0, 700), +(6130200, 4000128, 1, 1, 0, 200000), +(9300315, 4000128, 1, 1, 0, 200000), +(6130200, 4130014, 1, 1, 0, 3000), +(9300315, 4130014, 1, 1, 0, 3000), +(6130200, 2000006, 1, 1, 0, 40000), +(9300315, 2000006, 1, 4, 0, 40000), +(6130200, 2000004, 1, 1, 0, 40000), +(9300315, 2000004, 1, 4, 0, 40000), +(6130200, 4006000, 1, 1, 0, 7000), +(9300315, 4006000, 1, 1, 0, 7000), +(6130200, 2043801, 1, 1, 0, 750), +(9300315, 2043801, 1, 4, 0, 10000), +(6130200, 2384000, 1, 1, 0, 20000), +(9300315, 2384000, 1, 4, 0, 20000), +(6130200, 4020008, 1, 1, 0, 7000), +(9300315, 4020008, 1, 1, 0, 7000), +(6130200, 4010005, 1, 1, 0, 7000), +(9300315, 4010005, 1, 1, 0, 7000), +(6130200, 4004001, 1, 1, 0, 3000), +(9300315, 4004001, 1, 1, 0, 3000), +(6130200, 4010001, 1, 1, 0, 7000), +(9300315, 4010001, 1, 1, 0, 7000), +(6130200, 1032012, 1, 1, 0, 700), +(9300315, 1032012, 1, 1, 0, 40000), +(6130200, 1102015, 1, 1, 0, 700), +(9300315, 1102015, 1, 1, 0, 40000), +(6130200, 1302011, 1, 1, 0, 700), +(9300315, 1302011, 1, 1, 0, 40000), +(6130200, 1002093, 1, 1, 0, 700), +(9300315, 1002093, 1, 1, 0, 40000), +(6130200, 1312010, 1, 1, 0, 700), +(9300315, 1312010, 1, 1, 0, 40000), +(6130200, 1040088, 1, 1, 0, 700), +(9300315, 1040088, 1, 1, 0, 40000), +(6130200, 1060077, 1, 1, 0, 700), +(9300315, 1060077, 1, 1, 0, 40000), +(6130200, 1082061, 1, 1, 0, 700), +(9300315, 1082061, 1, 1, 0, 40000), +(6130200, 1050046, 1, 1, 0, 700), +(9300315, 1050046, 1, 1, 0, 40000), +(6130200, 1050061, 1, 1, 0, 700), +(9300315, 1050061, 1, 1, 0, 40000), +(6130200, 1072122, 1, 1, 0, 700), +(9300315, 1072122, 1, 1, 0, 40000), +(6130200, 1452009, 1, 1, 0, 700), +(9300315, 1452009, 1, 1, 0, 40000), +(6130200, 1332015, 1, 1, 0, 700), +(9300315, 1332015, 1, 1, 0, 40000), +(6130200, 1082094, 1, 1, 0, 700), +(9300315, 1082094, 1, 1, 0, 40000), +(6130200, 1072163, 1, 1, 0, 700), +(9300315, 1072163, 1, 1, 0, 40000), +(6130200, 1002182, 1, 1, 0, 700), +(9300315, 1002182, 1, 1, 0, 40000), +(6130200, 1052122, 1, 1, 0, 700), +(9300315, 1052122, 1, 1, 0, 40000), +(9420533, 2002004, 1, 1, 0, 10000), +(9420533, 2000009, 1, 1, 0, 40000), +(9420533, 2002011, 1, 1, 0, 10000), +(9420533, 2044302, 1, 1, 0, 750), +(9420533, 2048001, 1, 1, 0, 750), +(9420533, 1322012, 1, 1, 0, 700), +(9420533, 1312009, 1, 1, 0, 700), +(9420533, 1432007, 1, 1, 0, 700), +(9420533, 1002254, 1, 1, 0, 700), +(9420533, 1050039, 1, 1, 0, 700), +(9420533, 1051025, 1, 1, 0, 700), +(9420533, 1372008, 1, 1, 0, 700), +(9420533, 1050052, 1, 1, 0, 700), +(9420533, 1051038, 1, 1, 0, 700), +(9420533, 1061095, 1, 1, 0, 700), +(9420533, 1002248, 1, 1, 0, 700), +(9420533, 1002249, 1, 1, 0, 700), +(9420533, 1041096, 1, 1, 0, 700), +(9420533, 1082180, 1, 1, 0, 700), +(6230100, 4000027, 1, 1, 0, 200000), +(6230100, 4030012, 1, 1, 0, 10000), +(6230100, 2000006, 1, 1, 0, 40000), +(6230100, 2070004, 1, 1, 0, 400), +(6230100, 2043201, 1, 1, 0, 750), +(6230100, 2040001, 1, 1, 0, 750), +(6230100, 2043701, 1, 1, 0, 750), +(6230100, 2043801, 1, 1, 0, 750), +(6230100, 2049101, 1, 1, 0, 400), +(6230100, 2384001, 1, 1, 0, 20000), +(6230100, 4010006, 1, 1, 0, 7000), +(6230100, 4020008, 1, 1, 0, 7000), +(6230100, 1102016, 1, 1, 0, 700), +(6230100, 1072148, 1, 1, 0, 700), +(6230100, 1442010, 1, 1, 0, 700), +(6230100, 1072154, 1, 1, 0, 700), +(6230100, 1041087, 1, 1, 0, 700), +(6230100, 1082061, 1, 1, 0, 700), +(6230100, 1051054, 1, 1, 0, 700), +(6230100, 1050047, 1, 1, 0, 700), +(6230100, 1382006, 1, 1, 0, 700), +(6230100, 1452016, 1, 1, 0, 700), +(6230100, 1050060, 1, 1, 0, 700), +(6230100, 1082090, 1, 1, 0, 700), +(6230100, 1082106, 1, 1, 0, 700), +(6230100, 1040095, 1, 1, 0, 700), +(6230100, 1082066, 1, 1, 0, 700), +(6230100, 1472023, 1, 1, 0, 700), +(6230100, 1041103, 1, 1, 0, 700), +(6230100, 1061102, 1, 1, 0, 700), +(6230100, 1082204, 1, 1, 0, 700), +(9400110, 4130012, 1, 1, 0, 3000), +(9400110, 2050001, 1, 1, 0, 3000), +(9400110, 2020008, 1, 1, 0, 3000), +(9400110, 2070004, 1, 1, 0, 400), +(9400110, 2041039, 1, 1, 0, 750), +(9400110, 2040913, 1, 1, 0, 750), +(9400110, 4004002, 1, 1, 0, 3000), +(9400110, 4010004, 1, 1, 0, 7000), +(9400110, 1102002, 1, 1, 0, 700), +(9400110, 1061091, 1, 1, 0, 700), +(9400110, 1402017, 1, 1, 0, 700), +(9400110, 1002029, 1, 1, 0, 700), +(9400110, 1082023, 1, 1, 0, 700), +(9400110, 1412009, 1, 1, 0, 700), +(9400110, 1452010, 1, 1, 0, 700), +(9400110, 1002167, 1, 1, 0, 700), +(9400110, 1002207, 1, 1, 0, 700), +(6130207, 4000282, 1, 1, 0, 200000), +(9300165, 4000282, 1, 1, 0, 200000), +(6130207, 4000021, 1, 1, 0, 200000), +(9300165, 4000021, 1, 1, 0, 200000), +(6130207, 4003005, 1, 1, 0, 7000), +(9300165, 4003005, 1, 1, 0, 7000), +(6130207, 4130006, 1, 1, 0, 3000), +(9300165, 4130006, 1, 1, 0, 3000), +(6130207, 4130007, 1, 1, 0, 3000), +(9300165, 4130007, 1, 1, 0, 3000), +(6130207, 2000002, 1, 1, 0, 40000), +(9300165, 2000002, 1, 1, 0, 40000), +(6130207, 2000006, 1, 1, 0, 40000), +(9300165, 2000006, 1, 1, 0, 40000), +(6130207, 2044113, 1, 1, 0, 750), +(9300165, 2044113, 1, 1, 0, 750), +(6130207, 2043701, 1, 1, 0, 750), +(9300165, 2043701, 1, 1, 0, 750), +(6130207, 2040330, 1, 1, 0, 750), +(9300165, 2040330, 1, 1, 0, 750), +(6130207, 2330003, 1, 1, 0, 400), +(9300165, 2330003, 1, 1, 0, 400), +(6130207, 2384002, 1, 1, 0, 20000), +(9300165, 2384002, 1, 1, 0, 20000), +(6130207, 4020004, 1, 1, 0, 7000), +(9300165, 4020004, 1, 1, 0, 7000), +(6130207, 1032011, 1, 1, 0, 700), +(9300165, 1032011, 1, 1, 0, 700), +(6130207, 1102017, 1, 1, 0, 700), +(9300165, 1102017, 1, 1, 0, 700), +(6130207, 1051030, 1, 1, 0, 700), +(9300165, 1051030, 1, 1, 0, 700), +(6130207, 1051046, 1, 1, 0, 700), +(9300165, 1051046, 1, 1, 0, 700), +(6130207, 1452008, 1, 1, 0, 700), +(9300165, 1452008, 1, 1, 0, 700), +(6130207, 1040109, 1, 1, 0, 700), +(9300165, 1040109, 1, 1, 0, 700), +(6130207, 1060098, 1, 1, 0, 700), +(9300165, 1060098, 1, 1, 0, 700), +(6130207, 1002210, 1, 1, 0, 700), +(9300165, 1002210, 1, 1, 0, 700), +(6130207, 1072309, 1, 1, 0, 700), +(9300165, 1072309, 1, 1, 0, 700), +(6090003, 2384039, 1, 4, 0, 20000), +(6230400, 4000143, 1, 1, 0, 200000), +(9300316, 4000143, 1, 1, 0, 200000), +(6230400, 4000021, 1, 1, 0, 200000), +(9300316, 4000021, 1, 1, 0, 200000), +(6230400, 2000004, 1, 1, 0, 40000), +(9300316, 2000004, 1, 4, 0, 40000), +(6230400, 2000002, 1, 1, 0, 40000), +(9300316, 2000002, 1, 4, 0, 40000), +(6230400, 2002000, 1, 1, 0, 10000), +(9300316, 2002000, 1, 4, 0, 10000), +(6230400, 2040804, 1, 1, 0, 750), +(9300316, 2040804, 1, 4, 0, 10000), +(6230400, 2044904, 1, 1, 0, 750), +(9300316, 2044904, 1, 4, 0, 10000), +(6230400, 2040516, 1, 1, 0, 750), +(9300316, 2040516, 1, 4, 0, 10000), +(6230400, 2040530, 1, 1, 0, 750), +(9300316, 2040530, 1, 4, 0, 10000), +(6230400, 2040925, 1, 1, 0, 750), +(9300316, 2040925, 1, 4, 0, 10000), +(6230400, 2043802, 1, 1, 0, 750), +(9300316, 2043802, 1, 4, 0, 10000), +(6230400, 2040424, 1, 1, 0, 750), +(9300316, 2040424, 1, 4, 0, 10000), +(6230400, 2384004, 1, 1, 0, 20000), +(9300316, 2384004, 1, 4, 0, 20000), +(6230400, 4010006, 1, 1, 0, 7000), +(9300316, 4010006, 1, 1, 0, 7000), +(6230400, 4010000, 1, 1, 0, 7000), +(9300316, 4010000, 1, 1, 0, 7000), +(6230400, 4020003, 1, 1, 0, 7000), +(9300316, 4020003, 1, 1, 0, 7000), +(6230400, 4020004, 1, 1, 0, 7000), +(9300316, 4020004, 1, 1, 0, 7000), +(6230400, 4004000, 1, 1, 0, 3000), +(9300316, 4004000, 1, 1, 0, 3000), +(6230400, 1102017, 1, 1, 0, 700), +(9300316, 1102017, 1, 1, 0, 40000), +(6230400, 1032014, 1, 1, 0, 700), +(9300316, 1032014, 1, 1, 0, 40000), +(6230400, 1032020, 1, 1, 0, 700), +(9300316, 1032020, 1, 1, 0, 40000), +(6230400, 1322018, 1, 1, 0, 700), +(9300316, 1322018, 1, 1, 0, 40000), +(6230400, 1002085, 1, 1, 0, 700), +(9300316, 1002085, 1, 1, 0, 40000), +(6230400, 1041098, 1, 1, 0, 700), +(9300316, 1041098, 1, 1, 0, 40000), +(6230400, 1061097, 1, 1, 0, 700), +(9300316, 1061097, 1, 1, 0, 40000), +(6230400, 1072149, 1, 1, 0, 700), +(9300316, 1072149, 1, 1, 0, 40000), +(6230400, 1372014, 1, 1, 0, 700), +(9300316, 1372014, 1, 1, 0, 40000), +(6230400, 1082099, 1, 1, 0, 700), +(9300316, 1082099, 1, 1, 0, 40000), +(6230400, 1050049, 1, 1, 0, 700), +(9300316, 1050049, 1, 1, 0, 40000), +(6230400, 1051034, 1, 1, 0, 700), +(9300316, 1051034, 1, 1, 0, 40000), +(6230400, 1082086, 1, 1, 0, 700), +(9300316, 1082086, 1, 1, 0, 40000), +(6230400, 1002286, 1, 1, 0, 700), +(9300316, 1002286, 1, 1, 0, 40000), +(6230400, 1072166, 1, 1, 0, 700), +(9300316, 1072166, 1, 1, 0, 40000), +(6230400, 1051037, 1, 1, 0, 700), +(9300316, 1051037, 1, 1, 0, 40000), +(6230400, 1082091, 1, 1, 0, 700), +(9300316, 1082091, 1, 1, 0, 40000), +(6230400, 1040096, 1, 1, 0, 700), +(9300316, 1040096, 1, 1, 0, 40000), +(6230400, 1060085, 1, 1, 0, 700), +(9300316, 1060085, 1, 1, 0, 40000), +(6230400, 1472024, 1, 1, 0, 700), +(9300316, 1472024, 1, 1, 0, 40000), +(6230400, 1002249, 1, 1, 0, 700), +(9300316, 1002249, 1, 1, 0, 40000), +(6230400, 1002281, 1, 1, 0, 700), +(9300316, 1002281, 1, 1, 0, 40000), +(6230400, 1002210, 1, 1, 0, 700), +(9300316, 1002210, 1, 1, 0, 40000), +(6230400, 1492009, 1, 1, 0, 700), +(9300316, 1492009, 1, 1, 0, 40000), +(6230602, 4000207, 1, 1, 0, 200000), +(6230602, 4030012, 1, 1, 0, 10000), +(6230602, 2000002, 1, 1, 0, 40000), +(6230602, 2000004, 1, 1, 0, 40000), +(6230602, 2002000, 1, 1, 0, 10000), +(6230602, 2040804, 1, 1, 0, 750), +(6230602, 2043802, 1, 1, 0, 750), +(6230602, 2330002, 1, 1, 0, 400), +(6230602, 2384003, 1, 1, 0, 20000), +(6230602, 4010000, 1, 1, 0, 7000), +(6230602, 4020003, 1, 1, 0, 7000), +(6230602, 1092011, 1, 1, 0, 700), +(6230602, 1082103, 1, 1, 0, 700), +(6230602, 1302011, 1, 1, 0, 700), +(6230602, 1002084, 1, 1, 0, 700), +(6230602, 1082010, 1, 1, 0, 700), +(6230602, 1082082, 1, 1, 0, 700), +(6230602, 1082098, 1, 1, 0, 700), +(6230602, 1002246, 1, 1, 0, 700), +(6230602, 1082106, 1, 1, 0, 700), +(6230602, 1002269, 1, 1, 0, 700), +(6230602, 1082085, 1, 1, 0, 700), +(6230602, 1472023, 1, 1, 0, 700), +(6230602, 1032011, 1, 1, 0, 700), +(6230602, 1002248, 1, 1, 0, 700), +(6230602, 1082096, 1, 1, 0, 700), +(6230602, 1002285, 1, 1, 0, 700), +(6230602, 1072306, 1, 1, 0, 700), +(6230602, 1482009, 1, 1, 0, 700), +(9420510, 4000379, 1, 1, 0, 200000), +(9420510, 2070004, 1, 1, 0, 400), +(9420510, 2043701, 1, 1, 0, 750), +(9420510, 2000006, 1, 1, 0, 40000), +(9420510, 4010006, 1, 1, 0, 7000), +(9420510, 4004004, 1, 1, 0, 3000), +(9420510, 4020008, 1, 1, 0, 7000), +(9420510, 1032011, 1, 1, 0, 700), +(9420510, 1102017, 1, 1, 0, 700), +(9420510, 1432003, 1, 1, 0, 700), +(9420510, 1312008, 1, 1, 0, 700), +(9420510, 1382007, 1, 1, 0, 700), +(9420510, 1051034, 1, 1, 0, 700), +(9420510, 1051046, 1, 1, 0, 700), +(9420510, 1051047, 1, 1, 0, 700), +(9420510, 1051030, 1, 1, 0, 700), +(9420510, 1051031, 1, 1, 0, 700), +(9420510, 1452008, 1, 1, 0, 700), +(9420510, 1041068, 1, 1, 0, 700), +(9420510, 1061063, 1, 1, 0, 700), +(9420510, 1002249, 1, 1, 0, 700), +(9420510, 1002210, 1, 1, 0, 700), +(9420510, 1002209, 1, 1, 0, 700), +(9420510, 1040109, 1, 1, 0, 700), +(9420510, 1060098, 1, 1, 0, 700), +(9420510, 1040084, 1, 1, 0, 700), +(9420510, 1060073, 1, 1, 0, 700), +(6090004, 4000419, 1, 1, 0, 200000), +(6090004, 2384040, 1, 4, 0, 20000), +(6230200, 4000057, 1, 1, 0, 200000), +(6230200, 2000006, 1, 1, 0, 40000), +(6230200, 2000004, 1, 1, 0, 40000), +(6230200, 4006000, 1, 1, 0, 7000), +(6230200, 2384007, 1, 1, 0, 20000), +(6230200, 4010004, 1, 1, 0, 7000), +(6230200, 4020000, 1, 1, 0, 7000), +(6230200, 4004003, 1, 1, 0, 3000), +(6230200, 4004004, 1, 1, 0, 3000), +(6230200, 1102018, 1, 1, 0, 700), +(6230200, 1002100, 1, 1, 0, 700), +(6230200, 1092011, 1, 1, 0, 700), +(6230200, 1050055, 1, 1, 0, 700), +(6230200, 1002216, 1, 1, 0, 700), +(6230200, 1382001, 1, 1, 0, 700), +(6230200, 1002218, 1, 1, 0, 700), +(6230200, 1082087, 1, 1, 0, 700), +(6230200, 1082088, 1, 1, 0, 700), +(6230200, 1002268, 1, 1, 0, 700), +(6230200, 1472023, 1, 1, 0, 700), +(6230200, 1472025, 1, 1, 0, 700), +(6230200, 1041094, 1, 1, 0, 700), +(6230200, 1472020, 1, 1, 0, 700), +(9400111, 2050000, 1, 1, 0, 3000), +(9400111, 2041041, 1, 1, 0, 750), +(9400111, 2040908, 1, 1, 0, 750), +(9400111, 4004001, 1, 1, 0, 3000), +(9400111, 4020008, 1, 1, 0, 7000), +(9400111, 1402001, 1, 1, 0, 700), +(9400111, 1092004, 1, 1, 0, 700), +(9400111, 1302011, 1, 1, 0, 700), +(9400111, 1002217, 1, 1, 0, 700), +(9400111, 1082062, 1, 1, 0, 700), +(9400111, 1092021, 1, 1, 0, 700), +(9400111, 1050055, 1, 1, 0, 700), +(9400111, 1452018, 1, 1, 0, 700), +(9400111, 1061082, 1, 1, 0, 700), +(9400111, 1462009, 1, 1, 0, 700), +(9400111, 1051041, 1, 1, 0, 700), +(6230600, 4000185, 1, 1, 0, 200000), +(9500126, 4000185, 1, 1, 0, 200000), +(6230600, 4000030, 1, 1, 0, 200000), +(9500126, 4000030, 1, 1, 0, 200000), +(6230600, 4030012, 1, 1, 0, 10000), +(9500126, 4030012, 1, 1, 0, 10000), +(6230600, 2000006, 1, 1, 0, 40000), +(9500126, 2000006, 1, 1, 0, 40000), +(6230600, 2000004, 1, 1, 0, 40000), +(9500126, 2000004, 1, 1, 0, 40000), +(6230600, 2040001, 1, 1, 0, 750), +(9500126, 2040001, 1, 1, 0, 750), +(6230600, 4006000, 1, 1, 0, 7000), +(9500126, 4006000, 1, 1, 0, 7000), +(6230600, 2331000, 1, 1, 0, 0), +(9500126, 2331000, 1, 1, 0, 0), +(6230600, 2384006, 1, 1, 0, 20000), +(9500126, 2384006, 1, 1, 0, 20000), +(6230600, 4020005, 1, 1, 0, 7000), +(9500126, 4020005, 1, 1, 0, 7000), +(6230600, 4010006, 1, 1, 0, 7000), +(9500126, 4010006, 1, 1, 0, 7000), +(6230600, 4020007, 1, 1, 0, 7000), +(9500126, 4020007, 1, 1, 0, 7000), +(6230600, 4010004, 1, 1, 0, 7000), +(9500126, 4010004, 1, 1, 0, 7000), +(6230600, 1040091, 1, 1, 0, 700), +(9500126, 1040091, 1, 1, 0, 700), +(6230600, 1041097, 1, 1, 0, 700), +(9500126, 1041097, 1, 1, 0, 700), +(6230600, 1061096, 1, 1, 0, 700), +(9500126, 1061096, 1, 1, 0, 700), +(6230600, 1061083, 1, 1, 0, 700), +(9500126, 1061083, 1, 1, 0, 700), +(6230600, 1041091, 1, 1, 0, 700), +(9500126, 1041091, 1, 1, 0, 700), +(6230600, 1051046, 1, 1, 0, 700), +(9500126, 1051046, 1, 1, 0, 700), +(6230600, 1072158, 1, 1, 0, 700), +(9500126, 1072158, 1, 1, 0, 700), +(6230600, 1051043, 1, 1, 0, 700), +(9500126, 1051043, 1, 1, 0, 700), +(6230600, 1462008, 1, 1, 0, 700), +(9500126, 1462008, 1, 1, 0, 700), +(6230600, 1002208, 1, 1, 0, 700), +(9500126, 1002208, 1, 1, 0, 700), +(6230600, 1472024, 1, 1, 0, 700), +(9500126, 1472024, 1, 1, 0, 700), +(6230600, 1040094, 1, 1, 0, 700), +(9500126, 1040094, 1, 1, 0, 700), +(6230600, 1060083, 1, 1, 0, 700), +(9500126, 1060083, 1, 1, 0, 700), +(6230600, 1082095, 1, 1, 0, 700), +(9500126, 1082095, 1, 1, 0, 700), +(6230600, 1002634, 1, 1, 0, 700), +(9500126, 1002634, 1, 1, 0, 700), +(6130204, 4000021, 1, 1, 0, 200000), +(6130204, 2000004, 1, 1, 0, 40000), +(6130204, 2000006, 1, 1, 0, 40000), +(6130204, 2000002, 1, 1, 0, 40000), +(6130204, 2040301, 1, 1, 0, 750), +(6130204, 2043001, 1, 1, 0, 750), +(6130204, 2330003, 1, 1, 0, 400), +(6130204, 2384008, 1, 1, 0, 20000), +(6130204, 4010006, 1, 1, 0, 7000), +(6130204, 4020004, 1, 1, 0, 7000), +(6130204, 4004000, 1, 1, 0, 3000), +(6130204, 1040104, 1, 1, 0, 700), +(6130204, 1060092, 1, 1, 0, 700), +(6130204, 1040093, 1, 1, 0, 700), +(6130204, 1060082, 1, 1, 0, 700), +(6130204, 1302056, 1, 1, 0, 700), +(6130204, 1082062, 1, 1, 0, 700), +(6130204, 1051064, 1, 1, 0, 700), +(6130204, 1051065, 1, 1, 0, 700), +(6130204, 1040107, 1, 1, 0, 700), +(6130204, 1060095, 1, 1, 0, 700), +(6130204, 1052119, 1, 1, 0, 700), +(6090001, 2384037, 1, 4, 0, 20000), +(6300000, 4000049, 1, 1, 0, 200000), +(9300258, 4000049, 1, 1, 0, 200000), +(6300000, 4000021, 1, 1, 0, 200000), +(9300258, 4000021, 1, 1, 0, 200000), +(6300000, 2000006, 1, 1, 0, 40000), +(9300258, 2000006, 1, 1, 0, 40000), +(6300000, 2384009, 1, 1, 0, 20000), +(9300258, 2384009, 1, 1, 0, 20000), +(6300000, 4010000, 1, 1, 0, 7000), +(9300258, 4010000, 1, 1, 0, 7000), +(6300000, 4020007, 1, 1, 0, 7000), +(9300258, 4020007, 1, 1, 0, 7000), +(6300000, 4004000, 1, 1, 0, 3000), +(9300258, 4004000, 1, 1, 0, 3000), +(6300000, 4005004, 1, 1, 0, 7000), +(9300258, 4005004, 1, 1, 0, 7000), +(6300000, 1032019, 1, 1, 0, 700), +(9300258, 1032019, 1, 1, 0, 700), +(6300000, 1032020, 1, 1, 0, 700), +(9300258, 1032020, 1, 1, 0, 700), +(6300000, 1102022, 1, 1, 0, 700), +(9300258, 1102022, 1, 1, 0, 700), +(6300000, 1041089, 1, 1, 0, 700), +(9300258, 1041089, 1, 1, 0, 700), +(6300000, 1432006, 1, 1, 0, 700), +(9300258, 1432006, 1, 1, 0, 700), +(6300000, 1432007, 1, 1, 0, 700), +(9300258, 1432007, 1, 1, 0, 700), +(6300000, 1082060, 1, 1, 0, 700), +(9300258, 1082060, 1, 1, 0, 700), +(6300000, 1060092, 1, 1, 0, 700), +(9300258, 1060092, 1, 1, 0, 700), +(6300000, 1040104, 1, 1, 0, 700), +(9300258, 1040104, 1, 1, 0, 700), +(6300000, 1002022, 1, 1, 0, 700), +(9300258, 1002022, 1, 1, 0, 700), +(6300000, 1050045, 1, 1, 0, 700), +(9300258, 1050045, 1, 1, 0, 700), +(6300000, 1051047, 1, 1, 0, 700), +(9300258, 1051047, 1, 1, 0, 700), +(6300000, 1050068, 1, 1, 0, 700), +(9300258, 1050068, 1, 1, 0, 700), +(6300000, 1382007, 1, 1, 0, 700), +(9300258, 1382007, 1, 1, 0, 700), +(6300000, 1072157, 1, 1, 0, 700), +(9300258, 1072157, 1, 1, 0, 700), +(6300000, 1462008, 1, 1, 0, 700), +(9300258, 1462008, 1, 1, 0, 700), +(6300000, 1051062, 1, 1, 0, 700), +(9300258, 1051062, 1, 1, 0, 700), +(6300000, 1082107, 1, 1, 0, 700), +(9300258, 1082107, 1, 1, 0, 700), +(6300000, 1472024, 1, 1, 0, 700), +(9300258, 1472024, 1, 1, 0, 700), +(6300000, 1472025, 1, 1, 0, 700), +(9300258, 1472025, 1, 1, 0, 700), +(6300000, 1032011, 1, 1, 0, 700), +(9300258, 1032011, 1, 1, 0, 700), +(6300000, 1040099, 1, 1, 0, 700), +(9300258, 1040099, 1, 1, 0, 700), +(6300000, 1060088, 1, 1, 0, 700), +(9300258, 1060088, 1, 1, 0, 700), +(6300005, 2011000, 1, 4, 0, 0), +(9300196, 2011000, 1, 4, 0, 0), +(6300005, 2043801, 1, 4, 0, 10000), +(9300196, 2043801, 1, 4, 0, 10000), +(6300005, 2043701, 1, 4, 0, 10000), +(9300196, 2043701, 1, 4, 0, 10000), +(6300005, 2043201, 1, 4, 0, 10000), +(9300196, 2043201, 1, 4, 0, 10000), +(6300005, 2043001, 1, 4, 0, 10000), +(9300196, 2043001, 1, 4, 0, 10000), +(6300005, 2044101, 1, 4, 0, 10000), +(9300196, 2044101, 1, 4, 0, 10000), +(6300005, 2044001, 1, 4, 0, 10000), +(9300196, 2044001, 1, 4, 0, 10000), +(6300005, 2044201, 1, 4, 0, 10000), +(9300196, 2044201, 1, 4, 0, 10000), +(6300005, 2044701, 1, 4, 0, 10000), +(9300196, 2044701, 1, 4, 0, 10000), +(6300005, 2043301, 1, 4, 0, 10000), +(9300196, 2043301, 1, 4, 0, 10000), +(6300005, 2044601, 1, 4, 0, 10000), +(9300196, 2044601, 1, 4, 0, 10000), +(6300005, 2044501, 1, 4, 0, 10000), +(9300196, 2044501, 1, 4, 0, 10000), +(6300005, 2044401, 1, 4, 0, 10000), +(9300196, 2044401, 1, 4, 0, 10000), +(6300005, 2044301, 1, 4, 0, 10000), +(9300196, 2044301, 1, 4, 0, 10000), +(6300005, 2044902, 1, 4, 0, 10000), +(9300196, 2044902, 1, 4, 0, 10000), +(6300005, 2044803, 1, 4, 0, 10000), +(9300196, 2044803, 1, 4, 0, 10000), +(6300005, 2048004, 1, 4, 0, 10000), +(9300196, 2048004, 1, 4, 0, 10000), +(6300005, 2048001, 1, 4, 0, 10000), +(9300196, 2048001, 1, 4, 0, 10000), +(6300005, 2070006, 1, 4, 0, 2500), +(9300196, 2070006, 1, 4, 0, 2500), +(6300005, 2070007, 1, 4, 0, 2500), +(9300196, 2070007, 1, 4, 0, 2500), +(6300005, 2331000, 1, 4, 0, 0), +(9300196, 2331000, 1, 4, 0, 0), +(6300005, 1102024, 1, 1, 0, 40000), +(9300196, 1102024, 1, 1, 0, 40000), +(6300005, 1032014, 1, 1, 0, 40000), +(9300196, 1032014, 1, 1, 0, 40000), +(6300005, 1092016, 1, 1, 0, 40000), +(9300196, 1092016, 1, 1, 0, 40000), +(6300005, 1092010, 1, 1, 0, 40000), +(9300196, 1092010, 1, 1, 0, 40000), +(6300005, 1302004, 1, 1, 0, 40000), +(9300196, 1302004, 1, 1, 0, 40000), +(6090000, 4000336, 1, 1, 0, 200000), +(6090000, 2384010, 1, 4, 0, 20000), +(6110300, 4000354, 1, 1, 0, 200000), +(9300145, 4000354, 1, 1, 0, 200000), +(6110300, 2000006, 1, 1, 0, 40000), +(9300145, 2000006, 1, 1, 0, 40000), +(6110300, 2049101, 1, 1, 0, 400), +(9300145, 2049101, 1, 1, 0, 400), +(6110300, 2384011, 1, 1, 0, 20000), +(9300145, 2384011, 1, 1, 0, 20000), +(6110300, 4010000, 1, 1, 0, 7000), +(9300145, 4010000, 1, 1, 0, 7000), +(6110300, 4020007, 1, 1, 0, 7000), +(9300145, 4020007, 1, 1, 0, 7000), +(6110300, 4004000, 1, 1, 0, 3000), +(9300145, 4004000, 1, 1, 0, 3000), +(6110300, 1032019, 1, 1, 0, 700), +(9300145, 1032019, 1, 1, 0, 700), +(6110300, 1032020, 1, 1, 0, 700), +(9300145, 1032020, 1, 1, 0, 700), +(6110300, 1102022, 1, 1, 0, 700), +(9300145, 1102022, 1, 1, 0, 700), +(6110300, 1041089, 1, 1, 0, 700), +(9300145, 1041089, 1, 1, 0, 700), +(6110300, 1432006, 1, 1, 0, 700), +(9300145, 1432006, 1, 1, 0, 700), +(6110300, 1040104, 1, 1, 0, 700), +(9300145, 1040104, 1, 1, 0, 700), +(6110300, 1060092, 1, 1, 0, 700), +(9300145, 1060092, 1, 1, 0, 700), +(6110300, 1002022, 1, 1, 0, 700), +(9300145, 1002022, 1, 1, 0, 700), +(6110300, 1051047, 1, 1, 0, 700), +(9300145, 1051047, 1, 1, 0, 700), +(6110300, 1382007, 1, 1, 0, 700), +(9300145, 1382007, 1, 1, 0, 700), +(6110300, 1072157, 1, 1, 0, 700), +(9300145, 1072157, 1, 1, 0, 700), +(6110300, 1462008, 1, 1, 0, 700), +(9300145, 1462008, 1, 1, 0, 700), +(6110300, 1051062, 1, 1, 0, 700), +(9300145, 1051062, 1, 1, 0, 700), +(6110300, 1082107, 1, 1, 0, 700), +(9300145, 1082107, 1, 1, 0, 700), +(6110300, 1072079, 1, 1, 0, 700), +(9300145, 1072079, 1, 1, 0, 700), +(6110300, 1472024, 1, 1, 0, 700), +(9300145, 1472024, 1, 1, 0, 700), +(6110300, 1472026, 1, 1, 0, 700), +(9300145, 1472026, 1, 1, 0, 700), +(6110300, 1032011, 1, 1, 0, 700), +(9300145, 1032011, 1, 1, 0, 700), +(6110300, 1040099, 1, 1, 0, 700), +(9300145, 1040099, 1, 1, 0, 700), +(6110300, 1060088, 1, 1, 0, 700), +(9300145, 1060088, 1, 1, 0, 700), +(6110300, 1072306, 1, 1, 0, 700), +(9300145, 1072306, 1, 1, 0, 700), +(6220000, 4000033, 1, 1, 0, 200000), +(9300194, 4000033, 1, 1, 0, 200000), +(9500311, 4000033, 1, 1, 0, 200000), +(9500346, 4000033, 1, 1, 0, 200000), +(6220000, 4000032, 1, 1, 0, 200000), +(9300194, 4000032, 1, 1, 0, 200000), +(9500311, 4000032, 1, 1, 0, 200000), +(9500346, 4000032, 1, 1, 0, 200000), +(6220000, 4000021, 1, 1, 0, 200000), +(9300194, 4000021, 1, 1, 0, 200000), +(9500311, 4000021, 1, 1, 0, 200000), +(9500346, 4000021, 1, 1, 0, 200000), +(6220000, 2002001, 1, 4, 0, 10000), +(9300194, 2002001, 1, 4, 0, 10000), +(9500311, 2002001, 1, 4, 0, 10000), +(9500346, 2002001, 1, 4, 0, 10000), +(6220000, 2040614, 1, 4, 0, 10000), +(9300194, 2040614, 1, 4, 0, 10000), +(9500311, 2040614, 1, 4, 0, 10000), +(9500346, 2040614, 1, 4, 0, 10000), +(6220000, 2044502, 1, 4, 0, 10000), +(9300194, 2044502, 1, 4, 0, 10000), +(9500311, 2044502, 1, 4, 0, 10000), +(9500346, 2044502, 1, 4, 0, 10000), +(6220000, 2041008, 1, 4, 0, 10000), +(9300194, 2041008, 1, 4, 0, 10000), +(9500311, 2041008, 1, 4, 0, 10000), +(9500346, 2041008, 1, 4, 0, 10000), +(6220000, 2041043, 1, 4, 0, 10000), +(9300194, 2041043, 1, 4, 0, 10000), +(9500311, 2041043, 1, 4, 0, 10000), +(9500346, 2041043, 1, 4, 0, 10000), +(6220000, 2044601, 1, 4, 0, 10000), +(9300194, 2044601, 1, 4, 0, 10000), +(9500311, 2044601, 1, 4, 0, 10000), +(9500346, 2044601, 1, 4, 0, 10000), +(6220000, 2044702, 1, 4, 0, 10000), +(9300194, 2044702, 1, 4, 0, 10000), +(9500311, 2044702, 1, 4, 0, 10000), +(9500346, 2044702, 1, 4, 0, 10000), +(6220000, 2044701, 1, 4, 0, 10000), +(9300194, 2044701, 1, 4, 0, 10000), +(9500311, 2044701, 1, 4, 0, 10000), +(9500346, 2044701, 1, 4, 0, 10000), +(6220000, 2043301, 1, 4, 0, 10000), +(9300194, 2043301, 1, 4, 0, 10000), +(9500311, 2043301, 1, 4, 0, 10000), +(9500346, 2043301, 1, 4, 0, 10000), +(6220000, 2040804, 1, 4, 0, 10000), +(9300194, 2040804, 1, 4, 0, 10000), +(9500311, 2040804, 1, 4, 0, 10000), +(9500346, 2040804, 1, 4, 0, 10000), +(6220000, 2040033, 1, 4, 0, 10000), +(9300194, 2040033, 1, 4, 0, 10000), +(9500311, 2040033, 1, 4, 0, 10000), +(9500346, 2040033, 1, 4, 0, 10000), +(6220000, 2040004, 1, 4, 0, 10000), +(9300194, 2040004, 1, 4, 0, 10000), +(9500311, 2040004, 1, 4, 0, 10000), +(9500346, 2040004, 1, 4, 0, 10000), +(6220000, 2040501, 1, 4, 0, 10000), +(9300194, 2040501, 1, 4, 0, 10000), +(9500311, 2040501, 1, 4, 0, 10000), +(9500346, 2040501, 1, 4, 0, 10000), +(6220000, 2040516, 1, 4, 0, 10000), +(9300194, 2040516, 1, 4, 0, 10000), +(9500311, 2040516, 1, 4, 0, 10000), +(9500346, 2040516, 1, 4, 0, 10000), +(6220000, 2048002, 1, 4, 0, 10000), +(9300194, 2048002, 1, 4, 0, 10000), +(9500311, 2048002, 1, 4, 0, 10000), +(9500346, 2048002, 1, 4, 0, 10000), +(6220000, 2044401, 1, 4, 0, 10000), +(9300194, 2044401, 1, 4, 0, 10000), +(9500311, 2044401, 1, 4, 0, 10000), +(9500346, 2044401, 1, 4, 0, 10000), +(6220000, 2040702, 1, 4, 0, 10000), +(9300194, 2040702, 1, 4, 0, 10000), +(9500311, 2040702, 1, 4, 0, 10000), +(9500346, 2040702, 1, 4, 0, 10000), +(6220000, 2044313, 1, 4, 0, 10000), +(9300194, 2044313, 1, 4, 0, 10000), +(9500311, 2044313, 1, 4, 0, 10000), +(9500346, 2044313, 1, 4, 0, 10000), +(6220000, 2044001, 1, 4, 0, 10000), +(9300194, 2044001, 1, 4, 0, 10000), +(9500311, 2044001, 1, 4, 0, 10000), +(9500346, 2044001, 1, 4, 0, 10000), +(6220000, 2388007, 1, 4, 0, 20000), +(9300194, 2388007, 1, 4, 0, 20000), +(9500311, 2388007, 1, 4, 0, 20000), +(9500346, 2388007, 1, 4, 0, 20000), +(6220000, 4010002, 1, 1, 0, 7000), +(9300194, 4010002, 1, 1, 0, 7000), +(9500311, 4010002, 1, 1, 0, 7000), +(9500346, 4010002, 1, 1, 0, 7000), +(6220000, 4020003, 1, 1, 0, 7000), +(9300194, 4020003, 1, 1, 0, 7000), +(9500311, 4020003, 1, 1, 0, 7000), +(9500346, 4020003, 1, 1, 0, 7000), +(6220000, 1322019, 1, 1, 0, 40000), +(9300194, 1322019, 1, 1, 0, 40000), +(9500311, 1322019, 1, 1, 0, 40000), +(9500346, 1322019, 1, 1, 0, 40000), +(6220000, 1312010, 1, 1, 0, 40000), +(9300194, 1312010, 1, 1, 0, 40000), +(9500311, 1312010, 1, 1, 0, 40000), +(9500346, 1312010, 1, 1, 0, 40000), +(6220000, 1302012, 1, 1, 0, 40000), +(9300194, 1302012, 1, 1, 0, 40000), +(9500311, 1302012, 1, 1, 0, 40000), +(9500346, 1302012, 1, 1, 0, 40000), +(6220000, 1402012, 1, 1, 0, 40000), +(9300194, 1402012, 1, 1, 0, 40000), +(9500311, 1402012, 1, 1, 0, 40000), +(9500346, 1402012, 1, 1, 0, 40000), +(6220000, 1412008, 1, 1, 0, 40000), +(9300194, 1412008, 1, 1, 0, 40000), +(9500311, 1412008, 1, 1, 0, 40000), +(9500346, 1412008, 1, 1, 0, 40000), +(6220000, 1422010, 1, 1, 0, 40000), +(9300194, 1422010, 1, 1, 0, 40000), +(9500311, 1422010, 1, 1, 0, 40000), +(9500346, 1422010, 1, 1, 0, 40000), +(6220000, 1432007, 1, 1, 0, 40000), +(9300194, 1432007, 1, 1, 0, 40000), +(9500311, 1432007, 1, 1, 0, 40000), +(9500346, 1432007, 1, 1, 0, 40000), +(6220000, 1442008, 1, 1, 0, 40000), +(9300194, 1442008, 1, 1, 0, 40000), +(9500311, 1442008, 1, 1, 0, 40000), +(9500346, 1442008, 1, 1, 0, 40000), +(6220000, 1372015, 1, 1, 0, 40000), +(9300194, 1372015, 1, 1, 0, 40000), +(9500311, 1372015, 1, 1, 0, 40000), +(9500346, 1372015, 1, 1, 0, 40000), +(6220000, 1382010, 1, 1, 0, 40000), +(9300194, 1382010, 1, 1, 0, 40000), +(9500311, 1382010, 1, 1, 0, 40000), +(9500346, 1382010, 1, 1, 0, 40000), +(6220000, 1452011, 1, 1, 0, 40000), +(9300194, 1452011, 1, 1, 0, 40000), +(9500311, 1452011, 1, 1, 0, 40000), +(9500346, 1452011, 1, 1, 0, 40000), +(6220000, 1462009, 1, 1, 0, 40000), +(9300194, 1462009, 1, 1, 0, 40000), +(9500311, 1462009, 1, 1, 0, 40000), +(9500346, 1462009, 1, 1, 0, 40000), +(6220000, 1332018, 1, 1, 0, 40000), +(9300194, 1332018, 1, 1, 0, 40000), +(9500311, 1332018, 1, 1, 0, 40000), +(9500346, 1332018, 1, 1, 0, 40000), +(6220000, 1472029, 1, 1, 0, 40000), +(9300194, 1472029, 1, 1, 0, 40000), +(9500311, 1472029, 1, 1, 0, 40000), +(9500346, 1472029, 1, 1, 0, 40000), +(6220000, 1482009, 1, 1, 0, 40000), +(9300194, 1482009, 1, 1, 0, 40000), +(9500311, 1482009, 1, 1, 0, 40000), +(9500346, 1482009, 1, 1, 0, 40000), +(6220000, 1492009, 1, 1, 0, 40000), +(9300194, 1492009, 1, 1, 0, 40000), +(9500311, 1492009, 1, 1, 0, 40000), +(9500346, 1492009, 1, 1, 0, 40000), +(6220001, 4000117, 1, 1, 0, 200000), +(9300197, 4000117, 1, 1, 0, 200000), +(9500347, 4000117, 1, 1, 0, 200000), +(9303007, 4000117, 1, 1, 0, 200000), +(6220001, 4000118, 1, 1, 0, 200000), +(9300197, 4000118, 1, 1, 0, 200000), +(9500347, 4000118, 1, 1, 0, 200000), +(9303007, 4000118, 1, 1, 0, 200000), +(6220001, 4000119, 1, 1, 0, 200000), +(9300197, 4000119, 1, 1, 0, 200000), +(9500347, 4000119, 1, 1, 0, 200000), +(9303007, 4000119, 1, 1, 0, 200000), +(6220001, 2000002, 1, 4, 0, 40000), +(9300197, 2000002, 1, 4, 0, 40000), +(9500347, 2000002, 1, 4, 0, 40000), +(9303007, 2000002, 1, 1, 0, 40000), +(6220001, 2000003, 1, 4, 0, 40000), +(9300197, 2000003, 1, 4, 0, 40000), +(9500347, 2000003, 1, 4, 0, 40000), +(9303007, 2000003, 1, 1, 0, 40000), +(6220001, 2043101, 1, 4, 0, 10000), +(9300197, 2043101, 1, 4, 0, 10000), +(9500347, 2043101, 1, 4, 0, 10000), +(9303007, 2043101, 1, 1, 0, 750), +(6220001, 2043301, 1, 4, 0, 10000), +(9300197, 2043301, 1, 4, 0, 10000), +(9500347, 2043301, 1, 4, 0, 10000), +(9303007, 2043301, 1, 1, 0, 750), +(6220001, 2044902, 1, 4, 0, 10000), +(9300197, 2044902, 1, 4, 0, 10000), +(9500347, 2044902, 1, 4, 0, 10000), +(9303007, 2044902, 1, 1, 0, 750), +(6220001, 2044401, 1, 4, 0, 10000), +(9300197, 2044401, 1, 4, 0, 10000), +(9500347, 2044401, 1, 4, 0, 10000), +(9303007, 2044401, 1, 1, 0, 750), +(6220001, 2044301, 1, 4, 0, 10000), +(9300197, 2044301, 1, 4, 0, 10000), +(9500347, 2044301, 1, 4, 0, 10000), +(9303007, 2044301, 1, 1, 0, 750), +(6220001, 2040804, 1, 4, 0, 10000), +(9300197, 2040804, 1, 4, 0, 10000), +(9500347, 2040804, 1, 4, 0, 10000), +(9303007, 2040804, 1, 1, 0, 750), +(6220001, 2040516, 1, 4, 0, 10000), +(9300197, 2040516, 1, 4, 0, 10000), +(9500347, 2040516, 1, 4, 0, 10000), +(9303007, 2040516, 1, 1, 0, 750), +(6220001, 2041016, 1, 4, 0, 10000), +(9300197, 2041016, 1, 4, 0, 10000), +(9500347, 2041016, 1, 4, 0, 10000), +(9303007, 2041016, 1, 1, 0, 750), +(6220001, 2040707, 1, 4, 0, 10000), +(9300197, 2040707, 1, 4, 0, 10000), +(9500347, 2040707, 1, 4, 0, 10000), +(9303007, 2040707, 1, 1, 0, 750), +(6220001, 2040413, 1, 4, 0, 10000), +(9300197, 2040413, 1, 4, 0, 10000), +(9500347, 2040413, 1, 4, 0, 10000), +(9303007, 2040413, 1, 1, 0, 750), +(6220001, 2040927, 1, 4, 0, 10000), +(9300197, 2040927, 1, 4, 0, 10000), +(9500347, 2040927, 1, 4, 0, 10000), +(9303007, 2040927, 1, 1, 0, 750), +(6220001, 2043216, 1, 4, 0, 10000), +(9300197, 2043216, 1, 4, 0, 10000), +(9500347, 2043216, 1, 4, 0, 10000), +(9303007, 2043216, 1, 1, 0, 750), +(6220001, 2049000, 1, 4, 0, 2500), +(9300197, 2049000, 1, 4, 0, 2500), +(9500347, 2049000, 1, 4, 0, 2500), +(9303007, 2049000, 1, 1, 0, 400), +(6220001, 2388031, 1, 4, 0, 20000), +(9300197, 2388031, 1, 4, 0, 20000), +(9500347, 2388031, 1, 4, 0, 20000), +(9303007, 2388031, 1, 1, 0, 20000), +(6220001, 2330003, 1, 4, 0, 2500), +(9300197, 2330003, 1, 4, 0, 2500), +(9500347, 2330003, 1, 4, 0, 2500), +(9303007, 2330003, 1, 1, 0, 400), +(6220001, 2070004, 1, 4, 0, 2500), +(9300197, 2070004, 1, 4, 0, 2500), +(9500347, 2070004, 1, 4, 0, 2500), +(9303007, 2070004, 1, 1, 0, 400), +(6220001, 4004001, 1, 1, 0, 3000), +(9300197, 4004001, 1, 1, 0, 3000), +(9500347, 4004001, 1, 1, 0, 3000), +(9303007, 4004001, 1, 1, 0, 3000), +(6220001, 4004000, 1, 1, 0, 3000), +(9300197, 4004000, 1, 1, 0, 3000), +(9500347, 4004000, 1, 1, 0, 3000), +(9303007, 4004000, 1, 1, 0, 3000), +(6220001, 1302049, 1, 1, 0, 40000), +(9300197, 1302049, 1, 1, 0, 40000), +(9500347, 1302049, 1, 1, 0, 40000), +(9303007, 1302049, 1, 1, 0, 700), +(6220001, 1002024, 1, 1, 0, 40000), +(9300197, 1002024, 1, 1, 0, 40000), +(9500347, 1002024, 1, 1, 0, 40000), +(9303007, 1002024, 1, 1, 0, 700), +(6220001, 1002095, 1, 1, 0, 40000), +(9300197, 1002095, 1, 1, 0, 40000), +(9500347, 1002095, 1, 1, 0, 40000), +(9303007, 1002095, 1, 1, 0, 700), +(6220001, 1002254, 1, 1, 0, 40000), +(9300197, 1002254, 1, 1, 0, 40000), +(9500347, 1002254, 1, 1, 0, 40000), +(9303007, 1002254, 1, 1, 0, 700), +(6220001, 1082100, 1, 1, 0, 40000), +(9300197, 1082100, 1, 1, 0, 40000), +(9500347, 1082100, 1, 1, 0, 40000), +(9303007, 1082100, 1, 1, 0, 700), +(6220001, 1002289, 1, 1, 0, 40000), +(9300197, 1002289, 1, 1, 0, 40000), +(9500347, 1002289, 1, 1, 0, 40000), +(9303007, 1002289, 1, 1, 0, 700), +(6220001, 1002285, 1, 1, 0, 40000), +(9300197, 1002285, 1, 1, 0, 40000), +(9500347, 1002285, 1, 1, 0, 40000), +(9303007, 1002285, 1, 1, 0, 700), +(9420534, 4130013, 1, 1, 0, 3000), +(9420534, 2000004, 1, 1, 0, 40000), +(9420534, 2000002, 1, 1, 0, 40000), +(9420534, 4006000, 1, 1, 0, 7000), +(9420534, 4020008, 1, 1, 0, 7000), +(9420534, 4004004, 1, 1, 0, 3000), +(9420534, 4010002, 1, 1, 0, 7000), +(9420534, 1032011, 1, 1, 0, 700), +(9420534, 1082104, 1, 1, 0, 700), +(9420534, 1072041, 1, 1, 0, 700), +(9420534, 1050068, 1, 1, 0, 700), +(9420534, 1002254, 1, 1, 0, 700), +(9420534, 1041103, 1, 1, 0, 700), +(9420534, 1061102, 1, 1, 0, 700), +(6230300, 4000129, 1, 1, 0, 200000), +(9300317, 4000129, 1, 1, 0, 200000), +(6230300, 4031189, 1, 1, 0, 7000), +(9300317, 4031189, 1, 1, 0, 7000), +(6230300, 2000002, 1, 1, 0, 40000), +(9300317, 2000002, 1, 4, 0, 40000), +(6230300, 2043701, 1, 1, 0, 750), +(9300317, 2043701, 1, 4, 0, 10000), +(6230300, 2040301, 1, 1, 0, 750), +(9300317, 2040301, 1, 4, 0, 10000), +(6230300, 2384012, 1, 1, 0, 20000), +(9300317, 2384012, 1, 4, 0, 20000), +(6230300, 4020008, 1, 1, 0, 7000), +(9300317, 4020008, 1, 1, 0, 7000), +(6230300, 4010006, 1, 1, 0, 7000), +(9300317, 4010006, 1, 1, 0, 7000), +(6230300, 4004003, 1, 1, 0, 3000), +(9300317, 4004003, 1, 1, 0, 3000), +(6230300, 4004004, 1, 1, 0, 3000), +(9300317, 4004004, 1, 1, 0, 3000), +(6230300, 1032015, 1, 1, 0, 700), +(9300317, 1032015, 1, 1, 0, 40000), +(6230300, 1102024, 1, 1, 0, 700), +(9300317, 1102024, 1, 1, 0, 40000), +(6230300, 1322026, 1, 1, 0, 700), +(9300317, 1322026, 1, 1, 0, 40000), +(6230300, 1432012, 1, 1, 0, 700), +(9300317, 1432012, 1, 1, 0, 40000), +(6230300, 1432007, 1, 1, 0, 700), +(9300317, 1432007, 1, 1, 0, 40000), +(6230300, 1040089, 1, 1, 0, 700), +(9300317, 1040089, 1, 1, 0, 40000), +(6230300, 1060078, 1, 1, 0, 700), +(9300317, 1060078, 1, 1, 0, 40000), +(6230300, 1082060, 1, 1, 0, 700), +(9300317, 1082060, 1, 1, 0, 40000), +(6230300, 1002101, 1, 1, 0, 700), +(9300317, 1002101, 1, 1, 0, 40000), +(6230300, 1051031, 1, 1, 0, 700), +(9300317, 1051031, 1, 1, 0, 40000), +(6230300, 1082087, 1, 1, 0, 700), +(9300317, 1082087, 1, 1, 0, 40000), +(6230300, 1002242, 1, 1, 0, 700), +(9300317, 1002242, 1, 1, 0, 40000), +(6230300, 1051042, 1, 1, 0, 700), +(9300317, 1051042, 1, 1, 0, 40000), +(6230300, 1072125, 1, 1, 0, 700), +(9300317, 1072125, 1, 1, 0, 40000), +(6230300, 1082065, 1, 1, 0, 700), +(9300317, 1082065, 1, 1, 0, 40000), +(6230300, 1072152, 1, 1, 0, 700), +(9300317, 1072152, 1, 1, 0, 40000), +(6230300, 1040099, 1, 1, 0, 700), +(9300317, 1040099, 1, 1, 0, 40000), +(6230300, 1060088, 1, 1, 0, 700), +(9300317, 1060088, 1, 1, 0, 40000), +(6230300, 1082096, 1, 1, 0, 700), +(9300317, 1082096, 1, 1, 0, 40000), +(6230300, 1482008, 1, 1, 0, 700), +(9300317, 1482008, 1, 1, 0, 40000), +(6130209, 4000289, 1, 1, 0, 200000), +(9300163, 4000289, 1, 1, 0, 200000), +(9300248, 4000289, 1, 1, 0, 200000), +(6130209, 4130017, 1, 1, 0, 3000), +(9300163, 4130017, 1, 1, 0, 3000), +(9300248, 4130017, 1, 1, 0, 3000), +(6130209, 2040301, 1, 1, 0, 750), +(9300163, 2040301, 1, 1, 0, 750), +(9300248, 2040301, 1, 1, 0, 750), +(6130209, 2384013, 1, 1, 0, 20000), +(9300163, 2384013, 1, 1, 0, 20000), +(9300248, 2384013, 1, 1, 0, 20000), +(6130209, 4020004, 1, 1, 0, 7000), +(9300163, 4020004, 1, 1, 0, 7000), +(9300248, 4020004, 1, 1, 0, 7000), +(6130209, 4020002, 1, 1, 0, 7000), +(9300163, 4020002, 1, 1, 0, 7000), +(9300248, 4020002, 1, 1, 0, 7000), +(6130209, 1032014, 1, 1, 0, 700), +(9300163, 1032014, 1, 1, 0, 700), +(9300248, 1032014, 1, 1, 0, 700), +(6130209, 1092015, 1, 1, 0, 700), +(9300163, 1092015, 1, 1, 0, 700), +(9300248, 1092015, 1, 1, 0, 700), +(6130209, 1040096, 1, 1, 0, 700), +(9300163, 1040096, 1, 1, 0, 700), +(9300248, 1040096, 1, 1, 0, 700), +(6130209, 1060085, 1, 1, 0, 700), +(9300163, 1060085, 1, 1, 0, 700), +(9300248, 1060085, 1, 1, 0, 700), +(6130209, 1332019, 1, 1, 0, 700), +(9300163, 1332019, 1, 1, 0, 700), +(9300248, 1332019, 1, 1, 0, 700), +(6130209, 1472031, 1, 1, 0, 700), +(9300163, 1472031, 1, 1, 0, 700), +(9300248, 1472031, 1, 1, 0, 700), +(6130209, 1492008, 1, 1, 0, 700), +(9300163, 1492008, 1, 1, 0, 700), +(9300248, 1492008, 1, 1, 0, 700), +(6230500, 4000144, 1, 1, 0, 200000), +(9300318, 4000144, 1, 1, 0, 200000), +(9500127, 4000144, 1, 1, 0, 200000), +(6230500, 4000021, 1, 1, 0, 200000), +(9300318, 4000021, 1, 1, 0, 200000), +(9500127, 4000021, 1, 1, 0, 200000), +(6230500, 2000002, 1, 1, 0, 40000), +(9300318, 2000002, 1, 4, 0, 40000), +(9500127, 2000002, 1, 1, 0, 40000), +(6230500, 2000004, 1, 1, 0, 40000), +(9300318, 2000004, 1, 4, 0, 40000), +(9500127, 2000004, 1, 1, 0, 40000), +(6230500, 4006000, 1, 1, 0, 7000), +(9300318, 4006000, 1, 1, 0, 7000), +(9500127, 4006000, 1, 1, 0, 7000), +(6230500, 2043301, 1, 1, 0, 750), +(9300318, 2043301, 1, 4, 0, 10000), +(9500127, 2043301, 1, 1, 0, 750), +(6230500, 2041022, 1, 1, 0, 750), +(9300318, 2041022, 1, 4, 0, 10000), +(9500127, 2041022, 1, 1, 0, 750), +(6230500, 2384014, 1, 1, 0, 20000), +(9300318, 2384014, 1, 4, 0, 20000), +(9500127, 2384014, 1, 1, 0, 20000), +(6230500, 4020006, 1, 1, 0, 7000), +(9300318, 4020006, 1, 1, 0, 7000), +(9500127, 4020006, 1, 1, 0, 7000), +(6230500, 4010006, 1, 1, 0, 7000), +(9300318, 4010006, 1, 1, 0, 7000), +(9500127, 4010006, 1, 1, 0, 7000), +(6230500, 4004004, 1, 1, 0, 3000), +(9300318, 4004004, 1, 1, 0, 3000), +(9500127, 4004004, 1, 1, 0, 3000), +(6230500, 1032020, 1, 1, 0, 700), +(9300318, 1032020, 1, 1, 0, 40000), +(9500127, 1032020, 1, 1, 0, 700), +(6230500, 1040091, 1, 1, 0, 700), +(9300318, 1040091, 1, 1, 0, 40000), +(9500127, 1040091, 1, 1, 0, 700), +(6230500, 1060080, 1, 1, 0, 700), +(9300318, 1060080, 1, 1, 0, 40000), +(9500127, 1060080, 1, 1, 0, 700), +(6230500, 1082103, 1, 1, 0, 700), +(9300318, 1082103, 1, 1, 0, 40000), +(9500127, 1082103, 1, 1, 0, 700), +(6230500, 1002244, 1, 1, 0, 700), +(9300318, 1002244, 1, 1, 0, 40000), +(9500127, 1002244, 1, 1, 0, 700), +(6230500, 1050049, 1, 1, 0, 700), +(9300318, 1050049, 1, 1, 0, 40000), +(9500127, 1050049, 1, 1, 0, 700), +(6230500, 1072159, 1, 1, 0, 700), +(9300318, 1072159, 1, 1, 0, 40000), +(9500127, 1072159, 1, 1, 0, 700), +(6230500, 1002270, 1, 1, 0, 700), +(9300318, 1002270, 1, 1, 0, 40000), +(9500127, 1002270, 1, 1, 0, 700), +(6230500, 1082085, 1, 1, 0, 700), +(9300318, 1082085, 1, 1, 0, 40000), +(9500127, 1082085, 1, 1, 0, 700), +(6230500, 1332019, 1, 1, 0, 700), +(9300318, 1332019, 1, 1, 0, 40000), +(9500127, 1332019, 1, 1, 0, 700), +(6230500, 1002249, 1, 1, 0, 700), +(9300318, 1002249, 1, 1, 0, 40000), +(9500127, 1002249, 1, 1, 0, 700), +(6400000, 4000056, 1, 1, 0, 200000), +(9500128, 4000056, 1, 1, 0, 200000), +(6400000, 4000021, 1, 1, 0, 200000), +(9500128, 4000021, 1, 1, 0, 200000), +(6400000, 4003004, 1, 1, 0, 7000), +(9500128, 4003004, 1, 1, 0, 7000), +(6400000, 4003002, 1, 1, 0, 7000), +(9500128, 4003002, 1, 1, 0, 7000), +(6400000, 2384016, 1, 1, 0, 20000), +(9500128, 2384016, 1, 1, 0, 20000), +(6400000, 4010006, 1, 1, 0, 7000), +(9500128, 4010006, 1, 1, 0, 7000), +(6400000, 4020003, 1, 1, 0, 7000), +(9500128, 4020003, 1, 1, 0, 7000), +(6400000, 4004001, 1, 1, 0, 3000), +(9500128, 4004001, 1, 1, 0, 3000), +(6400000, 4004004, 1, 1, 0, 3000), +(9500128, 4004004, 1, 1, 0, 3000), +(6400000, 1032015, 1, 1, 0, 700), +(9500128, 1032015, 1, 1, 0, 700), +(6400000, 1072156, 1, 1, 0, 700), +(9500128, 1072156, 1, 1, 0, 700), +(6400000, 1002030, 1, 1, 0, 700), +(9500128, 1002030, 1, 1, 0, 700), +(6400000, 1302011, 1, 1, 0, 700), +(9500128, 1302011, 1, 1, 0, 700), +(6400000, 1002271, 1, 1, 0, 700), +(9500128, 1002271, 1, 1, 0, 700), +(6400000, 1002269, 1, 1, 0, 700), +(9500128, 1002269, 1, 1, 0, 700), +(6400000, 1061099, 1, 1, 0, 700), +(9500128, 1061099, 1, 1, 0, 700), +(6230601, 4000030, 1, 1, 0, 200000), +(6230601, 4030012, 1, 1, 0, 10000), +(6230601, 2000002, 1, 1, 0, 40000), +(6230601, 2000004, 1, 1, 0, 40000), +(6230601, 2041043, 1, 1, 0, 750), +(6230601, 2040401, 1, 1, 0, 750), +(6230601, 2384015, 1, 1, 0, 20000), +(6230601, 4010005, 1, 1, 0, 7000), +(6230601, 4010003, 1, 1, 0, 7000), +(6230601, 4010006, 1, 1, 0, 7000), +(6230601, 4020008, 1, 1, 0, 7000), +(6230601, 1432007, 1, 1, 0, 700), +(6230601, 1040091, 1, 1, 0, 700), +(6230601, 1060080, 1, 1, 0, 700), +(6230601, 1412008, 1, 1, 0, 700), +(6230601, 1092017, 1, 1, 0, 700), +(6230601, 1442010, 1, 1, 0, 700), +(6230601, 1002242, 1, 1, 0, 700), +(6230601, 1372015, 1, 1, 0, 700), +(6230601, 1082098, 1, 1, 0, 700), +(6230601, 1082109, 1, 1, 0, 700), +(6230601, 1002208, 1, 1, 0, 700), +(6230601, 1002247, 1, 1, 0, 700), +(6230601, 1041101, 1, 1, 0, 700), +(6230601, 1061100, 1, 1, 0, 700), +(6230601, 1072172, 1, 1, 0, 700), +(6230601, 1082076, 1, 1, 0, 700), +(6230601, 1052122, 1, 1, 0, 700), +(6130208, 4000296, 1, 1, 0, 200000), +(9300080, 4000296, 1, 1, 0, 200000), +(9300241, 4000296, 1, 1, 0, 200000), +(6130208, 2040705, 1, 1, 0, 750), +(9300080, 2040705, 1, 1, 0, 750), +(9300241, 2040705, 1, 1, 0, 750), +(6130208, 2044904, 1, 1, 0, 750), +(9300080, 2044904, 1, 1, 0, 750), +(9300241, 2044904, 1, 1, 0, 750), +(6130208, 2384017, 1, 1, 0, 20000), +(9300080, 2384017, 1, 1, 0, 20000), +(9300241, 2384017, 1, 1, 0, 20000), +(6130208, 1032015, 1, 1, 0, 700), +(9300080, 1032015, 1, 1, 0, 700), +(9300241, 1032015, 1, 1, 0, 700), +(6130208, 1322018, 1, 1, 0, 700), +(9300080, 1322018, 1, 1, 0, 700), +(9300241, 1322018, 1, 1, 0, 700), +(6130208, 1462008, 1, 1, 0, 700), +(9300080, 1462008, 1, 1, 0, 700), +(9300241, 1462008, 1, 1, 0, 700), +(6130208, 1072080, 1, 1, 0, 700), +(9300080, 1072080, 1, 1, 0, 700), +(9300241, 1072080, 1, 1, 0, 700), +(6130208, 1002289, 1, 1, 0, 700), +(9300080, 1002289, 1, 1, 0, 700), +(9300241, 1002289, 1, 1, 0, 700), +(6130208, 1472027, 1, 1, 0, 700), +(9300080, 1472027, 1, 1, 0, 700), +(9300241, 1472027, 1, 1, 0, 700), +(6130208, 1082204, 1, 1, 0, 700), +(9300080, 1082204, 1, 1, 0, 700), +(9300241, 1082204, 1, 1, 0, 700), +(9420512, 4000383, 1, 1, 0, 200000), +(9420512, 4000381, 1, 1, 0, 200000), +(9420512, 2070005, 1, 1, 0, 400), +(9420512, 2041022, 1, 1, 0, 750), +(9420512, 2043301, 1, 1, 0, 750), +(9420512, 4020006, 1, 1, 0, 7000), +(9420512, 4010006, 1, 1, 0, 7000), +(9420512, 4004004, 1, 1, 0, 3000), +(9420512, 1032015, 1, 1, 0, 700), +(9420512, 1312009, 1, 1, 0, 700), +(9420512, 1040089, 1, 1, 0, 700), +(9420512, 1060078, 1, 1, 0, 700), +(9420512, 1040093, 1, 1, 0, 700), +(9420512, 1302011, 1, 1, 0, 700), +(9420512, 1082082, 1, 1, 0, 700), +(9420512, 1050093, 1, 1, 0, 700), +(9420512, 1452007, 1, 1, 0, 700), +(9420512, 1332015, 1, 1, 0, 700), +(6110301, 4000363, 1, 1, 0, 200000), +(6110301, 2000006, 1, 1, 0, 40000), +(6110301, 2000004, 1, 1, 0, 40000), +(6110301, 2000002, 1, 1, 0, 40000), +(6110301, 2330003, 1, 1, 0, 400), +(6110301, 2043302, 1, 1, 0, 750), +(6110301, 2384018, 1, 1, 0, 20000), +(6110301, 4010002, 1, 1, 0, 7000), +(6110301, 4020005, 1, 1, 0, 7000), +(6110301, 4004001, 1, 1, 0, 3000), +(6110301, 1032015, 1, 1, 0, 700), +(6110301, 1322018, 1, 1, 0, 700), +(6110301, 1051078, 1, 1, 0, 700), +(6110301, 1092015, 1, 1, 0, 700), +(6110301, 1072080, 1, 1, 0, 700), +(6110301, 1462008, 1, 1, 0, 700), +(6110301, 1050088, 1, 1, 0, 700), +(6110301, 1002289, 1, 1, 0, 700), +(6110301, 1472027, 1, 1, 0, 700), +(6110301, 1072085, 1, 1, 0, 700), +(6110301, 1072309, 1, 1, 0, 700), +(9420535, 4030009, 1, 1, 0, 10000), +(9420535, 2000004, 1, 1, 0, 40000), +(9420535, 1032020, 1, 1, 0, 700), +(9420535, 1442009, 1, 1, 0, 700), +(9420535, 1051016, 1, 1, 0, 700), +(9420535, 1072159, 1, 1, 0, 700), +(9420535, 1050070, 1, 1, 0, 700), +(9420535, 1092029, 1, 1, 0, 700), +(9420535, 1082097, 1, 1, 0, 700), +(9420535, 1492009, 1, 1, 0, 700), +(7130100, 4000028, 1, 1, 0, 200000), +(9300249, 4000028, 1, 1, 0, 200000), +(7130100, 2000006, 1, 1, 0, 40000), +(9300249, 2000006, 1, 1, 0, 40000), +(7130100, 2000005, 1, 1, 0, 40000), +(9300249, 2000005, 1, 1, 0, 40000), +(7130100, 2070005, 1, 1, 0, 400), +(9300249, 2070005, 1, 1, 0, 400), +(7130100, 2043001, 1, 1, 0, 750), +(9300249, 2043001, 1, 1, 0, 750), +(7130100, 2043101, 1, 1, 0, 750), +(9300249, 2043101, 1, 1, 0, 750), +(7130100, 2044401, 1, 1, 0, 750), +(9300249, 2044401, 1, 1, 0, 750), +(7130100, 2044301, 1, 1, 0, 750), +(9300249, 2044301, 1, 1, 0, 750), +(7130100, 2049000, 1, 1, 0, 400), +(9300249, 2049000, 1, 1, 0, 400), +(7130100, 4006000, 1, 1, 0, 7000), +(9300249, 4006000, 1, 1, 0, 7000), +(7130100, 2384020, 1, 1, 0, 20000), +(9300249, 2384020, 1, 1, 0, 20000), +(7130100, 4010006, 1, 1, 0, 7000), +(9300249, 4010006, 1, 1, 0, 7000), +(7130100, 1102027, 1, 1, 0, 700), +(9300249, 1102027, 1, 1, 0, 700), +(7130100, 1422014, 1, 1, 0, 700), +(9300249, 1422014, 1, 1, 0, 700), +(7130100, 1041093, 1, 1, 0, 700), +(9300249, 1041093, 1, 1, 0, 700), +(7130100, 1061092, 1, 1, 0, 700), +(9300249, 1061092, 1, 1, 0, 700), +(7130100, 1322019, 1, 1, 0, 700), +(9300249, 1322019, 1, 1, 0, 700), +(7130100, 1002095, 1, 1, 0, 700), +(9300249, 1002095, 1, 1, 0, 700), +(7130100, 1082115, 1, 1, 0, 700), +(9300249, 1082115, 1, 1, 0, 700), +(7130100, 1050067, 1, 1, 0, 700), +(9300249, 1050067, 1, 1, 0, 700), +(7130100, 1382010, 1, 1, 0, 700), +(9300249, 1382010, 1, 1, 0, 700), +(7130100, 1002272, 1, 1, 0, 700), +(9300249, 1002272, 1, 1, 0, 700), +(7130100, 1051055, 1, 1, 0, 700), +(9300249, 1051055, 1, 1, 0, 700), +(7130100, 1452009, 1, 1, 0, 700), +(9300249, 1452009, 1, 1, 0, 700), +(7130100, 1072184, 1, 1, 0, 700), +(9300249, 1072184, 1, 1, 0, 700), +(7130100, 1002287, 1, 1, 0, 700), +(9300249, 1002287, 1, 1, 0, 700), +(7130100, 1051064, 1, 1, 0, 700), +(9300249, 1051064, 1, 1, 0, 700), +(7130100, 1472030, 1, 1, 0, 700), +(9300249, 1472030, 1, 1, 0, 700), +(7130100, 1082118, 1, 1, 0, 700), +(9300249, 1082118, 1, 1, 0, 700), +(7130100, 1472026, 1, 1, 0, 700), +(9300249, 1472026, 1, 1, 0, 700), +(7130100, 1002283, 1, 1, 0, 700), +(9300249, 1002283, 1, 1, 0, 700), +(7130100, 1060089, 1, 1, 0, 700), +(9300249, 1060089, 1, 1, 0, 700), +(7130100, 1072163, 1, 1, 0, 700), +(9300249, 1072163, 1, 1, 0, 700), +(8140200, 4000145, 1, 1, 0, 200000), +(9300319, 4000145, 1, 1, 0, 200000), +(8140200, 2000006, 1, 1, 0, 40000), +(9300319, 2000006, 1, 4, 0, 40000), +(8140200, 2000004, 1, 1, 0, 40000), +(9300319, 2000004, 1, 4, 0, 40000), +(8140200, 2020014, 1, 1, 0, 3000), +(9300319, 2020014, 1, 4, 0, 3000), +(8140200, 2002003, 1, 1, 0, 10000), +(9300319, 2002003, 1, 4, 0, 10000), +(8140200, 4006000, 1, 1, 0, 7000), +(9300319, 4006000, 1, 1, 0, 7000), +(8140200, 4006001, 1, 1, 0, 7000), +(9300319, 4006001, 1, 1, 0, 7000), +(8140200, 2040320, 1, 1, 0, 750), +(9300319, 2040320, 1, 4, 0, 10000), +(8140200, 2040802, 1, 1, 0, 750), +(9300319, 2040802, 1, 4, 0, 10000), +(8140200, 2384019, 1, 1, 0, 20000), +(9300319, 2384019, 1, 4, 0, 20000), +(8140200, 4010001, 1, 1, 0, 7000), +(9300319, 4010001, 1, 1, 0, 7000), +(8140200, 4020001, 1, 1, 0, 7000), +(9300319, 4020001, 1, 1, 0, 7000), +(8140200, 4004003, 1, 1, 0, 3000), +(9300319, 4004003, 1, 1, 0, 3000), +(8140200, 1032015, 1, 1, 0, 700), +(9300319, 1032015, 1, 1, 0, 40000), +(8140200, 1032022, 1, 1, 0, 700), +(9300319, 1032022, 1, 1, 0, 40000), +(8140200, 1082114, 1, 1, 0, 700), +(9300319, 1082114, 1, 1, 0, 40000), +(8140200, 1082104, 1, 1, 0, 700), +(9300319, 1082104, 1, 1, 0, 40000), +(8140200, 1060082, 1, 1, 0, 700), +(9300319, 1060082, 1, 1, 0, 40000), +(8140200, 1060079, 1, 1, 0, 700), +(9300319, 1060079, 1, 1, 0, 40000), +(8140200, 1082059, 1, 1, 0, 700), +(9300319, 1082059, 1, 1, 0, 40000), +(8140200, 1322019, 1, 1, 0, 700), +(9300319, 1322019, 1, 1, 0, 40000), +(8140200, 1050073, 1, 1, 0, 700), +(9300319, 1050073, 1, 1, 0, 40000), +(8140200, 1050054, 1, 1, 0, 700), +(9300319, 1050054, 1, 1, 0, 40000), +(8140200, 1051052, 1, 1, 0, 700), +(9300319, 1051052, 1, 1, 0, 40000), +(8140200, 1072159, 1, 1, 0, 700), +(9300319, 1072159, 1, 1, 0, 40000), +(8140200, 1002270, 1, 1, 0, 700), +(9300319, 1002270, 1, 1, 0, 40000), +(8140200, 1050058, 1, 1, 0, 700), +(9300319, 1050058, 1, 1, 0, 40000), +(8140200, 1051062, 1, 1, 0, 700), +(9300319, 1051062, 1, 1, 0, 40000), +(8140200, 1072144, 1, 1, 0, 700), +(9300319, 1072144, 1, 1, 0, 40000), +(8140200, 1472022, 1, 1, 0, 700), +(9300319, 1472022, 1, 1, 0, 40000), +(8140200, 1072162, 1, 1, 0, 700), +(9300319, 1072162, 1, 1, 0, 40000), +(8140200, 1482009, 1, 1, 0, 700), +(9300319, 1482009, 1, 1, 0, 40000), +(7130400, 4006001, 1, 1, 0, 7000), +(9500158, 4006001, 1, 1, 0, 7000), +(7130400, 4130015, 1, 1, 0, 3000), +(9500158, 4130015, 1, 1, 0, 3000), +(7130400, 4130002, 1, 1, 0, 3000), +(9500158, 4130002, 1, 1, 0, 3000), +(7130400, 4130005, 1, 1, 0, 3000), +(9500158, 4130005, 1, 1, 0, 3000), +(7130400, 2384021, 1, 4, 0, 20000), +(9500158, 2384021, 1, 4, 0, 20000), +(7130400, 2000006, 1, 4, 0, 40000), +(9500158, 2000006, 1, 4, 0, 40000), +(7130400, 2000004, 1, 4, 0, 40000), +(9500158, 2000004, 1, 4, 0, 40000), +(7130400, 2002003, 1, 4, 0, 10000), +(9500158, 2002003, 1, 4, 0, 10000), +(7130400, 2040504, 1, 4, 0, 10000), +(9500158, 2040504, 1, 4, 0, 10000), +(7130400, 2040302, 1, 4, 0, 10000), +(9500158, 2040302, 1, 4, 0, 10000), +(7130400, 4020001, 1, 1, 0, 7000), +(9500158, 4020001, 1, 1, 0, 7000), +(7130400, 4005001, 1, 1, 0, 7000), +(9500158, 4005001, 1, 1, 0, 7000), +(7130400, 4010001, 1, 1, 0, 7000), +(9500158, 4010001, 1, 1, 0, 7000), +(7130400, 4004003, 1, 1, 0, 3000), +(9500158, 4004003, 1, 1, 0, 3000), +(7130400, 1102021, 1, 1, 0, 40000), +(9500158, 1102021, 1, 1, 0, 40000), +(7130400, 1092016, 1, 1, 0, 40000), +(9500158, 1092016, 1, 1, 0, 40000), +(7130400, 1040102, 1, 1, 0, 40000), +(9500158, 1040102, 1, 1, 0, 40000), +(7130400, 1060090, 1, 1, 0, 40000), +(9500158, 1060090, 1, 1, 0, 40000), +(7130400, 1050058, 1, 1, 0, 40000), +(9500158, 1050058, 1, 1, 0, 40000), +(7130400, 1462009, 1, 1, 0, 40000), +(9500158, 1462009, 1, 1, 0, 40000), +(7130400, 1041094, 1, 1, 0, 40000), +(9500158, 1041094, 1, 1, 0, 40000), +(7130400, 1061093, 1, 1, 0, 40000), +(9500158, 1061093, 1, 1, 0, 40000), +(7130400, 1472024, 1, 1, 0, 40000), +(9500158, 1472024, 1, 1, 0, 40000), +(7130400, 1072309, 1, 1, 0, 40000), +(9500158, 1072309, 1, 1, 0, 40000), +(7130401, 4006001, 1, 1, 0, 7000), +(9500130, 4006001, 1, 1, 0, 7000), +(9500159, 4006001, 1, 1, 0, 7000), +(7130401, 4130015, 1, 1, 0, 3000), +(9500130, 4130015, 1, 1, 0, 3000), +(9500159, 4130015, 1, 1, 0, 3000), +(7130401, 4130006, 1, 1, 0, 3000), +(9500130, 4130006, 1, 1, 0, 3000), +(9500159, 4130006, 1, 1, 0, 3000), +(7130401, 2000004, 1, 4, 0, 40000), +(9500130, 2000004, 1, 4, 0, 40000), +(9500159, 2000004, 1, 4, 0, 40000), +(7130401, 2002000, 1, 4, 0, 10000), +(9500130, 2002000, 1, 4, 0, 10000), +(9500159, 2002000, 1, 4, 0, 10000), +(7130401, 2000006, 1, 4, 0, 40000), +(9500130, 2000006, 1, 4, 0, 40000), +(9500159, 2000006, 1, 4, 0, 40000), +(7130401, 2384022, 1, 4, 0, 20000), +(9500130, 2384022, 1, 4, 0, 20000), +(9500159, 2384022, 1, 4, 0, 20000), +(7130401, 2070007, 1, 4, 0, 2500), +(9500130, 2070007, 1, 4, 0, 2500), +(9500159, 2070007, 1, 4, 0, 2500), +(7130401, 2040701, 1, 4, 0, 10000), +(9500130, 2040701, 1, 4, 0, 10000), +(9500159, 2040701, 1, 4, 0, 10000), +(7130401, 2040620, 1, 4, 0, 10000), +(9500130, 2040620, 1, 4, 0, 10000), +(9500159, 2040620, 1, 4, 0, 10000), +(7130401, 2040601, 1, 4, 0, 10000), +(9500130, 2040601, 1, 4, 0, 10000), +(9500159, 2040601, 1, 4, 0, 10000), +(7130401, 2044013, 1, 4, 0, 10000), +(9500130, 2044013, 1, 4, 0, 10000), +(9500159, 2044013, 1, 4, 0, 10000), +(7130401, 4020000, 1, 1, 0, 7000), +(9500130, 4020000, 1, 1, 0, 7000), +(9500159, 4020000, 1, 1, 0, 7000), +(7130401, 4010004, 1, 1, 0, 7000), +(9500130, 4010004, 1, 1, 0, 7000), +(9500159, 4010004, 1, 1, 0, 7000), +(7130401, 4010006, 1, 1, 0, 7000), +(9500130, 4010006, 1, 1, 0, 7000), +(9500159, 4010006, 1, 1, 0, 7000), +(7130401, 4004002, 1, 1, 0, 3000), +(9500130, 4004002, 1, 1, 0, 3000), +(9500159, 4004002, 1, 1, 0, 3000), +(7130401, 1032022, 1, 1, 0, 40000), +(9500130, 1032022, 1, 1, 0, 40000), +(9500159, 1032022, 1, 1, 0, 40000), +(7130401, 1442010, 1, 1, 0, 40000), +(9500130, 1442010, 1, 1, 0, 40000), +(9500159, 1442010, 1, 1, 0, 40000), +(7130401, 1412008, 1, 1, 0, 40000), +(9500130, 1412008, 1, 1, 0, 40000), +(9500159, 1412008, 1, 1, 0, 40000), +(7130401, 1422009, 1, 1, 0, 40000), +(9500130, 1422009, 1, 1, 0, 40000), +(9500159, 1422009, 1, 1, 0, 40000), +(7130401, 1072158, 1, 1, 0, 40000), +(9500130, 1072158, 1, 1, 0, 40000), +(9500159, 1072158, 1, 1, 0, 40000), +(7130401, 1452010, 1, 1, 0, 40000), +(9500130, 1452010, 1, 1, 0, 40000), +(9500159, 1452010, 1, 1, 0, 40000), +(7130401, 1051041, 1, 1, 0, 40000), +(9500130, 1051041, 1, 1, 0, 40000), +(9500159, 1051041, 1, 1, 0, 40000), +(7130401, 1072163, 1, 1, 0, 40000), +(9500130, 1072163, 1, 1, 0, 40000), +(9500159, 1072163, 1, 1, 0, 40000), +(7130401, 1060094, 1, 1, 0, 40000), +(9500130, 1060094, 1, 1, 0, 40000), +(9500159, 1060094, 1, 1, 0, 40000), +(7130401, 1482009, 1, 1, 0, 40000), +(9500130, 1482009, 1, 1, 0, 40000), +(9500159, 1482009, 1, 1, 0, 40000), +(7130500, 4000227, 1, 1, 0, 200000), +(7130500, 2040002, 1, 1, 0, 750), +(7130500, 2384024, 1, 1, 0, 20000), +(7130500, 4010001, 1, 1, 0, 7000), +(7130500, 4020000, 1, 1, 0, 7000), +(7130500, 4004000, 1, 1, 0, 3000), +(7130500, 1032020, 1, 1, 0, 700), +(7130500, 1102023, 1, 1, 0, 700), +(7130500, 1092016, 1, 1, 0, 700), +(7130500, 1422010, 1, 1, 0, 700), +(7130500, 1051054, 1, 1, 0, 700), +(7130500, 1082110, 1, 1, 0, 700), +(7130500, 1472028, 1, 1, 0, 700), +(7130500, 1072163, 1, 1, 0, 700), +(7130500, 1332018, 1, 1, 0, 700), +(7130500, 1052122, 1, 1, 0, 700), +(7130104, 4031435, 1, 1, 0, 7000), +(9300242, 4031435, 1, 1, 0, 7000), +(7130104, 4130000, 1, 1, 0, 3000), +(9300242, 4130000, 1, 1, 0, 3000), +(7130104, 4130017, 1, 1, 0, 3000), +(9300242, 4130017, 1, 1, 0, 3000), +(7130104, 4130020, 1, 1, 0, 3000), +(9300242, 4130020, 1, 1, 0, 3000), +(7130104, 2000006, 1, 1, 0, 40000), +(9300242, 2000006, 1, 1, 0, 40000), +(7130104, 2040705, 1, 1, 0, 750), +(9300242, 2040705, 1, 1, 0, 750), +(7130104, 2049101, 1, 1, 0, 400), +(9300242, 2049101, 1, 1, 0, 400), +(7130104, 2384025, 1, 1, 0, 20000), +(9300242, 2384025, 1, 1, 0, 20000), +(7130104, 2000002, 1, 1, 0, 40000), +(9300242, 2000002, 1, 1, 0, 40000), +(7130104, 2000004, 1, 1, 0, 40000), +(9300242, 2000004, 1, 1, 0, 40000), +(7130104, 4006001, 1, 1, 0, 7000), +(9300242, 4006001, 1, 1, 0, 7000), +(7130104, 2040002, 1, 1, 0, 750), +(9300242, 2040002, 1, 1, 0, 750), +(7130104, 2040414, 1, 1, 0, 750), +(9300242, 2040414, 1, 1, 0, 750), +(7130104, 4010001, 1, 1, 0, 7000), +(9300242, 4010001, 1, 1, 0, 7000), +(7130104, 4020000, 1, 1, 0, 7000), +(9300242, 4020000, 1, 1, 0, 7000), +(7130104, 4004000, 1, 1, 0, 3000), +(9300242, 4004000, 1, 1, 0, 3000), +(7130104, 1102023, 1, 1, 0, 700), +(9300242, 1102023, 1, 1, 0, 700), +(7130104, 1032020, 1, 1, 0, 700), +(9300242, 1032020, 1, 1, 0, 700), +(7130104, 1422010, 1, 1, 0, 700), +(9300242, 1422010, 1, 1, 0, 700), +(7130104, 1002095, 1, 1, 0, 700), +(9300242, 1002095, 1, 1, 0, 700), +(7130104, 1051054, 1, 1, 0, 700), +(9300242, 1051054, 1, 1, 0, 700), +(7130104, 1082110, 1, 1, 0, 700), +(9300242, 1082110, 1, 1, 0, 700), +(7130104, 1472028, 1, 1, 0, 700), +(9300242, 1472028, 1, 1, 0, 700), +(7130104, 1332018, 1, 1, 0, 700), +(9300242, 1332018, 1, 1, 0, 700), +(7130104, 1072163, 1, 1, 0, 700), +(9300242, 1072163, 1, 1, 0, 700), +(7130104, 1082204, 1, 1, 0, 700), +(9300242, 1082204, 1, 1, 0, 700), +(9300119, 2388011, 1, 4, 0, 20000), +(9300198, 2388011, 1, 4, 0, 20000), +(9500334, 2388011, 1, 4, 0, 20000), +(9500349, 2388011, 1, 4, 0, 20000), +(9303011, 2388011, 1, 1, 0, 20000), +(9300119, 2000002, 1, 4, 0, 40000), +(9300198, 2000002, 1, 4, 0, 40000), +(9500334, 2000002, 1, 4, 0, 40000), +(9500349, 2000002, 1, 4, 0, 40000), +(9303011, 2000002, 1, 1, 0, 40000), +(9300119, 2000006, 1, 4, 0, 40000), +(9300198, 2000006, 1, 4, 0, 40000), +(9500334, 2000006, 1, 4, 0, 40000), +(9500349, 2000006, 1, 4, 0, 40000), +(9303011, 2000006, 1, 1, 0, 40000), +(9300119, 2020013, 1, 4, 0, 3000), +(9300198, 2020013, 1, 4, 0, 3000), +(9500334, 2020013, 1, 4, 0, 3000), +(9500349, 2020013, 1, 4, 0, 3000), +(9303011, 2020013, 1, 1, 0, 3000), +(9300119, 2020014, 1, 4, 0, 3000), +(9300198, 2020014, 1, 4, 0, 3000), +(9500334, 2020014, 1, 4, 0, 3000), +(9500349, 2020014, 1, 4, 0, 3000), +(9303011, 2020014, 1, 1, 0, 3000), +(9300119, 2020015, 1, 4, 0, 3000), +(9300198, 2020015, 1, 4, 0, 3000), +(9500334, 2020015, 1, 4, 0, 3000), +(9500349, 2020015, 1, 4, 0, 3000), +(9303011, 2020015, 1, 1, 0, 3000), +(9300119, 2041010, 1, 4, 0, 10000), +(9300198, 2041010, 1, 4, 0, 10000), +(9500334, 2041010, 1, 4, 0, 10000), +(9500349, 2041010, 1, 4, 0, 10000), +(9303011, 2041010, 1, 1, 0, 750), +(9300119, 2040502, 1, 4, 0, 10000), +(9300198, 2040502, 1, 4, 0, 10000), +(9500334, 2040502, 1, 4, 0, 10000), +(9500349, 2040502, 1, 4, 0, 10000), +(9303011, 2040502, 1, 1, 0, 750), +(9300119, 2044201, 1, 4, 0, 10000), +(9300198, 2044201, 1, 4, 0, 10000), +(9500334, 2044201, 1, 4, 0, 10000), +(9500349, 2044201, 1, 4, 0, 10000), +(9303011, 2044201, 1, 1, 0, 750), +(9300119, 2040001, 1, 4, 0, 10000), +(9300198, 2040001, 1, 4, 0, 10000), +(9500334, 2040001, 1, 4, 0, 10000), +(9500349, 2040001, 1, 4, 0, 10000), +(9303011, 2040001, 1, 1, 0, 750), +(9300119, 2040601, 1, 4, 0, 10000), +(9300198, 2040601, 1, 4, 0, 10000), +(9500334, 2040601, 1, 4, 0, 10000), +(9500349, 2040601, 1, 4, 0, 10000), +(9303011, 2040601, 1, 1, 0, 750), +(9300119, 2040505, 1, 4, 0, 10000), +(9300198, 2040505, 1, 4, 0, 10000), +(9500334, 2040505, 1, 4, 0, 10000), +(9500349, 2040505, 1, 4, 0, 10000), +(9303011, 2040505, 1, 1, 0, 750), +(9300119, 2040002, 1, 4, 0, 10000), +(9300198, 2040002, 1, 4, 0, 10000), +(9500334, 2040002, 1, 4, 0, 10000), +(9500349, 2040002, 1, 4, 0, 10000), +(9303011, 2040002, 1, 1, 0, 750), +(9300119, 2040401, 1, 4, 0, 10000), +(9300198, 2040401, 1, 4, 0, 10000), +(9500334, 2040401, 1, 4, 0, 10000), +(9500349, 2040401, 1, 4, 0, 10000), +(9303011, 2040401, 1, 1, 0, 750), +(9300119, 2044201, 1, 4, 0, 10000), +(9300198, 2044201, 1, 4, 0, 10000), +(9500334, 2044201, 1, 4, 0, 10000), +(9500349, 2044201, 1, 4, 0, 10000), +(9303011, 2044201, 1, 1, 0, 750), +(9300119, 2043101, 1, 4, 0, 10000), +(9300198, 2043101, 1, 4, 0, 10000), +(9500334, 2043101, 1, 4, 0, 10000), +(9500349, 2043101, 1, 4, 0, 10000), +(9303011, 2043101, 1, 1, 0, 750), +(9300119, 2044101, 1, 4, 0, 10000), +(9300198, 2044101, 1, 4, 0, 10000), +(9500334, 2044101, 1, 4, 0, 10000), +(9500349, 2044101, 1, 4, 0, 10000), +(9303011, 2044101, 1, 1, 0, 750), +(9300119, 2040801, 1, 4, 0, 10000), +(9300198, 2040801, 1, 4, 0, 10000), +(9500334, 2040801, 1, 4, 0, 10000), +(9500349, 2040801, 1, 4, 0, 10000), +(9303011, 2040801, 1, 1, 0, 750), +(9400576, 4032007, 1, 1, 0, 10000), +(9400576, 2002000, 1, 1, 0, 10000), +(9400576, 4006000, 1, 1, 0, 7000), +(9400576, 2043301, 1, 1, 0, 750), +(9400576, 4004002, 1, 1, 0, 3000), +(9400576, 1032015, 1, 1, 0, 700), +(9400576, 1072162, 1, 1, 0, 700), +(7220001, 4000172, 1, 1, 0, 200000), +(9300199, 4000172, 1, 1, 0, 200000), +(9500312, 4000172, 1, 1, 0, 200000), +(9500348, 4000172, 1, 1, 0, 200000), +(9303008, 4000172, 1, 1, 0, 200000), +(7220001, 2000003, 1, 4, 0, 40000), +(9300199, 2000003, 1, 4, 0, 40000), +(9500312, 2000003, 1, 4, 0, 40000), +(9500348, 2000003, 1, 4, 0, 40000), +(9303008, 2000003, 1, 1, 0, 40000), +(7220001, 2000002, 1, 4, 0, 40000), +(9300199, 2000002, 1, 4, 0, 40000), +(9500312, 2000002, 1, 4, 0, 40000), +(9500348, 2000002, 1, 4, 0, 40000), +(9303008, 2000002, 1, 1, 0, 40000), +(7220001, 2040602, 1, 4, 0, 10000), +(9300199, 2040602, 1, 4, 0, 10000), +(9500312, 2040602, 1, 4, 0, 10000), +(9500348, 2040602, 1, 4, 0, 10000), +(9303008, 2040602, 1, 1, 0, 750), +(7220001, 2040501, 1, 4, 0, 10000), +(9300199, 2040501, 1, 4, 0, 10000), +(9500312, 2040501, 1, 4, 0, 10000), +(9500348, 2040501, 1, 4, 0, 10000), +(9303008, 2040501, 1, 1, 0, 750), +(7220001, 2044902, 1, 4, 0, 10000), +(9300199, 2044902, 1, 4, 0, 10000), +(9500312, 2044902, 1, 4, 0, 10000), +(9500348, 2044902, 1, 4, 0, 10000), +(9303008, 2044902, 1, 1, 0, 750), +(7220001, 2044804, 1, 4, 0, 10000), +(9300199, 2044804, 1, 4, 0, 10000), +(9500312, 2044804, 1, 4, 0, 10000), +(9500348, 2044804, 1, 4, 0, 10000), +(9303008, 2044804, 1, 1, 0, 750), +(7220001, 2043702, 1, 4, 0, 10000), +(9300199, 2043702, 1, 4, 0, 10000), +(9500312, 2043702, 1, 4, 0, 10000), +(9500348, 2043702, 1, 4, 0, 10000), +(9303008, 2043702, 1, 1, 0, 750), +(7220001, 2044501, 1, 4, 0, 10000), +(9300199, 2044501, 1, 4, 0, 10000), +(9500312, 2044501, 1, 4, 0, 10000), +(9500348, 2044501, 1, 4, 0, 10000), +(9303008, 2044501, 1, 1, 0, 750), +(7220001, 2043301, 1, 4, 0, 10000), +(9300199, 2043301, 1, 4, 0, 10000), +(9500312, 2043301, 1, 4, 0, 10000), +(9500348, 2043301, 1, 4, 0, 10000), +(9303008, 2043301, 1, 1, 0, 750), +(7220001, 2040701, 1, 4, 0, 10000), +(9300199, 2040701, 1, 4, 0, 10000), +(9500312, 2040701, 1, 4, 0, 10000), +(9500348, 2040701, 1, 4, 0, 10000), +(9303008, 2040701, 1, 1, 0, 750), +(7220001, 2040702, 1, 4, 0, 10000), +(9300199, 2040702, 1, 4, 0, 10000), +(9500312, 2040702, 1, 4, 0, 10000), +(9500348, 2040702, 1, 4, 0, 10000), +(9303008, 2040702, 1, 1, 0, 750), +(7220001, 2043801, 1, 4, 0, 10000), +(9300199, 2043801, 1, 4, 0, 10000), +(9500312, 2043801, 1, 4, 0, 10000), +(9500348, 2043801, 1, 4, 0, 10000), +(9303008, 2043801, 1, 1, 0, 750), +(7220001, 2041010, 1, 4, 0, 10000), +(9300199, 2041010, 1, 4, 0, 10000), +(9500312, 2041010, 1, 4, 0, 10000), +(9500348, 2041010, 1, 4, 0, 10000), +(9303008, 2041010, 1, 1, 0, 750), +(7220001, 2041016, 1, 4, 0, 10000), +(9300199, 2041016, 1, 4, 0, 10000), +(9500312, 2041016, 1, 4, 0, 10000), +(9500348, 2041016, 1, 4, 0, 10000), +(9303008, 2041016, 1, 1, 0, 750), +(7220001, 2041017, 1, 4, 0, 10000), +(9300199, 2041017, 1, 4, 0, 10000), +(9500312, 2041017, 1, 4, 0, 10000), +(9500348, 2041017, 1, 4, 0, 10000), +(9303008, 2041017, 1, 1, 0, 750), +(7220001, 2040804, 1, 4, 0, 10000), +(9300199, 2040804, 1, 4, 0, 10000), +(9500312, 2040804, 1, 4, 0, 10000), +(9500348, 2040804, 1, 4, 0, 10000), +(9303008, 2040804, 1, 1, 0, 750), +(7220001, 2040513, 1, 4, 0, 10000), +(9300199, 2040513, 1, 4, 0, 10000), +(9500312, 2040513, 1, 4, 0, 10000), +(9500348, 2040513, 1, 4, 0, 10000), +(9303008, 2040513, 1, 1, 0, 750), +(7220001, 2060001, 10, 50, 0, 10000), +(9300199, 2060001, 10, 50, 0, 10000), +(9500312, 2060001, 10, 50, 0, 10000), +(9500348, 2060001, 10, 50, 0, 10000), +(9303008, 2060001, 10, 50, 0, 10000), +(7220001, 2061001, 10, 50, 0, 10000), +(9300199, 2061001, 10, 50, 0, 10000), +(9500312, 2061001, 10, 50, 0, 10000), +(9500348, 2061001, 10, 50, 0, 10000), +(9303008, 2061001, 10, 50, 0, 10000), +(7220001, 2388009, 1, 4, 0, 20000), +(9300199, 2388009, 1, 4, 0, 20000), +(9500312, 2388009, 1, 4, 0, 20000), +(9500348, 2388009, 1, 4, 0, 20000), +(9303008, 2388009, 1, 1, 0, 20000), +(7220001, 4004002, 1, 1, 0, 3000), +(9300199, 4004002, 1, 1, 0, 3000), +(9500312, 4004002, 1, 1, 0, 3000), +(9500348, 4004002, 1, 1, 0, 3000), +(9303008, 4004002, 1, 1, 0, 3000), +(7220001, 1072154, 1, 1, 0, 40000), +(9300199, 1072154, 1, 1, 0, 40000), +(9500312, 1072154, 1, 1, 0, 40000), +(9500348, 1072154, 1, 1, 0, 40000), +(9303008, 1072154, 1, 1, 0, 700), +(7220001, 1072160, 1, 1, 0, 40000), +(9300199, 1072160, 1, 1, 0, 40000), +(9500312, 1072160, 1, 1, 0, 40000), +(9500348, 1072160, 1, 1, 0, 40000), +(9303008, 1072160, 1, 1, 0, 700), +(7220001, 1072167, 1, 1, 0, 40000), +(9300199, 1072167, 1, 1, 0, 40000), +(9500312, 1072167, 1, 1, 0, 40000), +(9500348, 1072167, 1, 1, 0, 40000), +(9303008, 1072167, 1, 1, 0, 700), +(7220001, 1082097, 1, 1, 0, 40000), +(9300199, 1082097, 1, 1, 0, 40000), +(9500312, 1082097, 1, 1, 0, 40000), +(9500348, 1082097, 1, 1, 0, 40000), +(9303008, 1082097, 1, 1, 0, 700), +(7220001, 1082204, 1, 1, 0, 40000), +(9300199, 1082204, 1, 1, 0, 40000), +(9500312, 1082204, 1, 1, 0, 40000), +(9500348, 1082204, 1, 1, 0, 40000), +(9303008, 1082204, 1, 1, 0, 700), +(7130402, 4030012, 1, 1, 0, 10000), +(9500160, 4030012, 1, 1, 0, 10000), +(7130402, 4006000, 1, 1, 0, 7000), +(9500160, 4006000, 1, 1, 0, 7000), +(7130402, 4130017, 1, 1, 0, 3000), +(9500160, 4130017, 1, 1, 0, 3000), +(7130402, 2384023, 1, 4, 0, 20000), +(9500160, 2384023, 1, 4, 0, 20000), +(7130402, 2000006, 1, 4, 0, 40000), +(9500160, 2000006, 1, 4, 0, 40000), +(7130402, 2002006, 1, 4, 0, 10000), +(9500160, 2002006, 1, 4, 0, 10000), +(7130402, 2000004, 1, 4, 0, 40000), +(9500160, 2000004, 1, 4, 0, 40000), +(7130402, 2041007, 1, 4, 0, 10000), +(9500160, 2041007, 1, 4, 0, 10000), +(7130402, 2043001, 1, 4, 0, 10000), +(9500160, 2043001, 1, 4, 0, 10000), +(7130402, 2070007, 1, 4, 0, 2500), +(9500160, 2070007, 1, 4, 0, 2500), +(7130402, 2330003, 1, 4, 0, 2500), +(9500160, 2330003, 1, 4, 0, 2500), +(7130402, 2040024, 1, 4, 0, 10000), +(9500160, 2040024, 1, 4, 0, 10000), +(7130402, 2040536, 1, 4, 0, 10000), +(9500160, 2040536, 1, 4, 0, 10000), +(7130402, 2043113, 1, 4, 0, 10000), +(9500160, 2043113, 1, 4, 0, 10000), +(7130402, 4020006, 1, 1, 0, 7000), +(9500160, 4020006, 1, 1, 0, 7000), +(7130402, 4010006, 1, 1, 0, 7000), +(9500160, 4010006, 1, 1, 0, 7000), +(7130402, 4004001, 1, 1, 0, 3000), +(9500160, 4004001, 1, 1, 0, 3000), +(7130402, 1032019, 1, 1, 0, 40000), +(9500160, 1032019, 1, 1, 0, 40000), +(7130402, 1032022, 1, 1, 0, 40000), +(9500160, 1032022, 1, 1, 0, 40000), +(7130402, 1061091, 1, 1, 0, 40000), +(9500160, 1061091, 1, 1, 0, 40000), +(7130402, 1041092, 1, 1, 0, 40000), +(9500160, 1041092, 1, 1, 0, 40000), +(7130402, 1402012, 1, 1, 0, 40000), +(9500160, 1402012, 1, 1, 0, 40000), +(7130402, 1072155, 1, 1, 0, 40000), +(9500160, 1072155, 1, 1, 0, 40000), +(7130402, 1422005, 1, 1, 0, 40000), +(9500160, 1422005, 1, 1, 0, 40000), +(7130402, 1082090, 1, 1, 0, 40000), +(9500160, 1082090, 1, 1, 0, 40000), +(7130402, 1041101, 1, 1, 0, 40000), +(9500160, 1041101, 1, 1, 0, 40000), +(7130402, 1061100, 1, 1, 0, 40000), +(9500160, 1061100, 1, 1, 0, 40000), +(7220000, 1132001, 1, 1, 0, 40000), +(9300200, 1132001, 1, 1, 0, 40000), +(9300268, 1132001, 1, 1, 0, 40000), +(9500313, 1132001, 1, 1, 0, 40000), +(9500350, 1132001, 1, 1, 0, 40000), +(9303005, 1132001, 1, 1, 0, 700), +(7220000, 1132003, 1, 1, 0, 40000), +(9300200, 1132003, 1, 1, 0, 40000), +(9300268, 1132003, 1, 1, 0, 40000), +(9500313, 1132003, 1, 1, 0, 40000), +(9500350, 1132003, 1, 1, 0, 40000), +(9303005, 1132003, 1, 1, 0, 700), +(7220000, 4000283, 1, 1, 0, 200000), +(9300200, 4000283, 1, 1, 0, 200000), +(9300268, 4000283, 1, 1, 0, 200000), +(9500313, 4000283, 1, 1, 0, 200000), +(9500350, 4000283, 1, 1, 0, 200000), +(9303005, 4000283, 1, 1, 0, 200000), +(7220000, 4000021, 1, 1, 0, 200000), +(9300200, 4000021, 1, 1, 0, 200000), +(9300268, 4000021, 1, 1, 0, 200000), +(9500313, 4000021, 1, 1, 0, 200000), +(9500350, 4000021, 1, 1, 0, 200000), +(9303005, 4000021, 1, 1, 0, 200000), +(7220000, 2000002, 1, 4, 0, 40000), +(9300200, 2000002, 1, 4, 0, 40000), +(9300268, 2000002, 1, 4, 0, 40000), +(9500313, 2000002, 1, 4, 0, 40000), +(9500350, 2000002, 1, 4, 0, 40000), +(9303005, 2000002, 1, 1, 0, 40000), +(7220000, 2000003, 1, 4, 0, 40000), +(9300200, 2000003, 1, 4, 0, 40000), +(9300268, 2000003, 1, 4, 0, 40000), +(9500313, 2000003, 1, 4, 0, 40000), +(9500350, 2000003, 1, 4, 0, 40000), +(9303005, 2000003, 1, 1, 0, 40000), +(7220000, 2002004, 1, 4, 0, 10000), +(9300200, 2002004, 1, 4, 0, 10000), +(9300268, 2002004, 1, 4, 0, 10000), +(9500313, 2002004, 1, 4, 0, 10000), +(9500350, 2002004, 1, 4, 0, 10000), +(9303005, 2002004, 1, 1, 0, 10000), +(7220000, 2002011, 1, 4, 0, 10000), +(9300200, 2002011, 1, 4, 0, 10000), +(9300268, 2002011, 1, 4, 0, 10000), +(9500313, 2002011, 1, 4, 0, 10000), +(9500350, 2002011, 1, 4, 0, 10000), +(9303005, 2002011, 1, 1, 0, 10000), +(7220000, 2040805, 1, 4, 0, 10000), +(9300200, 2040805, 1, 4, 0, 10000), +(9300268, 2040805, 1, 4, 0, 10000), +(9500313, 2040805, 1, 4, 0, 10000), +(9500350, 2040805, 1, 4, 0, 10000), +(9303005, 2040805, 1, 1, 0, 750), +(7220000, 2041010, 1, 4, 0, 10000), +(9300200, 2041010, 1, 4, 0, 10000), +(9300268, 2041010, 1, 4, 0, 10000), +(9500313, 2041010, 1, 4, 0, 10000), +(9500350, 2041010, 1, 4, 0, 10000), +(9303005, 2041010, 1, 1, 0, 750), +(7220000, 2043301, 1, 4, 0, 10000), +(9300200, 2043301, 1, 4, 0, 10000), +(9300268, 2043301, 1, 4, 0, 10000), +(9500313, 2043301, 1, 4, 0, 10000), +(9500350, 2043301, 1, 4, 0, 10000), +(9303005, 2043301, 1, 1, 0, 750), +(7220000, 2040004, 1, 4, 0, 10000), +(9300200, 2040004, 1, 4, 0, 10000), +(9300268, 2040004, 1, 4, 0, 10000), +(9500313, 2040004, 1, 4, 0, 10000), +(9500350, 2040004, 1, 4, 0, 10000), +(9303005, 2040004, 1, 1, 0, 750), +(7220000, 2044501, 1, 4, 0, 10000), +(9300200, 2044501, 1, 4, 0, 10000), +(9300268, 2044501, 1, 4, 0, 10000), +(9500313, 2044501, 1, 4, 0, 10000), +(9500350, 2044501, 1, 4, 0, 10000), +(9303005, 2044501, 1, 1, 0, 750), +(7220000, 2043801, 1, 4, 0, 10000), +(9300200, 2043801, 1, 4, 0, 10000), +(9300268, 2043801, 1, 4, 0, 10000), +(9500313, 2043801, 1, 4, 0, 10000), +(9500350, 2043801, 1, 4, 0, 10000), +(9303005, 2043801, 1, 1, 0, 750), +(7220000, 2040901, 1, 4, 0, 10000), +(9300200, 2040901, 1, 4, 0, 10000), +(9300268, 2040901, 1, 4, 0, 10000), +(9500313, 2040901, 1, 4, 0, 10000), +(9500350, 2040901, 1, 4, 0, 10000), +(9303005, 2040901, 1, 1, 0, 750), +(7220000, 2041022, 1, 4, 0, 10000), +(9300200, 2041022, 1, 4, 0, 10000), +(9300268, 2041022, 1, 4, 0, 10000), +(9500313, 2041022, 1, 4, 0, 10000), +(9500350, 2041022, 1, 4, 0, 10000), +(9303005, 2041022, 1, 1, 0, 750), +(7220000, 2044101, 1, 4, 0, 10000), +(9300200, 2044101, 1, 4, 0, 10000), +(9300268, 2044101, 1, 4, 0, 10000), +(9500313, 2044101, 1, 4, 0, 10000), +(9500350, 2044101, 1, 4, 0, 10000), +(9303005, 2044101, 1, 1, 0, 750), +(7220000, 2041043, 1, 4, 0, 10000), +(9300200, 2041043, 1, 4, 0, 10000), +(9300268, 2041043, 1, 4, 0, 10000), +(9500313, 2041043, 1, 4, 0, 10000), +(9500350, 2041043, 1, 4, 0, 10000), +(9303005, 2041043, 1, 1, 0, 750), +(7220000, 2043101, 1, 4, 0, 10000), +(9300200, 2043101, 1, 4, 0, 10000), +(9300268, 2043101, 1, 4, 0, 10000), +(9500313, 2043101, 1, 4, 0, 10000), +(9500350, 2043101, 1, 4, 0, 10000), +(9303005, 2043101, 1, 1, 0, 750), +(7220000, 2044601, 1, 4, 0, 10000), +(9300200, 2044601, 1, 4, 0, 10000), +(9300268, 2044601, 1, 4, 0, 10000), +(9500313, 2044601, 1, 4, 0, 10000), +(9500350, 2044601, 1, 4, 0, 10000), +(9303005, 2044601, 1, 1, 0, 750), +(7220000, 2044803, 1, 4, 0, 10000), +(9300200, 2044803, 1, 4, 0, 10000), +(9300268, 2044803, 1, 4, 0, 10000), +(9500313, 2044803, 1, 4, 0, 10000), +(9500350, 2044803, 1, 4, 0, 10000), +(9303005, 2044803, 1, 1, 0, 750), +(7220000, 2048005, 1, 4, 0, 10000), +(9300200, 2048005, 1, 4, 0, 10000), +(9300268, 2048005, 1, 4, 0, 10000), +(9500313, 2048005, 1, 4, 0, 10000), +(9500350, 2048005, 1, 4, 0, 10000), +(9303005, 2048005, 1, 1, 0, 750), +(7220000, 2040514, 1, 4, 0, 10000), +(9300200, 2040514, 1, 4, 0, 10000), +(9300268, 2040514, 1, 4, 0, 10000), +(9500313, 2040514, 1, 4, 0, 10000), +(9500350, 2040514, 1, 4, 0, 10000), +(9303005, 2040514, 1, 1, 0, 750), +(7220000, 2040705, 1, 4, 0, 10000), +(9300200, 2040705, 1, 4, 0, 10000), +(9300268, 2040705, 1, 4, 0, 10000), +(9500313, 2040705, 1, 4, 0, 10000), +(9500350, 2040705, 1, 4, 0, 10000), +(9303005, 2040705, 1, 1, 0, 750), +(7220000, 2049101, 1, 4, 0, 2500), +(9300200, 2049101, 1, 4, 0, 2500), +(9300268, 2049101, 1, 4, 0, 2500), +(9500313, 2049101, 1, 4, 0, 2500), +(9500350, 2049101, 1, 4, 0, 2500), +(9303005, 2049101, 1, 1, 0, 400), +(7220000, 2070004, 1, 4, 0, 2500), +(9300200, 2070004, 1, 4, 0, 2500), +(9300268, 2070004, 1, 4, 0, 2500), +(9500313, 2070004, 1, 4, 0, 2500), +(9500350, 2070004, 1, 4, 0, 2500), +(9303005, 2070004, 1, 1, 0, 400), +(7220000, 2060001, 10, 50, 0, 10000), +(9300200, 2060001, 10, 50, 0, 10000), +(9300268, 2060001, 10, 50, 0, 10000), +(9500313, 2060001, 10, 50, 0, 10000), +(9500350, 2060001, 10, 50, 0, 10000), +(9303005, 2060001, 10, 50, 0, 10000), +(7220000, 2061001, 10, 50, 0, 10000), +(9300200, 2061001, 10, 50, 0, 10000), +(9300268, 2061001, 10, 50, 0, 10000), +(9500313, 2061001, 10, 50, 0, 10000), +(9500350, 2061001, 10, 50, 0, 10000), +(9303005, 2061001, 10, 50, 0, 10000), +(7220000, 2388010, 1, 4, 0, 20000), +(9300200, 2388010, 1, 4, 0, 20000), +(9300268, 2388010, 1, 4, 0, 20000), +(9500313, 2388010, 1, 4, 0, 20000), +(9500350, 2388010, 1, 4, 0, 20000), +(9303005, 2388010, 1, 1, 0, 20000), +(7220000, 4010004, 1, 1, 0, 7000), +(9300200, 4010004, 1, 1, 0, 7000), +(9300268, 4010004, 1, 1, 0, 7000), +(9500313, 4010004, 1, 1, 0, 7000), +(9500350, 4010004, 1, 1, 0, 7000), +(9303005, 4010004, 1, 1, 0, 7000), +(7220000, 4020006, 1, 1, 0, 7000), +(9300200, 4020006, 1, 1, 0, 7000), +(9300268, 4020006, 1, 1, 0, 7000), +(9500313, 4020006, 1, 1, 0, 7000), +(9500350, 4020006, 1, 1, 0, 7000), +(9303005, 4020006, 1, 1, 0, 7000), +(7220000, 4004000, 1, 1, 0, 3000), +(9300200, 4004000, 1, 1, 0, 3000), +(9300268, 4004000, 1, 1, 0, 3000), +(9500313, 4004000, 1, 1, 0, 3000), +(9500350, 4004000, 1, 1, 0, 3000), +(9303005, 4004000, 1, 1, 0, 3000), +(7220000, 1032021, 1, 1, 0, 40000), +(9300200, 1032021, 1, 1, 0, 40000), +(9300268, 1032021, 1, 1, 0, 40000), +(9500313, 1032021, 1, 1, 0, 40000), +(9500350, 1032021, 1, 1, 0, 40000), +(9303005, 1032021, 1, 1, 0, 700), +(7220000, 1402012, 1, 1, 0, 40000), +(9300200, 1402012, 1, 1, 0, 40000), +(9300268, 1402012, 1, 1, 0, 40000), +(9500313, 1402012, 1, 1, 0, 40000), +(9500350, 1402012, 1, 1, 0, 40000), +(9303005, 1402012, 1, 1, 0, 700), +(7220000, 1322019, 1, 1, 0, 40000), +(9300200, 1322019, 1, 1, 0, 40000), +(9300268, 1322019, 1, 1, 0, 40000), +(9500313, 1322019, 1, 1, 0, 40000), +(9500350, 1322019, 1, 1, 0, 40000), +(9303005, 1322019, 1, 1, 0, 700), +(7220000, 1302012, 1, 1, 0, 40000), +(9300200, 1302012, 1, 1, 0, 40000), +(9300268, 1302012, 1, 1, 0, 40000), +(9500313, 1302012, 1, 1, 0, 40000), +(9500350, 1302012, 1, 1, 0, 40000), +(9303005, 1302012, 1, 1, 0, 700), +(7220000, 1412008, 1, 1, 0, 40000), +(9300200, 1412008, 1, 1, 0, 40000), +(9300268, 1412008, 1, 1, 0, 40000), +(9500313, 1412008, 1, 1, 0, 40000), +(9500350, 1412008, 1, 1, 0, 40000), +(9303005, 1412008, 1, 1, 0, 700), +(7220000, 1312010, 1, 1, 0, 40000), +(9300200, 1312010, 1, 1, 0, 40000), +(9300268, 1312010, 1, 1, 0, 40000), +(9500313, 1312010, 1, 1, 0, 40000), +(9500350, 1312010, 1, 1, 0, 40000), +(9303005, 1312010, 1, 1, 0, 700), +(7220000, 1422010, 1, 1, 0, 40000), +(9300200, 1422010, 1, 1, 0, 40000), +(9300268, 1422010, 1, 1, 0, 40000), +(9500313, 1422010, 1, 1, 0, 40000), +(9500350, 1422010, 1, 1, 0, 40000), +(9303005, 1422010, 1, 1, 0, 700), +(7220000, 1442008, 1, 1, 0, 40000), +(9300200, 1442008, 1, 1, 0, 40000), +(9300268, 1442008, 1, 1, 0, 40000), +(9500313, 1442008, 1, 1, 0, 40000), +(9500350, 1442008, 1, 1, 0, 40000), +(9303005, 1442008, 1, 1, 0, 700), +(7220000, 1432007, 1, 1, 0, 40000), +(9300200, 1432007, 1, 1, 0, 40000), +(9300268, 1432007, 1, 1, 0, 40000), +(9500313, 1432007, 1, 1, 0, 40000), +(9500350, 1432007, 1, 1, 0, 40000), +(9303005, 1432007, 1, 1, 0, 700), +(7220000, 1372015, 1, 1, 0, 40000), +(9300200, 1372015, 1, 1, 0, 40000), +(9300268, 1372015, 1, 1, 0, 40000), +(9500313, 1372015, 1, 1, 0, 40000), +(9500350, 1372015, 1, 1, 0, 40000), +(9303005, 1372015, 1, 1, 0, 700), +(7220000, 1382010, 1, 1, 0, 40000), +(9300200, 1382010, 1, 1, 0, 40000), +(9300268, 1382010, 1, 1, 0, 40000), +(9500313, 1382010, 1, 1, 0, 40000), +(9500350, 1382010, 1, 1, 0, 40000), +(9303005, 1382010, 1, 1, 0, 700), +(7220000, 1462009, 1, 1, 0, 40000), +(9300200, 1462009, 1, 1, 0, 40000), +(9300268, 1462009, 1, 1, 0, 40000), +(9500313, 1462009, 1, 1, 0, 40000), +(9500350, 1462009, 1, 1, 0, 40000), +(9303005, 1462009, 1, 1, 0, 700), +(7220000, 1452011, 1, 1, 0, 40000), +(9300200, 1452011, 1, 1, 0, 40000), +(9300268, 1452011, 1, 1, 0, 40000), +(9500313, 1452011, 1, 1, 0, 40000), +(9500350, 1452011, 1, 1, 0, 40000), +(9303005, 1452011, 1, 1, 0, 700), +(7220000, 1472029, 1, 1, 0, 40000), +(9300200, 1472029, 1, 1, 0, 40000), +(9300268, 1472029, 1, 1, 0, 40000), +(9500313, 1472029, 1, 1, 0, 40000), +(9500350, 1472029, 1, 1, 0, 40000), +(9303005, 1472029, 1, 1, 0, 700), +(7220000, 1332018, 1, 1, 0, 40000), +(9300200, 1332018, 1, 1, 0, 40000), +(9300268, 1332018, 1, 1, 0, 40000), +(9500313, 1332018, 1, 1, 0, 40000), +(9500350, 1332018, 1, 1, 0, 40000), +(9303005, 1332018, 1, 1, 0, 700), +(7220000, 1482009, 1, 1, 0, 40000), +(9300200, 1482009, 1, 1, 0, 40000), +(9300268, 1482009, 1, 1, 0, 40000), +(9500313, 1482009, 1, 1, 0, 40000), +(9500350, 1482009, 1, 1, 0, 40000), +(9303005, 1482009, 1, 1, 0, 700), +(9400203, 4000546, 1, 1, 0, 200000), +(7120104, 4000546, 1, 1, 0, 200000), +(9400203, 4130003, 1, 1, 0, 3000), +(7120104, 4130003, 1, 1, 0, 3000), +(9400203, 4130002, 1, 1, 0, 3000), +(7120104, 4130002, 1, 1, 0, 3000), +(9400203, 4130021, 1, 1, 0, 3000), +(7120104, 4130021, 1, 1, 0, 3000), +(9400203, 2050000, 1, 1, 0, 3000), +(7120104, 2050000, 1, 1, 0, 3000), +(9400203, 2000006, 1, 1, 0, 40000), +(7120104, 2000006, 1, 1, 0, 40000), +(9400203, 2000004, 1, 1, 0, 40000), +(7120104, 2000004, 1, 1, 0, 40000), +(9400203, 2044301, 1, 1, 0, 750), +(7120104, 2044301, 1, 1, 0, 750), +(9400203, 2041021, 1, 1, 0, 750), +(7120104, 2041021, 1, 1, 0, 750), +(9400203, 2040619, 1, 1, 0, 750), +(7120104, 2040619, 1, 1, 0, 750), +(9400203, 2049000, 1, 1, 0, 400), +(7120104, 2049000, 1, 1, 0, 400), +(9400203, 4020007, 1, 1, 0, 7000), +(7120104, 4020007, 1, 1, 0, 7000), +(9400203, 4010004, 1, 1, 0, 7000), +(7120104, 4010004, 1, 1, 0, 7000), +(9400203, 1032014, 1, 1, 0, 700), +(7120104, 1032014, 1, 1, 0, 700), +(9400203, 1032016, 1, 1, 0, 700), +(7120104, 1032016, 1, 1, 0, 700), +(9400203, 1312009, 1, 1, 0, 700), +(7120104, 1312009, 1, 1, 0, 700), +(9400203, 1002095, 1, 1, 0, 700), +(7120104, 1002095, 1, 1, 0, 700), +(9400203, 1082105, 1, 1, 0, 700), +(7120104, 1082105, 1, 1, 0, 700), +(9400203, 1302056, 1, 1, 0, 700), +(7120104, 1302056, 1, 1, 0, 700), +(9400203, 1002246, 1, 1, 0, 700), +(7120104, 1002246, 1, 1, 0, 700), +(9400203, 1051054, 1, 1, 0, 700), +(7120104, 1051054, 1, 1, 0, 700), +(9400203, 1050070, 1, 1, 0, 700), +(7120104, 1050070, 1, 1, 0, 700), +(9400203, 1050069, 1, 1, 0, 700), +(7120104, 1050069, 1, 1, 0, 700), +(9400203, 1372015, 1, 1, 0, 700), +(7120104, 1372015, 1, 1, 0, 700), +(9400203, 1372016, 1, 1, 0, 700), +(7120104, 1372016, 1, 1, 0, 700), +(9400203, 1072146, 1, 1, 0, 700), +(7120104, 1072146, 1, 1, 0, 700), +(9400203, 1082108, 1, 1, 0, 700), +(7120104, 1082108, 1, 1, 0, 700), +(9400203, 1332015, 1, 1, 0, 700), +(7120104, 1332015, 1, 1, 0, 700), +(9400203, 1041095, 1, 1, 0, 700), +(7120104, 1041095, 1, 1, 0, 700), +(9400203, 1061094, 1, 1, 0, 700), +(7120104, 1061094, 1, 1, 0, 700), +(9400203, 1041102, 1, 1, 0, 700), +(7120104, 1041102, 1, 1, 0, 700), +(9400203, 1061101, 1, 1, 0, 700), +(7120104, 1061101, 1, 1, 0, 700), +(9400203, 1492009, 1, 1, 0, 700), +(7120104, 1492009, 1, 1, 0, 700), +(7130001, 4000079, 1, 1, 0, 200000), +(7130001, 2050000, 1, 1, 0, 3000), +(7130001, 2000006, 1, 1, 0, 40000), +(7130001, 2000004, 1, 1, 0, 40000), +(7130001, 2041021, 1, 1, 0, 750), +(7130001, 2044301, 1, 1, 0, 750), +(7130001, 2384026, 1, 1, 0, 20000), +(7130001, 4010004, 1, 1, 0, 7000), +(7130001, 4020007, 1, 1, 0, 7000), +(7130001, 1032014, 1, 1, 0, 700), +(7130001, 1032016, 1, 1, 0, 700), +(7130001, 1422014, 1, 1, 0, 700), +(7130001, 1412011, 1, 1, 0, 700), +(7130001, 1082105, 1, 1, 0, 700), +(7130001, 1002095, 1, 1, 0, 700), +(7130001, 1312009, 1, 1, 0, 700), +(7130001, 1302056, 1, 1, 0, 700), +(7130001, 1002246, 1, 1, 0, 700), +(7130001, 1372015, 1, 1, 0, 700), +(7130001, 1372016, 1, 1, 0, 700), +(7130001, 1050070, 1, 1, 0, 700), +(7130001, 1050069, 1, 1, 0, 700), +(7130001, 1072146, 1, 1, 0, 700), +(7130001, 1082108, 1, 1, 0, 700), +(7130001, 1041102, 1, 1, 0, 700), +(7130001, 1061101, 1, 1, 0, 700), +(7130001, 1041095, 1, 1, 0, 700), +(7130001, 1332015, 1, 1, 0, 700), +(7130001, 1492009, 1, 1, 0, 700), +(9400103, 4000137, 1, 1, 0, 200000), +(9400103, 2001001, 1, 1, 0, 10000), +(9400103, 2000011, 1, 1, 0, 40000), +(9400103, 2002005, 1, 1, 0, 10000), +(9400103, 2070004, 1, 1, 0, 400), +(9400103, 2041036, 1, 1, 0, 750), +(9400103, 2043308, 1, 1, 0, 750), +(9400103, 2041012, 1, 1, 0, 750), +(9400103, 4020000, 1, 1, 0, 7000), +(9400103, 4010001, 1, 1, 0, 7000), +(9400103, 1442025, 1, 1, 0, 700), +(9400103, 1102000, 1, 1, 0, 700), +(9400103, 1322021, 1, 1, 0, 700), +(9400103, 1332019, 1, 1, 0, 700), +(9400103, 1442005, 1, 1, 0, 700), +(9400103, 1061098, 1, 1, 0, 700), +(9400103, 1082062, 1, 1, 0, 700), +(9400103, 1051054, 1, 1, 0, 700), +(9400103, 1050055, 1, 1, 0, 700), +(9400103, 1002212, 1, 1, 0, 700), +(9400103, 1082084, 1, 1, 0, 700), +(9400103, 1051062, 1, 1, 0, 700), +(9400103, 1332019, 1, 1, 0, 700), +(9400103, 1061099, 1, 1, 0, 700), +(9400103, 1092018, 1, 1, 0, 700), +(7130002, 4030012, 1, 1, 0, 10000), +(7130002, 2000006, 1, 1, 0, 40000), +(7130002, 2000004, 1, 1, 0, 40000), +(7130002, 2040801, 1, 1, 0, 750), +(7130002, 4006000, 1, 1, 0, 7000), +(7130002, 2330003, 1, 1, 0, 400), +(7130002, 2384027, 1, 1, 0, 20000), +(7130002, 4010000, 1, 1, 0, 7000), +(7130002, 4020001, 1, 1, 0, 7000), +(7130002, 4004001, 1, 1, 0, 3000), +(7130002, 1442024, 1, 1, 0, 700), +(7130002, 1082100, 1, 1, 0, 700), +(7130002, 1002285, 1, 1, 0, 700), +(9420536, 4000474, 1, 1, 0, 200000), +(9420536, 2022003, 1, 1, 0, 3000), +(9420536, 1032021, 1, 1, 0, 700), +(9420536, 1082105, 1, 1, 0, 700), +(9420536, 1002095, 1, 1, 0, 700), +(9420536, 1051079, 1, 1, 0, 700), +(9420536, 1051016, 1, 1, 0, 700), +(9420536, 1050074, 1, 1, 0, 700), +(9420536, 1050064, 1, 1, 0, 700), +(9420536, 1051065, 1, 1, 0, 700), +(9420536, 1002278, 1, 1, 0, 700), +(7130600, 4006001, 1, 1, 0, 7000), +(7130600, 4130017, 1, 1, 0, 3000), +(7130600, 4130001, 1, 1, 0, 3000), +(7130600, 4130005, 1, 1, 0, 3000), +(7130600, 2384028, 1, 1, 0, 20000), +(7130600, 2000006, 1, 1, 0, 40000), +(7130600, 2000004, 1, 1, 0, 40000), +(7130600, 2044101, 1, 1, 0, 750), +(7130600, 2041008, 1, 1, 0, 750), +(7130600, 2040512, 1, 1, 0, 750), +(7130600, 2044010, 1, 1, 0, 750), +(7130600, 4010001, 1, 1, 0, 7000), +(7130600, 4010000, 1, 1, 0, 7000), +(7130600, 4004002, 1, 1, 0, 3000), +(7130600, 1072211, 1, 1, 0, 700), +(7130600, 1002287, 1, 1, 0, 700), +(7130600, 1452009, 1, 1, 0, 700), +(7130600, 1051062, 1, 1, 0, 700), +(7130600, 1082119, 1, 1, 0, 700), +(7130000, 4000074, 1, 1, 0, 200000), +(9300251, 4000074, 1, 1, 0, 200000), +(9500131, 4000074, 1, 1, 0, 200000), +(7130000, 2000006, 1, 1, 0, 40000), +(9300251, 2000006, 1, 1, 0, 40000), +(9500131, 2000006, 1, 1, 0, 40000), +(7130000, 2000004, 1, 1, 0, 40000), +(9300251, 2000004, 1, 1, 0, 40000), +(9500131, 2000004, 1, 1, 0, 40000), +(7130000, 2050004, 1, 1, 0, 3000), +(9300251, 2050004, 1, 1, 0, 3000), +(9500131, 2050004, 1, 1, 0, 3000), +(7130000, 4006001, 1, 1, 0, 7000), +(9300251, 4006001, 1, 1, 0, 7000), +(9500131, 4006001, 1, 1, 0, 7000), +(7130000, 2044601, 1, 1, 0, 750), +(9300251, 2044601, 1, 1, 0, 750), +(9500131, 2044601, 1, 1, 0, 750), +(7130000, 4161021, 1, 1, 0, 7000), +(9300251, 4161021, 1, 1, 0, 7000), +(9500131, 4161021, 1, 1, 0, 7000), +(7130000, 2384030, 1, 1, 0, 20000), +(9300251, 2384030, 1, 1, 0, 20000), +(9500131, 2384030, 1, 1, 0, 20000), +(7130000, 4020006, 1, 1, 0, 7000), +(9300251, 4020006, 1, 1, 0, 7000), +(9500131, 4020006, 1, 1, 0, 7000), +(7130000, 4010004, 1, 1, 0, 7000), +(9300251, 4010004, 1, 1, 0, 7000), +(9500131, 4010004, 1, 1, 0, 7000), +(7130000, 4004003, 1, 1, 0, 3000), +(9300251, 4004003, 1, 1, 0, 3000), +(9500131, 4004003, 1, 1, 0, 3000), +(7130000, 1422014, 1, 1, 0, 700), +(9300251, 1422014, 1, 1, 0, 700), +(9500131, 1422014, 1, 1, 0, 700), +(7130000, 1402012, 1, 1, 0, 700), +(9300251, 1402012, 1, 1, 0, 700), +(9500131, 1402012, 1, 1, 0, 700), +(7130000, 1002029, 1, 1, 0, 700), +(9300251, 1002029, 1, 1, 0, 700), +(9500131, 1002029, 1, 1, 0, 700), +(7130000, 1002094, 1, 1, 0, 700), +(9300251, 1002094, 1, 1, 0, 700), +(9500131, 1002094, 1, 1, 0, 700), +(7130000, 1072147, 1, 1, 0, 700), +(9300251, 1072147, 1, 1, 0, 700), +(9500131, 1072147, 1, 1, 0, 700), +(7130000, 1072210, 1, 1, 0, 700), +(9300251, 1072210, 1, 1, 0, 700), +(9500131, 1072210, 1, 1, 0, 700), +(7130000, 1072177, 1, 1, 0, 700), +(9300251, 1072177, 1, 1, 0, 700), +(9500131, 1072177, 1, 1, 0, 700), +(7130000, 1002253, 1, 1, 0, 700), +(9300251, 1002253, 1, 1, 0, 700), +(9500131, 1002253, 1, 1, 0, 700), +(7130000, 1051044, 1, 1, 0, 700), +(9300251, 1051044, 1, 1, 0, 700), +(9500131, 1051044, 1, 1, 0, 700), +(7130000, 1051053, 1, 1, 0, 700), +(9300251, 1051053, 1, 1, 0, 700), +(9500131, 1051053, 1, 1, 0, 700), +(7130000, 1051062, 1, 1, 0, 700), +(9300251, 1051062, 1, 1, 0, 700), +(9500131, 1051062, 1, 1, 0, 700), +(7130000, 1050063, 1, 1, 0, 700), +(9300251, 1050063, 1, 1, 0, 700), +(9500131, 1050063, 1, 1, 0, 700), +(7130000, 1072145, 1, 1, 0, 700), +(9300251, 1072145, 1, 1, 0, 700), +(9500131, 1072145, 1, 1, 0, 700), +(7130000, 1002275, 1, 1, 0, 700), +(9300251, 1002275, 1, 1, 0, 700), +(9500131, 1002275, 1, 1, 0, 700), +(7130000, 1051041, 1, 1, 0, 700), +(9300251, 1051041, 1, 1, 0, 700), +(9500131, 1051041, 1, 1, 0, 700), +(7130000, 1002248, 1, 1, 0, 700), +(9300251, 1002248, 1, 1, 0, 700), +(9500131, 1002248, 1, 1, 0, 700), +(7130000, 1040108, 1, 1, 0, 700), +(9300251, 1040108, 1, 1, 0, 700), +(9500131, 1040108, 1, 1, 0, 700), +(7130000, 1072150, 1, 1, 0, 700), +(9300251, 1072150, 1, 1, 0, 700), +(9500131, 1072150, 1, 1, 0, 700), +(7130000, 1072312, 1, 1, 0, 700), +(9300251, 1072312, 1, 1, 0, 700), +(9500131, 1072312, 1, 1, 0, 700), +(7130103, 4000208, 1, 1, 0, 200000), +(7130103, 2000006, 1, 1, 0, 40000), +(7130103, 2000004, 1, 1, 0, 40000), +(7130103, 2002003, 1, 1, 0, 10000), +(7130103, 4006001, 1, 1, 0, 7000), +(7130103, 2040516, 1, 1, 0, 750), +(7130103, 2040301, 1, 1, 0, 750), +(7130103, 2040804, 1, 1, 0, 750), +(7130103, 2384029, 1, 1, 0, 20000), +(7130103, 4010000, 1, 1, 0, 7000), +(7130103, 4020002, 1, 1, 0, 7000), +(7130103, 4020007, 1, 1, 0, 7000), +(7130103, 4020000, 1, 1, 0, 7000), +(7130103, 1072210, 1, 1, 0, 700), +(7130103, 1092023, 1, 1, 0, 700), +(7130103, 1041092, 1, 1, 0, 700), +(7130103, 1040092, 1, 1, 0, 700), +(7130103, 1072177, 1, 1, 0, 700), +(7130103, 1051054, 1, 1, 0, 700), +(7130103, 1072182, 1, 1, 0, 700), +(7130103, 1051063, 1, 1, 0, 700), +(7130103, 1061094, 1, 1, 0, 700), +(7130103, 1041095, 1, 1, 0, 700), +(7130103, 1072172, 1, 1, 0, 700), +(7130103, 1082207, 1, 1, 0, 700), +(9300105, 2388011, 1, 4, 0, 20000), +(9500175, 2388011, 1, 4, 0, 20000), +(7110301, 4000361, 1, 1, 0, 200000), +(9300147, 4000361, 1, 1, 0, 200000), +(7110301, 2000006, 1, 1, 0, 40000), +(9300147, 2000006, 1, 1, 0, 40000), +(7110301, 2000004, 1, 1, 0, 40000), +(9300147, 2000004, 1, 1, 0, 40000), +(7110301, 2044601, 1, 1, 0, 750), +(9300147, 2044601, 1, 1, 0, 750), +(7110301, 2044803, 1, 1, 0, 750), +(9300147, 2044803, 1, 1, 0, 750), +(7110301, 2040622, 1, 1, 0, 750), +(9300147, 2040622, 1, 1, 0, 750), +(7110301, 2040026, 1, 1, 0, 750), +(9300147, 2040026, 1, 1, 0, 750), +(7110301, 4010004, 1, 1, 0, 7000), +(9300147, 4010004, 1, 1, 0, 7000), +(7110301, 4020006, 1, 1, 0, 7000), +(9300147, 4020006, 1, 1, 0, 7000), +(7110301, 4004003, 1, 1, 0, 3000), +(9300147, 4004003, 1, 1, 0, 3000), +(7110301, 1402012, 1, 1, 0, 700), +(9300147, 1402012, 1, 1, 0, 700), +(7110301, 1322018, 1, 1, 0, 700), +(9300147, 1322018, 1, 1, 0, 700), +(7110301, 1002029, 1, 1, 0, 700), +(9300147, 1002029, 1, 1, 0, 700), +(7110301, 1002094, 1, 1, 0, 700), +(9300147, 1002094, 1, 1, 0, 700), +(7110301, 1072147, 1, 1, 0, 700), +(9300147, 1072147, 1, 1, 0, 700), +(7110301, 1072210, 1, 1, 0, 700), +(9300147, 1072210, 1, 1, 0, 700), +(7110301, 1072177, 1, 1, 0, 700), +(9300147, 1072177, 1, 1, 0, 700), +(7110301, 1002253, 1, 1, 0, 700), +(9300147, 1002253, 1, 1, 0, 700), +(7110301, 1051044, 1, 1, 0, 700), +(9300147, 1051044, 1, 1, 0, 700), +(7110301, 1051053, 1, 1, 0, 700), +(9300147, 1051053, 1, 1, 0, 700), +(7110301, 1051062, 1, 1, 0, 700), +(9300147, 1051062, 1, 1, 0, 700), +(7110301, 1050063, 1, 1, 0, 700), +(9300147, 1050063, 1, 1, 0, 700), +(7110301, 1072145, 1, 1, 0, 700), +(9300147, 1072145, 1, 1, 0, 700), +(7110301, 1002275, 1, 1, 0, 700), +(9300147, 1002275, 1, 1, 0, 700), +(7110301, 1051041, 1, 1, 0, 700), +(9300147, 1051041, 1, 1, 0, 700), +(7110301, 1002289, 1, 1, 0, 700), +(9300147, 1002289, 1, 1, 0, 700), +(7110301, 1002248, 1, 1, 0, 700), +(9300147, 1002248, 1, 1, 0, 700), +(7110301, 1040108, 1, 1, 0, 700), +(9300147, 1040108, 1, 1, 0, 700), +(7110301, 1072150, 1, 1, 0, 700), +(9300147, 1072150, 1, 1, 0, 700), +(7110301, 1041079, 1, 1, 0, 700), +(9300147, 1041079, 1, 1, 0, 700), +(7110301, 1482010, 1, 1, 0, 700), +(9300147, 1482010, 1, 1, 0, 700), +(6300100, 2000004, 1, 1, 0, 40000), +(9300320, 2000004, 1, 4, 0, 40000), +(6300100, 2000001, 1, 1, 0, 40000), +(9300320, 2000001, 1, 4, 0, 40000), +(6300100, 2041022, 1, 1, 0, 750), +(9300320, 2041022, 1, 4, 0, 10000), +(6300100, 2041013, 1, 1, 0, 750), +(9300320, 2041013, 1, 4, 0, 10000), +(6300100, 2384032, 1, 1, 0, 20000), +(9300320, 2384032, 1, 4, 0, 20000), +(6300100, 4010006, 1, 1, 0, 7000), +(9300320, 4010006, 1, 1, 0, 7000), +(6300100, 4020003, 1, 1, 0, 7000), +(9300320, 4020003, 1, 1, 0, 7000), +(6300100, 4004001, 1, 1, 0, 3000), +(9300320, 4004001, 1, 1, 0, 3000), +(6300100, 4004004, 1, 1, 0, 3000), +(9300320, 4004004, 1, 1, 0, 3000), +(6300100, 1442030, 1, 1, 0, 700), +(9300320, 1442030, 1, 1, 0, 40000), +(6300100, 1041093, 1, 1, 0, 700), +(9300320, 1041093, 1, 1, 0, 40000), +(6300100, 1061092, 1, 1, 0, 700), +(9300320, 1061092, 1, 1, 0, 40000), +(6300100, 1041098, 1, 1, 0, 700), +(9300320, 1041098, 1, 1, 0, 40000), +(6300100, 1072149, 1, 1, 0, 700), +(9300320, 1072149, 1, 1, 0, 40000), +(6300100, 1442008, 1, 1, 0, 700), +(9300320, 1442008, 1, 1, 0, 40000), +(6300100, 1082122, 1, 1, 0, 700), +(9300320, 1082122, 1, 1, 0, 40000), +(6300100, 1072139, 1, 1, 0, 700), +(9300320, 1072139, 1, 1, 0, 40000), +(6300100, 1072158, 1, 1, 0, 700), +(9300320, 1072158, 1, 1, 0, 40000), +(6300100, 1051065, 1, 1, 0, 700), +(9300320, 1051065, 1, 1, 0, 40000), +(6300100, 1082109, 1, 1, 0, 700), +(9300320, 1082109, 1, 1, 0, 40000), +(6300100, 1452010, 1, 1, 0, 700), +(9300320, 1452010, 1, 1, 0, 40000), +(6300100, 1082108, 1, 1, 0, 700), +(9300320, 1082108, 1, 1, 0, 40000), +(6300100, 1472027, 1, 1, 0, 700), +(9300320, 1472027, 1, 1, 0, 40000), +(6300100, 1040098, 1, 1, 0, 700), +(9300320, 1040098, 1, 1, 0, 40000), +(6300100, 1060087, 1, 1, 0, 700), +(9300320, 1060087, 1, 1, 0, 40000), +(6300100, 1072172, 1, 1, 0, 700), +(9300320, 1072172, 1, 1, 0, 40000), +(6300100, 1060094, 1, 1, 0, 700), +(9300320, 1060094, 1, 1, 0, 40000), +(6300100, 1082097, 1, 1, 0, 700), +(9300320, 1082097, 1, 1, 0, 40000), +(9300039, 2388012, 1, 4, 0, 20000), +(9300195, 2388012, 1, 4, 0, 20000), +(9500170, 2388012, 1, 4, 0, 20000), +(9500329, 2388012, 1, 4, 0, 20000), +(9500351, 2388012, 1, 4, 0, 20000), +(9303012, 2388012, 1, 1, 0, 20000), +(7130501, 4000230, 1, 1, 0, 200000), +(7130501, 2000006, 1, 1, 0, 40000), +(7130501, 2000004, 1, 1, 0, 40000), +(7130501, 2070005, 1, 1, 0, 400), +(7130501, 4006001, 1, 1, 0, 7000), +(7130501, 2040505, 1, 1, 0, 750), +(7130501, 2043002, 1, 1, 0, 750), +(7130501, 2384033, 1, 1, 0, 20000), +(7130501, 4010002, 1, 1, 0, 7000), +(7130501, 4020002, 1, 1, 0, 7000), +(7130501, 4004002, 1, 1, 0, 3000), +(7130501, 1102027, 1, 1, 0, 700), +(7130501, 1082105, 1, 1, 0, 700), +(7130501, 1302018, 1, 1, 0, 700), +(7130501, 1092016, 1, 1, 0, 700), +(7130501, 1072178, 1, 1, 0, 700), +(7130501, 1002276, 1, 1, 0, 700), +(7130501, 1472027, 1, 1, 0, 700), +(7130501, 1041103, 1, 1, 0, 700), +(7130501, 1061102, 1, 1, 0, 700), +(7130501, 1052122, 1, 1, 0, 700), +(7130101, 4000046, 1, 1, 0, 200000), +(9300250, 4000046, 1, 1, 0, 200000), +(9500129, 4000046, 1, 1, 0, 200000), +(7130101, 2000005, 1, 1, 0, 40000), +(9300250, 2000005, 1, 1, 0, 40000), +(9500129, 2000005, 1, 1, 0, 40000), +(7130101, 2044101, 1, 1, 0, 750), +(9300250, 2044101, 1, 1, 0, 750), +(9500129, 2044101, 1, 1, 0, 750), +(7130101, 4006001, 1, 1, 0, 7000), +(9300250, 4006001, 1, 1, 0, 7000), +(9500129, 4006001, 1, 1, 0, 7000), +(7130101, 4001112, 1, 1, 0, 7000), +(9300250, 4001112, 1, 1, 0, 7000), +(9500129, 4001112, 1, 1, 0, 7000), +(7130101, 2384036, 1, 1, 0, 20000), +(9300250, 2384036, 1, 1, 0, 20000), +(9500129, 2384036, 1, 1, 0, 20000), +(7130101, 4010003, 1, 1, 0, 7000), +(9300250, 4010003, 1, 1, 0, 7000), +(9500129, 4010003, 1, 1, 0, 7000), +(7130101, 4020008, 1, 1, 0, 7000), +(9300250, 4020008, 1, 1, 0, 7000), +(9500129, 4020008, 1, 1, 0, 7000), +(7130101, 1102028, 1, 1, 0, 700), +(9300250, 1102028, 1, 1, 0, 700), +(9500129, 1102028, 1, 1, 0, 700), +(7130101, 1072211, 1, 1, 0, 700), +(9300250, 1072211, 1, 1, 0, 700), +(9500129, 1072211, 1, 1, 0, 700), +(7130101, 1412008, 1, 1, 0, 700), +(9300250, 1412008, 1, 1, 0, 700), +(9500129, 1412008, 1, 1, 0, 700), +(7130101, 1312008, 1, 1, 0, 700), +(9300250, 1312008, 1, 1, 0, 700), +(9500129, 1312008, 1, 1, 0, 700), +(7130101, 1422010, 1, 1, 0, 700), +(9300250, 1422010, 1, 1, 0, 700), +(9500129, 1422010, 1, 1, 0, 700), +(7130101, 1092015, 1, 1, 0, 700), +(9300250, 1092015, 1, 1, 0, 700), +(9500129, 1092015, 1, 1, 0, 700), +(7130101, 1002095, 1, 1, 0, 700), +(9300250, 1002095, 1, 1, 0, 700), +(9500129, 1002095, 1, 1, 0, 700), +(7130101, 1092016, 1, 1, 0, 700), +(9300250, 1092016, 1, 1, 0, 700), +(9500129, 1092016, 1, 1, 0, 700), +(7130101, 1382010, 1, 1, 0, 700), +(9300250, 1382010, 1, 1, 0, 700), +(9500129, 1382010, 1, 1, 0, 700), +(7130101, 1082100, 1, 1, 0, 700), +(9300250, 1082100, 1, 1, 0, 700), +(9500129, 1082100, 1, 1, 0, 700), +(7130101, 1051047, 1, 1, 0, 700), +(9300250, 1051047, 1, 1, 0, 700), +(9500129, 1051047, 1, 1, 0, 700), +(7130101, 1051055, 1, 1, 0, 700), +(9300250, 1051055, 1, 1, 0, 700), +(9500129, 1051055, 1, 1, 0, 700), +(7130101, 1051056, 1, 1, 0, 700), +(9300250, 1051056, 1, 1, 0, 700), +(9500129, 1051056, 1, 1, 0, 700), +(7130101, 1452011, 1, 1, 0, 700), +(9300250, 1452011, 1, 1, 0, 700), +(9500129, 1452011, 1, 1, 0, 700), +(7130101, 1051063, 1, 1, 0, 700), +(9300250, 1051063, 1, 1, 0, 700), +(9500129, 1051063, 1, 1, 0, 700), +(7130101, 1050077, 1, 1, 0, 700), +(9300250, 1050077, 1, 1, 0, 700), +(9500129, 1050077, 1, 1, 0, 700), +(7130101, 1072167, 1, 1, 0, 700), +(9300250, 1072167, 1, 1, 0, 700), +(9500129, 1072167, 1, 1, 0, 700), +(7130101, 1041103, 1, 1, 0, 700), +(9300250, 1041103, 1, 1, 0, 700), +(9500129, 1041103, 1, 1, 0, 700), +(7130101, 1002327, 1, 1, 0, 700), +(9300250, 1002327, 1, 1, 0, 700), +(9500129, 1002327, 1, 1, 0, 700), +(7130101, 1482009, 1, 1, 0, 700), +(9300250, 1482009, 1, 1, 0, 700), +(9500129, 1482009, 1, 1, 0, 700), +(7130200, 4000053, 1, 1, 0, 200000), +(9500132, 4000053, 1, 1, 0, 200000), +(7130200, 4000021, 1, 1, 0, 200000), +(9500132, 4000021, 1, 1, 0, 200000), +(7130200, 4003004, 1, 1, 0, 7000), +(9500132, 4003004, 1, 1, 0, 7000), +(7130200, 2000006, 1, 1, 0, 40000), +(9500132, 2000006, 1, 1, 0, 40000), +(7130200, 2000004, 1, 1, 0, 40000), +(9500132, 2000004, 1, 1, 0, 40000), +(7130200, 2070004, 1, 1, 0, 400), +(9500132, 2070004, 1, 1, 0, 400), +(7130200, 2043701, 1, 1, 0, 750), +(9500132, 2043701, 1, 1, 0, 750), +(7130200, 2044701, 1, 1, 0, 750), +(9500132, 2044701, 1, 1, 0, 750), +(7130200, 2040320, 1, 1, 0, 750), +(9500132, 2040320, 1, 1, 0, 750), +(7130200, 4006000, 1, 1, 0, 7000), +(9500132, 4006000, 1, 1, 0, 7000), +(7130200, 2384035, 1, 1, 0, 20000), +(9500132, 2384035, 1, 1, 0, 20000), +(7130200, 4010003, 1, 1, 0, 7000), +(9500132, 4010003, 1, 1, 0, 7000), +(7130200, 4020001, 1, 1, 0, 7000), +(9500132, 4020001, 1, 1, 0, 7000), +(7130200, 4004000, 1, 1, 0, 3000), +(9500132, 4004000, 1, 1, 0, 3000), +(7130200, 1002339, 1, 1, 0, 700), +(9500132, 1002339, 1, 1, 0, 700), +(7130200, 1322020, 1, 1, 0, 700), +(9500132, 1322020, 1, 1, 0, 700), +(7130200, 1092015, 1, 1, 0, 700), +(9500132, 1092015, 1, 1, 0, 700), +(7130200, 1060090, 1, 1, 0, 700), +(9500132, 1060090, 1, 1, 0, 700), +(7130200, 1402012, 1, 1, 0, 700), +(9500132, 1402012, 1, 1, 0, 700), +(7130200, 1002254, 1, 1, 0, 700), +(9500132, 1002254, 1, 1, 0, 700), +(7130200, 1050069, 1, 1, 0, 700), +(9500132, 1050069, 1, 1, 0, 700), +(7130200, 1050055, 1, 1, 0, 700), +(9500132, 1050055, 1, 1, 0, 700), +(7130200, 1002273, 1, 1, 0, 700), +(9500132, 1002273, 1, 1, 0, 700), +(7130200, 1082100, 1, 1, 0, 700), +(9500132, 1082100, 1, 1, 0, 700), +(7130200, 1002288, 1, 1, 0, 700), +(9500132, 1002288, 1, 1, 0, 700), +(7130200, 1051066, 1, 1, 0, 700), +(9500132, 1051066, 1, 1, 0, 700), +(7130200, 1472030, 1, 1, 0, 700), +(9500132, 1472030, 1, 1, 0, 700), +(7130200, 1472029, 1, 1, 0, 700), +(9500132, 1472029, 1, 1, 0, 700), +(7130200, 1332018, 1, 1, 0, 700), +(9500132, 1332018, 1, 1, 0, 700), +(7130200, 1041102, 1, 1, 0, 700), +(9500132, 1041102, 1, 1, 0, 700), +(7130200, 1061101, 1, 1, 0, 700), +(9500132, 1061101, 1, 1, 0, 700), +(7130200, 1061104, 1, 1, 0, 700), +(9500132, 1061104, 1, 1, 0, 700), +(7130200, 1072309, 1, 1, 0, 700), +(9500132, 1072309, 1, 1, 0, 700), +(9400585, 4020000, 1, 1, 0, 7000), +(9400586, 4020000, 1, 1, 0, 7000), +(7110300, 4000362, 1, 1, 0, 200000), +(7110300, 4031741, 1, 1, 0, 7000), +(7110300, 2000006, 1, 1, 0, 40000), +(7110300, 4006000, 1, 1, 0, 7000), +(7110300, 2040320, 1, 1, 0, 750), +(7110300, 2043701, 1, 1, 0, 750), +(7110300, 2044701, 1, 1, 0, 750), +(7110300, 4010003, 1, 1, 0, 7000), +(7110300, 4020001, 1, 1, 0, 7000), +(7110300, 4004000, 1, 1, 0, 3000), +(7110300, 1002339, 1, 1, 0, 700), +(7110300, 1322020, 1, 1, 0, 700), +(7110300, 1092015, 1, 1, 0, 700), +(7110300, 1040102, 1, 1, 0, 700), +(7110300, 1060090, 1, 1, 0, 700), +(7110300, 1402012, 1, 1, 0, 700), +(7110300, 1002254, 1, 1, 0, 700), +(7110300, 1050069, 1, 1, 0, 700), +(7110300, 1050055, 1, 1, 0, 700), +(7110300, 1002273, 1, 1, 0, 700), +(7110300, 1082100, 1, 1, 0, 700), +(7110300, 1002288, 1, 1, 0, 700), +(7110300, 1051066, 1, 1, 0, 700), +(7110300, 1472030, 1, 1, 0, 700), +(7110300, 1472029, 1, 1, 0, 700), +(7110300, 1332018, 1, 1, 0, 700), +(7110300, 1041102, 1, 1, 0, 700), +(7110300, 1061101, 1, 1, 0, 700), +(7110300, 1041105, 1, 1, 0, 700), +(7110300, 1061104, 1, 1, 0, 700), +(7110300, 1041094, 1, 1, 0, 700), +(7110300, 1061093, 1, 1, 0, 700), +(9420537, 4000475, 1, 1, 0, 200000), +(9420537, 4010005, 1, 1, 0, 7000), +(9420537, 2022003, 1, 1, 0, 3000), +(9420537, 2000006, 1, 1, 0, 40000), +(9420537, 1322009, 1, 1, 0, 700), +(9420537, 1072155, 1, 1, 0, 700), +(9420537, 1002289, 1, 1, 0, 700), +(9420537, 1002284, 1, 1, 0, 700), +(9420537, 1061101, 1, 1, 0, 700), +(9420537, 1041102, 1, 1, 0, 700), +(7090000, 2384038, 1, 4, 0, 20000), +(7120107, 4000549, 1, 1, 0, 200000), +(7120107, 4130020, 1, 1, 0, 3000), +(7120107, 4130017, 1, 1, 0, 3000), +(7120107, 4130016, 1, 1, 0, 3000), +(7120107, 2000006, 1, 1, 0, 40000), +(7120107, 2000004, 1, 1, 0, 40000), +(7120107, 4006000, 1, 1, 0, 7000), +(7120107, 2330004, 1, 1, 0, 400), +(7120107, 2070005, 1, 1, 0, 400), +(7120107, 2040513, 1, 1, 0, 750), +(7120107, 2044602, 1, 1, 0, 750), +(7120107, 2040624, 1, 1, 0, 750), +(7120107, 2040612, 1, 1, 0, 750), +(7120107, 2043110, 1, 1, 0, 750), +(7120107, 2049000, 1, 1, 0, 400), +(7120107, 4010005, 1, 1, 0, 7000), +(7120107, 4020000, 1, 1, 0, 7000), +(7120107, 4004004, 1, 1, 0, 3000), +(7120107, 1040090, 1, 1, 0, 700), +(7120107, 1060079, 1, 1, 0, 700), +(7120107, 1041099, 1, 1, 0, 700), +(7120107, 1061098, 1, 1, 0, 700), +(7120107, 1002340, 1, 1, 0, 700), +(7120107, 1322020, 1, 1, 0, 700), +(7120107, 1051055, 1, 1, 0, 700), +(7120107, 1051057, 1, 1, 0, 700), +(7120107, 1002252, 1, 1, 0, 700), +(7120107, 1072160, 1, 1, 0, 700), +(7120107, 1382010, 1, 1, 0, 700), +(7120107, 1051043, 1, 1, 0, 700), +(7120107, 1002289, 1, 1, 0, 700), +(7120107, 1002288, 1, 1, 0, 700), +(7120107, 1002277, 1, 1, 0, 700), +(7120107, 1041096, 1, 1, 0, 700), +(7120107, 1061095, 1, 1, 0, 700), +(7120107, 1040109, 1, 1, 0, 700), +(7120107, 1060098, 1, 1, 0, 700), +(7120107, 1472027, 1, 1, 0, 700), +(7120107, 1492009, 1, 1, 0, 700), +(7120106, 4000548, 1, 1, 0, 200000), +(7120106, 4130012, 1, 1, 0, 3000), +(7120106, 4130004, 1, 1, 0, 3000), +(7120106, 4130001, 1, 1, 0, 3000), +(7120106, 2002003, 1, 1, 0, 10000), +(7120106, 2002004, 1, 1, 0, 10000), +(7120106, 2000006, 1, 1, 0, 40000), +(7120106, 2000004, 1, 1, 0, 40000), +(7120106, 4006001, 1, 1, 0, 7000), +(7120106, 2040301, 1, 1, 0, 750), +(7120106, 2040516, 1, 1, 0, 750), +(7120106, 2040419, 1, 1, 0, 750), +(7120106, 2049000, 1, 1, 0, 400), +(7120106, 4020002, 1, 1, 0, 7000), +(7120106, 4010002, 1, 1, 0, 7000), +(7120106, 1040092, 1, 1, 0, 700), +(7120106, 1060081, 1, 1, 0, 700), +(7120106, 1041092, 1, 1, 0, 700), +(7120106, 1061091, 1, 1, 0, 700), +(7120106, 1092023, 1, 1, 0, 700), +(7120106, 1072210, 1, 1, 0, 700), +(7120106, 1051054, 1, 1, 0, 700), +(7120106, 1072177, 1, 1, 0, 700), +(7120106, 1050061, 1, 1, 0, 700), +(7120106, 1051063, 1, 1, 0, 700), +(7120106, 1072182, 1, 1, 0, 700), +(7120106, 1041095, 1, 1, 0, 700), +(7120106, 1061094, 1, 1, 0, 700), +(7120106, 1072172, 1, 1, 0, 700), +(7120106, 1082207, 1, 1, 0, 700), +(8140300, 4000146, 1, 1, 0, 200000), +(8140300, 2000006, 1, 1, 0, 40000), +(8140300, 2070005, 1, 1, 0, 400), +(8140300, 4006000, 1, 1, 0, 7000), +(8140300, 2044602, 1, 1, 0, 750), +(8140300, 2040513, 1, 1, 0, 750), +(8140300, 2385000, 1, 1, 0, 20000), +(8140300, 4010005, 1, 1, 0, 7000), +(8140300, 4020007, 1, 1, 0, 7000), +(8140300, 4004004, 1, 1, 0, 3000), +(8140300, 1002340, 1, 1, 0, 700), +(8140300, 1322020, 1, 1, 0, 700), +(8140300, 1041099, 1, 1, 0, 700), +(8140300, 1040090, 1, 1, 0, 700), +(8140300, 1060079, 1, 1, 0, 700), +(8140300, 1382010, 1, 1, 0, 700), +(8140300, 1051057, 1, 1, 0, 700), +(8140300, 1002252, 1, 1, 0, 700), +(8140300, 1072160, 1, 1, 0, 700), +(8140300, 1002288, 1, 1, 0, 700), +(8140300, 1002289, 1, 1, 0, 700), +(8140300, 1051043, 1, 1, 0, 700), +(8140300, 1002277, 1, 1, 0, 700), +(8140300, 1472027, 1, 1, 0, 700), +(8140300, 1040107, 1, 1, 0, 700), +(8140300, 1060095, 1, 1, 0, 700), +(8140300, 1040109, 1, 1, 0, 700), +(8140300, 1060098, 1, 1, 0, 700), +(8140300, 1041096, 1, 1, 0, 700), +(8140300, 1061095, 1, 1, 0, 700), +(8140300, 1492009, 1, 1, 0, 700), +(7130003, 4030012, 1, 1, 0, 10000), +(7130003, 2000006, 1, 1, 0, 40000), +(7130003, 2000004, 1, 1, 0, 40000), +(7130003, 2070005, 1, 1, 0, 400), +(7130003, 4006000, 1, 1, 0, 7000), +(7130003, 2044101, 1, 1, 0, 750), +(7130003, 2041044, 1, 1, 0, 750), +(7130003, 2385001, 1, 1, 0, 20000), +(7130003, 4010003, 1, 1, 0, 7000), +(7130003, 4020003, 1, 1, 0, 7000), +(7130003, 4004003, 1, 1, 0, 3000), +(7130003, 1432007, 1, 1, 0, 700), +(7130003, 1092016, 1, 1, 0, 700), +(7130003, 1072156, 1, 1, 0, 700), +(7130003, 1412008, 1, 1, 0, 700), +(7130003, 1002253, 1, 1, 0, 700), +(7130003, 1372015, 1, 1, 0, 700), +(7130003, 1051063, 1, 1, 0, 700), +(7130003, 1082096, 1, 1, 0, 700), +(7130003, 1002640, 1, 1, 0, 700), +(9300106, 2388011, 1, 4, 0, 20000), +(7130601, 4006000, 1, 1, 0, 7000), +(7130601, 4130016, 1, 1, 0, 3000), +(7130601, 4130003, 1, 1, 0, 3000), +(7130601, 4130011, 1, 1, 0, 3000), +(7130601, 2385002, 1, 1, 0, 20000), +(7130601, 2000006, 1, 1, 0, 40000), +(7130601, 2000004, 1, 1, 0, 40000), +(7130601, 2043701, 1, 1, 0, 750), +(7130601, 2044602, 1, 1, 0, 750), +(7130601, 2044804, 1, 1, 0, 750), +(7130601, 2040928, 1, 1, 0, 750), +(7130601, 4020001, 1, 1, 0, 7000), +(7130601, 4020007, 1, 1, 0, 7000), +(7130601, 4004003, 1, 1, 0, 3000), +(7130601, 1322019, 1, 1, 0, 700), +(7130601, 1072212, 1, 1, 0, 700), +(7130601, 1002252, 1, 1, 0, 700), +(7130601, 1462009, 1, 1, 0, 700), +(7130601, 1082125, 1, 1, 0, 700), +(7130601, 1060094, 1, 1, 0, 700), +(7130601, 1052125, 1, 1, 0, 700), +(6400100, 4130003, 1, 1, 0, 3000), +(9300321, 4130003, 1, 1, 0, 3000), +(6400100, 2000002, 1, 1, 0, 40000), +(9300321, 2000002, 1, 4, 0, 40000), +(6400100, 2002005, 1, 1, 0, 10000), +(9300321, 2002005, 1, 4, 0, 10000), +(6400100, 2044001, 1, 1, 0, 750), +(9300321, 2044001, 1, 4, 0, 10000), +(6400100, 2385003, 1, 1, 0, 20000), +(9300321, 2385003, 1, 4, 0, 20000), +(6400100, 4004004, 1, 1, 0, 3000), +(9300321, 4004004, 1, 1, 0, 3000), +(6400100, 1032022, 1, 1, 0, 700), +(9300321, 1032022, 1, 1, 0, 40000), +(6400100, 1442030, 1, 1, 0, 700), +(9300321, 1442030, 1, 1, 0, 40000), +(6400100, 1412008, 1, 1, 0, 700), +(9300321, 1412008, 1, 1, 0, 40000), +(6400100, 1092017, 1, 1, 0, 700), +(9300321, 1092017, 1, 1, 0, 40000), +(6400100, 1442008, 1, 1, 0, 700), +(9300321, 1442008, 1, 1, 0, 40000), +(6400100, 1082116, 1, 1, 0, 700), +(9300321, 1082116, 1, 1, 0, 40000), +(6400100, 1041099, 1, 1, 0, 700), +(9300321, 1041099, 1, 1, 0, 40000), +(6400100, 1002252, 1, 1, 0, 700), +(9300321, 1002252, 1, 1, 0, 40000), +(6400100, 1051058, 1, 1, 0, 700), +(9300321, 1051058, 1, 1, 0, 40000), +(6400100, 1472029, 1, 1, 0, 700), +(9300321, 1472029, 1, 1, 0, 40000), +(6400100, 1002282, 1, 1, 0, 700), +(9300321, 1002282, 1, 1, 0, 40000), +(6400100, 1082207, 1, 1, 0, 700), +(9300321, 1082207, 1, 1, 0, 40000), +(7220002, 4000298, 1, 1, 0, 200000), +(9300202, 4000298, 1, 1, 0, 200000), +(9500314, 4000298, 1, 1, 0, 200000), +(9500352, 4000298, 1, 1, 0, 200000), +(9303009, 4000298, 1, 1, 0, 200000), +(7220002, 4000289, 1, 1, 0, 200000), +(9300202, 4000289, 1, 1, 0, 200000), +(9500314, 4000289, 1, 1, 0, 200000), +(9500352, 4000289, 1, 1, 0, 200000), +(9303009, 4000289, 1, 1, 0, 200000), +(7220002, 4003005, 1, 1, 0, 7000), +(9300202, 4003005, 1, 1, 0, 7000), +(9500314, 4003005, 1, 1, 0, 7000), +(9500352, 4003005, 1, 1, 0, 7000), +(9303009, 4003005, 1, 1, 0, 7000), +(7220002, 2000002, 1, 4, 0, 40000), +(9300202, 2000002, 1, 4, 0, 40000), +(9500314, 2000002, 1, 4, 0, 40000), +(9500352, 2000002, 1, 4, 0, 40000), +(9303009, 2000002, 1, 1, 0, 40000), +(7220002, 2000003, 1, 4, 0, 40000), +(9300202, 2000003, 1, 4, 0, 40000), +(9500314, 2000003, 1, 4, 0, 40000), +(9500352, 2000003, 1, 4, 0, 40000), +(9303009, 2000003, 1, 1, 0, 40000), +(7220002, 2002002, 1, 4, 0, 10000), +(9300202, 2002002, 1, 4, 0, 10000), +(9500314, 2002002, 1, 4, 0, 10000), +(9500352, 2002002, 1, 4, 0, 10000), +(9303009, 2002002, 1, 1, 0, 10000), +(7220002, 2002003, 1, 4, 0, 10000), +(9300202, 2002003, 1, 4, 0, 10000), +(9500314, 2002003, 1, 4, 0, 10000), +(9500352, 2002003, 1, 4, 0, 10000), +(9303009, 2002003, 1, 1, 0, 10000), +(7220002, 2022149, 1, 4, 0, 3000), +(9300202, 2022149, 1, 4, 0, 3000), +(9500314, 2022149, 1, 4, 0, 3000), +(9500352, 2022149, 1, 4, 0, 3000), +(9303009, 2022149, 1, 1, 0, 3000), +(7220002, 2040004, 1, 4, 0, 10000), +(9300202, 2040004, 1, 4, 0, 10000), +(9500314, 2040004, 1, 4, 0, 10000), +(9500352, 2040004, 1, 4, 0, 10000), +(9303009, 2040004, 1, 1, 0, 750), +(7220002, 2040504, 1, 4, 0, 10000), +(9300202, 2040504, 1, 4, 0, 10000), +(9500314, 2040504, 1, 4, 0, 10000), +(9500352, 2040504, 1, 4, 0, 10000), +(9303009, 2040504, 1, 1, 0, 750), +(7220002, 2040601, 1, 4, 0, 10000), +(9300202, 2040601, 1, 4, 0, 10000), +(9500314, 2040601, 1, 4, 0, 10000), +(9500352, 2040601, 1, 4, 0, 10000), +(9303009, 2040601, 1, 1, 0, 750), +(7220002, 2040701, 1, 4, 0, 10000), +(9300202, 2040701, 1, 4, 0, 10000), +(9500314, 2040701, 1, 4, 0, 10000), +(9500352, 2040701, 1, 4, 0, 10000), +(9303009, 2040701, 1, 1, 0, 750), +(7220002, 2040707, 1, 4, 0, 10000), +(9300202, 2040707, 1, 4, 0, 10000), +(9500314, 2040707, 1, 4, 0, 10000), +(9500352, 2040707, 1, 4, 0, 10000), +(9303009, 2040707, 1, 1, 0, 750), +(7220002, 2040801, 1, 4, 0, 10000), +(9300202, 2040801, 1, 4, 0, 10000), +(9500314, 2040801, 1, 4, 0, 10000), +(9500352, 2040801, 1, 4, 0, 10000), +(9303009, 2040801, 1, 1, 0, 750), +(7220002, 2041010, 1, 4, 0, 10000), +(9300202, 2041010, 1, 4, 0, 10000), +(9500314, 2041010, 1, 4, 0, 10000), +(9500352, 2041010, 1, 4, 0, 10000), +(9303009, 2041010, 1, 1, 0, 750), +(7220002, 2043101, 1, 4, 0, 10000), +(9300202, 2043101, 1, 4, 0, 10000), +(9500314, 2043101, 1, 4, 0, 10000), +(9500352, 2043101, 1, 4, 0, 10000), +(9303009, 2043101, 1, 1, 0, 750), +(7220002, 2044001, 1, 4, 0, 10000), +(9300202, 2044001, 1, 4, 0, 10000), +(9500314, 2044001, 1, 4, 0, 10000), +(9500352, 2044001, 1, 4, 0, 10000), +(9303009, 2044001, 1, 1, 0, 750), +(7220002, 2044601, 1, 4, 0, 10000), +(9300202, 2044601, 1, 4, 0, 10000), +(9500314, 2044601, 1, 4, 0, 10000), +(9500352, 2044601, 1, 4, 0, 10000), +(9303009, 2044601, 1, 1, 0, 750), +(7220002, 2040402, 1, 4, 0, 10000), +(9300202, 2040402, 1, 4, 0, 10000), +(9500314, 2040402, 1, 4, 0, 10000), +(9500352, 2040402, 1, 4, 0, 10000), +(9303009, 2040402, 1, 1, 0, 750), +(7220002, 2040514, 1, 4, 0, 10000), +(9300202, 2040514, 1, 4, 0, 10000), +(9500314, 2040514, 1, 4, 0, 10000), +(9500352, 2040514, 1, 4, 0, 10000), +(9303009, 2040514, 1, 1, 0, 750), +(7220002, 2040702, 1, 4, 0, 10000), +(9300202, 2040702, 1, 4, 0, 10000), +(9500314, 2040702, 1, 4, 0, 10000), +(9500352, 2040702, 1, 4, 0, 10000), +(9303009, 2040702, 1, 1, 0, 750), +(7220002, 2041046, 1, 4, 0, 10000), +(9300202, 2041046, 1, 4, 0, 10000), +(9500314, 2041046, 1, 4, 0, 10000), +(9500352, 2041046, 1, 4, 0, 10000), +(9303009, 2041046, 1, 1, 0, 750), +(7220002, 2044302, 1, 4, 0, 10000), +(9300202, 2044302, 1, 4, 0, 10000), +(9500314, 2044302, 1, 4, 0, 10000), +(9500352, 2044302, 1, 4, 0, 10000), +(9303009, 2044302, 1, 1, 0, 750), +(7220002, 2388013, 1, 4, 0, 20000), +(9300202, 2388013, 1, 4, 0, 20000), +(9500314, 2388013, 1, 4, 0, 20000), +(9500352, 2388013, 1, 4, 0, 20000), +(9303009, 2388013, 1, 1, 0, 20000), +(7220002, 2060001, 10, 50, 0, 10000), +(9300202, 2060001, 10, 50, 0, 10000), +(9500314, 2060001, 10, 50, 0, 10000), +(9500352, 2060001, 10, 50, 0, 10000), +(9303009, 2060001, 10, 50, 0, 10000), +(7220002, 2061001, 10, 50, 0, 10000), +(9300202, 2061001, 10, 50, 0, 10000), +(9500314, 2061001, 10, 50, 0, 10000), +(9500352, 2061001, 10, 50, 0, 10000), +(9303009, 2061001, 10, 50, 0, 10000), +(7220002, 2044904, 1, 4, 0, 10000), +(9300202, 2044904, 1, 4, 0, 10000), +(9500314, 2044904, 1, 4, 0, 10000), +(9500352, 2044904, 1, 4, 0, 10000), +(9303009, 2044904, 1, 1, 0, 750), +(7220002, 2040621, 1, 4, 0, 10000), +(9300202, 2040621, 1, 4, 0, 10000), +(9500314, 2040621, 1, 4, 0, 10000), +(9500352, 2040621, 1, 4, 0, 10000), +(9303009, 2040621, 1, 1, 0, 750), +(7220002, 2049000, 1, 4, 0, 2500), +(9300202, 2049000, 1, 4, 0, 2500), +(9500314, 2049000, 1, 4, 0, 2500), +(9500352, 2049000, 1, 4, 0, 2500), +(9303009, 2049000, 1, 1, 0, 400), +(7220002, 4004004, 1, 1, 0, 3000), +(9300202, 4004004, 1, 1, 0, 3000), +(9500314, 4004004, 1, 1, 0, 3000), +(9500352, 4004004, 1, 1, 0, 3000), +(9303009, 4004004, 1, 1, 0, 3000), +(7220002, 4010005, 1, 1, 0, 7000), +(9300202, 4010005, 1, 1, 0, 7000), +(9500314, 4010005, 1, 1, 0, 7000), +(9500352, 4010005, 1, 1, 0, 7000), +(9303009, 4010005, 1, 1, 0, 7000), +(7220002, 4020008, 1, 1, 0, 7000), +(9300202, 4020008, 1, 1, 0, 7000), +(9500314, 4020008, 1, 1, 0, 7000), +(9500352, 4020008, 1, 1, 0, 7000), +(9303009, 4020008, 1, 1, 0, 7000), +(7220002, 1302018, 1, 1, 0, 40000), +(9300202, 1302018, 1, 1, 0, 40000), +(9500314, 1302018, 1, 1, 0, 40000), +(9500352, 1302018, 1, 1, 0, 40000), +(9303009, 1302018, 1, 1, 0, 700), +(7220002, 1312011, 1, 1, 0, 40000), +(9300202, 1312011, 1, 1, 0, 40000), +(9500314, 1312011, 1, 1, 0, 40000), +(9500352, 1312011, 1, 1, 0, 40000), +(9303009, 1312011, 1, 1, 0, 700), +(7220002, 1402004, 1, 1, 0, 40000), +(9300202, 1402004, 1, 1, 0, 40000), +(9500314, 1402004, 1, 1, 0, 40000), +(9500352, 1402004, 1, 1, 0, 40000), +(9303009, 1402004, 1, 1, 0, 700), +(7220002, 1412009, 1, 1, 0, 40000), +(9300202, 1412009, 1, 1, 0, 40000), +(9500314, 1412009, 1, 1, 0, 40000), +(9500352, 1412009, 1, 1, 0, 40000), +(9303009, 1412009, 1, 1, 0, 700), +(7220002, 1422012, 1, 1, 0, 40000), +(9300202, 1422012, 1, 1, 0, 40000), +(9500314, 1422012, 1, 1, 0, 40000), +(9500352, 1422012, 1, 1, 0, 40000), +(9303009, 1422012, 1, 1, 0, 700), +(7220002, 1432010, 1, 1, 0, 40000), +(9300202, 1432010, 1, 1, 0, 40000), +(9500314, 1432010, 1, 1, 0, 40000), +(9500352, 1432010, 1, 1, 0, 40000), +(9303009, 1432010, 1, 1, 0, 700), +(7220002, 1442019, 1, 1, 0, 40000), +(9300202, 1442019, 1, 1, 0, 40000), +(9500314, 1442019, 1, 1, 0, 40000), +(9500352, 1442019, 1, 1, 0, 40000), +(9303009, 1442019, 1, 1, 0, 700), +(7220002, 1372016, 1, 1, 0, 40000), +(9300202, 1372016, 1, 1, 0, 40000), +(9500314, 1372016, 1, 1, 0, 40000), +(9500352, 1372016, 1, 1, 0, 40000), +(9303009, 1372016, 1, 1, 0, 700), +(7220002, 1382008, 1, 1, 0, 40000), +(9300202, 1382008, 1, 1, 0, 40000), +(9500314, 1382008, 1, 1, 0, 40000), +(9500352, 1382008, 1, 1, 0, 40000), +(9303009, 1382008, 1, 1, 0, 700), +(7220002, 1452015, 1, 1, 0, 40000), +(9300202, 1452015, 1, 1, 0, 40000), +(9500314, 1452015, 1, 1, 0, 40000), +(9500352, 1452015, 1, 1, 0, 40000), +(9303009, 1452015, 1, 1, 0, 700), +(7220002, 1462013, 1, 1, 0, 40000), +(9300202, 1462013, 1, 1, 0, 40000), +(9500314, 1462013, 1, 1, 0, 40000), +(9500352, 1462013, 1, 1, 0, 40000), +(9303009, 1462013, 1, 1, 0, 700), +(7220002, 1472031, 1, 1, 0, 40000), +(9300202, 1472031, 1, 1, 0, 40000), +(9500314, 1472031, 1, 1, 0, 40000), +(9500352, 1472031, 1, 1, 0, 40000), +(9303009, 1472031, 1, 1, 0, 700), +(7220002, 1482010, 1, 1, 0, 40000), +(9300202, 1482010, 1, 1, 0, 40000), +(9500314, 1482010, 1, 1, 0, 40000), +(9500352, 1482010, 1, 1, 0, 40000), +(9303009, 1482010, 1, 1, 0, 700), +(7120108, 2000002, 1, 1, 0, 40000), +(7120108, 2000004, 1, 1, 0, 40000), +(7120108, 2002008, 1, 1, 0, 10000), +(7120108, 2044001, 1, 1, 0, 750), +(7120108, 2041013, 1, 1, 0, 750), +(7120108, 2040322, 1, 1, 0, 750), +(7120108, 2040536, 1, 1, 0, 750), +(7120108, 2043116, 1, 1, 0, 750), +(7120108, 2049000, 1, 1, 0, 400), +(7120108, 4020003, 1, 1, 0, 7000), +(7120108, 4010006, 1, 1, 0, 7000), +(7120108, 4004004, 1, 1, 0, 3000), +(7120108, 1032022, 1, 1, 0, 700), +(7120108, 1072149, 1, 1, 0, 700), +(7120108, 1041099, 1, 1, 0, 700), +(7120108, 1061098, 1, 1, 0, 700), +(7120108, 1092017, 1, 1, 0, 700), +(7120108, 1412008, 1, 1, 0, 700), +(7120108, 1051046, 1, 1, 0, 700), +(7120108, 1082098, 1, 1, 0, 700), +(7120108, 1002252, 1, 1, 0, 700), +(7120108, 1051058, 1, 1, 0, 700), +(7120108, 1002268, 1, 1, 0, 700), +(7120108, 1050061, 1, 1, 0, 700), +(7120108, 1002289, 1, 1, 0, 700), +(7120108, 1050077, 1, 1, 0, 700), +(7120108, 1002282, 1, 1, 0, 700), +(7120108, 1472029, 1, 1, 0, 700), +(7120108, 1060094, 1, 1, 0, 700), +(7120108, 1072173, 1, 1, 0, 700), +(7120108, 1082207, 1, 1, 0, 700), +(7130004, 2000004, 1, 1, 0, 40000), +(9500161, 2000004, 1, 1, 0, 40000), +(7130004, 4006001, 1, 1, 0, 7000), +(9500161, 4006001, 1, 1, 0, 7000), +(7130004, 2330003, 1, 1, 0, 400), +(9500161, 2330003, 1, 1, 0, 400), +(7130004, 2385005, 1, 1, 0, 20000), +(9500161, 2385005, 1, 1, 0, 20000), +(7130004, 2049101, 1, 1, 0, 400), +(9500161, 2049101, 1, 1, 0, 400), +(7130004, 4010004, 1, 1, 0, 7000), +(9500161, 4010004, 1, 1, 0, 7000), +(7130004, 4020004, 1, 1, 0, 7000), +(9500161, 4020004, 1, 1, 0, 7000), +(7130004, 4004004, 1, 1, 0, 3000), +(9500161, 4004004, 1, 1, 0, 3000), +(7130004, 1102029, 1, 1, 0, 700), +(9500161, 1102029, 1, 1, 0, 700), +(7130004, 1002338, 1, 1, 0, 700), +(9500161, 1002338, 1, 1, 0, 700), +(7130004, 1402012, 1, 1, 0, 700), +(9500161, 1402012, 1, 1, 0, 700), +(7130004, 1050074, 1, 1, 0, 700), +(9500161, 1050074, 1, 1, 0, 700), +(7130004, 1452010, 1, 1, 0, 700), +(9500161, 1452010, 1, 1, 0, 700), +(7130004, 1072161, 1, 1, 0, 700), +(9500161, 1072161, 1, 1, 0, 700), +(7130004, 1072312, 1, 1, 0, 700), +(9500161, 1072312, 1, 1, 0, 700), +(7120109, 4000551, 1, 1, 0, 200000), +(7120109, 4006001, 1, 1, 0, 7000), +(7120109, 2000006, 1, 1, 0, 40000), +(7120109, 2000004, 1, 1, 0, 40000), +(7120109, 2041008, 1, 1, 0, 750), +(7120109, 2044401, 1, 1, 0, 750), +(7120109, 2330003, 1, 1, 0, 400), +(7120109, 2040621, 1, 1, 0, 750), +(7120109, 2044316, 1, 1, 0, 750), +(7120109, 2049101, 1, 1, 0, 400), +(7120109, 2049000, 1, 1, 0, 400), +(7120109, 4010004, 1, 1, 0, 7000), +(7120109, 4020004, 1, 1, 0, 7000), +(7120109, 4004004, 1, 1, 0, 3000), +(7120109, 1102029, 1, 1, 0, 700), +(7120109, 1032022, 1, 1, 0, 700), +(7120109, 1442030, 1, 1, 0, 700), +(7120109, 1002338, 1, 1, 0, 700), +(7120109, 1402012, 1, 1, 0, 700), +(7120109, 1050074, 1, 1, 0, 700), +(7120109, 1082107, 1, 1, 0, 700), +(7120109, 1452010, 1, 1, 0, 700), +(7120109, 1072161, 1, 1, 0, 700), +(7120109, 1072312, 1, 1, 0, 700), +(8130100, 4030012, 1, 1, 0, 10000), +(9300203, 4030012, 1, 1, 0, 10000), +(9300260, 4030012, 1, 1, 0, 10000), +(9500139, 4030012, 1, 1, 0, 10000), +(9500169, 4030012, 1, 1, 0, 10000), +(9500327, 4030012, 1, 1, 0, 10000), +(9500353, 4030012, 1, 1, 0, 10000), +(6400008, 4030012, 1, 1, 0, 10000), +(9303010, 4030012, 1, 1, 0, 10000), +(8130100, 2000006, 1, 4, 0, 40000), +(9300203, 2000006, 1, 4, 0, 40000), +(9300260, 2000006, 1, 1, 0, 40000), +(9500139, 2000006, 1, 4, 0, 40000), +(9500169, 2000006, 1, 4, 0, 40000), +(9500327, 2000006, 1, 4, 0, 40000), +(9500353, 2000006, 1, 4, 0, 40000), +(6400008, 2000006, 1, 4, 0, 40000), +(9303010, 2000006, 1, 1, 0, 40000), +(8130100, 2000005, 1, 4, 0, 40000), +(9300203, 2000005, 1, 4, 0, 40000), +(9300260, 2000005, 1, 1, 0, 40000), +(9500139, 2000005, 1, 4, 0, 40000), +(9500169, 2000005, 1, 4, 0, 40000), +(9500327, 2000005, 1, 4, 0, 40000), +(9500353, 2000005, 1, 4, 0, 40000), +(6400008, 2000005, 1, 4, 0, 40000), +(9303010, 2000005, 1, 1, 0, 40000), +(8130100, 2043001, 1, 4, 0, 10000), +(9300203, 2043001, 1, 4, 0, 10000), +(9300260, 2043001, 1, 1, 0, 750), +(9500139, 2043001, 1, 4, 0, 10000), +(9500169, 2043001, 1, 4, 0, 10000), +(9500327, 2043001, 1, 4, 0, 10000), +(9500353, 2043001, 1, 4, 0, 10000), +(6400008, 2043001, 1, 4, 0, 10000), +(9303010, 2043001, 1, 1, 0, 750), +(8130100, 2043101, 1, 4, 0, 10000), +(9300203, 2043101, 1, 4, 0, 10000), +(9300260, 2043101, 1, 1, 0, 750), +(9500139, 2043101, 1, 4, 0, 10000), +(9500169, 2043101, 1, 4, 0, 10000), +(9500327, 2043101, 1, 4, 0, 10000), +(9500353, 2043101, 1, 4, 0, 10000), +(6400008, 2043101, 1, 4, 0, 10000), +(9303010, 2043101, 1, 1, 0, 750), +(8130100, 2043201, 1, 4, 0, 10000), +(9300203, 2043201, 1, 4, 0, 10000), +(9300260, 2043201, 1, 1, 0, 750), +(9500139, 2043201, 1, 4, 0, 10000), +(9500169, 2043201, 1, 4, 0, 10000), +(9500327, 2043201, 1, 4, 0, 10000), +(9500353, 2043201, 1, 4, 0, 10000), +(6400008, 2043201, 1, 4, 0, 10000), +(9303010, 2043201, 1, 1, 0, 750), +(8130100, 2044001, 1, 4, 0, 10000), +(9300203, 2044001, 1, 4, 0, 10000), +(9300260, 2044001, 1, 1, 0, 750), +(9500139, 2044001, 1, 4, 0, 10000), +(9500169, 2044001, 1, 4, 0, 10000), +(9500327, 2044001, 1, 4, 0, 10000), +(9500353, 2044001, 1, 4, 0, 10000), +(6400008, 2044001, 1, 4, 0, 10000), +(9303010, 2044001, 1, 1, 0, 750), +(8130100, 2044101, 1, 4, 0, 10000), +(9300203, 2044101, 1, 4, 0, 10000), +(9300260, 2044101, 1, 1, 0, 750), +(9500139, 2044101, 1, 4, 0, 10000), +(9500169, 2044101, 1, 4, 0, 10000), +(9500327, 2044101, 1, 4, 0, 10000), +(9500353, 2044101, 1, 4, 0, 10000), +(6400008, 2044101, 1, 4, 0, 10000), +(9303010, 2044101, 1, 1, 0, 750), +(8130100, 2044201, 1, 4, 0, 10000), +(9300203, 2044201, 1, 4, 0, 10000), +(9300260, 2044201, 1, 1, 0, 750), +(9500139, 2044201, 1, 4, 0, 10000), +(9500169, 2044201, 1, 4, 0, 10000), +(9500327, 2044201, 1, 4, 0, 10000), +(9500353, 2044201, 1, 4, 0, 10000), +(6400008, 2044201, 1, 4, 0, 10000), +(9303010, 2044201, 1, 1, 0, 750), +(8130100, 2043301, 1, 4, 0, 10000), +(9300203, 2043301, 1, 4, 0, 10000), +(9300260, 2043301, 1, 1, 0, 750), +(9500139, 2043301, 1, 4, 0, 10000), +(9500169, 2043301, 1, 4, 0, 10000), +(9500327, 2043301, 1, 4, 0, 10000), +(9500353, 2043301, 1, 4, 0, 10000), +(6400008, 2043301, 1, 4, 0, 10000), +(9303010, 2043301, 1, 1, 0, 750), +(8130100, 2044301, 1, 4, 0, 10000), +(9300203, 2044301, 1, 4, 0, 10000), +(9300260, 2044301, 1, 1, 0, 750), +(9500139, 2044301, 1, 4, 0, 10000), +(9500169, 2044301, 1, 4, 0, 10000), +(9500327, 2044301, 1, 4, 0, 10000), +(9500353, 2044301, 1, 4, 0, 10000), +(6400008, 2044301, 1, 4, 0, 10000), +(9303010, 2044301, 1, 1, 0, 750), +(8130100, 2044401, 1, 4, 0, 10000), +(9300203, 2044401, 1, 4, 0, 10000), +(9300260, 2044401, 1, 1, 0, 750), +(9500139, 2044401, 1, 4, 0, 10000), +(9500169, 2044401, 1, 4, 0, 10000), +(9500327, 2044401, 1, 4, 0, 10000), +(9500353, 2044401, 1, 4, 0, 10000), +(6400008, 2044401, 1, 4, 0, 10000), +(9303010, 2044401, 1, 1, 0, 750), +(8130100, 2044701, 1, 4, 0, 10000), +(9300203, 2044701, 1, 4, 0, 10000), +(9300260, 2044701, 1, 1, 0, 750), +(9500139, 2044701, 1, 4, 0, 10000), +(9500169, 2044701, 1, 4, 0, 10000), +(9500327, 2044701, 1, 4, 0, 10000), +(9500353, 2044701, 1, 4, 0, 10000), +(6400008, 2044701, 1, 4, 0, 10000), +(9303010, 2044701, 1, 1, 0, 750), +(8130100, 2044501, 1, 4, 0, 10000), +(9300203, 2044501, 1, 4, 0, 10000), +(9300260, 2044501, 1, 1, 0, 750), +(9500139, 2044501, 1, 4, 0, 10000), +(9500169, 2044501, 1, 4, 0, 10000), +(9500327, 2044501, 1, 4, 0, 10000), +(9500353, 2044501, 1, 4, 0, 10000), +(6400008, 2044501, 1, 4, 0, 10000), +(9303010, 2044501, 1, 1, 0, 750), +(8130100, 2044601, 1, 4, 0, 10000), +(9300203, 2044601, 1, 4, 0, 10000), +(9300260, 2044601, 1, 1, 0, 750), +(9500139, 2044601, 1, 4, 0, 10000), +(9500169, 2044601, 1, 4, 0, 10000), +(9500327, 2044601, 1, 4, 0, 10000), +(9500353, 2044601, 1, 4, 0, 10000), +(6400008, 2044601, 1, 4, 0, 10000), +(9303010, 2044601, 1, 1, 0, 750), +(8130100, 2043701, 1, 4, 0, 10000), +(9300203, 2043701, 1, 4, 0, 10000), +(9300260, 2043701, 1, 1, 0, 750), +(9500139, 2043701, 1, 4, 0, 10000), +(9500169, 2043701, 1, 4, 0, 10000), +(9500327, 2043701, 1, 4, 0, 10000), +(9500353, 2043701, 1, 4, 0, 10000), +(6400008, 2043701, 1, 4, 0, 10000), +(9303010, 2043701, 1, 1, 0, 750), +(8130100, 2043801, 1, 4, 0, 10000), +(9300203, 2043801, 1, 4, 0, 10000), +(9300260, 2043801, 1, 1, 0, 750), +(9500139, 2043801, 1, 4, 0, 10000), +(9500169, 2043801, 1, 4, 0, 10000), +(9500327, 2043801, 1, 4, 0, 10000), +(9500353, 2043801, 1, 4, 0, 10000), +(6400008, 2043801, 1, 4, 0, 10000), +(9303010, 2043801, 1, 1, 0, 750), +(8130100, 2070007, 1, 4, 0, 2500), +(9300203, 2070007, 1, 4, 0, 2500), +(9300260, 2070007, 1, 1, 0, 400), +(9500139, 2070007, 1, 4, 0, 2500), +(9500169, 2070007, 1, 4, 0, 2500), +(9500327, 2070007, 1, 4, 0, 2500), +(9500353, 2070007, 1, 4, 0, 2500), +(6400008, 2070007, 1, 4, 0, 2500), +(9303010, 2070007, 1, 1, 0, 400), +(8130100, 2049000, 1, 4, 0, 2500), +(9300203, 2049000, 1, 4, 0, 2500), +(9300260, 2049000, 1, 1, 0, 400), +(9500139, 2049000, 1, 4, 0, 2500), +(9500169, 2049000, 1, 4, 0, 2500), +(9500327, 2049000, 1, 4, 0, 2500), +(9500353, 2049000, 1, 4, 0, 2500), +(6400008, 2049000, 1, 4, 0, 2500), +(9303010, 2049000, 1, 1, 0, 400), +(8130100, 2388026, 1, 4, 0, 20000), +(9300203, 2388026, 1, 4, 0, 20000), +(9300260, 2388026, 1, 1, 0, 20000), +(9500139, 2388026, 1, 4, 0, 20000), +(9500169, 2388026, 1, 4, 0, 20000), +(9500327, 2388026, 1, 4, 0, 20000), +(9500353, 2388026, 1, 4, 0, 20000), +(6400008, 2388026, 1, 4, 0, 20000), +(9303010, 2388026, 1, 1, 0, 20000), +(8130100, 4021008, 1, 1, 0, 7000), +(9300203, 4021008, 1, 1, 0, 7000), +(9300260, 4021008, 1, 1, 0, 7000), +(9500139, 4021008, 1, 1, 0, 7000), +(9500169, 4021008, 1, 1, 0, 7000), +(9500327, 4021008, 1, 1, 0, 7000), +(9500353, 4021008, 1, 1, 0, 7000), +(6400008, 4021008, 1, 1, 0, 7000), +(9303010, 4021008, 1, 1, 0, 7000), +(8130100, 1422010, 1, 1, 0, 40000), +(9300203, 1422010, 1, 1, 0, 40000), +(9300260, 1422010, 1, 1, 0, 700), +(9500139, 1422010, 1, 1, 0, 40000), +(9500169, 1422010, 1, 1, 0, 40000), +(9500327, 1422010, 1, 1, 0, 40000), +(9500353, 1422010, 1, 1, 0, 40000), +(6400008, 1422010, 1, 1, 0, 40000), +(9303010, 1422010, 1, 1, 0, 700), +(8130100, 1402012, 1, 1, 0, 40000), +(9300203, 1402012, 1, 1, 0, 40000), +(9300260, 1402012, 1, 1, 0, 700), +(9500139, 1402012, 1, 1, 0, 40000), +(9500169, 1402012, 1, 1, 0, 40000), +(9500327, 1402012, 1, 1, 0, 40000), +(9500353, 1402012, 1, 1, 0, 40000), +(6400008, 1402012, 1, 1, 0, 40000), +(9303010, 1402012, 1, 1, 0, 700), +(8130100, 1322019, 1, 1, 0, 40000), +(9300203, 1322019, 1, 1, 0, 40000), +(9300260, 1322019, 1, 1, 0, 700), +(9500139, 1322019, 1, 1, 0, 40000), +(9500169, 1322019, 1, 1, 0, 40000), +(9500327, 1322019, 1, 1, 0, 40000), +(9500353, 1322019, 1, 1, 0, 40000), +(6400008, 1322019, 1, 1, 0, 40000), +(9303010, 1322019, 1, 1, 0, 700), +(8130100, 1332019, 1, 1, 0, 40000), +(9300203, 1332019, 1, 1, 0, 40000), +(9300260, 1332019, 1, 1, 0, 700), +(9500139, 1332019, 1, 1, 0, 40000), +(9500169, 1332019, 1, 1, 0, 40000), +(9500327, 1332019, 1, 1, 0, 40000), +(9500353, 1332019, 1, 1, 0, 40000), +(6400008, 1332019, 1, 1, 0, 40000), +(9303010, 1332019, 1, 1, 0, 700), +(8130100, 1092009, 1, 1, 0, 40000), +(9300203, 1092009, 1, 1, 0, 40000), +(9300260, 1092009, 1, 1, 0, 700), +(9500139, 1092009, 1, 1, 0, 40000), +(9500169, 1092009, 1, 1, 0, 40000), +(9500327, 1092009, 1, 1, 0, 40000), +(9500353, 1092009, 1, 1, 0, 40000), +(6400008, 1092009, 1, 1, 0, 40000), +(9303010, 1092009, 1, 1, 0, 700), +(8130100, 1432007, 1, 1, 0, 40000), +(9300203, 1432007, 1, 1, 0, 40000), +(9300260, 1432007, 1, 1, 0, 700), +(9500139, 1432007, 1, 1, 0, 40000), +(9500169, 1432007, 1, 1, 0, 40000), +(9500327, 1432007, 1, 1, 0, 40000), +(9500353, 1432007, 1, 1, 0, 40000), +(6400008, 1432007, 1, 1, 0, 40000), +(9303010, 1432007, 1, 1, 0, 700), +(8130100, 1302012, 1, 1, 0, 40000), +(9300203, 1302012, 1, 1, 0, 40000), +(9300260, 1302012, 1, 1, 0, 700), +(9500139, 1302012, 1, 1, 0, 40000), +(9500169, 1302012, 1, 1, 0, 40000), +(9500327, 1302012, 1, 1, 0, 40000), +(9500353, 1302012, 1, 1, 0, 40000), +(6400008, 1302012, 1, 1, 0, 40000), +(9303010, 1302012, 1, 1, 0, 700), +(8130100, 1092016, 1, 1, 0, 40000), +(9300203, 1092016, 1, 1, 0, 40000), +(9300260, 1092016, 1, 1, 0, 700), +(9500139, 1092016, 1, 1, 0, 40000), +(9500169, 1092016, 1, 1, 0, 40000), +(9500327, 1092016, 1, 1, 0, 40000), +(9500353, 1092016, 1, 1, 0, 40000), +(6400008, 1092016, 1, 1, 0, 40000), +(9303010, 1092016, 1, 1, 0, 700), +(8130100, 1312010, 1, 1, 0, 40000), +(9300203, 1312010, 1, 1, 0, 40000), +(9300260, 1312010, 1, 1, 0, 700), +(9500139, 1312010, 1, 1, 0, 40000), +(9500169, 1312010, 1, 1, 0, 40000), +(9500327, 1312010, 1, 1, 0, 40000), +(9500353, 1312010, 1, 1, 0, 40000), +(6400008, 1312010, 1, 1, 0, 40000), +(9303010, 1312010, 1, 1, 0, 700), +(8130100, 1382007, 1, 1, 0, 40000), +(9300203, 1382007, 1, 1, 0, 40000), +(9300260, 1382007, 1, 1, 0, 700), +(9500139, 1382007, 1, 1, 0, 40000), +(9500169, 1382007, 1, 1, 0, 40000), +(9500327, 1382007, 1, 1, 0, 40000), +(9500353, 1382007, 1, 1, 0, 40000), +(6400008, 1382007, 1, 1, 0, 40000), +(9303010, 1382007, 1, 1, 0, 700), +(8130100, 1462009, 1, 1, 0, 40000), +(9300203, 1462009, 1, 1, 0, 40000), +(9300260, 1462009, 1, 1, 0, 700), +(9500139, 1462009, 1, 1, 0, 40000), +(9500169, 1462009, 1, 1, 0, 40000), +(9500327, 1462009, 1, 1, 0, 40000), +(9500353, 1462009, 1, 1, 0, 40000), +(6400008, 1462009, 1, 1, 0, 40000), +(9303010, 1462009, 1, 1, 0, 700), +(8130100, 1452009, 1, 1, 0, 40000), +(9300203, 1452009, 1, 1, 0, 40000), +(9300260, 1452009, 1, 1, 0, 700), +(9500139, 1452009, 1, 1, 0, 40000), +(9500169, 1452009, 1, 1, 0, 40000), +(9500327, 1452009, 1, 1, 0, 40000), +(9500353, 1452009, 1, 1, 0, 40000), +(6400008, 1452009, 1, 1, 0, 40000), +(9303010, 1452009, 1, 1, 0, 700), +(8130100, 1472026, 1, 1, 0, 40000), +(9300203, 1472026, 1, 1, 0, 40000), +(9300260, 1472026, 1, 1, 0, 700), +(9500139, 1472026, 1, 1, 0, 40000), +(9500169, 1472026, 1, 1, 0, 40000), +(9500327, 1472026, 1, 1, 0, 40000), +(9500353, 1472026, 1, 1, 0, 40000), +(6400008, 1472026, 1, 1, 0, 40000), +(9303010, 1472026, 1, 1, 0, 700), +(8130100, 1332018, 1, 1, 0, 40000), +(9300203, 1332018, 1, 1, 0, 40000), +(9300260, 1332018, 1, 1, 0, 700), +(9500139, 1332018, 1, 1, 0, 40000), +(9500169, 1332018, 1, 1, 0, 40000), +(9500327, 1332018, 1, 1, 0, 40000), +(9500353, 1332018, 1, 1, 0, 40000), +(6400008, 1332018, 1, 1, 0, 40000), +(9303010, 1332018, 1, 1, 0, 700), +(8130100, 1332019, 1, 1, 0, 40000), +(9300203, 1332019, 1, 1, 0, 40000), +(9300260, 1332019, 1, 1, 0, 700), +(9500139, 1332019, 1, 1, 0, 40000), +(9500169, 1332019, 1, 1, 0, 40000), +(9500327, 1332019, 1, 1, 0, 40000), +(9500353, 1332019, 1, 1, 0, 40000), +(6400008, 1332019, 1, 1, 0, 40000), +(9303010, 1332019, 1, 1, 0, 700), +(8140000, 4000054, 1, 1, 0, 200000), +(9500134, 4000054, 1, 1, 0, 200000), +(8140000, 4032475, 1, 1, 0, 10000), +(9500134, 4032475, 1, 1, 0, 10000), +(8140000, 2070006, 1, 1, 0, 400), +(9500134, 2070006, 1, 1, 0, 400), +(8140000, 2040902, 1, 1, 0, 750), +(9500134, 2040902, 1, 1, 0, 750), +(8140000, 4006001, 1, 1, 0, 7000), +(9500134, 4006001, 1, 1, 0, 7000), +(8140000, 2385006, 1, 1, 0, 20000), +(9500134, 2385006, 1, 1, 0, 20000), +(8140000, 4010003, 1, 1, 0, 7000), +(9500134, 4010003, 1, 1, 0, 7000), +(8140000, 4010001, 1, 1, 0, 7000), +(9500134, 4010001, 1, 1, 0, 7000), +(8140000, 4020006, 1, 1, 0, 7000), +(9500134, 4020006, 1, 1, 0, 7000), +(8140000, 4020008, 1, 1, 0, 7000), +(9500134, 4020008, 1, 1, 0, 7000), +(8140000, 4004001, 1, 1, 0, 3000), +(9500134, 4004001, 1, 1, 0, 3000), +(8140000, 1102029, 1, 1, 0, 700), +(9500134, 1102029, 1, 1, 0, 700), +(8140000, 1032023, 1, 1, 0, 700), +(9500134, 1032023, 1, 1, 0, 700), +(8140000, 1322020, 1, 1, 0, 700), +(9500134, 1322020, 1, 1, 0, 700), +(8140000, 1402004, 1, 1, 0, 700), +(9500134, 1402004, 1, 1, 0, 700), +(8140000, 1082129, 1, 1, 0, 700), +(9500134, 1082129, 1, 1, 0, 700), +(8140000, 1072210, 1, 1, 0, 700), +(9500134, 1072210, 1, 1, 0, 700), +(8140000, 1442008, 1, 1, 0, 700), +(9500134, 1442008, 1, 1, 0, 700), +(8140000, 1051053, 1, 1, 0, 700), +(9500134, 1051053, 1, 1, 0, 700), +(8140000, 1050092, 1, 1, 0, 700), +(9500134, 1050092, 1, 1, 0, 700), +(8140000, 1002271, 1, 1, 0, 700), +(9500134, 1002271, 1, 1, 0, 700), +(8140000, 1072178, 1, 1, 0, 700), +(9500134, 1072178, 1, 1, 0, 700), +(8140000, 1002275, 1, 1, 0, 700), +(9500134, 1002275, 1, 1, 0, 700), +(8140000, 1050064, 1, 1, 0, 700), +(9500134, 1050064, 1, 1, 0, 700), +(8140000, 1051082, 1, 1, 0, 700), +(9500134, 1051082, 1, 1, 0, 700), +(8140000, 1072193, 1, 1, 0, 700), +(9500134, 1072193, 1, 1, 0, 700), +(8140000, 1002285, 1, 1, 0, 700), +(9500134, 1002285, 1, 1, 0, 700), +(8140000, 1472028, 1, 1, 0, 700), +(9500134, 1472028, 1, 1, 0, 700), +(8140000, 1072172, 1, 1, 0, 700), +(9500134, 1072172, 1, 1, 0, 700), +(8140000, 1482010, 1, 1, 0, 700), +(9500134, 1482010, 1, 1, 0, 700), +(9400545, 4032024, 1, 1, 0, 10000), +(9400545, 4032025, 1, 1, 0, 10000), +(9400545, 2070006, 1, 1, 0, 400), +(9400545, 2044408, 1, 1, 0, 750), +(9400545, 2044702, 1, 1, 0, 750), +(9400545, 2044309, 1, 1, 0, 750), +(9400545, 4020006, 1, 1, 0, 7000), +(9400545, 4020008, 1, 1, 0, 7000), +(9400545, 4010001, 1, 1, 0, 7000), +(9400545, 4010003, 1, 1, 0, 7000), +(9400545, 4004001, 1, 1, 0, 3000), +(9400545, 1102029, 1, 1, 0, 700), +(9400545, 1032023, 1, 1, 0, 700), +(9400545, 1402004, 1, 1, 0, 700), +(9400545, 1072210, 1, 1, 0, 700), +(9400545, 1040104, 1, 1, 0, 700), +(9400545, 1060092, 1, 1, 0, 700), +(9400545, 1082129, 1, 1, 0, 700), +(9400545, 1442008, 1, 1, 0, 700), +(9400545, 1072178, 1, 1, 0, 700), +(9400545, 1050092, 1, 1, 0, 700), +(9400545, 1002271, 1, 1, 0, 700), +(9400545, 1051053, 1, 1, 0, 700), +(9400545, 1382008, 1, 1, 0, 700), +(9400545, 1002275, 1, 1, 0, 700), +(9400545, 1051082, 1, 1, 0, 700), +(9400545, 1050064, 1, 1, 0, 700), +(9400545, 1472028, 1, 1, 0, 700), +(9400545, 1072193, 1, 1, 0, 700), +(9400545, 1072172, 1, 1, 0, 700), +(9400545, 1002285, 1, 1, 0, 700), +(8140001, 2000006, 1, 1, 0, 40000), +(9500162, 2000006, 1, 1, 0, 40000), +(8140001, 2000005, 1, 1, 0, 40000), +(9500162, 2000005, 1, 1, 0, 40000), +(8140001, 2070005, 1, 1, 0, 400), +(9500162, 2070005, 1, 1, 0, 400), +(8140001, 4006000, 1, 1, 0, 7000), +(9500162, 4006000, 1, 1, 0, 7000), +(8140001, 2385007, 1, 1, 0, 20000), +(9500162, 2385007, 1, 1, 0, 20000), +(8140001, 2044602, 1, 1, 0, 750), +(9500162, 2044602, 1, 1, 0, 750), +(8140001, 2041046, 1, 1, 0, 750), +(9500162, 2041046, 1, 1, 0, 750), +(8140001, 2040320, 1, 1, 0, 750), +(9500162, 2040320, 1, 1, 0, 750), +(8140001, 2040825, 1, 1, 0, 750), +(9500162, 2040825, 1, 1, 0, 750), +(8140001, 2044310, 1, 1, 0, 750), +(9500162, 2044310, 1, 1, 0, 750), +(8140001, 4010005, 1, 1, 0, 7000), +(9500162, 4010005, 1, 1, 0, 7000), +(8140001, 4020005, 1, 1, 0, 7000), +(9500162, 4020005, 1, 1, 0, 7000), +(8140001, 4004000, 1, 1, 0, 3000), +(9500162, 4004000, 1, 1, 0, 3000), +(8140001, 1102031, 1, 1, 0, 700), +(9500162, 1102031, 1, 1, 0, 700), +(8140001, 1442008, 1, 1, 0, 700), +(9500162, 1442008, 1, 1, 0, 700), +(8140001, 1312010, 1, 1, 0, 700), +(9500162, 1312010, 1, 1, 0, 700), +(8140001, 1072158, 1, 1, 0, 700), +(9500162, 1072158, 1, 1, 0, 700), +(8140001, 1452011, 1, 1, 0, 700), +(9500162, 1452011, 1, 1, 0, 700), +(8140001, 1002288, 1, 1, 0, 700), +(9500162, 1002288, 1, 1, 0, 700), +(8140001, 1040107, 1, 1, 0, 700), +(9500162, 1040107, 1, 1, 0, 700), +(8140001, 1060095, 1, 1, 0, 700), +(9500162, 1060095, 1, 1, 0, 700), +(9400581, 4032006, 1, 1, 0, 10000), +(9400581, 2000006, 1, 1, 0, 40000), +(9400581, 2000004, 1, 1, 0, 40000), +(9400581, 2000005, 1, 1, 0, 40000), +(9400581, 4006000, 1, 1, 0, 7000), +(9400581, 4006001, 1, 1, 0, 7000), +(9400581, 2040513, 1, 1, 0, 750), +(9400581, 2044301, 1, 1, 0, 750), +(9400581, 1102012, 1, 1, 0, 700), +(9400581, 1032020, 1, 1, 0, 700), +(9400581, 1402012, 1, 1, 0, 700), +(9400581, 1442008, 1, 1, 0, 700), +(9400581, 1002252, 1, 1, 0, 700), +(8110300, 4031740, 1, 1, 0, 7000), +(8110300, 2000005, 1, 1, 0, 40000), +(8110300, 2000002, 1, 1, 0, 40000), +(8110300, 2000006, 1, 1, 0, 40000), +(8110300, 4006000, 1, 1, 0, 7000), +(8110300, 2070005, 1, 1, 0, 400), +(8110300, 2041046, 1, 1, 0, 750), +(8110300, 2044602, 1, 1, 0, 750), +(8110300, 2044904, 1, 1, 0, 750), +(8110300, 2385008, 1, 1, 0, 20000), +(8110300, 4010005, 1, 1, 0, 7000), +(8110300, 4020005, 1, 1, 0, 7000), +(8110300, 4004000, 1, 1, 0, 3000), +(8110300, 1102031, 1, 1, 0, 700), +(8110300, 1442008, 1, 1, 0, 700), +(8110300, 1312010, 1, 1, 0, 700), +(8110300, 1082114, 1, 1, 0, 700), +(8110300, 1072158, 1, 1, 0, 700), +(8110300, 1452011, 1, 1, 0, 700), +(8110300, 1002288, 1, 1, 0, 700), +(8110300, 1040107, 1, 1, 0, 700), +(8110300, 1060095, 1, 1, 0, 700), +(8200000, 4000443, 1, 1, 0, 200000), +(8200000, 4130013, 1, 1, 0, 3000), +(8200000, 4130000, 1, 1, 0, 3000), +(8200000, 2330004, 1, 1, 0, 400), +(8200000, 2044113, 1, 1, 0, 750), +(8200000, 4004002, 1, 1, 0, 3000), +(8200000, 4010000, 1, 1, 0, 7000), +(8200000, 4020000, 1, 1, 0, 7000), +(8200000, 4020009, 1, 1, 0, 7000), +(8200000, 1102028, 1, 1, 0, 700), +(8200000, 1072179, 1, 1, 0, 700), +(8200000, 1082112, 1, 1, 0, 700), +(8200000, 1452011, 1, 1, 0, 700), +(8200000, 1041107, 1, 1, 0, 700), +(8200000, 1040110, 1, 1, 0, 700), +(8200000, 1002640, 1, 1, 0, 700), +(9300139, 2388014, 1, 4, 0, 20000), +(9300151, 2388014, 1, 4, 0, 20000), +(9300205, 2388014, 1, 4, 0, 20000), +(9500335, 2388014, 1, 4, 0, 20000), +(9500354, 2388014, 1, 4, 0, 20000), +(9300139, 2000002, 1, 4, 0, 40000), +(9300151, 2000002, 1, 4, 0, 40000), +(9300205, 2000002, 1, 4, 0, 40000), +(9500335, 2000002, 1, 4, 0, 40000), +(9500354, 2000002, 1, 4, 0, 40000), +(9300139, 2000004, 1, 4, 0, 40000), +(9300151, 2000004, 1, 4, 0, 40000), +(9300205, 2000004, 1, 4, 0, 40000), +(9500335, 2000004, 1, 4, 0, 40000), +(9500354, 2000004, 1, 4, 0, 40000), +(9300139, 2000006, 1, 4, 0, 40000), +(9300151, 2000006, 1, 4, 0, 40000), +(9300205, 2000006, 1, 4, 0, 40000), +(9500335, 2000006, 1, 4, 0, 40000), +(9500354, 2000006, 1, 4, 0, 40000), +(9300139, 2020013, 1, 4, 0, 3000), +(9300151, 2020013, 1, 4, 0, 3000), +(9300205, 2020013, 1, 4, 0, 3000), +(9500335, 2020013, 1, 4, 0, 3000), +(9500354, 2020013, 1, 4, 0, 3000), +(9300139, 2020014, 1, 4, 0, 3000), +(9300151, 2020014, 1, 4, 0, 3000), +(9300205, 2020014, 1, 4, 0, 3000), +(9500335, 2020014, 1, 4, 0, 3000), +(9500354, 2020014, 1, 4, 0, 3000), +(9300139, 2020015, 1, 4, 0, 3000), +(9300151, 2020015, 1, 4, 0, 3000), +(9300205, 2020015, 1, 4, 0, 3000), +(9500335, 2020015, 1, 4, 0, 3000), +(9500354, 2020015, 1, 4, 0, 3000), +(9300139, 2044601, 1, 4, 0, 10000), +(9300151, 2044601, 1, 4, 0, 10000), +(9300205, 2044601, 1, 4, 0, 10000), +(9500335, 2044601, 1, 4, 0, 10000), +(9500354, 2044601, 1, 4, 0, 10000), +(9300139, 2040707, 1, 4, 0, 10000), +(9300151, 2040707, 1, 4, 0, 10000), +(9300205, 2040707, 1, 4, 0, 10000), +(9500335, 2040707, 1, 4, 0, 10000), +(9500354, 2040707, 1, 4, 0, 10000), +(9300139, 2044401, 1, 4, 0, 10000), +(9300151, 2044401, 1, 4, 0, 10000), +(9300205, 2044401, 1, 4, 0, 10000), +(9500335, 2044401, 1, 4, 0, 10000), +(9500354, 2044401, 1, 4, 0, 10000), +(9300139, 2040504, 1, 4, 0, 10000), +(9300151, 2040504, 1, 4, 0, 10000), +(9300205, 2040504, 1, 4, 0, 10000), +(9500335, 2040504, 1, 4, 0, 10000), +(9500354, 2040504, 1, 4, 0, 10000), +(9300139, 2044501, 1, 4, 0, 10000), +(9300151, 2044501, 1, 4, 0, 10000), +(9300205, 2044501, 1, 4, 0, 10000), +(9500335, 2044501, 1, 4, 0, 10000), +(9500354, 2044501, 1, 4, 0, 10000), +(9300139, 2044001, 1, 4, 0, 10000), +(9300151, 2044001, 1, 4, 0, 10000), +(9300205, 2044001, 1, 4, 0, 10000), +(9500335, 2044001, 1, 4, 0, 10000), +(9500354, 2044001, 1, 4, 0, 10000), +(9300139, 2043701, 1, 4, 0, 10000), +(9300151, 2043701, 1, 4, 0, 10000), +(9300205, 2043701, 1, 4, 0, 10000), +(9500335, 2043701, 1, 4, 0, 10000), +(9500354, 2043701, 1, 4, 0, 10000), +(9300139, 2043001, 1, 4, 0, 10000), +(9300151, 2043001, 1, 4, 0, 10000), +(9300205, 2043001, 1, 4, 0, 10000), +(9500335, 2043001, 1, 4, 0, 10000), +(9500354, 2043001, 1, 4, 0, 10000), +(9300139, 2040004, 1, 4, 0, 10000), +(9300151, 2040004, 1, 4, 0, 10000), +(9300205, 2040004, 1, 4, 0, 10000), +(9500335, 2040004, 1, 4, 0, 10000), +(9500354, 2040004, 1, 4, 0, 10000), +(9300139, 2044701, 1, 4, 0, 10000), +(9300151, 2044701, 1, 4, 0, 10000), +(9300205, 2044701, 1, 4, 0, 10000), +(9500335, 2044701, 1, 4, 0, 10000), +(9500354, 2044701, 1, 4, 0, 10000), +(9300139, 2043301, 1, 4, 0, 10000), +(9300151, 2043301, 1, 4, 0, 10000), +(9300205, 2043301, 1, 4, 0, 10000), +(9500335, 2043301, 1, 4, 0, 10000), +(9500354, 2043301, 1, 4, 0, 10000), +(9300139, 2043801, 1, 4, 0, 10000), +(9300151, 2043801, 1, 4, 0, 10000), +(9300205, 2043801, 1, 4, 0, 10000), +(9500335, 2043801, 1, 4, 0, 10000), +(9500354, 2043801, 1, 4, 0, 10000), +(9420538, 4000476, 1, 1, 0, 200000), +(9420538, 2000006, 1, 1, 0, 40000), +(9420538, 2022003, 1, 1, 0, 3000), +(9420538, 2041017, 1, 1, 0, 750), +(9420538, 4004002, 1, 1, 0, 3000), +(9420538, 4010001, 1, 1, 0, 7000), +(9420538, 4010002, 1, 1, 0, 7000), +(9420538, 1102029, 1, 1, 0, 700), +(9420538, 1072155, 1, 1, 0, 700), +(9420538, 1092015, 1, 1, 0, 700), +(9420538, 1422012, 1, 1, 0, 700), +(9420538, 1002274, 1, 1, 0, 700), +(9420538, 1060094, 1, 1, 0, 700), +(9420538, 1041106, 1, 1, 0, 700), +(8120102, 4000552, 1, 1, 0, 200000), +(8120102, 2330004, 1, 1, 0, 400), +(8120102, 2044113, 1, 1, 0, 750), +(8120102, 2049000, 1, 1, 0, 400), +(8120102, 4010000, 1, 1, 0, 7000), +(8120102, 4020000, 1, 1, 0, 7000), +(8120102, 4004002, 1, 1, 0, 3000), +(8120102, 1102028, 1, 1, 0, 700), +(8120102, 1072179, 1, 1, 0, 700), +(8120102, 1082112, 1, 1, 0, 700), +(8120102, 1452011, 1, 1, 0, 700), +(8120102, 1041107, 1, 1, 0, 700), +(8120102, 1040110, 1, 1, 0, 700), +(8120102, 1002640, 1, 1, 0, 700), +(7140000, 4000132, 1, 1, 0, 200000), +(9300322, 4000132, 1, 1, 0, 200000), +(9301004, 4000132, 1, 1, 0, 200000), +(7140000, 2000006, 1, 1, 0, 40000), +(9300322, 2000006, 1, 4, 0, 40000), +(9301004, 2000006, 1, 1, 0, 40000), +(7140000, 4006000, 1, 1, 0, 7000), +(9300322, 4006000, 1, 1, 0, 7000), +(9301004, 4006000, 1, 1, 0, 7000), +(7140000, 2040502, 1, 1, 0, 750), +(9300322, 2040502, 1, 4, 0, 10000), +(9301004, 2040502, 1, 1, 0, 750), +(7140000, 2041043, 1, 1, 0, 750), +(9300322, 2041043, 1, 4, 0, 10000), +(9301004, 2041043, 1, 1, 0, 750), +(7140000, 2385010, 1, 1, 0, 20000), +(9300322, 2385010, 1, 4, 0, 20000), +(9301004, 2385010, 1, 1, 0, 20000), +(7140000, 4010002, 1, 1, 0, 7000), +(9300322, 4010002, 1, 1, 0, 7000), +(9301004, 4010002, 1, 1, 0, 7000), +(7140000, 4020002, 1, 1, 0, 7000), +(9300322, 4020002, 1, 1, 0, 7000), +(9301004, 4020002, 1, 1, 0, 7000), +(7140000, 4004001, 1, 1, 0, 3000), +(9300322, 4004001, 1, 1, 0, 3000), +(9301004, 4004001, 1, 1, 0, 3000), +(7140000, 1432010, 1, 1, 0, 700), +(9300322, 1432010, 1, 1, 0, 40000), +(9301004, 1432010, 1, 1, 0, 700), +(7140000, 1092025, 1, 1, 0, 700), +(9300322, 1092025, 1, 1, 0, 40000), +(9301004, 1092025, 1, 1, 0, 700), +(7140000, 1002338, 1, 1, 0, 700), +(9300322, 1002338, 1, 1, 0, 40000), +(9301004, 1002338, 1, 1, 0, 700), +(7140000, 1082128, 1, 1, 0, 700), +(9300322, 1082128, 1, 1, 0, 40000), +(9301004, 1082128, 1, 1, 0, 700), +(7140000, 1002094, 1, 1, 0, 700), +(9300322, 1002094, 1, 1, 0, 40000), +(9301004, 1002094, 1, 1, 0, 700), +(7140000, 1082114, 1, 1, 0, 700), +(9300322, 1082114, 1, 1, 0, 40000), +(9301004, 1082114, 1, 1, 0, 700), +(7140000, 1002273, 1, 1, 0, 700), +(9300322, 1002273, 1, 1, 0, 40000), +(9301004, 1002273, 1, 1, 0, 700), +(7140000, 1072207, 1, 1, 0, 700), +(9300322, 1072207, 1, 1, 0, 40000), +(9301004, 1072207, 1, 1, 0, 700), +(7140000, 1462011, 1, 1, 0, 700), +(9300322, 1462011, 1, 1, 0, 40000), +(9301004, 1462011, 1, 1, 0, 700), +(7140000, 1050089, 1, 1, 0, 700), +(9300322, 1050089, 1, 1, 0, 40000), +(9301004, 1050089, 1, 1, 0, 700), +(7140000, 1002287, 1, 1, 0, 700), +(9300322, 1002287, 1, 1, 0, 40000), +(9301004, 1002287, 1, 1, 0, 700), +(7140000, 1002277, 1, 1, 0, 700), +(9300322, 1002277, 1, 1, 0, 40000), +(9301004, 1002277, 1, 1, 0, 700), +(7140000, 1072182, 1, 1, 0, 700), +(9300322, 1072182, 1, 1, 0, 40000), +(9301004, 1072182, 1, 1, 0, 700), +(7140000, 1040107, 1, 1, 0, 700), +(9300322, 1040107, 1, 1, 0, 40000), +(9301004, 1040107, 1, 1, 0, 700), +(7140000, 1040108, 1, 1, 0, 700), +(9300322, 1040108, 1, 1, 0, 40000), +(9301004, 1040108, 1, 1, 0, 700), +(7140000, 1072192, 1, 1, 0, 700), +(9300322, 1072192, 1, 1, 0, 40000), +(9301004, 1072192, 1, 1, 0, 700), +(7140000, 1082118, 1, 1, 0, 700), +(9300322, 1082118, 1, 1, 0, 40000), +(9301004, 1082118, 1, 1, 0, 700), +(7140000, 1002640, 1, 1, 0, 700), +(9300322, 1002640, 1, 1, 0, 40000), +(9301004, 1002640, 1, 1, 0, 700), +(8140002, 4000240, 1, 1, 0, 200000), +(9500163, 4000240, 1, 1, 0, 200000), +(8140002, 2070005, 1, 1, 0, 400), +(9500163, 2070005, 1, 1, 0, 400), +(8140002, 2040707, 1, 1, 0, 750), +(9500163, 2040707, 1, 1, 0, 750), +(8140002, 2043301, 1, 1, 0, 750), +(9500163, 2043301, 1, 1, 0, 750), +(8140002, 2330003, 1, 1, 0, 400), +(9500163, 2330003, 1, 1, 0, 400), +(8140002, 2385011, 1, 1, 0, 20000), +(9500163, 2385011, 1, 1, 0, 20000), +(8140002, 4010006, 1, 1, 0, 7000), +(9500163, 4010006, 1, 1, 0, 7000), +(8140002, 4020007, 1, 1, 0, 7000), +(9500163, 4020007, 1, 1, 0, 7000), +(8140002, 4004001, 1, 1, 0, 3000), +(9500163, 4004001, 1, 1, 0, 3000), +(8140002, 1032022, 1, 1, 0, 700), +(9500163, 1032022, 1, 1, 0, 700), +(8140002, 1102030, 1, 1, 0, 700), +(9500163, 1102030, 1, 1, 0, 700), +(8140002, 1002339, 1, 1, 0, 700), +(9500163, 1002339, 1, 1, 0, 700), +(8140002, 1382010, 1, 1, 0, 700), +(9500163, 1382010, 1, 1, 0, 700), +(8140002, 1051057, 1, 1, 0, 700), +(9500163, 1051057, 1, 1, 0, 700), +(8140002, 1462012, 1, 1, 0, 700), +(9500163, 1462012, 1, 1, 0, 700), +(8140002, 1082112, 1, 1, 0, 700), +(9500163, 1082112, 1, 1, 0, 700), +(8140002, 1472029, 1, 1, 0, 700), +(9500163, 1472029, 1, 1, 0, 700), +(8140002, 1072173, 1, 1, 0, 700), +(9500163, 1072173, 1, 1, 0, 700), +(8140002, 1052125, 1, 1, 0, 700), +(9500163, 1052125, 1, 1, 0, 700), +(9300140, 2388014, 1, 4, 0, 20000), +(9300152, 2388014, 1, 4, 0, 20000), +(8120103, 4000553, 1, 1, 0, 200000), +(8120103, 4006001, 1, 1, 0, 7000), +(8120103, 2000006, 1, 1, 0, 40000), +(8120103, 2000002, 1, 1, 0, 40000), +(8120103, 2000005, 1, 1, 0, 40000), +(8120103, 2040707, 1, 1, 0, 750), +(8120103, 2043301, 1, 1, 0, 750), +(8120103, 2070005, 1, 1, 0, 400), +(8120103, 2330003, 1, 1, 0, 400), +(8120103, 2040028, 1, 1, 0, 750), +(8120103, 2040316, 1, 1, 0, 750), +(8120103, 2043015, 1, 1, 0, 750), +(8120103, 2049000, 1, 1, 0, 400), +(8120103, 4010006, 1, 1, 0, 7000), +(8120103, 4020007, 1, 1, 0, 7000), +(8120103, 4004001, 1, 1, 0, 3000), +(8120103, 1102030, 1, 1, 0, 700), +(8120103, 1032022, 1, 1, 0, 700), +(8120103, 1002339, 1, 1, 0, 700), +(8120103, 1051057, 1, 1, 0, 700), +(8120103, 1382010, 1, 1, 0, 700), +(8120103, 1082112, 1, 1, 0, 700), +(8120103, 1462012, 1, 1, 0, 700), +(8120103, 1072173, 1, 1, 0, 700), +(8120103, 1472029, 1, 1, 0, 700), +(8120103, 1052125, 1, 1, 0, 700), +(7130010, 4000147, 1, 1, 0, 200000), +(9500135, 4000147, 1, 1, 0, 200000), +(7130010, 2000006, 1, 1, 0, 40000), +(9500135, 2000006, 1, 1, 0, 40000), +(7130010, 2002005, 1, 1, 0, 10000), +(9500135, 2002005, 1, 1, 0, 10000), +(7130010, 2050004, 1, 1, 0, 3000), +(9500135, 2050004, 1, 1, 0, 3000), +(7130010, 4006001, 1, 1, 0, 7000), +(9500135, 4006001, 1, 1, 0, 7000), +(7130010, 2020015, 1, 1, 0, 3000), +(9500135, 2020015, 1, 1, 0, 3000), +(7130010, 2041016, 1, 1, 0, 750), +(9500135, 2041016, 1, 1, 0, 750), +(7130010, 2040601, 1, 1, 0, 750), +(9500135, 2040601, 1, 1, 0, 750), +(7130010, 2040401, 1, 1, 0, 750), +(9500135, 2040401, 1, 1, 0, 750), +(7130010, 2385012, 1, 1, 0, 20000), +(9500135, 2385012, 1, 1, 0, 20000), +(7130010, 4020005, 1, 1, 0, 7000), +(9500135, 4020005, 1, 1, 0, 7000), +(7130010, 4020008, 1, 1, 0, 7000), +(9500135, 4020008, 1, 1, 0, 7000), +(7130010, 4004002, 1, 1, 0, 3000), +(9500135, 4004002, 1, 1, 0, 3000), +(7130010, 1102030, 1, 1, 0, 700), +(9500135, 1102030, 1, 1, 0, 700), +(7130010, 1302016, 1, 1, 0, 700), +(9500135, 1302016, 1, 1, 0, 700), +(7130010, 1412009, 1, 1, 0, 700), +(9500135, 1412009, 1, 1, 0, 700), +(7130010, 1051078, 1, 1, 0, 700), +(9500135, 1051078, 1, 1, 0, 700), +(7130010, 1051077, 1, 1, 0, 700), +(9500135, 1051077, 1, 1, 0, 700), +(7130010, 1072154, 1, 1, 0, 700), +(9500135, 1072154, 1, 1, 0, 700), +(7130010, 1072196, 1, 1, 0, 700), +(9500135, 1072196, 1, 1, 0, 700), +(7130010, 1050073, 1, 1, 0, 700), +(9500135, 1050073, 1, 1, 0, 700), +(7130010, 1372016, 1, 1, 0, 700), +(9500135, 1372016, 1, 1, 0, 700), +(7130010, 1072209, 1, 1, 0, 700), +(9500135, 1072209, 1, 1, 0, 700), +(7130010, 1082123, 1, 1, 0, 700), +(9500135, 1082123, 1, 1, 0, 700), +(7130010, 1452010, 1, 1, 0, 700), +(9500135, 1452010, 1, 1, 0, 700), +(7130010, 1072184, 1, 1, 0, 700), +(9500135, 1072184, 1, 1, 0, 700), +(7130010, 1050088, 1, 1, 0, 700), +(9500135, 1050088, 1, 1, 0, 700), +(7130010, 1051082, 1, 1, 0, 700), +(9500135, 1051082, 1, 1, 0, 700), +(7130010, 1051065, 1, 1, 0, 700), +(9500135, 1051065, 1, 1, 0, 700), +(7130010, 1332022, 1, 1, 0, 700), +(9500135, 1332022, 1, 1, 0, 700), +(7130010, 1002328, 1, 1, 0, 700), +(9500135, 1002328, 1, 1, 0, 700), +(7130010, 1082142, 1, 1, 0, 700), +(9500135, 1082142, 1, 1, 0, 700), +(7130010, 1082118, 1, 1, 0, 700), +(9500135, 1082118, 1, 1, 0, 700), +(7130010, 1041101, 1, 1, 0, 700), +(9500135, 1041101, 1, 1, 0, 700), +(7130010, 1061100, 1, 1, 0, 700), +(9500135, 1061100, 1, 1, 0, 700), +(7130010, 1082207, 1, 1, 0, 700), +(9500135, 1082207, 1, 1, 0, 700), +(7130020, 4000179, 1, 1, 0, 200000), +(7130020, 4030012, 1, 1, 0, 10000), +(7130020, 2000002, 1, 1, 0, 40000), +(7130020, 2000006, 1, 1, 0, 40000), +(7130020, 2050004, 1, 1, 0, 3000), +(7130020, 2044701, 1, 1, 0, 750), +(7130020, 2048001, 1, 1, 0, 750), +(7130020, 2044902, 1, 1, 0, 750), +(7130020, 2385013, 1, 1, 0, 20000), +(7130020, 4004003, 1, 1, 0, 3000), +(7130020, 4020008, 1, 1, 0, 7000), +(7130020, 4010001, 1, 1, 0, 7000), +(7130020, 1102032, 1, 1, 0, 700), +(7130020, 1102035, 1, 1, 0, 700), +(7130020, 1442030, 1, 1, 0, 700), +(7130020, 1051078, 1, 1, 0, 700), +(7130020, 1422012, 1, 1, 0, 700), +(7130020, 1050093, 1, 1, 0, 700), +(7130020, 1002287, 1, 1, 0, 700), +(7130020, 1072164, 1, 1, 0, 700), +(7130020, 1002329, 1, 1, 0, 700), +(7130020, 1072194, 1, 1, 0, 700), +(7130020, 1002323, 1, 1, 0, 700), +(7130020, 1041101, 1, 1, 0, 700), +(7130020, 1061100, 1, 1, 0, 700), +(7130020, 1072152, 1, 1, 0, 700), +(7130020, 1472023, 1, 1, 0, 700), +(7130020, 1072312, 1, 1, 0, 700), +(8140110, 4030012, 1, 1, 0, 10000), +(8140110, 2000002, 1, 1, 0, 40000), +(8140110, 2000005, 1, 1, 0, 40000), +(8140110, 4006000, 1, 1, 0, 7000), +(8140110, 2044702, 1, 1, 0, 750), +(8140110, 2043802, 1, 1, 0, 750), +(8140110, 2044803, 1, 1, 0, 750), +(8140110, 4010006, 1, 1, 0, 7000), +(8140110, 4020008, 1, 1, 0, 7000), +(8140110, 4004002, 1, 1, 0, 3000), +(8140110, 1092027, 1, 1, 0, 700), +(8140110, 1302056, 1, 1, 0, 700), +(8140110, 1432010, 1, 1, 0, 700), +(8140110, 1372010, 1, 1, 0, 700), +(8140110, 1452015, 1, 1, 0, 700), +(8140110, 1462013, 1, 1, 0, 700), +(8140110, 1072185, 1, 1, 0, 700), +(8140110, 1082119, 1, 1, 0, 700), +(8140110, 1002330, 1, 1, 0, 700), +(8140110, 1332052, 1, 1, 0, 700), +(8140110, 1482010, 1, 1, 0, 700), +(9300178, 2044701, 1, 1, 0, 750), +(9300178, 2044301, 1, 1, 0, 750), +(9300178, 2043301, 1, 1, 0, 750), +(8220009, 2000005, 1, 4, 0, 40000), +(9300207, 2000005, 1, 4, 0, 40000), +(9410014, 2000005, 1, 1, 0, 40000), +(9410015, 2000005, 1, 4, 0, 40000), +(9500178, 2000005, 1, 1, 0, 40000), +(8220009, 2043001, 1, 4, 0, 10000), +(9300207, 2043001, 1, 4, 0, 10000), +(9410014, 2043001, 1, 1, 0, 750), +(9410015, 2043001, 1, 4, 0, 10000), +(9500178, 2043001, 1, 1, 0, 750), +(8220009, 2043101, 1, 4, 0, 10000), +(9300207, 2043101, 1, 4, 0, 10000), +(9410014, 2043101, 1, 1, 0, 750), +(9410015, 2043101, 1, 4, 0, 10000), +(9500178, 2043101, 1, 1, 0, 750), +(8220009, 2043201, 1, 4, 0, 10000), +(9300207, 2043201, 1, 4, 0, 10000), +(9410014, 2043201, 1, 1, 0, 750), +(9410015, 2043201, 1, 4, 0, 10000), +(9500178, 2043201, 1, 1, 0, 750), +(8220009, 2043301, 1, 4, 0, 10000), +(9300207, 2043301, 1, 4, 0, 10000), +(9410014, 2043301, 1, 1, 0, 750), +(9410015, 2043301, 1, 4, 0, 10000), +(9500178, 2043301, 1, 1, 0, 750), +(8220009, 2043701, 1, 4, 0, 10000), +(9300207, 2043701, 1, 4, 0, 10000), +(9410014, 2043701, 1, 1, 0, 750), +(9410015, 2043701, 1, 4, 0, 10000), +(9500178, 2043701, 1, 1, 0, 750), +(8220009, 2043801, 1, 4, 0, 10000), +(9300207, 2043801, 1, 4, 0, 10000), +(9410014, 2043801, 1, 1, 0, 750), +(9410015, 2043801, 1, 4, 0, 10000), +(9500178, 2043801, 1, 1, 0, 750), +(8220009, 2044001, 1, 4, 0, 10000), +(9300207, 2044001, 1, 4, 0, 10000), +(9410014, 2044001, 1, 1, 0, 750), +(9410015, 2044001, 1, 4, 0, 10000), +(9500178, 2044001, 1, 1, 0, 750), +(8220009, 2044101, 1, 4, 0, 10000), +(9300207, 2044101, 1, 4, 0, 10000), +(9410014, 2044101, 1, 1, 0, 750), +(9410015, 2044101, 1, 4, 0, 10000), +(9500178, 2044101, 1, 1, 0, 750), +(8220009, 2044201, 1, 4, 0, 10000), +(9300207, 2044201, 1, 4, 0, 10000), +(9410014, 2044201, 1, 1, 0, 750), +(9410015, 2044201, 1, 4, 0, 10000), +(9500178, 2044201, 1, 1, 0, 750), +(8220009, 2044301, 1, 4, 0, 10000), +(9300207, 2044301, 1, 4, 0, 10000), +(9410014, 2044301, 1, 1, 0, 750), +(9410015, 2044301, 1, 4, 0, 10000), +(9500178, 2044301, 1, 1, 0, 750), +(8220009, 2044401, 1, 4, 0, 10000), +(9300207, 2044401, 1, 4, 0, 10000), +(9410014, 2044401, 1, 1, 0, 750), +(9410015, 2044401, 1, 4, 0, 10000), +(9500178, 2044401, 1, 1, 0, 750), +(8220009, 2044501, 1, 4, 0, 10000), +(9300207, 2044501, 1, 4, 0, 10000), +(9410014, 2044501, 1, 1, 0, 750), +(9410015, 2044501, 1, 4, 0, 10000), +(9500178, 2044501, 1, 1, 0, 750), +(8220009, 2044601, 1, 4, 0, 10000), +(9300207, 2044601, 1, 4, 0, 10000), +(9410014, 2044601, 1, 1, 0, 750), +(9410015, 2044601, 1, 4, 0, 10000), +(9500178, 2044601, 1, 1, 0, 750), +(8220009, 2044701, 1, 4, 0, 10000), +(9300207, 2044701, 1, 4, 0, 10000), +(9410014, 2044701, 1, 1, 0, 750), +(9410015, 2044701, 1, 4, 0, 10000), +(9500178, 2044701, 1, 1, 0, 750), +(8220009, 2000004, 1, 4, 0, 40000), +(9300207, 2000004, 1, 4, 0, 40000), +(9410014, 2000004, 1, 1, 0, 40000), +(9410015, 2000004, 1, 4, 0, 40000), +(9500178, 2000004, 1, 1, 0, 40000), +(8220009, 1322019, 1, 1, 0, 40000), +(9300207, 1322019, 1, 1, 0, 40000), +(9410014, 1322019, 1, 1, 0, 700), +(9410015, 1322019, 1, 1, 0, 40000), +(9500178, 1322019, 1, 1, 0, 700), +(8220009, 1312010, 1, 1, 0, 40000), +(9300207, 1312010, 1, 1, 0, 40000), +(9410014, 1312010, 1, 1, 0, 700), +(9410015, 1312010, 1, 1, 0, 40000), +(9500178, 1312010, 1, 1, 0, 700), +(8220009, 1412008, 1, 1, 0, 40000), +(9300207, 1412008, 1, 1, 0, 40000), +(9410014, 1412008, 1, 1, 0, 700), +(9410015, 1412008, 1, 1, 0, 40000), +(9500178, 1412008, 1, 1, 0, 700), +(8220009, 1422010, 1, 1, 0, 40000), +(9300207, 1422010, 1, 1, 0, 40000), +(9410014, 1422010, 1, 1, 0, 700), +(9410015, 1422010, 1, 1, 0, 40000), +(9500178, 1422010, 1, 1, 0, 700), +(8220009, 1432007, 1, 1, 0, 40000), +(9300207, 1432007, 1, 1, 0, 40000), +(9410014, 1432007, 1, 1, 0, 700), +(9410015, 1432007, 1, 1, 0, 40000), +(9500178, 1432007, 1, 1, 0, 700), +(8220009, 1442008, 1, 1, 0, 40000), +(9300207, 1442008, 1, 1, 0, 40000), +(9410014, 1442008, 1, 1, 0, 700), +(9410015, 1442008, 1, 1, 0, 40000), +(9500178, 1442008, 1, 1, 0, 700), +(8220009, 1302012, 1, 1, 0, 40000), +(9300207, 1302012, 1, 1, 0, 40000), +(9410014, 1302012, 1, 1, 0, 700), +(9410015, 1302012, 1, 1, 0, 40000), +(9500178, 1302012, 1, 1, 0, 700), +(8220009, 1402012, 1, 1, 0, 40000), +(9300207, 1402012, 1, 1, 0, 40000), +(9410014, 1402012, 1, 1, 0, 700), +(9410015, 1402012, 1, 1, 0, 40000), +(9500178, 1402012, 1, 1, 0, 700), +(8220009, 1332019, 1, 1, 0, 40000), +(9300207, 1332019, 1, 1, 0, 40000), +(9410014, 1332019, 1, 1, 0, 700), +(9410015, 1332019, 1, 1, 0, 40000), +(9500178, 1332019, 1, 1, 0, 700), +(8220009, 1092017, 1, 1, 0, 40000), +(9300207, 1092017, 1, 1, 0, 40000), +(9410014, 1092017, 1, 1, 0, 700), +(9410015, 1092017, 1, 1, 0, 40000), +(9500178, 1092017, 1, 1, 0, 700), +(8220009, 1382007, 1, 1, 0, 40000), +(9300207, 1382007, 1, 1, 0, 40000), +(9410014, 1382007, 1, 1, 0, 700), +(9410015, 1382007, 1, 1, 0, 40000), +(9500178, 1382007, 1, 1, 0, 700), +(8220009, 1452009, 1, 1, 0, 40000), +(9300207, 1452009, 1, 1, 0, 40000), +(9410014, 1452009, 1, 1, 0, 700), +(9410015, 1452009, 1, 1, 0, 40000), +(9500178, 1452009, 1, 1, 0, 700), +(8220009, 1462009, 1, 1, 0, 40000), +(9300207, 1462009, 1, 1, 0, 40000), +(9410014, 1462009, 1, 1, 0, 700), +(9410015, 1462009, 1, 1, 0, 40000), +(9500178, 1462009, 1, 1, 0, 700), +(8220009, 1472026, 1, 1, 0, 40000), +(9300207, 1472026, 1, 1, 0, 40000), +(9410014, 1472026, 1, 1, 0, 700), +(9410015, 1472026, 1, 1, 0, 40000), +(9500178, 1472026, 1, 1, 0, 700), +(8220009, 1332018, 1, 1, 0, 40000), +(9300207, 1332018, 1, 1, 0, 40000), +(9410014, 1332018, 1, 1, 0, 700), +(9410015, 1332018, 1, 1, 0, 40000), +(9500178, 1332018, 1, 1, 0, 700), +(8220009, 1332019, 1, 1, 0, 40000), +(9300207, 1332019, 1, 1, 0, 40000), +(9410014, 1332019, 1, 1, 0, 700), +(9410015, 1332019, 1, 1, 0, 40000), +(9500178, 1332019, 1, 1, 0, 700), +(8120104, 4000554, 1, 1, 0, 200000), +(8120104, 4006001, 1, 1, 0, 7000), +(8120104, 4001110, 1, 1, 0, 7000), +(8120104, 2000006, 1, 1, 0, 40000), +(8120104, 2000002, 1, 1, 0, 40000), +(8120104, 2044401, 1, 1, 0, 750), +(8120104, 2040621, 1, 1, 0, 750), +(8120104, 2070005, 1, 1, 0, 400), +(8120104, 2049000, 1, 1, 0, 400), +(8120104, 2330003, 1, 1, 0, 400), +(8120104, 4010003, 1, 1, 0, 7000), +(8120104, 4020008, 1, 1, 0, 7000), +(8120104, 4004000, 1, 1, 0, 3000), +(8120104, 1032016, 1, 1, 0, 700), +(8120104, 1082103, 1, 1, 0, 700), +(8120104, 1051077, 1, 1, 0, 700), +(8120104, 1082116, 1, 1, 0, 700), +(8120104, 1072197, 1, 1, 0, 700), +(8120104, 1050070, 1, 1, 0, 700), +(8120104, 1051057, 1, 1, 0, 700), +(8120104, 1002272, 1, 1, 0, 700), +(8120104, 1082121, 1, 1, 0, 700), +(8120104, 1082131, 1, 1, 0, 700), +(8120104, 1452011, 1, 1, 0, 700), +(8120104, 1050075, 1, 1, 0, 700), +(8120104, 1051066, 1, 1, 0, 700), +(8120104, 1082109, 1, 1, 0, 700), +(8120104, 1082125, 1, 1, 0, 700), +(8120104, 1040107, 1, 1, 0, 700), +(8120104, 1060095, 1, 1, 0, 700), +(8120104, 1002330, 1, 1, 0, 700), +(8120104, 1041105, 1, 1, 0, 700), +(8120104, 1061104, 1, 1, 0, 700), +(8120104, 1072173, 1, 1, 0, 700), +(8120104, 1040115, 1, 1, 0, 700), +(8120104, 1060104, 1, 1, 0, 700), +(7160000, 4130004, 1, 1, 0, 3000), +(9301003, 4130004, 1, 1, 0, 3000), +(7160000, 4131007, 1, 1, 0, 3000), +(9301003, 4131007, 1, 1, 0, 3000), +(7160000, 4031171, 1, 1, 0, 7000), +(9301003, 4031171, 1, 1, 0, 7000), +(7160000, 2000006, 1, 1, 0, 40000), +(9301003, 2000006, 1, 1, 0, 40000), +(7160000, 2000002, 1, 1, 0, 40000), +(9301003, 2000002, 1, 1, 0, 40000), +(7160000, 2070005, 1, 1, 0, 400), +(9301003, 2070005, 1, 1, 0, 400), +(7160000, 4006001, 1, 1, 0, 7000), +(9301003, 4006001, 1, 1, 0, 7000), +(7160000, 2044401, 1, 1, 0, 750), +(9301003, 2044401, 1, 1, 0, 750), +(7160000, 2041016, 1, 1, 0, 750), +(9301003, 2041016, 1, 1, 0, 750), +(7160000, 4001110, 1, 1, 0, 7000), +(9301003, 4001110, 1, 1, 0, 7000), +(7160000, 2330003, 1, 1, 0, 400), +(9301003, 2330003, 1, 1, 0, 400), +(7160000, 4010003, 1, 1, 0, 7000), +(9301003, 4010003, 1, 1, 0, 7000), +(7160000, 4020008, 1, 1, 0, 7000), +(9301003, 4020008, 1, 1, 0, 7000), +(7160000, 4004000, 1, 1, 0, 3000), +(9301003, 4004000, 1, 1, 0, 3000), +(7160000, 1032016, 1, 1, 0, 700), +(9301003, 1032016, 1, 1, 0, 700), +(7160000, 1051077, 1, 1, 0, 700), +(9301003, 1051077, 1, 1, 0, 700), +(7160000, 1072197, 1, 1, 0, 700), +(9301003, 1072197, 1, 1, 0, 700), +(7160000, 1082116, 1, 1, 0, 700), +(9301003, 1082116, 1, 1, 0, 700), +(7160000, 1082103, 1, 1, 0, 700), +(9301003, 1082103, 1, 1, 0, 700), +(7160000, 1050070, 1, 1, 0, 700), +(9301003, 1050070, 1, 1, 0, 700), +(7160000, 1051057, 1, 1, 0, 700), +(9301003, 1051057, 1, 1, 0, 700), +(7160000, 1082131, 1, 1, 0, 700), +(9301003, 1082131, 1, 1, 0, 700), +(7160000, 1082121, 1, 1, 0, 700), +(9301003, 1082121, 1, 1, 0, 700), +(7160000, 1002272, 1, 1, 0, 700), +(9301003, 1002272, 1, 1, 0, 700), +(7160000, 1051055, 1, 1, 0, 700), +(9301003, 1051055, 1, 1, 0, 700), +(7160000, 1082109, 1, 1, 0, 700), +(9301003, 1082109, 1, 1, 0, 700), +(7160000, 1082125, 1, 1, 0, 700), +(9301003, 1082125, 1, 1, 0, 700), +(7160000, 1050075, 1, 1, 0, 700), +(9301003, 1050075, 1, 1, 0, 700), +(7160000, 1051066, 1, 1, 0, 700), +(9301003, 1051066, 1, 1, 0, 700), +(7160000, 1452011, 1, 1, 0, 700), +(9301003, 1452011, 1, 1, 0, 700), +(7160000, 1061104, 1, 1, 0, 700), +(9301003, 1061104, 1, 1, 0, 700), +(7160000, 1041105, 1, 1, 0, 700), +(9301003, 1041105, 1, 1, 0, 700), +(7160000, 1040115, 1, 1, 0, 700), +(9301003, 1040115, 1, 1, 0, 700), +(7160000, 1060104, 1, 1, 0, 700), +(9301003, 1060104, 1, 1, 0, 700), +(7160000, 1002330, 1, 1, 0, 700), +(9301003, 1002330, 1, 1, 0, 700), +(7160000, 1040107, 1, 1, 0, 700), +(9301003, 1040107, 1, 1, 0, 700), +(7160000, 1060095, 1, 1, 0, 700), +(9301003, 1060095, 1, 1, 0, 700), +(7160000, 1072173, 1, 1, 0, 700), +(9301003, 1072173, 1, 1, 0, 700), +(9420539, 4000477, 1, 1, 0, 200000), +(9420539, 4006001, 1, 1, 0, 7000), +(9420539, 4006000, 1, 1, 0, 7000), +(9420539, 2000009, 1, 1, 0, 40000), +(9420539, 2002008, 1, 1, 0, 10000), +(9420539, 2000006, 1, 1, 0, 40000), +(9420539, 2044601, 1, 1, 0, 750), +(9420539, 2040802, 1, 1, 0, 750), +(9420539, 2040514, 1, 1, 0, 750), +(9420539, 2070005, 1, 1, 0, 400), +(9420539, 4010000, 1, 1, 0, 7000), +(9420539, 4020005, 1, 1, 0, 7000), +(9420539, 4004004, 1, 1, 0, 3000), +(9420539, 4010002, 1, 1, 0, 7000), +(9420539, 1102035, 1, 1, 0, 700), +(9420539, 1102031, 1, 1, 0, 700), +(9420539, 1412009, 1, 1, 0, 700), +(9420539, 1402012, 1, 1, 0, 700), +(9420539, 1082116, 1, 1, 0, 700), +(9420539, 1050074, 1, 1, 0, 700), +(9420539, 1082099, 1, 1, 0, 700), +(9420539, 1082108, 1, 1, 0, 700), +(9420539, 1002284, 1, 1, 0, 700), +(8140111, 4030012, 1, 1, 0, 10000), +(8140111, 2000006, 1, 1, 0, 40000), +(8140111, 2000005, 1, 1, 0, 40000), +(8140111, 2070006, 1, 1, 0, 400), +(8140111, 2041014, 1, 1, 0, 750), +(8140111, 2044001, 1, 1, 0, 750), +(8140111, 2330003, 1, 1, 0, 400), +(8140111, 4010003, 1, 1, 0, 7000), +(8140111, 4020003, 1, 1, 0, 7000), +(8140111, 4004002, 1, 1, 0, 3000), +(8140111, 1032023, 1, 1, 0, 700), +(8140111, 1051080, 1, 1, 0, 700), +(8140111, 1092025, 1, 1, 0, 700), +(8140111, 1442044, 1, 1, 0, 700), +(8140111, 1432030, 1, 1, 0, 700), +(8140111, 1372016, 1, 1, 0, 700), +(8140111, 1082122, 1, 1, 0, 700), +(8140111, 1072183, 1, 1, 0, 700), +(8140111, 1462015, 1, 1, 0, 700), +(8140111, 1082106, 1, 1, 0, 700), +(8140111, 1002328, 1, 1, 0, 700), +(8140111, 1472031, 1, 1, 0, 700), +(8140111, 1482010, 1, 1, 0, 700), +(8140101, 2000002, 1, 1, 0, 40000), +(9300096, 2000002, 1, 1, 0, 40000), +(9300261, 2000002, 1, 1, 0, 40000), +(9500164, 2000002, 1, 1, 0, 40000), +(8140101, 2000006, 1, 1, 0, 40000), +(9300096, 2000006, 1, 1, 0, 40000), +(9300261, 2000006, 1, 1, 0, 40000), +(9500164, 2000006, 1, 1, 0, 40000), +(8140101, 2000005, 1, 1, 0, 40000), +(9300096, 2000005, 1, 1, 0, 40000), +(9300261, 2000005, 1, 1, 0, 40000), +(9500164, 2000005, 1, 1, 0, 40000), +(8140101, 4006001, 1, 1, 0, 7000), +(9300096, 4006001, 1, 1, 0, 7000), +(9300261, 4006001, 1, 1, 0, 7000), +(9500164, 4006001, 1, 1, 0, 7000), +(8140101, 2048004, 1, 1, 0, 750), +(9300096, 2048004, 1, 1, 0, 750), +(9300261, 2048004, 1, 1, 0, 750), +(9500164, 2048004, 1, 1, 0, 750), +(8140101, 2040901, 1, 1, 0, 750), +(9300096, 2040901, 1, 1, 0, 750), +(9300261, 2040901, 1, 1, 0, 750), +(9500164, 2040901, 1, 1, 0, 750), +(8140101, 4010003, 1, 1, 0, 7000), +(9300096, 4010003, 1, 1, 0, 7000), +(9300261, 4010003, 1, 1, 0, 7000), +(9500164, 4010003, 1, 1, 0, 7000), +(8140101, 4020001, 1, 1, 0, 7000), +(9300096, 4020001, 1, 1, 0, 7000), +(9300261, 4020001, 1, 1, 0, 7000), +(9500164, 4020001, 1, 1, 0, 7000), +(8140101, 4004003, 1, 1, 0, 3000), +(9300096, 4004003, 1, 1, 0, 3000), +(9300261, 4004003, 1, 1, 0, 3000), +(9500164, 4004003, 1, 1, 0, 3000), +(8140101, 1032023, 1, 1, 0, 700), +(9300096, 1032023, 1, 1, 0, 700), +(9300261, 1032023, 1, 1, 0, 700), +(9500164, 1032023, 1, 1, 0, 700), +(8140101, 1082117, 1, 1, 0, 700), +(9300096, 1082117, 1, 1, 0, 700), +(9300261, 1082117, 1, 1, 0, 700), +(9500164, 1082117, 1, 1, 0, 700), +(8140101, 1092026, 1, 1, 0, 700), +(9300096, 1092026, 1, 1, 0, 700), +(9300261, 1092026, 1, 1, 0, 700), +(9500164, 1092026, 1, 1, 0, 700), +(8140101, 1402035, 1, 1, 0, 700), +(9300096, 1402035, 1, 1, 0, 700), +(9300261, 1402035, 1, 1, 0, 700), +(9500164, 1402035, 1, 1, 0, 700), +(8140101, 1312030, 1, 1, 0, 700), +(9300096, 1312030, 1, 1, 0, 700), +(9300261, 1312030, 1, 1, 0, 700), +(9500164, 1312030, 1, 1, 0, 700), +(8140101, 1072179, 1, 1, 0, 700), +(9300096, 1072179, 1, 1, 0, 700), +(9300261, 1072179, 1, 1, 0, 700), +(9500164, 1072179, 1, 1, 0, 700), +(8140101, 1382008, 1, 1, 0, 700), +(9300096, 1382008, 1, 1, 0, 700), +(9300261, 1382008, 1, 1, 0, 700), +(9500164, 1382008, 1, 1, 0, 700), +(8140101, 1082122, 1, 1, 0, 700), +(9300096, 1082122, 1, 1, 0, 700), +(9300261, 1082122, 1, 1, 0, 700), +(9500164, 1082122, 1, 1, 0, 700), +(8140101, 1040109, 1, 1, 0, 700), +(9300096, 1040109, 1, 1, 0, 700), +(9300261, 1040109, 1, 1, 0, 700), +(9500164, 1040109, 1, 1, 0, 700), +(8140101, 1060098, 1, 1, 0, 700), +(9300096, 1060098, 1, 1, 0, 700), +(9300261, 1060098, 1, 1, 0, 700), +(9500164, 1060098, 1, 1, 0, 700), +(8140101, 1002328, 1, 1, 0, 700), +(9300096, 1002328, 1, 1, 0, 700), +(9300261, 1002328, 1, 1, 0, 700), +(9500164, 1002328, 1, 1, 0, 700), +(8140101, 1472053, 1, 1, 0, 700), +(9300096, 1472053, 1, 1, 0, 700), +(9300261, 1472053, 1, 1, 0, 700), +(9500164, 1472053, 1, 1, 0, 700), +(8140101, 1002640, 1, 1, 0, 700), +(9300096, 1002640, 1, 1, 0, 700), +(9300261, 1002640, 1, 1, 0, 700), +(9500164, 1002640, 1, 1, 0, 700), +(8140102, 4030012, 1, 1, 0, 10000), +(9300262, 4030012, 1, 1, 0, 10000), +(9500165, 4030012, 1, 1, 0, 10000), +(8140102, 4130013, 1, 1, 0, 3000), +(9300262, 4130013, 1, 1, 0, 3000), +(9500165, 4130013, 1, 1, 0, 3000), +(8140102, 4130000, 1, 1, 0, 3000), +(9300262, 4130000, 1, 1, 0, 3000), +(9500165, 4130000, 1, 1, 0, 3000), +(8140102, 4130002, 1, 1, 0, 3000), +(9300262, 4130002, 1, 1, 0, 3000), +(9500165, 4130002, 1, 1, 0, 3000), +(8140102, 2000002, 1, 1, 0, 40000), +(9300262, 2000002, 1, 1, 0, 40000), +(9500165, 2000002, 1, 1, 0, 40000), +(8140102, 2000006, 1, 1, 0, 40000), +(9300262, 2000006, 1, 1, 0, 40000), +(9500165, 2000006, 1, 1, 0, 40000), +(8140102, 2000005, 1, 1, 0, 40000), +(9300262, 2000005, 1, 1, 0, 40000), +(9500165, 2000005, 1, 1, 0, 40000), +(8140102, 4006000, 1, 1, 0, 7000), +(9300262, 4006000, 1, 1, 0, 7000), +(9500165, 4006000, 1, 1, 0, 7000), +(8140102, 2040624, 1, 1, 0, 750), +(9300262, 2040624, 1, 1, 0, 750), +(9500165, 2040624, 1, 1, 0, 750), +(8140102, 2040322, 1, 1, 0, 750), +(9300262, 2040322, 1, 1, 0, 750), +(9500165, 2040322, 1, 1, 0, 750), +(8140102, 2040805, 1, 1, 0, 750), +(9300262, 2040805, 1, 1, 0, 750), +(9500165, 2040805, 1, 1, 0, 750), +(8140102, 2040703, 1, 1, 0, 750), +(9300262, 2040703, 1, 1, 0, 750), +(9500165, 2040703, 1, 1, 0, 750), +(8140102, 4161015, 1, 1, 0, 7000), +(9300262, 4161015, 1, 1, 0, 7000), +(9500165, 4161015, 1, 1, 0, 7000), +(8140102, 2331000, 1, 1, 0, 0), +(9300262, 2331000, 1, 1, 0, 0), +(9500165, 2331000, 1, 1, 0, 0), +(8140102, 4010001, 1, 1, 0, 7000), +(9300262, 4010001, 1, 1, 0, 7000), +(9500165, 4010001, 1, 1, 0, 7000), +(8140102, 4020000, 1, 1, 0, 7000), +(9300262, 4020000, 1, 1, 0, 7000), +(9500165, 4020000, 1, 1, 0, 7000), +(8140102, 4004004, 1, 1, 0, 3000), +(9300262, 4004004, 1, 1, 0, 3000), +(9500165, 4004004, 1, 1, 0, 3000), +(8140102, 1032022, 1, 1, 0, 700), +(9300262, 1032022, 1, 1, 0, 700), +(9500165, 1032022, 1, 1, 0, 700), +(8140102, 1402004, 1, 1, 0, 700), +(9300262, 1402004, 1, 1, 0, 700), +(9500165, 1402004, 1, 1, 0, 700), +(8140102, 1092023, 1, 1, 0, 700), +(9300262, 1092023, 1, 1, 0, 700), +(9500165, 1092023, 1, 1, 0, 700), +(8140102, 1072211, 1, 1, 0, 700), +(9300262, 1072211, 1, 1, 0, 700), +(9500165, 1072211, 1, 1, 0, 700), +(8140102, 1422027, 1, 1, 0, 700), +(9300262, 1422027, 1, 1, 0, 700), +(9500165, 1422027, 1, 1, 0, 700), +(8140102, 1382035, 1, 1, 0, 700), +(9300262, 1382035, 1, 1, 0, 700), +(9500165, 1382035, 1, 1, 0, 700), +(8140102, 1002274, 1, 1, 0, 700), +(9300262, 1002274, 1, 1, 0, 700), +(9500165, 1002274, 1, 1, 0, 700), +(8140102, 1051068, 1, 1, 0, 700), +(9300262, 1051068, 1, 1, 0, 700), +(9500165, 1051068, 1, 1, 0, 700), +(8140102, 1452019, 1, 1, 0, 700), +(9300262, 1452019, 1, 1, 0, 700), +(9500165, 1452019, 1, 1, 0, 700), +(8140102, 1082118, 1, 1, 0, 700), +(9300262, 1082118, 1, 1, 0, 700), +(9500165, 1082118, 1, 1, 0, 700), +(8140102, 1002643, 1, 1, 0, 700), +(9300262, 1002643, 1, 1, 0, 700), +(9500165, 1002643, 1, 1, 0, 700), +(8140103, 2000002, 1, 1, 0, 40000), +(9300263, 2000002, 1, 1, 0, 40000), +(9500166, 2000002, 1, 1, 0, 40000), +(8140103, 2000006, 1, 1, 0, 40000), +(9300263, 2000006, 1, 1, 0, 40000), +(9500166, 2000006, 1, 1, 0, 40000), +(8140103, 2000005, 1, 1, 0, 40000), +(9300263, 2000005, 1, 1, 0, 40000), +(9500166, 2000005, 1, 1, 0, 40000), +(8140103, 4006000, 1, 1, 0, 7000), +(9300263, 4006000, 1, 1, 0, 7000), +(9500166, 4006000, 1, 1, 0, 7000), +(8140103, 2043701, 1, 1, 0, 750), +(9300263, 2043701, 1, 1, 0, 750), +(9500166, 2043701, 1, 1, 0, 750), +(8140103, 2040004, 1, 1, 0, 750), +(9300263, 2040004, 1, 1, 0, 750), +(9500166, 2040004, 1, 1, 0, 750), +(8140103, 2290044, 1, 1, 0, 1000), +(9300263, 2290044, 1, 1, 0, 1000), +(9500166, 2290044, 1, 1, 0, 1000), +(8140103, 4161016, 1, 1, 0, 7000), +(9300263, 4161016, 1, 1, 0, 7000), +(9500166, 4161016, 1, 1, 0, 7000), +(8140103, 2331000, 1, 1, 0, 0), +(9300263, 2331000, 1, 1, 0, 0), +(9500166, 2331000, 1, 1, 0, 0), +(8140103, 4010000, 1, 1, 0, 7000), +(9300263, 4010000, 1, 1, 0, 7000), +(9500166, 4010000, 1, 1, 0, 7000), +(8140103, 4020001, 1, 1, 0, 7000), +(9300263, 4020001, 1, 1, 0, 7000), +(9500166, 4020001, 1, 1, 0, 7000), +(8140103, 4004002, 1, 1, 0, 3000), +(9300263, 4004002, 1, 1, 0, 3000), +(9500166, 4004002, 1, 1, 0, 3000), +(8140103, 1102032, 1, 1, 0, 700), +(9300263, 1102032, 1, 1, 0, 700), +(9500166, 1102032, 1, 1, 0, 700), +(8140103, 1082116, 1, 1, 0, 700), +(9300263, 1082116, 1, 1, 0, 700), +(9500166, 1082116, 1, 1, 0, 700), +(8140103, 1432011, 1, 1, 0, 700), +(9300263, 1432011, 1, 1, 0, 700), +(9500166, 1432011, 1, 1, 0, 700), +(8140103, 1412021, 1, 1, 0, 700), +(9300263, 1412021, 1, 1, 0, 700), +(9500166, 1412021, 1, 1, 0, 700), +(8140103, 1442019, 1, 1, 0, 700), +(9300263, 1442019, 1, 1, 0, 700), +(9500166, 1442019, 1, 1, 0, 700), +(8140103, 1412009, 1, 1, 0, 700), +(9300263, 1412009, 1, 1, 0, 700), +(9500166, 1412009, 1, 1, 0, 700), +(8140103, 1332051, 1, 1, 0, 700), +(9300263, 1332051, 1, 1, 0, 700), +(9500166, 1332051, 1, 1, 0, 700), +(8140103, 1322045, 1, 1, 0, 700), +(9300263, 1322045, 1, 1, 0, 700), +(9500166, 1322045, 1, 1, 0, 700), +(8140103, 1072177, 1, 1, 0, 700), +(9300263, 1072177, 1, 1, 0, 700), +(9500166, 1072177, 1, 1, 0, 700), +(8140103, 1002277, 1, 1, 0, 700), +(9300263, 1002277, 1, 1, 0, 700), +(9500166, 1002277, 1, 1, 0, 700), +(8140103, 1452013, 1, 1, 0, 700), +(9300263, 1452013, 1, 1, 0, 700), +(9500166, 1452013, 1, 1, 0, 700), +(8140103, 1332051, 1, 1, 0, 700), +(9300263, 1332051, 1, 1, 0, 700), +(9500166, 1332051, 1, 1, 0, 700), +(8140103, 1041106, 1, 1, 0, 700), +(9300263, 1041106, 1, 1, 0, 700), +(9500166, 1041106, 1, 1, 0, 700), +(8140103, 1061105, 1, 1, 0, 700), +(9300263, 1061105, 1, 1, 0, 700), +(9500166, 1061105, 1, 1, 0, 700), +(8120105, 4000555, 1, 1, 0, 200000), +(8120105, 4006001, 1, 1, 0, 7000), +(8120105, 2000006, 1, 1, 0, 40000), +(8120105, 2000002, 1, 1, 0, 40000), +(8120105, 2000005, 1, 1, 0, 40000), +(8120105, 2041014, 1, 1, 0, 750), +(8120105, 2044001, 1, 1, 0, 750), +(8120105, 2070006, 1, 1, 0, 400), +(8120105, 2330003, 1, 1, 0, 400), +(8120105, 2040325, 1, 1, 0, 750), +(8120105, 2043216, 1, 1, 0, 750), +(8120105, 2330004, 1, 1, 0, 400), +(8120105, 2049000, 1, 1, 0, 400), +(8120105, 4010003, 1, 1, 0, 7000), +(8120105, 4020003, 1, 1, 0, 7000), +(8120105, 4004003, 1, 1, 0, 3000), +(8120105, 1032023, 1, 1, 0, 700), +(8120105, 1051080, 1, 1, 0, 700), +(8120105, 1092025, 1, 1, 0, 700), +(8120105, 1432030, 1, 1, 0, 700), +(8120105, 1442044, 1, 1, 0, 700), +(8120105, 1082122, 1, 1, 0, 700), +(8120105, 1372016, 1, 1, 0, 700), +(8120105, 1072183, 1, 1, 0, 700), +(8120105, 1462015, 1, 1, 0, 700), +(8120105, 1002328, 1, 1, 0, 700), +(8120105, 1472031, 1, 1, 0, 700), +(8120105, 1482010, 1, 1, 0, 700), +(7130300, 4000148, 1, 1, 0, 200000), +(7130300, 4031171, 1, 1, 0, 7000), +(7130300, 2000004, 1, 1, 0, 40000), +(7130300, 2000005, 1, 1, 0, 40000), +(7130300, 2002004, 1, 1, 0, 10000), +(7130300, 4006001, 1, 1, 0, 7000), +(7130300, 2044301, 1, 1, 0, 750), +(7130300, 2041009, 1, 1, 0, 750), +(7130300, 4010006, 1, 1, 0, 7000), +(7130300, 4020006, 1, 1, 0, 7000), +(7130300, 1302018, 1, 1, 0, 700), +(7130300, 1041121, 1, 1, 0, 700), +(7130300, 1061120, 1, 1, 0, 700), +(7130300, 1072155, 1, 1, 0, 700), +(7130300, 1072212, 1, 1, 0, 700), +(7130300, 1382009, 1, 1, 0, 700), +(7130300, 1072206, 1, 1, 0, 700), +(7130300, 1050074, 1, 1, 0, 700), +(7130300, 1002253, 1, 1, 0, 700), +(7130300, 1002274, 1, 1, 0, 700), +(7130300, 1082123, 1, 1, 0, 700), +(7130300, 1082110, 1, 1, 0, 700), +(7130300, 1051068, 1, 1, 0, 700), +(7130300, 1072166, 1, 1, 0, 700), +(7130300, 1072167, 1, 1, 0, 700), +(7130300, 1002276, 1, 1, 0, 700), +(7130300, 1072203, 1, 1, 0, 700), +(7130300, 1061104, 1, 1, 0, 700), +(7130300, 1041107, 1, 1, 0, 700), +(7130300, 1061106, 1, 1, 0, 700), +(7130300, 1002284, 1, 1, 0, 700), +(7130300, 1082143, 1, 1, 0, 700), +(7130300, 1072312, 1, 1, 0, 700), +(8120106, 4000556, 1, 1, 0, 200000), +(8120107, 4000556, 1, 1, 0, 200000), +(8120106, 4006001, 1, 1, 0, 7000), +(8120107, 4006001, 1, 1, 0, 7000), +(8120106, 2000004, 1, 1, 0, 40000), +(8120107, 2000004, 1, 1, 0, 40000), +(8120106, 2000005, 1, 1, 0, 40000), +(8120107, 2000005, 1, 1, 0, 40000), +(8120106, 2002004, 1, 1, 0, 10000), +(8120107, 2002004, 1, 1, 0, 10000), +(8120106, 2044301, 1, 1, 0, 750), +(8120107, 2044301, 1, 1, 0, 750), +(8120106, 2041009, 1, 1, 0, 750), +(8120107, 2041009, 1, 1, 0, 750), +(8120106, 2040033, 1, 1, 0, 750), +(8120107, 2040033, 1, 1, 0, 750), +(8120106, 2040823, 1, 1, 0, 750), +(8120107, 2040823, 1, 1, 0, 750), +(8120106, 2043210, 1, 1, 0, 750), +(8120107, 2043210, 1, 1, 0, 750), +(8120106, 2049000, 1, 1, 0, 400), +(8120107, 2049000, 1, 1, 0, 400), +(8120106, 4010006, 1, 1, 0, 7000), +(8120107, 4010006, 1, 1, 0, 7000), +(8120106, 4020006, 1, 1, 0, 7000), +(8120107, 4020006, 1, 1, 0, 7000), +(8120106, 1072155, 1, 1, 0, 700), +(8120107, 1072155, 1, 1, 0, 700), +(8120106, 1302018, 1, 1, 0, 700), +(8120107, 1302018, 1, 1, 0, 700), +(8120106, 1072212, 1, 1, 0, 700), +(8120107, 1072212, 1, 1, 0, 700), +(8120106, 1041121, 1, 1, 0, 700), +(8120107, 1041121, 1, 1, 0, 700), +(8120106, 1061120, 1, 1, 0, 700), +(8120107, 1061120, 1, 1, 0, 700), +(8120106, 1002253, 1, 1, 0, 700), +(8120107, 1002253, 1, 1, 0, 700), +(8120106, 1050074, 1, 1, 0, 700), +(8120107, 1050074, 1, 1, 0, 700), +(8120106, 1002274, 1, 1, 0, 700), +(8120107, 1002274, 1, 1, 0, 700), +(8120106, 1072206, 1, 1, 0, 700), +(8120107, 1072206, 1, 1, 0, 700), +(8120106, 1072167, 1, 1, 0, 700), +(8120107, 1072167, 1, 1, 0, 700), +(8120106, 1002276, 1, 1, 0, 700), +(8120107, 1002276, 1, 1, 0, 700), +(8120106, 1051068, 1, 1, 0, 700), +(8120107, 1051068, 1, 1, 0, 700), +(8120106, 1082110, 1, 1, 0, 700), +(8120107, 1082110, 1, 1, 0, 700), +(8120106, 1072203, 1, 1, 0, 700), +(8120107, 1072203, 1, 1, 0, 700), +(8120106, 1002284, 1, 1, 0, 700), +(8120107, 1002284, 1, 1, 0, 700), +(8120106, 1041107, 1, 1, 0, 700), +(8120107, 1041107, 1, 1, 0, 700), +(8120106, 1061106, 1, 1, 0, 700), +(8120107, 1061106, 1, 1, 0, 700), +(8120106, 1082143, 1, 1, 0, 700), +(8120107, 1082143, 1, 1, 0, 700), +(8120106, 1072312, 1, 1, 0, 700), +(8120107, 1072312, 1, 1, 0, 700), +(8140500, 4003005, 1, 1, 0, 7000), +(9301000, 4003005, 1, 1, 0, 7000), +(9500138, 4003005, 1, 1, 0, 7000), +(8140500, 2000006, 1, 1, 0, 40000), +(9301000, 2000006, 1, 1, 0, 40000), +(9500138, 2000006, 1, 1, 0, 40000), +(8140500, 2000005, 1, 1, 0, 40000), +(9301000, 2000005, 1, 1, 0, 40000), +(9500138, 2000005, 1, 1, 0, 40000), +(8140500, 2070004, 1, 1, 0, 400), +(9301000, 2070004, 1, 1, 0, 400), +(9500138, 2070004, 1, 1, 0, 400), +(8140500, 2044001, 1, 1, 0, 750), +(9301000, 2044001, 1, 1, 0, 750), +(9500138, 2044001, 1, 1, 0, 750), +(8140500, 2041022, 1, 1, 0, 750), +(9301000, 2041022, 1, 1, 0, 750), +(9500138, 2041022, 1, 1, 0, 750), +(8140500, 4020001, 1, 1, 0, 7000), +(9301000, 4020001, 1, 1, 0, 7000), +(9500138, 4020001, 1, 1, 0, 7000), +(8140500, 4020007, 1, 1, 0, 7000), +(9301000, 4020007, 1, 1, 0, 7000), +(9500138, 4020007, 1, 1, 0, 7000), +(8140500, 4004000, 1, 1, 0, 3000), +(9301000, 4004000, 1, 1, 0, 3000), +(9500138, 4004000, 1, 1, 0, 3000), +(8140500, 1032017, 1, 1, 0, 700), +(9301000, 1032017, 1, 1, 0, 700), +(9500138, 1032017, 1, 1, 0, 700), +(8140500, 1072156, 1, 1, 0, 700), +(9301000, 1072156, 1, 1, 0, 700), +(9500138, 1072156, 1, 1, 0, 700), +(8140500, 1002340, 1, 1, 0, 700), +(9301000, 1002340, 1, 1, 0, 700), +(9500138, 1002340, 1, 1, 0, 700), +(8140500, 1312011, 1, 1, 0, 700), +(9301000, 1312011, 1, 1, 0, 700), +(9500138, 1312011, 1, 1, 0, 700), +(8140500, 1082117, 1, 1, 0, 700), +(9301000, 1082117, 1, 1, 0, 700), +(9500138, 1082117, 1, 1, 0, 700), +(8140500, 1332016, 1, 1, 0, 700), +(9301000, 1332016, 1, 1, 0, 700), +(9500138, 1332016, 1, 1, 0, 700), +(8140500, 1092024, 1, 1, 0, 700), +(9301000, 1092024, 1, 1, 0, 700), +(9500138, 1092024, 1, 1, 0, 700), +(8140500, 1072208, 1, 1, 0, 700), +(9301000, 1072208, 1, 1, 0, 700), +(9500138, 1072208, 1, 1, 0, 700), +(8140500, 1050070, 1, 1, 0, 700), +(9301000, 1050070, 1, 1, 0, 700), +(9500138, 1050070, 1, 1, 0, 700), +(8140500, 1082121, 1, 1, 0, 700), +(9301000, 1082121, 1, 1, 0, 700), +(9500138, 1082121, 1, 1, 0, 700), +(8140500, 1082126, 1, 1, 0, 700), +(9301000, 1082126, 1, 1, 0, 700), +(9500138, 1082126, 1, 1, 0, 700), +(8140500, 1050078, 1, 1, 0, 700), +(9301000, 1050078, 1, 1, 0, 700), +(9500138, 1050078, 1, 1, 0, 700), +(8140500, 1082111, 1, 1, 0, 700), +(9301000, 1082111, 1, 1, 0, 700), +(9500138, 1082111, 1, 1, 0, 700), +(8140500, 1072164, 1, 1, 0, 700), +(9301000, 1072164, 1, 1, 0, 700), +(9500138, 1072164, 1, 1, 0, 700), +(8140500, 1332025, 1, 1, 0, 700), +(9301000, 1332025, 1, 1, 0, 700), +(9500138, 1332025, 1, 1, 0, 700), +(8140500, 1332016, 1, 1, 0, 700), +(9301000, 1332016, 1, 1, 0, 700), +(9500138, 1332016, 1, 1, 0, 700), +(8140500, 1082096, 1, 1, 0, 700), +(9301000, 1082096, 1, 1, 0, 700), +(9500138, 1082096, 1, 1, 0, 700), +(8140500, 1072174, 1, 1, 0, 700), +(9301000, 1072174, 1, 1, 0, 700), +(9500138, 1072174, 1, 1, 0, 700), +(8140500, 1332026, 1, 1, 0, 700), +(9301000, 1332026, 1, 1, 0, 700), +(9500138, 1332026, 1, 1, 0, 700), +(8140500, 1040109, 1, 1, 0, 700), +(9301000, 1040109, 1, 1, 0, 700), +(9500138, 1040109, 1, 1, 0, 700), +(8140500, 1060098, 1, 1, 0, 700), +(9301000, 1060098, 1, 1, 0, 700), +(9500138, 1060098, 1, 1, 0, 700), +(8140500, 1040115, 1, 1, 0, 700), +(9301000, 1040115, 1, 1, 0, 700), +(9500138, 1040115, 1, 1, 0, 700), +(8140500, 1060104, 1, 1, 0, 700), +(9301000, 1060104, 1, 1, 0, 700), +(9500138, 1060104, 1, 1, 0, 700), +(8140500, 1072195, 1, 1, 0, 700), +(9301000, 1072195, 1, 1, 0, 700), +(9500138, 1072195, 1, 1, 0, 700), +(8140500, 1052125, 1, 1, 0, 700), +(9301000, 1052125, 1, 1, 0, 700), +(9500138, 1052125, 1, 1, 0, 700), +(8220007, 2000005, 1, 4, 0, 40000), +(9300209, 2000005, 1, 4, 0, 40000), +(9400205, 2000005, 1, 4, 0, 40000), +(9500176, 2000005, 1, 4, 0, 40000), +(8220007, 2000004, 1, 4, 0, 40000), +(9300209, 2000004, 1, 4, 0, 40000), +(9400205, 2000004, 1, 4, 0, 40000), +(9500176, 2000004, 1, 4, 0, 40000), +(8220007, 2043001, 1, 4, 0, 10000), +(9300209, 2043001, 1, 4, 0, 10000), +(9400205, 2043001, 1, 4, 0, 10000), +(9500176, 2043001, 1, 4, 0, 10000), +(8220007, 2043101, 1, 4, 0, 10000), +(9300209, 2043101, 1, 4, 0, 10000), +(9400205, 2043101, 1, 4, 0, 10000), +(9500176, 2043101, 1, 4, 0, 10000), +(8220007, 2043301, 1, 4, 0, 10000), +(9300209, 2043301, 1, 4, 0, 10000), +(9400205, 2043301, 1, 4, 0, 10000), +(9500176, 2043301, 1, 4, 0, 10000), +(8220007, 2043701, 1, 4, 0, 10000), +(9300209, 2043701, 1, 4, 0, 10000), +(9400205, 2043701, 1, 4, 0, 10000), +(9500176, 2043701, 1, 4, 0, 10000), +(8220007, 2044001, 1, 4, 0, 10000), +(9300209, 2044001, 1, 4, 0, 10000), +(9400205, 2044001, 1, 4, 0, 10000), +(9500176, 2044001, 1, 4, 0, 10000), +(8220007, 2044201, 1, 4, 0, 10000), +(9300209, 2044201, 1, 4, 0, 10000), +(9400205, 2044201, 1, 4, 0, 10000), +(9500176, 2044201, 1, 4, 0, 10000), +(8220007, 2044301, 1, 4, 0, 10000), +(9300209, 2044301, 1, 4, 0, 10000), +(9400205, 2044301, 1, 4, 0, 10000), +(9500176, 2044301, 1, 4, 0, 10000), +(8220007, 2044501, 1, 4, 0, 10000), +(9300209, 2044501, 1, 4, 0, 10000), +(9400205, 2044501, 1, 4, 0, 10000), +(9500176, 2044501, 1, 4, 0, 10000), +(8220007, 2044601, 1, 4, 0, 10000), +(9300209, 2044601, 1, 4, 0, 10000), +(9400205, 2044601, 1, 4, 0, 10000), +(9500176, 2044601, 1, 4, 0, 10000), +(8220007, 2044701, 1, 4, 0, 10000), +(9300209, 2044701, 1, 4, 0, 10000), +(9400205, 2044701, 1, 4, 0, 10000), +(9500176, 2044701, 1, 4, 0, 10000), +(8220007, 1032030, 1, 1, 0, 40000), +(9300209, 1032030, 1, 1, 0, 40000), +(9400205, 1032030, 1, 1, 0, 40000), +(9500176, 1032030, 1, 1, 0, 40000), +(8220007, 1322019, 1, 1, 0, 40000), +(9300209, 1322019, 1, 1, 0, 40000), +(9400205, 1322019, 1, 1, 0, 40000), +(9500176, 1322019, 1, 1, 0, 40000), +(8220007, 1312010, 1, 1, 0, 40000), +(9300209, 1312010, 1, 1, 0, 40000), +(9400205, 1312010, 1, 1, 0, 40000), +(9500176, 1312010, 1, 1, 0, 40000), +(8220007, 1412008, 1, 1, 0, 40000), +(9300209, 1412008, 1, 1, 0, 40000), +(9400205, 1412008, 1, 1, 0, 40000), +(9500176, 1412008, 1, 1, 0, 40000), +(8220007, 1432007, 1, 1, 0, 40000), +(9300209, 1432007, 1, 1, 0, 40000), +(9400205, 1432007, 1, 1, 0, 40000), +(9500176, 1432007, 1, 1, 0, 40000), +(8220007, 1302012, 1, 1, 0, 40000), +(9300209, 1302012, 1, 1, 0, 40000), +(9400205, 1302012, 1, 1, 0, 40000), +(9500176, 1302012, 1, 1, 0, 40000), +(8220007, 1332019, 1, 1, 0, 40000), +(9300209, 1332019, 1, 1, 0, 40000), +(9400205, 1332019, 1, 1, 0, 40000), +(9500176, 1332019, 1, 1, 0, 40000), +(8220007, 1382007, 1, 1, 0, 40000), +(9300209, 1382007, 1, 1, 0, 40000), +(9400205, 1382007, 1, 1, 0, 40000), +(9500176, 1382007, 1, 1, 0, 40000), +(8220007, 1332018, 1, 1, 0, 40000), +(9300209, 1332018, 1, 1, 0, 40000), +(9400205, 1332018, 1, 1, 0, 40000), +(9500176, 1332018, 1, 1, 0, 40000), +(8220007, 1332019, 1, 1, 0, 40000), +(9300209, 1332019, 1, 1, 0, 40000), +(9400205, 1332019, 1, 1, 0, 40000), +(9500176, 1332019, 1, 1, 0, 40000), +(8140700, 4000262, 1, 1, 0, 200000), +(8140700, 4000245, 1, 1, 0, 200000), +(8140700, 4000244, 1, 1, 0, 200000), +(8140700, 2000006, 1, 1, 0, 40000), +(8140700, 2000005, 1, 1, 0, 40000), +(8140700, 2041022, 1, 1, 0, 750), +(8140700, 2043801, 1, 1, 0, 750), +(8140700, 2044904, 1, 1, 0, 750), +(8140700, 2290126, 1, 1, 0, 1000), +(8140700, 4004000, 1, 1, 0, 3000), +(8140700, 4020007, 1, 1, 0, 7000), +(8140700, 4020001, 1, 1, 0, 7000), +(8140700, 1041120, 1, 1, 0, 700), +(8140700, 1061119, 1, 1, 0, 700), +(8140700, 1002528, 1, 1, 0, 700), +(8140700, 1372009, 1, 1, 0, 700), +(8140700, 1082134, 1, 1, 0, 700), +(8140700, 1072204, 1, 1, 0, 700), +(8140700, 1040117, 1, 1, 0, 700), +(8140700, 1060106, 1, 1, 0, 700), +(8140700, 1472033, 1, 1, 0, 700), +(8140700, 1082207, 1, 1, 0, 700), +(8220001, 4000051, 1, 1, 0, 200000), +(9300208, 4000051, 1, 1, 0, 200000), +(9500321, 4000051, 1, 1, 0, 200000), +(8220001, 4000048, 1, 1, 0, 200000), +(9300208, 4000048, 1, 1, 0, 200000), +(9500321, 4000048, 1, 1, 0, 200000), +(8220001, 4000049, 1, 1, 0, 200000), +(9300208, 4000049, 1, 1, 0, 200000), +(9500321, 4000049, 1, 1, 0, 200000), +(8220001, 2000004, 1, 4, 0, 40000), +(9300208, 2000004, 1, 4, 0, 40000), +(9500321, 2000004, 1, 1, 0, 40000), +(8220001, 2000006, 1, 4, 0, 40000), +(9300208, 2000006, 1, 4, 0, 40000), +(9500321, 2000006, 1, 1, 0, 40000), +(8220001, 2040804, 1, 4, 0, 10000), +(9300208, 2040804, 1, 4, 0, 10000), +(9500321, 2040804, 1, 1, 0, 750), +(8220001, 2040801, 1, 4, 0, 10000), +(9300208, 2040801, 1, 4, 0, 10000), +(9500321, 2040801, 1, 1, 0, 750), +(8220001, 2040701, 1, 4, 0, 10000), +(9300208, 2040701, 1, 4, 0, 10000), +(9500321, 2040701, 1, 1, 0, 750), +(8220001, 2043702, 1, 4, 0, 10000), +(9300208, 2043702, 1, 4, 0, 10000), +(9500321, 2043702, 1, 1, 0, 750), +(8220001, 2043701, 1, 4, 0, 10000), +(9300208, 2043701, 1, 4, 0, 10000), +(9500321, 2043701, 1, 1, 0, 750), +(8220001, 2041016, 1, 4, 0, 10000), +(9300208, 2041016, 1, 4, 0, 10000), +(9500321, 2041016, 1, 1, 0, 750), +(8220001, 2040601, 1, 4, 0, 10000), +(9300208, 2040601, 1, 4, 0, 10000), +(9500321, 2040601, 1, 1, 0, 750), +(8220001, 2040513, 1, 4, 0, 10000), +(9300208, 2040513, 1, 4, 0, 10000), +(9500321, 2040513, 1, 1, 0, 750), +(8220001, 2043802, 1, 4, 0, 10000), +(9300208, 2043802, 1, 4, 0, 10000), +(9500321, 2043802, 1, 1, 0, 750), +(8220001, 2041008, 1, 4, 0, 10000), +(9300208, 2041008, 1, 4, 0, 10000), +(9500321, 2041008, 1, 1, 0, 750), +(8220001, 2049101, 1, 4, 0, 2500), +(9300208, 2049101, 1, 4, 0, 2500), +(9500321, 2049101, 1, 1, 0, 400), +(8220001, 2060001, 10, 50, 0, 10000), +(9300208, 2060001, 10, 50, 0, 10000), +(9500321, 2060001, 10, 50, 0, 10000), +(8220001, 2061001, 10, 50, 0, 10000), +(9300208, 2061001, 10, 50, 0, 10000), +(9500321, 2061001, 10, 50, 0, 10000), +(8220001, 2388016, 1, 4, 0, 20000), +(9300208, 2388016, 1, 4, 0, 20000), +(9500321, 2388016, 1, 1, 0, 20000), +(8220001, 4020004, 1, 1, 0, 7000), +(9300208, 4020004, 1, 1, 0, 7000), +(9500321, 4020004, 1, 1, 0, 7000), +(8220001, 4010004, 1, 1, 0, 7000), +(9300208, 4010004, 1, 1, 0, 7000), +(9500321, 4010004, 1, 1, 0, 7000), +(8220001, 1032017, 1, 1, 0, 40000), +(9300208, 1032017, 1, 1, 0, 40000), +(9500321, 1032017, 1, 1, 0, 700), +(8220001, 1422013, 1, 1, 0, 40000), +(9300208, 1422013, 1, 1, 0, 40000), +(9500321, 1422013, 1, 1, 0, 700), +(8220001, 1432011, 1, 1, 0, 40000), +(9300208, 1432011, 1, 1, 0, 40000), +(9500321, 1432011, 1, 1, 0, 700), +(8220001, 1442020, 1, 1, 0, 40000), +(9300208, 1442020, 1, 1, 0, 40000), +(9500321, 1442020, 1, 1, 0, 700), +(8220001, 1492011, 1, 1, 0, 40000), +(9300208, 1492011, 1, 1, 0, 40000), +(9500321, 1492011, 1, 1, 0, 700), +(8200001, 4000444, 1, 1, 0, 200000), +(8200001, 4000446, 1, 1, 0, 200000), +(8200001, 4130014, 1, 1, 0, 3000), +(8200001, 4130001, 1, 1, 0, 3000), +(8200001, 2000006, 1, 1, 0, 40000), +(8200001, 2022003, 1, 1, 0, 3000), +(8200001, 2040030, 1, 1, 0, 750), +(8200001, 2040322, 1, 1, 0, 750), +(8200001, 2043301, 1, 1, 0, 750), +(8200001, 2290050, 1, 1, 0, 1000), +(8200001, 2386021, 1, 1, 0, 20000), +(8200001, 4004003, 1, 1, 0, 3000), +(8200001, 4010001, 1, 1, 0, 7000), +(8200001, 4020001, 1, 1, 0, 7000), +(8200001, 4020009, 1, 1, 0, 7000), +(8200001, 1002532, 1, 1, 0, 700), +(8200001, 1312015, 1, 1, 0, 700), +(8200001, 1050095, 1, 1, 0, 700), +(8200001, 1382035, 1, 1, 0, 700), +(8200001, 1072205, 1, 1, 0, 700), +(8200001, 1082144, 1, 1, 0, 700), +(8200001, 1052128, 1, 1, 0, 700), +(8140511, 4000557, 1, 1, 0, 200000), +(8140511, 2000006, 1, 1, 0, 40000), +(8140511, 2022003, 1, 1, 0, 3000), +(8140511, 2043301, 1, 1, 0, 750), +(8140511, 2040322, 1, 1, 0, 750), +(8140511, 2040030, 1, 1, 0, 750), +(8140511, 2290050, 1, 1, 0, 1000), +(8140511, 2049000, 1, 1, 0, 400), +(8140511, 2049001, 1, 1, 0, 400), +(8140511, 4010001, 1, 1, 0, 7000), +(8140511, 4020001, 1, 1, 0, 7000), +(8140511, 4004003, 1, 1, 0, 3000), +(8140511, 1002532, 1, 1, 0, 700), +(8140511, 1402005, 1, 1, 0, 700), +(8140511, 1312015, 1, 1, 0, 700), +(8140511, 1050095, 1, 1, 0, 700), +(8140511, 1382035, 1, 1, 0, 700), +(8140511, 1072205, 1, 1, 0, 700), +(8140511, 1082144, 1, 1, 0, 700), +(8140511, 1052128, 1, 1, 0, 700), +(8140600, 4000182, 1, 1, 0, 200000), +(8140600, 2000005, 1, 1, 0, 40000), +(8140600, 2000006, 1, 1, 0, 40000), +(8140600, 2040513, 1, 1, 0, 750), +(8140600, 2040501, 1, 1, 0, 750), +(8140600, 2049101, 1, 1, 0, 400), +(8140600, 4006001, 1, 1, 0, 7000), +(8140600, 2386000, 1, 1, 0, 20000), +(8140600, 2290132, 1, 1, 0, 1000), +(8140600, 4020007, 1, 1, 0, 7000), +(8140600, 4020001, 1, 1, 0, 7000), +(8140600, 1032017, 1, 1, 0, 700), +(8140600, 1102030, 1, 1, 0, 700), +(8140600, 1442026, 1, 1, 0, 700), +(8140600, 1040111, 1, 1, 0, 700), +(8140600, 1060100, 1, 1, 0, 700), +(8140600, 1082117, 1, 1, 0, 700), +(8140600, 1072160, 1, 1, 0, 700), +(8140600, 1072205, 1, 1, 0, 700), +(8140600, 1082108, 1, 1, 0, 700), +(8140600, 1462008, 1, 1, 0, 700), +(8140600, 1452013, 1, 1, 0, 700), +(8140600, 1040109, 1, 1, 0, 700), +(8140600, 1060098, 1, 1, 0, 700), +(8140600, 1472028, 1, 1, 0, 700), +(8140600, 1472023, 1, 1, 0, 700), +(8140600, 1002324, 1, 1, 0, 700), +(8140600, 1072194, 1, 1, 0, 700), +(8140600, 1052128, 1, 1, 0, 700), +(8141000, 4000134, 1, 1, 0, 200000), +(8141000, 2000006, 1, 1, 0, 40000), +(8141000, 2000002, 1, 1, 0, 40000), +(8141000, 2070006, 1, 1, 0, 400), +(8141000, 2044602, 1, 1, 0, 750), +(8141000, 2040318, 1, 1, 0, 750), +(8141000, 2040929, 1, 1, 0, 750), +(8141000, 2290082, 1, 1, 0, 1000), +(8141000, 2290097, 1, 1, 0, 1000), +(8141000, 2049000, 1, 1, 0, 400), +(8141000, 4010001, 1, 1, 0, 7000), +(8141000, 4020008, 1, 1, 0, 7000), +(8141000, 4004000, 1, 1, 0, 3000), +(8141000, 1040112, 1, 1, 0, 700), +(8141000, 1060101, 1, 1, 0, 700), +(8141000, 1422010, 1, 1, 0, 700), +(8141000, 1051079, 1, 1, 0, 700), +(8141000, 1082115, 1, 1, 0, 700), +(8141000, 1050072, 1, 1, 0, 700), +(8141000, 1050074, 1, 1, 0, 700), +(8141000, 1082132, 1, 1, 0, 700), +(8141000, 1002254, 1, 1, 0, 700), +(8141000, 1002278, 1, 1, 0, 700), +(8141000, 1050076, 1, 1, 0, 700), +(8141000, 1051068, 1, 1, 0, 700), +(8141000, 1051063, 1, 1, 0, 700), +(8141000, 1041106, 1, 1, 0, 700), +(8141000, 1061105, 1, 1, 0, 700), +(8141000, 1002327, 1, 1, 0, 700), +(8141000, 1002285, 1, 1, 0, 700), +(8141000, 1040117, 1, 1, 0, 700), +(8141000, 1060106, 1, 1, 0, 700), +(8141000, 1072315, 1, 1, 0, 700), +(8140701, 4000263, 1, 1, 0, 200000), +(8140701, 2000006, 1, 1, 0, 40000), +(8140701, 2000005, 1, 1, 0, 40000), +(8140701, 2044601, 1, 1, 0, 750), +(8140701, 2386001, 1, 1, 0, 20000), +(8140701, 4004001, 1, 1, 0, 3000), +(8140701, 4020005, 1, 1, 0, 7000), +(8140701, 4010001, 1, 1, 0, 7000), +(8140701, 1302023, 1, 1, 0, 700), +(8140701, 1072197, 1, 1, 0, 700), +(8140701, 1040111, 1, 1, 0, 700), +(8140701, 1060100, 1, 1, 0, 700), +(8140701, 1050094, 1, 1, 0, 700), +(8140701, 1002365, 1, 1, 0, 700), +(8140701, 1332027, 1, 1, 0, 700), +(8140701, 1082144, 1, 1, 0, 700), +(8140701, 1082210, 1, 1, 0, 700), +(8140512, 4000558, 1, 1, 0, 200000), +(8140512, 2000006, 1, 1, 0, 40000), +(8140512, 2000002, 1, 1, 0, 40000), +(8140512, 2044602, 1, 1, 0, 750), +(8140512, 2070006, 1, 1, 0, 400), +(8140512, 2290082, 1, 1, 0, 1000), +(8140512, 2044804, 1, 1, 0, 750), +(8140512, 2290097, 1, 1, 0, 1000), +(8140512, 2040318, 1, 1, 0, 750), +(8140512, 2040929, 1, 1, 0, 750), +(8140512, 2049000, 1, 1, 0, 400), +(8140512, 2049001, 1, 1, 0, 400), +(8140512, 4010001, 1, 1, 0, 7000), +(8140512, 4020008, 1, 1, 0, 7000), +(8140512, 4004000, 1, 1, 0, 3000), +(8140512, 1422010, 1, 1, 0, 700), +(8140512, 1082115, 1, 1, 0, 700), +(8140512, 1051079, 1, 1, 0, 700), +(8140512, 1040112, 1, 1, 0, 700), +(8140512, 1060101, 1, 1, 0, 700), +(8140512, 1002254, 1, 1, 0, 700), +(8140512, 1050074, 1, 1, 0, 700), +(8140512, 1050072, 1, 1, 0, 700), +(8140512, 1082132, 1, 1, 0, 700), +(8140512, 1051063, 1, 1, 0, 700), +(8140512, 1002278, 1, 1, 0, 700), +(8140512, 1050076, 1, 1, 0, 700), +(8140512, 1051068, 1, 1, 0, 700), +(8140512, 1002285, 1, 1, 0, 700), +(8140512, 1002327, 1, 1, 0, 700), +(8140512, 1041106, 1, 1, 0, 700), +(8140512, 1061105, 1, 1, 0, 700), +(8140512, 1040117, 1, 1, 0, 700), +(8140512, 1060106, 1, 1, 0, 700), +(8140512, 1072315, 1, 1, 0, 700), +(8141300, 4000183, 1, 1, 0, 200000), +(8141300, 2000002, 1, 1, 0, 40000), +(8141300, 2000006, 1, 1, 0, 40000), +(8141300, 2000005, 1, 1, 0, 40000), +(8141300, 2002001, 1, 1, 0, 10000), +(8141300, 2020013, 1, 1, 0, 3000), +(8141300, 2040701, 1, 1, 0, 750), +(8141300, 2386003, 1, 1, 0, 20000), +(8141300, 4004004, 1, 1, 0, 3000), +(8141300, 4010006, 1, 1, 0, 7000), +(8141300, 4020006, 1, 1, 0, 7000), +(8141300, 1032020, 1, 1, 0, 700), +(8141300, 1102026, 1, 1, 0, 700), +(8141300, 1442026, 1, 1, 0, 700), +(8141300, 1041119, 1, 1, 0, 700), +(8141300, 1061118, 1, 1, 0, 700), +(8141300, 1432007, 1, 1, 0, 700), +(8141300, 1092027, 1, 1, 0, 700), +(8141300, 1442008, 1, 1, 0, 700), +(8141300, 1002365, 1, 1, 0, 700), +(8141300, 1002271, 1, 1, 0, 700), +(8141300, 1050093, 1, 1, 0, 700), +(8141300, 1072207, 1, 1, 0, 700), +(8141300, 1072224, 1, 1, 0, 700), +(8141300, 1050089, 1, 1, 0, 700), +(8141300, 1051083, 1, 1, 0, 700), +(8141300, 1452011, 1, 1, 0, 700), +(8141300, 1072183, 1, 1, 0, 700), +(8141300, 1482011, 1, 1, 0, 700), +(8200002, 4000445, 1, 1, 0, 200000), +(8200002, 4000446, 1, 1, 0, 200000), +(8200002, 4130015, 1, 1, 0, 3000), +(8200002, 4130002, 1, 1, 0, 3000), +(8200002, 2000006, 1, 1, 0, 40000), +(8200002, 2022003, 1, 1, 0, 3000), +(8200002, 2040707, 1, 1, 0, 750), +(8200002, 2044213, 1, 1, 0, 750), +(8200002, 2044401, 1, 1, 0, 750), +(8200002, 2290066, 1, 1, 0, 1000), +(8200002, 2330004, 1, 1, 0, 400), +(8200002, 2386022, 1, 1, 0, 20000), +(8200002, 2290131, 1, 1, 0, 1000), +(8200002, 4004000, 1, 1, 0, 3000), +(8200002, 4010002, 1, 1, 0, 7000), +(8200002, 4020002, 1, 1, 0, 7000), +(8200002, 4020009, 1, 1, 0, 7000), +(8200002, 1040113, 1, 1, 0, 700), +(8200002, 1060102, 1, 1, 0, 700), +(8200002, 1092027, 1, 1, 0, 700), +(8200002, 1442044, 1, 1, 0, 700), +(8200002, 1002366, 1, 1, 0, 700), +(8200002, 1051085, 1, 1, 0, 700), +(8200002, 1452017, 1, 1, 0, 700), +(8200002, 1072195, 1, 1, 0, 700), +(8200002, 1082210, 1, 1, 0, 700), +(9420540, 4000478, 1, 1, 0, 200000), +(9420540, 2290119, 1, 1, 0, 1000), +(9420540, 2002006, 1, 1, 0, 10000), +(9420540, 2022003, 1, 1, 0, 3000), +(9420540, 2000005, 1, 1, 0, 40000), +(9420540, 2000011, 1, 1, 0, 40000), +(9420540, 2070012, 1, 1, 0, 400), +(9420540, 2041014, 1, 1, 0, 750), +(9420540, 2040613, 1, 1, 0, 750), +(9420540, 4006001, 1, 1, 0, 7000), +(9420540, 2040804, 1, 1, 0, 750), +(9420540, 2330005, 1, 1, 0, 400), +(9420540, 4004000, 1, 1, 0, 3000), +(9420540, 4010006, 1, 1, 0, 7000), +(9420540, 4020000, 1, 1, 0, 7000), +(9420540, 4010003, 1, 1, 0, 7000), +(9420540, 1072198, 1, 1, 0, 700), +(9420540, 1050095, 1, 1, 0, 700), +(9420540, 1050095, 1, 1, 0, 700), +(9420540, 1072209, 1, 1, 0, 700), +(9420540, 1082134, 1, 1, 0, 700), +(9420540, 1002366, 1, 1, 0, 700), +(9420540, 1452017, 1, 1, 0, 700), +(9420540, 1002405, 1, 1, 0, 700), +(9420540, 1002403, 1, 1, 0, 700), +(9420540, 1002329, 1, 1, 0, 700), +(9420540, 1472031, 1, 1, 0, 700), +(8142000, 4000149, 1, 1, 0, 200000), +(8142000, 2000002, 1, 1, 0, 40000), +(8142000, 2000005, 1, 1, 0, 40000), +(8142000, 2002001, 1, 1, 0, 10000), +(8142000, 2020015, 1, 1, 0, 3000), +(8142000, 4006000, 1, 1, 0, 7000), +(8142000, 2044001, 1, 1, 0, 750), +(8142000, 2041022, 1, 1, 0, 750), +(8142000, 2386004, 1, 1, 0, 20000), +(8142000, 4020003, 1, 1, 0, 7000), +(8142000, 4004004, 1, 1, 0, 3000), +(8142000, 1082116, 1, 1, 0, 700), +(8142000, 1051078, 1, 1, 0, 700), +(8142000, 1002339, 1, 1, 0, 700), +(8142000, 1432007, 1, 1, 0, 700), +(8142000, 1442010, 1, 1, 0, 700), +(8142000, 1040111, 1, 1, 0, 700), +(8142000, 1060100, 1, 1, 0, 700), +(8142000, 1072212, 1, 1, 0, 700), +(8142000, 1051056, 1, 1, 0, 700), +(8142000, 1050094, 1, 1, 0, 700), +(8142000, 1082133, 1, 1, 0, 700), +(8142000, 1050076, 1, 1, 0, 700), +(8142000, 1051067, 1, 1, 0, 700), +(8142000, 1082107, 1, 1, 0, 700), +(8142000, 1452013, 1, 1, 0, 700), +(8142000, 1050091, 1, 1, 0, 700), +(8142000, 1082112, 1, 1, 0, 700), +(8142000, 1040110, 1, 1, 0, 700), +(8142000, 1492011, 1, 1, 0, 700), +(9400120, 2000006, 1, 4, 0, 40000), +(9400122, 2000006, 1, 4, 0, 40000), +(9400120, 2000005, 1, 4, 0, 40000), +(9400122, 2000005, 1, 4, 0, 40000), +(9400120, 2050004, 1, 4, 0, 3000), +(9400122, 2050004, 1, 4, 0, 3000), +(9400120, 2070005, 1, 4, 0, 2500), +(9400122, 2070005, 1, 4, 0, 2500), +(9400120, 2040612, 1, 4, 0, 10000), +(9400122, 2040612, 1, 4, 0, 10000), +(9400120, 2041034, 1, 4, 0, 10000), +(9400122, 2041034, 1, 4, 0, 10000), +(9400120, 2041045, 1, 4, 0, 10000), +(9400122, 2041045, 1, 4, 0, 10000), +(9400120, 2040611, 1, 4, 0, 10000), +(9400122, 2040611, 1, 4, 0, 10000), +(9400120, 4020007, 1, 1, 0, 7000), +(9400122, 4020007, 1, 1, 0, 7000), +(9400120, 4010006, 1, 1, 0, 7000), +(9400122, 4010006, 1, 1, 0, 7000), +(9400120, 1402013, 1, 1, 0, 40000), +(9400122, 1402013, 1, 1, 0, 40000), +(9400120, 1032023, 1, 1, 0, 40000), +(9400122, 1032023, 1, 1, 0, 40000), +(9400120, 1302026, 1, 1, 0, 40000), +(9400122, 1302026, 1, 1, 0, 40000), +(9400120, 1422012, 1, 1, 0, 40000), +(9400122, 1422012, 1, 1, 0, 40000), +(9400120, 1041099, 1, 1, 0, 40000), +(9400122, 1041099, 1, 1, 0, 40000), +(9400120, 1382010, 1, 1, 0, 40000), +(9400122, 1382010, 1, 1, 0, 40000), +(9400120, 1092029, 1, 1, 0, 40000), +(9400122, 1092029, 1, 1, 0, 40000), +(9400120, 1051058, 1, 1, 0, 40000), +(9400122, 1051058, 1, 1, 0, 40000), +(9400120, 1002276, 1, 1, 0, 40000), +(9400122, 1002276, 1, 1, 0, 40000), +(9400120, 1050064, 1, 1, 0, 40000), +(9400122, 1050064, 1, 1, 0, 40000), +(9400120, 1061101, 1, 1, 0, 40000), +(9400122, 1061101, 1, 1, 0, 40000), +(9400120, 1002328, 1, 1, 0, 40000), +(9400122, 1002328, 1, 1, 0, 40000), +(8140702, 4000264, 1, 1, 0, 200000), +(8140702, 2040402, 1, 1, 0, 750), +(8140702, 2386005, 1, 1, 0, 20000), +(8140702, 4020008, 1, 1, 0, 7000), +(8140702, 1082139, 1, 1, 0, 700), +(8140702, 1050092, 1, 1, 0, 700), +(8140702, 1072206, 1, 1, 0, 700), +(8140702, 1452017, 1, 1, 0, 700), +(8140702, 1002325, 1, 1, 0, 700), +(8140702, 1060106, 1, 1, 0, 700), +(8140702, 1492011, 1, 1, 0, 700), +(9400580, 4032010, 1, 1, 0, 10000), +(9400580, 4032011, 1, 1, 0, 10000), +(9400580, 2000005, 1, 1, 0, 40000), +(9400580, 2000006, 1, 1, 0, 40000), +(9400580, 2290004, 1, 1, 0, 1000), +(9400580, 2290024, 1, 1, 0, 1000), +(9400580, 4004004, 1, 1, 0, 3000), +(8142100, 4000184, 1, 1, 0, 200000), +(8142100, 4130000, 1, 1, 0, 3000), +(8142100, 4130001, 1, 1, 0, 3000), +(8142100, 2000006, 1, 1, 0, 40000), +(8142100, 2000005, 1, 1, 0, 40000), +(8142100, 2040804, 1, 1, 0, 750), +(8142100, 2040801, 1, 1, 0, 750), +(8142100, 4006001, 1, 1, 0, 7000), +(8142100, 4006000, 1, 1, 0, 7000), +(8142100, 2290082, 1, 1, 0, 1000), +(8142100, 2386007, 1, 1, 0, 20000), +(8142100, 4010004, 1, 1, 0, 7000), +(8142100, 4020004, 1, 1, 0, 7000), +(8142100, 4004001, 1, 1, 0, 3000), +(8142100, 1032017, 1, 1, 0, 700), +(8142100, 1412009, 1, 1, 0, 700), +(8142100, 1072197, 1, 1, 0, 700), +(8142100, 1092026, 1, 1, 0, 700), +(8142100, 1092028, 1, 1, 0, 700), +(8142100, 1422010, 1, 1, 0, 700), +(8142100, 1092025, 1, 1, 0, 700), +(8142100, 1072220, 1, 1, 0, 700), +(8142100, 1050095, 1, 1, 0, 700), +(8142100, 1050095, 1, 1, 0, 700), +(8142100, 1050090, 1, 1, 0, 700), +(8142100, 1051084, 1, 1, 0, 700), +(8142100, 1040110, 1, 1, 0, 700), +(8142100, 1002325, 1, 1, 0, 700), +(8142100, 1040118, 1, 1, 0, 700), +(8142100, 1060107, 1, 1, 0, 700), +(8140703, 4000265, 1, 1, 0, 200000), +(8140703, 4000244, 1, 1, 0, 200000), +(8140703, 4000245, 1, 1, 0, 200000), +(8140703, 2000006, 1, 1, 0, 40000), +(8140703, 2000005, 1, 1, 0, 40000), +(8140703, 2040901, 1, 1, 0, 750), +(8140703, 2043801, 1, 1, 0, 750), +(8140703, 2040602, 1, 1, 0, 750), +(8140703, 2044803, 1, 1, 0, 750), +(8140703, 2290088, 1, 1, 0, 1000), +(8140703, 2386006, 1, 1, 0, 20000), +(8140703, 4020008, 1, 1, 0, 7000), +(8140703, 1442020, 1, 1, 0, 700), +(8140703, 1072212, 1, 1, 0, 700), +(8140703, 1040120, 1, 1, 0, 700), +(8140703, 1060109, 1, 1, 0, 700), +(8140703, 1322029, 1, 1, 0, 700), +(8140703, 1040122, 1, 1, 0, 700), +(8140703, 1060111, 1, 1, 0, 700), +(8140703, 1082151, 1, 1, 0, 700), +(8140703, 1051082, 1, 1, 0, 700), +(8140703, 1082159, 1, 1, 0, 700), +(8140703, 1002325, 1, 1, 0, 700), +(8140703, 1002643, 1, 1, 0, 700), +(8150300, 4000268, 1, 1, 0, 200000), +(8810019, 4000268, 1, 1, 0, 200000), +(8150300, 4000244, 1, 1, 0, 200000), +(8810019, 4000244, 1, 1, 0, 200000), +(8150300, 4000245, 1, 1, 0, 200000), +(8810019, 4000245, 1, 1, 0, 200000), +(8150300, 4130004, 1, 1, 0, 3000), +(8810019, 4130004, 1, 1, 0, 3000), +(8150300, 2000006, 1, 1, 0, 40000), +(8810019, 2000006, 1, 4, 0, 40000), +(8150300, 2000005, 1, 1, 0, 40000), +(8810019, 2000005, 1, 4, 0, 40000), +(8150300, 4006001, 1, 1, 0, 7000), +(8810019, 4006001, 1, 1, 0, 7000), +(8150300, 2040701, 1, 1, 0, 750), +(8810019, 2040701, 1, 4, 0, 10000), +(8150300, 2043002, 1, 1, 0, 750), +(8810019, 2043002, 1, 4, 0, 10000), +(8150300, 2040516, 1, 1, 0, 750), +(8810019, 2040516, 1, 4, 0, 10000), +(8150300, 2044902, 1, 1, 0, 750), +(8810019, 2044902, 1, 4, 0, 10000), +(8150300, 2290127, 1, 1, 0, 1000), +(8810019, 2290127, 1, 4, 0, 40000), +(8150300, 2386008, 1, 1, 0, 20000), +(8810019, 2386008, 1, 4, 0, 20000), +(8150300, 4004002, 1, 1, 0, 3000), +(8810019, 4004002, 1, 1, 0, 3000), +(8150300, 4010001, 1, 1, 0, 7000), +(8810019, 4010001, 1, 1, 0, 7000), +(8150300, 4020000, 1, 1, 0, 7000), +(8810019, 4020000, 1, 1, 0, 7000), +(8150300, 1082129, 1, 1, 0, 700), +(8810019, 1082129, 1, 1, 0, 40000), +(8150300, 1072223, 1, 1, 0, 700), +(8810019, 1072223, 1, 1, 0, 40000), +(8150300, 1002365, 1, 1, 0, 700), +(8810019, 1002365, 1, 1, 0, 40000), +(8150300, 1050090, 1, 1, 0, 700), +(8810019, 1050090, 1, 1, 0, 40000), +(8150300, 1050089, 1, 1, 0, 700), +(8810019, 1050089, 1, 1, 0, 40000), +(8150300, 1452017, 1, 1, 0, 700), +(8810019, 1452017, 1, 1, 0, 40000), +(8150300, 1040118, 1, 1, 0, 700), +(8810019, 1040118, 1, 1, 0, 40000), +(8150300, 1040117, 1, 1, 0, 700), +(8810019, 1040117, 1, 1, 0, 40000), +(8150300, 1060106, 1, 1, 0, 700), +(8810019, 1060106, 1, 1, 0, 40000), +(8150300, 1052128, 1, 1, 0, 700), +(8810019, 1052128, 1, 1, 0, 40000), +(8200003, 4000447, 1, 1, 0, 200000), +(8200003, 4000459, 1, 1, 0, 200000), +(8200003, 4130016, 1, 1, 0, 3000), +(8200003, 4130003, 1, 1, 0, 3000), +(8200003, 2000006, 1, 1, 0, 40000), +(8200003, 2022003, 1, 1, 0, 3000), +(8200003, 2040928, 1, 1, 0, 750), +(8200003, 2044413, 1, 1, 0, 750), +(8200003, 2044702, 1, 1, 0, 750), +(8200003, 2290056, 1, 1, 0, 1000), +(8200003, 2330004, 1, 1, 0, 400), +(8200003, 2386023, 1, 1, 0, 20000), +(8200003, 2290136, 1, 1, 0, 1000), +(8200003, 4004001, 1, 1, 0, 3000), +(8200003, 4010006, 1, 1, 0, 7000), +(8200003, 4020006, 1, 1, 0, 7000), +(8200003, 4020009, 1, 1, 0, 7000), +(8200003, 1082130, 1, 1, 0, 700), +(8200003, 1412010, 1, 1, 0, 700), +(8200003, 1050095, 1, 1, 0, 700), +(8200003, 1002405, 1, 1, 0, 700), +(8200003, 1040118, 1, 1, 0, 700), +(8200003, 1060107, 1, 1, 0, 700), +(8200003, 1332027, 1, 1, 0, 700), +(8200003, 1072315, 1, 1, 0, 700), +(8200003, 1482012, 1, 1, 0, 700), +(8141100, 4000135, 1, 1, 0, 200000), +(8141100, 4130011, 1, 1, 0, 3000), +(8141100, 4131003, 1, 1, 0, 3000), +(8141100, 2000005, 1, 1, 0, 40000), +(8141100, 2000006, 1, 1, 0, 40000), +(8141100, 4006001, 1, 1, 0, 7000), +(8141100, 2043002, 1, 1, 0, 750), +(8141100, 4020008, 1, 1, 0, 7000), +(8141100, 4004004, 1, 1, 0, 3000), +(8141100, 1051080, 1, 1, 0, 700), +(8141100, 1082105, 1, 1, 0, 700), +(8141100, 1051058, 1, 1, 0, 700), +(8141100, 1082134, 1, 1, 0, 700), +(8141100, 1050093, 1, 1, 0, 700), +(8141100, 1051083, 1, 1, 0, 700), +(8141100, 1072185, 1, 1, 0, 700), +(8141100, 1050077, 1, 1, 0, 700), +(8141100, 1462012, 1, 1, 0, 700), +(8141100, 1002329, 1, 1, 0, 700), +(8141100, 1082119, 1, 1, 0, 700), +(8141100, 1060105, 1, 1, 0, 700), +(8143000, 4000150, 1, 1, 0, 200000), +(8143000, 2000002, 1, 1, 0, 40000), +(8143000, 2000005, 1, 1, 0, 40000), +(8143000, 2022003, 1, 1, 0, 3000), +(8143000, 2002002, 1, 1, 0, 10000), +(8143000, 4006001, 1, 1, 0, 7000), +(8143000, 2040401, 1, 1, 0, 750), +(8143000, 2044702, 1, 1, 0, 750), +(8143000, 4010001, 1, 1, 0, 7000), +(8143000, 4010002, 1, 1, 0, 7000), +(8143000, 1082130, 1, 1, 0, 700), +(8143000, 1422012, 1, 1, 0, 700), +(8143000, 1082117, 1, 1, 0, 700), +(8143000, 1092016, 1, 1, 0, 700), +(8143000, 1041119, 1, 1, 0, 700), +(8143000, 1061118, 1, 1, 0, 700), +(8143000, 1072212, 1, 1, 0, 700), +(8143000, 1072179, 1, 1, 0, 700), +(8143000, 1082122, 1, 1, 0, 700), +(8143000, 1050092, 1, 1, 0, 700), +(8143000, 1050064, 1, 1, 0, 700), +(8143000, 1462010, 1, 1, 0, 700), +(8143000, 1072183, 1, 1, 0, 700), +(8143000, 1050090, 1, 1, 0, 700), +(8143000, 1051084, 1, 1, 0, 700), +(8143000, 1002402, 1, 1, 0, 700), +(8143000, 1082120, 1, 1, 0, 700), +(8143000, 1002283, 1, 1, 0, 700), +(8143000, 1002328, 1, 1, 0, 700), +(8143000, 1040116, 1, 1, 0, 700), +(8143000, 1060105, 1, 1, 0, 700), +(8150000, 4030012, 1, 1, 0, 10000), +(9300210, 4030012, 1, 1, 0, 10000), +(9500140, 4030012, 1, 1, 0, 10000), +(9500171, 4030012, 1, 1, 0, 10000), +(9500328, 4030012, 1, 1, 0, 10000), +(9500358, 4030012, 1, 1, 0, 10000), +(6400006, 4030012, 1, 1, 0, 10000), +(6400009, 4030012, 1, 1, 0, 10000), +(9303013, 4030012, 1, 1, 0, 10000), +(8150000, 4031906, 1, 1, 0, 7000), +(9300210, 4031906, 1, 1, 0, 7000), +(9500140, 4031906, 1, 1, 0, 7000), +(9500171, 4031906, 1, 1, 0, 7000), +(9500328, 4031906, 1, 1, 0, 7000), +(9500358, 4031906, 1, 1, 0, 7000), +(6400006, 4031906, 1, 1, 0, 7000), +(6400009, 4031906, 1, 1, 0, 7000), +(9303013, 4031906, 1, 1, 0, 7000), +(8150000, 2043002, 1, 4, 0, 10000), +(9300210, 2043002, 1, 4, 0, 10000), +(9500140, 2043002, 1, 4, 0, 10000), +(9500171, 2043002, 1, 4, 0, 10000), +(9500328, 2043002, 1, 4, 0, 10000), +(9500358, 2043002, 1, 4, 0, 10000), +(6400006, 2043002, 1, 4, 0, 10000), +(6400009, 2043002, 1, 4, 0, 10000), +(9303013, 2043002, 1, 1, 0, 750), +(8150000, 2043102, 1, 4, 0, 10000), +(9300210, 2043102, 1, 4, 0, 10000), +(9500140, 2043102, 1, 4, 0, 10000), +(9500171, 2043102, 1, 4, 0, 10000), +(9500328, 2043102, 1, 4, 0, 10000), +(9500358, 2043102, 1, 4, 0, 10000), +(6400006, 2043102, 1, 4, 0, 10000), +(6400009, 2043102, 1, 4, 0, 10000), +(9303013, 2043102, 1, 1, 0, 750), +(8150000, 2043202, 1, 4, 0, 10000), +(9300210, 2043202, 1, 4, 0, 10000), +(9500140, 2043202, 1, 4, 0, 10000), +(9500171, 2043202, 1, 4, 0, 10000), +(9500328, 2043202, 1, 4, 0, 10000), +(9500358, 2043202, 1, 4, 0, 10000), +(6400006, 2043202, 1, 4, 0, 10000), +(6400009, 2043202, 1, 4, 0, 10000), +(9303013, 2043202, 1, 1, 0, 750), +(8150000, 2043302, 1, 4, 0, 10000), +(9300210, 2043302, 1, 4, 0, 10000), +(9500140, 2043302, 1, 4, 0, 10000), +(9500171, 2043302, 1, 4, 0, 10000), +(9500328, 2043302, 1, 4, 0, 10000), +(9500358, 2043302, 1, 4, 0, 10000), +(6400006, 2043302, 1, 4, 0, 10000), +(6400009, 2043302, 1, 4, 0, 10000), +(9303013, 2043302, 1, 1, 0, 750), +(8150000, 2044002, 1, 4, 0, 10000), +(9300210, 2044002, 1, 4, 0, 10000), +(9500140, 2044002, 1, 4, 0, 10000), +(9500171, 2044002, 1, 4, 0, 10000), +(9500328, 2044002, 1, 4, 0, 10000), +(9500358, 2044002, 1, 4, 0, 10000), +(6400006, 2044002, 1, 4, 0, 10000), +(6400009, 2044002, 1, 4, 0, 10000), +(9303013, 2044002, 1, 1, 0, 750), +(8150000, 2044102, 1, 4, 0, 10000), +(9300210, 2044102, 1, 4, 0, 10000), +(9500140, 2044102, 1, 4, 0, 10000), +(9500171, 2044102, 1, 4, 0, 10000), +(9500328, 2044102, 1, 4, 0, 10000), +(9500358, 2044102, 1, 4, 0, 10000), +(6400006, 2044102, 1, 4, 0, 10000), +(6400009, 2044102, 1, 4, 0, 10000), +(9303013, 2044102, 1, 1, 0, 750), +(8150000, 2044202, 1, 4, 0, 10000), +(9300210, 2044202, 1, 4, 0, 10000), +(9500140, 2044202, 1, 4, 0, 10000), +(9500171, 2044202, 1, 4, 0, 10000), +(9500328, 2044202, 1, 4, 0, 10000), +(9500358, 2044202, 1, 4, 0, 10000), +(6400006, 2044202, 1, 4, 0, 10000), +(6400009, 2044202, 1, 4, 0, 10000), +(9303013, 2044202, 1, 1, 0, 750), +(8150000, 2044302, 1, 4, 0, 10000), +(9300210, 2044302, 1, 4, 0, 10000), +(9500140, 2044302, 1, 4, 0, 10000), +(9500171, 2044302, 1, 4, 0, 10000), +(9500328, 2044302, 1, 4, 0, 10000), +(9500358, 2044302, 1, 4, 0, 10000), +(6400006, 2044302, 1, 4, 0, 10000), +(6400009, 2044302, 1, 4, 0, 10000), +(9303013, 2044302, 1, 1, 0, 750), +(8150000, 2044402, 1, 4, 0, 10000), +(9300210, 2044402, 1, 4, 0, 10000), +(9500140, 2044402, 1, 4, 0, 10000), +(9500171, 2044402, 1, 4, 0, 10000), +(9500328, 2044402, 1, 4, 0, 10000), +(9500358, 2044402, 1, 4, 0, 10000), +(6400006, 2044402, 1, 4, 0, 10000), +(6400009, 2044402, 1, 4, 0, 10000), +(9303013, 2044402, 1, 1, 0, 750), +(8150000, 2044502, 1, 4, 0, 10000), +(9300210, 2044502, 1, 4, 0, 10000), +(9500140, 2044502, 1, 4, 0, 10000), +(9500171, 2044502, 1, 4, 0, 10000), +(9500328, 2044502, 1, 4, 0, 10000), +(9500358, 2044502, 1, 4, 0, 10000), +(6400006, 2044502, 1, 4, 0, 10000), +(6400009, 2044502, 1, 4, 0, 10000), +(9303013, 2044502, 1, 1, 0, 750), +(8150000, 2044702, 1, 4, 0, 10000), +(9300210, 2044702, 1, 4, 0, 10000), +(9500140, 2044702, 1, 4, 0, 10000), +(9500171, 2044702, 1, 4, 0, 10000), +(9500328, 2044702, 1, 4, 0, 10000), +(9500358, 2044702, 1, 4, 0, 10000), +(6400006, 2044702, 1, 4, 0, 10000), +(6400009, 2044702, 1, 4, 0, 10000), +(9303013, 2044702, 1, 1, 0, 750), +(8150000, 2043702, 1, 4, 0, 10000), +(9300210, 2043702, 1, 4, 0, 10000), +(9500140, 2043702, 1, 4, 0, 10000), +(9500171, 2043702, 1, 4, 0, 10000), +(9500328, 2043702, 1, 4, 0, 10000), +(9500358, 2043702, 1, 4, 0, 10000), +(6400006, 2043702, 1, 4, 0, 10000), +(6400009, 2043702, 1, 4, 0, 10000), +(9303013, 2043702, 1, 1, 0, 750), +(8150000, 2043802, 1, 4, 0, 10000), +(9300210, 2043802, 1, 4, 0, 10000), +(9500140, 2043802, 1, 4, 0, 10000), +(9500171, 2043802, 1, 4, 0, 10000), +(9500328, 2043802, 1, 4, 0, 10000), +(9500358, 2043802, 1, 4, 0, 10000), +(6400006, 2043802, 1, 4, 0, 10000), +(6400009, 2043802, 1, 4, 0, 10000), +(9303013, 2043802, 1, 1, 0, 750), +(8150000, 2040805, 1, 4, 0, 10000), +(9300210, 2040805, 1, 4, 0, 10000), +(9500140, 2040805, 1, 4, 0, 10000), +(9500171, 2040805, 1, 4, 0, 10000), +(9500328, 2040805, 1, 4, 0, 10000), +(9500358, 2040805, 1, 4, 0, 10000), +(6400006, 2040805, 1, 4, 0, 10000), +(6400009, 2040805, 1, 4, 0, 10000), +(9303013, 2040805, 1, 1, 0, 750), +(8150000, 2040002, 1, 4, 0, 10000), +(9300210, 2040002, 1, 4, 0, 10000), +(9500140, 2040002, 1, 4, 0, 10000), +(9500171, 2040002, 1, 4, 0, 10000), +(9500328, 2040002, 1, 4, 0, 10000), +(9500358, 2040002, 1, 4, 0, 10000), +(6400006, 2040002, 1, 4, 0, 10000), +(6400009, 2040002, 1, 4, 0, 10000), +(9303013, 2040002, 1, 1, 0, 750), +(8150000, 2040402, 1, 4, 0, 10000), +(9300210, 2040402, 1, 4, 0, 10000), +(9500140, 2040402, 1, 4, 0, 10000), +(9500171, 2040402, 1, 4, 0, 10000), +(9500328, 2040402, 1, 4, 0, 10000), +(9500358, 2040402, 1, 4, 0, 10000), +(6400006, 2040402, 1, 4, 0, 10000), +(6400009, 2040402, 1, 4, 0, 10000), +(9303013, 2040402, 1, 1, 0, 750), +(8150000, 2040602, 1, 4, 0, 10000), +(9300210, 2040602, 1, 4, 0, 10000), +(9500140, 2040602, 1, 4, 0, 10000), +(9500171, 2040602, 1, 4, 0, 10000), +(9500328, 2040602, 1, 4, 0, 10000), +(9500358, 2040602, 1, 4, 0, 10000), +(6400006, 2040602, 1, 4, 0, 10000), +(6400009, 2040602, 1, 4, 0, 10000), +(9303013, 2040602, 1, 1, 0, 750), +(8150000, 2040505, 1, 4, 0, 10000), +(9300210, 2040505, 1, 4, 0, 10000), +(9500140, 2040505, 1, 4, 0, 10000), +(9500171, 2040505, 1, 4, 0, 10000), +(9500328, 2040505, 1, 4, 0, 10000), +(9500358, 2040505, 1, 4, 0, 10000), +(6400006, 2040505, 1, 4, 0, 10000), +(6400009, 2040505, 1, 4, 0, 10000), +(9303013, 2040505, 1, 1, 0, 750), +(8150000, 2040502, 1, 4, 0, 10000), +(9300210, 2040502, 1, 4, 0, 10000), +(9500140, 2040502, 1, 4, 0, 10000), +(9500171, 2040502, 1, 4, 0, 10000), +(9500328, 2040502, 1, 4, 0, 10000), +(9500358, 2040502, 1, 4, 0, 10000), +(6400006, 2040502, 1, 4, 0, 10000), +(6400009, 2040502, 1, 4, 0, 10000), +(9303013, 2040502, 1, 1, 0, 750), +(8150000, 2040902, 1, 4, 0, 10000), +(9300210, 2040902, 1, 4, 0, 10000), +(9500140, 2040902, 1, 4, 0, 10000), +(9500171, 2040902, 1, 4, 0, 10000), +(9500328, 2040902, 1, 4, 0, 10000), +(9500358, 2040902, 1, 4, 0, 10000), +(6400006, 2040902, 1, 4, 0, 10000), +(6400009, 2040902, 1, 4, 0, 10000), +(9303013, 2040902, 1, 1, 0, 750), +(8150000, 2040702, 1, 4, 0, 10000), +(9300210, 2040702, 1, 4, 0, 10000), +(9500140, 2040702, 1, 4, 0, 10000), +(9500171, 2040702, 1, 4, 0, 10000), +(9500328, 2040702, 1, 4, 0, 10000), +(9500358, 2040702, 1, 4, 0, 10000), +(6400006, 2040702, 1, 4, 0, 10000), +(6400009, 2040702, 1, 4, 0, 10000), +(9303013, 2040702, 1, 1, 0, 750), +(8150000, 2040708, 1, 4, 0, 10000), +(9300210, 2040708, 1, 4, 0, 10000), +(9500140, 2040708, 1, 4, 0, 10000), +(9500171, 2040708, 1, 4, 0, 10000), +(9500328, 2040708, 1, 4, 0, 10000), +(9500358, 2040708, 1, 4, 0, 10000), +(6400006, 2040708, 1, 4, 0, 10000), +(6400009, 2040708, 1, 4, 0, 10000), +(9303013, 2040708, 1, 1, 0, 750), +(8150000, 2040705, 1, 4, 0, 10000), +(9300210, 2040705, 1, 4, 0, 10000), +(9500140, 2040705, 1, 4, 0, 10000), +(9500171, 2040705, 1, 4, 0, 10000), +(9500328, 2040705, 1, 4, 0, 10000), +(9500358, 2040705, 1, 4, 0, 10000), +(6400006, 2040705, 1, 4, 0, 10000), +(6400009, 2040705, 1, 4, 0, 10000), +(9303013, 2040705, 1, 1, 0, 750), +(8150000, 2040302, 1, 4, 0, 10000), +(9300210, 2040302, 1, 4, 0, 10000), +(9500140, 2040302, 1, 4, 0, 10000), +(9500171, 2040302, 1, 4, 0, 10000), +(9500328, 2040302, 1, 4, 0, 10000), +(9500358, 2040302, 1, 4, 0, 10000), +(6400006, 2040302, 1, 4, 0, 10000), +(6400009, 2040302, 1, 4, 0, 10000), +(9303013, 2040302, 1, 1, 0, 750), +(8150000, 2044904, 1, 4, 0, 10000), +(9300210, 2044904, 1, 4, 0, 10000), +(9500140, 2044904, 1, 4, 0, 10000), +(9500171, 2044904, 1, 4, 0, 10000), +(9500328, 2044904, 1, 4, 0, 10000), +(9500358, 2044904, 1, 4, 0, 10000), +(6400006, 2044904, 1, 4, 0, 10000), +(6400009, 2044904, 1, 4, 0, 10000), +(9303013, 2044904, 1, 1, 0, 750), +(8150000, 2040030, 1, 4, 0, 10000), +(9300210, 2040030, 1, 4, 0, 10000), +(9500140, 2040030, 1, 4, 0, 10000), +(9500171, 2040030, 1, 4, 0, 10000), +(9500328, 2040030, 1, 4, 0, 10000), +(9500358, 2040030, 1, 4, 0, 10000), +(6400006, 2040030, 1, 4, 0, 10000), +(6400009, 2040030, 1, 4, 0, 10000), +(9303013, 2040030, 1, 1, 0, 750), +(8150000, 2388017, 1, 4, 0, 20000), +(9300210, 2388017, 1, 4, 0, 20000), +(9500140, 2388017, 1, 4, 0, 20000), +(9500171, 2388017, 1, 4, 0, 20000), +(9500328, 2388017, 1, 4, 0, 20000), +(9500358, 2388017, 1, 4, 0, 20000), +(6400006, 2388017, 1, 4, 0, 20000), +(6400009, 2388017, 1, 4, 0, 20000), +(9303013, 2388017, 1, 1, 0, 20000), +(9300094, 2280004, 1, 4, 0, 20000), +(9300094, 2280006, 1, 4, 0, 20000), +(8150100, 4000180, 1, 1, 0, 200000), +(8150100, 4030012, 1, 1, 0, 10000), +(8150100, 4130004, 1, 1, 0, 3000), +(8150100, 4130006, 1, 1, 0, 3000), +(8150100, 4006001, 1, 1, 0, 7000), +(8150100, 4006000, 1, 1, 0, 7000), +(8150100, 2000005, 1, 1, 0, 40000), +(8150100, 2000006, 1, 1, 0, 40000), +(8150100, 2022003, 1, 1, 0, 3000), +(8150100, 2020013, 1, 1, 0, 3000), +(8150100, 2041043, 1, 1, 0, 750), +(8150100, 2041013, 1, 1, 0, 750), +(8150100, 2044904, 1, 1, 0, 750), +(8150100, 2290102, 1, 1, 0, 1000), +(8150100, 2290042, 1, 1, 0, 1000), +(8150100, 2386012, 1, 1, 0, 20000), +(8150100, 4004002, 1, 1, 0, 3000), +(8150100, 4010005, 1, 1, 0, 7000), +(8150100, 1032017, 1, 1, 0, 700), +(8150100, 1040112, 1, 1, 0, 700), +(8150100, 1060101, 1, 1, 0, 700), +(8150100, 1002366, 1, 1, 0, 700), +(8150100, 1002405, 1, 1, 0, 700), +(8150100, 1072204, 1, 1, 0, 700), +(8150100, 1072192, 1, 1, 0, 700), +(8150100, 1082142, 1, 1, 0, 700), +(8150100, 1332022, 1, 1, 0, 700), +(8150100, 1082135, 1, 1, 0, 700), +(8150100, 1072315, 1, 1, 0, 700), +(8150100, 1052131, 1, 1, 0, 700), +(9400013, 4000225, 1, 1, 0, 200000), +(9400013, 2000006, 1, 1, 0, 40000), +(9400013, 2000004, 1, 1, 0, 40000), +(9400013, 2010003, 1, 1, 0, 3000), +(9400013, 2002005, 1, 1, 0, 10000), +(9400013, 2040310, 1, 1, 0, 750), +(9400013, 2043708, 1, 1, 0, 750), +(9400013, 2044609, 1, 1, 0, 750), +(9400013, 2041038, 1, 1, 0, 750), +(9400013, 1032019, 1, 1, 0, 700), +(9400013, 1102013, 1, 1, 0, 700), +(9400013, 1322026, 1, 1, 0, 700), +(9400013, 1092015, 1, 1, 0, 700), +(9400013, 1412010, 1, 1, 0, 700), +(9400013, 1402004, 1, 1, 0, 700), +(9400013, 1382016, 1, 1, 0, 700), +(9400013, 1002276, 1, 1, 0, 700), +(9400013, 1002403, 1, 1, 0, 700), +(9400013, 1472027, 1, 1, 0, 700), +(8150200, 4000266, 1, 1, 0, 200000), +(8810022, 4000266, 1, 1, 0, 200000), +(8150200, 2020015, 1, 1, 0, 3000), +(8810022, 2020015, 1, 4, 0, 3000), +(8150200, 2000005, 1, 1, 0, 40000), +(8810022, 2000005, 1, 4, 0, 40000), +(8150200, 2040302, 1, 1, 0, 750), +(8810022, 2040302, 1, 4, 0, 10000), +(8150200, 2043301, 1, 1, 0, 750), +(8810022, 2043301, 1, 4, 0, 10000), +(8150200, 2290024, 1, 1, 0, 1000), +(8810022, 2290024, 1, 4, 0, 40000), +(8150200, 2290135, 1, 1, 0, 1000), +(8810022, 2290135, 1, 4, 0, 40000), +(8150200, 2386011, 1, 1, 0, 20000), +(8810022, 2386011, 1, 4, 0, 20000), +(8150200, 4004004, 1, 1, 0, 3000), +(8810022, 4004004, 1, 1, 0, 3000), +(8150200, 4010002, 1, 1, 0, 7000), +(8810022, 4010002, 1, 1, 0, 7000), +(8150200, 4010005, 1, 1, 0, 7000), +(8810022, 4010005, 1, 1, 0, 7000), +(8150200, 1002529, 1, 1, 0, 700), +(8810022, 1002529, 1, 1, 0, 40000), +(8150200, 1402005, 1, 1, 0, 700), +(8810022, 1402005, 1, 1, 0, 40000), +(8150200, 1092026, 1, 1, 0, 700), +(8810022, 1092026, 1, 1, 0, 40000), +(8150200, 1050102, 1, 1, 0, 700), +(8810022, 1050102, 1, 1, 0, 40000), +(8150200, 1462018, 1, 1, 0, 700), +(8810022, 1462018, 1, 1, 0, 40000), +(8150200, 1072194, 1, 1, 0, 700), +(8810022, 1072194, 1, 1, 0, 40000), +(8150200, 1082135, 1, 1, 0, 700), +(8810022, 1082135, 1, 1, 0, 40000), +(8150200, 1082210, 1, 1, 0, 700), +(8810022, 1082210, 1, 1, 0, 40000), +(8150200, 1002646, 1, 1, 0, 700), +(8810022, 1002646, 1, 1, 0, 40000), +(9400574, 4032005, 1, 1, 0, 10000), +(9400574, 1442020, 1, 1, 0, 700), +(9400574, 1082158, 1, 1, 0, 700), +(9400574, 1332052, 1, 1, 0, 700), +(9400574, 1332027, 1, 1, 0, 700), +(9400579, 4032009, 1, 1, 0, 10000), +(9400579, 4006001, 1, 1, 0, 7000), +(9400579, 2041013, 1, 1, 0, 750), +(9400579, 4020008, 1, 1, 0, 7000), +(9400579, 4004004, 1, 1, 0, 3000), +(9400579, 1072194, 1, 1, 0, 700), +(9420513, 4000384, 1, 1, 0, 200000), +(9420513, 4000385, 1, 1, 0, 200000), +(9420513, 2020013, 1, 4, 0, 3000), +(9420513, 2000006, 1, 4, 0, 40000), +(9420513, 2020015, 1, 4, 0, 3000), +(9420513, 2041022, 1, 4, 0, 10000), +(9420513, 1041120, 1, 1, 0, 40000), +(9420513, 1061119, 1, 1, 0, 40000), +(9420513, 1312015, 1, 1, 0, 40000), +(9420513, 1072211, 1, 1, 0, 40000), +(9420513, 1072198, 1, 1, 0, 40000), +(9420513, 1040112, 1, 1, 0, 40000), +(9420513, 1332026, 1, 1, 0, 40000), +(9420513, 1372009, 1, 1, 0, 40000), +(9420513, 1072178, 1, 1, 0, 40000), +(9420513, 1050095, 1, 1, 0, 40000), +(9420513, 1050094, 1, 1, 0, 40000), +(9420513, 1002405, 1, 1, 0, 40000), +(9420513, 1050090, 1, 1, 0, 40000), +(9420513, 1462018, 1, 1, 0, 40000), +(9420513, 1040118, 1, 1, 0, 40000), +(9420513, 1060106, 1, 1, 0, 40000), +(9420513, 1072173, 1, 1, 0, 40000), +(9420513, 1332026, 1, 1, 0, 40000), +(9400549, 4031903, 1, 1, 0, 7000), +(9400571, 4031903, 1, 1, 0, 7000), +(9400549, 2020014, 1, 4, 0, 3000), +(9400571, 2020014, 1, 4, 0, 3000), +(9400549, 2002025, 1, 4, 0, 10000), +(9400571, 2002025, 1, 4, 0, 10000), +(9400549, 2002024, 1, 4, 0, 10000), +(9400571, 2002024, 1, 4, 0, 10000), +(9400549, 2040016, 1, 4, 0, 10000), +(9400571, 2040016, 1, 4, 0, 10000), +(9400549, 2040411, 1, 4, 0, 10000), +(9400571, 2040411, 1, 4, 0, 10000), +(9400549, 1372009, 1, 1, 0, 40000), +(9400571, 1372009, 1, 1, 0, 40000), +(9400549, 1452015, 1, 1, 0, 40000), +(9400571, 1452015, 1, 1, 0, 40000), +(9400549, 1472033, 1, 1, 0, 40000), +(9400571, 1472033, 1, 1, 0, 40000), +(8150301, 4000269, 1, 1, 0, 200000), +(8810020, 4000269, 1, 1, 0, 200000), +(9300265, 4000269, 1, 1, 0, 200000), +(8150301, 4130014, 1, 1, 0, 3000), +(8810020, 4130014, 1, 1, 0, 3000), +(9300265, 4130014, 1, 1, 0, 3000), +(8150301, 2000006, 1, 1, 0, 40000), +(8810020, 2000006, 1, 4, 0, 40000), +(9300265, 2000006, 1, 1, 0, 40000), +(8150301, 2000005, 1, 1, 0, 40000), +(8810020, 2000005, 1, 4, 0, 40000), +(9300265, 2000005, 1, 1, 0, 40000), +(8150301, 2022003, 1, 1, 0, 3000), +(8810020, 2022003, 1, 4, 0, 3000), +(9300265, 2022003, 1, 1, 0, 3000), +(8150301, 4006000, 1, 1, 0, 7000), +(8810020, 4006000, 1, 1, 0, 7000), +(9300265, 4006000, 1, 1, 0, 7000), +(8150301, 2040001, 1, 1, 0, 750), +(8810020, 2040001, 1, 4, 0, 10000), +(9300265, 2040001, 1, 1, 0, 750), +(8150301, 2044001, 1, 1, 0, 750), +(8810020, 2044001, 1, 4, 0, 10000), +(9300265, 2044001, 1, 1, 0, 750), +(8150301, 2040401, 1, 1, 0, 750), +(8810020, 2040401, 1, 4, 0, 10000), +(9300265, 2040401, 1, 1, 0, 750), +(8150301, 2040925, 1, 1, 0, 750), +(8810020, 2040925, 1, 4, 0, 10000), +(9300265, 2040925, 1, 1, 0, 750), +(8150301, 2330004, 1, 1, 0, 400), +(8810020, 2330004, 1, 4, 0, 2500), +(9300265, 2330004, 1, 1, 0, 400), +(8150301, 2386013, 1, 1, 0, 20000), +(8810020, 2386013, 1, 4, 0, 20000), +(9300265, 2386013, 1, 1, 0, 20000), +(8150301, 4004003, 1, 1, 0, 3000), +(8810020, 4004003, 1, 1, 0, 3000), +(9300265, 4004003, 1, 1, 0, 3000), +(8150301, 4010004, 1, 1, 0, 7000), +(8810020, 4010004, 1, 1, 0, 7000), +(9300265, 4010004, 1, 1, 0, 7000), +(8150301, 4020005, 1, 1, 0, 7000), +(8810020, 4020005, 1, 1, 0, 7000), +(9300265, 4020005, 1, 1, 0, 7000), +(8150301, 1422013, 1, 1, 0, 700), +(8810020, 1422013, 1, 1, 0, 40000), +(9300265, 1422013, 1, 1, 0, 700), +(8150301, 1002532, 1, 1, 0, 700), +(8810020, 1002532, 1, 1, 0, 40000), +(9300265, 1002532, 1, 1, 0, 700), +(8150301, 1050094, 1, 1, 0, 700), +(8810020, 1050094, 1, 1, 0, 40000), +(9300265, 1050094, 1, 1, 0, 700), +(8150301, 1372010, 1, 1, 0, 700), +(8810020, 1372010, 1, 1, 0, 40000), +(9300265, 1372010, 1, 1, 0, 700), +(8150301, 1072227, 1, 1, 0, 700), +(8810020, 1072227, 1, 1, 0, 40000), +(9300265, 1072227, 1, 1, 0, 700), +(8150301, 1051105, 1, 1, 0, 700), +(8810020, 1051105, 1, 1, 0, 40000), +(9300265, 1051105, 1, 1, 0, 700), +(8150301, 1082143, 1, 1, 0, 700), +(8810020, 1082143, 1, 1, 0, 40000), +(9300265, 1082143, 1, 1, 0, 700), +(8150301, 1082213, 1, 1, 0, 700), +(8810020, 1082213, 1, 1, 0, 40000), +(9300265, 1082213, 1, 1, 0, 700), +(8200004, 4000448, 1, 1, 0, 200000), +(8200004, 4000459, 1, 1, 0, 200000), +(8200004, 4130017, 1, 1, 0, 3000), +(8200004, 4130004, 1, 1, 0, 3000), +(8200004, 2000006, 1, 1, 0, 40000), +(8200004, 2020015, 1, 1, 0, 3000), +(8200004, 2022003, 1, 1, 0, 3000), +(8200004, 2040026, 1, 1, 0, 750), +(8200004, 2044313, 1, 1, 0, 750), +(8200004, 2044902, 1, 1, 0, 750), +(8200004, 2290072, 1, 1, 0, 1000), +(8200004, 2290134, 1, 1, 0, 1000), +(8200004, 2386024, 1, 1, 0, 20000), +(8200004, 4004001, 1, 1, 0, 3000), +(8200004, 4010001, 1, 1, 0, 7000), +(8200004, 4020008, 1, 1, 0, 7000), +(8200004, 4020009, 1, 1, 0, 7000), +(8200004, 1041121, 1, 1, 0, 700), +(8200004, 1061120, 1, 1, 0, 700), +(8200004, 1072198, 1, 1, 0, 700), +(8200004, 1092036, 1, 1, 0, 700), +(8200004, 1302056, 1, 1, 0, 700), +(8200004, 1422013, 1, 1, 0, 700), +(8200004, 1082132, 1, 1, 0, 700), +(8200004, 1050091, 1, 1, 0, 700), +(8200004, 1002326, 1, 1, 0, 700), +(8200004, 1482011, 1, 1, 0, 700), +(8150101, 4130012, 1, 1, 0, 3000), +(8150101, 4130013, 1, 1, 0, 3000), +(8150101, 4130006, 1, 1, 0, 3000), +(8150101, 2000005, 1, 1, 0, 40000), +(8150101, 2000006, 1, 1, 0, 40000), +(8150101, 2022003, 1, 1, 0, 3000), +(8150101, 2020013, 1, 1, 0, 3000), +(8150101, 2049101, 1, 1, 0, 400), +(8150101, 4006001, 1, 1, 0, 7000), +(8150101, 4161018, 1, 1, 0, 7000), +(8150101, 2386014, 1, 1, 0, 20000), +(8150101, 4010002, 1, 1, 0, 7000), +(8150101, 4020007, 1, 1, 0, 7000), +(8150101, 1032023, 1, 1, 0, 700), +(8150101, 1302018, 1, 1, 0, 700), +(8150101, 1312011, 1, 1, 0, 700), +(8150101, 1072223, 1, 1, 0, 700), +(8150101, 1002365, 1, 1, 0, 700), +(8150101, 1002403, 1, 1, 0, 700), +(8150101, 1072193, 1, 1, 0, 700), +(8150101, 1072213, 1, 1, 0, 700), +(8150101, 1082136, 1, 1, 0, 700), +(8150101, 1072318, 1, 1, 0, 700), +(8150302, 4000270, 1, 1, 0, 200000), +(8810021, 4000270, 1, 1, 0, 200000), +(9300264, 4000270, 1, 1, 0, 200000), +(8150302, 4000244, 1, 1, 0, 200000), +(8810021, 4000244, 1, 1, 0, 200000), +(9300264, 4000244, 1, 1, 0, 200000), +(8150302, 4000245, 1, 1, 0, 200000), +(8810021, 4000245, 1, 1, 0, 200000), +(9300264, 4000245, 1, 1, 0, 200000), +(8150302, 4001077, 1, 1, 0, 7000), +(8810021, 4001077, 1, 1, 0, 7000), +(9300264, 4001077, 1, 1, 0, 7000), +(8150302, 4131004, 1, 1, 0, 3000), +(8810021, 4131004, 1, 1, 0, 3000), +(9300264, 4131004, 1, 1, 0, 3000), +(8150302, 2000006, 1, 1, 0, 40000), +(8810021, 2000006, 1, 4, 0, 40000), +(9300264, 2000006, 1, 1, 0, 40000), +(8150302, 2000005, 1, 1, 0, 40000), +(8810021, 2000005, 1, 4, 0, 40000), +(9300264, 2000005, 1, 1, 0, 40000), +(8150302, 2022003, 1, 1, 0, 3000), +(8810021, 2022003, 1, 4, 0, 3000), +(9300264, 2022003, 1, 1, 0, 3000), +(8150302, 2020013, 1, 1, 0, 3000), +(8810021, 2020013, 1, 4, 0, 3000), +(9300264, 2020013, 1, 1, 0, 3000), +(8150302, 4006001, 1, 1, 0, 7000), +(8810021, 4006001, 1, 1, 0, 7000), +(9300264, 4006001, 1, 1, 0, 7000), +(8150302, 4006000, 1, 1, 0, 7000), +(8810021, 4006000, 1, 1, 0, 7000), +(9300264, 4006000, 1, 1, 0, 7000), +(8150302, 2044402, 1, 1, 0, 750), +(8810021, 2044402, 1, 4, 0, 10000), +(9300264, 2044402, 1, 1, 0, 750), +(8150302, 2044301, 1, 1, 0, 750), +(8810021, 2044301, 1, 4, 0, 10000), +(9300264, 2044301, 1, 1, 0, 750), +(8150302, 2040320, 1, 1, 0, 750), +(8810021, 2040320, 1, 4, 0, 10000), +(9300264, 2040320, 1, 1, 0, 750), +(8150302, 2290010, 1, 1, 0, 1000), +(8810021, 2290010, 1, 4, 0, 40000), +(9300264, 2290010, 1, 1, 0, 1000), +(8150302, 2290128, 1, 1, 0, 1000), +(8810021, 2290128, 1, 4, 0, 40000), +(9300264, 2290128, 1, 1, 0, 1000), +(8150302, 2386015, 1, 1, 0, 20000), +(8810021, 2386015, 1, 4, 0, 20000), +(9300264, 2386015, 1, 1, 0, 20000), +(8150302, 4004000, 1, 1, 0, 3000), +(8810021, 4004000, 1, 1, 0, 3000), +(9300264, 4004000, 1, 1, 0, 3000), +(8150302, 4010005, 1, 1, 0, 7000), +(8810021, 4010005, 1, 1, 0, 7000), +(9300264, 4010005, 1, 1, 0, 7000), +(8150302, 4020002, 1, 1, 0, 7000), +(8810021, 4020002, 1, 1, 0, 7000), +(9300264, 4020002, 1, 1, 0, 7000), +(8150302, 1442020, 1, 1, 0, 700), +(8810021, 1442020, 1, 1, 0, 40000), +(9300264, 1442020, 1, 1, 0, 700), +(8150302, 1002531, 1, 1, 0, 700), +(8810021, 1002531, 1, 1, 0, 40000), +(9300264, 1002531, 1, 1, 0, 700), +(8150302, 1050093, 1, 1, 0, 700), +(8810021, 1050093, 1, 1, 0, 40000), +(9300264, 1050093, 1, 1, 0, 700), +(8150302, 1082127, 1, 1, 0, 700), +(8810021, 1082127, 1, 1, 0, 40000), +(9300264, 1082127, 1, 1, 0, 700), +(8150302, 1332027, 1, 1, 0, 700), +(8810021, 1332027, 1, 1, 0, 40000), +(9300264, 1332027, 1, 1, 0, 700), +(8150302, 1040117, 1, 1, 0, 700), +(8810021, 1040117, 1, 1, 0, 40000), +(9300264, 1040117, 1, 1, 0, 700), +(8150302, 1060107, 1, 1, 0, 700), +(8810021, 1060107, 1, 1, 0, 40000), +(9300264, 1060107, 1, 1, 0, 700), +(8150302, 1040115, 1, 1, 0, 700), +(8810021, 1040115, 1, 1, 0, 40000), +(9300264, 1040115, 1, 1, 0, 700), +(8150302, 1060104, 1, 1, 0, 700), +(8810021, 1060104, 1, 1, 0, 40000), +(9300264, 1060104, 1, 1, 0, 700), +(8150302, 1482012, 1, 1, 0, 700), +(8810021, 1482012, 1, 1, 0, 40000), +(9300264, 1482012, 1, 1, 0, 700), +(8180000, 4000244, 1, 1, 0, 200000), +(9300211, 4000244, 1, 1, 0, 200000), +(9500174, 4000244, 1, 1, 0, 200000), +(9500359, 4000244, 1, 1, 0, 200000), +(8180000, 4000245, 1, 1, 0, 200000), +(9300211, 4000245, 1, 1, 0, 200000), +(9500174, 4000245, 1, 1, 0, 200000), +(9500359, 4000245, 1, 1, 0, 200000), +(8180000, 2000004, 1, 4, 0, 40000), +(9300211, 2000004, 1, 4, 0, 40000), +(9500174, 2000004, 1, 4, 0, 40000), +(9500359, 2000004, 1, 4, 0, 40000), +(8180000, 2000005, 1, 4, 0, 40000), +(9300211, 2000005, 1, 4, 0, 40000), +(9500174, 2000005, 1, 4, 0, 40000), +(9500359, 2000005, 1, 4, 0, 40000), +(8180000, 2043201, 1, 4, 0, 10000), +(9300211, 2043201, 1, 4, 0, 10000), +(9500174, 2043201, 1, 4, 0, 10000), +(9500359, 2043201, 1, 4, 0, 10000), +(8180000, 2044301, 1, 4, 0, 10000), +(9300211, 2044301, 1, 4, 0, 10000), +(9500174, 2044301, 1, 4, 0, 10000), +(9500359, 2044301, 1, 4, 0, 10000), +(8180000, 2044001, 1, 4, 0, 10000), +(9300211, 2044001, 1, 4, 0, 10000), +(9500174, 2044001, 1, 4, 0, 10000), +(9500359, 2044001, 1, 4, 0, 10000), +(8180000, 2040805, 1, 4, 0, 10000), +(9300211, 2040805, 1, 4, 0, 10000), +(9500174, 2040805, 1, 4, 0, 10000), +(9500359, 2040805, 1, 4, 0, 10000), +(8180000, 2044601, 1, 4, 0, 10000), +(9300211, 2044601, 1, 4, 0, 10000), +(9500174, 2044601, 1, 4, 0, 10000), +(9500359, 2044601, 1, 4, 0, 10000), +(8180000, 2043001, 1, 4, 0, 10000), +(9300211, 2043001, 1, 4, 0, 10000), +(9500174, 2043001, 1, 4, 0, 10000), +(9500359, 2043001, 1, 4, 0, 10000), +(8180000, 2044501, 1, 4, 0, 10000), +(9300211, 2044501, 1, 4, 0, 10000), +(9500174, 2044501, 1, 4, 0, 10000), +(9500359, 2044501, 1, 4, 0, 10000), +(8180000, 2043301, 1, 4, 0, 10000), +(9300211, 2043301, 1, 4, 0, 10000), +(9500174, 2043301, 1, 4, 0, 10000), +(9500359, 2043301, 1, 4, 0, 10000), +(8180000, 2044401, 1, 4, 0, 10000), +(9300211, 2044401, 1, 4, 0, 10000), +(9500174, 2044401, 1, 4, 0, 10000), +(9500359, 2044401, 1, 4, 0, 10000), +(8180000, 2044701, 1, 4, 0, 10000), +(9300211, 2044701, 1, 4, 0, 10000), +(9500174, 2044701, 1, 4, 0, 10000), +(9500359, 2044701, 1, 4, 0, 10000), +(8180000, 2043701, 1, 4, 0, 10000), +(9300211, 2043701, 1, 4, 0, 10000), +(9500174, 2043701, 1, 4, 0, 10000), +(9500359, 2043701, 1, 4, 0, 10000), +(8180000, 2043801, 1, 4, 0, 10000), +(9300211, 2043801, 1, 4, 0, 10000), +(9500174, 2043801, 1, 4, 0, 10000), +(9500359, 2043801, 1, 4, 0, 10000), +(8180000, 2043101, 1, 4, 0, 10000), +(9300211, 2043101, 1, 4, 0, 10000), +(9500174, 2043101, 1, 4, 0, 10000), +(9500359, 2043101, 1, 4, 0, 10000), +(8180000, 2290080, 1, 4, 0, 40000), +(9300211, 2290080, 1, 4, 0, 40000), +(9500174, 2290080, 1, 4, 0, 40000), +(9500359, 2290080, 1, 4, 0, 40000), +(8180000, 2290002, 1, 4, 0, 40000), +(9300211, 2290002, 1, 4, 0, 40000), +(9500174, 2290002, 1, 4, 0, 40000), +(9500359, 2290002, 1, 4, 0, 40000), +(8180000, 2388018, 1, 4, 0, 20000), +(9300211, 2388018, 1, 4, 0, 20000), +(9500174, 2388018, 1, 4, 0, 20000), +(9500359, 2388018, 1, 4, 0, 20000), +(8180000, 2290030, 1, 4, 0, 40000), +(9300211, 2290030, 1, 4, 0, 40000), +(9500174, 2290030, 1, 4, 0, 40000), +(9500359, 2290030, 1, 4, 0, 40000), +(8180000, 2290130, 1, 4, 0, 40000), +(9300211, 2290130, 1, 4, 0, 40000), +(9500174, 2290130, 1, 4, 0, 40000), +(9500359, 2290130, 1, 4, 0, 40000), +(8180000, 2290014, 1, 4, 0, 40000), +(9300211, 2290014, 1, 4, 0, 40000), +(9500174, 2290014, 1, 4, 0, 40000), +(9500359, 2290014, 1, 4, 0, 40000), +(8180000, 4004002, 1, 1, 0, 3000), +(9300211, 4004002, 1, 1, 0, 3000), +(9500174, 4004002, 1, 1, 0, 3000), +(9500359, 4004002, 1, 1, 0, 3000), +(8180000, 4004000, 1, 1, 0, 3000), +(9300211, 4004000, 1, 1, 0, 3000), +(9500174, 4004000, 1, 1, 0, 3000), +(9500359, 4004000, 1, 1, 0, 3000), +(8180000, 4004001, 1, 1, 0, 3000), +(9300211, 4004001, 1, 1, 0, 3000), +(9500174, 4004001, 1, 1, 0, 3000), +(9500359, 4004001, 1, 1, 0, 3000), +(8180000, 1302056, 1, 1, 0, 40000), +(9300211, 1302056, 1, 1, 0, 40000), +(9500174, 1302056, 1, 1, 0, 40000), +(9500359, 1302056, 1, 1, 0, 40000), +(8180000, 1312030, 1, 1, 0, 40000), +(9300211, 1312030, 1, 1, 0, 40000), +(9500174, 1312030, 1, 1, 0, 40000), +(9500359, 1312030, 1, 1, 0, 40000), +(8180000, 1322045, 1, 1, 0, 40000), +(9300211, 1322045, 1, 1, 0, 40000), +(9500174, 1322045, 1, 1, 0, 40000), +(9500359, 1322045, 1, 1, 0, 40000), +(8180000, 1402035, 1, 1, 0, 40000), +(9300211, 1402035, 1, 1, 0, 40000), +(9500174, 1402035, 1, 1, 0, 40000), +(9500359, 1402035, 1, 1, 0, 40000), +(8180000, 1412021, 1, 1, 0, 40000), +(9300211, 1412021, 1, 1, 0, 40000), +(9500174, 1412021, 1, 1, 0, 40000), +(9500359, 1412021, 1, 1, 0, 40000), +(8180000, 1422027, 1, 1, 0, 40000), +(9300211, 1422027, 1, 1, 0, 40000), +(9500174, 1422027, 1, 1, 0, 40000), +(9500359, 1422027, 1, 1, 0, 40000), +(8180000, 1432030, 1, 1, 0, 40000), +(9300211, 1432030, 1, 1, 0, 40000), +(9500174, 1432030, 1, 1, 0, 40000), +(9500359, 1432030, 1, 1, 0, 40000), +(8180000, 1442044, 1, 1, 0, 40000), +(9300211, 1442044, 1, 1, 0, 40000), +(9500174, 1442044, 1, 1, 0, 40000), +(9500359, 1442044, 1, 1, 0, 40000), +(8180000, 1332051, 1, 1, 0, 40000), +(9300211, 1332051, 1, 1, 0, 40000), +(9500174, 1332051, 1, 1, 0, 40000), +(9500359, 1332051, 1, 1, 0, 40000), +(8180000, 1382035, 1, 1, 0, 40000), +(9300211, 1382035, 1, 1, 0, 40000), +(9500174, 1382035, 1, 1, 0, 40000), +(9500359, 1382035, 1, 1, 0, 40000), +(8180000, 1372010, 1, 1, 0, 40000), +(9300211, 1372010, 1, 1, 0, 40000), +(9500174, 1372010, 1, 1, 0, 40000), +(9500359, 1372010, 1, 1, 0, 40000), +(8180000, 1452019, 1, 1, 0, 40000), +(9300211, 1452019, 1, 1, 0, 40000), +(9500174, 1452019, 1, 1, 0, 40000), +(9500359, 1452019, 1, 1, 0, 40000), +(8180000, 1462015, 1, 1, 0, 40000), +(9300211, 1462015, 1, 1, 0, 40000), +(9500174, 1462015, 1, 1, 0, 40000), +(9500359, 1462015, 1, 1, 0, 40000), +(8180000, 1332051, 1, 1, 0, 40000), +(9300211, 1332051, 1, 1, 0, 40000), +(9500174, 1332051, 1, 1, 0, 40000), +(9500359, 1332051, 1, 1, 0, 40000), +(8180000, 1472053, 1, 1, 0, 40000), +(9300211, 1472053, 1, 1, 0, 40000), +(9500174, 1472053, 1, 1, 0, 40000), +(9500359, 1472053, 1, 1, 0, 40000), +(8180000, 1332052, 1, 1, 0, 40000), +(9300211, 1332052, 1, 1, 0, 40000), +(9500174, 1332052, 1, 1, 0, 40000), +(9500359, 1332052, 1, 1, 0, 40000), +(8180001, 4000243, 1, 1, 0, 200000), +(9300212, 4000243, 1, 1, 0, 200000), +(9500173, 4000243, 1, 1, 0, 200000), +(9500360, 4000243, 1, 1, 0, 200000), +(8180001, 4000245, 1, 1, 0, 200000), +(9300212, 4000245, 1, 1, 0, 200000), +(9500173, 4000245, 1, 1, 0, 200000), +(9500360, 4000245, 1, 1, 0, 200000), +(8180001, 2000004, 1, 4, 0, 40000), +(9300212, 2000004, 1, 4, 0, 40000), +(9500173, 2000004, 1, 4, 0, 40000), +(9500360, 2000004, 1, 4, 0, 40000), +(8180001, 2000005, 1, 4, 0, 40000), +(9300212, 2000005, 1, 4, 0, 40000), +(9500173, 2000005, 1, 4, 0, 40000), +(9500360, 2000005, 1, 4, 0, 40000), +(8180001, 2040708, 1, 4, 0, 10000), +(9300212, 2040708, 1, 4, 0, 10000), +(9500173, 2040708, 1, 4, 0, 10000), +(9500360, 2040708, 1, 4, 0, 10000), +(8180001, 2040502, 1, 4, 0, 10000), +(9300212, 2040502, 1, 4, 0, 10000), +(9500173, 2040502, 1, 4, 0, 10000), +(9500360, 2040502, 1, 4, 0, 10000), +(8180001, 2040005, 1, 4, 0, 10000), +(9300212, 2040005, 1, 4, 0, 10000), +(9500173, 2040005, 1, 4, 0, 10000), +(9500360, 2040005, 1, 4, 0, 10000), +(8180001, 2040501, 1, 4, 0, 10000), +(9300212, 2040501, 1, 4, 0, 10000), +(9500173, 2040501, 1, 4, 0, 10000), +(9500360, 2040501, 1, 4, 0, 10000), +(8180001, 2040705, 1, 4, 0, 10000), +(9300212, 2040705, 1, 4, 0, 10000), +(9500173, 2040705, 1, 4, 0, 10000), +(9500360, 2040705, 1, 4, 0, 10000), +(8180001, 2040702, 1, 4, 0, 10000), +(9300212, 2040702, 1, 4, 0, 10000), +(9500173, 2040702, 1, 4, 0, 10000), +(9500360, 2040702, 1, 4, 0, 10000), +(8180001, 2040602, 1, 4, 0, 10000), +(9300212, 2040602, 1, 4, 0, 10000), +(9500173, 2040602, 1, 4, 0, 10000), +(9500360, 2040602, 1, 4, 0, 10000), +(8180001, 2040902, 1, 4, 0, 10000), +(9300212, 2040902, 1, 4, 0, 10000), +(9500173, 2040902, 1, 4, 0, 10000), +(9500360, 2040902, 1, 4, 0, 10000), +(8180001, 2040320, 1, 4, 0, 10000), +(9300212, 2040320, 1, 4, 0, 10000), +(9500173, 2040320, 1, 4, 0, 10000), +(9500360, 2040320, 1, 4, 0, 10000), +(8180001, 2040516, 1, 4, 0, 10000), +(9300212, 2040516, 1, 4, 0, 10000), +(9500173, 2040516, 1, 4, 0, 10000), +(9500360, 2040516, 1, 4, 0, 10000), +(8180001, 2040513, 1, 4, 0, 10000), +(9300212, 2040513, 1, 4, 0, 10000), +(9500173, 2040513, 1, 4, 0, 10000), +(9500360, 2040513, 1, 4, 0, 10000), +(8180001, 2040402, 1, 4, 0, 10000), +(9300212, 2040402, 1, 4, 0, 10000), +(9500173, 2040402, 1, 4, 0, 10000), +(9500360, 2040402, 1, 4, 0, 10000), +(8180001, 2049101, 1, 4, 0, 2500), +(9300212, 2049101, 1, 4, 0, 2500), +(9500173, 2049101, 1, 4, 0, 2500), +(9500360, 2049101, 1, 4, 0, 2500), +(8180001, 2388019, 1, 4, 0, 20000), +(9300212, 2388019, 1, 4, 0, 20000), +(9500173, 2388019, 1, 4, 0, 20000), +(9500360, 2388019, 1, 4, 0, 20000), +(8180001, 2290092, 1, 4, 0, 40000), +(9300212, 2290092, 1, 4, 0, 40000), +(9500173, 2290092, 1, 4, 0, 40000), +(9500360, 2290092, 1, 4, 0, 40000), +(8180001, 2290119, 1, 4, 0, 40000), +(9300212, 2290119, 1, 4, 0, 40000), +(9500173, 2290119, 1, 4, 0, 40000), +(9500360, 2290119, 1, 4, 0, 40000), +(8180001, 2290068, 1, 4, 0, 40000), +(9300212, 2290068, 1, 4, 0, 40000), +(9500173, 2290068, 1, 4, 0, 40000), +(9500360, 2290068, 1, 4, 0, 40000), +(8180001, 2290032, 1, 4, 0, 40000), +(9300212, 2290032, 1, 4, 0, 40000), +(9500173, 2290032, 1, 4, 0, 40000), +(9500360, 2290032, 1, 4, 0, 40000), +(8180001, 2290102, 1, 4, 0, 40000), +(9300212, 2290102, 1, 4, 0, 40000), +(9500173, 2290102, 1, 4, 0, 40000), +(9500360, 2290102, 1, 4, 0, 40000), +(8180001, 2290019, 1, 4, 0, 40000), +(9300212, 2290019, 1, 4, 0, 40000), +(9500173, 2290019, 1, 4, 0, 40000), +(9500360, 2290019, 1, 4, 0, 40000), +(8180001, 2290099, 1, 4, 0, 40000), +(9300212, 2290099, 1, 4, 0, 40000), +(9500173, 2290099, 1, 4, 0, 40000), +(9500360, 2290099, 1, 4, 0, 40000), +(8180001, 2290072, 1, 4, 0, 40000), +(9300212, 2290072, 1, 4, 0, 40000), +(9500173, 2290072, 1, 4, 0, 40000), +(9500360, 2290072, 1, 4, 0, 40000), +(8180001, 2290058, 1, 4, 0, 40000), +(9300212, 2290058, 1, 4, 0, 40000), +(9500173, 2290058, 1, 4, 0, 40000), +(9500360, 2290058, 1, 4, 0, 40000), +(8180001, 2290018, 1, 4, 0, 40000), +(9300212, 2290018, 1, 4, 0, 40000), +(9500173, 2290018, 1, 4, 0, 40000), +(9500360, 2290018, 1, 4, 0, 40000), +(8180001, 2290042, 1, 4, 0, 40000), +(9300212, 2290042, 1, 4, 0, 40000), +(9500173, 2290042, 1, 4, 0, 40000), +(9500360, 2290042, 1, 4, 0, 40000), +(8180001, 2290128, 1, 4, 0, 40000), +(9300212, 2290128, 1, 4, 0, 40000), +(9500173, 2290128, 1, 4, 0, 40000), +(9500360, 2290128, 1, 4, 0, 40000), +(8180001, 4004003, 1, 1, 0, 3000), +(9300212, 4004003, 1, 1, 0, 3000), +(9500173, 4004003, 1, 1, 0, 3000), +(9500360, 4004003, 1, 1, 0, 3000), +(8180001, 1332051, 1, 1, 0, 40000), +(9300212, 1332051, 1, 1, 0, 40000), +(9500173, 1332051, 1, 1, 0, 40000), +(9500360, 1332051, 1, 1, 0, 40000), +(8180001, 1422027, 1, 1, 0, 40000), +(9300212, 1422027, 1, 1, 0, 40000), +(9500173, 1422027, 1, 1, 0, 40000), +(9500360, 1422027, 1, 1, 0, 40000), +(8180001, 1402035, 1, 1, 0, 40000), +(9300212, 1402035, 1, 1, 0, 40000), +(9500173, 1402035, 1, 1, 0, 40000), +(9500360, 1402035, 1, 1, 0, 40000), +(8180001, 1442044, 1, 1, 0, 40000), +(9300212, 1442044, 1, 1, 0, 40000), +(9500173, 1442044, 1, 1, 0, 40000), +(9500360, 1442044, 1, 1, 0, 40000), +(8180001, 1372010, 1, 1, 0, 40000), +(9300212, 1372010, 1, 1, 0, 40000), +(9500173, 1372010, 1, 1, 0, 40000), +(9500360, 1372010, 1, 1, 0, 40000), +(8180001, 1452019, 1, 1, 0, 40000), +(9300212, 1452019, 1, 1, 0, 40000), +(9500173, 1452019, 1, 1, 0, 40000), +(9500360, 1452019, 1, 1, 0, 40000), +(8180001, 1462015, 1, 1, 0, 40000), +(9300212, 1462015, 1, 1, 0, 40000), +(9500173, 1462015, 1, 1, 0, 40000), +(9500360, 1462015, 1, 1, 0, 40000), +(8180001, 1332051, 1, 1, 0, 40000), +(9300212, 1332051, 1, 1, 0, 40000), +(9500173, 1332051, 1, 1, 0, 40000), +(9500360, 1332051, 1, 1, 0, 40000), +(8180001, 1492012, 1, 1, 0, 40000), +(9300212, 1492012, 1, 1, 0, 40000), +(9500173, 1492012, 1, 1, 0, 40000), +(9500360, 1492012, 1, 1, 0, 40000), +(8150201, 4000267, 1, 1, 0, 200000), +(8810023, 4000267, 1, 1, 0, 200000), +(8150201, 4000244, 1, 1, 0, 200000), +(8810023, 4000244, 1, 1, 0, 200000), +(8150201, 4000245, 1, 1, 0, 200000), +(8810023, 4000245, 1, 1, 0, 200000), +(8150201, 4001079, 1, 1, 0, 7000), +(8810023, 4001079, 1, 1, 0, 7000), +(8150201, 2022003, 1, 1, 0, 3000), +(8810023, 2022003, 1, 4, 0, 3000), +(8150201, 2020013, 1, 1, 0, 3000), +(8810023, 2020013, 1, 4, 0, 3000), +(8150201, 2040320, 1, 1, 0, 750), +(8810023, 2040320, 1, 4, 0, 10000), +(8150201, 2040001, 1, 1, 0, 750), +(8810023, 2040001, 1, 4, 0, 10000), +(8150201, 2049101, 1, 1, 0, 400), +(8810023, 2049101, 1, 4, 0, 2500), +(8150201, 2386016, 1, 1, 0, 20000), +(8810023, 2386016, 1, 4, 0, 20000), +(8150201, 4004004, 1, 1, 0, 3000), +(8810023, 4004004, 1, 1, 0, 3000), +(8150201, 4010001, 1, 1, 0, 7000), +(8810023, 4010001, 1, 1, 0, 7000), +(8150201, 4020002, 1, 1, 0, 7000), +(8810023, 4020002, 1, 1, 0, 7000), +(8150201, 1002530, 1, 1, 0, 700), +(8810023, 1002530, 1, 1, 0, 40000), +(8150201, 1041122, 1, 1, 0, 700), +(8810023, 1041122, 1, 1, 0, 40000), +(8150201, 1061121, 1, 1, 0, 700), +(8810023, 1061121, 1, 1, 0, 40000), +(8150201, 1092027, 1, 1, 0, 700), +(8810023, 1092027, 1, 1, 0, 40000), +(8150201, 1051101, 1, 1, 0, 700), +(8810023, 1051101, 1, 1, 0, 40000), +(8150201, 1382035, 1, 1, 0, 700), +(8810023, 1382035, 1, 1, 0, 40000), +(8150201, 1072208, 1, 1, 0, 700), +(8810023, 1072208, 1, 1, 0, 40000), +(8150201, 1082158, 1, 1, 0, 700), +(8810023, 1082158, 1, 1, 0, 40000), +(8150201, 1082136, 1, 1, 0, 700), +(8810023, 1082136, 1, 1, 0, 40000), +(8150201, 1492012, 1, 1, 0, 700), +(8810023, 1492012, 1, 1, 0, 40000), +(8190000, 4000272, 1, 1, 0, 200000), +(8190001, 4000272, 1, 1, 0, 200000), +(8190000, 4130011, 1, 1, 0, 3000), +(8190001, 4130011, 1, 1, 0, 3000), +(8190000, 2000006, 1, 1, 0, 40000), +(8190001, 2000006, 1, 1, 0, 40000), +(8190000, 2000005, 1, 1, 0, 40000), +(8190001, 2000005, 1, 1, 0, 40000), +(8190000, 2022003, 1, 1, 0, 3000), +(8190001, 2022003, 1, 1, 0, 3000), +(8190000, 2020013, 1, 1, 0, 3000), +(8190001, 2020013, 1, 1, 0, 3000), +(8190000, 4006000, 1, 1, 0, 7000), +(8190001, 4006000, 1, 1, 0, 7000), +(8190000, 4006001, 1, 1, 0, 7000), +(8190001, 4006001, 1, 1, 0, 7000), +(8190000, 2040004, 1, 1, 0, 750), +(8190001, 2040004, 1, 1, 0, 750), +(8190000, 2040421, 1, 1, 0, 750), +(8190001, 2040421, 1, 1, 0, 750), +(8190000, 2044702, 1, 1, 0, 750), +(8190001, 2044702, 1, 1, 0, 750), +(8190000, 2386017, 1, 1, 0, 20000), +(8190001, 2386017, 1, 1, 0, 20000), +(8190000, 2290030, 1, 1, 0, 1000), +(8190001, 2290030, 1, 1, 0, 1000), +(8190000, 2049000, 1, 1, 0, 400), +(8190001, 2049000, 1, 1, 0, 400), +(8190000, 4010000, 1, 1, 0, 7000), +(8190001, 4010000, 1, 1, 0, 7000), +(8190000, 4020004, 1, 1, 0, 7000), +(8190001, 4020004, 1, 1, 0, 7000), +(8190000, 1040111, 1, 1, 0, 700), +(8190001, 1040111, 1, 1, 0, 700), +(8190000, 1060102, 1, 1, 0, 700), +(8190001, 1060102, 1, 1, 0, 700), +(8190000, 1002398, 1, 1, 0, 700), +(8190001, 1002398, 1, 1, 0, 700), +(8190000, 1072228, 1, 1, 0, 700), +(8190001, 1072228, 1, 1, 0, 700), +(8190000, 1082158, 1, 1, 0, 700), +(8190001, 1082158, 1, 1, 0, 700), +(8190000, 1332052, 1, 1, 0, 700), +(8190001, 1332052, 1, 1, 0, 700), +(8190000, 1002646, 1, 1, 0, 700), +(8190001, 1002646, 1, 1, 0, 700), +(8190000, 1072315, 1, 1, 0, 700), +(8190001, 1072315, 1, 1, 0, 700), +(8200005, 4000449, 1, 1, 0, 200000), +(8200005, 4000451, 1, 1, 0, 200000), +(8200005, 4130005, 1, 1, 0, 3000), +(8200005, 2000006, 1, 1, 0, 40000), +(8200005, 2020013, 1, 1, 0, 3000), +(8200005, 2022003, 1, 1, 0, 3000), +(8200005, 2040932, 1, 1, 0, 750), +(8200005, 2044013, 1, 1, 0, 750), +(8200005, 2290078, 1, 1, 0, 1000), +(8200005, 2387006, 1, 1, 0, 20000), +(8200005, 4004000, 1, 1, 0, 3000), +(8200005, 4010004, 1, 1, 0, 7000), +(8200005, 4020001, 1, 1, 0, 7000), +(8200005, 4020009, 1, 1, 0, 7000), +(8200005, 1302023, 1, 1, 0, 700), +(8200005, 1322029, 1, 1, 0, 700), +(8200005, 1051103, 1, 1, 0, 700), +(8200005, 1072207, 1, 1, 0, 700), +(8200005, 1082127, 1, 1, 0, 700), +(8200005, 1040118, 1, 1, 0, 700), +(8200005, 1060107, 1, 1, 0, 700), +(8200005, 1002643, 1, 1, 0, 700), +(8170000, 2000006, 1, 1, 0, 40000), +(8170000, 2002001, 1, 1, 0, 10000), +(8170000, 2000005, 1, 1, 0, 40000), +(8170000, 4006001, 1, 1, 0, 7000), +(8170000, 2040702, 1, 1, 0, 750), +(8170000, 2040802, 1, 1, 0, 750), +(8170000, 2387001, 1, 1, 0, 20000), +(8170000, 4010005, 1, 1, 0, 7000), +(8170000, 4010004, 1, 1, 0, 7000), +(8170000, 4020008, 1, 1, 0, 7000), +(8170000, 4004004, 1, 1, 0, 3000), +(8170000, 1032017, 1, 1, 0, 700), +(8170000, 1102031, 1, 1, 0, 700), +(8170000, 1040113, 1, 1, 0, 700), +(8170000, 1060102, 1, 1, 0, 700), +(8170000, 1092017, 1, 1, 0, 700), +(8170000, 1092026, 1, 1, 0, 700), +(8170000, 1092027, 1, 1, 0, 700), +(8170000, 1072211, 1, 1, 0, 700), +(8170000, 1050072, 1, 1, 0, 700), +(8170000, 1072178, 1, 1, 0, 700), +(8170000, 1072177, 1, 1, 0, 700), +(8170000, 1462013, 1, 1, 0, 700), +(8170000, 1002404, 1, 1, 0, 700), +(8170000, 1051069, 1, 1, 0, 700), +(8170000, 1452012, 1, 1, 0, 700), +(8170000, 1072227, 1, 1, 0, 700), +(8170000, 1002281, 1, 1, 0, 700), +(8170000, 1332018, 1, 1, 0, 700), +(8170000, 1041107, 1, 1, 0, 700), +(8170000, 1061106, 1, 1, 0, 700), +(8170000, 1072213, 1, 1, 0, 700), +(8160000, 4000151, 1, 1, 0, 200000), +(8160000, 2000006, 1, 1, 0, 40000), +(8160000, 2022003, 1, 1, 0, 3000), +(8160000, 4006000, 1, 1, 0, 7000), +(8160000, 2040602, 1, 1, 0, 750), +(8160000, 2040705, 1, 1, 0, 750), +(8160000, 4010001, 1, 1, 0, 7000), +(8160000, 4020002, 1, 1, 0, 7000), +(8160000, 4004003, 1, 1, 0, 3000), +(8160000, 1032023, 1, 1, 0, 700), +(8160000, 1092015, 1, 1, 0, 700), +(8160000, 1092026, 1, 1, 0, 700), +(8160000, 1051079, 1, 1, 0, 700), +(8160000, 1442019, 1, 1, 0, 700), +(8160000, 1072179, 1, 1, 0, 700), +(8160000, 1082123, 1, 1, 0, 700), +(8160000, 1050093, 1, 1, 0, 700), +(8160000, 1462009, 1, 1, 0, 700), +(8160000, 1452015, 1, 1, 0, 700), +(8160000, 1051063, 1, 1, 0, 700), +(8160000, 1002403, 1, 1, 0, 700), +(8160000, 1472028, 1, 1, 0, 700), +(8160000, 1472031, 1, 1, 0, 700), +(8160000, 1002329, 1, 1, 0, 700), +(8160000, 1052131, 1, 1, 0, 700), +(8200006, 4000450, 1, 1, 0, 200000), +(8200006, 4000451, 1, 1, 0, 200000), +(8200006, 4130006, 1, 1, 0, 3000), +(8200006, 2000005, 1, 1, 0, 40000), +(8200006, 2000006, 1, 1, 0, 40000), +(8200006, 2022003, 1, 1, 0, 3000), +(8200006, 2040318, 1, 1, 0, 750), +(8200006, 2040825, 1, 1, 0, 750), +(8200006, 2290076, 1, 1, 0, 1000), +(8200006, 2290138, 1, 1, 0, 1000), +(8200006, 2387007, 1, 1, 0, 20000), +(8200006, 4004003, 1, 1, 0, 3000), +(8200006, 4010003, 1, 1, 0, 7000), +(8200006, 4020003, 1, 1, 0, 7000), +(8200006, 4020009, 1, 1, 0, 7000), +(8200006, 1032023, 1, 1, 0, 700), +(8200006, 1002378, 1, 1, 0, 700), +(8200006, 1412021, 1, 1, 0, 700), +(8200006, 1382035, 1, 1, 0, 700), +(8200006, 1051107, 1, 1, 0, 700), +(8200006, 1072227, 1, 1, 0, 700), +(8200006, 1462017, 1, 1, 0, 700), +(8200006, 1082135, 1, 1, 0, 700), +(8200006, 1052131, 1, 1, 0, 700), +(8510000, 4031905, 1, 1, 0, 7000), +(8520000, 4031905, 1, 1, 0, 7000), +(9500332, 4031905, 1, 1, 0, 7000), +(9500363, 4031905, 1, 1, 0, 7000), +(8510000, 4001085, 1, 1, 0, 7000), +(8520000, 4001085, 1, 1, 0, 7000), +(9500332, 4001085, 1, 1, 0, 7000), +(9500363, 4001085, 1, 1, 0, 7000), +(8510000, 2000004, 1, 4, 0, 40000), +(8520000, 2000004, 1, 4, 0, 40000), +(9500332, 2000004, 1, 4, 0, 40000), +(9500363, 2000004, 1, 4, 0, 40000), +(8510000, 2020013, 1, 4, 0, 3000), +(8520000, 2020013, 1, 4, 0, 3000), +(9500332, 2020013, 1, 4, 0, 3000), +(9500363, 2020013, 1, 4, 0, 3000), +(8510000, 2020015, 1, 4, 0, 3000), +(8520000, 2020015, 1, 4, 0, 3000), +(9500332, 2020015, 1, 4, 0, 3000), +(9500363, 2020015, 1, 4, 0, 3000), +(8510000, 2000006, 1, 4, 0, 40000), +(8520000, 2000006, 1, 4, 0, 40000), +(9500332, 2000006, 1, 4, 0, 40000), +(9500363, 2000006, 1, 4, 0, 40000), +(8510000, 2000005, 1, 4, 0, 40000), +(8520000, 2000005, 1, 4, 0, 40000), +(9500332, 2000005, 1, 4, 0, 40000), +(9500363, 2000005, 1, 4, 0, 40000), +(8510000, 2043113, 1, 4, 0, 10000), +(8520000, 2043113, 1, 4, 0, 10000), +(9500332, 2043113, 1, 4, 0, 10000), +(9500363, 2043113, 1, 4, 0, 10000), +(8510000, 2040504, 1, 4, 0, 10000), +(8520000, 2040504, 1, 4, 0, 10000), +(9500332, 2040504, 1, 4, 0, 10000), +(9500363, 2040504, 1, 4, 0, 10000), +(8510000, 2040501, 1, 4, 0, 10000), +(8520000, 2040501, 1, 4, 0, 10000), +(9500332, 2040501, 1, 4, 0, 10000), +(9500363, 2040501, 1, 4, 0, 10000), +(8510000, 2040513, 1, 4, 0, 10000), +(8520000, 2040513, 1, 4, 0, 10000), +(9500332, 2040513, 1, 4, 0, 10000), +(9500363, 2040513, 1, 4, 0, 10000), +(8510000, 2040516, 1, 4, 0, 10000), +(8520000, 2040516, 1, 4, 0, 10000), +(9500332, 2040516, 1, 4, 0, 10000), +(9500363, 2040516, 1, 4, 0, 10000), +(8510000, 2040622, 1, 4, 0, 10000), +(8520000, 2040622, 1, 4, 0, 10000), +(9500332, 2040622, 1, 4, 0, 10000), +(9500363, 2040622, 1, 4, 0, 10000), +(8510000, 2040536, 1, 4, 0, 10000), +(8520000, 2040536, 1, 4, 0, 10000), +(9500332, 2040536, 1, 4, 0, 10000), +(9500363, 2040536, 1, 4, 0, 10000), +(8510000, 2040320, 1, 4, 0, 10000), +(8520000, 2040320, 1, 4, 0, 10000), +(9500332, 2040320, 1, 4, 0, 10000), +(9500363, 2040320, 1, 4, 0, 10000), +(8510000, 2040401, 1, 4, 0, 10000), +(8520000, 2040401, 1, 4, 0, 10000), +(9500332, 2040401, 1, 4, 0, 10000), +(9500363, 2040401, 1, 4, 0, 10000), +(8510000, 2049000, 1, 4, 0, 2500), +(8520000, 2049000, 1, 4, 0, 2500), +(9500332, 2049000, 1, 4, 0, 2500), +(9500363, 2049000, 1, 4, 0, 2500), +(8510000, 2290132, 1, 4, 0, 40000), +(8520000, 2290132, 1, 4, 0, 40000), +(9500332, 2290132, 1, 4, 0, 40000), +(9500363, 2290132, 1, 4, 0, 40000), +(8510000, 2388020, 1, 4, 0, 20000), +(8520000, 2388020, 1, 4, 0, 20000), +(9500332, 2388020, 1, 4, 0, 20000), +(9500363, 2388020, 1, 4, 0, 20000), +(8510000, 1322029, 1, 1, 0, 40000), +(8520000, 1322029, 1, 1, 0, 40000), +(9500332, 1322029, 1, 1, 0, 40000), +(9500363, 1322029, 1, 1, 0, 40000), +(8510000, 1041123, 1, 1, 0, 40000), +(8520000, 1041123, 1, 1, 0, 40000), +(9500332, 1041123, 1, 1, 0, 40000), +(9500363, 1041123, 1, 1, 0, 40000), +(8510000, 1061122, 1, 1, 0, 40000), +(8520000, 1061122, 1, 1, 0, 40000), +(9500332, 1061122, 1, 1, 0, 40000), +(9500363, 1061122, 1, 1, 0, 40000), +(8510000, 1040121, 1, 1, 0, 40000), +(8520000, 1040121, 1, 1, 0, 40000), +(9500332, 1040121, 1, 1, 0, 40000), +(9500363, 1040121, 1, 1, 0, 40000), +(8510000, 1060110, 1, 1, 0, 40000), +(8520000, 1060110, 1, 1, 0, 40000), +(9500332, 1060110, 1, 1, 0, 40000), +(9500363, 1060110, 1, 1, 0, 40000), +(8510000, 1412010, 1, 1, 0, 40000), +(8520000, 1412010, 1, 1, 0, 40000), +(9500332, 1412010, 1, 1, 0, 40000), +(9500363, 1412010, 1, 1, 0, 40000), +(8510000, 1302023, 1, 1, 0, 40000), +(8520000, 1302023, 1, 1, 0, 40000), +(9500332, 1302023, 1, 1, 0, 40000), +(9500363, 1302023, 1, 1, 0, 40000), +(8510000, 1402005, 1, 1, 0, 40000), +(8520000, 1402005, 1, 1, 0, 40000), +(9500332, 1402005, 1, 1, 0, 40000), +(9500363, 1402005, 1, 1, 0, 40000), +(8510000, 1051102, 1, 1, 0, 40000), +(8520000, 1051102, 1, 1, 0, 40000), +(9500332, 1051102, 1, 1, 0, 40000), +(9500363, 1051102, 1, 1, 0, 40000), +(8510000, 1050103, 1, 1, 0, 40000), +(8520000, 1050103, 1, 1, 0, 40000), +(9500332, 1050103, 1, 1, 0, 40000), +(9500363, 1050103, 1, 1, 0, 40000), +(8510000, 1051106, 1, 1, 0, 40000), +(8520000, 1051106, 1, 1, 0, 40000), +(9500332, 1051106, 1, 1, 0, 40000), +(9500363, 1051106, 1, 1, 0, 40000), +(8510000, 1050107, 1, 1, 0, 40000), +(8520000, 1050107, 1, 1, 0, 40000), +(9500332, 1050107, 1, 1, 0, 40000), +(9500363, 1050107, 1, 1, 0, 40000), +(8190002, 4000271, 1, 1, 0, 200000), +(8190005, 4000271, 1, 1, 0, 200000), +(8190002, 4006001, 1, 1, 0, 7000), +(8190005, 4006001, 1, 1, 0, 7000), +(8190002, 4006000, 1, 1, 0, 7000), +(8190005, 4006000, 1, 1, 0, 7000), +(8190002, 4000244, 1, 1, 0, 200000), +(8190005, 4000244, 1, 1, 0, 200000), +(8190002, 4000245, 1, 1, 0, 200000), +(8190005, 4000245, 1, 1, 0, 200000), +(8190002, 4130013, 1, 1, 0, 3000), +(8190005, 4130013, 1, 1, 0, 3000), +(8190002, 2387004, 1, 1, 0, 20000), +(8190005, 2387004, 1, 1, 0, 20000), +(8190002, 2022003, 1, 1, 0, 3000), +(8190005, 2022003, 1, 1, 0, 3000), +(8190002, 2000006, 1, 1, 0, 40000), +(8190005, 2000006, 1, 1, 0, 40000), +(8190002, 2000005, 1, 1, 0, 40000), +(8190005, 2000005, 1, 1, 0, 40000), +(8190002, 2043801, 1, 1, 0, 750), +(8190005, 2043801, 1, 1, 0, 750), +(8190002, 2041022, 1, 1, 0, 750), +(8190005, 2041022, 1, 1, 0, 750), +(8190002, 2040707, 1, 1, 0, 750), +(8190005, 2040707, 1, 1, 0, 750), +(8190002, 2044902, 1, 1, 0, 750), +(8190005, 2044902, 1, 1, 0, 750), +(8190002, 2290000, 1, 1, 0, 1000), +(8190005, 2290000, 1, 1, 0, 1000), +(8190002, 2290008, 1, 1, 0, 1000), +(8190005, 2290008, 1, 1, 0, 1000), +(8190002, 2290018, 1, 1, 0, 1000), +(8190005, 2290018, 1, 1, 0, 1000), +(8190002, 2290038, 1, 1, 0, 1000), +(8190005, 2290038, 1, 1, 0, 1000), +(8190002, 2290060, 1, 1, 0, 1000), +(8190005, 2290060, 1, 1, 0, 1000), +(8190002, 2290080, 1, 1, 0, 1000), +(8190005, 2290080, 1, 1, 0, 1000), +(8190002, 2290124, 1, 1, 0, 1000), +(8190005, 2290124, 1, 1, 0, 1000), +(8190002, 4004003, 1, 1, 0, 3000), +(8190005, 4004003, 1, 1, 0, 3000), +(8190002, 4020007, 1, 1, 0, 7000), +(8190005, 4020007, 1, 1, 0, 7000), +(8190002, 4010005, 1, 1, 0, 7000), +(8190005, 4010005, 1, 1, 0, 7000), +(8190002, 1032023, 1, 1, 0, 700), +(8190005, 1032023, 1, 1, 0, 700), +(8190002, 1412021, 1, 1, 0, 700), +(8190005, 1412021, 1, 1, 0, 700), +(8190002, 1082139, 1, 1, 0, 700), +(8190005, 1082139, 1, 1, 0, 700), +(8190002, 1072225, 1, 1, 0, 700), +(8190005, 1072225, 1, 1, 0, 700), +(8190002, 1082152, 1, 1, 0, 700), +(8190005, 1082152, 1, 1, 0, 700), +(8190002, 1051101, 1, 1, 0, 700), +(8190005, 1051101, 1, 1, 0, 700), +(8190002, 1452019, 1, 1, 0, 700), +(8190005, 1452019, 1, 1, 0, 700), +(8190002, 1002406, 1, 1, 0, 700), +(8190005, 1002406, 1, 1, 0, 700), +(8190002, 1492012, 1, 1, 0, 700), +(8190005, 1492012, 1, 1, 0, 700), +(8190002, 1082213, 1, 1, 0, 700), +(8190005, 1082213, 1, 1, 0, 700), +(8190003, 4000274, 1, 1, 0, 200000), +(8190003, 4006000, 1, 1, 0, 7000), +(8190003, 2044602, 1, 1, 0, 750), +(8190003, 2044904, 1, 1, 0, 750), +(8190003, 2387002, 1, 1, 0, 20000), +(8190003, 2290062, 1, 1, 0, 1000), +(8190003, 4004001, 1, 1, 0, 3000), +(8190003, 4020001, 1, 1, 0, 7000), +(8190003, 4010001, 1, 1, 0, 7000), +(8190003, 1032017, 1, 1, 0, 700), +(8190003, 1002377, 1, 1, 0, 700), +(8190003, 1072221, 1, 1, 0, 700), +(8190003, 1302056, 1, 1, 0, 700), +(8190003, 1082140, 1, 1, 0, 700), +(8190003, 1422027, 1, 1, 0, 700), +(8190003, 1050103, 1, 1, 0, 700), +(8190003, 1050107, 1, 1, 0, 700), +(8190003, 1082135, 1, 1, 0, 700), +(8190003, 1332051, 1, 1, 0, 700), +(8190003, 1072318, 1, 1, 0, 700), +(8190003, 1482011, 1, 1, 0, 700), +(9400575, 1032023, 1, 1, 0, 40000), +(8190004, 4000273, 1, 1, 0, 200000), +(8190004, 4000244, 1, 1, 0, 200000), +(8190004, 4130022, 1, 1, 0, 3000), +(8190004, 2022003, 1, 1, 0, 3000), +(8190004, 4006001, 1, 1, 0, 7000), +(8190004, 2041013, 1, 1, 0, 750), +(8190004, 2041045, 1, 1, 0, 750), +(8190004, 2387003, 1, 1, 0, 20000), +(8190004, 2040530, 1, 1, 0, 750), +(8190004, 2290052, 1, 1, 0, 1000), +(8190004, 2290058, 1, 1, 0, 1000), +(8190004, 2290130, 1, 1, 0, 1000), +(8190004, 2290090, 1, 1, 0, 1000), +(8190004, 4004004, 1, 1, 0, 3000), +(8190004, 4020002, 1, 1, 0, 7000), +(8190004, 4020006, 1, 1, 0, 7000), +(8190004, 1040121, 1, 1, 0, 700), +(8190004, 1060109, 1, 1, 0, 700), +(8190004, 1322045, 1, 1, 0, 700), +(8190004, 1092042, 1, 1, 0, 700), +(8190004, 1051102, 1, 1, 0, 700), +(8190004, 1082151, 1, 1, 0, 700), +(8190004, 1052076, 1, 1, 0, 700), +(8190004, 1072215, 1, 1, 0, 700), +(8190004, 1002380, 1, 1, 0, 700), +(8190004, 1082135, 1, 1, 0, 700), +(8190004, 1082213, 1, 1, 0, 700), +(8190004, 1482012, 1, 1, 0, 700), +(8200007, 4000452, 1, 1, 0, 200000), +(8200007, 4000459, 1, 1, 0, 200000), +(8200007, 4130020, 1, 1, 0, 3000), +(8200007, 4130007, 1, 1, 0, 3000), +(8200007, 2000006, 1, 1, 0, 40000), +(8200007, 2022003, 1, 1, 0, 3000), +(8200007, 2040302, 1, 1, 0, 750), +(8200007, 2040701, 1, 1, 0, 750), +(8200007, 2044301, 1, 1, 0, 750), +(8200007, 2290006, 1, 1, 0, 1000), +(8200007, 2290136, 1, 1, 0, 1000), +(8200007, 2387008, 1, 1, 0, 20000), +(8200007, 4004002, 1, 1, 0, 3000), +(8200007, 4010004, 1, 1, 0, 7000), +(8200007, 4020004, 1, 1, 0, 7000), +(8200007, 4020009, 1, 1, 0, 7000), +(8200007, 1040121, 1, 1, 0, 700), +(8200007, 1041124, 1, 1, 0, 700), +(8200007, 1422027, 1, 1, 0, 700), +(8200007, 1002400, 1, 1, 0, 700), +(8200007, 1462018, 1, 1, 0, 700), +(8200007, 1332052, 1, 1, 0, 700), +(8200007, 1082213, 1, 1, 0, 700), +(9300028, 2388021, 1, 4, 0, 20000), +(9400014, 4000224, 1, 1, 0, 200000), +(9400014, 4031902, 1, 1, 0, 7000), +(9400014, 2022025, 1, 4, 0, 3000), +(9400014, 2022026, 1, 4, 0, 3000), +(9400014, 2000004, 1, 4, 0, 40000), +(9400014, 2041034, 1, 4, 0, 10000), +(9400014, 2041035, 1, 4, 0, 10000), +(9400014, 2041036, 1, 4, 0, 10000), +(9400014, 2041043, 1, 4, 0, 10000), +(9400014, 2040720, 1, 4, 0, 10000), +(9400014, 2040719, 1, 4, 0, 10000), +(9400014, 1102030, 1, 1, 0, 40000), +(9400014, 1032027, 1, 1, 0, 40000), +(9400014, 1402037, 1, 1, 0, 40000), +(9400014, 1372011, 1, 1, 0, 40000), +(8200008, 4000453, 1, 1, 0, 200000), +(8200008, 4000459, 1, 1, 0, 200000), +(8200008, 4130008, 1, 1, 0, 3000), +(8200008, 2000006, 1, 1, 0, 40000), +(8200008, 2022003, 1, 1, 0, 3000), +(8200008, 2330004, 1, 1, 0, 400), +(8200008, 2044101, 1, 1, 0, 750), +(8200008, 2044501, 1, 1, 0, 750), +(8200008, 2290006, 1, 1, 0, 1000), +(8200008, 2290133, 1, 1, 0, 1000), +(8200008, 2387009, 1, 1, 0, 20000), +(8200008, 4004000, 1, 1, 0, 3000), +(8200008, 4010005, 1, 1, 0, 7000), +(8200008, 4020009, 1, 1, 0, 7000), +(8200008, 1060111, 1, 1, 0, 700), +(8200008, 1061123, 1, 1, 0, 700), +(8200008, 1050104, 1, 1, 0, 700), +(8200008, 1002407, 1, 1, 0, 700), +(8200008, 1472033, 1, 1, 0, 700), +(8200008, 1472053, 1, 1, 0, 700), +(8200008, 1072318, 1, 1, 0, 700), +(9400582, 4032012, 1, 1, 0, 10000), +(9400582, 2000005, 1, 1, 0, 40000), +(9400582, 2290010, 1, 1, 0, 1000), +(9400582, 4004000, 1, 1, 0, 3000), +(8220003, 4000269, 1, 1, 0, 200000), +(9300213, 4000269, 1, 1, 0, 200000), +(9500333, 4000269, 1, 1, 0, 200000), +(9500361, 4000269, 1, 1, 0, 200000), +(9303016, 4000269, 1, 1, 0, 200000), +(8220003, 4000268, 1, 1, 0, 200000), +(9300213, 4000268, 1, 1, 0, 200000), +(9500333, 4000268, 1, 1, 0, 200000), +(9500361, 4000268, 1, 1, 0, 200000), +(9303016, 4000268, 1, 1, 0, 200000), +(8220003, 4000270, 1, 1, 0, 200000), +(9300213, 4000270, 1, 1, 0, 200000), +(9500333, 4000270, 1, 1, 0, 200000), +(9500361, 4000270, 1, 1, 0, 200000), +(9303016, 4000270, 1, 1, 0, 200000), +(8220003, 4006001, 1, 1, 0, 7000), +(9300213, 4006001, 1, 1, 0, 7000), +(9500333, 4006001, 1, 1, 0, 7000), +(9500361, 4006001, 1, 1, 0, 7000), +(9303016, 4006001, 1, 1, 0, 7000), +(8220003, 4006000, 1, 1, 0, 7000), +(9300213, 4006000, 1, 1, 0, 7000), +(9500333, 4006000, 1, 1, 0, 7000), +(9500361, 4006000, 1, 1, 0, 7000), +(9303016, 4006000, 1, 1, 0, 7000), +(8220003, 2388033, 1, 4, 0, 20000), +(9300213, 2388033, 1, 4, 0, 20000), +(9500333, 2388033, 1, 4, 0, 20000), +(9500361, 2388033, 1, 4, 0, 20000), +(9303016, 2388033, 1, 1, 0, 20000), +(8220003, 2000005, 1, 4, 0, 40000), +(9300213, 2000005, 1, 4, 0, 40000), +(9500333, 2000005, 1, 4, 0, 40000), +(9500361, 2000005, 1, 4, 0, 40000), +(9303016, 2000005, 1, 1, 0, 40000), +(8220003, 2000006, 1, 4, 0, 40000), +(9300213, 2000006, 1, 4, 0, 40000), +(9500333, 2000006, 1, 4, 0, 40000), +(9500361, 2000006, 1, 4, 0, 40000), +(9303016, 2000006, 1, 1, 0, 40000), +(8220003, 2020013, 1, 4, 0, 3000), +(9300213, 2020013, 1, 4, 0, 3000), +(9500333, 2020013, 1, 4, 0, 3000), +(9500361, 2020013, 1, 4, 0, 3000), +(9303016, 2020013, 1, 1, 0, 3000), +(8220003, 2290006, 1, 4, 0, 40000), +(9300213, 2290006, 1, 4, 0, 40000), +(9500333, 2290006, 1, 4, 0, 40000), +(9500361, 2290006, 1, 4, 0, 40000), +(9303016, 2290006, 1, 1, 0, 1000), +(8220003, 2290030, 1, 4, 0, 40000), +(9300213, 2290030, 1, 4, 0, 40000), +(9500333, 2290030, 1, 4, 0, 40000), +(9500361, 2290030, 1, 4, 0, 40000), +(9303016, 2290030, 1, 1, 0, 1000), +(8220003, 2290032, 1, 4, 0, 40000), +(9300213, 2290032, 1, 4, 0, 40000), +(9500333, 2290032, 1, 4, 0, 40000), +(9500361, 2290032, 1, 4, 0, 40000), +(9303016, 2290032, 1, 1, 0, 1000), +(8220003, 2290060, 1, 4, 0, 40000), +(9300213, 2290060, 1, 4, 0, 40000), +(9500333, 2290060, 1, 4, 0, 40000), +(9500361, 2290060, 1, 4, 0, 40000), +(9303016, 2290060, 1, 1, 0, 1000), +(8220003, 2290076, 1, 4, 0, 40000), +(9300213, 2290076, 1, 4, 0, 40000), +(9500333, 2290076, 1, 4, 0, 40000), +(9500361, 2290076, 1, 4, 0, 40000), +(9303016, 2290076, 1, 1, 0, 1000), +(8220003, 2290104, 1, 4, 0, 40000), +(9300213, 2290104, 1, 4, 0, 40000), +(9500333, 2290104, 1, 4, 0, 40000), +(9500361, 2290104, 1, 4, 0, 40000), +(9303016, 2290104, 1, 1, 0, 1000), +(8220003, 2290117, 1, 4, 0, 40000), +(9300213, 2290117, 1, 4, 0, 40000), +(9500333, 2290117, 1, 4, 0, 40000), +(9500361, 2290117, 1, 4, 0, 40000), +(9303016, 2290117, 1, 1, 0, 1000), +(8220003, 2040825, 1, 4, 0, 10000), +(9300213, 2040825, 1, 4, 0, 10000), +(9500333, 2040825, 1, 4, 0, 10000), +(9500361, 2040825, 1, 4, 0, 10000), +(9303016, 2040825, 1, 1, 0, 750), +(8220003, 2044213, 1, 4, 0, 10000), +(9300213, 2044213, 1, 4, 0, 10000), +(9500333, 2044213, 1, 4, 0, 10000), +(9500361, 2044213, 1, 4, 0, 10000), +(9303016, 2044213, 1, 1, 0, 750), +(8220003, 1302056, 1, 1, 0, 40000), +(9300213, 1302056, 1, 1, 0, 40000), +(9500333, 1302056, 1, 1, 0, 40000), +(9500361, 1302056, 1, 1, 0, 40000), +(9303016, 1302056, 1, 1, 0, 700), +(8220003, 1312030, 1, 1, 0, 40000), +(9300213, 1312030, 1, 1, 0, 40000), +(9500333, 1312030, 1, 1, 0, 40000), +(9500361, 1312030, 1, 1, 0, 40000), +(9303016, 1312030, 1, 1, 0, 700), +(8220003, 1322045, 1, 1, 0, 40000), +(9300213, 1322045, 1, 1, 0, 40000), +(9500333, 1322045, 1, 1, 0, 40000), +(9500361, 1322045, 1, 1, 0, 40000), +(9303016, 1322045, 1, 1, 0, 700), +(8220003, 1402035, 1, 1, 0, 40000), +(9300213, 1402035, 1, 1, 0, 40000), +(9500333, 1402035, 1, 1, 0, 40000), +(9500361, 1402035, 1, 1, 0, 40000), +(9303016, 1402035, 1, 1, 0, 700), +(8220003, 1412021, 1, 1, 0, 40000), +(9300213, 1412021, 1, 1, 0, 40000), +(9500333, 1412021, 1, 1, 0, 40000), +(9500361, 1412021, 1, 1, 0, 40000), +(9303016, 1412021, 1, 1, 0, 700), +(8220003, 1422027, 1, 1, 0, 40000), +(9300213, 1422027, 1, 1, 0, 40000), +(9500333, 1422027, 1, 1, 0, 40000), +(9500361, 1422027, 1, 1, 0, 40000), +(9303016, 1422027, 1, 1, 0, 700), +(8220003, 1432030, 1, 1, 0, 40000), +(9300213, 1432030, 1, 1, 0, 40000), +(9500333, 1432030, 1, 1, 0, 40000), +(9500361, 1432030, 1, 1, 0, 40000), +(9303016, 1432030, 1, 1, 0, 700), +(8220003, 1442044, 1, 1, 0, 40000), +(9300213, 1442044, 1, 1, 0, 40000), +(9500333, 1442044, 1, 1, 0, 40000), +(9500361, 1442044, 1, 1, 0, 40000), +(9303016, 1442044, 1, 1, 0, 700), +(8220003, 1382035, 1, 1, 0, 40000), +(9300213, 1382035, 1, 1, 0, 40000), +(9500333, 1382035, 1, 1, 0, 40000), +(9500361, 1382035, 1, 1, 0, 40000), +(9303016, 1382035, 1, 1, 0, 700), +(8220003, 1372010, 1, 1, 0, 40000), +(9300213, 1372010, 1, 1, 0, 40000), +(9500333, 1372010, 1, 1, 0, 40000), +(9500361, 1372010, 1, 1, 0, 40000), +(9303016, 1372010, 1, 1, 0, 700), +(8220003, 1452019, 1, 1, 0, 40000), +(9300213, 1452019, 1, 1, 0, 40000), +(9500333, 1452019, 1, 1, 0, 40000), +(9500361, 1452019, 1, 1, 0, 40000), +(9303016, 1452019, 1, 1, 0, 700), +(8220003, 1462015, 1, 1, 0, 40000), +(9300213, 1462015, 1, 1, 0, 40000), +(9500333, 1462015, 1, 1, 0, 40000), +(9500361, 1462015, 1, 1, 0, 40000), +(9303016, 1462015, 1, 1, 0, 700), +(8220003, 1332052, 1, 1, 0, 40000), +(9300213, 1332052, 1, 1, 0, 40000), +(9500333, 1332052, 1, 1, 0, 40000), +(9500361, 1332052, 1, 1, 0, 40000), +(9303016, 1332052, 1, 1, 0, 700), +(8220003, 1472053, 1, 1, 0, 40000), +(9300213, 1472053, 1, 1, 0, 40000), +(9500333, 1472053, 1, 1, 0, 40000), +(9500361, 1472053, 1, 1, 0, 40000), +(9303016, 1472053, 1, 1, 0, 700), +(8220003, 1332051, 1, 1, 0, 40000), +(9300213, 1332051, 1, 1, 0, 40000), +(9500333, 1332051, 1, 1, 0, 40000), +(9500361, 1332051, 1, 1, 0, 40000), +(9303016, 1332051, 1, 1, 0, 700), +(8220003, 1482012, 1, 1, 0, 40000), +(9300213, 1482012, 1, 1, 0, 40000), +(9500333, 1482012, 1, 1, 0, 40000), +(9500361, 1482012, 1, 1, 0, 40000), +(9303016, 1482012, 1, 1, 0, 700), +(8220003, 1492012, 1, 1, 0, 40000), +(9300213, 1492012, 1, 1, 0, 40000), +(9500333, 1492012, 1, 1, 0, 40000), +(9500361, 1492012, 1, 1, 0, 40000), +(9303016, 1492012, 1, 1, 0, 700), +(8200009, 4000454, 1, 1, 0, 200000), +(8200009, 4000456, 1, 1, 0, 200000), +(8200009, 4130000, 1, 1, 0, 3000), +(8200009, 4130009, 1, 1, 0, 3000), +(8200009, 2000006, 1, 1, 0, 40000), +(8200009, 2022003, 1, 1, 0, 3000), +(8200009, 2387010, 1, 1, 0, 20000), +(8200009, 2044601, 1, 1, 0, 750), +(8200009, 2040925, 1, 1, 0, 750), +(8200009, 4004001, 1, 1, 0, 3000), +(8200009, 4010000, 1, 1, 0, 7000), +(8200009, 4020009, 1, 1, 0, 7000), +(8200009, 1072221, 1, 1, 0, 700), +(8200009, 1402035, 1, 1, 0, 700), +(8200009, 1432011, 1, 1, 0, 700), +(8200009, 1082153, 1, 1, 0, 700), +(8200009, 1050108, 1, 1, 0, 700), +(8200009, 1002381, 1, 1, 0, 700), +(8200009, 1492011, 1, 1, 0, 700), +(8220004, 2000005, 1, 4, 0, 40000), +(8220004, 2000006, 1, 4, 0, 40000), +(8220004, 2020013, 1, 4, 0, 3000), +(8220004, 2040026, 1, 4, 0, 10000), +(8220004, 2040030, 1, 4, 0, 10000), +(8220004, 2040324, 1, 4, 0, 10000), +(8220004, 2040327, 1, 4, 0, 10000), +(8220004, 2040925, 1, 4, 0, 10000), +(8220004, 2049000, 1, 4, 0, 2500), +(8220004, 2290018, 1, 4, 0, 40000), +(8220004, 2290019, 1, 4, 0, 40000), +(8220004, 2290024, 1, 4, 0, 40000), +(8220004, 2290058, 1, 4, 0, 40000), +(8220004, 2290076, 1, 4, 0, 40000), +(8220004, 2290106, 1, 4, 0, 40000), +(8220004, 4006000, 1, 1, 0, 7000), +(8220004, 4006001, 1, 1, 0, 7000), +(8220004, 2290127, 1, 4, 0, 40000), +(8220004, 2290134, 1, 4, 0, 40000), +(8220004, 2388040, 1, 4, 0, 20000), +(8220004, 4020009, 1, 1, 0, 7000), +(8220004, 1082141, 1, 1, 0, 40000), +(8220004, 1322045, 1, 1, 0, 40000), +(8220004, 1050105, 1, 1, 0, 40000), +(8220004, 1372010, 1, 1, 0, 40000), +(8220004, 1002405, 1, 1, 0, 40000), +(8220004, 1332052, 1, 1, 0, 40000), +(8220004, 1072318, 1, 1, 0, 40000), +(8200010, 4000455, 1, 1, 0, 200000), +(8200010, 4000456, 1, 1, 0, 200000), +(8200010, 4130001, 1, 1, 0, 3000), +(8200010, 4130010, 1, 1, 0, 3000), +(8200010, 2000005, 1, 1, 0, 40000), +(8200010, 2000006, 1, 1, 0, 40000), +(8200010, 2022003, 1, 1, 0, 3000), +(8200010, 2041022, 1, 1, 0, 750), +(8200010, 2043801, 1, 1, 0, 750), +(8200010, 2290088, 1, 1, 0, 1000), +(8200010, 2387011, 1, 1, 0, 20000), +(8200010, 4004003, 1, 1, 0, 3000), +(8200010, 4010002, 1, 1, 0, 7000), +(8200010, 4020000, 1, 1, 0, 7000), +(8200010, 4020009, 1, 1, 0, 7000), +(8200010, 1312030, 1, 1, 0, 700), +(8200010, 1432030, 1, 1, 0, 700), +(8200010, 1072225, 1, 1, 0, 700), +(8200010, 1082158, 1, 1, 0, 700), +(8200010, 1002646, 1, 1, 0, 700), +(8500002, 4031196, 1, 1, 0, 7000), +(9300214, 4031196, 1, 1, 0, 7000), +(9500180, 4031196, 1, 1, 0, 7000), +(9500181, 4031196, 1, 1, 0, 7000), +(9500331, 4031196, 1, 1, 0, 7000), +(9500362, 4031196, 1, 1, 0, 7000), +(8500002, 4031901, 1, 1, 0, 7000), +(9300214, 4031901, 1, 1, 0, 7000), +(9500180, 4031901, 1, 1, 0, 7000), +(9500181, 4031901, 1, 1, 0, 7000), +(9500331, 4031901, 1, 1, 0, 7000), +(9500362, 4031901, 1, 1, 0, 7000), +(8500002, 4001084, 1, 1, 0, 7000), +(9300214, 4001084, 1, 1, 0, 7000), +(9500180, 4001084, 1, 1, 0, 7000), +(9500181, 4001084, 1, 1, 0, 7000), +(9500331, 4001084, 1, 1, 0, 7000), +(9500362, 4001084, 1, 1, 0, 7000), +(8500002, 2020013, 1, 4, 0, 3000), +(9300214, 2020013, 1, 4, 0, 3000), +(9500180, 2020013, 1, 4, 0, 3000), +(9500181, 2020013, 1, 4, 0, 3000), +(9500331, 2020013, 1, 4, 0, 3000), +(9500362, 2020013, 1, 4, 0, 3000), +(8500002, 2000005, 1, 4, 0, 40000), +(9300214, 2000005, 1, 4, 0, 40000), +(9500180, 2000005, 1, 4, 0, 40000), +(9500181, 2000005, 1, 4, 0, 40000), +(9500331, 2000005, 1, 4, 0, 40000), +(9500362, 2000005, 1, 4, 0, 40000), +(8500002, 2000006, 1, 4, 0, 40000), +(9300214, 2000006, 1, 4, 0, 40000), +(9500180, 2000006, 1, 4, 0, 40000), +(9500181, 2000006, 1, 4, 0, 40000), +(9500331, 2000006, 1, 4, 0, 40000), +(9500362, 2000006, 1, 4, 0, 40000), +(8500002, 2020015, 1, 4, 0, 3000), +(9300214, 2020015, 1, 4, 0, 3000), +(9500180, 2020015, 1, 4, 0, 3000), +(9500181, 2020015, 1, 4, 0, 3000), +(9500331, 2020015, 1, 4, 0, 3000), +(9500362, 2020015, 1, 4, 0, 3000), +(8500002, 2041016, 1, 4, 0, 10000), +(9300214, 2041016, 1, 4, 0, 10000), +(9500180, 2041016, 1, 4, 0, 10000), +(9500181, 2041016, 1, 4, 0, 10000), +(9500331, 2041016, 1, 4, 0, 10000), +(9500362, 2041016, 1, 4, 0, 10000), +(8500002, 2041013, 1, 4, 0, 10000), +(9300214, 2041013, 1, 4, 0, 10000), +(9500180, 2041013, 1, 4, 0, 10000), +(9500181, 2041013, 1, 4, 0, 10000), +(9500331, 2041013, 1, 4, 0, 10000), +(9500362, 2041013, 1, 4, 0, 10000), +(8500002, 2041022, 1, 4, 0, 10000), +(9300214, 2041022, 1, 4, 0, 10000), +(9500180, 2041022, 1, 4, 0, 10000), +(9500181, 2041022, 1, 4, 0, 10000), +(9500331, 2041022, 1, 4, 0, 10000), +(9500362, 2041022, 1, 4, 0, 10000), +(8500002, 2041019, 1, 4, 0, 10000), +(9300214, 2041019, 1, 4, 0, 10000), +(9500180, 2041019, 1, 4, 0, 10000), +(9500181, 2041019, 1, 4, 0, 10000), +(9500331, 2041019, 1, 4, 0, 10000), +(9500362, 2041019, 1, 4, 0, 10000), +(8500002, 2049101, 1, 4, 0, 2500), +(9300214, 2049101, 1, 4, 0, 2500), +(9500180, 2049101, 1, 4, 0, 2500), +(9500181, 2049101, 1, 4, 0, 2500), +(9500331, 2049101, 1, 4, 0, 2500), +(9500362, 2049101, 1, 4, 0, 2500), +(8500002, 2290126, 1, 4, 0, 40000), +(9300214, 2290126, 1, 4, 0, 40000), +(9500180, 2290126, 1, 4, 0, 40000), +(9500181, 2290126, 1, 4, 0, 40000), +(9500331, 2290126, 1, 4, 0, 40000), +(9500362, 2290126, 1, 4, 0, 40000), +(8500002, 2290010, 1, 4, 0, 40000), +(9300214, 2290010, 1, 4, 0, 40000), +(9500180, 2290010, 1, 4, 0, 40000), +(9500181, 2290010, 1, 4, 0, 40000), +(9500331, 2290010, 1, 4, 0, 40000), +(9500362, 2290010, 1, 4, 0, 40000), +(8500002, 2290028, 1, 4, 0, 40000), +(9300214, 2290028, 1, 4, 0, 40000), +(9500180, 2290028, 1, 4, 0, 40000), +(9500181, 2290028, 1, 4, 0, 40000), +(9500331, 2290028, 1, 4, 0, 40000), +(9500362, 2290028, 1, 4, 0, 40000), +(8500002, 2388022, 1, 4, 0, 20000), +(9300214, 2388022, 1, 4, 0, 20000), +(9500180, 2388022, 1, 4, 0, 20000), +(9500181, 2388022, 1, 4, 0, 20000), +(9500331, 2388022, 1, 4, 0, 20000), +(9500362, 2388022, 1, 4, 0, 20000), +(8500002, 1072211, 1, 1, 0, 40000), +(9300214, 1072211, 1, 1, 0, 40000), +(9500180, 1072211, 1, 1, 0, 40000), +(9500181, 1072211, 1, 1, 0, 40000), +(9500331, 1072211, 1, 1, 0, 40000), +(9500362, 1072211, 1, 1, 0, 40000), +(8500002, 1041120, 1, 1, 0, 40000), +(9300214, 1041120, 1, 1, 0, 40000), +(9500180, 1041120, 1, 1, 0, 40000), +(9500181, 1041120, 1, 1, 0, 40000), +(9500331, 1041120, 1, 1, 0, 40000), +(9500362, 1041120, 1, 1, 0, 40000), +(8500002, 1312015, 1, 1, 0, 40000), +(9300214, 1312015, 1, 1, 0, 40000), +(9500180, 1312015, 1, 1, 0, 40000), +(9500181, 1312015, 1, 1, 0, 40000), +(9500331, 1312015, 1, 1, 0, 40000), +(9500362, 1312015, 1, 1, 0, 40000), +(8500002, 1072198, 1, 1, 0, 40000), +(9300214, 1072198, 1, 1, 0, 40000), +(9500180, 1072198, 1, 1, 0, 40000), +(9500181, 1072198, 1, 1, 0, 40000), +(9500331, 1072198, 1, 1, 0, 40000), +(9500362, 1072198, 1, 1, 0, 40000), +(8500002, 1061119, 1, 1, 0, 40000), +(9300214, 1061119, 1, 1, 0, 40000), +(9500180, 1061119, 1, 1, 0, 40000), +(9500181, 1061119, 1, 1, 0, 40000), +(9500331, 1061119, 1, 1, 0, 40000), +(9500362, 1061119, 1, 1, 0, 40000), +(8500002, 1040112, 1, 1, 0, 40000), +(9300214, 1040112, 1, 1, 0, 40000), +(9500180, 1040112, 1, 1, 0, 40000), +(9500181, 1040112, 1, 1, 0, 40000), +(9500331, 1040112, 1, 1, 0, 40000), +(9500362, 1040112, 1, 1, 0, 40000), +(8500002, 1060101, 1, 1, 0, 40000), +(9300214, 1060101, 1, 1, 0, 40000), +(9500180, 1060101, 1, 1, 0, 40000), +(9500181, 1060101, 1, 1, 0, 40000), +(9500331, 1060101, 1, 1, 0, 40000), +(9500362, 1060101, 1, 1, 0, 40000), +(8500002, 1332026, 1, 1, 0, 40000), +(9300214, 1332026, 1, 1, 0, 40000), +(9500180, 1332026, 1, 1, 0, 40000), +(9500181, 1332026, 1, 1, 0, 40000), +(9500331, 1332026, 1, 1, 0, 40000), +(9500362, 1332026, 1, 1, 0, 40000), +(8500002, 1040120, 1, 1, 0, 40000), +(9300214, 1040120, 1, 1, 0, 40000), +(9500180, 1040120, 1, 1, 0, 40000), +(9500181, 1040120, 1, 1, 0, 40000), +(9500331, 1040120, 1, 1, 0, 40000), +(9500362, 1040120, 1, 1, 0, 40000), +(8500002, 1072221, 1, 1, 0, 40000), +(9300214, 1072221, 1, 1, 0, 40000), +(9500180, 1072221, 1, 1, 0, 40000), +(9500181, 1072221, 1, 1, 0, 40000), +(9500331, 1072221, 1, 1, 0, 40000), +(9500362, 1072221, 1, 1, 0, 40000), +(8500002, 1072220, 1, 1, 0, 40000), +(9300214, 1072220, 1, 1, 0, 40000), +(9500180, 1072220, 1, 1, 0, 40000), +(9500181, 1072220, 1, 1, 0, 40000), +(9500331, 1072220, 1, 1, 0, 40000), +(9500362, 1072220, 1, 1, 0, 40000), +(8500002, 1041122, 1, 1, 0, 40000), +(9300214, 1041122, 1, 1, 0, 40000), +(9500180, 1041122, 1, 1, 0, 40000), +(9500181, 1041122, 1, 1, 0, 40000), +(9500331, 1041122, 1, 1, 0, 40000), +(9500362, 1041122, 1, 1, 0, 40000), +(8500002, 1060109, 1, 1, 0, 40000), +(9300214, 1060109, 1, 1, 0, 40000), +(9500180, 1060109, 1, 1, 0, 40000), +(9500181, 1060109, 1, 1, 0, 40000), +(9500331, 1060109, 1, 1, 0, 40000), +(9500362, 1060109, 1, 1, 0, 40000), +(8500002, 1002377, 1, 1, 0, 40000), +(9300214, 1002377, 1, 1, 0, 40000), +(9500180, 1002377, 1, 1, 0, 40000), +(9500181, 1002377, 1, 1, 0, 40000), +(9500331, 1002377, 1, 1, 0, 40000), +(9500362, 1002377, 1, 1, 0, 40000), +(8500002, 1072178, 1, 1, 0, 40000), +(9300214, 1072178, 1, 1, 0, 40000), +(9500180, 1072178, 1, 1, 0, 40000), +(9500181, 1072178, 1, 1, 0, 40000), +(9500331, 1072178, 1, 1, 0, 40000), +(9500362, 1072178, 1, 1, 0, 40000), +(8500002, 1050094, 1, 1, 0, 40000), +(9300214, 1050094, 1, 1, 0, 40000), +(9500180, 1050094, 1, 1, 0, 40000), +(9500181, 1050094, 1, 1, 0, 40000), +(9500331, 1050094, 1, 1, 0, 40000), +(9500362, 1050094, 1, 1, 0, 40000), +(8500002, 1050095, 1, 1, 0, 40000), +(9300214, 1050095, 1, 1, 0, 40000), +(9500180, 1050095, 1, 1, 0, 40000), +(9500181, 1050095, 1, 1, 0, 40000), +(9500331, 1050095, 1, 1, 0, 40000), +(9500362, 1050095, 1, 1, 0, 40000), +(8500002, 1372009, 1, 1, 0, 40000), +(9300214, 1372009, 1, 1, 0, 40000), +(9500180, 1372009, 1, 1, 0, 40000), +(9500181, 1372009, 1, 1, 0, 40000), +(9500331, 1372009, 1, 1, 0, 40000), +(9500362, 1372009, 1, 1, 0, 40000), +(8500002, 1072224, 1, 1, 0, 40000), +(9300214, 1072224, 1, 1, 0, 40000), +(9500180, 1072224, 1, 1, 0, 40000), +(9500181, 1072224, 1, 1, 0, 40000), +(9500331, 1072224, 1, 1, 0, 40000), +(9500362, 1072224, 1, 1, 0, 40000), +(8500002, 1051101, 1, 1, 0, 40000), +(9300214, 1051101, 1, 1, 0, 40000), +(9500180, 1051101, 1, 1, 0, 40000), +(9500181, 1051101, 1, 1, 0, 40000), +(9500331, 1051101, 1, 1, 0, 40000), +(9500362, 1051101, 1, 1, 0, 40000), +(8500002, 1050102, 1, 1, 0, 40000), +(9300214, 1050102, 1, 1, 0, 40000), +(9500180, 1050102, 1, 1, 0, 40000), +(9500181, 1050102, 1, 1, 0, 40000), +(9500331, 1050102, 1, 1, 0, 40000), +(9500362, 1050102, 1, 1, 0, 40000), +(8500002, 1051085, 1, 1, 0, 40000), +(9300214, 1051085, 1, 1, 0, 40000), +(9500180, 1051085, 1, 1, 0, 40000), +(9500181, 1051085, 1, 1, 0, 40000), +(9500331, 1051085, 1, 1, 0, 40000), +(9500362, 1051085, 1, 1, 0, 40000), +(8500002, 1072183, 1, 1, 0, 40000), +(9300214, 1072183, 1, 1, 0, 40000), +(9500180, 1072183, 1, 1, 0, 40000), +(9500181, 1072183, 1, 1, 0, 40000), +(9500331, 1072183, 1, 1, 0, 40000), +(9500362, 1072183, 1, 1, 0, 40000), +(8500002, 1002405, 1, 1, 0, 40000), +(9300214, 1002405, 1, 1, 0, 40000), +(9500180, 1002405, 1, 1, 0, 40000), +(9500181, 1002405, 1, 1, 0, 40000), +(9500331, 1002405, 1, 1, 0, 40000), +(9500362, 1002405, 1, 1, 0, 40000), +(8500002, 1050090, 1, 1, 0, 40000), +(9300214, 1050090, 1, 1, 0, 40000), +(9500180, 1050090, 1, 1, 0, 40000), +(9500181, 1050090, 1, 1, 0, 40000), +(9500331, 1050090, 1, 1, 0, 40000), +(9500362, 1050090, 1, 1, 0, 40000), +(8500002, 1462018, 1, 1, 0, 40000), +(9300214, 1462018, 1, 1, 0, 40000), +(9500180, 1462018, 1, 1, 0, 40000), +(9500181, 1462018, 1, 1, 0, 40000), +(9500331, 1462018, 1, 1, 0, 40000), +(9500362, 1462018, 1, 1, 0, 40000), +(8500002, 1082127, 1, 1, 0, 40000), +(9300214, 1082127, 1, 1, 0, 40000), +(9500180, 1082127, 1, 1, 0, 40000), +(9500181, 1082127, 1, 1, 0, 40000), +(9500331, 1082127, 1, 1, 0, 40000), +(9500362, 1082127, 1, 1, 0, 40000), +(8500002, 1050106, 1, 1, 0, 40000), +(9300214, 1050106, 1, 1, 0, 40000), +(9500180, 1050106, 1, 1, 0, 40000), +(9500181, 1050106, 1, 1, 0, 40000), +(9500331, 1050106, 1, 1, 0, 40000), +(9500362, 1050106, 1, 1, 0, 40000), +(8500002, 1051105, 1, 1, 0, 40000), +(9300214, 1051105, 1, 1, 0, 40000), +(9500180, 1051105, 1, 1, 0, 40000), +(9500181, 1051105, 1, 1, 0, 40000), +(9500331, 1051105, 1, 1, 0, 40000), +(9500362, 1051105, 1, 1, 0, 40000), +(8500002, 1072227, 1, 1, 0, 40000), +(9300214, 1072227, 1, 1, 0, 40000), +(9500180, 1072227, 1, 1, 0, 40000), +(9500181, 1072227, 1, 1, 0, 40000), +(9500331, 1072227, 1, 1, 0, 40000), +(9500362, 1072227, 1, 1, 0, 40000), +(8500002, 1040118, 1, 1, 0, 40000), +(9300214, 1040118, 1, 1, 0, 40000), +(9500180, 1040118, 1, 1, 0, 40000), +(9500181, 1040118, 1, 1, 0, 40000), +(9500331, 1040118, 1, 1, 0, 40000), +(9500362, 1040118, 1, 1, 0, 40000), +(8500002, 1072173, 1, 1, 0, 40000), +(9300214, 1072173, 1, 1, 0, 40000), +(9500180, 1072173, 1, 1, 0, 40000), +(9500181, 1072173, 1, 1, 0, 40000), +(9500331, 1072173, 1, 1, 0, 40000), +(9500362, 1072173, 1, 1, 0, 40000), +(8500002, 1040117, 1, 1, 0, 40000), +(9300214, 1040117, 1, 1, 0, 40000), +(9500180, 1040117, 1, 1, 0, 40000), +(9500181, 1040117, 1, 1, 0, 40000), +(9500331, 1040117, 1, 1, 0, 40000), +(9500362, 1040117, 1, 1, 0, 40000), +(8500002, 1060106, 1, 1, 0, 40000), +(9300214, 1060106, 1, 1, 0, 40000), +(9500180, 1060106, 1, 1, 0, 40000), +(9500181, 1060106, 1, 1, 0, 40000), +(9500331, 1060106, 1, 1, 0, 40000), +(9500362, 1060106, 1, 1, 0, 40000), +(8500002, 1060107, 1, 1, 0, 40000), +(9300214, 1060107, 1, 1, 0, 40000), +(9500180, 1060107, 1, 1, 0, 40000), +(9500181, 1060107, 1, 1, 0, 40000), +(9500331, 1060107, 1, 1, 0, 40000), +(9500362, 1060107, 1, 1, 0, 40000), +(8500002, 1332027, 1, 1, 0, 40000), +(9300214, 1332027, 1, 1, 0, 40000), +(9500180, 1332027, 1, 1, 0, 40000), +(9500181, 1332027, 1, 1, 0, 40000), +(9500331, 1332027, 1, 1, 0, 40000), +(9500362, 1332027, 1, 1, 0, 40000), +(8500002, 1332026, 1, 1, 0, 40000), +(9300214, 1332026, 1, 1, 0, 40000), +(9500180, 1332026, 1, 1, 0, 40000), +(9500181, 1332026, 1, 1, 0, 40000), +(9500331, 1332026, 1, 1, 0, 40000), +(9500362, 1332026, 1, 1, 0, 40000), +(8500002, 1072213, 1, 1, 0, 40000), +(9300214, 1072213, 1, 1, 0, 40000), +(9500180, 1072213, 1, 1, 0, 40000), +(9500181, 1072213, 1, 1, 0, 40000), +(9500331, 1072213, 1, 1, 0, 40000), +(9500362, 1072213, 1, 1, 0, 40000), +(8500002, 1002646, 1, 1, 0, 40000), +(9300214, 1002646, 1, 1, 0, 40000), +(9500180, 1002646, 1, 1, 0, 40000), +(9500181, 1002646, 1, 1, 0, 40000), +(9500331, 1002646, 1, 1, 0, 40000), +(9500362, 1002646, 1, 1, 0, 40000), +(8500002, 1052131, 1, 1, 0, 40000), +(9300214, 1052131, 1, 1, 0, 40000), +(9500180, 1052131, 1, 1, 0, 40000), +(9500181, 1052131, 1, 1, 0, 40000), +(9500331, 1052131, 1, 1, 0, 40000), +(9500362, 1052131, 1, 1, 0, 40000), +(8500002, 1082213, 1, 1, 0, 40000), +(9300214, 1082213, 1, 1, 0, 40000), +(9500180, 1082213, 1, 1, 0, 40000), +(9500181, 1082213, 1, 1, 0, 40000), +(9500331, 1082213, 1, 1, 0, 40000), +(9500362, 1082213, 1, 1, 0, 40000), +(8500002, 1482011, 1, 1, 0, 40000), +(9300214, 1482011, 1, 1, 0, 40000), +(9500180, 1482011, 1, 1, 0, 40000), +(9500181, 1482011, 1, 1, 0, 40000), +(9500331, 1482011, 1, 1, 0, 40000), +(9500362, 1482011, 1, 1, 0, 40000), +(8200011, 4000457, 1, 1, 0, 200000), +(8200011, 4000459, 1, 1, 0, 200000), +(8200011, 4130002, 1, 1, 0, 3000), +(8200011, 4130011, 1, 1, 0, 3000), +(8200011, 2000005, 1, 1, 0, 40000), +(8200011, 2000006, 1, 1, 0, 40000), +(8200011, 2022003, 1, 1, 0, 3000), +(8200011, 2041008, 1, 1, 0, 750), +(8200011, 2044201, 1, 1, 0, 750), +(8200011, 2044602, 1, 1, 0, 750), +(8200011, 2387012, 1, 1, 0, 20000), +(8200011, 2290046, 1, 1, 0, 1000), +(8200011, 2290137, 1, 1, 0, 1000), +(8200011, 4004002, 1, 1, 0, 3000), +(8200011, 4010003, 1, 1, 0, 7000), +(8200011, 4020002, 1, 1, 0, 7000), +(8200011, 4020009, 1, 1, 0, 7000), +(8200011, 1002379, 1, 1, 0, 700), +(8200011, 1322045, 1, 1, 0, 700), +(8200011, 1372010, 1, 1, 0, 700), +(8200011, 1072229, 1, 1, 0, 700), +(8200011, 1082138, 1, 1, 0, 700), +(8200011, 1052131, 1, 1, 0, 700), +(9400121, 2000006, 1, 4, 0, 40000), +(9400121, 2000011, 1, 4, 0, 40000), +(9400121, 2020016, 1, 4, 0, 3000), +(9400121, 2022024, 1, 4, 0, 3000), +(9400121, 2022026, 1, 4, 0, 3000), +(9400121, 2043709, 1, 4, 0, 10000), +(9400121, 2040721, 1, 4, 0, 10000), +(9400121, 2040912, 1, 4, 0, 10000), +(9400121, 2040514, 1, 4, 0, 10000), +(9400121, 4010006, 1, 1, 0, 7000), +(9400121, 1072239, 1, 1, 0, 40000), +(9400121, 1032023, 1, 1, 0, 40000), +(9400121, 1422013, 1, 1, 0, 40000), +(9400121, 1442020, 1, 1, 0, 40000), +(9400121, 1432011, 1, 1, 0, 40000), +(9400121, 1332022, 1, 1, 0, 40000), +(9400121, 1312015, 1, 1, 0, 40000), +(9400121, 1382010, 1, 1, 0, 40000), +(9400121, 1372009, 1, 1, 0, 40000), +(9400121, 1082085, 1, 1, 0, 40000), +(9400121, 1332022, 1, 1, 0, 40000), +(9400121, 1332027, 1, 1, 0, 40000), +(9400121, 1472033, 1, 1, 0, 40000), +(9400590, 1122059, 1, 1, 0, 40000), +(9400591, 1122059, 1, 1, 0, 40000), +(9400593, 1122059, 1, 1, 0, 40000), +(8200012, 4000458, 1, 1, 0, 200000), +(8200012, 4000459, 1, 1, 0, 200000), +(8200012, 4130012, 1, 1, 0, 3000), +(8200012, 4130003, 1, 1, 0, 3000), +(8200012, 2000005, 1, 1, 0, 40000), +(8200012, 2000006, 1, 1, 0, 40000), +(8200012, 2040501, 1, 1, 0, 750), +(8200012, 2043701, 1, 1, 0, 750), +(8200012, 2290092, 1, 1, 0, 1000), +(8200012, 2290139, 1, 1, 0, 1000), +(8200012, 2387013, 1, 1, 0, 20000), +(8200012, 4004002, 1, 1, 0, 3000), +(8200012, 4010000, 1, 1, 0, 7000), +(8200012, 4020000, 1, 1, 0, 7000), +(8200012, 4020009, 1, 1, 0, 7000), +(8200012, 1040122, 1, 1, 0, 700), +(8200012, 1060111, 1, 1, 0, 700), +(8200012, 1322045, 1, 1, 0, 700), +(8200012, 1002401, 1, 1, 0, 700), +(8200012, 1452021, 1, 1, 0, 700), +(8200012, 1072216, 1, 1, 0, 700), +(8200012, 1082213, 1, 1, 0, 700), +(8220005, 2000005, 1, 4, 0, 40000), +(8220005, 2000006, 1, 4, 0, 40000), +(8220005, 2020013, 1, 4, 0, 3000), +(8220005, 2040318, 1, 4, 0, 10000), +(8220005, 2040322, 1, 4, 0, 10000), +(8220005, 2040928, 1, 4, 0, 10000), +(8220005, 2040932, 1, 4, 0, 10000), +(8220005, 2049000, 1, 4, 0, 2500), +(8220005, 2290002, 1, 4, 0, 40000), +(8220005, 2290036, 1, 4, 0, 40000), +(8220005, 2290080, 1, 4, 0, 40000), +(8220005, 2290099, 1, 4, 0, 40000), +(8220005, 2290136, 1, 4, 0, 40000), +(8220005, 2290131, 1, 4, 0, 40000), +(8220005, 4006000, 1, 1, 0, 7000), +(8220005, 4006001, 1, 1, 0, 7000), +(8220005, 2388041, 1, 4, 0, 20000), +(8220005, 4020009, 1, 1, 0, 7000), +(8220005, 1072222, 1, 1, 0, 40000), +(8220005, 1402035, 1, 1, 0, 40000), +(8220005, 1051104, 1, 1, 0, 40000), +(8220005, 1082154, 1, 1, 0, 40000), +(8220005, 1050108, 1, 1, 0, 40000), +(8220005, 1452021, 1, 1, 0, 40000), +(8220005, 1002382, 1, 1, 0, 40000), +(8220005, 1482012, 1, 1, 0, 40000), +(8800002, 4001083, 1, 1, 0, 7000), +(8800002, 4032133, 1, 1, 0, 10000), +(8800002, 2000005, 1, 4, 0, 40000), +(8800002, 2020015, 1, 4, 0, 3000), +(8800002, 2000006, 1, 4, 0, 40000), +(8800002, 4006000, 1, 1, 0, 7000), +(8800002, 4006001, 1, 1, 0, 7000), +(8800002, 2049101, 1, 4, 0, 2500), +(8800002, 2280009, 1, 4, 0, 20000), +(8800002, 2280010, 1, 4, 0, 20000), +(8800002, 2280008, 1, 4, 0, 20000), +(8800002, 2280013, 1, 4, 0, 20000), +(8800002, 2280015, 1, 4, 0, 20000), +(8800002, 2280016, 1, 4, 0, 20000), +(8800002, 2280014, 1, 4, 0, 20000), +(8800002, 2290084, 1, 4, 0, 40000), +(8800002, 2290016, 1, 4, 0, 40000), +(8800002, 2290022, 1, 4, 0, 40000), +(8800002, 2290024, 1, 4, 0, 40000), +(8800002, 2290040, 1, 4, 0, 40000), +(8800002, 2290046, 1, 4, 0, 40000), +(8800002, 2290048, 1, 4, 0, 40000), +(8800002, 2290058, 1, 4, 0, 40000), +(8800002, 2290064, 1, 4, 0, 40000), +(8800002, 2290074, 1, 4, 0, 40000), +(8800002, 2290028, 1, 4, 0, 40000), +(8800002, 2290056, 1, 4, 0, 40000), +(8800002, 2290064, 1, 4, 0, 40000), +(8800002, 2290006, 1, 4, 0, 40000), +(8800002, 2388023, 1, 4, 0, 20000), +(8800002, 1422013, 1, 1, 0, 40000), +(8800002, 1432011, 1, 1, 0, 40000), +(8800002, 1442020, 1, 1, 0, 40000), +(8800002, 1322029, 1, 1, 0, 40000), +(8800002, 1312015, 1, 1, 0, 40000), +(8800002, 1412010, 1, 1, 0, 40000), +(8800002, 1302023, 1, 1, 0, 40000), +(8800002, 1332022, 1, 1, 0, 40000), +(8800002, 1432030, 1, 1, 0, 40000), +(8800002, 1402035, 1, 1, 0, 40000), +(8800002, 1442002, 1, 1, 0, 40000), +(8800002, 1372009, 1, 1, 0, 40000), +(8800002, 1382008, 1, 1, 0, 40000), +(8800002, 1372010, 1, 1, 0, 40000), +(8800002, 1382035, 1, 1, 0, 40000), +(8800002, 1452017, 1, 1, 0, 40000), +(8800002, 1462018, 1, 1, 0, 40000), +(8800002, 1472031, 1, 1, 0, 40000), +(8800002, 1472033, 1, 1, 0, 40000), +(8800002, 1332026, 1, 1, 0, 40000), +(8800002, 1332027, 1, 1, 0, 40000), +(8800002, 1332022, 1, 1, 0, 40000), +(8800002, 1332052, 1, 1, 0, 40000), +(8800002, 1472053, 1, 1, 0, 40000), +(9420549, 2040804, 1, 4, 0, 10000), +(9420549, 1442044, 1, 1, 0, 40000), +(9420549, 1382035, 1, 1, 0, 40000), +(9420549, 1372010, 1, 1, 0, 40000), +(9420549, 1452020, 1, 1, 0, 40000), +(9420549, 1482012, 1, 1, 0, 40000), +(8220006, 2000005, 1, 4, 0, 40000), +(8220006, 2000006, 1, 4, 0, 40000), +(8220006, 2020013, 1, 4, 0, 3000), +(8220006, 2043701, 1, 4, 0, 10000), +(8220006, 2044301, 1, 4, 0, 10000), +(8220006, 2044501, 1, 4, 0, 10000), +(8220006, 2044701, 1, 4, 0, 10000), +(8220006, 2044803, 1, 4, 0, 10000), +(8220006, 2044902, 1, 4, 0, 10000), +(8220006, 2049101, 1, 4, 0, 2500), +(8220006, 2290012, 1, 4, 0, 40000), +(8220006, 2290042, 1, 4, 0, 40000), +(8220006, 2290060, 1, 4, 0, 40000), +(8220006, 2290090, 1, 4, 0, 40000), +(8220006, 2290119, 1, 4, 0, 40000), +(8220006, 2290138, 1, 4, 0, 40000), +(8220006, 2290135, 1, 4, 0, 40000), +(8220006, 4006000, 1, 1, 0, 7000), +(8220006, 4006001, 1, 1, 0, 7000), +(8220006, 2388042, 1, 4, 0, 20000), +(8220006, 4020009, 1, 1, 0, 7000), +(8220006, 1432030, 1, 1, 0, 40000), +(8220006, 1072226, 1, 1, 0, 40000), +(8220006, 1051107, 1, 1, 0, 40000), +(8220006, 1082160, 1, 1, 0, 40000), +(8220006, 1462017, 1, 1, 0, 40000), +(8220006, 1472053, 1, 1, 0, 40000), +(8220006, 1002646, 1, 1, 0, 40000), +(8220006, 1492012, 1, 1, 0, 40000), +(9400112, 2000004, 1, 4, 0, 40000), +(9400112, 2002011, 1, 4, 0, 10000), +(9400113, 2000004, 1, 4, 0, 40000), +(9400113, 2002008, 1, 4, 0, 10000), +(9400113, 2022027, 1, 4, 0, 3000), +(9400300, 4000141, 1, 1, 0, 200000), +(9400300, 2000004, 1, 4, 0, 40000), +(9400300, 2040817, 1, 4, 0, 10000), +(9400300, 2041034, 1, 4, 0, 10000), +(9400300, 2041044, 1, 4, 0, 10000), +(9400300, 1032026, 1, 1, 0, 40000), +(9400300, 1072238, 1, 1, 0, 40000), +(9400300, 1372011, 1, 1, 0, 40000), +(8820000, 2000004, 1, 4, 0, 40000), +(8820001, 2000004, 1, 4, 0, 40000), +(8820010, 2000004, 1, 1, 0, 40000), +(8820011, 2000004, 1, 1, 0, 40000), +(8820012, 2000004, 1, 1, 0, 40000), +(8820013, 2000004, 1, 1, 0, 40000), +(8820014, 2000004, 1, 1, 0, 40000), +(8820000, 2000005, 1, 4, 0, 40000), +(8820001, 2000005, 1, 4, 0, 40000), +(8820010, 2000005, 1, 1, 0, 40000), +(8820011, 2000005, 1, 1, 0, 40000), +(8820012, 2000005, 1, 1, 0, 40000), +(8820013, 2000005, 1, 1, 0, 40000), +(8820014, 2000005, 1, 1, 0, 40000), +(8820000, 2020015, 1, 4, 0, 3000), +(8820001, 2020015, 1, 4, 0, 3000), +(8820010, 2020015, 1, 1, 0, 3000), +(8820011, 2020015, 1, 1, 0, 3000), +(8820012, 2020015, 1, 1, 0, 3000), +(8820013, 2020015, 1, 1, 0, 3000), +(8820014, 2020015, 1, 1, 0, 3000), +(8820000, 2290010, 1, 4, 0, 40000), +(8820001, 2290010, 1, 4, 0, 40000), +(8820010, 2290010, 1, 1, 0, 1000), +(8820011, 2290010, 1, 1, 0, 1000), +(8820012, 2290010, 1, 1, 0, 1000), +(8820013, 2290010, 1, 1, 0, 1000), +(8820014, 2290010, 1, 1, 0, 1000), +(8820000, 2290022, 1, 4, 0, 40000), +(8820001, 2290022, 1, 4, 0, 40000), +(8820010, 2290022, 1, 1, 0, 1000), +(8820011, 2290022, 1, 1, 0, 1000), +(8820012, 2290022, 1, 1, 0, 1000), +(8820013, 2290022, 1, 1, 0, 1000), +(8820014, 2290022, 1, 1, 0, 1000), +(8820000, 2290040, 1, 4, 0, 40000), +(8820001, 2290040, 1, 4, 0, 40000), +(8820010, 2290040, 1, 1, 0, 1000), +(8820011, 2290040, 1, 1, 0, 1000), +(8820012, 2290040, 1, 1, 0, 1000), +(8820013, 2290040, 1, 1, 0, 1000), +(8820014, 2290040, 1, 1, 0, 1000), +(8820000, 2290046, 1, 4, 0, 40000), +(8820001, 2290046, 1, 4, 0, 40000), +(8820010, 2290046, 1, 1, 0, 1000), +(8820011, 2290046, 1, 1, 0, 1000), +(8820012, 2290046, 1, 1, 0, 1000), +(8820013, 2290046, 1, 1, 0, 1000), +(8820014, 2290046, 1, 1, 0, 1000), +(8820000, 2290048, 1, 4, 0, 40000), +(8820001, 2290048, 1, 4, 0, 40000), +(8820010, 2290048, 1, 1, 0, 1000), +(8820011, 2290048, 1, 1, 0, 1000), +(8820012, 2290048, 1, 1, 0, 1000), +(8820013, 2290048, 1, 1, 0, 1000), +(8820014, 2290048, 1, 1, 0, 1000), +(8820000, 2290052, 1, 4, 0, 40000), +(8820001, 2290052, 1, 4, 0, 40000), +(8820010, 2290052, 1, 1, 0, 1000), +(8820011, 2290052, 1, 1, 0, 1000), +(8820012, 2290052, 1, 1, 0, 1000), +(8820013, 2290052, 1, 1, 0, 1000), +(8820014, 2290052, 1, 1, 0, 1000), +(8820000, 2290084, 1, 4, 0, 40000), +(8820001, 2290084, 1, 4, 0, 40000), +(8820010, 2290084, 1, 1, 0, 1000), +(8820011, 2290084, 1, 1, 0, 1000), +(8820012, 2290084, 1, 1, 0, 1000), +(8820013, 2290084, 1, 1, 0, 1000), +(8820014, 2290084, 1, 1, 0, 1000), +(8820000, 2290090, 1, 4, 0, 40000), +(8820001, 2290090, 1, 4, 0, 40000), +(8820010, 2290090, 1, 1, 0, 1000), +(8820011, 2290090, 1, 1, 0, 1000), +(8820012, 2290090, 1, 1, 0, 1000), +(8820013, 2290090, 1, 1, 0, 1000), +(8820014, 2290090, 1, 1, 0, 1000), +(8820000, 2290119, 1, 4, 0, 40000), +(8820001, 2290119, 1, 4, 0, 40000), +(8820010, 2290119, 1, 1, 0, 1000), +(8820011, 2290119, 1, 1, 0, 1000), +(8820012, 2290119, 1, 1, 0, 1000), +(8820013, 2290119, 1, 1, 0, 1000), +(8820014, 2290119, 1, 1, 0, 1000), +(8820000, 2290106, 1, 4, 0, 40000), +(8820001, 2290106, 1, 4, 0, 40000), +(8820010, 2290106, 1, 1, 0, 1000), +(8820011, 2290106, 1, 1, 0, 1000), +(8820012, 2290106, 1, 1, 0, 1000), +(8820013, 2290106, 1, 1, 0, 1000), +(8820014, 2290106, 1, 1, 0, 1000), +(8820000, 4021010, 1, 1, 0, 7000), +(8820001, 4021010, 1, 1, 0, 7000), +(8820010, 4021010, 1, 1, 0, 7000), +(8820011, 4021010, 1, 1, 0, 7000), +(8820012, 4021010, 1, 1, 0, 7000), +(8820013, 4021010, 1, 1, 0, 7000), +(8820014, 4021010, 1, 1, 0, 7000), +(8820000, 1122011, 1, 1, 0, 40000), +(8820001, 1122011, 1, 1, 0, 40000), +(8820010, 1122011, 1, 1, 0, 700), +(8820011, 1122011, 1, 1, 0, 700), +(8820012, 1122011, 1, 1, 0, 700), +(8820013, 1122011, 1, 1, 0, 700), +(8820014, 1122011, 1, 1, 0, 700), +(8820000, 1032031, 1, 1, 0, 40000), +(8820001, 1032031, 1, 1, 0, 40000), +(8820010, 1032031, 1, 1, 0, 700), +(8820011, 1032031, 1, 1, 0, 700), +(8820012, 1032031, 1, 1, 0, 700), +(8820013, 1032031, 1, 1, 0, 700), +(8820014, 1032031, 1, 1, 0, 700), +(8820000, 1122012, 1, 1, 0, 40000), +(8820001, 1122012, 1, 1, 0, 40000), +(8820010, 1122012, 1, 1, 0, 700), +(8820011, 1122012, 1, 1, 0, 700), +(8820012, 1122012, 1, 1, 0, 700), +(8820013, 1122012, 1, 1, 0, 700), +(8820014, 1122012, 1, 1, 0, 700), +(8820000, 1102172, 1, 1, 0, 40000), +(8820001, 1102172, 1, 1, 0, 40000), +(8820010, 1102172, 1, 1, 0, 700), +(8820011, 1102172, 1, 1, 0, 700), +(8820012, 1102172, 1, 1, 0, 700), +(8820013, 1102172, 1, 1, 0, 700), +(8820014, 1102172, 1, 1, 0, 700), +(8820000, 1432049, 1, 1, 0, 40000), +(8820001, 1432049, 1, 1, 0, 40000), +(8820010, 1432049, 1, 1, 0, 700), +(8820011, 1432049, 1, 1, 0, 700), +(8820012, 1432049, 1, 1, 0, 700), +(8820013, 1432049, 1, 1, 0, 700), +(8820014, 1432049, 1, 1, 0, 700), +(8820000, 1322061, 1, 1, 0, 40000), +(8820001, 1322061, 1, 1, 0, 40000), +(8820010, 1322061, 1, 1, 0, 700), +(8820011, 1322061, 1, 1, 0, 700), +(8820012, 1322061, 1, 1, 0, 700), +(8820013, 1322061, 1, 1, 0, 700), +(8820014, 1322061, 1, 1, 0, 700), +(8820000, 1312038, 1, 1, 0, 40000), +(8820001, 1312038, 1, 1, 0, 40000), +(8820010, 1312038, 1, 1, 0, 700), +(8820011, 1312038, 1, 1, 0, 700), +(8820012, 1312038, 1, 1, 0, 700), +(8820013, 1312038, 1, 1, 0, 700), +(8820014, 1312038, 1, 1, 0, 700), +(8820000, 1422038, 1, 1, 0, 40000), +(8820001, 1422038, 1, 1, 0, 40000), +(8820010, 1422038, 1, 1, 0, 700), +(8820011, 1422038, 1, 1, 0, 700), +(8820012, 1422038, 1, 1, 0, 700), +(8820013, 1422038, 1, 1, 0, 700), +(8820014, 1422038, 1, 1, 0, 700), +(8820000, 1082239, 1, 1, 0, 40000), +(8820001, 1082239, 1, 1, 0, 40000), +(8820010, 1082239, 1, 1, 0, 700), +(8820011, 1082239, 1, 1, 0, 700), +(8820012, 1082239, 1, 1, 0, 700), +(8820013, 1082239, 1, 1, 0, 700), +(8820014, 1082239, 1, 1, 0, 700), +(8820000, 1442067, 1, 1, 0, 40000), +(8820001, 1442067, 1, 1, 0, 40000), +(8820010, 1442067, 1, 1, 0, 700), +(8820011, 1442067, 1, 1, 0, 700), +(8820012, 1442067, 1, 1, 0, 700), +(8820013, 1442067, 1, 1, 0, 700), +(8820014, 1442067, 1, 1, 0, 700), +(8820000, 1302086, 1, 1, 0, 40000), +(8820001, 1302086, 1, 1, 0, 40000), +(8820010, 1302086, 1, 1, 0, 700), +(8820011, 1302086, 1, 1, 0, 700), +(8820012, 1302086, 1, 1, 0, 700), +(8820013, 1302086, 1, 1, 0, 700), +(8820014, 1302086, 1, 1, 0, 700), +(8820000, 1002790, 1, 1, 0, 40000), +(8820001, 1002790, 1, 1, 0, 40000), +(8820010, 1002790, 1, 1, 0, 700), +(8820011, 1002790, 1, 1, 0, 700), +(8820012, 1002790, 1, 1, 0, 700), +(8820013, 1002790, 1, 1, 0, 700), +(8820014, 1002790, 1, 1, 0, 700), +(8820000, 1072361, 1, 1, 0, 40000), +(8820001, 1072361, 1, 1, 0, 40000), +(8820010, 1072361, 1, 1, 0, 700), +(8820011, 1072361, 1, 1, 0, 700), +(8820012, 1072361, 1, 1, 0, 700), +(8820013, 1072361, 1, 1, 0, 700), +(8820014, 1072361, 1, 1, 0, 700), +(8820000, 1402047, 1, 1, 0, 40000), +(8820001, 1402047, 1, 1, 0, 40000), +(8820010, 1402047, 1, 1, 0, 700), +(8820011, 1402047, 1, 1, 0, 700), +(8820012, 1402047, 1, 1, 0, 700), +(8820013, 1402047, 1, 1, 0, 700), +(8820014, 1402047, 1, 1, 0, 700), +(8820000, 1412034, 1, 1, 0, 40000), +(8820001, 1412034, 1, 1, 0, 40000), +(8820010, 1412034, 1, 1, 0, 700), +(8820011, 1412034, 1, 1, 0, 700), +(8820012, 1412034, 1, 1, 0, 700), +(8820013, 1412034, 1, 1, 0, 700), +(8820014, 1412034, 1, 1, 0, 700), +(8820000, 1052160, 1, 1, 0, 40000), +(8820001, 1052160, 1, 1, 0, 40000), +(8820010, 1052160, 1, 1, 0, 700), +(8820011, 1052160, 1, 1, 0, 700), +(8820012, 1052160, 1, 1, 0, 700), +(8820013, 1052160, 1, 1, 0, 700), +(8820014, 1052160, 1, 1, 0, 700), +(8820000, 1432047, 1, 1, 0, 40000), +(8820001, 1432047, 1, 1, 0, 40000), +(8820010, 1432047, 1, 1, 0, 700), +(8820011, 1432047, 1, 1, 0, 700), +(8820012, 1432047, 1, 1, 0, 700), +(8820013, 1432047, 1, 1, 0, 700), +(8820014, 1432047, 1, 1, 0, 700), +(8820000, 1322060, 1, 1, 0, 40000), +(8820001, 1322060, 1, 1, 0, 40000), +(8820010, 1322060, 1, 1, 0, 700), +(8820011, 1322060, 1, 1, 0, 700), +(8820012, 1322060, 1, 1, 0, 700), +(8820013, 1322060, 1, 1, 0, 700), +(8820014, 1322060, 1, 1, 0, 700), +(8820000, 1312037, 1, 1, 0, 40000), +(8820001, 1312037, 1, 1, 0, 40000), +(8820010, 1312037, 1, 1, 0, 700), +(8820011, 1312037, 1, 1, 0, 700), +(8820012, 1312037, 1, 1, 0, 700), +(8820013, 1312037, 1, 1, 0, 700), +(8820014, 1312037, 1, 1, 0, 700), +(8820000, 1422037, 1, 1, 0, 40000), +(8820001, 1422037, 1, 1, 0, 40000), +(8820010, 1422037, 1, 1, 0, 700), +(8820011, 1422037, 1, 1, 0, 700), +(8820012, 1422037, 1, 1, 0, 700), +(8820013, 1422037, 1, 1, 0, 700), +(8820014, 1422037, 1, 1, 0, 700), +(8820000, 1082234, 1, 1, 0, 40000), +(8820001, 1082234, 1, 1, 0, 40000), +(8820010, 1082234, 1, 1, 0, 700), +(8820011, 1082234, 1, 1, 0, 700), +(8820012, 1082234, 1, 1, 0, 700), +(8820013, 1082234, 1, 1, 0, 700), +(8820014, 1082234, 1, 1, 0, 700), +(8820000, 1442063, 1, 1, 0, 40000), +(8820001, 1442063, 1, 1, 0, 40000), +(8820010, 1442063, 1, 1, 0, 700), +(8820011, 1442063, 1, 1, 0, 700), +(8820012, 1442063, 1, 1, 0, 700), +(8820013, 1442063, 1, 1, 0, 700), +(8820014, 1442063, 1, 1, 0, 700), +(8820000, 1302081, 1, 1, 0, 40000), +(8820001, 1302081, 1, 1, 0, 40000), +(8820010, 1302081, 1, 1, 0, 700), +(8820011, 1302081, 1, 1, 0, 700), +(8820012, 1302081, 1, 1, 0, 700), +(8820013, 1302081, 1, 1, 0, 700), +(8820014, 1302081, 1, 1, 0, 700), +(8820000, 1002776, 1, 1, 0, 40000), +(8820001, 1002776, 1, 1, 0, 40000), +(8820010, 1002776, 1, 1, 0, 700), +(8820011, 1002776, 1, 1, 0, 700), +(8820012, 1002776, 1, 1, 0, 700), +(8820013, 1002776, 1, 1, 0, 700), +(8820014, 1002776, 1, 1, 0, 700), +(8820000, 1072355, 1, 1, 0, 40000), +(8820001, 1072355, 1, 1, 0, 40000), +(8820010, 1072355, 1, 1, 0, 700), +(8820011, 1072355, 1, 1, 0, 700), +(8820012, 1072355, 1, 1, 0, 700), +(8820013, 1072355, 1, 1, 0, 700), +(8820014, 1072355, 1, 1, 0, 700), +(8820000, 1092058, 1, 1, 0, 40000), +(8820001, 1092058, 1, 1, 0, 40000), +(8820010, 1092058, 1, 1, 0, 700), +(8820011, 1092058, 1, 1, 0, 700), +(8820012, 1092058, 1, 1, 0, 700), +(8820013, 1092058, 1, 1, 0, 700), +(8820014, 1092058, 1, 1, 0, 700), +(8820000, 1402046, 1, 1, 0, 40000), +(8820001, 1402046, 1, 1, 0, 40000), +(8820010, 1402046, 1, 1, 0, 700), +(8820011, 1402046, 1, 1, 0, 700), +(8820012, 1402046, 1, 1, 0, 700), +(8820013, 1402046, 1, 1, 0, 700), +(8820014, 1402046, 1, 1, 0, 700), +(8820000, 1412033, 1, 1, 0, 40000), +(8820001, 1412033, 1, 1, 0, 40000), +(8820010, 1412033, 1, 1, 0, 700), +(8820011, 1412033, 1, 1, 0, 700), +(8820012, 1412033, 1, 1, 0, 700), +(8820013, 1412033, 1, 1, 0, 700), +(8820014, 1412033, 1, 1, 0, 700), +(8820000, 1052155, 1, 1, 0, 40000), +(8820001, 1052155, 1, 1, 0, 40000), +(8820010, 1052155, 1, 1, 0, 700), +(8820011, 1052155, 1, 1, 0, 700), +(8820012, 1052155, 1, 1, 0, 700), +(8820013, 1052155, 1, 1, 0, 700), +(8820014, 1052155, 1, 1, 0, 700), +(8820000, 1382059, 1, 1, 0, 40000), +(8820001, 1382059, 1, 1, 0, 40000), +(8820010, 1382059, 1, 1, 0, 700), +(8820011, 1382059, 1, 1, 0, 700), +(8820012, 1382059, 1, 1, 0, 700), +(8820013, 1382059, 1, 1, 0, 700), +(8820014, 1382059, 1, 1, 0, 700), +(8820000, 1072362, 1, 1, 0, 40000), +(8820001, 1072362, 1, 1, 0, 40000), +(8820010, 1072362, 1, 1, 0, 700), +(8820011, 1072362, 1, 1, 0, 700), +(8820012, 1072362, 1, 1, 0, 700), +(8820013, 1072362, 1, 1, 0, 700), +(8820014, 1072362, 1, 1, 0, 700), +(8820000, 1002791, 1, 1, 0, 40000), +(8820001, 1002791, 1, 1, 0, 40000), +(8820010, 1002791, 1, 1, 0, 700), +(8820011, 1002791, 1, 1, 0, 700), +(8820012, 1002791, 1, 1, 0, 700), +(8820013, 1002791, 1, 1, 0, 700), +(8820014, 1002791, 1, 1, 0, 700), +(8820000, 1372045, 1, 1, 0, 40000), +(8820001, 1372045, 1, 1, 0, 40000), +(8820010, 1372045, 1, 1, 0, 700), +(8820011, 1372045, 1, 1, 0, 700), +(8820012, 1372045, 1, 1, 0, 700), +(8820013, 1372045, 1, 1, 0, 700), +(8820014, 1372045, 1, 1, 0, 700), +(8820000, 1082240, 1, 1, 0, 40000), +(8820001, 1082240, 1, 1, 0, 40000), +(8820010, 1082240, 1, 1, 0, 700), +(8820011, 1082240, 1, 1, 0, 700), +(8820012, 1082240, 1, 1, 0, 700), +(8820013, 1082240, 1, 1, 0, 700), +(8820014, 1082240, 1, 1, 0, 700), +(8820000, 1052161, 1, 1, 0, 40000), +(8820001, 1052161, 1, 1, 0, 40000), +(8820010, 1052161, 1, 1, 0, 700), +(8820011, 1052161, 1, 1, 0, 700), +(8820012, 1052161, 1, 1, 0, 700), +(8820013, 1052161, 1, 1, 0, 700), +(8820014, 1052161, 1, 1, 0, 700), +(8820000, 1382057, 1, 1, 0, 40000), +(8820001, 1382057, 1, 1, 0, 40000), +(8820010, 1382057, 1, 1, 0, 700), +(8820011, 1382057, 1, 1, 0, 700), +(8820012, 1382057, 1, 1, 0, 700), +(8820013, 1382057, 1, 1, 0, 700), +(8820014, 1382057, 1, 1, 0, 700), +(8820000, 1072356, 1, 1, 0, 40000), +(8820001, 1072356, 1, 1, 0, 40000), +(8820010, 1072356, 1, 1, 0, 700), +(8820011, 1072356, 1, 1, 0, 700), +(8820012, 1072356, 1, 1, 0, 700), +(8820013, 1072356, 1, 1, 0, 700), +(8820014, 1072356, 1, 1, 0, 700), +(8820000, 1002777, 1, 1, 0, 40000), +(8820001, 1002777, 1, 1, 0, 40000), +(8820010, 1002777, 1, 1, 0, 700), +(8820011, 1002777, 1, 1, 0, 700), +(8820012, 1002777, 1, 1, 0, 700), +(8820013, 1002777, 1, 1, 0, 700), +(8820014, 1002777, 1, 1, 0, 700), +(8820000, 1372044, 1, 1, 0, 40000), +(8820001, 1372044, 1, 1, 0, 40000), +(8820010, 1372044, 1, 1, 0, 700), +(8820011, 1372044, 1, 1, 0, 700), +(8820012, 1372044, 1, 1, 0, 700), +(8820013, 1372044, 1, 1, 0, 700), +(8820014, 1372044, 1, 1, 0, 700), +(8820000, 1082235, 1, 1, 0, 40000), +(8820001, 1082235, 1, 1, 0, 40000), +(8820010, 1082235, 1, 1, 0, 700), +(8820011, 1082235, 1, 1, 0, 700), +(8820012, 1082235, 1, 1, 0, 700), +(8820013, 1082235, 1, 1, 0, 700), +(8820014, 1082235, 1, 1, 0, 700), +(8820000, 1052156, 1, 1, 0, 40000), +(8820001, 1052156, 1, 1, 0, 40000), +(8820010, 1052156, 1, 1, 0, 700), +(8820011, 1052156, 1, 1, 0, 700), +(8820012, 1052156, 1, 1, 0, 700), +(8820013, 1052156, 1, 1, 0, 700), +(8820014, 1052156, 1, 1, 0, 700), +(8820000, 1092057, 1, 1, 0, 40000), +(8820001, 1092057, 1, 1, 0, 40000), +(8820010, 1092057, 1, 1, 0, 700), +(8820011, 1092057, 1, 1, 0, 700), +(8820012, 1092057, 1, 1, 0, 700), +(8820013, 1092057, 1, 1, 0, 700), +(8820014, 1092057, 1, 1, 0, 700), +(8820000, 1462051, 1, 1, 0, 40000), +(8820001, 1462051, 1, 1, 0, 40000), +(8820010, 1462051, 1, 1, 0, 700), +(8820011, 1462051, 1, 1, 0, 700), +(8820012, 1462051, 1, 1, 0, 700), +(8820013, 1462051, 1, 1, 0, 700), +(8820014, 1462051, 1, 1, 0, 700), +(8820000, 1452059, 1, 1, 0, 40000), +(8820001, 1452059, 1, 1, 0, 40000), +(8820010, 1452059, 1, 1, 0, 700), +(8820011, 1452059, 1, 1, 0, 700), +(8820012, 1452059, 1, 1, 0, 700), +(8820013, 1452059, 1, 1, 0, 700), +(8820014, 1452059, 1, 1, 0, 700), +(8820000, 1052162, 1, 1, 0, 40000), +(8820001, 1052162, 1, 1, 0, 40000), +(8820010, 1052162, 1, 1, 0, 700), +(8820011, 1052162, 1, 1, 0, 700), +(8820012, 1052162, 1, 1, 0, 700), +(8820013, 1052162, 1, 1, 0, 700), +(8820014, 1052162, 1, 1, 0, 700), +(8820000, 1082241, 1, 1, 0, 40000), +(8820001, 1082241, 1, 1, 0, 40000), +(8820010, 1082241, 1, 1, 0, 700), +(8820011, 1082241, 1, 1, 0, 700), +(8820012, 1082241, 1, 1, 0, 700), +(8820013, 1082241, 1, 1, 0, 700), +(8820014, 1082241, 1, 1, 0, 700), +(8820000, 1002792, 1, 1, 0, 40000), +(8820001, 1002792, 1, 1, 0, 40000), +(8820010, 1002792, 1, 1, 0, 700), +(8820011, 1002792, 1, 1, 0, 700), +(8820012, 1002792, 1, 1, 0, 700), +(8820013, 1002792, 1, 1, 0, 700), +(8820014, 1002792, 1, 1, 0, 700), +(8820000, 1072363, 1, 1, 0, 40000), +(8820001, 1072363, 1, 1, 0, 40000), +(8820010, 1072363, 1, 1, 0, 700), +(8820011, 1072363, 1, 1, 0, 700), +(8820012, 1072363, 1, 1, 0, 700), +(8820013, 1072363, 1, 1, 0, 700), +(8820014, 1072363, 1, 1, 0, 700), +(8820000, 1462050, 1, 1, 0, 40000), +(8820001, 1462050, 1, 1, 0, 40000), +(8820010, 1462050, 1, 1, 0, 700), +(8820011, 1462050, 1, 1, 0, 700), +(8820012, 1462050, 1, 1, 0, 700), +(8820013, 1462050, 1, 1, 0, 700), +(8820014, 1462050, 1, 1, 0, 700), +(8820000, 1452057, 1, 1, 0, 40000), +(8820001, 1452057, 1, 1, 0, 40000), +(8820010, 1452057, 1, 1, 0, 700), +(8820011, 1452057, 1, 1, 0, 700), +(8820012, 1452057, 1, 1, 0, 700), +(8820013, 1452057, 1, 1, 0, 700), +(8820014, 1452057, 1, 1, 0, 700), +(8820000, 1052157, 1, 1, 0, 40000), +(8820001, 1052157, 1, 1, 0, 40000), +(8820010, 1052157, 1, 1, 0, 700), +(8820011, 1052157, 1, 1, 0, 700), +(8820012, 1052157, 1, 1, 0, 700), +(8820013, 1052157, 1, 1, 0, 700), +(8820014, 1052157, 1, 1, 0, 700), +(8820000, 1082236, 1, 1, 0, 40000), +(8820001, 1082236, 1, 1, 0, 40000), +(8820010, 1082236, 1, 1, 0, 700), +(8820011, 1082236, 1, 1, 0, 700), +(8820012, 1082236, 1, 1, 0, 700), +(8820013, 1082236, 1, 1, 0, 700), +(8820014, 1082236, 1, 1, 0, 700), +(8820000, 1002778, 1, 1, 0, 40000), +(8820001, 1002778, 1, 1, 0, 40000), +(8820010, 1002778, 1, 1, 0, 700), +(8820011, 1002778, 1, 1, 0, 700), +(8820012, 1002778, 1, 1, 0, 700), +(8820013, 1002778, 1, 1, 0, 700), +(8820014, 1002778, 1, 1, 0, 700), +(8820000, 1072357, 1, 1, 0, 40000), +(8820001, 1072357, 1, 1, 0, 40000), +(8820010, 1072357, 1, 1, 0, 700), +(8820011, 1072357, 1, 1, 0, 700), +(8820012, 1072357, 1, 1, 0, 700), +(8820013, 1072357, 1, 1, 0, 700), +(8820014, 1072357, 1, 1, 0, 700), +(8820000, 1002793, 1, 1, 0, 40000), +(8820001, 1002793, 1, 1, 0, 40000), +(8820010, 1002793, 1, 1, 0, 700), +(8820011, 1002793, 1, 1, 0, 700), +(8820012, 1002793, 1, 1, 0, 700), +(8820013, 1002793, 1, 1, 0, 700), +(8820014, 1002793, 1, 1, 0, 700), +(8820000, 1332076, 1, 1, 0, 40000), +(8820001, 1332076, 1, 1, 0, 40000), +(8820010, 1332076, 1, 1, 0, 700), +(8820011, 1332076, 1, 1, 0, 700), +(8820012, 1332076, 1, 1, 0, 700), +(8820013, 1332076, 1, 1, 0, 700), +(8820014, 1332076, 1, 1, 0, 700), +(8820000, 1472071, 1, 1, 0, 40000), +(8820001, 1472071, 1, 1, 0, 40000), +(8820010, 1472071, 1, 1, 0, 700), +(8820011, 1472071, 1, 1, 0, 700), +(8820012, 1472071, 1, 1, 0, 700), +(8820013, 1472071, 1, 1, 0, 700), +(8820014, 1472071, 1, 1, 0, 700), +(8820000, 1082242, 1, 1, 0, 40000), +(8820001, 1082242, 1, 1, 0, 40000), +(8820010, 1082242, 1, 1, 0, 700), +(8820011, 1082242, 1, 1, 0, 700), +(8820012, 1082242, 1, 1, 0, 700), +(8820013, 1082242, 1, 1, 0, 700), +(8820014, 1082242, 1, 1, 0, 700), +(8820000, 1072364, 1, 1, 0, 40000), +(8820001, 1072364, 1, 1, 0, 40000), +(8820010, 1072364, 1, 1, 0, 700), +(8820011, 1072364, 1, 1, 0, 700), +(8820012, 1072364, 1, 1, 0, 700), +(8820013, 1072364, 1, 1, 0, 700), +(8820014, 1072364, 1, 1, 0, 700), +(8820000, 1332075, 1, 1, 0, 40000), +(8820001, 1332075, 1, 1, 0, 40000), +(8820010, 1332075, 1, 1, 0, 700), +(8820011, 1332075, 1, 1, 0, 700), +(8820012, 1332075, 1, 1, 0, 700), +(8820013, 1332075, 1, 1, 0, 700), +(8820014, 1332075, 1, 1, 0, 700), +(8820000, 1052163, 1, 1, 0, 40000), +(8820001, 1052163, 1, 1, 0, 40000), +(8820010, 1052163, 1, 1, 0, 700), +(8820011, 1052163, 1, 1, 0, 700), +(8820012, 1052163, 1, 1, 0, 700), +(8820013, 1052163, 1, 1, 0, 700), +(8820014, 1052163, 1, 1, 0, 700), +(8820000, 1002779, 1, 1, 0, 40000), +(8820001, 1002779, 1, 1, 0, 40000), +(8820010, 1002779, 1, 1, 0, 700), +(8820011, 1002779, 1, 1, 0, 700), +(8820012, 1002779, 1, 1, 0, 700), +(8820013, 1002779, 1, 1, 0, 700), +(8820014, 1002779, 1, 1, 0, 700), +(8820000, 1332074, 1, 1, 0, 40000), +(8820001, 1332074, 1, 1, 0, 40000), +(8820010, 1332074, 1, 1, 0, 700), +(8820011, 1332074, 1, 1, 0, 700), +(8820012, 1332074, 1, 1, 0, 700), +(8820013, 1332074, 1, 1, 0, 700), +(8820014, 1332074, 1, 1, 0, 700), +(8820000, 1472068, 1, 1, 0, 40000), +(8820001, 1472068, 1, 1, 0, 40000), +(8820010, 1472068, 1, 1, 0, 700), +(8820011, 1472068, 1, 1, 0, 700), +(8820012, 1472068, 1, 1, 0, 700), +(8820013, 1472068, 1, 1, 0, 700), +(8820014, 1472068, 1, 1, 0, 700), +(8820000, 1092059, 1, 1, 0, 40000), +(8820001, 1092059, 1, 1, 0, 40000), +(8820010, 1092059, 1, 1, 0, 700), +(8820011, 1092059, 1, 1, 0, 700), +(8820012, 1092059, 1, 1, 0, 700), +(8820013, 1092059, 1, 1, 0, 700), +(8820014, 1092059, 1, 1, 0, 700), +(8820000, 1082237, 1, 1, 0, 40000), +(8820001, 1082237, 1, 1, 0, 40000), +(8820010, 1082237, 1, 1, 0, 700), +(8820011, 1082237, 1, 1, 0, 700), +(8820012, 1082237, 1, 1, 0, 700), +(8820013, 1082237, 1, 1, 0, 700), +(8820014, 1082237, 1, 1, 0, 700), +(8820000, 1072358, 1, 1, 0, 40000), +(8820001, 1072358, 1, 1, 0, 40000), +(8820010, 1072358, 1, 1, 0, 700), +(8820011, 1072358, 1, 1, 0, 700), +(8820012, 1072358, 1, 1, 0, 700), +(8820013, 1072358, 1, 1, 0, 700), +(8820014, 1072358, 1, 1, 0, 700), +(8820000, 1332073, 1, 1, 0, 40000), +(8820001, 1332073, 1, 1, 0, 40000), +(8820010, 1332073, 1, 1, 0, 700), +(8820011, 1332073, 1, 1, 0, 700), +(8820012, 1332073, 1, 1, 0, 700), +(8820013, 1332073, 1, 1, 0, 700), +(8820014, 1332073, 1, 1, 0, 700), +(8820000, 1052158, 1, 1, 0, 40000), +(8820001, 1052158, 1, 1, 0, 40000), +(8820010, 1052158, 1, 1, 0, 700), +(8820011, 1052158, 1, 1, 0, 700), +(8820012, 1052158, 1, 1, 0, 700), +(8820013, 1052158, 1, 1, 0, 700), +(8820014, 1052158, 1, 1, 0, 700), +(8820000, 1492025, 1, 1, 0, 40000), +(8820001, 1492025, 1, 1, 0, 40000), +(8820010, 1492025, 1, 1, 0, 700), +(8820011, 1492025, 1, 1, 0, 700), +(8820012, 1492025, 1, 1, 0, 700), +(8820013, 1492025, 1, 1, 0, 700), +(8820014, 1492025, 1, 1, 0, 700), +(8820000, 1052164, 1, 1, 0, 40000), +(8820001, 1052164, 1, 1, 0, 40000), +(8820010, 1052164, 1, 1, 0, 700), +(8820011, 1052164, 1, 1, 0, 700), +(8820012, 1052164, 1, 1, 0, 700), +(8820013, 1052164, 1, 1, 0, 700), +(8820014, 1052164, 1, 1, 0, 700), +(8820000, 1082243, 1, 1, 0, 40000), +(8820001, 1082243, 1, 1, 0, 40000), +(8820010, 1082243, 1, 1, 0, 700), +(8820011, 1082243, 1, 1, 0, 700), +(8820012, 1082243, 1, 1, 0, 700), +(8820013, 1082243, 1, 1, 0, 700), +(8820014, 1082243, 1, 1, 0, 700), +(8820000, 1002794, 1, 1, 0, 40000), +(8820001, 1002794, 1, 1, 0, 40000), +(8820010, 1002794, 1, 1, 0, 700), +(8820011, 1002794, 1, 1, 0, 700), +(8820012, 1002794, 1, 1, 0, 700), +(8820013, 1002794, 1, 1, 0, 700), +(8820014, 1002794, 1, 1, 0, 700), +(8820000, 1482024, 1, 1, 0, 40000), +(8820001, 1482024, 1, 1, 0, 40000), +(8820010, 1482024, 1, 1, 0, 700), +(8820011, 1482024, 1, 1, 0, 700), +(8820012, 1482024, 1, 1, 0, 700), +(8820013, 1482024, 1, 1, 0, 700), +(8820014, 1482024, 1, 1, 0, 700), +(8820000, 1072365, 1, 1, 0, 40000), +(8820001, 1072365, 1, 1, 0, 40000), +(8820010, 1072365, 1, 1, 0, 700), +(8820011, 1072365, 1, 1, 0, 700), +(8820012, 1072365, 1, 1, 0, 700), +(8820013, 1072365, 1, 1, 0, 700), +(8820014, 1072365, 1, 1, 0, 700), +(8820000, 1492023, 1, 1, 0, 40000), +(8820001, 1492023, 1, 1, 0, 40000), +(8820010, 1492023, 1, 1, 0, 700), +(8820011, 1492023, 1, 1, 0, 700), +(8820012, 1492023, 1, 1, 0, 700), +(8820013, 1492023, 1, 1, 0, 700), +(8820014, 1492023, 1, 1, 0, 700), +(8820000, 1052159, 1, 1, 0, 40000), +(8820001, 1052159, 1, 1, 0, 40000), +(8820010, 1052159, 1, 1, 0, 700), +(8820011, 1052159, 1, 1, 0, 700), +(8820012, 1052159, 1, 1, 0, 700), +(8820013, 1052159, 1, 1, 0, 700), +(8820014, 1052159, 1, 1, 0, 700), +(8820000, 1082238, 1, 1, 0, 40000), +(8820001, 1082238, 1, 1, 0, 40000), +(8820010, 1082238, 1, 1, 0, 700), +(8820011, 1082238, 1, 1, 0, 700), +(8820012, 1082238, 1, 1, 0, 700), +(8820013, 1082238, 1, 1, 0, 700), +(8820014, 1082238, 1, 1, 0, 700), +(8820000, 1002780, 1, 1, 0, 40000), +(8820001, 1002780, 1, 1, 0, 40000), +(8820010, 1002780, 1, 1, 0, 700), +(8820011, 1002780, 1, 1, 0, 700), +(8820012, 1002780, 1, 1, 0, 700), +(8820013, 1002780, 1, 1, 0, 700), +(8820014, 1002780, 1, 1, 0, 700), +(8820000, 1482023, 1, 1, 0, 40000), +(8820001, 1482023, 1, 1, 0, 40000), +(8820010, 1482023, 1, 1, 0, 700), +(8820011, 1482023, 1, 1, 0, 700), +(8820012, 1482023, 1, 1, 0, 700), +(8820013, 1482023, 1, 1, 0, 700), +(8820014, 1482023, 1, 1, 0, 700), +(8820000, 1072359, 1, 1, 0, 40000), +(8820001, 1072359, 1, 1, 0, 40000), +(8820010, 1072359, 1, 1, 0, 700), +(8820011, 1072359, 1, 1, 0, 700), +(8820012, 1072359, 1, 1, 0, 700), +(8820013, 1072359, 1, 1, 0, 700), +(8820014, 1072359, 1, 1, 0, 700); + + #-------------------------------------------------------------------------------------------- + + UPDATE temp_data SET chance=10000 WHERE chance=0; + + INSERT INTO drop_data (dropperid, itemid, minimum_quantity, maximum_quantity, questid, chance) + ( + SELECT dropperid, itemid, minimum_quantity, maximum_quantity, questid, chance + FROM temp_data + WHERE NOT EXISTS ( + SELECT dropperid, itemid + FROM drop_data + WHERE temp_data.dropperid=drop_data.dropperid AND temp_data.itemid=drop_data.itemid + ) + ); + + DROP TABLE temp_data; + + #update card rates + UPDATE drop_data SET chance=10000 WHERE (itemid >= 2380000 AND itemid < 2388000); + UPDATE drop_data SET chance=25000 WHERE (itemid >= 2388000 AND itemid < 2390000); + + #update quest mob items + UPDATE drop_data SET questid=3452 WHERE itemid=4001125; + UPDATE drop_data SET questid=28248 WHERE itemid=4001360; + UPDATE drop_data SET questid=20707 WHERE itemid=4032130; + UPDATE drop_data SET questid=28170 WHERE itemid=4001345; + UPDATE drop_data SET questid=77777 WHERE itemid=4001358; #id 77777 for ALL quest items with no v83 quest. + UPDATE drop_data SET questid=77777 WHERE itemid=4001359; + UPDATE drop_data SET questid=77777 WHERE itemid=4001342; + + #update quest reactor items + UPDATE reactordrops SET questid=3407 WHERE itemid=4031141; + UPDATE reactordrops SET questid=3407 WHERE itemid=4031142; + UPDATE reactordrops SET questid=3407 WHERE itemid=4031143; \ No newline at end of file diff --git a/sql/original/db_originaldrops - Copy.sql b/sql/original/db_originaldrops - Copy.sql new file mode 100644 index 0000000000..53889aae45 --- /dev/null +++ b/sql/original/db_originaldrops - Copy.sql @@ -0,0 +1,12581 @@ +#data collected from inside 'database.sql' + +CREATE TABLE IF NOT EXISTS `drop_data` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `dropperid` int(11) NOT NULL, + `itemid` int(11) NOT NULL DEFAULT '0', + `minimum_quantity` int(11) NOT NULL DEFAULT '1', + `maximum_quantity` int(11) NOT NULL DEFAULT '1', + `questid` int(11) NOT NULL DEFAULT '0', + `chance` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `mobid` (`dropperid`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12801 ; + +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(1, 9400121, 4000138, 1, 1, 0, 600000), +(2, 9400121, 4010006, 1, 1, 0, 45000), +(3, 9400121, 2000006, 1, 1, 0, 999999), +(4, 9400121, 2000011, 1, 1, 0, 100000), +(5, 9400121, 2020016, 1, 1, 0, 100000), +(6, 9400121, 2022024, 1, 1, 0, 100000), +(7, 9400121, 2022026, 1, 1, 0, 100000), +(8, 9400121, 2043705, 1, 1, 0, 1500), +(9, 9400121, 2040716, 1, 1, 0, 1500), +(10, 9400121, 2040908, 1, 1, 0, 1500), +(11, 9400121, 2040510, 1, 1, 0, 1500), +(12, 9400121, 1072239, 1, 1, 0, 4000), +(13, 9400121, 1422013, 1, 1, 0, 3500), +(14, 9400121, 1402016, 1, 1, 0, 3500), +(15, 9400121, 1442020, 1, 1, 0, 3500), +(16, 9400121, 1432011, 1, 1, 0, 2500), +(17, 9400121, 1332022, 1, 1, 0, 2500), +(18, 9400121, 1312015, 1, 1, 0, 3500), +(19, 9400121, 1382010, 1, 1, 0, 3500), +(20, 9400121, 1372009, 1, 1, 0, 3500), +(21, 9400121, 1082085, 1, 1, 0, 5000), +(22, 9400121, 1332022, 1, 1, 0, 2500), +(23, 9400121, 1472033, 1, 1, 0, 2500), +(24, 8810018, 4001094, 1, 1, 0, 999999), +(25, 8810018, 2290125, 1, 1, 0, 100000), +(26, 8800002, 1372049, 1, 1, 0, 999999), +(27, 9400013, 4000225, 1, 1, 0, 600000), +(28, 9400013, 2000006, 1, 1, 0, 20000), +(29, 9400013, 2000004, 1, 1, 0, 20000), +(30, 9400013, 2070013, 1, 1, 0, 1500), +(31, 9400013, 2002005, 1, 1, 0, 20000), +(32, 9400013, 2022018, 1, 1, 0, 20000), +(33, 9400013, 2040306, 1, 1, 0, 300), +(34, 9400013, 2043704, 1, 1, 0, 300), +(35, 9400013, 2044605, 1, 1, 0, 300), +(36, 9400013, 2041034, 1, 1, 0, 300), +(37, 9400013, 1032019, 1, 1, 0, 1000), +(38, 9400013, 1102013, 1, 1, 0, 1000), +(39, 9400013, 1322026, 1, 1, 0, 700), +(40, 9400013, 1092015, 1, 1, 0, 700), +(41, 9400013, 1382016, 1, 1, 0, 700), +(42, 9400013, 1002276, 1, 1, 0, 1500), +(43, 9400013, 1002403, 1, 1, 0, 1500), +(44, 9400013, 1472027, 1, 1, 0, 500), +(45, 9400113, 4000140, 1, 1, 0, 600000), +(46, 9400113, 2022027, 1, 1, 0, 200000), +(47, 9400113, 2022027, 1, 1, 0, 200000), +(48, 9400113, 2000004, 1, 1, 0, 999999), +(49, 9400113, 2000004, 1, 1, 0, 999999), +(50, 9400113, 2002008, 1, 1, 0, 200000), +(51, 9400113, 2002008, 1, 1, 0, 200000), +(52, 9400300, 4000141, 1, 1, 0, 600000), +(53, 9400300, 2000004, 1, 1, 0, 999999), +(54, 9400300, 2040813, 1, 1, 0, 3000), +(55, 9400300, 2041030, 1, 1, 0, 3000), +(56, 9400300, 2041040, 1, 1, 0, 3000), +(57, 9400300, 1072238, 1, 1, 0, 8000), +(58, 9400300, 1032026, 1, 1, 0, 10000), +(59, 9400300, 1372011, 1, 1, 0, 7000), +(60, 9400112, 4000139, 1, 1, 0, 600000), +(61, 9400112, 2002011, 1, 1, 0, 200000), +(62, 9400112, 2002011, 1, 1, 0, 200000), +(63, 9400112, 2002011, 1, 1, 0, 200000), +(64, 9400112, 2000004, 1, 1, 0, 999999), +(65, 9400112, 2000004, 1, 1, 0, 999999), +(66, 9400545, 4032024, 1, 1, 0, 50000), +(67, 9400545, 4032025, 1, 1, 0, 600000), +(68, 9400545, 4020006, 1, 1, 0, 9000), +(69, 9400545, 4020008, 1, 1, 0, 9000), +(70, 9400545, 4010001, 1, 1, 0, 9000), +(71, 9400545, 4004001, 1, 1, 0, 10000), +(72, 9400545, 2070006, 1, 1, 0, 200), +(73, 9400545, 2044404, 1, 1, 0, 300), +(74, 9400545, 2044702, 1, 1, 0, 300), +(75, 9400545, 2044305, 1, 1, 0, 300), +(76, 9400545, 1102029, 1, 1, 0, 1000), +(77, 9400545, 1032023, 1, 1, 0, 1000), +(78, 9400545, 1402004, 1, 1, 0, 700), +(79, 9400545, 1072210, 1, 1, 0, 800), +(80, 9400545, 1040104, 1, 1, 0, 800), +(81, 9400545, 1060092, 1, 1, 0, 800), +(82, 9400545, 1082129, 1, 1, 0, 1000), +(83, 9400545, 1442008, 1, 1, 0, 700), +(84, 9400545, 1072178, 1, 1, 0, 800), +(85, 9400545, 1050092, 1, 1, 0, 700), +(86, 9400545, 1002271, 1, 1, 0, 1500), +(87, 9400545, 1051053, 1, 1, 0, 700), +(88, 9400545, 1382008, 1, 1, 0, 700), +(89, 9400545, 1002275, 1, 1, 0, 1500), +(90, 9400545, 1051082, 1, 1, 0, 700), +(91, 9400545, 1050064, 1, 1, 0, 700), +(92, 9400545, 1472028, 1, 1, 0, 500), +(93, 9400545, 1072193, 1, 1, 0, 800), +(94, 9400545, 1072172, 1, 1, 0, 800), +(95, 9400545, 1002285, 1, 1, 0, 1500), +(96, 100100, 4000019, 1, 1, 0, 600000), +(97, 100100, 2000000, 1, 1, 0, 20000), +(98, 100100, 2040002, 1, 1, 0, 300), +(99, 100100, 2041001, 1, 1, 0, 300), +(100, 100100, 2060000, 1, 1, 0, 30000), +(101, 100100, 4010000, 1, 1, 0, 9000), +(102, 100100, 4020000, 1, 1, 0, 9000), +(103, 100100, 2061000, 1, 1, 0, 30000), +(104, 100100, 1002067, 1, 1, 0, 1500), +(105, 100100, 2010009, 1, 1, 0, 20000), +(106, 100101, 4000000, 1, 1, 0, 600000), +(107, 100101, 2041006, 1, 1, 0, 300), +(108, 100101, 2000000, 1, 1, 0, 20000), +(109, 100101, 4020001, 1, 1, 0, 9000), +(110, 100101, 2060000, 1, 1, 0, 30000), +(111, 100101, 4010001, 1, 1, 0, 9000), +(112, 100101, 2061000, 1, 1, 0, 30000), +(113, 100101, 1040013, 1, 1, 0, 800), +(114, 100101, 1041012, 1, 1, 0, 800), +(115, 100101, 1060004, 1, 1, 0, 800), +(116, 100101, 1040017, 1, 1, 0, 800), +(117, 100101, 1060013, 1, 1, 0, 800), +(118, 100101, 2010009, 1, 1, 0, 20000), +(119, 1110100, 4000012, 1, 1, 0, 600000), +(120, 1110100, 2000000, 1, 1, 0, 20000), +(121, 1110100, 2043102, 1, 1, 0, 300), +(122, 1110100, 2000003, 1, 1, 0, 20000), +(123, 1110100, 4020003, 1, 1, 0, 9000), +(124, 1110100, 1322000, 1, 1, 0, 700), +(125, 1110100, 2060000, 1, 1, 0, 30000), +(126, 1110100, 1041044, 1, 1, 0, 800), +(127, 1110100, 1061037, 1, 1, 0, 800), +(128, 1110100, 4010004, 1, 1, 0, 9000), +(129, 1110100, 1092008, 1, 1, 0, 700), +(130, 1110100, 1041017, 1, 1, 0, 800), +(131, 1110100, 1061012, 1, 1, 0, 800), +(132, 1110100, 1462002, 1, 1, 0, 500), +(133, 1110100, 2061000, 1, 1, 0, 30000), +(134, 1110100, 1041063, 1, 1, 0, 800), +(135, 1110100, 1061059, 1, 1, 0, 800), +(136, 1110100, 1452003, 1, 1, 0, 500), +(137, 1110100, 2048000, 1, 1, 0, 300), +(138, 1110100, 1002033, 1, 1, 0, 1500), +(139, 1110100, 1302007, 1, 1, 0, 700), +(140, 1110100, 4020002, 1, 1, 0, 9000), +(141, 1110100, 1032001, 1, 1, 0, 1000), +(142, 1110100, 1002010, 1, 1, 0, 1500), +(143, 1110100, 2000001, 1, 1, 0, 20000), +(144, 1110100, 1002143, 1, 1, 0, 1500), +(145, 1110100, 1432005, 1, 1, 0, 500), +(146, 1110100, 1412012, 1, 1, 0, 700), +(147, 1110100, 1072285, 1, 1, 0, 800), +(148, 1110100, 1482001, 1, 1, 0, 500), +(149, 1110101, 4000005, 1, 1, 0, 600000), +(150, 1110101, 2000000, 1, 1, 0, 20000), +(151, 1110101, 2040802, 1, 1, 0, 300), +(152, 1110101, 1092003, 1, 1, 0, 700), +(153, 1110101, 1002039, 1, 1, 0, 1500), +(154, 1110101, 1442000, 1, 1, 0, 700), +(155, 1110101, 1041061, 1, 1, 0, 800), +(156, 1110101, 1061057, 1, 1, 0, 800), +(157, 1110101, 1041018, 1, 1, 0, 800), +(158, 1110101, 1061013, 1, 1, 0, 800), +(159, 1110101, 2060000, 1, 1, 0, 30000), +(160, 1110101, 4010001, 1, 1, 0, 9000), +(161, 1110101, 4020000, 1, 1, 0, 9000), +(162, 1110101, 2061000, 1, 1, 0, 30000), +(163, 1110101, 1032001, 1, 1, 0, 1000), +(164, 1110101, 1382000, 1, 1, 0, 700), +(165, 1110101, 1302006, 1, 1, 0, 700), +(166, 1110101, 2000001, 1, 1, 0, 20000), +(167, 1110101, 2000003, 1, 1, 0, 20000), +(168, 1110101, 1482000, 1, 1, 0, 500), +(169, 1110101, 1002613, 1, 1, 0, 1500), +(170, 1120100, 4000006, 1, 1, 0, 600000), +(171, 1120100, 2000000, 1, 1, 0, 20000), +(172, 1120100, 2043002, 1, 1, 0, 300), +(173, 1120100, 1032001, 1, 1, 0, 1000), +(174, 1120100, 1422000, 1, 1, 0, 700), +(175, 1120100, 1092000, 1, 1, 0, 700), +(176, 1120100, 2060000, 1, 1, 0, 30000), +(177, 1120100, 4010003, 1, 1, 0, 9000), +(178, 1120100, 4020002, 1, 1, 0, 9000), +(179, 1120100, 2000003, 1, 1, 0, 20000), +(180, 1120100, 1041026, 1, 1, 0, 800), +(181, 1120100, 1061022, 1, 1, 0, 800), +(182, 1120100, 2061000, 1, 1, 0, 30000), +(183, 1120100, 1040037, 1, 1, 0, 800), +(184, 1120100, 1060027, 1, 1, 0, 800), +(185, 1120100, 1482001, 1, 1, 0, 500), +(186, 1130100, 4000018, 1, 1, 0, 600000), +(187, 1130100, 2000000, 1, 1, 0, 20000), +(188, 1130100, 2043202, 1, 1, 0, 300), +(189, 1130100, 1372001, 1, 1, 0, 700), +(190, 1130100, 2000003, 1, 1, 0, 20000), +(191, 1130100, 1072008, 1, 1, 0, 800), +(192, 1130100, 2060000, 1, 1, 0, 30000), +(193, 1130100, 4010005, 1, 1, 0, 9000), +(194, 1130100, 4020004, 1, 1, 0, 9000), +(195, 1130100, 1312016, 1, 1, 0, 700), +(196, 1130100, 1402001, 1, 1, 0, 700), +(197, 1130100, 1032003, 1, 1, 0, 1000), +(198, 1130100, 1092007, 1, 1, 0, 700), +(199, 1130100, 1040019, 1, 1, 0, 800), +(200, 1130100, 1060015, 1, 1, 0, 800), +(201, 1130100, 1041045, 1, 1, 0, 800), +(202, 1130100, 1061038, 1, 1, 0, 800), +(203, 1130100, 2061000, 1, 1, 0, 30000), +(204, 1130100, 1002118, 1, 1, 0, 1500), +(205, 1130100, 1382004, 1, 1, 0, 700), +(206, 1130100, 1402009, 1, 1, 0, 700), +(207, 1130100, 1492001, 1, 1, 0, 500), +(208, 1140100, 2000000, 1, 1, 0, 20000), +(209, 1140100, 2000003, 1, 1, 0, 20000), +(210, 1140100, 4000195, 1, 1, 0, 600000), +(211, 1140100, 2060000, 1, 1, 0, 30000), +(212, 1140100, 2061000, 1, 1, 0, 30000), +(213, 1140100, 4010000, 1, 1, 0, 9000), +(214, 1140100, 4020007, 1, 1, 0, 9000), +(215, 1140100, 4010004, 1, 1, 0, 9000), +(216, 1140100, 2040501, 1, 1, 0, 300), +(217, 1140100, 2040801, 1, 1, 0, 300), +(218, 1140100, 1041062, 1, 1, 0, 800), +(219, 1140100, 1061058, 1, 1, 0, 800), +(220, 1140100, 1050010, 1, 1, 0, 700), +(221, 1140100, 2048001, 1, 1, 0, 300), +(222, 1140100, 1041029, 1, 1, 0, 800), +(223, 1140100, 1061027, 1, 1, 0, 800), +(224, 1140100, 1072046, 1, 1, 0, 800), +(225, 1140100, 1072066, 1, 1, 0, 800), +(226, 1140100, 1082018, 1, 1, 0, 1000), +(227, 1140100, 1002107, 1, 1, 0, 1500), +(228, 1140100, 1002113, 1, 1, 0, 1500), +(229, 1140100, 1050003, 1, 1, 0, 700), +(230, 1140100, 1412012, 1, 1, 0, 700), +(231, 1140100, 1082180, 1, 1, 0, 1000), +(232, 1140100, 2044802, 1, 1, 0, 300), +(233, 120100, 4000011, 1, 1, 0, 600000), +(234, 120100, 2041007, 1, 1, 0, 300), +(235, 120100, 2000000, 1, 1, 0, 20000), +(236, 120100, 4020002, 1, 1, 0, 9000), +(237, 120100, 4010002, 1, 1, 0, 9000), +(238, 120100, 2060000, 1, 1, 0, 30000), +(239, 120100, 1332006, 1, 1, 0, 500), +(240, 120100, 2061000, 1, 1, 0, 30000), +(241, 120100, 1062000, 1, 1, 0, 800), +(242, 120100, 1060007, 1, 1, 0, 800), +(243, 120100, 1061009, 1, 1, 0, 800), +(244, 120100, 2010009, 1, 1, 0, 20000), +(245, 120100, 1002610, 1, 1, 0, 1500), +(246, 1210100, 4000017, 1, 1, 0, 40000), +(247, 1210100, 2041021, 1, 1, 0, 300), +(248, 1210100, 2000000, 1, 1, 0, 20000), +(249, 1210100, 2040702, 1, 1, 0, 300), +(250, 1210100, 1002008, 1, 1, 0, 1500), +(251, 1210100, 1062002, 1, 1, 0, 800), +(252, 1210100, 1422000, 1, 1, 0, 700), +(253, 1210100, 2060000, 1, 1, 0, 30000), +(254, 1210100, 4010006, 1, 1, 0, 9000), +(255, 1210100, 4020006, 1, 1, 0, 9000), +(256, 1210100, 1472000, 1, 1, 0, 500), +(257, 1210100, 4000021, 1, 1, 0, 50000), +(258, 1210100, 2061000, 1, 1, 0, 30000), +(259, 1210100, 1061028, 1, 1, 0, 800), +(260, 1210100, 1041014, 1, 1, 0, 800), +(261, 1210100, 1040034, 1, 1, 0, 800), +(262, 1210100, 2010009, 1, 1, 0, 20000), +(263, 1210100, 1002610, 1, 1, 0, 1500), +(264, 1210101, 4000002, 1, 1, 0, 600000), +(265, 1210101, 2000000, 1, 1, 0, 20000), +(266, 1210101, 4003004, 1, 1, 0, 200000), +(267, 1210101, 2040902, 1, 1, 0, 300), +(268, 1210101, 1040011, 1, 1, 0, 800), +(269, 1210101, 1040034, 1, 1, 0, 800), +(270, 1210101, 1060024, 1, 1, 0, 800), +(271, 1210101, 2060000, 1, 1, 0, 30000), +(272, 1210101, 4010002, 1, 1, 0, 9000), +(273, 1210101, 4020001, 1, 1, 0, 9000), +(274, 1210101, 4000021, 1, 1, 0, 50000), +(275, 1210101, 2061000, 1, 1, 0, 30000), +(276, 1210101, 1402018, 1, 1, 0, 700), +(277, 1210101, 1032003, 1, 1, 0, 1000), +(278, 1210101, 1041012, 1, 1, 0, 800), +(279, 1210101, 1040014, 1, 1, 0, 800), +(280, 1210101, 1492000, 1, 1, 0, 500), +(281, 1210101, 1052098, 1, 1, 0, 700), +(282, 1210101, 1072285, 1, 1, 0, 800), +(283, 1210102, 4000001, 1, 1, 0, 600000), +(284, 1210102, 2000000, 1, 1, 0, 20000), +(285, 1210102, 2040705, 1, 1, 0, 300), +(286, 1210102, 1072004, 1, 1, 0, 800), +(287, 1210102, 1002043, 1, 1, 0, 1500), +(288, 1210102, 1432000, 1, 1, 0, 500), +(289, 1210102, 1312000, 1, 1, 0, 700), +(290, 1210102, 2060000, 1, 1, 0, 30000), +(291, 1210102, 4010000, 1, 1, 0, 9000), +(292, 1210102, 4020007, 1, 1, 0, 9000), +(293, 1210102, 2061000, 1, 1, 0, 30000), +(294, 1210102, 1082012, 1, 1, 0, 1000), +(295, 1210102, 1072015, 1, 1, 0, 800), +(296, 1210102, 1072031, 1, 1, 0, 800), +(297, 1210102, 1052095, 1, 1, 0, 700), +(298, 1210102, 2330000, 1, 1, 0, 500), +(299, 1210103, 2000000, 1, 1, 0, 20000), +(300, 1210103, 2041015, 1, 1, 0, 300), +(301, 1210103, 2043302, 1, 1, 0, 300), +(302, 1210103, 2041004, 1, 1, 0, 300), +(303, 1210103, 2000003, 1, 1, 0, 20000), +(304, 1210103, 4020005, 1, 1, 0, 9000), +(305, 1210103, 4010002, 1, 1, 0, 9000), +(306, 1210103, 2060000, 1, 1, 0, 30000), +(307, 1210103, 2061000, 1, 1, 0, 30000), +(308, 1210103, 4000037, 1, 1, 0, 600000), +(309, 1210103, 1002075, 1, 1, 0, 1500), +(310, 1210103, 1432000, 1, 1, 0, 500), +(311, 1210103, 1040035, 1, 1, 0, 800), +(312, 1210103, 1060025, 1, 1, 0, 800), +(313, 1210103, 1041062, 1, 1, 0, 800), +(314, 1210103, 1061058, 1, 1, 0, 800), +(315, 1210103, 1402018, 1, 1, 0, 700), +(316, 1210103, 1072019, 1, 1, 0, 800), +(317, 1210103, 1432008, 1, 1, 0, 500), +(318, 1210103, 4006000, 1, 1, 0, 10000), +(319, 1210103, 2048001, 1, 1, 0, 300), +(320, 1210103, 1412012, 1, 1, 0, 700), +(321, 1210103, 1082180, 1, 1, 0, 1000), +(322, 1210103, 1492001, 1, 1, 0, 500), +(323, 1210103, 2330000, 1, 1, 0, 500), +(324, 130100, 4000003, 1, 1, 0, 600000), +(325, 130100, 2041008, 1, 1, 0, 300), +(326, 130100, 2000000, 1, 1, 0, 20000), +(327, 130100, 2040402, 1, 1, 0, 300), +(328, 130100, 4020003, 1, 1, 0, 9000), +(329, 130100, 2060000, 1, 1, 0, 30000), +(330, 130100, 4010003, 1, 1, 0, 9000), +(331, 130100, 1332000, 1, 1, 0, 500), +(332, 130100, 2061000, 1, 1, 0, 30000), +(333, 130100, 1072007, 1, 1, 0, 800), +(334, 130100, 1082003, 1, 1, 0, 1000), +(335, 130100, 1452003, 1, 1, 0, 500), +(336, 130100, 2010009, 1, 1, 0, 20000), +(337, 130100, 1061014, 1, 1, 0, 800), +(338, 130100, 1492000, 1, 1, 0, 500), +(339, 130101, 4000016, 1, 1, 0, 600000), +(340, 130101, 2041009, 1, 1, 0, 300), +(341, 130101, 2000000, 1, 1, 0, 20000), +(342, 130101, 2040502, 1, 1, 0, 300), +(343, 130101, 1402001, 1, 1, 0, 700), +(344, 130101, 1322007, 1, 1, 0, 700), +(345, 130101, 2060000, 1, 1, 0, 30000), +(346, 130101, 4010004, 1, 1, 0, 9000), +(347, 130101, 4020004, 1, 1, 0, 9000), +(348, 130101, 2061000, 1, 1, 0, 30000), +(349, 130101, 1372002, 1, 1, 0, 700), +(350, 130101, 1082029, 1, 1, 0, 1000), +(351, 130101, 1072060, 1, 1, 0, 800), +(352, 130101, 1032003, 1, 1, 0, 1000), +(353, 130101, 1061029, 1, 1, 0, 800), +(354, 130101, 2010009, 1, 1, 0, 20000), +(355, 130101, 1052095, 1, 1, 0, 700), +(356, 2100100, 2000001, 1, 1, 0, 20000), +(357, 2100100, 2000003, 1, 1, 0, 20000), +(358, 2100100, 2060000, 1, 1, 0, 30000), +(359, 2100100, 2061000, 1, 1, 0, 30000), +(360, 2100100, 4000324, 1, 1, 0, 600000), +(361, 2100100, 4020006, 1, 1, 0, 9000), +(362, 2100100, 4010001, 1, 1, 0, 9000), +(363, 2100100, 2040601, 1, 1, 0, 300), +(364, 2100100, 1382002, 1, 1, 0, 700), +(365, 2100100, 1002119, 1, 1, 0, 1500), +(366, 2100100, 1332010, 1, 1, 0, 500), +(367, 2100100, 1050025, 1, 1, 0, 700), +(368, 2100100, 1082002, 1, 1, 0, 1000), +(369, 2100100, 1072007, 1, 1, 0, 800), +(370, 2100100, 1032009, 1, 1, 0, 1000), +(371, 2100100, 1050005, 1, 1, 0, 700), +(372, 2100100, 4003004, 1, 1, 0, 200000), +(373, 2100100, 4010007, 1, 1, 0, 9000), +(374, 2100100, 1072288, 1, 1, 0, 800), +(375, 2100100, 2040420, 1, 1, 0, 300), +(376, 2100100, 2049000, 1, 1, 0, 150), +(377, 2100101, 2000001, 1, 1, 0, 20000), +(378, 2100101, 2000003, 1, 1, 0, 20000), +(379, 2100101, 2060000, 1, 1, 0, 30000), +(380, 2100101, 2061000, 1, 1, 0, 30000), +(381, 2100101, 4000325, 1, 1, 0, 600000), +(382, 2100101, 2002002, 1, 1, 0, 20000), +(383, 2100101, 4010006, 1, 1, 0, 9000), +(384, 2100101, 4020001, 1, 1, 0, 9000), +(385, 2100101, 2044602, 1, 1, 0, 300), +(386, 2100101, 1092021, 1, 1, 0, 700), +(387, 2100101, 1472006, 1, 1, 0, 500), +(388, 2100101, 1060017, 1, 1, 0, 800), +(389, 2100101, 1061028, 1, 1, 0, 800), +(390, 2100101, 1002129, 1, 1, 0, 1500), +(391, 2100101, 1041027, 1, 1, 0, 800), +(392, 2100101, 1061025, 1, 1, 0, 800), +(393, 2100101, 4003004, 1, 1, 0, 200000), +(394, 2100101, 4010007, 1, 1, 0, 9000), +(395, 2100101, 1082183, 1, 1, 0, 1000), +(396, 2100101, 2044210, 1, 1, 0, 300), +(397, 2100102, 2000001, 1, 1, 0, 20000), +(398, 2100102, 2000003, 1, 1, 0, 20000), +(399, 2100102, 2060000, 1, 1, 0, 30000), +(400, 2100102, 2061000, 1, 1, 0, 30000), +(401, 2100102, 4000329, 1, 1, 0, 600000), +(402, 2100102, 4010002, 1, 1, 0, 9000), +(403, 2100102, 4020004, 1, 1, 0, 9000), +(404, 2100102, 2040705, 1, 1, 0, 300), +(405, 2100102, 2044102, 1, 1, 0, 300), +(406, 2100102, 1051004, 1, 1, 0, 700), +(407, 2100102, 1050024, 1, 1, 0, 700), +(408, 2100102, 1032006, 1, 1, 0, 1000), +(409, 2100102, 1002048, 1, 1, 0, 1500), +(410, 2100102, 1072027, 1, 1, 0, 800), +(411, 2100102, 1040044, 1, 1, 0, 800), +(412, 2100102, 1060033, 1, 1, 0, 800), +(413, 2100102, 1462003, 1, 1, 0, 500), +(414, 2100102, 2022155, 1, 1, 0, 20000), +(415, 2100102, 4010007, 1, 1, 0, 9000), +(416, 2100102, 1082183, 1, 1, 0, 1000), +(417, 2100102, 1082186, 1, 1, 0, 1000), +(418, 2100102, 2044901, 1, 1, 0, 300), +(419, 2100102, 2043212, 1, 1, 0, 300), +(420, 2100103, 2000001, 1, 1, 0, 20000), +(421, 2100103, 2000003, 1, 1, 0, 20000), +(422, 2100103, 2060000, 1, 1, 0, 30000), +(423, 2100103, 2061000, 1, 1, 0, 30000), +(424, 2100103, 4000330, 1, 1, 0, 600000), +(425, 2100103, 4010003, 1, 1, 0, 9000), +(426, 2100103, 4020004, 1, 1, 0, 9000), +(427, 2100103, 2040501, 1, 1, 0, 300), +(428, 2100103, 1322009, 1, 1, 0, 700), +(429, 2100103, 1092002, 1, 1, 0, 700), +(430, 2100103, 1432002, 1, 1, 0, 500), +(431, 2100103, 1072054, 1, 1, 0, 800), +(432, 2100103, 1082016, 1, 1, 0, 1000), +(433, 2100103, 1072078, 1, 1, 0, 800), +(434, 2100103, 1061054, 1, 1, 0, 800), +(435, 2100103, 1041058, 1, 1, 0, 800), +(436, 2100103, 1002096, 1, 1, 0, 1500), +(437, 2100103, 1050011, 1, 1, 0, 700), +(438, 2100103, 2022155, 1, 1, 0, 20000), +(439, 2100103, 4010007, 1, 1, 0, 9000), +(440, 2100103, 1072291, 1, 1, 0, 800), +(441, 2100103, 2044314, 1, 1, 0, 300), +(442, 2100104, 2000001, 1, 1, 0, 20000), +(443, 2100104, 2000003, 1, 1, 0, 20000), +(444, 2100104, 2060000, 1, 1, 0, 30000), +(445, 2100104, 2061000, 1, 1, 0, 30000), +(446, 2100104, 4000331, 1, 1, 0, 600000), +(447, 2100104, 2002003, 1, 1, 0, 20000), +(448, 2100104, 4020006, 1, 1, 0, 9000), +(449, 2100104, 4020005, 1, 1, 0, 9000), +(450, 2100104, 4004001, 1, 1, 0, 10000), +(451, 2100104, 2041002, 1, 1, 0, 300), +(452, 2100104, 1442001, 1, 1, 0, 700), +(453, 2100104, 1322003, 1, 1, 0, 700), +(454, 2100104, 1092019, 1, 1, 0, 700), +(455, 2100104, 1072087, 1, 1, 0, 800), +(456, 2100104, 1040068, 1, 1, 0, 800), +(457, 2100104, 1060057, 1, 1, 0, 800), +(458, 2100104, 1082052, 1, 1, 0, 1000), +(459, 2100104, 1002004, 1, 1, 0, 1500), +(460, 2100104, 2022155, 1, 1, 0, 20000), +(461, 2100104, 4010007, 1, 1, 0, 9000), +(462, 2100104, 1082186, 1, 1, 0, 1000), +(463, 2100104, 2043214, 1, 1, 0, 300), +(464, 2100105, 2000001, 1, 1, 0, 20000), +(465, 2100105, 2000003, 1, 1, 0, 20000), +(466, 2100105, 2060000, 1, 1, 0, 30000), +(467, 2100105, 2061000, 1, 1, 0, 30000), +(468, 2100105, 4000328, 1, 1, 0, 600000), +(469, 2100105, 4010004, 1, 1, 0, 9000), +(470, 2100105, 4006001, 1, 1, 0, 10000), +(471, 2100105, 2040902, 1, 1, 0, 300), +(472, 2100105, 2044002, 1, 1, 0, 300), +(473, 2100105, 1452003, 1, 1, 0, 500), +(474, 2100105, 1302006, 1, 1, 0, 700), +(475, 2100105, 1372004, 1, 1, 0, 700), +(476, 2100105, 1002013, 1, 1, 0, 1500), +(477, 2100105, 1072086, 1, 1, 0, 800), +(478, 2100105, 1002119, 1, 1, 0, 1500), +(479, 2100105, 1072007, 1, 1, 0, 800), +(480, 2100105, 1082020, 1, 1, 0, 1000), +(481, 2100105, 4010007, 1, 1, 0, 9000), +(482, 2100105, 1052101, 1, 1, 0, 700), +(483, 2100105, 1482003, 1, 1, 0, 500), +(484, 2100105, 2330000, 1, 1, 0, 500), +(485, 2100105, 2040316, 1, 1, 0, 300), +(486, 2100105, 2040319, 1, 1, 0, 300), +(487, 2100105, 2044412, 1, 1, 0, 300), +(488, 2100106, 2000001, 1, 1, 0, 20000), +(489, 2100106, 2000003, 1, 1, 0, 20000), +(490, 2100106, 2060000, 1, 1, 0, 30000), +(491, 2100106, 2061000, 1, 1, 0, 30000), +(492, 2100106, 4000326, 1, 1, 0, 600000), +(493, 2100106, 2002004, 1, 1, 0, 20000), +(494, 2100106, 4020007, 1, 1, 0, 9000), +(495, 2100106, 4020000, 1, 1, 0, 9000), +(496, 2100106, 2044501, 1, 1, 0, 300), +(497, 2100106, 1402002, 1, 1, 0, 700), +(498, 2100106, 1032004, 1, 1, 0, 1000), +(499, 2100106, 1050001, 1, 1, 0, 700), +(500, 2100106, 1002055, 1, 1, 0, 1500), +(501, 2100106, 1040049, 1, 1, 0, 800), +(502, 2100106, 1060037, 1, 1, 0, 800), +(503, 2100106, 1082068, 1, 1, 0, 1000), +(504, 2100106, 1432001, 1, 1, 0, 500), +(505, 2100106, 4010007, 1, 1, 0, 9000), +(506, 2100106, 1492002, 1, 1, 0, 500), +(507, 2100106, 2330000, 1, 1, 0, 500), +(508, 2100106, 2040926, 1, 1, 0, 300), +(509, 2100107, 2000001, 1, 1, 0, 20000), +(510, 2100107, 2000003, 1, 1, 0, 20000), +(511, 2100107, 2060000, 1, 1, 0, 30000), +(512, 2100107, 2061000, 1, 1, 0, 30000), +(513, 2100107, 4000327, 1, 1, 0, 600000), +(514, 2100107, 4020003, 1, 1, 0, 9000), +(515, 2100107, 4020002, 1, 1, 0, 9000), +(516, 2100107, 2048001, 1, 1, 0, 300), +(517, 2100107, 2070002, 1, 1, 0, 500), +(518, 2100107, 1332004, 1, 1, 0, 500), +(519, 2100107, 1382017, 1, 1, 0, 700), +(520, 2100107, 1041054, 1, 1, 0, 800), +(521, 2100107, 1061050, 1, 1, 0, 800), +(522, 2100107, 1002141, 1, 1, 0, 1500), +(523, 2100107, 1051011, 1, 1, 0, 700), +(524, 2100107, 1040059, 1, 1, 0, 800), +(525, 2100107, 1060045, 1, 1, 0, 800), +(526, 2100107, 4010007, 1, 1, 0, 9000), +(527, 2100107, 1492003, 1, 1, 0, 500), +(528, 2100108, 2000001, 1, 1, 0, 20000), +(529, 2100108, 2000003, 1, 1, 0, 20000), +(530, 2100108, 2060000, 1, 1, 0, 30000), +(531, 2100108, 2061000, 1, 1, 0, 30000), +(532, 2100108, 4000333, 1, 1, 0, 600000), +(533, 2100108, 2002005, 1, 1, 0, 20000), +(534, 2100108, 4010002, 1, 1, 0, 9000), +(535, 2100108, 4010001, 1, 1, 0, 9000), +(536, 2100108, 4004002, 1, 1, 0, 10000), +(537, 2100108, 2043002, 1, 1, 0, 300), +(538, 2100108, 2043701, 1, 1, 0, 300), +(539, 2100108, 1332009, 1, 1, 0, 500), +(540, 2100108, 1412004, 1, 1, 0, 700), +(541, 2100108, 1040062, 1, 1, 0, 800), +(542, 2100108, 1060051, 1, 1, 0, 800), +(543, 2100108, 1050029, 1, 1, 0, 700), +(544, 2100108, 1002164, 1, 1, 0, 1500), +(545, 2100108, 1082005, 1, 1, 0, 1000), +(546, 2100108, 4003004, 1, 1, 0, 200000), +(547, 2100108, 4010007, 1, 1, 0, 9000), +(548, 2100108, 1482003, 1, 1, 0, 500), +(549, 2100108, 2044801, 1, 1, 0, 300), +(550, 2100108, 2044014, 1, 1, 0, 300), +(551, 2100108, 2044214, 1, 1, 0, 300), +(552, 210100, 4000004, 1, 1, 0, 600000), +(553, 210100, 2041018, 1, 1, 0, 300), +(554, 210100, 4000010, 1, 1, 0, 600000), +(555, 210100, 2000000, 1, 1, 0, 20000), +(556, 210100, 2040602, 1, 1, 0, 300), +(557, 210100, 1002019, 1, 1, 0, 1500), +(558, 210100, 1412001, 1, 1, 0, 700), +(559, 210100, 2060000, 1, 1, 0, 30000), +(560, 210100, 4010005, 1, 1, 0, 9000), +(561, 210100, 4020005, 1, 1, 0, 9000), +(562, 210100, 2061000, 1, 1, 0, 30000), +(563, 210100, 1432001, 1, 1, 0, 500), +(564, 210100, 1082019, 1, 1, 0, 1000), +(565, 210100, 1072023, 1, 1, 0, 800), +(566, 210100, 1322007, 1, 1, 0, 700), +(567, 210100, 1412012, 1, 1, 0, 700), +(568, 210100, 2010009, 1, 1, 0, 20000), +(569, 210100, 1482000, 1, 1, 0, 500), +(570, 2110200, 4000015, 1, 1, 0, 600000), +(571, 2110200, 2000001, 1, 1, 0, 20000), +(572, 2110200, 2002003, 1, 1, 0, 20000), +(573, 2110200, 2044102, 1, 1, 0, 300), +(574, 2110200, 1002005, 1, 1, 0, 1500), +(575, 2110200, 1041008, 1, 1, 0, 800), +(576, 2110200, 1061006, 1, 1, 0, 800), +(577, 2110200, 1072073, 1, 1, 0, 800), +(578, 2110200, 1050006, 1, 1, 0, 700), +(579, 2110200, 2060000, 1, 1, 0, 30000), +(580, 2110200, 4010000, 1, 1, 0, 9000), +(581, 2110200, 4020006, 1, 1, 0, 9000), +(582, 2110200, 2000003, 1, 1, 0, 20000), +(583, 2110200, 1462004, 1, 1, 0, 500), +(584, 2110200, 1040044, 1, 1, 0, 800), +(585, 2110200, 1060033, 1, 1, 0, 800), +(586, 2110200, 2061000, 1, 1, 0, 30000), +(587, 2110200, 1060002, 1, 1, 0, 800), +(588, 2110200, 1082000, 1, 1, 0, 1000), +(589, 2110200, 1002038, 1, 1, 0, 1500), +(590, 2110200, 1092000, 1, 1, 0, 700), +(591, 2110200, 1302004, 1, 1, 0, 700), +(592, 2110200, 1442001, 1, 1, 0, 700), +(593, 2110200, 1492002, 1, 1, 0, 500), +(594, 2110200, 1052104, 1, 1, 0, 700), +(595, 2110200, 2330000, 1, 1, 0, 500), +(596, 2110200, 2043214, 1, 1, 0, 300), +(597, 2110300, 2000001, 1, 1, 0, 20000), +(598, 2110300, 2000003, 1, 1, 0, 20000), +(599, 2110300, 2060000, 1, 1, 0, 30000), +(600, 2110300, 2061000, 1, 1, 0, 30000), +(601, 2110300, 2002004, 1, 1, 0, 20000), +(602, 2110300, 4020007, 1, 1, 0, 9000), +(603, 2110300, 4020000, 1, 1, 0, 9000), +(604, 2110300, 2044501, 1, 1, 0, 300), +(605, 2110300, 1402002, 1, 1, 0, 700), +(606, 2110300, 1032004, 1, 1, 0, 1000), +(607, 2110300, 1050001, 1, 1, 0, 700), +(608, 2110300, 1002055, 1, 1, 0, 1500), +(609, 2110300, 1040049, 1, 1, 0, 800), +(610, 2110300, 1060037, 1, 1, 0, 800), +(611, 2110300, 1082068, 1, 1, 0, 1000), +(612, 2110300, 1432001, 1, 1, 0, 500), +(613, 2110300, 4010007, 1, 1, 0, 9000), +(614, 2110300, 4000350, 1, 1, 0, 600000), +(615, 2110300, 1002619, 1, 1, 0, 1500), +(616, 2110300, 2043214, 1, 1, 0, 300), +(617, 2110301, 2000001, 1, 1, 0, 20000), +(618, 2110301, 2000003, 1, 1, 0, 20000), +(619, 2110301, 2060000, 1, 1, 0, 30000), +(620, 2110301, 2061000, 1, 1, 0, 30000), +(621, 2110301, 2002005, 1, 1, 0, 20000), +(622, 2110301, 4010002, 1, 1, 0, 9000), +(623, 2110301, 4010001, 1, 1, 0, 9000), +(624, 2110301, 4004002, 1, 1, 0, 10000), +(625, 2110301, 2043002, 1, 1, 0, 300), +(626, 2110301, 2043701, 1, 1, 0, 300), +(627, 2110301, 1332009, 1, 1, 0, 500), +(628, 2110301, 1412004, 1, 1, 0, 700), +(629, 2110301, 1040062, 1, 1, 0, 800), +(630, 2110301, 1060051, 1, 1, 0, 800), +(631, 2110301, 1050029, 1, 1, 0, 700), +(632, 2110301, 1002164, 1, 1, 0, 1500), +(633, 2110301, 1082005, 1, 1, 0, 1000), +(634, 2110301, 4010007, 1, 1, 0, 9000), +(635, 2110301, 4000351, 1, 1, 0, 600000), +(636, 2110301, 1492003, 1, 1, 0, 500), +(637, 2110301, 2330001, 1, 1, 0, 500), +(638, 2110301, 2043114, 1, 1, 0, 300), +(639, 2130100, 4000018, 1, 1, 0, 600000), +(640, 2130100, 2000001, 1, 1, 0, 20000), +(641, 2130100, 2012002, 1, 1, 0, 6000), +(642, 2130100, 2044202, 1, 1, 0, 300), +(643, 2130100, 1051003, 1, 1, 0, 700), +(644, 2130100, 1061006, 1, 1, 0, 800), +(645, 2130100, 1041028, 1, 1, 0, 800), +(646, 2130100, 1061026, 1, 1, 0, 800), +(647, 2130100, 2060000, 1, 1, 0, 30000), +(648, 2130100, 4010001, 1, 1, 0, 9000), +(649, 2130100, 4020007, 1, 1, 0, 9000), +(650, 2130100, 2000003, 1, 1, 0, 20000), +(651, 2130100, 1472006, 1, 1, 0, 500), +(652, 2130100, 1072085, 1, 1, 0, 800), +(653, 2130100, 1002097, 1, 1, 0, 1500), +(654, 2130100, 1472009, 1, 1, 0, 500), +(655, 2130100, 1472012, 1, 1, 0, 500), +(656, 2130100, 2061000, 1, 1, 0, 30000), +(657, 2130100, 1051004, 1, 1, 0, 700), +(658, 2130100, 1072087, 1, 1, 0, 800), +(659, 2130100, 4006001, 1, 1, 0, 10000), +(660, 2130100, 2070009, 1, 1, 0, 500), +(661, 2130100, 4000215, 1, 1, 0, 600000), +(662, 2130100, 1002616, 1, 1, 0, 1500), +(663, 2130100, 2044012, 1, 1, 0, 300), +(664, 2130100, 2044210, 1, 1, 0, 300), +(665, 2130103, 4000034, 1, 1, 0, 600000), +(666, 2130103, 2000001, 1, 1, 0, 20000), +(667, 2130103, 2040902, 1, 1, 0, 300), +(668, 2130103, 4010002, 1, 1, 0, 9000), +(669, 2130103, 4020006, 1, 1, 0, 9000), +(670, 2130103, 2010003, 1, 1, 0, 20000), +(671, 2130103, 1332008, 1, 1, 0, 500), +(672, 2130103, 1072069, 1, 1, 0, 800), +(673, 2130103, 1002027, 1, 1, 0, 1500), +(674, 2130103, 1050005, 1, 1, 0, 700), +(675, 2130103, 1061028, 1, 1, 0, 800), +(676, 2130103, 1041031, 1, 1, 0, 800), +(677, 2130103, 1041021, 1, 1, 0, 800), +(678, 2130103, 1061018, 1, 1, 0, 800), +(679, 2130103, 2048003, 1, 1, 0, 300), +(680, 2130103, 1482002, 1, 1, 0, 500), +(681, 2130103, 2040617, 1, 1, 0, 300), +(682, 2130103, 2049100, 1, 1, 0, 150), +(683, 2220000, 4000000, 1, 1, 0, 600000), +(684, 2220000, 4000000, 1, 1, 0, 600000), +(685, 2220000, 4000000, 1, 1, 0, 600000), +(686, 2220000, 4000016, 1, 1, 0, 600000), +(687, 2220000, 4000016, 1, 1, 0, 600000), +(688, 2220000, 4000016, 1, 1, 0, 600000), +(689, 2220000, 4000019, 1, 1, 0, 600000), +(690, 2220000, 4000019, 1, 1, 0, 600000), +(691, 2220000, 4000019, 1, 1, 0, 600000), +(692, 2220000, 4010000, 1, 1, 0, 90000), +(693, 2220000, 4020000, 1, 1, 0, 90000), +(694, 2220000, 2000000, 1, 1, 0, 200000), +(695, 2220000, 2010009, 1, 1, 0, 200000), +(696, 2220000, 2020014, 1, 1, 0, 200000), +(697, 2220000, 2040001, 1, 1, 0, 3000), +(698, 2220000, 2040301, 1, 1, 0, 3000), +(699, 2220000, 2040401, 1, 1, 0, 3000), +(700, 2220000, 2043201, 1, 1, 0, 3000), +(701, 2220000, 2043701, 1, 1, 0, 3000), +(702, 2220000, 2041016, 1, 1, 0, 3000), +(703, 2220000, 2043801, 1, 1, 0, 3000), +(704, 2220000, 2044001, 1, 1, 0, 3000), +(705, 2220000, 2040501, 1, 1, 0, 3000), +(706, 2220000, 2040601, 1, 1, 0, 3000), +(707, 2220000, 2060000, 1, 1, 0, 300000), +(708, 2220000, 2061000, 1, 1, 0, 300000), +(709, 2220000, 2070000, 1, 1, 0, 5000), +(710, 2220000, 1002049, 1, 1, 0, 15000), +(711, 2220000, 1002073, 1, 1, 0, 15000), +(712, 2220000, 1002159, 1, 1, 0, 15000), +(713, 2220000, 1002150, 1, 1, 0, 15000), +(714, 2220000, 1040041, 1, 1, 0, 8000), +(715, 2220000, 1041024, 1, 1, 0, 8000), +(716, 2220000, 1050025, 1, 1, 0, 7000), +(717, 2220000, 1051005, 1, 1, 0, 7000), +(718, 2220000, 1040023, 1, 1, 0, 8000), +(719, 2220000, 1041033, 1, 1, 0, 8000), +(720, 2220000, 1040050, 1, 1, 0, 8000), +(721, 2220000, 1041060, 1, 1, 0, 8000), +(722, 2220000, 1082001, 1, 1, 0, 10000), +(723, 2220000, 1082028, 1, 1, 0, 10000), +(724, 2220000, 1082018, 1, 1, 0, 10000), +(725, 2220000, 1082039, 1, 1, 0, 10000), +(726, 2220000, 1072052, 1, 1, 0, 8000), +(727, 2220000, 1072074, 1, 1, 0, 8000), +(728, 2220000, 1072069, 1, 1, 0, 8000), +(729, 2220000, 1072087, 1, 1, 0, 8000), +(730, 2220000, 2040002, 1, 1, 0, 3000), +(731, 2220000, 2040302, 1, 1, 0, 3000), +(732, 2220000, 2040402, 1, 1, 0, 3000), +(733, 2220000, 2043302, 1, 1, 0, 3000), +(734, 2220000, 2043702, 1, 1, 0, 3000), +(735, 2220000, 2210006, 1, 1, 0, 999999), +(736, 2220000, 1002619, 1, 1, 0, 15000), +(737, 2220000, 1052104, 1, 1, 0, 7000), +(738, 2220000, 1082186, 1, 1, 0, 10000), +(739, 2220000, 1072291, 1, 1, 0, 8000), +(740, 2220000, 2330000, 1, 1, 0, 5000), +(741, 2220000, 2044801, 1, 1, 0, 3000), +(742, 2220000, 2044902, 1, 1, 0, 3000), +(743, 2220000, 2040418, 1, 1, 0, 3000), +(744, 2220000, 2040928, 1, 1, 0, 3000), +(745, 2220000, 2043114, 1, 1, 0, 3000), +(746, 2220000, 2044414, 1, 1, 0, 3000), +(747, 2220100, 4000009, 1, 1, 0, 600000), +(748, 2220100, 2000001, 1, 1, 0, 20000), +(749, 2220100, 2002002, 1, 1, 0, 20000), +(750, 2220100, 2044002, 1, 1, 0, 300), +(751, 2220100, 1332006, 1, 1, 0, 500), +(752, 2220100, 1051000, 1, 1, 0, 700), +(753, 2220100, 1002127, 1, 1, 0, 1500), +(754, 2220100, 2060000, 1, 1, 0, 30000), +(755, 2220100, 4010006, 1, 1, 0, 9000), +(756, 2220100, 4020005, 1, 1, 0, 9000), +(757, 2220100, 2000003, 1, 1, 0, 20000), +(758, 2220100, 1442001, 1, 1, 0, 700), +(759, 2220100, 1041027, 1, 1, 0, 800), +(760, 2220100, 1061025, 1, 1, 0, 800), +(761, 2220100, 1040012, 1, 1, 0, 800), +(762, 2220100, 1060010, 1, 1, 0, 800), +(763, 2220100, 2061000, 1, 1, 0, 30000), +(764, 2220100, 1072020, 1, 1, 0, 800), +(765, 2220100, 1432001, 1, 1, 0, 500), +(766, 2220100, 4020006, 1, 1, 0, 9000), +(767, 2220100, 2000002, 1, 1, 0, 20000), +(768, 2220100, 1072011, 1, 1, 0, 800), +(769, 2220100, 1332001, 1, 1, 0, 500), +(770, 2220100, 1382002, 1, 1, 0, 700), +(771, 2220100, 1002178, 1, 1, 0, 1500), +(772, 2220100, 1412012, 1, 1, 0, 700), +(773, 2220100, 1002613, 1, 1, 0, 1500), +(774, 2220100, 1002616, 1, 1, 0, 1500), +(775, 2220100, 1002619, 1, 1, 0, 1500), +(776, 2230100, 4000007, 1, 1, 0, 600000), +(777, 2230100, 2000001, 1, 1, 0, 20000), +(778, 2230100, 2002001, 1, 1, 0, 20000), +(779, 2230100, 2044402, 1, 1, 0, 300), +(780, 2230100, 1032009, 1, 1, 0, 1000), +(781, 2230100, 1041060, 1, 1, 0, 800), +(782, 2230100, 1061056, 1, 1, 0, 800), +(783, 2230100, 1002047, 1, 1, 0, 1500), +(784, 2230100, 1032008, 1, 1, 0, 1000), +(785, 2230100, 2060000, 1, 1, 0, 30000), +(786, 2230100, 4010004, 1, 1, 0, 9000), +(787, 2230100, 4020005, 1, 1, 0, 9000), +(788, 2230100, 1302004, 1, 1, 0, 700), +(789, 2230100, 1050026, 1, 1, 0, 700), +(790, 2230100, 2000003, 1, 1, 0, 20000), +(791, 2230100, 1051012, 1, 1, 0, 700), +(792, 2230100, 2061000, 1, 1, 0, 30000), +(793, 2230100, 1041032, 1, 1, 0, 800), +(794, 2230100, 1062006, 1, 1, 0, 800), +(795, 2230100, 1432002, 1, 1, 0, 500), +(796, 2230100, 1040021, 1, 1, 0, 800), +(797, 2230100, 4020007, 1, 1, 0, 9000), +(798, 2230100, 2000002, 1, 1, 0, 20000), +(799, 2230100, 1041007, 1, 1, 0, 800), +(800, 2230100, 1422001, 1, 1, 0, 700), +(801, 2230100, 1060071, 1, 1, 0, 800), +(802, 2230100, 1482003, 1, 1, 0, 500), +(803, 2230100, 2040823, 1, 1, 0, 300), +(804, 2230100, 2044010, 1, 1, 0, 300), +(805, 2230101, 4000008, 1, 1, 0, 600000), +(806, 2230101, 2000001, 1, 1, 0, 20000), +(807, 2230101, 2002000, 1, 1, 0, 20000), +(808, 2230101, 2044302, 1, 1, 0, 300), +(809, 2230101, 1032000, 1, 1, 0, 1000), +(810, 2230101, 1032004, 1, 1, 0, 1000), +(811, 2230101, 1452001, 1, 1, 0, 500), +(812, 2230101, 1412002, 1, 1, 0, 700), +(813, 2230101, 2060000, 1, 1, 0, 30000), +(814, 2230101, 4010002, 1, 1, 0, 9000), +(815, 2230101, 4020003, 1, 1, 0, 9000), +(816, 2230101, 1002158, 1, 1, 0, 1500), +(817, 2230101, 2000003, 1, 1, 0, 20000), +(818, 2230101, 1040048, 1, 1, 0, 800), +(819, 2230101, 2061000, 1, 1, 0, 30000), +(820, 2230101, 1060038, 1, 1, 0, 800), +(821, 2230101, 1372003, 1, 1, 0, 700), +(822, 2230101, 1060018, 1, 1, 0, 800), +(823, 2230101, 1040026, 1, 1, 0, 800), +(824, 2230101, 1040009, 1, 1, 0, 800), +(825, 2230101, 4010003, 1, 1, 0, 9000), +(826, 2230101, 2000002, 1, 1, 0, 20000), +(827, 2230101, 1050030, 1, 1, 0, 700), +(828, 2230101, 1050031, 1, 1, 0, 700), +(829, 2230101, 1432003, 1, 1, 0, 500), +(830, 2230101, 1002035, 1, 1, 0, 1500), +(831, 2230101, 1312007, 1, 1, 0, 700), +(832, 2230101, 1040021, 1, 1, 0, 800), +(833, 2230101, 1082183, 1, 1, 0, 1000), +(834, 2230101, 1492003, 1, 1, 0, 500), +(835, 2230101, 2049100, 1, 1, 0, 150), +(836, 2230102, 4000020, 1, 1, 0, 600000), +(837, 2230102, 2000001, 1, 1, 0, 20000), +(838, 2230102, 2002004, 1, 1, 0, 20000), +(839, 2230102, 2060000, 1, 1, 0, 30000), +(840, 2230102, 4003004, 1, 1, 0, 200000), +(841, 2230102, 1032000, 1, 1, 0, 1000), +(842, 2230102, 1041013, 1, 1, 0, 800), +(843, 2230102, 1061024, 1, 1, 0, 800), +(844, 2230102, 1051005, 1, 1, 0, 700), +(845, 2230102, 1032002, 1, 1, 0, 1000), +(846, 2230102, 4010003, 1, 1, 0, 9000), +(847, 2230102, 4020004, 1, 1, 0, 9000), +(848, 2230102, 1002064, 1, 1, 0, 1500), +(849, 2230102, 2000003, 1, 1, 0, 20000), +(850, 2230102, 1072039, 1, 1, 0, 800), +(851, 2230102, 1072033, 1, 1, 0, 800), +(852, 2230102, 4000021, 1, 1, 0, 50000), +(853, 2230102, 1432003, 1, 1, 0, 500), +(854, 2230102, 1402006, 1, 1, 0, 700), +(855, 2230102, 2061000, 1, 1, 0, 30000), +(856, 2230102, 1382017, 1, 1, 0, 700), +(857, 2230102, 1040079, 1, 1, 0, 800), +(858, 2230102, 1060069, 1, 1, 0, 800), +(859, 2230102, 1002151, 1, 1, 0, 1500), +(860, 2230102, 1060050, 1, 1, 0, 800), +(861, 2230102, 1452005, 1, 1, 0, 500), +(862, 2230102, 1462004, 1, 1, 0, 500), +(863, 2230102, 1002166, 1, 1, 0, 1500), +(864, 2230102, 1412005, 1, 1, 0, 700), +(865, 2230102, 1082186, 1, 1, 0, 1000), +(866, 2230102, 2330001, 1, 1, 0, 500), +(867, 2230103, 4000097, 1, 1, 0, 600000), +(868, 2230103, 4131000, 1, 1, 0, 6000), +(869, 2230103, 2060000, 1, 1, 0, 30000), +(870, 2230103, 2061000, 1, 1, 0, 30000), +(871, 2230103, 2002006, 1, 1, 0, 20000), +(872, 2230103, 4010003, 1, 1, 0, 9000), +(873, 2230103, 4004003, 1, 1, 0, 10000), +(874, 2230103, 2000001, 1, 1, 0, 20000), +(875, 2230103, 2000003, 1, 1, 0, 20000), +(876, 2230103, 2040900, 1, 1, 0, 300), +(877, 2230103, 1332020, 1, 1, 0, 500), +(878, 2230103, 1402010, 1, 1, 0, 700), +(879, 2230103, 1302003, 1, 1, 0, 700), +(880, 2230103, 1312003, 1, 1, 0, 700), +(881, 2230103, 1082017, 1, 1, 0, 1000), +(882, 2230103, 1002020, 1, 1, 0, 1500), +(883, 2230103, 1050023, 1, 1, 0, 700), +(884, 2230103, 2070000, 1, 1, 0, 500), +(885, 2230103, 1462003, 1, 1, 0, 500), +(886, 2230103, 1072288, 1, 1, 0, 800), +(887, 2230103, 1072291, 1, 1, 0, 800), +(888, 2230103, 2044802, 1, 1, 0, 300), +(889, 2230103, 2040319, 1, 1, 0, 300), +(890, 2230103, 2044114, 1, 1, 0, 300), +(891, 2230104, 4000098, 1, 1, 0, 600000), +(892, 2230104, 4131010, 1, 1, 0, 6000), +(893, 2230104, 2060000, 1, 1, 0, 30000), +(894, 2230104, 2061000, 1, 1, 0, 30000), +(895, 2230104, 2002007, 1, 1, 0, 20000), +(896, 2230104, 4010001, 1, 1, 0, 9000), +(897, 2230104, 4010002, 1, 1, 0, 9000), +(898, 2230104, 4004002, 1, 1, 0, 10000), +(899, 2230104, 2000002, 1, 1, 0, 20000), +(900, 2230104, 2000003, 1, 1, 0, 20000), +(901, 2230104, 2040601, 1, 1, 0, 300), +(902, 2230104, 1332010, 1, 1, 0, 500), +(903, 2230104, 1061034, 1, 1, 0, 800), +(904, 2230104, 1041041, 1, 1, 0, 800), +(905, 2230104, 1382002, 1, 1, 0, 700), +(906, 2230104, 1082043, 1, 1, 0, 1000), +(907, 2230104, 1002162, 1, 1, 0, 1500), +(908, 2230104, 1050028, 1, 1, 0, 700), +(909, 2230104, 2070002, 1, 1, 0, 500), +(910, 2230104, 1082042, 1, 1, 0, 1000), +(911, 2230104, 1052104, 1, 1, 0, 700), +(912, 2230104, 2040929, 1, 1, 0, 300), +(913, 2230104, 2043112, 1, 1, 0, 300), +(914, 2230105, 4000161, 1, 1, 0, 600000), +(915, 2230105, 4131000, 1, 1, 0, 6000), +(916, 2230105, 2060000, 1, 1, 0, 30000), +(917, 2230105, 2061000, 1, 1, 0, 30000), +(918, 2230105, 2002004, 1, 1, 0, 20000), +(919, 2230105, 4010001, 1, 1, 0, 9000), +(920, 2230105, 4004003, 1, 1, 0, 10000), +(921, 2230105, 2000001, 1, 1, 0, 20000), +(922, 2230105, 2000003, 1, 1, 0, 20000), +(923, 2230105, 2040900, 1, 1, 0, 300), +(924, 2230105, 1312003, 1, 1, 0, 700), +(925, 2230105, 1322004, 1, 1, 0, 700), +(926, 2230105, 1041042, 1, 1, 0, 800), +(927, 2230105, 1061035, 1, 1, 0, 800), +(928, 2230105, 1072007, 1, 1, 0, 800), +(929, 2230105, 1072046, 1, 1, 0, 800), +(930, 2230105, 1050011, 1, 1, 0, 700), +(931, 2230105, 1082016, 1, 1, 0, 1000), +(932, 2230105, 2070000, 1, 1, 0, 500), +(933, 2230105, 1032005, 1, 1, 0, 1000), +(934, 2230105, 1492002, 1, 1, 0, 500), +(935, 2230105, 2040617, 1, 1, 0, 300), +(936, 2230105, 2043015, 1, 1, 0, 300), +(937, 2230106, 4000163, 1, 1, 0, 600000), +(938, 2230106, 2000001, 1, 1, 0, 20000), +(939, 2230106, 2002001, 1, 1, 0, 20000), +(940, 2230106, 2060000, 1, 1, 0, 30000), +(941, 2230106, 2002005, 1, 1, 0, 20000), +(942, 2230106, 2040001, 1, 1, 0, 300), +(943, 2230106, 4010003, 1, 1, 0, 9000), +(944, 2230106, 4020004, 1, 1, 0, 9000), +(945, 2230106, 1332013, 1, 1, 0, 500), +(946, 2230106, 1041040, 1, 1, 0, 800), +(947, 2230106, 1061033, 1, 1, 0, 800), +(948, 2230106, 2000003, 1, 1, 0, 20000), +(949, 2230106, 1002146, 1, 1, 0, 1500), +(950, 2230106, 1002158, 1, 1, 0, 1500), +(951, 2230106, 2040401, 1, 1, 0, 300), +(952, 2230106, 1041050, 1, 1, 0, 800), +(953, 2230106, 1061046, 1, 1, 0, 800), +(954, 2230106, 2061000, 1, 1, 0, 30000), +(955, 2230106, 1332009, 1, 1, 0, 500), +(956, 2230106, 1040040, 1, 1, 0, 800), +(957, 2230106, 1060060, 1, 1, 0, 800), +(958, 2230106, 1052104, 1, 1, 0, 700), +(959, 2230106, 2040417, 1, 1, 0, 300), +(960, 2230107, 4000162, 1, 1, 0, 600000), +(961, 2230107, 2000001, 1, 1, 0, 20000), +(962, 2230107, 2002000, 1, 1, 0, 20000), +(963, 2230107, 2044302, 1, 1, 0, 300), +(964, 2230107, 1402000, 1, 1, 0, 700), +(965, 2230107, 1082026, 1, 1, 0, 1000), +(966, 2230107, 2041004, 1, 1, 0, 300), +(967, 2230107, 1041034, 1, 1, 0, 800), +(968, 2230107, 1062006, 1, 1, 0, 800), +(969, 2230107, 2060000, 1, 1, 0, 30000), +(970, 2230107, 4010002, 1, 1, 0, 9000), +(971, 2230107, 4020005, 1, 1, 0, 9000), +(972, 2230107, 1072051, 1, 1, 0, 800), +(973, 2230107, 2000003, 1, 1, 0, 20000), +(974, 2230107, 1332004, 1, 1, 0, 500), +(975, 2230107, 2061000, 1, 1, 0, 30000), +(976, 2230107, 1041051, 1, 1, 0, 800), +(977, 2230107, 1061047, 1, 1, 0, 800), +(978, 2230107, 1061054, 1, 1, 0, 800), +(979, 2230107, 1041058, 1, 1, 0, 800), +(980, 2230107, 1072288, 1, 1, 0, 800), +(981, 2230107, 2043110, 1, 1, 0, 300), +(982, 2230108, 4000160, 1, 1, 0, 600000), +(983, 2230108, 2000001, 1, 1, 0, 20000), +(984, 2230108, 2002003, 1, 1, 0, 20000), +(985, 2230108, 2044202, 1, 1, 0, 300), +(986, 2230108, 1072065, 1, 1, 0, 800), +(987, 2230108, 1041027, 1, 1, 0, 800), +(988, 2230108, 1061025, 1, 1, 0, 800), +(989, 2230108, 1002131, 1, 1, 0, 1500), +(990, 2230108, 2060000, 1, 1, 0, 30000), +(991, 2230108, 4010000, 1, 1, 0, 9000), +(992, 2230108, 4020007, 1, 1, 0, 9000), +(993, 2230108, 2000003, 1, 1, 0, 20000), +(994, 2230108, 1072054, 1, 1, 0, 800), +(995, 2230108, 1002119, 1, 1, 0, 1500), +(996, 2230108, 2061000, 1, 1, 0, 30000), +(997, 2230108, 1051005, 1, 1, 0, 700), +(998, 2230108, 1050024, 1, 1, 0, 700), +(999, 2230108, 4006001, 1, 1, 0, 10000), +(1000, 2230108, 1032004, 1, 1, 0, 1000), +(1001, 2230108, 1052101, 1, 1, 0, 700), +(1002, 2230108, 2040623, 1, 1, 0, 300), +(1003, 2230109, 4000164, 1, 1, 0, 600000), +(1004, 2230109, 4131010, 1, 1, 0, 6000), +(1005, 2230109, 2060000, 1, 1, 0, 30000), +(1006, 2230109, 2061000, 1, 1, 0, 30000), +(1007, 2230109, 2002002, 1, 1, 0, 20000), +(1008, 2230109, 4010004, 1, 1, 0, 9000), +(1009, 2230109, 4020003, 1, 1, 0, 9000), +(1010, 2230109, 1032007, 1, 1, 0, 1000), +(1011, 2230109, 4004002, 1, 1, 0, 10000), +(1012, 2230109, 2000002, 1, 1, 0, 20000), +(1013, 2230109, 2000003, 1, 1, 0, 20000), +(1014, 2230109, 2040701, 1, 1, 0, 300), +(1015, 2230109, 1002034, 1, 1, 0, 1500), +(1016, 2230109, 1372003, 1, 1, 0, 700), +(1017, 2230109, 1040041, 1, 1, 0, 800), +(1018, 2230109, 1060030, 1, 1, 0, 800), +(1019, 2230109, 1072054, 1, 1, 0, 800), +(1020, 2230109, 1072027, 1, 1, 0, 800), +(1021, 2230109, 1050021, 1, 1, 0, 700), +(1022, 2230109, 2070002, 1, 1, 0, 500), +(1023, 2230109, 1051007, 1, 1, 0, 700), +(1024, 2230109, 1002065, 1, 1, 0, 1500), +(1025, 2230109, 1002619, 1, 1, 0, 1500), +(1026, 2230110, 2060000, 1, 1, 0, 30000), +(1027, 2230110, 2061000, 1, 1, 0, 30000), +(1028, 2230110, 4000196, 1, 1, 0, 600000), +(1029, 2230110, 2000001, 1, 1, 0, 20000), +(1030, 2230110, 2000003, 1, 1, 0, 20000), +(1031, 2230110, 4020001, 1, 1, 0, 9000), +(1032, 2230110, 4020002, 1, 1, 0, 9000), +(1033, 2230110, 4010000, 1, 1, 0, 9000), +(1034, 2230110, 2002003, 1, 1, 0, 20000), +(1035, 2230110, 2041016, 1, 1, 0, 300), +(1036, 2230110, 1002121, 1, 1, 0, 1500), +(1037, 2230110, 1002058, 1, 1, 0, 1500), +(1038, 2230110, 2040901, 1, 1, 0, 300), +(1039, 2230110, 1002131, 1, 1, 0, 1500), +(1040, 2230110, 1040020, 1, 1, 0, 800), +(1041, 2230110, 1060014, 1, 1, 0, 800), +(1042, 2230110, 1072087, 1, 1, 0, 800), +(1043, 2230110, 1072053, 1, 1, 0, 800), +(1044, 2230110, 1082043, 1, 1, 0, 1000), +(1045, 2230110, 1332010, 1, 1, 0, 500), +(1046, 2230110, 1082006, 1, 1, 0, 1000), +(1047, 2230110, 1082026, 1, 1, 0, 1000), +(1048, 2230110, 1002616, 1, 1, 0, 1500), +(1049, 2230110, 2330000, 1, 1, 0, 500), +(1050, 2230110, 2044312, 1, 1, 0, 300), +(1051, 2230110, 2044805, 1, 1, 0, 300), +(1052, 2230111, 2000001, 1, 1, 0, 20000), +(1053, 2230111, 2000003, 1, 1, 0, 20000), +(1054, 2230111, 4000197, 1, 1, 0, 600000), +(1055, 2230111, 2002000, 1, 1, 0, 20000), +(1056, 2230111, 4010005, 1, 1, 0, 9000), +(1057, 2230111, 4010001, 1, 1, 0, 9000), +(1058, 2230111, 4020003, 1, 1, 0, 9000), +(1059, 2230111, 2060000, 1, 1, 0, 30000), +(1060, 2230111, 2061000, 1, 1, 0, 30000), +(1061, 2230111, 2040301, 1, 1, 0, 300), +(1062, 2230111, 2044301, 1, 1, 0, 300), +(1063, 2230111, 1302002, 1, 1, 0, 700), +(1064, 2230111, 1372004, 1, 1, 0, 700), +(1065, 2230111, 1040042, 1, 1, 0, 800), +(1066, 2230111, 1060031, 1, 1, 0, 800), +(1067, 2230111, 1041023, 1, 1, 0, 800), +(1068, 2230111, 1061019, 1, 1, 0, 800), +(1069, 2230111, 2043801, 1, 1, 0, 300), +(1070, 2230111, 1452005, 1, 1, 0, 500), +(1071, 2230111, 1082049, 1, 1, 0, 1000), +(1072, 2230111, 1082051, 1, 1, 0, 1000), +(1073, 2230111, 2049000, 1, 1, 0, 150), +(1074, 2230200, 4000165, 1, 1, 0, 600000), +(1075, 2230200, 2044601, 1, 1, 0, 300), +(1076, 2230200, 2000001, 1, 1, 0, 20000), +(1077, 2230200, 2000003, 1, 1, 0, 20000), +(1078, 2230200, 4010006, 1, 1, 0, 9000), +(1079, 2230200, 4020002, 1, 1, 0, 9000), +(1080, 2230200, 4004000, 1, 1, 0, 10000), +(1081, 2230200, 1040072, 1, 1, 0, 800), +(1082, 2230200, 1060061, 1, 1, 0, 800), +(1083, 2230200, 1422001, 1, 1, 0, 700), +(1084, 2230200, 1412000, 1, 1, 0, 700), +(1085, 2230200, 1072086, 1, 1, 0, 800), +(1086, 2230200, 1002160, 1, 1, 0, 1500), +(1087, 2230200, 1040062, 1, 1, 0, 800), +(1088, 2230200, 1060051, 1, 1, 0, 800), +(1089, 2230200, 2061000, 1, 1, 0, 30000), +(1090, 2230200, 2060000, 1, 1, 0, 30000), +(1091, 2230200, 2040501, 1, 1, 0, 300), +(1092, 2230200, 4006000, 1, 1, 0, 10000), +(1093, 2230200, 1412006, 1, 1, 0, 700), +(1094, 2230200, 1072291, 1, 1, 0, 800), +(1095, 2300100, 4000042, 1, 1, 0, 600000), +(1096, 2300100, 2060000, 1, 1, 0, 30000), +(1097, 2300100, 2061000, 1, 1, 0, 30000), +(1098, 2300100, 2000001, 1, 1, 0, 20000), +(1099, 2300100, 2000003, 1, 1, 0, 20000), +(1100, 2300100, 4010001, 1, 1, 0, 9000), +(1101, 2300100, 4020000, 1, 1, 0, 9000), +(1102, 2300100, 2010004, 1, 1, 0, 20000), +(1103, 2300100, 4003004, 1, 1, 0, 200000), +(1104, 2300100, 1040009, 1, 1, 0, 800), +(1105, 2300100, 1060009, 1, 1, 0, 800), +(1106, 2300100, 1040043, 1, 1, 0, 800), +(1107, 2300100, 1060032, 1, 1, 0, 800), +(1108, 2300100, 1041039, 1, 1, 0, 800), +(1109, 2300100, 1061041, 1, 1, 0, 800), +(1110, 2300100, 1082002, 1, 1, 0, 1000), +(1111, 2300100, 2048004, 1, 1, 0, 300), +(1112, 2300100, 2041002, 1, 1, 0, 300), +(1113, 2300100, 1002119, 1, 1, 0, 1500), +(1114, 2300100, 1452005, 1, 1, 0, 500), +(1115, 2300100, 1052098, 1, 1, 0, 700), +(1116, 2300100, 1052101, 1, 1, 0, 700), +(1117, 2300100, 2044801, 1, 1, 0, 300), +(1118, 2300100, 2040024, 1, 1, 0, 300), +(1119, 2300100, 2043112, 1, 1, 0, 300), +(1120, 3000000, 4000063, 1, 1, 0, 600000), +(1121, 3000000, 2041016, 1, 1, 0, 300), +(1122, 3000000, 2000001, 1, 1, 0, 20000), +(1123, 3000000, 2000003, 1, 1, 0, 20000), +(1124, 3000000, 4020004, 1, 1, 0, 9000), +(1125, 3000000, 4010002, 1, 1, 0, 9000), +(1126, 3000000, 4004000, 1, 1, 0, 10000), +(1127, 3000000, 1382018, 1, 1, 0, 700), +(1128, 3000000, 1312016, 1, 1, 0, 700), +(1129, 3000000, 1312005, 1, 1, 0, 700), +(1130, 3000000, 1040021, 1, 1, 0, 800), +(1131, 3000000, 1060017, 1, 1, 0, 800), +(1132, 3000000, 1002137, 1, 1, 0, 1500), +(1133, 3000000, 1032006, 1, 1, 0, 1000), +(1134, 3000000, 1060050, 1, 1, 0, 800), +(1135, 3000000, 1040061, 1, 1, 0, 800), +(1136, 3000000, 2061000, 1, 1, 0, 30000), +(1137, 3000000, 2060000, 1, 1, 0, 30000), +(1138, 3000000, 2041005, 1, 1, 0, 300), +(1139, 3000000, 4006000, 1, 1, 0, 10000), +(1140, 3000000, 1082037, 1, 1, 0, 1000), +(1141, 3000000, 1002622, 1, 1, 0, 1500), +(1142, 3000000, 2040316, 1, 1, 0, 300), +(1143, 3000000, 2040620, 1, 1, 0, 300), +(1144, 3000001, 4000068, 1, 1, 0, 600000), +(1145, 3000001, 2000001, 1, 1, 0, 20000), +(1146, 3000001, 2000003, 1, 1, 0, 20000), +(1147, 3000001, 4020004, 1, 1, 0, 9000), +(1148, 3000001, 4010002, 1, 1, 0, 9000), +(1149, 3000001, 2050000, 1, 1, 0, 50000), +(1150, 3000001, 2050001, 1, 1, 0, 50000), +(1151, 3000001, 2050002, 1, 1, 0, 50000), +(1152, 3000001, 2050003, 1, 1, 0, 50000), +(1153, 3000001, 2050004, 1, 1, 0, 50000), +(1154, 3000005, 4000106, 1, 1, 0, 600000), +(1155, 3000005, 4131003, 1, 1, 0, 6000), +(1156, 3000005, 2060000, 1, 1, 0, 30000), +(1157, 3000005, 2061000, 1, 1, 0, 30000), +(1158, 3000005, 4010001, 1, 1, 0, 9000), +(1159, 3000005, 4020000, 1, 1, 0, 9000), +(1160, 3000005, 4004001, 1, 1, 0, 10000), +(1161, 3000005, 2000002, 1, 1, 0, 20000), +(1162, 3000005, 2000003, 1, 1, 0, 20000), +(1163, 3000005, 2040701, 1, 1, 0, 300), +(1164, 3000005, 1462000, 1, 1, 0, 500), +(1165, 3000005, 1322014, 1, 1, 0, 700), +(1166, 3000005, 1050030, 1, 1, 0, 700), +(1167, 3000005, 1040058, 1, 1, 0, 800), +(1168, 3000005, 1060044, 1, 1, 0, 800), +(1169, 3000005, 1041058, 1, 1, 0, 800), +(1170, 3000005, 1061054, 1, 1, 0, 800), +(1171, 3000005, 1072101, 1, 1, 0, 800), +(1172, 3000005, 1002013, 1, 1, 0, 1500), +(1173, 3000005, 1052107, 1, 1, 0, 700), +(1174, 3000006, 4000166, 1, 1, 0, 600000), +(1175, 3000006, 4131003, 1, 1, 0, 6000), +(1176, 3000006, 2060000, 1, 1, 0, 30000), +(1177, 3000006, 2061000, 1, 1, 0, 30000), +(1178, 3000006, 4010005, 1, 1, 0, 9000), +(1179, 3000006, 4020001, 1, 1, 0, 9000), +(1180, 3000006, 4004001, 1, 1, 0, 10000), +(1181, 3000006, 2000002, 1, 1, 0, 20000), +(1182, 3000006, 2000003, 1, 1, 0, 20000), +(1183, 3000006, 2040601, 1, 1, 0, 300), +(1184, 3000006, 1082046, 1, 1, 0, 1000), +(1185, 3000006, 1382017, 1, 1, 0, 700), +(1186, 3000006, 1082005, 1, 1, 0, 1000), +(1187, 3000006, 1050002, 1, 1, 0, 700), +(1188, 3000006, 1072086, 1, 1, 0, 800), +(1189, 3000006, 1072103, 1, 1, 0, 800), +(1190, 3000006, 1462000, 1, 1, 0, 500), +(1191, 3000006, 1040040, 1, 1, 0, 800), +(1192, 3000006, 1060060, 1, 1, 0, 800), +(1193, 3000006, 1041052, 1, 1, 0, 800), +(1194, 3000006, 1061048, 1, 1, 0, 800), +(1195, 3000006, 1082189, 1, 1, 0, 1000), +(1196, 3000006, 2040422, 1, 1, 0, 300), +(1197, 3000006, 2040530, 1, 1, 0, 300), +(1198, 3100101, 2000003, 1, 1, 0, 20000), +(1199, 3100101, 2060000, 1, 1, 0, 30000), +(1200, 3100101, 2061000, 1, 1, 0, 30000), +(1201, 3100101, 2000002, 1, 1, 0, 20000), +(1202, 3100101, 4000334, 1, 1, 0, 600000), +(1203, 3100101, 4010005, 1, 1, 0, 9000), +(1204, 3100101, 4020000, 1, 1, 0, 9000), +(1205, 3100101, 4006000, 1, 1, 0, 10000), +(1206, 3100101, 2044701, 1, 1, 0, 300), +(1207, 3100101, 1332020, 1, 1, 0, 500), +(1208, 3100101, 1040000, 1, 1, 0, 800), +(1209, 3100101, 1060075, 1, 1, 0, 800), +(1210, 3100101, 1402010, 1, 1, 0, 700), +(1211, 3100101, 1032007, 1, 1, 0, 1000), +(1212, 3100101, 1072078, 1, 1, 0, 800), +(1213, 3100101, 1082046, 1, 1, 0, 1000), +(1214, 3100101, 1002156, 1, 1, 0, 1500), +(1215, 3100101, 4010007, 1, 1, 0, 9000), +(1216, 3100101, 1002622, 1, 1, 0, 1500), +(1217, 3100101, 4130005, 1, 1, 0, 6000), +(1218, 3100101, 4130009, 1, 1, 0, 6000), +(1219, 3100102, 2000003, 1, 1, 0, 20000), +(1220, 3100102, 2060000, 1, 1, 0, 30000), +(1221, 3100102, 2061000, 1, 1, 0, 30000), +(1222, 3100102, 2000002, 1, 1, 0, 20000), +(1223, 3100102, 4000335, 1, 1, 0, 600000), +(1224, 3100102, 4020002, 1, 1, 0, 9000), +(1225, 3100102, 4006000, 1, 1, 0, 10000), +(1226, 3100102, 2040401, 1, 1, 0, 300), +(1227, 3100102, 2041018, 1, 1, 0, 300), +(1228, 3100102, 1462004, 1, 1, 0, 500), +(1229, 3100102, 1472011, 1, 1, 0, 500), +(1230, 3100102, 1002181, 1, 1, 0, 1500), +(1231, 3100102, 1050022, 1, 1, 0, 700), +(1232, 3100102, 1061048, 1, 1, 0, 800), +(1233, 3100102, 1041052, 1, 1, 0, 800), +(1234, 3100102, 1082069, 1, 1, 0, 1000), +(1235, 3100102, 4003004, 1, 1, 0, 200000), +(1236, 3100102, 4010007, 1, 1, 0, 9000), +(1237, 3100102, 1072294, 1, 1, 0, 800), +(1238, 3110100, 2000002, 1, 1, 0, 20000), +(1239, 3110100, 2000003, 1, 1, 0, 20000), +(1240, 3110100, 4010002, 1, 1, 0, 9000), +(1241, 3110100, 4020002, 1, 1, 0, 9000), +(1242, 3110100, 1322009, 1, 1, 0, 700), +(1243, 3110100, 1332014, 1, 1, 0, 500), +(1244, 3110100, 4000032, 1, 1, 0, 600000), +(1245, 3110100, 2041002, 1, 1, 0, 300), +(1246, 3110100, 4006000, 1, 1, 0, 10000), +(1247, 3110100, 1051013, 1, 1, 0, 700), +(1248, 3110100, 1082049, 1, 1, 0, 1000), +(1249, 3110100, 1422001, 1, 1, 0, 700), +(1250, 3110100, 1041051, 1, 1, 0, 800), +(1251, 3110100, 1061047, 1, 1, 0, 800), +(1252, 3110100, 1082046, 1, 1, 0, 1000), +(1253, 3110100, 1072112, 1, 1, 0, 800), +(1254, 3110100, 1092012, 1, 1, 0, 700), +(1255, 3110100, 1432005, 1, 1, 0, 500), +(1256, 3110100, 1002622, 1, 1, 0, 1500), +(1257, 3110100, 2044802, 1, 1, 0, 300), +(1258, 3110100, 4130002, 1, 1, 0, 6000), +(1259, 3110100, 4130008, 1, 1, 0, 6000), +(1260, 3110100, 4130010, 1, 1, 0, 6000), +(1261, 3110101, 4000107, 1, 1, 0, 600000), +(1262, 3110101, 4131001, 1, 1, 0, 6000), +(1263, 3110101, 2002009, 1, 1, 0, 20000), +(1264, 3110101, 2060000, 1, 1, 0, 30000), +(1265, 3110101, 2061000, 1, 1, 0, 30000), +(1266, 3110101, 4020001, 1, 1, 0, 9000), +(1267, 3110101, 4004001, 1, 1, 0, 10000), +(1268, 3110101, 2000002, 1, 1, 0, 20000), +(1269, 3110101, 2000003, 1, 1, 0, 20000), +(1270, 3110101, 2041017, 1, 1, 0, 300), +(1271, 3110101, 1092007, 1, 1, 0, 700), +(1272, 3110101, 1041055, 1, 1, 0, 800), +(1273, 3110101, 1061051, 1, 1, 0, 800), +(1274, 3110101, 1082007, 1, 1, 0, 1000), +(1275, 3110101, 1072077, 1, 1, 0, 800), +(1276, 3110101, 1462004, 1, 1, 0, 500), +(1277, 3110101, 1050002, 1, 1, 0, 700), +(1278, 3110101, 1040062, 1, 1, 0, 800), +(1279, 3110101, 1060051, 1, 1, 0, 800), +(1280, 3110101, 1082035, 1, 1, 0, 1000), +(1281, 3110101, 1072090, 1, 1, 0, 800), +(1282, 3110101, 1472014, 1, 1, 0, 500), +(1283, 3110101, 1082189, 1, 1, 0, 1000), +(1284, 3110101, 2330001, 1, 1, 0, 500), +(1285, 3110101, 2044012, 1, 1, 0, 300), +(1286, 3110101, 4130002, 1, 1, 0, 6000), +(1287, 3110102, 4000095, 1, 1, 0, 600000), +(1288, 3110102, 4000021, 1, 1, 0, 50000), +(1289, 3110102, 4131002, 1, 1, 0, 6000), +(1290, 3110102, 2060000, 1, 1, 0, 30000), +(1291, 3110102, 2061000, 1, 1, 0, 30000), +(1292, 3110102, 4010001, 1, 1, 0, 9000), +(1293, 3110102, 4010005, 1, 1, 0, 9000), +(1294, 3110102, 4020002, 1, 1, 0, 9000), +(1295, 3110102, 4004000, 1, 1, 0, 10000), +(1296, 3110102, 2000002, 1, 1, 0, 20000), +(1297, 3110102, 2000003, 1, 1, 0, 20000), +(1298, 3110102, 2044401, 1, 1, 0, 300), +(1299, 3110102, 1002173, 1, 1, 0, 1500), +(1300, 3110102, 1002164, 1, 1, 0, 1500), +(1301, 3110102, 1082051, 1, 1, 0, 1000), +(1302, 3110102, 1072035, 1, 1, 0, 800), +(1303, 3110102, 1332009, 1, 1, 0, 500), +(1304, 3110102, 1040029, 1, 1, 0, 800), +(1305, 3110102, 1060020, 1, 1, 0, 800), +(1306, 3110102, 1082068, 1, 1, 0, 1000), +(1307, 3110102, 1312006, 1, 1, 0, 700), +(1308, 3110102, 1322016, 1, 1, 0, 700), +(1309, 3110102, 1072294, 1, 1, 0, 800), +(1310, 3110102, 2044210, 1, 1, 0, 300), +(1311, 3110102, 4130003, 1, 1, 0, 6000); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(1312, 3110102, 4130004, 1, 1, 0, 6000), +(1313, 3110102, 4130011, 1, 1, 0, 6000), +(1314, 3110300, 2000003, 1, 1, 0, 20000), +(1315, 3110300, 2060000, 1, 1, 0, 30000), +(1316, 3110300, 2061000, 1, 1, 0, 30000), +(1317, 3110300, 2000002, 1, 1, 0, 20000), +(1318, 3110300, 4010005, 1, 1, 0, 9000), +(1319, 3110300, 4020000, 1, 1, 0, 9000), +(1320, 3110300, 4006000, 1, 1, 0, 10000), +(1321, 3110300, 2044701, 1, 1, 0, 300), +(1322, 3110300, 1332020, 1, 1, 0, 500), +(1323, 3110300, 1040000, 1, 1, 0, 800), +(1324, 3110300, 1060075, 1, 1, 0, 800), +(1325, 3110300, 1402010, 1, 1, 0, 700), +(1326, 3110300, 1032007, 1, 1, 0, 1000), +(1327, 3110300, 1072078, 1, 1, 0, 800), +(1328, 3110300, 1082046, 1, 1, 0, 1000), +(1329, 3110300, 1002156, 1, 1, 0, 1500), +(1330, 3110300, 4010007, 1, 1, 0, 9000), +(1331, 3110300, 4000353, 1, 1, 0, 600000), +(1332, 3110300, 1072294, 1, 1, 0, 800), +(1333, 3110300, 2040530, 1, 1, 0, 300), +(1334, 3110300, 2044410, 1, 1, 0, 300), +(1335, 3110300, 2049100, 1, 1, 0, 150), +(1336, 3110300, 4130002, 1, 1, 0, 6000), +(1337, 3110300, 4130009, 1, 1, 0, 6000), +(1338, 3110300, 4130013, 1, 1, 0, 6000), +(1339, 3110301, 2000003, 1, 1, 0, 20000), +(1340, 3110301, 2060000, 1, 1, 0, 30000), +(1341, 3110301, 2061000, 1, 1, 0, 30000), +(1342, 3110301, 2000002, 1, 1, 0, 20000), +(1343, 3110301, 4010005, 1, 1, 0, 9000), +(1344, 3110301, 4020000, 1, 1, 0, 9000), +(1345, 3110301, 4006000, 1, 1, 0, 10000), +(1346, 3110301, 2044701, 1, 1, 0, 300), +(1347, 3110301, 1332020, 1, 1, 0, 500), +(1348, 3110301, 1040000, 1, 1, 0, 800), +(1349, 3110301, 1060075, 1, 1, 0, 800), +(1350, 3110301, 1402010, 1, 1, 0, 700), +(1351, 3110301, 1032007, 1, 1, 0, 1000), +(1352, 3110301, 1072078, 1, 1, 0, 800), +(1353, 3110301, 1082046, 1, 1, 0, 1000), +(1354, 3110301, 1002156, 1, 1, 0, 1500), +(1355, 3110301, 4010007, 1, 1, 0, 9000), +(1356, 3110301, 4000352, 1, 1, 0, 600000), +(1357, 3110301, 1082189, 1, 1, 0, 1000), +(1358, 3110301, 2040420, 1, 1, 0, 300), +(1359, 3110301, 4130001, 1, 1, 0, 6000), +(1360, 3110301, 4130006, 1, 1, 0, 6000), +(1361, 3110302, 2000002, 1, 1, 0, 20000), +(1362, 3110302, 2002005, 1, 1, 0, 20000), +(1363, 3110302, 2044502, 1, 1, 0, 300), +(1364, 3110302, 2000003, 1, 1, 0, 20000), +(1365, 3110302, 1322003, 1, 1, 0, 700), +(1366, 3110302, 2060000, 1, 1, 0, 30000), +(1367, 3110302, 4010005, 1, 1, 0, 9000), +(1368, 3110302, 4020006, 1, 1, 0, 9000), +(1369, 3110302, 2061000, 1, 1, 0, 30000), +(1370, 3110302, 1040021, 1, 1, 0, 800), +(1371, 3110302, 1060016, 1, 1, 0, 800), +(1372, 3110302, 1002180, 1, 1, 0, 1500), +(1373, 3110302, 1002143, 1, 1, 0, 1500), +(1374, 3110302, 1060052, 1, 1, 0, 800), +(1375, 3110302, 1040063, 1, 1, 0, 800), +(1376, 3110302, 1432003, 1, 1, 0, 500), +(1377, 3110302, 1051025, 1, 1, 0, 700), +(1378, 3110302, 1002025, 1, 1, 0, 1500), +(1379, 3110302, 1040079, 1, 1, 0, 800), +(1380, 3110302, 1060069, 1, 1, 0, 800), +(1381, 3110302, 4000356, 1, 1, 0, 600000), +(1382, 3110302, 1072297, 1, 1, 0, 800), +(1383, 3110302, 2040324, 1, 1, 0, 300), +(1384, 3110302, 2044210, 1, 1, 0, 300), +(1385, 3110302, 4130010, 1, 1, 0, 6000), +(1386, 3110302, 4130015, 1, 1, 0, 6000), +(1387, 3110303, 2060000, 1, 1, 0, 30000), +(1388, 3110303, 2061000, 1, 1, 0, 30000), +(1389, 3110303, 4010001, 1, 1, 0, 9000), +(1390, 3110303, 4004003, 1, 1, 0, 10000), +(1391, 3110303, 4020005, 1, 1, 0, 9000), +(1392, 3110303, 2000002, 1, 1, 0, 20000), +(1393, 3110303, 2000003, 1, 1, 0, 20000), +(1394, 3110303, 2040302, 1, 1, 0, 300), +(1395, 3110303, 1382018, 1, 1, 0, 700), +(1396, 3110303, 1472012, 1, 1, 0, 500), +(1397, 3110303, 1432003, 1, 1, 0, 500), +(1398, 3110303, 1462005, 1, 1, 0, 500), +(1399, 3110303, 1002183, 1, 1, 0, 1500), +(1400, 3110303, 1002167, 1, 1, 0, 1500), +(1401, 3110303, 1040086, 1, 1, 0, 800), +(1402, 3110303, 1060075, 1, 1, 0, 800), +(1403, 3110303, 1041076, 1, 1, 0, 800), +(1404, 3110303, 1061071, 1, 1, 0, 800), +(1405, 3110303, 1072000, 1, 1, 0, 800), +(1406, 3110303, 1032018, 1, 1, 0, 1000), +(1407, 3110303, 1082082, 1, 1, 0, 1000), +(1408, 3110303, 1082085, 1, 1, 0, 1000), +(1409, 3110303, 1072129, 1, 1, 0, 800), +(1410, 3110303, 1082010, 1, 1, 0, 1000), +(1411, 3110303, 4000356, 1, 1, 0, 600000), +(1412, 3110303, 1072297, 1, 1, 0, 800), +(1413, 3110303, 2330001, 1, 1, 0, 500), +(1414, 3110303, 2040417, 1, 1, 0, 300), +(1415, 3110303, 2044112, 1, 1, 0, 300), +(1416, 3110303, 2044310, 1, 1, 0, 300), +(1417, 3110303, 2044809, 1, 1, 0, 300), +(1418, 3110303, 4130001, 1, 1, 0, 6000), +(1419, 3110303, 4130002, 1, 1, 0, 6000), +(1420, 3110303, 4130016, 1, 1, 0, 6000), +(1421, 3210100, 4000021, 1, 1, 0, 50000), +(1422, 3210100, 2070001, 1, 1, 0, 500), +(1423, 3210100, 2000002, 1, 1, 0, 20000), +(1424, 3210100, 2000003, 1, 1, 0, 20000), +(1425, 3210100, 4000024, 1, 1, 0, 600000), +(1426, 3210100, 4020000, 1, 1, 0, 9000), +(1427, 3210100, 4010001, 1, 1, 0, 9000), +(1428, 3210100, 1332020, 1, 1, 0, 500), +(1429, 3210100, 4020007, 1, 1, 0, 9000), +(1430, 3210100, 1452005, 1, 1, 0, 500), +(1431, 3210100, 1040026, 1, 1, 0, 800), +(1432, 3210100, 1060019, 1, 1, 0, 800), +(1433, 3210100, 1082044, 1, 1, 0, 1000), +(1434, 3210100, 1072079, 1, 1, 0, 800), +(1435, 3210100, 1082052, 1, 1, 0, 1000), +(1436, 3210100, 1472012, 1, 1, 0, 500), +(1437, 3210100, 1072091, 1, 1, 0, 800), +(1438, 3210100, 1002178, 1, 1, 0, 1500), +(1439, 3210100, 1072103, 1, 1, 0, 800), +(1440, 3210100, 1462005, 1, 1, 0, 500), +(1441, 3210100, 1372012, 1, 1, 0, 700), +(1442, 3210100, 1002141, 1, 1, 0, 1500), +(1443, 3210100, 4010002, 1, 1, 0, 9000), +(1444, 3210100, 1372003, 1, 1, 0, 700), +(1445, 3210100, 2000001, 1, 1, 0, 20000), +(1446, 3210100, 1052107, 1, 1, 0, 700), +(1447, 3210100, 4130011, 1, 1, 0, 6000), +(1448, 3210100, 4130016, 1, 1, 0, 6000), +(1449, 3210100, 4130017, 1, 1, 0, 6000), +(1450, 3210200, 4000073, 1, 1, 0, 600000), +(1451, 3210200, 4000021, 1, 1, 0, 50000), +(1452, 3210200, 2000002, 1, 1, 0, 20000), +(1453, 3210200, 2000003, 1, 1, 0, 20000), +(1454, 3210200, 4003004, 1, 1, 0, 200000), +(1455, 3210200, 4020000, 1, 1, 0, 9000), +(1456, 3210200, 4020001, 1, 1, 0, 9000), +(1457, 3210200, 4004000, 1, 1, 0, 10000), +(1458, 3210200, 2070001, 1, 1, 0, 500), +(1459, 3210200, 2044701, 1, 1, 0, 300), +(1460, 3210200, 1322009, 1, 1, 0, 700), +(1461, 3210200, 2050003, 1, 1, 0, 50000), +(1462, 3210200, 1002174, 1, 1, 0, 1500), +(1463, 3210200, 1002038, 1, 1, 0, 1500), +(1464, 3210200, 1082042, 1, 1, 0, 1000), +(1465, 3210200, 1072041, 1, 1, 0, 800), +(1466, 3210200, 1412006, 1, 1, 0, 700), +(1467, 3210200, 1032008, 1, 1, 0, 1000), +(1468, 3210200, 1072002, 1, 1, 0, 800), +(1469, 3210200, 1332014, 1, 1, 0, 500), +(1470, 3210200, 1040073, 1, 1, 0, 800), +(1471, 3210200, 1060062, 1, 1, 0, 800), +(1472, 3210200, 1050035, 1, 1, 0, 700), +(1473, 3210200, 1462005, 1, 1, 0, 500), +(1474, 3210200, 1002145, 1, 1, 0, 1500), +(1475, 3210200, 1052107, 1, 1, 0, 700), +(1476, 3210200, 4130007, 1, 1, 0, 6000), +(1477, 3210200, 4130016, 1, 1, 0, 6000), +(1478, 3210201, 4000073, 1, 1, 0, 600000), +(1479, 3210201, 4000021, 1, 1, 0, 50000), +(1480, 3210201, 2000002, 1, 1, 0, 20000), +(1481, 3210201, 2000003, 1, 1, 0, 20000), +(1482, 3210201, 4003004, 1, 1, 0, 200000), +(1483, 3210201, 4020003, 1, 1, 0, 9000), +(1484, 3210201, 4010002, 1, 1, 0, 9000), +(1485, 3210201, 4004001, 1, 1, 0, 10000), +(1486, 3210201, 2044501, 1, 1, 0, 300), +(1487, 3210201, 4006001, 1, 1, 0, 10000), +(1488, 3210201, 4020007, 1, 1, 0, 9000), +(1489, 3210201, 1442001, 1, 1, 0, 700), +(1490, 3210201, 1332012, 1, 1, 0, 500), +(1491, 3210201, 1072083, 1, 1, 0, 800), +(1492, 3210201, 1002172, 1, 1, 0, 1500), +(1493, 3210201, 1472013, 1, 1, 0, 500), +(1494, 3210201, 1072089, 1, 1, 0, 800), +(1495, 3210201, 1082070, 1, 1, 0, 1000), +(1496, 3210201, 1051016, 1, 1, 0, 700), +(1497, 3210201, 1050036, 1, 1, 0, 700), +(1498, 3210201, 1051024, 1, 1, 0, 700), +(1499, 3210201, 1492004, 1, 1, 0, 500), +(1500, 3210201, 2043114, 1, 1, 0, 300), +(1501, 3210201, 4130003, 1, 1, 0, 6000), +(1502, 3210201, 4130004, 1, 1, 0, 6000), +(1503, 3210201, 4130012, 1, 1, 0, 6000), +(1504, 3210202, 4000073, 1, 1, 0, 600000), +(1505, 3210202, 4000021, 1, 1, 0, 50000), +(1506, 3210202, 2000002, 1, 1, 0, 20000), +(1507, 3210202, 2000003, 1, 1, 0, 20000), +(1508, 3210202, 4003004, 1, 1, 0, 200000), +(1509, 3210202, 4020005, 1, 1, 0, 9000), +(1510, 3210202, 4010001, 1, 1, 0, 9000), +(1511, 3210202, 4004003, 1, 1, 0, 10000), +(1512, 3210202, 4006000, 1, 1, 0, 10000), +(1513, 3210202, 2043701, 1, 1, 0, 300), +(1514, 3210202, 2070003, 1, 1, 0, 500), +(1515, 3210202, 1302017, 1, 1, 0, 700), +(1516, 3210202, 1002037, 1, 1, 0, 1500), +(1517, 3210202, 1002163, 1, 1, 0, 1500), +(1518, 3210202, 1040028, 1, 1, 0, 800), +(1519, 3210202, 1332001, 1, 1, 0, 500), +(1520, 3210202, 1041053, 1, 1, 0, 800), +(1521, 3210202, 1061049, 1, 1, 0, 800), +(1522, 3210202, 1060020, 1, 1, 0, 800), +(1523, 3210202, 1041066, 1, 1, 0, 800), +(1524, 3210202, 1061061, 1, 1, 0, 800), +(1525, 3210202, 1082045, 1, 1, 0, 1000), +(1526, 3210202, 1322015, 1, 1, 0, 700), +(1527, 3210202, 1032011, 1, 1, 0, 1000), +(1528, 3210202, 1492004, 1, 1, 0, 500), +(1529, 3210202, 1002628, 1, 1, 0, 1500), +(1530, 3210202, 2043110, 1, 1, 0, 300), +(1531, 3210202, 2044807, 1, 1, 0, 300), +(1532, 3210202, 4130006, 1, 1, 0, 6000), +(1533, 3210202, 4130012, 1, 1, 0, 6000), +(1534, 3210203, 4000108, 1, 1, 0, 600000), +(1535, 3210203, 4131009, 1, 1, 0, 6000), +(1536, 3210203, 2002008, 1, 1, 0, 20000), +(1537, 3210203, 2060000, 1, 1, 0, 30000), +(1538, 3210203, 2061000, 1, 1, 0, 30000), +(1539, 3210203, 4010002, 1, 1, 0, 9000), +(1540, 3210203, 4004003, 1, 1, 0, 10000), +(1541, 3210203, 2000002, 1, 1, 0, 20000), +(1542, 3210203, 2000003, 1, 1, 0, 20000), +(1543, 3210203, 2044501, 1, 1, 0, 300), +(1544, 3210203, 1060018, 1, 1, 0, 800), +(1545, 3210203, 1040021, 1, 1, 0, 800), +(1546, 3210203, 1072080, 1, 1, 0, 800), +(1547, 3210203, 1051006, 1, 1, 0, 700), +(1548, 3210203, 1050039, 1, 1, 0, 700), +(1549, 3210203, 1002153, 1, 1, 0, 1500), +(1550, 3210203, 1002166, 1, 1, 0, 1500), +(1551, 3210203, 1082025, 1, 1, 0, 1000), +(1552, 3210203, 1072126, 1, 1, 0, 800), +(1553, 3210203, 1072115, 1, 1, 0, 800), +(1554, 3210203, 1312007, 1, 1, 0, 700), +(1555, 3210203, 1332031, 1, 1, 0, 500), +(1556, 3210203, 1482005, 1, 1, 0, 500), +(1557, 3210203, 2040923, 1, 1, 0, 300), +(1558, 3210203, 2043212, 1, 1, 0, 300), +(1559, 3210203, 2049100, 1, 1, 0, 150), +(1560, 3210203, 4130003, 1, 1, 0, 6000), +(1561, 3210204, 4000109, 1, 1, 0, 600000), +(1562, 3210204, 4003004, 1, 1, 0, 200000), +(1563, 3210204, 4003005, 1, 1, 0, 200000), +(1564, 3210204, 2060000, 1, 1, 0, 30000), +(1565, 3210204, 2061000, 1, 1, 0, 30000), +(1566, 3210204, 4010004, 1, 1, 0, 9000), +(1567, 3210204, 4020006, 1, 1, 0, 9000), +(1568, 3210204, 4004002, 1, 1, 0, 10000), +(1569, 3210204, 2000002, 1, 1, 0, 20000), +(1570, 3210204, 2000003, 1, 1, 0, 20000), +(1571, 3210204, 2043202, 1, 1, 0, 300), +(1572, 3210204, 1040070, 1, 1, 0, 800), +(1573, 3210204, 1060059, 1, 1, 0, 800), +(1574, 3210204, 1040060, 1, 1, 0, 800), +(1575, 3210204, 1060046, 1, 1, 0, 800), +(1576, 3210204, 1082053, 1, 1, 0, 1000), +(1577, 3210204, 1050031, 1, 1, 0, 700), +(1578, 3210204, 1002004, 1, 1, 0, 1500), +(1579, 3210204, 1050021, 1, 1, 0, 700), +(1580, 3210204, 1072002, 1, 1, 0, 800), +(1581, 3210204, 1082071, 1, 1, 0, 1000), +(1582, 3210204, 1332011, 1, 1, 0, 500), +(1583, 3210204, 1052110, 1, 1, 0, 700), +(1584, 3210204, 2040617, 1, 1, 0, 300), +(1585, 3210204, 4130000, 1, 1, 0, 6000), +(1586, 3210204, 4130015, 1, 1, 0, 6000), +(1587, 3210204, 4130017, 1, 1, 0, 6000), +(1588, 3210205, 4000096, 1, 1, 0, 600000), +(1589, 3210205, 4000021, 1, 1, 0, 50000), +(1590, 3210205, 2002010, 1, 1, 0, 20000), +(1591, 3210205, 2060000, 1, 1, 0, 30000), +(1592, 3210205, 2061000, 1, 1, 0, 30000), +(1593, 3210205, 4020005, 1, 1, 0, 9000), +(1594, 3210205, 4004002, 1, 1, 0, 10000), +(1595, 3210205, 2000002, 1, 1, 0, 20000), +(1596, 3210205, 2000003, 1, 1, 0, 20000), +(1597, 3210205, 2040703, 1, 1, 0, 300), +(1598, 3210205, 2050001, 1, 1, 0, 50000), +(1599, 3210205, 1041043, 1, 1, 0, 800), +(1600, 3210205, 1061036, 1, 1, 0, 800), +(1601, 3210205, 1040057, 1, 1, 0, 800), +(1602, 3210205, 1060043, 1, 1, 0, 800), +(1603, 3210205, 1002048, 1, 1, 0, 1500), +(1604, 3210205, 1002136, 1, 1, 0, 1500), +(1605, 3210205, 1040076, 1, 1, 0, 800), +(1606, 3210205, 1060065, 1, 1, 0, 800), +(1607, 3210205, 1051015, 1, 1, 0, 700), +(1608, 3210205, 1050037, 1, 1, 0, 700), +(1609, 3210205, 1082075, 1, 1, 0, 1000), +(1610, 3210205, 1382019, 1, 1, 0, 700), +(1611, 3210205, 1082192, 1, 1, 0, 1000), +(1612, 3210205, 1052113, 1, 1, 0, 700), +(1613, 3210205, 4130001, 1, 1, 0, 6000), +(1614, 3210205, 4130004, 1, 1, 0, 6000), +(1615, 3210205, 4130014, 1, 1, 0, 6000), +(1616, 3210206, 4000103, 1, 1, 0, 600000), +(1617, 3210206, 4131006, 1, 1, 0, 6000), +(1618, 3210206, 2060000, 1, 1, 0, 30000), +(1619, 3210206, 2061000, 1, 1, 0, 30000), +(1620, 3210206, 4010003, 1, 1, 0, 9000), +(1621, 3210206, 4020005, 1, 1, 0, 9000), +(1622, 3210206, 4004000, 1, 1, 0, 10000), +(1623, 3210206, 2000002, 1, 1, 0, 20000), +(1624, 3210206, 2000003, 1, 1, 0, 20000), +(1625, 3210206, 2043001, 1, 1, 0, 300), +(1626, 3210206, 1332020, 1, 1, 0, 500), +(1627, 3210206, 2070003, 1, 1, 0, 500), +(1628, 3210206, 1072036, 1, 1, 0, 800), +(1629, 3210206, 1072082, 1, 1, 0, 800), +(1630, 3210206, 1072003, 1, 1, 0, 800), +(1631, 3210206, 1002179, 1, 1, 0, 1500), +(1632, 3210206, 1072103, 1, 1, 0, 800), +(1633, 3210206, 1051026, 1, 1, 0, 700), +(1634, 3210206, 1002168, 1, 1, 0, 1500), +(1635, 3210206, 1040000, 1, 1, 0, 800), +(1636, 3210206, 1060000, 1, 1, 0, 800), +(1637, 3210206, 1040081, 1, 1, 0, 800), +(1638, 3210206, 1060070, 1, 1, 0, 800), +(1639, 3210206, 1051032, 1, 1, 0, 700), +(1640, 3210206, 1002207, 1, 1, 0, 1500), +(1641, 3210206, 1072132, 1, 1, 0, 800), +(1642, 3210206, 1002212, 1, 1, 0, 1500), +(1643, 3210206, 1492005, 1, 1, 0, 500), +(1644, 3210206, 4130015, 1, 1, 0, 6000), +(1645, 3210206, 4130016, 1, 1, 0, 6000), +(1646, 3210207, 4000113, 1, 1, 0, 600000), +(1647, 3210207, 4131011, 1, 1, 0, 6000), +(1648, 3210207, 2060000, 1, 1, 0, 30000), +(1649, 3210207, 2061000, 1, 1, 0, 30000), +(1650, 3210207, 4020000, 1, 1, 0, 9000), +(1651, 3210207, 4020002, 1, 1, 0, 9000), +(1652, 3210207, 4004000, 1, 1, 0, 10000), +(1653, 3210207, 2000002, 1, 1, 0, 20000), +(1654, 3210207, 2000003, 1, 1, 0, 20000), +(1655, 3210207, 2041018, 1, 1, 0, 300), +(1656, 3210207, 2043102, 1, 1, 0, 300), +(1657, 3210207, 2070008, 1, 1, 0, 500), +(1658, 3210207, 4020007, 1, 1, 0, 9000), +(1659, 3210207, 1082048, 1, 1, 0, 1000), +(1660, 3210207, 1072076, 1, 1, 0, 800), +(1661, 3210207, 1372001, 1, 1, 0, 700), +(1662, 3210207, 1002139, 1, 1, 0, 1500), +(1663, 3210207, 1002178, 1, 1, 0, 1500), +(1664, 3210207, 1041069, 1, 1, 0, 800), +(1665, 3210207, 1061064, 1, 1, 0, 800), +(1666, 3210207, 1082055, 1, 1, 0, 1000), +(1667, 3210207, 1050038, 1, 1, 0, 700), +(1668, 3210207, 1082024, 1, 1, 0, 1000), +(1669, 3210207, 1072107, 1, 1, 0, 800), +(1670, 3210207, 1412005, 1, 1, 0, 700), +(1671, 3210207, 1072297, 1, 1, 0, 800), +(1672, 3210207, 2043214, 1, 1, 0, 300), +(1673, 3210207, 2049000, 1, 1, 0, 150), +(1674, 3210207, 4130007, 1, 1, 0, 6000), +(1675, 3210207, 4130008, 1, 1, 0, 6000), +(1676, 3210208, 4000168, 1, 1, 0, 600000), +(1677, 3210208, 4131009, 1, 1, 0, 6000), +(1678, 3210208, 2002005, 1, 1, 0, 20000), +(1679, 3210208, 2060000, 1, 1, 0, 30000), +(1680, 3210208, 2061000, 1, 1, 0, 30000), +(1681, 3210208, 4010002, 1, 1, 0, 9000), +(1682, 3210208, 4004003, 1, 1, 0, 10000), +(1683, 3210208, 2000002, 1, 1, 0, 20000), +(1684, 3210208, 2000003, 1, 1, 0, 20000), +(1685, 3210208, 2044501, 1, 1, 0, 300), +(1686, 3210208, 1382018, 1, 1, 0, 700), +(1687, 3210208, 1002173, 1, 1, 0, 1500), +(1688, 3210208, 1041052, 1, 1, 0, 800), +(1689, 3210208, 1061048, 1, 1, 0, 800), +(1690, 3210208, 1002048, 1, 1, 0, 1500), +(1691, 3210208, 1032008, 1, 1, 0, 1000), +(1692, 3210208, 1041065, 1, 1, 0, 800), +(1693, 3210208, 1061060, 1, 1, 0, 800), +(1694, 3210208, 1051008, 1, 1, 0, 700), +(1695, 3210208, 1082072, 1, 1, 0, 1000), +(1696, 3210208, 1082076, 1, 1, 0, 1000), +(1697, 3210208, 1072117, 1, 1, 0, 800), +(1698, 3210208, 1072127, 1, 1, 0, 800), +(1699, 3210208, 1052110, 1, 1, 0, 700), +(1700, 3210208, 1082195, 1, 1, 0, 1000), +(1701, 3210208, 4130006, 1, 1, 0, 6000), +(1702, 3210208, 4130008, 1, 1, 0, 6000), +(1703, 3210450, 4000153, 1, 1, 0, 600000), +(1704, 3210450, 4131008, 1, 1, 0, 6000), +(1705, 3210450, 2060000, 1, 1, 0, 30000), +(1706, 3210450, 2061000, 1, 1, 0, 30000), +(1707, 3210450, 4020000, 1, 1, 0, 9000), +(1708, 3210450, 4020001, 1, 1, 0, 9000), +(1709, 3210450, 2000002, 1, 1, 0, 20000), +(1710, 3210450, 2000003, 1, 1, 0, 20000), +(1711, 3210450, 2022040, 1, 1, 0, 20000), +(1712, 3210450, 1041042, 1, 1, 0, 800), +(1713, 3210450, 1061035, 1, 1, 0, 800), +(1714, 3210450, 1002023, 1, 1, 0, 1500), +(1715, 3210450, 1002163, 1, 1, 0, 1500), +(1716, 3210450, 1032010, 1, 1, 0, 1000), +(1717, 3210450, 1040062, 1, 1, 0, 800), +(1718, 3210450, 1060051, 1, 1, 0, 800), +(1719, 3210450, 1051015, 1, 1, 0, 700), +(1720, 3210450, 1302004, 1, 1, 0, 700), +(1721, 3210450, 1332014, 1, 1, 0, 500), +(1722, 3210450, 1072119, 1, 1, 0, 800), +(1723, 3210450, 1072110, 1, 1, 0, 800), +(1724, 3210450, 1082063, 1, 1, 0, 1000), +(1725, 3210450, 1002625, 1, 1, 0, 1500), +(1726, 3210450, 2330001, 1, 1, 0, 500), +(1727, 3210450, 4130000, 1, 1, 0, 6000), +(1728, 3210450, 4130014, 1, 1, 0, 6000), +(1729, 3210450, 4130017, 1, 1, 0, 6000), +(1730, 3210800, 4000026, 1, 1, 0, 600000), +(1731, 3210800, 4003004, 1, 1, 0, 200000), +(1732, 3210800, 2041010, 1, 1, 0, 300), +(1733, 3210800, 2000003, 1, 1, 0, 20000), +(1734, 3210800, 4000021, 1, 1, 0, 50000), +(1735, 3210800, 2070003, 1, 1, 0, 500), +(1736, 3210800, 4020003, 1, 1, 0, 9000), +(1737, 3210800, 4010004, 1, 1, 0, 9000), +(1738, 3210800, 4000029, 1, 1, 0, 600000), +(1739, 3210800, 1402010, 1, 1, 0, 700), +(1740, 3210800, 2070008, 1, 1, 0, 500), +(1741, 3210800, 1002038, 1, 1, 0, 1500), +(1742, 3210800, 1002172, 1, 1, 0, 1500), +(1743, 3210800, 1041050, 1, 1, 0, 800), +(1744, 3210800, 1061046, 1, 1, 0, 800), +(1745, 3210800, 1002136, 1, 1, 0, 1500), +(1746, 3210800, 1040075, 1, 1, 0, 800), +(1747, 3210800, 1060064, 1, 1, 0, 800), +(1748, 3210800, 1051014, 1, 1, 0, 700), +(1749, 3210800, 1072109, 1, 1, 0, 800), +(1750, 3210800, 1072116, 1, 1, 0, 800), +(1751, 3210800, 1092013, 1, 1, 0, 700), +(1752, 3210800, 1472017, 1, 1, 0, 500), +(1753, 3210800, 4020004, 1, 1, 0, 9000), +(1754, 3210800, 1302003, 1, 1, 0, 700), +(1755, 3210800, 1041094, 1, 1, 0, 800), +(1756, 3210800, 2000002, 1, 1, 0, 20000), +(1757, 3210800, 1082192, 1, 1, 0, 1000), +(1758, 3210800, 1072300, 1, 1, 0, 800), +(1759, 3210800, 2044414, 1, 1, 0, 300), +(1760, 3210800, 4130001, 1, 1, 0, 6000), +(1761, 3210800, 4130008, 1, 1, 0, 6000), +(1762, 3210800, 4130010, 1, 1, 0, 6000), +(1763, 3220000, 4000003, 1, 1, 0, 600000), +(1764, 3220000, 4000003, 1, 1, 0, 600000), +(1765, 3220000, 4000003, 1, 1, 0, 600000), +(1766, 3220000, 4000005, 1, 1, 0, 600000), +(1767, 3220000, 4000005, 1, 1, 0, 600000), +(1768, 3220000, 4000005, 1, 1, 0, 600000), +(1769, 3220000, 4000018, 1, 1, 0, 600000), +(1770, 3220000, 4000018, 1, 1, 0, 600000), +(1771, 3220000, 4000018, 1, 1, 0, 600000), +(1772, 3220000, 4000195, 1, 1, 0, 600000), +(1773, 3220000, 4000195, 1, 1, 0, 600000), +(1774, 3220000, 4000195, 1, 1, 0, 600000), +(1775, 3220000, 4010000, 1, 1, 0, 90000), +(1776, 3220000, 4020001, 1, 1, 0, 90000), +(1777, 3220000, 2000001, 1, 1, 0, 200000), +(1778, 3220000, 2000003, 1, 1, 0, 200000), +(1779, 3220000, 2012002, 1, 1, 0, 60000), +(1780, 3220000, 2040701, 1, 1, 0, 3000), +(1781, 3220000, 2040801, 1, 1, 0, 3000), +(1782, 3220000, 2040901, 1, 1, 0, 3000), +(1783, 3220000, 2041001, 1, 1, 0, 3000), +(1784, 3220000, 2043001, 1, 1, 0, 3000), +(1785, 3220000, 2043101, 1, 1, 0, 3000), +(1786, 3220000, 2041010, 1, 1, 0, 3000), +(1787, 3220000, 2043201, 1, 1, 0, 3000), +(1788, 3220000, 2041004, 1, 1, 0, 3000), +(1789, 3220000, 2060000, 1, 1, 0, 300000), +(1790, 3220000, 2061000, 1, 1, 0, 300000), +(1791, 3220000, 2041017, 1, 1, 0, 3000), +(1792, 3220000, 2040402, 1, 1, 0, 3000), +(1793, 3220000, 2044002, 1, 1, 0, 3000), +(1794, 3220000, 2040502, 1, 1, 0, 3000), +(1795, 3220000, 2040602, 1, 1, 0, 3000), +(1796, 3220000, 2041016, 1, 1, 0, 3000), +(1797, 3220000, 2070009, 1, 1, 0, 5000), +(1798, 3220000, 1002098, 1, 1, 0, 15000), +(1799, 3220000, 1002154, 1, 1, 0, 15000), +(1800, 3220000, 1002170, 1, 1, 0, 15000), +(1801, 3220000, 1002185, 1, 1, 0, 15000), +(1802, 3220000, 1040085, 1, 1, 0, 8000), +(1803, 3220000, 1041086, 1, 1, 0, 8000), +(1804, 3220000, 1050039, 1, 1, 0, 7000), +(1805, 3220000, 1051026, 1, 1, 0, 7000), +(1806, 3220000, 1040080, 1, 1, 0, 8000), +(1807, 3220000, 1041083, 1, 1, 0, 8000), +(1808, 3220000, 1040084, 1, 1, 0, 8000), +(1809, 3220000, 1041076, 1, 1, 0, 8000), +(1810, 3220000, 1082025, 1, 1, 0, 10000), +(1811, 3220000, 1082064, 1, 1, 0, 10000), +(1812, 3220000, 1082073, 1, 1, 0, 10000), +(1813, 3220000, 1082074, 1, 1, 0, 10000), +(1814, 3220000, 1072126, 1, 1, 0, 8000), +(1815, 3220000, 1072117, 1, 1, 0, 8000), +(1816, 3220000, 1072118, 1, 1, 0, 8000), +(1817, 3220000, 1072107, 1, 1, 0, 8000), +(1818, 3220000, 1002628, 1, 1, 0, 15000), +(1819, 3220000, 1052113, 1, 1, 0, 7000), +(1820, 3220000, 1082195, 1, 1, 0, 10000), +(1821, 3220000, 1072300, 1, 1, 0, 8000), +(1822, 3220000, 1322027, 1, 1, 0, 7000), +(1823, 3220000, 2044112, 1, 1, 0, 3000), +(1824, 3220000, 2044412, 1, 1, 0, 3000), +(1825, 3220001, 4000329, 1, 1, 0, 600000), +(1826, 3220001, 4000329, 1, 1, 0, 600000), +(1827, 3220001, 4000329, 1, 1, 0, 600000), +(1828, 3220001, 4000331, 1, 1, 0, 600000), +(1829, 3220001, 4000331, 1, 1, 0, 600000), +(1830, 3220001, 4000331, 1, 1, 0, 600000), +(1831, 3220001, 4000330, 1, 1, 0, 600000), +(1832, 3220001, 4000330, 1, 1, 0, 600000), +(1833, 3220001, 4000330, 1, 1, 0, 600000), +(1834, 3220001, 4010002, 1, 1, 0, 90000), +(1835, 3220001, 4020003, 1, 1, 0, 90000), +(1836, 3220001, 4010007, 1, 1, 0, 90000), +(1837, 3220001, 2022155, 1, 1, 0, 200000), +(1838, 3220001, 2000001, 1, 1, 0, 200000), +(1839, 3220001, 2000003, 1, 1, 0, 200000), +(1840, 3220001, 2040004, 1, 1, 0, 3000), +(1841, 3220001, 2040501, 1, 1, 0, 3000), +(1842, 3220001, 2040504, 1, 1, 0, 3000), +(1843, 3220001, 2040801, 1, 1, 0, 3000), +(1844, 3220001, 2041007, 1, 1, 0, 3000), +(1845, 3220001, 2041004, 1, 1, 0, 3000), +(1846, 3220001, 2043801, 1, 1, 0, 3000), +(1847, 3220001, 2044001, 1, 1, 0, 3000), +(1848, 3220001, 2044201, 1, 1, 0, 3000), +(1849, 3220001, 2044601, 1, 1, 0, 3000), +(1850, 3220001, 2044801, 1, 1, 0, 3000), +(1851, 3220001, 1082073, 1, 1, 0, 10000), +(1852, 3220001, 1082025, 1, 1, 0, 10000), +(1853, 3220001, 1082064, 1, 1, 0, 10000), +(1854, 3220001, 1082074, 1, 1, 0, 10000), +(1855, 3220001, 1082195, 1, 1, 0, 10000), +(1856, 3220001, 1032013, 1, 1, 0, 10000), +(1857, 3220001, 1302063, 1, 1, 0, 7000), +(1858, 3230100, 4000013, 1, 1, 0, 600000), +(1859, 3230100, 2000002, 1, 1, 0, 20000), +(1860, 3230100, 2002005, 1, 1, 0, 20000), +(1861, 3230100, 2044502, 1, 1, 0, 300), +(1862, 3230100, 2000003, 1, 1, 0, 20000), +(1863, 3230100, 1322003, 1, 1, 0, 700), +(1864, 3230100, 2060000, 1, 1, 0, 30000), +(1865, 3230100, 4010005, 1, 1, 0, 9000), +(1866, 3230100, 4020006, 1, 1, 0, 9000), +(1867, 3230100, 2061000, 1, 1, 0, 30000), +(1868, 3230100, 1040021, 1, 1, 0, 800), +(1869, 3230100, 1060016, 1, 1, 0, 800), +(1870, 3230100, 1002180, 1, 1, 0, 1500), +(1871, 3230100, 1002143, 1, 1, 0, 1500), +(1872, 3230100, 1060052, 1, 1, 0, 800), +(1873, 3230100, 1040063, 1, 1, 0, 800), +(1874, 3230100, 1432003, 1, 1, 0, 500), +(1875, 3230100, 1051025, 1, 1, 0, 700), +(1876, 3230100, 1002025, 1, 1, 0, 1500), +(1877, 3230100, 1040079, 1, 1, 0, 800), +(1878, 3230100, 1060069, 1, 1, 0, 800), +(1879, 3230100, 1482005, 1, 1, 0, 500), +(1880, 3230100, 1492006, 1, 1, 0, 500), +(1881, 3230100, 2330001, 1, 1, 0, 500), +(1882, 3230100, 2044902, 1, 1, 0, 300), +(1883, 3230100, 4130006, 1, 1, 0, 6000), +(1884, 3230100, 4130012, 1, 1, 0, 6000), +(1885, 3230100, 4130017, 1, 1, 0, 6000), +(1886, 3230101, 2000002, 1, 1, 0, 20000), +(1887, 3230101, 2040005, 1, 1, 0, 300), +(1888, 3230101, 2070002, 1, 1, 0, 500), +(1889, 3230101, 4010003, 1, 1, 0, 9000), +(1890, 3230101, 4020004, 1, 1, 0, 9000), +(1891, 3230101, 4000035, 1, 1, 0, 600000), +(1892, 3230101, 2048002, 1, 1, 0, 300), +(1893, 3230101, 1452000, 1, 1, 0, 500), +(1894, 3230101, 1051010, 1, 1, 0, 700), +(1895, 3230101, 1050022, 1, 1, 0, 700), +(1896, 3230101, 1051008, 1, 1, 0, 700), +(1897, 3230101, 1082069, 1, 1, 0, 1000), +(1898, 3230101, 1082056, 1, 1, 0, 1000), +(1899, 3230101, 1082047, 1, 1, 0, 1000), +(1900, 3230101, 1412004, 1, 1, 0, 700), +(1901, 3230101, 1072114, 1, 1, 0, 800), +(1902, 3230101, 1072118, 1, 1, 0, 800), +(1903, 3230101, 1472016, 1, 1, 0, 500), +(1904, 3230101, 1492005, 1, 1, 0, 500), +(1905, 3230101, 2040027, 1, 1, 0, 300), +(1906, 3230101, 4130007, 1, 1, 0, 6000), +(1907, 3230101, 4130014, 1, 1, 0, 6000), +(1908, 3230102, 4000043, 1, 1, 0, 600000), +(1909, 3230102, 2000003, 1, 1, 0, 20000), +(1910, 3230102, 2000002, 1, 1, 0, 20000), +(1911, 3230102, 4020000, 1, 1, 0, 9000), +(1912, 3230102, 4010005, 1, 1, 0, 9000), +(1913, 3230102, 2043301, 1, 1, 0, 300), +(1914, 3230102, 1302017, 1, 1, 0, 700), +(1915, 3230102, 2048005, 1, 1, 0, 300), +(1916, 3230102, 1332020, 1, 1, 0, 500), +(1917, 3230102, 4006001, 1, 1, 0, 10000), +(1918, 3230102, 1452005, 1, 1, 0, 500), +(1919, 3230102, 1442001, 1, 1, 0, 700), +(1920, 3230102, 1382017, 1, 1, 0, 700), +(1921, 3230102, 1072113, 1, 1, 0, 800), +(1922, 3230102, 1082056, 1, 1, 0, 1000), +(1923, 3230102, 1050000, 1, 1, 0, 700), +(1924, 3230102, 1050038, 1, 1, 0, 700), +(1925, 3230102, 1092014, 1, 1, 0, 700), +(1926, 3230102, 1072121, 1, 1, 0, 800), +(1927, 3230102, 1082074, 1, 1, 0, 1000), +(1928, 3230102, 1040080, 1, 1, 0, 800), +(1929, 3230102, 1060068, 1, 1, 0, 800), +(1930, 3230102, 1041074, 1, 1, 0, 800), +(1931, 3230102, 1061069, 1, 1, 0, 800), +(1932, 3230102, 1072297, 1, 1, 0, 800), +(1933, 3230102, 1482006, 1, 1, 0, 500), +(1934, 3230102, 2044802, 1, 1, 0, 300), +(1935, 3230102, 2040024, 1, 1, 0, 300), +(1936, 3230102, 2040423, 1, 1, 0, 300), +(1937, 3230102, 4130011, 1, 1, 0, 6000), +(1938, 3230102, 4130015, 1, 1, 0, 6000), +(1939, 3230103, 4000100, 1, 1, 0, 600000), +(1940, 3230103, 4131013, 1, 1, 0, 6000), +(1941, 3230103, 2002007, 1, 1, 0, 20000), +(1942, 3230103, 2060000, 1, 1, 0, 30000), +(1943, 3230103, 2061000, 1, 1, 0, 30000), +(1944, 3230103, 4020001, 1, 1, 0, 9000), +(1945, 3230103, 4020003, 1, 1, 0, 9000), +(1946, 3230103, 4004000, 1, 1, 0, 10000), +(1947, 3230103, 2000002, 1, 1, 0, 20000), +(1948, 3230103, 2000003, 1, 1, 0, 20000), +(1949, 3230103, 2040302, 1, 1, 0, 300), +(1950, 3230103, 2048002, 1, 1, 0, 300), +(1951, 3230103, 1082035, 1, 1, 0, 1000), +(1952, 3230103, 1072105, 1, 1, 0, 800), +(1953, 3230103, 1472011, 1, 1, 0, 500), +(1954, 3230103, 1452006, 1, 1, 0, 500), +(1955, 3230103, 1442003, 1, 1, 0, 700), +(1956, 3230103, 1002093, 1, 1, 0, 1500), +(1957, 3230103, 1002154, 1, 1, 0, 1500), +(1958, 3230103, 1040083, 1, 1, 0, 800), +(1959, 3230103, 1060072, 1, 1, 0, 800), +(1960, 3230103, 1032011, 1, 1, 0, 1000), +(1961, 3230103, 1041082, 1, 1, 0, 800), +(1962, 3230103, 1061081, 1, 1, 0, 800), +(1963, 3230103, 1050045, 1, 1, 0, 700), +(1964, 3230103, 1002625, 1, 1, 0, 1500), +(1965, 3230103, 2044112, 1, 1, 0, 300), +(1966, 3230103, 4130001, 1, 1, 0, 6000), +(1967, 3230103, 4130011, 1, 1, 0, 6000), +(1968, 3230104, 2000002, 1, 1, 0, 20000), +(1969, 3230104, 2040801, 1, 1, 0, 300), +(1970, 3230104, 2070002, 1, 1, 0, 500), +(1971, 3230104, 4020000, 1, 1, 0, 9000), +(1972, 3230104, 4010001, 1, 1, 0, 9000), +(1973, 3230104, 1382018, 1, 1, 0, 700), +(1974, 3230104, 4000167, 1, 1, 0, 600000), +(1975, 3230104, 2040701, 1, 1, 0, 300), +(1976, 3230104, 1332020, 1, 1, 0, 500), +(1977, 3230104, 1002023, 1, 1, 0, 1500), +(1978, 3230104, 1041050, 1, 1, 0, 800), +(1979, 3230104, 1061046, 1, 1, 0, 800), +(1980, 3230104, 1041056, 1, 1, 0, 800), +(1981, 3230104, 1061052, 1, 1, 0, 800), +(1982, 3230104, 1061048, 1, 1, 0, 800), +(1983, 3230104, 1041052, 1, 1, 0, 800), +(1984, 3230104, 1002135, 1, 1, 0, 1500), +(1985, 3230104, 1051014, 1, 1, 0, 700), +(1986, 3230104, 1402006, 1, 1, 0, 700), +(1987, 3230104, 1082023, 1, 1, 0, 1000), +(1988, 3230104, 1072114, 1, 1, 0, 800), +(1989, 3230104, 1002184, 1, 1, 0, 1500), +(1990, 3230104, 1082073, 1, 1, 0, 1000), +(1991, 3230104, 1482004, 1, 1, 0, 500), +(1992, 3230104, 2044212, 1, 1, 0, 300), +(1993, 3230104, 4130000, 1, 1, 0, 6000), +(1994, 3230104, 4130003, 1, 1, 0, 6000), +(1995, 3230104, 4130005, 1, 1, 0, 6000), +(1996, 3230200, 4000059, 1, 1, 0, 600000), +(1997, 3230200, 4003004, 1, 1, 0, 200000), +(1998, 3230200, 2041012, 1, 1, 0, 300), +(1999, 3230200, 2000002, 1, 1, 0, 20000), +(2000, 3230200, 2000003, 1, 1, 0, 20000), +(2001, 3230200, 1092008, 1, 1, 0, 700), +(2002, 3230200, 2040902, 1, 1, 0, 300), +(2003, 3230200, 2041005, 1, 1, 0, 300), +(2004, 3230200, 1302017, 1, 1, 0, 700), +(2005, 3230200, 2060000, 1, 1, 0, 30000), +(2006, 3230200, 2061000, 1, 1, 0, 30000), +(2007, 3230200, 4004001, 1, 1, 0, 10000), +(2008, 3230200, 4020000, 1, 1, 0, 9000), +(2009, 3230200, 1432008, 1, 1, 0, 500), +(2010, 3230200, 4006000, 1, 1, 0, 10000), +(2011, 3230200, 4010001, 1, 1, 0, 9000), +(2012, 3230200, 1082050, 1, 1, 0, 1000), +(2013, 3230200, 1082005, 1, 1, 0, 1000), +(2014, 3230200, 1072106, 1, 1, 0, 800), +(2015, 3230200, 1092007, 1, 1, 0, 700), +(2016, 3230200, 1072102, 1, 1, 0, 800), +(2017, 3230200, 1002176, 1, 1, 0, 1500), +(2018, 3230200, 1041065, 1, 1, 0, 800), +(2019, 3230200, 1061060, 1, 1, 0, 800), +(2020, 3230200, 1051027, 1, 1, 0, 700), +(2021, 3230200, 1302009, 1, 1, 0, 700), +(2022, 3230200, 1452007, 1, 1, 0, 500), +(2023, 3230200, 1002152, 1, 1, 0, 1500), +(2024, 3230200, 1002625, 1, 1, 0, 1500), +(2025, 3230200, 2044807, 1, 1, 0, 300), +(2026, 3230200, 4130009, 1, 1, 0, 6000), +(2027, 3230200, 4130014, 1, 1, 0, 6000), +(2028, 3230300, 4000067, 1, 1, 0, 400000), +(2029, 3230300, 2000002, 1, 1, 0, 20000), +(2030, 3230300, 2000003, 1, 1, 0, 20000), +(2031, 3230300, 4020000, 1, 1, 0, 9000), +(2032, 3230300, 4010001, 1, 1, 0, 9000), +(2033, 3230300, 4004000, 1, 1, 0, 10000), +(2034, 3230300, 4004001, 1, 1, 0, 10000), +(2035, 3230300, 4004002, 1, 1, 0, 10000), +(2036, 3230300, 4004003, 1, 1, 0, 10000), +(2037, 3230302, 4000099, 1, 1, 0, 600000), +(2038, 3230302, 4131008, 1, 1, 0, 6000), +(2039, 3230302, 2060000, 1, 1, 0, 30000), +(2040, 3230302, 2061000, 1, 1, 0, 30000), +(2041, 3230302, 4010006, 1, 1, 0, 9000), +(2042, 3230302, 4020004, 1, 1, 0, 9000), +(2043, 3230302, 4004003, 1, 1, 0, 10000), +(2044, 3230302, 2000002, 1, 1, 0, 20000), +(2045, 3230302, 2000003, 1, 1, 0, 20000), +(2046, 3230302, 2041023, 1, 1, 0, 300), +(2047, 3230302, 1072040, 1, 1, 0, 800), +(2048, 3230302, 1072078, 1, 1, 0, 800), +(2049, 3230302, 1472010, 1, 1, 0, 500), +(2050, 3230302, 1002141, 1, 1, 0, 1500), +(2051, 3230302, 1040075, 1, 1, 0, 800), +(2052, 3230302, 1060064, 1, 1, 0, 800), +(2053, 3230302, 1051009, 1, 1, 0, 700), +(2054, 3230302, 1442009, 1, 1, 0, 700), +(2055, 3230302, 1040082, 1, 1, 0, 800), +(2056, 3230302, 1060071, 1, 1, 0, 800), +(2057, 3230302, 1462006, 1, 1, 0, 500), +(2058, 3230302, 1052110, 1, 1, 0, 700), +(2059, 3230302, 4130005, 1, 1, 0, 6000), +(2060, 3230302, 4130012, 1, 1, 0, 6000), +(2061, 3230302, 4130013, 1, 1, 0, 6000), +(2062, 3230303, 4000104, 1, 1, 0, 600000), +(2063, 3230303, 1092021, 1, 1, 0, 700), +(2064, 3230303, 4131007, 1, 1, 0, 6000), +(2065, 3230303, 2060000, 1, 1, 0, 30000), +(2066, 3230303, 2061000, 1, 1, 0, 30000), +(2067, 3230303, 4010005, 1, 1, 0, 9000), +(2068, 3230303, 4020004, 1, 1, 0, 9000), +(2069, 3230303, 4004001, 1, 1, 0, 10000), +(2070, 3230303, 2000002, 1, 1, 0, 20000), +(2071, 3230303, 2000003, 1, 1, 0, 20000), +(2072, 3230303, 2043301, 1, 1, 0, 300), +(2073, 3230303, 1372003, 1, 1, 0, 700), +(2074, 3230303, 1312005, 1, 1, 0, 700), +(2075, 3230303, 1322003, 1, 1, 0, 700), +(2076, 3230303, 1402010, 1, 1, 0, 700), +(2077, 3230303, 1072104, 1, 1, 0, 800), +(2078, 3230303, 1072091, 1, 1, 0, 800), +(2079, 3230303, 1082046, 1, 1, 0, 1000), +(2080, 3230303, 1041084, 1, 1, 0, 800), +(2081, 3230303, 1061083, 1, 1, 0, 800), +(2082, 3230303, 1041081, 1, 1, 0, 800), +(2083, 3230303, 1061080, 1, 1, 0, 800), +(2084, 3230303, 1002181, 1, 1, 0, 1500), +(2085, 3230303, 1002092, 1, 1, 0, 1500), +(2086, 3230303, 1082080, 1, 1, 0, 1000), +(2087, 3230303, 1472018, 1, 1, 0, 500), +(2088, 3230303, 1462007, 1, 1, 0, 500), +(2089, 3230303, 1402003, 1, 1, 0, 700), +(2090, 3230303, 1002145, 1, 1, 0, 1500), +(2091, 3230303, 1482005, 1, 1, 0, 500), +(2092, 3230303, 2044312, 1, 1, 0, 300), +(2093, 3230303, 4130009, 1, 1, 0, 6000), +(2094, 3230303, 4130010, 1, 1, 0, 6000), +(2095, 3230303, 4130012, 1, 1, 0, 6000), +(2096, 3230304, 4000105, 1, 1, 0, 600000), +(2097, 3230304, 4131005, 1, 1, 0, 6000), +(2098, 3230304, 2060000, 1, 1, 0, 30000), +(2099, 3230304, 2061000, 1, 1, 0, 30000), +(2100, 3230304, 4010001, 1, 1, 0, 9000), +(2101, 3230304, 4004003, 1, 1, 0, 10000), +(2102, 3230304, 4020005, 1, 1, 0, 9000), +(2103, 3230304, 2000002, 1, 1, 0, 20000), +(2104, 3230304, 2000003, 1, 1, 0, 20000), +(2105, 3230304, 2040302, 1, 1, 0, 300), +(2106, 3230304, 1382018, 1, 1, 0, 700), +(2107, 3230304, 1472012, 1, 1, 0, 500), +(2108, 3230304, 1432003, 1, 1, 0, 500), +(2109, 3230304, 1462005, 1, 1, 0, 500), +(2110, 3230304, 1002183, 1, 1, 0, 1500), +(2111, 3230304, 1002167, 1, 1, 0, 1500), +(2112, 3230304, 1040086, 1, 1, 0, 800), +(2113, 3230304, 1060075, 1, 1, 0, 800), +(2114, 3230304, 1041076, 1, 1, 0, 800), +(2115, 3230304, 1061071, 1, 1, 0, 800), +(2116, 3230304, 1072000, 1, 1, 0, 800), +(2117, 3230304, 1032018, 1, 1, 0, 1000), +(2118, 3230304, 1082082, 1, 1, 0, 1000), +(2119, 3230304, 1082085, 1, 1, 0, 1000), +(2120, 3230304, 1072129, 1, 1, 0, 800), +(2121, 3230304, 1082010, 1, 1, 0, 1000), +(2122, 3230304, 1052110, 1, 1, 0, 700), +(2123, 3230304, 2040316, 1, 1, 0, 300), +(2124, 3230304, 2049000, 1, 1, 0, 150), +(2125, 3230304, 4130002, 1, 1, 0, 6000), +(2126, 3230304, 4130017, 1, 1, 0, 6000), +(2127, 3230305, 4000110, 1, 1, 0, 600000), +(2128, 3230305, 4000003, 1, 1, 0, 600000), +(2129, 3230305, 4000018, 1, 1, 0, 600000), +(2130, 3230305, 2060000, 1, 1, 0, 30000), +(2131, 3230305, 2061000, 1, 1, 0, 30000), +(2132, 3230305, 4020003, 1, 1, 0, 9000), +(2133, 3230305, 4004001, 1, 1, 0, 10000), +(2134, 3230305, 2000002, 1, 1, 0, 20000), +(2135, 3230305, 2000003, 1, 1, 0, 20000), +(2136, 3230305, 2041001, 1, 1, 0, 300), +(2137, 3230305, 1032002, 1, 1, 0, 1000), +(2138, 3230305, 1041066, 1, 1, 0, 800), +(2139, 3230305, 1061061, 1, 1, 0, 800), +(2140, 3230305, 1040029, 1, 1, 0, 800), +(2141, 3230305, 1060020, 1, 1, 0, 800), +(2142, 3230305, 1002184, 1, 1, 0, 1500), +(2143, 3230305, 1002099, 1, 1, 0, 1500), +(2144, 3230305, 1082064, 1, 1, 0, 1000), +(2145, 3230305, 1082075, 1, 1, 0, 1000), +(2146, 3230305, 1072119, 1, 1, 0, 800), +(2147, 3230305, 1442009, 1, 1, 0, 700), +(2148, 3230305, 1051033, 1, 1, 0, 700), +(2149, 3230305, 1492005, 1, 1, 0, 500), +(2150, 3230305, 2330001, 1, 1, 0, 500), +(2151, 3230305, 2040926, 1, 1, 0, 300), +(2152, 3230305, 4130003, 1, 1, 0, 6000), +(2153, 3230305, 4130004, 1, 1, 0, 6000), +(2154, 3230305, 4130014, 1, 1, 0, 6000), +(2155, 3230306, 4000115, 1, 1, 0, 600000), +(2156, 3230306, 1092021, 1, 1, 0, 700), +(2157, 3230306, 2002006, 1, 1, 0, 20000), +(2158, 3230306, 2060000, 1, 1, 0, 30000), +(2159, 3230306, 2061000, 1, 1, 0, 30000), +(2160, 3230306, 4010006, 1, 1, 0, 9000), +(2161, 3230306, 4004002, 1, 1, 0, 10000), +(2162, 3230306, 4010001, 1, 1, 0, 9000), +(2163, 3230306, 2000002, 1, 1, 0, 20000), +(2164, 3230306, 2000003, 1, 1, 0, 20000), +(2165, 3230306, 2043702, 1, 1, 0, 300), +(2166, 3230306, 2044201, 1, 1, 0, 300), +(2167, 3230306, 4006000, 1, 1, 0, 10000), +(2168, 3230306, 1072032, 1, 1, 0, 800), +(2169, 3230306, 1072041, 1, 1, 0, 800), +(2170, 3230306, 1051006, 1, 1, 0, 700), +(2171, 3230306, 1082069, 1, 1, 0, 1000), +(2172, 3230306, 1072089, 1, 1, 0, 800), +(2173, 3230306, 1041069, 1, 1, 0, 800), +(2174, 3230306, 1061064, 1, 1, 0, 800), +(2175, 3230306, 1002182, 1, 1, 0, 1500), +(2176, 3230306, 1002155, 1, 1, 0, 1500), +(2177, 3230306, 1040085, 1, 1, 0, 800), +(2178, 3230306, 1060074, 1, 1, 0, 800), +(2179, 3230306, 1492005, 1, 1, 0, 500), +(2180, 3230306, 2044901, 1, 1, 0, 300), +(2181, 3230306, 4130000, 1, 1, 0, 6000), +(2182, 3230306, 4130010, 1, 1, 0, 6000), +(2183, 3230307, 4000123, 1, 1, 0, 600000), +(2184, 3230307, 2060000, 1, 1, 0, 30000), +(2185, 3230307, 2061000, 1, 1, 0, 30000), +(2186, 3230307, 4004001, 1, 1, 0, 10000), +(2187, 3230307, 4020008, 1, 1, 0, 9000), +(2188, 3230307, 4010001, 1, 1, 0, 9000), +(2189, 3230307, 2000002, 1, 1, 0, 20000), +(2190, 3230307, 2000003, 1, 1, 0, 20000), +(2191, 3230307, 4003004, 1, 1, 0, 200000), +(2192, 3230307, 4000003, 1, 1, 0, 600000), +(2193, 3230307, 1051004, 1, 1, 0, 700), +(2194, 3230307, 1332004, 1, 1, 0, 500), +(2195, 3230307, 1040069, 1, 1, 0, 800), +(2196, 3230307, 1060058, 1, 1, 0, 800), +(2197, 3230307, 1002036, 1, 1, 0, 1500), +(2198, 3230307, 1312005, 1, 1, 0, 700), +(2199, 3230307, 1082008, 1, 1, 0, 1000), +(2200, 3230307, 1072104, 1, 1, 0, 800), +(2201, 3230307, 1302004, 1, 1, 0, 700), +(2202, 3230307, 1002183, 1, 1, 0, 1500), +(2203, 3230307, 1002152, 1, 1, 0, 1500), +(2204, 3230307, 1072120, 1, 1, 0, 800), +(2205, 3230307, 1082023, 1, 1, 0, 1000), +(2206, 3230307, 1482004, 1, 1, 0, 500), +(2207, 3230307, 2040929, 1, 1, 0, 300), +(2208, 3230307, 2044110, 1, 1, 0, 300), +(2209, 3230307, 4130010, 1, 1, 0, 6000), +(2210, 3230307, 4130013, 1, 1, 0, 6000), +(2211, 3230308, 4000116, 1, 1, 0, 600000), +(2212, 3230308, 2002008, 1, 1, 0, 20000), +(2213, 3230308, 2060000, 1, 1, 0, 30000), +(2214, 3230308, 2061000, 1, 1, 0, 30000), +(2215, 3230308, 4020008, 1, 1, 0, 9000), +(2216, 3230308, 4004002, 1, 1, 0, 10000), +(2217, 3230308, 2000002, 1, 1, 0, 20000), +(2218, 3230308, 2000003, 1, 1, 0, 20000), +(2219, 3230308, 4020001, 1, 1, 0, 9000), +(2220, 3230308, 2040902, 1, 1, 0, 300), +(2221, 3230308, 1322003, 1, 1, 0, 700), +(2222, 3230308, 4003005, 1, 1, 0, 200000), +(2223, 3230308, 4000003, 1, 1, 0, 600000), +(2224, 3230308, 1402006, 1, 1, 0, 700), +(2225, 3230308, 1422008, 1, 1, 0, 700), +(2226, 3230308, 1372000, 1, 1, 0, 700), +(2227, 3230308, 1072107, 1, 1, 0, 800), +(2228, 3230308, 1072120, 1, 1, 0, 800), +(2229, 3230308, 1072115, 1, 1, 0, 800), +(2230, 3230308, 1092012, 1, 1, 0, 700), +(2231, 3230308, 1082073, 1, 1, 0, 1000), +(2232, 3230308, 1041085, 1, 1, 0, 800), +(2233, 3230308, 1061084, 1, 1, 0, 800), +(2234, 3230308, 1051033, 1, 1, 0, 700), +(2235, 3230308, 1082065, 1, 1, 0, 1000), +(2236, 3230308, 1082010, 1, 1, 0, 1000), +(2237, 3230308, 1082083, 1, 1, 0, 1000), +(2238, 3230308, 1482005, 1, 1, 0, 500), +(2239, 3230308, 2043210, 1, 1, 0, 300), +(2240, 3230308, 4130004, 1, 1, 0, 6000), +(2241, 3230308, 4130006, 1, 1, 0, 6000), +(2242, 3230308, 4130015, 1, 1, 0, 6000), +(2243, 3230400, 4000127, 1, 1, 0, 600000), +(2244, 3230400, 2000002, 1, 1, 0, 20000), +(2245, 3230400, 2000003, 1, 1, 0, 20000), +(2246, 3230400, 2060000, 1, 1, 0, 30000), +(2247, 3230400, 2061000, 1, 1, 0, 30000), +(2248, 3230400, 4010001, 1, 1, 0, 9000), +(2249, 3230400, 4020007, 1, 1, 0, 9000), +(2250, 3230400, 4006001, 1, 1, 0, 10000), +(2251, 3230400, 4004004, 1, 1, 0, 10000), +(2252, 3230400, 1092008, 1, 1, 0, 700), +(2253, 3230400, 2070002, 1, 1, 0, 500), +(2254, 3230400, 1302013, 1, 1, 0, 700), +(2255, 3230400, 1402008, 1, 1, 0, 700), +(2256, 3230400, 1041033, 1, 1, 0, 800), +(2257, 3230400, 1062006, 1, 1, 0, 800), +(2258, 3230400, 1041049, 1, 1, 0, 800), +(2259, 3230400, 1061045, 1, 1, 0, 800), +(2260, 3230400, 1050011, 1, 1, 0, 700), +(2261, 3230400, 1082053, 1, 1, 0, 1000), +(2262, 3230400, 1040074, 1, 1, 0, 800), +(2263, 3230400, 1060063, 1, 1, 0, 800), +(2264, 3230400, 1002144, 1, 1, 0, 1500), +(2265, 3230400, 1372000, 1, 1, 0, 700), +(2266, 3230400, 1492004, 1, 1, 0, 500), +(2267, 3230400, 2044901, 1, 1, 0, 300), +(2268, 3230400, 2044414, 1, 1, 0, 300), +(2269, 3230400, 2049100, 1, 1, 0, 150), +(2270, 3230400, 4130001, 1, 1, 0, 6000), +(2271, 3230400, 4130008, 1, 1, 0, 6000), +(2272, 3230400, 4130015, 1, 1, 0, 6000), +(2273, 3230405, 4000154, 1, 1, 0, 600000), +(2274, 3230405, 2002005, 1, 1, 0, 20000), +(2275, 3230405, 4131005, 1, 1, 0, 6000), +(2276, 3230405, 2060000, 1, 1, 0, 30000), +(2277, 3230405, 2061000, 1, 1, 0, 30000), +(2278, 3230405, 4010001, 1, 1, 0, 9000), +(2279, 3230405, 1372012, 1, 1, 0, 700), +(2280, 3230405, 4010000, 1, 1, 0, 9000), +(2281, 3230405, 4020002, 1, 1, 0, 9000), +(2282, 3230405, 2000002, 1, 1, 0, 20000), +(2283, 3230405, 2000003, 1, 1, 0, 20000), +(2284, 3230405, 2040302, 1, 1, 0, 300), +(2285, 3230405, 1082054, 1, 1, 0, 1000), +(2286, 3230405, 1060062, 1, 1, 0, 800), +(2287, 3230405, 1040073, 1, 1, 0, 800), +(2288, 3230405, 1002177, 1, 1, 0, 1500), +(2289, 3230405, 1051023, 1, 1, 0, 700), +(2290, 3230405, 1302009, 1, 1, 0, 700), +(2291, 3230405, 1312007, 1, 1, 0, 700), +(2292, 3230405, 1332011, 1, 1, 0, 500), +(2293, 3230405, 1332031, 1, 1, 0, 500), +(2294, 3230405, 1072122, 1, 1, 0, 800), +(2295, 3230405, 1072128, 1, 1, 0, 800), +(2296, 3230405, 1082009, 1, 1, 0, 1000), +(2297, 3230405, 1082192, 1, 1, 0, 1000), +(2298, 3230405, 2044410, 1, 1, 0, 300), +(2299, 3230405, 4130009, 1, 1, 0, 6000), +(2300, 3230405, 4130013, 1, 1, 0, 6000), +(2301, 4110300, 2000002, 1, 1, 0, 20000), +(2302, 4110300, 2000003, 1, 1, 0, 20000), +(2303, 4110300, 4010006, 1, 1, 0, 9000), +(2304, 4110300, 4020007, 1, 1, 0, 9000), +(2305, 4110300, 2000004, 1, 1, 0, 20000), +(2306, 4110300, 2060000, 1, 1, 0, 30000), +(2307, 4110300, 2061000, 1, 1, 0, 30000), +(2308, 4110300, 4004004, 1, 1, 0, 10000), +(2309, 4110300, 2041019, 1, 1, 0, 300), +(2310, 4110300, 1002045, 1, 1, 0, 1500), +(2311, 4110300, 1061062, 1, 1, 0, 800), +(2312, 4110300, 1041067, 1, 1, 0, 800), +(2313, 4110300, 1050037, 1, 1, 0, 700), +(2314, 4110300, 1041076, 1, 1, 0, 800), +(2315, 4110300, 1060073, 1, 1, 0, 800), +(2316, 4110300, 1412005, 1, 1, 0, 700), +(2317, 4110300, 1452007, 1, 1, 0, 500), +(2318, 4110300, 1002213, 1, 1, 0, 1500), +(2319, 4110300, 1002085, 1, 1, 0, 1500), +(2320, 4110300, 1032012, 1, 1, 0, 1000), +(2321, 4110300, 1040096, 1, 1, 0, 800), +(2322, 4110300, 1060085, 1, 1, 0, 800), +(2323, 4110300, 4000357, 1, 1, 0, 600000), +(2324, 4110300, 1052116, 1, 1, 0, 700), +(2325, 4110300, 2330002, 1, 1, 0, 500), +(2326, 4110300, 4130002, 1, 1, 0, 6000), +(2327, 4110300, 4130012, 1, 1, 0, 6000), +(2328, 4110300, 4130013, 1, 1, 0, 6000), +(2329, 4110301, 2000002, 1, 1, 0, 20000), +(2330, 4110301, 2000003, 1, 1, 0, 20000), +(2331, 4110301, 4010002, 1, 1, 0, 9000), +(2332, 4110301, 4010004, 1, 1, 0, 9000), +(2333, 4110301, 4004000, 1, 1, 0, 10000), +(2334, 4110301, 2060000, 1, 1, 0, 30000), +(2335, 4110301, 2061000, 1, 1, 0, 30000), +(2336, 4110301, 2040504, 1, 1, 0, 300), +(2337, 4110301, 2044002, 1, 1, 0, 300), +(2338, 4110301, 1002085, 1, 1, 0, 1500), +(2339, 4110301, 1382001, 1, 1, 0, 700), +(2340, 4110301, 1082010, 1, 1, 0, 1000), +(2341, 4110301, 1041077, 1, 1, 0, 800), +(2342, 4110301, 4000358, 1, 1, 0, 600000), +(2343, 4110301, 4130007, 1, 1, 0, 6000), +(2344, 4110301, 4130012, 1, 1, 0, 6000), +(2345, 4110302, 2000002, 1, 1, 0, 20000), +(2346, 4110302, 2000003, 1, 1, 0, 20000), +(2347, 4110302, 4020000, 1, 1, 0, 9000), +(2348, 4110302, 4020006, 1, 1, 0, 9000), +(2349, 4110302, 4130012, 1, 1, 0, 6000), +(2350, 4110302, 2044102, 1, 1, 0, 300), +(2351, 4110302, 1372007, 1, 1, 0, 700), +(2352, 4110302, 1002215, 1, 1, 0, 1500), +(2353, 4110302, 4006001, 1, 1, 0, 10000), +(2354, 4110302, 1040089, 1, 1, 0, 800), +(2355, 4110302, 1050045, 1, 1, 0, 700), +(2356, 4110302, 4004002, 1, 1, 0, 10000), +(2357, 4110302, 2040001, 1, 1, 0, 300), +(2358, 4110302, 4000359, 1, 1, 0, 600000), +(2359, 4110302, 1082198, 1, 1, 0, 1000), +(2360, 4130100, 4000014, 1, 1, 0, 600000), +(2361, 4130100, 4020008, 1, 1, 0, 9000), +(2362, 4130100, 2000002, 1, 1, 0, 20000), +(2363, 4130100, 2000004, 1, 1, 0, 20000), +(2364, 4130100, 4010005, 1, 1, 0, 9000), +(2365, 4130100, 4000030, 1, 1, 0, 60000), +(2366, 4130100, 2000003, 1, 1, 0, 20000), +(2367, 4130100, 4006001, 1, 1, 0, 10000), +(2368, 4130100, 1050022, 1, 1, 0, 700), +(2369, 4130100, 1002138, 1, 1, 0, 1500), +(2370, 4130100, 1322016, 1, 1, 0, 700), +(2371, 4130100, 1082064, 1, 1, 0, 1000), +(2372, 4130100, 1060069, 1, 1, 0, 800), +(2373, 4130100, 1040079, 1, 1, 0, 800), +(2374, 4130100, 1002045, 1, 1, 0, 1500), +(2375, 4130100, 1382001, 1, 1, 0, 700), +(2376, 4130100, 1050046, 1, 1, 0, 700), +(2377, 4130100, 1302010, 1, 1, 0, 700), +(2378, 4130100, 1332016, 1, 1, 0, 500), +(2379, 4130100, 1072133, 1, 1, 0, 800), +(2380, 4130100, 1072125, 1, 1, 0, 800), +(2381, 4130100, 1052113, 1, 1, 0, 700), +(2382, 4130100, 2040025, 1, 1, 0, 300), +(2383, 4130100, 2040621, 1, 1, 0, 300), +(2384, 4130100, 2044014, 1, 1, 0, 300), +(2385, 4130100, 2049100, 1, 1, 0, 150), +(2386, 4130100, 4130006, 1, 1, 0, 6000), +(2387, 4130100, 4130016, 1, 1, 0, 6000), +(2388, 4130101, 4000045, 1, 1, 0, 600000), +(2389, 4130101, 2041013, 1, 1, 0, 300), +(2390, 4130101, 2000002, 1, 1, 0, 20000), +(2391, 4130101, 2000004, 1, 1, 0, 20000), +(2392, 4130101, 2000003, 1, 1, 0, 20000), +(2393, 4130101, 4020001, 1, 1, 0, 9000), +(2394, 4130101, 4010002, 1, 1, 0, 9000), +(2395, 4130101, 2040805, 1, 1, 0, 300), +(2396, 4130101, 1472016, 1, 1, 0, 500), +(2397, 4130101, 1002152, 1, 1, 0, 1500), +(2398, 4130101, 1002183, 1, 1, 0, 1500), +(2399, 4130101, 1041081, 1, 1, 0, 800), +(2400, 4130101, 1061080, 1, 1, 0, 800), +(2401, 4130101, 1402003, 1, 1, 0, 700), +(2402, 4130101, 1092004, 1, 1, 0, 700), +(2403, 4130101, 1072124, 1, 1, 0, 800), +(2404, 4130101, 1072142, 1, 1, 0, 800), +(2405, 4130101, 1061088, 1, 1, 0, 800), +(2406, 4130101, 1041089, 1, 1, 0, 800), +(2407, 4130101, 1061078, 1, 1, 0, 800), +(2408, 4130101, 1041079, 1, 1, 0, 800), +(2409, 4130101, 1072303, 1, 1, 0, 800), +(2410, 4130101, 2040923, 1, 1, 0, 300), +(2411, 4130101, 4130003, 1, 1, 0, 6000), +(2412, 4130101, 4130005, 1, 1, 0, 6000), +(2413, 4130101, 4130009, 1, 1, 0, 6000), +(2414, 4130102, 4000062, 1, 1, 0, 600000), +(2415, 4130102, 2041014, 1, 1, 0, 300), +(2416, 4130102, 4004004, 1, 1, 0, 10000), +(2417, 4130102, 2000002, 1, 1, 0, 20000), +(2418, 4130102, 2000004, 1, 1, 0, 20000), +(2419, 4130102, 2000003, 1, 1, 0, 20000), +(2420, 4130102, 4020006, 1, 1, 0, 9000), +(2421, 4130102, 4010003, 1, 1, 0, 9000), +(2422, 4130102, 4004000, 1, 1, 0, 10000), +(2423, 4130102, 1302013, 1, 1, 0, 700), +(2424, 4130102, 2044201, 1, 1, 0, 300), +(2425, 4130102, 4006001, 1, 1, 0, 10000), +(2426, 4130102, 1051027, 1, 1, 0, 700), +(2427, 4130102, 1002092, 1, 1, 0, 1500), +(2428, 4130102, 1040080, 1, 1, 0, 800), +(2429, 4130102, 1060068, 1, 1, 0, 800), +(2430, 4130102, 1072110, 1, 1, 0, 800), +(2431, 4130102, 1082063, 1, 1, 0, 1000), +(2432, 4130102, 1041087, 1, 1, 0, 800), +(2433, 4130102, 1061086, 1, 1, 0, 800), +(2434, 4130102, 1040095, 1, 1, 0, 800), +(2435, 4130102, 1060084, 1, 1, 0, 800), +(2436, 4130102, 1082084, 1, 1, 0, 1000), +(2437, 4130102, 1072132, 1, 1, 0, 800), +(2438, 4130102, 4130000, 1, 1, 0, 6000), +(2439, 4130102, 4130003, 1, 1, 0, 6000), +(2440, 4130102, 4130013, 1, 1, 0, 6000), +(2441, 4130103, 4000124, 1, 1, 0, 600000), +(2442, 4130103, 2060000, 1, 1, 0, 300000), +(2443, 4130103, 2061000, 1, 1, 0, 300000), +(2444, 4130103, 2000002, 1, 1, 0, 200000), +(2445, 4130103, 2000004, 1, 1, 0, 999999), +(2446, 4130103, 4131009, 1, 1, 0, 60000), +(2447, 4130103, 4010000, 1, 1, 0, 90000), +(2448, 4130103, 4005002, 1, 1, 0, 10000), +(2449, 4130103, 2040902, 1, 1, 0, 3000), +(2450, 4130103, 4020007, 1, 1, 0, 90000), +(2451, 4130103, 4020000, 1, 1, 0, 90000), +(2452, 4130103, 4006000, 1, 1, 0, 100000), +(2453, 4130103, 1060052, 1, 1, 0, 8000), +(2454, 4130103, 1040063, 1, 1, 0, 8000), +(2455, 4130103, 1442009, 1, 1, 0, 7000), +(2456, 4130103, 1082071, 1, 1, 0, 10000), +(2457, 4130103, 1462006, 1, 1, 0, 5000), +(2458, 4130103, 1051032, 1, 1, 0, 7000), +(2459, 4130103, 1372007, 1, 1, 0, 7000), +(2460, 4130103, 1472019, 1, 1, 0, 5000), +(2461, 4130103, 1072129, 1, 1, 0, 8000), +(2462, 4130103, 1432004, 1, 1, 0, 5000), +(2463, 4130103, 1072140, 1, 1, 0, 8000), +(2464, 4130103, 1082085, 1, 1, 0, 10000), +(2465, 4130103, 1312008, 1, 1, 0, 7000), +(2466, 4130103, 1492007, 1, 1, 0, 5000), +(2467, 4130103, 2043210, 1, 1, 0, 3000), +(2468, 4130103, 4130002, 1, 1, 0, 60000), +(2469, 4130103, 4130004, 1, 1, 0, 60000), +(2470, 4130103, 4130012, 1, 1, 0, 60000), +(2471, 4220000, 4000166, 1, 1, 0, 600000), +(2472, 4220000, 4000166, 1, 1, 0, 600000), +(2473, 4220000, 4000166, 1, 1, 0, 600000), +(2474, 4220000, 4000167, 1, 1, 0, 600000), +(2475, 4220000, 4000167, 1, 1, 0, 600000), +(2476, 4220000, 4000167, 1, 1, 0, 600000), +(2477, 4220000, 4010003, 1, 1, 0, 90000), +(2478, 4220000, 4020004, 1, 1, 0, 90000), +(2479, 4220000, 2000002, 1, 1, 0, 200000), +(2480, 4220000, 2000003, 1, 1, 0, 200000), +(2481, 4220000, 2040301, 1, 1, 0, 3000), +(2482, 4220000, 2040302, 1, 1, 0, 3000), +(2483, 4220000, 2040516, 1, 1, 0, 3000), +(2484, 4220000, 2040517, 1, 1, 0, 3000), +(2485, 4220000, 2040704, 1, 1, 0, 3000), +(2486, 4220000, 2040705, 1, 1, 0, 3000), +(2487, 4220000, 2040804, 1, 1, 0, 3000), +(2488, 4220000, 2040805, 1, 1, 0, 3000), +(2489, 4220000, 2041007, 1, 1, 0, 3000), +(2490, 4220000, 2041008, 1, 1, 0, 3000), +(2491, 4220000, 1302010, 1, 1, 0, 7000), +(2492, 4220000, 1312008, 1, 1, 0, 7000), +(2493, 4220000, 1322017, 1, 1, 0, 7000), +(2494, 4220000, 1402003, 1, 1, 0, 7000), +(2495, 4220000, 1412003, 1, 1, 0, 7000), +(2496, 4220000, 1422005, 1, 1, 0, 7000), +(2497, 4220000, 1432004, 1, 1, 0, 5000), +(2498, 4220000, 1442005, 1, 1, 0, 7000), +(2499, 4220000, 1452008, 1, 1, 0, 5000), +(2500, 4220000, 1462007, 1, 1, 0, 5000), +(2501, 4220000, 1332003, 1, 1, 0, 5000), +(2502, 4220000, 1472020, 1, 1, 0, 5000), +(2503, 4220000, 1332016, 1, 1, 0, 5000), +(2504, 4220000, 1482007, 1, 1, 0, 5000), +(2505, 4220000, 1492007, 1, 1, 0, 5000), +(2506, 4220000, 1382006, 1, 1, 0, 7000), +(2507, 4220000, 1372007, 1, 1, 0, 7000), +(2508, 4220000, 1442039, 1, 1, 0, 7000), +(2509, 4220000, 2040029, 1, 1, 0, 3000), +(2510, 4220000, 2040326, 1, 1, 0, 3000), +(2511, 4220000, 2044809, 1, 1, 0, 3000), +(2512, 4220000, 2049100, 1, 1, 0, 3000), +(2513, 4230100, 4000023, 1, 1, 0, 600000), +(2514, 4230100, 2040001, 1, 1, 0, 300), +(2515, 4230100, 2000002, 1, 1, 0, 20000), +(2516, 4230100, 4010006, 1, 1, 0, 9000), +(2517, 4230100, 2000003, 1, 1, 0, 20000), +(2518, 4230100, 4010001, 1, 1, 0, 9000), +(2519, 4230100, 1002103, 1, 1, 0, 1500), +(2520, 4230100, 2070010, 1, 1, 0, 500), +(2521, 4230100, 1462004, 1, 1, 0, 500), +(2522, 4230100, 1472013, 1, 1, 0, 500), +(2523, 4230100, 1412004, 1, 1, 0, 700), +(2524, 4230100, 1072090, 1, 1, 0, 800), +(2525, 4230100, 1472017, 1, 1, 0, 500), +(2526, 4230100, 1002166, 1, 1, 0, 1500), +(2527, 4230100, 1002098, 1, 1, 0, 1500), +(2528, 4230100, 1002169, 1, 1, 0, 1500), +(2529, 4230100, 1041075, 1, 1, 0, 800), +(2530, 4230100, 1061070, 1, 1, 0, 800), +(2531, 4230100, 1072132, 1, 1, 0, 800), +(2532, 4230100, 1072140, 1, 1, 0, 800), +(2533, 4230100, 1082066, 1, 1, 0, 1000), +(2534, 4230100, 1032008, 1, 1, 0, 1000), +(2535, 4230100, 4010005, 1, 1, 0, 9000), +(2536, 4230100, 1060057, 1, 1, 0, 800), +(2537, 4230100, 2000006, 1, 1, 0, 20000), +(2538, 4230100, 2044412, 1, 1, 0, 300), +(2539, 4230100, 2049100, 1, 1, 0, 150), +(2540, 4230100, 4130004, 1, 1, 0, 6000), +(2541, 4230100, 4130005, 1, 1, 0, 6000), +(2542, 4230100, 4130009, 1, 1, 0, 6000), +(2543, 4230101, 2000002, 1, 1, 0, 20000), +(2544, 4230101, 4003004, 1, 1, 0, 200000), +(2545, 4230101, 2000003, 1, 1, 0, 20000), +(2546, 4230101, 4010005, 1, 1, 0, 9000), +(2547, 4230101, 4020001, 1, 1, 0, 9000), +(2548, 4230101, 1462006, 1, 1, 0, 500), +(2549, 4230101, 4000031, 1, 1, 0, 600000), +(2550, 4230101, 1051009, 1, 1, 0, 700), +(2551, 4230101, 1051001, 1, 1, 0, 700), +(2552, 4230101, 1040074, 1, 1, 0, 800), +(2553, 4230101, 1060063, 1, 1, 0, 800), +(2554, 4230101, 1050039, 1, 1, 0, 700), +(2555, 4230101, 1002185, 1, 1, 0, 1500), +(2556, 4230101, 1002151, 1, 1, 0, 1500), +(2557, 4230101, 1041086, 1, 1, 0, 800), +(2558, 4230101, 1061085, 1, 1, 0, 800), +(2559, 4230101, 1472015, 1, 1, 0, 500), +(2560, 4230101, 1382001, 1, 1, 0, 700), +(2561, 4230101, 1462007, 1, 1, 0, 500), +(2562, 4230101, 1442005, 1, 1, 0, 700), +(2563, 4230101, 1332003, 1, 1, 0, 500), +(2564, 4230101, 1040000, 1, 1, 0, 800), +(2565, 4230101, 1082037, 1, 1, 0, 1000), +(2566, 4230101, 1041068, 1, 1, 0, 800), +(2567, 4230101, 1002628, 1, 1, 0, 1500), +(2568, 4230101, 2044314, 1, 1, 0, 300), +(2569, 4230101, 4130000, 1, 1, 0, 6000), +(2570, 4230101, 4130005, 1, 1, 0, 6000), +(2571, 4230101, 4130012, 1, 1, 0, 6000), +(2572, 4230102, 4000036, 1, 1, 0, 600000), +(2573, 4230102, 4004004, 1, 1, 0, 10000), +(2574, 4230102, 2000002, 1, 1, 0, 20000), +(2575, 4230102, 2000004, 1, 1, 0, 20000), +(2576, 4230102, 2000003, 1, 1, 0, 20000), +(2577, 4230102, 4010001, 1, 1, 0, 9000), +(2578, 4230102, 4020000, 1, 1, 0, 9000), +(2579, 4230102, 1302013, 1, 1, 0, 700), +(2580, 4230102, 4006001, 1, 1, 0, 10000), +(2581, 4230102, 1032008, 1, 1, 0, 1000), +(2582, 4230102, 1060050, 1, 1, 0, 800), +(2583, 4230102, 1040061, 1, 1, 0, 800), +(2584, 4230102, 1040085, 1, 1, 0, 800), +(2585, 4230102, 1060074, 1, 1, 0, 800), +(2586, 4230102, 1002099, 1, 1, 0, 1500), +(2587, 4230102, 1002207, 1, 1, 0, 1500), +(2588, 4230102, 1002211, 1, 1, 0, 1500), +(2589, 4230102, 1002215, 1, 1, 0, 1500), +(2590, 4230102, 1002212, 1, 1, 0, 1500), +(2591, 4230102, 1082066, 1, 1, 0, 1000); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(2592, 4230102, 1072141, 1, 1, 0, 800), +(2593, 4230102, 1072303, 1, 1, 0, 800), +(2594, 4230102, 2330002, 1, 1, 0, 500), +(2595, 4230102, 2040026, 1, 1, 0, 300), +(2596, 4230102, 4130007, 1, 1, 0, 6000), +(2597, 4230102, 4130008, 1, 1, 0, 6000), +(2598, 4230103, 4000039, 1, 1, 0, 600000), +(2599, 4230103, 2000002, 1, 1, 0, 20000), +(2600, 4230103, 2000003, 1, 1, 0, 20000), +(2601, 4230103, 4020005, 1, 1, 0, 9000), +(2602, 4230103, 4010003, 1, 1, 0, 9000), +(2603, 4230103, 2000004, 1, 1, 0, 20000), +(2604, 4230103, 2060000, 1, 1, 0, 30000), +(2605, 4230103, 2061000, 1, 1, 0, 30000), +(2606, 4230103, 1332001, 1, 1, 0, 500), +(2607, 4230103, 1312006, 1, 1, 0, 700), +(2608, 4230103, 1002179, 1, 1, 0, 1500), +(2609, 4230103, 1092014, 1, 1, 0, 700), +(2610, 4230103, 1072121, 1, 1, 0, 800), +(2611, 4230103, 1072114, 1, 1, 0, 800), +(2612, 4230103, 1082076, 1, 1, 0, 1000), +(2613, 4230103, 1002151, 1, 1, 0, 1500), +(2614, 4230103, 1051034, 1, 1, 0, 700), +(2615, 4230103, 1472019, 1, 1, 0, 500), +(2616, 4230103, 1322017, 1, 1, 0, 700), +(2617, 4230103, 1050051, 1, 1, 0, 700), +(2618, 4230103, 2040027, 1, 1, 0, 300), +(2619, 4230103, 4130007, 1, 1, 0, 6000), +(2620, 4230103, 4130008, 1, 1, 0, 6000), +(2621, 4230104, 4000044, 1, 1, 0, 600000), +(2622, 4230104, 2000004, 1, 1, 0, 20000), +(2623, 4230104, 2000003, 1, 1, 0, 20000), +(2624, 4230104, 4010003, 1, 1, 0, 9000), +(2625, 4230104, 4020002, 1, 1, 0, 9000), +(2626, 4230104, 1302016, 1, 1, 0, 700), +(2627, 4230104, 2043201, 1, 1, 0, 300), +(2628, 4230104, 1040083, 1, 1, 0, 800), +(2629, 4230104, 1060072, 1, 1, 0, 800), +(2630, 4230104, 1061081, 1, 1, 0, 800), +(2631, 4230104, 1041082, 1, 1, 0, 800), +(2632, 4230104, 1002025, 1, 1, 0, 1500), +(2633, 4230104, 1382001, 1, 1, 0, 700), +(2634, 4230104, 1002217, 1, 1, 0, 1500), +(2635, 4230104, 1002085, 1, 1, 0, 1500), +(2636, 4230104, 1041087, 1, 1, 0, 800), +(2637, 4230104, 1061086, 1, 1, 0, 800), +(2638, 4230104, 1060084, 1, 1, 0, 800), +(2639, 4230104, 1040095, 1, 1, 0, 800), +(2640, 4230104, 1412003, 1, 1, 0, 700), +(2641, 4230104, 1482007, 1, 1, 0, 500), +(2642, 4230104, 2040427, 1, 1, 0, 300), +(2643, 4230104, 4130005, 1, 1, 0, 6000), +(2644, 4230104, 4130015, 1, 1, 0, 6000), +(2645, 4230104, 4130017, 1, 1, 0, 6000), +(2646, 4230105, 4000058, 1, 1, 0, 600000), +(2647, 4230105, 2041011, 1, 1, 0, 300), +(2648, 4230105, 2000002, 1, 1, 0, 20000), +(2649, 4230105, 2000003, 1, 1, 0, 20000), +(2650, 4230105, 4020003, 1, 1, 0, 9000), +(2651, 4230105, 4010000, 1, 1, 0, 9000), +(2652, 4230105, 4004003, 1, 1, 0, 10000), +(2653, 4230105, 2041001, 1, 1, 0, 300), +(2654, 4230105, 1332020, 1, 1, 0, 500), +(2655, 4230105, 1072103, 1, 1, 0, 800), +(2656, 4230105, 1002182, 1, 1, 0, 1500), +(2657, 4230105, 1002098, 1, 1, 0, 1500), +(2658, 4230105, 1041083, 1, 1, 0, 800), +(2659, 4230105, 1061082, 1, 1, 0, 800), +(2660, 4230105, 1040083, 1, 1, 0, 800), +(2661, 4230105, 1060072, 1, 1, 0, 800), +(2662, 4230105, 1382019, 1, 1, 0, 700), +(2663, 4230105, 1472015, 1, 1, 0, 500), +(2664, 4230105, 1050048, 1, 1, 0, 700), +(2665, 4230105, 1051038, 1, 1, 0, 700), +(2666, 4230105, 1082011, 1, 1, 0, 1000), +(2667, 4230105, 1072130, 1, 1, 0, 800), +(2668, 4230105, 2022039, 1, 1, 0, 20000), +(2669, 4230105, 4130004, 1, 1, 0, 6000), +(2670, 4230105, 4130013, 1, 1, 0, 6000), +(2671, 4230106, 4000060, 1, 1, 0, 600000), +(2672, 4230106, 4003004, 1, 1, 0, 200000), +(2673, 4230106, 2000002, 1, 1, 0, 20000), +(2674, 4230106, 2000003, 1, 1, 0, 20000), +(2675, 4230106, 4020005, 1, 1, 0, 9000), +(2676, 4230106, 4010004, 1, 1, 0, 9000), +(2677, 4230106, 4004001, 1, 1, 0, 10000), +(2678, 4230106, 2060000, 1, 1, 0, 30000), +(2679, 4230106, 2061000, 1, 1, 0, 30000), +(2680, 4230106, 1302016, 1, 1, 0, 700), +(2681, 4230106, 2070002, 1, 1, 0, 500), +(2682, 4230106, 4006000, 1, 1, 0, 10000), +(2683, 4230106, 2040705, 1, 1, 0, 300), +(2684, 4230106, 1082036, 1, 1, 0, 1000), +(2685, 4230106, 1082045, 1, 1, 0, 1000), +(2686, 4230106, 1040081, 1, 1, 0, 800), +(2687, 4230106, 1060070, 1, 1, 0, 800), +(2688, 4230106, 1060075, 1, 1, 0, 800), +(2689, 4230106, 1040086, 1, 1, 0, 800), +(2690, 4230106, 1072118, 1, 1, 0, 800), +(2691, 4230106, 1051032, 1, 1, 0, 700), +(2692, 4230106, 1002216, 1, 1, 0, 1500), +(2693, 4230106, 1002210, 1, 1, 0, 1500), +(2694, 4230106, 1041080, 1, 1, 0, 800), +(2695, 4230106, 1061079, 1, 1, 0, 800), +(2696, 4230106, 1050052, 1, 1, 0, 700), +(2697, 4230106, 1002628, 1, 1, 0, 1500), +(2698, 4230106, 2040319, 1, 1, 0, 300), +(2699, 4230106, 2044114, 1, 1, 0, 300), +(2700, 4230106, 2044214, 1, 1, 0, 300), +(2701, 4230106, 4130003, 1, 1, 0, 6000), +(2702, 4230106, 4130007, 1, 1, 0, 6000), +(2703, 4230106, 4130009, 1, 1, 0, 6000), +(2704, 4230107, 4000076, 1, 1, 0, 600000), +(2705, 4230107, 2000002, 1, 1, 0, 20000), +(2706, 4230107, 2000003, 1, 1, 0, 20000), +(2707, 4230107, 4003004, 1, 1, 0, 200000), +(2708, 4230107, 4010005, 1, 1, 0, 9000), +(2709, 4230107, 4020004, 1, 1, 0, 9000), +(2710, 4230107, 1332020, 1, 1, 0, 500), +(2711, 4230107, 2043202, 1, 1, 0, 300), +(2712, 4230107, 2041014, 1, 1, 0, 300), +(2713, 4230107, 4004002, 1, 1, 0, 10000), +(2714, 4230107, 4006000, 1, 1, 0, 10000), +(2715, 4230107, 4020007, 1, 1, 0, 9000), +(2716, 4230107, 1040030, 1, 1, 0, 800), +(2717, 4230107, 1060020, 1, 1, 0, 800), +(2718, 4230107, 1060061, 1, 1, 0, 800), +(2719, 4230107, 1040072, 1, 1, 0, 800), +(2720, 4230107, 1050035, 1, 1, 0, 700), +(2721, 4230107, 1060071, 1, 1, 0, 800), +(2722, 4230107, 1040082, 1, 1, 0, 800), +(2723, 4230107, 1082072, 1, 1, 0, 1000), +(2724, 4230107, 1082063, 1, 1, 0, 1000), +(2725, 4230107, 1051030, 1, 1, 0, 700), +(2726, 4230107, 1072134, 1, 1, 0, 800), +(2727, 4230107, 1072129, 1, 1, 0, 800), +(2728, 4230107, 1452008, 1, 1, 0, 500), +(2729, 4230107, 4130005, 1, 1, 0, 6000), +(2730, 4230107, 4130015, 1, 1, 0, 6000), +(2731, 4230108, 4000078, 1, 1, 0, 600000), +(2732, 4230108, 2000002, 1, 1, 0, 20000), +(2733, 4230108, 2000003, 1, 1, 0, 20000), +(2734, 4230108, 4010001, 1, 1, 0, 9000), +(2735, 4230108, 4020006, 1, 1, 0, 9000), +(2736, 4230108, 4004003, 1, 1, 0, 10000), +(2737, 4230108, 4000021, 1, 1, 0, 50000), +(2738, 4230108, 4003004, 1, 1, 0, 200000), +(2739, 4230108, 2041017, 1, 1, 0, 300), +(2740, 4230108, 2070002, 1, 1, 0, 500), +(2741, 4230108, 1432008, 1, 1, 0, 500), +(2742, 4230108, 2060000, 1, 1, 0, 30000), +(2743, 4230108, 2061000, 1, 1, 0, 30000), +(2744, 4230108, 1050031, 1, 1, 0, 700), +(2745, 4230108, 1072113, 1, 1, 0, 800), +(2746, 4230108, 1072108, 1, 1, 0, 800), +(2747, 4230108, 1082073, 1, 1, 0, 1000), +(2748, 4230108, 1422007, 1, 1, 0, 700), +(2749, 4230108, 1041082, 1, 1, 0, 800), +(2750, 4230108, 1061081, 1, 1, 0, 800), +(2751, 4230108, 1472018, 1, 1, 0, 500), +(2752, 4230108, 1442005, 1, 1, 0, 700), +(2753, 4230108, 1002209, 1, 1, 0, 1500), +(2754, 4230108, 1002218, 1, 1, 0, 1500), +(2755, 4230108, 1002086, 1, 1, 0, 1500), +(2756, 4230108, 2040623, 1, 1, 0, 300), +(2757, 4230108, 4130010, 1, 1, 0, 6000), +(2758, 4230108, 4130011, 1, 1, 0, 6000), +(2759, 4230109, 4000101, 1, 1, 0, 600000), +(2760, 4230109, 2060000, 1, 1, 0, 30000), +(2761, 4230109, 2061000, 1, 1, 0, 30000), +(2762, 4230109, 4010001, 1, 1, 0, 9000), +(2763, 4230109, 4004002, 1, 1, 0, 10000), +(2764, 4230109, 2000002, 1, 1, 0, 20000), +(2765, 4230109, 2000003, 1, 1, 0, 20000), +(2766, 4230109, 2040901, 1, 1, 0, 300), +(2767, 4230109, 1032018, 1, 1, 0, 1000), +(2768, 4230109, 1402002, 1, 1, 0, 700), +(2769, 4230109, 1002180, 1, 1, 0, 1500), +(2770, 4230109, 1082070, 1, 1, 0, 1000), +(2771, 4230109, 1051024, 1, 1, 0, 700), +(2772, 4230109, 1002154, 1, 1, 0, 1500), +(2773, 4230109, 1002167, 1, 1, 0, 1500), +(2774, 4230109, 1472017, 1, 1, 0, 500), +(2775, 4230109, 1072117, 1, 1, 0, 800), +(2776, 4230109, 1040087, 1, 1, 0, 800), +(2777, 4230109, 1060076, 1, 1, 0, 800), +(2778, 4230109, 1462007, 1, 1, 0, 500), +(2779, 4230109, 1092004, 1, 1, 0, 700), +(2780, 4230109, 1482006, 1, 1, 0, 500), +(2781, 4230109, 2043212, 1, 1, 0, 300), +(2782, 4230109, 2044414, 1, 1, 0, 300), +(2783, 4230109, 4130000, 1, 1, 0, 6000), +(2784, 4230109, 4130005, 1, 1, 0, 6000), +(2785, 4230109, 4130014, 1, 1, 0, 6000), +(2786, 4230110, 4000102, 1, 1, 0, 600000), +(2787, 4230110, 2060000, 1, 1, 0, 30000), +(2788, 4230110, 2061000, 1, 1, 0, 30000), +(2789, 4230110, 4020008, 1, 1, 0, 9000), +(2790, 4230110, 4004000, 1, 1, 0, 10000), +(2791, 4230110, 2000002, 1, 1, 0, 20000), +(2792, 4230110, 2000004, 1, 1, 0, 20000), +(2793, 4230110, 2040504, 1, 1, 0, 300), +(2794, 4230110, 2044002, 1, 1, 0, 300), +(2795, 4230110, 2044301, 1, 1, 0, 300), +(2796, 4230110, 1302013, 1, 1, 0, 700), +(2797, 4230110, 1002004, 1, 1, 0, 1500), +(2798, 4230110, 1041067, 1, 1, 0, 800), +(2799, 4230110, 1061062, 1, 1, 0, 800), +(2800, 4230110, 1002144, 1, 1, 0, 1500), +(2801, 4230110, 1002170, 1, 1, 0, 1500), +(2802, 4230110, 1002181, 1, 1, 0, 1500), +(2803, 4230110, 1040082, 1, 1, 0, 800), +(2804, 4230110, 1060071, 1, 1, 0, 800), +(2805, 4230110, 1061083, 1, 1, 0, 800), +(2806, 4230110, 1041084, 1, 1, 0, 800), +(2807, 4230110, 1040088, 1, 1, 0, 800), +(2808, 4230110, 1060077, 1, 1, 0, 800), +(2809, 4230110, 1082081, 1, 1, 0, 1000), +(2810, 4230110, 1082083, 1, 1, 0, 1000), +(2811, 4230110, 1072135, 1, 1, 0, 800), +(2812, 4230110, 1082195, 1, 1, 0, 1000), +(2813, 4230110, 2044902, 1, 1, 0, 300), +(2814, 4230110, 2040618, 1, 1, 0, 300), +(2815, 4230110, 2040627, 1, 1, 0, 300), +(2816, 4230110, 2040931, 1, 1, 0, 300), +(2817, 4230110, 2044014, 1, 1, 0, 300), +(2818, 4230110, 4130002, 1, 1, 0, 6000), +(2819, 4230110, 4130010, 1, 1, 0, 6000), +(2820, 4230110, 4130011, 1, 1, 0, 6000), +(2821, 4230111, 4000111, 1, 1, 0, 600000), +(2822, 4230111, 2060000, 1, 1, 0, 30000), +(2823, 4230111, 2061000, 1, 1, 0, 30000), +(2824, 4230111, 4010002, 1, 1, 0, 9000), +(2825, 4230111, 4010004, 1, 1, 0, 9000), +(2826, 4230111, 4004001, 1, 1, 0, 10000), +(2827, 4230111, 2000002, 1, 1, 0, 20000), +(2828, 4230111, 2000003, 1, 1, 0, 20000), +(2829, 4230111, 2040602, 1, 1, 0, 300), +(2830, 4230111, 2043302, 1, 1, 0, 300), +(2831, 4230111, 1041051, 1, 1, 0, 800), +(2832, 4230111, 1061047, 1, 1, 0, 800), +(2833, 4230111, 1051007, 1, 1, 0, 700), +(2834, 4230111, 1050021, 1, 1, 0, 700), +(2835, 4230111, 1002021, 1, 1, 0, 1500), +(2836, 4230111, 1002153, 1, 1, 0, 1500), +(2837, 4230111, 1002168, 1, 1, 0, 1500), +(2838, 4230111, 1072116, 1, 1, 0, 800), +(2839, 4230111, 1072127, 1, 1, 0, 800), +(2840, 4230111, 1072123, 1, 1, 0, 800), +(2841, 4230111, 1302010, 1, 1, 0, 700), +(2842, 4230111, 1472018, 1, 1, 0, 500), +(2843, 4230111, 1002628, 1, 1, 0, 1500), +(2844, 4230111, 2040926, 1, 1, 0, 300), +(2845, 4230111, 2044010, 1, 1, 0, 300), +(2846, 4230111, 4130003, 1, 1, 0, 6000), +(2847, 4230111, 4130006, 1, 1, 0, 6000), +(2848, 4230111, 4130015, 1, 1, 0, 6000), +(2849, 4230112, 4000112, 1, 1, 0, 600000), +(2850, 4230112, 2060000, 1, 1, 0, 30000), +(2851, 4230112, 2061000, 1, 1, 0, 30000), +(2852, 4230112, 4004001, 1, 1, 0, 10000), +(2853, 4230112, 2002008, 1, 1, 0, 20000), +(2854, 4230112, 2000002, 1, 1, 0, 20000), +(2855, 4230112, 2000004, 1, 1, 0, 20000), +(2856, 4230112, 2040004, 1, 1, 0, 300), +(2857, 4230112, 2040502, 1, 1, 0, 300), +(2858, 4230112, 1302016, 1, 1, 0, 700), +(2859, 4230112, 1302010, 1, 1, 0, 700), +(2860, 4230112, 1072101, 1, 1, 0, 800), +(2861, 4230112, 1051026, 1, 1, 0, 700), +(2862, 4230112, 1072000, 1, 1, 0, 800), +(2863, 4230112, 1072110, 1, 1, 0, 800), +(2864, 4230112, 1082025, 1, 1, 0, 1000), +(2865, 4230112, 1002169, 1, 1, 0, 1500), +(2866, 4230112, 1472020, 1, 1, 0, 500), +(2867, 4230112, 1412003, 1, 1, 0, 700), +(2868, 4230112, 1402003, 1, 1, 0, 700), +(2869, 4230112, 1040097, 1, 1, 0, 800), +(2870, 4230112, 1060086, 1, 1, 0, 800), +(2871, 4230112, 1002214, 1, 1, 0, 1500), +(2872, 4230112, 1492007, 1, 1, 0, 500), +(2873, 4230112, 2049000, 1, 1, 0, 150), +(2874, 4230112, 4130003, 1, 1, 0, 6000), +(2875, 4230112, 4130010, 1, 1, 0, 6000), +(2876, 4230113, 4000114, 1, 1, 0, 600000), +(2877, 4230113, 2060000, 1, 1, 0, 30000), +(2878, 4230113, 2061000, 1, 1, 0, 30000), +(2879, 4230113, 4010003, 1, 1, 0, 9000), +(2880, 4230113, 4004003, 1, 1, 0, 10000), +(2881, 4230113, 2000002, 1, 1, 0, 20000), +(2882, 4230113, 2000003, 1, 1, 0, 20000), +(2883, 4230113, 1382019, 1, 1, 0, 700), +(2884, 4230113, 2040401, 1, 1, 0, 300), +(2885, 4230113, 2044701, 1, 1, 0, 300), +(2886, 4230113, 1002047, 1, 1, 0, 1500), +(2887, 4230113, 1002139, 1, 1, 0, 1500), +(2888, 4230113, 1002142, 1, 1, 0, 1500), +(2889, 4230113, 1040061, 1, 1, 0, 800), +(2890, 4230113, 1060050, 1, 1, 0, 800), +(2891, 4230113, 1051025, 1, 1, 0, 700), +(2892, 4230113, 1082071, 1, 1, 0, 1000), +(2893, 4230113, 1082023, 1, 1, 0, 1000), +(2894, 4230113, 1072108, 1, 1, 0, 800), +(2895, 4230113, 1032018, 1, 1, 0, 1000), +(2896, 4230113, 1372007, 1, 1, 0, 700), +(2897, 4230113, 1332016, 1, 1, 0, 500), +(2898, 4230113, 1322017, 1, 1, 0, 700), +(2899, 4230113, 1052113, 1, 1, 0, 700), +(2900, 4230113, 4130008, 1, 1, 0, 6000), +(2901, 4230113, 4130013, 1, 1, 0, 6000), +(2902, 4230113, 4130017, 1, 1, 0, 6000), +(2903, 4230114, 4000115, 1, 1, 0, 600000), +(2904, 4230114, 2060000, 1, 1, 0, 30000), +(2905, 4230114, 2061000, 1, 1, 0, 30000), +(2906, 4230114, 4020007, 1, 1, 0, 9000), +(2907, 4230114, 2002010, 1, 1, 0, 20000), +(2908, 4230114, 4004000, 1, 1, 0, 10000), +(2909, 4230114, 2000002, 1, 1, 0, 20000), +(2910, 4230114, 2000003, 1, 1, 0, 20000), +(2911, 4230114, 2040804, 1, 1, 0, 300), +(2912, 4230114, 1402007, 1, 1, 0, 700), +(2913, 4230114, 1092029, 1, 1, 0, 700), +(2914, 4230114, 1002176, 1, 1, 0, 1500), +(2915, 4230114, 1002143, 1, 1, 0, 1500), +(2916, 4230114, 1040076, 1, 1, 0, 800), +(2917, 4230114, 1060065, 1, 1, 0, 800), +(2918, 4230114, 1050036, 1, 1, 0, 700), +(2919, 4230114, 1040085, 1, 1, 0, 800), +(2920, 4230114, 1060074, 1, 1, 0, 800), +(2921, 4230114, 1082074, 1, 1, 0, 1000), +(2922, 4230114, 1072116, 1, 1, 0, 800), +(2923, 4230114, 1092013, 1, 1, 0, 700), +(2924, 4230114, 1432004, 1, 1, 0, 500), +(2925, 4230114, 1312008, 1, 1, 0, 700), +(2926, 4230114, 1052113, 1, 1, 0, 700), +(2927, 4230114, 4130006, 1, 1, 0, 6000), +(2928, 4230114, 4130016, 1, 1, 0, 6000), +(2929, 4230114, 4130017, 1, 1, 0, 6000), +(2930, 4230115, 4000115, 1, 1, 0, 600000), +(2931, 4230115, 2060000, 1, 1, 0, 30000), +(2932, 4230115, 2061000, 1, 1, 0, 30000), +(2933, 4230115, 2002010, 1, 1, 0, 20000), +(2934, 4230115, 4020000, 1, 1, 0, 9000), +(2935, 4230115, 4020006, 1, 1, 0, 9000), +(2936, 4230115, 4004003, 1, 1, 0, 10000), +(2937, 4230115, 2000002, 1, 1, 0, 20000), +(2938, 4230115, 2000004, 1, 1, 0, 20000), +(2939, 4230115, 2043802, 1, 1, 0, 300), +(2940, 4230115, 2044102, 1, 1, 0, 300), +(2941, 4230115, 4006001, 1, 1, 0, 10000), +(2942, 4230115, 2070004, 1, 1, 0, 500), +(2943, 4230115, 1082069, 1, 1, 0, 1000), +(2944, 4230115, 1072000, 1, 1, 0, 800), +(2945, 4230115, 1072118, 1, 1, 0, 800), +(2946, 4230115, 1060069, 1, 1, 0, 800), +(2947, 4230115, 1040079, 1, 1, 0, 800), +(2948, 4230115, 1050049, 1, 1, 0, 700), +(2949, 4230115, 1041088, 1, 1, 0, 800), +(2950, 4230115, 1061087, 1, 1, 0, 800), +(2951, 4230115, 1082065, 1, 1, 0, 1000), +(2952, 4230115, 1072141, 1, 1, 0, 800), +(2953, 4230115, 1422005, 1, 1, 0, 700), +(2954, 4230115, 1472021, 1, 1, 0, 500), +(2955, 4230115, 1482007, 1, 1, 0, 500), +(2956, 4230115, 2040029, 1, 1, 0, 300), +(2957, 4230115, 2040617, 1, 1, 0, 300), +(2958, 4230115, 2040931, 1, 1, 0, 300), +(2959, 4230115, 2044214, 1, 1, 0, 300), +(2960, 4230115, 4130011, 1, 1, 0, 6000), +(2961, 4230115, 4130015, 1, 1, 0, 6000), +(2962, 4230115, 4130016, 1, 1, 0, 6000), +(2963, 4230116, 4000117, 1, 1, 0, 600000), +(2964, 4230116, 2002009, 1, 1, 0, 20000), +(2965, 4230116, 2000002, 1, 1, 0, 20000), +(2966, 4230116, 2000003, 1, 1, 0, 20000), +(2967, 4230116, 4010001, 1, 1, 0, 9000), +(2968, 4230116, 4010004, 1, 1, 0, 9000), +(2969, 4230116, 4004002, 1, 1, 0, 10000), +(2970, 4230116, 2041005, 1, 1, 0, 300), +(2971, 4230116, 1302016, 1, 1, 0, 700), +(2972, 4230116, 2060000, 1, 1, 0, 30000), +(2973, 4230116, 2061000, 1, 1, 0, 30000), +(2974, 4230116, 4020007, 1, 1, 0, 9000), +(2975, 4230116, 1372001, 1, 1, 0, 700), +(2976, 4230116, 1322015, 1, 1, 0, 700), +(2977, 4230116, 1402006, 1, 1, 0, 700), +(2978, 4230116, 1092007, 1, 1, 0, 700), +(2979, 4230116, 1072109, 1, 1, 0, 800), +(2980, 4230116, 1072120, 1, 1, 0, 800), +(2981, 4230116, 1082062, 1, 1, 0, 1000), +(2982, 4230116, 1040084, 1, 1, 0, 800), +(2983, 4230116, 1060073, 1, 1, 0, 800), +(2984, 4230116, 1050047, 1, 1, 0, 700), +(2985, 4230116, 1002211, 1, 1, 0, 1500), +(2986, 4230116, 1002028, 1, 1, 0, 1500), +(2987, 4230116, 1082195, 1, 1, 0, 1000), +(2988, 4230116, 4130007, 1, 1, 0, 6000), +(2989, 4230116, 4130017, 1, 1, 0, 6000), +(2990, 4230117, 4000118, 1, 1, 0, 600000), +(2991, 4230117, 4010003, 1, 1, 0, 9000), +(2992, 4230117, 4020007, 1, 1, 0, 9000), +(2993, 4230117, 2002007, 1, 1, 0, 20000), +(2994, 4230117, 4004000, 1, 1, 0, 10000), +(2995, 4230117, 2000002, 1, 1, 0, 20000), +(2996, 4230117, 2000003, 1, 1, 0, 20000), +(2997, 4230117, 2040707, 1, 1, 0, 300), +(2998, 4230117, 2060000, 1, 1, 0, 30000), +(2999, 4230117, 2061000, 1, 1, 0, 30000), +(3000, 4230117, 1092020, 1, 1, 0, 700), +(3001, 4230117, 2070002, 1, 1, 0, 500), +(3002, 4230117, 1082047, 1, 1, 0, 1000), +(3003, 4230117, 1082008, 1, 1, 0, 1000), +(3004, 4230117, 1041085, 1, 1, 0, 800), +(3005, 4230117, 1061084, 1, 1, 0, 800), +(3006, 4230117, 1060068, 1, 1, 0, 800), +(3007, 4230117, 1040080, 1, 1, 0, 800), +(3008, 4230117, 1050049, 1, 1, 0, 700), +(3009, 4230117, 1002208, 1, 1, 0, 1500), +(3010, 4230117, 1002212, 1, 1, 0, 1500), +(3011, 4230117, 1002217, 1, 1, 0, 1500), +(3012, 4230117, 1312008, 1, 1, 0, 700), +(3013, 4230117, 1332003, 1, 1, 0, 500), +(3014, 4230117, 1492006, 1, 1, 0, 500), +(3015, 4230117, 4130009, 1, 1, 0, 6000), +(3016, 4230117, 4130010, 1, 1, 0, 6000), +(3017, 4230118, 4000119, 1, 1, 0, 600000), +(3018, 4230118, 2002009, 1, 1, 0, 20000), +(3019, 4230118, 4010002, 1, 1, 0, 9000), +(3020, 4230118, 4020006, 1, 1, 0, 9000), +(3021, 4230118, 4004001, 1, 1, 0, 10000), +(3022, 4230118, 2040802, 1, 1, 0, 300), +(3023, 4230118, 2000002, 1, 1, 0, 20000), +(3024, 4230118, 2000004, 1, 1, 0, 20000), +(3025, 4230118, 2060000, 1, 1, 0, 30000), +(3026, 4230118, 2061000, 1, 1, 0, 30000), +(3027, 4230118, 2070004, 1, 1, 0, 500), +(3028, 4230118, 1041068, 1, 1, 0, 800), +(3029, 4230118, 1061063, 1, 1, 0, 800), +(3030, 4230118, 1050038, 1, 1, 0, 700), +(3031, 4230118, 1002155, 1, 1, 0, 1500), +(3032, 4230118, 1061070, 1, 1, 0, 800), +(3033, 4230118, 1041075, 1, 1, 0, 800), +(3034, 4230118, 1082024, 1, 1, 0, 1000), +(3035, 4230118, 1040000, 1, 1, 0, 800), +(3036, 4230118, 1060075, 1, 1, 0, 800), +(3037, 4230118, 1002024, 1, 1, 0, 1500), +(3038, 4230118, 1032012, 1, 1, 0, 1000), +(3039, 4230118, 1072143, 1, 1, 0, 800), +(3040, 4230118, 1422005, 1, 1, 0, 700), +(3041, 4230118, 1472021, 1, 1, 0, 500), +(3042, 4230118, 1072300, 1, 1, 0, 800), +(3043, 4230118, 2040031, 1, 1, 0, 300), +(3044, 4230118, 2040931, 1, 1, 0, 300), +(3045, 4230118, 4130004, 1, 1, 0, 6000), +(3046, 4230119, 4000120, 1, 1, 0, 600000), +(3047, 4230119, 2000002, 1, 1, 0, 20000), +(3048, 4230119, 2002006, 1, 1, 0, 20000), +(3049, 4230119, 2000003, 1, 1, 0, 20000), +(3050, 4230119, 4020002, 1, 1, 0, 9000), +(3051, 4230119, 4010005, 1, 1, 0, 9000), +(3052, 4230119, 4004003, 1, 1, 0, 10000), +(3053, 4230119, 2040804, 1, 1, 0, 300), +(3054, 4230119, 2060000, 1, 1, 0, 30000), +(3055, 4230119, 2061000, 1, 1, 0, 30000), +(3056, 4230119, 4131004, 1, 1, 0, 6000), +(3057, 4230119, 1092019, 1, 1, 0, 700), +(3058, 4230119, 1002178, 1, 1, 0, 1500), +(3059, 4230119, 1051016, 1, 1, 0, 700), +(3060, 4230119, 1082068, 1, 1, 0, 1000), +(3061, 4230119, 1072002, 1, 1, 0, 800), +(3062, 4230119, 1050035, 1, 1, 0, 700), +(3063, 4230119, 1041075, 1, 1, 0, 800), +(3064, 4230119, 1061070, 1, 1, 0, 800), +(3065, 4230119, 1061083, 1, 1, 0, 800), +(3066, 4230119, 1041084, 1, 1, 0, 800), +(3067, 4230119, 1082080, 1, 1, 0, 1000), +(3068, 4230119, 1072124, 1, 1, 0, 800), +(3069, 4230119, 1082067, 1, 1, 0, 1000), +(3070, 4230119, 1082195, 1, 1, 0, 1000), +(3071, 4230119, 2330001, 1, 1, 0, 500), +(3072, 4230119, 2044110, 1, 1, 0, 300), +(3073, 4230119, 4130001, 1, 1, 0, 6000), +(3074, 4230119, 4130006, 1, 1, 0, 6000), +(3075, 4230120, 4000121, 1, 1, 0, 600000), +(3076, 4230120, 4131004, 1, 1, 0, 6000), +(3077, 4230120, 4020003, 1, 1, 0, 9000), +(3078, 4230120, 4004001, 1, 1, 0, 10000), +(3079, 4230120, 2040804, 1, 1, 0, 300), +(3080, 4230120, 2000002, 1, 1, 0, 20000), +(3081, 4230120, 2000004, 1, 1, 0, 20000), +(3082, 4230120, 2060000, 1, 1, 0, 30000), +(3083, 4230120, 2061000, 1, 1, 0, 30000), +(3084, 4230120, 4006001, 1, 1, 0, 10000), +(3085, 4230120, 1002141, 1, 1, 0, 1500), +(3086, 4230120, 1002135, 1, 1, 0, 1500), +(3087, 4230120, 1041086, 1, 1, 0, 800), +(3088, 4230120, 1061085, 1, 1, 0, 800), +(3089, 4230120, 1061080, 1, 1, 0, 800), +(3090, 4230120, 1041081, 1, 1, 0, 800), +(3091, 4230120, 1040084, 1, 1, 0, 800), +(3092, 4230120, 1061071, 1, 1, 0, 800), +(3093, 4230120, 1051030, 1, 1, 0, 700), +(3094, 4230120, 1051039, 1, 1, 0, 700), +(3095, 4230120, 1082084, 1, 1, 0, 1000), +(3096, 4230120, 1072131, 1, 1, 0, 800), +(3097, 4230120, 1432004, 1, 1, 0, 500), +(3098, 4230120, 1452008, 1, 1, 0, 500), +(3099, 4230120, 1482007, 1, 1, 0, 500), +(3100, 4230120, 2040324, 1, 1, 0, 300), +(3101, 4230120, 2040530, 1, 1, 0, 300), +(3102, 4230120, 4130001, 1, 1, 0, 6000), +(3103, 4230120, 4130002, 1, 1, 0, 6000), +(3104, 4230121, 4000122, 1, 1, 0, 600000), +(3105, 4230121, 4131012, 1, 1, 0, 6000), +(3106, 4230121, 4020004, 1, 1, 0, 9000), +(3107, 4230121, 4020005, 1, 1, 0, 9000), +(3108, 4230121, 4004000, 1, 1, 0, 10000), +(3109, 4230121, 2043802, 1, 1, 0, 300), +(3110, 4230121, 2000002, 1, 1, 0, 20000), +(3111, 4230121, 2000004, 1, 1, 0, 20000), +(3112, 4230121, 2060000, 1, 1, 0, 30000), +(3113, 4230121, 2061000, 1, 1, 0, 30000), +(3114, 4230121, 1041053, 1, 1, 0, 800), +(3115, 4230121, 1061049, 1, 1, 0, 800), +(3116, 4230121, 1051015, 1, 1, 0, 700), +(3117, 4230121, 1082047, 1, 1, 0, 1000), +(3118, 4230121, 1051024, 1, 1, 0, 700), +(3119, 4230121, 1002155, 1, 1, 0, 1500), +(3120, 4230121, 1002184, 1, 1, 0, 1500), +(3121, 4230121, 1082072, 1, 1, 0, 1000), +(3122, 4230121, 1372007, 1, 1, 0, 700), +(3123, 4230121, 1040089, 1, 1, 0, 800), +(3124, 4230121, 1060078, 1, 1, 0, 800), +(3125, 4230121, 1061076, 1, 1, 0, 800), +(3126, 4230121, 1041077, 1, 1, 0, 800), +(3127, 4230121, 1412003, 1, 1, 0, 700), +(3128, 4230121, 1082198, 1, 1, 0, 1000), +(3129, 4230121, 2044901, 1, 1, 0, 300), +(3130, 4230121, 4130000, 1, 1, 0, 6000), +(3131, 4230121, 4130006, 1, 1, 0, 6000), +(3132, 4230121, 4130013, 1, 1, 0, 6000), +(3133, 4230123, 4000156, 1, 1, 0, 600000), +(3134, 4230123, 2000002, 1, 1, 0, 20000), +(3135, 4230123, 2000003, 1, 1, 0, 20000), +(3136, 4230123, 4000157, 1, 1, 0, 100000), +(3137, 4230123, 4020008, 1, 1, 0, 9000), +(3138, 4230123, 4020004, 1, 1, 0, 9000), +(3139, 4230123, 4004003, 1, 1, 0, 10000), +(3140, 4230123, 4003004, 1, 1, 0, 200000), +(3141, 4230123, 2048004, 1, 1, 0, 300), +(3142, 4230123, 2070002, 1, 1, 0, 500), +(3143, 4230123, 2044501, 1, 1, 0, 300), +(3144, 4230123, 1442009, 1, 1, 0, 700), +(3145, 4230123, 2060000, 1, 1, 0, 30000), +(3146, 4230123, 2061000, 1, 1, 0, 30000), +(3147, 4230123, 1452008, 1, 1, 0, 500), +(3148, 4230123, 1002024, 1, 1, 0, 1500), +(3149, 4230123, 1472017, 1, 1, 0, 500), +(3150, 4230123, 1041083, 1, 1, 0, 800), +(3151, 4230123, 1061082, 1, 1, 0, 800), +(3152, 4230123, 1082198, 1, 1, 0, 1000), +(3153, 4230123, 2044801, 1, 1, 0, 300), +(3154, 4230123, 2044805, 1, 1, 0, 300), +(3155, 4230123, 4130008, 1, 1, 0, 6000), +(3156, 4230124, 4000155, 1, 1, 0, 600000), +(3157, 4230124, 2000002, 1, 1, 0, 20000), +(3158, 4230124, 2000003, 1, 1, 0, 20000), +(3159, 4230124, 4000157, 1, 1, 0, 100000), +(3160, 4230124, 4010006, 1, 1, 0, 9000), +(3161, 4230124, 4020007, 1, 1, 0, 9000), +(3162, 4230124, 2000004, 1, 1, 0, 20000), +(3163, 4230124, 2060000, 1, 1, 0, 30000), +(3164, 4230124, 2061000, 1, 1, 0, 30000), +(3165, 4230124, 4004004, 1, 1, 0, 10000), +(3166, 4230124, 2041019, 1, 1, 0, 300), +(3167, 4230124, 1002045, 1, 1, 0, 1500), +(3168, 4230124, 1061062, 1, 1, 0, 800), +(3169, 4230124, 1041067, 1, 1, 0, 800), +(3170, 4230124, 1050037, 1, 1, 0, 700), +(3171, 4230124, 1041076, 1, 1, 0, 800), +(3172, 4230124, 1060073, 1, 1, 0, 800), +(3173, 4230124, 1412005, 1, 1, 0, 700), +(3174, 4230124, 1452007, 1, 1, 0, 500), +(3175, 4230124, 1002213, 1, 1, 0, 1500), +(3176, 4230124, 1002085, 1, 1, 0, 1500), +(3177, 4230124, 1032012, 1, 1, 0, 1000), +(3178, 4230124, 1040096, 1, 1, 0, 800), +(3179, 4230124, 1060085, 1, 1, 0, 800), +(3180, 4230124, 1002631, 1, 1, 0, 1500), +(3181, 4230124, 4130008, 1, 1, 0, 6000), +(3182, 4230124, 4130012, 1, 1, 0, 6000), +(3183, 4230124, 4130014, 1, 1, 0, 6000), +(3184, 4230125, 4000204, 1, 1, 0, 600000), +(3185, 4230125, 2000002, 1, 1, 0, 20000), +(3186, 4230125, 2000003, 1, 1, 0, 20000), +(3187, 4230125, 4020007, 1, 1, 0, 9000), +(3188, 4230125, 4010004, 1, 1, 0, 9000), +(3189, 4230125, 4010000, 1, 1, 0, 9000), +(3190, 4230125, 2060000, 1, 1, 0, 30000), +(3191, 4230125, 2061000, 1, 1, 0, 30000), +(3192, 4230125, 1002047, 1, 1, 0, 1500), +(3193, 4230125, 1002081, 1, 1, 0, 1500), +(3194, 4230125, 1002144, 1, 1, 0, 1500), +(3195, 4230125, 1002178, 1, 1, 0, 1500), +(3196, 4230125, 1422007, 1, 1, 0, 700), +(3197, 4230125, 1382019, 1, 1, 0, 700), +(3198, 4230125, 1332016, 1, 1, 0, 500), +(3199, 4230125, 1050052, 1, 1, 0, 700), +(3200, 4230125, 1072118, 1, 1, 0, 800), +(3201, 4230125, 1072108, 1, 1, 0, 800), +(3202, 4230125, 1072126, 1, 1, 0, 800), +(3203, 4230125, 2070002, 1, 1, 0, 500), +(3204, 4230125, 4006000, 1, 1, 0, 10000), +(3205, 4230125, 2044301, 1, 1, 0, 300), +(3206, 4230125, 2040705, 1, 1, 0, 300), +(3207, 4230125, 2040824, 1, 1, 0, 300), +(3208, 4230125, 2040929, 1, 1, 0, 300), +(3209, 4230125, 4130002, 1, 1, 0, 6000), +(3210, 4230125, 4130011, 1, 1, 0, 6000), +(3211, 4230126, 4000205, 1, 1, 0, 600000), +(3212, 4230126, 2041014, 1, 1, 0, 300), +(3213, 4230126, 4020003, 1, 1, 0, 9000), +(3214, 4230126, 2000002, 1, 1, 0, 20000), +(3215, 4230126, 2000004, 1, 1, 0, 20000), +(3216, 4230126, 2000003, 1, 1, 0, 20000), +(3217, 4230126, 4020006, 1, 1, 0, 9000), +(3218, 4230126, 4010003, 1, 1, 0, 9000), +(3219, 4230126, 2060000, 1, 1, 0, 30000), +(3220, 4230126, 2061000, 1, 1, 0, 30000), +(3221, 4230126, 1041084, 1, 1, 0, 800), +(3222, 4230126, 1060075, 1, 1, 0, 800), +(3223, 4230126, 1041082, 1, 1, 0, 800), +(3224, 4230126, 1060069, 1, 1, 0, 800), +(3225, 4230126, 1050048, 1, 1, 0, 700), +(3226, 4230126, 1051032, 1, 1, 0, 700), +(3227, 4230126, 1082010, 1, 1, 0, 1000), +(3228, 4230126, 2044201, 1, 1, 0, 300), +(3229, 4230126, 1082066, 1, 1, 0, 1000), +(3230, 4230126, 1082092, 1, 1, 0, 1000), +(3231, 4230126, 1082089, 1, 1, 0, 1000), +(3232, 4230126, 1082059, 1, 1, 0, 1000), +(3233, 4230126, 4006001, 1, 1, 0, 10000), +(3234, 4230126, 1002631, 1, 1, 0, 1500), +(3235, 4230126, 2040419, 1, 1, 0, 300), +(3236, 4230126, 2040425, 1, 1, 0, 300), +(3237, 4230126, 2049000, 1, 1, 0, 150), +(3238, 4230126, 4130004, 1, 1, 0, 6000), +(3239, 4230126, 4130008, 1, 1, 0, 6000), +(3240, 4230126, 4130012, 1, 1, 0, 6000), +(3241, 4230200, 2000002, 1, 1, 0, 20000), +(3242, 4230200, 2022040, 1, 1, 0, 20000), +(3243, 4230200, 2000003, 1, 1, 0, 20000), +(3244, 4230200, 4010002, 1, 1, 0, 9000), +(3245, 4230200, 4010003, 1, 1, 0, 9000), +(3246, 4230200, 4004001, 1, 1, 0, 10000), +(3247, 4230200, 2040001, 1, 1, 0, 300), +(3248, 4230200, 2040704, 1, 1, 0, 300), +(3249, 4230200, 4000158, 1, 1, 0, 600000), +(3250, 4230200, 1072112, 1, 1, 0, 800), +(3251, 4230200, 1051027, 1, 1, 0, 700), +(3252, 4230200, 1002170, 1, 1, 0, 1500), +(3253, 4230200, 1040000, 1, 1, 0, 800), +(3254, 4230200, 1060000, 1, 1, 0, 800), +(3255, 4230200, 1432005, 1, 1, 0, 500), +(3256, 4230200, 1472014, 1, 1, 0, 500), +(3257, 4230200, 1462006, 1, 1, 0, 500), +(3258, 4230200, 1002207, 1, 1, 0, 1500), +(3259, 4230200, 1002215, 1, 1, 0, 1500), +(3260, 4230200, 1040094, 1, 1, 0, 800), +(3261, 4230200, 1060083, 1, 1, 0, 800), +(3262, 4230200, 1051038, 1, 1, 0, 700), +(3263, 4230200, 1041088, 1, 1, 0, 800), +(3264, 4230200, 1061087, 1, 1, 0, 800), +(3265, 4230200, 1072300, 1, 1, 0, 800), +(3266, 4230200, 2040620, 1, 1, 0, 300), +(3267, 4230200, 2044310, 1, 1, 0, 300), +(3268, 4230200, 4130003, 1, 1, 0, 6000), +(3269, 4230200, 4130007, 1, 1, 0, 6000), +(3270, 4230201, 4000159, 1, 1, 0, 600000), +(3271, 4230201, 2002004, 1, 1, 0, 20000), +(3272, 4230201, 2000002, 1, 1, 0, 20000), +(3273, 4230201, 2000003, 1, 1, 0, 20000), +(3274, 4230201, 2022040, 1, 1, 0, 20000), +(3275, 4230201, 4020003, 1, 1, 0, 9000), +(3276, 4230201, 4010004, 1, 1, 0, 9000), +(3277, 4230201, 4004002, 1, 1, 0, 10000), +(3278, 4230201, 2040801, 1, 1, 0, 300), +(3279, 4230201, 2040901, 1, 1, 0, 300), +(3280, 4230201, 2060000, 1, 1, 0, 30000), +(3281, 4230201, 2061000, 1, 1, 0, 30000), +(3282, 4230201, 1072106, 1, 1, 0, 800), +(3283, 4230201, 1072102, 1, 1, 0, 800), +(3284, 4230201, 1082055, 1, 1, 0, 1000), +(3285, 4230201, 1002137, 1, 1, 0, 1500), +(3286, 4230201, 1072126, 1, 1, 0, 800), +(3287, 4230201, 1082024, 1, 1, 0, 1000), +(3288, 4230201, 1041074, 1, 1, 0, 800), +(3289, 4230201, 1061069, 1, 1, 0, 800), +(3290, 4230201, 1051031, 1, 1, 0, 700), +(3291, 4230201, 1041078, 1, 1, 0, 800), +(3292, 4230201, 1061077, 1, 1, 0, 800), +(3293, 4230201, 1051037, 1, 1, 0, 700), +(3294, 4230201, 1072140, 1, 1, 0, 800), +(3295, 4230201, 1082011, 1, 1, 0, 1000), +(3296, 4230201, 2040417, 1, 1, 0, 300), +(3297, 4230201, 4130006, 1, 1, 0, 6000), +(3298, 4230201, 4130016, 1, 1, 0, 6000), +(3299, 4230300, 4000169, 1, 1, 0, 600000), +(3300, 4230300, 4000021, 1, 1, 0, 50000), +(3301, 4230300, 2000002, 1, 1, 0, 20000), +(3302, 4230300, 2000003, 1, 1, 0, 20000), +(3303, 4230300, 4020005, 1, 1, 0, 9000), +(3304, 4230300, 4010004, 1, 1, 0, 9000), +(3305, 4230300, 4004001, 1, 1, 0, 10000), +(3306, 4230300, 2060000, 1, 1, 0, 30000), +(3307, 4230300, 2061000, 1, 1, 0, 30000), +(3308, 4230300, 1302016, 1, 1, 0, 700), +(3309, 4230300, 1082072, 1, 1, 0, 1000), +(3310, 4230300, 1072109, 1, 1, 0, 800), +(3311, 4230300, 1072112, 1, 1, 0, 800), +(3312, 4230300, 1092014, 1, 1, 0, 700), +(3313, 4230300, 1032011, 1, 1, 0, 1000), +(3314, 4230300, 1312007, 1, 1, 0, 700), +(3315, 4230300, 2070002, 1, 1, 0, 500), +(3316, 4230300, 1102001, 1, 1, 0, 1000), +(3317, 4230300, 4006000, 1, 1, 0, 10000), +(3318, 4230300, 2040705, 1, 1, 0, 300), +(3319, 4230300, 1482006, 1, 1, 0, 500), +(3320, 4230300, 2040029, 1, 1, 0, 300), +(3321, 4230300, 2040417, 1, 1, 0, 300), +(3322, 4230300, 4130009, 1, 1, 0, 6000), +(3323, 4230300, 4130015, 1, 1, 0, 6000), +(3324, 4230300, 4130017, 1, 1, 0, 6000), +(3325, 4230400, 4000178, 1, 1, 0, 600000), +(3326, 4230400, 2044001, 1, 1, 0, 300), +(3327, 4230400, 2060000, 1, 1, 0, 30000), +(3328, 4230400, 2061000, 1, 1, 0, 30000), +(3329, 4230400, 4020008, 1, 1, 0, 9000), +(3330, 4230400, 4010001, 1, 1, 0, 9000), +(3331, 4230400, 2000002, 1, 1, 0, 20000), +(3332, 4230400, 2000003, 1, 1, 0, 20000), +(3333, 4230400, 2000004, 1, 1, 0, 20000), +(3334, 4230400, 1002184, 1, 1, 0, 1500), +(3335, 4230400, 1032018, 1, 1, 0, 1000), +(3336, 4230400, 1041082, 1, 1, 0, 800), +(3337, 4230400, 1061081, 1, 1, 0, 800), +(3338, 4230400, 1050047, 1, 1, 0, 700), +(3339, 4230400, 1082071, 1, 1, 0, 1000), +(3340, 4230400, 1072116, 1, 1, 0, 800), +(3341, 4230400, 1072126, 1, 1, 0, 800), +(3342, 4230400, 4020007, 1, 1, 0, 9000), +(3343, 4230400, 2040923, 1, 1, 0, 300), +(3344, 4230400, 4130001, 1, 1, 0, 6000), +(3345, 4230400, 4130010, 1, 1, 0, 6000), +(3346, 4230400, 4130011, 1, 1, 0, 6000), +(3347, 4230500, 4000276, 1, 1, 0, 600000), +(3348, 4230500, 4000021, 1, 1, 0, 50000), +(3349, 4230500, 2060000, 1, 1, 0, 30000), +(3350, 4230500, 2061000, 1, 1, 0, 30000), +(3351, 4230500, 2040001, 1, 1, 0, 300), +(3352, 4230500, 2000002, 1, 1, 0, 20000), +(3353, 4230500, 4010006, 1, 1, 0, 9000), +(3354, 4230500, 2000003, 1, 1, 0, 20000), +(3355, 4230500, 1002023, 1, 1, 0, 1500), +(3356, 4230500, 4010001, 1, 1, 0, 9000), +(3357, 4230500, 1002103, 1, 1, 0, 1500), +(3358, 4230500, 1002092, 1, 1, 0, 1500), +(3359, 4230500, 1002155, 1, 1, 0, 1500), +(3360, 4230500, 1051016, 1, 1, 0, 700), +(3361, 4230500, 1061061, 1, 1, 0, 800), +(3362, 4230500, 1041066, 1, 1, 0, 800), +(3363, 4230500, 1050038, 1, 1, 0, 700), +(3364, 4230500, 1041095, 1, 1, 0, 800), +(3365, 4230500, 1061094, 1, 1, 0, 800), +(3366, 4230500, 1482006, 1, 1, 0, 500), +(3367, 4230500, 2330001, 1, 1, 0, 500), +(3368, 4230500, 4130004, 1, 1, 0, 6000), +(3369, 4230500, 4130014, 1, 1, 0, 6000), +(3370, 4230500, 4130016, 1, 1, 0, 6000), +(3371, 4230501, 4000277, 1, 1, 0, 600000), +(3372, 4230501, 2060000, 1, 1, 0, 30000), +(3373, 4230501, 2061000, 1, 1, 0, 30000), +(3374, 4230501, 4010001, 1, 1, 0, 9000), +(3375, 4230501, 2000002, 1, 1, 0, 20000), +(3376, 4230501, 2000003, 1, 1, 0, 20000), +(3377, 4230501, 2040901, 1, 1, 0, 300), +(3378, 4230501, 1472018, 1, 1, 0, 500), +(3379, 4230501, 1032018, 1, 1, 0, 1000), +(3380, 4230501, 1072110, 1, 1, 0, 800), +(3381, 4230501, 1051026, 1, 1, 0, 700), +(3382, 4230501, 1061076, 1, 1, 0, 800), +(3383, 4230501, 1002217, 1, 1, 0, 1500), +(3384, 4230501, 4004002, 1, 1, 0, 10000), +(3385, 4230501, 1072300, 1, 1, 0, 800), +(3386, 4230501, 2040420, 1, 1, 0, 300), +(3387, 4230501, 2049000, 1, 1, 0, 150), +(3388, 4230501, 4130000, 1, 1, 0, 6000), +(3389, 4230501, 4130009, 1, 1, 0, 6000), +(3390, 4230501, 4130011, 1, 1, 0, 6000), +(3391, 4230502, 4000278, 1, 1, 0, 600000), +(3392, 4230502, 2000002, 1, 1, 0, 20000), +(3393, 4230502, 2000003, 1, 1, 0, 20000), +(3394, 4230502, 4020008, 1, 1, 0, 9000), +(3395, 4230502, 4020004, 1, 1, 0, 9000), +(3396, 4230502, 4004003, 1, 1, 0, 10000), +(3397, 4230502, 2048004, 1, 1, 0, 300), +(3398, 4230502, 2070002, 1, 1, 0, 500), +(3399, 4230502, 2044501, 1, 1, 0, 300), +(3400, 4230502, 1442009, 1, 1, 0, 700), +(3401, 4230502, 2060000, 1, 1, 0, 30000), +(3402, 4230502, 2061000, 1, 1, 0, 30000), +(3403, 4230502, 1452008, 1, 1, 0, 500), +(3404, 4230502, 1002024, 1, 1, 0, 1500), +(3405, 4230502, 1041083, 1, 1, 0, 800), +(3406, 4230502, 1061082, 1, 1, 0, 800), +(3407, 4230502, 1072303, 1, 1, 0, 800), +(3408, 4230502, 2040823, 1, 1, 0, 300), +(3409, 4230502, 2043114, 1, 1, 0, 300), +(3410, 4230502, 4130003, 1, 1, 0, 6000), +(3411, 4230502, 4130009, 1, 1, 0, 6000), +(3412, 4230502, 4130017, 1, 1, 0, 6000), +(3413, 4230503, 4000281, 1, 1, 0, 600000), +(3414, 4230503, 2000002, 1, 1, 0, 20000), +(3415, 4230503, 2000003, 1, 1, 0, 20000), +(3416, 4230503, 4020005, 1, 1, 0, 9000), +(3417, 4230503, 4010004, 1, 1, 0, 9000), +(3418, 4230503, 4004001, 1, 1, 0, 10000), +(3419, 4230503, 2060000, 1, 1, 0, 30000), +(3420, 4230503, 2061000, 1, 1, 0, 30000), +(3421, 4230503, 1032008, 1, 1, 0, 1000), +(3422, 4230503, 1002081, 1, 1, 0, 1500), +(3423, 4230503, 1040089, 1, 1, 0, 800), +(3424, 4230503, 1060078, 1, 1, 0, 800), +(3425, 4230503, 1050052, 1, 1, 0, 700), +(3426, 4230503, 1102001, 1, 1, 0, 1000), +(3427, 4230503, 2040705, 1, 1, 0, 300), +(3428, 4230503, 4000280, 1, 1, 0, 600000), +(3429, 4230503, 1492006, 1, 1, 0, 500), +(3430, 4230503, 2044410, 1, 1, 0, 300), +(3431, 4230503, 4130001, 1, 1, 0, 6000), +(3432, 4230503, 4130007, 1, 1, 0, 6000), +(3433, 4230504, 4000281, 1, 1, 0, 600000), +(3434, 4230504, 2000002, 1, 1, 0, 20000), +(3435, 4230504, 2000003, 1, 1, 0, 20000), +(3436, 4230504, 4010002, 1, 1, 0, 9000), +(3437, 4230504, 4010004, 1, 1, 0, 9000), +(3438, 4230504, 4004000, 1, 1, 0, 10000), +(3439, 4230504, 2060000, 1, 1, 0, 30000), +(3440, 4230504, 2061000, 1, 1, 0, 30000), +(3441, 4230504, 2040504, 1, 1, 0, 300), +(3442, 4230504, 2044002, 1, 1, 0, 300), +(3443, 4230504, 1002085, 1, 1, 0, 1500), +(3444, 4230504, 1382001, 1, 1, 0, 700), +(3445, 4230504, 1082010, 1, 1, 0, 1000), +(3446, 4230504, 1041077, 1, 1, 0, 800), +(3447, 4230504, 4000279, 1, 1, 0, 600000), +(3448, 4230504, 1002631, 1, 1, 0, 1500), +(3449, 4230504, 2330002, 1, 1, 0, 500), +(3450, 4230504, 2044310, 1, 1, 0, 300), +(3451, 4230504, 4130002, 1, 1, 0, 6000), +(3452, 4230504, 4130013, 1, 1, 0, 6000), +(3453, 4230505, 4000291, 1, 1, 0, 600000), +(3454, 4230505, 2000002, 1, 1, 0, 20000), +(3455, 4230505, 2000003, 1, 1, 0, 20000), +(3456, 4230505, 4020000, 1, 1, 0, 9000), +(3457, 4230505, 4020006, 1, 1, 0, 9000), +(3458, 4230505, 2044102, 1, 1, 0, 300), +(3459, 4230505, 1372007, 1, 1, 0, 700), +(3460, 4230505, 1002215, 1, 1, 0, 1500), +(3461, 4230505, 4006001, 1, 1, 0, 10000), +(3462, 4230505, 1040089, 1, 1, 0, 800), +(3463, 4230505, 1050045, 1, 1, 0, 700), +(3464, 4230505, 4004002, 1, 1, 0, 10000), +(3465, 4230505, 2040001, 1, 1, 0, 300), +(3466, 4230505, 1052116, 1, 1, 0, 700), +(3467, 4230505, 2330002, 1, 1, 0, 500), +(3468, 4230505, 4130001, 1, 1, 0, 6000), +(3469, 4230505, 4130014, 1, 1, 0, 6000), +(3470, 4230505, 4130016, 1, 1, 0, 6000), +(3471, 4230506, 4000292, 1, 1, 0, 600000), +(3472, 4230506, 2000002, 1, 1, 0, 20000), +(3473, 4230506, 2000003, 1, 1, 0, 20000), +(3474, 4230506, 4010001, 1, 1, 0, 9000), +(3475, 4230506, 4020000, 1, 1, 0, 9000), +(3476, 4230506, 1041086, 1, 1, 0, 800), +(3477, 4230506, 1061085, 1, 1, 0, 800), +(3478, 4230506, 1302013, 1, 1, 0, 700), +(3479, 4230506, 1002083, 1, 1, 0, 1500), +(3480, 4230506, 1032007, 1, 1, 0, 1000), +(3481, 4230506, 1041080, 1, 1, 0, 800), +(3482, 4230506, 1061079, 1, 1, 0, 800), +(3483, 4230506, 1002212, 1, 1, 0, 1500), +(3484, 4230506, 1041092, 1, 1, 0, 800), +(3485, 4230506, 1061091, 1, 1, 0, 800), +(3486, 4230506, 1102003, 1, 1, 0, 1000), +(3487, 4230506, 4006001, 1, 1, 0, 10000), +(3488, 4230506, 1492007, 1, 1, 0, 500), +(3489, 4230506, 2040622, 1, 1, 0, 300), +(3490, 4230506, 2044110, 1, 1, 0, 300), +(3491, 4230506, 2044312, 1, 1, 0, 300), +(3492, 4230506, 2049100, 1, 1, 0, 150), +(3493, 4230506, 4130000, 1, 1, 0, 6000), +(3494, 4230506, 4130017, 1, 1, 0, 6000), +(3495, 4230600, 2000003, 1, 1, 0, 20000), +(3496, 4230600, 2060000, 1, 1, 0, 30000), +(3497, 4230600, 2061000, 1, 1, 0, 30000), +(3498, 4230600, 2000002, 1, 1, 0, 20000), +(3499, 4230600, 4000332, 1, 1, 0, 600000), +(3500, 4230600, 4020001, 1, 1, 0, 9000), +(3501, 4230600, 4004003, 1, 1, 0, 10000), +(3502, 4230600, 4006001, 1, 1, 0, 10000), +(3503, 4230600, 2044401, 1, 1, 0, 300), +(3504, 4230600, 2070003, 1, 1, 0, 500), +(3505, 4230600, 1372012, 1, 1, 0, 700), +(3506, 4230600, 1432003, 1, 1, 0, 500), +(3507, 4230600, 1452007, 1, 1, 0, 500), +(3508, 4230600, 1102000, 1, 1, 0, 1000), +(3509, 4230600, 1002210, 1, 1, 0, 1500), +(3510, 4230600, 1072002, 1, 1, 0, 800), +(3511, 4230600, 1082055, 1, 1, 0, 1000), +(3512, 4230600, 1041082, 1, 1, 0, 800), +(3513, 4230600, 1061081, 1, 1, 0, 800), +(3514, 4230600, 4010007, 1, 1, 0, 9000), +(3515, 4230600, 1492006, 1, 1, 0, 500), +(3516, 4230600, 2044802, 1, 1, 0, 300), +(3517, 4230600, 2040823, 1, 1, 0, 300), +(3518, 4230600, 2044412, 1, 1, 0, 300), +(3519, 4230600, 4130000, 1, 1, 0, 6000), +(3520, 4230600, 4130016, 1, 1, 0, 6000), +(3521, 4240000, 4000125, 1, 1, 0, 600000), +(3522, 4240000, 2060000, 1, 1, 0, 30000), +(3523, 4240000, 2061000, 1, 1, 0, 30000), +(3524, 4240000, 2000002, 1, 1, 0, 20000), +(3525, 4240000, 2000004, 1, 1, 0, 20000), +(3526, 4240000, 2002008, 1, 1, 0, 20000), +(3527, 4240000, 1102016, 1, 1, 0, 1000), +(3528, 4240000, 4010006, 1, 1, 0, 9000), +(3529, 4240000, 4020008, 1, 1, 0, 9000), +(3530, 4240000, 4004003, 1, 1, 0, 10000), +(3531, 4240000, 2043801, 1, 1, 0, 300), +(3532, 4240000, 4006001, 1, 1, 0, 10000), +(3533, 4240000, 4021009, 1, 1, 0, 9000), +(3534, 4240000, 1322016, 1, 1, 0, 700), +(3535, 4240000, 1041074, 1, 1, 0, 800), +(3536, 4240000, 1061069, 1, 1, 0, 800), +(3537, 4240000, 1041083, 1, 1, 0, 800), +(3538, 4240000, 1061082, 1, 1, 0, 800), +(3539, 4240000, 1332003, 1, 1, 0, 500), +(3540, 4240000, 1072122, 1, 1, 0, 800), +(3541, 4240000, 1072130, 1, 1, 0, 800), +(3542, 4240000, 1072133, 1, 1, 0, 800), +(3543, 4240000, 1082080, 1, 1, 0, 1000), +(3544, 4240000, 1072125, 1, 1, 0, 800), +(3545, 4240000, 1002216, 1, 1, 0, 1500), +(3546, 4240000, 1002101, 1, 1, 0, 1500), +(3547, 4240000, 2040029, 1, 1, 0, 300), +(3548, 4240000, 2040619, 1, 1, 0, 300), +(3549, 4240000, 2044114, 1, 1, 0, 300), +(3550, 4240000, 4130006, 1, 1, 0, 6000), +(3551, 4240000, 4130011, 1, 1, 0, 6000), +(3552, 4250000, 4000436, 1, 1, 0, 600000), +(3553, 4250000, 2000002, 1, 1, 0, 20000), +(3554, 4250000, 2000003, 1, 1, 0, 20000), +(3555, 4250000, 4010005, 1, 1, 0, 9000), +(3556, 4250000, 4020004, 1, 1, 0, 9000), +(3557, 4250000, 2040004, 1, 1, 0, 300), +(3558, 4250000, 1002025, 1, 1, 0, 1500), +(3559, 4250000, 1051025, 1, 1, 0, 700), +(3560, 4250000, 1082083, 1, 1, 0, 1000), +(3561, 4250000, 1072109, 1, 1, 0, 800), +(3562, 4250000, 1492006, 1, 1, 0, 500), +(3563, 4250000, 4130005, 1, 1, 0, 6000), +(3564, 4250000, 4130015, 1, 1, 0, 6000), +(3565, 4250000, 4130017, 1, 1, 0, 6000), +(3566, 4250001, 2000002, 1, 1, 0, 20000), +(3567, 4250001, 2000003, 1, 1, 0, 20000), +(3568, 4250001, 4010004, 1, 1, 0, 9000), +(3569, 4250001, 4020005, 1, 1, 0, 9000), +(3570, 4250001, 2040627, 1, 1, 0, 300), +(3571, 4250001, 1002215, 1, 1, 0, 1500), +(3572, 4250001, 1051038, 1, 1, 0, 700), +(3573, 4250001, 1082066, 1, 1, 0, 1000), +(3574, 4250001, 1072303, 1, 1, 0, 800), +(3575, 4250001, 1442005, 1, 1, 0, 700), +(3576, 4250001, 4000438, 1, 1, 0, 600000), +(3577, 4250001, 4130014, 1, 1, 0, 6000), +(3578, 5090000, 4000413, 1, 1, 0, 600000), +(3579, 5090001, 4000412, 1, 1, 0, 600000), +(3580, 5100000, 4000048, 1, 1, 0, 600000), +(3581, 5100000, 4003005, 1, 1, 0, 200000), +(3582, 5100000, 4000021, 1, 1, 0, 50000), +(3583, 5100000, 2000002, 1, 1, 0, 20000), +(3584, 5100000, 2000003, 1, 1, 0, 20000), +(3585, 5100000, 2000004, 1, 1, 0, 20000), +(3586, 5100000, 4020001, 1, 1, 0, 9000), +(3587, 5100000, 4010002, 1, 1, 0, 9000), +(3588, 5100000, 1072089, 1, 1, 0, 800), +(3589, 5100000, 1082038, 1, 1, 0, 1000), +(3590, 5100000, 1452006, 1, 1, 0, 500), +(3591, 5100000, 1442009, 1, 1, 0, 700), +(3592, 5100000, 1051044, 1, 1, 0, 700), +(3593, 5100000, 1051045, 1, 1, 0, 700), +(3594, 5100000, 2044602, 1, 1, 0, 300), +(3595, 5100000, 1041096, 1, 1, 0, 800), +(3596, 5100000, 1061095, 1, 1, 0, 800), +(3597, 5100000, 2040804, 1, 1, 0, 300), +(3598, 5100000, 4004002, 1, 1, 0, 10000), +(3599, 5100000, 1051037, 1, 1, 0, 700), +(3600, 5100000, 1052116, 1, 1, 0, 700), +(3601, 5100000, 2040321, 1, 1, 0, 300), +(3602, 5100000, 2040933, 1, 1, 0, 300), +(3603, 5100000, 2040925, 1, 1, 0, 300), +(3604, 5100000, 2043019, 1, 1, 0, 300), +(3605, 5100000, 2043110, 1, 1, 0, 300), +(3606, 5100000, 4130010, 1, 1, 0, 6000), +(3607, 5100000, 4130011, 1, 1, 0, 6000), +(3608, 5100002, 4000081, 1, 1, 0, 600000), +(3609, 5100002, 2000002, 1, 1, 0, 20000), +(3610, 5100002, 2000003, 1, 1, 0, 20000), +(3611, 5100002, 4010001, 1, 1, 0, 9000), +(3612, 5100002, 4020000, 1, 1, 0, 9000), +(3613, 5100002, 4004000, 1, 1, 0, 10000), +(3614, 5100002, 2041010, 1, 1, 0, 300), +(3615, 5100002, 2070003, 1, 1, 0, 500), +(3616, 5100002, 4006000, 1, 1, 0, 10000), +(3617, 5100002, 1051025, 1, 1, 0, 700), +(3618, 5100002, 1302009, 1, 1, 0, 700), +(3619, 5100002, 1041076, 1, 1, 0, 800), +(3620, 5100002, 1061071, 1, 1, 0, 800), +(3621, 5100002, 1332016, 1, 1, 0, 500), +(3622, 5100002, 1322017, 1, 1, 0, 700), +(3623, 5100002, 1002209, 1, 1, 0, 1500), +(3624, 5100002, 1002214, 1, 1, 0, 1500), +(3625, 5100002, 1040087, 1, 1, 0, 800), +(3626, 5100002, 1060076, 1, 1, 0, 800), +(3627, 5100002, 1072150, 1, 1, 0, 800), +(3628, 5100002, 1002242, 1, 1, 0, 1500), +(3629, 5100002, 1492007, 1, 1, 0, 500), +(3630, 5100002, 2040326, 1, 1, 0, 300), +(3631, 5100002, 2049000, 1, 1, 0, 150), +(3632, 5100002, 4130001, 1, 1, 0, 6000), +(3633, 5100002, 4130007, 1, 1, 0, 6000), +(3634, 5100003, 4000170, 1, 1, 0, 600000), +(3635, 5100003, 4000021, 1, 1, 0, 50000), +(3636, 5100003, 2000002, 1, 1, 0, 20000), +(3637, 5100003, 2000003, 1, 1, 0, 20000), +(3638, 5100003, 2000004, 1, 1, 0, 20000), +(3639, 5100003, 4020001, 1, 1, 0, 9000), +(3640, 5100003, 4010002, 1, 1, 0, 9000), +(3641, 5100003, 1332011, 1, 1, 0, 500), +(3642, 5100003, 1072118, 1, 1, 0, 800), +(3643, 5100003, 1051038, 1, 1, 0, 700), +(3644, 5100003, 2040901, 1, 1, 0, 300), +(3645, 5100003, 2002003, 1, 1, 0, 20000), +(3646, 5100003, 1322017, 1, 1, 0, 700), +(3647, 5100003, 2044602, 1, 1, 0, 300), +(3648, 5100003, 1041088, 1, 1, 0, 800), +(3649, 5100003, 1060077, 1, 1, 0, 800), +(3650, 5100003, 2040804, 1, 1, 0, 300), +(3651, 5100003, 4004002, 1, 1, 0, 10000), +(3652, 5100003, 1312008, 1, 1, 0, 700), +(3653, 5100003, 1082198, 1, 1, 0, 1000), +(3654, 5100003, 2044805, 1, 1, 0, 300), +(3655, 5100003, 4130003, 1, 1, 0, 6000), +(3656, 5100003, 4130008, 1, 1, 0, 6000), +(3657, 5100003, 4130016, 1, 1, 0, 6000), +(3658, 5100004, 4000172, 1, 1, 0, 600000), +(3659, 5100004, 4000021, 1, 1, 0, 50000), +(3660, 5100004, 4004004, 1, 1, 0, 10000), +(3661, 5100004, 2000003, 1, 1, 0, 20000), +(3662, 5100004, 2000004, 1, 1, 0, 20000), +(3663, 5100004, 4020004, 1, 1, 0, 9000), +(3664, 5100004, 4010005, 1, 1, 0, 9000), +(3665, 5100004, 1032021, 1, 1, 0, 1000), +(3666, 5100004, 1072134, 1, 1, 0, 800), +(3667, 5100004, 1082066, 1, 1, 0, 1000), +(3668, 5100004, 1050058, 1, 1, 0, 700), +(3669, 5100004, 1051046, 1, 1, 0, 700), +(3670, 5100004, 2043801, 1, 1, 0, 300), +(3671, 5100004, 1082081, 1, 1, 0, 1000), +(3672, 5100004, 1432006, 1, 1, 0, 500), +(3673, 5100004, 1040099, 1, 1, 0, 800), +(3674, 5100004, 1060088, 1, 1, 0, 800), +(3675, 5100004, 4004002, 1, 1, 0, 10000), +(3676, 5100004, 1040087, 1, 1, 0, 800), +(3677, 5100004, 1060076, 1, 1, 0, 800), +(3678, 5100004, 2043701, 1, 1, 0, 300), +(3679, 5100004, 1052119, 1, 1, 0, 700), +(3680, 5100004, 2040420, 1, 1, 0, 300), +(3681, 5100004, 4130003, 1, 1, 0, 6000), +(3682, 5100004, 4130005, 1, 1, 0, 6000), +(3683, 5100004, 4130011, 1, 1, 0, 6000), +(3684, 5100005, 4000171, 1, 1, 0, 600000), +(3685, 5100005, 2000002, 1, 1, 0, 20000), +(3686, 5100005, 4000021, 1, 1, 0, 50000), +(3687, 5100005, 2000004, 1, 1, 0, 20000), +(3688, 5100005, 2000003, 1, 1, 0, 20000), +(3689, 5100005, 4010005, 1, 1, 0, 9000), +(3690, 5100005, 4010001, 1, 1, 0, 9000), +(3691, 5100005, 4004003, 1, 1, 0, 10000), +(3692, 5100005, 4006000, 1, 1, 0, 10000), +(3693, 5100005, 2041023, 1, 1, 0, 300), +(3694, 5100005, 1402006, 1, 1, 0, 700), +(3695, 5100005, 2044201, 1, 1, 0, 300), +(3696, 5100005, 1051045, 1, 1, 0, 700), +(3697, 5100005, 2070004, 1, 1, 0, 500), +(3698, 5100005, 1422007, 1, 1, 0, 700), +(3699, 5100005, 1040095, 1, 1, 0, 800), +(3700, 5100005, 1060084, 1, 1, 0, 800), +(3701, 5100005, 1041079, 1, 1, 0, 800), +(3702, 5100005, 1061078, 1, 1, 0, 800), +(3703, 5100005, 2044901, 1, 1, 0, 300), +(3704, 5100005, 2040316, 1, 1, 0, 300), +(3705, 5100005, 2040621, 1, 1, 0, 300), +(3706, 5100005, 4130008, 1, 1, 0, 6000), +(3707, 5100005, 4130009, 1, 1, 0, 6000), +(3708, 5110300, 2000002, 1, 1, 0, 20000), +(3709, 5110300, 2000003, 1, 1, 0, 20000), +(3710, 5110300, 4004002, 1, 1, 0, 10000), +(3711, 5110300, 4020005, 1, 1, 0, 9000), +(3712, 5110300, 1332011, 1, 1, 0, 500), +(3713, 5110300, 1072118, 1, 1, 0, 800), +(3714, 5110300, 1051038, 1, 1, 0, 700), +(3715, 5110300, 2040901, 1, 1, 0, 300), +(3716, 5110300, 2002003, 1, 1, 0, 20000), +(3717, 5110300, 2044602, 1, 1, 0, 300), +(3718, 5110300, 1041088, 1, 1, 0, 800), +(3719, 5110300, 1060077, 1, 1, 0, 800), +(3720, 5110300, 1312008, 1, 1, 0, 700), +(3721, 5110300, 4000360, 1, 1, 0, 600000), +(3722, 5110300, 1482007, 1, 1, 0, 500), +(3723, 5110300, 2044902, 1, 1, 0, 300), +(3724, 5110300, 1052116, 1, 1, 0, 700), +(3725, 5110300, 2040027, 1, 1, 0, 300), +(3726, 5110300, 2040317, 1, 1, 0, 300), +(3727, 5110300, 4130000, 1, 1, 0, 6000), +(3728, 5110300, 4130004, 1, 1, 0, 6000), +(3729, 5110300, 4130006, 1, 1, 0, 6000), +(3730, 5110301, 4004004, 1, 1, 0, 10000), +(3731, 5110301, 2000002, 1, 1, 0, 20000), +(3732, 5110301, 2000003, 1, 1, 0, 20000), +(3733, 5110301, 4020005, 1, 1, 0, 9000), +(3734, 5110301, 1002159, 1, 1, 0, 1500), +(3735, 5110301, 1040057, 1, 1, 0, 800), +(3736, 5110301, 1082004, 1, 1, 0, 1000), +(3737, 5110301, 1040096, 1, 1, 0, 800), +(3738, 5110301, 1060085, 1, 1, 0, 800), +(3739, 5110301, 1050052, 1, 1, 0, 700), +(3740, 5110301, 1040087, 1, 1, 0, 800), +(3741, 5110301, 1060076, 1, 1, 0, 800), +(3742, 5110301, 1040091, 1, 1, 0, 800), +(3743, 5110301, 1060080, 1, 1, 0, 800), +(3744, 5110301, 4000364, 1, 1, 0, 600000), +(3745, 5110301, 1492008, 1, 1, 0, 500), +(3746, 5110301, 2040323, 1, 1, 0, 300), +(3747, 5110301, 2040422, 1, 1, 0, 300), +(3748, 5110301, 2043017, 1, 1, 0, 300), +(3749, 5110301, 4130001, 1, 1, 0, 6000), +(3750, 5110301, 4130005, 1, 1, 0, 6000), +(3751, 5110301, 4130006, 1, 1, 0, 6000), +(3752, 5110302, 2000003, 1, 1, 0, 20000), +(3753, 5110302, 2000002, 1, 1, 0, 20000), +(3754, 5110302, 2000004, 1, 1, 0, 20000), +(3755, 5110302, 4010006, 1, 1, 0, 9000), +(3756, 5110302, 1082066, 1, 1, 0, 1000), +(3757, 5110302, 1072146, 1, 1, 0, 800), +(3758, 5110302, 1041077, 1, 1, 0, 800), +(3759, 5110302, 1061076, 1, 1, 0, 800), +(3760, 5110302, 1051037, 1, 1, 0, 700), +(3761, 5110302, 1002029, 1, 1, 0, 1500), +(3762, 5110302, 1002248, 1, 1, 0, 1500), +(3763, 5110302, 1002269, 1, 1, 0, 1500), +(3764, 5110302, 2040804, 1, 1, 0, 300), +(3765, 5110302, 2040901, 1, 1, 0, 300), +(3766, 5110302, 4000365, 1, 1, 0, 600000), +(3767, 5110302, 1082201, 1, 1, 0, 1000), +(3768, 5110302, 2040425, 1, 1, 0, 300), +(3769, 5110302, 2040923, 1, 1, 0, 300), +(3770, 5110302, 2044114, 1, 1, 0, 300), +(3771, 5110302, 4130008, 1, 1, 0, 6000), +(3772, 5110302, 4130009, 1, 1, 0, 6000), +(3773, 5120000, 4000061, 1, 1, 0, 600000), +(3774, 5120000, 4003005, 1, 1, 0, 200000), +(3775, 5120000, 2041017, 1, 1, 0, 300), +(3776, 5120000, 4004004, 1, 1, 0, 10000), +(3777, 5120000, 2000002, 1, 1, 0, 20000), +(3778, 5120000, 2000004, 1, 1, 0, 20000), +(3779, 5120000, 2000003, 1, 1, 0, 20000), +(3780, 5120000, 4020002, 1, 1, 0, 9000), +(3781, 5120000, 4010006, 1, 1, 0, 9000), +(3782, 5120000, 4004000, 1, 1, 0, 10000), +(3783, 5120000, 1092007, 1, 1, 0, 700), +(3784, 5120000, 2070002, 1, 1, 0, 500), +(3785, 5120000, 4006001, 1, 1, 0, 10000), +(3786, 5120000, 2040504, 1, 1, 0, 300), +(3787, 5120000, 1002185, 1, 1, 0, 1500), +(3788, 5120000, 1060070, 1, 1, 0, 800), +(3789, 5120000, 1040081, 1, 1, 0, 800), +(3790, 5120000, 1422007, 1, 1, 0, 700), +(3791, 5120000, 1051033, 1, 1, 0, 700), +(3792, 5120000, 1002086, 1, 1, 0, 1500), +(3793, 5120000, 1040088, 1, 1, 0, 800), +(3794, 5120000, 1060077, 1, 1, 0, 800), +(3795, 5120000, 1072134, 1, 1, 0, 800), +(3796, 5120000, 1072128, 1, 1, 0, 800), +(3797, 5120000, 1072144, 1, 1, 0, 800), +(3798, 5120000, 1082086, 1, 1, 0, 1000), +(3799, 5120000, 1082201, 1, 1, 0, 1000), +(3800, 5120000, 2330002, 1, 1, 0, 500), +(3801, 5120000, 2040324, 1, 1, 0, 300), +(3802, 5120000, 2040423, 1, 1, 0, 300), +(3803, 5120000, 2043017, 1, 1, 0, 300), +(3804, 5120000, 4130010, 1, 1, 0, 6000), +(3805, 5120001, 4000070, 1, 1, 0, 600000), +(3806, 5120001, 4003005, 1, 1, 0, 200000), +(3807, 5120001, 2000002, 1, 1, 0, 20000), +(3808, 5120001, 2000004, 1, 1, 0, 20000), +(3809, 5120001, 2000003, 1, 1, 0, 20000), +(3810, 5120001, 4020000, 1, 1, 0, 9000), +(3811, 5120001, 4010005, 1, 1, 0, 9000), +(3812, 5120001, 4004000, 1, 1, 0, 10000), +(3813, 5120001, 4006000, 1, 1, 0, 10000), +(3814, 5120001, 2041012, 1, 1, 0, 300), +(3815, 5120001, 2043002, 1, 1, 0, 300), +(3816, 5120001, 1072115, 1, 1, 0, 800), +(3817, 5120001, 1072126, 1, 1, 0, 800), +(3818, 5120001, 1082074, 1, 1, 0, 1000), +(3819, 5120001, 1402007, 1, 1, 0, 700), +(3820, 5120001, 1002028, 1, 1, 0, 1500), +(3821, 5120001, 1032013, 1, 1, 0, 1000), +(3822, 5120001, 1040094, 1, 1, 0, 800), +(3823, 5120001, 1060083, 1, 1, 0, 800), +(3824, 5120001, 1041089, 1, 1, 0, 800), +(3825, 5120001, 1061088, 1, 1, 0, 800), +(3826, 5120001, 1050054, 1, 1, 0, 700), +(3827, 5120001, 1050058, 1, 1, 0, 700), +(3828, 5120001, 1072306, 1, 1, 0, 800), +(3829, 5120001, 2331000, 1, 1, 0, 500), +(3830, 5120001, 2040933, 1, 1, 0, 300), +(3831, 5120001, 2044212, 1, 1, 0, 300), +(3832, 5120001, 4130000, 1, 1, 0, 6000), +(3833, 5120001, 4130008, 1, 1, 0, 6000), +(3834, 5120001, 4130009, 1, 1, 0, 6000), +(3835, 5120002, 4000071, 1, 1, 0, 600000), +(3836, 5120002, 4003005, 1, 1, 0, 200000), +(3837, 5120002, 2000002, 1, 1, 0, 20000), +(3838, 5120002, 2000004, 1, 1, 0, 20000), +(3839, 5120002, 2000003, 1, 1, 0, 20000), +(3840, 5120002, 4020003, 1, 1, 0, 9000), +(3841, 5120002, 4010002, 1, 1, 0, 9000), +(3842, 5120002, 4004001, 1, 1, 0, 10000), +(3843, 5120002, 4006001, 1, 1, 0, 10000), +(3844, 5120002, 2041017, 1, 1, 0, 300), +(3845, 5120002, 2044001, 1, 1, 0, 300), +(3846, 5120002, 1312007, 1, 1, 0, 700), +(3847, 5120002, 1040084, 1, 1, 0, 800), +(3848, 5120002, 1060073, 1, 1, 0, 800), +(3849, 5120002, 1002045, 1, 1, 0, 1500), +(3850, 5120002, 1002024, 1, 1, 0, 1500), +(3851, 5120002, 1302010, 1, 1, 0, 700), +(3852, 5120002, 1082009, 1, 1, 0, 1000), +(3853, 5120002, 1082081, 1, 1, 0, 1000), +(3854, 5120002, 1072123, 1, 1, 0, 800), +(3855, 5120002, 1072131, 1, 1, 0, 800), +(3856, 5120002, 1051041, 1, 1, 0, 700), +(3857, 5120002, 1002267, 1, 1, 0, 1500), +(3858, 5120002, 1002631, 1, 1, 0, 1500), +(3859, 5120002, 2330002, 1, 1, 0, 500), +(3860, 5120002, 2044212, 1, 1, 0, 300), +(3861, 5120002, 2049100, 1, 1, 0, 150), +(3862, 5120002, 4130002, 1, 1, 0, 6000), +(3863, 5120002, 4130014, 1, 1, 0, 6000), +(3864, 5120003, 4000072, 1, 1, 0, 600000), +(3865, 5120003, 4003005, 1, 1, 0, 200000), +(3866, 5120003, 2000002, 1, 1, 0, 20000), +(3867, 5120003, 2000004, 1, 1, 0, 20000), +(3868, 5120003, 2000003, 1, 1, 0, 20000), +(3869, 5120003, 4020005, 1, 1, 0, 9000), +(3870, 5120003, 4010001, 1, 1, 0, 9000), +(3871, 5120003, 4004003, 1, 1, 0, 10000), +(3872, 5120003, 4006000, 1, 1, 0, 10000), +(3873, 5120003, 2041023, 1, 1, 0, 300), +(3874, 5120003, 1032019, 1, 1, 0, 1000), +(3875, 5120003, 2070004, 1, 1, 0, 500); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(3876, 5120003, 2070010, 1, 1, 0, 500), +(3877, 5120003, 1002153, 1, 1, 0, 1500), +(3878, 5120003, 1002181, 1, 1, 0, 1500), +(3879, 5120003, 1032011, 1, 1, 0, 1000), +(3880, 5120003, 1041085, 1, 1, 0, 800), +(3881, 5120003, 1061084, 1, 1, 0, 800), +(3882, 5120003, 1051034, 1, 1, 0, 700), +(3883, 5120003, 1061077, 1, 1, 0, 800), +(3884, 5120003, 1041078, 1, 1, 0, 800), +(3885, 5120003, 1050052, 1, 1, 0, 700), +(3886, 5120003, 1072135, 1, 1, 0, 800), +(3887, 5120003, 1082082, 1, 1, 0, 1000), +(3888, 5120003, 1332015, 1, 1, 0, 500), +(3889, 5120003, 1322018, 1, 1, 0, 700), +(3890, 5120003, 1002634, 1, 1, 0, 1500), +(3891, 5120003, 2332000, 1, 1, 0, 500), +(3892, 5120003, 2040323, 1, 1, 0, 300), +(3893, 5120003, 2040924, 1, 1, 0, 300), +(3894, 5120003, 4130005, 1, 1, 0, 6000), +(3895, 5120003, 4130012, 1, 1, 0, 6000), +(3896, 5120100, 4000126, 1, 1, 0, 600000), +(3897, 5120100, 2060000, 1, 1, 0, 300000), +(3898, 5120100, 2061000, 1, 1, 0, 300000), +(3899, 5120100, 2000002, 1, 1, 0, 200000), +(3900, 5120100, 2000004, 1, 1, 0, 999999), +(3901, 5120100, 2002010, 1, 1, 0, 200000), +(3902, 5120100, 1032014, 1, 1, 0, 10000), +(3903, 5120100, 4004000, 1, 1, 0, 100000), +(3904, 5120100, 4020001, 1, 1, 0, 90000), +(3905, 5120100, 4010006, 1, 1, 0, 90000), +(3906, 5120100, 4020007, 1, 1, 0, 90000), +(3907, 5120100, 4011007, 1, 1, 0, 90000), +(3908, 5120100, 2044602, 1, 1, 0, 3000), +(3909, 5120100, 1041082, 1, 1, 0, 8000), +(3910, 5120100, 1061081, 1, 1, 0, 8000), +(3911, 5120100, 1002154, 1, 1, 0, 15000), +(3912, 5120100, 1082010, 1, 1, 0, 10000), +(3913, 5120100, 1082067, 1, 1, 0, 10000), +(3914, 5120100, 1072142, 1, 1, 0, 8000), +(3915, 5120100, 1040096, 1, 1, 0, 8000), +(3916, 5120100, 1060085, 1, 1, 0, 8000), +(3917, 5120100, 1002211, 1, 1, 0, 15000), +(3918, 5120100, 1402011, 1, 1, 0, 7000), +(3919, 5120100, 1092010, 1, 1, 0, 7000), +(3920, 5120100, 1412007, 1, 1, 0, 7000), +(3921, 5120100, 2043017, 1, 1, 0, 3000), +(3922, 5120100, 4130004, 1, 1, 0, 60000), +(3923, 5120100, 4130013, 1, 1, 0, 60000), +(3924, 5120500, 4000283, 1, 1, 0, 600000), +(3925, 5120500, 4000284, 1, 1, 0, 600000), +(3926, 5120500, 4000021, 1, 1, 0, 50000), +(3927, 5120500, 4003005, 1, 1, 0, 200000), +(3928, 5120500, 4004004, 1, 1, 0, 10000), +(3929, 5120500, 2000003, 1, 1, 0, 20000), +(3930, 5120500, 2000002, 1, 1, 0, 20000), +(3931, 5120500, 4020004, 1, 1, 0, 9000), +(3932, 5120500, 4010005, 1, 1, 0, 9000), +(3933, 5120500, 1032021, 1, 1, 0, 1000), +(3934, 5120500, 1072134, 1, 1, 0, 800), +(3935, 5120500, 1082066, 1, 1, 0, 1000), +(3936, 5120500, 1050058, 1, 1, 0, 700), +(3937, 5120500, 1082081, 1, 1, 0, 1000), +(3938, 5120500, 1040099, 1, 1, 0, 800), +(3939, 5120500, 1060088, 1, 1, 0, 800), +(3940, 5120500, 4004002, 1, 1, 0, 10000), +(3941, 5120500, 2043801, 1, 1, 0, 300), +(3942, 5120500, 1432006, 1, 1, 0, 500), +(3943, 5120500, 2043701, 1, 1, 0, 300), +(3944, 5120500, 1082201, 1, 1, 0, 1000), +(3945, 5120500, 2330002, 1, 1, 0, 500), +(3946, 5120500, 2040031, 1, 1, 0, 300), +(3947, 5120500, 2040515, 1, 1, 0, 300), +(3948, 5120500, 2049100, 1, 1, 0, 150), +(3949, 5120500, 4130000, 1, 1, 0, 6000), +(3950, 5120500, 4130009, 1, 1, 0, 6000), +(3951, 5120501, 4000293, 1, 1, 0, 600000), +(3952, 5120501, 2000002, 1, 1, 0, 20000), +(3953, 5120501, 2000003, 1, 1, 0, 20000), +(3954, 5120501, 4020005, 1, 1, 0, 9000), +(3955, 5120501, 4010001, 1, 1, 0, 9000), +(3956, 5120501, 4004003, 1, 1, 0, 10000), +(3957, 5120501, 4006000, 1, 1, 0, 10000), +(3958, 5120501, 2041023, 1, 1, 0, 300), +(3959, 5120501, 1050052, 1, 1, 0, 700), +(3960, 5120501, 1051037, 1, 1, 0, 700), +(3961, 5120501, 1032019, 1, 1, 0, 1000), +(3962, 5120501, 1040102, 1, 1, 0, 800), +(3963, 5120501, 1060090, 1, 1, 0, 800), +(3964, 5120501, 1051041, 1, 1, 0, 700), +(3965, 5120501, 1482008, 1, 1, 0, 500), +(3966, 5120501, 2040423, 1, 1, 0, 300), +(3967, 5120501, 2044310, 1, 1, 0, 300), +(3968, 5120501, 4130016, 1, 1, 0, 6000), +(3969, 5120501, 4130017, 1, 1, 0, 6000), +(3970, 5120502, 4000294, 1, 1, 0, 600000), +(3971, 5120502, 4004004, 1, 1, 0, 10000), +(3972, 5120502, 2000002, 1, 1, 0, 20000), +(3973, 5120502, 2000003, 1, 1, 0, 20000), +(3974, 5120502, 4020005, 1, 1, 0, 9000), +(3975, 5120502, 1002159, 1, 1, 0, 1500), +(3976, 5120502, 1040057, 1, 1, 0, 800), +(3977, 5120502, 1082004, 1, 1, 0, 1000), +(3978, 5120502, 1040096, 1, 1, 0, 800), +(3979, 5120502, 1060085, 1, 1, 0, 800), +(3980, 5120502, 1050052, 1, 1, 0, 700), +(3981, 5120502, 1040087, 1, 1, 0, 800), +(3982, 5120502, 1060076, 1, 1, 0, 800), +(3983, 5120502, 4006000, 1, 1, 0, 10000), +(3984, 5120502, 1040091, 1, 1, 0, 800), +(3985, 5120502, 1060080, 1, 1, 0, 800), +(3986, 5120502, 1052116, 1, 1, 0, 700), +(3987, 5120502, 2040425, 1, 1, 0, 300), +(3988, 5120502, 2040927, 1, 1, 0, 300), +(3989, 5120502, 4130000, 1, 1, 0, 6000), +(3990, 5120502, 4130003, 1, 1, 0, 6000), +(3991, 5120502, 4130005, 1, 1, 0, 6000), +(3992, 5120503, 4000286, 1, 1, 0, 600000), +(3993, 5120503, 2000002, 1, 1, 0, 20000), +(3994, 5120503, 2000003, 1, 1, 0, 20000), +(3995, 5120503, 4004002, 1, 1, 0, 10000), +(3996, 5120503, 4020005, 1, 1, 0, 9000), +(3997, 5120503, 1332011, 1, 1, 0, 500), +(3998, 5120503, 1072118, 1, 1, 0, 800), +(3999, 5120503, 1051038, 1, 1, 0, 700), +(4000, 5120503, 2040901, 1, 1, 0, 300), +(4001, 5120503, 2002003, 1, 1, 0, 20000), +(4002, 5120503, 2044602, 1, 1, 0, 300), +(4003, 5120503, 1041088, 1, 1, 0, 800), +(4004, 5120503, 1060077, 1, 1, 0, 800), +(4005, 5120503, 1312008, 1, 1, 0, 700), +(4006, 5120503, 1072303, 1, 1, 0, 800), +(4007, 5120503, 2040026, 1, 1, 0, 300), +(4008, 5120503, 2040422, 1, 1, 0, 300), +(4009, 5120503, 2040925, 1, 1, 0, 300), +(4010, 5120503, 2040927, 1, 1, 0, 300), +(4011, 5120503, 4130002, 1, 1, 0, 6000), +(4012, 5120503, 4130010, 1, 1, 0, 6000), +(4013, 5120503, 4130013, 1, 1, 0, 6000), +(4014, 5120504, 4000287, 1, 1, 0, 600000), +(4015, 5120504, 2000002, 1, 1, 0, 20000), +(4016, 5120504, 2000003, 1, 1, 0, 20000), +(4017, 5120504, 4020002, 1, 1, 0, 9000), +(4018, 5120504, 4010006, 1, 1, 0, 9000), +(4019, 5120504, 4004000, 1, 1, 0, 10000), +(4020, 5120504, 1002215, 1, 1, 0, 1500), +(4021, 5120504, 1040097, 1, 1, 0, 800), +(4022, 5120504, 1060086, 1, 1, 0, 800), +(4023, 5120504, 1092007, 1, 1, 0, 700), +(4024, 5120504, 1072072, 1, 1, 0, 800), +(4025, 5120504, 1040105, 1, 1, 0, 800), +(4026, 5120504, 1060093, 1, 1, 0, 800), +(4027, 5120504, 4006001, 1, 1, 0, 10000), +(4028, 5120504, 2040504, 1, 1, 0, 300), +(4029, 5120504, 1002634, 1, 1, 0, 1500), +(4030, 5120504, 2330002, 1, 1, 0, 500), +(4031, 5120504, 2040619, 1, 1, 0, 300), +(4032, 5120504, 2040825, 1, 1, 0, 300), +(4033, 5120504, 2040931, 1, 1, 0, 300), +(4034, 5120504, 4130007, 1, 1, 0, 6000), +(4035, 5120504, 4130012, 1, 1, 0, 6000), +(4036, 5120505, 4000021, 1, 1, 0, 50000), +(4037, 5120505, 4003005, 1, 1, 0, 200000), +(4038, 5120505, 2000003, 1, 1, 0, 20000), +(4039, 5120505, 2000002, 1, 1, 0, 20000), +(4040, 5120505, 2000004, 1, 1, 0, 20000), +(4041, 5120505, 4010006, 1, 1, 0, 9000), +(4042, 5120505, 1082066, 1, 1, 0, 1000), +(4043, 5120505, 1072146, 1, 1, 0, 800), +(4044, 5120505, 1041077, 1, 1, 0, 800), +(4045, 5120505, 1061076, 1, 1, 0, 800), +(4046, 5120505, 1051037, 1, 1, 0, 700), +(4047, 5120505, 1002029, 1, 1, 0, 1500), +(4048, 5120505, 1002248, 1, 1, 0, 1500), +(4049, 5120505, 1002269, 1, 1, 0, 1500), +(4050, 5120505, 4000288, 1, 1, 0, 600000), +(4051, 5120505, 2040804, 1, 1, 0, 300), +(4052, 5120505, 2040901, 1, 1, 0, 300), +(4053, 5120505, 1052119, 1, 1, 0, 700), +(4054, 5120505, 2040421, 1, 1, 0, 300), +(4055, 5120505, 2040534, 1, 1, 0, 300), +(4056, 5120505, 2040928, 1, 1, 0, 300), +(4057, 5120505, 2049000, 1, 1, 0, 150), +(4058, 5120505, 4130004, 1, 1, 0, 6000), +(4059, 5120505, 4130008, 1, 1, 0, 6000), +(4060, 5120505, 4130009, 1, 1, 0, 6000), +(4061, 5120506, 4000298, 1, 1, 0, 600000), +(4062, 5120506, 2000002, 1, 1, 0, 20000), +(4063, 5120506, 2000003, 1, 1, 0, 20000), +(4064, 5120506, 4020008, 1, 1, 0, 9000), +(4065, 5120506, 4010006, 1, 1, 0, 9000), +(4066, 5120506, 1002168, 1, 1, 0, 1500), +(4067, 5120506, 1002092, 1, 1, 0, 1500), +(4068, 5120506, 1040086, 1, 1, 0, 800), +(4069, 5120506, 1072127, 1, 1, 0, 800), +(4070, 5120506, 1402006, 1, 1, 0, 700), +(4071, 5120506, 2044201, 1, 1, 0, 300), +(4072, 5120506, 1040095, 1, 1, 0, 800), +(4073, 5120506, 1060084, 1, 1, 0, 800), +(4074, 5120506, 1452004, 1, 1, 0, 500), +(4075, 5120506, 1412007, 1, 1, 0, 700), +(4076, 5120506, 1050059, 1, 1, 0, 700), +(4077, 5120506, 1442010, 1, 1, 0, 700), +(4078, 5120506, 4000299, 1, 1, 0, 600000), +(4079, 5120506, 1492007, 1, 1, 0, 500), +(4080, 5120506, 2330002, 1, 1, 0, 500), +(4081, 5120506, 2040317, 1, 1, 0, 300), +(4082, 5120506, 2040617, 1, 1, 0, 300), +(4083, 5120506, 2040825, 1, 1, 0, 300), +(4084, 5120506, 2040927, 1, 1, 0, 300), +(4085, 5120506, 4130006, 1, 1, 0, 6000), +(4086, 5120506, 4130014, 1, 1, 0, 6000), +(4087, 5130100, 4000014, 1, 1, 0, 600000), +(4088, 5130100, 2000002, 1, 1, 0, 20000), +(4089, 5130100, 2002004, 1, 1, 0, 20000), +(4090, 5130100, 2012000, 1, 1, 0, 20000), +(4091, 5130100, 2012003, 1, 1, 0, 20000), +(4092, 5130100, 4010006, 1, 1, 0, 9000), +(4093, 5130100, 4020007, 1, 1, 0, 9000), +(4094, 5130100, 4000030, 1, 1, 0, 60000), +(4095, 5130100, 2000004, 1, 1, 0, 20000), +(4096, 5130100, 2070003, 1, 1, 0, 500), +(4097, 5130100, 1452007, 1, 1, 0, 500), +(4098, 5130100, 1432005, 1, 1, 0, 500), +(4099, 5130100, 1072108, 1, 1, 0, 800), +(4100, 5130100, 1072116, 1, 1, 0, 800), +(4101, 5130100, 1412005, 1, 1, 0, 700), +(4102, 5130100, 1051030, 1, 1, 0, 700), +(4103, 5130100, 1051037, 1, 1, 0, 700), +(4104, 5130100, 1040089, 1, 1, 0, 800), +(4105, 5130100, 1060078, 1, 1, 0, 800), +(4106, 5130100, 1041077, 1, 1, 0, 800), +(4107, 5130100, 1061076, 1, 1, 0, 800), +(4108, 5130100, 1082083, 1, 1, 0, 1000), +(4109, 5130100, 1382006, 1, 1, 0, 700), +(4110, 5130100, 1092008, 1, 1, 0, 700), +(4111, 5130100, 1462004, 1, 1, 0, 500), +(4112, 5130100, 2002001, 1, 1, 0, 20000), +(4113, 5130100, 4010004, 1, 1, 0, 9000), +(4114, 5130100, 1002631, 1, 1, 0, 1500), +(4115, 5130100, 2040422, 1, 1, 0, 300), +(4116, 5130100, 4130004, 1, 1, 0, 6000), +(4117, 5130100, 4130009, 1, 1, 0, 6000), +(4118, 5130100, 4130015, 1, 1, 0, 6000), +(4119, 5130101, 4000022, 1, 1, 0, 600000), +(4120, 5130101, 4020008, 1, 1, 0, 9000), +(4121, 5130101, 2000004, 1, 1, 0, 20000), +(4122, 5130101, 1092002, 1, 1, 0, 700), +(4123, 5130101, 2000003, 1, 1, 0, 20000), +(4124, 5130101, 2044501, 1, 1, 0, 300), +(4125, 5130101, 2044601, 1, 1, 0, 300), +(4126, 5130101, 1372012, 1, 1, 0, 700), +(4127, 5130101, 1082025, 1, 1, 0, 1000), +(4128, 5130101, 1082076, 1, 1, 0, 1000), +(4129, 5130101, 1072121, 1, 1, 0, 800), +(4130, 5130101, 1072143, 1, 1, 0, 800), +(4131, 5130101, 1041080, 1, 1, 0, 800), +(4132, 5130101, 1061079, 1, 1, 0, 800), +(4133, 5130101, 1002086, 1, 1, 0, 1500), +(4134, 5130101, 1050048, 1, 1, 0, 700), +(4135, 5130101, 1002247, 1, 1, 0, 1500), +(4136, 5130101, 1041091, 1, 1, 0, 800), +(4137, 5130101, 1061090, 1, 1, 0, 800), +(4138, 5130101, 1312009, 1, 1, 0, 700), +(4139, 5130101, 1452005, 1, 1, 0, 500), +(4140, 5130101, 1032002, 1, 1, 0, 1000), +(4141, 5130101, 2070003, 1, 1, 0, 500), +(4142, 5130101, 2000006, 1, 1, 0, 20000), +(4143, 5130101, 1040084, 1, 1, 0, 800), +(4144, 5130101, 1072303, 1, 1, 0, 800), +(4145, 5130101, 4130010, 1, 1, 0, 6000), +(4146, 5130101, 4130013, 1, 1, 0, 6000), +(4147, 5130102, 1050039, 1, 1, 0, 700), +(4148, 5130102, 4000025, 1, 1, 0, 600000), +(4149, 5130102, 4004004, 1, 1, 0, 10000), +(4150, 5130102, 2000003, 1, 1, 0, 20000), +(4151, 5130102, 2000004, 1, 1, 0, 20000), +(4152, 5130102, 4020008, 1, 1, 0, 9000), +(4153, 5130102, 2070004, 1, 1, 0, 500), +(4154, 5130102, 2044201, 1, 1, 0, 300), +(4155, 5130102, 1040085, 1, 1, 0, 800), +(4156, 5130102, 1060074, 1, 1, 0, 800), +(4157, 5130102, 1061069, 1, 1, 0, 800), +(4158, 5130102, 1041074, 1, 1, 0, 800), +(4159, 5130102, 1072120, 1, 1, 0, 800), +(4160, 5130102, 1002209, 1, 1, 0, 1500), +(4161, 5130102, 1002214, 1, 1, 0, 1500), +(4162, 5130102, 1082009, 1, 1, 0, 1000), +(4163, 5130102, 1002022, 1, 1, 0, 1500), +(4164, 5130102, 1032021, 1, 1, 0, 1000), +(4165, 5130102, 1082088, 1, 1, 0, 1000), +(4166, 5130102, 1072139, 1, 1, 0, 800), +(4167, 5130102, 1102018, 1, 1, 0, 1000), +(4168, 5130102, 1002249, 1, 1, 0, 1500), +(4169, 5130102, 1040091, 1, 1, 0, 800), +(4170, 5130102, 1060080, 1, 1, 0, 800), +(4171, 5130102, 1050059, 1, 1, 0, 700), +(4172, 5130102, 1382007, 1, 1, 0, 700), +(4173, 5130102, 1492008, 1, 1, 0, 500), +(4174, 5130102, 2044802, 1, 1, 0, 300), +(4175, 5130102, 2040425, 1, 1, 0, 300), +(4176, 5130102, 2040618, 1, 1, 0, 300), +(4177, 5130102, 4130000, 1, 1, 0, 6000), +(4178, 5130102, 4130016, 1, 1, 0, 6000), +(4179, 5130102, 4130017, 1, 1, 0, 6000), +(4180, 5130103, 4000033, 1, 1, 0, 600000), +(4181, 5130103, 2000002, 1, 1, 0, 20000), +(4182, 5130103, 2000004, 1, 1, 0, 20000), +(4183, 5130103, 2000003, 1, 1, 0, 20000), +(4184, 5130103, 4010000, 1, 1, 0, 9000), +(4185, 5130103, 4020004, 1, 1, 0, 9000), +(4186, 5130103, 4020007, 1, 1, 0, 9000), +(4187, 5130103, 1332031, 1, 1, 0, 500), +(4188, 5130103, 1382019, 1, 1, 0, 700), +(4189, 5130103, 1050046, 1, 1, 0, 700), +(4190, 5130103, 1002218, 1, 1, 0, 1500), +(4191, 5130103, 1002210, 1, 1, 0, 1500), +(4192, 5130103, 1051038, 1, 1, 0, 700), +(4193, 5130103, 1041079, 1, 1, 0, 800), +(4194, 5130103, 1061078, 1, 1, 0, 800), +(4195, 5130103, 1040098, 1, 1, 0, 800), +(4196, 5130103, 1060087, 1, 1, 0, 800), +(4197, 5130103, 1092009, 1, 1, 0, 700), +(4198, 5130103, 1082092, 1, 1, 0, 1000), +(4199, 5130103, 1052119, 1, 1, 0, 700), +(4200, 5130103, 2044801, 1, 1, 0, 300), +(4201, 5130103, 2040027, 1, 1, 0, 300), +(4202, 5130103, 2043212, 1, 1, 0, 300), +(4203, 5130103, 2044212, 1, 1, 0, 300), +(4204, 5130103, 4130007, 1, 1, 0, 6000), +(4205, 5130103, 4130011, 1, 1, 0, 6000), +(4206, 5130104, 4000051, 1, 1, 0, 600000), +(4207, 5130104, 4003004, 1, 1, 0, 200000), +(4208, 5130104, 2041019, 1, 1, 0, 300), +(4209, 5130104, 4000021, 1, 1, 0, 50000), +(4210, 5130104, 2000003, 1, 1, 0, 20000), +(4211, 5130104, 2000004, 1, 1, 0, 20000), +(4212, 5130104, 4020001, 1, 1, 0, 9000), +(4213, 5130104, 4010001, 1, 1, 0, 9000), +(4214, 5130104, 2070003, 1, 1, 0, 500), +(4215, 5130104, 2060000, 1, 1, 0, 30000), +(4216, 5130104, 2061000, 1, 1, 0, 30000), +(4217, 5130104, 4004003, 1, 1, 0, 10000), +(4218, 5130104, 1102000, 1, 1, 0, 1000), +(4219, 5130104, 1082064, 1, 1, 0, 1000), +(4220, 5130104, 1082075, 1, 1, 0, 1000), +(4221, 5130104, 1072119, 1, 1, 0, 800), +(4222, 5130104, 1072127, 1, 1, 0, 800), +(4223, 5130104, 1002213, 1, 1, 0, 1500), +(4224, 5130104, 1002215, 1, 1, 0, 1500), +(4225, 5130104, 1040097, 1, 1, 0, 800), +(4226, 5130104, 1060086, 1, 1, 0, 800), +(4227, 5130104, 1050052, 1, 1, 0, 700), +(4228, 5130104, 1332017, 1, 1, 0, 500), +(4229, 5130104, 1422009, 1, 1, 0, 700), +(4230, 5130104, 1462008, 1, 1, 0, 500), +(4231, 5130104, 1482007, 1, 1, 0, 500), +(4232, 5130104, 2040326, 1, 1, 0, 300), +(4233, 5130104, 2044110, 1, 1, 0, 300), +(4234, 5130104, 2044809, 1, 1, 0, 300), +(4235, 5130104, 4130002, 1, 1, 0, 6000), +(4236, 5130104, 4130015, 1, 1, 0, 6000), +(4237, 5130104, 4130017, 1, 1, 0, 6000), +(4238, 5130105, 4000055, 1, 1, 0, 600000), +(4239, 5130105, 4003004, 1, 1, 0, 200000), +(4240, 5130105, 4004004, 1, 1, 0, 10000), +(4241, 5130105, 4000021, 1, 1, 0, 50000), +(4242, 5130105, 2000003, 1, 1, 0, 20000), +(4243, 5130105, 2000004, 1, 1, 0, 20000), +(4244, 5130105, 4020004, 1, 1, 0, 9000), +(4245, 5130105, 4010005, 1, 1, 0, 9000), +(4246, 5130105, 4004002, 1, 1, 0, 10000), +(4247, 5130105, 2043701, 1, 1, 0, 300), +(4248, 5130105, 1041086, 1, 1, 0, 800), +(4249, 5130105, 1061085, 1, 1, 0, 800), +(4250, 5130105, 1041082, 1, 1, 0, 800), +(4251, 5130105, 1061081, 1, 1, 0, 800), +(4252, 5130105, 1002208, 1, 1, 0, 1500), +(4253, 5130105, 1002216, 1, 1, 0, 1500), +(4254, 5130105, 1032021, 1, 1, 0, 1000), +(4255, 5130105, 1382006, 1, 1, 0, 700), +(4256, 5130105, 1102015, 1, 1, 0, 1000), +(4257, 5130105, 1072151, 1, 1, 0, 800), +(4258, 5130105, 1072138, 1, 1, 0, 800), +(4259, 5130105, 1082059, 1, 1, 0, 1000), +(4260, 5130105, 1082090, 1, 1, 0, 1000), +(4261, 5130105, 1092010, 1, 1, 0, 700), +(4262, 5130105, 1040102, 1, 1, 0, 800), +(4263, 5130105, 1060090, 1, 1, 0, 800), +(4264, 5130105, 2040027, 1, 1, 0, 300), +(4265, 5130105, 2040317, 1, 1, 0, 300), +(4266, 5130105, 2044112, 1, 1, 0, 300), +(4267, 5130105, 4130007, 1, 1, 0, 6000), +(4268, 5130105, 4130017, 1, 1, 0, 6000), +(4269, 5130107, 4000069, 1, 1, 0, 600000), +(4270, 5130107, 2000003, 1, 1, 0, 20000), +(4271, 5130107, 2000004, 1, 1, 0, 20000), +(4272, 5130107, 2000002, 1, 1, 0, 20000), +(4273, 5130107, 4010000, 1, 1, 0, 9000), +(4274, 5130107, 4020006, 1, 1, 0, 9000), +(4275, 5130107, 4004000, 1, 1, 0, 10000), +(4276, 5130107, 1082062, 1, 1, 0, 1000), +(4277, 5130107, 1082071, 1, 1, 0, 1000), +(4278, 5130107, 1072109, 1, 1, 0, 800), +(4279, 5130107, 1072117, 1, 1, 0, 800), +(4280, 5130107, 1322016, 1, 1, 0, 700), +(4281, 5130107, 1312008, 1, 1, 0, 700), +(4282, 5130107, 1051039, 1, 1, 0, 700), +(4283, 5130107, 1040094, 1, 1, 0, 800), +(4284, 5130107, 1060083, 1, 1, 0, 800), +(4285, 5130107, 1032019, 1, 1, 0, 1000), +(4286, 5130107, 1002244, 1, 1, 0, 1500), +(4287, 5130107, 1102016, 1, 1, 0, 1000), +(4288, 5130107, 1040092, 1, 1, 0, 800), +(4289, 5130107, 1060081, 1, 1, 0, 800), +(4290, 5130107, 1002269, 1, 1, 0, 1500), +(4291, 5130107, 1002247, 1, 1, 0, 1500), +(4292, 5130107, 1040105, 1, 1, 0, 800), +(4293, 5130107, 1060093, 1, 1, 0, 800), +(4294, 5130107, 1482008, 1, 1, 0, 500), +(4295, 5130107, 2040026, 1, 1, 0, 300), +(4296, 5130107, 2040515, 1, 1, 0, 300), +(4297, 5130107, 4130001, 1, 1, 0, 6000), +(4298, 5130107, 4130006, 1, 1, 0, 6000), +(4299, 5130107, 4130011, 1, 1, 0, 6000), +(4300, 5130108, 4000069, 1, 1, 0, 600000), +(4301, 5130108, 4000082, 1, 1, 0, 40000), +(4302, 5130108, 2000003, 1, 1, 0, 20000), +(4303, 5130108, 2000004, 1, 1, 0, 20000), +(4304, 5130108, 2000002, 1, 1, 0, 20000), +(4305, 5130108, 4010001, 1, 1, 0, 9000), +(4306, 5130108, 4020004, 1, 1, 0, 9000), +(4307, 5130108, 4004002, 1, 1, 0, 10000), +(4308, 5130108, 2040402, 1, 1, 0, 300), +(4309, 5130108, 1002169, 1, 1, 0, 1500), +(4310, 5130108, 1002155, 1, 1, 0, 1500), +(4311, 5130108, 1041084, 1, 1, 0, 800), +(4312, 5130108, 1061083, 1, 1, 0, 800), +(4313, 5130108, 1332011, 1, 1, 0, 500), +(4314, 5130108, 1032018, 1, 1, 0, 1000), +(4315, 5130108, 1072130, 1, 1, 0, 800), +(4316, 5130108, 1072133, 1, 1, 0, 800), +(4317, 5130108, 1072141, 1, 1, 0, 800), +(4318, 5130108, 1051046, 1, 1, 0, 700), +(4319, 5130108, 1102017, 1, 1, 0, 1000), +(4320, 5130108, 1051043, 1, 1, 0, 700), +(4321, 5130108, 1092011, 1, 1, 0, 700), +(4322, 5130108, 1082094, 1, 1, 0, 1000), +(4323, 5130108, 1002084, 1, 1, 0, 1500), +(4324, 5130108, 1002243, 1, 1, 0, 1500), +(4325, 5130108, 1041100, 1, 1, 0, 800), +(4326, 5130108, 1061099, 1, 1, 0, 800), +(4327, 5130108, 2040029, 1, 1, 0, 300), +(4328, 5130108, 2040419, 1, 1, 0, 300), +(4329, 5130108, 4130002, 1, 1, 0, 6000), +(4330, 5130108, 4130014, 1, 1, 0, 6000), +(4331, 5130108, 4130015, 1, 1, 0, 6000), +(4332, 5140000, 4000052, 1, 1, 0, 600000), +(4333, 5140000, 4003005, 1, 1, 0, 200000), +(4334, 5140000, 4000021, 1, 1, 0, 50000), +(4335, 5140000, 2000003, 1, 1, 0, 20000), +(4336, 5140000, 2000004, 1, 1, 0, 20000), +(4337, 5140000, 2070004, 1, 1, 0, 500), +(4338, 5140000, 4020007, 1, 1, 0, 9000), +(4339, 5140000, 4020000, 1, 1, 0, 9000), +(4340, 5140000, 2060000, 1, 1, 0, 30000), +(4341, 5140000, 2040901, 1, 1, 0, 300), +(4342, 5140000, 4004001, 1, 1, 0, 10000), +(4343, 5140000, 4006001, 1, 1, 0, 10000), +(4344, 5140000, 2061000, 1, 1, 0, 30000), +(4345, 5140000, 1422008, 1, 1, 0, 700), +(4346, 5140000, 1472014, 1, 1, 0, 500), +(4347, 5140000, 1082072, 1, 1, 0, 1000), +(4348, 5140000, 1072114, 1, 1, 0, 800), +(4349, 5140000, 1072127, 1, 1, 0, 800), +(4350, 5140000, 1082066, 1, 1, 0, 1000), +(4351, 5140000, 1072134, 1, 1, 0, 800), +(4352, 5140000, 1050051, 1, 1, 0, 700), +(4353, 5140000, 1041077, 1, 1, 0, 800), +(4354, 5140000, 1061076, 1, 1, 0, 800), +(4355, 5140000, 1050053, 1, 1, 0, 700), +(4356, 5140000, 1032014, 1, 1, 0, 1000), +(4357, 5140000, 1412007, 1, 1, 0, 700), +(4358, 5140000, 1050059, 1, 1, 0, 700), +(4359, 5140000, 1002029, 1, 1, 0, 1500), +(4360, 5140000, 1072151, 1, 1, 0, 800), +(4361, 5140000, 1102021, 1, 1, 0, 1000), +(4362, 5140000, 1041097, 1, 1, 0, 800), +(4363, 5140000, 1061096, 1, 1, 0, 800), +(4364, 5140000, 1002634, 1, 1, 0, 1500), +(4365, 5140000, 2040024, 1, 1, 0, 300), +(4366, 5140000, 2044214, 1, 1, 0, 300), +(4367, 5140000, 4130001, 1, 1, 0, 6000), +(4368, 5140000, 4130003, 1, 1, 0, 6000), +(4369, 5140000, 4130013, 1, 1, 0, 6000), +(4370, 5150000, 4000177, 1, 1, 0, 600000), +(4371, 5150000, 2060000, 1, 1, 0, 30000), +(4372, 5150000, 2061000, 1, 1, 0, 30000), +(4373, 5150000, 1082066, 1, 1, 0, 1000), +(4374, 5150000, 1072146, 1, 1, 0, 800), +(4375, 5150000, 1082087, 1, 1, 0, 1000), +(4376, 5150000, 4010006, 1, 1, 0, 9000), +(4377, 5150000, 2000004, 1, 1, 0, 20000), +(4378, 5150000, 1041077, 1, 1, 0, 800), +(4379, 5150000, 1061076, 1, 1, 0, 800), +(4380, 5150000, 2000003, 1, 1, 0, 20000), +(4381, 5150000, 2000002, 1, 1, 0, 20000), +(4382, 5150000, 1051037, 1, 1, 0, 700), +(4383, 5150000, 1041094, 1, 1, 0, 800), +(4384, 5150000, 1061093, 1, 1, 0, 800), +(4385, 5150000, 1040092, 1, 1, 0, 800), +(4386, 5150000, 1060081, 1, 1, 0, 800), +(4387, 5150000, 2040804, 1, 1, 0, 300), +(4388, 5150000, 2040901, 1, 1, 0, 300), +(4389, 5150000, 1002029, 1, 1, 0, 1500), +(4390, 5150000, 1002248, 1, 1, 0, 1500), +(4391, 5150000, 1002269, 1, 1, 0, 1500), +(4392, 5150000, 1372014, 1, 1, 0, 700), +(4393, 5150000, 1072306, 1, 1, 0, 800), +(4394, 5150000, 2040824, 1, 1, 0, 300), +(4395, 5150000, 2040928, 1, 1, 0, 300), +(4396, 5150000, 4130005, 1, 1, 0, 6000), +(4397, 5150000, 4130007, 1, 1, 0, 6000), +(4398, 5150001, 4000206, 1, 1, 0, 600000), +(4399, 5150001, 2000003, 1, 1, 0, 20000), +(4400, 5150001, 2000004, 1, 1, 0, 20000), +(4401, 5150001, 4020004, 1, 1, 0, 9000), +(4402, 5150001, 4010005, 1, 1, 0, 9000), +(4403, 5150001, 1072122, 1, 1, 0, 800), +(4404, 5150001, 1072132, 1, 1, 0, 800), +(4405, 5150001, 1072140, 1, 1, 0, 800), +(4406, 5150001, 1072128, 1, 1, 0, 800), +(4407, 5150001, 2043801, 1, 1, 0, 300), +(4408, 5150001, 1040092, 1, 1, 0, 800), +(4409, 5150001, 1060081, 1, 1, 0, 800), +(4410, 5150001, 1040098, 1, 1, 0, 800), +(4411, 5150001, 1060087, 1, 1, 0, 800), +(4412, 5150001, 1050059, 1, 1, 0, 700), +(4413, 5150001, 1051045, 1, 1, 0, 700), +(4414, 5150001, 1002030, 1, 1, 0, 1500), +(4415, 5150001, 1002252, 1, 1, 0, 1500), +(4416, 5150001, 1002281, 1, 1, 0, 1500), +(4417, 5150001, 1002287, 1, 1, 0, 1500), +(4418, 5150001, 2044701, 1, 1, 0, 300), +(4419, 5150001, 2043701, 1, 1, 0, 300), +(4420, 5150001, 1072306, 1, 1, 0, 800), +(4421, 5150001, 2043210, 1, 1, 0, 300), +(4422, 5150001, 2044312, 1, 1, 0, 300), +(4423, 5150001, 4130003, 1, 1, 0, 6000), +(4424, 5150001, 4130010, 1, 1, 0, 6000), +(4425, 5200000, 4000083, 1, 1, 0, 600000), +(4426, 5200000, 4010000, 1, 1, 0, 9000), +(4427, 5200000, 4020006, 1, 1, 0, 9000), +(4428, 5200000, 4004003, 1, 1, 0, 10000), +(4429, 5200000, 2044102, 1, 1, 0, 300), +(4430, 5200000, 2000001, 1, 1, 0, 20000), +(4431, 5200000, 2000003, 1, 1, 0, 20000), +(4432, 5200000, 1002129, 1, 1, 0, 1500), +(4433, 5200000, 1322002, 1, 1, 0, 700), +(4434, 5200000, 1322004, 1, 1, 0, 700), +(4435, 5200000, 1040016, 1, 1, 0, 800), +(4436, 5200000, 1060011, 1, 1, 0, 800), +(4437, 5200000, 1041048, 1, 1, 0, 800), +(4438, 5200000, 1061044, 1, 1, 0, 800), +(4439, 5200000, 2070000, 1, 1, 0, 500), +(4440, 5200000, 2060001, 1, 1, 0, 30000), +(4441, 5200000, 2061001, 1, 1, 0, 30000), +(4442, 5200000, 1482002, 1, 1, 0, 500), +(4443, 5200000, 2044212, 1, 1, 0, 300), +(4444, 5200001, 4000084, 1, 1, 0, 600000), +(4445, 5200001, 4020002, 1, 1, 0, 9000), +(4446, 5200001, 4010002, 1, 1, 0, 9000), +(4447, 5200001, 4004001, 1, 1, 0, 10000), +(4448, 5200001, 4006000, 1, 1, 0, 10000), +(4449, 5200001, 2041016, 1, 1, 0, 300), +(4450, 5200001, 2000001, 1, 1, 0, 20000), +(4451, 5200001, 2000003, 1, 1, 0, 20000), +(4452, 5200001, 1002142, 1, 1, 0, 1500), +(4453, 5200001, 1040024, 1, 1, 0, 800), +(4454, 5200001, 1062006, 1, 1, 0, 800), +(4455, 5200001, 1322009, 1, 1, 0, 700), +(4456, 5200001, 1061043, 1, 1, 0, 800), +(4457, 5200001, 1041047, 1, 1, 0, 800), +(4458, 5200001, 1442003, 1, 1, 0, 700), +(4459, 5200001, 1050026, 1, 1, 0, 700), +(4460, 5200001, 2060001, 1, 1, 0, 30000), +(4461, 5200001, 2061001, 1, 1, 0, 30000), +(4462, 5200001, 2049000, 1, 1, 0, 150), +(4463, 5200002, 4000085, 1, 1, 0, 600000), +(4464, 5200002, 4020000, 1, 1, 0, 9000), +(4465, 5200002, 4010005, 1, 1, 0, 9000), +(4466, 5200002, 4004001, 1, 1, 0, 10000), +(4467, 5200002, 4006000, 1, 1, 0, 10000), +(4468, 5200002, 2040805, 1, 1, 0, 300), +(4469, 5200002, 2000001, 1, 1, 0, 20000), +(4470, 5200002, 2000003, 1, 1, 0, 20000), +(4471, 5200002, 1082052, 1, 1, 0, 1000), +(4472, 5200002, 1041059, 1, 1, 0, 800), +(4473, 5200002, 1061055, 1, 1, 0, 800), +(4474, 5200002, 1041054, 1, 1, 0, 800), +(4475, 5200002, 1061050, 1, 1, 0, 800), +(4476, 5200002, 1032009, 1, 1, 0, 1000), +(4477, 5200002, 1041064, 1, 1, 0, 800), +(4478, 5200002, 1072089, 1, 1, 0, 800), +(4479, 5200002, 1452006, 1, 1, 0, 500), +(4480, 5200002, 1050000, 1, 1, 0, 700), +(4481, 5200002, 2060001, 1, 1, 0, 30000), +(4482, 5200002, 2061001, 1, 1, 0, 30000), +(4483, 5200002, 2040926, 1, 1, 0, 300), +(4484, 5220000, 4000043, 1, 1, 0, 600000), +(4485, 5220000, 4000043, 1, 1, 0, 600000), +(4486, 5220000, 4000043, 1, 1, 0, 600000), +(4487, 5220000, 4000044, 1, 1, 0, 600000), +(4488, 5220000, 4000044, 1, 1, 0, 600000), +(4489, 5220000, 4000044, 1, 1, 0, 600000), +(4490, 5220000, 4010003, 1, 1, 0, 90000), +(4491, 5220000, 4020005, 1, 1, 0, 90000), +(4492, 5220000, 2000002, 1, 1, 0, 200000), +(4493, 5220000, 2000003, 1, 1, 0, 200000), +(4494, 5220000, 2001001, 1, 1, 0, 200000), +(4495, 5220000, 2002000, 1, 1, 0, 200000), +(4496, 5220000, 2041022, 1, 1, 0, 3000), +(4497, 5220000, 2044601, 1, 1, 0, 3000), +(4498, 5220000, 2041013, 1, 1, 0, 3000), +(4499, 5220000, 2044701, 1, 1, 0, 3000), +(4500, 5220000, 2048001, 1, 1, 0, 3000), +(4501, 5220000, 2040707, 1, 1, 0, 3000), +(4502, 5220000, 2040004, 1, 1, 0, 3000), +(4503, 5220000, 2040513, 1, 1, 0, 3000), +(4504, 5220000, 2040704, 1, 1, 0, 3000), +(4505, 5220000, 2040804, 1, 1, 0, 3000), +(4506, 5220000, 2040702, 1, 1, 0, 3000), +(4507, 5220000, 2040802, 1, 1, 0, 3000), +(4508, 5220000, 2040902, 1, 1, 0, 3000), +(4509, 5220000, 2041002, 1, 1, 0, 3000), +(4510, 5220000, 2043002, 1, 1, 0, 3000), +(4511, 5220000, 2060000, 1, 1, 0, 300000), +(4512, 5220000, 2061000, 1, 1, 0, 300000), +(4513, 5220000, 1002029, 1, 1, 0, 15000), +(4514, 5220000, 1002246, 1, 1, 0, 15000), +(4515, 5220000, 1002270, 1, 1, 0, 15000), +(4516, 5220000, 1002249, 1, 1, 0, 15000), +(4517, 5220000, 1040093, 1, 1, 0, 8000), +(4518, 5220000, 1041092, 1, 1, 0, 8000), +(4519, 5220000, 1050056, 1, 1, 0, 7000), +(4520, 5220000, 1051047, 1, 1, 0, 7000), +(4521, 5220000, 1050060, 1, 1, 0, 7000), +(4522, 5220000, 1051041, 1, 1, 0, 7000), +(4523, 5220000, 1040100, 1, 1, 0, 8000), +(4524, 5220000, 1041095, 1, 1, 0, 8000), +(4525, 5220000, 1082061, 1, 1, 0, 10000), +(4526, 5220000, 1082088, 1, 1, 0, 10000), +(4527, 5220000, 1082091, 1, 1, 0, 10000), +(4528, 5220000, 1082094, 1, 1, 0, 10000), +(4529, 5220000, 1072149, 1, 1, 0, 8000), +(4530, 5220000, 1072136, 1, 1, 0, 8000), +(4531, 5220000, 1072144, 1, 1, 0, 8000), +(4532, 5220000, 1072152, 1, 1, 0, 8000), +(4533, 5220000, 1002634, 1, 1, 0, 15000), +(4534, 5220000, 1052119, 1, 1, 0, 7000), +(4535, 5220000, 1082201, 1, 1, 0, 10000), +(4536, 5220000, 1072306, 1, 1, 0, 8000), +(4537, 5220000, 3010008, 1, 1, 0, 5000), +(4538, 5220002, 4000029, 1, 1, 0, 600000), +(4539, 5220002, 4000029, 1, 1, 0, 600000), +(4540, 5220002, 4000029, 1, 1, 0, 600000), +(4541, 5220002, 4000031, 1, 1, 0, 600000), +(4542, 5220002, 4000031, 1, 1, 0, 600000), +(4543, 5220002, 4000031, 1, 1, 0, 600000), +(4544, 5220002, 4000021, 1, 1, 0, 500000), +(4545, 5220002, 4000021, 1, 1, 0, 500000), +(4546, 5220002, 4000021, 1, 1, 0, 500000), +(4547, 5220002, 4000026, 1, 1, 0, 600000), +(4548, 5220002, 4000026, 1, 1, 0, 600000), +(4549, 5220002, 4000026, 1, 1, 0, 600000), +(4550, 5220002, 4010005, 1, 1, 0, 90000), +(4551, 5220002, 4020005, 1, 1, 0, 90000), +(4552, 5220002, 2000002, 1, 1, 0, 200000), +(4553, 5220002, 2000003, 1, 1, 0, 200000), +(4554, 5220002, 2002002, 1, 1, 0, 200000), +(4555, 5220002, 2002003, 1, 1, 0, 200000), +(4556, 5220002, 2040301, 1, 1, 0, 3000), +(4557, 5220002, 2040504, 1, 1, 0, 3000), +(4558, 5220002, 2040707, 1, 1, 0, 3000), +(4559, 5220002, 2040801, 1, 1, 0, 3000), +(4560, 5220002, 2040901, 1, 1, 0, 3000), +(4561, 5220002, 2041016, 1, 1, 0, 3000), +(4562, 5220002, 2043801, 1, 1, 0, 3000), +(4563, 5220002, 2044101, 1, 1, 0, 3000), +(4564, 5220002, 2044601, 1, 1, 0, 3000), +(4565, 5220002, 2044701, 1, 1, 0, 3000), +(4566, 5220002, 2040514, 1, 1, 0, 3000), +(4567, 5220002, 2041002, 1, 1, 0, 3000), +(4568, 5220002, 2041017, 1, 1, 0, 3000), +(4569, 5220002, 2043702, 1, 1, 0, 3000), +(4570, 5220002, 2044302, 1, 1, 0, 3000), +(4571, 5220002, 2060000, 1, 1, 0, 300000), +(4572, 5220002, 2061000, 1, 1, 0, 300000), +(4573, 5220002, 1302010, 1, 1, 0, 7000), +(4574, 5220002, 1312008, 1, 1, 0, 7000), +(4575, 5220002, 1322017, 1, 1, 0, 7000), +(4576, 5220002, 1332003, 1, 1, 0, 5000), +(4577, 5220002, 1372007, 1, 1, 0, 7000), +(4578, 5220002, 1382006, 1, 1, 0, 7000), +(4579, 5220002, 1402003, 1, 1, 0, 7000), +(4580, 5220002, 1412003, 1, 1, 0, 7000), +(4581, 5220002, 1422005, 1, 1, 0, 7000), +(4582, 5220002, 1432004, 1, 1, 0, 5000), +(4583, 5220002, 1442005, 1, 1, 0, 7000), +(4584, 5220002, 1452008, 1, 1, 0, 5000), +(4585, 5220002, 1462007, 1, 1, 0, 5000), +(4586, 5220002, 1472021, 1, 1, 0, 5000), +(4587, 5220002, 1482007, 1, 1, 0, 5000), +(4588, 5220002, 1492007, 1, 1, 0, 5000), +(4589, 5220002, 2044802, 1, 1, 0, 3000), +(4590, 5220002, 2044901, 1, 1, 0, 3000), +(4591, 5220002, 1432039, 1, 1, 0, 5000), +(4592, 5220002, 2040931, 1, 1, 0, 3000), +(4593, 5220002, 2040928, 1, 1, 0, 3000), +(4594, 5220003, 4000113, 1, 1, 0, 600000), +(4595, 5220003, 4000113, 1, 1, 0, 600000), +(4596, 5220003, 4000113, 1, 1, 0, 600000), +(4597, 5220003, 4000114, 1, 1, 0, 600000), +(4598, 5220003, 4000114, 1, 1, 0, 600000), +(4599, 5220003, 4000114, 1, 1, 0, 600000), +(4600, 5220003, 4000115, 1, 1, 0, 600000), +(4601, 5220003, 4000115, 1, 1, 0, 600000), +(4602, 5220003, 4000115, 1, 1, 0, 600000), +(4603, 5220003, 4004001, 1, 1, 0, 100000), +(4604, 5220003, 4010003, 1, 1, 0, 90000), +(4605, 5220003, 4020006, 1, 1, 0, 90000), +(4606, 5220003, 2000002, 1, 1, 0, 200000), +(4607, 5220003, 2000003, 1, 1, 0, 200000), +(4608, 5220003, 2002002, 1, 1, 0, 200000), +(4609, 5220003, 2002003, 1, 1, 0, 200000), +(4610, 5220003, 2040401, 1, 1, 0, 3000), +(4611, 5220003, 2040516, 1, 1, 0, 3000), +(4612, 5220003, 2040704, 1, 1, 0, 3000), +(4613, 5220003, 2040804, 1, 1, 0, 3000), +(4614, 5220003, 2041013, 1, 1, 0, 3000), +(4615, 5220003, 2041016, 1, 1, 0, 3000), +(4616, 5220003, 2043201, 1, 1, 0, 3000), +(4617, 5220003, 2043701, 1, 1, 0, 3000), +(4618, 5220003, 2044201, 1, 1, 0, 3000), +(4619, 5220003, 2044301, 1, 1, 0, 3000), +(4620, 5220003, 2040302, 1, 1, 0, 3000), +(4621, 5220003, 2040502, 1, 1, 0, 3000), +(4622, 5220003, 2041002, 1, 1, 0, 3000), +(4623, 5220003, 2043802, 1, 1, 0, 3000), +(4624, 5220003, 2044502, 1, 1, 0, 3000), +(4625, 5220003, 2060000, 1, 1, 0, 300000), +(4626, 5220003, 2061000, 1, 1, 0, 300000), +(4627, 5220003, 1302011, 1, 1, 0, 7000), +(4628, 5220003, 1312009, 1, 1, 0, 7000), +(4629, 5220003, 1322018, 1, 1, 0, 7000), +(4630, 5220003, 1332015, 1, 1, 0, 5000), +(4631, 5220003, 1332017, 1, 1, 0, 5000), +(4632, 5220003, 1372014, 1, 1, 0, 7000), +(4633, 5220003, 1382007, 1, 1, 0, 7000), +(4634, 5220003, 1402011, 1, 1, 0, 7000), +(4635, 5220003, 1412007, 1, 1, 0, 7000), +(4636, 5220003, 1422009, 1, 1, 0, 7000), +(4637, 5220003, 1432006, 1, 1, 0, 5000), +(4638, 5220003, 1442010, 1, 1, 0, 7000), +(4639, 5220003, 1452004, 1, 1, 0, 5000), +(4640, 5220003, 1462008, 1, 1, 0, 5000), +(4641, 5220003, 1472025, 1, 1, 0, 5000), +(4642, 5220003, 1482008, 1, 1, 0, 5000), +(4643, 5220003, 1492008, 1, 1, 0, 5000), +(4644, 5220003, 2044801, 1, 1, 0, 3000), +(4645, 5220003, 2044902, 1, 1, 0, 3000), +(4646, 5220003, 1372033, 1, 1, 0, 7000), +(4647, 5220003, 2040627, 1, 1, 0, 3000), +(4648, 5220003, 2040825, 1, 1, 0, 3000), +(4649, 5220003, 2040933, 1, 1, 0, 3000), +(4650, 5220003, 2044114, 1, 1, 0, 3000), +(4651, 5220003, 2044807, 1, 1, 0, 3000), +(4652, 5220004, 2040001, 1, 1, 0, 3000), +(4653, 5220004, 2040004, 1, 1, 0, 3000), +(4654, 5220004, 2040301, 1, 1, 0, 3000), +(4655, 5220004, 2040401, 1, 1, 0, 3000), +(4656, 5220004, 2040501, 1, 1, 0, 3000), +(4657, 5220004, 2040504, 1, 1, 0, 3000), +(4658, 5220004, 2040601, 1, 1, 0, 3000), +(4659, 5220004, 2040701, 1, 1, 0, 3000), +(4660, 5220004, 2040704, 1, 1, 0, 3000), +(4661, 5220004, 2040707, 1, 1, 0, 3000), +(4662, 5220004, 2040801, 1, 1, 0, 3000), +(4663, 5220004, 2041001, 1, 1, 0, 3000), +(4664, 5220004, 2041004, 1, 1, 0, 3000), +(4665, 5220004, 2040804, 1, 1, 0, 3000), +(4666, 5220004, 2040901, 1, 1, 0, 3000), +(4667, 5220004, 2070005, 1, 1, 0, 4000), +(4668, 5220004, 1102002, 1, 1, 0, 10000), +(4669, 5220004, 1032013, 1, 1, 0, 10000), +(4670, 5220004, 2000005, 1, 1, 0, 999999), +(4671, 5220004, 1452009, 1, 1, 0, 5000), +(4672, 5220004, 1382007, 1, 1, 0, 7000), +(4673, 5220004, 1462009, 1, 1, 0, 5000), +(4674, 5220004, 1322019, 1, 1, 0, 7000), +(4675, 5220004, 1312010, 1, 1, 0, 7000), +(4676, 5220004, 1412008, 1, 1, 0, 7000), +(4677, 5220004, 1422010, 1, 1, 0, 7000), +(4678, 5220004, 1472026, 1, 1, 0, 5000), +(4679, 5220004, 1432007, 1, 1, 0, 5000), +(4680, 5220004, 1442008, 1, 1, 0, 7000), +(4681, 5220004, 1302012, 1, 1, 0, 7000), +(4682, 5220004, 1402012, 1, 1, 0, 7000), +(4683, 5220004, 1332018, 1, 1, 0, 5000), +(4684, 5220004, 1332019, 1, 1, 0, 5000), +(4685, 5220004, 2043001, 1, 1, 0, 3000), +(4686, 5220004, 2043101, 1, 1, 0, 3000), +(4687, 5220004, 2043201, 1, 1, 0, 3000), +(4688, 5220004, 2043301, 1, 1, 0, 3000), +(4689, 5220004, 2043701, 1, 1, 0, 3000), +(4690, 5220004, 2043801, 1, 1, 0, 3000), +(4691, 5220004, 2044001, 1, 1, 0, 3000), +(4692, 5220004, 2044101, 1, 1, 0, 3000), +(4693, 5220004, 2044201, 1, 1, 0, 3000), +(4694, 5220004, 2044301, 1, 1, 0, 3000), +(4695, 5220004, 2044401, 1, 1, 0, 3000), +(4696, 5220004, 2044501, 1, 1, 0, 3000), +(4697, 5220004, 2044601, 1, 1, 0, 3000), +(4698, 5220004, 2044701, 1, 1, 0, 3000), +(4699, 5220004, 2000004, 1, 1, 0, 999999), +(4700, 5220004, 1092017, 1, 1, 0, 7000), +(4701, 5250000, 2000002, 1, 1, 0, 20000), +(4702, 5250000, 2000003, 1, 1, 0, 20000), +(4703, 5250000, 4010002, 1, 1, 0, 9000), +(4704, 5250000, 4020002, 1, 1, 0, 9000), +(4705, 5250000, 2044312, 1, 1, 0, 300), +(4706, 5250000, 1002208, 1, 1, 0, 1500), +(4707, 5250000, 1052116, 1, 1, 0, 700), +(4708, 5250000, 1082010, 1, 1, 0, 1000), +(4709, 5250000, 1072143, 1, 1, 0, 800), +(4710, 5250000, 1452004, 1, 1, 0, 500), +(4711, 5250000, 4000437, 1, 1, 0, 600000), +(4712, 5250000, 4130003, 1, 1, 0, 6000), +(4713, 5250000, 4130014, 1, 1, 0, 6000), +(4714, 5250000, 4130017, 1, 1, 0, 6000), +(4715, 5250001, 2000002, 1, 1, 0, 20000), +(4716, 5250001, 2000003, 1, 1, 0, 20000), +(4717, 5250001, 4010000, 1, 1, 0, 9000), +(4718, 5250001, 4020000, 1, 1, 0, 9000), +(4719, 5250001, 2041014, 1, 1, 0, 300), +(4720, 5250001, 1002214, 1, 1, 0, 1500), +(4721, 5250001, 1040096, 1, 1, 0, 800), +(4722, 5250001, 1041079, 1, 1, 0, 800), +(4723, 5250001, 1082198, 1, 1, 0, 1000), +(4724, 5250001, 1072133, 1, 1, 0, 800), +(4725, 5250001, 1372007, 1, 1, 0, 700), +(4726, 5250001, 4000439, 1, 1, 0, 600000), +(4727, 5250001, 4130015, 1, 1, 0, 6000), +(4728, 5250001, 4130016, 1, 1, 0, 6000), +(4729, 5250002, 4000440, 1, 1, 0, 600000), +(4730, 5250002, 2000002, 1, 1, 0, 20000), +(4731, 5250002, 2000003, 1, 1, 0, 20000), +(4732, 5250002, 4010001, 1, 1, 0, 9000), +(4733, 5250002, 4020003, 1, 1, 0, 9000), +(4734, 5250002, 2044802, 1, 1, 0, 300), +(4735, 5250002, 1002634, 1, 1, 0, 1500), +(4736, 5250002, 1040092, 1, 1, 0, 800), +(4737, 5250002, 1041093, 1, 1, 0, 800), +(4738, 5250002, 1082087, 1, 1, 0, 1000), +(4739, 5250002, 1072145, 1, 1, 0, 800), +(4740, 5250002, 1332015, 1, 1, 0, 500), +(4741, 5250002, 4130001, 1, 1, 0, 6000), +(4742, 5250002, 4130014, 1, 1, 0, 6000), +(4743, 5300000, 4000086, 1, 1, 0, 600000), +(4744, 5300000, 4010001, 1, 1, 0, 9000), +(4745, 5300000, 4020003, 1, 1, 0, 9000), +(4746, 5300000, 4004000, 1, 1, 0, 10000), +(4747, 5300000, 4006001, 1, 1, 0, 10000), +(4748, 5300000, 2000002, 1, 1, 0, 20000), +(4749, 5300000, 2000003, 1, 1, 0, 20000), +(4750, 5300000, 2050001, 1, 1, 0, 50000), +(4751, 5300000, 2070001, 1, 1, 0, 500), +(4752, 5300000, 4020007, 1, 1, 0, 9000), +(4753, 5300000, 1082016, 1, 1, 0, 1000), +(4754, 5300000, 1002035, 1, 1, 0, 1500), +(4755, 5300000, 1002165, 1, 1, 0, 1500), +(4756, 5300000, 1041048, 1, 1, 0, 800), +(4757, 5300000, 1061044, 1, 1, 0, 800), +(4758, 5300000, 1072081, 1, 1, 0, 800), +(4759, 5300000, 1072075, 1, 1, 0, 800), +(4760, 5300000, 1382017, 1, 1, 0, 700), +(4761, 5300000, 1032002, 1, 1, 0, 1000), +(4762, 5300000, 1040030, 1, 1, 0, 800), +(4763, 5300000, 1060020, 1, 1, 0, 800), +(4764, 5300000, 1082054, 1, 1, 0, 1000), +(4765, 5300000, 2040705, 1, 1, 0, 300), +(4766, 5300000, 1482004, 1, 1, 0, 500), +(4767, 5300000, 4130000, 1, 1, 0, 6000), +(4768, 5300000, 4130005, 1, 1, 0, 6000), +(4769, 5300000, 4130011, 1, 1, 0, 6000), +(4770, 5300001, 4000087, 1, 1, 0, 600000), +(4771, 5300001, 4010000, 1, 1, 0, 9000), +(4772, 5300001, 4020004, 1, 1, 0, 9000), +(4773, 5300001, 4004001, 1, 1, 0, 10000), +(4774, 5300001, 4006001, 1, 1, 0, 10000), +(4775, 5300001, 2040402, 1, 1, 0, 300), +(4776, 5300001, 2000002, 1, 1, 0, 20000), +(4777, 5300001, 2000003, 1, 1, 0, 20000), +(4778, 5300001, 2050000, 1, 1, 0, 50000), +(4779, 5300001, 1002175, 1, 1, 0, 1500), +(4780, 5300001, 1402002, 1, 1, 0, 700), +(4781, 5300001, 1050029, 1, 1, 0, 700), +(4782, 5300001, 1002138, 1, 1, 0, 1500), +(4783, 5300001, 1041068, 1, 1, 0, 800), +(4784, 5300001, 1061063, 1, 1, 0, 800), +(4785, 5300001, 1082036, 1, 1, 0, 1000), +(4786, 5300001, 1072105, 1, 1, 0, 800), +(4787, 5300001, 1332014, 1, 1, 0, 500), +(4788, 5300001, 1051023, 1, 1, 0, 700), +(4789, 5300001, 1002625, 1, 1, 0, 1500), +(4790, 5300001, 2040623, 1, 1, 0, 300), +(4791, 5300001, 4130013, 1, 1, 0, 6000), +(4792, 5300001, 4130016, 1, 1, 0, 6000), +(4793, 5300100, 4000041, 1, 1, 0, 600000), +(4794, 5300100, 4004004, 1, 1, 0, 10000), +(4795, 5300100, 2000002, 1, 1, 0, 20000), +(4796, 5300100, 2000003, 1, 1, 0, 20000), +(4797, 5300100, 4020008, 1, 1, 0, 9000), +(4798, 5300100, 4010006, 1, 1, 0, 9000), +(4799, 5300100, 2000004, 1, 1, 0, 20000), +(4800, 5300100, 4006000, 1, 1, 0, 10000), +(4801, 5300100, 1002168, 1, 1, 0, 1500), +(4802, 5300100, 1002092, 1, 1, 0, 1500), +(4803, 5300100, 1040086, 1, 1, 0, 800), +(4804, 5300100, 1060000, 1, 1, 0, 800), +(4805, 5300100, 1051031, 1, 1, 0, 700), +(4806, 5300100, 1051039, 1, 1, 0, 700), +(4807, 5300100, 1082011, 1, 1, 0, 1000), +(4808, 5300100, 1452008, 1, 1, 0, 500), +(4809, 5300100, 1072143, 1, 1, 0, 800), +(4810, 5300100, 1472020, 1, 1, 0, 500), +(4811, 5300100, 1032019, 1, 1, 0, 1000), +(4812, 5300100, 1040090, 1, 1, 0, 800), +(4813, 5300100, 1060079, 1, 1, 0, 800), +(4814, 5300100, 1452004, 1, 1, 0, 500), +(4815, 5300100, 1072137, 1, 1, 0, 800), +(4816, 5300100, 1082093, 1, 1, 0, 1000), +(4817, 5300100, 1082198, 1, 1, 0, 1000), +(4818, 5300100, 4130006, 1, 1, 0, 6000), +(4819, 5300100, 4130010, 1, 1, 0, 6000), +(4820, 5300100, 4130016, 1, 1, 0, 6000), +(4821, 5400000, 4000088, 1, 1, 0, 600000), +(4822, 5400000, 4020005, 1, 1, 0, 9000), +(4823, 5400000, 4010003, 1, 1, 0, 9000), +(4824, 5400000, 4004003, 1, 1, 0, 10000), +(4825, 5400000, 4006000, 1, 1, 0, 10000), +(4826, 5400000, 2043801, 1, 1, 0, 300), +(4827, 5400000, 2000002, 1, 1, 0, 20000), +(4828, 5400000, 2000003, 1, 1, 0, 20000), +(4829, 5400000, 2050002, 1, 1, 0, 50000), +(4830, 5400000, 1432008, 1, 1, 0, 500), +(4831, 5400000, 2070002, 1, 1, 0, 500), +(4832, 5400000, 2060001, 1, 1, 0, 30000), +(4833, 5400000, 2061001, 1, 1, 0, 30000), +(4834, 5400000, 1060045, 1, 1, 0, 800), +(4835, 5400000, 1040059, 1, 1, 0, 800), +(4836, 5400000, 1002177, 1, 1, 0, 1500), +(4837, 5400000, 1041067, 1, 1, 0, 800), +(4838, 5400000, 1061062, 1, 1, 0, 800), +(4839, 5400000, 1051001, 1, 1, 0, 700), +(4840, 5400000, 1422008, 1, 1, 0, 700), +(4841, 5400000, 1002021, 1, 1, 0, 1500), +(4842, 5400000, 1082062, 1, 1, 0, 1000), +(4843, 5400000, 1072108, 1, 1, 0, 800), +(4844, 5400000, 1422007, 1, 1, 0, 700), +(4845, 5400000, 1082192, 1, 1, 0, 1000), +(4846, 5400000, 2044801, 1, 1, 0, 300), +(4847, 5400000, 2044809, 1, 1, 0, 300), +(4848, 5400000, 4130002, 1, 1, 0, 6000), +(4849, 5400000, 4130011, 1, 1, 0, 6000), +(4850, 5400000, 4130014, 1, 1, 0, 6000), +(4851, 6090000, 4000336, 1, 1, 0, 600000), +(4852, 6090001, 4000415, 1, 1, 0, 600000), +(4853, 6090003, 4000416, 1, 1, 0, 600000), +(4854, 6090004, 4000419, 1, 1, 0, 600000), +(4855, 6110300, 2000006, 1, 1, 0, 20000), +(4856, 6110300, 4020007, 1, 1, 0, 9000), +(4857, 6110300, 4010000, 1, 1, 0, 9000), +(4858, 6110300, 4004000, 1, 1, 0, 10000), +(4859, 6110300, 1041078, 1, 1, 0, 800), +(4860, 6110300, 1041089, 1, 1, 0, 800), +(4861, 6110300, 1002022, 1, 1, 0, 1500), +(4862, 6110300, 1032019, 1, 1, 0, 1000), +(4863, 6110300, 1051047, 1, 1, 0, 700), +(4864, 6110300, 1040099, 1, 1, 0, 800), +(4865, 6110300, 1060088, 1, 1, 0, 800), +(4866, 6110300, 1432006, 1, 1, 0, 500), +(4867, 6110300, 1462008, 1, 1, 0, 500), +(4868, 6110300, 1472024, 1, 1, 0, 500), +(4869, 6110300, 1102022, 1, 1, 0, 1000), +(4870, 6110300, 1382007, 1, 1, 0, 700), +(4871, 6110300, 1472026, 1, 1, 0, 500), +(4872, 6110300, 1082107, 1, 1, 0, 1000), +(4873, 6110300, 1040104, 1, 1, 0, 800), +(4874, 6110300, 1060092, 1, 1, 0, 800), +(4875, 6110300, 1072157, 1, 1, 0, 800), +(4876, 6110300, 1032020, 1, 1, 0, 1000), +(4877, 6110300, 1051062, 1, 1, 0, 700), +(4878, 6110300, 4000354, 1, 1, 0, 600000), +(4879, 6110300, 1072306, 1, 1, 0, 800), +(4880, 6110300, 2040933, 1, 1, 0, 300), +(4881, 6110300, 2049100, 1, 1, 0, 150), +(4882, 6110300, 4130004, 1, 1, 0, 6000), +(4883, 6110300, 4130009, 1, 1, 0, 6000), +(4884, 6110300, 4130011, 1, 1, 0, 6000), +(4885, 6110301, 2000002, 1, 1, 0, 20000), +(4886, 6110301, 2000006, 1, 1, 0, 20000), +(4887, 6110301, 2000004, 1, 1, 0, 20000), +(4888, 6110301, 4020005, 1, 1, 0, 9000), +(4889, 6110301, 4010002, 1, 1, 0, 9000), +(4890, 6110301, 4004001, 1, 1, 0, 10000), +(4891, 6110301, 1092015, 1, 1, 0, 700), +(4892, 6110301, 1472027, 1, 1, 0, 500), +(4893, 6110301, 1050088, 1, 1, 0, 700), +(4894, 6110301, 1072080, 1, 1, 0, 800), +(4895, 6110301, 1072085, 1, 1, 0, 800), +(4896, 6110301, 1032015, 1, 1, 0, 1000), +(4897, 6110301, 1050081, 1, 1, 0, 700), +(4898, 6110301, 1051078, 1, 1, 0, 700), +(4899, 6110301, 1002289, 1, 1, 0, 1500), +(4900, 6110301, 1462008, 1, 1, 0, 500), +(4901, 6110301, 1322018, 1, 1, 0, 700), +(4902, 6110301, 2043302, 1, 1, 0, 300), +(4903, 6110301, 4000363, 1, 1, 0, 600000), +(4904, 6110301, 1072309, 1, 1, 0, 800), +(4905, 6110301, 2330003, 1, 1, 0, 500), +(4906, 6110301, 2040621, 1, 1, 0, 300), +(4907, 6110301, 2049000, 1, 1, 0, 150), +(4908, 6110301, 4130001, 1, 1, 0, 6000), +(4909, 6110301, 4130007, 1, 1, 0, 6000), +(4910, 6130100, 4000014, 1, 1, 0, 600000), +(4911, 6130100, 2000006, 1, 1, 0, 20000), +(4912, 6130100, 2000004, 1, 1, 0, 20000), +(4913, 6130100, 4020007, 1, 1, 0, 9000), +(4914, 6130100, 4010005, 1, 1, 0, 9000), +(4915, 6130100, 2070005, 1, 1, 0, 400), +(4916, 6130100, 4000030, 1, 1, 0, 60000), +(4917, 6130100, 1060068, 1, 1, 0, 800), +(4918, 6130100, 1040080, 1, 1, 0, 800), +(4919, 6130100, 1040083, 1, 1, 0, 800), +(4920, 6130100, 1060072, 1, 1, 0, 800), +(4921, 6130100, 1041080, 1, 1, 0, 800), +(4922, 6130100, 1061079, 1, 1, 0, 800), +(4923, 6130100, 1082067, 1, 1, 0, 1000), +(4924, 6130100, 1092004, 1, 1, 0, 700), +(4925, 6130100, 1050056, 1, 1, 0, 700), +(4926, 6130100, 1372014, 1, 1, 0, 700), +(4927, 6130100, 1002246, 1, 1, 0, 1500), +(4928, 6130100, 1002248, 1, 1, 0, 1500), +(4929, 6130100, 1072136, 1, 1, 0, 800), +(4930, 6130100, 1072146, 1, 1, 0, 800), +(4931, 6130100, 1072148, 1, 1, 0, 800), +(4932, 6130100, 1040100, 1, 1, 0, 800), +(4933, 6130100, 1060089, 1, 1, 0, 800), +(4934, 6130100, 1102022, 1, 1, 0, 1000), +(4935, 6130100, 1060091, 1, 1, 0, 800), +(4936, 6130100, 1040103, 1, 1, 0, 800), +(4937, 6130100, 1072160, 1, 1, 0, 800), +(4938, 6130100, 1072162, 1, 1, 0, 800), +(4939, 6130100, 1082106, 1, 1, 0, 1000), +(4940, 6130100, 1482008, 1, 1, 0, 500), +(4941, 6130100, 2331000, 1, 1, 0, 500), +(4942, 6130100, 2040319, 1, 1, 0, 300), +(4943, 6130100, 4130004, 1, 1, 0, 6000), +(4944, 6130100, 4130014, 1, 1, 0, 6000), +(4945, 6130101, 4000040, 1, 1, 0, 600000), +(4946, 6130101, 1092012, 1, 1, 0, 7000), +(4947, 6130101, 2070006, 1, 1, 0, 2000), +(4948, 6130101, 2040001, 1, 1, 0, 3000), +(4949, 6130101, 2040004, 1, 1, 0, 3000), +(4950, 6130101, 2040301, 1, 1, 0, 3000), +(4951, 6130101, 2040401, 1, 1, 0, 3000), +(4952, 6130101, 2040501, 1, 1, 0, 3000), +(4953, 6130101, 2040504, 1, 1, 0, 3000), +(4954, 6130101, 2040601, 1, 1, 0, 3000), +(4955, 6130101, 2040701, 1, 1, 0, 3000), +(4956, 6130101, 2040704, 1, 1, 0, 3000), +(4957, 6130101, 2040707, 1, 1, 0, 3000), +(4958, 6130101, 2040801, 1, 1, 0, 3000), +(4959, 6130101, 2041001, 1, 1, 0, 3000), +(4960, 6130101, 2041004, 1, 1, 0, 3000), +(4961, 6130101, 2040804, 1, 1, 0, 3000), +(4962, 6130101, 2040901, 1, 1, 0, 3000), +(4963, 6130101, 1032019, 1, 1, 0, 10000), +(4964, 6130101, 1382006, 1, 1, 0, 7000), +(4965, 6130101, 2331000, 1, 1, 0, 5000), +(4966, 6130101, 2040427, 1, 1, 0, 3000), +(4967, 6130101, 2040618, 1, 1, 0, 3000), +(4968, 6130101, 2040619, 1, 1, 0, 3000), +(4969, 6130101, 2040024, 1, 1, 0, 3000), +(4970, 6130101, 2043212, 1, 1, 0, 3000), +(4971, 6130103, 4000050, 1, 1, 0, 600000), +(4972, 6130103, 2000006, 1, 1, 0, 20000), +(4973, 6130103, 2000004, 1, 1, 0, 20000), +(4974, 6130103, 4020008, 1, 1, 0, 9000), +(4975, 6130103, 4010001, 1, 1, 0, 9000), +(4976, 6130103, 2040401, 1, 1, 0, 300), +(4977, 6130103, 4004002, 1, 1, 0, 10000), +(4978, 6130103, 1050045, 1, 1, 0, 700), +(4979, 6130103, 1040087, 1, 1, 0, 800), +(4980, 6130103, 1060076, 1, 1, 0, 800), +(4981, 6130103, 1040097, 1, 1, 0, 800), +(4982, 6130103, 1060086, 1, 1, 0, 800), +(4983, 6130103, 1002170, 1, 1, 0, 1500), +(4984, 6130103, 1002025, 1, 1, 0, 1500), +(4985, 6130103, 1040093, 1, 1, 0, 800), +(4986, 6130103, 1060082, 1, 1, 0, 800), +(4987, 6130103, 1072150, 1, 1, 0, 800), +(4988, 6130103, 1072138, 1, 1, 0, 800), +(4989, 6130103, 1082060, 1, 1, 0, 1000), +(4990, 6130103, 1072145, 1, 1, 0, 800), +(4991, 6130103, 1102024, 1, 1, 0, 1000), +(4992, 6130103, 1072157, 1, 1, 0, 800), +(4993, 6130103, 1002286, 1, 1, 0, 1500), +(4994, 6130103, 1302012, 1, 1, 0, 700), +(4995, 6130103, 1082095, 1, 1, 0, 1000), +(4996, 6130103, 2040418, 1, 1, 0, 300), +(4997, 6130103, 4130008, 1, 1, 0, 6000), +(4998, 6130103, 4130015, 1, 1, 0, 6000), +(4999, 6130200, 4000128, 1, 1, 0, 600000), +(5000, 6130200, 4010001, 1, 1, 0, 9000), +(5001, 6130200, 2000006, 1, 1, 0, 20000), +(5002, 6130200, 2000004, 1, 1, 0, 20000), +(5003, 6130200, 4020008, 1, 1, 0, 9000), +(5004, 6130200, 4010005, 1, 1, 0, 9000), +(5005, 6130200, 2043701, 1, 1, 0, 300), +(5006, 6130200, 2043801, 1, 1, 0, 300), +(5007, 6130200, 2041001, 1, 1, 0, 300), +(5008, 6130200, 4004001, 1, 1, 0, 10000), +(5009, 6130200, 1002182, 1, 1, 0, 1500), +(5010, 6130200, 1002093, 1, 1, 0, 1500), +(5011, 6130200, 1050046, 1, 1, 0, 700), +(5012, 6130200, 1032012, 1, 1, 0, 1000), +(5013, 6130200, 1040088, 1, 1, 0, 800), +(5014, 6130200, 1060077, 1, 1, 0, 800), +(5015, 6130200, 1072122, 1, 1, 0, 800), +(5016, 6130200, 1082094, 1, 1, 0, 1000), +(5017, 6130200, 1082061, 1, 1, 0, 1000), +(5018, 6130200, 1082087, 1, 1, 0, 1000), +(5019, 6130200, 1072152, 1, 1, 0, 800), +(5020, 6130200, 1051042, 1, 1, 0, 700), +(5021, 6130200, 1302011, 1, 1, 0, 700), +(5022, 6130200, 1102015, 1, 1, 0, 1000), +(5023, 6130200, 1452009, 1, 1, 0, 500), +(5024, 6130200, 1082098, 1, 1, 0, 1000), +(5025, 6130200, 1312010, 1, 1, 0, 700), +(5026, 6130200, 1072163, 1, 1, 0, 800), +(5027, 6130200, 1052122, 1, 1, 0, 700), +(5028, 6130200, 2043112, 1, 1, 0, 300), +(5029, 6130200, 2044312, 1, 1, 0, 300), +(5030, 6130200, 4130004, 1, 1, 0, 6000), +(5031, 6130200, 4130012, 1, 1, 0, 6000), +(5032, 6130200, 4130015, 1, 1, 0, 6000), +(5033, 6130202, 4000173, 1, 1, 0, 600000), +(5034, 6130202, 2000006, 1, 1, 0, 20000), +(5035, 6130202, 2000004, 1, 1, 0, 20000), +(5036, 6130202, 4020008, 1, 1, 0, 9000), +(5037, 6130202, 4010001, 1, 1, 0, 9000), +(5038, 6130202, 1432004, 1, 1, 0, 500), +(5039, 6130202, 1442009, 1, 1, 0, 700), +(5040, 6130202, 1452008, 1, 1, 0, 500), +(5041, 6130202, 1462006, 1, 1, 0, 500), +(5042, 6130202, 1082086, 1, 1, 0, 1000), +(5043, 6130202, 1082093, 1, 1, 0, 1000), +(5044, 6130202, 1072144, 1, 1, 0, 800), +(5045, 6130202, 2040401, 1, 1, 0, 300), +(5046, 6130202, 1060088, 1, 1, 0, 800), +(5047, 6130202, 1040099, 1, 1, 0, 800), +(5048, 6130202, 1102018, 1, 1, 0, 1000), +(5049, 6130202, 1041091, 1, 1, 0, 800), +(5050, 6130202, 1061090, 1, 1, 0, 800), +(5051, 6130202, 2040004, 1, 1, 0, 300), +(5052, 6130202, 4004002, 1, 1, 0, 10000), +(5053, 6130202, 2040501, 1, 1, 0, 300), +(5054, 6130202, 1040089, 1, 1, 0, 800), +(5055, 6130202, 1060078, 1, 1, 0, 800), +(5056, 6130202, 4130002, 1, 1, 0, 6000), +(5057, 6130203, 4000283, 1, 1, 0, 600000), +(5058, 6130203, 4000285, 1, 1, 0, 600000), +(5059, 6130203, 4000021, 1, 1, 0, 50000), +(5060, 6130203, 4003005, 1, 1, 0, 200000), +(5061, 6130203, 2000006, 1, 1, 0, 20000), +(5062, 6130203, 2000004, 1, 1, 0, 20000), +(5063, 6130203, 4020007, 1, 1, 0, 9000), +(5064, 6130203, 4010005, 1, 1, 0, 9000), +(5065, 6130203, 2070005, 1, 1, 0, 400), +(5066, 6130203, 1041083, 1, 1, 0, 800), +(5067, 6130203, 1061082, 1, 1, 0, 800), +(5068, 6130203, 1072090, 1, 1, 0, 800), +(5069, 6130203, 1041079, 1, 1, 0, 800), +(5070, 6130203, 1061078, 1, 1, 0, 800), +(5071, 6130203, 1002215, 1, 1, 0, 1500), +(5072, 6130203, 1102015, 1, 1, 0, 1000), +(5073, 6130203, 1050056, 1, 1, 0, 700), +(5074, 6130203, 1002637, 1, 1, 0, 1500), +(5075, 6130203, 2040622, 1, 1, 0, 300), +(5076, 6130203, 2043112, 1, 1, 0, 300), +(5077, 6130203, 2044014, 1, 1, 0, 300), +(5078, 6130203, 4130002, 1, 1, 0, 6000), +(5079, 6130203, 4130005, 1, 1, 0, 6000), +(5080, 6130203, 4130013, 1, 1, 0, 6000), +(5081, 6130204, 4000295, 1, 1, 0, 600000), +(5082, 6130204, 4003005, 1, 1, 0, 200000), +(5083, 6130204, 4000021, 1, 1, 0, 50000), +(5084, 6130204, 2000002, 1, 1, 0, 20000), +(5085, 6130204, 2000006, 1, 1, 0, 20000), +(5086, 6130204, 2000004, 1, 1, 0, 20000), +(5087, 6130204, 4020004, 1, 1, 0, 9000), +(5088, 6130204, 4010006, 1, 1, 0, 9000), +(5089, 6130204, 1040093, 1, 1, 0, 800), +(5090, 6130204, 1060082, 1, 1, 0, 800), +(5091, 6130204, 1051064, 1, 1, 0, 700), +(5092, 6130204, 1051065, 1, 1, 0, 700), +(5093, 6130204, 1082062, 1, 1, 0, 1000), +(5094, 6130204, 1040104, 1, 1, 0, 800), +(5095, 6130204, 1060092, 1, 1, 0, 800), +(5096, 6130204, 4004000, 1, 1, 0, 10000), +(5097, 6130204, 1040107, 1, 1, 0, 800), +(5098, 6130204, 1060095, 1, 1, 0, 800), +(5099, 6130204, 2040301, 1, 1, 0, 300), +(5100, 6130204, 2043001, 1, 1, 0, 300), +(5101, 6130204, 1402011, 1, 1, 0, 700), +(5102, 6130204, 1402003, 1, 1, 0, 700), +(5103, 6130204, 1052119, 1, 1, 0, 700), +(5104, 6130204, 2330003, 1, 1, 0, 500), +(5105, 6130204, 2044802, 1, 1, 0, 300), +(5106, 6130204, 2040421, 1, 1, 0, 300), +(5107, 6130204, 2049000, 1, 1, 0, 150), +(5108, 6130204, 4130000, 1, 1, 0, 6000), +(5109, 6130204, 4130012, 1, 1, 0, 6000), +(5110, 6130207, 4000282, 1, 1, 0, 600000), +(5111, 6130207, 4000021, 1, 1, 0, 50000), +(5112, 6130207, 4003005, 1, 1, 0, 200000), +(5113, 6130207, 2000002, 1, 1, 0, 20000), +(5114, 6130207, 2000006, 1, 1, 0, 20000), +(5115, 6130207, 4020004, 1, 1, 0, 9000), +(5116, 6130207, 1040109, 1, 1, 0, 800), +(5117, 6130207, 1060098, 1, 1, 0, 800), +(5118, 6130207, 1032011, 1, 1, 0, 1000), +(5119, 6130207, 1102017, 1, 1, 0, 1000), +(5120, 6130207, 1051030, 1, 1, 0, 700), +(5121, 6130207, 1002210, 1, 1, 0, 1500), +(5122, 6130207, 1051046, 1, 1, 0, 700), +(5123, 6130207, 1452008, 1, 1, 0, 500), +(5124, 6130207, 2043701, 1, 1, 0, 300), +(5125, 6130207, 1072309, 1, 1, 0, 800), +(5126, 6130207, 2330003, 1, 1, 0, 500), +(5127, 6130207, 2040328, 1, 1, 0, 300), +(5128, 6130207, 2044112, 1, 1, 0, 300), +(5129, 6130207, 4130006, 1, 1, 0, 6000), +(5130, 6130207, 4130007, 1, 1, 0, 6000), +(5131, 6130208, 4000296, 1, 1, 0, 600000), +(5132, 6130208, 2000002, 1, 1, 0, 20000), +(5133, 6130208, 2000006, 1, 1, 0, 20000), +(5134, 6130208, 2000004, 1, 1, 0, 20000), +(5135, 6130208, 4020005, 1, 1, 0, 9000), +(5136, 6130208, 4010002, 1, 1, 0, 9000), +(5137, 6130208, 4004001, 1, 1, 0, 10000), +(5138, 6130208, 1092015, 1, 1, 0, 700), +(5139, 6130208, 1472027, 1, 1, 0, 500), +(5140, 6130208, 1050088, 1, 1, 0, 700), +(5141, 6130208, 1072080, 1, 1, 0, 800), +(5142, 6130208, 1072085, 1, 1, 0, 800), +(5143, 6130208, 1032015, 1, 1, 0, 1000), +(5144, 6130208, 1050081, 1, 1, 0, 700), +(5145, 6130208, 1051078, 1, 1, 0, 700), +(5146, 6130208, 1002289, 1, 1, 0, 1500), +(5147, 6130208, 1462008, 1, 1, 0, 500), +(5148, 6130208, 1322018, 1, 1, 0, 700), +(5149, 6130208, 2043302, 1, 1, 0, 300), +(5150, 6130208, 1082204, 1, 1, 0, 1000), +(5151, 6130208, 2044902, 1, 1, 0, 300), +(5152, 6130208, 4130006, 1, 1, 0, 6000), +(5153, 6130208, 4130008, 1, 1, 0, 6000), +(5154, 6130208, 4130012, 1, 1, 0, 6000), +(5155, 6130209, 4000289, 1, 1, 0, 600000), +(5156, 6130209, 4000021, 1, 1, 0, 50000); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(5157, 6130209, 4003005, 1, 1, 0, 200000), +(5158, 6130209, 4020004, 1, 1, 0, 9000), +(5159, 6130209, 4020002, 1, 1, 0, 9000), +(5160, 6130209, 2000002, 1, 1, 0, 20000), +(5161, 6130209, 2000004, 1, 1, 0, 20000), +(5162, 6130209, 4004003, 1, 1, 0, 10000), +(5163, 6130209, 1032014, 1, 1, 0, 1000), +(5164, 6130209, 1040096, 1, 1, 0, 800), +(5165, 6130209, 1060085, 1, 1, 0, 800), +(5166, 6130209, 1092015, 1, 1, 0, 700), +(5167, 6130209, 1332019, 1, 1, 0, 500), +(5168, 6130209, 4006000, 1, 1, 0, 10000), +(5169, 6130209, 2040301, 1, 1, 0, 300), +(5170, 6130209, 1492008, 1, 1, 0, 500), +(5171, 6130209, 2040925, 1, 1, 0, 300), +(5172, 6130209, 2043017, 1, 1, 0, 300), +(5173, 6130209, 2043110, 1, 1, 0, 300), +(5174, 6130209, 4130014, 1, 1, 0, 6000), +(5175, 6130209, 4130017, 1, 1, 0, 6000), +(5176, 6220000, 4000032, 1, 1, 0, 600000), +(5177, 6220000, 4000032, 1, 1, 0, 600000), +(5178, 6220000, 4000032, 1, 1, 0, 600000), +(5179, 6220000, 4000033, 1, 1, 0, 600000), +(5180, 6220000, 4000033, 1, 1, 0, 600000), +(5181, 6220000, 4000033, 1, 1, 0, 600000), +(5182, 6220000, 4000021, 1, 1, 0, 500000), +(5183, 6220000, 4000021, 1, 1, 0, 500000), +(5184, 6220000, 4000021, 1, 1, 0, 500000), +(5185, 6220000, 4010002, 1, 1, 0, 90000), +(5186, 6220000, 4020003, 1, 1, 0, 90000), +(5187, 6220000, 2000002, 1, 1, 0, 200000), +(5188, 6220000, 2000003, 1, 1, 0, 200000), +(5189, 6220000, 2002000, 1, 1, 0, 200000), +(5190, 6220000, 2002001, 1, 1, 0, 200000), +(5191, 6220000, 2040004, 1, 1, 0, 3000), +(5192, 6220000, 2040501, 1, 1, 0, 3000), +(5193, 6220000, 2040516, 1, 1, 0, 3000), +(5194, 6220000, 2040804, 1, 1, 0, 3000), +(5195, 6220000, 2041001, 1, 1, 0, 3000), +(5196, 6220000, 2043301, 1, 1, 0, 3000), +(5197, 6220000, 2044001, 1, 1, 0, 3000), +(5198, 6220000, 2044401, 1, 1, 0, 3000), +(5199, 6220000, 2044601, 1, 1, 0, 3000), +(5200, 6220000, 2044701, 1, 1, 0, 3000), +(5201, 6220000, 2040702, 1, 1, 0, 3000), +(5202, 6220000, 2041008, 1, 1, 0, 3000), +(5203, 6220000, 2044502, 1, 1, 0, 3000), +(5204, 6220000, 2044702, 1, 1, 0, 3000), +(5205, 6220000, 2048002, 1, 1, 0, 3000), +(5206, 6220000, 2060000, 1, 1, 0, 300000), +(5207, 6220000, 2061000, 1, 1, 0, 300000), +(5208, 6220000, 1302012, 1, 1, 0, 7000), +(5209, 6220000, 1312010, 1, 1, 0, 7000), +(5210, 6220000, 1322019, 1, 1, 0, 7000), +(5211, 6220000, 1332018, 1, 1, 0, 5000), +(5212, 6220000, 1372015, 1, 1, 0, 7000), +(5213, 6220000, 1382010, 1, 1, 0, 7000), +(5214, 6220000, 1402012, 1, 1, 0, 7000), +(5215, 6220000, 1412008, 1, 1, 0, 7000), +(5216, 6220000, 1422010, 1, 1, 0, 7000), +(5217, 6220000, 1432007, 1, 1, 0, 5000), +(5218, 6220000, 1442008, 1, 1, 0, 7000), +(5219, 6220000, 1452011, 1, 1, 0, 5000), +(5220, 6220000, 1462009, 1, 1, 0, 5000), +(5221, 6220000, 1472029, 1, 1, 0, 5000), +(5222, 6220000, 1482009, 1, 1, 0, 5000), +(5223, 6220000, 1492009, 1, 1, 0, 5000), +(5224, 6220000, 2040031, 1, 1, 0, 3000), +(5225, 6220000, 2040627, 1, 1, 0, 3000), +(5226, 6220000, 2044312, 1, 1, 0, 3000), +(5227, 6220000, 2044807, 1, 1, 0, 3000), +(5228, 6220001, 4000117, 1, 1, 0, 600000), +(5229, 6220001, 4000118, 1, 1, 0, 600000), +(5230, 6220001, 4000119, 1, 1, 0, 600000), +(5231, 6220001, 4004001, 1, 1, 0, 100000), +(5232, 6220001, 4004000, 1, 1, 0, 100000), +(5233, 6220001, 2000002, 1, 1, 0, 200000), +(5234, 6220001, 2000003, 1, 1, 0, 200000), +(5235, 6220001, 2040516, 1, 1, 0, 3000), +(5236, 6220001, 2040707, 1, 1, 0, 3000), +(5237, 6220001, 2040804, 1, 1, 0, 3000), +(5238, 6220001, 2041016, 1, 1, 0, 3000), +(5239, 6220001, 2043101, 1, 1, 0, 3000), +(5240, 6220001, 2043301, 1, 1, 0, 3000), +(5241, 6220001, 2044401, 1, 1, 0, 3000), +(5242, 6220001, 2044301, 1, 1, 0, 3000), +(5243, 6220001, 2044901, 1, 1, 0, 3000), +(5244, 6220001, 2330003, 1, 1, 0, 5000), +(5245, 6220001, 2070004, 1, 1, 0, 5000), +(5246, 6220001, 1002024, 1, 1, 0, 15000), +(5247, 6220001, 1002095, 1, 1, 0, 15000), +(5248, 6220001, 1002254, 1, 1, 0, 15000), +(5249, 6220001, 1002289, 1, 1, 0, 15000), +(5250, 6220001, 1002285, 1, 1, 0, 15000), +(5251, 6220001, 1002637, 1, 1, 0, 15000), +(5252, 6220001, 1302049, 1, 1, 0, 7000), +(5253, 6220001, 2040425, 1, 1, 0, 3000), +(5254, 6220001, 2040925, 1, 1, 0, 3000), +(5255, 6220001, 2043214, 1, 1, 0, 3000), +(5256, 6220001, 2049000, 1, 1, 0, 1500), +(5257, 6230100, 4000027, 1, 1, 0, 600000), +(5258, 6230100, 2000006, 1, 1, 0, 20000), +(5259, 6230100, 4020008, 1, 1, 0, 9000), +(5260, 6230100, 4010006, 1, 1, 0, 9000), +(5261, 6230100, 2043701, 1, 1, 0, 300), +(5262, 6230100, 2070004, 1, 1, 0, 500), +(5263, 6230100, 1422005, 1, 1, 0, 700), +(5264, 6230100, 1002218, 1, 1, 0, 1500), +(5265, 6230100, 2000005, 1, 1, 0, 20000), +(5266, 6230100, 1002021, 1, 1, 0, 1500), +(5267, 6230100, 1002166, 1, 1, 0, 1500), +(5268, 6230100, 1050047, 1, 1, 0, 700), +(5269, 6230100, 1040095, 1, 1, 0, 800), +(5270, 6230100, 1060084, 1, 1, 0, 800), +(5271, 6230100, 1041087, 1, 1, 0, 800), +(5272, 6230100, 1061086, 1, 1, 0, 800), +(5273, 6230100, 1051045, 1, 1, 0, 700), +(5274, 6230100, 1082061, 1, 1, 0, 1000), +(5275, 6230100, 1050060, 1, 1, 0, 700), +(5276, 6230100, 1082090, 1, 1, 0, 1000), +(5277, 6230100, 1072148, 1, 1, 0, 800), +(5278, 6230100, 1472023, 1, 1, 0, 500), +(5279, 6230100, 1442010, 1, 1, 0, 700), +(5280, 6230100, 1102016, 1, 1, 0, 1000), +(5281, 6230100, 1051054, 1, 1, 0, 700), +(5282, 6230100, 1082106, 1, 1, 0, 1000), +(5283, 6230100, 1072154, 1, 1, 0, 800), +(5284, 6230100, 1041103, 1, 1, 0, 800), +(5285, 6230100, 1061102, 1, 1, 0, 800), +(5286, 6230100, 1082204, 1, 1, 0, 1000), +(5287, 6230100, 2040323, 1, 1, 0, 300), +(5288, 6230100, 2040823, 1, 1, 0, 300), +(5289, 6230100, 2043212, 1, 1, 0, 300), +(5290, 6230100, 2044809, 1, 1, 0, 300), +(5291, 6230100, 2049100, 1, 1, 0, 150), +(5292, 6230100, 4130011, 1, 1, 0, 6000), +(5293, 6230100, 4130012, 1, 1, 0, 6000), +(5294, 6230100, 4130016, 1, 1, 0, 6000), +(5295, 6230200, 4000057, 1, 1, 0, 600000), +(5296, 6230200, 4004004, 1, 1, 0, 10000), +(5297, 6230200, 2000006, 1, 1, 0, 20000), +(5298, 6230200, 2000004, 1, 1, 0, 20000), +(5299, 6230200, 4020000, 1, 1, 0, 9000), +(5300, 6230200, 4010004, 1, 1, 0, 9000), +(5301, 6230200, 4004003, 1, 1, 0, 10000), +(5302, 6230200, 4006000, 1, 1, 0, 10000), +(5303, 6230200, 1002218, 1, 1, 0, 1500), +(5304, 6230200, 1472020, 1, 1, 0, 500), +(5305, 6230200, 1002100, 1, 1, 0, 1500), +(5306, 6230200, 1050055, 1, 1, 0, 700), +(5307, 6230200, 1002268, 1, 1, 0, 1500), +(5308, 6230200, 1082087, 1, 1, 0, 1000), +(5309, 6230200, 1041094, 1, 1, 0, 800), +(5310, 6230200, 1061093, 1, 1, 0, 800), +(5311, 6230200, 1102018, 1, 1, 0, 1000), +(5312, 6230200, 1092011, 1, 1, 0, 700), +(5313, 6230200, 1472025, 1, 1, 0, 500), +(5314, 6230200, 1082088, 1, 1, 0, 1000), +(5315, 6230200, 1332017, 1, 1, 0, 500), +(5316, 6230200, 1472023, 1, 1, 0, 500), +(5317, 6230200, 1051052, 1, 1, 0, 700), +(5318, 6230200, 1072164, 1, 1, 0, 800), +(5319, 6230200, 1072155, 1, 1, 0, 800), +(5320, 6230200, 1072161, 1, 1, 0, 800), +(5321, 6230200, 2040419, 1, 1, 0, 300), +(5322, 6230200, 2040620, 1, 1, 0, 300), +(5323, 6230200, 4130005, 1, 1, 0, 6000), +(5324, 6230200, 4130013, 1, 1, 0, 6000), +(5325, 6230300, 4000129, 1, 1, 0, 600000), +(5326, 6230300, 4020008, 1, 1, 0, 9000), +(5327, 6230300, 4010006, 1, 1, 0, 9000), +(5328, 6230300, 2000002, 1, 1, 0, 20000), +(5329, 6230300, 2000004, 1, 1, 0, 20000), +(5330, 6230300, 4004003, 1, 1, 0, 10000), +(5331, 6230300, 2040301, 1, 1, 0, 300), +(5332, 6230300, 4006000, 1, 1, 0, 10000), +(5333, 6230300, 4004004, 1, 1, 0, 10000), +(5334, 6230300, 1051031, 1, 1, 0, 700), +(5335, 6230300, 1082065, 1, 1, 0, 1000), +(5336, 6230300, 1072125, 1, 1, 0, 800), +(5337, 6230300, 1040089, 1, 1, 0, 800), +(5338, 6230300, 1060078, 1, 1, 0, 800), +(5339, 6230300, 1002101, 1, 1, 0, 1500), +(5340, 6230300, 1002242, 1, 1, 0, 1500), +(5341, 6230300, 1040099, 1, 1, 0, 800), +(5342, 6230300, 1060088, 1, 1, 0, 800), +(5343, 6230300, 1051042, 1, 1, 0, 700), +(5344, 6230300, 1082060, 1, 1, 0, 1000), +(5345, 6230300, 1102024, 1, 1, 0, 1000), +(5346, 6230300, 1050061, 1, 1, 0, 700), +(5347, 6230300, 1432007, 1, 1, 0, 500), +(5348, 6230300, 1082096, 1, 1, 0, 1000), +(5349, 6230300, 1072158, 1, 1, 0, 800), +(5350, 6230300, 1032015, 1, 1, 0, 1000), +(5351, 6230300, 1482008, 1, 1, 0, 500), +(5352, 6230300, 2044801, 1, 1, 0, 300), +(5353, 6230300, 2040318, 1, 1, 0, 300), +(5354, 6230300, 2040622, 1, 1, 0, 300), +(5355, 6230300, 4130001, 1, 1, 0, 6000), +(5356, 6230400, 4000143, 1, 1, 0, 600000), +(5357, 6230400, 2000002, 1, 1, 0, 20000), +(5358, 6230400, 2000004, 1, 1, 0, 20000), +(5359, 6230400, 2043802, 1, 1, 0, 300), +(5360, 6230400, 2040804, 1, 1, 0, 300), +(5361, 6230400, 2002000, 1, 1, 0, 20000), +(5362, 6230400, 4004000, 1, 1, 0, 10000), +(5363, 6230400, 4010000, 1, 1, 0, 9000), +(5364, 6230400, 4020003, 1, 1, 0, 9000), +(5365, 6230400, 1051034, 1, 1, 0, 700), +(5366, 6230400, 1002085, 1, 1, 0, 1500), +(5367, 6230400, 1002210, 1, 1, 0, 1500), +(5368, 6230400, 1051037, 1, 1, 0, 700), +(5369, 6230400, 1040096, 1, 1, 0, 800), +(5370, 6230400, 1060085, 1, 1, 0, 800), +(5371, 6230400, 1372014, 1, 1, 0, 700), +(5372, 6230400, 1082091, 1, 1, 0, 1000), +(5373, 6230400, 1082093, 1, 1, 0, 1000), +(5374, 6230400, 1082086, 1, 1, 0, 1000), +(5375, 6230400, 1072149, 1, 1, 0, 800), +(5376, 6230400, 1472024, 1, 1, 0, 500), +(5377, 6230400, 1102017, 1, 1, 0, 1000), +(5378, 6230400, 1322018, 1, 1, 0, 700), +(5379, 6230400, 1032020, 1, 1, 0, 1000), +(5380, 6230400, 1002281, 1, 1, 0, 1500), +(5381, 6230400, 1002286, 1, 1, 0, 1500), +(5382, 6230400, 1082099, 1, 1, 0, 1000), +(5383, 6230400, 1041098, 1, 1, 0, 800), +(5384, 6230400, 1061097, 1, 1, 0, 800), +(5385, 6230400, 1032014, 1, 1, 0, 1000), +(5386, 6230400, 1492009, 1, 1, 0, 500), +(5387, 6230400, 2044902, 1, 1, 0, 300), +(5388, 6230400, 2040422, 1, 1, 0, 300), +(5389, 6230400, 2040530, 1, 1, 0, 300), +(5390, 6230400, 2040924, 1, 1, 0, 300), +(5391, 6230400, 2044414, 1, 1, 0, 300), +(5392, 6230400, 4130012, 1, 1, 0, 6000), +(5393, 6230400, 4130013, 1, 1, 0, 6000), +(5394, 6230401, 2040515, 1, 1, 0, 300), +(5395, 6230401, 2044410, 1, 1, 0, 300), +(5396, 6230401, 4130009, 1, 1, 0, 6000), +(5397, 6230401, 4130010, 1, 1, 0, 6000), +(5398, 6230401, 4130014, 1, 1, 0, 6000), +(5399, 6230500, 4000144, 1, 1, 0, 600000), +(5400, 6230500, 4000021, 1, 1, 0, 50000), +(5401, 6230500, 2000002, 1, 1, 0, 20000), +(5402, 6230500, 2000004, 1, 1, 0, 20000), +(5403, 6230500, 4010006, 1, 1, 0, 9000), +(5404, 6230500, 4020006, 1, 1, 0, 9000), +(5405, 6230500, 4006000, 1, 1, 0, 10000), +(5406, 6230500, 4004004, 1, 1, 0, 10000), +(5407, 6230500, 2041022, 1, 1, 0, 300), +(5408, 6230500, 2043301, 1, 1, 0, 300), +(5409, 6230500, 1050049, 1, 1, 0, 700), +(5410, 6230500, 1072123, 1, 1, 0, 800), +(5411, 6230500, 1082085, 1, 1, 0, 1000), +(5412, 6230500, 1050056, 1, 1, 0, 700), +(5413, 6230500, 1002084, 1, 1, 0, 1500), +(5414, 6230500, 1002249, 1, 1, 0, 1500), +(5415, 6230500, 1002270, 1, 1, 0, 1500), +(5416, 6230500, 1002244, 1, 1, 0, 1500), +(5417, 6230500, 1040091, 1, 1, 0, 800), +(5418, 6230500, 1060080, 1, 1, 0, 800), +(5419, 6230500, 1072161, 1, 1, 0, 800), +(5420, 6230500, 1072166, 1, 1, 0, 800), +(5421, 6230500, 1082103, 1, 1, 0, 1000), +(5422, 6230500, 1332019, 1, 1, 0, 500), +(5423, 6230500, 1072159, 1, 1, 0, 800), +(5424, 6230500, 1002637, 1, 1, 0, 1500), +(5425, 6230500, 2040620, 1, 1, 0, 300), +(5426, 6230500, 4130001, 1, 1, 0, 6000), +(5427, 6230500, 4130007, 1, 1, 0, 6000), +(5428, 6230600, 4000185, 1, 1, 0, 600000), +(5429, 6230600, 2000006, 1, 1, 0, 20000), +(5430, 6230600, 2000004, 1, 1, 0, 20000), +(5431, 6230600, 4000030, 1, 1, 0, 60000), +(5432, 6230600, 4010006, 1, 1, 0, 9000), +(5433, 6230600, 4010004, 1, 1, 0, 9000), +(5434, 6230600, 4020005, 1, 1, 0, 9000), +(5435, 6230600, 1040094, 1, 1, 0, 800), +(5436, 6230600, 1060083, 1, 1, 0, 800), +(5437, 6230600, 1041085, 1, 1, 0, 800), +(5438, 6230600, 1061083, 1, 1, 0, 800), +(5439, 6230600, 1040091, 1, 1, 0, 800), +(5440, 6230600, 1060080, 1, 1, 0, 800), +(5441, 6230600, 1041091, 1, 1, 0, 800), +(5442, 6230600, 1061090, 1, 1, 0, 800), +(5443, 6230600, 1051043, 1, 1, 0, 700), +(5444, 6230600, 1051046, 1, 1, 0, 700), +(5445, 6230600, 1082095, 1, 1, 0, 1000), +(5446, 6230600, 1082098, 1, 1, 0, 1000), +(5447, 6230600, 1072158, 1, 1, 0, 800), +(5448, 6230600, 1472024, 1, 1, 0, 500), +(5449, 6230600, 4006000, 1, 1, 0, 10000), +(5450, 6230600, 1462008, 1, 1, 0, 500), +(5451, 6230600, 4020007, 1, 1, 0, 9000), +(5452, 6230600, 1002634, 1, 1, 0, 1500), +(5453, 6230600, 2332000, 1, 1, 0, 500), +(5454, 6230600, 2040317, 1, 1, 0, 300), +(5455, 6230600, 2040328, 1, 1, 0, 300), +(5456, 6230600, 2040928, 1, 1, 0, 300), +(5457, 6230600, 2044112, 1, 1, 0, 300), +(5458, 6230600, 2044414, 1, 1, 0, 300), +(5459, 6230600, 4130006, 1, 1, 0, 6000), +(5460, 6230600, 4130011, 1, 1, 0, 6000), +(5461, 6230600, 4130015, 1, 1, 0, 6000), +(5462, 6230601, 4000186, 1, 1, 0, 600000), +(5463, 6230601, 4020008, 1, 1, 0, 9000), +(5464, 6230601, 2041001, 1, 1, 0, 300), +(5465, 6230601, 2000002, 1, 1, 0, 20000), +(5466, 6230601, 2000004, 1, 1, 0, 20000), +(5467, 6230601, 4010003, 1, 1, 0, 9000), +(5468, 6230601, 4010005, 1, 1, 0, 9000), +(5469, 6230601, 4000030, 1, 1, 0, 60000), +(5470, 6230601, 2041004, 1, 1, 0, 300), +(5471, 6230601, 2040401, 1, 1, 0, 300), +(5472, 6230601, 1002242, 1, 1, 0, 1500), +(5473, 6230601, 1002247, 1, 1, 0, 1500), +(5474, 6230601, 1002208, 1, 1, 0, 1500), +(5475, 6230601, 1092017, 1, 1, 0, 700), +(5476, 6230601, 1442010, 1, 1, 0, 700), +(5477, 6230601, 1432007, 1, 1, 0, 500), +(5478, 6230601, 1412008, 1, 1, 0, 700), +(5479, 6230601, 1082109, 1, 1, 0, 1000), +(5480, 6230601, 1041097, 1, 1, 0, 800), +(5481, 6230601, 1061096, 1, 1, 0, 800), +(5482, 6230601, 2040001, 1, 1, 0, 300), +(5483, 6230601, 1061100, 1, 1, 0, 800), +(5484, 6230601, 1041101, 1, 1, 0, 800), +(5485, 6230601, 1072172, 1, 1, 0, 800), +(5486, 6230601, 1372015, 1, 1, 0, 700), +(5487, 6230601, 4020007, 1, 1, 0, 9000), +(5488, 6230601, 1052122, 1, 1, 0, 700), +(5489, 6230601, 2040024, 1, 1, 0, 300), +(5490, 6230601, 2040625, 1, 1, 0, 300), +(5491, 6230601, 4130007, 1, 1, 0, 6000), +(5492, 6230601, 4130015, 1, 1, 0, 6000), +(5493, 6230602, 4000207, 1, 1, 0, 600000), +(5494, 6230602, 2000002, 1, 1, 0, 20000), +(5495, 6230602, 2000004, 1, 1, 0, 20000), +(5496, 6230602, 2043802, 1, 1, 0, 300), +(5497, 6230602, 2040804, 1, 1, 0, 300), +(5498, 6230602, 2002000, 1, 1, 0, 20000), +(5499, 6230602, 4010000, 1, 1, 0, 9000), +(5500, 6230602, 4020003, 1, 1, 0, 9000), +(5501, 6230602, 1082010, 1, 1, 0, 1000), +(5502, 6230602, 1082065, 1, 1, 0, 1000), +(5503, 6230602, 1082082, 1, 1, 0, 1000), +(5504, 6230602, 1082085, 1, 1, 0, 1000), +(5505, 6230602, 1092011, 1, 1, 0, 700), +(5506, 6230602, 1302011, 1, 1, 0, 700), +(5507, 6230602, 1332017, 1, 1, 0, 500), +(5508, 6230602, 1472023, 1, 1, 0, 500), +(5509, 6230602, 1002084, 1, 1, 0, 1500), +(5510, 6230602, 1002246, 1, 1, 0, 1500), +(5511, 6230602, 1002248, 1, 1, 0, 1500), +(5512, 6230602, 1002269, 1, 1, 0, 1500), +(5513, 6230602, 1082103, 1, 1, 0, 1000), +(5514, 6230602, 1082106, 1, 1, 0, 1000), +(5515, 6230602, 1082098, 1, 1, 0, 1000), +(5516, 6230602, 1082096, 1, 1, 0, 1000), +(5517, 6230602, 1482009, 1, 1, 0, 500), +(5518, 6230602, 2330002, 1, 1, 0, 500), +(5519, 6230602, 2040328, 1, 1, 0, 300), +(5520, 6230602, 2040417, 1, 1, 0, 300), +(5521, 6230602, 2040423, 1, 1, 0, 300), +(5522, 6230602, 2040928, 1, 1, 0, 300), +(5523, 6230602, 4130000, 1, 1, 0, 6000), +(5524, 6230602, 4130010, 1, 1, 0, 6000), +(5525, 6230602, 4130016, 1, 1, 0, 6000), +(5526, 6300000, 4000049, 1, 1, 0, 600000), +(5527, 6300000, 4003005, 1, 1, 0, 200000), +(5528, 6300000, 4000021, 1, 1, 0, 50000), +(5529, 6300000, 2000006, 1, 1, 0, 20000), +(5530, 6300000, 4020007, 1, 1, 0, 9000), +(5531, 6300000, 4010000, 1, 1, 0, 9000), +(5532, 6300000, 4004000, 1, 1, 0, 10000), +(5533, 6300000, 1041078, 1, 1, 0, 800), +(5534, 6300000, 1041089, 1, 1, 0, 800), +(5535, 6300000, 1002022, 1, 1, 0, 1500), +(5536, 6300000, 1032019, 1, 1, 0, 1000), +(5537, 6300000, 1051047, 1, 1, 0, 700), +(5538, 6300000, 1040099, 1, 1, 0, 800), +(5539, 6300000, 1060088, 1, 1, 0, 800), +(5540, 6300000, 1432006, 1, 1, 0, 500), +(5541, 6300000, 1462008, 1, 1, 0, 500), +(5542, 6300000, 1472024, 1, 1, 0, 500), +(5543, 6300000, 1102022, 1, 1, 0, 1000), +(5544, 6300000, 1382007, 1, 1, 0, 700), +(5545, 6300000, 1472026, 1, 1, 0, 500), +(5546, 6300000, 1082107, 1, 1, 0, 1000), +(5547, 6300000, 1040104, 1, 1, 0, 800), +(5548, 6300000, 1060092, 1, 1, 0, 800), +(5549, 6300000, 1072157, 1, 1, 0, 800), +(5550, 6300000, 1032020, 1, 1, 0, 1000), +(5551, 6300000, 1051062, 1, 1, 0, 700), +(5552, 6300005, 4000176, 1, 1, 0, 600000), +(5553, 6300005, 1032014, 1, 1, 0, 10000), +(5554, 6300005, 1102024, 1, 1, 0, 10000), +(5555, 6300005, 2070006, 1, 1, 0, 2000), +(5556, 6300005, 2043101, 1, 1, 0, 3000), +(5557, 6300005, 2043201, 1, 1, 0, 3000), +(5558, 6300005, 2043301, 1, 1, 0, 3000), +(5559, 6300005, 2043701, 1, 1, 0, 3000), +(5560, 6300005, 2043801, 1, 1, 0, 3000), +(5561, 6300005, 2044001, 1, 1, 0, 3000), +(5562, 6300005, 2044101, 1, 1, 0, 3000), +(5563, 6300005, 2044201, 1, 1, 0, 3000), +(5564, 6300005, 2044301, 1, 1, 0, 3000), +(5565, 6300005, 2044401, 1, 1, 0, 3000), +(5566, 6300005, 2044501, 1, 1, 0, 3000), +(5567, 6300005, 2044601, 1, 1, 0, 3000), +(5568, 6300005, 2044701, 1, 1, 0, 3000), +(5569, 6300005, 2048001, 1, 1, 0, 3000), +(5570, 6300005, 2048004, 1, 1, 0, 3000), +(5571, 6300005, 2043001, 1, 1, 0, 3000), +(5572, 6300005, 1092010, 1, 1, 0, 7000), +(5573, 6300005, 2332000, 1, 1, 0, 5000), +(5574, 6300005, 2044801, 1, 1, 0, 3000), +(5575, 6300005, 2044901, 1, 1, 0, 3000), +(5576, 6300005, 2040422, 1, 1, 0, 3000), +(5577, 6300005, 2043019, 1, 1, 0, 3000), +(5578, 6300100, 4000130, 1, 1, 0, 600000), +(5579, 6300100, 2041022, 1, 1, 0, 300), +(5580, 6300100, 4004004, 1, 1, 0, 10000), +(5581, 6300100, 2000001, 1, 1, 0, 20000), +(5582, 6300100, 2000004, 1, 1, 0, 20000), +(5583, 6300100, 4020003, 1, 1, 0, 9000), +(5584, 6300100, 4010006, 1, 1, 0, 9000), +(5585, 6300100, 4004001, 1, 1, 0, 10000), +(5586, 6300100, 1040098, 1, 1, 0, 800), +(5587, 6300100, 1060087, 1, 1, 0, 800), +(5588, 6300100, 1072139, 1, 1, 0, 800), +(5589, 6300100, 1041093, 1, 1, 0, 800), +(5590, 6300100, 1061092, 1, 1, 0, 800), +(5591, 6300100, 1072158, 1, 1, 0, 800), +(5592, 6300100, 1082097, 1, 1, 0, 1000), +(5593, 6300100, 1051065, 1, 1, 0, 700), +(5594, 6300100, 1061097, 1, 1, 0, 800), +(5595, 6300100, 1041098, 1, 1, 0, 800), +(5596, 6300100, 1082108, 1, 1, 0, 1000), +(5597, 6300100, 1040106, 1, 1, 0, 800), +(5598, 6300100, 1060094, 1, 1, 0, 800), +(5599, 6300100, 1472027, 1, 1, 0, 500), +(5600, 6300100, 1452010, 1, 1, 0, 500), +(5601, 6300100, 1442008, 1, 1, 0, 700), +(5602, 6300100, 1072172, 1, 1, 0, 800), +(5603, 6300100, 1082122, 1, 1, 0, 1000), +(5604, 6300100, 1082109, 1, 1, 0, 1000), +(5605, 6300100, 1050082, 1, 1, 0, 700), +(5606, 6300100, 1492010, 1, 1, 0, 500), +(5607, 6300100, 2040421, 1, 1, 0, 300), +(5608, 6300100, 2040825, 1, 1, 0, 300), +(5609, 6300100, 4130003, 1, 1, 0, 6000), +(5610, 6300100, 4130004, 1, 1, 0, 6000), +(5611, 6400000, 4000056, 1, 1, 0, 600000), +(5612, 6400000, 4003004, 1, 1, 0, 200000), +(5613, 6400000, 2041022, 1, 1, 0, 300), +(5614, 6400000, 4004004, 1, 1, 0, 10000), +(5615, 6400000, 4000021, 1, 1, 0, 50000), +(5616, 6400000, 2000002, 1, 1, 0, 20000), +(5617, 6400000, 2000004, 1, 1, 0, 20000), +(5618, 6400000, 4020003, 1, 1, 0, 9000), +(5619, 6400000, 4010006, 1, 1, 0, 9000), +(5620, 6400000, 4003002, 1, 1, 0, 200000), +(5621, 6400000, 4004001, 1, 1, 0, 10000), +(5622, 6400000, 1082084, 1, 1, 0, 1000), +(5623, 6400000, 1072142, 1, 1, 0, 800), +(5624, 6400000, 1442005, 1, 1, 0, 700), +(5625, 6400000, 1472019, 1, 1, 0, 500), +(5626, 6400000, 1051045, 1, 1, 0, 700), +(5627, 6400000, 1002245, 1, 1, 0, 1500), +(5628, 6400000, 1050060, 1, 1, 0, 700), +(5629, 6400000, 1040092, 1, 1, 0, 800), +(5630, 6400000, 1060081, 1, 1, 0, 800), +(5631, 6400000, 1041096, 1, 1, 0, 800), +(5632, 6400000, 1061095, 1, 1, 0, 800), +(5633, 6400000, 1002030, 1, 1, 0, 1500), +(5634, 6400000, 1032015, 1, 1, 0, 1000), +(5635, 6400000, 1061096, 1, 1, 0, 800), +(5636, 6400000, 1041097, 1, 1, 0, 800), +(5637, 6400000, 1072166, 1, 1, 0, 800), +(5638, 6400000, 1082097, 1, 1, 0, 1000), +(5639, 6400000, 1002271, 1, 1, 0, 1500), +(5640, 6400000, 1002338, 1, 1, 0, 1500), +(5641, 6400100, 4000131, 1, 1, 0, 600000), +(5642, 6400100, 2000002, 1, 1, 0, 20000), +(5643, 6400100, 2000004, 1, 1, 0, 20000), +(5644, 6400100, 4020003, 1, 1, 0, 9000), +(5645, 6400100, 4010006, 1, 1, 0, 9000), +(5646, 6400100, 4004004, 1, 1, 0, 10000), +(5647, 6400100, 2002008, 1, 1, 0, 20000), +(5648, 6400100, 2044001, 1, 1, 0, 300), +(5649, 6400100, 2041013, 1, 1, 0, 300), +(5650, 6400100, 1051046, 1, 1, 0, 700), +(5651, 6400100, 1002268, 1, 1, 0, 1500), +(5652, 6400100, 1072149, 1, 1, 0, 800), +(5653, 6400100, 1002282, 1, 1, 0, 1500), +(5654, 6400100, 1041099, 1, 1, 0, 800), +(5655, 6400100, 1061098, 1, 1, 0, 800), +(5656, 6400100, 1050061, 1, 1, 0, 700), +(5657, 6400100, 1082098, 1, 1, 0, 1000), +(5658, 6400100, 1092017, 1, 1, 0, 700), +(5659, 6400100, 1472029, 1, 1, 0, 500), +(5660, 6400100, 1002289, 1, 1, 0, 1500), +(5661, 6400100, 1002252, 1, 1, 0, 1500), +(5662, 6400100, 1040106, 1, 1, 0, 800), +(5663, 6400100, 1060094, 1, 1, 0, 800), +(5664, 6400100, 1412008, 1, 1, 0, 700), +(5665, 6400100, 1032022, 1, 1, 0, 1000), +(5666, 6400100, 1051058, 1, 1, 0, 700), +(5667, 6400100, 1050077, 1, 1, 0, 700), +(5668, 6400100, 1072173, 1, 1, 0, 800), +(5669, 6400100, 1082116, 1, 1, 0, 1000), +(5670, 6400100, 1082207, 1, 1, 0, 1000), +(5671, 6400100, 2040321, 1, 1, 0, 300), +(5672, 6400100, 2040534, 1, 1, 0, 300), +(5673, 6400100, 2043114, 1, 1, 0, 300), +(5674, 6400100, 4130000, 1, 1, 0, 6000), +(5675, 6400100, 4130002, 1, 1, 0, 6000), +(5676, 6400100, 4130013, 1, 1, 0, 6000), +(5677, 7090000, 4000411, 1, 1, 0, 600000), +(5678, 7110300, 2000006, 1, 1, 0, 20000), +(5679, 7110300, 4020001, 1, 1, 0, 9000), +(5680, 7110300, 4010003, 1, 1, 0, 9000), +(5681, 7110300, 2043701, 1, 1, 0, 300), +(5682, 7110300, 2044701, 1, 1, 0, 300), +(5683, 7110300, 4004000, 1, 1, 0, 10000), +(5684, 7110300, 4006000, 1, 1, 0, 10000), +(5685, 7110300, 2040302, 1, 1, 0, 300), +(5686, 7110300, 1050055, 1, 1, 0, 700), +(5687, 7110300, 1041094, 1, 1, 0, 800), +(5688, 7110300, 1061093, 1, 1, 0, 800), +(5689, 7110300, 1050069, 1, 1, 0, 700), +(5690, 7110300, 1040102, 1, 1, 0, 800), +(5691, 7110300, 1060090, 1, 1, 0, 800), +(5692, 7110300, 1082100, 1, 1, 0, 1000), +(5693, 7110300, 1041102, 1, 1, 0, 800), +(5694, 7110300, 1061101, 1, 1, 0, 800), +(5695, 7110300, 1002254, 1, 1, 0, 1500), +(5696, 7110300, 1002288, 1, 1, 0, 1500), +(5697, 7110300, 1092015, 1, 1, 0, 700), +(5698, 7110300, 1332018, 1, 1, 0, 500), +(5699, 7110300, 1402012, 1, 1, 0, 700), +(5700, 7110300, 1472029, 1, 1, 0, 500), +(5701, 7110300, 1322020, 1, 1, 0, 700), +(5702, 7110300, 1002273, 1, 1, 0, 1500), +(5703, 7110300, 1002339, 1, 1, 0, 1500), +(5704, 7110300, 1051066, 1, 1, 0, 700), +(5705, 7110300, 1041105, 1, 1, 0, 800), +(5706, 7110300, 1061104, 1, 1, 0, 800), +(5707, 7110300, 4000362, 1, 1, 0, 600000), +(5708, 7110300, 1082204, 1, 1, 0, 1000), +(5709, 7110300, 2330003, 1, 1, 0, 500), +(5710, 7110300, 2040026, 1, 1, 0, 300), +(5711, 7110300, 2040319, 1, 1, 0, 300), +(5712, 7110300, 4130009, 1, 1, 0, 6000), +(5713, 7110300, 4130015, 1, 1, 0, 6000), +(5714, 7110301, 2000006, 1, 1, 0, 20000), +(5715, 7110301, 2000004, 1, 1, 0, 20000), +(5716, 7110301, 4010004, 1, 1, 0, 9000), +(5717, 7110301, 4020006, 1, 1, 0, 9000), +(5718, 7110301, 4004003, 1, 1, 0, 10000), +(5719, 7110301, 2044601, 1, 1, 0, 300), +(5720, 7110301, 1051044, 1, 1, 0, 700), +(5721, 7110301, 1002029, 1, 1, 0, 1500), +(5722, 7110301, 1002248, 1, 1, 0, 1500), +(5723, 7110301, 1051041, 1, 1, 0, 700), +(5724, 7110301, 1072147, 1, 1, 0, 800), +(5725, 7110301, 1072150, 1, 1, 0, 800), +(5726, 7110301, 1072145, 1, 1, 0, 800), +(5727, 7110301, 1051053, 1, 1, 0, 700), +(5728, 7110301, 1002094, 1, 1, 0, 1500), +(5729, 7110301, 1002253, 1, 1, 0, 1500), +(5730, 7110301, 1051062, 1, 1, 0, 700), +(5731, 7110301, 1040105, 1, 1, 0, 800), +(5732, 7110301, 1060093, 1, 1, 0, 800), +(5733, 7110301, 1050063, 1, 1, 0, 700), +(5734, 7110301, 1402012, 1, 1, 0, 700), +(5735, 7110301, 1040108, 1, 1, 0, 800), +(5736, 7110301, 1060097, 1, 1, 0, 800), +(5737, 7110301, 1072210, 1, 1, 0, 800), +(5738, 7110301, 1002275, 1, 1, 0, 1500), +(5739, 7110301, 1072177, 1, 1, 0, 800), +(5740, 7110301, 4000361, 1, 1, 0, 600000), +(5741, 7110301, 1482010, 1, 1, 0, 500), +(5742, 7110301, 2044801, 1, 1, 0, 300), +(5743, 7110301, 2040025, 1, 1, 0, 300), +(5744, 7110301, 2040621, 1, 1, 0, 300), +(5745, 7110301, 2040933, 1, 1, 0, 300), +(5746, 7110301, 4130004, 1, 1, 0, 6000), +(5747, 7110301, 4130005, 1, 1, 0, 6000), +(5748, 7110301, 4130007, 1, 1, 0, 6000), +(5749, 7130000, 4000074, 1, 1, 0, 600000), +(5750, 7130000, 2050004, 1, 1, 0, 50000), +(5751, 7130000, 2000006, 1, 1, 0, 20000), +(5752, 7130000, 2000004, 1, 1, 0, 20000), +(5753, 7130000, 4010004, 1, 1, 0, 9000), +(5754, 7130000, 4020006, 1, 1, 0, 9000), +(5755, 7130000, 4006001, 1, 1, 0, 10000), +(5756, 7130000, 4004003, 1, 1, 0, 10000), +(5757, 7130000, 2044601, 1, 1, 0, 300), +(5758, 7130000, 1051044, 1, 1, 0, 700), +(5759, 7130000, 1002029, 1, 1, 0, 1500), +(5760, 7130000, 1002248, 1, 1, 0, 1500), +(5761, 7130000, 1051041, 1, 1, 0, 700), +(5762, 7130000, 1072147, 1, 1, 0, 800), +(5763, 7130000, 1072150, 1, 1, 0, 800), +(5764, 7130000, 1072145, 1, 1, 0, 800), +(5765, 7130000, 1051053, 1, 1, 0, 700), +(5766, 7130000, 1002094, 1, 1, 0, 1500), +(5767, 7130000, 1002253, 1, 1, 0, 1500), +(5768, 7130000, 1051062, 1, 1, 0, 700), +(5769, 7130000, 1040105, 1, 1, 0, 800), +(5770, 7130000, 1060093, 1, 1, 0, 800), +(5771, 7130000, 1050063, 1, 1, 0, 700), +(5772, 7130000, 1402012, 1, 1, 0, 700), +(5773, 7130000, 1040108, 1, 1, 0, 800), +(5774, 7130000, 1060097, 1, 1, 0, 800), +(5775, 7130000, 1072210, 1, 1, 0, 800), +(5776, 7130000, 1002275, 1, 1, 0, 1500), +(5777, 7130000, 1072177, 1, 1, 0, 800), +(5778, 7130000, 4161021, 1, 1, 0, 6000), +(5779, 7130000, 1072312, 1, 1, 0, 800), +(5780, 7130000, 2044901, 1, 1, 0, 300), +(5781, 7130000, 2040419, 1, 1, 0, 300), +(5782, 7130000, 2040427, 1, 1, 0, 300), +(5783, 7130000, 4130008, 1, 1, 0, 6000), +(5784, 7130000, 4130010, 1, 1, 0, 6000), +(5785, 7130000, 4130011, 1, 1, 0, 6000), +(5786, 7130001, 4000079, 1, 1, 0, 600000), +(5787, 7130001, 2050000, 1, 1, 0, 50000), +(5788, 7130001, 2000006, 1, 1, 0, 20000), +(5789, 7130001, 2000004, 1, 1, 0, 20000), +(5790, 7130001, 4020007, 1, 1, 0, 9000), +(5791, 7130001, 4010004, 1, 1, 0, 9000), +(5792, 7130001, 2044301, 1, 1, 0, 300), +(5793, 7130001, 2041021, 1, 1, 0, 300), +(5794, 7130001, 1312009, 1, 1, 0, 700), +(5795, 7130001, 1332015, 1, 1, 0, 500), +(5796, 7130001, 1402011, 1, 1, 0, 700), +(5797, 7130001, 1002246, 1, 1, 0, 1500), +(5798, 7130001, 1032014, 1, 1, 0, 1000), +(5799, 7130001, 1041095, 1, 1, 0, 800), +(5800, 7130001, 1061094, 1, 1, 0, 800), +(5801, 7130001, 1072146, 1, 1, 0, 800), +(5802, 7130001, 1051054, 1, 1, 0, 700), +(5803, 7130001, 1372015, 1, 1, 0, 700), +(5804, 7130001, 1050070, 1, 1, 0, 700), +(5805, 7130001, 1050069, 1, 1, 0, 700), +(5806, 7130001, 1072165, 1, 1, 0, 800), +(5807, 7130001, 1082105, 1, 1, 0, 1000), +(5808, 7130001, 1082108, 1, 1, 0, 1000), +(5809, 7130001, 1041102, 1, 1, 0, 800), +(5810, 7130001, 1061101, 1, 1, 0, 800), +(5811, 7130001, 1002095, 1, 1, 0, 1500), +(5812, 7130001, 1032016, 1, 1, 0, 1000), +(5813, 7130001, 1372016, 1, 1, 0, 700), +(5814, 7130001, 1492009, 1, 1, 0, 500), +(5815, 7130001, 2040618, 1, 1, 0, 300), +(5816, 7130001, 4130002, 1, 1, 0, 6000), +(5817, 7130001, 4130003, 1, 1, 0, 6000), +(5818, 7130002, 4000236, 1, 1, 0, 600000), +(5819, 7130002, 2000006, 1, 1, 0, 20000), +(5820, 7130002, 2000004, 1, 1, 0, 20000), +(5821, 7130002, 4010000, 1, 1, 0, 9000), +(5822, 7130002, 4020001, 1, 1, 0, 9000), +(5823, 7130002, 2040902, 1, 1, 0, 300), +(5824, 7130002, 2040801, 1, 1, 0, 300), +(5825, 7130002, 4006000, 1, 1, 0, 10000), +(5826, 7130002, 4004001, 1, 1, 0, 10000), +(5827, 7130002, 1040103, 1, 1, 0, 800), +(5828, 7130002, 1060091, 1, 1, 0, 800), +(5829, 7130002, 1082100, 1, 1, 0, 1000), +(5830, 7130002, 1072184, 1, 1, 0, 800), +(5831, 7130002, 1002285, 1, 1, 0, 1500), +(5832, 7130002, 1302012, 1, 1, 0, 700), +(5833, 7130002, 1332019, 1, 1, 0, 500), +(5834, 7130002, 1382007, 1, 1, 0, 700), +(5835, 7130002, 1092011, 1, 1, 0, 700), +(5836, 7130002, 1002640, 1, 1, 0, 1500), +(5837, 7130002, 2330003, 1, 1, 0, 500), +(5838, 7130002, 2040625, 1, 1, 0, 300), +(5839, 7130002, 2044014, 1, 1, 0, 300), +(5840, 7130002, 4130000, 1, 1, 0, 6000), +(5841, 7130002, 4130005, 1, 1, 0, 6000), +(5842, 7130003, 4000237, 1, 1, 0, 600000), +(5843, 7130003, 2000006, 1, 1, 0, 20000), +(5844, 7130003, 2000004, 1, 1, 0, 20000), +(5845, 7130003, 4010003, 1, 1, 0, 9000), +(5846, 7130003, 4020003, 1, 1, 0, 9000), +(5847, 7130003, 2044101, 1, 1, 0, 300), +(5848, 7130003, 2041002, 1, 1, 0, 300), +(5849, 7130003, 4006000, 1, 1, 0, 10000), +(5850, 7130003, 4004003, 1, 1, 0, 10000), +(5851, 7130003, 2070005, 1, 1, 0, 400), +(5852, 7130003, 1072156, 1, 1, 0, 800), +(5853, 7130003, 1002253, 1, 1, 0, 1500), +(5854, 7130003, 1051063, 1, 1, 0, 700), +(5855, 7130003, 1082096, 1, 1, 0, 1000), +(5856, 7130003, 1092016, 1, 1, 0, 700), +(5857, 7130003, 1432007, 1, 1, 0, 500), +(5858, 7130003, 1372015, 1, 1, 0, 700), +(5859, 7130003, 1412008, 1, 1, 0, 700), +(5860, 7130003, 1002640, 1, 1, 0, 1500), +(5861, 7130003, 2040423, 1, 1, 0, 300), +(5862, 7130003, 4130001, 1, 1, 0, 6000), +(5863, 7130003, 4130010, 1, 1, 0, 6000), +(5864, 7130003, 4130013, 1, 1, 0, 6000), +(5865, 7130004, 4000231, 1, 1, 0, 600000), +(5866, 7130004, 2000006, 1, 1, 0, 20000), +(5867, 7130004, 2000004, 1, 1, 0, 20000), +(5868, 7130004, 4010004, 1, 1, 0, 9000), +(5869, 7130004, 4020004, 1, 1, 0, 9000), +(5870, 7130004, 2041008, 1, 1, 0, 300), +(5871, 7130004, 2044401, 1, 1, 0, 300), +(5872, 7130004, 4006001, 1, 1, 0, 10000), +(5873, 7130004, 4004004, 1, 1, 0, 10000), +(5874, 7130004, 1002338, 1, 1, 0, 1500), +(5875, 7130004, 1050074, 1, 1, 0, 700), +(5876, 7130004, 1082107, 1, 1, 0, 1000), +(5877, 7130004, 1072161, 1, 1, 0, 800), +(5878, 7130004, 1102029, 1, 1, 0, 1000), +(5879, 7130004, 1452010, 1, 1, 0, 500), +(5880, 7130004, 1402012, 1, 1, 0, 700), +(5881, 7130004, 1322028, 1, 1, 0, 700), +(5882, 7130004, 1032022, 1, 1, 0, 1000), +(5883, 7130004, 1072312, 1, 1, 0, 800), +(5884, 7130004, 2330003, 1, 1, 0, 500), +(5885, 7130010, 4000147, 1, 1, 0, 600000), +(5886, 7130010, 2050004, 1, 1, 0, 50000), +(5887, 7130010, 2000006, 1, 1, 0, 20000), +(5888, 7130010, 2000002, 1, 1, 0, 20000), +(5889, 7130010, 2002005, 1, 1, 0, 20000), +(5890, 7130010, 2020015, 1, 1, 0, 20000), +(5891, 7130010, 4020008, 1, 1, 0, 9000), +(5892, 7130010, 4020005, 1, 1, 0, 9000), +(5893, 7130010, 4004002, 1, 1, 0, 10000), +(5894, 7130010, 4006001, 1, 1, 0, 10000), +(5895, 7130010, 2040601, 1, 1, 0, 300), +(5896, 7130010, 2041016, 1, 1, 0, 300), +(5897, 7130010, 1302016, 1, 1, 0, 700), +(5898, 7130010, 1051065, 1, 1, 0, 700), +(5899, 7130010, 1072154, 1, 1, 0, 800), +(5900, 7130010, 1041101, 1, 1, 0, 800), +(5901, 7130010, 1061100, 1, 1, 0, 800), +(5902, 7130010, 1452010, 1, 1, 0, 500), +(5903, 7130010, 1102030, 1, 1, 0, 1000), +(5904, 7130010, 1050073, 1, 1, 0, 700), +(5905, 7130010, 1412009, 1, 1, 0, 700), +(5906, 7130010, 1332022, 1, 1, 0, 500), +(5907, 7130010, 1082123, 1, 1, 0, 1000), +(5908, 7130010, 1082118, 1, 1, 0, 1000), +(5909, 7130010, 1051078, 1, 1, 0, 700), +(5910, 7130010, 1072184, 1, 1, 0, 800), +(5911, 7130010, 1002328, 1, 1, 0, 1500), +(5912, 7130010, 1051077, 1, 1, 0, 700), +(5913, 7130010, 1050088, 1, 1, 0, 700), +(5914, 7130010, 1072196, 1, 1, 0, 800), +(5915, 7130010, 1072209, 1, 1, 0, 800), +(5916, 7130010, 1082142, 1, 1, 0, 1000), +(5917, 7130010, 1372016, 1, 1, 0, 700), +(5918, 7130010, 1082207, 1, 1, 0, 1000), +(5919, 7130010, 2040025, 1, 1, 0, 300), +(5920, 7130010, 2040418, 1, 1, 0, 300), +(5921, 7130010, 2040923, 1, 1, 0, 300), +(5922, 7130010, 2040928, 1, 1, 0, 300), +(5923, 7130010, 2044412, 1, 1, 0, 300), +(5924, 7130010, 4130002, 1, 1, 0, 6000), +(5925, 7130010, 4130004, 1, 1, 0, 6000), +(5926, 7130010, 4130006, 1, 1, 0, 6000), +(5927, 7130020, 4000179, 1, 1, 0, 600000), +(5928, 7130020, 2050004, 1, 1, 0, 50000), +(5929, 7130020, 2000006, 1, 1, 0, 20000), +(5930, 7130020, 2000002, 1, 1, 0, 20000), +(5931, 7130020, 2002003, 1, 1, 0, 20000), +(5932, 7130020, 2020015, 1, 1, 0, 20000), +(5933, 7130020, 2022040, 1, 1, 0, 20000), +(5934, 7130020, 1072164, 1, 1, 0, 800), +(5935, 7130020, 4020008, 1, 1, 0, 9000), +(5936, 7130020, 4010001, 1, 1, 0, 9000), +(5937, 7130020, 4004003, 1, 1, 0, 10000), +(5938, 7130020, 4006001, 1, 1, 0, 10000), +(5939, 7130020, 1002329, 1, 1, 0, 1500), +(5940, 7130020, 2044701, 1, 1, 0, 300), +(5941, 7130020, 1002287, 1, 1, 0, 1500), +(5942, 7130020, 1041101, 1, 1, 0, 800), +(5943, 7130020, 1061100, 1, 1, 0, 800), +(5944, 7130020, 1051095, 1, 1, 0, 700), +(5945, 7130020, 1051078, 1, 1, 0, 700), +(5946, 7130020, 1072152, 1, 1, 0, 800), +(5947, 7130020, 2048001, 1, 1, 0, 300), +(5948, 7130020, 1422012, 1, 1, 0, 700), +(5949, 7130020, 1002323, 1, 1, 0, 1500), +(5950, 7130020, 1102032, 1, 1, 0, 1000), +(5951, 7130020, 1072194, 1, 1, 0, 800), +(5952, 7130020, 1102035, 1, 1, 0, 1000), +(5953, 7130020, 1072312, 1, 1, 0, 800), +(5954, 7130020, 2044901, 1, 1, 0, 300), +(5955, 7130020, 2040324, 1, 1, 0, 300), +(5956, 7130020, 2040421, 1, 1, 0, 300), +(5957, 7130020, 4130010, 1, 1, 0, 6000), +(5958, 7130020, 4130013, 1, 1, 0, 6000), +(5959, 7130100, 2000006, 1, 1, 0, 20000), +(5960, 7130100, 2000004, 1, 1, 0, 20000), +(5961, 7130100, 4010006, 1, 1, 0, 9000), +(5962, 7130100, 4000028, 1, 1, 0, 600000), +(5963, 7130100, 2070005, 1, 1, 0, 400), +(5964, 7130100, 2043101, 1, 1, 0, 300), +(5965, 7130100, 4006000, 1, 1, 0, 10000), +(5966, 7130100, 1041093, 1, 1, 0, 800), +(5967, 7130100, 1061092, 1, 1, 0, 800), +(5968, 7130100, 1040100, 1, 1, 0, 800), +(5969, 7130100, 1060089, 1, 1, 0, 800), +(5970, 7130100, 1050067, 1, 1, 0, 700), +(5971, 7130100, 1051055, 1, 1, 0, 700), +(5972, 7130100, 1002095, 1, 1, 0, 1500), +(5973, 7130100, 1002287, 1, 1, 0, 1500), +(5974, 7130100, 1002283, 1, 1, 0, 1500), +(5975, 7130100, 1051064, 1, 1, 0, 700), +(5976, 7130100, 1072163, 1, 1, 0, 800), +(5977, 7130100, 1322019, 1, 1, 0, 700), +(5978, 7130100, 1452009, 1, 1, 0, 500), +(5979, 7130100, 1472026, 1, 1, 0, 500), +(5980, 7130100, 1102027, 1, 1, 0, 1000), +(5981, 7130100, 1082115, 1, 1, 0, 1000), +(5982, 7130100, 1072184, 1, 1, 0, 800), +(5983, 7130100, 1002272, 1, 1, 0, 1500), +(5984, 7130100, 1082118, 1, 1, 0, 1000), +(5985, 7130100, 1002637, 1, 1, 0, 1500), +(5986, 7130100, 2040421, 1, 1, 0, 300), +(5987, 7130100, 2049000, 1, 1, 0, 150), +(5988, 7130100, 4130008, 1, 1, 0, 6000), +(5989, 7130100, 4130014, 1, 1, 0, 6000), +(5990, 7130101, 2000005, 1, 1, 0, 20000), +(5991, 7130101, 4020008, 1, 1, 0, 9000), +(5992, 7130101, 4010003, 1, 1, 0, 9000), +(5993, 7130101, 2044101, 1, 1, 0, 300), +(5994, 7130101, 4000046, 1, 1, 0, 600000), +(5995, 7130101, 4006001, 1, 1, 0, 10000), +(5996, 7130101, 1051047, 1, 1, 0, 700), +(5997, 7130101, 1041091, 1, 1, 0, 800), +(5998, 7130101, 1061090, 1, 1, 0, 800), +(5999, 7130101, 1412008, 1, 1, 0, 700), +(6000, 7130101, 1452011, 1, 1, 0, 500), +(6001, 7130101, 1422010, 1, 1, 0, 700), +(6002, 7130101, 1082100, 1, 1, 0, 1000), +(6003, 7130101, 1072167, 1, 1, 0, 800), +(6004, 7130101, 1041103, 1, 1, 0, 800), +(6005, 7130101, 1061102, 1, 1, 0, 800), +(6006, 7130101, 1092016, 1, 1, 0, 700), +(6007, 7130101, 1051063, 1, 1, 0, 700), +(6008, 7130101, 1002284, 1, 1, 0, 1500), +(6009, 7130101, 1082104, 1, 1, 0, 1000), +(6010, 7130101, 1102028, 1, 1, 0, 1000), +(6011, 7130101, 1382010, 1, 1, 0, 700), +(6012, 7130101, 1051056, 1, 1, 0, 700), +(6013, 7130101, 1002327, 1, 1, 0, 1500), +(6014, 7130101, 1050077, 1, 1, 0, 700), +(6015, 7130101, 1072211, 1, 1, 0, 800), +(6016, 7130101, 1482009, 1, 1, 0, 500), +(6017, 7130101, 2044114, 1, 1, 0, 300), +(6018, 7130101, 4130008, 1, 1, 0, 6000), +(6019, 7130101, 4130012, 1, 1, 0, 6000), +(6020, 7130101, 4130014, 1, 1, 0, 6000), +(6021, 7130102, 4000050, 1, 1, 0, 600000), +(6022, 7130102, 2041020, 1, 1, 0, 300), +(6023, 7130102, 2000006, 1, 1, 0, 20000), +(6024, 7130102, 2000004, 1, 1, 0, 20000), +(6025, 7130102, 4020008, 1, 1, 0, 9000), +(6026, 7130102, 4010001, 1, 1, 0, 9000), +(6027, 7130102, 2043801, 1, 1, 0, 300), +(6028, 7130102, 2044702, 1, 1, 0, 300), +(6029, 7130102, 2070010, 1, 1, 0, 500), +(6030, 7130102, 4004002, 1, 1, 0, 10000), +(6031, 7130102, 2041005, 1, 1, 0, 300), +(6032, 7130102, 1002185, 1, 1, 0, 1500), +(6033, 7130102, 1041081, 1, 1, 0, 800), +(6034, 7130102, 1061080, 1, 1, 0, 800), +(6035, 7130102, 1050047, 1, 1, 0, 700), +(6036, 7130102, 1002028, 1, 1, 0, 1500), +(6037, 7130102, 1072124, 1, 1, 0, 800), +(6038, 7130102, 1072128, 1, 1, 0, 800), +(6039, 7130102, 1082081, 1, 1, 0, 1000), +(6040, 7130102, 1082010, 1, 1, 0, 1000), +(6041, 7130102, 1432006, 1, 1, 0, 500), +(6042, 7130102, 1472022, 1, 1, 0, 500), +(6043, 7130102, 1082091, 1, 1, 0, 1000), +(6044, 7130102, 1442010, 1, 1, 0, 700), +(6045, 7130102, 1102023, 1, 1, 0, 1000), +(6046, 7130102, 1072137, 1, 1, 0, 800), +(6047, 7130102, 1050068, 1, 1, 0, 700), +(6048, 7130102, 1002030, 1, 1, 0, 1500), +(6049, 7130102, 1002282, 1, 1, 0, 1500), +(6050, 7130102, 1050063, 1, 1, 0, 700), +(6051, 7130102, 1492008, 1, 1, 0, 500), +(6052, 7130102, 2044901, 1, 1, 0, 300), +(6053, 7130102, 2040625, 1, 1, 0, 300), +(6054, 7130102, 4130010, 1, 1, 0, 6000), +(6055, 7130102, 4130017, 1, 1, 0, 6000), +(6056, 7130102, 4000049, 1, 1, 0, 600000), +(6057, 7130102, 4130003, 1, 1, 0, 6000), +(6058, 7130102, 4003005, 1, 1, 0, 200000), +(6059, 7130102, 2041023, 1, 1, 0, 300), +(6060, 7130102, 4000021, 1, 1, 0, 50000), +(6061, 7130102, 4020005, 1, 1, 0, 9000), +(6062, 7130102, 4010005, 1, 1, 0, 9000), +(6063, 7130102, 1050069, 1, 1, 0, 700), +(6064, 7130102, 1051054, 1, 1, 0, 700), +(6065, 7130102, 2044101, 1, 1, 0, 300), +(6066, 7130102, 1402012, 1, 1, 0, 700), +(6067, 7130102, 1422009, 1, 1, 0, 700), +(6068, 7130102, 2070005, 1, 1, 0, 400), +(6069, 7130102, 1050074, 1, 1, 0, 700), +(6070, 7130102, 1051058, 1, 1, 0, 700), +(6071, 7130102, 1032011, 1, 1, 0, 1000), +(6072, 7130102, 1092006, 1, 1, 0, 700), +(6073, 7130102, 1332015, 1, 1, 0, 500), +(6074, 7130102, 1002084, 1, 1, 0, 1500), +(6075, 7130102, 4004000, 1, 1, 0, 10000), +(6076, 7130102, 1452011, 1, 1, 0, 500), +(6077, 7130102, 2040025, 1, 1, 0, 300), +(6078, 7130102, 2043017, 1, 1, 0, 300), +(6079, 7130102, 2043210, 1, 1, 0, 300), +(6080, 7130102, 2044214, 1, 1, 0, 300), +(6081, 7130103, 4000208, 1, 1, 0, 600000), +(6082, 7130103, 2002003, 1, 1, 0, 20000), +(6083, 7130103, 2002004, 1, 1, 0, 20000), +(6084, 7130103, 2000006, 1, 1, 0, 20000), +(6085, 7130103, 2000004, 1, 1, 0, 20000), +(6086, 7130103, 4020007, 1, 1, 0, 9000), +(6087, 7130103, 4020002, 1, 1, 0, 9000), +(6088, 7130103, 4020001, 1, 1, 0, 9000), +(6089, 7130103, 4006001, 1, 1, 0, 10000), +(6090, 7130103, 2040301, 1, 1, 0, 300), +(6091, 7130103, 2040516, 1, 1, 0, 300), +(6092, 7130103, 1040092, 1, 1, 0, 800), +(6093, 7130103, 1060081, 1, 1, 0, 800), +(6094, 7130103, 1041092, 1, 1, 0, 800), +(6095, 7130103, 1061091, 1, 1, 0, 800), +(6096, 7130103, 1041095, 1, 1, 0, 800), +(6097, 7130103, 1061094, 1, 1, 0, 800), +(6098, 7130103, 1050061, 1, 1, 0, 700), +(6099, 7130103, 1051063, 1, 1, 0, 700), +(6100, 7130103, 1051054, 1, 1, 0, 700), +(6101, 7130103, 1092023, 1, 1, 0, 700), +(6102, 7130103, 1072182, 1, 1, 0, 800), +(6103, 7130103, 1072172, 1, 1, 0, 800), +(6104, 7130103, 1072210, 1, 1, 0, 800), +(6105, 7130103, 1072177, 1, 1, 0, 800), +(6106, 7130103, 1082207, 1, 1, 0, 1000), +(6107, 7130103, 2040418, 1, 1, 0, 300), +(6108, 7130103, 4130001, 1, 1, 0, 6000), +(6109, 7130103, 4130004, 1, 1, 0, 6000), +(6110, 7130103, 4130012, 1, 1, 0, 6000), +(6111, 7130104, 2000002, 1, 1, 0, 20000), +(6112, 7130104, 2000006, 1, 1, 0, 20000), +(6113, 7130104, 2000004, 1, 1, 0, 20000), +(6114, 7130104, 4010001, 1, 1, 0, 9000), +(6115, 7130104, 4020000, 1, 1, 0, 9000), +(6116, 7130104, 4006001, 1, 1, 0, 10000), +(6117, 7130104, 4004000, 1, 1, 0, 10000), +(6118, 7130104, 1002095, 1, 1, 0, 1500), +(6119, 7130104, 1051054, 1, 1, 0, 700), +(6120, 7130104, 1082110, 1, 1, 0, 1000), +(6121, 7130104, 1072163, 1, 1, 0, 800), +(6122, 7130104, 1472028, 1, 1, 0, 500), +(6123, 7130104, 1032020, 1, 1, 0, 1000), +(6124, 7130104, 1102023, 1, 1, 0, 1000), +(6125, 7130104, 2040002, 1, 1, 0, 300), +(6126, 7130104, 2040705, 1, 1, 0, 300), +(6127, 7130104, 1332018, 1, 1, 0, 500), +(6128, 7130104, 1422010, 1, 1, 0, 700), +(6129, 7130104, 4000297, 1, 1, 0, 600000), +(6130, 7130104, 1082204, 1, 1, 0, 1000), +(6131, 7130104, 2040427, 1, 1, 0, 300), +(6132, 7130104, 2040824, 1, 1, 0, 300), +(6133, 7130104, 2049100, 1, 1, 0, 150), +(6134, 7130104, 4130000, 1, 1, 0, 6000), +(6135, 7130104, 4130017, 1, 1, 0, 6000), +(6136, 7130200, 4000053, 1, 1, 0, 600000), +(6137, 7130200, 2000006, 1, 1, 0, 20000), +(6138, 7130200, 4020001, 1, 1, 0, 9000), +(6139, 7130200, 4010003, 1, 1, 0, 9000), +(6140, 7130200, 2043701, 1, 1, 0, 300), +(6141, 7130200, 2044701, 1, 1, 0, 300), +(6142, 7130200, 4004000, 1, 1, 0, 10000), +(6143, 7130200, 4006000, 1, 1, 0, 10000), +(6144, 7130200, 2040302, 1, 1, 0, 300), +(6145, 7130200, 1050055, 1, 1, 0, 700), +(6146, 7130200, 1041094, 1, 1, 0, 800), +(6147, 7130200, 1061093, 1, 1, 0, 800), +(6148, 7130200, 1050069, 1, 1, 0, 700), +(6149, 7130200, 1040102, 1, 1, 0, 800), +(6150, 7130200, 1060090, 1, 1, 0, 800), +(6151, 7130200, 1082100, 1, 1, 0, 1000), +(6152, 7130200, 1041102, 1, 1, 0, 800), +(6153, 7130200, 1061101, 1, 1, 0, 800), +(6154, 7130200, 1002254, 1, 1, 0, 1500), +(6155, 7130200, 1002288, 1, 1, 0, 1500), +(6156, 7130200, 1092015, 1, 1, 0, 700), +(6157, 7130200, 1332018, 1, 1, 0, 500), +(6158, 7130200, 1402012, 1, 1, 0, 700), +(6159, 7130200, 1472029, 1, 1, 0, 500), +(6160, 7130200, 1322020, 1, 1, 0, 700), +(6161, 7130200, 1002273, 1, 1, 0, 1500), +(6162, 7130200, 1002339, 1, 1, 0, 1500), +(6163, 7130200, 1051066, 1, 1, 0, 700), +(6164, 7130200, 1041105, 1, 1, 0, 800), +(6165, 7130200, 1061104, 1, 1, 0, 800), +(6166, 7130200, 1072309, 1, 1, 0, 800), +(6167, 7130200, 2040031, 1, 1, 0, 300), +(6168, 7130200, 4130006, 1, 1, 0, 6000), +(6169, 7130200, 4130009, 1, 1, 0, 6000), +(6170, 7130200, 4130014, 1, 1, 0, 6000), +(6171, 7130300, 4000148, 1, 1, 0, 600000), +(6172, 7130300, 2000005, 1, 1, 0, 20000), +(6173, 7130300, 2000004, 1, 1, 0, 20000), +(6174, 7130300, 2002004, 1, 1, 0, 20000), +(6175, 7130300, 4006001, 1, 1, 0, 10000), +(6176, 7130300, 4010006, 1, 1, 0, 9000), +(6177, 7130300, 4020006, 1, 1, 0, 9000), +(6178, 7130300, 2044301, 1, 1, 0, 300), +(6179, 7130300, 2041009, 1, 1, 0, 300), +(6180, 7130300, 1002284, 1, 1, 0, 1500), +(6181, 7130300, 1002253, 1, 1, 0, 1500), +(6182, 7130300, 1072155, 1, 1, 0, 800), +(6183, 7130300, 1072167, 1, 1, 0, 800), +(6184, 7130300, 1050074, 1, 1, 0, 700), +(6185, 7130300, 1302018, 1, 1, 0, 700), +(6186, 7130300, 1002274, 1, 1, 0, 1500), +(6187, 7130300, 1002276, 1, 1, 0, 1500), +(6188, 7130300, 1041107, 1, 1, 0, 800), +(6189, 7130300, 1061106, 1, 1, 0, 800), +(6190, 7130300, 1050080, 1, 1, 0, 700), +(6191, 7130300, 1051068, 1, 1, 0, 700), +(6192, 7130300, 1072212, 1, 1, 0, 800), +(6193, 7130300, 1082110, 1, 1, 0, 1000), +(6194, 7130300, 1041121, 1, 1, 0, 800), +(6195, 7130300, 1061120, 1, 1, 0, 800), +(6196, 7130300, 1072203, 1, 1, 0, 800), +(6197, 7130300, 1072206, 1, 1, 0, 800), +(6198, 7130300, 1082143, 1, 1, 0, 1000), +(6199, 7130300, 1072312, 1, 1, 0, 800), +(6200, 7130300, 2040031, 1, 1, 0, 300), +(6201, 7130300, 2040823, 1, 1, 0, 300), +(6202, 7130300, 2043210, 1, 1, 0, 300), +(6203, 7130300, 4130000, 1, 1, 0, 6000), +(6204, 7130400, 4010001, 1, 1, 0, 90000), +(6205, 7130400, 4020001, 1, 1, 0, 90000), +(6206, 7130400, 4004003, 1, 1, 0, 100000), +(6207, 7130400, 4006001, 1, 1, 0, 100000), +(6208, 7130400, 2000006, 1, 1, 0, 999999), +(6209, 7130400, 2000004, 1, 1, 0, 999999), +(6210, 7130400, 2002003, 1, 1, 0, 200000), +(6211, 7130400, 2040504, 1, 1, 0, 3000), +(6212, 7130400, 1050058, 1, 1, 0, 7000), +(6213, 7130400, 1041094, 1, 1, 0, 8000), +(6214, 7130400, 1061093, 1, 1, 0, 8000), +(6215, 7130400, 2040302, 1, 1, 0, 3000), +(6216, 7130400, 1092016, 1, 1, 0, 7000), +(6217, 7130400, 1102021, 1, 1, 0, 10000), +(6218, 7130400, 1462009, 1, 1, 0, 5000), +(6219, 7130400, 1472024, 1, 1, 0, 5000), +(6220, 7130400, 1040102, 1, 1, 0, 8000), +(6221, 7130400, 1060090, 1, 1, 0, 8000), +(6222, 7130400, 1072309, 1, 1, 0, 8000), +(6223, 7130400, 4130002, 1, 1, 0, 60000), +(6224, 7130400, 4130005, 1, 1, 0, 60000), +(6225, 7130400, 4130015, 1, 1, 0, 60000), +(6226, 7130401, 4010004, 1, 1, 0, 90000), +(6227, 7130401, 4020000, 1, 1, 0, 90000), +(6228, 7130401, 4004002, 1, 1, 0, 100000), +(6229, 7130401, 4006001, 1, 1, 0, 100000), +(6230, 7130401, 2000006, 1, 1, 0, 999999), +(6231, 7130401, 2000004, 1, 1, 0, 999999), +(6232, 7130401, 2002000, 1, 1, 0, 200000), +(6233, 7130401, 2040601, 1, 1, 0, 3000), +(6234, 7130401, 2040701, 1, 1, 0, 3000), +(6235, 7130401, 1051041, 1, 1, 0, 7000), +(6236, 7130401, 1442010, 1, 1, 0, 7000), +(6237, 7130401, 1072158, 1, 1, 0, 8000), +(6238, 7130401, 1072163, 1, 1, 0, 8000), +(6239, 7130401, 1412008, 1, 1, 0, 7000), +(6240, 7130401, 1040106, 1, 1, 0, 8000), +(6241, 7130401, 1060094, 1, 1, 0, 8000), +(6242, 7130401, 1422009, 1, 1, 0, 7000), +(6243, 7130401, 1032022, 1, 1, 0, 10000), +(6244, 7130401, 1452010, 1, 1, 0, 5000), +(6245, 7130401, 2070007, 1, 1, 0, 2000), +(6246, 7130401, 1482009, 1, 1, 0, 5000), +(6247, 7130401, 2040620, 1, 1, 0, 3000), +(6248, 7130401, 2044012, 1, 1, 0, 3000), +(6249, 7130401, 4130006, 1, 1, 0, 60000), +(6250, 7130401, 4130015, 1, 1, 0, 60000), +(6251, 7130402, 4010006, 1, 1, 0, 90000), +(6252, 7130402, 4020006, 1, 1, 0, 90000), +(6253, 7130402, 4004001, 1, 1, 0, 100000), +(6254, 7130402, 4006000, 1, 1, 0, 100000), +(6255, 7130402, 2000006, 1, 1, 0, 999999), +(6256, 7130402, 2000004, 1, 1, 0, 999999), +(6257, 7130402, 2002006, 1, 1, 0, 200000), +(6258, 7130402, 2041007, 1, 1, 0, 3000), +(6259, 7130402, 1032019, 1, 1, 0, 10000), +(6260, 7130402, 1082090, 1, 1, 0, 10000), +(6261, 7130402, 1041092, 1, 1, 0, 8000), +(6262, 7130402, 1061091, 1, 1, 0, 8000), +(6263, 7130402, 2043001, 1, 1, 0, 3000), +(6264, 7130402, 1032022, 1, 1, 0, 10000), +(6265, 7130402, 1402012, 1, 1, 0, 7000), +(6266, 7130402, 1072155, 1, 1, 0, 8000), +(6267, 7130402, 1422005, 1, 1, 0, 7000), +(6268, 7130402, 1041101, 1, 1, 0, 8000), +(6269, 7130402, 1061100, 1, 1, 0, 8000), +(6270, 7130402, 2070007, 1, 1, 0, 2000), +(6271, 7130402, 1002637, 1, 1, 0, 15000), +(6272, 7130402, 2330003, 1, 1, 0, 5000), +(6273, 7130402, 2040024, 1, 1, 0, 3000), +(6274, 7130402, 2040534, 1, 1, 0, 3000), +(6275, 7130402, 2043112, 1, 1, 0, 3000), +(6276, 7130402, 4130017, 1, 1, 0, 60000), +(6277, 7130500, 4000226, 1, 1, 0, 600000), +(6278, 7130500, 2000006, 1, 1, 0, 20000), +(6279, 7130500, 2000004, 1, 1, 0, 20000), +(6280, 7130500, 4010001, 1, 1, 0, 9000), +(6281, 7130500, 4020000, 1, 1, 0, 9000), +(6282, 7130500, 2040002, 1, 1, 0, 300), +(6283, 7130500, 2040705, 1, 1, 0, 300), +(6284, 7130500, 4006001, 1, 1, 0, 10000), +(6285, 7130500, 4004000, 1, 1, 0, 10000), +(6286, 7130500, 1002095, 1, 1, 0, 1500), +(6287, 7130500, 1051054, 1, 1, 0, 700), +(6288, 7130500, 1082110, 1, 1, 0, 1000), +(6289, 7130500, 1072163, 1, 1, 0, 800), +(6290, 7130500, 1332018, 1, 1, 0, 500), +(6291, 7130500, 1422010, 1, 1, 0, 700), +(6292, 7130500, 1472028, 1, 1, 0, 500), +(6293, 7130500, 1032020, 1, 1, 0, 1000), +(6294, 7130500, 1102023, 1, 1, 0, 1000), +(6295, 7130500, 4000227, 1, 1, 0, 600000), +(6296, 7130500, 4000228, 1, 1, 0, 600000), +(6297, 7130500, 1052122, 1, 1, 0, 700), +(6298, 7130500, 2040326, 1, 1, 0, 300), +(6299, 7130500, 2040623, 1, 1, 0, 300), +(6300, 7130500, 2040824, 1, 1, 0, 300), +(6301, 7130500, 4130007, 1, 1, 0, 6000), +(6302, 7130500, 4130011, 1, 1, 0, 6000), +(6303, 7130500, 4130015, 1, 1, 0, 6000), +(6304, 7130501, 4000229, 1, 1, 0, 600000), +(6305, 7130501, 2000006, 1, 1, 0, 20000), +(6306, 7130501, 2000004, 1, 1, 0, 20000), +(6307, 7130501, 4010002, 1, 1, 0, 9000), +(6308, 7130501, 4020002, 1, 1, 0, 9000), +(6309, 7130501, 2040505, 1, 1, 0, 300), +(6310, 7130501, 2043002, 1, 1, 0, 300), +(6311, 7130501, 4006001, 1, 1, 0, 10000), +(6312, 7130501, 4004002, 1, 1, 0, 10000), +(6313, 7130501, 1082105, 1, 1, 0, 1000), +(6314, 7130501, 1072178, 1, 1, 0, 800), +(6315, 7130501, 1002276, 1, 1, 0, 1500), +(6316, 7130501, 1041103, 1, 1, 0, 800), +(6317, 7130501, 1061102, 1, 1, 0, 800), +(6318, 7130501, 1472027, 1, 1, 0, 500), +(6319, 7130501, 1302018, 1, 1, 0, 700), +(6320, 7130501, 2070005, 1, 1, 0, 400), +(6321, 7130501, 1102027, 1, 1, 0, 1000), +(6322, 7130501, 1092016, 1, 1, 0, 700), +(6323, 7130501, 4000230, 1, 1, 0, 600000), +(6324, 7130501, 1052122, 1, 1, 0, 700), +(6325, 7130501, 2040321, 1, 1, 0, 300), +(6326, 7130501, 2040515, 1, 1, 0, 300), +(6327, 7130501, 2040625, 1, 1, 0, 300), +(6328, 7130501, 4130008, 1, 1, 0, 6000), +(6329, 7130501, 4130010, 1, 1, 0, 6000), +(6330, 7130600, 2000006, 1, 1, 0, 20000), +(6331, 7130600, 2000004, 1, 1, 0, 20000), +(6332, 7130600, 4010001, 1, 1, 0, 9000), +(6333, 7130600, 4010000, 1, 1, 0, 9000), +(6334, 7130600, 2044101, 1, 1, 0, 300), +(6335, 7130600, 2041008, 1, 1, 0, 300), +(6336, 7130600, 4006001, 1, 1, 0, 10000), +(6337, 7130600, 4004002, 1, 1, 0, 10000), +(6338, 7130600, 1051062, 1, 1, 0, 700), +(6339, 7130600, 1002287, 1, 1, 0, 1500), +(6340, 7130600, 1082119, 1, 1, 0, 1000), +(6341, 7130600, 1072211, 1, 1, 0, 800), +(6342, 7130600, 1332019, 1, 1, 0, 500), +(6343, 7130600, 1452009, 1, 1, 0, 500), +(6344, 7130600, 4000260, 1, 1, 0, 600000), +(6345, 7130600, 2040512, 1, 1, 0, 300), +(6346, 7130600, 2044010, 1, 1, 0, 300), +(6347, 7130600, 4130001, 1, 1, 0, 6000), +(6348, 7130600, 4130005, 1, 1, 0, 6000), +(6349, 7130600, 4130017, 1, 1, 0, 6000), +(6350, 7130601, 2000006, 1, 1, 0, 20000), +(6351, 7130601, 2000004, 1, 1, 0, 20000), +(6352, 7130601, 4020007, 1, 1, 0, 9000), +(6353, 7130601, 4020001, 1, 1, 0, 9000), +(6354, 7130601, 2044602, 1, 1, 0, 300), +(6355, 7130601, 2043701, 1, 1, 0, 300), +(6356, 7130601, 4006000, 1, 1, 0, 10000), +(6357, 7130601, 4004003, 1, 1, 0, 10000), +(6358, 7130601, 1040106, 1, 1, 0, 800), +(6359, 7130601, 1060094, 1, 1, 0, 800), +(6360, 7130601, 1002252, 1, 1, 0, 1500), +(6361, 7130601, 1082125, 1, 1, 0, 1000), +(6362, 7130601, 1072212, 1, 1, 0, 800), +(6363, 7130601, 1462009, 1, 1, 0, 500), +(6364, 7130601, 1322019, 1, 1, 0, 700), +(6365, 7130601, 4000261, 1, 1, 0, 600000), +(6366, 7130601, 1052125, 1, 1, 0, 700), +(6367, 7130601, 2044802, 1, 1, 0, 300), +(6368, 7130601, 2040927, 1, 1, 0, 300), +(6369, 7130601, 4130003, 1, 1, 0, 6000), +(6370, 7130601, 4130011, 1, 1, 0, 6000), +(6371, 7130601, 4130016, 1, 1, 0, 6000), +(6372, 7140000, 4000132, 1, 1, 0, 600000), +(6373, 7140000, 2000006, 1, 1, 0, 20000), +(6374, 7140000, 4004001, 1, 1, 0, 10000), +(6375, 7140000, 4020002, 1, 1, 0, 9000), +(6376, 7140000, 4010002, 1, 1, 0, 9000), +(6377, 7140000, 2041001, 1, 1, 0, 300), +(6378, 7140000, 2040502, 1, 1, 0, 300), +(6379, 7140000, 1040107, 1, 1, 0, 800), +(6380, 7140000, 1060095, 1, 1, 0, 800), +(6381, 7140000, 1002094, 1, 1, 0, 1500), +(6382, 7140000, 1002287, 1, 1, 0, 1500), +(6383, 7140000, 1040108, 1, 1, 0, 800), +(6384, 7140000, 1060097, 1, 1, 0, 800), +(6385, 7140000, 1050082, 1, 1, 0, 700), +(6386, 7140000, 1002273, 1, 1, 0, 1500), +(6387, 7140000, 1002277, 1, 1, 0, 1500), +(6388, 7140000, 1002338, 1, 1, 0, 1500), +(6389, 7140000, 1072182, 1, 1, 0, 800), +(6390, 7140000, 1082114, 1, 1, 0, 1000), +(6391, 7140000, 1092025, 1, 1, 0, 700), +(6392, 7140000, 1462011, 1, 1, 0, 500), +(6393, 7140000, 1432010, 1, 1, 0, 500), +(6394, 7140000, 1050089, 1, 1, 0, 700), +(6395, 7140000, 1072192, 1, 1, 0, 800), +(6396, 7140000, 1072207, 1, 1, 0, 800), +(6397, 7140000, 1082128, 1, 1, 0, 1000), +(6398, 7140000, 1002640, 1, 1, 0, 1500), +(6399, 7140000, 2040924, 1, 1, 0, 300), +(6400, 7140000, 2043015, 1, 1, 0, 300), +(6401, 7140000, 4130001, 1, 1, 0, 6000), +(6402, 7140000, 4130005, 1, 1, 0, 6000), +(6403, 7160000, 4000133, 1, 1, 0, 600000), +(6404, 7160000, 2000006, 1, 1, 0, 20000), +(6405, 7160000, 2000002, 1, 1, 0, 20000), +(6406, 7160000, 4020008, 1, 1, 0, 9000), +(6407, 7160000, 4010003, 1, 1, 0, 9000), +(6408, 7160000, 2044401, 1, 1, 0, 300), +(6409, 7160000, 4006001, 1, 1, 0, 10000), +(6410, 7160000, 4004000, 1, 1, 0, 10000), +(6411, 7160000, 4131007, 1, 1, 0, 6000), +(6412, 7160000, 2070005, 1, 1, 0, 400), +(6413, 7160000, 1050070, 1, 1, 0, 700), +(6414, 7160000, 1452011, 1, 1, 0, 500), +(6415, 7160000, 1082103, 1, 1, 0, 1000), +(6416, 7160000, 1040107, 1, 1, 0, 800), +(6417, 7160000, 1060095, 1, 1, 0, 800), +(6418, 7160000, 1051057, 1, 1, 0, 700), +(6419, 7160000, 1002330, 1, 1, 0, 1500), +(6420, 7160000, 1002272, 1, 1, 0, 1500), +(6421, 7160000, 1032016, 1, 1, 0, 1000), +(6422, 7160000, 1041105, 1, 1, 0, 800), +(6423, 7160000, 1061104, 1, 1, 0, 800), +(6424, 7160000, 1050075, 1, 1, 0, 700), +(6425, 7160000, 1051077, 1, 1, 0, 700), +(6426, 7160000, 1051066, 1, 1, 0, 700), +(6427, 7160000, 1072173, 1, 1, 0, 800), +(6428, 7160000, 1082116, 1, 1, 0, 1000), +(6429, 7160000, 1082109, 1, 1, 0, 1000), +(6430, 7160000, 1082121, 1, 1, 0, 1000), +(6431, 7160000, 1041115, 1, 1, 0, 800), +(6432, 7160000, 1061114, 1, 1, 0, 800), +(6433, 7160000, 1072197, 1, 1, 0, 800), +(6434, 7160000, 1082125, 1, 1, 0, 1000), +(6435, 7160000, 1082131, 1, 1, 0, 1000), +(6436, 7160000, 2330003, 1, 1, 0, 500), +(6437, 7160000, 1492010, 1, 1, 0, 500), +(6438, 7160000, 2040619, 1, 1, 0, 300), +(6439, 7160000, 4130003, 1, 1, 0, 6000), +(6440, 7160000, 4130007, 1, 1, 0, 6000); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(6441, 7160000, 4130011, 1, 1, 0, 6000), +(6442, 7220000, 4000284, 1, 1, 0, 600000), +(6443, 7220000, 4000284, 1, 1, 0, 600000), +(6444, 7220000, 4000284, 1, 1, 0, 600000), +(6445, 7220000, 4000285, 1, 1, 0, 600000), +(6446, 7220000, 4000285, 1, 1, 0, 600000), +(6447, 7220000, 4000285, 1, 1, 0, 600000), +(6448, 7220000, 4000021, 1, 1, 0, 500000), +(6449, 7220000, 4000021, 1, 1, 0, 500000), +(6450, 7220000, 4000021, 1, 1, 0, 500000), +(6451, 7220000, 4000283, 1, 1, 0, 600000), +(6452, 7220000, 4000283, 1, 1, 0, 600000), +(6453, 7220000, 4000283, 1, 1, 0, 600000), +(6454, 7220000, 4004000, 1, 1, 0, 100000), +(6455, 7220000, 4010001, 1, 1, 0, 90000), +(6456, 7220000, 4020006, 1, 1, 0, 90000), +(6457, 7220000, 2000002, 1, 1, 0, 200000), +(6458, 7220000, 2000003, 1, 1, 0, 200000), +(6459, 7220000, 2002004, 1, 1, 0, 200000), +(6460, 7220000, 2002011, 1, 1, 0, 200000), +(6461, 7220000, 2022142, 1, 1, 0, 200000), +(6462, 7220000, 2040901, 1, 1, 0, 3000), +(6463, 7220000, 2041001, 1, 1, 0, 3000), +(6464, 7220000, 2043801, 1, 1, 0, 3000), +(6465, 7220000, 2043101, 1, 1, 0, 3000), +(6466, 7220000, 2041010, 1, 1, 0, 3000), +(6467, 7220000, 2043301, 1, 1, 0, 3000), +(6468, 7220000, 2044101, 1, 1, 0, 3000), +(6469, 7220000, 2044501, 1, 1, 0, 3000), +(6470, 7220000, 2041022, 1, 1, 0, 3000), +(6471, 7220000, 2044601, 1, 1, 0, 3000), +(6472, 7220000, 2048005, 1, 1, 0, 3000), +(6473, 7220000, 2040005, 1, 1, 0, 3000), +(6474, 7220000, 2040514, 1, 1, 0, 3000), +(6475, 7220000, 2040705, 1, 1, 0, 3000), +(6476, 7220000, 2040805, 1, 1, 0, 3000), +(6477, 7220000, 2060001, 1, 1, 0, 300000), +(6478, 7220000, 2061001, 1, 1, 0, 300000), +(6479, 7220000, 2070004, 1, 1, 0, 5000), +(6480, 7220000, 1302012, 1, 1, 0, 7000), +(6481, 7220000, 1312010, 1, 1, 0, 7000), +(6482, 7220000, 1322019, 1, 1, 0, 7000), +(6483, 7220000, 1332018, 1, 1, 0, 5000), +(6484, 7220000, 1372015, 1, 1, 0, 7000), +(6485, 7220000, 1382010, 1, 1, 0, 7000), +(6486, 7220000, 1402012, 1, 1, 0, 7000), +(6487, 7220000, 1412008, 1, 1, 0, 7000), +(6488, 7220000, 1422010, 1, 1, 0, 7000), +(6489, 7220000, 1432007, 1, 1, 0, 5000), +(6490, 7220000, 1442008, 1, 1, 0, 7000), +(6491, 7220000, 1452011, 1, 1, 0, 5000), +(6492, 7220000, 1462009, 1, 1, 0, 5000), +(6493, 7220000, 1472029, 1, 1, 0, 5000), +(6494, 7220000, 1482009, 1, 1, 0, 5000), +(6495, 7220000, 1492009, 1, 1, 0, 5000), +(6496, 7220000, 2044801, 1, 1, 0, 3000), +(6497, 7220000, 2040025, 1, 1, 0, 3000), +(6498, 7220000, 2040825, 1, 1, 0, 3000), +(6499, 7220000, 2043019, 1, 1, 0, 3000), +(6500, 7220000, 2044014, 1, 1, 0, 3000), +(6501, 7220000, 2044312, 1, 1, 0, 3000), +(6502, 7220000, 2044412, 1, 1, 0, 3000), +(6503, 7220000, 2049100, 1, 1, 0, 3000), +(6504, 7220001, 4000172, 1, 1, 0, 600000), +(6505, 7220001, 4000172, 1, 1, 0, 600000), +(6506, 7220001, 4000172, 1, 1, 0, 600000), +(6507, 7220001, 4000172, 1, 1, 0, 600000), +(6508, 7220001, 4000172, 1, 1, 0, 600000), +(6509, 7220001, 4000172, 1, 1, 0, 600000), +(6510, 7220001, 4000172, 1, 1, 0, 600000), +(6511, 7220001, 4000172, 1, 1, 0, 600000), +(6512, 7220001, 4000021, 1, 1, 0, 500000), +(6513, 7220001, 4004002, 1, 1, 0, 100000), +(6514, 7220001, 4010004, 1, 1, 0, 90000), +(6515, 7220001, 4020004, 1, 1, 0, 90000), +(6516, 7220001, 2000002, 1, 1, 0, 200000), +(6517, 7220001, 2000003, 1, 1, 0, 200000), +(6518, 7220001, 2002002, 1, 1, 0, 200000), +(6519, 7220001, 2002000, 1, 1, 0, 200000), +(6520, 7220001, 2040301, 1, 1, 0, 3000), +(6521, 7220001, 2040501, 1, 1, 0, 3000), +(6522, 7220001, 2040513, 1, 1, 0, 3000), +(6523, 7220001, 2040701, 1, 1, 0, 3000), +(6524, 7220001, 2040804, 1, 1, 0, 3000), +(6525, 7220001, 2041010, 1, 1, 0, 3000), +(6526, 7220001, 2043301, 1, 1, 0, 3000), +(6527, 7220001, 2043801, 1, 1, 0, 3000), +(6528, 7220001, 2044501, 1, 1, 0, 3000), +(6529, 7220001, 2041016, 1, 1, 0, 3000), +(6530, 7220001, 2041017, 1, 1, 0, 3000), +(6531, 7220001, 2043702, 1, 1, 0, 3000), +(6532, 7220001, 2044702, 1, 1, 0, 3000), +(6533, 7220001, 2040902, 1, 1, 0, 3000), +(6534, 7220001, 2040602, 1, 1, 0, 3000), +(6535, 7220001, 2060001, 1, 1, 0, 300000), +(6536, 7220001, 2061001, 1, 1, 0, 300000), +(6537, 7220001, 2070005, 1, 1, 0, 4000), +(6538, 7220001, 1002095, 1, 1, 0, 15000), +(6539, 7220001, 1002254, 1, 1, 0, 15000), +(6540, 7220001, 1002289, 1, 1, 0, 15000), +(6541, 7220001, 1002285, 1, 1, 0, 15000), +(6542, 7220001, 1040103, 1, 1, 0, 8000), +(6543, 7220001, 1041099, 1, 1, 0, 8000), +(6544, 7220001, 1050070, 1, 1, 0, 7000), +(6545, 7220001, 1051055, 1, 1, 0, 7000), +(6546, 7220001, 1050064, 1, 1, 0, 7000), +(6547, 7220001, 1051065, 1, 1, 0, 7000), +(6548, 7220001, 1040107, 1, 1, 0, 8000), +(6549, 7220001, 1041100, 1, 1, 0, 8000), +(6550, 7220001, 1082105, 1, 1, 0, 10000), +(6551, 7220001, 1082100, 1, 1, 0, 10000), +(6552, 7220001, 1082108, 1, 1, 0, 10000), +(6553, 7220001, 1082097, 1, 1, 0, 10000), +(6554, 7220001, 1072156, 1, 1, 0, 8000), +(6555, 7220001, 1072160, 1, 1, 0, 8000), +(6556, 7220001, 1072167, 1, 1, 0, 8000), +(6557, 7220001, 1072161, 1, 1, 0, 8000), +(6558, 7220001, 1002637, 1, 1, 0, 15000), +(6559, 7220001, 1052122, 1, 1, 0, 7000), +(6560, 7220001, 1082204, 1, 1, 0, 10000), +(6561, 7220001, 1072309, 1, 1, 0, 8000), +(6562, 7220001, 2044802, 1, 1, 0, 3000), +(6563, 7220001, 2044901, 1, 1, 0, 3000), +(6564, 7220001, 2040025, 1, 1, 0, 3000), +(6565, 7220001, 2040427, 1, 1, 0, 3000), +(6566, 7220001, 2040625, 1, 1, 0, 3000), +(6567, 7220001, 2040933, 1, 1, 0, 3000), +(6568, 7220001, 2043017, 1, 1, 0, 3000), +(6569, 7220002, 4000298, 1, 1, 0, 600000), +(6570, 7220002, 4000298, 1, 1, 0, 600000), +(6571, 7220002, 4000298, 1, 1, 0, 600000), +(6572, 7220002, 4000289, 1, 1, 0, 600000), +(6573, 7220002, 4000289, 1, 1, 0, 600000), +(6574, 7220002, 4000289, 1, 1, 0, 600000), +(6575, 7220002, 4003005, 1, 1, 0, 200000), +(6576, 7220002, 4004004, 1, 1, 0, 100000), +(6577, 7220002, 4010005, 1, 1, 0, 90000), +(6578, 7220002, 4020008, 1, 1, 0, 90000), +(6579, 7220002, 2000002, 1, 1, 0, 200000), +(6580, 7220002, 2000003, 1, 1, 0, 200000), +(6581, 7220002, 2002002, 1, 1, 0, 200000), +(6582, 7220002, 2002003, 1, 1, 0, 200000), +(6583, 7220002, 2022149, 1, 1, 0, 200000), +(6584, 7220002, 2040004, 1, 1, 0, 3000), +(6585, 7220002, 2040504, 1, 1, 0, 3000), +(6586, 7220002, 2040601, 1, 1, 0, 3000), +(6587, 7220002, 2040701, 1, 1, 0, 3000), +(6588, 7220002, 2040707, 1, 1, 0, 3000), +(6589, 7220002, 2040801, 1, 1, 0, 3000), +(6590, 7220002, 2041010, 1, 1, 0, 3000), +(6591, 7220002, 2043101, 1, 1, 0, 3000), +(6592, 7220002, 2044001, 1, 1, 0, 3000), +(6593, 7220002, 2044601, 1, 1, 0, 3000), +(6594, 7220002, 2040402, 1, 1, 0, 3000), +(6595, 7220002, 2040514, 1, 1, 0, 3000), +(6596, 7220002, 2040702, 1, 1, 0, 3000), +(6597, 7220002, 2041005, 1, 1, 0, 3000), +(6598, 7220002, 2044302, 1, 1, 0, 3000), +(6599, 7220002, 2060001, 1, 1, 0, 300000), +(6600, 7220002, 2061001, 1, 1, 0, 300000), +(6601, 7220002, 1302018, 1, 1, 0, 7000), +(6602, 7220002, 1312011, 1, 1, 0, 7000), +(6603, 7220002, 1322028, 1, 1, 0, 7000), +(6604, 7220002, 1332023, 1, 1, 0, 5000), +(6605, 7220002, 1372016, 1, 1, 0, 7000), +(6606, 7220002, 1382008, 1, 1, 0, 7000), +(6607, 7220002, 1402004, 1, 1, 0, 7000), +(6608, 7220002, 1412009, 1, 1, 0, 7000), +(6609, 7220002, 1422012, 1, 1, 0, 7000), +(6610, 7220002, 1432010, 1, 1, 0, 5000), +(6611, 7220002, 1442019, 1, 1, 0, 7000), +(6612, 7220002, 1452015, 1, 1, 0, 5000), +(6613, 7220002, 1462013, 1, 1, 0, 5000), +(6614, 7220002, 1472031, 1, 1, 0, 5000), +(6615, 7220002, 1482010, 1, 1, 0, 5000), +(6616, 7220002, 1492010, 1, 1, 0, 5000), +(6617, 7220002, 2044902, 1, 1, 0, 3000), +(6618, 7220002, 2040619, 1, 1, 0, 3000), +(6619, 7220002, 2044414, 1, 1, 0, 3000), +(6620, 7220002, 2049000, 1, 1, 0, 1500), +(6621, 8090000, 4000418, 1, 1, 0, 600000), +(6622, 8110300, 2000006, 1, 1, 0, 20000), +(6623, 8110300, 2000005, 1, 1, 0, 20000), +(6624, 8110300, 4010005, 1, 1, 0, 9000), +(6625, 8110300, 4020005, 1, 1, 0, 9000), +(6626, 8110300, 2044602, 1, 1, 0, 300), +(6627, 8110300, 2041005, 1, 1, 0, 300), +(6628, 8110300, 4006000, 1, 1, 0, 10000), +(6629, 8110300, 4004000, 1, 1, 0, 10000), +(6630, 8110300, 2000002, 1, 1, 0, 20000), +(6631, 8110300, 2070005, 1, 1, 0, 400), +(6632, 8110300, 1082114, 1, 1, 0, 1000), +(6633, 8110300, 1072158, 1, 1, 0, 800), +(6634, 8110300, 1002288, 1, 1, 0, 1500), +(6635, 8110300, 1040107, 1, 1, 0, 800), +(6636, 8110300, 1060095, 1, 1, 0, 800), +(6637, 8110300, 1452011, 1, 1, 0, 500), +(6638, 8110300, 1442008, 1, 1, 0, 700), +(6639, 8110300, 1312010, 1, 1, 0, 700), +(6640, 8110300, 1102031, 1, 1, 0, 1000), +(6641, 8110300, 4000355, 1, 1, 0, 600000), +(6642, 8110300, 2044902, 1, 1, 0, 300), +(6643, 8110300, 2044807, 1, 1, 0, 300), +(6644, 8110300, 4130012, 1, 1, 0, 6000), +(6645, 8110300, 4130013, 1, 1, 0, 6000), +(6646, 8130100, 4021008, 1, 1, 0, 90000), +(6647, 8130100, 2000005, 1, 1, 0, 999999), +(6648, 8130100, 1452009, 1, 1, 0, 5000), +(6649, 8130100, 1382007, 1, 1, 0, 7000), +(6650, 8130100, 1462009, 1, 1, 0, 5000), +(6651, 8130100, 1322019, 1, 1, 0, 7000), +(6652, 8130100, 1312010, 1, 1, 0, 7000), +(6653, 8130100, 1412008, 1, 1, 0, 7000), +(6654, 8130100, 1422010, 1, 1, 0, 7000), +(6655, 8130100, 1472026, 1, 1, 0, 5000), +(6656, 8130100, 1432007, 1, 1, 0, 5000), +(6657, 8130100, 1442008, 1, 1, 0, 7000), +(6658, 8130100, 1302012, 1, 1, 0, 7000), +(6659, 8130100, 1402012, 1, 1, 0, 7000), +(6660, 8130100, 1332018, 1, 1, 0, 5000), +(6661, 8130100, 1332019, 1, 1, 0, 5000), +(6662, 8130100, 2043001, 1, 1, 0, 3000), +(6663, 8130100, 2043101, 1, 1, 0, 3000), +(6664, 8130100, 2043201, 1, 1, 0, 3000), +(6665, 8130100, 2043301, 1, 1, 0, 3000), +(6666, 8130100, 2043701, 1, 1, 0, 3000), +(6667, 8130100, 2043801, 1, 1, 0, 3000), +(6668, 8130100, 2044001, 1, 1, 0, 3000), +(6669, 8130100, 2044101, 1, 1, 0, 3000), +(6670, 8130100, 2044201, 1, 1, 0, 3000), +(6671, 8130100, 2044301, 1, 1, 0, 3000), +(6672, 8130100, 2044401, 1, 1, 0, 3000), +(6673, 8130100, 2044501, 1, 1, 0, 3000), +(6674, 8130100, 2044601, 1, 1, 0, 3000), +(6675, 8130100, 2044701, 1, 1, 0, 3000), +(6676, 8130100, 2000004, 1, 1, 0, 999999), +(6677, 8130100, 1092016, 1, 1, 0, 7000), +(6678, 8130100, 2070007, 1, 1, 0, 2000), +(6679, 8130100, 1482009, 1, 1, 0, 5000), +(6680, 8130100, 1492009, 1, 1, 0, 5000), +(6681, 8130100, 2044801, 1, 1, 0, 3000), +(6682, 8130100, 2044901, 1, 1, 0, 3000), +(6683, 8130100, 2040419, 1, 1, 0, 3000), +(6684, 8130100, 2040622, 1, 1, 0, 3000), +(6685, 8130100, 2049000, 1, 1, 0, 1500), +(6686, 8140000, 4000054, 1, 1, 0, 600000), +(6687, 8140000, 4003005, 1, 1, 0, 200000), +(6688, 8140000, 1402004, 1, 1, 0, 700), +(6689, 8140000, 2040902, 1, 1, 0, 300), +(6690, 8140000, 2070006, 1, 1, 0, 200), +(6691, 8140000, 4010001, 1, 1, 0, 9000), +(6692, 8140000, 4020008, 1, 1, 0, 9000), +(6693, 8140000, 4010003, 1, 1, 0, 9000), +(6694, 8140000, 4004001, 1, 1, 0, 10000), +(6695, 8140000, 4006001, 1, 1, 0, 10000), +(6696, 8140000, 4020006, 1, 1, 0, 9000), +(6697, 8140000, 1051053, 1, 1, 0, 700), +(6698, 8140000, 1442008, 1, 1, 0, 700), +(6699, 8140000, 1002285, 1, 1, 0, 1500), +(6700, 8140000, 1040104, 1, 1, 0, 800), +(6701, 8140000, 1060092, 1, 1, 0, 800), +(6702, 8140000, 1050064, 1, 1, 0, 700), +(6703, 8140000, 1472028, 1, 1, 0, 500), +(6704, 8140000, 1102029, 1, 1, 0, 1000), +(6705, 8140000, 1002271, 1, 1, 0, 1500), +(6706, 8140000, 1002275, 1, 1, 0, 1500), +(6707, 8140000, 1072172, 1, 1, 0, 800), +(6708, 8140000, 1072178, 1, 1, 0, 800), +(6709, 8140000, 1072210, 1, 1, 0, 800), +(6710, 8140000, 1032023, 1, 1, 0, 1000), +(6711, 8140000, 1050092, 1, 1, 0, 700), +(6712, 8140000, 1051082, 1, 1, 0, 700), +(6713, 8140000, 1072193, 1, 1, 0, 800), +(6714, 8140000, 1082129, 1, 1, 0, 1000), +(6715, 8140000, 1482010, 1, 1, 0, 500), +(6716, 8140000, 2040825, 1, 1, 0, 300), +(6717, 8140000, 2040933, 1, 1, 0, 300), +(6718, 8140000, 2044010, 1, 1, 0, 300), +(6719, 8140000, 4130007, 1, 1, 0, 6000), +(6720, 8140001, 4000238, 1, 1, 0, 600000), +(6721, 8140001, 2000006, 1, 1, 0, 20000), +(6722, 8140001, 2000005, 1, 1, 0, 20000), +(6723, 8140001, 4010005, 1, 1, 0, 9000), +(6724, 8140001, 4020005, 1, 1, 0, 9000), +(6725, 8140001, 2044602, 1, 1, 0, 300), +(6726, 8140001, 2041005, 1, 1, 0, 300), +(6727, 8140001, 4006000, 1, 1, 0, 10000), +(6728, 8140001, 4004000, 1, 1, 0, 10000), +(6729, 8140001, 2000002, 1, 1, 0, 20000), +(6730, 8140001, 2070005, 1, 1, 0, 400), +(6731, 8140001, 1082114, 1, 1, 0, 1000), +(6732, 8140001, 1072158, 1, 1, 0, 800), +(6733, 8140001, 1002288, 1, 1, 0, 1500), +(6734, 8140001, 1040107, 1, 1, 0, 800), +(6735, 8140001, 1060095, 1, 1, 0, 800), +(6736, 8140001, 1452011, 1, 1, 0, 500), +(6737, 8140001, 1442008, 1, 1, 0, 700), +(6738, 8140001, 1312010, 1, 1, 0, 700), +(6739, 8140001, 1102031, 1, 1, 0, 1000), +(6740, 8140001, 1492010, 1, 1, 0, 500), +(6741, 8140001, 2040318, 1, 1, 0, 300), +(6742, 8140001, 2040824, 1, 1, 0, 300), +(6743, 8140001, 2044310, 1, 1, 0, 300), +(6744, 8140001, 2044805, 1, 1, 0, 300), +(6745, 8140001, 4130004, 1, 1, 0, 6000), +(6746, 8140001, 4130015, 1, 1, 0, 6000), +(6747, 8140001, 4130016, 1, 1, 0, 6000), +(6748, 8140002, 4000239, 1, 1, 0, 600000), +(6749, 8140002, 2000006, 1, 1, 0, 20000), +(6750, 8140002, 2000005, 1, 1, 0, 20000), +(6751, 8140002, 4010006, 1, 1, 0, 9000), +(6752, 8140002, 4020007, 1, 1, 0, 9000), +(6753, 8140002, 2040707, 1, 1, 0, 300), +(6754, 8140002, 2043301, 1, 1, 0, 300), +(6755, 8140002, 4006001, 1, 1, 0, 10000), +(6756, 8140002, 4004001, 1, 1, 0, 10000), +(6757, 8140002, 2000002, 1, 1, 0, 20000), +(6758, 8140002, 1102030, 1, 1, 0, 1000), +(6759, 8140002, 1002339, 1, 1, 0, 1500), +(6760, 8140002, 1051057, 1, 1, 0, 700), +(6761, 8140002, 1082112, 1, 1, 0, 1000), +(6762, 8140002, 1072173, 1, 1, 0, 800), +(6763, 8140002, 1472029, 1, 1, 0, 500), +(6764, 8140002, 1382010, 1, 1, 0, 700), +(6765, 8140002, 1462012, 1, 1, 0, 500), +(6766, 8140002, 2070005, 1, 1, 0, 400), +(6767, 8140002, 1032022, 1, 1, 0, 1000), +(6768, 8140002, 4000240, 1, 1, 0, 600000), +(6769, 8140002, 1052125, 1, 1, 0, 700), +(6770, 8140002, 2330003, 1, 1, 0, 500), +(6771, 8140002, 2040026, 1, 1, 0, 300), +(6772, 8140002, 2040316, 1, 1, 0, 300), +(6773, 8140002, 2043015, 1, 1, 0, 300), +(6774, 8140002, 2049000, 1, 1, 0, 150), +(6775, 8140002, 4130000, 1, 1, 0, 6000), +(6776, 8140002, 4130002, 1, 1, 0, 6000), +(6777, 8140002, 4130010, 1, 1, 0, 6000), +(6778, 8140100, 4000057, 1, 1, 0, 600000), +(6779, 8140100, 4004004, 1, 1, 0, 10000), +(6780, 8140100, 2000006, 1, 1, 0, 20000), +(6781, 8140100, 2000004, 1, 1, 0, 20000), +(6782, 8140100, 4020007, 1, 1, 0, 9000), +(6783, 8140100, 4010003, 1, 1, 0, 9000), +(6784, 8140100, 2070004, 1, 1, 0, 500), +(6785, 8140100, 4004003, 1, 1, 0, 10000), +(6786, 8140100, 4006000, 1, 1, 0, 10000), +(6787, 8140100, 1002217, 1, 1, 0, 1500), +(6788, 8140100, 1032013, 1, 1, 0, 1000), +(6789, 8140100, 1072131, 1, 1, 0, 800), +(6790, 8140100, 1050055, 1, 1, 0, 700), +(6791, 8140100, 1422009, 1, 1, 0, 700), +(6792, 8140100, 1072152, 1, 1, 0, 800), +(6793, 8140100, 1002267, 1, 1, 0, 1500), +(6794, 8140100, 1041092, 1, 1, 0, 800), +(6795, 8140100, 1061091, 1, 1, 0, 800), +(6796, 8140100, 1092009, 1, 1, 0, 700), +(6797, 8140100, 1102021, 1, 1, 0, 1000), +(6798, 8140100, 1032020, 1, 1, 0, 1000), +(6799, 8140100, 1462009, 1, 1, 0, 500), +(6800, 8140100, 1302012, 1, 1, 0, 700), +(6801, 8140100, 1082095, 1, 1, 0, 1000), +(6802, 8140100, 1082099, 1, 1, 0, 1000), +(6803, 8140100, 1002283, 1, 1, 0, 1500), +(6804, 8140100, 2040328, 1, 1, 0, 300), +(6805, 8140100, 2040512, 1, 1, 0, 300), +(6806, 8140100, 4130002, 1, 1, 0, 6000), +(6807, 8140100, 4130003, 1, 1, 0, 6000), +(6808, 8140100, 4130009, 1, 1, 0, 6000), +(6809, 8140100, 4000056, 1, 1, 0, 600000), +(6810, 8140100, 4003004, 1, 1, 0, 200000), +(6811, 8140100, 4004004, 1, 1, 0, 10000), +(6812, 8140100, 4010001, 1, 1, 0, 9000), +(6813, 8140100, 4020002, 1, 1, 0, 9000), +(6814, 8140100, 1072127, 1, 1, 0, 800), +(6815, 8140100, 1412007, 1, 1, 0, 700), +(6816, 8140100, 1332019, 1, 1, 0, 500), +(6817, 8140100, 1472022, 1, 1, 0, 500), +(6818, 8140100, 1302011, 1, 1, 0, 700), +(6819, 8140100, 2044001, 1, 1, 0, 300), +(6820, 8140100, 2043801, 1, 1, 0, 300), +(6821, 8140100, 1051030, 1, 1, 0, 700), +(6822, 8140100, 1051031, 1, 1, 0, 700), +(6823, 8140100, 1051034, 1, 1, 0, 700), +(6824, 8140100, 1412003, 1, 1, 0, 700), +(6825, 8140100, 1302018, 1, 1, 0, 700), +(6826, 8140100, 4004001, 1, 1, 0, 10000), +(6827, 8140100, 1040100, 1, 1, 0, 800), +(6828, 8140100, 1060089, 1, 1, 0, 800), +(6829, 8140100, 1492009, 1, 1, 0, 500), +(6830, 8140100, 2044802, 1, 1, 0, 300), +(6831, 8140100, 2040318, 1, 1, 0, 300), +(6832, 8140100, 2040619, 1, 1, 0, 300), +(6833, 8140100, 2040927, 1, 1, 0, 300), +(6834, 8140100, 2044012, 1, 1, 0, 300), +(6835, 8140100, 4130004, 1, 1, 0, 6000), +(6836, 8140101, 4000234, 1, 1, 0, 600000), +(6837, 8140101, 2000006, 1, 1, 0, 20000), +(6838, 8140101, 2000005, 1, 1, 0, 20000), +(6839, 8140101, 4010003, 1, 1, 0, 9000), +(6840, 8140101, 4020001, 1, 1, 0, 9000), +(6841, 8140101, 2048004, 1, 1, 0, 300), +(6842, 8140101, 2040901, 1, 1, 0, 300), +(6843, 8140101, 4006001, 1, 1, 0, 10000), +(6844, 8140101, 4004003, 1, 1, 0, 10000), +(6845, 8140101, 2000002, 1, 1, 0, 20000), +(6846, 8140101, 1082117, 1, 1, 0, 1000), +(6847, 8140101, 1072179, 1, 1, 0, 800), +(6848, 8140101, 1002328, 1, 1, 0, 1500), +(6849, 8140101, 1040109, 1, 1, 0, 800), +(6850, 8140101, 1060098, 1, 1, 0, 800), +(6851, 8140101, 1452014, 1, 1, 0, 500), +(6852, 8140101, 1382008, 1, 1, 0, 700), +(6853, 8140101, 1032023, 1, 1, 0, 1000), +(6854, 8140101, 1092026, 1, 1, 0, 700), +(6855, 8140101, 1312030, 1, 1, 0, 700), +(6856, 8140101, 1402035, 1, 1, 0, 700), +(6857, 8140101, 1472053, 1, 1, 0, 500), +(6858, 8140101, 1002640, 1, 1, 0, 1500), +(6859, 8140101, 2040825, 1, 1, 0, 300), +(6860, 8140101, 4130001, 1, 1, 0, 6000), +(6861, 8140101, 4130007, 1, 1, 0, 6000), +(6862, 8140102, 4000232, 1, 1, 0, 600000), +(6863, 8140102, 2000006, 1, 1, 0, 20000), +(6864, 8140102, 2000005, 1, 1, 0, 20000), +(6865, 8140102, 4010001, 1, 1, 0, 9000), +(6866, 8140102, 4020000, 1, 1, 0, 9000), +(6867, 8140102, 2040805, 1, 1, 0, 300), +(6868, 8140102, 2040703, 1, 1, 0, 300), +(6869, 8140102, 4006000, 1, 1, 0, 10000), +(6870, 8140102, 4004004, 1, 1, 0, 10000), +(6871, 8140102, 2000002, 1, 1, 0, 20000), +(6872, 8140102, 1072211, 1, 1, 0, 800), +(6873, 8140102, 1002274, 1, 1, 0, 1500), +(6874, 8140102, 1051068, 1, 1, 0, 700), +(6875, 8140102, 1082118, 1, 1, 0, 1000), +(6876, 8140102, 1402004, 1, 1, 0, 700), +(6877, 8140102, 1332023, 1, 1, 0, 500), +(6878, 8140102, 1032022, 1, 1, 0, 1000), +(6879, 8140102, 1092023, 1, 1, 0, 700), +(6880, 8140102, 1422027, 1, 1, 0, 700), +(6881, 8140102, 1452019, 1, 1, 0, 500), +(6882, 8140102, 1382035, 1, 1, 0, 700), +(6883, 8140102, 1432004, 1, 1, 0, 500), +(6884, 8140102, 4161015, 1, 1, 0, 6000), +(6885, 8140102, 1002643, 1, 1, 0, 1500), +(6886, 8140102, 2331000, 1, 1, 0, 500), +(6887, 8140102, 2040321, 1, 1, 0, 300), +(6888, 8140102, 2040622, 1, 1, 0, 300), +(6889, 8140102, 2044807, 1, 1, 0, 300), +(6890, 8140102, 4130000, 1, 1, 0, 6000), +(6891, 8140102, 4130002, 1, 1, 0, 6000), +(6892, 8140102, 4130013, 1, 1, 0, 6000), +(6893, 8140103, 4000233, 1, 1, 0, 600000), +(6894, 8140103, 2000006, 1, 1, 0, 20000), +(6895, 8140103, 2000005, 1, 1, 0, 20000), +(6896, 8140103, 4010000, 1, 1, 0, 9000), +(6897, 8140103, 4020001, 1, 1, 0, 9000), +(6898, 8140103, 2040004, 1, 1, 0, 300), +(6899, 8140103, 2043701, 1, 1, 0, 300), +(6900, 8140103, 4006000, 1, 1, 0, 10000), +(6901, 8140103, 4004002, 1, 1, 0, 10000), +(6902, 8140103, 2000002, 1, 1, 0, 20000), +(6903, 8140103, 1082116, 1, 1, 0, 1000), +(6904, 8140103, 1072177, 1, 1, 0, 800), +(6905, 8140103, 1002277, 1, 1, 0, 1500), +(6906, 8140103, 1041106, 1, 1, 0, 800), +(6907, 8140103, 1061105, 1, 1, 0, 800), +(6908, 8140103, 1412009, 1, 1, 0, 700), +(6909, 8140103, 1452013, 1, 1, 0, 500), +(6910, 8140103, 1442019, 1, 1, 0, 700), +(6911, 8140103, 1102032, 1, 1, 0, 1000), +(6912, 8140103, 1332051, 1, 1, 0, 500), +(6913, 8140103, 1322045, 1, 1, 0, 700), +(6914, 8140103, 1412021, 1, 1, 0, 700), +(6915, 8140103, 1432011, 1, 1, 0, 500), +(6916, 8140103, 4161016, 1, 1, 0, 6000), +(6917, 8140103, 1492010, 1, 1, 0, 500), +(6918, 8140103, 2332000, 1, 1, 0, 500), +(6919, 8140103, 2044314, 1, 1, 0, 300), +(6920, 8140103, 4130005, 1, 1, 0, 6000), +(6921, 8140103, 4130011, 1, 1, 0, 6000), +(6922, 8140103, 4130017, 1, 1, 0, 6000), +(6923, 8140110, 4000241, 1, 1, 0, 600000), +(6924, 8140110, 2000006, 1, 1, 0, 20000), +(6925, 8140110, 2000005, 1, 1, 0, 20000), +(6926, 8140110, 4020008, 1, 1, 0, 9000), +(6927, 8140110, 4010006, 1, 1, 0, 9000), +(6928, 8140110, 2044702, 1, 1, 0, 300), +(6929, 8140110, 2043802, 1, 1, 0, 300), +(6930, 8140110, 4006000, 1, 1, 0, 10000), +(6931, 8140110, 4004002, 1, 1, 0, 10000), +(6932, 8140110, 2000002, 1, 1, 0, 20000), +(6933, 8140110, 1050083, 1, 1, 0, 700), +(6934, 8140110, 1082119, 1, 1, 0, 1000), +(6935, 8140110, 1072185, 1, 1, 0, 800), +(6936, 8140110, 1002330, 1, 1, 0, 1500), +(6937, 8140110, 1092027, 1, 1, 0, 700), +(6938, 8140110, 1452015, 1, 1, 0, 500), +(6939, 8140110, 1462013, 1, 1, 0, 500), +(6940, 8140110, 1432010, 1, 1, 0, 500), +(6941, 8140110, 1302056, 1, 1, 0, 700), +(6942, 8140110, 1372010, 1, 1, 0, 700), +(6943, 8140110, 1332052, 1, 1, 0, 500), +(6944, 8140110, 1482010, 1, 1, 0, 500), +(6945, 8140110, 2044801, 1, 1, 0, 300), +(6946, 8140111, 4000242, 1, 1, 0, 600000), +(6947, 8140111, 2000006, 1, 1, 0, 20000), +(6948, 8140111, 2000005, 1, 1, 0, 20000), +(6949, 8140111, 4010003, 1, 1, 0, 9000), +(6950, 8140111, 4020003, 1, 1, 0, 9000), +(6951, 8140111, 2041014, 1, 1, 0, 300), +(6952, 8140111, 2044001, 1, 1, 0, 300), +(6953, 8140111, 4006001, 1, 1, 0, 10000), +(6954, 8140111, 4004003, 1, 1, 0, 10000), +(6955, 8140111, 2000002, 1, 1, 0, 20000), +(6956, 8140111, 2070006, 1, 1, 0, 200), +(6957, 8140111, 1051080, 1, 1, 0, 700), +(6958, 8140111, 1082122, 1, 1, 0, 1000), +(6959, 8140111, 1072183, 1, 1, 0, 800), +(6960, 8140111, 1002328, 1, 1, 0, 1500), +(6961, 8140111, 1092025, 1, 1, 0, 700), +(6962, 8140111, 1372016, 1, 1, 0, 700), +(6963, 8140111, 1472031, 1, 1, 0, 500), +(6964, 8140111, 1032023, 1, 1, 0, 1000), +(6965, 8140111, 1432030, 1, 1, 0, 500), +(6966, 8140111, 1442044, 1, 1, 0, 700), +(6967, 8140111, 1462015, 1, 1, 0, 500), +(6968, 8140111, 2330003, 1, 1, 0, 500), +(6969, 8140111, 1482010, 1, 1, 0, 500), +(6970, 8140111, 2040323, 1, 1, 0, 300), +(6971, 8140111, 2043214, 1, 1, 0, 300), +(6972, 8140111, 4130001, 1, 1, 0, 6000), +(6973, 8140111, 4130007, 1, 1, 0, 6000), +(6974, 8140111, 4130012, 1, 1, 0, 6000), +(6975, 8140200, 4000145, 1, 1, 0, 600000), +(6976, 8140200, 4010001, 1, 1, 0, 9000), +(6977, 8140200, 4020001, 1, 1, 0, 9000), +(6978, 8140200, 4004003, 1, 1, 0, 10000), +(6979, 8140200, 4006001, 1, 1, 0, 10000), +(6980, 8140200, 2000006, 1, 1, 0, 20000), +(6981, 8140200, 2000004, 1, 1, 0, 20000), +(6982, 8140200, 2002003, 1, 1, 0, 20000), +(6983, 8140200, 2040302, 1, 1, 0, 300), +(6984, 8140200, 2040802, 1, 1, 0, 300), +(6985, 8140200, 2020014, 1, 1, 0, 20000), +(6986, 8140200, 1050054, 1, 1, 0, 700), +(6987, 8140200, 1002270, 1, 1, 0, 1500), +(6988, 8140200, 1040093, 1, 1, 0, 800), +(6989, 8140200, 1060082, 1, 1, 0, 800), +(6990, 8140200, 1082059, 1, 1, 0, 1000), +(6991, 8140200, 1072144, 1, 1, 0, 800), +(6992, 8140200, 1050058, 1, 1, 0, 700), +(6993, 8140200, 1472022, 1, 1, 0, 500), +(6994, 8140200, 1051052, 1, 1, 0, 700), +(6995, 8140200, 1072162, 1, 1, 0, 800), +(6996, 8140200, 1082104, 1, 1, 0, 1000), +(6997, 8140200, 1072159, 1, 1, 0, 800), +(6998, 8140200, 1051062, 1, 1, 0, 700), +(6999, 8140200, 1032015, 1, 1, 0, 1000), +(7000, 8140200, 1322019, 1, 1, 0, 700), +(7001, 8140200, 1032022, 1, 1, 0, 1000), +(7002, 8140200, 1050073, 1, 1, 0, 700), +(7003, 8140200, 1072182, 1, 1, 0, 800), +(7004, 8140200, 1082114, 1, 1, 0, 1000), +(7005, 8140200, 1482009, 1, 1, 0, 500), +(7006, 8140200, 2040318, 1, 1, 0, 300), +(7007, 8140200, 2040925, 1, 1, 0, 300), +(7008, 8140200, 4130000, 1, 1, 0, 6000), +(7009, 8140200, 4130014, 1, 1, 0, 6000), +(7010, 8140200, 4130016, 1, 1, 0, 6000), +(7011, 8140300, 4000146, 1, 1, 0, 600000), +(7012, 8140300, 2000006, 1, 1, 0, 20000), +(7013, 8140300, 2000004, 1, 1, 0, 20000), +(7014, 8140300, 4020007, 1, 1, 0, 9000), +(7015, 8140300, 4010005, 1, 1, 0, 9000), +(7016, 8140300, 4006000, 1, 1, 0, 10000), +(7017, 8140300, 4004004, 1, 1, 0, 10000), +(7018, 8140300, 2040513, 1, 1, 0, 300), +(7019, 8140300, 2044602, 1, 1, 0, 300), +(7020, 8140300, 1051043, 1, 1, 0, 700), +(7021, 8140300, 1041096, 1, 1, 0, 800), +(7022, 8140300, 1061095, 1, 1, 0, 800), +(7023, 8140300, 1040090, 1, 1, 0, 800), +(7024, 8140300, 1060079, 1, 1, 0, 800), +(7025, 8140300, 1051055, 1, 1, 0, 700), +(7026, 8140300, 1060095, 1, 1, 0, 800), +(7027, 8140300, 1040107, 1, 1, 0, 800), +(7028, 8140300, 1002252, 1, 1, 0, 1500), +(7029, 8140300, 1002289, 1, 1, 0, 1500), +(7030, 8140300, 1072160, 1, 1, 0, 800), +(7031, 8140300, 1041099, 1, 1, 0, 800), +(7032, 8140300, 1061098, 1, 1, 0, 800), +(7033, 8140300, 1002288, 1, 1, 0, 1500), +(7034, 8140300, 1472027, 1, 1, 0, 500), +(7035, 8140300, 1322020, 1, 1, 0, 700), +(7036, 8140300, 1382010, 1, 1, 0, 700), +(7037, 8140300, 1051057, 1, 1, 0, 700), +(7038, 8140300, 1040109, 1, 1, 0, 800), +(7039, 8140300, 1060098, 1, 1, 0, 800), +(7040, 8140300, 1002277, 1, 1, 0, 1500), +(7041, 8140300, 1002340, 1, 1, 0, 1500), +(7042, 8140300, 2070005, 1, 1, 0, 400), +(7043, 8140300, 1492009, 1, 1, 0, 500), +(7044, 8140300, 2040622, 1, 1, 0, 300), +(7045, 8140300, 2040623, 1, 1, 0, 300), +(7046, 8140300, 2043110, 1, 1, 0, 300), +(7047, 8140300, 4130016, 1, 1, 0, 6000), +(7048, 8140300, 4130017, 1, 1, 0, 6000), +(7049, 8140500, 4000080, 1, 1, 0, 600000), +(7050, 8140500, 4003005, 1, 1, 0, 200000), +(7051, 8140500, 2000006, 1, 1, 0, 20000), +(7052, 8140500, 2000005, 1, 1, 0, 20000), +(7053, 8140500, 4020007, 1, 1, 0, 9000), +(7054, 8140500, 4020001, 1, 1, 0, 9000), +(7055, 8140500, 4004000, 1, 1, 0, 10000), +(7056, 8140500, 2044001, 1, 1, 0, 300), +(7057, 8140500, 2041022, 1, 1, 0, 300), +(7058, 8140500, 1050070, 1, 1, 0, 700), +(7059, 8140500, 1072156, 1, 1, 0, 800), +(7060, 8140500, 1072164, 1, 1, 0, 800), +(7061, 8140500, 1082096, 1, 1, 0, 1000), +(7062, 8140500, 1312011, 1, 1, 0, 700), +(7063, 8140500, 1082111, 1, 1, 0, 1000), +(7064, 8140500, 1082117, 1, 1, 0, 1000), +(7065, 8140500, 1082121, 1, 1, 0, 1000), +(7066, 8140500, 1092024, 1, 1, 0, 700), +(7067, 8140500, 1072174, 1, 1, 0, 800), +(7068, 8140500, 1050078, 1, 1, 0, 700), +(7069, 8140500, 1060098, 1, 1, 0, 800), +(7070, 8140500, 1040109, 1, 1, 0, 800), +(7071, 8140500, 1002340, 1, 1, 0, 1500), +(7072, 8140500, 1452014, 1, 1, 0, 500), +(7073, 8140500, 1060104, 1, 1, 0, 800), +(7074, 8140500, 1040115, 1, 1, 0, 800), +(7075, 8140500, 1072208, 1, 1, 0, 800), +(7076, 8140500, 1082126, 1, 1, 0, 1000), +(7077, 8140500, 1032017, 1, 1, 0, 1000), +(7078, 8140500, 1072195, 1, 1, 0, 800), +(7079, 8140500, 1052125, 1, 1, 0, 700), +(7080, 8140500, 4130006, 1, 1, 0, 6000), +(7081, 8140500, 4130014, 1, 1, 0, 6000), +(7082, 8140600, 4000182, 1, 1, 0, 600000), +(7083, 8140600, 2000006, 1, 1, 0, 20000), +(7084, 8140600, 2000005, 1, 1, 0, 20000), +(7085, 8140600, 2020015, 1, 1, 0, 20000), +(7086, 8140600, 2020013, 1, 1, 0, 20000), +(7087, 8140600, 4020007, 1, 1, 0, 9000), +(7088, 8140600, 4020001, 1, 1, 0, 9000), +(7089, 8140600, 4004000, 1, 1, 0, 10000), +(7090, 8140600, 2040401, 1, 1, 0, 300), +(7091, 8140600, 2040501, 1, 1, 0, 300), +(7092, 8140600, 1472028, 1, 1, 0, 500), +(7093, 8140600, 2040513, 1, 1, 0, 300), +(7094, 8140600, 1452013, 1, 1, 0, 500), +(7095, 8140600, 1472023, 1, 1, 0, 500), +(7096, 8140600, 1462008, 1, 1, 0, 500), +(7097, 8140600, 1102030, 1, 1, 0, 1000), +(7098, 8140600, 1040111, 1, 1, 0, 800), +(7099, 8140600, 1060100, 1, 1, 0, 800), +(7100, 8140600, 1060098, 1, 1, 0, 800), +(7101, 8140600, 1040109, 1, 1, 0, 800), +(7102, 8140600, 1082108, 1, 1, 0, 1000), +(7103, 8140600, 1082117, 1, 1, 0, 1000), +(7104, 8140600, 1032017, 1, 1, 0, 1000), +(7105, 8140600, 1072160, 1, 1, 0, 800), +(7106, 8140600, 1002324, 1, 1, 0, 1500), +(7107, 8140600, 1072194, 1, 1, 0, 800), +(7108, 8140600, 1072205, 1, 1, 0, 800), +(7109, 8140600, 1052128, 1, 1, 0, 700), +(7110, 8140600, 2040929, 1, 1, 0, 300), +(7111, 8140600, 2049100, 1, 1, 0, 150), +(7112, 8140600, 4130010, 1, 1, 0, 6000), +(7113, 8140600, 4130015, 1, 1, 0, 6000), +(7114, 8140600, 4130016, 1, 1, 0, 6000), +(7115, 8140700, 2000006, 1, 1, 0, 20000), +(7116, 8140700, 2000005, 1, 1, 0, 20000), +(7117, 8140700, 4020007, 1, 1, 0, 9000), +(7118, 8140700, 4020001, 1, 1, 0, 9000), +(7119, 8140700, 4004000, 1, 1, 0, 10000), +(7120, 8140700, 1002528, 1, 1, 0, 1500), +(7121, 8140700, 1040117, 1, 1, 0, 800), +(7122, 8140700, 1060106, 1, 1, 0, 800), +(7123, 8140700, 1041120, 1, 1, 0, 800), +(7124, 8140700, 1061119, 1, 1, 0, 800), +(7125, 8140700, 1082134, 1, 1, 0, 1000), +(7126, 8140700, 1072204, 1, 1, 0, 800), +(7127, 8140700, 1372009, 1, 1, 0, 700), +(7128, 8140700, 1472033, 1, 1, 0, 500), +(7129, 8140700, 2043801, 1, 1, 0, 300), +(7130, 8140700, 2041022, 1, 1, 0, 300), +(7131, 8140700, 4000262, 1, 1, 0, 600000), +(7132, 8140700, 4000244, 1, 1, 0, 2000), +(7133, 8140700, 4000245, 1, 1, 0, 2000), +(7134, 8140700, 1082207, 1, 1, 0, 1000), +(7135, 8140700, 2044902, 1, 1, 0, 300), +(7136, 8140700, 2290106, 1, 1, 0, 500), +(7137, 8140700, 2040515, 1, 1, 0, 300), +(7138, 8140700, 2044314, 1, 1, 0, 300), +(7139, 8140700, 2044805, 1, 1, 0, 300), +(7140, 8140700, 4130007, 1, 1, 0, 6000), +(7141, 8140700, 4130012, 1, 1, 0, 6000), +(7142, 8140701, 2000006, 1, 1, 0, 20000), +(7143, 8140701, 2000005, 1, 1, 0, 20000), +(7144, 8140701, 4010001, 1, 1, 0, 9000), +(7145, 8140701, 4020005, 1, 1, 0, 9000), +(7146, 8140701, 4004001, 1, 1, 0, 10000), +(7147, 8140701, 1002365, 1, 1, 0, 1500), +(7148, 8140701, 1040111, 1, 1, 0, 800), +(7149, 8140701, 1060100, 1, 1, 0, 800), +(7150, 8140701, 1051096, 1, 1, 0, 700), +(7151, 8140701, 1082144, 1, 1, 0, 1000), +(7152, 8140701, 1072197, 1, 1, 0, 800), +(7153, 8140701, 1302023, 1, 1, 0, 700), +(7154, 8140701, 1332027, 1, 1, 0, 500), +(7155, 8140701, 2044601, 1, 1, 0, 300), +(7156, 8140701, 2044101, 1, 1, 0, 300), +(7157, 8140701, 4000263, 1, 1, 0, 600000), +(7158, 8140701, 4000244, 1, 1, 0, 2000), +(7159, 8140701, 4000245, 1, 1, 0, 2000), +(7160, 8140701, 1082210, 1, 1, 0, 1000), +(7161, 8140701, 2290122, 1, 1, 0, 500), +(7162, 8140701, 2040925, 1, 1, 0, 300), +(7163, 8140701, 4130003, 1, 1, 0, 6000), +(7164, 8140701, 4130008, 1, 1, 0, 6000), +(7165, 8140702, 2000006, 1, 1, 0, 20000), +(7166, 8140702, 2000005, 1, 1, 0, 20000), +(7167, 8140702, 4020003, 1, 1, 0, 9000), +(7168, 8140702, 4020008, 1, 1, 0, 9000), +(7169, 8140702, 4004002, 1, 1, 0, 10000), +(7170, 8140702, 1002403, 1, 1, 0, 1500), +(7171, 8140702, 1050092, 1, 1, 0, 700), +(7172, 8140702, 1041117, 1, 1, 0, 800), +(7173, 8140702, 1061116, 1, 1, 0, 800), +(7174, 8140702, 1050106, 1, 1, 0, 700), +(7175, 8140702, 1082139, 1, 1, 0, 1000), +(7176, 8140702, 1072206, 1, 1, 0, 800), +(7177, 8140702, 1312015, 1, 1, 0, 700), +(7178, 8140702, 1452017, 1, 1, 0, 500), +(7179, 8140702, 2044701, 1, 1, 0, 300), +(7180, 8140702, 2040602, 1, 1, 0, 300), +(7181, 8140702, 4000264, 1, 1, 0, 600000), +(7182, 8140702, 4000244, 1, 1, 0, 2000), +(7183, 8140702, 4000245, 1, 1, 0, 2000), +(7184, 8140702, 1492011, 1, 1, 0, 500), +(7185, 8140702, 2290112, 1, 1, 0, 500), +(7186, 8140702, 2040621, 1, 1, 0, 300), +(7187, 8140702, 2043015, 1, 1, 0, 300), +(7188, 8140702, 4130004, 1, 1, 0, 6000), +(7189, 8140702, 4130005, 1, 1, 0, 6000), +(7190, 8140702, 4130015, 1, 1, 0, 6000), +(7191, 8140703, 2000006, 1, 1, 0, 20000), +(7192, 8140703, 2000005, 1, 1, 0, 20000), +(7193, 8140703, 4020008, 1, 1, 0, 9000), +(7194, 8140703, 4020006, 1, 1, 0, 9000), +(7195, 8140703, 4004003, 1, 1, 0, 10000), +(7196, 8140703, 1002325, 1, 1, 0, 1500), +(7197, 8140703, 1050090, 1, 1, 0, 700), +(7198, 8140703, 1051082, 1, 1, 0, 700), +(7199, 8140703, 1082151, 1, 1, 0, 1000), +(7200, 8140703, 1040120, 1, 1, 0, 800), +(7201, 8140703, 1060109, 1, 1, 0, 800), +(7202, 8140703, 1072212, 1, 1, 0, 800), +(7203, 8140703, 1322029, 1, 1, 0, 700), +(7204, 8140703, 1442020, 1, 1, 0, 700), +(7205, 8140703, 2043801, 1, 1, 0, 300), +(7206, 8140703, 2040901, 1, 1, 0, 300), +(7207, 8140703, 4000265, 1, 1, 0, 600000), +(7208, 8140703, 4000244, 1, 1, 0, 2000), +(7209, 8140703, 4000245, 1, 1, 0, 2000), +(7210, 8140703, 1082159, 1, 1, 0, 1000), +(7211, 8140703, 2290088, 1, 1, 0, 500), +(7212, 8140703, 1002643, 1, 1, 0, 1500), +(7213, 8140703, 2044801, 1, 1, 0, 300), +(7214, 8140703, 2290099, 1, 1, 0, 500), +(7215, 8141000, 4000134, 1, 1, 0, 600000), +(7216, 8141000, 2000002, 1, 1, 0, 20000), +(7217, 8141000, 2000006, 1, 1, 0, 20000), +(7218, 8141000, 4010001, 1, 1, 0, 9000), +(7219, 8141000, 4020008, 1, 1, 0, 9000), +(7220, 8141000, 4004000, 1, 1, 0, 10000), +(7221, 8141000, 2044602, 1, 1, 0, 300), +(7222, 8141000, 2070006, 1, 1, 0, 200), +(7223, 8141000, 1051063, 1, 1, 0, 700), +(7224, 8141000, 1002254, 1, 1, 0, 1500), +(7225, 8141000, 1002285, 1, 1, 0, 1500), +(7226, 8141000, 1422010, 1, 1, 0, 700), +(7227, 8141000, 1050074, 1, 1, 0, 700), +(7228, 8141000, 1050072, 1, 1, 0, 700), +(7229, 8141000, 1322028, 1, 1, 0, 700), +(7230, 8141000, 1002327, 1, 1, 0, 1500), +(7231, 8141000, 1002278, 1, 1, 0, 1500), +(7232, 8141000, 1050083, 1, 1, 0, 700), +(7233, 8141000, 1041106, 1, 1, 0, 800), +(7234, 8141000, 1061105, 1, 1, 0, 800), +(7235, 8141000, 1050076, 1, 1, 0, 700), +(7236, 8141000, 1082115, 1, 1, 0, 1000), +(7237, 8141000, 1051068, 1, 1, 0, 700), +(7238, 8141000, 1051079, 1, 1, 0, 700), +(7239, 8141000, 1040112, 1, 1, 0, 800), +(7240, 8141000, 1060101, 1, 1, 0, 800), +(7241, 8141000, 1041117, 1, 1, 0, 800), +(7242, 8141000, 1061116, 1, 1, 0, 800), +(7243, 8141000, 1082132, 1, 1, 0, 1000), +(7244, 8141000, 2290082, 1, 1, 0, 500), +(7245, 8141000, 1072315, 1, 1, 0, 800), +(7246, 8141000, 2044802, 1, 1, 0, 300), +(7247, 8141000, 2290097, 1, 1, 0, 500), +(7248, 8141000, 2040317, 1, 1, 0, 300), +(7249, 8141000, 2040929, 1, 1, 0, 300), +(7250, 8141000, 2044809, 1, 1, 0, 300), +(7251, 8141000, 2049000, 1, 1, 0, 150), +(7252, 8141000, 4130013, 1, 1, 0, 6000), +(7253, 8141100, 4000135, 1, 1, 0, 600000), +(7254, 8141100, 2000006, 1, 1, 0, 20000), +(7255, 8141100, 2000005, 1, 1, 0, 20000), +(7256, 8141100, 4020008, 1, 1, 0, 9000), +(7257, 8141100, 4004004, 1, 1, 0, 10000), +(7258, 8141100, 2043002, 1, 1, 0, 300), +(7259, 8141100, 2040902, 1, 1, 0, 300), +(7260, 8141100, 4131003, 1, 1, 0, 6000), +(7261, 8141100, 4006001, 1, 1, 0, 10000), +(7262, 8141100, 1082105, 1, 1, 0, 1000), +(7263, 8141100, 1072165, 1, 1, 0, 800), +(7264, 8141100, 1051058, 1, 1, 0, 700), +(7265, 8141100, 1402015, 1, 1, 0, 700), +(7266, 8141100, 1050081, 1, 1, 0, 700), +(7267, 8141100, 1050077, 1, 1, 0, 700), +(7268, 8141100, 1002329, 1, 1, 0, 1500), +(7269, 8141100, 1051080, 1, 1, 0, 700), +(7270, 8141100, 1072185, 1, 1, 0, 800), +(7271, 8141100, 1082119, 1, 1, 0, 1000), +(7272, 8141100, 1462012, 1, 1, 0, 500), +(7273, 8141100, 1050093, 1, 1, 0, 700), +(7274, 8141100, 1051083, 1, 1, 0, 700), +(7275, 8141100, 1061115, 1, 1, 0, 800), +(7276, 8141100, 1041116, 1, 1, 0, 800), +(7277, 8141100, 1082134, 1, 1, 0, 1000), +(7278, 8141100, 2040025, 1, 1, 0, 300), +(7279, 8141100, 2040031, 1, 1, 0, 300), +(7280, 8141100, 2040418, 1, 1, 0, 300), +(7281, 8141100, 2040427, 1, 1, 0, 300), +(7282, 8141100, 4130000, 1, 1, 0, 6000), +(7283, 8141100, 4130010, 1, 1, 0, 6000), +(7284, 8141100, 4130016, 1, 1, 0, 6000), +(7285, 8141300, 4000183, 1, 1, 0, 600000), +(7286, 8141300, 2000005, 1, 1, 0, 20000), +(7287, 8141300, 2020013, 1, 1, 0, 20000), +(7288, 8141300, 2002001, 1, 1, 0, 20000), +(7289, 8141300, 2000002, 1, 1, 0, 20000), +(7290, 8141300, 4020006, 1, 1, 0, 9000), +(7291, 8141300, 4004004, 1, 1, 0, 10000), +(7292, 8141300, 4006000, 1, 1, 0, 10000), +(7293, 8141300, 2020015, 1, 1, 0, 20000), +(7294, 8141300, 4010006, 1, 1, 0, 9000), +(7295, 8141300, 2040601, 1, 1, 0, 300), +(7296, 8141300, 2040701, 1, 1, 0, 300), +(7297, 8141300, 1072207, 1, 1, 0, 800), +(7298, 8141300, 1032020, 1, 1, 0, 1000), +(7299, 8141300, 1002271, 1, 1, 0, 1500), +(7300, 8141300, 1072183, 1, 1, 0, 800), +(7301, 8141300, 1102026, 1, 1, 0, 1000), +(7302, 8141300, 1041119, 1, 1, 0, 800), +(7303, 8141300, 1061118, 1, 1, 0, 800), +(7304, 8141300, 1452011, 1, 1, 0, 500), +(7305, 8141300, 1442008, 1, 1, 0, 700), +(7306, 8141300, 1432007, 1, 1, 0, 500), +(7307, 8141300, 1050089, 1, 1, 0, 700), +(7308, 8141300, 1051083, 1, 1, 0, 700), +(7309, 8141300, 1092027, 1, 1, 0, 700), +(7310, 8141300, 1002365, 1, 1, 0, 1500), +(7311, 8141300, 1072224, 1, 1, 0, 800), +(7312, 8141300, 1482011, 1, 1, 0, 500), +(7313, 8141300, 2290098, 1, 1, 0, 500), +(7314, 8141300, 2040618, 1, 1, 0, 300), +(7315, 8141300, 2040512, 1, 1, 0, 300), +(7316, 8141300, 2040627, 1, 1, 0, 300), +(7317, 8141300, 4130006, 1, 1, 0, 6000), +(7318, 8141300, 4130008, 1, 1, 0, 6000), +(7319, 8141300, 4130014, 1, 1, 0, 6000), +(7320, 8142000, 4000149, 1, 1, 0, 600000), +(7321, 8142000, 2000005, 1, 1, 0, 20000), +(7322, 8142000, 2002001, 1, 1, 0, 20000), +(7323, 8142000, 2000002, 1, 1, 0, 20000), +(7324, 8142000, 4020003, 1, 1, 0, 9000), +(7325, 8142000, 4004004, 1, 1, 0, 10000), +(7326, 8142000, 4006000, 1, 1, 0, 10000), +(7327, 8142000, 2020015, 1, 1, 0, 20000), +(7328, 8142000, 2044001, 1, 1, 0, 300), +(7329, 8142000, 2041022, 1, 1, 0, 300), +(7330, 8142000, 1432007, 1, 1, 0, 500), +(7331, 8142000, 1082107, 1, 1, 0, 1000), +(7332, 8142000, 1051056, 1, 1, 0, 700), +(7333, 8142000, 1332023, 1, 1, 0, 500), +(7334, 8142000, 1082112, 1, 1, 0, 1000), +(7335, 8142000, 1082116, 1, 1, 0, 1000), +(7336, 8142000, 1040110, 1, 1, 0, 800), +(7337, 8142000, 1060099, 1, 1, 0, 800), +(7338, 8142000, 1050076, 1, 1, 0, 700), +(7339, 8142000, 1072212, 1, 1, 0, 800), +(7340, 8142000, 1002339, 1, 1, 0, 1500), +(7341, 8142000, 1051078, 1, 1, 0, 700), +(7342, 8142000, 1452013, 1, 1, 0, 500), +(7343, 8142000, 1051067, 1, 1, 0, 700), +(7344, 8142000, 1051096, 1, 1, 0, 700), +(7345, 8142000, 1050091, 1, 1, 0, 700), +(7346, 8142000, 1040111, 1, 1, 0, 800), +(7347, 8142000, 1060100, 1, 1, 0, 800), +(7348, 8142000, 1082133, 1, 1, 0, 1000), +(7349, 8142000, 1492011, 1, 1, 0, 500), +(7350, 8142000, 2040427, 1, 1, 0, 300), +(7351, 8142000, 4130003, 1, 1, 0, 6000), +(7352, 8142000, 4130009, 1, 1, 0, 6000), +(7353, 8142100, 4000184, 1, 1, 0, 600000), +(7354, 8142100, 2000006, 1, 1, 0, 20000), +(7355, 8142100, 2000005, 1, 1, 0, 20000), +(7356, 8142100, 4010004, 1, 1, 0, 9000), +(7357, 8142100, 4020004, 1, 1, 0, 9000), +(7358, 8142100, 4004001, 1, 1, 0, 10000), +(7359, 8142100, 4006000, 1, 1, 0, 10000), +(7360, 8142100, 1412009, 1, 1, 0, 700), +(7361, 8142100, 2040801, 1, 1, 0, 300), +(7362, 8142100, 2040804, 1, 1, 0, 300), +(7363, 8142100, 1422010, 1, 1, 0, 700), +(7364, 8142100, 1092025, 1, 1, 0, 700), +(7365, 8142100, 1072197, 1, 1, 0, 800), +(7366, 8142100, 1040110, 1, 1, 0, 800), +(7367, 8142100, 1060099, 1, 1, 0, 800), +(7368, 8142100, 1032017, 1, 1, 0, 1000), +(7369, 8142100, 1041118, 1, 1, 0, 800), +(7370, 8142100, 1061117, 1, 1, 0, 800), +(7371, 8142100, 1050090, 1, 1, 0, 700), +(7372, 8142100, 1051084, 1, 1, 0, 700), +(7373, 8142100, 1050095, 1, 1, 0, 700), +(7374, 8142100, 1051097, 1, 1, 0, 700), +(7375, 8142100, 4006001, 1, 1, 0, 10000), +(7376, 8142100, 1092026, 1, 1, 0, 700), +(7377, 8142100, 1002325, 1, 1, 0, 1500), +(7378, 8142100, 1092028, 1, 1, 0, 700), +(7379, 8142100, 1072220, 1, 1, 0, 800), +(7380, 8142100, 2290032, 1, 1, 0, 500), +(7381, 8142100, 2290114, 1, 1, 0, 500), +(7382, 8142100, 2040318, 1, 1, 0, 300), +(7383, 8142100, 2043019, 1, 1, 0, 300), +(7384, 8142100, 4130000, 1, 1, 0, 6000), +(7385, 8142100, 4130009, 1, 1, 0, 6000), +(7386, 8143000, 4000150, 1, 1, 0, 600000), +(7387, 8143000, 2000002, 1, 1, 0, 20000), +(7388, 8143000, 2000005, 1, 1, 0, 20000), +(7389, 8143000, 2022003, 1, 1, 0, 20000), +(7390, 8143000, 2002002, 1, 1, 0, 20000), +(7391, 8143000, 4010001, 1, 1, 0, 9000), +(7392, 8143000, 4006001, 1, 1, 0, 10000), +(7393, 8143000, 4010002, 1, 1, 0, 9000), +(7394, 8143000, 2044702, 1, 1, 0, 300), +(7395, 8143000, 2040401, 1, 1, 0, 300), +(7396, 8143000, 1002283, 1, 1, 0, 1500), +(7397, 8143000, 1050064, 1, 1, 0, 700), +(7398, 8143000, 1092016, 1, 1, 0, 700), +(7399, 8143000, 1422012, 1, 1, 0, 700), +(7400, 8143000, 1462010, 1, 1, 0, 500), +(7401, 8143000, 1082122, 1, 1, 0, 1000), +(7402, 8143000, 1082120, 1, 1, 0, 1000), +(7403, 8143000, 1072183, 1, 1, 0, 800), +(7404, 8143000, 1082117, 1, 1, 0, 1000), +(7405, 8143000, 1072179, 1, 1, 0, 800), +(7406, 8143000, 1002328, 1, 1, 0, 1500), +(7407, 8143000, 1051094, 1, 1, 0, 700), +(7408, 8143000, 1002402, 1, 1, 0, 1500), +(7409, 8143000, 1061118, 1, 1, 0, 800), +(7410, 8143000, 1041119, 1, 1, 0, 800), +(7411, 8143000, 1040116, 1, 1, 0, 800), +(7412, 8143000, 1060105, 1, 1, 0, 800), +(7413, 8143000, 1051084, 1, 1, 0, 700), +(7414, 8143000, 1082130, 1, 1, 0, 1000), +(7415, 8143000, 2043019, 1, 1, 0, 300), +(7416, 8143000, 4130011, 1, 1, 0, 6000), +(7417, 8143000, 4130016, 1, 1, 0, 6000), +(7418, 8143000, 4130017, 1, 1, 0, 6000), +(7419, 8150000, 2040002, 1, 1, 0, 3000), +(7420, 8150000, 2040005, 1, 1, 0, 3000), +(7421, 8150000, 2040302, 1, 1, 0, 3000), +(7422, 8150000, 2040402, 1, 1, 0, 3000), +(7423, 8150000, 2040502, 1, 1, 0, 3000), +(7424, 8150000, 2040505, 1, 1, 0, 3000), +(7425, 8150000, 2040602, 1, 1, 0, 3000), +(7426, 8150000, 2040702, 1, 1, 0, 3000), +(7427, 8150000, 2040705, 1, 1, 0, 3000), +(7428, 8150000, 2040708, 1, 1, 0, 3000), +(7429, 8150000, 2040802, 1, 1, 0, 3000), +(7430, 8150000, 2040805, 1, 1, 0, 3000), +(7431, 8150000, 2040902, 1, 1, 0, 3000), +(7432, 8150000, 2043002, 1, 1, 0, 3000), +(7433, 8150000, 2043102, 1, 1, 0, 3000), +(7434, 8150000, 2043202, 1, 1, 0, 3000), +(7435, 8150000, 2043302, 1, 1, 0, 3000), +(7436, 8150000, 2043702, 1, 1, 0, 3000), +(7437, 8150000, 2043802, 1, 1, 0, 3000), +(7438, 8150000, 2044002, 1, 1, 0, 3000), +(7439, 8150000, 2044102, 1, 1, 0, 3000), +(7440, 8150000, 2044202, 1, 1, 0, 3000), +(7441, 8150000, 2044302, 1, 1, 0, 3000), +(7442, 8150000, 2044402, 1, 1, 0, 3000), +(7443, 8150000, 2044502, 1, 1, 0, 3000), +(7444, 8150000, 2044602, 1, 1, 0, 3000), +(7445, 8150000, 2044702, 1, 1, 0, 3000), +(7446, 8150000, 2070007, 1, 1, 0, 2000), +(7447, 8150000, 2044802, 1, 1, 0, 3000), +(7448, 8150000, 2044902, 1, 1, 0, 3000), +(7449, 8150000, 2040029, 1, 1, 0, 3000), +(7450, 8150000, 2040425, 1, 1, 0, 3000), +(7451, 8150000, 2043212, 1, 1, 0, 3000), +(7452, 8150000, 2044012, 1, 1, 0, 3000), +(7453, 8150000, 2044212, 1, 1, 0, 3000), +(7454, 8150100, 4000180, 1, 1, 0, 600000), +(7455, 8150100, 2000006, 1, 1, 0, 20000), +(7456, 8150100, 2022003, 1, 1, 0, 20000), +(7457, 8150100, 4006000, 1, 1, 0, 10000), +(7458, 8150100, 2000005, 1, 1, 0, 20000), +(7459, 8150100, 4006001, 1, 1, 0, 10000), +(7460, 8150100, 2020013, 1, 1, 0, 20000), +(7461, 8150100, 4004002, 1, 1, 0, 10000), +(7462, 8150100, 4010005, 1, 1, 0, 9000), +(7463, 8150100, 2040901, 1, 1, 0, 300), +(7464, 8150100, 2041001, 1, 1, 0, 300), +(7465, 8150100, 1082142, 1, 1, 0, 1000), +(7466, 8150100, 1072192, 1, 1, 0, 800), +(7467, 8150100, 1072204, 1, 1, 0, 800), +(7468, 8150100, 1032017, 1, 1, 0, 1000), +(7469, 8150100, 1040112, 1, 1, 0, 800), +(7470, 8150100, 1060101, 1, 1, 0, 800), +(7471, 8150100, 1322028, 1, 1, 0, 700), +(7472, 8150100, 1332022, 1, 1, 0, 500), +(7473, 8150100, 1002405, 1, 1, 0, 1500), +(7474, 8150100, 2041013, 1, 1, 0, 300), +(7475, 8150100, 1002366, 1, 1, 0, 1500), +(7476, 8150100, 1072214, 1, 1, 0, 800), +(7477, 8150100, 4161018, 1, 1, 0, 6000), +(7478, 8150100, 1072315, 1, 1, 0, 800), +(7479, 8150100, 1052131, 1, 1, 0, 700), +(7480, 8150100, 2044902, 1, 1, 0, 300), +(7481, 8150100, 2290118, 1, 1, 0, 500), +(7482, 8150100, 4130006, 1, 1, 0, 6000), +(7483, 8150100, 4130007, 1, 1, 0, 6000), +(7484, 8150101, 4000181, 1, 1, 0, 600000), +(7485, 8150101, 2000006, 1, 1, 0, 20000), +(7486, 8150101, 2022003, 1, 1, 0, 20000), +(7487, 8150101, 4006000, 1, 1, 0, 10000), +(7488, 8150101, 2000005, 1, 1, 0, 20000), +(7489, 8150101, 4006001, 1, 1, 0, 10000), +(7490, 8150101, 2020013, 1, 1, 0, 20000), +(7491, 8150101, 4010002, 1, 1, 0, 9000), +(7492, 8150101, 4020007, 1, 1, 0, 9000), +(7493, 8150101, 2041022, 1, 1, 0, 300), +(7494, 8150101, 2043001, 1, 1, 0, 300), +(7495, 8150101, 1082143, 1, 1, 0, 1000), +(7496, 8150101, 1072193, 1, 1, 0, 800), +(7497, 8150101, 1072203, 1, 1, 0, 800), +(7498, 8150101, 1002403, 1, 1, 0, 1500), +(7499, 8150101, 1040117, 1, 1, 0, 800), +(7500, 8150101, 1060106, 1, 1, 0, 800), +(7501, 8150101, 1302018, 1, 1, 0, 700), +(7502, 8150101, 1312011, 1, 1, 0, 700), +(7503, 8150101, 1032023, 1, 1, 0, 1000), +(7504, 8150101, 2040301, 1, 1, 0, 300), +(7505, 8150101, 1002326, 1, 1, 0, 1500), +(7506, 8150101, 1072223, 1, 1, 0, 800), +(7507, 8150101, 2290042, 1, 1, 0, 500), +(7508, 8150101, 2290052, 1, 1, 0, 500), +(7509, 8150101, 4161018, 1, 1, 0, 6000), +(7510, 8150101, 1072318, 1, 1, 0, 800), +(7511, 8150101, 2290102, 1, 1, 0, 500), +(7512, 8150101, 2040420, 1, 1, 0, 300), +(7513, 8150101, 2040931, 1, 1, 0, 300), +(7514, 8150101, 2049100, 1, 1, 0, 150), +(7515, 8150101, 4130009, 1, 1, 0, 6000), +(7516, 8150101, 4130010, 1, 1, 0, 6000), +(7517, 8150200, 2000006, 1, 1, 0, 20000), +(7518, 8150200, 2000005, 1, 1, 0, 20000), +(7519, 8150200, 2022003, 1, 1, 0, 20000), +(7520, 8150200, 2020015, 1, 1, 0, 20000), +(7521, 8150200, 4010005, 1, 1, 0, 9000), +(7522, 8150200, 4010002, 1, 1, 0, 9000), +(7523, 8150200, 4004004, 1, 1, 0, 10000), +(7524, 8150200, 1002529, 1, 1, 0, 1500), +(7525, 8150200, 1050102, 1, 1, 0, 700), +(7526, 8150200, 1051105, 1, 1, 0, 700), +(7527, 8150200, 1051092, 1, 1, 0, 700), +(7528, 8150200, 1082135, 1, 1, 0, 1000), +(7529, 8150200, 1072194, 1, 1, 0, 800), +(7530, 8150200, 1092026, 1, 1, 0, 700), +(7531, 8150200, 1402005, 1, 1, 0, 700), +(7532, 8150200, 1462018, 1, 1, 0, 500), +(7533, 8150200, 2040001, 1, 1, 0, 300), +(7534, 8150200, 2043301, 1, 1, 0, 300), +(7535, 8150200, 4000266, 1, 1, 0, 600000), +(7536, 8150200, 4000244, 1, 1, 0, 2000), +(7537, 8150200, 4000245, 1, 1, 0, 2000), +(7538, 8150200, 1082210, 1, 1, 0, 1000), +(7539, 8150200, 1002646, 1, 1, 0, 1500), +(7540, 8150200, 2290100, 1, 1, 0, 500), +(7541, 8150200, 2040425, 1, 1, 0, 300), +(7542, 8150200, 4130005, 1, 1, 0, 6000), +(7543, 8150201, 2000006, 1, 1, 0, 20000), +(7544, 8150201, 2000005, 1, 1, 0, 20000), +(7545, 8150201, 2022003, 1, 1, 0, 20000), +(7546, 8150201, 2020013, 1, 1, 0, 20000), +(7547, 8150201, 4010001, 1, 1, 0, 9000), +(7548, 8150201, 4020002, 1, 1, 0, 9000), +(7549, 8150201, 4004004, 1, 1, 0, 10000), +(7550, 8150201, 1002530, 1, 1, 0, 1500), +(7551, 8150201, 1050098, 1, 1, 0, 700), +(7552, 8150201, 1041122, 1, 1, 0, 800), +(7553, 8150201, 1061121, 1, 1, 0, 800), +(7554, 8150201, 1051101, 1, 1, 0, 700), +(7555, 8150201, 1082158, 1, 1, 0, 1000), +(7556, 8150201, 1072208, 1, 1, 0, 800), +(7557, 8150201, 1092027, 1, 1, 0, 700), +(7558, 8150201, 1402016, 1, 1, 0, 700), +(7559, 8150201, 1382035, 1, 1, 0, 700), +(7560, 8150201, 2040302, 1, 1, 0, 300), +(7561, 8150201, 2040501, 1, 1, 0, 300), +(7562, 8150201, 4000267, 1, 1, 0, 600000), +(7563, 8150201, 4000244, 1, 1, 0, 2000), +(7564, 8150201, 4000245, 1, 1, 0, 2000), +(7565, 8150201, 1082136, 1, 1, 0, 1000), +(7566, 8150201, 2290004, 1, 1, 0, 500), +(7567, 8150201, 2290006, 1, 1, 0, 500), +(7568, 8150201, 2290024, 1, 1, 0, 500), +(7569, 8150201, 2290036, 1, 1, 0, 500), +(7570, 8150201, 2290056, 1, 1, 0, 500), +(7571, 8150201, 2290072, 1, 1, 0, 500), +(7572, 8150201, 2290078, 1, 1, 0, 500), +(7573, 8150201, 1492012, 1, 1, 0, 500), +(7574, 8150201, 2044802, 1, 1, 0, 300), +(7575, 8150201, 2290117, 1, 1, 0, 500), +(7576, 8150201, 2040618, 1, 1, 0, 300), +(7577, 8150201, 2044012, 1, 1, 0, 300), +(7578, 8150201, 2044210, 1, 1, 0, 300), +(7579, 8150201, 2049100, 1, 1, 0, 150), +(7580, 8150201, 4130002, 1, 1, 0, 6000), +(7581, 8150201, 4130015, 1, 1, 0, 6000), +(7582, 8150201, 4130017, 1, 1, 0, 6000), +(7583, 8150300, 2000006, 1, 1, 0, 20000), +(7584, 8150300, 2000005, 1, 1, 0, 20000), +(7585, 8150300, 4004002, 1, 1, 0, 10000), +(7586, 8150300, 4010001, 1, 1, 0, 9000), +(7587, 8150300, 4020000, 1, 1, 0, 9000), +(7588, 8150300, 4006001, 1, 1, 0, 10000), +(7589, 8150300, 1002365, 1, 1, 0, 1500), +(7590, 8150300, 1050089, 1, 1, 0, 700), +(7591, 8150300, 1041118, 1, 1, 0, 800), +(7592, 8150300, 1061116, 1, 1, 0, 800), +(7593, 8150300, 1082129, 1, 1, 0, 1000), +(7594, 8150300, 1072223, 1, 1, 0, 800), +(7595, 8150300, 1452017, 1, 1, 0, 500), +(7596, 8150300, 2040701, 1, 1, 0, 300), +(7597, 8150300, 2040516, 1, 1, 0, 300), +(7598, 8150300, 2043002, 1, 1, 0, 300), +(7599, 8150300, 4000268, 1, 1, 0, 600000), +(7600, 8150300, 4000244, 1, 1, 0, 2000), +(7601, 8150300, 4000245, 1, 1, 0, 2000), +(7602, 8150300, 1052128, 1, 1, 0, 700), +(7603, 8150300, 2044901, 1, 1, 0, 300), +(7604, 8150300, 2290120, 1, 1, 0, 500), +(7605, 8150300, 2043114, 1, 1, 0, 300), +(7606, 8150300, 4130002, 1, 1, 0, 6000), +(7607, 8150300, 4130005, 1, 1, 0, 6000), +(7608, 8150300, 4130013, 1, 1, 0, 6000), +(7609, 8150301, 4000269, 1, 1, 0, 600000), +(7610, 8150301, 2000006, 1, 1, 0, 20000), +(7611, 8150301, 2022003, 1, 1, 0, 20000), +(7612, 8150301, 4006000, 1, 1, 0, 10000), +(7613, 8150301, 2000005, 1, 1, 0, 20000), +(7614, 8150301, 4004003, 1, 1, 0, 10000), +(7615, 8150301, 4020005, 1, 1, 0, 9000), +(7616, 8150301, 4010004, 1, 1, 0, 9000), +(7617, 8150301, 1002532, 1, 1, 0, 1500), +(7618, 8150301, 1050094, 1, 1, 0, 700), +(7619, 8150301, 1051105, 1, 1, 0, 700), +(7620, 8150301, 1082143, 1, 1, 0, 1000), +(7621, 8150301, 1072227, 1, 1, 0, 800), +(7622, 8150301, 1422013, 1, 1, 0, 700), +(7623, 8150301, 1372010, 1, 1, 0, 700), +(7624, 8150301, 2040401, 1, 1, 0, 300), +(7625, 8150301, 2040001, 1, 1, 0, 300), +(7626, 8150301, 2044001, 1, 1, 0, 300), +(7627, 8150301, 4000244, 1, 1, 0, 2000), +(7628, 8150301, 4000245, 1, 1, 0, 2000), +(7629, 8150301, 1082213, 1, 1, 0, 1000), +(7630, 8150301, 2290101, 1, 1, 0, 500), +(7631, 8150301, 2040924, 1, 1, 0, 300), +(7632, 8150301, 4130004, 1, 1, 0, 6000), +(7633, 8150301, 4130013, 1, 1, 0, 6000), +(7634, 8150302, 4000270, 1, 1, 0, 600000), +(7635, 8150302, 2000006, 1, 1, 0, 20000), +(7636, 8150302, 2000005, 1, 1, 0, 20000), +(7637, 8150302, 2022003, 1, 1, 0, 20000), +(7638, 8150302, 2020013, 1, 1, 0, 20000), +(7639, 8150302, 4004000, 1, 1, 0, 10000), +(7640, 8150302, 4020002, 1, 1, 0, 9000), +(7641, 8150302, 4010005, 1, 1, 0, 9000), +(7642, 8150302, 4006001, 1, 1, 0, 10000), +(7643, 8150302, 4006000, 1, 1, 0, 10000), +(7644, 8150302, 1002531, 1, 1, 0, 1500), +(7645, 8150302, 1040115, 1, 1, 0, 800), +(7646, 8150302, 1060107, 1, 1, 0, 800), +(7647, 8150302, 1051095, 1, 1, 0, 700), +(7648, 8150302, 1082127, 1, 1, 0, 1000), +(7649, 8150302, 1072214, 1, 1, 0, 800), +(7650, 8150302, 1332027, 1, 1, 0, 500), +(7651, 8150302, 1442020, 1, 1, 0, 700), +(7652, 8150302, 2040302, 1, 1, 0, 300), +(7653, 8150302, 2044301, 1, 1, 0, 300), +(7654, 8150302, 2044402, 1, 1, 0, 300), +(7655, 8150302, 4131004, 1, 1, 0, 6000), +(7656, 8150302, 4000244, 1, 1, 0, 2000), +(7657, 8150302, 4000245, 1, 1, 0, 2000), +(7658, 8150302, 2290010, 1, 1, 0, 500), +(7659, 8150302, 2290019, 1, 1, 0, 500), +(7660, 8150302, 2290026, 1, 1, 0, 500), +(7661, 8150302, 2290076, 1, 1, 0, 500), +(7662, 8150302, 1482012, 1, 1, 0, 500), +(7663, 8150302, 2290119, 1, 1, 0, 500), +(7664, 8150302, 4130009, 1, 1, 0, 6000), +(7665, 8150302, 4130014, 1, 1, 0, 6000), +(7666, 8150302, 4130017, 1, 1, 0, 6000), +(7667, 8160000, 4000151, 1, 1, 0, 600000), +(7668, 8160000, 2000006, 1, 1, 0, 20000), +(7669, 8160000, 2022003, 1, 1, 0, 20000), +(7670, 8160000, 4006000, 1, 1, 0, 10000), +(7671, 8160000, 4010001, 1, 1, 0, 9000), +(7672, 8160000, 4020002, 1, 1, 0, 9000), +(7673, 8160000, 4004003, 1, 1, 0, 10000), +(7674, 8160000, 2040705, 1, 1, 0, 300), +(7675, 8160000, 2040602, 1, 1, 0, 300), +(7676, 8160000, 1092015, 1, 1, 0, 700), +(7677, 8160000, 1462009, 1, 1, 0, 500), +(7678, 8160000, 1472028, 1, 1, 0, 500), +(7679, 8160000, 1050062, 1, 1, 0, 700), +(7680, 8160000, 1442019, 1, 1, 0, 700), +(7681, 8160000, 1472031, 1, 1, 0, 500), +(7682, 8160000, 1452015, 1, 1, 0, 500), +(7683, 8160000, 1050081, 1, 1, 0, 700), +(7684, 8160000, 1002329, 1, 1, 0, 1500), +(7685, 8160000, 1072179, 1, 1, 0, 800), +(7686, 8160000, 1082123, 1, 1, 0, 1000), +(7687, 8160000, 1051079, 1, 1, 0, 700), +(7688, 8160000, 1032023, 1, 1, 0, 1000), +(7689, 8160000, 1051095, 1, 1, 0, 700), +(7690, 8160000, 1092026, 1, 1, 0, 700), +(7691, 8160000, 1002403, 1, 1, 0, 1500), +(7692, 8160000, 1040118, 1, 1, 0, 800), +(7693, 8160000, 1060107, 1, 1, 0, 800), +(7694, 8160000, 1061119, 1, 1, 0, 800), +(7695, 8160000, 1041120, 1, 1, 0, 800), +(7696, 8160000, 1072213, 1, 1, 0, 800), +(7697, 8160000, 1052131, 1, 1, 0, 700), +(7698, 8160000, 2040924, 1, 1, 0, 300), +(7699, 8160000, 4130003, 1, 1, 0, 6000), +(7700, 8160000, 4130004, 1, 1, 0, 6000), +(7701, 8160000, 4130014, 1, 1, 0, 6000), +(7702, 8170000, 4000152, 1, 1, 0, 600000), +(7703, 8170000, 4010004, 1, 1, 0, 9000), +(7704, 8170000, 4010005, 1, 1, 0, 9000), +(7705, 8170000, 2000006, 1, 1, 0, 20000), +(7706, 8170000, 2000005, 1, 1, 0, 20000), +(7707, 8170000, 4004004, 1, 1, 0, 10000), +(7708, 8170000, 4006001, 1, 1, 0, 10000), +(7709, 8170000, 2040702, 1, 1, 0, 300), +(7710, 8170000, 2040802, 1, 1, 0, 300), +(7711, 8170000, 4020008, 1, 1, 0, 9000), +(7712, 8170000, 2002001, 1, 1, 0, 20000), +(7713, 8170000, 1002281, 1, 1, 0, 1500), +(7714, 8170000, 1092017, 1, 1, 0, 700), +(7715, 8170000, 1332018, 1, 1, 0, 500), +(7716, 8170000, 1332019, 1, 1, 0, 500), +(7717, 8170000, 1050072, 1, 1, 0, 700), +(7718, 8170000, 1452012, 1, 1, 0, 500), +(7719, 8170000, 1072177, 1, 1, 0, 800), +(7720, 8170000, 1041107, 1, 1, 0, 800), +(7721, 8170000, 1061106, 1, 1, 0, 800), +(7722, 8170000, 1050083, 1, 1, 0, 700), +(7723, 8170000, 1051069, 1, 1, 0, 700); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(7724, 8170000, 1072211, 1, 1, 0, 800), +(7725, 8170000, 1072178, 1, 1, 0, 800), +(7726, 8170000, 1462013, 1, 1, 0, 500), +(7727, 8170000, 1102031, 1, 1, 0, 1000), +(7728, 8170000, 1050095, 1, 1, 0, 700), +(7729, 8170000, 1092027, 1, 1, 0, 700), +(7730, 8170000, 1002404, 1, 1, 0, 1500), +(7731, 8170000, 1032017, 1, 1, 0, 1000), +(7732, 8170000, 1040113, 1, 1, 0, 800), +(7733, 8170000, 1060102, 1, 1, 0, 800), +(7734, 8170000, 1072227, 1, 1, 0, 800), +(7735, 8170000, 2040512, 1, 1, 0, 300), +(7736, 8170000, 4130001, 1, 1, 0, 6000), +(7737, 8170000, 4130003, 1, 1, 0, 6000), +(7738, 8170000, 4130008, 1, 1, 0, 6000), +(7739, 8180000, 2000005, 1, 1, 0, 999999), +(7740, 8180000, 2000004, 1, 1, 0, 999999), +(7741, 8180000, 1302056, 1, 1, 0, 7000), +(7742, 8180000, 1312030, 1, 1, 0, 7000), +(7743, 8180000, 1322045, 1, 1, 0, 7000), +(7744, 8180000, 1332051, 1, 1, 0, 5000), +(7745, 8180000, 1332052, 1, 1, 0, 5000), +(7746, 8180000, 1372010, 1, 1, 0, 7000), +(7747, 8180000, 1382035, 1, 1, 0, 7000), +(7748, 8180000, 1402035, 1, 1, 0, 7000), +(7749, 8180000, 1412021, 1, 1, 0, 7000), +(7750, 8180000, 1422027, 1, 1, 0, 7000), +(7751, 8180000, 1432030, 1, 1, 0, 5000), +(7752, 8180000, 1442044, 1, 1, 0, 7000), +(7753, 8180000, 1452019, 1, 1, 0, 5000), +(7754, 8180000, 1462015, 1, 1, 0, 5000), +(7755, 8180000, 1472053, 1, 1, 0, 5000), +(7756, 8180000, 2043001, 1, 1, 0, 3000), +(7757, 8180000, 2043101, 1, 1, 0, 3000), +(7758, 8180000, 2043201, 1, 1, 0, 3000), +(7759, 8180000, 2043301, 1, 1, 0, 3000), +(7760, 8180000, 2043701, 1, 1, 0, 3000), +(7761, 8180000, 2043801, 1, 1, 0, 3000), +(7762, 8180000, 2044001, 1, 1, 0, 3000), +(7763, 8180000, 2044101, 1, 1, 0, 3000), +(7764, 8180000, 2044301, 1, 1, 0, 3000), +(7765, 8180000, 2044201, 1, 1, 0, 3000), +(7766, 8180000, 2044401, 1, 1, 0, 3000), +(7767, 8180000, 2044501, 1, 1, 0, 3000), +(7768, 8180000, 2044601, 1, 1, 0, 3000), +(7769, 8180000, 2044701, 1, 1, 0, 3000), +(7770, 8180000, 2040805, 1, 1, 0, 3000), +(7771, 8180000, 4004000, 1, 1, 0, 100000), +(7772, 8180000, 4004001, 1, 1, 0, 100000), +(7773, 8180000, 4004002, 1, 1, 0, 100000), +(7774, 8180000, 4004003, 1, 1, 0, 100000), +(7775, 8180000, 4000235, 1, 1, 0, 600000), +(7776, 8180000, 4000244, 1, 1, 0, 20000), +(7777, 8180000, 4000245, 1, 1, 0, 20000), +(7778, 8180000, 2290003, 1, 1, 0, 5000), +(7779, 8180000, 2290015, 1, 1, 0, 5000), +(7780, 8180000, 2290030, 1, 1, 0, 5000), +(7781, 8180000, 2290035, 1, 1, 0, 5000), +(7782, 8180000, 2290036, 1, 1, 0, 5000), +(7783, 8180000, 2290063, 1, 1, 0, 5000), +(7784, 8180000, 2290080, 1, 1, 0, 5000), +(7785, 8180000, 1482012, 1, 1, 0, 5000), +(7786, 8180000, 1492012, 1, 1, 0, 5000), +(7787, 8180000, 2044801, 1, 1, 0, 3000), +(7788, 8180000, 2044901, 1, 1, 0, 3000), +(7789, 8180000, 2290098, 1, 1, 0, 5000), +(7790, 8180000, 2290101, 1, 1, 0, 5000), +(7791, 8180000, 2290117, 1, 1, 0, 5000), +(7792, 8180000, 2040328, 1, 1, 0, 3000), +(7793, 8180000, 2040824, 1, 1, 0, 3000), +(7794, 8180000, 2043112, 1, 1, 0, 3000), +(7795, 8180000, 2044014, 1, 1, 0, 3000), +(7796, 8180000, 2049000, 1, 1, 0, 1500), +(7797, 8180001, 2000005, 1, 1, 0, 999999), +(7798, 8180001, 2000004, 1, 1, 0, 999999), +(7799, 8180001, 1302056, 1, 1, 0, 7000), +(7800, 8180001, 1312030, 1, 1, 0, 7000), +(7801, 8180001, 1322045, 1, 1, 0, 7000), +(7802, 8180001, 1332051, 1, 1, 0, 5000), +(7803, 8180001, 1332052, 1, 1, 0, 5000), +(7804, 8180001, 1372010, 1, 1, 0, 7000), +(7805, 8180001, 1382035, 1, 1, 0, 7000), +(7806, 8180001, 1402035, 1, 1, 0, 7000), +(7807, 8180001, 1412021, 1, 1, 0, 7000), +(7808, 8180001, 1422027, 1, 1, 0, 7000), +(7809, 8180001, 1432030, 1, 1, 0, 5000), +(7810, 8180001, 1442044, 1, 1, 0, 7000), +(7811, 8180001, 1452019, 1, 1, 0, 5000), +(7812, 8180001, 1462015, 1, 1, 0, 5000), +(7813, 8180001, 1472053, 1, 1, 0, 5000), +(7814, 8180001, 2040002, 1, 1, 0, 3000), +(7815, 8180001, 2040005, 1, 1, 0, 3000), +(7816, 8180001, 2040302, 1, 1, 0, 3000), +(7817, 8180001, 2040402, 1, 1, 0, 3000), +(7818, 8180001, 2040502, 1, 1, 0, 3000), +(7819, 8180001, 2040505, 1, 1, 0, 3000), +(7820, 8180001, 2040513, 1, 1, 0, 3000), +(7821, 8180001, 2040516, 1, 1, 0, 3000), +(7822, 8180001, 2040602, 1, 1, 0, 3000), +(7823, 8180001, 2040702, 1, 1, 0, 3000), +(7824, 8180001, 2040705, 1, 1, 0, 3000), +(7825, 8180001, 2040708, 1, 1, 0, 3000), +(7826, 8180001, 2040802, 1, 1, 0, 3000), +(7827, 8180001, 2040902, 1, 1, 0, 3000), +(7828, 8180001, 4004000, 1, 1, 0, 100000), +(7829, 8180001, 4004001, 1, 1, 0, 100000), +(7830, 8180001, 4004002, 1, 1, 0, 100000), +(7831, 8180001, 4004003, 1, 1, 0, 100000), +(7832, 8180001, 4000243, 1, 1, 0, 600000), +(7833, 8180001, 4000244, 1, 1, 0, 20000), +(7834, 8180001, 4000245, 1, 1, 0, 20000), +(7835, 8180001, 2290018, 1, 1, 0, 5000), +(7836, 8180001, 2290019, 1, 1, 0, 5000), +(7837, 8180001, 2290032, 1, 1, 0, 5000), +(7838, 8180001, 2290042, 1, 1, 0, 5000), +(7839, 8180001, 2290059, 1, 1, 0, 5000), +(7840, 8180001, 2290069, 1, 1, 0, 5000), +(7841, 8180001, 2290072, 1, 1, 0, 5000), +(7842, 8180001, 2290092, 1, 1, 0, 5000), +(7843, 8180001, 1482012, 1, 1, 0, 5000), +(7844, 8180001, 1492012, 1, 1, 0, 5000), +(7845, 8180001, 2290100, 1, 1, 0, 5000), +(7846, 8180001, 2290102, 1, 1, 0, 5000), +(7847, 8180001, 2290119, 1, 1, 0, 5000), +(7848, 8180001, 2040618, 1, 1, 0, 3000), +(7849, 8180001, 2040532, 1, 1, 0, 3000), +(7850, 8180001, 2040925, 1, 1, 0, 3000), +(7851, 8180001, 2043114, 1, 1, 0, 3000), +(7852, 8180001, 2043214, 1, 1, 0, 3000), +(7853, 8180001, 2044112, 1, 1, 0, 3000), +(7854, 8180001, 2049100, 1, 1, 0, 3000), +(7855, 8190000, 4000272, 1, 1, 0, 600000), +(7856, 8190000, 2000006, 1, 1, 0, 20000), +(7857, 8190000, 2000005, 1, 1, 0, 20000), +(7858, 8190000, 2022003, 1, 1, 0, 20000), +(7859, 8190000, 2020013, 1, 1, 0, 20000), +(7860, 8190000, 4004001, 1, 1, 0, 10000), +(7861, 8190000, 4010000, 1, 1, 0, 9000), +(7862, 8190000, 4020004, 1, 1, 0, 9000), +(7863, 8190000, 4006001, 1, 1, 0, 10000), +(7864, 8190000, 4006000, 1, 1, 0, 10000), +(7865, 8190000, 1002398, 1, 1, 0, 1500), +(7866, 8190000, 1040111, 1, 1, 0, 800), +(7867, 8190000, 1060102, 1, 1, 0, 800), +(7868, 8190000, 1051092, 1, 1, 0, 700), +(7869, 8190000, 1082158, 1, 1, 0, 1000), +(7870, 8190000, 1072228, 1, 1, 0, 800), +(7871, 8190000, 1332052, 1, 1, 0, 500), +(7872, 8190000, 1402016, 1, 1, 0, 700), +(7873, 8190000, 2044702, 1, 1, 0, 300), +(7874, 8190000, 2040004, 1, 1, 0, 300), +(7875, 8190000, 4000244, 1, 1, 0, 2000), +(7876, 8190000, 4000245, 1, 1, 0, 2000), +(7877, 8190000, 2290030, 1, 1, 0, 500), +(7878, 8190000, 2290044, 1, 1, 0, 500), +(7879, 8190000, 2290054, 1, 1, 0, 500), +(7880, 8190000, 2290066, 1, 1, 0, 500), +(7881, 8190000, 2290092, 1, 1, 0, 500), +(7882, 8190000, 2290103, 1, 1, 0, 500), +(7883, 8190000, 1002646, 1, 1, 0, 1500), +(7884, 8190000, 2040419, 1, 1, 0, 300), +(7885, 8190000, 2044110, 1, 1, 0, 300), +(7886, 8190000, 2049000, 1, 1, 0, 150), +(7887, 8190000, 4130004, 1, 1, 0, 6000), +(7888, 8190000, 4130006, 1, 1, 0, 6000), +(7889, 8190000, 4130008, 1, 1, 0, 6000), +(7890, 8190002, 4000271, 1, 1, 0, 600000), +(7891, 8190002, 2022003, 1, 1, 0, 20000), +(7892, 8190002, 2000006, 1, 1, 0, 20000), +(7893, 8190002, 2000005, 1, 1, 0, 20000), +(7894, 8190002, 4004003, 1, 1, 0, 10000), +(7895, 8190002, 4020007, 1, 1, 0, 9000), +(7896, 8190002, 4010005, 1, 1, 0, 9000), +(7897, 8190002, 4006001, 1, 1, 0, 10000), +(7898, 8190002, 4006000, 1, 1, 0, 10000), +(7899, 8190002, 1002406, 1, 1, 0, 1500), +(7900, 8190002, 1051101, 1, 1, 0, 700), +(7901, 8190002, 1050097, 1, 1, 0, 700), +(7902, 8190002, 1082139, 1, 1, 0, 1000), +(7903, 8190002, 1072225, 1, 1, 0, 800), +(7904, 8190002, 1032023, 1, 1, 0, 1000), +(7905, 8190002, 1412021, 1, 1, 0, 700), +(7906, 8190002, 1452019, 1, 1, 0, 500), +(7907, 8190002, 2043801, 1, 1, 0, 300), +(7908, 8190002, 2041023, 1, 1, 0, 300), +(7909, 8190002, 2040707, 1, 1, 0, 300), +(7910, 8190002, 4130013, 1, 1, 0, 6000), +(7911, 8190002, 4000244, 1, 1, 0, 2000), +(7912, 8190002, 4000245, 1, 1, 0, 2000), +(7913, 8190002, 1082152, 1, 1, 0, 1000), +(7914, 8190002, 2290000, 1, 1, 0, 500), +(7915, 8190002, 2290008, 1, 1, 0, 500), +(7916, 8190002, 2290018, 1, 1, 0, 500), +(7917, 8190002, 2290038, 1, 1, 0, 500), +(7918, 8190002, 2290060, 1, 1, 0, 500), +(7919, 8190002, 2290080, 1, 1, 0, 500), +(7920, 8190002, 1492012, 1, 1, 0, 500), +(7921, 8190002, 2290124, 1, 1, 0, 500), +(7922, 8190002, 1082213, 1, 1, 0, 1000), +(7923, 8190002, 2044901, 1, 1, 0, 300), +(7924, 8190003, 4000274, 1, 1, 0, 600000), +(7925, 8190003, 2022003, 1, 1, 0, 20000), +(7926, 8190003, 2000006, 1, 1, 0, 20000), +(7927, 8190003, 2000005, 1, 1, 0, 20000), +(7928, 8190003, 4004001, 1, 1, 0, 10000), +(7929, 8190003, 4010001, 1, 1, 0, 9000), +(7930, 8190003, 4020001, 1, 1, 0, 9000), +(7931, 8190003, 4006001, 1, 1, 0, 10000), +(7932, 8190003, 4006000, 1, 1, 0, 10000), +(7933, 8190003, 1002377, 1, 1, 0, 1500), +(7934, 8190003, 1050107, 1, 1, 0, 700), +(7935, 8190003, 1050103, 1, 1, 0, 700), +(7936, 8190003, 1082135, 1, 1, 0, 1000), +(7937, 8190003, 1072221, 1, 1, 0, 800), +(7938, 8190003, 1032017, 1, 1, 0, 1000), +(7939, 8190003, 1422027, 1, 1, 0, 700), +(7940, 8190003, 1332051, 1, 1, 0, 500), +(7941, 8190003, 2044602, 1, 1, 0, 300), +(7942, 8190003, 2043301, 1, 1, 0, 300), +(7943, 8190003, 2040805, 1, 1, 0, 300), +(7944, 8190003, 4000244, 1, 1, 0, 2000), +(7945, 8190003, 4000245, 1, 1, 0, 2000), +(7946, 8190003, 1082140, 1, 1, 0, 1000), +(7947, 8190003, 2290012, 1, 1, 0, 500), +(7948, 8190003, 2290014, 1, 1, 0, 500), +(7949, 8190003, 2290050, 1, 1, 0, 500), +(7950, 8190003, 2290062, 1, 1, 0, 500), +(7951, 8190003, 2290070, 1, 1, 0, 500), +(7952, 8190003, 2290086, 1, 1, 0, 500), +(7953, 8190003, 1482011, 1, 1, 0, 500), +(7954, 8190003, 1072318, 1, 1, 0, 800), +(7955, 8190003, 2044902, 1, 1, 0, 300), +(7956, 8190003, 2290108, 1, 1, 0, 500), +(7957, 8190003, 2040534, 1, 1, 0, 300), +(7958, 8190003, 2040627, 1, 1, 0, 300), +(7959, 8190003, 2049000, 1, 1, 0, 150), +(7960, 8190003, 4130001, 1, 1, 0, 6000), +(7961, 8190003, 4130014, 1, 1, 0, 6000), +(7962, 8190004, 4000273, 1, 1, 0, 600000), +(7963, 8190004, 2022003, 1, 1, 0, 20000), +(7964, 8190004, 2000006, 1, 1, 0, 20000), +(7965, 8190004, 2000005, 1, 1, 0, 20000), +(7966, 8190004, 4004004, 1, 1, 0, 10000), +(7967, 8190004, 4020006, 1, 1, 0, 9000), +(7968, 8190004, 4020002, 1, 1, 0, 9000), +(7969, 8190004, 4006001, 1, 1, 0, 10000), +(7970, 8190004, 4006000, 1, 1, 0, 10000), +(7971, 8190004, 1002380, 1, 1, 0, 1500), +(7972, 8190004, 1051102, 1, 1, 0, 700), +(7973, 8190004, 1040121, 1, 1, 0, 800), +(7974, 8190004, 1060109, 1, 1, 0, 800), +(7975, 8190004, 1082151, 1, 1, 0, 1000), +(7976, 8190004, 1072215, 1, 1, 0, 800), +(7977, 8190004, 1322045, 1, 1, 0, 700), +(7978, 8190004, 1302056, 1, 1, 0, 700), +(7979, 8190004, 2041004, 1, 1, 0, 300), +(7980, 8190004, 2041013, 1, 1, 0, 300), +(7981, 8190004, 2044201, 1, 1, 0, 300), +(7982, 8190004, 4000244, 1, 1, 0, 2000), +(7983, 8190004, 4000245, 1, 1, 0, 2000), +(7984, 8190004, 2290002, 1, 1, 0, 500), +(7985, 8190004, 2290009, 1, 1, 0, 500), +(7986, 8190004, 2290034, 1, 1, 0, 500), +(7987, 8190004, 2290058, 1, 1, 0, 500), +(7988, 8190004, 2290068, 1, 1, 0, 500), +(7989, 8190004, 2290090, 1, 1, 0, 500), +(7990, 8190004, 2290053, 1, 1, 0, 500), +(7991, 8190004, 1482012, 1, 1, 0, 500), +(7992, 8190004, 2044801, 1, 1, 0, 300), +(7993, 8190004, 2290121, 1, 1, 0, 500), +(7994, 8190004, 2040326, 1, 1, 0, 300), +(7995, 8190004, 2040530, 1, 1, 0, 300), +(7996, 8190004, 2040924, 1, 1, 0, 300), +(7997, 8190004, 2044214, 1, 1, 0, 300), +(7998, 8190004, 4130010, 1, 1, 0, 6000), +(7999, 8200000, 4000443, 1, 1, 0, 600000), +(8000, 8200000, 1002640, 1, 1, 0, 1500), +(8001, 8200000, 1041107, 1, 1, 0, 800), +(8002, 8200000, 1040110, 1, 1, 0, 800), +(8003, 8200000, 1082112, 1, 1, 0, 1000), +(8004, 8200000, 1072179, 1, 1, 0, 800), +(8005, 8200000, 1102028, 1, 1, 0, 1000), +(8006, 8200000, 1402015, 1, 1, 0, 700), +(8007, 8200000, 1452011, 1, 1, 0, 500), +(8008, 8200000, 4004002, 1, 1, 0, 10000), +(8009, 8200000, 4010000, 1, 1, 0, 9000), +(8010, 8200000, 4020000, 1, 1, 0, 9000), +(8011, 8200000, 4130000, 1, 1, 0, 6000), +(8012, 8200000, 4130013, 1, 1, 0, 6000), +(8013, 8200000, 2330004, 1, 1, 0, 500), +(8014, 8200000, 2040532, 1, 1, 0, 300), +(8015, 8200000, 2044112, 1, 1, 0, 300), +(8016, 8200000, 2044807, 1, 1, 0, 300), +(8017, 8200001, 4000444, 1, 1, 0, 600000), +(8018, 8200001, 4000446, 1, 1, 0, 10000), +(8019, 8200001, 2000006, 1, 1, 0, 20000), +(8020, 8200001, 2022003, 1, 1, 0, 20000), +(8021, 8200001, 4004003, 1, 1, 0, 10000), +(8022, 8200001, 4010001, 1, 1, 0, 9000), +(8023, 8200001, 4020001, 1, 1, 0, 9000), +(8024, 8200001, 1002532, 1, 1, 0, 1500), +(8025, 8200001, 1072205, 1, 1, 0, 800), +(8026, 8200001, 1082144, 1, 1, 0, 1000), +(8027, 8200001, 1052128, 1, 1, 0, 700), +(8028, 8200001, 1051097, 1, 1, 0, 700), +(8029, 8200001, 1382035, 1, 1, 0, 700), +(8030, 8200001, 1402005, 1, 1, 0, 700), +(8031, 8200001, 1312015, 1, 1, 0, 700), +(8032, 8200001, 4130001, 1, 1, 0, 6000), +(8033, 8200001, 4130014, 1, 1, 0, 6000), +(8034, 8200001, 2043301, 1, 1, 0, 300), +(8035, 8200001, 2040321, 1, 1, 0, 300), +(8036, 8200001, 2040029, 1, 1, 0, 300), +(8037, 8200001, 2290050, 1, 1, 0, 500), +(8038, 8200002, 4000445, 1, 1, 0, 600000), +(8039, 8200002, 4000446, 1, 1, 0, 10000), +(8040, 8200002, 2000006, 1, 1, 0, 20000), +(8041, 8200002, 2022003, 1, 1, 0, 20000), +(8042, 8200002, 4004000, 1, 1, 0, 10000), +(8043, 8200002, 4010002, 1, 1, 0, 9000), +(8044, 8200002, 4020002, 1, 1, 0, 9000), +(8045, 8200002, 1040113, 1, 1, 0, 800), +(8046, 8200002, 1060102, 1, 1, 0, 800), +(8047, 8200002, 1002366, 1, 1, 0, 1500), +(8048, 8200002, 1072195, 1, 1, 0, 800), +(8049, 8200002, 1082210, 1, 1, 0, 1000), +(8050, 8200002, 1051085, 1, 1, 0, 700), +(8051, 8200002, 1452017, 1, 1, 0, 500), +(8052, 8200002, 1402016, 1, 1, 0, 700), +(8053, 8200002, 1442044, 1, 1, 0, 700), +(8054, 8200002, 1092027, 1, 1, 0, 700), +(8055, 8200002, 4130002, 1, 1, 0, 6000), +(8056, 8200002, 4130015, 1, 1, 0, 6000), +(8057, 8200002, 2330004, 1, 1, 0, 500), +(8058, 8200002, 2040707, 1, 1, 0, 300), +(8059, 8200002, 2044212, 1, 1, 0, 300), +(8060, 8200002, 2044401, 1, 1, 0, 300), +(8061, 8200002, 2290066, 1, 1, 0, 500), +(8062, 8200003, 4000447, 1, 1, 0, 600000), +(8063, 8200003, 4000459, 1, 1, 0, 20000), +(8064, 8200003, 2000006, 1, 1, 0, 20000), +(8065, 8200003, 2022003, 1, 1, 0, 20000), +(8066, 8200003, 4004001, 1, 1, 0, 10000), +(8067, 8200003, 4010006, 1, 1, 0, 9000), +(8068, 8200003, 4020006, 1, 1, 0, 9000), +(8069, 8200003, 1082130, 1, 1, 0, 1000), +(8070, 8200003, 1050095, 1, 1, 0, 700), +(8071, 8200003, 1002405, 1, 1, 0, 1500), +(8072, 8200003, 1072315, 1, 1, 0, 800), +(8073, 8200003, 1041118, 1, 1, 0, 800), +(8074, 8200003, 1061117, 1, 1, 0, 800), +(8075, 8200003, 1332027, 1, 1, 0, 500), +(8076, 8200003, 1482012, 1, 1, 0, 500), +(8077, 8200003, 1412010, 1, 1, 0, 700), +(8078, 8200003, 4130003, 1, 1, 0, 6000), +(8079, 8200003, 4130016, 1, 1, 0, 6000), +(8080, 8200003, 2330004, 1, 1, 0, 500), +(8081, 8200003, 2044412, 1, 1, 0, 300), +(8082, 8200003, 2044702, 1, 1, 0, 300), +(8083, 8200003, 2040927, 1, 1, 0, 300), +(8084, 8200003, 2290056, 1, 1, 0, 500), +(8085, 8200004, 4000448, 1, 1, 0, 600000), +(8086, 8200004, 4000459, 1, 1, 0, 20000), +(8087, 8200004, 2000006, 1, 1, 0, 20000), +(8088, 8200004, 2022003, 1, 1, 0, 20000), +(8089, 8200004, 2020015, 1, 1, 0, 20000), +(8090, 8200004, 4004001, 1, 1, 0, 10000), +(8091, 8200004, 4010001, 1, 1, 0, 9000), +(8092, 8200004, 4020008, 1, 1, 0, 9000), +(8093, 8200004, 1072198, 1, 1, 0, 800), +(8094, 8200004, 1082132, 1, 1, 0, 1000), +(8095, 8200004, 1050091, 1, 1, 0, 700), +(8096, 8200004, 1002326, 1, 1, 0, 1500), +(8097, 8200004, 1041121, 1, 1, 0, 800), +(8098, 8200004, 1061120, 1, 1, 0, 800), +(8099, 8200004, 1482011, 1, 1, 0, 500), +(8100, 8200004, 1302056, 1, 1, 0, 700), +(8101, 8200004, 1422013, 1, 1, 0, 700), +(8102, 8200004, 1092036, 1, 1, 0, 700), +(8103, 8200004, 4130004, 1, 1, 0, 6000), +(8104, 8200004, 4130017, 1, 1, 0, 6000), +(8105, 8200004, 2040025, 1, 1, 0, 300), +(8106, 8200004, 2044312, 1, 1, 0, 300), +(8107, 8200004, 2044901, 1, 1, 0, 300), +(8108, 8200004, 2290073, 1, 1, 0, 500), +(8109, 8200005, 4000449, 1, 1, 0, 600000), +(8110, 8200005, 4000451, 1, 1, 0, 10000), +(8111, 8200005, 2000006, 1, 1, 0, 20000), +(8112, 8200005, 2022003, 1, 1, 0, 20000), +(8113, 8200005, 2020013, 1, 1, 0, 20000), +(8114, 8200005, 4004000, 1, 1, 0, 10000), +(8115, 8200005, 4010004, 1, 1, 0, 9000), +(8116, 8200005, 4020001, 1, 1, 0, 9000), +(8117, 8200005, 1072207, 1, 1, 0, 800), +(8118, 8200005, 1082127, 1, 1, 0, 1000), +(8119, 8200005, 1040118, 1, 1, 0, 800), +(8120, 8200005, 1060107, 1, 1, 0, 800), +(8121, 8200005, 1002643, 1, 1, 0, 1500), +(8122, 8200005, 1051103, 1, 1, 0, 700), +(8123, 8200005, 1302023, 1, 1, 0, 700), +(8124, 8200005, 1322029, 1, 1, 0, 700), +(8125, 8200005, 4130005, 1, 1, 0, 6000), +(8126, 8200005, 2044012, 1, 1, 0, 300), +(8127, 8200005, 2040931, 1, 1, 0, 300), +(8128, 8200005, 2290079, 1, 1, 0, 500), +(8129, 8200006, 4000450, 1, 1, 0, 600000), +(8130, 8200006, 4000451, 1, 1, 0, 10000), +(8131, 8200006, 2000006, 1, 1, 0, 20000), +(8132, 8200006, 2000005, 1, 1, 0, 20000), +(8133, 8200006, 2022003, 1, 1, 0, 20000), +(8134, 8200006, 4004003, 1, 1, 0, 10000), +(8135, 8200006, 4010003, 1, 1, 0, 9000), +(8136, 8200006, 4020003, 1, 1, 0, 9000), +(8137, 8200006, 1002378, 1, 1, 0, 1500), +(8138, 8200006, 1072227, 1, 1, 0, 800), +(8139, 8200006, 1082135, 1, 1, 0, 1000), +(8140, 8200006, 1052131, 1, 1, 0, 700), +(8141, 8200006, 1051107, 1, 1, 0, 700), +(8142, 8200006, 1382035, 1, 1, 0, 700), +(8143, 8200006, 1462017, 1, 1, 0, 500), +(8144, 8200006, 1412021, 1, 1, 0, 700), +(8145, 8200006, 1032023, 1, 1, 0, 1000), +(8146, 8200006, 4130006, 1, 1, 0, 6000), +(8147, 8200006, 2040317, 1, 1, 0, 300), +(8148, 8200006, 2040824, 1, 1, 0, 300), +(8149, 8200006, 2290077, 1, 1, 0, 500), +(8150, 8200007, 4000452, 1, 1, 0, 600000), +(8151, 8200007, 4000459, 1, 1, 0, 20000), +(8152, 8200007, 2000006, 1, 1, 0, 20000), +(8153, 8200007, 2022003, 1, 1, 0, 20000), +(8154, 8200007, 4004002, 1, 1, 0, 10000), +(8155, 8200007, 4010004, 1, 1, 0, 9000), +(8156, 8200007, 4020004, 1, 1, 0, 9000), +(8157, 8200007, 1040121, 1, 1, 0, 800), +(8158, 8200007, 1041124, 1, 1, 0, 800), +(8159, 8200007, 1002400, 1, 1, 0, 1500), +(8160, 8200007, 1072214, 1, 1, 0, 800), +(8161, 8200007, 1082213, 1, 1, 0, 1000), +(8162, 8200007, 1051091, 1, 1, 0, 700), +(8163, 8200007, 1462018, 1, 1, 0, 500), +(8164, 8200007, 1332052, 1, 1, 0, 500), +(8165, 8200007, 1422027, 1, 1, 0, 700), +(8166, 8200007, 4130007, 1, 1, 0, 6000), +(8167, 8200007, 2040701, 1, 1, 0, 300), +(8168, 8200007, 2044301, 1, 1, 0, 300), +(8169, 8200007, 2040302, 1, 1, 0, 300), +(8170, 8200007, 2290007, 1, 1, 0, 500), +(8171, 8200008, 4000453, 1, 1, 0, 600000), +(8172, 8200008, 4000459, 1, 1, 0, 20000), +(8173, 8200008, 2000006, 1, 1, 0, 20000), +(8174, 8200008, 2022003, 1, 1, 0, 20000), +(8175, 8200008, 4004000, 1, 1, 0, 10000), +(8176, 8200008, 4010005, 1, 1, 0, 9000), +(8177, 8200008, 4020005, 1, 1, 0, 9000), +(8178, 8200008, 1082140, 1, 1, 0, 1000), +(8179, 8200008, 1050104, 1, 1, 0, 700), +(8180, 8200008, 1002407, 1, 1, 0, 1500), +(8181, 8200008, 1072318, 1, 1, 0, 800), +(8182, 8200008, 1060111, 1, 1, 0, 800), +(8183, 8200008, 1061123, 1, 1, 0, 800), +(8184, 8200008, 1472033, 1, 1, 0, 500), +(8185, 8200008, 1442020, 1, 1, 0, 700), +(8186, 8200008, 1472053, 1, 1, 0, 500), +(8187, 8200008, 4130008, 1, 1, 0, 6000), +(8188, 8200008, 2044101, 1, 1, 0, 300), +(8189, 8200008, 2044501, 1, 1, 0, 300), +(8190, 8200008, 2290006, 1, 1, 0, 500), +(8191, 8200009, 4000454, 1, 1, 0, 600000), +(8192, 8200009, 4000456, 1, 1, 0, 10000), +(8193, 8200009, 2000006, 1, 1, 0, 20000), +(8194, 8200009, 2022003, 1, 1, 0, 20000), +(8195, 8200009, 4004001, 1, 1, 0, 10000), +(8196, 8200009, 4010000, 1, 1, 0, 9000), +(8197, 8200009, 4020007, 1, 1, 0, 9000), +(8198, 8200009, 1072221, 1, 1, 0, 800), +(8199, 8200009, 1082153, 1, 1, 0, 1000), +(8200, 8200009, 1050108, 1, 1, 0, 700), +(8201, 8200009, 1002381, 1, 1, 0, 1500), +(8202, 8200009, 1492011, 1, 1, 0, 500), +(8203, 8200009, 1432011, 1, 1, 0, 500), +(8204, 8200009, 1402035, 1, 1, 0, 700), +(8205, 8200009, 4130000, 1, 1, 0, 6000), +(8206, 8200009, 4130009, 1, 1, 0, 6000), +(8207, 8200009, 2044601, 1, 1, 0, 300), +(8208, 8200009, 2044001, 1, 1, 0, 300), +(8209, 8200009, 2040924, 1, 1, 0, 300), +(8210, 8200009, 2290039, 1, 1, 0, 500), +(8211, 8200010, 4000455, 1, 1, 0, 600000), +(8212, 8200010, 4000456, 1, 1, 0, 10000), +(8213, 8200010, 2000006, 1, 1, 0, 20000), +(8214, 8200010, 2000005, 1, 1, 0, 20000), +(8215, 8200010, 2022003, 1, 1, 0, 20000), +(8216, 8200010, 4004003, 1, 1, 0, 10000), +(8217, 8200010, 4010002, 1, 1, 0, 9000), +(8218, 8200010, 4020000, 1, 1, 0, 9000), +(8219, 8200010, 1072225, 1, 1, 0, 800), +(8220, 8200010, 1082158, 1, 1, 0, 1000), +(8221, 8200010, 1050099, 1, 1, 0, 700), +(8222, 8200010, 1002646, 1, 1, 0, 1500), +(8223, 8200010, 1432030, 1, 1, 0, 500), +(8224, 8200010, 1312030, 1, 1, 0, 700), +(8225, 8200010, 4130001, 1, 1, 0, 6000), +(8226, 8200010, 4130010, 1, 1, 0, 6000), +(8227, 8200010, 2043801, 1, 1, 0, 300), +(8228, 8200010, 2041022, 1, 1, 0, 300), +(8229, 8200010, 2290089, 1, 1, 0, 500), +(8230, 8200011, 4000457, 1, 1, 0, 600000), +(8231, 8200011, 4000459, 1, 1, 0, 20000), +(8232, 8200011, 2000006, 1, 1, 0, 20000), +(8233, 8200011, 2000005, 1, 1, 0, 20000), +(8234, 8200011, 2022003, 1, 1, 0, 20000), +(8235, 8200011, 4004002, 1, 1, 0, 10000), +(8236, 8200011, 4010003, 1, 1, 0, 9000), +(8237, 8200011, 4020002, 1, 1, 0, 9000), +(8238, 8200011, 1002379, 1, 1, 0, 1500), +(8239, 8200011, 1072229, 1, 1, 0, 800), +(8240, 8200011, 1082138, 1, 1, 0, 1000), +(8241, 8200011, 1052131, 1, 1, 0, 700), +(8242, 8200011, 1372010, 1, 1, 0, 700), +(8243, 8200011, 1322045, 1, 1, 0, 700), +(8244, 8200011, 4130002, 1, 1, 0, 6000), +(8245, 8200011, 4130011, 1, 1, 0, 6000), +(8246, 8200011, 2044201, 1, 1, 0, 300), +(8247, 8200011, 2041008, 1, 1, 0, 300), +(8248, 8200011, 2044602, 1, 1, 0, 300), +(8249, 8200011, 2290046, 1, 1, 0, 500), +(8250, 8200012, 4000458, 1, 1, 0, 600000), +(8251, 8200012, 4000459, 1, 1, 0, 20000), +(8252, 8200012, 2000006, 1, 1, 0, 20000), +(8253, 8200012, 2000005, 1, 1, 0, 20000), +(8254, 8200012, 2022003, 1, 1, 0, 20000), +(8255, 8200012, 4004002, 1, 1, 0, 10000), +(8256, 8200012, 4010000, 1, 1, 0, 9000), +(8257, 8200012, 4020000, 1, 1, 0, 9000), +(8258, 8200012, 1040122, 1, 1, 0, 800), +(8259, 8200012, 1060111, 1, 1, 0, 800), +(8260, 8200012, 1002401, 1, 1, 0, 1500), +(8261, 8200012, 1072216, 1, 1, 0, 800), +(8262, 8200012, 1082213, 1, 1, 0, 1000), +(8263, 8200012, 1452021, 1, 1, 0, 500), +(8264, 8200012, 1322045, 1, 1, 0, 700), +(8265, 8200012, 4130003, 1, 1, 0, 6000), +(8266, 8200012, 4130012, 1, 1, 0, 6000), +(8267, 8200012, 2040501, 1, 1, 0, 300), +(8268, 8200012, 2043701, 1, 1, 0, 300), +(8269, 8200012, 2290093, 1, 1, 0, 500), +(8270, 8220000, 4000073, 1, 1, 0, 600000), +(8271, 8220000, 4000073, 1, 1, 0, 600000), +(8272, 8220000, 4000073, 1, 1, 0, 600000), +(8273, 8220000, 4000074, 1, 1, 0, 600000), +(8274, 8220000, 4000074, 1, 1, 0, 600000), +(8275, 8220000, 4000074, 1, 1, 0, 600000), +(8276, 8220000, 4000021, 1, 1, 0, 500000), +(8277, 8220000, 4000021, 1, 1, 0, 500000), +(8278, 8220000, 4000021, 1, 1, 0, 500000), +(8279, 8220000, 4006000, 1, 1, 0, 100000), +(8280, 8220000, 4004004, 1, 1, 0, 100000), +(8281, 8220000, 4010006, 1, 1, 0, 90000), +(8282, 8220000, 4020008, 1, 1, 0, 90000), +(8283, 8220000, 2000004, 1, 1, 0, 999999), +(8284, 8220000, 2000006, 1, 1, 0, 999999), +(8285, 8220000, 2002003, 1, 1, 0, 200000), +(8286, 8220000, 2012001, 1, 1, 0, 200000), +(8287, 8220000, 2040707, 1, 1, 0, 3000), +(8288, 8220000, 2041007, 1, 1, 0, 3000), +(8289, 8220000, 2043701, 1, 1, 0, 3000), +(8290, 8220000, 2044301, 1, 1, 0, 3000), +(8291, 8220000, 2041019, 1, 1, 0, 3000), +(8292, 8220000, 2044401, 1, 1, 0, 3000), +(8293, 8220000, 2040001, 1, 1, 0, 3000), +(8294, 8220000, 2040301, 1, 1, 0, 3000), +(8295, 8220000, 2040401, 1, 1, 0, 3000), +(8296, 8220000, 2043301, 1, 1, 0, 3000), +(8297, 8220000, 2044302, 1, 1, 0, 3000), +(8298, 8220000, 2041020, 1, 1, 0, 3000), +(8299, 8220000, 2044402, 1, 1, 0, 3000), +(8300, 8220000, 2040002, 1, 1, 0, 3000), +(8301, 8220000, 2040302, 1, 1, 0, 3000), +(8302, 8220000, 2060001, 1, 1, 0, 300000), +(8303, 8220000, 2061001, 1, 1, 0, 300000), +(8304, 8220000, 1002532, 1, 1, 0, 15000), +(8305, 8220000, 1002366, 1, 1, 0, 15000), +(8306, 8220000, 1002405, 1, 1, 0, 15000), +(8307, 8220000, 1002326, 1, 1, 0, 15000), +(8308, 8220000, 1040113, 1, 1, 0, 8000), +(8309, 8220000, 1041121, 1, 1, 0, 8000), +(8310, 8220000, 1050095, 1, 1, 0, 7000), +(8311, 8220000, 1051097, 1, 1, 0, 7000), +(8312, 8220000, 1050091, 1, 1, 0, 7000), +(8313, 8220000, 1051085, 1, 1, 0, 7000), +(8314, 8220000, 1040117, 1, 1, 0, 8000), +(8315, 8220000, 1041117, 1, 1, 0, 8000), +(8316, 8220000, 1082130, 1, 1, 0, 10000), +(8317, 8220000, 1082134, 1, 1, 0, 10000), +(8318, 8220000, 1082127, 1, 1, 0, 10000), +(8319, 8220000, 1082144, 1, 1, 0, 10000), +(8320, 8220000, 1072198, 1, 1, 0, 8000), +(8321, 8220000, 1072209, 1, 1, 0, 8000), +(8322, 8220000, 1072205, 1, 1, 0, 8000), +(8323, 8220000, 1072194, 1, 1, 0, 8000), +(8324, 8220000, 1002643, 1, 1, 0, 15000), +(8325, 8220000, 1052128, 1, 1, 0, 7000), +(8326, 8220000, 1082210, 1, 1, 0, 10000), +(8327, 8220000, 1072315, 1, 1, 0, 8000), +(8328, 8220000, 2043017, 1, 1, 0, 3000), +(8329, 8220000, 2044114, 1, 1, 0, 3000), +(8330, 8220000, 2044214, 1, 1, 0, 3000), +(8331, 8220001, 4000048, 1, 1, 0, 600000), +(8332, 8220001, 4000049, 1, 1, 0, 600000), +(8333, 8220001, 4000051, 1, 1, 0, 600000), +(8334, 8220001, 4000257, 1, 1, 0, 600000), +(8335, 8220001, 4000021, 1, 1, 0, 500000), +(8336, 8220001, 4004002, 1, 1, 0, 100000), +(8337, 8220001, 4010004, 1, 1, 0, 90000), +(8338, 8220001, 4020004, 1, 1, 0, 90000), +(8339, 8220001, 2000004, 1, 1, 0, 999999), +(8340, 8220001, 2000006, 1, 1, 0, 999999), +(8341, 8220001, 2022001, 1, 1, 0, 200000), +(8342, 8220001, 2022186, 1, 1, 0, 200000), +(8343, 8220001, 2043701, 1, 1, 0, 3000), +(8344, 8220001, 2041016, 1, 1, 0, 3000), +(8345, 8220001, 2043801, 1, 1, 0, 3000), +(8346, 8220001, 2040804, 1, 1, 0, 3000), +(8347, 8220001, 2040501, 1, 1, 0, 3000), +(8348, 8220001, 2040601, 1, 1, 0, 3000), +(8349, 8220001, 2040701, 1, 1, 0, 3000), +(8350, 8220001, 2040801, 1, 1, 0, 3000), +(8351, 8220001, 2040901, 1, 1, 0, 3000), +(8352, 8220001, 2041001, 1, 1, 0, 3000), +(8353, 8220001, 2041008, 1, 1, 0, 3000), +(8354, 8220001, 2043302, 1, 1, 0, 3000), +(8355, 8220001, 2043702, 1, 1, 0, 3000), +(8356, 8220001, 2041017, 1, 1, 0, 3000), +(8357, 8220001, 2043802, 1, 1, 0, 3000), +(8358, 8220001, 2060001, 1, 1, 0, 300000), +(8359, 8220001, 2061001, 1, 1, 0, 300000), +(8360, 8220001, 2070008, 1, 1, 0, 5000), +(8361, 8220001, 1302023, 1, 1, 0, 7000), +(8362, 8220001, 1312015, 1, 1, 0, 7000), +(8363, 8220001, 1322029, 1, 1, 0, 7000), +(8364, 8220001, 1332027, 1, 1, 0, 5000), +(8365, 8220001, 1382035, 1, 1, 0, 7000), +(8366, 8220001, 1402016, 1, 1, 0, 7000), +(8367, 8220001, 1412010, 1, 1, 0, 7000), +(8368, 8220001, 1422013, 1, 1, 0, 7000), +(8369, 8220001, 1432011, 1, 1, 0, 5000), +(8370, 8220001, 1442020, 1, 1, 0, 7000), +(8371, 8220001, 1452017, 1, 1, 0, 5000), +(8372, 8220001, 1462018, 1, 1, 0, 5000), +(8373, 8220001, 1472033, 1, 1, 0, 5000), +(8374, 8220001, 1032017, 1, 1, 0, 10000), +(8375, 8220001, 1092028, 1, 1, 0, 7000), +(8376, 8220001, 1482011, 1, 1, 0, 5000), +(8377, 8220001, 1492011, 1, 1, 0, 5000), +(8378, 8220001, 2044802, 1, 1, 0, 3000), +(8379, 8220001, 2040026, 1, 1, 0, 3000), +(8380, 8220001, 2040323, 1, 1, 0, 3000), +(8381, 8220001, 2040927, 1, 1, 0, 3000), +(8382, 8220001, 2044314, 1, 1, 0, 3000), +(8383, 8220001, 2049100, 1, 1, 0, 3000), +(8384, 8220002, 4000364, 1, 1, 0, 600000), +(8385, 8220002, 4000364, 1, 1, 0, 600000), +(8386, 8220002, 4000364, 1, 1, 0, 600000), +(8387, 8220002, 4000365, 1, 1, 0, 600000), +(8388, 8220002, 4000365, 1, 1, 0, 600000), +(8389, 8220002, 4000365, 1, 1, 0, 600000), +(8390, 8220002, 4000356, 1, 1, 0, 600000), +(8391, 8220002, 4000356, 1, 1, 0, 600000), +(8392, 8220002, 4000356, 1, 1, 0, 600000), +(8393, 8220002, 4004004, 1, 1, 0, 100000), +(8394, 8220002, 4010005, 1, 1, 0, 90000), +(8395, 8220002, 4020008, 1, 1, 0, 90000), +(8396, 8220002, 2000004, 1, 1, 0, 999999), +(8397, 8220002, 2000006, 1, 1, 0, 999999), +(8398, 8220002, 2040301, 1, 1, 0, 3000), +(8399, 8220002, 2040501, 1, 1, 0, 3000), +(8400, 8220002, 2040504, 1, 1, 0, 3000), +(8401, 8220002, 2040513, 1, 1, 0, 3000), +(8402, 8220002, 2040516, 1, 1, 0, 3000), +(8403, 8220002, 2041007, 1, 1, 0, 3000), +(8404, 8220002, 2041013, 1, 1, 0, 3000), +(8405, 8220002, 2041016, 1, 1, 0, 3000), +(8406, 8220002, 2041019, 1, 1, 0, 3000), +(8407, 8220002, 2041022, 1, 1, 0, 3000), +(8408, 8220002, 1372009, 1, 1, 0, 7000), +(8409, 8220002, 1302023, 1, 1, 0, 7000), +(8410, 8220002, 1312015, 1, 1, 0, 7000), +(8411, 8220002, 1322029, 1, 1, 0, 7000), +(8412, 8220002, 1402005, 1, 1, 0, 7000), +(8413, 8220002, 1402016, 1, 1, 0, 7000), +(8414, 8220002, 1412010, 1, 1, 0, 7000), +(8415, 8220002, 1422013, 1, 1, 0, 7000), +(8416, 8220002, 1432011, 1, 1, 0, 5000), +(8417, 8220002, 1442020, 1, 1, 0, 7000), +(8418, 8220002, 1452017, 1, 1, 0, 5000), +(8419, 8220002, 1462018, 1, 1, 0, 5000), +(8420, 8220002, 1332027, 1, 1, 0, 5000), +(8421, 8220002, 1472033, 1, 1, 0, 5000), +(8422, 8220002, 1332026, 1, 1, 0, 5000), +(8423, 8220002, 1482011, 1, 1, 0, 5000), +(8424, 8220002, 1492011, 1, 1, 0, 5000), +(8425, 8220002, 1382008, 1, 1, 0, 7000), +(8426, 8220002, 2070007, 1, 1, 0, 2000), +(8427, 8220002, 2330003, 1, 1, 0, 5000), +(8428, 8220002, 2040326, 1, 1, 0, 3000), +(8429, 8220002, 2040422, 1, 1, 0, 3000), +(8430, 8220002, 2040532, 1, 1, 0, 3000), +(8431, 8220002, 2040931, 1, 1, 0, 3000), +(8432, 8220003, 4000268, 1, 1, 0, 600000), +(8433, 8220003, 4000268, 1, 1, 0, 600000), +(8434, 8220003, 4000268, 1, 1, 0, 600000), +(8435, 8220003, 4000269, 1, 1, 0, 600000), +(8436, 8220003, 4000269, 1, 1, 0, 600000), +(8437, 8220003, 4000269, 1, 1, 0, 600000), +(8438, 8220003, 4000270, 1, 1, 0, 600000), +(8439, 8220003, 4000270, 1, 1, 0, 600000), +(8440, 8220003, 4000270, 1, 1, 0, 600000), +(8441, 8220003, 4006001, 1, 1, 0, 100000), +(8442, 8220003, 4006000, 1, 1, 0, 100000), +(8443, 8220003, 2000005, 1, 1, 0, 999999), +(8444, 8220003, 2000006, 1, 1, 0, 999999), +(8445, 8220003, 2020013, 1, 1, 0, 999999), +(8446, 8220003, 2290006, 1, 1, 0, 5000), +(8447, 8220003, 2290031, 1, 1, 0, 5000), +(8448, 8220003, 2290033, 1, 1, 0, 5000), +(8449, 8220003, 2290061, 1, 1, 0, 5000), +(8450, 8220003, 2290077, 1, 1, 0, 5000), +(8451, 8220003, 2290105, 1, 1, 0, 5000), +(8452, 8220003, 2290118, 1, 1, 0, 5000), +(8453, 8220003, 1382035, 1, 1, 0, 7000), +(8454, 8220003, 1372010, 1, 1, 0, 7000), +(8455, 8220003, 1302056, 1, 1, 0, 7000), +(8456, 8220003, 1312030, 1, 1, 0, 7000), +(8457, 8220003, 1322045, 1, 1, 0, 7000), +(8458, 8220003, 1402035, 1, 1, 0, 7000), +(8459, 8220003, 1412021, 1, 1, 0, 7000), +(8460, 8220003, 1422027, 1, 1, 0, 7000), +(8461, 8220003, 1432030, 1, 1, 0, 5000), +(8462, 8220003, 1442044, 1, 1, 0, 7000), +(8463, 8220003, 1452019, 1, 1, 0, 5000), +(8464, 8220003, 1462015, 1, 1, 0, 5000), +(8465, 8220003, 1332052, 1, 1, 0, 5000), +(8466, 8220003, 1472053, 1, 1, 0, 5000), +(8467, 8220003, 1332051, 1, 1, 0, 5000), +(8468, 8220003, 1482012, 1, 1, 0, 5000), +(8469, 8220003, 1492012, 1, 1, 0, 5000), +(8470, 8220003, 2040824, 1, 1, 0, 3000), +(8471, 8220003, 2044212, 1, 1, 0, 3000), +(8472, 8220004, 4000460, 1, 1, 0, 600000), +(8473, 8220004, 4006001, 1, 1, 0, 100000), +(8474, 8220004, 4006000, 1, 1, 0, 100000), +(8475, 8220004, 2000005, 1, 1, 0, 999999), +(8476, 8220004, 2000006, 1, 1, 0, 999999), +(8477, 8220004, 2020013, 1, 1, 0, 999999), +(8478, 8220004, 2290018, 1, 1, 0, 5000), +(8479, 8220004, 2290019, 1, 1, 0, 5000), +(8480, 8220004, 2290025, 1, 1, 0, 5000), +(8481, 8220004, 2290059, 1, 1, 0, 5000), +(8482, 8220004, 2290077, 1, 1, 0, 5000), +(8483, 8220004, 2290106, 1, 1, 0, 5000), +(8484, 8220004, 1082141, 1, 1, 0, 10000), +(8485, 8220004, 1050105, 1, 1, 0, 7000), +(8486, 8220004, 1002405, 1, 1, 0, 15000), +(8487, 8220004, 1072318, 1, 1, 0, 8000), +(8488, 8220004, 1051093, 1, 1, 0, 7000), +(8489, 8220004, 1332052, 1, 1, 0, 5000), +(8490, 8220004, 1322045, 1, 1, 0, 7000), +(8491, 8220004, 1372010, 1, 1, 0, 7000), +(8492, 8220004, 2049000, 1, 1, 0, 1500), +(8493, 8220004, 2330004, 1, 1, 0, 5000), +(8494, 8220004, 2040326, 1, 1, 0, 3000), +(8495, 8220004, 2040924, 1, 1, 0, 3000), +(8496, 8220004, 2040025, 1, 1, 0, 3000), +(8497, 8220004, 2040532, 1, 1, 0, 3000), +(8498, 8220004, 2040029, 1, 1, 0, 3000), +(8499, 8220005, 4000461, 1, 1, 0, 600000), +(8500, 8220005, 4006001, 1, 1, 0, 100000), +(8501, 8220005, 4006000, 1, 1, 0, 100000), +(8502, 8220005, 2000005, 1, 1, 0, 999999), +(8503, 8220005, 2000006, 1, 1, 0, 999999), +(8504, 8220005, 2020013, 1, 1, 0, 999999), +(8505, 8220005, 2290003, 1, 1, 0, 5000), +(8506, 8220005, 2290037, 1, 1, 0, 5000), +(8507, 8220005, 2290055, 1, 1, 0, 5000), +(8508, 8220005, 2290080, 1, 1, 0, 5000), +(8509, 8220005, 2290099, 1, 1, 0, 5000), +(8510, 8220005, 1072222, 1, 1, 0, 8000), +(8511, 8220005, 1082154, 1, 1, 0, 10000), +(8512, 8220005, 1050108, 1, 1, 0, 7000), +(8513, 8220005, 1002382, 1, 1, 0, 15000), +(8514, 8220005, 1051104, 1, 1, 0, 7000), +(8515, 8220005, 1482012, 1, 1, 0, 5000), +(8516, 8220005, 1402035, 1, 1, 0, 7000), +(8517, 8220005, 1452021, 1, 1, 0, 5000), +(8518, 8220005, 2049000, 1, 1, 0, 1500), +(8519, 8220005, 2040317, 1, 1, 0, 3000), +(8520, 8220005, 2040321, 1, 1, 0, 3000), +(8521, 8220005, 2040931, 1, 1, 0, 3000), +(8522, 8220005, 2040927, 1, 1, 0, 3000), +(8523, 8220006, 4000462, 1, 1, 0, 600000), +(8524, 8220006, 4006001, 1, 1, 0, 100000), +(8525, 8220006, 4006000, 1, 1, 0, 100000), +(8526, 8220006, 2000005, 1, 1, 0, 999999), +(8527, 8220006, 2000006, 1, 1, 0, 999999), +(8528, 8220006, 2020013, 1, 1, 0, 999999), +(8529, 8220006, 2290013, 1, 1, 0, 5000), +(8530, 8220006, 2290043, 1, 1, 0, 5000), +(8531, 8220006, 2290061, 1, 1, 0, 5000), +(8532, 8220006, 2290120, 1, 1, 0, 5000), +(8533, 8220006, 2290090, 1, 1, 0, 5000), +(8534, 8220006, 1072226, 1, 1, 0, 8000), +(8535, 8220006, 1082160, 1, 1, 0, 10000), +(8536, 8220006, 1050099, 1, 1, 0, 7000), +(8537, 8220006, 1002646, 1, 1, 0, 15000), +(8538, 8220006, 1051107, 1, 1, 0, 7000), +(8539, 8220006, 1432030, 1, 1, 0, 5000), +(8540, 8220006, 1462017, 1, 1, 0, 5000), +(8541, 8220006, 1472053, 1, 1, 0, 5000), +(8542, 8220006, 1492012, 1, 1, 0, 5000), +(8543, 8220006, 2049100, 1, 1, 0, 3000), +(8544, 8220006, 2043701, 1, 1, 0, 3000), +(8545, 8220006, 2044701, 1, 1, 0, 3000), +(8546, 8220006, 2044301, 1, 1, 0, 3000), +(8547, 8220006, 2044501, 1, 1, 0, 3000), +(8548, 8220006, 2044801, 1, 1, 0, 3000), +(8549, 8220006, 2044901, 1, 1, 0, 3000), +(8550, 8220007, 2000005, 1, 1, 0, 999999), +(8551, 8220007, 2000004, 1, 1, 0, 999999), +(8552, 8220007, 1032030, 1, 1, 0, 10000), +(8553, 8220007, 1382007, 1, 1, 0, 7000), +(8554, 8220007, 1322019, 1, 1, 0, 7000), +(8555, 8220007, 1312010, 1, 1, 0, 7000), +(8556, 8220007, 1412008, 1, 1, 0, 7000), +(8557, 8220007, 1432007, 1, 1, 0, 5000), +(8558, 8220007, 1302012, 1, 1, 0, 7000), +(8559, 8220007, 1332018, 1, 1, 0, 5000), +(8560, 8220007, 1332019, 1, 1, 0, 5000), +(8561, 8220007, 2043001, 1, 1, 0, 3000), +(8562, 8220007, 2043101, 1, 1, 0, 3000), +(8563, 8220007, 2043301, 1, 1, 0, 3000), +(8564, 8220007, 2043701, 1, 1, 0, 3000), +(8565, 8220007, 2044001, 1, 1, 0, 3000), +(8566, 8220007, 2044201, 1, 1, 0, 3000), +(8567, 8220007, 2044301, 1, 1, 0, 3000), +(8568, 8220007, 2044501, 1, 1, 0, 3000), +(8569, 8220007, 2044601, 1, 1, 0, 3000), +(8570, 8220007, 2044701, 1, 1, 0, 3000), +(8571, 8220009, 2000005, 1, 1, 0, 999999), +(8572, 8220009, 1452009, 1, 1, 0, 5000), +(8573, 8220009, 1382007, 1, 1, 0, 7000), +(8574, 8220009, 1462009, 1, 1, 0, 5000), +(8575, 8220009, 1322019, 1, 1, 0, 7000), +(8576, 8220009, 1312010, 1, 1, 0, 7000), +(8577, 8220009, 1412008, 1, 1, 0, 7000), +(8578, 8220009, 1422010, 1, 1, 0, 7000), +(8579, 8220009, 1472026, 1, 1, 0, 5000), +(8580, 8220009, 1432007, 1, 1, 0, 5000), +(8581, 8220009, 1442008, 1, 1, 0, 7000), +(8582, 8220009, 1302012, 1, 1, 0, 7000), +(8583, 8220009, 1402012, 1, 1, 0, 7000), +(8584, 8220009, 1332018, 1, 1, 0, 5000), +(8585, 8220009, 1332019, 1, 1, 0, 5000), +(8586, 8220009, 2043001, 1, 1, 0, 3000), +(8587, 8220009, 2043101, 1, 1, 0, 3000), +(8588, 8220009, 2043201, 1, 1, 0, 3000), +(8589, 8220009, 2043301, 1, 1, 0, 3000), +(8590, 8220009, 2043701, 1, 1, 0, 3000), +(8591, 8220009, 2043801, 1, 1, 0, 3000), +(8592, 8220009, 2044001, 1, 1, 0, 3000), +(8593, 8220009, 2044101, 1, 1, 0, 3000), +(8594, 8220009, 2044201, 1, 1, 0, 3000), +(8595, 8220009, 2044301, 1, 1, 0, 3000), +(8596, 8220009, 2044401, 1, 1, 0, 3000), +(8597, 8220009, 2044501, 1, 1, 0, 3000), +(8598, 8220009, 2044601, 1, 1, 0, 3000), +(8599, 8220009, 2044701, 1, 1, 0, 3000), +(8600, 8220009, 2000004, 1, 1, 0, 999999), +(8601, 8220009, 1092017, 1, 1, 0, 7000), +(8602, 8500002, 2020013, 1, 1, 0, 999999), +(8603, 8500002, 2020015, 1, 1, 0, 999999), +(8604, 8500002, 2000005, 1, 1, 0, 999999), +(8605, 8500002, 1312015, 1, 1, 0, 7000), +(8606, 8500002, 1332026, 1, 1, 0, 5000), +(8607, 8500002, 1332027, 1, 1, 0, 5000), +(8608, 8500002, 1462018, 1, 1, 0, 5000), +(8609, 8500002, 1372009, 1, 1, 0, 7000), +(8610, 8500002, 2041013, 1, 1, 0, 3000), +(8611, 8500002, 2041016, 1, 1, 0, 3000), +(8612, 8500002, 2041019, 1, 1, 0, 3000), +(8613, 8500002, 2041022, 1, 1, 0, 3000), +(8614, 8500002, 2290006, 1, 1, 0, 5000), +(8615, 8500002, 2290011, 1, 1, 0, 5000), +(8616, 8500002, 2290013, 1, 1, 0, 5000), +(8617, 8500002, 2290028, 1, 1, 0, 5000), +(8618, 8500002, 2290037, 1, 1, 0, 5000), +(8619, 8500002, 2290043, 1, 1, 0, 5000), +(8620, 8500002, 2290051, 1, 1, 0, 5000), +(8621, 8500002, 2290056, 1, 1, 0, 5000), +(8622, 8500002, 2290061, 1, 1, 0, 5000), +(8623, 8500002, 2290066, 1, 1, 0, 5000), +(8624, 8500002, 2290071, 1, 1, 0, 5000), +(8625, 8500002, 2290078, 1, 1, 0, 5000), +(8626, 8500002, 2290089, 1, 1, 0, 5000), +(8627, 8500002, 2290091, 1, 1, 0, 5000), +(8628, 8500002, 2000004, 1, 1, 0, 999999), +(8629, 8500002, 1072213, 1, 1, 0, 8000), +(8630, 8500002, 1072224, 1, 1, 0, 8000), +(8631, 8500002, 1072227, 1, 1, 0, 8000), +(8632, 8500002, 1072220, 1, 1, 0, 8000), +(8633, 8500002, 1040120, 1, 1, 0, 8000), +(8634, 8500002, 1060109, 1, 1, 0, 8000), +(8635, 8500002, 1041122, 1, 1, 0, 8000), +(8636, 8500002, 1061121, 1, 1, 0, 8000), +(8637, 8500002, 1050106, 1, 1, 0, 7000), +(8638, 8500002, 1051105, 1, 1, 0, 7000), +(8639, 8500002, 1050102, 1, 1, 0, 7000), +(8640, 8500002, 1051101, 1, 1, 0, 7000), +(8641, 8500002, 1050098, 1, 1, 0, 7000), +(8642, 8500002, 1051092, 1, 1, 0, 7000), +(8643, 8500002, 1002377, 1, 1, 0, 15000), +(8644, 8500002, 1082158, 1, 1, 0, 10000), +(8645, 8500002, 1072221, 1, 1, 0, 8000), +(8646, 8500002, 1482011, 1, 1, 0, 5000), +(8647, 8500002, 1002646, 1, 1, 0, 15000), +(8648, 8500002, 1052131, 1, 1, 0, 7000), +(8649, 8500002, 1082213, 1, 1, 0, 10000), +(8650, 8500002, 1072318, 1, 1, 0, 8000), +(8651, 8500002, 2290104, 1, 1, 0, 5000), +(8652, 8500002, 2290107, 1, 1, 0, 5000), +(8653, 8500002, 2290121, 1, 1, 0, 5000), +(8654, 8500002, 2290123, 1, 1, 0, 5000), +(8655, 8500002, 2040318, 1, 1, 0, 3000), +(8656, 8500002, 2040321, 1, 1, 0, 3000), +(8657, 8500002, 2040419, 1, 1, 0, 3000), +(8658, 8500002, 2040421, 1, 1, 0, 3000), +(8659, 8500002, 2044809, 1, 1, 0, 3000), +(8660, 8500002, 2049100, 1, 1, 0, 3000), +(8661, 8510000, 2020013, 1, 1, 0, 999999), +(8662, 8510000, 2020015, 1, 1, 0, 999999), +(8663, 8510000, 2000005, 1, 1, 0, 999999), +(8664, 8510000, 2000004, 1, 1, 0, 999999), +(8665, 8510000, 1302023, 1, 1, 0, 7000), +(8666, 8510000, 1322029, 1, 1, 0, 7000), +(8667, 8510000, 1402005, 1, 1, 0, 7000), +(8668, 8510000, 1412010, 1, 1, 0, 7000), +(8669, 8510000, 1040121, 1, 1, 0, 8000), +(8670, 8510000, 1060110, 1, 1, 0, 8000), +(8671, 8510000, 1050103, 1, 1, 0, 7000), +(8672, 8510000, 1051102, 1, 1, 0, 7000), +(8673, 8510000, 1050097, 1, 1, 0, 7000), +(8674, 8510000, 1051091, 1, 1, 0, 7000), +(8675, 8510000, 1041123, 1, 1, 0, 8000), +(8676, 8510000, 1061122, 1, 1, 0, 8000), +(8677, 8510000, 1050107, 1, 1, 0, 7000), +(8678, 8510000, 1051106, 1, 1, 0, 7000), +(8679, 8510000, 2040513, 1, 1, 0, 3000), +(8680, 8510000, 2040516, 1, 1, 0, 3000), +(8681, 8510000, 2040501, 1, 1, 0, 3000), +(8682, 8510000, 2040504, 1, 1, 0, 3000), +(8683, 8510000, 2040401, 1, 1, 0, 3000), +(8684, 8510000, 4001085, 1, 1, 0, 600000), +(8685, 8510000, 4000175, 1, 1, 0, 600000), +(8686, 8510000, 1492011, 1, 1, 0, 5000), +(8687, 8510000, 1052131, 1, 1, 0, 7000), +(8688, 8510000, 2290000, 1, 1, 0, 5000), +(8689, 8510000, 2290001, 1, 1, 0, 5000), +(8690, 8510000, 2290004, 1, 1, 0, 5000), +(8691, 8510000, 2290005, 1, 1, 0, 5000), +(8692, 8510000, 2290024, 1, 1, 0, 5000), +(8693, 8510000, 2290025, 1, 1, 0, 5000), +(8694, 8510000, 2290026, 1, 1, 0, 5000), +(8695, 8510000, 2290027, 1, 1, 0, 5000), +(8696, 8510000, 2290052, 1, 1, 0, 5000), +(8697, 8510000, 2290053, 1, 1, 0, 5000), +(8698, 8510000, 2290054, 1, 1, 0, 5000), +(8699, 8510000, 2290055, 1, 1, 0, 5000), +(8700, 8510000, 2290076, 1, 1, 0, 5000), +(8701, 8510000, 2290077, 1, 1, 0, 5000), +(8702, 8510000, 2290082, 1, 1, 0, 5000), +(8703, 8510000, 2290083, 1, 1, 0, 5000), +(8704, 8510000, 2290097, 1, 1, 0, 5000), +(8705, 8510000, 2290099, 1, 1, 0, 5000), +(8706, 8510000, 2290106, 1, 1, 0, 5000), +(8707, 8510000, 2290108, 1, 1, 0, 5000), +(8708, 8510000, 2290112, 1, 1, 0, 5000), +(8709, 8510000, 2290114, 1, 1, 0, 5000), +(8710, 8510000, 2290122, 1, 1, 0, 5000), +(8711, 8510000, 2290124, 1, 1, 0, 5000), +(8712, 8800002, 2020013, 1, 1, 0, 999999), +(8713, 8800002, 2020015, 1, 1, 0, 999999), +(8714, 8800002, 2000005, 1, 1, 0, 999999), +(8715, 8800002, 1002357, 1, 1, 0, 999999), +(8716, 8800002, 1002357, 1, 1, 0, 999999), +(8717, 8800002, 1002357, 1, 1, 0, 300000), +(8718, 8800002, 1002357, 1, 1, 0, 300000), +(8719, 8800002, 1002357, 1, 1, 0, 300000), +(8720, 8800002, 2280007, 1, 1, 0, 1350000), +(8721, 8800002, 2280008, 1, 1, 0, 1350000), +(8722, 8800002, 2280009, 1, 1, 0, 1350000), +(8723, 8800002, 2280010, 1, 1, 0, 1350000), +(8724, 8800002, 2290007, 1, 1, 0, 22500), +(8725, 8800002, 2290016, 1, 1, 0, 22500), +(8726, 8800002, 2290020, 1, 1, 0, 22500), +(8727, 8800002, 2290022, 1, 1, 0, 22500), +(8728, 8800002, 2290029, 1, 1, 0, 22500), +(8729, 8800002, 2290040, 1, 1, 0, 22500), +(8730, 8800002, 2290046, 1, 1, 0, 22500), +(8731, 8800002, 2290048, 1, 1, 0, 22500), +(8732, 8800002, 2290057, 1, 1, 0, 22500), +(8733, 8800002, 2290064, 1, 1, 0, 22500), +(8734, 8800002, 2290067, 1, 1, 0, 22500), +(8735, 8800002, 2290074, 1, 1, 0, 22500), +(8736, 8800002, 2290079, 1, 1, 0, 22500), +(8737, 8800002, 2290084, 1, 1, 0, 22500), +(8738, 8800002, 2290094, 1, 1, 0, 22500), +(8739, 8800002, 1302056, 1, 1, 0, 31500), +(8740, 8800002, 1312030, 1, 1, 0, 31500), +(8741, 8800002, 1322045, 1, 1, 0, 31500), +(8742, 8800002, 1332051, 1, 1, 0, 22500), +(8743, 8800002, 1332052, 1, 1, 0, 22500), +(8744, 8800002, 1372010, 1, 1, 0, 31500), +(8745, 8800002, 1382035, 1, 1, 0, 31500), +(8746, 8800002, 1402035, 1, 1, 0, 31500), +(8747, 8800002, 1412021, 1, 1, 0, 31500), +(8748, 8800002, 1422027, 1, 1, 0, 31500), +(8749, 8800002, 1432030, 1, 1, 0, 22500), +(8750, 8800002, 1442044, 1, 1, 0, 31500), +(8751, 8800002, 1452019, 1, 1, 0, 22500), +(8752, 8800002, 1452020, 1, 1, 0, 22500), +(8753, 8800002, 1462015, 1, 1, 0, 22500), +(8754, 8800002, 1462016, 1, 1, 0, 22500), +(8755, 8800002, 1472053, 1, 1, 0, 22500), +(8756, 8800002, 2000004, 1, 1, 0, 999999), +(8757, 8800002, 1482012, 1, 1, 0, 22500), +(8758, 8800002, 1492012, 1, 1, 0, 22500), +(8759, 8800002, 2290110, 1, 1, 0, 22500), +(8760, 8800002, 2290115, 1, 1, 0, 22500), +(8761, 8800002, 2040026, 1, 1, 0, 13500), +(8762, 8800002, 2040031, 1, 1, 0, 13500), +(8763, 8800002, 2040321, 1, 1, 0, 13500), +(8764, 8800002, 2040328, 1, 1, 0, 13500), +(8765, 8800002, 2040512, 1, 1, 0, 13500), +(8766, 8800002, 2049000, 1, 1, 0, 6750), +(8767, 8800002, 2049100, 1, 1, 0, 13500), +(8768, 8810018, 2020013, 1, 1, 0, 999999), +(8769, 8810018, 2020015, 1, 1, 0, 999999), +(8770, 8810018, 2000005, 1, 1, 0, 999999), +(8771, 8810018, 2000006, 1, 1, 0, 999999), +(8772, 8810018, 2000004, 1, 1, 0, 999999), +(8773, 8810018, 1302056, 1, 1, 0, 1512000), +(8774, 8810018, 1312030, 1, 1, 0, 1512000), +(8775, 8810018, 1322045, 1, 1, 0, 1512000), +(8776, 8810018, 1332051, 1, 1, 0, 1080000), +(8777, 8810018, 1332052, 1, 1, 0, 1080000), +(8778, 8810018, 1372010, 1, 1, 0, 1512000), +(8779, 8810018, 1382035, 1, 1, 0, 1512000), +(8780, 8810018, 1402035, 1, 1, 0, 1512000), +(8781, 8810018, 1412021, 1, 1, 0, 1512000), +(8782, 8810018, 1422027, 1, 1, 0, 1512000), +(8783, 8810018, 1432030, 1, 1, 0, 1080000), +(8784, 8810018, 1442044, 1, 1, 0, 1512000), +(8785, 8810018, 1452019, 1, 1, 0, 1080000), +(8786, 8810018, 1452020, 1, 1, 0, 1080000), +(8787, 8810018, 1452021, 1, 1, 0, 1080000), +(8788, 8810018, 1462015, 1, 1, 0, 1080000), +(8789, 8810018, 1462016, 1, 1, 0, 1080000), +(8790, 8810018, 1462017, 1, 1, 0, 1080000), +(8791, 8810018, 1472053, 1, 1, 0, 1080000), +(8792, 8810018, 1372032, 1, 1, 0, 1512000), +(8793, 8810018, 1302059, 1, 1, 0, 1512000), +(8794, 8810018, 1312031, 1, 1, 0, 1512000), +(8795, 8810018, 1322052, 1, 1, 0, 1512000), +(8796, 8810018, 1332049, 1, 1, 0, 1080000), +(8797, 8810018, 1332050, 1, 1, 0, 1080000), +(8798, 8810018, 1382036, 1, 1, 0, 1512000), +(8799, 8810018, 1402036, 1, 1, 0, 1512000), +(8800, 8810018, 1412026, 1, 1, 0, 1512000), +(8801, 8810018, 1422028, 1, 1, 0, 1512000), +(8802, 8810018, 1432038, 1, 1, 0, 1080000), +(8803, 8810018, 1442045, 1, 1, 0, 1512000), +(8804, 8810018, 1452044, 1, 1, 0, 1080000), +(8805, 8810018, 1462039, 1, 1, 0, 1080000), +(8806, 8810018, 1472051, 1, 1, 0, 1080000), +(8807, 8810018, 1472052, 1, 1, 0, 1080000), +(8808, 8810018, 1122000, 1, 1, 0, 999999), +(8809, 8810018, 1122000, 1, 1, 0, 999999), +(8810, 8810018, 1122000, 1, 1, 0, 300000), +(8811, 8810018, 1122000, 1, 1, 0, 300000), +(8812, 8810018, 2290017, 1, 1, 0, 1080000), +(8813, 8810018, 2290021, 1, 1, 0, 1080000), +(8814, 8810018, 2290023, 1, 1, 0, 1080000), +(8815, 8810018, 2290041, 1, 1, 0, 1080000), +(8816, 8810018, 2290047, 1, 1, 0, 1080000), +(8817, 8810018, 2290049, 1, 1, 0, 1080000), +(8818, 8810018, 2290065, 1, 1, 0, 1080000), +(8819, 8810018, 2290075, 1, 1, 0, 1080000), +(8820, 8810018, 2290085, 1, 1, 0, 1080000), +(8821, 8810018, 2290095, 1, 1, 0, 1080000), +(8822, 8810018, 2290096, 1, 1, 0, 800000), +(8823, 8810018, 1482012, 1, 1, 0, 1080000), +(8824, 8810018, 1492012, 1, 1, 0, 1080000), +(8825, 8810018, 1482013, 1, 1, 0, 1080000), +(8826, 8810018, 1492013, 1, 1, 0, 1080000), +(8827, 8810018, 2290111, 1, 1, 0, 1080000), +(8828, 8810018, 2290116, 1, 1, 0, 1080000), +(8829, 8810018, 2040317, 1, 1, 0, 648000), +(8830, 8810018, 2040418, 1, 1, 0, 648000), +(8831, 8810018, 2040421, 1, 1, 0, 648000), +(8832, 8810018, 2040512, 1, 1, 0, 648000), +(8833, 8810018, 2040515, 1, 1, 0, 648000), +(8834, 8810018, 2040625, 1, 1, 0, 648000), +(8835, 8810018, 2049000, 1, 1, 0, 324000), +(8836, 8810018, 2049100, 1, 1, 0, 648000), +(8837, 9300003, 1072369, 1, 1, 0, 300000), +(8838, 9300012, 4001023, 1, 1, 0, 999999), +(8839, 9300028, 4001024, 1, 1, 0, 999999), +(8840, 9300039, 4001054, 1, 1, 0, 600000), +(8841, 9300119, 2000002, 1, 1, 0, 200000), +(8842, 9300119, 2000004, 1, 1, 0, 999999), +(8843, 9300119, 2000006, 1, 1, 0, 999999), +(8844, 9300119, 2020013, 1, 1, 0, 999999), +(8845, 9300119, 2020014, 1, 1, 0, 200000), +(8846, 9300119, 2020015, 1, 1, 0, 999999), +(8847, 9300119, 2041010, 1, 1, 0, 3000), +(8848, 9300119, 2040502, 1, 1, 0, 3000), +(8849, 9300119, 2044201, 1, 1, 0, 3000), +(8850, 9300119, 2040001, 1, 1, 0, 3000), +(8851, 9300119, 2040601, 1, 1, 0, 3000), +(8852, 9300119, 2040505, 1, 1, 0, 3000), +(8853, 9300119, 2040002, 1, 1, 0, 3000), +(8854, 9300119, 2040401, 1, 1, 0, 3000), +(8855, 9300119, 2043201, 1, 1, 0, 3000), +(8856, 9300119, 2044101, 1, 1, 0, 3000), +(8857, 9300119, 2043101, 1, 1, 0, 3000), +(8858, 9300119, 2040801, 1, 1, 0, 3000), +(8859, 9300139, 2000002, 1, 1, 0, 200000), +(8860, 9300139, 2000004, 1, 1, 0, 999999), +(8861, 9300139, 2000006, 1, 1, 0, 999999), +(8862, 9300139, 2020013, 1, 1, 0, 999999), +(8863, 9300139, 2020014, 1, 1, 0, 200000), +(8864, 9300139, 2020015, 1, 1, 0, 999999), +(8865, 9300139, 2044601, 1, 1, 0, 3000), +(8866, 9300139, 2040707, 1, 1, 0, 3000), +(8867, 9300139, 2044401, 1, 1, 0, 3000), +(8868, 9300139, 2040504, 1, 1, 0, 3000), +(8869, 9300139, 2044501, 1, 1, 0, 3000), +(8870, 9300139, 2044001, 1, 1, 0, 3000), +(8871, 9300139, 2043701, 1, 1, 0, 3000), +(8872, 9300139, 2043001, 1, 1, 0, 3000), +(8873, 9300139, 2040004, 1, 1, 0, 3000), +(8874, 9300139, 2044701, 1, 1, 0, 3000), +(8875, 9300139, 2043801, 1, 1, 0, 3000), +(8876, 9300139, 2043301, 1, 1, 0, 3000), +(8877, 9300182, 4001164, 1, 1, 0, 600000), +(8878, 9300182, 2000002, 1, 1, 0, 200000), +(8879, 9300182, 2000006, 1, 1, 0, 999999), +(8880, 9300182, 2020013, 1, 1, 0, 999999), +(8881, 9300182, 2020014, 1, 1, 0, 200000), +(8882, 9300182, 2020015, 1, 1, 0, 999999), +(8883, 9300182, 2043001, 1, 1, 0, 3000), +(8884, 9300182, 2043101, 1, 1, 0, 3000), +(8885, 9300182, 2043201, 1, 1, 0, 3000), +(8886, 9300182, 2043301, 1, 1, 0, 3000), +(8887, 9300182, 2043701, 1, 1, 0, 3000), +(8888, 9300182, 2043801, 1, 1, 0, 3000), +(8889, 9300182, 2044001, 1, 1, 0, 3000), +(8890, 9300182, 2044101, 1, 1, 0, 3000), +(8891, 9300182, 2044201, 1, 1, 0, 3000), +(8892, 9300182, 2044301, 1, 1, 0, 3000), +(8893, 9300182, 2044401, 1, 1, 0, 3000), +(8894, 9300182, 2044501, 1, 1, 0, 3000), +(8895, 9300182, 2044601, 1, 1, 0, 3000), +(8896, 9300182, 2044701, 1, 1, 0, 3000), +(8897, 9300182, 2049000, 1, 1, 0, 1500), +(8898, 9300215, 2022413, 1, 1, 0, 200000), +(8899, 9300215, 2022414, 1, 1, 0, 200000), +(8900, 9300215, 2022415, 1, 1, 0, 200000), +(8901, 9300215, 2022416, 1, 1, 0, 200000), +(8902, 9300215, 2022417, 1, 1, 0, 200000), +(8903, 9300215, 2022418, 1, 1, 0, 200000), +(8904, 9300215, 2022419, 1, 1, 0, 200000), +(8905, 9300215, 2022420, 1, 1, 0, 200000), +(8906, 9300215, 2022421, 1, 1, 0, 200000), +(8907, 9300274, 4000001, 1, 1, 0, 600000), +(8908, 9300274, 2000000, 1, 1, 0, 20000), +(8909, 9300274, 2040705, 1, 1, 0, 300), +(8910, 9300274, 1072004, 1, 1, 0, 800), +(8911, 9300274, 1002043, 1, 1, 0, 1500), +(8912, 9300274, 1432000, 1, 1, 0, 500), +(8913, 9300274, 1312000, 1, 1, 0, 700), +(8914, 9300274, 2060000, 1, 1, 0, 30000), +(8915, 9300274, 4010000, 1, 1, 0, 9000), +(8916, 9300274, 4020007, 1, 1, 0, 9000), +(8917, 9300274, 2061000, 1, 1, 0, 30000), +(8918, 9300274, 1082012, 1, 1, 0, 1000), +(8919, 9300274, 1072015, 1, 1, 0, 800), +(8920, 9300274, 1072031, 1, 1, 0, 800), +(8921, 9300274, 4030001, 1, 1, 0, 300), +(8922, 9300274, 1052095, 1, 1, 0, 700), +(8923, 9300274, 2330000, 1, 1, 0, 500), +(8924, 9500317, 4001141, 1, 1, 0, 600000), +(8925, 9500317, 2022279, 1, 1, 0, 200000), +(8926, 8830000, 1302112, 1, 1, 0, 7000), +(8927, 8830000, 1302113, 1, 1, 0, 7000), +(8928, 8830000, 1312042, 1, 1, 0, 7000), +(8929, 8830000, 1312043, 1, 1, 0, 7000), +(8930, 8830000, 1322068, 1, 1, 0, 7000), +(8931, 8830000, 1322069, 1, 1, 0, 7000), +(8932, 8830000, 1332084, 1, 1, 0, 5000), +(8933, 8830000, 1332085, 1, 1, 0, 5000), +(8934, 8830000, 1332086, 1, 1, 0, 5000), +(8935, 8830000, 1332087, 1, 1, 0, 5000), +(8936, 8830000, 1372050, 1, 1, 0, 7000), +(8937, 8830000, 1382066, 1, 1, 0, 7000), +(8938, 8830000, 1382067, 1, 1, 0, 7000), +(8939, 8830000, 1402056, 1, 1, 0, 7000), +(8940, 8830000, 1402057, 1, 1, 0, 7000), +(8941, 8830000, 1402058, 1, 1, 0, 7000), +(8942, 8830000, 1402059, 1, 1, 0, 7000), +(8943, 8830000, 1412038, 1, 1, 0, 7000), +(8944, 8830000, 1412039, 1, 1, 0, 7000), +(8945, 8830000, 1422042, 1, 1, 0, 7000), +(8946, 8830000, 1422043, 1, 1, 0, 7000), +(8947, 8830000, 1432054, 1, 1, 0, 5000), +(8948, 8830000, 1432055, 1, 1, 0, 5000), +(8949, 8830000, 1442074, 1, 1, 0, 7000), +(8950, 8830000, 1442075, 1, 1, 0, 7000), +(8951, 8830000, 1452066, 1, 1, 0, 5000), +(8952, 8830000, 1452067, 1, 1, 0, 5000), +(8953, 8830000, 1452068, 1, 1, 0, 5000), +(8954, 8830000, 1452069, 1, 1, 0, 5000), +(8955, 8830000, 1452070, 1, 1, 0, 5000), +(8956, 8830000, 1462059, 1, 1, 0, 5000), +(8957, 8830000, 1462060, 1, 1, 0, 5000), +(8958, 8830000, 1462061, 1, 1, 0, 5000), +(8959, 8830000, 1462062, 1, 1, 0, 5000), +(8960, 8830000, 1462063, 1, 1, 0, 5000), +(8961, 8830000, 1472083, 1, 1, 0, 5000), +(8962, 8830000, 1472084, 1, 1, 0, 5000), +(8963, 8830000, 1482031, 1, 1, 0, 5000), +(8964, 8830000, 1482032, 1, 1, 0, 5000), +(8965, 8830000, 1492035, 1, 1, 0, 5000), +(8966, 8830000, 1492036, 1, 1, 0, 5000), +(8967, 8830000, 2000004, 1, 1, 0, 999999), +(8968, 8830000, 2000005, 1, 1, 0, 999999), +(8969, 8830000, 2000006, 1, 1, 0, 999999), +(8970, 8830000, 2030000, 1, 1, 0, 200000), +(8971, 8830000, 2050004, 1, 1, 0, 500000), +(8972, 8830000, 2020001, 1, 1, 0, 200000), +(8973, 8830000, 2020000, 1, 1, 0, 200000), +(8974, 8830000, 2000016, 1, 1, 0, 200000), +(8975, 8830000, 2020005, 1, 1, 0, 200000), +(8976, 8830000, 2020003, 1, 1, 0, 200000), +(8977, 8830000, 2020009, 1, 1, 0, 200000), +(8978, 8830000, 2020006, 1, 1, 0, 200000), +(8979, 8830000, 2020007, 1, 1, 0, 200000), +(8980, 8830000, 2022000, 1, 1, 0, 200000), +(8981, 8830000, 2020010, 1, 1, 0, 200000), +(8982, 8830000, 2001000, 1, 1, 0, 200000), +(8983, 8830000, 2001002, 1, 1, 0, 200000), +(8984, 8830000, 2020012, 1, 1, 0, 200000), +(8985, 8830000, 2020013, 1, 1, 0, 999999), +(8986, 8830000, 2020014, 1, 1, 0, 200000), +(8987, 8830000, 2020015, 1, 1, 0, 999999), +(8988, 8830000, 2049100, 1, 1, 0, 3000), +(8989, 8830000, 2049000, 1, 1, 0, 1500); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(8990, 8830000, 2040739, 1, 1, 0, 3000), +(8991, 8830000, 1072376, 1, 1, 0, 8000), +(8992, 8830000, 4001261, 1, 1, 0, 600000), +(8993, 8830000, 2330005, 1, 1, 0, 5000), +(8994, 8830000, 1382068, 1, 1, 0, 7000), +(8995, 8830000, 1402062, 1, 1, 0, 7000), +(8996, 8830000, 1472086, 1, 1, 0, 5000), +(8997, 8830000, 1442078, 1, 1, 0, 7000), +(8998, 8830000, 1452071, 1, 1, 0, 5000), +(8999, 8830000, 1492037, 1, 1, 0, 5000), +(9000, 100134, 4000497, 1, 1, 0, 600000), +(9001, 100134, 2000000, 1, 1, 0, 20000), +(9002, 100134, 2010009, 1, 1, 0, 20000), +(9003, 100134, 4010002, 1, 1, 0, 9000), +(9004, 100134, 4020002, 1, 1, 0, 9000), +(9005, 100134, 2040500, 1, 1, 0, 300), +(9006, 100134, 2044400, 1, 1, 0, 300), +(9007, 100134, 1002042, 1, 1, 0, 1500), +(9008, 100134, 1002051, 1, 1, 0, 1500), +(9009, 100134, 1032003, 1, 1, 0, 1000), +(9010, 100134, 1040009, 1, 1, 0, 800), +(9011, 100134, 1060009, 1, 1, 0, 800), +(9012, 100134, 1051000, 1, 1, 0, 700), +(9013, 100134, 1072050, 1, 1, 0, 800), +(9014, 100133, 4000496, 1, 1, 0, 600000), +(9015, 100133, 2000000, 1, 1, 0, 20000), +(9016, 100133, 2010009, 1, 1, 0, 20000), +(9017, 100133, 4010001, 1, 1, 0, 9000), +(9018, 100133, 4020003, 1, 1, 0, 9000), +(9019, 100133, 2048000, 1, 1, 0, 300), +(9020, 100133, 2041004, 1, 1, 0, 300), +(9021, 100133, 1002041, 1, 1, 0, 1500), +(9022, 100133, 1002007, 1, 1, 0, 1500), +(9023, 100133, 1032001, 1, 1, 0, 1000), +(9024, 100133, 1040038, 1, 1, 0, 800), +(9025, 100133, 1060028, 1, 1, 0, 800), +(9026, 100133, 1041064, 1, 1, 0, 800), +(9027, 100133, 1061023, 1, 1, 0, 800), +(9028, 100133, 1072009, 1, 1, 0, 800), +(9029, 100133, 1082000, 1, 1, 0, 1000), +(9030, 100133, 1442006, 1, 1, 0, 700), +(9031, 100132, 4000495, 1, 1, 0, 600000), +(9032, 100132, 2000000, 1, 1, 0, 20000), +(9033, 100132, 2010009, 1, 1, 0, 20000), +(9034, 100132, 4010000, 1, 1, 0, 9000), +(9035, 100132, 4020007, 1, 1, 0, 9000), +(9036, 100132, 2040823, 1, 1, 0, 300), +(9037, 100132, 2041018, 1, 1, 0, 300), +(9038, 100132, 1002001, 1, 1, 0, 1500), +(9039, 100132, 1002003, 1, 1, 0, 1500), +(9040, 100132, 1040014, 1, 1, 0, 800), +(9041, 100132, 1040015, 1, 1, 0, 800), +(9042, 100132, 1060008, 1, 1, 0, 800), +(9043, 100132, 1041014, 1, 1, 0, 800), +(9044, 100132, 1061014, 1, 1, 0, 800), +(9045, 100132, 1072004, 1, 1, 0, 800), +(9046, 100132, 1082003, 1, 1, 0, 1000), +(9047, 100132, 1442000, 1, 1, 0, 700), +(9048, 100131, 4000494, 1, 1, 0, 600000), +(9049, 100131, 2000000, 1, 1, 0, 20000), +(9050, 100131, 2010009, 1, 1, 0, 20000), +(9051, 100131, 4010006, 1, 1, 0, 9000), +(9052, 100131, 4020006, 1, 1, 0, 9000), +(9053, 100131, 2040400, 1, 1, 0, 300), +(9054, 100131, 2040618, 1, 1, 0, 300), +(9055, 100131, 1002019, 1, 1, 0, 1500), +(9056, 100131, 1002002, 1, 1, 0, 1500), +(9057, 100131, 1040013, 1, 1, 0, 800), +(9058, 100131, 1041012, 1, 1, 0, 800), +(9059, 100131, 1060004, 1, 1, 0, 800), +(9060, 100131, 1072005, 1, 1, 0, 800), +(9061, 100130, 4000493, 1, 1, 0, 600000), +(9062, 100130, 2010000, 1, 1, 0, 20000), +(9063, 100130, 2010009, 1, 1, 0, 20000), +(9064, 100130, 4010005, 1, 1, 0, 9000), +(9065, 100130, 4020005, 1, 1, 0, 9000), +(9066, 100130, 2040003, 1, 1, 0, 300), +(9067, 100130, 1002008, 1, 1, 0, 1500), +(9068, 100130, 1040010, 1, 1, 0, 800), +(9069, 100130, 1041004, 1, 1, 0, 800), +(9070, 100130, 1060007, 1, 1, 0, 800), +(9071, 1110130, 4000012, 1, 1, 0, 600000), +(9072, 1110130, 2000000, 1, 1, 0, 20000), +(9073, 1110130, 2043102, 1, 1, 0, 300), +(9074, 1110130, 2000003, 1, 1, 0, 20000), +(9075, 1110130, 4020003, 1, 1, 0, 9000), +(9076, 1110130, 1322000, 1, 1, 0, 700), +(9077, 1110130, 2060000, 1, 1, 0, 30000), +(9078, 1110130, 1041044, 1, 1, 0, 800), +(9079, 1110130, 1061037, 1, 1, 0, 800), +(9080, 1110130, 4010004, 1, 1, 0, 9000), +(9081, 1110130, 1092008, 1, 1, 0, 700), +(9082, 1110130, 1041017, 1, 1, 0, 800), +(9083, 1110130, 1061012, 1, 1, 0, 800), +(9084, 1110130, 1462002, 1, 1, 0, 500), +(9085, 1110130, 2061000, 1, 1, 0, 30000), +(9086, 1110130, 1041063, 1, 1, 0, 800), +(9087, 1110130, 1061059, 1, 1, 0, 800), +(9088, 1110130, 1452003, 1, 1, 0, 500), +(9089, 1110130, 2048000, 1, 1, 0, 300), +(9090, 1110130, 1002033, 1, 1, 0, 1500), +(9091, 1110130, 1302007, 1, 1, 0, 700), +(9092, 1110130, 4020002, 1, 1, 0, 9000), +(9093, 1110130, 1032001, 1, 1, 0, 1000), +(9094, 1110130, 1002010, 1, 1, 0, 1500), +(9095, 1110130, 2000001, 1, 1, 0, 20000), +(9096, 1110130, 1002143, 1, 1, 0, 1500), +(9097, 1110130, 1432005, 1, 1, 0, 500), +(9098, 1110130, 1412012, 1, 1, 0, 700), +(9099, 1110130, 1072285, 1, 1, 0, 800), +(9100, 1110130, 1482001, 1, 1, 0, 500), +(9101, 1140130, 2000000, 1, 1, 0, 20000), +(9102, 1140130, 2000003, 1, 1, 0, 20000), +(9103, 1140130, 4000195, 1, 1, 0, 600000), +(9104, 1140130, 2060000, 1, 1, 0, 30000), +(9105, 1140130, 2061000, 1, 1, 0, 30000), +(9106, 1140130, 4010000, 1, 1, 0, 9000), +(9107, 1140130, 4020007, 1, 1, 0, 9000), +(9108, 1140130, 4010004, 1, 1, 0, 9000), +(9109, 1140130, 2040501, 1, 1, 0, 300), +(9110, 1140130, 2040801, 1, 1, 0, 300), +(9111, 1140130, 1041062, 1, 1, 0, 800), +(9112, 1140130, 1061058, 1, 1, 0, 800), +(9113, 1140130, 1050010, 1, 1, 0, 700), +(9114, 1140130, 2048001, 1, 1, 0, 300), +(9115, 1140130, 1041029, 1, 1, 0, 800), +(9116, 1140130, 1061027, 1, 1, 0, 800), +(9117, 1140130, 1072046, 1, 1, 0, 800), +(9118, 1140130, 1072066, 1, 1, 0, 800), +(9119, 1140130, 1082018, 1, 1, 0, 1000), +(9120, 1140130, 1002107, 1, 1, 0, 1500), +(9121, 1140130, 1002113, 1, 1, 0, 1500), +(9122, 1140130, 1050003, 1, 1, 0, 700), +(9123, 1140130, 1412012, 1, 1, 0, 700), +(9124, 1140130, 1082180, 1, 1, 0, 1000), +(9125, 1140130, 2044802, 1, 1, 0, 300), +(9126, 2230131, 4000008, 1, 1, 0, 600000), +(9127, 2230131, 2000001, 1, 1, 0, 20000), +(9128, 2230131, 2002000, 1, 1, 0, 20000), +(9129, 2230131, 2044302, 1, 1, 0, 300), +(9130, 2230131, 1032000, 1, 1, 0, 1000), +(9131, 2230131, 1032004, 1, 1, 0, 1000), +(9132, 2230131, 1452001, 1, 1, 0, 500), +(9133, 2230131, 1412002, 1, 1, 0, 700), +(9134, 2230131, 2060000, 1, 1, 0, 30000), +(9135, 2230131, 4010002, 1, 1, 0, 9000), +(9136, 2230131, 4020003, 1, 1, 0, 9000), +(9137, 2230131, 1002158, 1, 1, 0, 1500), +(9138, 2230131, 2000003, 1, 1, 0, 20000), +(9139, 2230131, 1040048, 1, 1, 0, 800), +(9140, 2230131, 2061000, 1, 1, 0, 30000), +(9141, 2230131, 1060038, 1, 1, 0, 800), +(9142, 2230131, 1372003, 1, 1, 0, 700), +(9143, 2230131, 1060018, 1, 1, 0, 800), +(9144, 2230131, 1040026, 1, 1, 0, 800), +(9145, 2230131, 1040009, 1, 1, 0, 800), +(9146, 2230131, 4010003, 1, 1, 0, 9000), +(9147, 2230131, 2000002, 1, 1, 0, 20000), +(9148, 2230131, 1050030, 1, 1, 0, 700), +(9149, 2230131, 1050031, 1, 1, 0, 700), +(9150, 2230131, 1432003, 1, 1, 0, 500), +(9151, 2230131, 1002035, 1, 1, 0, 1500), +(9152, 2230131, 1312007, 1, 1, 0, 700), +(9153, 2230131, 1040021, 1, 1, 0, 800), +(9154, 2230131, 1082183, 1, 1, 0, 1000), +(9155, 2230131, 1492003, 1, 1, 0, 500), +(9156, 2230131, 2049100, 1, 1, 0, 300), +(9157, 3300000, 2000003, 1, 1, 0, 20000), +(9158, 3300000, 2060000, 1, 1, 0, 30000), +(9159, 3300000, 2061000, 1, 1, 0, 30000), +(9160, 3300000, 2000002, 1, 1, 0, 20000), +(9161, 3300000, 4010005, 1, 1, 0, 9000), +(9162, 3300000, 4020000, 1, 1, 0, 9000), +(9163, 3300000, 2044701, 1, 1, 0, 300), +(9164, 3300000, 1332020, 1, 1, 0, 500), +(9165, 3300000, 1040000, 1, 1, 0, 800), +(9166, 3300000, 1060075, 1, 1, 0, 800), +(9167, 3300000, 1402010, 1, 1, 0, 700), +(9168, 3300000, 1032007, 1, 1, 0, 1000), +(9169, 3300000, 1072078, 1, 1, 0, 800), +(9170, 3300000, 1082046, 1, 1, 0, 1000), +(9171, 3300000, 1002156, 1, 1, 0, 1500), +(9172, 3300000, 1002622, 1, 1, 0, 1500), +(9173, 3300000, 4130005, 1, 1, 0, 6000), +(9174, 3300000, 4130009, 1, 1, 0, 6000), +(9175, 3300000, 4130021, 1, 1, 0, 6000), +(9176, 3300000, 4000499, 1, 1, 0, 600000), +(9177, 3300000, 2043216, 1, 1, 0, 300), +(9178, 3300000, 2043311, 1, 1, 0, 300), +(9179, 3300000, 2382092, 1, 1, 0, 20000), +(9180, 3300003, 4131008, 1, 1, 0, 6000), +(9181, 3300003, 2060000, 1, 1, 0, 30000), +(9182, 3300003, 2061000, 1, 1, 0, 30000), +(9183, 3300003, 4020000, 1, 1, 0, 9000), +(9184, 3300003, 4020001, 1, 1, 0, 9000), +(9185, 3300003, 2000002, 1, 1, 0, 20000), +(9186, 3300003, 2000003, 1, 1, 0, 20000), +(9187, 3300003, 1041042, 1, 1, 0, 800), +(9188, 3300003, 1061035, 1, 1, 0, 800), +(9189, 3300003, 1002023, 1, 1, 0, 1500), +(9190, 3300003, 1002163, 1, 1, 0, 1500), +(9191, 3300003, 1032010, 1, 1, 0, 1000), +(9192, 3300003, 1040062, 1, 1, 0, 800), +(9193, 3300003, 1060051, 1, 1, 0, 800), +(9194, 3300003, 1051015, 1, 1, 0, 700), +(9195, 3300003, 1302004, 1, 1, 0, 700), +(9196, 3300003, 1332014, 1, 1, 0, 500), +(9197, 3300003, 1072119, 1, 1, 0, 800), +(9198, 3300003, 1072110, 1, 1, 0, 800), +(9199, 3300003, 1082063, 1, 1, 0, 1000), +(9200, 3300003, 1002625, 1, 1, 0, 1500), +(9201, 3300003, 2330001, 1, 1, 0, 500), +(9202, 3300003, 4130000, 1, 1, 0, 6000), +(9203, 3300003, 4130014, 1, 1, 0, 6000), +(9204, 3300003, 4130017, 1, 1, 0, 6000), +(9205, 3300003, 4000502, 1, 1, 0, 600000), +(9206, 3300003, 2044416, 1, 1, 0, 300), +(9207, 3300003, 2043711, 1, 1, 0, 300), +(9208, 3300003, 2382095, 1, 1, 0, 20000), +(9209, 3300002, 4131003, 1, 1, 0, 6000), +(9210, 3300002, 2060000, 1, 1, 0, 30000), +(9211, 3300002, 2061000, 1, 1, 0, 30000), +(9212, 3300002, 4010001, 1, 1, 0, 9000), +(9213, 3300002, 4020000, 1, 1, 0, 9000), +(9214, 3300002, 4004001, 1, 1, 0, 10000), +(9215, 3300002, 2000002, 1, 1, 0, 20000), +(9216, 3300002, 2000003, 1, 1, 0, 20000), +(9217, 3300002, 2040701, 1, 1, 0, 300), +(9218, 3300002, 1462000, 1, 1, 0, 500), +(9219, 3300002, 1322014, 1, 1, 0, 700), +(9220, 3300002, 1050030, 1, 1, 0, 700), +(9221, 3300002, 1040058, 1, 1, 0, 800), +(9222, 3300002, 1060044, 1, 1, 0, 800), +(9223, 3300002, 1041058, 1, 1, 0, 800), +(9224, 3300002, 1061054, 1, 1, 0, 800), +(9225, 3300002, 1072101, 1, 1, 0, 800), +(9226, 3300002, 1002013, 1, 1, 0, 1500), +(9227, 3300002, 1052107, 1, 1, 0, 700), +(9228, 3300002, 4000501, 1, 1, 0, 600000), +(9229, 3300002, 2044216, 1, 1, 0, 300), +(9230, 3300002, 2044316, 1, 1, 0, 300), +(9231, 3300002, 2382094, 1, 1, 0, 20000), +(9232, 3300001, 2000003, 1, 1, 0, 20000), +(9233, 3300001, 2060000, 1, 1, 0, 30000), +(9234, 3300001, 2061000, 1, 1, 0, 30000), +(9235, 3300001, 2000002, 1, 1, 0, 20000), +(9236, 3300001, 4010005, 1, 1, 0, 9000), +(9237, 3300001, 4020000, 1, 1, 0, 9000), +(9238, 3300001, 2044701, 1, 1, 0, 300), +(9239, 3300001, 1332020, 1, 1, 0, 500), +(9240, 3300001, 1040000, 1, 1, 0, 800), +(9241, 3300001, 1060075, 1, 1, 0, 800), +(9242, 3300001, 1402010, 1, 1, 0, 700), +(9243, 3300001, 1032007, 1, 1, 0, 1000), +(9244, 3300001, 1072078, 1, 1, 0, 800), +(9245, 3300001, 1082046, 1, 1, 0, 1000), +(9246, 3300001, 1002156, 1, 1, 0, 1500), +(9247, 3300001, 4010007, 1, 1, 0, 9000), +(9248, 3300001, 1002622, 1, 1, 0, 1500), +(9249, 3300001, 4130005, 1, 1, 0, 6000), +(9250, 3300001, 4130009, 1, 1, 0, 6000), +(9251, 3300001, 4130021, 1, 1, 0, 6000), +(9252, 3300001, 4000500, 1, 1, 0, 600000), +(9253, 3300001, 4000507, 1, 1, 0, 600000), +(9254, 3300001, 2044024, 1, 1, 0, 300), +(9255, 3300001, 2044116, 1, 1, 0, 300), +(9256, 3300001, 2382093, 1, 1, 0, 20000), +(9257, 3300004, 4131008, 1, 1, 0, 6000), +(9258, 3300004, 2060000, 1, 1, 0, 30000), +(9259, 3300004, 2061000, 1, 1, 0, 30000), +(9260, 3300004, 4020000, 1, 1, 0, 9000), +(9261, 3300004, 4020001, 1, 1, 0, 9000), +(9262, 3300004, 2000002, 1, 1, 0, 20000), +(9263, 3300004, 2000003, 1, 1, 0, 20000), +(9264, 3300004, 1041042, 1, 1, 0, 800), +(9265, 3300004, 1061035, 1, 1, 0, 800), +(9266, 3300004, 1002023, 1, 1, 0, 1500), +(9267, 3300004, 1002163, 1, 1, 0, 1500), +(9268, 3300004, 1032010, 1, 1, 0, 1000), +(9269, 3300004, 1040062, 1, 1, 0, 800), +(9270, 3300004, 1060051, 1, 1, 0, 800), +(9271, 3300004, 1051015, 1, 1, 0, 700), +(9272, 3300004, 1302004, 1, 1, 0, 700), +(9273, 3300004, 1332014, 1, 1, 0, 500), +(9274, 3300004, 1072119, 1, 1, 0, 800), +(9275, 3300004, 1072110, 1, 1, 0, 800), +(9276, 3300004, 1082063, 1, 1, 0, 1000), +(9277, 3300004, 1002625, 1, 1, 0, 1500), +(9278, 3300004, 2330001, 1, 1, 0, 500), +(9279, 3300004, 4130000, 1, 1, 0, 6000), +(9280, 3300004, 4130014, 1, 1, 0, 6000), +(9281, 3300004, 4130017, 1, 1, 0, 6000), +(9282, 3300004, 4000503, 1, 1, 0, 600000), +(9283, 3300004, 2044611, 1, 1, 0, 300), +(9284, 3300004, 2044711, 1, 1, 0, 300), +(9285, 3300004, 2044816, 1, 1, 0, 300), +(9286, 3300004, 2382096, 1, 1, 0, 20000), +(9287, 3300005, 2022570, 1, 1, 0, 20000), +(9288, 3300005, 2022571, 1, 1, 0, 20000), +(9289, 3300005, 2022572, 1, 1, 0, 20000), +(9290, 3300005, 2022573, 1, 1, 0, 20000), +(9291, 3300005, 2022574, 1, 1, 0, 20000), +(9292, 3300005, 2000001, 1, 1, 0, 20000), +(9293, 3300005, 2000003, 1, 1, 0, 20000), +(9294, 3300005, 2040004, 1, 1, 0, 300), +(9295, 3300005, 2040501, 1, 1, 0, 300), +(9296, 3300005, 2040504, 1, 1, 0, 300), +(9297, 3300005, 2040801, 1, 1, 0, 300), +(9298, 3300005, 2041007, 1, 1, 0, 300), +(9299, 3300005, 2041004, 1, 1, 0, 300), +(9300, 3300005, 2043801, 1, 1, 0, 300), +(9301, 3300005, 2044001, 1, 1, 0, 300), +(9302, 3300005, 2044201, 1, 1, 0, 300), +(9303, 3300005, 2044601, 1, 1, 0, 300), +(9304, 3300005, 2044801, 1, 1, 0, 300), +(9305, 3300005, 1082073, 1, 1, 0, 1000), +(9306, 3300005, 1082025, 1, 1, 0, 1000), +(9307, 3300005, 1082064, 1, 1, 0, 1000), +(9308, 3300005, 1082074, 1, 1, 0, 1000), +(9309, 3300005, 1082195, 1, 1, 0, 1000), +(9310, 3300005, 1032013, 1, 1, 0, 1000), +(9311, 3300005, 4000504, 1, 1, 0, 600000), +(9312, 3300005, 2043216, 1, 1, 0, 300), +(9313, 3300005, 2043311, 1, 1, 0, 300), +(9314, 3300005, 2044024, 1, 1, 0, 300), +(9315, 3300005, 2044116, 1, 1, 0, 300), +(9316, 3300005, 2044216, 1, 1, 0, 300), +(9317, 3300005, 2044316, 1, 1, 0, 300), +(9318, 3300005, 2044416, 1, 1, 0, 300), +(9319, 3300005, 2043711, 1, 1, 0, 300), +(9320, 3300005, 2043811, 1, 1, 0, 300), +(9321, 3300005, 2044511, 1, 1, 0, 300), +(9322, 3300005, 2044611, 1, 1, 0, 300), +(9323, 3300005, 2044711, 1, 1, 0, 300), +(9324, 3300005, 2044816, 1, 1, 0, 300), +(9325, 3300005, 2388067, 1, 1, 0, 20000), +(9326, 3300006, 2022575, 1, 1, 0, 20000), +(9327, 3300006, 2022576, 1, 1, 0, 20000), +(9328, 3300006, 2022577, 1, 1, 0, 20000), +(9329, 3300006, 2022578, 1, 1, 0, 20000), +(9330, 3300006, 2022579, 1, 1, 0, 20000), +(9331, 3300006, 2000001, 1, 1, 0, 20000), +(9332, 3300006, 2000003, 1, 1, 0, 20000), +(9333, 3300006, 2040701, 1, 1, 0, 300), +(9334, 3300006, 2040801, 1, 1, 0, 300), +(9335, 3300006, 2040901, 1, 1, 0, 300), +(9336, 3300006, 2041001, 1, 1, 0, 300), +(9337, 3300006, 2043001, 1, 1, 0, 300), +(9338, 3300006, 2043101, 1, 1, 0, 300), +(9339, 3300006, 2041010, 1, 1, 0, 300), +(9340, 3300006, 2043201, 1, 1, 0, 300), +(9341, 3300006, 2041004, 1, 1, 0, 300), +(9342, 3300006, 2060000, 1, 1, 0, 30000), +(9343, 3300006, 2061000, 1, 1, 0, 30000), +(9344, 3300006, 2041017, 1, 1, 0, 300), +(9345, 3300006, 2040402, 1, 1, 0, 300), +(9346, 3300006, 2044002, 1, 1, 0, 300), +(9347, 3300006, 2040502, 1, 1, 0, 300), +(9348, 3300006, 2040602, 1, 1, 0, 300), +(9349, 3300006, 2041016, 1, 1, 0, 300), +(9350, 3300006, 2070009, 1, 1, 0, 500), +(9351, 3300006, 1002098, 1, 1, 0, 1500), +(9352, 3300006, 1002154, 1, 1, 0, 1500), +(9353, 3300006, 1002170, 1, 1, 0, 1500), +(9354, 3300006, 1002185, 1, 1, 0, 1500), +(9355, 3300006, 1040085, 1, 1, 0, 800), +(9356, 3300006, 1041086, 1, 1, 0, 800), +(9357, 3300006, 1050039, 1, 1, 0, 700), +(9358, 3300006, 1051026, 1, 1, 0, 700), +(9359, 3300006, 1040080, 1, 1, 0, 800), +(9360, 3300006, 1041083, 1, 1, 0, 800), +(9361, 3300006, 1040084, 1, 1, 0, 800), +(9362, 3300006, 1041076, 1, 1, 0, 800), +(9363, 3300006, 1082025, 1, 1, 0, 1000), +(9364, 3300006, 1082064, 1, 1, 0, 1000), +(9365, 3300006, 1082073, 1, 1, 0, 1000), +(9366, 3300006, 1082074, 1, 1, 0, 1000), +(9367, 3300006, 1072126, 1, 1, 0, 800), +(9368, 3300006, 1072117, 1, 1, 0, 800), +(9369, 3300006, 1072118, 1, 1, 0, 800), +(9370, 3300006, 1072107, 1, 1, 0, 800), +(9371, 3300006, 1002628, 1, 1, 0, 1500), +(9372, 3300006, 1052113, 1, 1, 0, 700), +(9373, 3300006, 1082195, 1, 1, 0, 1000), +(9374, 3300006, 1072300, 1, 1, 0, 800), +(9375, 3300006, 2044112, 1, 1, 0, 300), +(9376, 3300006, 2044412, 1, 1, 0, 300), +(9377, 3300006, 4000506, 1, 1, 0, 600000), +(9378, 3300006, 2043216, 1, 1, 0, 300), +(9379, 3300006, 2043311, 1, 1, 0, 300), +(9380, 3300006, 2044024, 1, 1, 0, 300), +(9381, 3300006, 2044116, 1, 1, 0, 300), +(9382, 3300006, 2044216, 1, 1, 0, 300), +(9383, 3300006, 2044316, 1, 1, 0, 300), +(9384, 3300006, 2044416, 1, 1, 0, 300), +(9385, 3300006, 2043711, 1, 1, 0, 300), +(9386, 3300006, 2043811, 1, 1, 0, 300), +(9387, 3300006, 2044511, 1, 1, 0, 300), +(9388, 3300006, 2044611, 1, 1, 0, 300), +(9389, 3300006, 2044711, 1, 1, 0, 300), +(9390, 3300006, 2044816, 1, 1, 0, 300), +(9391, 3300006, 2388068, 1, 1, 0, 20000), +(9392, 3300007, 2022580, 1, 1, 0, 20000), +(9393, 3300007, 2022581, 1, 1, 0, 20000), +(9394, 3300007, 2022582, 1, 1, 0, 20000), +(9395, 3300007, 2022583, 1, 1, 0, 20000), +(9396, 3300007, 2022584, 1, 1, 0, 20000), +(9397, 3300007, 4010000, 1, 1, 0, 9000), +(9398, 3300007, 4020000, 1, 1, 0, 9000), +(9399, 3300007, 2000000, 1, 1, 0, 20000), +(9400, 3300007, 2010009, 1, 1, 0, 20000), +(9401, 3300007, 2020014, 1, 1, 0, 20000), +(9402, 3300007, 2040001, 1, 1, 0, 300), +(9403, 3300007, 2040301, 1, 1, 0, 300), +(9404, 3300007, 2040401, 1, 1, 0, 300), +(9405, 3300007, 2043201, 1, 1, 0, 300), +(9406, 3300007, 2043701, 1, 1, 0, 300), +(9407, 3300007, 2041016, 1, 1, 0, 300), +(9408, 3300007, 2043801, 1, 1, 0, 300), +(9409, 3300007, 2044001, 1, 1, 0, 300), +(9410, 3300007, 2040501, 1, 1, 0, 300), +(9411, 3300007, 2040601, 1, 1, 0, 300), +(9412, 3300007, 2060000, 1, 1, 0, 30000), +(9413, 3300007, 2061000, 1, 1, 0, 30000), +(9414, 3300007, 2070000, 1, 1, 0, 500), +(9415, 3300007, 1002049, 1, 1, 0, 1500), +(9416, 3300007, 1002073, 1, 1, 0, 1500), +(9417, 3300007, 1002159, 1, 1, 0, 1500), +(9418, 3300007, 1002150, 1, 1, 0, 1500), +(9419, 3300007, 1040041, 1, 1, 0, 800), +(9420, 3300007, 1041024, 1, 1, 0, 800), +(9421, 3300007, 1050025, 1, 1, 0, 700), +(9422, 3300007, 1051005, 1, 1, 0, 700), +(9423, 3300007, 1040023, 1, 1, 0, 800), +(9424, 3300007, 1041033, 1, 1, 0, 800), +(9425, 3300007, 1040050, 1, 1, 0, 800), +(9426, 3300007, 1041060, 1, 1, 0, 800), +(9427, 3300007, 1082001, 1, 1, 0, 1000), +(9428, 3300007, 1082028, 1, 1, 0, 1000), +(9429, 3300007, 1082018, 1, 1, 0, 1000), +(9430, 3300007, 1082039, 1, 1, 0, 1000), +(9431, 3300007, 1072052, 1, 1, 0, 800), +(9432, 3300007, 1072074, 1, 1, 0, 800), +(9433, 3300007, 1072069, 1, 1, 0, 800), +(9434, 3300007, 1072087, 1, 1, 0, 800), +(9435, 3300007, 2040002, 1, 1, 0, 300), +(9436, 3300007, 2040302, 1, 1, 0, 300), +(9437, 3300007, 2040402, 1, 1, 0, 300), +(9438, 3300007, 2043302, 1, 1, 0, 300), +(9439, 3300007, 2043702, 1, 1, 0, 300), +(9440, 3300007, 1002619, 1, 1, 0, 1500), +(9441, 3300007, 1052104, 1, 1, 0, 700), +(9442, 3300007, 1082186, 1, 1, 0, 1000), +(9443, 3300007, 1072291, 1, 1, 0, 800), +(9444, 3300007, 2330000, 1, 1, 0, 500), +(9445, 3300007, 2044801, 1, 1, 0, 300), +(9446, 3300007, 2044902, 1, 1, 0, 300), +(9447, 3300007, 2040418, 1, 1, 0, 300), +(9448, 3300007, 2040928, 1, 1, 0, 300), +(9449, 3300007, 2043114, 1, 1, 0, 300), +(9450, 3300007, 2044414, 1, 1, 0, 300), +(9451, 3300007, 4000505, 1, 1, 0, 600000), +(9452, 3300007, 2043216, 1, 1, 0, 300), +(9453, 3300007, 2043311, 1, 1, 0, 300), +(9454, 3300007, 2044024, 1, 1, 0, 300), +(9455, 3300007, 2044116, 1, 1, 0, 300), +(9456, 3300007, 2044216, 1, 1, 0, 300), +(9457, 3300007, 2044316, 1, 1, 0, 300), +(9458, 3300007, 2044416, 1, 1, 0, 300), +(9459, 3300007, 2043711, 1, 1, 0, 300), +(9460, 3300007, 2043811, 1, 1, 0, 300), +(9461, 3300007, 2044511, 1, 1, 0, 300), +(9462, 3300007, 2044611, 1, 1, 0, 300), +(9463, 3300007, 2044711, 1, 1, 0, 300), +(9464, 3300007, 2044816, 1, 1, 0, 300), +(9465, 3300007, 2388069, 1, 1, 0, 20000), +(9466, 3300008, 4001318, 1, 1, 0, 600000), +(9467, 3300008, 4010005, 1, 1, 0, 90000), +(9468, 3300008, 4020005, 1, 1, 0, 90000), +(9469, 3300008, 2000002, 1, 1, 0, 200000), +(9470, 3300008, 2000003, 1, 1, 0, 200000), +(9471, 3300008, 2002002, 1, 1, 0, 200000), +(9472, 3300008, 2002003, 1, 1, 0, 200000), +(9473, 3300008, 2040301, 1, 1, 0, 3000), +(9474, 3300008, 2040504, 1, 1, 0, 3000), +(9475, 3300008, 2040707, 1, 1, 0, 3000), +(9476, 3300008, 2040801, 1, 1, 0, 3000), +(9477, 3300008, 2040901, 1, 1, 0, 3000), +(9478, 3300008, 2041016, 1, 1, 0, 3000), +(9479, 3300008, 2043801, 1, 1, 0, 3000), +(9480, 3300008, 2044101, 1, 1, 0, 3000), +(9481, 3300008, 2044601, 1, 1, 0, 3000), +(9482, 3300008, 2044701, 1, 1, 0, 3000), +(9483, 3300008, 2040514, 1, 1, 0, 3000), +(9484, 3300008, 2041002, 1, 1, 0, 3000), +(9485, 3300008, 2041017, 1, 1, 0, 3000), +(9486, 3300008, 2043702, 1, 1, 0, 3000), +(9487, 3300008, 2044302, 1, 1, 0, 3000), +(9488, 3300008, 2060000, 1, 1, 0, 300000), +(9489, 3300008, 2061000, 1, 1, 0, 300000), +(9490, 3300008, 1302010, 1, 1, 0, 7000), +(9491, 3300008, 1312008, 1, 1, 0, 7000), +(9492, 3300008, 1322017, 1, 1, 0, 7000), +(9493, 3300008, 1332003, 1, 1, 0, 5000), +(9494, 3300008, 1372007, 1, 1, 0, 7000), +(9495, 3300008, 1382006, 1, 1, 0, 7000), +(9496, 3300008, 1402003, 1, 1, 0, 7000), +(9497, 3300008, 1412003, 1, 1, 0, 7000), +(9498, 3300008, 1422005, 1, 1, 0, 7000), +(9499, 3300008, 1432004, 1, 1, 0, 5000), +(9500, 3300008, 1442005, 1, 1, 0, 7000), +(9501, 3300008, 1452008, 1, 1, 0, 5000), +(9502, 3300008, 1462007, 1, 1, 0, 5000), +(9503, 3300008, 1472021, 1, 1, 0, 5000), +(9504, 3300008, 1482007, 1, 1, 0, 5000), +(9505, 3300008, 1492007, 1, 1, 0, 5000), +(9506, 3300008, 2044802, 1, 1, 0, 3000), +(9507, 3300008, 2044901, 1, 1, 0, 3000), +(9508, 3300008, 2040931, 1, 1, 0, 3000), +(9509, 3300008, 2040928, 1, 1, 0, 3000), +(9510, 3300008, 2043216, 1, 1, 0, 3000), +(9511, 3300008, 2043311, 1, 1, 0, 3000), +(9512, 3300008, 2044024, 1, 1, 0, 3000), +(9513, 3300008, 2044116, 1, 1, 0, 3000), +(9514, 3300008, 2044216, 1, 1, 0, 3000), +(9515, 3300008, 2044316, 1, 1, 0, 3000), +(9516, 3300008, 2044416, 1, 1, 0, 3000), +(9517, 3300008, 2043711, 1, 1, 0, 3000), +(9518, 3300008, 2043811, 1, 1, 0, 3000), +(9519, 3300008, 2044511, 1, 1, 0, 3000), +(9520, 3300008, 2044611, 1, 1, 0, 3000), +(9521, 3300008, 2044711, 1, 1, 0, 3000), +(9522, 3300008, 2044816, 1, 1, 0, 3000), +(9523, 100100, 2380000, 1, 1, 0, 1000), +(9524, 100101, 2380001, 1, 1, 0, 1000), +(9525, 130100, 2380003, 1, 1, 0, 1000), +(9526, 130101, 2380004, 1, 1, 0, 1000), +(9527, 210100, 2380005, 1, 1, 0, 1000), +(9528, 1210100, 2380006, 1, 1, 0, 1000), +(9529, 1210102, 2380007, 1, 1, 0, 1000), +(9530, 1110101, 2380008, 1, 1, 0, 1000), +(9531, 1210101, 2380009, 1, 1, 0, 1000), +(9532, 1120100, 2380010, 1, 1, 0, 1000), +(9533, 1110100, 2380011, 1, 1, 0, 1000), +(9534, 1210103, 2380012, 1, 1, 0, 1000), +(9535, 1130100, 2381000, 1, 1, 0, 1000), +(9536, 1140100, 2381001, 1, 1, 0, 1000), +(9537, 2220100, 2381002, 1, 1, 0, 1000), +(9538, 2300100, 2381003, 1, 1, 0, 1000), +(9539, 2130103, 2381006, 1, 1, 0, 1000), +(9540, 2110200, 2381007, 1, 1, 0, 1000), +(9541, 2130100, 2381008, 1, 1, 0, 1000), +(9542, 2230108, 2381009, 1, 1, 0, 1000), +(9543, 2100102, 2381010, 1, 1, 0, 1000), +(9544, 2230103, 2381011, 1, 1, 0, 1000), +(9545, 5200000, 2381012, 1, 1, 0, 1000), +(9546, 2230105, 2381013, 1, 1, 0, 1000), +(9547, 2230110, 2381014, 1, 1, 0, 1000), +(9548, 2100105, 2381015, 1, 1, 0, 1000), +(9549, 2230101, 2381016, 1, 1, 0, 1000), +(9550, 2230107, 2381017, 1, 1, 0, 1000), +(9551, 2230111, 2381018, 1, 1, 0, 1000), +(9552, 2100106, 2381019, 1, 1, 0, 1000), +(9553, 2110300, 2381020, 1, 1, 0, 1000), +(9554, 2230106, 2381021, 1, 1, 0, 1000), +(9555, 2230102, 2381022, 1, 1, 0, 1000), +(9556, 2100103, 2381023, 1, 1, 0, 1000), +(9557, 2230100, 2381024, 1, 1, 0, 1000), +(9558, 2100107, 2381025, 1, 1, 0, 1000), +(9559, 2230109, 2381026, 1, 1, 0, 1000), +(9560, 2230104, 2381027, 1, 1, 0, 1000), +(9561, 2100104, 2381028, 1, 1, 0, 1000), +(9562, 2230200, 2381029, 1, 1, 0, 1000), +(9563, 2110301, 2381031, 1, 1, 0, 1000), +(9564, 3000000, 2381032, 1, 1, 0, 1000), +(9565, 3000005, 2381034, 1, 1, 0, 1000), +(9566, 3000006, 2381035, 1, 1, 0, 1000), +(9567, 3100102, 2381036, 1, 1, 0, 1000), +(9568, 5200001, 2381037, 1, 1, 0, 1000), +(9569, 5200002, 2381038, 1, 1, 0, 1000), +(9570, 3230307, 2382000, 1, 1, 0, 1000), +(9571, 3110100, 2382002, 1, 1, 0, 1000), +(9572, 3110101, 2382004, 1, 1, 0, 1000), +(9573, 3110102, 2382005, 1, 1, 0, 1000), +(9574, 5300000, 2382006, 1, 1, 0, 1000), +(9575, 3230104, 2382007, 1, 1, 0, 1000), +(9576, 3110300, 2382009, 1, 1, 0, 1000), +(9577, 3210200, 2382011, 1, 1, 0, 1000), +(9578, 3210201, 2382012, 1, 1, 0, 1000), +(9579, 3210202, 2382013, 1, 1, 0, 1000), +(9580, 5300001, 2382014, 1, 1, 0, 1000), +(9581, 3210204, 2382015, 1, 1, 0, 1000), +(9582, 3210205, 2382016, 1, 1, 0, 1000), +(9583, 3210207, 2382017, 1, 1, 0, 1000), +(9584, 3230100, 2382018, 1, 1, 0, 1000), +(9585, 3230101, 2382019, 1, 1, 0, 1000), +(9586, 3230200, 2382020, 1, 1, 0, 1000), +(9587, 3230302, 2382022, 1, 1, 0, 1000), +(9588, 5400000, 2382023, 1, 1, 0, 1000), +(9589, 3110302, 2382024, 1, 1, 0, 1000), +(9590, 3210203, 2382025, 1, 1, 0, 1000), +(9591, 3210206, 2382026, 1, 1, 0, 1000), +(9592, 3210450, 2382027, 1, 1, 0, 1000), +(9593, 3210208, 2382028, 1, 1, 0, 1000), +(9594, 3210800, 2382029, 1, 1, 0, 1000), +(9595, 3230102, 2382030, 1, 1, 0, 1000), +(9596, 3230303, 2382031, 1, 1, 0, 1000), +(9597, 3230306, 2382032, 1, 1, 0, 1000), +(9598, 3230103, 2382033, 1, 1, 0, 1000), +(9599, 3230304, 2382034, 1, 1, 0, 1000), +(9600, 3230405, 2382035, 1, 1, 0, 1000), +(9601, 3110303, 2382036, 1, 1, 0, 1000), +(9602, 3230308, 2382037, 1, 1, 0, 1000), +(9603, 3230305, 2382038, 1, 1, 0, 1000), +(9604, 4230100, 2382039, 1, 1, 0, 1000), +(9605, 4230101, 2382040, 1, 1, 0, 1000), +(9606, 4230113, 2382041, 1, 1, 0, 1000), +(9607, 4230200, 2382043, 1, 1, 0, 1000), +(9608, 4230201, 2382044, 1, 1, 0, 1000), +(9609, 4230500, 2382045, 1, 1, 0, 1000), +(9610, 4230107, 2382047, 1, 1, 0, 1000), +(9611, 4230111, 2382048, 1, 1, 0, 1000), +(9612, 4230114, 2382049, 1, 1, 0, 1000), +(9613, 4230119, 2382050, 1, 1, 0, 1000), +(9614, 4230501, 2382051, 1, 1, 0, 1000), +(9615, 4230105, 2382052, 1, 1, 0, 1000), +(9616, 4230103, 2382053, 1, 1, 0, 1000), +(9617, 4230109, 2382054, 1, 1, 0, 1000), +(9618, 4230124, 2382056, 1, 1, 0, 1000), +(9619, 4110300, 2382057, 1, 1, 0, 1000), +(9620, 4230108, 2382058, 1, 1, 0, 1000), +(9621, 4230123, 2382059, 1, 1, 0, 1000), +(9622, 4230502, 2382060, 1, 1, 0, 1000), +(9623, 4230120, 2382061, 1, 1, 0, 1000), +(9624, 4230112, 2382062, 1, 1, 0, 1000), +(9625, 4230125, 2382063, 1, 1, 0, 1000), +(9626, 4230106, 2382064, 1, 1, 0, 1000), +(9627, 4130100, 2382065, 1, 1, 0, 1000), +(9628, 4230110, 2382066, 1, 1, 0, 1000), +(9629, 4230300, 2382068, 1, 1, 0, 1000), +(9630, 4230400, 2382069, 1, 1, 0, 1000), +(9631, 4230503, 2382070, 1, 1, 0, 1000), +(9632, 4230504, 2382071, 1, 1, 0, 1000), +(9633, 4110301, 2382072, 1, 1, 0, 1000), +(9634, 4250000, 2382076, 1, 1, 0, 1000), +(9635, 4230121, 2383000, 1, 1, 0, 1000), +(9636, 4130101, 2383001, 1, 1, 0, 1000), +(9637, 4230115, 2383002, 1, 1, 0, 1000), +(9638, 4130102, 2383003, 1, 1, 0, 1000), +(9639, 4130103, 2383004, 1, 1, 0, 25000), +(9640, 4230505, 2383006, 1, 1, 0, 1000), +(9641, 9300255, 2383007, 1, 1, 0, 1000), +(9642, 4230102, 2383008, 1, 1, 0, 1000), +(9643, 4230104, 2383009, 1, 1, 0, 1000), +(9644, 4230506, 2383010, 1, 1, 0, 1000), +(9645, 5130100, 2383012, 1, 1, 0, 1000), +(9646, 5100000, 2383013, 1, 1, 0, 1000), +(9647, 5100003, 2383014, 1, 1, 0, 1000), +(9648, 5120503, 2383015, 1, 1, 0, 1000), +(9649, 9300144, 2383016, 1, 1, 0, 1000), +(9650, 5100002, 2383017, 1, 1, 0, 1000), +(9651, 5120504, 2383018, 1, 1, 0, 1000), +(9652, 5130103, 2383019, 1, 1, 0, 1000), +(9653, 5120001, 2383021, 1, 1, 0, 1000), +(9654, 5120002, 2383022, 1, 1, 0, 1000), +(9655, 5120003, 2383023, 1, 1, 0, 1000), +(9656, 5100005, 2383024, 1, 1, 0, 1000), +(9657, 5120501, 2383025, 1, 1, 0, 1000), +(9658, 5120100, 2383026, 1, 1, 0, 25000), +(9659, 5120502, 2383027, 1, 1, 0, 1000), +(9660, 9300149, 2383028, 1, 1, 0, 1000), +(9661, 5300100, 2383029, 1, 1, 0, 1000), +(9662, 5130101, 2383030, 1, 1, 0, 1000), +(9663, 5130104, 2383031, 1, 1, 0, 1000), +(9664, 5120506, 2383032, 1, 1, 0, 1000), +(9665, 5130105, 2383033, 1, 1, 0, 1000), +(9666, 5120500, 2383035, 1, 1, 0, 1000), +(9667, 5150001, 2383036, 1, 1, 0, 1000), +(9668, 5130107, 2383037, 1, 1, 0, 1000), +(9669, 5130108, 2383038, 1, 1, 0, 1000), +(9670, 5130102, 2383039, 1, 1, 0, 1000), +(9671, 5140000, 2383040, 1, 1, 0, 1000), +(9672, 5120505, 2383041, 1, 1, 0, 1000), +(9673, 5110302, 2383042, 1, 1, 0, 1000), +(9674, 5150000, 2383043, 1, 1, 0, 1000), +(9675, 6130100, 2383044, 1, 1, 0, 1000), +(9676, 6130103, 2383045, 1, 1, 0, 1000), +(9677, 6130201, 2383046, 1, 1, 0, 1000), +(9678, 6130203, 2383047, 1, 1, 0, 1000), +(9679, 5090000, 2383048, 1, 1, 0, 25000), +(9680, 5090001, 2383049, 1, 1, 0, 25000), +(9681, 4250001, 2383056, 1, 1, 0, 1000), +(9682, 5250000, 2383057, 1, 1, 0, 1000), +(9683, 5250002, 2383058, 1, 1, 0, 1000), +(9684, 5250001, 2383059, 1, 1, 0, 1000), +(9685, 6130200, 2384000, 1, 1, 0, 1000), +(9686, 9400201, 2384001, 1, 1, 0, 1000), +(9687, 6130207, 2384002, 1, 1, 0, 1000), +(9688, 6230602, 2384003, 1, 1, 0, 1000), +(9689, 6230400, 2384004, 1, 1, 0, 1000), +(9690, 6230600, 2384006, 1, 1, 0, 1000), +(9691, 6230200, 2384007, 1, 1, 0, 1000), +(9692, 6130204, 2384008, 1, 1, 0, 1000), +(9693, 6300000, 2384009, 1, 1, 0, 1000), +(9694, 6090000, 2384010, 1, 1, 0, 25000), +(9695, 6110300, 2384011, 1, 1, 0, 1000), +(9696, 6230300, 2384012, 1, 1, 0, 1000), +(9697, 6130209, 2384013, 1, 1, 0, 1000), +(9698, 6230500, 2384014, 1, 1, 0, 1000), +(9699, 6230601, 2384015, 1, 1, 0, 1000), +(9700, 6400000, 2384016, 1, 1, 0, 1000), +(9701, 6130208, 2384017, 1, 1, 0, 1000), +(9702, 9300146, 2384018, 1, 1, 0, 1000), +(9703, 8140200, 2384019, 1, 1, 0, 1000), +(9704, 7130100, 2384020, 1, 1, 0, 1000), +(9705, 7130400, 2384021, 1, 1, 0, 25000), +(9706, 7130401, 2384022, 1, 1, 0, 25000), +(9707, 7130402, 2384023, 1, 1, 0, 25000), +(9708, 7130500, 2384024, 1, 1, 0, 1000), +(9709, 7130104, 2384025, 1, 1, 0, 1000), +(9710, 7130001, 2384026, 1, 1, 0, 1000), +(9711, 7130002, 2384027, 1, 1, 0, 1000), +(9712, 7130600, 2384028, 1, 1, 0, 1000), +(9713, 7130103, 2384029, 1, 1, 0, 1000), +(9714, 6300100, 2384032, 1, 1, 0, 1000), +(9715, 7130501, 2384033, 1, 1, 0, 1000), +(9716, 7130200, 2384035, 1, 1, 0, 1000), +(9717, 7130101, 2384036, 1, 1, 0, 1000), +(9718, 6090001, 2384037, 1, 1, 0, 25000), +(9719, 7090000, 2384038, 1, 1, 0, 25000), +(9720, 6090003, 2384039, 1, 1, 0, 25000), +(9721, 6090004, 2384040, 1, 1, 0, 25000), +(9722, 8140300, 2385000, 1, 1, 0, 1000), +(9723, 7130003, 2385001, 1, 1, 0, 1000), +(9724, 7130601, 2385002, 1, 1, 0, 1000), +(9725, 6400100, 2385003, 1, 1, 0, 1000), +(9726, 7130102, 2385004, 1, 1, 0, 1000), +(9727, 7130004, 2385005, 1, 1, 0, 1000), +(9728, 8140000, 2385006, 1, 1, 0, 1000), +(9729, 8140001, 2385007, 1, 1, 0, 1000), +(9730, 8110300, 2385008, 1, 1, 0, 1000), +(9731, 8140100, 2385009, 1, 1, 0, 1000), +(9732, 8140002, 2385011, 1, 1, 0, 1000), +(9733, 7130010, 2385012, 1, 1, 0, 1000), +(9734, 7130020, 2385013, 1, 1, 0, 1000), +(9735, 8140110, 2385014, 1, 1, 0, 1000), +(9736, 8140101, 2385016, 1, 1, 0, 1000), +(9737, 8140102, 2385017, 1, 1, 0, 1000), +(9738, 8140103, 2385018, 1, 1, 0, 1000), +(9739, 8140111, 2385019, 1, 1, 0, 1000), +(9740, 7130300, 2385020, 1, 1, 0, 1000), +(9741, 8140500, 2385021, 1, 1, 0, 1000), +(9742, 8140700, 2385022, 1, 1, 0, 1000), +(9743, 8090000, 2385023, 1, 1, 0, 25000), +(9744, 8200000, 2385025, 1, 1, 0, 1000), +(9745, 8140600, 2386000, 1, 1, 0, 1000), +(9746, 8140701, 2386001, 1, 1, 0, 1000), +(9747, 9300324, 2386002, 1, 1, 0, 25000), +(9748, 8141300, 2386003, 1, 1, 0, 1000), +(9749, 8142000, 2386004, 1, 1, 0, 1000), +(9750, 8140702, 2386005, 1, 1, 0, 1000), +(9751, 8140703, 2386006, 1, 1, 0, 1000), +(9752, 8142100, 2386007, 1, 1, 0, 1000), +(9753, 8150300, 2386008, 1, 1, 0, 1000), +(9754, 9500136, 2386009, 1, 1, 0, 1000), +(9755, 9500137, 2386010, 1, 1, 0, 1000), +(9756, 8150200, 2386011, 1, 1, 0, 1000), +(9757, 8150100, 2386012, 1, 1, 0, 1000), +(9758, 8150301, 2386013, 1, 1, 0, 1000), +(9759, 8150101, 2386014, 1, 1, 0, 1000), +(9760, 8150302, 2386015, 1, 1, 0, 1000), +(9761, 8150201, 2386016, 1, 1, 0, 1000), +(9762, 8190000, 2386017, 1, 1, 0, 1000), +(9763, 8200001, 2386021, 1, 1, 0, 1000), +(9764, 8200002, 2386022, 1, 1, 0, 1000), +(9765, 8200003, 2386023, 1, 1, 0, 1000), +(9766, 8200004, 2386024, 1, 1, 0, 1000), +(9767, 8160000, 2387000, 1, 1, 0, 1000), +(9768, 8170000, 2387001, 1, 1, 0, 1000), +(9769, 8190003, 2387002, 1, 1, 0, 1000), +(9770, 8190004, 2387003, 1, 1, 0, 1000), +(9771, 8190002, 2387004, 1, 1, 0, 1000), +(9772, 8200005, 2387006, 1, 1, 0, 1000), +(9773, 8200006, 2387007, 1, 1, 0, 1000), +(9774, 8200007, 2387008, 1, 1, 0, 1000), +(9775, 8200008, 2387009, 1, 1, 0, 1000), +(9776, 8200009, 2387010, 1, 1, 0, 1000), +(9777, 8200010, 2387011, 1, 1, 0, 1000), +(9778, 8200011, 2387012, 1, 1, 0, 1000), +(9779, 8200012, 2387013, 1, 1, 0, 1000), +(9780, 9300184, 2388000, 1, 1, 0, 25000), +(9781, 9300003, 2388001, 1, 1, 0, 1000), +(9782, 5220002, 2388002, 1, 1, 0, 25000), +(9783, 5220000, 2388003, 1, 1, 0, 25000), +(9784, 9300012, 2388004, 1, 1, 0, 25000), +(9785, 5220003, 2388005, 1, 1, 0, 25000), +(9786, 6130101, 2388006, 1, 1, 0, 25000), +(9787, 6220000, 2388007, 1, 1, 0, 25000), +(9788, 6300005, 2388008, 1, 1, 0, 25000), +(9789, 7220001, 2388009, 1, 1, 0, 25000), +(9790, 7220000, 2388010, 1, 1, 0, 25000), +(9791, 9300119, 2388011, 1, 1, 0, 25000), +(9792, 9300039, 2388012, 1, 1, 0, 25000), +(9793, 7220002, 2388013, 1, 1, 0, 25000), +(9794, 9300139, 2388014, 1, 1, 0, 25000), +(9795, 8220001, 2388016, 1, 1, 0, 25000), +(9796, 8150000, 2388017, 1, 1, 0, 25000), +(9797, 8180000, 2388018, 1, 1, 0, 25000), +(9798, 8180001, 2388019, 1, 1, 0, 25000), +(9799, 8510000, 2388020, 1, 1, 0, 25000), +(9800, 9300028, 2388021, 1, 1, 0, 25000), +(9801, 8500002, 2388022, 1, 1, 0, 25000), +(9802, 3220000, 2388025, 1, 1, 0, 25000), +(9803, 8130100, 2388026, 1, 1, 0, 25000), +(9804, 9500317, 2388028, 1, 1, 0, 25000), +(9805, 3220001, 2388029, 1, 1, 0, 25000), +(9806, 4220000, 2388030, 1, 1, 0, 25000), +(9807, 6220001, 2388031, 1, 1, 0, 25000), +(9808, 8220003, 2388033, 1, 1, 0, 25000), +(9809, 8220004, 2388040, 1, 1, 0, 25000), +(9810, 8220005, 2388041, 1, 1, 0, 25000), +(9811, 8220006, 2388042, 1, 1, 0, 25000), +(9812, 8820000, 2388043, 1, 1, 0, 25000), +(9813, 9300274, 2380013, 1, 1, 0, 1000), +(9814, 8830000, 2388055, 1, 1, 0, 25000), +(9815, 1110130, 2380014, 1, 1, 0, 1000), +(9816, 100130, 2380015, 1, 1, 0, 1000), +(9817, 100131, 2380016, 1, 1, 0, 1000), +(9818, 100132, 2380017, 1, 1, 0, 1000), +(9819, 100133, 2380018, 1, 1, 0, 1000), +(9820, 100134, 2380019, 1, 1, 0, 1000), +(9821, 2230131, 2381083, 1, 1, 0, 1000), +(9822, 3300001, 2382093, 1, 1, 0, 1000), +(9823, 3300002, 2382094, 1, 1, 0, 1000), +(9824, 3300003, 2382095, 1, 1, 0, 1000), +(9825, 3300004, 2382096, 1, 1, 0, 1000), +(9826, 5220004, 2388052, 1, 1, 0, 25000), +(9827, 8220007, 2388053, 1, 1, 0, 25000), +(9828, 8220009, 2388054, 1, 1, 0, 25000), +(9829, 3300006, 2388068, 1, 1, 0, 1000), +(9830, 3300007, 2388069, 1, 1, 0, 1000), +(9831, 8170000, 0, 664, 996, 0, 400000), +(9832, 8160000, 0, 664, 996, 0, 400000), +(9833, 8141000, 0, 625, 926, 0, 400000), +(9834, 8142000, 0, 622, 948, 0, 400000), +(9835, 8142100, 0, 638, 944, 0, 400000), +(9836, 9420516, 0, 638, 944, 0, 400000), +(9837, 9420515, 0, 600, 900, 0, 400000), +(9838, 8141100, 0, 646, 959, 0, 400000), +(9839, 8143000, 0, 416, 623, 0, 400000), +(9840, 9400013, 0, 697, 1020, 0, 400000), +(9841, 6400000, 0, 333, 493, 0, 400000), +(9842, 6230200, 0, 325, 486, 0, 400000), +(9843, 7140000, 0, 361, 540, 0, 400000), +(9844, 7130010, 0, 364, 545, 0, 400000), +(9845, 7160000, 0, 400, 600, 0, 400000), +(9846, 7130300, 0, 408, 610, 0, 400000), +(9847, 8140500, 0, 640, 960, 0, 400000), +(9848, 7130001, 0, 344, 516, 0, 400000), +(9849, 7130600, 0, 347, 515, 0, 400000), +(9850, 6300100, 0, 320, 480, 0, 400000), +(9851, 7130501, 0, 352, 528, 0, 400000), +(9852, 7130101, 0, 409, 599, 0, 400000), +(9853, 7130200, 0, 417, 548, 0, 400000), +(9854, 8140300, 0, 468, 960, 0, 400000), +(9855, 6400100, 0, 334, 497, 0, 400000), +(9856, 6300000, 0, 417, 548, 0, 400000), +(9857, 8130100, 0, 1621, 2387, 0, 400000), +(9858, 6130200, 0, 312, 468, 0, 400000), +(9859, 9400201, 0, 320, 463, 0, 400000), +(9860, 6230400, 0, 328, 492, 0, 400000), +(9861, 6230602, 0, 328, 492, 0, 400000), +(9862, 6230600, 0, 324, 486, 0, 400000), +(9863, 5100000, 0, 330, 490, 0, 400000), +(9864, 6230300, 0, 320, 480, 0, 400000), +(9865, 6230500, 0, 332, 498, 0, 400000), +(9866, 6230601, 0, 332, 498, 0, 400000), +(9867, 7130100, 0, 340, 500, 0, 400000), +(9868, 8140200, 0, 336, 509, 0, 400000), +(9869, 5100002, 0, 212, 381, 0, 400000), +(9870, 5120504, 0, 208, 312, 0, 400000), +(9871, 5130103, 0, 224, 336, 0, 400000), +(9872, 5120000, 0, 224, 336, 0, 400000), +(9873, 5120001, 0, 235, 348, 0, 400000), +(9874, 5120002, 0, 235, 348, 0, 400000), +(9875, 5120003, 0, 235, 348, 0, 400000), +(9876, 5100005, 0, 232, 348, 0, 400000), +(9877, 5120100, 0, 324, 486, 0, 400000), +(9878, 5130101, 0, 256, 348, 0, 400000), +(9879, 5130104, 0, 254, 386, 0, 400000), +(9880, 5300100, 0, 251, 359, 0, 400000), +(9881, 9400204, 0, 200, 305, 0, 400000), +(9882, 5100004, 0, 268, 402, 0, 400000), +(9883, 5130107, 0, 273, 408, 0, 400000), +(9884, 5150001, 0, 272, 408, 0, 400000), +(9885, 5140000, 0, 280, 420, 0, 400000), +(9886, 5130102, 0, 280, 420, 0, 400000), +(9887, 5150000, 0, 296, 447, 0, 400000), +(9888, 9400003, 0, 280, 420, 0, 400000), +(9889, 6130100, 0, 304, 456, 0, 400000), +(9890, 6130101, 0, 800, 1196, 0, 400000), +(9891, 6130202, 0, 304, 456, 0, 400000), +(9892, 100100, 0, 4, 6, 0, 400000), +(9893, 100101, 0, 8, 12, 0, 400000), +(9894, 120100, 0, 8, 12, 0, 400000), +(9895, 130100, 0, 12, 18, 0, 400000), +(9896, 130101, 0, 12, 18, 0, 400000), +(9897, 210100, 0, 12, 18, 0, 400000), +(9898, 1210100, 0, 14, 21, 0, 400000), +(9899, 1210102, 0, 16, 24, 0, 400000), +(9900, 1210101, 0, 20, 30, 0, 400000), +(9901, 1110101, 0, 20, 30, 0, 400000), +(9902, 1120100, 0, 24, 36, 0, 400000), +(9903, 1210103, 0, 24, 36, 0, 400000), +(9904, 1110100, 0, 28, 42, 0, 400000), +(9905, 1130100, 0, 32, 48, 0, 400000), +(9906, 1140100, 0, 34, 47, 0, 400000), +(9907, 2220100, 0, 36, 54, 0, 400000), +(9908, 2300100, 0, 32, 48, 0, 400000), +(9909, 2130103, 0, 33, 49, 0, 400000), +(9910, 2110200, 0, 36, 54, 0, 400000), +(9911, 2130100, 0, 40, 60, 0, 400000), +(9912, 2230108, 0, 40, 60, 0, 400000), +(9913, 9600002, 0, 43, 65, 0, 400000), +(9914, 2100102, 0, 40, 60, 0, 400000), +(9915, 5200000, 0, 60, 90, 0, 400000), +(9916, 2230103, 0, 47, 62, 0, 400000), +(9917, 2070010, 0, 44, 66, 0, 400000), +(9918, 2100105, 0, 44, 63, 0, 400000), +(9919, 2230101, 0, 44, 66, 0, 400000), +(9920, 2230102, 0, 44, 66, 0, 400000), +(9921, 9400000, 0, 40, 60, 0, 400000), +(9922, 7130500, 0, 337, 501, 0, 400000), +(9923, 2230100, 0, 48, 72, 0, 400000), +(9924, 2230106, 0, 44, 66, 0, 400000), +(9925, 9600003, 0, 58, 81, 0, 400000), +(9926, 2100103, 0, 49, 66, 0, 400000), +(9927, 2230104, 0, 56, 78, 0, 400000), +(9928, 2230109, 0, 52, 78, 0, 400000), +(9929, 2100104, 0, 52, 77, 0, 400000), +(9930, 2230200, 0, 52, 78, 0, 400000), +(9931, 3000002, 0, 80, 120, 0, 400000), +(9932, 9400010, 0, 52, 78, 0, 400000), +(9933, 5200001, 0, 64, 96, 0, 400000), +(9934, 5200002, 0, 64, 96, 0, 400000), +(9935, 3000000, 0, 52, 78, 0, 400000), +(9936, 9400002, 0, 52, 78, 0, 400000), +(9937, 3230400, 0, 97, 139, 0, 400000), +(9938, 3000006, 0, 56, 84, 0, 400000), +(9939, 9600004, 0, 64, 99, 0, 400000), +(9940, 3230307, 0, 100, 144, 0, 400000), +(9941, 3110300, 0, 70, 114, 0, 400000), +(9942, 3110100, 0, 74, 144, 0, 400000), +(9943, 3210100, 0, 76, 114, 0, 400000), +(9944, 3110102, 0, 80, 120, 0, 400000), +(9945, 3110101, 0, 80, 120, 0, 400000), +(9946, 3230104, 0, 56, 84, 0, 400000), +(9947, 5300000, 0, 68, 102, 0, 400000), +(9948, 5300001, 0, 72, 108, 0, 400000), +(9949, 3210200, 0, 80, 120, 0, 400000), +(9950, 3210201, 0, 80, 120, 0, 400000), +(9951, 3210202, 0, 80, 120, 0, 400000), +(9952, 9600006, 0, 83, 116, 0, 400000), +(9953, 9400509, 0, 232, 348, 0, 400000), +(9954, 3210205, 0, 84, 126, 0, 400000), +(9955, 3210204, 0, 84, 126, 0, 400000), +(9956, 3210207, 0, 84, 126, 0, 400000), +(9957, 3230100, 0, 60, 90, 0, 400000), +(9958, 3230101, 0, 56, 84, 0, 400000), +(9959, 3230200, 0, 56, 84, 0, 400000), +(9960, 3230300, 0, 94, 144, 0, 400000), +(9961, 5400000, 0, 76, 114, 0, 400000), +(9962, 3230302, 0, 76, 114, 0, 400000), +(9963, 9600005, 0, 93, 138, 0, 400000), +(9964, 3210206, 0, 76, 114, 0, 400000), +(9965, 3210203, 0, 76, 114, 0, 400000), +(9966, 3210208, 0, 76, 114, 0, 400000), +(9967, 3210450, 0, 75, 114, 0, 400000), +(9968, 3230405, 0, 96, 114, 0, 400000), +(9969, 3230102, 0, 92, 138, 0, 400000), +(9970, 3210800, 0, 88, 132, 0, 400000), +(9971, 3230303, 0, 96, 144, 0, 400000), +(9972, 3230306, 0, 96, 144, 0, 400000), +(9973, 9600008, 0, 43, 60, 0, 400000), +(9974, 3230103, 0, 96, 144, 0, 400000), +(9975, 3230304, 0, 96, 144, 0, 400000), +(9976, 9600007, 0, 136, 162, 0, 400000), +(9977, 3230308, 0, 96, 144, 0, 400000), +(9978, 3230305, 0, 96, 144, 0, 400000), +(9979, 4230100, 0, 96, 144, 0, 400000), +(9980, 4230101, 0, 104, 156, 0, 400000), +(9981, 4230113, 0, 108, 162, 0, 400000), +(9982, 4230200, 0, 104, 156, 0, 400000), +(9983, 4230201, 0, 108, 162, 0, 400000), +(9984, 4230116, 0, 108, 162, 0, 400000), +(9985, 9400011, 0, 95, 135, 0, 400000), +(9986, 4230500, 0, 96, 144, 0, 400000), +(9987, 4230107, 0, 112, 168, 0, 400000), +(9988, 4230111, 0, 116, 174, 0, 400000), +(9989, 4230114, 0, 117, 174, 0, 400000), +(9990, 4230119, 0, 116, 174, 0, 400000), +(9991, 4230501, 0, 128, 192, 0, 400000), +(9992, 4230105, 0, 120, 180, 0, 400000), +(9993, 4230103, 0, 120, 180, 0, 400000), +(9994, 4230109, 0, 123, 190, 0, 400000), +(9995, 4230124, 0, 120, 180, 0, 400000), +(9996, 4230117, 0, 128, 192, 0, 400000), +(9997, 4230108, 0, 132, 198, 0, 400000), +(9998, 4230123, 0, 132, 198, 0, 400000), +(9999, 4230112, 0, 140, 210, 0, 400000), +(10000, 4230120, 0, 140, 210, 0, 400000), +(10001, 4230106, 0, 114, 216, 0, 400000), +(10002, 4130100, 0, 160, 240, 0, 400000), +(10003, 4230110, 0, 164, 246, 0, 400000), +(10004, 4000077, 0, 148, 222, 0, 400000), +(10005, 4230118, 0, 164, 246, 0, 400000), +(10006, 4230300, 0, 160, 240, 0, 400000), +(10007, 4130101, 0, 168, 252, 0, 400000), +(10008, 4230115, 0, 172, 258, 0, 400000), +(10009, 4230121, 0, 164, 246, 0, 400000), +(10010, 4130102, 0, 172, 258, 0, 400000), +(10011, 4230126, 0, 172, 258, 0, 400000), +(10012, 9400101, 0, 88, 132, 0, 400000), +(10013, 4230505, 0, 177, 258, 0, 400000), +(10014, 4230506, 0, 180, 268, 0, 400000), +(10015, 4230102, 0, 176, 246, 0, 400000), +(10016, 4230104, 0, 176, 246, 0, 400000), +(10017, 5130100, 0, 200, 300, 0, 400000), +(10018, 5100003, 0, 200, 300, 0, 400000), +(10019, 5120503, 0, 208, 312, 0, 400000), +(10020, 5110301, 0, 240, 360, 0, 400000), +(10021, 5110302, 0, 288, 432, 0, 400000), +(10022, 9400121, 0, 1000, 5000, 0, 400000), +(10023, 9400112, 0, 10000, 20000, 0, 400000), +(10024, 9400112, 0, 10000, 20000, 0, 400000), +(10025, 9400113, 0, 20000, 50000, 0, 400000), +(10026, 9400113, 0, 20000, 50000, 0, 400000), +(10027, 9400300, 0, 20000, 30000, 0, 400000), +(10028, 9400300, 0, 20000, 30000, 0, 400000), +(10029, 9400300, 0, 20000, 30000, 0, 400000), +(10030, 9410009, 0, 50, 90, 0, 400000), +(10031, 9410011, 0, 50, 90, 0, 400000), +(10032, 9420540, 0, 500, 700, 0, 400000), +(10033, 9400014, 0, 1000, 5000, 0, 400000), +(10034, 8180001, 0, 3000, 6000, 0, 400000), +(10035, 8180000, 0, 3000, 6000, 0, 400000), +(10036, 8140102, 0, 500, 800, 0, 400000), +(10037, 8140103, 0, 500, 800, 0, 400000), +(10038, 8140101, 0, 500, 800, 0, 400000), +(10039, 8140700, 0, 500, 800, 0, 400000), +(10040, 8140701, 0, 600, 900, 0, 400000), +(10041, 9400551, 0, 1000, 5000, 0, 400000), +(10042, 8190003, 0, 697, 1020, 0, 400000), +(10043, 8190004, 0, 750, 1150, 0, 400000), +(10044, 8190005, 0, 800, 1200, 0, 400000), +(10045, 8140110, 0, 500, 800, 0, 400000), +(10046, 8140111, 0, 600, 900, 0, 400000), +(10047, 9400575, 0, 1000, 5000, 0, 400000), +(10048, 8190000, 0, 800, 1200, 0, 400000), +(10049, 8190002, 0, 900, 1300, 0, 400000), +(10050, 9400545, 0, 600, 900, 0, 400000), +(10051, 9001000, 0, 200, 400, 0, 400000), +(10052, 9001001, 0, 200, 400, 0, 400000), +(10053, 9001002, 0, 200, 400, 0, 400000), +(10054, 9001003, 0, 200, 400, 0, 400000), +(10055, 9420500, 0, 36, 54, 0, 400000), +(10056, 9420502, 0, 30, 42, 0, 400000), +(10057, 9420506, 0, 56, 69, 0, 400000), +(10058, 9420503, 0, 76, 114, 0, 400000), +(10059, 9420501, 0, 92, 138, 0, 400000), +(10060, 9420504, 0, 208, 312, 0, 400000), +(10061, 9420505, 0, 232, 348, 0, 400000), +(10062, 9420508, 0, 254, 364, 0, 400000), +(10063, 9420509, 0, 280, 420, 0, 400000), +(10064, 9420510, 0, 329, 482, 0, 400000), +(10065, 9420511, 0, 304, 456, 0, 400000), +(10066, 9420512, 0, 332, 495, 0, 400000), +(10067, 9420513, 0, 1059, 2941, 0, 400000), +(10068, 6130208, 0, 312, 475, 0, 400000), +(10069, 7130104, 0, 332, 495, 0, 400000), +(10070, 8810018, 0, 40000, 50000, 0, 400000), +(10071, 8140001, 0, 500, 700, 0, 400000), +(10072, 8140002, 0, 600, 800, 0, 400000), +(10073, 4110302, 0, 180, 270, 0, 400000), +(10074, 2220000, 0, 30, 70, 0, 400000), +(10075, 9420519, 0, 700, 750, 0, 400000), +(10076, 9420517, 0, 750, 850, 0, 400000), +(10077, 8220002, 0, 300, 600, 0, 400000), +(10078, 8220004, 0, 12000, 14000, 0, 400000), +(10079, 8200011, 0, 750, 1050, 0, 400000), +(10080, 8220001, 0, 700, 900, 0, 400000), +(10081, 8820001, 0, 40000, 50000, 0, 400000), +(10082, 100120, 0, 1, 5, 0, 400000), +(10083, 100121, 0, 10, 14, 0, 400000), +(10084, 7130020, 0, 300, 450, 0, 400000), +(10085, 9300328, 0, 4, 6, 0, 400000), +(10086, 9400569, 0, 500, 800, 0, 400000), +(10087, 9500168, 0, 500, 800, 0, 400000), +(10088, 9500169, 0, 500, 800, 0, 400000), +(10089, 9500170, 0, 500, 800, 0, 400000), +(10090, 9500171, 0, 500, 800, 0, 400000), +(10091, 9500172, 0, 500, 800, 0, 400000), +(10092, 9500173, 0, 500, 800, 0, 400000), +(10093, 9500174, 0, 500, 800, 0, 400000), +(10094, 9500175, 0, 500, 800, 0, 400000), +(10095, 9500176, 0, 500, 800, 0, 400000), +(10096, 8220000, 0, 500, 800, 0, 400000), +(10097, 9420544, 0, 2000, 5000, 0, 400000), +(10098, 9420549, 0, 2000, 5000, 0, 400000), +(10099, 8200000, 0, 400, 600, 0, 400000), +(10100, 8200001, 0, 640, 920, 0, 400000), +(10101, 8200002, 0, 650, 930, 0, 400000), +(10102, 8200003, 0, 640, 950, 0, 400000), +(10103, 8200004, 0, 640, 956, 0, 400000), +(10104, 8200005, 0, 650, 980, 0, 400000), +(10105, 8200006, 0, 680, 1050, 0, 400000), +(10106, 8200007, 0, 680, 990, 0, 400000), +(10107, 8200008, 0, 690, 1020, 0, 400000), +(10108, 8200009, 0, 700, 1060, 0, 400000), +(10109, 8200010, 0, 710, 1070, 0, 400000), +(10110, 8200012, 0, 760, 1070, 0, 400000), +(10111, 6110301, 0, 330, 500, 0, 400000), +(10112, 9400110, 0, 171, 227, 0, 400000), +(10113, 9400111, 0, 175, 240, 0, 400000), +(10114, 9400100, 0, 64, 96, 0, 400000), +(10115, 9400101, 0, 88, 112, 0, 400000), +(10116, 9400102, 0, 88, 132, 0, 400000), +(10117, 9400103, 0, 200, 300, 0, 400000), +(10118, 9420522, 0, 1000, 2000, 0, 400000), +(10119, 9420522, 0, 1000, 2000, 0, 400000), +(10120, 9420522, 0, 1000, 2000, 0, 400000), +(10121, 9420522, 0, 1000, 2000, 0, 400000), +(10122, 9420522, 0, 1000, 2000, 0, 400000), +(10123, 9420522, 0, 1000, 2000, 0, 400000), +(10124, 8810018, 0, 30000, 40000, 0, 700000), +(10125, 8810018, 0, 30000, 40000, 0, 700000), +(10126, 8810018, 0, 30000, 40000, 0, 700000), +(10127, 8810018, 0, 30000, 40000, 0, 700000), +(10128, 8810018, 0, 30000, 40000, 0, 700000), +(10129, 8810018, 0, 30000, 40000, 0, 700000), +(10130, 8810018, 0, 30000, 40000, 0, 700000), +(10131, 8810018, 0, 30000, 40000, 0, 700000), +(10132, 8810018, 0, 30000, 40000, 0, 700000), +(10133, 8810018, 0, 30000, 40000, 0, 700000), +(10134, 8800002, 0, 10000, 15000, 0, 700000), +(10135, 8800002, 0, 10000, 15000, 0, 700000), +(10136, 8800002, 0, 10000, 15000, 0, 700000), +(10137, 8800002, 0, 10000, 15000, 0, 700000), +(10138, 8800002, 0, 10000, 15000, 0, 700000), +(10139, 8800002, 0, 10000, 15000, 0, 700000), +(10140, 8800002, 0, 10000, 15000, 0, 700000), +(10141, 8800002, 0, 10000, 15000, 0, 700000), +(10142, 8800002, 0, 10000, 15000, 0, 700000), +(10143, 8800002, 0, 10000, 15000, 0, 700000), +(10144, 8510000, 0, 10000, 20000, 0, 400000), +(10145, 8510000, 0, 10000, 20000, 0, 400000), +(10146, 8510000, 0, 10000, 20000, 0, 400000), +(10147, 8510000, 0, 10000, 20000, 0, 400000), +(10148, 8510000, 0, 10000, 20000, 0, 400000), +(10149, 8520000, 0, 10000, 20000, 0, 400000), +(10150, 8520000, 0, 10000, 20000, 0, 400000), +(10151, 8520000, 0, 10000, 20000, 0, 400000), +(10152, 8520000, 0, 10000, 20000, 0, 400000), +(10153, 8520000, 0, 10000, 20000, 0, 400000), +(10154, 8500002, 0, 10000, 20000, 0, 400000), +(10155, 8500002, 0, 10000, 20000, 0, 400000), +(10156, 8500002, 0, 10000, 20000, 0, 400000), +(10157, 8500002, 0, 10000, 20000, 0, 400000), +(10158, 8500002, 0, 10000, 20000, 0, 400000), +(10159, 9400409, 0, 10000, 20000, 0, 400000), +(10160, 9400409, 0, 10000, 20000, 0, 400000), +(10161, 9400409, 0, 10000, 20000, 0, 400000), +(10162, 9400409, 0, 10000, 20000, 0, 400000), +(10163, 9400409, 0, 10000, 20000, 0, 400000), +(10164, 6230100, 4031213, 1, 1, 2097, 200000), +(10165, 7130100, 4031214, 1, 1, 2097, 200000), +(10166, 7220001, 4031793, 1, 1, 3647, 999999), +(10167, 7130101, 4031215, 1, 1, 2097, 200000), +(10168, 210100, 4031273, 1, 1, 2104, 500000), +(10169, 2220100, 2022016, 1, 1, 8164, 100000), +(10170, 2130100, 4031153, 1, 1, 2070, 10000), +(10171, 2230106, 4031268, 1, 1, 3629, 30000), +(10172, 2230105, 4031259, 1, 1, 3080, 30000), +(10173, 2230106, 4031260, 1, 1, 3080, 30000), +(10174, 2230108, 4031261, 1, 1, 3080, 30000), +(10175, 2230200, 4031262, 1, 1, 3081, 30000), +(10176, 3230104, 4031263, 1, 1, 3081, 30000), +(10177, 2230109, 4031264, 1, 1, 3081, 30000), +(10178, 4230200, 4031265, 1, 1, 3082, 30000), +(10179, 4230123, 4031266, 1, 1, 3082, 30000), +(10180, 4230124, 4031267, 1, 1, 3082, 30000), +(10181, 4230116, 4031103, 1, 1, 3414, 100000), +(10182, 4230117, 4031104, 1, 1, 3414, 100000), +(10183, 4230118, 4031105, 1, 1, 3414, 100000), +(10184, 4240000, 4031106, 1, 1, 3414, 100000), +(10185, 7130400, 4031232, 1, 1, 3611, 1000000), +(10186, 7130401, 4031233, 1, 1, 3611, 1000000), +(10187, 7130402, 4031234, 1, 1, 3611, 1000000), +(10188, 5100004, 4031790, 1, 1, 3642, 100000), +(10189, 4230113, 4031675, 1, 1, 4917, 1000000), +(10190, 9400546, 4031681, 1, 1, 4915, 1000000), +(10191, 9600005, 4000191, 1, 1, 0, 1000000), +(10192, 9600006, 4000192, 1, 1, 0, 1000000), +(10193, 8500002, 4031196, 1, 1, 0, 1000000), +(10194, 8500002, 4031196, 1, 1, 0, 1000000), +(10195, 8500002, 4031196, 1, 1, 0, 187500), +(10196, 8500002, 4031196, 1, 1, 0, 125000), +(10197, 3000006, 4031209, 1, 1, 0, 500000), +(10198, 2230109, 4031209, 1, 1, 0, 500000), +(10199, 2230200, 4031209, 1, 1, 0, 500000), +(10200, 3230104, 4031209, 1, 1, 0, 500000), +(10201, 3230306, 4031159, 1, 1, 2074, 500000), +(10202, 9500400, 4031224, 1, 1, 3607, 1000000), +(10203, 9500400, 4031223, 1, 1, 3607, 1000000), +(10204, 9420003, 4031400, 1, 1, 8761, 1000000), +(10205, 9420001, 4031401, 1, 1, 8761, 1000000), +(10206, 9300097, 4031472, 1, 1, 6301, 100000), +(10207, 9300098, 4031472, 1, 1, 6301, 100000), +(10208, 9300099, 4031472, 1, 1, 6301, 100000), +(10209, 5300100, 4031925, 1, 1, 2223, 100000), +(10210, 1110100, 4031146, 1, 1, 2065, 1000000), +(10211, 1130100, 4031147, 1, 1, 2065, 1000000), +(10212, 2230102, 4031155, 1, 1, 2071, 1000000), +(10213, 3230100, 4031239, 1, 1, 2099, 50000), +(10214, 4230100, 4031212, 1, 1, 2096, 500000), +(10215, 5300000, 4031311, 1, 1, 3093, 1000000), +(10216, 8140600, 4031256, 1, 1, 3076, 100000), +(10217, 8140600, 4031251, 1, 1, 3076, 300000), +(10218, 8510000, 4031253, 1, 1, 3076, 1000000), +(10219, 8520000, 4031253, 1, 1, 3076, 1000000), +(10220, 5130107, 4031218, 1, 1, 3071, 10000), +(10221, 5130108, 4031218, 1, 1, 3071, 10000), +(10222, 3230200, 4031309, 1, 1, 3088, 500000), +(10223, 4230106, 4031309, 1, 1, 3088, 500000), +(10224, 5120000, 4031309, 1, 1, 3088, 500000), +(10225, 8150100, 4031252, 1, 1, 3078, 10000), +(10226, 8150101, 4031252, 1, 1, 3078, 10000), +(10227, 8150100, 4031254, 1, 1, 3078, 10000), +(10228, 8150101, 4031254, 1, 1, 3078, 10000), +(10229, 8150100, 4031255, 1, 1, 3078, 10000), +(10230, 8150101, 4031255, 1, 1, 3078, 10000), +(10231, 4240000, 4031926, 1, 1, 3454, 1000000), +(10232, 4230118, 4031926, 1, 1, 3454, 10000), +(10233, 4230117, 4031926, 1, 1, 3454, 10000), +(10234, 4230116, 4031926, 1, 1, 3454, 10000), +(10235, 6130202, 4031222, 1, 1, 3621, 100000), +(10236, 3230302, 4031089, 1, 1, 3223, 100000), +(10237, 4230119, 4031090, 1, 1, 3227, 100000), +(10238, 3210205, 4031093, 1, 1, 3229, 1000000), +(10239, 3110102, 4031129, 1, 1, 3207, 1000000), +(10240, 4230119, 4031206, 1, 1, 3441, 50000), +(10241, 3230400, 4031140, 1, 1, 3440, 100000), +(10242, 3230400, 4031135, 1, 1, 3438, 100000), +(10243, 3210208, 4031279, 1, 1, 3632, 1000000), +(10244, 2230106, 4031269, 1, 1, 3629, 1000000), +(10245, 4230300, 4031241, 1, 1, 3606, 1000000), +(10246, 4230112, 4031115, 1, 1, 3416, 100000), +(10247, 4240000, 4031102, 1, 1, 3413, 1000000), +(10248, 6230300, 4031189, 1, 1, 3448, 100000), +(10249, 6230300, 4031195, 1, 1, 3449, 500000), +(10250, 130101, 4031846, 1, 1, 2173, 50000), +(10251, 1210100, 4031846, 1, 1, 2173, 50000), +(10252, 8180001, 4031464, 1, 1, 6303, 1000000); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(10253, 7130104, 4031436, 1, 1, 3828, 1000000), +(10254, 3110302, 4031694, 1, 1, 3312, 50000), +(10255, 3110303, 4031694, 1, 1, 3312, 100000), +(10256, 5120506, 4031432, 1, 1, 3810, 1000000), +(10257, 6130209, 4031433, 1, 1, 3804, 100000), +(10258, 9400110, 4031139, 1, 1, 8005, 100000), +(10259, 9400111, 4031139, 1, 1, 8005, 100000), +(10260, 9600002, 4000188, 1, 1, 0, 1000000), +(10261, 9600001, 4000187, 1, 1, 0, 1000000), +(10262, 9420005, 4000252, 1, 1, 0, 1000000), +(10263, 9420005, 4000253, 1, 1, 0, 1000000), +(10264, 3110100, 4031405, 1, 1, 8732, 500000), +(10265, 9600007, 4000193, 1, 1, 0, 1000000), +(10266, 9400543, 4031680, 1, 1, 4914, 300000), +(10267, 9420003, 4000251, 1, 1, 0, 1000000), +(10268, 4230116, 4031674, 1, 1, 4916, 300000), +(10269, 9600003, 4000189, 1, 1, 0, 1000000), +(10270, 9600004, 4000190, 1, 1, 0, 1000000), +(10271, 9420002, 4000248, 1, 1, 0, 1000000), +(10272, 3110100, 4031164, 1, 1, 2084, 300000), +(10274, 2000, 4031161, 1, 1, 1008, 1000000), +(10275, 2000, 4031162, 1, 1, 1008, 1000000), +(10276, 6130200, 4031170, 1, 1, 7100, 500000), +(10277, 6230300, 4031170, 1, 1, 7100, 500000), +(10278, 6230400, 4031170, 1, 1, 7100, 500000), +(10279, 6230500, 4031170, 1, 1, 7100, 500000), +(10280, 6300100, 4031170, 1, 1, 7100, 500000), +(10281, 6400100, 4031170, 1, 1, 7100, 500000), +(10282, 7130010, 4031170, 1, 1, 7100, 500000), +(10283, 7130300, 4031170, 1, 1, 7100, 500000), +(10284, 7140000, 4031170, 1, 1, 7100, 500000), +(10285, 8140200, 4031170, 1, 1, 7100, 500000), +(10286, 8140300, 4031170, 1, 1, 7100, 500000), +(10287, 8141000, 4031170, 1, 1, 7100, 500000), +(10288, 8141100, 4031170, 1, 1, 7100, 500000), +(10289, 8142000, 4031170, 1, 1, 7100, 500000), +(10290, 8143000, 4031170, 1, 1, 7100, 500000), +(10291, 8160000, 4031170, 1, 1, 7100, 500000), +(10292, 8170000, 4031170, 1, 1, 7100, 500000), +(10293, 9500127, 4031170, 1, 1, 7100, 500000), +(10294, 9500135, 4031170, 1, 1, 7100, 500000), +(10295, 9500136, 4031170, 1, 1, 7100, 500000), +(10296, 9500137, 4031170, 1, 1, 7100, 500000), +(10297, 7130300, 4031171, 1, 1, 7101, 400000), +(10298, 7160000, 4031171, 1, 1, 7101, 400000), +(10299, 6130200, 4031175, 1, 1, 7101, 300000), +(10300, 6230300, 4031175, 1, 1, 7101, 300000), +(10301, 6230400, 4031175, 1, 1, 7101, 300000), +(10302, 6230500, 4031175, 1, 1, 7101, 300000), +(10303, 6300100, 4031175, 1, 1, 7101, 350000), +(10304, 6400100, 4031175, 1, 1, 7101, 350000), +(10305, 7130010, 4031175, 1, 1, 7101, 400000), +(10306, 7130300, 4031175, 1, 1, 7101, 400000), +(10307, 7140000, 4031175, 1, 1, 7101, 400000), +(10308, 8140200, 4031175, 1, 1, 7101, 350000), +(10309, 8140300, 4031175, 1, 1, 7101, 350000), +(10310, 8141000, 4031175, 1, 1, 7101, 450000), +(10311, 8141100, 4031175, 1, 1, 7101, 450000), +(10312, 8142000, 4031175, 1, 1, 7101, 450000), +(10313, 8143000, 4031175, 1, 1, 7101, 450000), +(10314, 8160000, 4031175, 1, 1, 7101, 600000), +(10315, 8170000, 4031175, 1, 1, 7101, 600000), +(10316, 9500127, 4031175, 1, 1, 7101, 300000), +(10317, 9500135, 4031175, 1, 1, 7101, 400000), +(10318, 9500136, 4031175, 1, 1, 7101, 450000), +(10319, 9500137, 4031175, 1, 1, 7101, 450000), +(10320, 8141100, 4031176, 1, 1, 7104, 50000), +(10321, 8143000, 4031176, 1, 1, 7104, 50000), +(10322, 9500136, 4031176, 1, 1, 7104, 50000), +(10323, 9500137, 4031176, 1, 1, 7104, 50000), +(10324, 8141100, 4031177, 1, 1, 7104, 100000), +(10325, 8143000, 4031177, 1, 1, 7104, 100000), +(10326, 9500136, 4031177, 1, 1, 7104, 100000), +(10327, 9500137, 4031177, 1, 1, 7104, 100000), +(10328, 8141100, 4031178, 1, 1, 7104, 10000), +(10329, 8143000, 4031178, 1, 1, 7104, 10000), +(10330, 9500136, 4031178, 1, 1, 7104, 10000), +(10331, 9500137, 4031178, 1, 1, 7104, 10000), +(10332, 8160000, 4031172, 1, 1, 7103, 50000), +(10333, 8170000, 4031172, 1, 1, 7103, 50000), +(10334, 8141000, 4031193, 1, 1, 3446, 60000), +(10335, 7130501, 4031412, 1, 1, 3712, 100000), +(10336, 8140111, 4031413, 1, 1, 3712, 100000), +(10337, 8150201, 4031414, 1, 1, 3712, 100000), +(10338, 8150302, 4031415, 1, 1, 3712, 100000), +(10339, 8180000, 4001076, 1, 1, 7301, 1000000), +(10340, 8180000, 4001076, 1, 1, 7301, 1000000), +(10341, 8180000, 4001076, 1, 1, 7301, 1000000), +(10342, 8150200, 4001075, 1, 1, 7301, 50000), +(10343, 8150201, 4001075, 1, 1, 7301, 50000), +(10344, 8150300, 4001077, 1, 1, 7301, 60000), +(10345, 8150301, 4001077, 1, 1, 7301, 60000), +(10346, 8150302, 4001077, 1, 1, 7301, 60000), +(10347, 8150200, 4001079, 1, 1, 7301, 60000), +(10348, 8180000, 4001104, 1, 1, 7303, 1000000), +(10349, 8180000, 4001104, 1, 1, 7303, 1000000), +(10350, 8180000, 4001104, 1, 1, 7303, 1000000), +(10351, 8150200, 4001103, 1, 1, 7303, 50000), +(10352, 8150201, 4001103, 1, 1, 7303, 50000), +(10353, 8150300, 4001105, 1, 1, 7303, 60000), +(10354, 8150301, 4001105, 1, 1, 7303, 60000), +(10355, 8150302, 4001105, 1, 1, 7303, 60000), +(10356, 8150200, 4001079, 1, 1, 7303, 60000), +(10357, 8180000, 4031343, 1, 1, 6904, 400000), +(10358, 8180001, 4031344, 1, 1, 6904, 400000), +(10359, 8180000, 4031511, 1, 1, 6914, 400000), +(10360, 8180001, 4031512, 1, 1, 6914, 400000), +(10361, 8180000, 4031514, 1, 1, 6924, 400000), +(10362, 8180001, 4031515, 1, 1, 6924, 400000), +(10363, 8180000, 4031517, 1, 1, 6934, 400000), +(10364, 8180001, 4031518, 1, 1, 6934, 400000), +(10365, 8180000, 4031860, 1, 1, 6944, 400000), +(10366, 8180001, 4031861, 1, 1, 6944, 400000), +(10367, 8140101, 4031465, 1, 1, 6250, 5000), +(10368, 8140101, 4031487, 1, 1, 6251, 5000), +(10369, 8140102, 4031465, 1, 1, 6250, 5000), +(10370, 8140102, 4031487, 1, 1, 6251, 5000), +(10371, 8140103, 4031465, 1, 1, 6250, 5000), +(10372, 8140103, 4031487, 1, 1, 6251, 5000), +(10373, 8140101, 4031487, 1, 1, 6251, 5000), +(10374, 8150300, 4031449, 1, 1, 6120, 60000), +(10375, 8150300, 4031449, 1, 1, 6120, 60000), +(10376, 8150300, 4031449, 1, 1, 6120, 60000), +(10377, 8150301, 4031449, 1, 1, 6120, 60000), +(10378, 8150301, 4031449, 1, 1, 6120, 60000), +(10379, 8150301, 4031449, 1, 1, 6120, 60000), +(10380, 8150302, 4031449, 1, 1, 6120, 60000), +(10381, 8150302, 4031449, 1, 1, 6120, 60000), +(10382, 8150302, 4031449, 1, 1, 6120, 60000), +(10383, 8150300, 4031482, 1, 1, 6121, 20000), +(10384, 8150300, 4031482, 1, 1, 6121, 20000), +(10385, 8150300, 4031482, 1, 1, 6121, 20000), +(10386, 8150301, 4031482, 1, 1, 6121, 20000), +(10387, 8150301, 4031482, 1, 1, 6121, 20000), +(10388, 8150301, 4031482, 1, 1, 6121, 20000), +(10389, 8150302, 4031482, 1, 1, 6121, 20000), +(10390, 8150302, 4031482, 1, 1, 6121, 20000), +(10391, 8150302, 4031482, 1, 1, 6121, 20000), +(10392, 8150300, 4031483, 1, 1, 6122, 20000), +(10393, 8150300, 4031483, 1, 1, 6122, 20000), +(10394, 8150300, 4031483, 1, 1, 6122, 20000), +(10395, 8150301, 4031483, 1, 1, 6122, 20000), +(10396, 8150301, 4031483, 1, 1, 6122, 20000), +(10397, 8150301, 4031483, 1, 1, 6122, 20000), +(10398, 8150302, 4031483, 1, 1, 6122, 20000), +(10399, 8150302, 4031483, 1, 1, 6122, 20000), +(10400, 8150302, 4031483, 1, 1, 6122, 20000), +(10401, 8150300, 4031484, 1, 1, 6123, 20000), +(10402, 8150300, 4031484, 1, 1, 6123, 20000), +(10403, 8150300, 4031484, 1, 1, 6123, 20000), +(10404, 8150301, 4031484, 1, 1, 6123, 20000), +(10405, 8150301, 4031484, 1, 1, 6123, 20000), +(10406, 8150301, 4031484, 1, 1, 6123, 20000), +(10407, 8150302, 4031484, 1, 1, 6123, 20000), +(10408, 8150302, 4031484, 1, 1, 6123, 20000), +(10409, 8150302, 4031484, 1, 1, 6123, 20000), +(10410, 8150300, 4031485, 1, 1, 6124, 20000), +(10411, 8150300, 4031485, 1, 1, 6124, 20000), +(10412, 8150300, 4031485, 1, 1, 6124, 20000), +(10413, 8150301, 4031485, 1, 1, 6124, 20000), +(10414, 8150301, 4031485, 1, 1, 6124, 20000), +(10415, 8150301, 4031485, 1, 1, 6124, 20000), +(10416, 8150302, 4031485, 1, 1, 6124, 20000), +(10417, 8150302, 4031485, 1, 1, 6124, 20000), +(10418, 8150302, 4031485, 1, 1, 6124, 20000), +(10419, 8130100, 4031466, 1, 1, 6107, 500000), +(10420, 7130101, 4031466, 1, 1, 6107, 80000), +(10421, 7130100, 4031466, 1, 1, 6107, 80000), +(10422, 6230100, 4031466, 1, 1, 6107, 30000), +(10423, 9300100, 4031470, 1, 1, 6225, 250000), +(10424, 9300086, 4031470, 1, 1, 6225, 250000), +(10425, 9300100, 4031469, 1, 1, 6315, 250000), +(10426, 9300086, 4031469, 1, 1, 6315, 250000), +(10427, 8160000, 4031474, 1, 1, 6295, 50000), +(10428, 8160000, 4031473, 1, 1, 6226, 20000), +(10429, 8160000, 4031496, 1, 1, 6316, 20000), +(10430, 9300079, 4031461, 1, 1, 6169, 30000), +(10431, 9300078, 4031461, 1, 1, 6169, 30000), +(10432, 9300077, 4031461, 1, 1, 6169, 30000), +(10433, 9300076, 4031461, 1, 1, 6169, 30000), +(10434, 9300075, 4031461, 1, 1, 6169, 30000), +(10435, 9300074, 4031461, 1, 1, 6169, 30000), +(10436, 9300073, 4031461, 1, 1, 6169, 30000), +(10437, 9300072, 4031461, 1, 1, 6169, 30000), +(10438, 9300071, 4031461, 1, 1, 6169, 30000), +(10439, 9300070, 4031461, 1, 1, 6169, 30000), +(10440, 9300069, 4031461, 1, 1, 6169, 30000), +(10441, 9300068, 4031461, 1, 1, 6169, 30000), +(10442, 9300067, 4031461, 1, 1, 6169, 30000), +(10443, 9300066, 4031461, 1, 1, 6169, 30000), +(10444, 9300065, 4031461, 1, 1, 6169, 30000), +(10445, 9300274, 4032190, 1, 1, 20705, 50000), +(10446, 9300274, 4032314, 1, 1, 21709, 150000), +(10447, 1210102, 4032314, 1, 1, 21709, 150000), +(10448, 1210100, 4032340, 1, 1, 21710, 200000), +(10449, 9300274, 4032315, 1, 1, 21711, 50000), +(10450, 1110130, 4032316, 1, 1, 21714, 50000), +(10451, 100121, 4000483, 1, 1, 0, 400000), +(10452, 9001011, 4032096, 1, 1, 20201, 700000), +(10453, 9001011, 4032097, 1, 1, 20202, 700000), +(10454, 9001011, 4032098, 1, 1, 20203, 700000), +(10455, 9001011, 4032099, 1, 1, 20204, 700000), +(10456, 9001011, 4032100, 1, 1, 20205, 700000), +(10457, 9001009, 4032101, 1, 1, 20301, 700000), +(10458, 9001009, 4032102, 1, 1, 20302, 700000), +(10459, 9001009, 4032103, 1, 1, 20303, 700000), +(10460, 9001009, 4032104, 1, 1, 20304, 700000), +(10461, 9001009, 4032105, 1, 1, 20305, 700000), +(10462, 9300289, 4032120, 1, 1, 20601, 999999), +(10463, 9300289, 4032121, 1, 1, 20602, 999999), +(10464, 9300289, 4032122, 1, 1, 20603, 999999), +(10465, 9300289, 4032123, 1, 1, 20604, 999999), +(10466, 9300289, 4032124, 1, 1, 20605, 999999), +(10467, 9300294, 4032125, 1, 1, 20611, 999999), +(10468, 9300294, 4032126, 1, 1, 20612, 999999), +(10469, 9300294, 4032127, 1, 1, 20613, 999999), +(10470, 9300294, 4032128, 1, 1, 20614, 999999), +(10471, 9300294, 4032129, 1, 1, 20615, 999999), +(10472, 8200011, 2290048, 1, 1, 0, 600), +(10473, 8200011, 2290040, 1, 1, 0, 600), +(10474, 9420549, 2280010, 1, 1, 0, 50000), +(10475, 9420549, 2280009, 1, 1, 0, 70000), +(10476, 9420549, 2280008, 1, 1, 0, 50000), +(10477, 9420549, 2280007, 1, 1, 0, 50000), +(10478, 9420544, 2280010, 1, 1, 0, 70000), +(10479, 9420544, 2280009, 1, 1, 0, 90000), +(10480, 9420544, 2280008, 1, 1, 0, 70000), +(10481, 9420544, 2280007, 1, 1, 0, 70000), +(10482, 8520000, 2280010, 1, 1, 0, 30000), +(10483, 8520000, 2280009, 1, 1, 0, 50000), +(10484, 8520000, 2280008, 1, 1, 0, 30000), +(10485, 8520000, 2280007, 1, 1, 0, 30000), +(10486, 8510000, 2280010, 1, 1, 0, 30000), +(10487, 8510000, 2280009, 1, 1, 0, 50000), +(10488, 8510000, 2280008, 1, 1, 0, 30000), +(10489, 8510000, 2280007, 1, 1, 0, 30000), +(10490, 8500002, 2280010, 1, 1, 0, 35000), +(10491, 8500002, 2280009, 1, 1, 0, 50000), +(10492, 8500002, 2280008, 1, 1, 0, 35000), +(10493, 8500002, 2280007, 1, 1, 0, 35000), +(10494, 8140701, 4031872, 1, 1, 6340, 60000), +(10495, 8140700, 4031871, 1, 1, 6350, 60000), +(10496, 8500002, 4031869, 1, 1, 6360, 999999), +(10497, 8141000, 4031873, 1, 1, 6380, 60000), +(10498, 8141100, 4031874, 1, 1, 6390, 60000), +(10499, 7130101, 4001112, 1, 1, 0, 1000), +(10500, 8170000, 4001112, 1, 1, 0, 1500), +(10501, 5130107, 4001107, 1, 1, 0, 1000), +(10502, 8143000, 4001107, 1, 1, 0, 1500), +(10503, 7160000, 4001110, 1, 1, 0, 1000), +(10504, 8150100, 4161018, 1, 1, 0, 1000), +(10505, 7130000, 4161021, 1, 1, 0, 1000), +(10506, 8150000, 4001111, 1, 1, 0, 999999), +(10507, 8140000, 4031477, 1, 1, 0, 10000), +(10508, 8170000, 4031453, 1, 1, 6291, 50000), +(10509, 8160000, 4031474, 1, 1, 6295, 50000), +(10510, 8180001, 4031479, 1, 1, 6151, 999999), +(10511, 8130100, 4031475, 1, 1, 6153, 999999), +(10512, 8140000, 4031460, 1, 1, 6168, 10000), +(10513, 8180001, 4031457, 1, 1, 6231, 400000), +(10514, 8170000, 4031458, 1, 1, 6231, 10000), +(10515, 6130104, 4031459, 1, 1, 6231, 500000), +(10516, 9300094, 2280004, 1, 1, 0, 7000), +(10517, 9300095, 2280004, 1, 1, 0, 7000), +(10518, 9300094, 2280005, 1, 1, 0, 7000), +(10519, 9300095, 2280005, 1, 1, 0, 7000), +(10520, 9300094, 2280006, 1, 1, 0, 7000), +(10521, 9300095, 2280006, 1, 1, 0, 7000), +(10522, 8500002, 4001084, 1, 1, 0, 999999), +(10523, 8800002, 4001083, 1, 1, 0, 999999), +(10524, 9300367, 2022179, 1, 1, 0, 300000), +(10525, 9300368, 2022179, 1, 1, 0, 300000), +(10526, 9300369, 2022179, 1, 1, 0, 300000), +(10527, 9300370, 2022179, 1, 1, 0, 300000), +(10528, 9300371, 2022179, 1, 1, 0, 300000), +(10529, 9300372, 2022179, 1, 1, 0, 300000), +(10530, 9300373, 2022179, 1, 1, 0, 300000), +(10531, 9300374, 2022179, 1, 1, 0, 300000), +(10532, 9300375, 2022179, 1, 1, 0, 300000), +(10533, 9300376, 2022179, 1, 1, 0, 300000), +(10534, 9300377, 2022179, 1, 1, 0, 300000), +(10535, 9300367, 1002971, 1, 1, 0, 40000), +(10536, 9300368, 1002971, 1, 1, 0, 40000), +(10537, 9300369, 1002971, 1, 1, 0, 40000), +(10538, 9300370, 1002971, 1, 1, 0, 40000), +(10539, 9300371, 1002971, 1, 1, 0, 40000), +(10540, 9300372, 1002971, 1, 1, 0, 40000), +(10541, 9300373, 1002971, 1, 1, 0, 40000), +(10542, 9300374, 1002971, 1, 1, 0, 40000), +(10543, 9300375, 1002971, 1, 1, 0, 40000), +(10544, 9300376, 1002971, 1, 1, 0, 40000), +(10545, 9300377, 1002971, 1, 1, 0, 40000), +(10546, 9300367, 1442046, 1, 1, 0, 30000), +(10547, 9300368, 1442046, 1, 1, 0, 30000), +(10548, 9300369, 1442046, 1, 1, 0, 30000), +(10549, 9300370, 1442046, 1, 1, 0, 30000), +(10550, 9300371, 1442046, 1, 1, 0, 30000), +(10551, 9300372, 1442046, 1, 1, 0, 30000), +(10552, 9300373, 1442046, 1, 1, 0, 30000), +(10553, 9300374, 1442046, 1, 1, 0, 30000), +(10554, 9300375, 1442046, 1, 1, 0, 30000), +(10555, 9300376, 1442046, 1, 1, 0, 30000), +(10556, 9300377, 1442046, 1, 1, 0, 30000), +(10557, 9300367, 1442057, 1, 1, 0, 40000), +(10558, 9300368, 1442057, 1, 1, 0, 40000), +(10559, 9300369, 1442057, 1, 1, 0, 40000), +(10560, 9300370, 1442057, 1, 1, 0, 40000), +(10561, 9300371, 1442057, 1, 1, 0, 40000), +(10562, 9300372, 1442057, 1, 1, 0, 40000), +(10563, 9300373, 1442057, 1, 1, 0, 40000), +(10564, 9300374, 1442057, 1, 1, 0, 40000), +(10565, 9300375, 1442057, 1, 1, 0, 40000), +(10566, 9300376, 1442057, 1, 1, 0, 40000), +(10567, 9300377, 1442057, 1, 1, 0, 40000), +(10568, 8200001, 4020009, 1, 1, 0, 1000), +(10569, 8200002, 4020009, 1, 1, 0, 1000), +(10570, 8200003, 4020009, 1, 1, 0, 1000), +(10571, 8200004, 4020009, 1, 1, 0, 1000), +(10572, 8200005, 4020009, 1, 1, 0, 1000), +(10573, 8200006, 4020009, 1, 1, 0, 1000), +(10574, 8200007, 4020009, 1, 1, 0, 1000), +(10575, 8200008, 4020009, 1, 1, 0, 1000), +(10576, 8200009, 4020009, 1, 1, 0, 1000), +(10577, 8200010, 4020009, 1, 1, 0, 1000), +(10578, 8200011, 4020009, 1, 1, 0, 1000), +(10579, 8200012, 4020009, 1, 1, 0, 1000), +(10580, 9300000, 4001008, 1, 1, 0, 999999), +(10581, 9300001, 4001007, 1, 1, 0, 200000), +(10582, 9300002, 4001008, 1, 1, 0, 999999), +(10583, 9300003, 4001008, 1, 1, 0, 999999), +(11218, 4230109, 1452016, 1, 1, 0, 700), +(10585, 9300005, 4001022, 1, 1, 0, 999999), +(10586, 9300006, 4001022, 1, 1, 0, 999999), +(10587, 9300007, 4001022, 1, 1, 0, 999999), +(10588, 9300008, 4001022, 1, 1, 0, 999999), +(10589, 9300014, 4001022, 1, 1, 0, 999999), +(10590, 9300010, 4001022, 1, 1, 0, 999999), +(10591, 9300012, 4001023, 1, 1, 0, 999999), +(10592, 9300170, 4001156, 1, 1, 0, 999999), +(10593, 9300171, 4001156, 1, 1, 0, 999999), +(10594, 9300169, 4001156, 1, 1, 0, 999999), +(10595, 9000100, 4031013, 1, 1, 0, 300000), +(10596, 9000101, 4031013, 1, 1, 0, 300000), +(10597, 9000000, 4031013, 1, 1, 0, 300000), +(10598, 9000001, 4031013, 1, 1, 0, 300000), +(10599, 9000200, 4031013, 1, 1, 0, 300000), +(10600, 9000201, 4031013, 1, 1, 0, 300000), +(10601, 9000300, 4031013, 1, 1, 0, 300000), +(10602, 9000301, 4031013, 1, 1, 0, 300000), +(10603, 8180000, 4031511, 1, 1, 6904, 600000), +(10604, 8180001, 4031511, 1, 1, 6904, 600000), +(10605, 9400407, 4000343, 1, 1, 0, 100000), +(10606, 9300018, 4031802, 1, 1, 1035, 999999), +(10607, 6110301, 4031745, 1, 1, 3358, 5000), +(10608, 9302010, 2022524, 1, 1, 0, 100000), +(10609, 9400256, 4032192, 1, 1, 0, 50000), +(10610, 9400257, 4032192, 1, 1, 0, 50000), +(10611, 9410066, 5490001, 1, 1, 0, 700000), +(10612, 9410066, 5490001, 1, 1, 0, 700000), +(10613, 9410066, 5490000, 1, 1, 0, 300000), +(10614, 9410066, 4000306, 1, 1, 0, 700000), +(10615, 9410066, 4000306, 1, 1, 0, 700000), +(10616, 9410066, 4000306, 1, 1, 0, 700000), +(10617, 9410066, 4000306, 1, 1, 0, 700000), +(10618, 9410066, 4000306, 1, 1, 0, 700000), +(10619, 9410066, 4000306, 1, 1, 0, 700000), +(10620, 9410066, 4000306, 1, 1, 0, 700000), +(10621, 9410066, 4000306, 1, 1, 0, 700000), +(10622, 9410066, 4000306, 1, 1, 0, 700000), +(10623, 9410066, 4000306, 1, 1, 0, 700000), +(10624, 9410066, 4000306, 1, 1, 0, 700000), +(10625, 9410066, 4000306, 1, 1, 0, 700000), +(10626, 9410066, 4000306, 1, 1, 0, 700000), +(10627, 9410066, 4000306, 1, 1, 0, 700000), +(10628, 9410066, 4000306, 1, 1, 0, 700000), +(10629, 9410066, 4000306, 1, 1, 0, 700000), +(10630, 9410066, 4000306, 1, 1, 0, 700000), +(10631, 9410066, 4000306, 1, 1, 0, 700000), +(10632, 9410066, 4000306, 1, 1, 0, 700000), +(10633, 9410066, 4000306, 1, 1, 0, 700000), +(10634, 9420015, 2022042, 1, 1, 0, 700000), +(10635, 9420015, 2022042, 1, 1, 0, 700000), +(10636, 9420015, 2022042, 1, 1, 0, 700000), +(10637, 9420015, 2022042, 1, 1, 0, 700000), +(10638, 9420015, 2022042, 1, 1, 0, 700000), +(10639, 9420015, 4032176, 1, 1, 0, 700000), +(10640, 9420015, 4032176, 1, 1, 0, 700000), +(10641, 9420015, 4032176, 1, 1, 0, 700000), +(10642, 9420015, 4032176, 1, 1, 0, 700000), +(10643, 9420015, 4032176, 1, 1, 0, 700000), +(10644, 9420015, 4032176, 1, 1, 0, 700000), +(10645, 9420015, 4032176, 1, 1, 0, 700000), +(10646, 9420015, 4032176, 1, 1, 0, 700000), +(10647, 9420015, 4032176, 1, 1, 0, 700000), +(10648, 9420015, 4032176, 1, 1, 0, 700000), +(10649, 9420015, 4032176, 1, 1, 0, 700000), +(10650, 9420015, 4032176, 1, 1, 0, 700000), +(10651, 9420015, 4032176, 1, 1, 0, 700000), +(10652, 9420015, 4032176, 1, 1, 0, 700000), +(10653, 9420015, 4032176, 1, 1, 0, 700000), +(10654, 9420015, 4032176, 1, 1, 0, 700000), +(10655, 9420015, 4032176, 1, 1, 0, 700000), +(10656, 9420015, 4032176, 1, 1, 0, 700000), +(10657, 9420015, 4032176, 1, 1, 0, 700000), +(10658, 9420015, 4032176, 1, 1, 0, 700000), +(10659, 9420015, 4000420, 1, 1, 0, 700000), +(10660, 9420015, 4000420, 1, 1, 0, 700000), +(10661, 9420015, 4000420, 1, 1, 0, 700000), +(10662, 9420015, 4000420, 1, 1, 0, 700000), +(10663, 9420015, 4000420, 1, 1, 0, 700000), +(10664, 9420015, 4000420, 1, 1, 0, 700000), +(10665, 9420015, 4000420, 1, 1, 0, 700000), +(10666, 9420015, 4000420, 1, 1, 0, 700000), +(10667, 9420015, 4000420, 1, 1, 0, 700000), +(10668, 9420015, 4000420, 1, 1, 0, 700000), +(10669, 9420015, 4000420, 1, 1, 0, 700000), +(10670, 9420015, 4000420, 1, 1, 0, 700000), +(10671, 9420015, 4000420, 1, 1, 0, 700000), +(10672, 9420015, 4000420, 1, 1, 0, 700000), +(10673, 9420015, 4000420, 1, 1, 0, 700000), +(10674, 9420015, 4000420, 1, 1, 0, 700000), +(10675, 9420015, 4000420, 1, 1, 0, 700000), +(10676, 9420015, 4000420, 1, 1, 0, 700000), +(10677, 9420015, 4000420, 1, 1, 0, 700000), +(10678, 9420015, 4000420, 1, 1, 0, 700000), +(10679, 9420015, 4000420, 1, 1, 0, 700000), +(10680, 9420015, 4000420, 1, 1, 0, 700000), +(10681, 9420015, 4000420, 1, 1, 0, 700000), +(10682, 9420015, 4000420, 1, 1, 0, 700000), +(10683, 9420015, 4000420, 1, 1, 0, 700000), +(10684, 9420015, 4000420, 1, 1, 0, 700000), +(10685, 9420015, 4000420, 1, 1, 0, 700000), +(10686, 9420015, 4000420, 1, 1, 0, 700000), +(10687, 9420015, 4000420, 1, 1, 0, 700000), +(10688, 9420015, 4000420, 1, 1, 0, 700000), +(10689, 9420015, 4000420, 1, 1, 0, 700000), +(10690, 9420015, 4000420, 1, 1, 0, 700000), +(10691, 9420015, 4000420, 1, 1, 0, 700000), +(10692, 9420015, 4000420, 1, 1, 0, 700000), +(10693, 9420015, 4000420, 1, 1, 0, 700000), +(10694, 9420015, 4000420, 1, 1, 0, 700000), +(10695, 9420015, 4000420, 1, 1, 0, 700000), +(10696, 9420015, 4000420, 1, 1, 0, 700000), +(10697, 9420015, 4000420, 1, 1, 0, 700000), +(10698, 9420015, 4000420, 1, 1, 0, 700000), +(10699, 9420015, 4000421, 1, 1, 0, 700000), +(10700, 9420015, 4000421, 1, 1, 0, 700000), +(10701, 9420015, 4000421, 1, 1, 0, 700000), +(10702, 9420015, 4000421, 1, 1, 0, 700000), +(10703, 9420015, 4000421, 1, 1, 0, 700000), +(10704, 9420015, 4000421, 1, 1, 0, 700000), +(10705, 9420015, 4000421, 1, 1, 0, 700000), +(10706, 9420015, 4000421, 1, 1, 0, 700000), +(10707, 9420015, 4000421, 1, 1, 0, 700000), +(10708, 9420015, 4000421, 1, 1, 0, 700000), +(10709, 9420015, 4000421, 1, 1, 0, 700000), +(10710, 9420015, 4000421, 1, 1, 0, 700000), +(10711, 9420015, 4000421, 1, 1, 0, 700000), +(10712, 9420015, 4000421, 1, 1, 0, 700000), +(10713, 9420015, 4000421, 1, 1, 0, 700000), +(10714, 9420015, 4000421, 1, 1, 0, 700000), +(10715, 9420015, 4000421, 1, 1, 0, 700000), +(10716, 9420015, 4000421, 1, 1, 0, 700000), +(10717, 9420015, 4000421, 1, 1, 0, 700000), +(10718, 9420015, 4000421, 1, 1, 0, 700000), +(10719, 9420015, 4000421, 1, 1, 0, 700000), +(10720, 9420015, 4000421, 1, 1, 0, 700000), +(10721, 9420015, 4000421, 1, 1, 0, 700000), +(10722, 9420015, 4000421, 1, 1, 0, 700000), +(10723, 9420015, 4000421, 1, 1, 0, 700000), +(10724, 9420015, 4000421, 1, 1, 0, 700000), +(10725, 9420015, 4000421, 1, 1, 0, 700000), +(10726, 9420015, 4000421, 1, 1, 0, 700000), +(10727, 9420015, 4000421, 1, 1, 0, 700000), +(10728, 9420015, 4000421, 1, 1, 0, 700000), +(10729, 9420015, 4000421, 1, 1, 0, 700000), +(10730, 9420015, 4000421, 1, 1, 0, 700000), +(10731, 9420015, 4000421, 1, 1, 0, 700000), +(10732, 9420015, 4000421, 1, 1, 0, 700000), +(10733, 9420015, 4000421, 1, 1, 0, 700000), +(10734, 9420015, 4000421, 1, 1, 0, 700000), +(10735, 9420015, 4000421, 1, 1, 0, 700000), +(10736, 9420015, 4000421, 1, 1, 0, 700000), +(10737, 9420015, 4000421, 1, 1, 0, 700000), +(10738, 9420015, 4000421, 1, 1, 0, 700000), +(10739, 9400569, 2022311, 1, 4, 0, 700000), +(10740, 9400569, 2020017, 1, 4, 0, 700000), +(10741, 9400569, 2020018, 1, 4, 0, 700000), +(10742, 9400569, 2022310, 1, 4, 0, 700000), +(10743, 9400569, 2022456, 1, 4, 0, 700000), +(10744, 9400569, 2020014, 1, 4, 0, 700000), +(10745, 9400569, 2020015, 1, 4, 0, 700000), +(10746, 9400569, 2002001, 1, 4, 0, 700000), +(10747, 9400569, 2002005, 1, 4, 0, 700000), +(10748, 9400569, 2002003, 1, 4, 0, 700000), +(10749, 9400569, 2002205, 1, 4, 0, 700000), +(10750, 9500168, 2022311, 1, 4, 0, 700000), +(10751, 9500168, 2020017, 1, 4, 0, 700000), +(10752, 9500168, 2020018, 1, 4, 0, 700000), +(10753, 9500168, 2022310, 1, 4, 0, 700000), +(10754, 9500168, 2022456, 1, 4, 0, 700000), +(10755, 9500168, 2020014, 1, 4, 0, 700000), +(10756, 9500168, 2020015, 1, 4, 0, 700000), +(10757, 9500168, 2002001, 1, 4, 0, 700000), +(10758, 9500168, 2002005, 1, 4, 0, 700000), +(10759, 9500168, 2002003, 1, 4, 0, 700000), +(10760, 9500168, 2002205, 1, 4, 0, 700000), +(10761, 9500169, 2022311, 1, 4, 0, 700000), +(10762, 9500169, 2020017, 1, 4, 0, 700000), +(10763, 9500169, 2020018, 1, 4, 0, 700000), +(10764, 9500169, 2022310, 1, 4, 0, 700000), +(10765, 9500169, 2022456, 1, 4, 0, 700000), +(10766, 9500169, 2020014, 1, 4, 0, 700000), +(10767, 9500169, 2020015, 1, 4, 0, 700000), +(10768, 9500169, 2002001, 1, 4, 0, 700000), +(10769, 9500169, 2002005, 1, 4, 0, 700000), +(10770, 9500169, 2002003, 1, 4, 0, 700000), +(10771, 9500169, 2002205, 1, 4, 0, 700000), +(10772, 9500170, 2022311, 1, 4, 0, 700000), +(10773, 9500170, 2020017, 1, 4, 0, 700000), +(10774, 9500170, 2020018, 1, 4, 0, 700000), +(10775, 9500170, 2022310, 1, 4, 0, 700000), +(10776, 9500170, 2022456, 1, 4, 0, 700000), +(10777, 9500170, 2020014, 1, 4, 0, 700000), +(10778, 9500170, 2020015, 1, 4, 0, 700000), +(10779, 9500170, 2002001, 1, 4, 0, 700000), +(10780, 9500170, 2002005, 1, 4, 0, 700000), +(10781, 9500170, 2002003, 1, 4, 0, 700000), +(10782, 9500170, 2002205, 1, 4, 0, 700000), +(10783, 9500171, 2022311, 1, 4, 0, 700000), +(10784, 9500171, 2020017, 1, 4, 0, 700000), +(10785, 9500171, 2020018, 1, 4, 0, 700000), +(10786, 9500171, 2022310, 1, 4, 0, 700000), +(10787, 9500171, 2022456, 1, 4, 0, 700000), +(10788, 9500171, 2020014, 1, 4, 0, 700000), +(10789, 9500171, 2020015, 1, 4, 0, 700000), +(10790, 9500171, 2002001, 1, 4, 0, 700000), +(10791, 9500171, 2002005, 1, 4, 0, 700000), +(10792, 9500171, 2002003, 1, 4, 0, 700000), +(10793, 9500171, 2002205, 1, 4, 0, 700000), +(10794, 9500172, 2022311, 1, 4, 0, 700000), +(10795, 9500172, 2020017, 1, 4, 0, 700000), +(10796, 9500172, 2020018, 1, 4, 0, 700000), +(10797, 9500172, 2022310, 1, 4, 0, 700000), +(10798, 9500172, 2022456, 1, 4, 0, 700000), +(10799, 9500172, 2020014, 1, 4, 0, 700000), +(10800, 9500172, 2020015, 1, 4, 0, 700000), +(10801, 9500172, 2002001, 1, 4, 0, 700000), +(10802, 9500172, 2002005, 1, 4, 0, 700000), +(10803, 9500172, 2002003, 1, 4, 0, 700000), +(10804, 9500172, 2002205, 1, 4, 0, 700000), +(10805, 9500173, 2022311, 1, 4, 0, 700000), +(10806, 9500173, 2020017, 1, 4, 0, 700000), +(10807, 9500173, 2020018, 1, 4, 0, 700000), +(10808, 9500173, 2022310, 1, 4, 0, 700000), +(10809, 9500173, 2022456, 1, 4, 0, 700000), +(10810, 9500173, 2020014, 1, 4, 0, 700000), +(10811, 9500173, 2020015, 1, 4, 0, 700000), +(10812, 9500173, 2002001, 1, 4, 0, 700000), +(10813, 9500173, 2002005, 1, 4, 0, 700000), +(10814, 9500173, 2002003, 1, 4, 0, 700000), +(10815, 9500173, 2002205, 1, 4, 0, 700000), +(10816, 9500174, 2022311, 1, 4, 0, 700000), +(10817, 9500174, 2020017, 1, 4, 0, 700000), +(10818, 9500174, 2020018, 1, 4, 0, 700000), +(10819, 9500174, 2022310, 1, 4, 0, 700000), +(10820, 9500174, 2022456, 1, 4, 0, 700000), +(10821, 9500174, 2020014, 1, 4, 0, 700000), +(10822, 9500174, 2020015, 1, 4, 0, 700000), +(10823, 9500174, 2002001, 1, 4, 0, 700000), +(10824, 9500174, 2002005, 1, 4, 0, 700000), +(10825, 9500174, 2002003, 1, 4, 0, 700000), +(10826, 9500174, 2002205, 1, 4, 0, 700000), +(10827, 9500175, 2022311, 1, 4, 0, 700000), +(10828, 9500175, 2020017, 1, 4, 0, 700000), +(10829, 9500175, 2020018, 1, 4, 0, 700000), +(10830, 9500175, 2022310, 1, 4, 0, 700000), +(10831, 9500175, 2022456, 1, 4, 0, 700000), +(10832, 9500175, 2020014, 1, 4, 0, 700000), +(10833, 9500175, 2020015, 1, 4, 0, 700000), +(10834, 9500175, 2002001, 1, 4, 0, 700000), +(10835, 9500175, 2002005, 1, 4, 0, 700000), +(10836, 9500175, 2002003, 1, 4, 0, 700000), +(10837, 9500175, 2002205, 1, 4, 0, 700000), +(10838, 9500176, 2022311, 1, 4, 0, 700000), +(10839, 9500176, 2020017, 1, 4, 0, 700000), +(10840, 9500176, 2020018, 1, 4, 0, 700000), +(10841, 9500176, 2022310, 1, 4, 0, 700000), +(10842, 9500176, 2022456, 1, 4, 0, 700000), +(10843, 9500176, 2020014, 1, 4, 0, 700000), +(10844, 9500176, 2020015, 1, 4, 0, 700000), +(10845, 9500176, 2002001, 1, 4, 0, 700000), +(10846, 9500176, 2002005, 1, 4, 0, 700000), +(10847, 9500176, 2002003, 1, 4, 0, 700000), +(10848, 9500176, 2002205, 1, 4, 0, 700000), +(10849, 9300217, 2022430, 1, 1, 0, 700000), +(10850, 9300217, 2022431, 1, 1, 0, 700000), +(10851, 9300217, 2022432, 1, 1, 0, 700000), +(10852, 9300217, 2022433, 1, 1, 0, 700000), +(10853, 9300218, 2022430, 1, 1, 0, 700000), +(10854, 9300218, 2022431, 1, 1, 0, 700000), +(10855, 9300218, 2022432, 1, 1, 0, 700000), +(10856, 9300218, 2022433, 1, 1, 0, 700000), +(10857, 9300219, 2022430, 1, 1, 0, 700000), +(10858, 9300219, 2022431, 1, 1, 0, 700000), +(10859, 9300219, 2022432, 1, 1, 0, 700000), +(10860, 9300219, 2022433, 1, 1, 0, 700000), +(10861, 9300220, 2022430, 1, 1, 0, 700000), +(10862, 9300220, 2022431, 1, 1, 0, 700000), +(10863, 9300220, 2022432, 1, 1, 0, 700000), +(10864, 9300220, 2022433, 1, 1, 0, 700000), +(10865, 9300221, 2022430, 1, 1, 0, 700000), +(10866, 9300221, 2022431, 1, 1, 0, 700000), +(10867, 9300221, 2022432, 1, 1, 0, 700000), +(10868, 9300221, 2022433, 1, 1, 0, 700000), +(10869, 9300222, 2022430, 1, 1, 0, 700000), +(10870, 9300222, 2022431, 1, 1, 0, 700000), +(10871, 9300222, 2022432, 1, 1, 0, 700000), +(10872, 9300222, 2022433, 1, 1, 0, 700000), +(10873, 9300223, 2022430, 1, 1, 0, 700000), +(10874, 9300223, 2022431, 1, 1, 0, 700000), +(10875, 9300223, 2022432, 1, 1, 0, 700000), +(10876, 9300223, 2022433, 1, 1, 0, 700000), +(10877, 9300224, 2022430, 1, 1, 0, 700000), +(10878, 9300224, 2022431, 1, 1, 0, 700000), +(10879, 9300224, 2022432, 1, 1, 0, 700000), +(10880, 9300224, 2022433, 1, 1, 0, 700000), +(10881, 9300225, 2022430, 1, 1, 0, 700000), +(10882, 9300225, 2022431, 1, 1, 0, 700000), +(10883, 9300225, 2022432, 1, 1, 0, 700000), +(10884, 9300225, 2022433, 1, 1, 0, 700000), +(10885, 9300226, 2022430, 1, 1, 0, 700000), +(10886, 9300226, 2022431, 1, 1, 0, 700000), +(10887, 9300226, 2022432, 1, 1, 0, 700000), +(10888, 9300226, 2022433, 1, 1, 0, 700000), +(10889, 9300227, 2022430, 1, 1, 0, 700000), +(10890, 9300227, 2022431, 1, 1, 0, 700000), +(10891, 9300227, 2022432, 1, 1, 0, 700000), +(10892, 9300227, 2022433, 1, 1, 0, 700000), +(10893, 9300228, 2022430, 1, 1, 0, 700000), +(10894, 9300228, 2022431, 1, 1, 0, 700000), +(10895, 9300228, 2022432, 1, 1, 0, 700000), +(10896, 9300228, 2022433, 1, 1, 0, 700000), +(10897, 9300229, 2022430, 1, 1, 0, 700000), +(10898, 9300229, 2022431, 1, 1, 0, 700000), +(10899, 9300229, 2022432, 1, 1, 0, 700000), +(10900, 9300229, 2022433, 1, 1, 0, 700000), +(10901, 9300230, 2022430, 1, 1, 0, 700000), +(10902, 9300230, 2022431, 1, 1, 0, 700000), +(10903, 9300230, 2022432, 1, 1, 0, 700000), +(10904, 9300230, 2022433, 1, 1, 0, 700000), +(10905, 9300231, 2022430, 1, 1, 0, 700000), +(10906, 9300231, 2022431, 1, 1, 0, 700000), +(10907, 9300231, 2022432, 1, 1, 0, 700000), +(10908, 9300231, 2022433, 1, 1, 0, 700000), +(10909, 9300232, 2022430, 1, 1, 0, 700000), +(10910, 9300232, 2022431, 1, 1, 0, 700000), +(10911, 9300232, 2022432, 1, 1, 0, 700000), +(10912, 9300232, 2022433, 1, 1, 0, 700000), +(10913, 9300233, 2022430, 1, 1, 0, 700000), +(10914, 9300233, 2022431, 1, 1, 0, 700000), +(10915, 9300233, 2022432, 1, 1, 0, 700000), +(10916, 9300233, 2022433, 1, 1, 0, 700000), +(10917, 9300234, 2022430, 1, 1, 0, 700000), +(10918, 9300234, 2022431, 1, 1, 0, 700000), +(10919, 9300234, 2022432, 1, 1, 0, 700000), +(10920, 9300234, 2022433, 1, 1, 0, 700000), +(10921, 9300235, 2022430, 1, 1, 0, 700000), +(10922, 9300235, 2022431, 1, 1, 0, 700000), +(10923, 9300235, 2022432, 1, 1, 0, 700000), +(10924, 9300235, 2022433, 1, 1, 0, 700000), +(10925, 9300236, 2022430, 1, 1, 0, 700000), +(10926, 9300236, 2022431, 1, 1, 0, 700000), +(10927, 9300236, 2022432, 1, 1, 0, 700000), +(10928, 9300236, 2022433, 1, 1, 0, 700000), +(10929, 9300237, 2022430, 1, 1, 0, 700000), +(10930, 9300237, 2022431, 1, 1, 0, 700000), +(10931, 9300237, 2022432, 1, 1, 0, 700000), +(10932, 9300237, 2022433, 1, 1, 0, 700000), +(10933, 9300238, 2022430, 1, 1, 0, 700000), +(10934, 9300238, 2022431, 1, 1, 0, 700000), +(10935, 9300238, 2022432, 1, 1, 0, 700000), +(10936, 9300238, 2022433, 1, 1, 0, 700000), +(10937, 9300239, 2022430, 1, 1, 0, 700000), +(10938, 9300239, 2022431, 1, 1, 0, 700000), +(10939, 9300239, 2022432, 1, 1, 0, 700000), +(10940, 9300239, 2022433, 1, 1, 0, 700000), +(10941, 9300240, 2022430, 1, 1, 0, 700000), +(10942, 9300240, 2022431, 1, 1, 0, 700000), +(10943, 9300240, 2022432, 1, 1, 0, 700000), +(10944, 9300240, 2022433, 1, 1, 0, 700000), +(10945, 9300241, 2022430, 1, 1, 0, 700000), +(10946, 9300241, 2022431, 1, 1, 0, 700000), +(10947, 9300241, 2022432, 1, 1, 0, 700000), +(10948, 9300241, 2022433, 1, 1, 0, 700000), +(10949, 9300242, 2022430, 1, 1, 0, 700000), +(10950, 9300242, 2022431, 1, 1, 0, 700000), +(10951, 9300242, 2022432, 1, 1, 0, 700000), +(10952, 9300242, 2022433, 1, 1, 0, 700000), +(10953, 9300243, 2022430, 1, 1, 0, 700000), +(10954, 9300243, 2022431, 1, 1, 0, 700000), +(10955, 9300243, 2022432, 1, 1, 0, 700000), +(10956, 9300243, 2022433, 1, 1, 0, 700000), +(10957, 9300244, 2022430, 1, 1, 0, 700000), +(10958, 9300244, 2022431, 1, 1, 0, 700000), +(10959, 9300244, 2022432, 1, 1, 0, 700000), +(10960, 9300244, 2022433, 1, 1, 0, 700000), +(10961, 9300245, 2022430, 1, 1, 0, 700000), +(10962, 9300245, 2022431, 1, 1, 0, 700000), +(10963, 9300245, 2022432, 1, 1, 0, 700000), +(10964, 9300245, 2022433, 1, 1, 0, 700000), +(10965, 9300246, 2022430, 1, 1, 0, 700000), +(10966, 9300246, 2022431, 1, 1, 0, 700000), +(10967, 9300246, 2022432, 1, 1, 0, 700000), +(10968, 9300246, 2022433, 1, 1, 0, 700000), +(10969, 9300247, 2022430, 1, 1, 0, 700000), +(10970, 9300247, 2022431, 1, 1, 0, 700000), +(10971, 9300247, 2022432, 1, 1, 0, 700000), +(10972, 9300247, 2022433, 1, 1, 0, 700000), +(10973, 9300248, 2022430, 1, 1, 0, 700000), +(10974, 9300248, 2022431, 1, 1, 0, 700000), +(10975, 9300248, 2022432, 1, 1, 0, 700000), +(10976, 9300248, 2022433, 1, 1, 0, 700000), +(10977, 9300249, 2022430, 1, 1, 0, 700000), +(10978, 9300249, 2022431, 1, 1, 0, 700000), +(10979, 9300249, 2022432, 1, 1, 0, 700000), +(10980, 9300249, 2022433, 1, 1, 0, 700000), +(10981, 9300250, 2022430, 1, 1, 0, 700000), +(10982, 9300250, 2022431, 1, 1, 0, 700000), +(10983, 9300250, 2022432, 1, 1, 0, 700000), +(10984, 9300250, 2022433, 1, 1, 0, 700000), +(10985, 9300251, 2022430, 1, 1, 0, 700000), +(10986, 9300251, 2022431, 1, 1, 0, 700000), +(10987, 9300251, 2022432, 1, 1, 0, 700000), +(10988, 9300251, 2022433, 1, 1, 0, 700000), +(10989, 9300252, 2022430, 1, 1, 0, 700000), +(10990, 9300252, 2022431, 1, 1, 0, 700000), +(10991, 9300252, 2022432, 1, 1, 0, 700000), +(10992, 9300252, 2022433, 1, 1, 0, 700000), +(10993, 9300253, 2022430, 1, 1, 0, 700000), +(10994, 9300253, 2022431, 1, 1, 0, 700000), +(10995, 9300253, 2022432, 1, 1, 0, 700000), +(10996, 9300253, 2022433, 1, 1, 0, 700000), +(10997, 9300254, 2022430, 1, 1, 0, 700000), +(10998, 9300254, 2022431, 1, 1, 0, 700000), +(10999, 9300254, 2022432, 1, 1, 0, 700000), +(11000, 9300254, 2022433, 1, 1, 0, 700000), +(11001, 9300255, 2022430, 1, 1, 0, 700000), +(11002, 9300255, 2022431, 1, 1, 0, 700000), +(11003, 9300255, 2022432, 1, 1, 0, 700000), +(11004, 9300255, 2022433, 1, 1, 0, 700000), +(11005, 9300256, 2022430, 1, 1, 0, 700000), +(11006, 9300256, 2022431, 1, 1, 0, 700000), +(11007, 9300256, 2022432, 1, 1, 0, 700000), +(11008, 9300256, 2022433, 1, 1, 0, 700000), +(11009, 9300257, 2022430, 1, 1, 0, 700000), +(11010, 9300257, 2022431, 1, 1, 0, 700000), +(11011, 9300257, 2022432, 1, 1, 0, 700000), +(11012, 9300257, 2022433, 1, 1, 0, 700000), +(11013, 9300258, 2022430, 1, 1, 0, 700000), +(11014, 9300258, 2022431, 1, 1, 0, 700000), +(11015, 9300258, 2022432, 1, 1, 0, 700000), +(11016, 9300258, 2022433, 1, 1, 0, 700000), +(11017, 9300259, 2022430, 1, 1, 0, 700000), +(11018, 9300259, 2022431, 1, 1, 0, 700000), +(11019, 9300259, 2022432, 1, 1, 0, 700000), +(11020, 9300259, 2022433, 1, 1, 0, 700000), +(11021, 9300260, 2022430, 1, 1, 0, 700000), +(11022, 9300260, 2022431, 1, 1, 0, 700000), +(11023, 9300260, 2022432, 1, 1, 0, 700000), +(11024, 9300260, 2022433, 1, 1, 0, 700000), +(11025, 9300261, 2022430, 1, 1, 0, 700000), +(11026, 9300261, 2022431, 1, 1, 0, 700000), +(11027, 9300261, 2022432, 1, 1, 0, 700000), +(11028, 9300261, 2022433, 1, 1, 0, 700000), +(11029, 9300262, 2022430, 1, 1, 0, 700000), +(11030, 9300262, 2022431, 1, 1, 0, 700000), +(11031, 9300262, 2022432, 1, 1, 0, 700000), +(11032, 9300262, 2022433, 1, 1, 0, 700000), +(11033, 9300263, 2022430, 1, 1, 0, 700000), +(11034, 9300263, 2022431, 1, 1, 0, 700000), +(11035, 9300263, 2022432, 1, 1, 0, 700000), +(11036, 9300263, 2022433, 1, 1, 0, 700000), +(11037, 9300264, 2022430, 1, 1, 0, 700000), +(11038, 9300264, 2022431, 1, 1, 0, 700000), +(11039, 9300264, 2022432, 1, 1, 0, 700000), +(11040, 9300264, 2022433, 1, 1, 0, 700000), +(11041, 9300265, 2022430, 1, 1, 0, 700000), +(11042, 9300265, 2022431, 1, 1, 0, 700000), +(11043, 9300265, 2022432, 1, 1, 0, 700000), +(11044, 9300265, 2022433, 1, 1, 0, 700000), +(11045, 9300266, 2022430, 1, 1, 0, 700000), +(11046, 9300266, 2022431, 1, 1, 0, 700000), +(11047, 9300266, 2022432, 1, 1, 0, 700000), +(11048, 9300266, 2022433, 1, 1, 0, 700000), +(11049, 9300267, 2022430, 1, 1, 0, 700000), +(11050, 9300267, 2022431, 1, 1, 0, 700000), +(11051, 9300267, 2022432, 1, 1, 0, 700000), +(11052, 9300267, 2022433, 1, 1, 0, 700000), +(11053, 9300270, 2022430, 1, 1, 0, 700000), +(11054, 9300270, 2022431, 1, 1, 0, 700000), +(11055, 9300270, 2022432, 1, 1, 0, 700000), +(11056, 9300270, 2022433, 1, 1, 0, 700000), +(11057, 8140500, 4007007, 1, 1, 0, 10000), +(11058, 4230502, 4007007, 1, 1, 0, 10000), +(11059, 3210205, 4007007, 1, 1, 0, 10000), +(11060, 8200012, 4007007, 1, 1, 0, 10000), +(11061, 8150200, 4007007, 1, 1, 0, 10000), +(11062, 5120003, 4007007, 1, 1, 0, 10000), +(11063, 5130104, 4007007, 1, 1, 0, 10000), +(11064, 6110300, 4007007, 1, 1, 0, 10000), +(11065, 7130000, 4007007, 1, 1, 0, 10000), +(11066, 4230119, 4007007, 1, 1, 0, 10000), +(11067, 6130204, 4007007, 1, 1, 0, 10000), +(11068, 3110102, 4007007, 1, 1, 0, 10000), +(11069, 8142100, 4007007, 1, 1, 0, 10000), +(11070, 8190003, 4007007, 1, 1, 0, 10000), +(11071, 5120506, 4007007, 1, 1, 0, 10000), +(11072, 4230118, 4007007, 1, 1, 0, 10000), +(11073, 4230101, 4007007, 1, 1, 0, 10000), +(11074, 7130104, 4007002, 1, 1, 0, 10000), +(11075, 3230400, 4007002, 1, 1, 0, 10000), +(11076, 5300001, 4007002, 1, 1, 0, 10000), +(11077, 4230124, 4007002, 1, 1, 0, 10000), +(11078, 7140000, 4007002, 1, 1, 0, 10000), +(11079, 8143000, 4007002, 1, 1, 0, 10000), +(11080, 4110300, 4007002, 1, 1, 0, 10000), +(11081, 5100000, 4007002, 1, 1, 0, 10000), +(11082, 4230106, 4007002, 1, 1, 0, 10000), +(11083, 4230115, 4007002, 1, 1, 0, 10000), +(11084, 6230500, 4007002, 1, 1, 0, 10000), +(11085, 9400011, 4007002, 1, 1, 0, 10000), +(11086, 3210208, 4007002, 1, 1, 0, 10000), +(11087, 6110301, 4007002, 1, 1, 0, 10000), +(11088, 8141000, 4007002, 1, 1, 0, 10000), +(11089, 8190003, 4007002, 1, 1, 0, 10000), +(11090, 5120506, 4007002, 1, 1, 0, 10000), +(11091, 4230101, 4007002, 1, 1, 0, 10000), +(11092, 3230306, 4007000, 1, 1, 0, 10000), +(11093, 5130103, 4007000, 1, 1, 0, 10000), +(11094, 3110300, 4007000, 1, 1, 0, 10000), +(11095, 4230600, 4007000, 1, 1, 0, 10000), +(11096, 8150200, 4007000, 1, 1, 0, 10000), +(11097, 7110301, 4007000, 1, 1, 0, 10000), +(11098, 3210200, 4007000, 1, 1, 0, 10000), +(11099, 8190000, 4007000, 1, 1, 0, 10000), +(11100, 5400000, 4007000, 1, 1, 0, 10000), +(11101, 3230101, 4007000, 1, 1, 0, 10000), +(11102, 5100000, 4007000, 1, 1, 0, 10000), +(11103, 4230115, 4007000, 1, 1, 0, 10000), +(11104, 5110302, 4007000, 1, 1, 0, 10000), +(11105, 4230114, 4007000, 1, 1, 0, 10000), +(11106, 4110301, 4007000, 1, 1, 0, 10000), +(11107, 8142100, 4007000, 1, 1, 0, 10000), +(11108, 5110301, 4007000, 1, 1, 0, 10000), +(11109, 5100004, 4007000, 1, 1, 0, 10000), +(11110, 6110301, 4007000, 1, 1, 0, 10000), +(11111, 8190003, 4007000, 1, 1, 0, 10000), +(11112, 6230400, 4007000, 1, 1, 0, 10000), +(11113, 3230200, 4007000, 1, 1, 0, 10000), +(11114, 5130101, 4007000, 1, 1, 0, 10000), +(11115, 5120503, 4007000, 1, 1, 0, 10000), +(11116, 5120504, 4007000, 1, 1, 0, 10000), +(11117, 4230102, 4007000, 1, 1, 0, 10000), +(11118, 4230101, 4007000, 1, 1, 0, 10000), +(11119, 3210100, 4007003, 1, 1, 0, 10000), +(11120, 5120001, 4007003, 1, 1, 0, 10000), +(11121, 3230101, 4007003, 1, 1, 0, 10000), +(11122, 3110302, 4007003, 1, 1, 0, 10000), +(11123, 4230101, 4007003, 1, 1, 0, 10000), +(11124, 4230119, 4007003, 1, 1, 0, 10000), +(11125, 4250000, 4007003, 1, 1, 0, 10000), +(11126, 4230102, 4007003, 1, 1, 0, 10000), +(11127, 5110302, 4007003, 1, 1, 0, 10000), +(11128, 9400012, 4007003, 1, 1, 0, 10000), +(11129, 8140110, 4007003, 1, 1, 0, 10000), +(11130, 8150201, 4007003, 1, 1, 0, 10000), +(11131, 8190003, 4007003, 1, 1, 0, 10000), +(11132, 3110100, 4007005, 1, 1, 0, 10000), +(11133, 3210205, 4007005, 1, 1, 0, 10000), +(11134, 5400000, 4007005, 1, 1, 0, 10000), +(11135, 3230306, 4007005, 1, 1, 0, 10000), +(11136, 4230101, 4007005, 1, 1, 0, 10000), +(11137, 4230107, 4007005, 1, 1, 0, 10000), +(11138, 4250000, 4007005, 1, 1, 0, 10000), +(11139, 4110301, 4007005, 1, 1, 0, 10000), +(11140, 5130107, 4007005, 1, 1, 0, 10000), +(11141, 6110300, 4007005, 1, 1, 0, 10000), +(11142, 8200003, 4007005, 1, 1, 0, 10000), +(11143, 8190000, 4007005, 1, 1, 0, 10000), +(11144, 3110300, 4007006, 1, 1, 0, 10000), +(11145, 5400000, 4007006, 1, 1, 0, 10000), +(11146, 3210200, 4007006, 1, 1, 0, 10000), +(11147, 4230101, 4007006, 1, 1, 0, 10000), +(11148, 4110302, 4007006, 1, 1, 0, 10000), +(11149, 4110301, 4007006, 1, 1, 0, 10000), +(11150, 4230115, 4007006, 1, 1, 0, 10000), +(11151, 4230102, 4007006, 1, 1, 0, 10000), +(11152, 4230600, 4007006, 1, 1, 0, 10000), +(11153, 5120504, 4007006, 1, 1, 0, 10000), +(11154, 5130103, 4007006, 1, 1, 0, 10000), +(11155, 5110301, 4007006, 1, 1, 0, 10000), +(11156, 5130101, 4007006, 1, 1, 0, 10000), +(11157, 5100004, 4007006, 1, 1, 0, 10000), +(11158, 5110302, 4007006, 1, 1, 0, 10000), +(11159, 8142100, 4007006, 1, 1, 0, 10000), +(11160, 8200001, 4007006, 1, 1, 0, 10000), +(11161, 3210100, 4007001, 1, 1, 0, 10000), +(11162, 2230102, 4007001, 1, 1, 0, 10000), +(11163, 3110102, 4007001, 1, 1, 0, 10000), +(11164, 3210200, 4007001, 1, 1, 0, 10000), +(11165, 4230200, 4007001, 1, 1, 0, 10000), +(11166, 4230101, 4007001, 1, 1, 0, 10000), +(11167, 4230105, 4007001, 1, 1, 0, 10000), +(11168, 4230122, 4007001, 1, 1, 0, 10000), +(11169, 4110302, 4007001, 1, 1, 0, 10000), +(11170, 5100000, 4007001, 1, 1, 0, 10000), +(11171, 5130103, 4007001, 1, 1, 0, 10000), +(11172, 5120001, 4007001, 1, 1, 0, 10000), +(11173, 5120003, 4007001, 1, 1, 0, 10000), +(11174, 5130101, 4007001, 1, 1, 0, 10000), +(11175, 6130209, 4007001, 1, 1, 0, 10000), +(11176, 7110301, 4007001, 1, 1, 0, 10000), +(11177, 8200000, 4007001, 1, 1, 0, 10000), +(11178, 8140110, 4007001, 1, 1, 0, 10000), +(11179, 7160000, 4007001, 1, 1, 0, 10000), +(11180, 8140101, 4007001, 1, 1, 0, 10000), +(11181, 8140500, 4007001, 1, 1, 0, 10000), +(11182, 8141300, 4007001, 1, 1, 0, 10000), +(11183, 8200003, 4007001, 1, 1, 0, 10000), +(11184, 8190002, 4007001, 1, 1, 0, 10000), +(11185, 8190005, 4007001, 1, 1, 0, 10000), +(11186, 8200012, 4007001, 1, 1, 0, 10000), +(11187, 4110300, 4007004, 1, 1, 0, 10000), +(11188, 3230400, 4007004, 1, 1, 0, 10000), +(11189, 3110300, 4007004, 1, 1, 0, 10000), +(11190, 5300001, 4007004, 1, 1, 0, 10000), +(11191, 3210208, 4007004, 1, 1, 0, 10000), +(11192, 3210450, 4007004, 1, 1, 0, 10000), +(11193, 4230113, 4007004, 1, 1, 0, 10000), +(11194, 4230101, 4007004, 1, 1, 0, 10000), +(11195, 4230119, 4007004, 1, 1, 0, 10000), +(11196, 4230600, 4007004, 1, 1, 0, 10000), +(11197, 5120503, 4007004, 1, 1, 0, 10000), +(11198, 5130107, 4007004, 1, 1, 0, 10000), +(11199, 6130103, 4007004, 1, 1, 0, 10000), +(11200, 6130208, 4007004, 1, 1, 0, 10000), +(11201, 8190003, 4007004, 1, 1, 0, 10000), +(11202, 8200009, 4007004, 1, 1, 0, 10000), +(11203, 8200011, 4007004, 1, 1, 0, 10000), +(11204, 8200001, 4007004, 1, 1, 0, 10000), +(11205, 9420003, 4007004, 1, 1, 0, 10000), +(11206, 4130104, 4000062, 1, 1, 0, 10000), +(11207, 4230122, 4000058, 1, 1, 0, 10000), +(11208, 9001000, 4031059, 1, 1, 0, 999999), +(11209, 9001001, 4031059, 1, 1, 0, 999999), +(11210, 9001002, 4031059, 1, 1, 0, 999999), +(11211, 9001003, 4031059, 1, 1, 0, 999999), +(11212, 9001008, 4031059, 1, 1, 0, 499999), +(11213, 9001005, 4031013, 1, 1, 0, 300000), +(11214, 9001012, 4032311, 1, 1, 0, 300000), +(11215, 9001012, 4032311, 1, 1, 0, 300000), +(11216, 9001013, 4032312, 1, 1, 0, 999999), +(11217, 9001013, 4032339, 1, 1, 0, 999999), +(11219, 4230113, 1452016, 1, 1, 0, 700), +(11220, 4230103, 1452016, 1, 1, 0, 700), +(11221, 2230102, 1452016, 1, 1, 0, 700), +(11222, 6230100, 1452016, 1, 1, 0, 700), +(11223, 2110200, 1452016, 1, 1, 0, 700), +(11224, 2230104, 1452016, 1, 1, 0, 700), +(11225, 9400570, 1452016, 1, 1, 0, 700), +(11226, 4230106, 1452016, 1, 1, 0, 700), +(11227, 5120502, 1452016, 1, 1, 0, 700), +(11228, 3230400, 1452022, 1, 1, 0, 700), +(11229, 2230102, 1452022, 1, 1, 0, 700), +(11230, 6130100, 1452022, 1, 1, 0, 700), +(11231, 4230103, 1452022, 1, 1, 0, 700), +(11232, 5130100, 1452022, 1, 1, 0, 700), +(11233, 9400570, 1452022, 1, 1, 0, 700), +(11234, 3210208, 1452022, 1, 1, 0, 700), +(11235, 6130204, 1452022, 1, 1, 0, 700), +(11236, 7130103, 1452022, 1, 1, 0, 700), +(11237, 8140000, 1452022, 1, 1, 0, 700), +(11238, 5200000, 1452022, 1, 1, 0, 700), +(11239, 2100104, 1452022, 1, 1, 0, 700), +(11240, 3210800, 1452022, 1, 1, 0, 700), +(11241, 4230121, 1452022, 1, 1, 0, 700), +(11242, 4230101, 1472030, 1, 1, 0, 700), +(11243, 4230102, 1472030, 1, 1, 0, 700), +(11244, 7130100, 1472030, 1, 1, 0, 700), +(11245, 2230101, 1472030, 1, 1, 0, 700), +(11246, 3210200, 1472030, 1, 1, 0, 700), +(11247, 7130200, 1472030, 1, 1, 0, 700), +(11248, 9400570, 1472030, 1, 1, 0, 700), +(11249, 2230110, 1472030, 1, 1, 0, 700), +(11250, 5200001, 1472030, 1, 1, 0, 700), +(11251, 3110303, 1472030, 1, 1, 0, 700), +(11252, 4130101, 1472030, 1, 1, 0, 700), +(11253, 5120506, 1472030, 1, 1, 0, 700), +(11254, 1130100, 1472032, 1, 1, 0, 700), +(11255, 4230111, 1472032, 1, 1, 0, 700), +(11256, 4230112, 1472032, 1, 1, 0, 700), +(11257, 7130102, 1472032, 1, 1, 0, 700), +(11258, 3210100, 1472032, 1, 1, 0, 700), +(11259, 2230102, 1472032, 1, 1, 0, 700), +(11260, 4130100, 1472032, 1, 1, 0, 700), +(11261, 9400570, 1472032, 1, 1, 0, 700), +(11262, 3230306, 1472032, 1, 1, 0, 700), +(11263, 6130203, 1472032, 1, 1, 0, 700), +(11264, 7130000, 1472032, 1, 1, 0, 700), +(11265, 8140002, 1472032, 1, 1, 0, 700), +(11266, 3230200, 1462014, 1, 1, 0, 700), +(11267, 4230109, 1462014, 1, 1, 0, 700), +(11268, 2230102, 1462014, 1, 1, 0, 700), +(11269, 9400570, 1462014, 1, 1, 0, 700), +(11270, 5300100, 1462019, 1, 1, 0, 700), +(11271, 4230109, 1462019, 1, 1, 0, 700), +(11272, 4230110, 1462019, 1, 1, 0, 700), +(11273, 9400570, 1462019, 1, 1, 0, 700), +(11274, 5400000, 1462019, 1, 1, 0, 700), +(11275, 4230505, 1462019, 1, 1, 0, 700), +(11276, 6230602, 1462019, 1, 1, 0, 700), +(11277, 7110301, 1462019, 1, 1, 0, 700), +(11278, 7140000, 1462019, 1, 1, 0, 700), +(11279, 2230102, 1332025, 1, 1, 0, 700), +(11280, 8140500, 1332025, 1, 1, 0, 700), +(11281, 2230103, 1332025, 1, 1, 0, 700), +(11282, 4230101, 1332025, 1, 1, 0, 700), +(11283, 9400570, 1332025, 1, 1, 0, 700), +(11284, 3100101, 1332025, 1, 1, 0, 700), +(11285, 4230117, 1332025, 1, 1, 0, 700), +(11286, 5110302, 1332025, 1, 1, 0, 700), +(11287, 7130500, 1332025, 1, 1, 0, 700), +(11288, 7130200, 1332025, 1, 1, 0, 700), +(11289, 9400570, 1302020, 1, 1, 0, 700), +(11652, 6110300, 1382039, 1, 1, 0, 750), +(11651, 5100002, 1382039, 1, 1, 0, 750), +(11650, 6230300, 1332056, 1, 1, 0, 750), +(11649, 5120505, 1332056, 1, 1, 0, 750), +(11648, 5120502, 1332056, 1, 1, 0, 750), +(11647, 5110302, 1332056, 1, 1, 0, 750), +(11646, 5100005, 1332056, 1, 1, 0, 750), +(11297, 9400512, 1302030, 1, 1, 0, 700), +(11298, 3000005, 1302030, 1, 1, 0, 700), +(11299, 4230102, 1302030, 1, 1, 0, 700), +(11300, 9400570, 1302030, 1, 1, 0, 700), +(11301, 3110102, 1302030, 1, 1, 0, 700), +(11302, 4230124, 1302030, 1, 1, 0, 700), +(11303, 5150001, 1302030, 1, 1, 0, 700), +(11304, 6400000, 1302030, 1, 1, 0, 700), +(11305, 4230105, 1442024, 1, 1, 0, 700), +(11306, 3110100, 1442024, 1, 1, 0, 700), +(11307, 8110300, 1442024, 1, 1, 0, 700), +(11308, 9400570, 1442024, 1, 1, 0, 700), +(11309, 3230100, 1442024, 1, 1, 0, 700), +(11310, 4230300, 1442024, 1, 1, 0, 700), +(11311, 6130207, 1442024, 1, 1, 0, 700), +(11312, 7130002, 1442024, 1, 1, 0, 700), +(11313, 3230305, 1432012, 1, 1, 0, 700), +(11314, 6230300, 1432012, 1, 1, 0, 700), +(11315, 2230102, 1432012, 1, 1, 0, 700), +(11316, 9400570, 1432012, 1, 1, 0, 700), +(11317, 3230200, 1432012, 1, 1, 0, 700), +(11318, 4230118, 1432012, 1, 1, 0, 700), +(11319, 6130202, 1432012, 1, 1, 0, 700), +(11320, 6110300, 1432012, 1, 1, 0, 700), +(11321, 7130004, 1432012, 1, 1, 0, 700), +(11322, 7130300, 1382009, 1, 1, 0, 700), +(11323, 3000000, 1382009, 1, 1, 0, 700), +(11324, 3110100, 1382009, 1, 1, 0, 700), +(11325, 9400570, 1382009, 1, 1, 0, 700), +(11326, 2230103, 1382009, 1, 1, 0, 700), +(11327, 2100107, 1382009, 1, 1, 0, 700), +(11328, 3210100, 1382009, 1, 1, 0, 700), +(11329, 4230502, 1382009, 1, 1, 0, 700), +(11804, 9420530, 1482007, 1, 1, 0, 333333), +(11803, 9420530, 1002166, 1, 1, 0, 2000), +(11802, 9420530, 1002212, 1, 1, 0, 2000), +(11801, 9420530, 1032012, 1, 1, 0, 1800), +(11800, 9420530, 1060080, 1, 1, 0, 2000), +(11799, 9420530, 1040091, 1, 1, 0, 2000), +(11798, 9420530, 1051010, 1, 1, 0, 1800), +(11797, 9420530, 1051006, 1, 1, 0, 1800), +(11796, 9420530, 1082028, 1, 1, 0, 2000), +(11795, 9420530, 1092008, 1, 1, 0, 1800), +(11774, 9420534, 1082104, 1, 1, 0, 2000), +(11773, 9420534, 1072041, 1, 1, 0, 2000), +(11772, 9420534, 1061102, 1, 1, 0, 2000), +(11771, 9420534, 1041103, 1, 1, 0, 2000), +(11770, 9420534, 1050068, 1, 1, 0, 1800), +(11769, 9420534, 1050067, 1, 1, 0, 1800), +(11768, 9420534, 1061077, 1, 1, 0, 2000), +(11767, 9420534, 1032011, 1, 1, 0, 1800), +(11766, 9420534, 1472016, 1, 1, 0, 1300), +(11765, 9420534, 1442037, 1, 1, 0, 1800), +(11764, 9420534, 2044701, 1, 1, 0, 1000), +(11763, 9420534, 4130013, 1, 1, 0, 5000), +(11762, 9420534, 4004004, 1, 1, 0, 5000), +(11761, 9420534, 4010002, 1, 1, 0, 300), +(11746, 9420536, 1051079, 1, 1, 0, 1800), +(11745, 9420536, 1050082, 1, 1, 0, 1800), +(11744, 9420536, 1050064, 1, 1, 0, 1800), +(11743, 9420536, 1051065, 1, 1, 0, 1800), +(11742, 9420536, 1051058, 1, 1, 0, 1800), +(11741, 9420536, 1050074, 1, 1, 0, 1800), +(11740, 9420536, 1092016, 1, 1, 0, 1800), +(11739, 9420536, 1072154, 1, 1, 0, 2000), +(11738, 9420536, 1072167, 1, 1, 0, 2000), +(11737, 9420536, 1082105, 1, 1, 0, 2000), +(11736, 9420536, 1082097, 1, 1, 0, 2000), +(11735, 9420536, 1382007, 1, 1, 0, 1800), +(11722, 5130102, 1322054, 1, 1, 0, 750), +(11721, 5110302, 1322054, 1, 1, 0, 750), +(11720, 5250002, 1422029, 1, 1, 0, 750), +(11719, 6230500, 1422029, 1, 1, 0, 750), +(11718, 6130209, 1422029, 1, 1, 0, 750), +(11717, 5030107, 1422029, 1, 1, 0, 750), +(11716, 5130105, 1422029, 1, 1, 0, 750), +(11715, 6110301, 1312032, 1, 1, 0, 750), +(11714, 5300100, 1312032, 1, 1, 0, 750), +(11713, 5120506, 1312032, 1, 1, 0, 750), +(11712, 5120002, 1312032, 1, 1, 0, 750), +(11711, 5110301, 1312032, 1, 1, 0, 750), +(11698, 5250002, 1092046, 1, 1, 0, 750), +(11697, 6300000, 1092046, 1, 1, 0, 750), +(11696, 5130104, 1092046, 1, 1, 0, 750), +(11695, 6130209, 1092045, 1, 1, 0, 750), +(11690, 6130209, 1432040, 1, 1, 0, 750), +(11689, 6110300, 1432040, 1, 1, 0, 750), +(11688, 5130104, 1432040, 1, 1, 0, 750), +(11687, 5120100, 1432040, 1, 1, 0, 750), +(11686, 5120001, 1432040, 1, 1, 0, 750), +(11685, 6300000, 1402039, 1, 1, 0, 750), +(11684, 6130200, 1402039, 1, 1, 0, 750), +(11683, 5150000, 1402039, 1, 1, 0, 750), +(11682, 5120506, 1402039, 1, 1, 0, 750), +(11672, 5120502, 1442051, 1, 1, 0, 750), +(11671, 5110302, 1442051, 1, 1, 0, 750), +(11670, 6230601, 1482022, 1, 1, 0, 750), +(11669, 6230401, 1482022, 1, 1, 0, 750), +(11668, 5130104, 1482022, 1, 1, 0, 750), +(11667, 5120003, 1482022, 1, 1, 0, 750), +(11666, 5100002, 1482022, 1, 1, 0, 750), +(11665, 7130500, 1492022, 1, 1, 0, 750), +(11664, 7130402, 1492022, 1, 1, 0, 1250), +(11663, 6300002, 1492022, 1, 1, 0, 750), +(11645, 6230600, 1332055, 1, 1, 0, 750), +(11644, 6230400, 1332055, 1, 1, 0, 750), +(11643, 6130204, 1332055, 1, 1, 0, 750), +(11642, 6110300, 1332055, 1, 1, 0, 750), +(11641, 5150001, 1332055, 1, 1, 0, 750), +(11640, 6230601, 1462040, 1, 1, 0, 750), +(11639, 6130209, 1462040, 1, 1, 0, 750), +(11638, 5140000, 1462040, 1, 1, 0, 750), +(11629, 6220001, 1472055, 1, 1, 0, 1250), +(11628, 6220000, 1472055, 1, 1, 0, 1250), +(11627, 5120500, 1472055, 1, 1, 0, 750), +(11626, 5120000, 1472055, 1, 1, 0, 750), +(11625, 9001006, 4031013, 1, 1, 0, 400000), +(11624, 8190003, 4031461, 1, 1, 6169, 1000), +(11623, 9400218, 4001106, 25, 50, 0, 999999), +(11622, 9400217, 4001106, 1, 3, 0, 999999), +(11613, 2110200, 4032390, 1, 1, 2248, 100000), +(11612, 8140200, 1382012, 1, 1, 0, 700), +(11611, 7130600, 1382012, 1, 1, 0, 700), +(11610, 5100004, 1382012, 1, 1, 0, 700), +(11609, 4230123, 1382012, 1, 1, 0, 700), +(11608, 5300001, 1382012, 1, 1, 0, 700), +(11607, 9400570, 1382012, 1, 1, 0, 700), +(11606, 2110200, 1382012, 1, 1, 0, 700), +(11597, 6300001, 1492021, 1, 1, 0, 700), +(11596, 3230102, 1492021, 1, 1, 0, 700), +(11595, 3000006, 1492021, 1, 1, 0, 700), +(11594, 5130101, 1492020, 1, 1, 0, 700), +(11593, 5200002, 1492020, 1, 1, 0, 700), +(11592, 1140100, 1492020, 1, 1, 0, 700), +(11591, 7160000, 1482021, 1, 1, 0, 700), +(11590, 7130501, 1482021, 1, 1, 0, 700), +(11589, 6130208, 1482021, 1, 1, 0, 700), +(11579, 4230503, 1422014, 1, 1, 0, 700), +(11578, 3230302, 1422014, 1, 1, 0, 700), +(11577, 9400570, 1422014, 1, 1, 0, 700), +(11576, 7130001, 1422014, 1, 1, 0, 700), +(11575, 7130000, 1422014, 1, 1, 0, 700), +(11574, 3000005, 1422014, 1, 1, 0, 700), +(11573, 5130100, 1422014, 1, 1, 0, 700), +(11572, 7130100, 1422014, 1, 1, 0, 700), +(11794, 9420530, 1472013, 1, 1, 0, 1300), +(11793, 9420530, 1462007, 1, 1, 0, 1500), +(11792, 9420530, 1452007, 1, 1, 0, 1500), +(11791, 9420530, 1432004, 1, 1, 0, 1500), +(11790, 9420530, 1382019, 1, 1, 0, 1800), +(11789, 9420530, 2041002, 1, 1, 0, 1000), +(11788, 9420530, 2040901, 1, 1, 0, 1000); +INSERT INTO `drop_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES +(11787, 9420530, 2020014, 1, 1, 0, 10000), +(11786, 9420530, 400006, 1, 1, 0, 333333), +(11785, 9420530, 400002, 1, 1, 0, 10000), +(11760, 9420534, 4020008, 1, 1, 0, 300), +(11759, 9420534, 4006000, 1, 1, 0, 5000), +(11758, 9420534, 400004, 1, 1, 0, 333333), +(11757, 9420534, 400002, 1, 1, 0, 10000), +(11756, 9420534, 4000472, 1, 1, 0, 300000), +(11755, 9420536, 2332000, 1, 1, 0, 500), +(11754, 9420536, 2330004, 1, 1, 0, 500), +(11753, 9420536, 1482009, 1, 1, 0, 2000), +(11752, 9420536, 1082204, 1, 1, 0, 2000), +(11751, 9420536, 1072309, 1, 1, 0, 2000), +(11750, 9420536, 1002095, 1, 1, 0, 2000), +(11749, 9420536, 1002273, 1, 1, 0, 2000), +(11748, 9420536, 1002278, 1, 1, 0, 2000), +(11747, 9420536, 1032021, 1, 1, 0, 1800), +(11734, 9420536, 1332019, 1, 1, 0, 1500), +(11733, 9420536, 1462011, 1, 1, 0, 1500), +(11732, 9420536, 1452011, 1, 1, 0, 1500), +(11731, 9420536, 1422005, 1, 1, 0, 1800), +(11730, 9420536, 2040805, 1, 1, 0, 1000), +(11729, 9420536, 400004, 1, 1, 0, 333333), +(11728, 9420536, 2022003, 1, 1, 0, 333333), +(11727, 9420536, 2070008, 1, 1, 0, 500), +(11726, 9420536, 4000474, 1, 1, 0, 300000), +(11725, 6130203, 1322054, 1, 1, 0, 750), +(11724, 6130100, 1322054, 1, 1, 0, 750), +(11723, 5130108, 1322054, 1, 1, 0, 750), +(11710, 6230601, 1412027, 1, 1, 0, 750), +(11709, 6230401, 1412027, 1, 1, 0, 750), +(11708, 6130209, 1412027, 1, 1, 0, 750), +(11707, 6110301, 1412027, 1, 1, 0, 750), +(11706, 5120506, 1412027, 1, 1, 0, 750), +(11705, 6230601, 1092047, 1, 1, 0, 750), +(11704, 6230401, 1092047, 1, 1, 0, 750), +(11703, 6220001, 1092047, 1, 1, 0, 750), +(11702, 6230602, 1092047, 1, 1, 0, 750), +(11701, 5140000, 1092047, 1, 1, 0, 750), +(11700, 5130101, 1092046, 1, 1, 0, 750), +(11699, 6110300, 1092046, 1, 1, 0, 750), +(11694, 5120500, 1092045, 1, 1, 0, 750), +(11693, 6300001, 1092045, 1, 1, 0, 750), +(11692, 6230300, 1092045, 1, 1, 0, 750), +(11691, 6230401, 1092045, 1, 1, 0, 750), +(11681, 5120002, 1402039, 1, 1, 0, 750), +(11680, 5250000, 1302064, 1, 1, 0, 750), +(11679, 5130104, 1302064, 1, 1, 0, 750), +(11678, 5130101, 1302064, 1, 1, 0, 750), +(11677, 5120506, 1302064, 1, 1, 0, 750), +(11676, 5120502, 1302064, 1, 1, 0, 750), +(11675, 5250002, 1442051, 1, 1, 0, 750), +(11674, 5250001, 1442051, 1, 1, 0, 750), +(11673, 5250000, 1442051, 1, 1, 0, 750), +(11662, 6230500, 1492022, 1, 1, 0, 750), +(11661, 5220003, 1492022, 1, 1, 0, 1250), +(11660, 6230401, 1372034, 1, 1, 0, 750), +(11659, 6230400, 1372034, 1, 1, 0, 750), +(11658, 5250000, 1372034, 1, 1, 0, 750), +(11657, 5120503, 1372034, 1, 1, 0, 750), +(11656, 5100004, 1372034, 1, 1, 0, 750), +(11655, 6230201, 1382039, 1, 1, 0, 750), +(11654, 6130218, 1382039, 1, 1, 0, 750), +(11653, 6130204, 1382039, 1, 1, 0, 750), +(11637, 5130102, 1462040, 1, 1, 0, 750), +(11636, 5130101, 1462040, 1, 1, 0, 750), +(11635, 6300001, 1452045, 1, 1, 0, 750), +(11634, 6230602, 1452045, 1, 1, 0, 750), +(11633, 6230100, 1452045, 1, 1, 0, 750), +(11632, 6130209, 1452045, 1, 1, 0, 750), +(11631, 5130108, 1452045, 1, 1, 0, 750), +(11630, 6230400, 1472055, 1, 1, 0, 750), +(11621, 9400216, 4001106, 1, 3, 0, 999999), +(11620, 9400215, 4001106, 1, 3, 0, 999999), +(11619, 9400214, 4001106, 1, 3, 0, 999999), +(11618, 9400213, 4001106, 1, 3, 0, 999999), +(11617, 9400212, 4001106, 1, 1, 0, 999999), +(11616, 9400211, 4001106, 1, 1, 0, 999999), +(11615, 9400209, 4001106, 1, 3, 0, 999999), +(11614, 9400209, 4001106, 1, 3, 0, 999999), +(11605, 3110102, 1382012, 1, 1, 0, 700), +(11604, 2230107, 1092030, 1, 1, 0, 700), +(11603, 1210103, 1092030, 1, 1, 0, 700), +(11602, 4230114, 1092030, 1, 1, 0, 700), +(11601, 5100002, 1092030, 1, 1, 0, 700), +(11600, 4230600, 1092030, 1, 1, 0, 700), +(11599, 8140110, 1492021, 1, 1, 0, 700), +(11598, 6300100, 1492021, 1, 1, 0, 700), +(11588, 4240000, 1482021, 1, 1, 0, 700), +(11587, 4230500, 1482021, 1, 1, 0, 700), +(11586, 5130104, 1482020, 1, 1, 0, 700), +(11585, 4230116, 1482020, 1, 1, 0, 700), +(11584, 3230400, 1482020, 1, 1, 0, 700), +(11583, 2230101, 1482020, 1, 1, 0, 700), +(11582, 7130003, 1422014, 1, 1, 0, 700), +(11581, 7130104, 1422014, 1, 1, 0, 700), +(11580, 5130107, 1422014, 1, 1, 0, 700), +(11571, 4230100, 1422014, 1, 1, 0, 700), +(11570, 7130601, 1412011, 1, 1, 0, 700), +(11569, 6110301, 1412011, 1, 1, 0, 700), +(11568, 4230120, 1412011, 1, 1, 0, 700), +(11567, 3210205, 1412011, 1, 1, 0, 700), +(11566, 9400570, 1412011, 1, 1, 0, 700), +(11565, 7130001, 1412011, 1, 1, 0, 700), +(11564, 2230102, 1412011, 1, 1, 0, 700), +(11784, 9420530, 400004, 1, 1, 0, 333333), +(11783, 9420530, 2002009, 1, 1, 0, 333333), +(11782, 9420530, 4020007, 1, 1, 0, 300), +(11781, 9420530, 4010004, 1, 1, 0, 300), +(11780, 9420530, 4000468, 1, 1, 0, 300000), +(11779, 9420534, 2044901, 1, 1, 0, 1000), +(11778, 9420534, 2330003, 1, 1, 0, 500), +(11777, 9420534, 1002254, 1, 1, 0, 2000), +(11776, 9420534, 1382015, 1, 1, 0, 1800), +(11775, 9420534, 1452010, 1, 1, 0, 1500), +(11805, 9420530, 1492007, 1, 1, 0, 333333), +(11806, 9420015, 4000420, 1, 1, 0, 300000), +(11807, 9420015, 4000421, 1, 1, 0, 300000), +(11808, 9420500, 4000369, 1, 1, 0, 300000), +(11809, 9420500, 4000370, 1, 1, 0, 300000), +(11810, 9420500, 400001, 1, 1, 0, 333333), +(11811, 9420500, 2002002, 1, 1, 0, 333333), +(11812, 9420500, 2044002, 1, 1, 0, 1000), +(11813, 9420500, 1332001, 1, 1, 0, 1500), +(11814, 9420500, 1382002, 1, 1, 0, 1800), +(11815, 9420500, 1002178, 1, 1, 0, 2000), +(11816, 9420500, 2060000, 1, 1, 0, 10000), +(11817, 9420500, 4010006, 1, 1, 0, 300), +(11818, 9420500, 4020005, 1, 1, 0, 300), +(11819, 9420500, 2020028, 1, 1, 0, 20000), +(11820, 9420500, 400003, 1, 1, 0, 10000), +(11821, 9420500, 1060052, 1, 1, 0, 2000), +(11822, 9420500, 1051006, 1, 1, 0, 1800), +(11823, 9420500, 1051007, 1, 1, 0, 1800), +(11824, 9420500, 1002142, 1, 1, 0, 2000), +(11825, 9420500, 2061000, 1, 1, 0, 10000), +(11826, 9420500, 1422008, 1, 1, 0, 1800), +(11827, 9420500, 4030012, 1, 1, 0, 300), +(11828, 9420500, 1052095, 1, 1, 0, 1800), +(11829, 9420500, 2330001, 1, 1, 0, 500), +(11830, 9420501, 4000372, 1, 1, 0, 300000), +(11831, 9420501, 400003, 1, 1, 0, 10000), +(11832, 9420501, 400002, 1, 1, 0, 10000), +(11833, 9420501, 404000, 1, 1, 0, 300), +(11834, 9420501, 4010005, 1, 1, 0, 300), +(11835, 9420501, 2043301, 1, 1, 0, 1000), +(11836, 9420501, 1072103, 1, 1, 0, 2000), +(11837, 9420501, 1032008, 1, 1, 0, 1800), +(11838, 9420501, 1050011, 1, 1, 0, 1800), +(11839, 9420501, 1040044, 1, 1, 0, 2000), +(11840, 9420501, 1060033, 1, 1, 0, 2000), +(11841, 9420501, 1302017, 1, 1, 0, 1800), +(11842, 9420501, 2048005, 1, 1, 0, 1000), +(11843, 9420501, 2020028, 1, 1, 0, 20000), +(11844, 9420501, 1050051, 1, 1, 0, 1800), +(11845, 9420501, 1040099, 1, 1, 0, 2000), +(11846, 9420501, 1060088, 1, 1, 0, 2000), +(11847, 9420501, 1050058, 1, 1, 0, 1800), +(11848, 9420501, 1332020, 1, 1, 0, 1500), +(11849, 9420501, 4006001, 1, 1, 0, 5000), +(11850, 9420501, 4030012, 1, 1, 0, 300), +(11851, 9420501, 1072297, 1, 1, 0, 2000), +(11852, 9420501, 1482001, 1, 1, 0, 2000), +(11853, 9420501, 1482005, 1, 1, 0, 2000), +(11854, 9420501, 1492005, 1, 1, 0, 2000), +(11855, 9420502, 4000366, 1, 1, 0, 300000), +(11856, 9420502, 4000367, 1, 1, 0, 300000), +(11857, 9420502, 400000, 1, 1, 0, 10000), +(11858, 9420502, 2043202, 1, 1, 0, 1000), +(11859, 9420502, 1372001, 1, 1, 0, 1800), +(11860, 9420502, 400003, 1, 1, 0, 10000), +(11861, 9420502, 1072008, 1, 1, 0, 2000), +(11862, 9420502, 2060000, 1, 1, 0, 10000), +(11863, 9420502, 4010005, 1, 1, 0, 300), +(11864, 9420502, 4020004, 1, 1, 0, 300), +(11865, 9420502, 1312016, 1, 1, 0, 1800), +(11866, 9420502, 1051008, 1, 1, 0, 1800), +(11867, 9420502, 1051009, 1, 1, 0, 1800), +(11868, 9420502, 2020028, 1, 1, 0, 20000), +(11869, 9420502, 1092007, 1, 1, 0, 1800), +(11870, 9420502, 1002141, 1, 1, 0, 2000), +(11871, 9420502, 1002177, 1, 1, 0, 2000), +(11872, 9420502, 1040074, 1, 1, 0, 2000), +(11873, 9420502, 1060063, 1, 1, 0, 2000), +(11874, 9420502, 2061000, 1, 1, 0, 10000), +(11875, 9420502, 1402009, 1, 1, 0, 1800), +(11876, 9420502, 1002610, 1, 1, 0, 2000), +(11877, 9420502, 2330000, 1, 1, 0, 500), +(11878, 9420503, 4000371, 1, 1, 0, 300000), +(11879, 9420503, 4000370, 1, 1, 0, 300000), +(11880, 9420503, 1061047, 1, 1, 0, 2000), +(11881, 9420503, 1061048, 1, 1, 0, 2000), +(11882, 9420503, 1061049, 1, 1, 0, 2000), +(11883, 9420503, 2070001, 1, 1, 0, 500), +(11884, 9420503, 1060050, 1, 1, 0, 2000), +(11885, 9420503, 1060051, 1, 1, 0, 2000), +(11886, 9420503, 4001000, 1, 1, 0, 5000), +(11887, 9420503, 1040061, 1, 1, 0, 2000), +(11888, 9420503, 1002137, 1, 1, 0, 2000), +(11889, 9420503, 400002, 1, 1, 0, 10000), +(11890, 9420503, 400003, 1, 1, 0, 10000), +(11891, 9420503, 1002153, 1, 1, 0, 2000), +(11892, 9420503, 1002181, 1, 1, 0, 2000), +(11893, 9420503, 2020028, 1, 1, 0, 20000), +(11894, 9420503, 404000, 1, 1, 0, 300), +(11895, 9420503, 4010001, 1, 1, 0, 300), +(11896, 9420503, 1041075, 1, 1, 0, 2000), +(11897, 9420503, 1061070, 1, 1, 0, 2000), +(11898, 9420503, 1002613, 1, 1, 0, 2000), +(11899, 9420504, 4000377, 1, 1, 0, 300000), +(11900, 9420504, 4004004, 1, 1, 0, 5000), +(11901, 9420504, 400002, 1, 1, 0, 10000), +(11902, 9420504, 400004, 1, 1, 0, 333333), +(11903, 9420504, 400003, 1, 1, 0, 10000), +(11904, 9420504, 4010001, 1, 1, 0, 300), +(11905, 9420504, 404000, 1, 1, 0, 300), +(11906, 9420504, 1041086, 1, 1, 0, 2000), +(11907, 9420504, 1061085, 1, 1, 0, 2000), +(11908, 9420504, 1302013, 1, 1, 0, 1800), +(11909, 9420504, 1002083, 1, 1, 0, 2000), +(11910, 9420504, 1032007, 1, 1, 0, 1800), +(11911, 9420504, 1041080, 1, 1, 0, 2000), +(11912, 9420504, 1061079, 1, 1, 0, 2000), +(11913, 9420504, 1040094, 1, 1, 0, 2000), +(11914, 9420504, 1060083, 1, 1, 0, 2000), +(11915, 9420504, 1002211, 1, 1, 0, 2000), +(11916, 9420504, 1002212, 1, 1, 0, 2000), +(11917, 9420504, 2020028, 1, 1, 0, 20000), +(11918, 9420504, 1041092, 1, 1, 0, 2000), +(11919, 9420504, 1061091, 1, 1, 0, 2000), +(11920, 9420504, 1102003, 1, 1, 0, 2000), +(11921, 9420504, 4006001, 1, 1, 0, 5000), +(11922, 9420504, 4030012, 1, 1, 0, 300), +(11923, 9420504, 1072291, 1, 1, 0, 2000), +(11924, 9420504, 1082186, 1, 1, 0, 2000), +(11925, 9420504, 1482003, 1, 1, 0, 333333), +(11926, 9420504, 2331000, 1, 1, 0, 500), +(11927, 9420505, 4000378, 1, 1, 0, 300000), +(11928, 9420505, 400002, 1, 1, 0, 10000), +(11929, 9420505, 2002004, 1, 1, 0, 10000), +(11930, 9420505, 1032002, 1, 1, 0, 1800), +(11931, 9420505, 1041014, 1, 1, 0, 2000), +(11932, 9420505, 1002185, 1, 1, 0, 2000), +(11933, 9420505, 1002167, 1, 1, 0, 2000), +(11934, 9420505, 2020028, 1, 1, 0, 20000), +(11935, 9420505, 4010006, 1, 1, 0, 300), +(11936, 9420505, 4020007, 1, 1, 0, 300), +(11937, 9420505, 1002036, 1, 1, 0, 2000), +(11938, 9420505, 400004, 1, 1, 0, 333333), +(11939, 9420505, 2070003, 1, 1, 0, 500), +(11940, 9420505, 1041065, 1, 1, 0, 2000), +(11941, 9420505, 1061060, 1, 1, 0, 2000), +(11942, 9420505, 1051038, 1, 1, 0, 1800), +(11943, 9420505, 1051039, 1, 1, 0, 1800), +(11944, 9420505, 4030012, 1, 1, 0, 300), +(11945, 9420505, 1002616, 1, 1, 0, 2000), +(11946, 9420505, 1052101, 1, 1, 0, 1800), +(11947, 9420505, 1082183, 1, 1, 0, 2000), +(11948, 9420506, 4000368, 1, 1, 0, 300000), +(11949, 9420506, 400001, 1, 1, 0, 333333), +(11950, 9420506, 2002000, 1, 1, 0, 10000), +(11951, 9420506, 2044302, 1, 1, 0, 1000), +(11952, 9420506, 1032000, 1, 1, 0, 1800), +(11953, 9420506, 1002179, 1, 1, 0, 2000), +(11954, 9420506, 1050030, 1, 1, 0, 1800), +(11955, 9420506, 1050031, 1, 1, 0, 1800), +(11956, 9420506, 2060000, 1, 1, 0, 10000), +(11957, 9420506, 4010002, 1, 1, 0, 300), +(11958, 9420506, 4020003, 1, 1, 0, 300), +(11959, 9420506, 2020028, 1, 1, 0, 20000), +(11960, 9420506, 1432003, 1, 1, 0, 1500), +(11961, 9420506, 400003, 1, 1, 0, 10000), +(11962, 9420506, 1002035, 1, 1, 0, 2000), +(11963, 9420506, 2061000, 1, 1, 0, 10000), +(11964, 9420506, 1312007, 1, 1, 0, 1800), +(11965, 9420506, 1040021, 1, 1, 0, 2000), +(11966, 9420506, 1040081, 1, 1, 0, 2000), +(11967, 9420506, 1060070, 1, 1, 0, 2000), +(11968, 9420507, 4000374, 1, 1, 0, 300000), +(11969, 9420507, 4000375, 1, 1, 0, 300000), +(11970, 9420507, 4000376, 1, 1, 0, 300000), +(11971, 9420507, 400004, 1, 1, 0, 333333), +(11972, 9420507, 400003, 1, 1, 0, 10000), +(11973, 9420507, 4010003, 1, 1, 0, 300), +(11974, 9420507, 4020002, 1, 1, 0, 300), +(11975, 9420507, 1302016, 1, 1, 0, 1800), +(11976, 9420507, 1051032, 1, 1, 0, 1800), +(11977, 9420507, 1051033, 1, 1, 0, 1800), +(11978, 9420507, 2043201, 1, 1, 0, 1000), +(11979, 9420507, 1041027, 1, 1, 0, 1200), +(11980, 9420507, 1061025, 1, 1, 0, 1200), +(11981, 9420507, 1040089, 1, 1, 0, 1200), +(11982, 9420507, 1060078, 1, 1, 0, 1200), +(11983, 9420507, 2020028, 1, 1, 0, 20000), +(11984, 9420507, 1002213, 1, 1, 0, 1200), +(11985, 9420507, 1002214, 1, 1, 0, 1200), +(11986, 9420507, 1002216, 1, 1, 0, 1200), +(11987, 9420507, 1050053, 1, 1, 0, 1800), +(11988, 9420507, 1050054, 1, 1, 0, 1800), +(11989, 9420507, 1002242, 1, 1, 0, 1200), +(11990, 9420507, 1002243, 1, 1, 0, 1200), +(11991, 9420507, 1002619, 1, 1, 0, 1200), +(11992, 9420507, 1052104, 1, 1, 0, 1800), +(11993, 9420507, 1482002, 1, 1, 0, 1800), +(11994, 9420507, 1492002, 1, 1, 0, 1800), +(11995, 9420507, 2044802, 1, 1, 0, 1000), +(11996, 9420508, 4000373, 1, 1, 0, 300000), +(11997, 9420508, 400002, 1, 1, 0, 10000), +(11998, 9420508, 400003, 1, 1, 0, 10000), +(11999, 9420508, 4020005, 1, 1, 0, 300), +(12000, 9420508, 4010003, 1, 1, 0, 300), +(12001, 9420508, 400004, 1, 1, 0, 333333), +(12002, 9420508, 2060000, 1, 1, 0, 10000), +(12003, 9420508, 2061000, 1, 1, 0, 10000), +(12004, 9420508, 1060074, 1, 1, 0, 2000), +(12005, 9420508, 1002128, 1, 1, 0, 2000), +(12006, 9420508, 1072054, 1, 1, 0, 2000), +(12007, 9420508, 1051010, 1, 1, 0, 1800), +(12008, 9420508, 2020028, 1, 1, 0, 20000), +(12009, 9420508, 1041078, 1, 1, 0, 2000), +(12010, 9420508, 1061077, 1, 1, 0, 2000), +(12011, 9420508, 1040086, 1, 1, 0, 2000), +(12012, 9420508, 1040095, 1, 1, 0, 2000), +(12013, 9420508, 1060084, 1, 1, 0, 2000), +(12014, 9420508, 1041087, 1, 1, 0, 2000), +(12015, 9420508, 1061086, 1, 1, 0, 2000), +(12016, 9420508, 1002217, 1, 1, 0, 2000), +(12017, 9420508, 1072288, 1, 1, 0, 2000), +(12018, 9420508, 1072294, 1, 1, 0, 2000), +(12019, 9420508, 1482000, 1, 1, 0, 2000), +(12020, 9420508, 1482004, 1, 1, 0, 2000), +(12021, 9420508, 1482006, 1, 1, 0, 2000), +(12022, 9420508, 1492004, 1, 1, 0, 2000), +(12023, 9420508, 1492006, 1, 1, 0, 2000), +(12024, 9420509, 4000380, 1, 1, 0, 300000), +(12025, 9420509, 1050039, 1, 1, 0, 1800), +(12026, 9420509, 4004004, 1, 1, 0, 5000), +(12027, 9420509, 400003, 1, 1, 0, 10000), +(12028, 9420509, 400004, 1, 1, 0, 333333), +(12029, 9420509, 1051001, 1, 1, 0, 1800), +(12030, 9420509, 1051014, 1, 1, 0, 1800), +(12031, 9420509, 4020008, 1, 1, 0, 300), +(12032, 9420509, 2070004, 1, 1, 0, 500), +(12033, 9420509, 1060064, 1, 1, 0, 2000), +(12034, 9420509, 1040075, 1, 1, 0, 2000), +(12035, 9420509, 2044201, 1, 1, 0, 1000), +(12036, 9420509, 2020028, 1, 1, 0, 20000), +(12037, 9420509, 1402007, 1, 1, 0, 1800), +(12038, 9420509, 1050036, 1, 1, 0, 1800), +(12039, 9420509, 1050037, 1, 1, 0, 1800), +(12040, 9420509, 4001005, 1, 1, 0, 5000), +(12041, 9420509, 1050059, 1, 1, 0, 1800), +(12042, 9420509, 1050060, 1, 1, 0, 1800), +(12043, 9420509, 1041093, 1, 1, 0, 2000), +(12044, 9420509, 1061092, 1, 1, 0, 2000), +(12045, 9420509, 1002631, 1, 1, 0, 2000), +(12046, 9420509, 1052116, 1, 1, 0, 1800), +(12047, 9420509, 2330002, 1, 1, 0, 500), +(12048, 9420510, 4000379, 1, 1, 0, 300000), +(12049, 9420510, 1061071, 1, 1, 0, 2000), +(12050, 9420510, 400006, 1, 1, 0, 333333), +(12051, 9420510, 4020008, 1, 1, 0, 300), +(12052, 9420510, 4010006, 1, 1, 0, 300), +(12053, 9420510, 1040109, 1, 1, 0, 2000), +(12054, 9420510, 1060098, 1, 1, 0, 2000), +(12055, 9420510, 1041068, 1, 1, 0, 2000), +(12056, 9420510, 1061063, 1, 1, 0, 2000), +(12057, 9420510, 1032011, 1, 1, 0, 1800), +(12058, 9420510, 1452008, 1, 1, 0, 1500), +(12059, 9420510, 1102017, 1, 1, 0, 2000), +(12060, 9420510, 1312008, 1, 1, 0, 1800), +(12061, 9420510, 2043701, 1, 1, 0, 1000), +(12062, 9420510, 1041076, 1, 1, 0, 2000), +(12063, 9420510, 1051030, 1, 1, 0, 1800), +(12064, 9420510, 2020028, 1, 1, 0, 20000), +(12065, 9420510, 1051031, 1, 1, 0, 1800), +(12066, 9420510, 1051034, 1, 1, 0, 1800), +(12067, 9420510, 1002209, 1, 1, 0, 2000), +(12068, 9420510, 1002210, 1, 1, 0, 2000), +(12069, 9420510, 1051046, 1, 1, 0, 1800), +(12070, 9420510, 1051047, 1, 1, 0, 1800), +(12071, 9420510, 4030012, 1, 1, 0, 300), +(12072, 9420510, 1492001, 1, 1, 0, 3000), +(12073, 9420511, 4000382, 1, 1, 0, 300000), +(12074, 9420511, 400006, 1, 1, 0, 333333), +(12075, 9420511, 400004, 1, 1, 0, 333333), +(12076, 9420511, 4020007, 1, 1, 0, 300), +(12077, 9420511, 4010005, 1, 1, 0, 300), +(12078, 9420511, 2070005, 1, 1, 0, 500), +(12079, 9420511, 1041083, 1, 1, 0, 2000), +(12080, 9420511, 1061082, 1, 1, 0, 2000), +(12081, 9420511, 1072090, 1, 1, 0, 2000), +(12082, 9420511, 1041079, 1, 1, 0, 2000), +(12083, 9420511, 1061078, 1, 1, 0, 2000), +(12084, 9420511, 4001006, 1, 1, 0, 1000), +(12085, 9420511, 2020028, 1, 1, 0, 20000), +(12086, 9420511, 1002215, 1, 1, 0, 2000), +(12087, 9420511, 1050055, 1, 1, 0, 1800), +(12088, 9420511, 1102015, 1, 1, 0, 2000), +(12089, 9420511, 1050056, 1, 1, 0, 1800), +(12090, 9420511, 1041098, 1, 1, 0, 2000), +(12091, 9420511, 1482008, 1, 1, 0, 3000), +(12092, 9420511, 1492008, 1, 1, 0, 3000), +(12093, 9420512, 4000383, 1, 1, 0, 300000), +(12094, 9420512, 400002, 1, 1, 0, 10000), +(12095, 9420512, 400004, 1, 1, 0, 333333), +(12096, 9420512, 4010006, 1, 1, 0, 300), +(12097, 9420512, 4020006, 1, 1, 0, 300), +(12098, 9420512, 4006000, 1, 1, 0, 5000), +(12099, 9420512, 4004004, 1, 1, 0, 5000), +(12100, 9420512, 2020028, 1, 1, 0, 20000), +(12101, 9420512, 1040093, 1, 1, 0, 2000), +(12102, 9420512, 1060082, 1, 1, 0, 2000), +(12103, 9420512, 1082082, 1, 1, 0, 2000), +(12104, 9420512, 1302011, 1, 1, 0, 1800), +(12105, 9420512, 1312009, 1, 1, 0, 1800), +(12106, 9420512, 1040089, 1, 1, 0, 2000), +(12107, 9420512, 1060078, 1, 1, 0, 2000), +(12108, 9420512, 2041022, 1, 1, 0, 1000), +(12109, 9420512, 2043301, 1, 1, 0, 1000), +(12110, 9420512, 1032015, 1, 1, 0, 1800), +(12111, 9420512, 1050093, 1, 1, 0, 1800), +(12112, 9420512, 1002637, 1, 1, 0, 2000), +(12113, 9420512, 1052122, 1, 1, 0, 1800), +(12114, 9420512, 2330003, 1, 1, 0, 500), +(12115, 9420513, 4000384, 1, 1, 0, 300000), +(12116, 9420513, 4000385, 1, 1, 0, 300000), +(12117, 9420513, 2020013, 1, 1, 0, 333333), +(12118, 9420513, 2020015, 1, 1, 0, 333333), +(12119, 9420513, 400006, 1, 1, 0, 333333), +(12120, 9420513, 1072178, 1, 1, 0, 4000), +(12121, 9420513, 1040112, 1, 1, 0, 4000), +(12122, 9420513, 1041120, 1, 1, 0, 4000), +(12123, 9420513, 1061119, 1, 1, 0, 4000), +(12124, 9420513, 1051097, 1, 1, 0, 3000), +(12125, 9420513, 1060106, 1, 1, 0, 4000), +(12126, 9420513, 1041118, 1, 1, 0, 4000), +(12127, 9420513, 1072198, 1, 1, 0, 4000), +(12128, 9420513, 1312015, 1, 1, 0, 3000), +(12129, 9420513, 1332026, 1, 1, 0, 25000), +(12130, 9420513, 1462018, 1, 1, 0, 25000), +(12131, 9420513, 1372009, 1, 1, 0, 3000), +(12132, 9420513, 2041022, 1, 1, 0, 1000), +(12133, 9420513, 2290118, 1, 1, 0, 4000), +(12134, 9420513, 2290100, 1, 1, 0, 4000), +(12135, 9420514, 4000429, 1, 1, 0, 300000), +(12136, 9420514, 400006, 1, 1, 0, 333333), +(12137, 9420514, 400005, 1, 1, 0, 333333), +(12138, 9420514, 4020008, 1, 1, 0, 300), +(12139, 9420514, 4010006, 1, 1, 0, 300), +(12140, 9420514, 2044702, 1, 1, 0, 1000), +(12141, 9420514, 2043802, 1, 1, 0, 1000), +(12142, 9420514, 4006000, 1, 1, 0, 5000), +(12143, 9420514, 4004002, 1, 1, 0, 5000), +(12144, 9420514, 400002, 1, 1, 0, 10000), +(12145, 9420514, 1050083, 1, 1, 0, 1800), +(12146, 9420514, 1082119, 1, 1, 0, 2000), +(12147, 9420514, 1072185, 1, 1, 0, 2000), +(12148, 9420514, 1002330, 1, 1, 0, 2000), +(12149, 9420514, 1092027, 1, 1, 0, 1800), +(12150, 9420514, 1452015, 1, 1, 0, 1500), +(12151, 9420514, 1462013, 1, 1, 0, 1500), +(12152, 9420514, 1432010, 1, 1, 0, 1500), +(12153, 9420514, 1302056, 1, 1, 0, 1800), +(12154, 9420514, 1372010, 1, 1, 0, 1800), +(12155, 9420514, 1332052, 1, 1, 0, 1500), +(12156, 9420514, 1002640, 1, 1, 0, 2000), +(12157, 9420514, 1052125, 1, 1, 0, 1800), +(12158, 9420514, 1082207, 1, 1, 0, 2000), +(12159, 9420514, 2330004, 1, 1, 0, 500), +(12160, 9420514, 2290099, 1, 1, 0, 2000), +(12161, 9420516, 4000431, 1, 1, 0, 300000), +(12162, 9420516, 400006, 1, 1, 0, 333333), +(12163, 9420516, 400005, 1, 1, 0, 333333), +(12164, 9420516, 4004002, 1, 1, 0, 5000), +(12165, 9420516, 4010001, 1, 1, 0, 300), +(12166, 9420516, 404000, 1, 1, 0, 300), +(12167, 9420516, 4006001, 1, 1, 0, 5000), +(12168, 9420516, 1002365, 1, 1, 0, 2000), +(12169, 9420516, 1050089, 1, 1, 0, 1800), +(12170, 9420516, 1041118, 1, 1, 0, 2000), +(12171, 9420516, 1061116, 1, 1, 0, 2000), +(12172, 9420516, 1082129, 1, 1, 0, 2000), +(12173, 9420516, 1072223, 1, 1, 0, 2000), +(12174, 9420516, 1452017, 1, 1, 0, 1500), +(12175, 9420516, 2040701, 1, 1, 0, 1000), +(12176, 9420516, 2040516, 1, 1, 0, 1000), +(12177, 9420516, 2043002, 1, 1, 0, 1000), +(12178, 9420515, 4000430, 1, 1, 0, 300000), +(12179, 9420515, 400006, 1, 1, 0, 333333), +(12180, 9420515, 400005, 1, 1, 0, 333333), +(12181, 9420515, 4010003, 1, 1, 0, 300), +(12182, 9420515, 4020001, 1, 1, 0, 300), +(12183, 9420515, 2048004, 1, 1, 0, 1000), +(12184, 9420515, 2040901, 1, 1, 0, 1000), +(12185, 9420515, 4006001, 1, 1, 0, 5000), +(12186, 9420515, 4004003, 1, 1, 0, 5000), +(12187, 9420515, 400002, 1, 1, 0, 10000), +(12188, 9420515, 1082117, 1, 1, 0, 2000), +(12189, 9420515, 1072179, 1, 1, 0, 2000), +(12190, 9420515, 1002328, 1, 1, 0, 2000), +(12191, 9420515, 1040109, 1, 1, 0, 2000), +(12192, 9420515, 1060098, 1, 1, 0, 2000), +(12193, 9420515, 1452014, 1, 1, 0, 1500), +(12194, 9420515, 1382008, 1, 1, 0, 1800), +(12195, 9420515, 1032023, 1, 1, 0, 1800), +(12196, 9420515, 1092026, 1, 1, 0, 1800), +(12197, 9420515, 1312030, 1, 1, 0, 1800), +(12198, 9420515, 1402035, 1, 1, 0, 1800), +(12199, 9420515, 1472053, 1, 1, 0, 1300), +(12200, 9420517, 4000432, 1, 1, 0, 300000), +(12201, 9420517, 2022003, 1, 1, 0, 333333), +(12202, 9420517, 400006, 1, 1, 0, 333333), +(12203, 9420517, 400005, 1, 1, 0, 333333), +(12204, 9420517, 4004003, 1, 1, 0, 5000), +(12205, 9420517, 4020007, 1, 1, 0, 300), +(12206, 9420517, 4010005, 1, 1, 0, 300), +(12207, 9420517, 4006001, 1, 1, 0, 5000), +(12208, 9420517, 4006000, 1, 1, 0, 5000), +(12209, 9420517, 1002406, 1, 1, 0, 2000), +(12210, 9420517, 1051101, 1, 1, 0, 1800), +(12211, 9420517, 1050097, 1, 1, 0, 1800), +(12212, 9420517, 1082139, 1, 1, 0, 2000), +(12213, 9420517, 1072225, 1, 1, 0, 2000), +(12214, 9420517, 1032023, 1, 1, 0, 1800), +(12215, 9420517, 1412021, 1, 1, 0, 1800), +(12216, 9420517, 1452019, 1, 1, 0, 1500), +(12217, 9420517, 2043801, 1, 1, 0, 1000), +(12218, 9420517, 2041023, 1, 1, 0, 1000), +(12219, 9420517, 2040707, 1, 1, 0, 1000), +(12220, 9420517, 1082152, 1, 1, 0, 2000), +(12221, 9420517, 2290000, 1, 1, 0, 2000), +(12222, 9420517, 2290008, 1, 1, 0, 2000), +(12223, 9420517, 2290018, 1, 1, 0, 2000), +(12224, 9420517, 2290038, 1, 1, 0, 2000), +(12225, 9420517, 2290060, 1, 1, 0, 2000), +(12226, 9420517, 2290080, 1, 1, 0, 2000), +(12227, 9420517, 2290103, 1, 1, 0, 2000), +(12228, 9420518, 400006, 1, 1, 0, 333333), +(12229, 9420518, 400005, 1, 1, 0, 333333), +(12230, 9420518, 2022003, 1, 1, 0, 333333), +(12231, 9420518, 2020013, 1, 1, 0, 333333), +(12232, 9420518, 4010001, 1, 1, 0, 300), +(12233, 9420518, 4020002, 1, 1, 0, 300), +(12234, 9420518, 4004004, 1, 1, 0, 5000), +(12235, 9420518, 1002530, 1, 1, 0, 2000), +(12236, 9420518, 1050098, 1, 1, 0, 1800), +(12237, 9420518, 1041122, 1, 1, 0, 2000), +(12238, 9420518, 1061121, 1, 1, 0, 2000), +(12239, 9420518, 1051101, 1, 1, 0, 1800), +(12240, 9420518, 1082158, 1, 1, 0, 2000), +(12241, 9420518, 1072208, 1, 1, 0, 2000), +(12242, 9420518, 1092027, 1, 1, 0, 1800), +(12243, 9420518, 1402016, 1, 1, 0, 1800), +(12244, 9420518, 1382035, 1, 1, 0, 1800), +(12245, 9420518, 2040302, 1, 1, 0, 1000), +(12246, 9420518, 2040501, 1, 1, 0, 1000), +(12247, 9420518, 4000433, 1, 1, 0, 300000), +(12248, 9420518, 1082136, 1, 1, 0, 2000), +(12249, 9420518, 2044902, 1, 1, 0, 1000), +(12250, 9420518, 2290123, 1, 1, 0, 2000), +(12251, 9420519, 4000434, 1, 1, 0, 300000), +(12252, 9420519, 2022003, 1, 1, 0, 333333), +(12253, 9420519, 400006, 1, 1, 0, 333333), +(12254, 9420519, 400005, 1, 1, 0, 333333), +(12255, 9420519, 4004004, 1, 1, 0, 5000), +(12256, 9420519, 4020006, 1, 1, 0, 300), +(12257, 9420519, 4020002, 1, 1, 0, 300), +(12258, 9420519, 4006001, 1, 1, 0, 5000), +(12259, 9420519, 4006000, 1, 1, 0, 5000), +(12260, 9420519, 1002380, 1, 1, 0, 2000), +(12261, 9420519, 1051102, 1, 1, 0, 1800), +(12262, 9420519, 1040121, 1, 1, 0, 2000), +(12263, 9420519, 1060109, 1, 1, 0, 2000), +(12264, 9420519, 1082151, 1, 1, 0, 2000), +(12265, 9420519, 1072215, 1, 1, 0, 2000), +(12266, 9420519, 1322045, 1, 1, 0, 1800), +(12267, 9420519, 1302056, 1, 1, 0, 1800), +(12268, 9420519, 2041004, 1, 1, 0, 1000), +(12269, 9420519, 2041013, 1, 1, 0, 1000), +(12270, 9420519, 2044201, 1, 1, 0, 1000), +(12271, 9420519, 2330005, 1, 1, 0, 500), +(12272, 9420519, 2290113, 1, 1, 0, 2000), +(12273, 9420522, 2020013, 1, 1, 0, 333333), +(12274, 9420522, 2020015, 1, 1, 0, 333333), +(12275, 9420522, 400005, 1, 1, 0, 333333), +(12276, 9420522, 1302056, 1, 1, 0, 3000), +(12277, 9420522, 1312030, 1, 1, 0, 3000), +(12278, 9420522, 1322045, 1, 1, 0, 3000), +(12279, 9420522, 1332051, 1, 1, 0, 25000), +(12280, 9420522, 1332052, 1, 1, 0, 25000), +(12281, 9420522, 1372010, 1, 1, 0, 3000), +(12282, 9420522, 1382035, 1, 1, 0, 3000), +(12283, 9420522, 1402035, 1, 1, 0, 3000), +(12284, 9420522, 1412021, 1, 1, 0, 3000), +(12285, 9420522, 1422027, 1, 1, 0, 3000), +(12286, 9420522, 1432030, 1, 1, 0, 25000), +(12287, 9420522, 1442044, 1, 1, 0, 3000), +(12288, 9420522, 1452019, 1, 1, 0, 25000), +(12289, 9420522, 1452020, 1, 1, 0, 25000), +(12290, 9420522, 1462015, 1, 1, 0, 25000), +(12291, 9420522, 1462016, 1, 1, 0, 25000), +(12292, 9420522, 1472053, 1, 1, 0, 13000), +(12293, 9420522, 400004, 1, 1, 0, 333333), +(12294, 9420522, 2290028, 1, 1, 0, 4000), +(12295, 9420522, 2290037, 1, 1, 0, 4000), +(12296, 9420522, 2290043, 1, 1, 0, 4000), +(12297, 9420522, 2290066, 1, 1, 0, 4000), +(12298, 9420522, 2290089, 1, 1, 0, 4000), +(12299, 9420522, 2290091, 1, 1, 0, 4000), +(12300, 9420522, 2290011, 1, 1, 0, 4000), +(12301, 9420522, 2290001, 1, 1, 0, 4000), +(12302, 9420522, 2290025, 1, 1, 0, 4000), +(12303, 9420522, 2290083, 1, 1, 0, 4000), +(12304, 9420522, 2290000, 1, 1, 0, 4000), +(12305, 9420522, 2290082, 1, 1, 0, 4000), +(12306, 9420522, 4000435, 1, 1, 0, 300000), +(12307, 9420522, 2290107, 1, 1, 0, 4000), +(12308, 9420527, 4000465, 1, 1, 0, 300000), +(12309, 9420527, 400006, 1, 1, 0, 333333), +(12310, 9420527, 2020028, 1, 1, 0, 20000), +(12311, 9420527, 401000, 1, 1, 0, 300), +(12312, 9420527, 4020001, 1, 1, 0, 300), +(12313, 9420527, 2002010, 1, 1, 0, 333333), +(12314, 9420527, 2040101, 1, 1, 0, 1000), +(12315, 9420527, 2040311, 1, 1, 0, 1000), +(12316, 9420527, 4130010, 1, 1, 0, 5000), +(12317, 9420527, 1332015, 1, 1, 0, 1500), +(12318, 9420527, 1302013, 1, 1, 0, 1800), +(12319, 9420527, 1472017, 1, 1, 0, 1300), +(12320, 9420527, 1082064, 1, 1, 0, 2000), +(12321, 9420527, 1072124, 1, 1, 0, 2000), +(12322, 9420527, 1072055, 1, 1, 0, 2000), +(12323, 9420527, 1050047, 1, 1, 0, 1800), +(12324, 9420527, 1050046, 1, 1, 0, 1800), +(12325, 9420527, 1051039, 1, 1, 0, 1800), +(12326, 9420527, 2060001, 1, 1, 0, 10000), +(12327, 9420527, 2061001, 1, 1, 0, 10000), +(12328, 9420527, 1002625, 1, 1, 0, 2000), +(12329, 9420527, 1052110, 1, 1, 0, 1800), +(12330, 9420527, 1082192, 1, 1, 0, 2000), +(12331, 9420527, 1492000, 1, 1, 0, 333333), +(12332, 9420527, 2330000, 1, 1, 0, 500), +(12333, 9420528, 4000466, 1, 1, 0, 300000), +(12334, 9420528, 2020006, 1, 1, 0, 333333), +(12335, 9420528, 400010, 1, 1, 0, 333333), +(12336, 9420528, 2050004, 1, 1, 0, 5000), +(12337, 9420528, 4010001, 1, 1, 0, 300), +(12338, 9420528, 4020002, 1, 1, 0, 300), +(12339, 9420528, 2040516, 1, 1, 0, 1000), +(12340, 9420528, 2044501, 1, 1, 0, 1000), +(12341, 9420528, 4131008, 1, 1, 0, 5000), +(12342, 9420528, 4130000, 1, 1, 0, 5000), +(12343, 9420528, 2040704, 1, 1, 0, 1000), +(12344, 9420528, 4004001, 1, 1, 0, 5000), +(12345, 9420528, 1302016, 1, 1, 0, 1800), +(12346, 9420528, 1322017, 1, 1, 0, 1800), +(12347, 9420528, 1332016, 1, 1, 0, 1500), +(12348, 9420528, 1372012, 1, 1, 0, 1800), +(12349, 9420528, 1102003, 1, 1, 0, 2000), +(12350, 9420528, 1082050, 1, 1, 0, 2000), +(12351, 9420528, 1060078, 1, 1, 0, 2000), +(12352, 9420528, 1072134, 1, 1, 0, 2000), +(12353, 9420528, 1032018, 1, 1, 0, 1800), +(12354, 9420528, 1002024, 1, 1, 0, 2000), +(12355, 9420528, 4006000, 1, 1, 0, 5000), +(12356, 9420528, 1002628, 1, 1, 0, 2000), +(12357, 9420528, 1052113, 1, 1, 0, 1800), +(12358, 9420528, 1072285, 1, 1, 0, 2000), +(12359, 9420528, 1072300, 1, 1, 0, 2000), +(12360, 9420528, 1082195, 1, 1, 0, 2000), +(12361, 9420528, 2330001, 1, 1, 0, 500), +(12362, 9420529, 4000467, 1, 1, 0, 300000), +(12363, 9420529, 400006, 1, 1, 0, 333333), +(12364, 9420529, 4006001, 1, 1, 0, 5000), +(12365, 9420529, 2040005, 1, 1, 0, 1000), +(12366, 9420529, 2043801, 1, 1, 0, 1000), +(12367, 9420529, 4004000, 1, 1, 0, 5000), +(12368, 9420529, 4003002, 1, 1, 0, 20000), +(12369, 9420529, 1402010, 1, 1, 0, 1800), +(12370, 9420529, 1412003, 1, 1, 0, 1800), +(12371, 9420529, 1452008, 1, 1, 0, 1500), +(12372, 9420529, 1462006, 1, 1, 0, 1500), +(12373, 9420529, 1472021, 1, 1, 0, 1300), +(12374, 9420529, 2040302, 1, 1, 0, 1000), +(12375, 9420529, 1092009, 1, 1, 0, 1800), +(12376, 9420529, 1082083, 1, 1, 0, 2000), +(12377, 9420529, 1082072, 1, 1, 0, 2000), +(12378, 9420529, 1040089, 1, 1, 0, 2000), +(12379, 9420529, 1041080, 1, 1, 0, 2000), +(12380, 9420529, 1051030, 1, 1, 0, 1800), +(12381, 9420529, 1051038, 1, 1, 0, 1800), +(12382, 9420529, 1002184, 1, 1, 0, 2000), +(12383, 9420529, 1002099, 1, 1, 0, 2000), +(12384, 9420529, 1002216, 1, 1, 0, 2000), +(12385, 9420529, 1040096, 1, 1, 0, 2000), +(12386, 9420529, 1060085, 1, 1, 0, 2000), +(12387, 9420529, 1052098, 1, 1, 0, 1800), +(12388, 9420529, 1072303, 1, 1, 0, 2000), +(12389, 9420529, 1082198, 1, 1, 0, 2000), +(12390, 9420531, 4000469, 1, 1, 0, 300000), +(12391, 9420531, 2060001, 1, 1, 0, 10000), +(12392, 9420531, 2061001, 1, 1, 0, 10000), +(12393, 9420531, 4003005, 1, 1, 0, 40000), +(12394, 9420531, 4004003, 1, 1, 0, 5000), +(12395, 9420531, 4010002, 1, 1, 0, 300), +(12396, 9420531, 4020006, 1, 1, 0, 300), +(12397, 9420531, 400002, 1, 1, 0, 10000), +(12398, 9420531, 400006, 1, 1, 0, 333333), +(12399, 9420531, 400005, 1, 1, 0, 333333), +(12400, 9420531, 1332017, 1, 1, 0, 1500), +(12401, 9420531, 1302010, 1, 1, 0, 1800), +(12402, 9420531, 1372007, 1, 1, 0, 1800), +(12403, 9420531, 1402003, 1, 1, 0, 1800), +(12404, 9420531, 1412007, 1, 1, 0, 1800), +(12405, 9420531, 1452004, 1, 1, 0, 1500), +(12406, 9420531, 1092012, 1, 1, 0, 1800), +(12407, 9420531, 1082067, 1, 1, 0, 2000), +(12408, 9420531, 1082091, 1, 1, 0, 2000), +(12409, 9420531, 1041081, 1, 1, 0, 2000), +(12410, 9420531, 1061080, 1, 1, 0, 2000), +(12411, 9420531, 1041093, 1, 1, 0, 2000), +(12412, 9420531, 1061092, 1, 1, 0, 2000), +(12413, 9420531, 2040804, 1, 1, 0, 500), +(12414, 9420531, 2041005, 1, 1, 0, 1000), +(12415, 9420531, 2330002, 1, 1, 0, 500), +(12416, 9420532, 4000470, 1, 1, 0, 300000), +(12417, 9420532, 400002, 1, 1, 0, 10000), +(12418, 9420532, 400006, 1, 1, 0, 333333), +(12419, 9420532, 2043009, 1, 1, 0, 1000), +(12420, 9420532, 2044102, 1, 1, 0, 1000), +(12421, 9420532, 1032008, 1, 1, 0, 1800), +(12422, 9420532, 1002243, 1, 1, 0, 2000), +(12423, 9420532, 1002244, 1, 1, 0, 2000), +(12424, 9420532, 1002270, 1, 1, 0, 2000), +(12425, 9420532, 1002155, 1, 1, 0, 2000), +(12426, 9420532, 1051043, 1, 1, 0, 1800), +(12427, 9420532, 1041087, 1, 1, 0, 2000), +(12428, 9420532, 1061086, 1, 1, 0, 2000), +(12429, 9420532, 1041095, 1, 1, 0, 2000), +(12430, 9420532, 1061094, 1, 1, 0, 2000), +(12431, 9420532, 1072149, 1, 1, 0, 2000), +(12432, 9420532, 1072110, 1, 1, 0, 2000), +(12433, 9420532, 1051046, 1, 1, 0, 1800), +(12434, 9420532, 1051047, 1, 1, 0, 1800), +(12435, 9420532, 1102017, 1, 1, 0, 2000), +(12436, 9420532, 1472020, 1, 1, 0, 1300), +(12437, 9420532, 1332021, 1, 1, 0, 1500), +(12438, 9420532, 1332029, 1, 1, 0, 1500), +(12439, 9420532, 1372017, 1, 1, 0, 1800), +(12440, 9420532, 1002622, 1, 1, 0, 2000), +(12441, 9420532, 1052107, 1, 1, 0, 1800), +(12442, 9420532, 1082189, 1, 1, 0, 2000), +(12443, 9420532, 1492003, 1, 1, 0, 2000), +(12444, 9420533, 4000471, 1, 1, 0, 300000), +(12445, 9420533, 2002004, 1, 1, 0, 10000), +(12446, 9420533, 400009, 1, 1, 0, 333333), +(12447, 9420533, 400006, 1, 1, 0, 333333), +(12448, 9420533, 2002011, 1, 1, 0, 10000), +(12449, 9420533, 2044302, 1, 1, 0, 1000), +(12450, 9420533, 2048001, 1, 1, 0, 1000), +(12451, 9420533, 1312009, 1, 1, 0, 1800), +(12452, 9420533, 1322012, 1, 1, 0, 1800), +(12453, 9420533, 1332020, 1, 1, 0, 1500), +(12454, 9420533, 1372008, 1, 1, 0, 1800), +(12455, 9420533, 1402017, 1, 1, 0, 1800), +(12456, 9420533, 1432007, 1, 1, 0, 1500), +(12457, 9420533, 1051023, 1, 1, 0, 1800), +(12458, 9420533, 1051038, 1, 1, 0, 1800), +(12459, 9420533, 1050052, 1, 1, 0, 1800), +(12460, 9420533, 1050039, 1, 1, 0, 1800), +(12461, 9420533, 1040105, 1, 1, 0, 2000), +(12462, 9420533, 1060093, 1, 1, 0, 2000), +(12463, 9420533, 1041096, 1, 1, 0, 2000), +(12464, 9420533, 1061095, 1, 1, 0, 2000), +(12465, 9420533, 1002248, 1, 1, 0, 2000), +(12466, 9420533, 1002249, 1, 1, 0, 2000), +(12467, 9420533, 1002254, 1, 1, 0, 2000), +(12468, 9420533, 1082180, 1, 1, 0, 2000), +(12469, 9420535, 4000473, 1, 1, 0, 300000), +(12470, 9420535, 4030009, 1, 1, 0, 300), +(12471, 9420535, 400002, 1, 1, 0, 10000), +(12472, 9420535, 400004, 1, 1, 0, 333333), +(12473, 9420535, 2020028, 1, 1, 0, 20000), +(12474, 9420535, 4030012, 1, 1, 0, 300), +(12475, 9420535, 2022003, 1, 1, 0, 333333), +(12476, 9420535, 2044402, 1, 1, 0, 1000), +(12477, 9420535, 2043701, 1, 1, 0, 1000), +(12478, 9420535, 4010006, 1, 1, 0, 300), +(12479, 9420535, 404000, 1, 1, 0, 300), +(12480, 9420535, 1050060, 1, 1, 0, 1800), +(12481, 9420535, 1041076, 1, 1, 0, 2000), +(12482, 9420535, 1061071, 1, 1, 0, 2000), +(12483, 9420535, 1322007, 1, 1, 0, 1800), +(12484, 9420535, 1442009, 1, 1, 0, 1800), +(12485, 9420535, 1102012, 1, 1, 0, 2000), +(12486, 9420535, 1092029, 1, 1, 0, 1800), +(12487, 9420535, 1072018, 1, 1, 0, 2000), +(12488, 9420535, 1072159, 1, 1, 0, 2000), +(12489, 9420535, 1072161, 1, 1, 0, 2000), +(12490, 9420535, 1051016, 1, 1, 0, 1800), +(12491, 9420535, 1050070, 1, 1, 0, 1800), +(12492, 9420535, 1051055, 1, 1, 0, 1800), +(12493, 9420535, 1032020, 1, 1, 0, 1800), +(12494, 9420535, 1082106, 1, 1, 0, 2000), +(12495, 9420535, 1082093, 1, 1, 0, 2000), +(12496, 9420535, 1492009, 1, 1, 0, 2000), +(12497, 9420537, 4000475, 1, 1, 0, 300000), +(12498, 9420537, 2022003, 1, 1, 0, 333333), +(12499, 9420537, 400006, 1, 1, 0, 333333), +(12500, 9420537, 1322009, 1, 1, 0, 1800), +(12501, 9420537, 4010005, 1, 1, 0, 300), +(12502, 9420537, 4020007, 1, 1, 0, 300), +(12503, 9420537, 4006000, 1, 1, 0, 5000), +(12504, 9420537, 4004002, 1, 1, 0, 5000), +(12505, 9420537, 1372015, 1, 1, 0, 1800), +(12506, 9420537, 1102030, 1, 1, 0, 2000), +(12507, 9420537, 1041102, 1, 1, 0, 2000), +(12508, 9420537, 1061101, 1, 1, 0, 2000), +(12509, 9420537, 1050083, 1, 1, 0, 1800), +(12510, 9420537, 1051080, 1, 1, 0, 1800), +(12511, 9420537, 1072155, 1, 1, 0, 2000), +(12512, 9420537, 1072165, 1, 1, 0, 2000), +(12513, 9420537, 1032022, 1, 1, 0, 1800), +(12514, 9420537, 1002252, 1, 1, 0, 2000), +(12515, 9420537, 1002284, 1, 1, 0, 2000), +(12516, 9420537, 1002289, 1, 1, 0, 2000), +(12517, 9420537, 1452011, 1, 1, 0, 1500), +(12518, 9420537, 1462013, 1, 1, 0, 1500), +(12519, 9420537, 1472027, 1, 1, 0, 1300), +(12520, 9420537, 2043301, 1, 1, 0, 1000), +(12521, 9420537, 2040513, 1, 1, 0, 1000), +(12522, 9420537, 1002634, 1, 1, 0, 2000), +(12523, 9420537, 1052119, 1, 1, 0, 1800), +(12524, 9420537, 1072306, 1, 1, 0, 2000), +(12525, 9420537, 1082201, 1, 1, 0, 2000), +(12526, 9420538, 4000476, 1, 1, 0, 300000), +(12527, 9420538, 4010002, 1, 1, 0, 300), +(12528, 9420538, 4010001, 1, 1, 0, 300), +(12529, 9420538, 4004002, 1, 1, 0, 5000), +(12530, 9420538, 400006, 1, 1, 0, 333333), +(12531, 9420538, 400004, 1, 1, 0, 333333), +(12532, 9420538, 2070004, 1, 1, 0, 500), +(12533, 9420538, 4006000, 1, 1, 0, 5000), +(12534, 9420538, 2040705, 1, 1, 0, 1000), +(12535, 9420538, 2041017, 1, 1, 0, 1000), +(12536, 9420538, 1432010, 1, 1, 0, 1500), +(12537, 9420538, 1422012, 1, 1, 0, 1800), +(12538, 9420538, 1102029, 1, 1, 0, 2000), +(12539, 9420538, 1092015, 1, 1, 0, 1800), +(12540, 9420538, 1082123, 1, 1, 0, 2000), +(12541, 9420538, 1082112, 1, 1, 0, 2000), +(12542, 9420538, 1060091, 1, 1, 0, 2000), +(12543, 9420538, 1060094, 1, 1, 0, 2000), +(12544, 9420538, 1002274, 1, 1, 0, 2000), +(12545, 9420538, 1002278, 1, 1, 0, 2000), +(12546, 9420538, 1072179, 1, 1, 0, 2000), +(12547, 9420538, 1072163, 1, 1, 0, 2000), +(12548, 9420538, 1072155, 1, 1, 0, 2000), +(12549, 9420538, 1040109, 1, 1, 0, 2000), +(12550, 9420538, 1041106, 1, 1, 0, 2000), +(12551, 9420538, 1060098, 1, 1, 0, 2000), +(12552, 9420538, 1072312, 1, 1, 0, 2000), +(12553, 9420538, 1482010, 1, 1, 0, 2000), +(12554, 9420538, 1492010, 1, 1, 0, 2000), +(12555, 9420539, 4000477, 1, 1, 0, 300000), +(12556, 9420539, 401000, 1, 1, 0, 300), +(12557, 9420539, 4010002, 1, 1, 0, 300), +(12558, 9420539, 4020005, 1, 1, 0, 300), +(12559, 9420539, 4004004, 1, 1, 0, 5000), +(12560, 9420539, 400006, 1, 1, 0, 333333), +(12561, 9420539, 400009, 1, 1, 0, 333333), +(12562, 9420539, 2002008, 1, 1, 0, 333333), +(12563, 9420539, 2070005, 1, 1, 0, 500), +(12564, 9420539, 4006001, 1, 1, 0, 5000), +(12565, 9420539, 4006000, 1, 1, 0, 5000), +(12566, 9420539, 2040514, 1, 1, 0, 1000), +(12567, 9420539, 2040802, 1, 1, 0, 1000), +(12568, 9420539, 2044601, 1, 1, 0, 1000), +(12569, 9420539, 1412009, 1, 1, 0, 1800), +(12570, 9420539, 1402033, 1, 1, 0, 1800), +(12571, 9420539, 1382028, 1, 1, 0, 1800), +(12572, 9420539, 1102035, 1, 1, 0, 2000), +(12573, 9420539, 1102031, 1, 1, 0, 2000), +(12574, 9420539, 1082116, 1, 1, 0, 2000), +(12575, 9420539, 1082108, 1, 1, 0, 2000), +(12576, 9420539, 1082099, 1, 1, 0, 2000), +(12577, 9420539, 1002284, 1, 1, 0, 2000), +(12578, 9420539, 1050074, 1, 1, 0, 1800), +(12579, 9420539, 1050083, 1, 1, 0, 1800), +(12580, 9420539, 1050078, 1, 1, 0, 1800), +(12581, 9420540, 4000478, 1, 1, 0, 300000), +(12582, 9420540, 4010003, 1, 1, 0, 300), +(12583, 9420540, 4010006, 1, 1, 0, 300), +(12584, 9420540, 404000, 1, 1, 0, 300), +(12585, 9420540, 4004000, 1, 1, 0, 5000), +(12586, 9420540, 400005, 1, 1, 0, 333333), +(12587, 9420540, 400011, 1, 1, 0, 333333), +(12588, 9420540, 2002006, 1, 1, 0, 10000), +(12589, 9420540, 2070012, 1, 1, 0, 20000), +(12590, 9420540, 4006001, 1, 1, 0, 5000), +(12591, 9420540, 2022003, 1, 1, 0, 40000), +(12592, 9420540, 2041014, 1, 1, 0, 1000), +(12593, 9420540, 2040804, 1, 1, 0, 500), +(12594, 9420540, 2040613, 1, 1, 0, 1000), +(12595, 9420540, 1452017, 1, 1, 0, 1500), +(12596, 9420540, 1472031, 1, 1, 0, 1300), +(12597, 9420540, 1002329, 1, 1, 0, 2000), +(12598, 9420540, 1002366, 1, 1, 0, 2000), +(12599, 9420540, 1002405, 1, 1, 0, 2000), +(12600, 9420540, 1050095, 1, 1, 0, 1800), +(12601, 9420540, 1051097, 1, 1, 0, 1800), +(12602, 9420540, 1072198, 1, 1, 0, 2000), +(12603, 9420540, 1072209, 1, 1, 0, 2000), +(12604, 9420540, 1082134, 1, 1, 0, 2000), +(12605, 9420540, 2330005, 1, 1, 0, 500), +(12606, 9420540, 2290120, 1, 1, 0, 2000), +(12607, 9420544, 1032031, 1, 1, 0, 3000), +(12608, 9420544, 4001241, 1, 1, 0, 300000), +(12609, 9420544, 2020013, 1, 1, 0, 333333), +(12610, 9420544, 2020014, 1, 1, 0, 100000), +(12611, 9420544, 1302056, 1, 1, 0, 3000), +(12612, 9420544, 1312030, 1, 1, 0, 3000), +(12613, 9420544, 1322045, 1, 1, 0, 3000), +(12614, 9420544, 1332051, 1, 1, 0, 25000), +(12615, 9420544, 1332052, 1, 1, 0, 25000), +(12616, 9420544, 1372010, 1, 1, 0, 3000), +(12617, 9420544, 1382035, 1, 1, 0, 3000), +(12618, 9420544, 1402035, 1, 1, 0, 3000), +(12619, 9420544, 1422027, 1, 1, 0, 3000), +(12620, 9420544, 1412021, 1, 1, 0, 3000), +(12621, 9420544, 1432030, 1, 1, 0, 25000), +(12622, 9420544, 1452020, 1, 1, 0, 25000), +(12623, 9420544, 1462015, 1, 1, 0, 25000), +(12624, 9420544, 1462016, 1, 1, 0, 25000), +(12625, 9420544, 1472053, 1, 1, 0, 13000), +(12626, 9420544, 1452019, 1, 1, 0, 25000), +(12627, 9420544, 1442044, 1, 1, 0, 3000), +(12628, 9420544, 1492012, 1, 1, 0, 333333), +(12629, 9420544, 1482012, 1, 1, 0, 333333), +(12630, 9420544, 2043001, 1, 1, 0, 1000), +(12631, 9420544, 2043101, 1, 1, 0, 1000), +(12632, 9420544, 2043201, 1, 1, 0, 1000), +(12633, 9420544, 2043301, 1, 1, 0, 1000), +(12634, 9420544, 2043701, 1, 1, 0, 1000), +(12635, 9420544, 2043801, 1, 1, 0, 1000), +(12636, 9420544, 2044001, 1, 1, 0, 1000), +(12637, 9420544, 2044101, 1, 1, 0, 1000), +(12638, 9420544, 2044301, 1, 1, 0, 1000), +(12639, 9420544, 2044201, 1, 1, 0, 1000), +(12640, 9420544, 2044401, 1, 1, 0, 1000), +(12641, 9420544, 2044501, 1, 1, 0, 1000), +(12642, 9420544, 2044601, 1, 1, 0, 1000), +(12643, 9420544, 2044701, 1, 1, 0, 1000), +(12644, 9420544, 2040804, 1, 1, 0, 500), +(12645, 9420544, 2040001, 1, 1, 0, 1000), +(12646, 9420544, 2040004, 1, 1, 0, 1000), +(12647, 9420544, 2040301, 1, 1, 0, 1000), +(12648, 9420544, 2040401, 1, 1, 0, 1000), +(12649, 9420544, 2040501, 1, 1, 0, 1000), +(12650, 9420544, 2040504, 1, 1, 0, 1000), +(12651, 9420544, 2040516, 1, 1, 0, 1000), +(12652, 9420544, 2040513, 1, 1, 0, 1000), +(12653, 9420544, 2040601, 1, 1, 0, 1000), +(12654, 9420544, 2040701, 1, 1, 0, 1000), +(12655, 9420544, 2040704, 1, 1, 0, 1000), +(12656, 9420544, 2040707, 1, 1, 0, 1000), +(12657, 9420544, 2040801, 1, 1, 0, 1000), +(12658, 9420544, 2040901, 1, 1, 0, 1000), +(12659, 9420544, 2290098, 1, 1, 0, 4000), +(12660, 9420544, 2290015, 1, 1, 0, 4000), +(12661, 9420544, 2290027, 1, 1, 0, 4000), +(12662, 9420544, 2290089, 1, 1, 0, 4000), +(12663, 9420544, 2290054, 1, 1, 0, 4000), +(12664, 9420544, 2290119, 1, 1, 0, 4000), +(12665, 9420544, 2290002, 1, 1, 0, 4000), +(12666, 9420544, 2290022, 1, 1, 0, 4000), +(12667, 9420544, 2290034, 1, 1, 0, 4000), +(12668, 9420544, 2290105, 1, 1, 0, 4000), +(12669, 9420544, 2290110, 1, 1, 0, 4000), +(12670, 9420544, 2290094, 1, 1, 0, 4000), +(12671, 9420544, 2290052, 1, 1, 0, 4000), +(12672, 9420544, 1002926, 1, 1, 0, 300000), +(12673, 9420544, 1002926, 1, 1, 0, 300000), +(12674, 9420544, 1002926, 1, 1, 0, 300000), +(12675, 9420544, 1002926, 1, 1, 0, 300000), +(12676, 9420544, 1002926, 1, 1, 0, 300000), +(12677, 9420549, 1032031, 1, 1, 0, 3000), +(12678, 9420549, 2043001, 1, 1, 0, 1000), +(12679, 9420549, 2020013, 1, 1, 0, 333333), +(12680, 9420549, 2020014, 1, 1, 0, 100000), +(12681, 9420549, 1302056, 1, 1, 0, 3000), +(12682, 9420549, 1312030, 1, 1, 0, 3000), +(12683, 9420549, 1322045, 1, 1, 0, 3000), +(12684, 9420549, 1332051, 1, 1, 0, 25000), +(12685, 9420549, 1332052, 1, 1, 0, 25000), +(12686, 9420549, 1372010, 1, 1, 0, 3000), +(12687, 9420549, 1382035, 1, 1, 0, 3000), +(12688, 9420549, 1402035, 1, 1, 0, 3000), +(12689, 9420549, 1422027, 1, 1, 0, 3000), +(12690, 9420549, 1412021, 1, 1, 0, 3000), +(12691, 9420549, 1432030, 1, 1, 0, 25000), +(12692, 9420549, 1452020, 1, 1, 0, 25000), +(12693, 9420549, 1462015, 1, 1, 0, 25000), +(12694, 9420549, 1462016, 1, 1, 0, 25000), +(12695, 9420549, 1472053, 1, 1, 0, 13000), +(12696, 9420549, 1452019, 1, 1, 0, 25000), +(12697, 9420549, 1442044, 1, 1, 0, 3000), +(12698, 9420549, 1492012, 1, 1, 0, 333333), +(12699, 9420549, 1482012, 1, 1, 0, 333333), +(12700, 9420549, 2043101, 1, 1, 0, 1000), +(12701, 9420549, 2043201, 1, 1, 0, 1000), +(12702, 9420549, 2043301, 1, 1, 0, 1000), +(12703, 9420549, 2043701, 1, 1, 0, 1000), +(12704, 9420549, 2043801, 1, 1, 0, 1000), +(12705, 9420549, 2044001, 1, 1, 0, 1000), +(12706, 9420549, 2044101, 1, 1, 0, 1000), +(12707, 9420549, 2044301, 1, 1, 0, 1000), +(12708, 9420549, 2044201, 1, 1, 0, 1000), +(12709, 9420549, 2044401, 1, 1, 0, 1000), +(12710, 9420549, 2044501, 1, 1, 0, 1000), +(12711, 9420549, 2044601, 1, 1, 0, 1000), +(12712, 9420549, 2044701, 1, 1, 0, 1000), +(12713, 9420549, 2040804, 1, 1, 0, 500), +(12714, 9420549, 2040001, 1, 1, 0, 1000), +(12715, 9420549, 2040004, 1, 1, 0, 1000), +(12716, 9420549, 2040301, 1, 1, 0, 1000), +(12717, 9420549, 2040401, 1, 1, 0, 1000), +(12718, 9420549, 2040501, 1, 1, 0, 1000), +(12719, 9420549, 2040504, 1, 1, 0, 1000), +(12720, 9420549, 2040516, 1, 1, 0, 1000), +(12721, 9420549, 2040513, 1, 1, 0, 1000), +(12722, 9420549, 2040601, 1, 1, 0, 1000), +(12723, 9420549, 2040701, 1, 1, 0, 1000), +(12724, 9420549, 2040704, 1, 1, 0, 1000), +(12725, 9420549, 2040707, 1, 1, 0, 1000), +(12726, 9420549, 2040801, 1, 1, 0, 1000), +(12727, 9420549, 2040901, 1, 1, 0, 1000), +(12728, 9420549, 2290098, 1, 1, 0, 4000), +(12729, 9420549, 2290015, 1, 1, 0, 4000), +(12730, 9420549, 2290027, 1, 1, 0, 4000), +(12731, 9420549, 2290089, 1, 1, 0, 4000), +(12732, 9420549, 2290054, 1, 1, 0, 4000), +(12733, 9420549, 2290119, 1, 1, 0, 4000), +(12734, 9420549, 2290002, 1, 1, 0, 4000), +(12735, 9420549, 2290022, 1, 1, 0, 4000), +(12736, 9420549, 2290034, 1, 1, 0, 4000), +(12737, 9420549, 2290105, 1, 1, 0, 4000), +(12738, 9420549, 2290110, 1, 1, 0, 4000), +(12739, 9420549, 2290094, 1, 1, 0, 4000), +(12740, 9420549, 2290052, 1, 1, 0, 4000), +(12741, 9420549, 4001242, 1, 1, 0, 300000), +(12742, 9420549, 1002927, 1, 1, 0, 300000), +(12743, 9420549, 1002927, 1, 1, 0, 300000), +(12744, 9420549, 1002927, 1, 1, 0, 300000), +(12745, 9420549, 1002927, 1, 1, 0, 300000), +(12746, 8140700, 2290126, 1, 1, 0, 1500), +(12747, 8500002, 2290126, 1, 1, 0, 40000), +(12748, 8150300, 2290127, 1, 1, 0, 1500), +(12749, 8220004, 2290127, 1, 1, 0, 15000), +(12750, 8180001, 2290128, 1, 1, 0, 15000), +(12751, 8150302, 2290128, 1, 1, 0, 1500), +(12752, 8200001, 2290129, 1, 1, 0, 1500), +(12753, 8500002, 2290129, 1, 1, 0, 40000), +(12754, 8180000, 2290130, 1, 1, 0, 15000), +(12755, 8190004, 2290130, 1, 1, 0, 1500), +(12756, 8200002, 2290131, 1, 1, 0, 1500), +(12757, 8220005, 2290131, 1, 1, 0, 15000), +(12758, 8800002, 2280015, 1, 1, 0, 50000), +(12759, 8220005, 2290136, 1, 1, 0, 15000), +(12760, 8200003, 2290136, 1, 1, 0, 1500), +(12761, 8200007, 2290136, 1, 1, 0, 1500), +(12762, 8810018, 2290137, 1, 1, 0, 45000), +(12763, 8200012, 2290137, 1, 1, 0, 1500), +(12764, 8800002, 2280016, 1, 1, 0, 45000), +(12765, 8220006, 2290138, 1, 1, 0, 15000), +(12766, 8200006, 2290138, 1, 1, 0, 1500), +(12767, 8200012, 2290139, 1, 1, 0, 1500), +(12768, 8810018, 2290139, 1, 1, 0, 45000), +(12769, 8800002, 2280014, 1, 1, 0, 45000), +(12770, 8200004, 2290134, 1, 1, 0, 1500), +(12771, 8220004, 2290134, 1, 1, 0, 15000), +(12772, 8220006, 2290135, 1, 1, 0, 15000), +(12773, 8150200, 2290135, 1, 1, 0, 1500), +(12774, 8800002, 2280013, 1, 1, 0, 45000), +(12775, 8140600, 2290132, 1, 1, 0, 1500), +(12776, 851000, 2290132, 1, 1, 0, 15000), +(12777, 8520000, 2290132, 1, 1, 0, 15000), +(12778, 8810018, 2290133, 1, 1, 0, 45000), +(12779, 8200008, 2290133, 1, 1, 0, 1500), +(12780, 6130200, 4031171, 1, 1, 7101, 100000), +(12781, 8141100, 4031171, 1, 1, 7101, 100000), +(12782, 8142000, 4031171, 1, 1, 7101, 100000), +(12783, 8143000, 4031171, 1, 1, 7101, 100000), +(12784, 8160000, 4031171, 1, 1, 7101, 100000), +(12785, 8170000, 4031171, 1, 1, 7101, 100000), +(12786, 9500127, 4031171, 1, 1, 7101, 100000), +(12787, 9500135, 4031171, 1, 1, 7101, 100000), +(12788, 9500136, 4031171, 1, 1, 7101, 100000), +(12789, 8141000, 4031171, 1, 1, 7101, 100000), +(12790, 8140300, 4031171, 1, 1, 7101, 100000), +(12791, 8140200, 4031171, 1, 1, 7101, 100000), +(12792, 6230300, 4031171, 1, 1, 7101, 100000), +(12793, 6230400, 4031171, 1, 1, 7101, 100000), +(12794, 6230500, 4031171, 1, 1, 7101, 100000), +(12795, 6300100, 4031171, 1, 1, 7101, 100000), +(12796, 6400100, 4031171, 1, 1, 7101, 100000), +(12797, 7130010, 4031171, 1, 1, 7101, 100000), +(12798, 7130300, 4031171, 1, 1, 7101, 100000), +(12799, 7140000, 4031171, 1, 1, 7101, 100000), +(12800, 9500137, 4031171, 1, 1, 7101, 100000); diff --git a/sql/readme.txt b/sql/readme.txt new file mode 100644 index 0000000000..2ef088a9ad --- /dev/null +++ b/sql/readme.txt @@ -0,0 +1,3 @@ +These 2 SQL files must be executed IN ORDER to set up: + - db_database.sql + - db_drops.sql \ No newline at end of file diff --git a/sql/testeduplicatas.sql b/sql/testeduplicatas.sql new file mode 100644 index 0000000000..9415fc4cb5 --- /dev/null +++ b/sql/testeduplicatas.sql @@ -0,0 +1,2 @@ +SELECT dropperid,itemid FROM drop_data d WHERE EXISTS + (SELECT * FROM drop_data e WHERE (d.id != e.id AND d.itemid=e.itemid AND d.dropperid=e.dropperid)) group by itemid,dropperid; \ No newline at end of file diff --git a/src/client/BuddyList.java b/src/client/BuddyList.java new file mode 100644 index 0000000000..1c1dc1d18c --- /dev/null +++ b/src/client/BuddyList.java @@ -0,0 +1,145 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collection; +import java.util.Deque; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.Map; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +public class BuddyList { + public enum BuddyOperation { + ADDED, DELETED + } + + public enum BuddyAddResult { + BUDDYLIST_FULL, ALREADY_ON_LIST, OK + } + private Map buddies = new LinkedHashMap<>(); + private int capacity; + private Deque pendingRequests = new LinkedList<>(); + + public BuddyList(int capacity) { + this.capacity = capacity; + } + + public boolean contains(int characterId) { + return buddies.containsKey(Integer.valueOf(characterId)); + } + + public boolean containsVisible(int characterId) { + BuddylistEntry ble = buddies.get(characterId); + if (ble == null) { + return false; + } + return ble.isVisible(); + } + + public int getCapacity() { + return capacity; + } + + public void setCapacity(int capacity) { + this.capacity = capacity; + } + + public BuddylistEntry get(int characterId) { + return buddies.get(Integer.valueOf(characterId)); + } + + public BuddylistEntry get(String characterName) { + String lowerCaseName = characterName.toLowerCase(); + for (BuddylistEntry ble : buddies.values()) { + if (ble.getName().toLowerCase().equals(lowerCaseName)) { + return ble; + } + } + return null; + } + + public void put(BuddylistEntry entry) { + buddies.put(Integer.valueOf(entry.getCharacterId()), entry); + } + + public void remove(int characterId) { + buddies.remove(Integer.valueOf(characterId)); + } + + public Collection getBuddies() { + return buddies.values(); + } + + public boolean isFull() { + return buddies.size() >= capacity; + } + + public int[] getBuddyIds() { + int buddyIds[] = new int[buddies.size()]; + int i = 0; + for (BuddylistEntry ble : buddies.values()) { + buddyIds[i++] = ble.getCharacterId(); + } + return buddyIds; + } + + public void loadFromDb(int characterId) { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT b.buddyid, b.pending, b.group, c.name as buddyname FROM buddies as b, characters as c WHERE c.id = b.buddyid AND b.characterid = ?"); + ps.setInt(1, characterId); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("pending") == 1) { + pendingRequests.push(new CharacterNameAndId(rs.getInt("buddyid"), rs.getString("buddyname"))); + } else { + put(new BuddylistEntry(rs.getString("buddyname"), rs.getString("group"), rs.getInt("buddyid"), (byte) -1, true)); + } + } + rs.close(); + ps.close(); + ps = DatabaseConnection.getConnection().prepareStatement("DELETE FROM buddies WHERE pending = 1 AND characterid = ?"); + ps.setInt(1, characterId); + ps.executeUpdate(); + ps.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + + public CharacterNameAndId pollPendingRequest() { + return pendingRequests.pollLast(); + } + + public void addBuddyRequest(MapleClient c, int cidFrom, String nameFrom, int channelFrom) { + put(new BuddylistEntry(nameFrom, "Default Group", cidFrom, channelFrom, false)); + if (pendingRequests.isEmpty()) { + c.announce(MaplePacketCreator.requestBuddylistAdd(cidFrom, c.getPlayer().getId(), nameFrom)); + } else { + pendingRequests.push(new CharacterNameAndId(cidFrom, nameFrom)); + } + } +} diff --git a/src/client/BuddylistEntry.java b/src/client/BuddylistEntry.java new file mode 100644 index 0000000000..73d1608e5d --- /dev/null +++ b/src/client/BuddylistEntry.java @@ -0,0 +1,110 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public class BuddylistEntry { + private String name; + private String group; + private int cid; + private int channel; + private boolean visible; + + /** + * + * @param name + * @param characterId + * @param channel should be -1 if the buddy is offline + * @param visible + */ + public BuddylistEntry(String name, String group, int characterId, int channel, boolean visible) { + this.name = name; + this.group = group; + this.cid = characterId; + this.channel = channel; + this.visible = visible; + } + + /** + * @return the channel the character is on. If the character is offline returns -1. + */ + public int getChannel() { + return channel; + } + + public void setChannel(int channel) { + this.channel = channel; + } + + public boolean isOnline() { + return channel >= 0; + } + + public String getName() { + return name; + } + + public String getGroup() { + return group; + } + + public int getCharacterId() { + return cid; + } + + public void setVisible(boolean visible) { + this.visible = visible; + } + + public boolean isVisible() { + return visible; + } + + public void changeGroup(String group) { + this.group = group; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + cid; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final BuddylistEntry other = (BuddylistEntry) obj; + if (cid != other.cid) { + return false; + } + return true; + } +} diff --git a/src/client/CharacterNameAndId.java b/src/client/CharacterNameAndId.java new file mode 100644 index 0000000000..204f0c0157 --- /dev/null +++ b/src/client/CharacterNameAndId.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public class CharacterNameAndId { + private int id; + private String name; + + public CharacterNameAndId(int id, String name) { + super(); + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/src/client/DiseaseValueHolder.java b/src/client/DiseaseValueHolder.java new file mode 100644 index 0000000000..180c1cf764 --- /dev/null +++ b/src/client/DiseaseValueHolder.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +/** + * + * @author anybody can do this + */ +public class DiseaseValueHolder { + public long startTime, length; + + public DiseaseValueHolder(long start, long length) { + this.startTime = start; + this.length = length; + } +} diff --git a/src/client/MapleBuffStat.java b/src/client/MapleBuffStat.java new file mode 100644 index 0000000000..e890f19abe --- /dev/null +++ b/src/client/MapleBuffStat.java @@ -0,0 +1,140 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public enum MapleBuffStat { + //SLOW(0x1), + MORPH(0x2), + RECOVERY(0x4), + MAPLE_WARRIOR(0x8), + STANCE(0x10), + SHARP_EYES(0x20), + MANA_REFLECTION(0x40), + //ALWAYS_RIGHT(0X80), + + //------ bgn EDITED SLOT (was unused before) -------- + MAP_PROTECTION(0x100000000000000L), + //------ end EDITED SLOT ---------------------------- + + SHADOW_CLAW(0x100), + INFINITY(0x200), + HOLY_SHIELD(0x400), + HAMSTRING(0x800), + BLIND(0x1000), + CONCENTRATE(0x2000), + //4000 + ECHO_OF_HERO(0x8000), + //10000 + GHOST_MORPH(0x20000), + AURA(0x40000), + CONFUSE(0x80000), + //100000 + //200000 + //400000 + //800000 + //1000000 + //2000000 + //4000000 + BERSERK_FURY(0x8000000), + DIVINE_BODY(0x10000000), + SPARK(0x20000000L), + //40000000 + FINALATTACK(0x80000000L), + BATTLESHIP(0xA00000040L), // weird one + WATK(0x100000000L), + WDEF(0x200000000L), + MATK(0x400000000L), + MDEF(0x800000000L), + ACC(0x1000000000L), + AVOID(0x2000000000L), + HANDS(0x4000000000L), + SHOWDASH(0x4000000000L), + SPEED(0x8000000000L), + JUMP(0x10000000000L), + MAGIC_GUARD(0x20000000000L), + DARKSIGHT(0x40000000000L), + BOOSTER(0x80000000000L), + POWERGUARD(0x100000000000L), + HYPERBODYHP(0x200000000000L), + HYPERBODYMP(0x400000000000L), + INVINCIBLE(0x800000000000L), + SOULARROW(0x1000000000000L), + STUN(0x2000000000000L), + POISON(0x4000000000000L), + SEAL(0x8000000000000L), + DARKNESS(0x10000000000000L), + COMBO(0x20000000000000L), + SUMMON(0x20000000000000L), + WK_CHARGE(0x40000000000000L), + DRAGONBLOOD(0x80000000000000L), + HOLY_SYMBOL(0x100000000000000L), + MESOUP(0x200000000000000L), + SHADOWPARTNER(0x400000000000000L), + PICKPOCKET(0x800000000000000L), + PUPPET(0x800000000000000L), + MESOGUARD(0x1000000000000000L), + //0x2000000000000000L + WEAKEN(0x4000000000000000L), + //THAT GAP + + //all incorrect buffstats + SLOW(0x200000000L, true), + ELEMENTAL_RESET(0x200000000L, true), + MAGIC_SHIELD(0x400000000L, true), + MAGIC_RESISTANCE(0x800000000L, true), + // needs Soul Stone + //end incorrect buffstats + + ARAN_COMBO(0x1000000000L, true), + COMBO_DRAIN(0x2000000000L, true), + COMBO_BARRIER(0x4000000000L, true), + BODY_PRESSURE(0x8000000000L, true), + SMART_KNOCKBACK(0x10000000000L, true), + PYRAMID_PQ(0x20000000000L, true), + ENERGY_CHARGE(0x4000000000000L, true), + DASH2(0x8000000000000L, true), // correct (speed) + DASH(0x10000000000000L, true), // correct (jump) + MONSTER_RIDING(0x20000000000000L, true), + SPEED_INFUSION(0x40000000000000L, true), + HOMING_BEACON(0x80000000000000L, true); + + private final long i; + private final boolean isFirst; + + private MapleBuffStat(long i, boolean isFirst) { + this.i = i; + this.isFirst = isFirst; + } + + private MapleBuffStat(long i) { + this.i = i; + this.isFirst = false; + } + + public long getValue() { + return i; + } + + public boolean isFirst() { + return isFirst; + } +} diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java new file mode 100644 index 0000000000..156f1896fc --- /dev/null +++ b/src/client/MapleCharacter.java @@ -0,0 +1,5440 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program unader any cother version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package client; + +import java.awt.Point; +import java.lang.ref.WeakReference; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Timestamp; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.EnumMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +//import java.util.TimeZone; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.regex.Pattern; + +import net.server.PlayerBuffValueHolder; +import net.server.PlayerCoolDownValueHolder; +import net.server.PlayerDiseaseValueHolder; +import net.server.Server; +import net.server.channel.Channel; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.world.MapleMessenger; +import net.server.world.MapleMessengerCharacter; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import net.server.world.PartyOperation; +import net.server.world.World; +import scripting.event.EventInstanceManager; +import server.CashShop; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleMiniGame; +import server.MaplePlayerShop; +import server.MaplePortal; +import server.MapleShop; +import server.MapleStatEffect; +import server.MapleStorage; +import server.MapleTrade; +import server.TimerManager; +import server.events.MapleEvents; +import server.events.RescueGaga; +import server.events.gm.MapleFitness; +import server.events.gm.MapleOla; +import server.life.MapleMonster; +import server.life.MobSkill; +import server.maps.AbstractAnimatedMapleMapObject; +import server.maps.HiredMerchant; +import server.maps.MapleDoor; +import server.maps.MapleDragon; +import server.maps.MapleMap; +import server.maps.MapleMapEffect; +import server.maps.MapleMapFactory; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.maps.MapleSummon; +import server.maps.PlayerNPCs; +import server.maps.SavedLocation; +import server.maps.SavedLocationType; +import server.partyquest.MonsterCarnival; +import server.partyquest.MonsterCarnivalParty; +import server.partyquest.PartyQuest; +import server.quest.MapleQuest; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; +import client.autoban.AutobanManager; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.inventory.MapleWeaponType; +import client.inventory.ModifyInventory; +import constants.ExpTable; +import constants.GameConstants; +import constants.ItemConstants; +import constants.ServerConstants; +import constants.skills.Aran; +import constants.skills.Bishop; +import constants.skills.BlazeWizard; +import constants.skills.Bowmaster; +import constants.skills.Buccaneer; +import constants.skills.Corsair; +import constants.skills.Crusader; +import constants.skills.DarkKnight; +import constants.skills.DawnWarrior; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.GM; +import constants.skills.Hermit; +import constants.skills.Hero; +import constants.skills.ILArchMage; +import constants.skills.Magician; +import constants.skills.Marauder; +import constants.skills.Marksman; +import constants.skills.NightLord; +import constants.skills.Paladin; +import constants.skills.Priest; +import constants.skills.Ranger; +import constants.skills.Shadower; +import constants.skills.Sniper; +import constants.skills.Spearman; +import constants.skills.SuperGM; +import constants.skills.Swordsman; +import constants.skills.ThunderBreaker; + +public class MapleCharacter extends AbstractAnimatedMapleMapObject { + private static final int[] DROP_RATE_GAIN = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; + private static final int[] MESO_RATE_GAIN = {1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66}; + private static final int[] EXP_RATE_GAIN = {1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144}; //fibonacci :3 + + private static final String LEVEL_200 = "[Congrats] %s has reached Level 200! Congratulate %s on such an amazing achievement!"; + private static final int[] DEFAULT_KEY = {18, 65, 2, 23, 3, 4, 5, 6, 16, 17, 19, 25, 26, 27, 31, 34, 35, 37, 38, 40, 43, 44, 45, 46, 50, 56, 59, 60, 61, 62, 63, 64, 57, 48, 29, 7, 24, 33, 41, 39}; + private static final int[] DEFAULT_TYPE = {4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 6, 6, 6, 6, 6, 6, 5, 4, 5, 4, 4, 4, 4, 4}; + private static final int[] DEFAULT_ACTION = {0, 106, 10, 1, 12, 13, 18, 24, 8, 5, 4, 19, 14, 15, 2, 17, 11, 3, 20, 16, 9, 50, 51, 6, 7, 53, 100, 101, 102, 103, 104, 105, 54, 22, 52, 21, 25, 26, 23, 27}; + private static final String[] BLOCKED_NAMES = {"admin", "owner", "moderator", "intern", "donor", "administrator", "help", "helper", "alert", "notice", "maplestory", "Solaxia", "fuck", "wizet", "fucking", "negro", "fuk", "fuc", "penis", "pussy", "asshole", "gay", + "nigger", "homo", "suck", "cum", "shit", "shitty", "condom", "security", "official", "rape", "nigga", "sex", "tit", "boner", "orgy", "clit", "asshole", "fatass", "bitch", "support", "gamemaster", "cock", "gaay", "gm", + "operate", "master", "sysop", "party", "GameMaster", "community", "message", "event", "test", "meso", "Scania", "renewal", "yata", "AsiaSoft", "henesys"}; + private int world; + private int accountid, id; + private int rank, rankMove, jobRank, jobRankMove; + private int level, str, dex, luk, int_, hp, maxhp, mp, maxmp; + private int hpMpApUsed; + private int hair; + private int face; + private int remainingAp; + private int[] remainingSp = new int[10]; + private int quest_fame; + private int fame; + private int initialSpawnPoint; + private int mapid; + private int gender; + private int currentPage, currentType = 0, currentTab = 1; + private int chair; + private int itemEffect; + private int guildid, guildrank, allianceRank; + private int messengerposition = 4; + private int slots = 0; + private int energybar; + private int gmLevel; + private int ci = 0; + private MapleFamily family; + private int familyId; + private int bookCover; + private int markedMonster = 0; + private int battleshipHp = 0; + private int mesosTraded = 0; + private int possibleReports = 10; + private int dojoPoints, vanquisherStage, dojoStage, dojoEnergy, vanquisherKills; + private int warpToId; + private int expRate = 1, mesoRate = 1, dropRate = 1; + private int omokwins, omokties, omoklosses, matchcardwins, matchcardties, matchcardlosses; + private int married; + private long dojoFinish, lastfametime, lastUsedCashItem, lastHealed, lastMesoDrop = -1; + private transient int localmaxhp, localmaxmp, localstr, localdex, localluk, localint_, magic, watk; + private boolean hidden, canDoor = true, Berserk, hasMerchant, whiteChat = false; + private int linkedLevel = 0; + private String linkedName = null; + private boolean finishedDojoTutorial, dojoParty; + private String name; + private String chalktext; + private String dataString; + private String search = null; + private AtomicInteger exp = new AtomicInteger(); + private AtomicInteger gachaexp = new AtomicInteger(); + private AtomicInteger meso = new AtomicInteger(); + private int merchantmeso; + private BuddyList buddylist; + private EventInstanceManager eventInstance = null; + private HiredMerchant hiredMerchant = null; + private MapleClient client; + private MapleGuildCharacter mgc = null; + private MaplePartyCharacter mpc = null; + private MapleInventory[] inventory; + private MapleJob job = MapleJob.BEGINNER; + private MapleMap map, dojoMap;//Make a Dojo pq instance + private MapleMessenger messenger = null; + private MapleMiniGame miniGame; + private MapleMount maplemount; + private MapleParty party; + private MaplePet[] pets = new MaplePet[3]; + private MaplePlayerShop playerShop = null; + private MapleShop shop = null; + private MapleSkinColor skinColor = MapleSkinColor.NORMAL; + private MapleStorage storage = null; + private MapleTrade trade = null; + private SavedLocation savedLocations[]; + private SkillMacro[] skillMacros = new SkillMacro[5]; + private List lastmonthfameids; + private Map quests; + private Set controlled = new LinkedHashSet<>(); + private Map entered = new LinkedHashMap<>(); + private Set visibleMapObjects = new LinkedHashSet<>(); + private Map skills = new LinkedHashMap<>(); + private EnumMap effects = new EnumMap<>(MapleBuffStat.class); + private Map keymap = new LinkedHashMap<>(); + private Map summons = new LinkedHashMap<>(); + private Map coolDowns = new LinkedHashMap<>(50); + private EnumMap diseases = new EnumMap<>(MapleDisease.class); + private List doors = new ArrayList<>(); + private ScheduledFuture dragonBloodSchedule; + private ScheduledFuture mapTimeLimitTask = null; + private ScheduledFuture[] fullnessSchedule = new ScheduledFuture[3]; + private ScheduledFuture hpDecreaseTask; + private ScheduledFuture beholderHealingSchedule, beholderBuffSchedule, BerserkSchedule; + private ScheduledFuture expiretask; + private ScheduledFuture recoveryTask; + private List> timers = new ArrayList<>(); + private NumberFormat nf = new DecimalFormat("#,###,###,###"); + private ArrayList excluded = new ArrayList<>(); + private MonsterBook monsterbook; + private List crushRings = new ArrayList<>(); + private List friendshipRings = new ArrayList<>(); + private MapleRing marriageRing; + private static String[] ariantroomleader = new String[3]; + private static int[] ariantroomslot = new int[3]; + private CashShop cashshop; + private long portaldelay = 0, lastcombo = 0; + private short combocounter = 0; + private List blockedPortals = new ArrayList<>(); + private Map area_info = new LinkedHashMap<>(); + private AutobanManager autoban; + private boolean isbanned = false; + private ScheduledFuture pendantOfSpirit = null; //1122017 + private byte pendantExp = 0, lastmobcount = 0; + private List trockmaps = new ArrayList<>(); + private List viptrockmaps = new ArrayList<>(); + private Map events = new LinkedHashMap<>(); + private PartyQuest partyQuest = null; + private boolean loggedIn = false; + private MapleDragon dragon = null; + private boolean useCS = false; //chaos scroll upon crafting item. + private long useDuey; + private long petLootCd; + + private MapleCharacter() { + setStance(0); + inventory = new MapleInventory[MapleInventoryType.values().length]; + savedLocations = new SavedLocation[SavedLocationType.values().length]; + for (int i = 0; i < remainingSp.length; i++) { + remainingSp[i] = 0; + } + for (MapleInventoryType type : MapleInventoryType.values()) { + byte b = 24; + if (type == MapleInventoryType.CASH) { + b = 96; + } + inventory[type.ordinal()] = new MapleInventory(type, (byte) b); + } + for (int i = 0; i < SavedLocationType.values().length; i++) { + savedLocations[i] = null; + } + quests = new LinkedHashMap<>(); + setPosition(new Point(0, 0)); + + petLootCd = System.currentTimeMillis(); + } + + public void setHpDecreaseTask(ScheduledFuture mapDotTask) { + hpDecreaseTask = mapDotTask; + } + + public MapleJob getJobStyle() { + int jobtype = this.getJob().getId() / 100; + + if(jobtype == MapleJob.WARRIOR.getId() / 100 || jobtype == MapleJob.DAWNWARRIOR1.getId() / 100 || jobtype == MapleJob.ARAN1.getId() / 100) { + return(MapleJob.WARRIOR); + } + + else if(jobtype == MapleJob.MAGICIAN.getId() / 100 || jobtype == MapleJob.BLAZEWIZARD1.getId() / 100 || jobtype == MapleJob.EVAN1.getId() / 100) { + return(MapleJob.MAGICIAN); + } + + else if(jobtype == MapleJob.BOWMAN.getId() / 100 || jobtype == MapleJob.WINDARCHER1.getId() / 100) { + if(this.getJob().getId() / 10 == MapleJob.CROSSBOWMAN.getId() / 10) return(MapleJob.CROSSBOWMAN); + else return(MapleJob.BOWMAN); + } + + else if(jobtype == MapleJob.THIEF.getId() / 100 || jobtype == MapleJob.NIGHTWALKER1.getId() / 100) { + return(MapleJob.THIEF); + } + + else if(jobtype == MapleJob.PIRATE.getId() / 100 || jobtype == MapleJob.THUNDERBREAKER1.getId() / 100) { + if(this.getStr() > this.getDex()) return(MapleJob.BRAWLER); + else return(MapleJob.GUNSLINGER); + } + + return(MapleJob.BEGINNER); + } + + public static MapleCharacter getDefault(MapleClient c) { + MapleCharacter ret = new MapleCharacter(); + ret.client = c; + ret.gmLevel = 0; + ret.hp = 50; + ret.maxhp = 50; + ret.mp = 5; + ret.maxmp = 5; + ret.str = 12; + ret.dex = 5; + ret.int_ = 4; + ret.luk = 4; + ret.map = null; + ret.job = MapleJob.BEGINNER; + ret.level = 1; + ret.accountid = c.getAccID(); + ret.buddylist = new BuddyList(20); + ret.maplemount = null; + ret.getInventory(MapleInventoryType.EQUIP).setSlotLimit(24); + ret.getInventory(MapleInventoryType.USE).setSlotLimit(24); + ret.getInventory(MapleInventoryType.SETUP).setSlotLimit(24); + ret.getInventory(MapleInventoryType.ETC).setSlotLimit(24); + for (int i = 0; i < DEFAULT_KEY.length; i++) { + ret.keymap.put(DEFAULT_KEY[i], new MapleKeyBinding(DEFAULT_TYPE[i], DEFAULT_ACTION[i])); + } + //to fix the map 0 lol + for (int i = 0; i < 5; i++) { + ret.trockmaps.add(999999999); + } + for (int i = 0; i < 10; i++) { + ret.viptrockmaps.add(999999999); + } + + return ret; + } + + public long getPetLootCd() { + return petLootCd; + } + + public void setPetLootCd(long cd) { + petLootCd = cd; + } + + public boolean getCS() { + return useCS; + } + + public void setCS(boolean cs) { + useCS = cs; + } + + public long getDuey() { + return useDuey; + } + + public void setDuey(long d) { + useDuey = d; + } + + public void addCooldown(int skillId, long startTime, long length, ScheduledFuture timer) { + if (this.coolDowns.containsKey(Integer.valueOf(skillId))) { + this.coolDowns.remove(skillId); + } + this.coolDowns.put(Integer.valueOf(skillId), new MapleCoolDownValueHolder(skillId, startTime, length, timer)); + } + + public void addCrushRing(MapleRing r) { + crushRings.add(r); + } + + public MapleRing getRingById(int id) { + for (MapleRing ring : getCrushRings()) { + if (ring.getRingId() == id) { + return ring; + } + } + for (MapleRing ring : getFriendshipRings()) { + if (ring.getRingId() == id) { + return ring; + } + } + if (getMarriageRing().getRingId() == id) { + return getMarriageRing(); + } + + return null; + } + + public int addDojoPointsByMap() { + int pts = 0; + if (dojoPoints < 17000) { + pts = 1 + ((getMap().getId() - 1) / 100 % 100) / 6; + if (!dojoParty) { + pts++; + } + this.dojoPoints += pts; + } + return pts; + } + + public void addDoor(MapleDoor door) { + doors.add(door); + } + + public void addExcluded(int x) { + excluded.add(x); + } + + public void addFame(int famechange) { + this.fame += famechange; + } + + public void addFriendshipRing(MapleRing r) { + friendshipRings.add(r); + } + + public void addHP(int delta) { + setHp(hp + delta); + updateSingleStat(MapleStat.HP, hp); + } + + public void addMesosTraded(int gain) { + this.mesosTraded += gain; + } + + public void addMP(int delta) { + setMp(mp + delta); + updateSingleStat(MapleStat.MP, mp); + } + + public void addMPHP(int hpDiff, int mpDiff) { + setHp(hp + hpDiff); + setMp(mp + mpDiff); + updateSingleStat(MapleStat.HP, getHp()); + updateSingleStat(MapleStat.MP, getMp()); + } + + public void addPet(MaplePet pet) { + for (int i = 0; i < 3; i++) { + if (pets[i] == null) { + pets[i] = pet; + return; + } + } + } + + public void addStat(int type, int up) { + if (type == 1) { + this.str += up; + updateSingleStat(MapleStat.STR, str); + } else if (type == 2) { + this.dex += up; + updateSingleStat(MapleStat.DEX, dex); + } else if (type == 3) { + this.int_ += up; + updateSingleStat(MapleStat.INT, int_); + } else if (type == 4) { + this.luk += up; + updateSingleStat(MapleStat.LUK, luk); + } + recalcLocalStats(); + } + + public int addHP(MapleClient c) { + MapleCharacter player = c.getPlayer(); + MapleJob jobtype = player.getJob(); + int MaxHP = player.getMaxHp(); + if (player.getHpMpApUsed() > 9999 || MaxHP >= 30000) { + return MaxHP; + } + if (jobtype.isA(MapleJob.BEGINNER)) { + MaxHP += 8; + } else if (jobtype.isA(MapleJob.WARRIOR) || jobtype.isA(MapleJob.DAWNWARRIOR1)) { + if (player.getSkillLevel(player.isCygnus() ? SkillFactory.getSkill(10000000) : SkillFactory.getSkill(1000001)) > 0) { + MaxHP += 20; + } else { + MaxHP += 8; + } + } else if (jobtype.isA(MapleJob.MAGICIAN) || jobtype.isA(MapleJob.BLAZEWIZARD1)) { + MaxHP += 6; + } else if (jobtype.isA(MapleJob.BOWMAN) || jobtype.isA(MapleJob.WINDARCHER1)) { + MaxHP += 8; + } else if (jobtype.isA(MapleJob.THIEF) || jobtype.isA(MapleJob.NIGHTWALKER1)) { + MaxHP += 8; + } else if (jobtype.isA(MapleJob.PIRATE) || jobtype.isA(MapleJob.THUNDERBREAKER1)) { + if (player.getSkillLevel(player.isCygnus() ? SkillFactory.getSkill(15100000) : SkillFactory.getSkill(5100000)) > 0) { + MaxHP += 18; + } else { + MaxHP += 8; + } + } + return MaxHP; + } + + public int addMP(MapleClient c) { + MapleCharacter player = c.getPlayer(); + int MaxMP = player.getMaxMp(); + if (player.getHpMpApUsed() > 9999 || player.getMaxMp() >= 30000) { + return MaxMP; + } + if (player.getJob().isA(MapleJob.BEGINNER) || player.getJob().isA(MapleJob.NOBLESSE) || player.getJob().isA(MapleJob.LEGEND)) { + MaxMP += 6; + } else if (player.getJob().isA(MapleJob.WARRIOR) || player.getJob().isA(MapleJob.DAWNWARRIOR1) || player.getJob().isA(MapleJob.ARAN1)) { + MaxMP += 2; + } else if (player.getJob().isA(MapleJob.MAGICIAN) || player.getJob().isA(MapleJob.BLAZEWIZARD1)) { + if (player.getSkillLevel(player.isCygnus() ? SkillFactory.getSkill(12000000) : SkillFactory.getSkill(2000001)) > 0) { + MaxMP += 18; + } else { + MaxMP += 14; + } + + } else if (player.getJob().isA(MapleJob.BOWMAN) || player.getJob().isA(MapleJob.THIEF)) { + MaxMP += 10; + } else if (player.getJob().isA(MapleJob.PIRATE)) { + MaxMP += 14; + } + + return MaxMP; + } + + public void addSummon(int id, MapleSummon summon) { + summons.put(id, summon); + } + + public void addVisibleMapObject(MapleMapObject mo) { + visibleMapObjects.add(mo); + } + + public void ban(String reason) { + this.isbanned = true; + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("UPDATE accounts SET banned = 1, banreason = ? WHERE id = ?")) { + ps.setString(1, reason); + ps.setInt(2, accountid); + ps.executeUpdate(); + } + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public static boolean ban(String id, String reason, boolean accountId) { + PreparedStatement ps = null; + ResultSet rs = null; + try { + Connection con = DatabaseConnection.getConnection(); + if (id.matches("/[0-9]{1,3}\\..*")) { + ps = con.prepareStatement("INSERT INTO ipbans VALUES (DEFAULT, ?)"); + ps.setString(1, id); + ps.executeUpdate(); + ps.close(); + return true; + } + if (accountId) { + ps = con.prepareStatement("SELECT id FROM accounts WHERE name = ?"); + } else { + ps = con.prepareStatement("SELECT accountid FROM characters WHERE name = ?"); + } + + boolean ret = false; + ps.setString(1, id); + rs = ps.executeQuery(); + if (rs.next()) { + try (PreparedStatement psb = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET banned = 1, banreason = ? WHERE id = ?")) { + psb.setString(1, reason); + psb.setInt(2, rs.getInt(1)); + psb.executeUpdate(); + } + ret = true; + } + rs.close(); + ps.close(); + return ret; + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + if (rs != null && !rs.isClosed()) { + rs.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + return false; + } + + public int calculateMaxBaseDamage(int watk) { + int maxbasedamage; + Item weapon_item = getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11); + if (weapon_item != null) { + MapleWeaponType weapon = MapleItemInformationProvider.getInstance().getWeaponType(weapon_item.getItemId()); + int mainstat; + int secondarystat; + if (getJob().isA(MapleJob.THIEF) && weapon == MapleWeaponType.DAGGER_OTHER) { + weapon = MapleWeaponType.DAGGER_THIEVES; + } + + if (weapon == MapleWeaponType.BOW || weapon == MapleWeaponType.CROSSBOW || weapon == MapleWeaponType.GUN) { + mainstat = localdex; + secondarystat = localstr; + } else if (weapon == MapleWeaponType.CLAW || weapon == MapleWeaponType.DAGGER_THIEVES) { + mainstat = localluk; + secondarystat = localdex + localstr; + } else { + mainstat = localstr; + secondarystat = localdex; + } + maxbasedamage = (int) (((weapon.getMaxDamageMultiplier() * mainstat + secondarystat) / 100.0) * watk); + } else { + if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { + double weapMulti = 3; + if (job.getId() % 100 != 0) { + weapMulti = 4.2; + } + + int attack = (int) Math.min(Math.floor((2 * getLevel() + 31) / 3), 31); + + maxbasedamage = (int) (localstr * weapMulti + localdex) * attack / 100; + } else { + maxbasedamage = 1; + } + } + return maxbasedamage; + } + + public void cancelAllBuffs(boolean disconnect) { + if (disconnect) { + effects.clear(); + } else { + for (MapleBuffStatValueHolder mbsvh : new ArrayList<>(effects.values())) { + cancelEffect(mbsvh.effect, false, mbsvh.startTime); + } + } + } + + public void cancelBuffStats(MapleBuffStat stat) { + List buffStatList = Arrays.asList(stat); + deregisterBuffStats(buffStatList); + cancelPlayerBuffs(buffStatList); + } + + public void setCombo(short count) { + if (count < combocounter) { + cancelEffectFromBuffStat(MapleBuffStat.ARAN_COMBO); + } + combocounter = (short) Math.min(30000, count); + if (count > 0) { + announce(MaplePacketCreator.showCombo(combocounter)); + } + } + + public void setLastCombo(long time) {; + lastcombo = time; + } + + public short getCombo() { + return combocounter; + } + + public long getLastCombo() { + return lastcombo; + } + + public int getLastMobCount() { //Used for skills that have mobCount at 1. (a/b) + return lastmobcount; + } + + public void setLastMobCount(byte count) { + lastmobcount = count; + } + + public void newClient(MapleClient c) { + this.loggedIn = true; + c.setAccountName(this.client.getAccountName());//No null's for accountName + this.client = c; + MaplePortal portal = map.findClosestSpawnpoint(getPosition()); + if (portal == null) { + portal = map.getPortal(0); + } + this.setPosition(portal.getPosition()); + this.initialSpawnPoint = portal.getId(); + this.map = c.getChannelServer().getMapFactory().getMap(getMapId()); + } + + public void cancelBuffEffects() { + for (MapleBuffStatValueHolder mbsvh : effects.values()) { + mbsvh.schedule.cancel(false); + } + this.effects.clear(); + } + + public String getMedalText() { + String medal = ""; + final Item medalItem = getInventory(MapleInventoryType.EQUIPPED).getItem((short) -49); + if (medalItem != null) { + medal = "<" + MapleItemInformationProvider.getInstance().getName(medalItem.getItemId()) + "> "; + } + return medal; + } + + public static class CancelCooldownAction implements Runnable { + + private int skillId; + private WeakReference target; + + public CancelCooldownAction(MapleCharacter target, int skillId) { + this.target = new WeakReference<>(target); + this.skillId = skillId; + } + + @Override + public void run() { + MapleCharacter realTarget = target.get(); + if (realTarget != null) { + realTarget.removeCooldown(skillId); + realTarget.client.announce(MaplePacketCreator.skillCooldown(skillId, 0)); + } + } + } + + public void cancelEffect(int itemId) { + cancelEffect(MapleItemInformationProvider.getInstance().getItemEffect(itemId), false, -1); + } + + public void cancelEffect(MapleStatEffect effect, boolean overwrite, long startTime) { + List buffstats; + if (!overwrite) { + buffstats = getBuffStats(effect, startTime); + } else { + List> statups = effect.getStatups(); + buffstats = new ArrayList<>(statups.size()); + for (Pair statup : statups) { + buffstats.add(statup.getLeft()); + } + } + deregisterBuffStats(buffstats); + if (effect.isMagicDoor()) { + if (!getDoors().isEmpty()) { + MapleDoor door = getDoors().iterator().next(); + for (MapleCharacter chr : door.getTarget().getCharacters()) { + door.sendDestroyData(chr.client); + } + for (MapleCharacter chr : door.getTown().getCharacters()) { + door.sendDestroyData(chr.client); + } + for (MapleDoor destroyDoor : getDoors()) { + door.getTarget().removeMapObject(destroyDoor); + door.getTown().removeMapObject(destroyDoor); + } + if (party != null) { + for (MaplePartyCharacter partyMembers : getParty().getMembers()) { + partyMembers.getPlayer().getDoors().remove(door); + partyMembers.getDoors().remove(door); + } + silentPartyUpdate(); + } else { + clearDoors(); + } + } + } + if (effect.getSourceId() == Spearman.HYPER_BODY || effect.getSourceId() == GM.HYPER_BODY || effect.getSourceId() == SuperGM.HYPER_BODY) { + List> statup = new ArrayList<>(4); + statup.add(new Pair<>(MapleStat.HP, Math.min(hp, maxhp))); + statup.add(new Pair<>(MapleStat.MP, Math.min(mp, maxmp))); + statup.add(new Pair<>(MapleStat.MAXHP, maxhp)); + statup.add(new Pair<>(MapleStat.MAXMP, maxmp)); + client.announce(MaplePacketCreator.updatePlayerStats(statup, this)); + } + if (effect.isMonsterRiding()) { + if (effect.getSourceId() != Corsair.BATTLE_SHIP) { + this.getMount().cancelSchedule(); + this.getMount().setActive(false); + } + } + if (!overwrite) { + cancelPlayerBuffs(buffstats); + } + } + + public void cancelEffectFromBuffStat(MapleBuffStat stat) { + MapleBuffStatValueHolder effect = effects.get(stat); + if (effect != null) { + cancelEffect(effect.effect, false, -1); + } + } + + public void Hide(boolean hide, boolean login) { + if (isGM() && hide != this.hidden) { + if (!hide) { + this.hidden = false; + announce(MaplePacketCreator.getGMEffect(0x10, (byte) 0)); + List dsstat = Collections.singletonList(MapleBuffStat.DARKSIGHT); + getMap().broadcastGMMessage(this, MaplePacketCreator.cancelForeignBuff(id, dsstat), false); + getMap().broadcastMessage(this, MaplePacketCreator.spawnPlayerMapobject(this), false); + updatePartyMemberHP(); + } else { + this.hidden = true; + announce(MaplePacketCreator.getGMEffect(0x10, (byte) 1)); + if (!login) { + getMap().broadcastMessage(this, MaplePacketCreator.removePlayerFromMap(getId()), false); + } + getMap().broadcastGMMessage(this, MaplePacketCreator.spawnPlayerMapobject(this), false); + List> dsstat = Collections.singletonList(new Pair(MapleBuffStat.DARKSIGHT, 0)); + getMap().broadcastGMMessage(this, MaplePacketCreator.giveForeignBuff(id, dsstat), false); + for (MapleMonster mon : this.getControlledMonsters()) { + mon.setController(null); + mon.setControllerHasAggro(false); + mon.setControllerKnowsAboutAggro(false); + mon.getMap().updateMonsterController(mon); + } + } + announce(MaplePacketCreator.enableActions()); + } + } + + public void Hide(boolean hide) { + Hide(hide, false); + } + + public void toggleHide(boolean login) { + Hide(!isHidden()); + } + + private void cancelFullnessSchedule(int petSlot) { + if (fullnessSchedule[petSlot] != null) { + fullnessSchedule[petSlot].cancel(false); + } + } + + public void cancelMagicDoor() { + for (MapleBuffStatValueHolder mbsvh : new ArrayList<>(effects.values())) { + if (mbsvh.effect.isMagicDoor()) { + cancelEffect(mbsvh.effect, false, mbsvh.startTime); + } + } + } + + public void cancelMapTimeLimitTask() { + if (mapTimeLimitTask != null) { + mapTimeLimitTask.cancel(false); + } + } + + private void cancelPlayerBuffs(List buffstats) { + if (client.getChannelServer().getPlayerStorage().getCharacterById(getId()) != null) { + recalcLocalStats(); + enforceMaxHpMp(); + client.announce(MaplePacketCreator.cancelBuff(buffstats)); + if (buffstats.size() > 0) { + getMap().broadcastMessage(this, MaplePacketCreator.cancelForeignBuff(getId(), buffstats), false); + } + } + } + + public static boolean canCreateChar(String name) { + for (String nameTest : BLOCKED_NAMES) { + if (name.toLowerCase().contains(nameTest)) { + return false; + } + } + return getIdByName(name) < 0 && Pattern.compile("[a-zA-Z0-9]{3,12}").matcher(name).matches(); + } + + public boolean canDoor() { + return canDoor; + } + + public FameStatus canGiveFame(MapleCharacter from) { + if (gmLevel > 0) { + return FameStatus.OK; + } else if (lastfametime >= System.currentTimeMillis() - 3600000 * 24) { + return FameStatus.NOT_TODAY; + } else if (lastmonthfameids.contains(Integer.valueOf(from.getId()))) { + return FameStatus.NOT_THIS_MONTH; + } else { + return FameStatus.OK; + } + } + + public void changeCI(int type) { + this.ci = type; + } + + public void setMasteries(int jobId) { + int[] skills = new int[4]; + for (int i = 0; i > skills.length; i++) { + skills[i] = 0; //that initalization meng + } + if (jobId == 112) { + skills[0] = Hero.ACHILLES; + skills[1] = Hero.MONSTER_MAGNET; + skills[2] = Hero.BRANDISH; + } else if (jobId == 122) { + skills[0] = Paladin.ACHILLES; + skills[1] = Paladin.MONSTER_MAGNET; + skills[2] = Paladin.BLAST; + } else if (jobId == 132) { + skills[0] = DarkKnight.BEHOLDER; + skills[1] = DarkKnight.ACHILLES; + skills[2] = DarkKnight.MONSTER_MAGNET; + } else if (jobId == 212) { + skills[0] = FPArchMage.BIG_BANG; + skills[1] = FPArchMage.MANA_REFLECTION; + skills[2] = FPArchMage.PARALYZE; + } else if (jobId == 222) { + skills[0] = ILArchMage.BIG_BANG; + skills[1] = ILArchMage.MANA_REFLECTION; + skills[2] = ILArchMage.CHAIN_LIGHTNING; + } else if (jobId == 232) { + skills[0] = Bishop.BIG_BANG; + skills[1] = Bishop.MANA_REFLECTION; + skills[2] = Bishop.HOLY_SHIELD; + } else if (jobId == 312) { + skills[0] = Bowmaster.BOW_EXPERT; + skills[1] = Bowmaster.HAMSTRING; + skills[2] = Bowmaster.SHARP_EYES; + } else if (jobId == 322) { + skills[0] = Marksman.MARKSMAN_BOOST; + skills[1] = Marksman.BLIND; + skills[2] = Marksman.SHARP_EYES; + } else if (jobId == 412) { + skills[0] = NightLord.SHADOW_STARS; + skills[1] = NightLord.SHADOW_SHIFTER; + skills[2] = NightLord.VENOMOUS_STAR; + } else if (jobId == 422) { + skills[0] = Shadower.SHADOW_SHIFTER; + skills[1] = Shadower.VENOMOUS_STAB; + skills[2] = Shadower.BOOMERANG_STEP; + } else if (jobId == 512) { + skills[0] = Buccaneer.BARRAGE; + skills[1] = Buccaneer.ENERGY_ORB; + skills[2] = Buccaneer.SPEED_INFUSION; + skills[3] = Buccaneer.DRAGON_STRIKE; + } else if (jobId == 522) { + skills[0] = Corsair.ELEMENTAL_BOOST; + skills[1] = Corsair.BULLSEYE; + skills[2] = Corsair.WRATH_OF_THE_OCTOPI; + skills[3] = Corsair.RAPID_FIRE; + } else if (jobId == 2112) { + skills[0] = Aran.OVER_SWING; + skills[1] = Aran.HIGH_MASTERY; + skills[2] = Aran.FREEZE_STANDING; + } else if (jobId == 2217) { + skills[0] = Evan.MAPLE_WARRIOR; + skills[1] = Evan.ILLUSION; + } else if (jobId == 2218) { + skills[0] = Evan.BLESSING_OF_THE_ONYX; + skills[1] = Evan.BLAZE; + } + for (Integer skillId : skills) { + if (skillId != 0) { + Skill skill = SkillFactory.getSkill(skillId); + changeSkillLevel(skill, (byte) 0, 10, -1); + } + } + } + + public void changeJob(MapleJob newJob) { + if (newJob == null) { + return;//the fuck you doing idiot! + } + this.job = newJob; + remainingSp[GameConstants.getSkillBook(newJob.getId())] += 1; + if (GameConstants.hasSPTable(newJob)) { + remainingSp[GameConstants.getSkillBook(newJob.getId())] += 2; + } else { + if (newJob.getId() % 10 == 2) { + remainingSp[GameConstants.getSkillBook(newJob.getId())] += 2; + } + } + if (newJob.getId() % 10 > 1) { + this.remainingAp += 5; + } + int job_ = job.getId() % 1000; // lame temp "fix" + if (job_ == 100) { + maxhp += Randomizer.rand(200, 250); + } else if (job_ == 200) { + maxmp += Randomizer.rand(100, 150); + } else if (job_ % 100 == 0) { + maxhp += Randomizer.rand(100, 150); + maxhp += Randomizer.rand(25, 50); + } else if (job_ > 0 && job_ < 200) { + maxhp += Randomizer.rand(300, 350); + } else if (job_ < 300) { + maxmp += Randomizer.rand(450, 500); + } //handle KoC here (undone) + else if (job_ > 0 && job_ != 1000) { + maxhp += Randomizer.rand(300, 350); + maxmp += Randomizer.rand(150, 200); + } + if (maxhp >= 30000) { + maxhp = 30000; + } + if (maxmp >= 30000) { + maxmp = 30000; + } + if (!isGM()) { + for (byte i = 1; i < 5; i++) { + gainSlots(i, 4, true); + } + } + List> statup = new ArrayList<>(5); + statup.add(new Pair<>(MapleStat.MAXHP, Integer.valueOf(maxhp))); + statup.add(new Pair<>(MapleStat.MAXMP, Integer.valueOf(maxmp))); + statup.add(new Pair<>(MapleStat.AVAILABLEAP, remainingAp)); + statup.add(new Pair<>(MapleStat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())])); + statup.add(new Pair<>(MapleStat.JOB, Integer.valueOf(job.getId()))); + if (dragon != null) { + getMap().broadcastMessage(MaplePacketCreator.removeDragon(dragon.getObjectId())); + dragon = null; + } + recalcLocalStats(); + client.announce(MaplePacketCreator.updatePlayerStats(statup, this)); + silentPartyUpdate(); + if (this.guildid > 0) { + getGuild().broadcast(MaplePacketCreator.jobMessage(0, job.getId(), name), this.getId()); + } + setMasteries(this.job.getId()); + guildUpdate(); + getMap().broadcastMessage(this, MaplePacketCreator.showForeignEffect(getId(), 8), false); + if (GameConstants.hasSPTable(newJob) && newJob.getId() != 2001) { + if (getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) { + cancelBuffStats(MapleBuffStat.MONSTER_RIDING); + } + createDragon(); + } + } + + public void changeKeybinding(int key, MapleKeyBinding keybinding) { + if (keybinding.getType() != 0) { + keymap.put(Integer.valueOf(key), keybinding); + } else { + keymap.remove(Integer.valueOf(key)); + } + } + + public void changeMap(int map) { + changeMap(map, 0); + } + + public void changeMap(int map, int portal) { + MapleMap warpMap; + if (getEventInstance() != null) { + warpMap = getEventInstance().getMapInstance(map); + } else { + warpMap = client.getChannelServer().getMapFactory().getMap(map); + } + + changeMap(warpMap, warpMap.getPortal(portal)); + } + + public void changeMap(int map, String portal) { + MapleMap warpMap; + if (getEventInstance() != null) { + warpMap = getEventInstance().getMapInstance(map); + } else { + warpMap = client.getChannelServer().getMapFactory().getMap(map); + } + + changeMap(warpMap, warpMap.getPortal(portal)); + } + + public void changeMap(int map, MaplePortal portal) { + MapleMap warpMap; + if (getEventInstance() != null) { + warpMap = getEventInstance().getMapInstance(map); + } else { + warpMap = client.getChannelServer().getMapFactory().getMap(map); + } + + changeMap(warpMap, portal); + } + + public void changeMap(MapleMap to) { + changeMap(to, to.getPortal(0)); + } + + public void changeMap(final MapleMap to, final MaplePortal pto) { + changeMapInternal(to, pto.getPosition(), MaplePacketCreator.getWarpToMap(to, pto.getId(), this)); + } + + public void changeMap(final MapleMap to, final Point pos) { + changeMapInternal(to, pos, MaplePacketCreator.getWarpToMap(to, 0x80, this));//Position :O (LEFT) + } + + public void changeMapBanish(int mapid, String portal, String msg) { + dropMessage(5, msg); + MapleMap map_ = client.getChannelServer().getMapFactory().getMap(mapid); + changeMap(map_, map_.getPortal(portal)); + } + + private boolean buffMapProtection() { + for(Entry mbs : effects.entrySet()) { + if(mbs.getKey() == MapleBuffStat.MAP_PROTECTION) { + byte value = (byte)mbs.getValue().value; + MapleMap map = client.getChannelServer().getMapFactory().getMap(mapid); + + if(value == 1 && map.getReturnMapId() == 211000000) return(true); //protection from cold + else if(value == 2 && map.getReturnMapId() == 230000000) return(true); //breathing underwater + + else return(false); + } + } + + return false; + } + + private void changeMapInternal(final MapleMap to, final Point pos, final byte[] warpPacket) { + if (this.getTrade() != null) { + MapleTrade.cancelTrade(this); + } + client.announce(warpPacket); + map.removePlayer(MapleCharacter.this); + if (client.getChannelServer().getPlayerStorage().getCharacterById(getId()) != null) { + map = to; + setPosition(pos); + map.addPlayer(MapleCharacter.this); + if (party != null) { + mpc.setMapId(to.getId()); + silentPartyUpdate(); + client.announce(MaplePacketCreator.updateParty(client.getChannel(), party, PartyOperation.SILENT_UPDATE, null)); + updatePartyMemberHP(); + } + if (getMap().getHPDec() > 0) { + hpDecreaseTask = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + doHurtHp(); + } + }, 10000); + } + } + } + + public void changePage(int page) { + this.currentPage = page; + } + + public void changeSkillLevel(Skill skill, byte newLevel, int newMasterlevel, long expiration) { + if (newLevel > -1) { + skills.put(skill, new SkillEntry(newLevel, newMasterlevel, expiration)); + if (!GameConstants.isHiddenSkills(skill.getId())) { + this.client.announce(MaplePacketCreator.updateSkill(skill.getId(), newLevel, newMasterlevel, expiration)); + } + } else { + skills.remove(skill); + this.client.announce(MaplePacketCreator.updateSkill(skill.getId(), newLevel, newMasterlevel, -1)); //Shouldn't use expiration anymore :) + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("DELETE FROM skills WHERE skillid = ? AND characterid = ?")) { + ps.setInt(1, skill.getId()); + ps.setInt(2, id); + ps.execute(); + } + } catch (SQLException ex) { + System.out.print("Error deleting skill: " + ex); + } + } + } + + public void changeTab(int tab) { + this.currentTab = tab; + } + + public void changeType(int type) { + this.currentType = type; + } + + public void checkBerserk() { + if (BerserkSchedule != null) { + BerserkSchedule.cancel(false); + } + final MapleCharacter chr = this; + if (job.equals(MapleJob.DARKKNIGHT)) { + Skill BerserkX = SkillFactory.getSkill(DarkKnight.BERSERK); + final int skilllevel = getSkillLevel(BerserkX); + if (skilllevel > 0) { + Berserk = chr.getHp() * 100 / chr.getMaxHp() < BerserkX.getEffect(skilllevel).getX(); + BerserkSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + client.announce(MaplePacketCreator.showOwnBerserk(skilllevel, Berserk)); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showBerserk(getId(), skilllevel, Berserk), false); + } + }, 5000, 3000); + } + } + } + + public void checkMessenger() { + if (messenger != null && messengerposition < 4 && messengerposition > -1) { + World worldz = Server.getInstance().getWorld(world); + worldz.silentJoinMessenger(messenger.getId(), new MapleMessengerCharacter(this, messengerposition), messengerposition); + worldz.updateMessenger(getMessenger().getId(), name, client.getChannel()); + } + } + + public void checkMonsterAggro(MapleMonster monster) { + if (!monster.isControllerHasAggro()) { + if (monster.getController() == this) { + monster.setControllerHasAggro(true); + } else { + monster.switchController(this, true); + } + } + } + + public void clearDoors() { + doors.clear(); + } + + public void clearSavedLocation(SavedLocationType type) { + savedLocations[type.ordinal()] = null; + } + + public void controlMonster(MapleMonster monster, boolean aggro) { + monster.setController(this); + controlled.add(monster); + client.announce(MaplePacketCreator.controlMonster(monster, false, aggro)); + } + + public int countItem(int itemid) { + return inventory[MapleItemInformationProvider.getInstance().getInventoryType(itemid).ordinal()].countById(itemid); + } + + public void decreaseBattleshipHp(int decrease) { + this.battleshipHp -= decrease; + if (battleshipHp <= 0) { + this.battleshipHp = 0; + Skill battleship = SkillFactory.getSkill(Corsair.BATTLE_SHIP); + int cooldown = battleship.getEffect(getSkillLevel(battleship)).getCooldown(); + announce(MaplePacketCreator.skillCooldown(Corsair.BATTLE_SHIP, cooldown)); + addCooldown(Corsair.BATTLE_SHIP, System.currentTimeMillis(), cooldown, TimerManager.getInstance().schedule(new CancelCooldownAction(this, Corsair.BATTLE_SHIP), cooldown * 1000)); + removeCooldown(5221999); + cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); + } else { + announce(MaplePacketCreator.skillCooldown(5221999, battleshipHp / 10)); //:D + addCooldown(5221999, 0, battleshipHp, null); + } + } + + public void decreaseReports() { + this.possibleReports--; + } + + public void deleteGuild(int guildId) { + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("UPDATE characters SET guildid = 0, guildrank = 5 WHERE guildid = ?")) { + ps.setInt(1, guildId); + ps.execute(); + } + try (PreparedStatement ps = con.prepareStatement("DELETE FROM guilds WHERE guildid = ?")) { + ps.setInt(1, id); + ps.execute(); + } + } catch (SQLException ex) { + System.out.print("Error deleting guild: " + ex); + } + } + + private void deleteWhereCharacterId(Connection con, String sql) throws SQLException { + try (PreparedStatement ps = con.prepareStatement(sql)) { + ps.setInt(1, id); + ps.executeUpdate(); + } + } + + public static void deleteWhereCharacterId(Connection con, String sql, int cid) throws SQLException { + try (PreparedStatement ps = con.prepareStatement(sql)) { + ps.setInt(1, cid); + ps.executeUpdate(); + } + } + + private void deregisterBuffStats(List stats) { + synchronized (stats) { + List effectsToCancel = new ArrayList<>(stats.size()); + for (MapleBuffStat stat : stats) { + MapleBuffStatValueHolder mbsvh = effects.get(stat); + if (mbsvh != null) { + effects.remove(stat); + boolean addMbsvh = true; + for (MapleBuffStatValueHolder contained : effectsToCancel) { + if (mbsvh.startTime == contained.startTime && contained.effect == mbsvh.effect) { + addMbsvh = false; + } + } + if (addMbsvh) { + effectsToCancel.add(mbsvh); + } + if (stat == MapleBuffStat.RECOVERY) { + if (recoveryTask != null) { + recoveryTask.cancel(false); + recoveryTask = null; + } + } else if (stat == MapleBuffStat.SUMMON || stat == MapleBuffStat.PUPPET) { + int summonId = mbsvh.effect.getSourceId(); + MapleSummon summon = summons.get(summonId); + if (summon != null) { + getMap().broadcastMessage(MaplePacketCreator.removeSummon(summon, true), summon.getPosition()); + getMap().removeMapObject(summon); + removeVisibleMapObject(summon); + summons.remove(summonId); + } + if (summon.getSkill() == DarkKnight.BEHOLDER) { + if (beholderHealingSchedule != null) { + beholderHealingSchedule.cancel(false); + beholderHealingSchedule = null; + } + if (beholderBuffSchedule != null) { + beholderBuffSchedule.cancel(false); + beholderBuffSchedule = null; + } + } + } else if (stat == MapleBuffStat.DRAGONBLOOD) { + dragonBloodSchedule.cancel(false); + dragonBloodSchedule = null; + } + } + } + for (MapleBuffStatValueHolder cancelEffectCancelTasks : effectsToCancel) { + if (cancelEffectCancelTasks.schedule != null) { + cancelEffectCancelTasks.schedule.cancel(false); + this.cancelEffect(cancelEffectCancelTasks.effect, false, -1); + } + } + } + } + + public void disableDoor() { + canDoor = false; + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + canDoor = true; + } + }, 5000); + } + + public void disbandGuild() { + if (guildid < 1 || guildrank != 1) { + return; + } + try { + Server.getInstance().disbandGuild(guildid); + } catch (Exception e) { + } + } + + public void dispel() { + for (MapleBuffStatValueHolder mbsvh : new ArrayList<>(effects.values())) { + if (mbsvh.effect.isSkill()) { + cancelEffect(mbsvh.effect, false, mbsvh.startTime); + } + } + } + + public final List getAllDiseases() { + final List ret = new ArrayList<>(5); + + DiseaseValueHolder vh; + for (Entry disease : diseases.entrySet()) { + vh = disease.getValue(); + ret.add(new PlayerDiseaseValueHolder(disease.getKey(), vh.startTime, vh.length)); + } + return ret; + } + + public final boolean hasDisease(final MapleDisease dis) { + for (final MapleDisease disease : diseases.keySet()) { + if (disease == dis) { + return true; + } + } + return false; + } + + public void giveDebuff(final MapleDisease disease, MobSkill skill) { + final List> debuff = Collections.singletonList(new Pair<>(disease, Integer.valueOf(skill.getX()))); + + if (!hasDisease(disease) && diseases.size() < 2) { + if (!(disease == MapleDisease.SEDUCE || disease == MapleDisease.STUN)) { + if (isActiveBuffedValue(Bishop.HOLY_SHIELD)) { + return; + } + } + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + dispelDebuff(disease); + } + }, skill.getDuration()); + + diseases.put(disease, new DiseaseValueHolder(System.currentTimeMillis(), skill.getDuration())); + client.announce(MaplePacketCreator.giveDebuff(debuff, skill)); + map.broadcastMessage(this, MaplePacketCreator.giveForeignDebuff(id, debuff, skill), false); + } + } + + public void dispelDebuff(MapleDisease debuff) { + if (hasDisease(debuff)) { + long mask = debuff.getValue(); + announce(MaplePacketCreator.cancelDebuff(mask)); + map.broadcastMessage(this, MaplePacketCreator.cancelForeignDebuff(id, mask), false); + + diseases.remove(debuff); + } + } + + public void dispelDebuffs() { + dispelDebuff(MapleDisease.CURSE); + dispelDebuff(MapleDisease.DARKNESS); + dispelDebuff(MapleDisease.POISON); + dispelDebuff(MapleDisease.SEAL); + dispelDebuff(MapleDisease.WEAKEN); + } + + public void cancelAllDebuffs() { + diseases.clear(); + } + + public void dispelSkill(int skillid) { + LinkedList allBuffs = new LinkedList<>(effects.values()); + for (MapleBuffStatValueHolder mbsvh : allBuffs) { + if (skillid == 0) { + if (mbsvh.effect.isSkill() && (mbsvh.effect.getSourceId() % 10000000 == 1004 || dispelSkills(mbsvh.effect.getSourceId()))) { + cancelEffect(mbsvh.effect, false, mbsvh.startTime); + } + } else if (mbsvh.effect.isSkill() && mbsvh.effect.getSourceId() == skillid) { + cancelEffect(mbsvh.effect, false, mbsvh.startTime); + } + } + } + + private boolean dispelSkills(int skillid) { + switch (skillid) { + case DarkKnight.BEHOLDER: + case FPArchMage.ELQUINES: + case ILArchMage.IFRIT: + case Priest.SUMMON_DRAGON: + case Bishop.BAHAMUT: + case Ranger.PUPPET: + case Ranger.SILVER_HAWK: + case Sniper.PUPPET: + case Sniper.GOLDEN_EAGLE: + case Hermit.SHADOW_PARTNER: + return true; + default: + return false; + } + } + + public void doHurtHp() { + if (!(this.getInventory(MapleInventoryType.EQUIPPED).findById(getMap().getHPDecProtect()) != null || buffMapProtection())) { + addHP(-getMap().getHPDec()); + } + + hpDecreaseTask = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + doHurtHp(); + } + }, 10000); + } + + public void dropMessage(String message) { + dropMessage(0, message); + } + + public void dropMessage(int type, String message) { + client.announce(MaplePacketCreator.serverNotice(type, message)); + } + + public String emblemCost() { + return nf.format(MapleGuild.CHANGE_EMBLEM_COST); + } + + public List> getTimers() { + return timers; + } + + private void enforceMaxHpMp() { + List> stats = new ArrayList<>(2); + if (getMp() > getCurrentMaxMp()) { + setMp(getMp()); + stats.add(new Pair<>(MapleStat.MP, Integer.valueOf(getMp()))); + } + if (getHp() > getCurrentMaxHp()) { + setHp(getHp()); + stats.add(new Pair<>(MapleStat.HP, Integer.valueOf(getHp()))); + } + if (stats.size() > 0) { + client.announce(MaplePacketCreator.updatePlayerStats(stats, this)); + } + } + + public void enteredScript(String script, int mapid) { + if (!entered.containsKey(mapid)) { + entered.put(mapid, script); + } + } + + public void equipChanged() { + getMap().broadcastMessage(this, MaplePacketCreator.updateCharLook(this), false); + recalcLocalStats(); + enforceMaxHpMp(); + if (getMessenger() != null) { + Server.getInstance().getWorld(world).updateMessenger(getMessenger(), getName(), getWorld(), client.getChannel()); + } + } + + public void cancelExpirationTask() { + if (expiretask != null) { + expiretask.cancel(false); + expiretask = null; + } + } + + public void expirationTask() { + if (expiretask == null) { + expiretask = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + long expiration, currenttime = System.currentTimeMillis(); + Set keys = getSkills().keySet(); + for (Iterator i = keys.iterator(); i.hasNext();) { + Skill key = i.next(); + SkillEntry skill = getSkills().get(key); + if (skill.expiration != -1 && skill.expiration < currenttime) { + changeSkillLevel(key, (byte) -1, 0, -1); + } + } + + List toberemove = new ArrayList<>(); + for (MapleInventory inv : inventory) { + for (Item item : inv.list()) { + expiration = item.getExpiration(); + if (expiration != -1 && (expiration < currenttime) && ((item.getFlag() & ItemConstants.LOCK) == ItemConstants.LOCK)) { + byte aids = item.getFlag(); + aids &= ~(ItemConstants.LOCK); + item.setFlag(aids); //Probably need a check, else people can make expiring items into permanent items... + item.setExpiration(-1); + forceUpdateItem(item); //TEST :3 + } else if (expiration != -1 && expiration < currenttime) { + client.announce(MaplePacketCreator.itemExpired(item.getItemId())); + toberemove.add(item); + } + } + for (Item item : toberemove) { + MapleInventoryManipulator.removeFromSlot(client, inv.getType(), item.getPosition(), item.getQuantity(), true); + } + toberemove.clear(); + } + } + }, 60000); + } + } + + public enum FameStatus { + + OK, NOT_TODAY, NOT_THIS_MONTH + } + + public void forceUpdateItem(Item item) { + final List mods = new LinkedList<>(); + mods.add(new ModifyInventory(3, item)); + mods.add(new ModifyInventory(0, item)); + client.announce(MaplePacketCreator.modifyInventory(true, mods)); + } + + public void gainGachaExp() { + int expgain = 0; + int currentgexp = gachaexp.get(); + if ((currentgexp + exp.get()) >= ExpTable.getExpNeededForLevel(level)) { + expgain += ExpTable.getExpNeededForLevel(level) - exp.get(); + int nextneed = ExpTable.getExpNeededForLevel(level + 1); + if ((currentgexp - expgain) >= nextneed) { + expgain += nextneed; + } + this.gachaexp.set(currentgexp - expgain); + } else { + expgain = this.gachaexp.getAndSet(0); + } + gainExp(expgain, false, false); + updateSingleStat(MapleStat.GACHAEXP, this.gachaexp.get()); + } + + public void gainGachaExp(int gain) { + updateSingleStat(MapleStat.GACHAEXP, gachaexp.addAndGet(gain)); + } + + public void gainExp(int gain, boolean show, boolean inChat) { + gainExp(gain, 0, show, inChat, true); + } + + public void gainExp(int gain, int party, boolean show, boolean inChat, boolean white) { + if (hasDisease(MapleDisease.CURSE)) { + gain *= 0.5; + party *= 0.5; + } + + int equip = (gain / 10) * pendantExp; + int total = gain + equip + party; + + if (level < getMaxLevel()) { + if ((long) this.exp.get() + (long) total > (long) Integer.MAX_VALUE) { + int gainFirst = ExpTable.getExpNeededForLevel(level) - this.exp.get(); + total -= gainFirst + 1; + this.gainExp(gainFirst + 1, party, false, inChat, white); + } + updateSingleStat(MapleStat.EXP, this.exp.addAndGet(total)); + if (show && gain != 0) { + client.announce(MaplePacketCreator.getShowExpGain(gain, equip, party, inChat, white)); + } + while (exp.get() >= ExpTable.getExpNeededForLevel(level)) { + levelUp(true); + if (level == getMaxLevel()) { + setExp(0); + updateSingleStat(MapleStat.EXP, 0); + break; + } + } + } + } + + public void gainFame(int delta) { + this.addFame(delta); + this.updateSingleStat(MapleStat.FAME, this.fame); + } + + public void gainMeso(int gain, boolean show) { + gainMeso(gain, show, false, false); + } + + public void gainMeso(int gain, boolean show, boolean enableActions, boolean inChat) { + if (meso.get() + gain < 0) { + client.announce(MaplePacketCreator.enableActions()); + return; + } + updateSingleStat(MapleStat.MESO, meso.addAndGet(gain), enableActions); + if (show) { + client.announce(MaplePacketCreator.getShowMesoGain(gain, inChat)); + } + } + + public void genericGuildMessage(int code) { + this.client.announce(MaplePacketCreator.genericGuildMessage((byte) code)); + } + + public int getAccountID() { + return accountid; + } + + public List getAllBuffs() { + List ret = new ArrayList<>(); + for (MapleBuffStatValueHolder mbsvh : effects.values()) { + ret.add(new PlayerBuffValueHolder(mbsvh.startTime, mbsvh.effect)); + } + return ret; + } + + public List> getAllStatups() { + List> ret = new ArrayList<>(); + for (MapleBuffStat mbs : effects.keySet()) { + MapleBuffStatValueHolder mbsvh = effects.get(mbs); + ret.add(new Pair<>(mbs, mbsvh.value)); + } + return ret; + } + + public List getAllCooldowns() { + List ret = new ArrayList<>(); + for (MapleCoolDownValueHolder mcdvh : coolDowns.values()) { + ret.add(new PlayerCoolDownValueHolder(mcdvh.skillId, mcdvh.startTime, mcdvh.length)); + } + return ret; + } + + public int getAllianceRank() { + return this.allianceRank; + } + + public int getAllowWarpToId() { + return warpToId; + } + + public static String getAriantRoomLeaderName(int room) { + return ariantroomleader[room]; + } + + public static int getAriantSlotsRoom(int room) { + return ariantroomslot[room]; + } + + public int getBattleshipHp() { + return battleshipHp; + } + + public BuddyList getBuddylist() { + return buddylist; + } + + public static Map getCharacterFromDatabase(String name) { + Map character = new LinkedHashMap<>(); + + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT `id`, `accountid`, `name` FROM `characters` WHERE `name` = ?")) { + ps.setString(1, name); + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + rs.close(); + ps.close(); + return null; + } + + for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) { + character.put(rs.getMetaData().getColumnLabel(i), rs.getString(i)); + } + } + } + } catch (SQLException sqle) { + sqle.printStackTrace(); + } + + return character; + } + + public Long getBuffedStarttime(MapleBuffStat effect) { + MapleBuffStatValueHolder mbsvh = effects.get(effect); + if (mbsvh == null) { + return null; + } + return Long.valueOf(mbsvh.startTime); + } + + public Integer getBuffedValue(MapleBuffStat effect) { + MapleBuffStatValueHolder mbsvh = effects.get(effect); + if (mbsvh == null) { + return null; + } + return Integer.valueOf(mbsvh.value); + } + + public int getBuffSource(MapleBuffStat stat) { + MapleBuffStatValueHolder mbsvh = effects.get(stat); + if (mbsvh == null) { + return -1; + } + return mbsvh.effect.getSourceId(); + } + + public MapleStatEffect getBuffEffect(MapleBuffStat stat) { + MapleBuffStatValueHolder mbsvh = effects.get(stat); + if (mbsvh == null) { + return null; + } else { + return mbsvh.effect; + } + } + + private List getBuffStats(MapleStatEffect effect, long startTime) { + List stats = new ArrayList<>(); + for (Entry stateffect : effects.entrySet()) { + if (stateffect.getValue().effect.sameSource(effect) && (startTime == -1 || startTime == stateffect.getValue().startTime)) { + stats.add(stateffect.getKey()); + } + } + return stats; + } + + public int getChair() { + return chair; + } + + public String getChalkboard() { + return this.chalktext; + } + + public MapleClient getClient() { + return client; + } + + public final List getCompletedQuests() { + List ret = new LinkedList<>(); + for (MapleQuestStatus q : quests.values()) { + if (q.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { + ret.add(q); + } + } + return Collections.unmodifiableList(ret); + } + + public Collection getControlledMonsters() { + return Collections.unmodifiableCollection(controlled); + } + + public List getCrushRings() { + Collections.sort(crushRings); + return crushRings; + } + + public int getCurrentCI() { + return ci; + } + + public int getCurrentPage() { + return currentPage; + } + + public int getCurrentMaxHp() { + return localmaxhp; + } + + public int getCurrentMaxMp() { + return localmaxmp; + } + + public int getCurrentTab() { + return currentTab; + } + + public int getCurrentType() { + return currentType; + } + + public int getDex() { + return dex; + } + + public int getDojoEnergy() { + return dojoEnergy; + } + + public boolean getDojoParty() { + return dojoParty; + } + + public int getDojoPoints() { + return dojoPoints; + } + + public int getDojoStage() { + return dojoStage; + } + + public List getDoors() { + return new ArrayList<>(doors); + } + + public int getDropRate() { + return dropRate; + } + + public int getEnergyBar() { + return energybar; + } + + public EventInstanceManager getEventInstance() { + return eventInstance; + } + + public ArrayList getExcluded() { + return excluded; + } + + public int getExp() { + return exp.get(); + } + + public int getGachaExp() { + return gachaexp.get(); + } + + public int getExpRate() { + return expRate; + } + + public int getFace() { + return face; + } + + public int getFame() { + return fame; + } + + public MapleFamily getFamily() { + return family; + } + + public void setFamily(MapleFamily f) { + this.family = f; + } + + public int getFamilyId() { + return familyId; + } + + public boolean getFinishedDojoTutorial() { + return finishedDojoTutorial; + } + + public List getFriendshipRings() { + Collections.sort(friendshipRings); + return friendshipRings; + } + + public int getGender() { + return gender; + } + + public boolean isMale() { + return getGender() == 0; + } + + public MapleGuild getGuild() { + try { + return Server.getInstance().getGuild(getGuildId(), getWorld(), null); + } catch (Exception ex) { + return null; + } + } + + public int getGuildId() { + return guildid; + } + + public int getGuildRank() { + return guildrank; + } + + public int getHair() { + return hair; + } + + public HiredMerchant getHiredMerchant() { + return hiredMerchant; + } + + public int getHp() { + return hp; + } + + public int getHpMpApUsed() { + return hpMpApUsed; + } + + public int getId() { + return id; + } + + public static int getIdByName(String name) { + try { + int id; + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT id FROM characters WHERE name = ?")) { + ps.setString(1, name); + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + rs.close(); + ps.close(); + return -1; + } + id = rs.getInt("id"); + } + } + return id; + } catch (Exception e) { + } + return -1; + } + + public static String getNameById(int id) { + try { + String name; + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT name FROM characters WHERE id = ?")) { + ps.setInt(1, id); + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + rs.close(); + ps.close(); + return null; + } + name = rs.getString("name"); + } + } + return name; + } catch (Exception e) { + } + return null; + } + + public int getInitialSpawnpoint() { + return initialSpawnPoint; + } + + public int getInt() { + return int_; + } + + public MapleInventory getInventory(MapleInventoryType type) { + return inventory[type.ordinal()]; + } + + public int getItemEffect() { + return itemEffect; + } + + public int getItemQuantity(int itemid, boolean checkEquipped) { + int possesed = inventory[MapleItemInformationProvider.getInstance().getInventoryType(itemid).ordinal()].countById(itemid); + if (checkEquipped) { + possesed += inventory[MapleInventoryType.EQUIPPED.ordinal()].countById(itemid); + } + return possesed; + } + + public MapleJob getJob() { + return job; + } + + public int getJobRank() { + return jobRank; + } + + public int getJobRankMove() { + return jobRankMove; + } + + public int getJobType() { + return job.getId() / 1000; + } + + public Map getKeymap() { + return keymap; + } + + public long getLastHealed() { + return lastHealed; + } + + public long getLastUsedCashItem() { + return lastUsedCashItem; + } + + public int getLevel() { + return level; + } + + public int getLuk() { + return luk; + } + + public int getFh() { + Point pos = this.getPosition(); + pos.y -= 6; + if (getMap().getFootholds().findBelow(pos) == null) { + return 0; + } else { + return getMap().getFootholds().findBelow(pos).getY1(); + } + } + + public MapleMap getMap() { + return map; + } + + public int getMapId() { + if (map != null) { + return map.getId(); + } + return mapid; + } + + public int getMarkedMonster() { + return markedMonster; + } + + public MapleRing getMarriageRing() { + return marriageRing; + } + + public int getMarried() { + return married; + } + + public int getMasterLevel(Skill skill) { + if (skills.get(skill) == null) { + return 0; + } + return skills.get(skill).masterlevel; + } + + public int getMaxHp() { + return maxhp; + } + + public int getMaxLevel() { + return isCygnus() ? 120 : 200; + } + + public int getMaxMp() { + return maxmp; + } + + public int getMeso() { + return meso.get(); + } + + public int getMerchantMeso() { + return merchantmeso; + } + + public int getMesoRate() { + return mesoRate; + } + + public int getMesosTraded() { + return mesosTraded; + } + + public int getMessengerPosition() { + return messengerposition; + } + + public MapleGuildCharacter getMGC() { + return mgc; + } + + public MaplePartyCharacter getMPC() { + if (mpc == null) { + mpc = new MaplePartyCharacter(this); + } + return mpc; + } + + public void setMPC(MaplePartyCharacter mpc) { + this.mpc = mpc; + } + + public MapleMiniGame getMiniGame() { + return miniGame; + } + + public int getMiniGamePoints(String type, boolean omok) { + if (omok) { + switch (type) { + case "wins": + return omokwins; + case "losses": + return omoklosses; + default: + return omokties; + } + } else { + switch (type) { + case "wins": + return matchcardwins; + case "losses": + return matchcardlosses; + default: + return matchcardties; + } + } + } + + public MonsterBook getMonsterBook() { + return monsterbook; + } + + public int getMonsterBookCover() { + return bookCover; + } + + public MapleMount getMount() { + return maplemount; + } + + public int getMp() { + return mp; + } + + public MapleMessenger getMessenger() { + return messenger; + } + + public String getName() { + return name; + } + + public int getNextEmptyPetIndex() { + for (int i = 0; i < 3; i++) { + if (pets[i] == null) { + return i; + } + } + return 3; + } + + public int getNoPets() { + int ret = 0; + for (int i = 0; i < 3; i++) { + if (pets[i] != null) { + ret++; + } + } + return ret; + } + + public int getNumControlledMonsters() { + return controlled.size(); + } + + public MapleParty getParty() { + return party; + } + + public int getPartyId() { + return (party != null ? party.getId() : -1); + } + + public MaplePlayerShop getPlayerShop() { + return playerShop; + } + + public MaplePet[] getPets() { + return pets; + } + + public MaplePet getPet(int index) { + return pets[index]; + } + + public byte getPetIndex(int petId) { + for (byte i = 0; i < 3; i++) { + if (pets[i] != null) { + if (pets[i].getUniqueId() == petId) { + return i; + } + } + } + return -1; + } + + public byte getPetIndex(MaplePet pet) { + for (byte i = 0; i < 3; i++) { + if (pets[i] != null) { + if (pets[i].getUniqueId() == pet.getUniqueId()) { + return i; + } + } + } + return -1; + } + + public int getPossibleReports() { + return possibleReports; + } + + public final byte getQuestStatus(final int quest) { + for (final MapleQuestStatus q : quests.values()) { + if (q.getQuest().getId() == quest) { + return (byte) q.getStatus().getId(); + } + } + return 0; + } + + public MapleQuestStatus getQuest(MapleQuest quest) { + if (!quests.containsKey(quest.getId())) { + return new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); + } + return quests.get(quest.getId()); + } + + //---- \/ \/ \/ \/ \/ \/ \/ NOT TESTED \/ \/ \/ \/ \/ \/ \/ \/ \/ ---- + + public final void setQuestAdd(final MapleQuest quest, final byte status, final String customData) { + if (!quests.containsKey(quest.getId())) { + final MapleQuestStatus stat = new MapleQuestStatus(quest, MapleQuestStatus.Status.getById((int)status)); + stat.setCustomData(customData); + quests.put(quest.getId(), stat); + } + } + + public final MapleQuestStatus getQuestNAdd(final MapleQuest quest) { + if (!quests.containsKey(quest.getId())) { + final MapleQuestStatus status = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); + quests.put(quest.getId(), status); + return status; + } + return quests.get(quest.getId()); + } + + public final MapleQuestStatus getQuestNoAdd(final MapleQuest quest) { + return quests.get(quest.getId()); + } + + public final MapleQuestStatus getQuestRemove(final MapleQuest quest) { + return quests.remove(quest.getId()); + } + + //---- /\ /\ /\ /\ /\ /\ /\ NOT TESTED /\ /\ /\ /\ /\ /\ /\ /\ /\ ---- + + public boolean needQuestItem(int questid, int itemid) { + if (questid <= 0) { + return true; //For non quest items :3 + } + MapleQuest quest = MapleQuest.getInstance(questid); + return getInventory(ItemConstants.getInventoryType(itemid)).countById(itemid) < quest.getItemAmountNeeded(itemid); + } + + public int getRank() { + return rank; + } + + public int getRankMove() { + return rankMove; + } + + public int getRemainingAp() { + return remainingAp; + } + + public int getRemainingSp() { + return remainingSp[GameConstants.getSkillBook(job.getId())]; //default + } + + public int getRemainingSpBySkill(final int skillbook) { + return remainingSp[skillbook]; + } + + public int[] getRemainingSps() { + return remainingSp; + } + + public int getSavedLocation(String type) { + SavedLocation sl = savedLocations[SavedLocationType.fromString(type).ordinal()]; + if (sl == null) { + return -1; + } + int m = sl.getMapId(); + if (!SavedLocationType.fromString(type).equals(SavedLocationType.WORLDTOUR)) { + clearSavedLocation(SavedLocationType.fromString(type)); + } + return m; + } + + public String getSearch() { + return search; + } + + public MapleShop getShop() { + return shop; + } + + public Map getSkills() { + return Collections.unmodifiableMap(skills); + } + + public int getSkillLevel(int skill) { + SkillEntry ret = skills.get(SkillFactory.getSkill(skill)); + if (ret == null) { + return 0; + } + return ret.skillevel; + } + + public byte getSkillLevel(Skill skill) { + if (skills.get(skill) == null) { + return 0; + } + return skills.get(skill).skillevel; + } + + public long getSkillExpiration(int skill) { + SkillEntry ret = skills.get(SkillFactory.getSkill(skill)); + if (ret == null) { + return -1; + } + return ret.expiration; + } + + public long getSkillExpiration(Skill skill) { + if (skills.get(skill) == null) { + return -1; + } + return skills.get(skill).expiration; + } + + public MapleSkinColor getSkinColor() { + return skinColor; + } + + public int getSlot() { + return slots; + } + + public final List getStartedQuests() { + List ret = new LinkedList<>(); + for (MapleQuestStatus q : quests.values()) { + if (q.getStatus().equals(MapleQuestStatus.Status.STARTED)) { + ret.add(q); + } + } + return Collections.unmodifiableList(ret); + } + + public final int getStartedQuestsSize() { + int i = 0; + for (MapleQuestStatus q : quests.values()) { + if (q.getStatus().equals(MapleQuestStatus.Status.STARTED)) { + if (q.getQuest().getInfoNumber() > 0) { + i++; + } + i++; + } + } + return i; + } + + public MapleStatEffect getStatForBuff(MapleBuffStat effect) { + MapleBuffStatValueHolder mbsvh = effects.get(effect); + if (mbsvh == null) { + return null; + } + return mbsvh.effect; + } + + public MapleStorage getStorage() { + return storage; + } + + public int getStr() { + return str; + } + + public Map getSummons() { + return summons; + } + + public int getTotalStr() { + return localstr; + } + + public int getTotalDex() { + return localdex; + } + + public int getTotalInt() { + return localint_; + } + + public int getTotalLuk() { + return localluk; + } + + public int getTotalMagic() { + return magic; + } + + public int getTotalWatk() { + return watk; + } + + public MapleTrade getTrade() { + return trade; + } + + public int getVanquisherKills() { + return vanquisherKills; + } + + public int getVanquisherStage() { + return vanquisherStage; + } + + public Collection getVisibleMapObjects() { + return Collections.unmodifiableCollection(visibleMapObjects); + } + + public int getWorld() { + return world; + } + + public void giveCoolDowns(final int skillid, long starttime, long length) { + if (skillid == 5221999) { + this.battleshipHp = (int) length; + addCooldown(skillid, 0, length, null); + } else { + int time = (int) ((length + starttime) - System.currentTimeMillis()); + addCooldown(skillid, System.currentTimeMillis(), time, TimerManager.getInstance().schedule(new CancelCooldownAction(this, skillid), time)); + } + } + + public int gmLevel() { + return gmLevel; + } + + public String guildCost() { + return nf.format(MapleGuild.CREATE_GUILD_COST); + } + + private void guildUpdate() { + if (this.guildid < 1) { + return; + } + mgc.setLevel(level); + mgc.setJobId(job.getId()); + try { + Server.getInstance().memberLevelJobUpdate(this.mgc); + //Server.getInstance().getGuild(guildid, world, mgc).gainGP(40); + int allianceId = getGuild().getAllianceId(); + if (allianceId > 0) { + Server.getInstance().allianceMessage(allianceId, MaplePacketCreator.updateAllianceJobLevel(this), getId(), -1); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void handleEnergyChargeGain() { // to get here energychargelevel has to be > 0 + Skill energycharge = isCygnus() ? SkillFactory.getSkill(ThunderBreaker.ENERGY_CHARGE) : SkillFactory.getSkill(Marauder.ENERGY_CHARGE); + MapleStatEffect ceffect; + ceffect = energycharge.getEffect(getSkillLevel(energycharge)); + TimerManager tMan = TimerManager.getInstance(); + if (energybar < 10000) { + energybar += 102; + if (energybar > 10000) { + energybar = 10000; + } + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ENERGY_CHARGE, energybar)); + setBuffedValue(MapleBuffStat.ENERGY_CHARGE, energybar); + client.announce(MaplePacketCreator.giveBuff(energybar, 0, stat)); + client.announce(MaplePacketCreator.showOwnBuffEffect(energycharge.getId(), 2)); + getMap().broadcastMessage(this, MaplePacketCreator.showBuffeffect(id, energycharge.getId(), 2)); + getMap().broadcastMessage(this, MaplePacketCreator.giveForeignBuff(energybar, stat)); + } + if (energybar >= 10000 && energybar < 11000) { + energybar = 15000; + final MapleCharacter chr = this; + tMan.schedule(new Runnable() { + @Override + public void run() { + energybar = 0; + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ENERGY_CHARGE, energybar)); + setBuffedValue(MapleBuffStat.ENERGY_CHARGE, energybar); + client.announce(MaplePacketCreator.giveBuff(energybar, 0, stat)); + getMap().broadcastMessage(chr, MaplePacketCreator.giveForeignBuff(energybar, stat)); + } + }, ceffect.getDuration()); + } + } + + public void handleOrbconsume() { + int skillid = isCygnus() ? DawnWarrior.COMBO : Crusader.COMBO; + Skill combo = SkillFactory.getSkill(skillid); + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.COMBO, 1)); + setBuffedValue(MapleBuffStat.COMBO, 1); + client.announce(MaplePacketCreator.giveBuff(skillid, combo.getEffect(getSkillLevel(combo)).getDuration() + (int) ((getBuffedStarttime(MapleBuffStat.COMBO) - System.currentTimeMillis())), stat)); + getMap().broadcastMessage(this, MaplePacketCreator.giveForeignBuff(getId(), stat), false); + } + + public boolean hasEntered(String script) { + for (int mapId : entered.keySet()) { + if (entered.get(mapId).equals(script)) { + return true; + } + } + return false; + } + + public boolean hasEntered(String script, int mapId) { + if (entered.containsKey(mapId)) { + if (entered.get(mapId).equals(script)) { + return true; + } + } + return false; + } + + public void hasGivenFame(MapleCharacter to) { + lastfametime = System.currentTimeMillis(); + lastmonthfameids.add(Integer.valueOf(to.getId())); + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO famelog (characterid, characterid_to) VALUES (?, ?)")) { + ps.setInt(1, getId()); + ps.setInt(2, to.getId()); + ps.executeUpdate(); + } + } catch (SQLException e) { + } + } + + public boolean hasMerchant() { + return hasMerchant; + } + + public boolean haveItem(int itemid) { + return getItemQuantity(itemid, false) > 0; + } + + public void increaseGuildCapacity() { //hopefully nothing is null + if (getMeso() < getGuild().getIncreaseGuildCost(getGuild().getCapacity())) { + dropMessage(1, "You don't have enough mesos."); + return; + } + Server.getInstance().increaseGuildCapacity(guildid); + gainMeso(-getGuild().getIncreaseGuildCost(getGuild().getCapacity()), true, false, false); + } + + public boolean isActiveBuffedValue(int skillid) { + LinkedList allBuffs = new LinkedList<>(effects.values()); + for (MapleBuffStatValueHolder mbsvh : allBuffs) { + if (mbsvh.effect.isSkill() && mbsvh.effect.getSourceId() == skillid) { + return true; + } + } + return false; + } + + public boolean isAlive() { + return hp > 0; + } + + public boolean isBuffFrom(MapleBuffStat stat, Skill skill) { + MapleBuffStatValueHolder mbsvh = effects.get(stat); + if (mbsvh == null) { + return false; + } + return mbsvh.effect.isSkill() && mbsvh.effect.getSourceId() == skill.getId(); + } + + public boolean isCygnus() { + return getJobType() == 1; + } + + public boolean isAran() { + return getJob().getId() >= 2000 && getJob().getId() <= 2112; + } + + public boolean isBeginnerJob() { + return (getJob().getId() == 0 || getJob().getId() == 1000 || getJob().getId() == 2000) && getLevel() < 11; + } + + public boolean isGM() { + return gmLevel > 0; + } + + public boolean isHidden() { + return hidden; + } + + public boolean isMapObjectVisible(MapleMapObject mo) { + return visibleMapObjects.contains(mo); + } + + public boolean isPartyLeader() { + return party.getLeader() == party.getMemberById(getId()); + } + + public void leaveMap() { + controlled.clear(); + visibleMapObjects.clear(); + if (chair != 0) { + chair = 0; + } + if (hpDecreaseTask != null) { + hpDecreaseTask.cancel(false); + } + } + + public void levelUp(boolean takeexp) { + Skill improvingMaxHP = null; + Skill improvingMaxMP = null; + int improvingMaxHPLevel = 0; + int improvingMaxMPLevel = 0; + + if (isBeginnerJob()) { + remainingAp = 0; + if (getLevel() < 6) { + str += 5; + } else { + str += 4; + dex += 1; + } + } else { + remainingAp += 5; + if (isCygnus() && level < 70) { + remainingAp++; + } + } + if (job == MapleJob.BEGINNER || job == MapleJob.NOBLESSE || job == MapleJob.LEGEND) { + maxhp += Randomizer.rand(12, 16); + maxmp += Randomizer.rand(10, 12); + } else if (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.DAWNWARRIOR1)) { + improvingMaxHP = isCygnus() ? SkillFactory.getSkill(DawnWarrior.MAX_HP_INCREASE) : SkillFactory.getSkill(Swordsman.IMPROVED_MAX_HP_INCREASE); + if (job.isA(MapleJob.CRUSADER)) { + improvingMaxMP = SkillFactory.getSkill(1210000); + } else if (job.isA(MapleJob.DAWNWARRIOR2)) { + improvingMaxMP = SkillFactory.getSkill(11110000); + } + improvingMaxHPLevel = getSkillLevel(improvingMaxHP); + maxhp += Randomizer.rand(24, 28); + maxmp += Randomizer.rand(4, 6); + } else if (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.BLAZEWIZARD1)) { + improvingMaxMP = isCygnus() ? SkillFactory.getSkill(BlazeWizard.INCREASING_MAX_MP) : SkillFactory.getSkill(Magician.IMPROVED_MAX_MP_INCREASE); + improvingMaxMPLevel = getSkillLevel(improvingMaxMP); + maxhp += Randomizer.rand(10, 14); + maxmp += Randomizer.rand(22, 24); + } else if (job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.THIEF) || (job.getId() > 1299 && job.getId() < 1500)) { + maxhp += Randomizer.rand(20, 24); + maxmp += Randomizer.rand(14, 16); + } else if (job.isA(MapleJob.GM)) { + maxhp = 30000; + maxmp = 30000; + } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { + improvingMaxHP = isCygnus() ? SkillFactory.getSkill(ThunderBreaker.IMPROVE_MAX_HP) : SkillFactory.getSkill(5100000); + improvingMaxHPLevel = getSkillLevel(improvingMaxHP); + maxhp += Randomizer.rand(22, 28); + maxmp += Randomizer.rand(18, 23); + } else if (job.isA(MapleJob.ARAN1)) { + maxhp += Randomizer.rand(44, 48); + int aids = Randomizer.rand(4, 8); + maxmp += aids + Math.floor(aids * 0.1); + } + if (improvingMaxHPLevel > 0 && (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.PIRATE) || job.isA(MapleJob.DAWNWARRIOR1))) { + maxhp += improvingMaxHP.getEffect(improvingMaxHPLevel).getX(); + } + if (improvingMaxMPLevel > 0 && (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.CRUSADER) || job.isA(MapleJob.BLAZEWIZARD1))) { + maxmp += improvingMaxMP.getEffect(improvingMaxMPLevel).getX(); + } + maxmp += localint_ / 10; + if (takeexp) { + exp.addAndGet(-ExpTable.getExpNeededForLevel(level)); + if (exp.get() < 0) { + exp.set(0); + } + } + level++; + if (level >= getMaxLevel()) { + exp.set(0); + level = getMaxLevel(); //To prevent levels past 200 + } + + maxhp = Math.min(30000, maxhp); + maxmp = Math.min(30000, maxmp); + if (level == 200) { + exp.set(0); + } + hp = maxhp; + mp = maxmp; + recalcLocalStats(); + List> statup = new ArrayList<>(10); + statup.add(new Pair<>(MapleStat.AVAILABLEAP, remainingAp)); + statup.add(new Pair<>(MapleStat.HP, localmaxhp)); + statup.add(new Pair<>(MapleStat.MP, localmaxmp)); + statup.add(new Pair<>(MapleStat.EXP, exp.get())); + statup.add(new Pair<>(MapleStat.LEVEL, level)); + statup.add(new Pair<>(MapleStat.MAXHP, maxhp)); + statup.add(new Pair<>(MapleStat.MAXMP, maxmp)); + statup.add(new Pair<>(MapleStat.STR, str)); + statup.add(new Pair<>(MapleStat.DEX, dex)); + if (job.getId() % 1000 > 0) { + remainingSp[GameConstants.getSkillBook(job.getId())] += 3; + statup.add(new Pair<>(MapleStat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())])); + } + client.announce(MaplePacketCreator.updatePlayerStats(statup, this)); + getMap().broadcastMessage(this, MaplePacketCreator.showForeignEffect(getId(), 0), false); + recalcLocalStats(); + setMPC(new MaplePartyCharacter(this)); + silentPartyUpdate(); + if (this.guildid > 0) { + getGuild().broadcast(MaplePacketCreator.levelUpMessage(2, level, name), this.getId()); + } + if (ServerConstants.PERFECT_PITCH && level >= 30) { + //milestones? + if (MapleInventoryManipulator.checkSpace(client, 4310000, (short) 1, "")) { + MapleInventoryManipulator.addById(client, 4310000, (short) 1); + } + } + if (level == 200 && !isGM()) { + final String names = (getMedalText() + name); + client.getWorldServer().broadcastPacket(MaplePacketCreator.serverNotice(6, String.format(LEVEL_200, names, names))); + } + + if(level % 20 == 0 && ServerConstants.USE_ADD_SLOTS_BY_LEVEL == true) { + if (!isGM()) { + for (byte i = 1; i < 5; i++) { + gainSlots(i, 4, true); + } + } + + this.yellowMessage("We see you reached level " + level + ". Congratulations! As a token of your success, your inventory has been expanded a little bit."); + } + if (level % 20 == 0 && ServerConstants.USE_ADD_RATES_BY_LEVEL == true) { //For the drop + meso rate + revertRates(true); + addRates(); + this.yellowMessage("You managed to get level " + level + "! Getting experience and items seems a little easier now, huh?"); + } + + levelUpMessages(); + guildUpdate(); + } + + public void gainAp(int amount) { + List> statup = new ArrayList<>(1); + remainingAp += amount; + statup.add(new Pair<>(MapleStat.AVAILABLEAP, remainingAp)); + client.announce(MaplePacketCreator.updatePlayerStats(statup, this)); + } + + public void gainSp(int amount) { + List> statup = new ArrayList<>(1); + remainingSp[GameConstants.getSkillBook(job.getId())] += amount; + statup.add(new Pair<>(MapleStat.AVAILABLESP, remainingSp[GameConstants.getSkillBook(job.getId())])); + client.announce(MaplePacketCreator.updatePlayerStats(statup, this)); + } + + private void levelUpMessages() { + if (level % 5 != 0) { //Performance FTW? + return; + } + if (level == 5) { + yellowMessage("Aww, you're level 5, how cute!"); + } else if (level == 10) { + yellowMessage("Henesys Party Quest is now open to you! Head over to Henesys, find some friends, and try it out!"); + } else if (level == 15) { + yellowMessage("Half-way to your 2nd job advancement, nice work!"); + } else if (level == 20) { + yellowMessage("You can almost Kerning Party Quest!"); + } else if (level == 25) { + yellowMessage("You seem to be improving, but you are still not ready to move on to the next step."); + } else if (level == 30) { + yellowMessage("You have finally reached level 30! Try job advancing, after that try the Mushroom Kingdom!"); + } else if (level == 35) { + yellowMessage("Hey did you hear about this mall that opened in Kerning? Try visiting the Kerning Mall."); + } else if (level == 40) { + yellowMessage("Do @rates to see what all your rates are!"); + } else if (level == 45) { + yellowMessage("I heard that a rock and roll artist died during the grand opening of the Kerning Mall. People are naming him the Spirit of Rock."); + } else if (level == 50) { + yellowMessage("You seem to be growing very fast, would you like to test your new found strength with the mighty Zakum?"); + } else if (level == 55) { + yellowMessage("You can now try out the Ludibrium Maze Party Quest!"); + } else if (level == 60) { + yellowMessage("Feels good to be near the end of 2nd job, doesn't it?"); + } else if (level == 65) { + yellowMessage("You're only 5 more levels away from 3rd job, not bad!"); + } else if (level == 70) { + yellowMessage("I see many people wearing a teddy bear helmet. I should ask someone where they got it from."); + } else if (level == 75) { + yellowMessage("You have reached level 3 quarters!"); + } else if (level == 80) { + yellowMessage("You think you are powerful enough? Try facing horntail!"); + } else if (level == 85) { + yellowMessage("Did you know? The majority of people who hit level 85 in Solaxia don't live to be 85 years old?"); + } else if (level == 90) { + yellowMessage("Hey do you like the amusement park? I heard Spooky Wood is the best theme park around. I heard they sell cute teddy-bears."); + } else if (level == 95) { + yellowMessage("100% of people who hit level 95 in Solaxia don't live to be 95 years old."); + } else if (level == 100) { + yellowMessage("Mid-journey so far... You just reached level 100! Now THAT's such a feat, however to manage the 200 you will need even more passion and determination than ever! Good hunting!"); + } else if (level == 105) { + yellowMessage("Have you ever been to leafre? I heard they have dragons!"); + } else if (level == 110) { + yellowMessage("I see many people wearing a teddy bear helmet. I should ask someone where they got it from."); + } else if (level == 115) { + yellowMessage("I bet all you can think of is level 120, huh? Level 115 gets no love."); + } else if (level == 120) { + yellowMessage("Are you ready to learn from the masters? Head over to your job instructor!"); + } else if (level == 125) { + yellowMessage("The struggle for mastery books has begun, huh?"); + } else if (level == 130) { + yellowMessage("You should try Temple of Time. It should be pretty decent EXP."); + } else if (level == 135) { + yellowMessage("I hope you're still not struggling for mastery books!"); + } else if (level == 140) { + yellowMessage("You're well into 4th job at this point, great work!"); + } else if (level == 145) { + yellowMessage("Level 145 is serious business!"); + } else if (level == 150) { + yellowMessage("You have becomed quite strong, but the journey is not yet over."); + } else if (level == 155) { + yellowMessage("At level 155, Zakum should be a joke to you. Nice job!"); + } else if (level == 160) { + yellowMessage("Level 160 is pretty impressive. Try taking a picture and putting it on Instagram."); + } else if (level == 165) { + yellowMessage("At this level, you should start looking into doing some boss runs."); + } else if (level == 170) { + yellowMessage("Level 170, huh? You have the heart of a champion."); + } else if (level == 175) { + yellowMessage("You came a long way from level 1. Amazing job so far."); + } else if (level == 180) { + yellowMessage("Have you ever tried taking a boss on by yourself? It is quite difficult."); + } else if (level == 185) { + yellowMessage("Legend has it that you're a legend."); + } else if (level == 190) { + yellowMessage("You only have 10 more levels to go until you hit 200!"); + } else if (level == 195) { + yellowMessage("Nothing is stopping you at this point, level 195!"); + } else if (level == 200) { + yellowMessage("Very nicely done! You have reached the so-long dreamed LEVEL 200!!! You are truly a hero among men, cheers upon you!"); + } + } + + public void addRates() { + this.expRate *= EXP_RATE_GAIN[this.level / 20]; + this.mesoRate *= MESO_RATE_GAIN[this.level / 20]; + this.dropRate *= DROP_RATE_GAIN[this.level / 20]; + } + + public void revertRates(boolean lvlup) { + if(lvlup == true) { + this.expRate /= EXP_RATE_GAIN[(this.level - 1) / 20]; + this.mesoRate /= MESO_RATE_GAIN[(this.level - 1) / 20]; + this.dropRate /= DROP_RATE_GAIN[(this.level - 1) / 20]; + } + else { + World worldz = Server.getInstance().getWorld(world); + + this.expRate /= worldz.getExpRate(); + this.mesoRate /= worldz.getMesoRate(); + this.dropRate /= worldz.getDropRate(); + } + } + + public void setRates() { + World worldz = Server.getInstance().getWorld(world); + + this.expRate *= worldz.getExpRate(); + this.mesoRate *= worldz.getMesoRate(); + this.dropRate *= worldz.getDropRate(); + } + + public static MapleCharacter loadCharFromDB(int charid, MapleClient client, boolean channelserver) throws SQLException { + try { + MapleCharacter ret = new MapleCharacter(); + ret.client = client; + ret.id = charid; + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT * FROM characters WHERE id = ?"); + ps.setInt(1, charid); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + rs.close(); + ps.close(); + throw new RuntimeException("Loading char failed (not found)"); + } + ret.name = rs.getString("name"); + ret.level = rs.getInt("level"); + ret.fame = rs.getInt("fame"); + ret.quest_fame = rs.getInt("fquest"); + ret.str = rs.getInt("str"); + ret.dex = rs.getInt("dex"); + ret.int_ = rs.getInt("int"); + ret.luk = rs.getInt("luk"); + ret.exp.set(rs.getInt("exp")); + ret.gachaexp.set(rs.getInt("gachaexp")); + ret.hp = rs.getInt("hp"); + ret.maxhp = rs.getInt("maxhp"); + ret.mp = rs.getInt("mp"); + ret.maxmp = rs.getInt("maxmp"); + ret.hpMpApUsed = rs.getInt("hpMpUsed"); + ret.hasMerchant = rs.getInt("HasMerchant") == 1; + String[] skillPoints = rs.getString("sp").split(","); + for (int i = 0; i < ret.remainingSp.length; i++) { + ret.remainingSp[i] = Integer.parseInt(skillPoints[i]); + } + ret.remainingAp = rs.getInt("ap"); + ret.meso.set(rs.getInt("meso")); + ret.merchantmeso = rs.getInt("MerchantMesos"); + ret.gmLevel = rs.getInt("gm"); + ret.skinColor = MapleSkinColor.getById(rs.getInt("skincolor")); + ret.gender = rs.getInt("gender"); + ret.job = MapleJob.getById(rs.getInt("job")); + ret.finishedDojoTutorial = rs.getInt("finishedDojoTutorial") == 1; + ret.vanquisherKills = rs.getInt("vanquisherKills"); + ret.omokwins = rs.getInt("omokwins"); + ret.omoklosses = rs.getInt("omoklosses"); + ret.omokties = rs.getInt("omokties"); + ret.matchcardwins = rs.getInt("matchcardwins"); + ret.matchcardlosses = rs.getInt("matchcardlosses"); + ret.matchcardties = rs.getInt("matchcardties"); + ret.hair = rs.getInt("hair"); + ret.face = rs.getInt("face"); + ret.accountid = rs.getInt("accountid"); + ret.mapid = rs.getInt("map"); + ret.initialSpawnPoint = rs.getInt("spawnpoint"); + ret.world = rs.getByte("world"); + ret.rank = rs.getInt("rank"); + ret.rankMove = rs.getInt("rankMove"); + ret.jobRank = rs.getInt("jobRank"); + ret.jobRankMove = rs.getInt("jobRankMove"); + int mountexp = rs.getInt("mountexp"); + int mountlevel = rs.getInt("mountlevel"); + int mounttiredness = rs.getInt("mounttiredness"); + ret.guildid = rs.getInt("guildid"); + ret.guildrank = rs.getInt("guildrank"); + ret.allianceRank = rs.getInt("allianceRank"); + ret.familyId = rs.getInt("familyId"); + ret.bookCover = rs.getInt("monsterbookcover"); + ret.monsterbook = new MonsterBook(); + ret.monsterbook.loadCards(charid); + ret.vanquisherStage = rs.getInt("vanquisherStage"); + ret.dojoPoints = rs.getInt("dojoPoints"); + ret.dojoStage = rs.getInt("lastDojoStage"); + ret.dataString = rs.getString("dataString"); + if (ret.guildid > 0) { + ret.mgc = new MapleGuildCharacter(ret); + } + int buddyCapacity = rs.getInt("buddyCapacity"); + ret.buddylist = new BuddyList(buddyCapacity); + ret.getInventory(MapleInventoryType.EQUIP).setSlotLimit(rs.getByte("equipslots")); + ret.getInventory(MapleInventoryType.USE).setSlotLimit(rs.getByte("useslots")); + ret.getInventory(MapleInventoryType.SETUP).setSlotLimit(rs.getByte("setupslots")); + ret.getInventory(MapleInventoryType.ETC).setSlotLimit(rs.getByte("etcslots")); + for (Pair item : ItemFactory.INVENTORY.loadItems(ret.id, !channelserver)) { + ret.getInventory(item.getRight()).addFromDB(item.getLeft()); + Item itemz = item.getLeft(); + if (itemz.getPetId() > -1) { + MaplePet pet = itemz.getPet(); + if (pet != null && pet.isSummoned()) { + ret.addPet(pet); + } + continue; + } + if (item.getRight().equals(MapleInventoryType.EQUIP) || item.getRight().equals(MapleInventoryType.EQUIPPED)) { + Equip equip = (Equip) item.getLeft(); + if (equip.getRingId() > -1) { + MapleRing ring = MapleRing.loadFromDb(equip.getRingId()); + if (item.getRight().equals(MapleInventoryType.EQUIPPED)) { + ring.equip(); + } + if (ring.getItemId() > 1112012) { + ret.addFriendshipRing(ring); + } else { + ret.addCrushRing(ring); + } + } + } + } + if (channelserver) { + MapleMapFactory mapFactory = client.getChannelServer().getMapFactory(); + ret.map = mapFactory.getMap(ret.mapid); + + if (ret.map == null) { + ret.map = mapFactory.getMap(100000000); + } + MaplePortal portal = ret.map.getPortal(ret.initialSpawnPoint); + if (portal == null) { + portal = ret.map.getPortal(0); + ret.initialSpawnPoint = 0; + } + ret.setPosition(portal.getPosition()); + int partyid = rs.getInt("party"); + MapleParty party = Server.getInstance().getWorld(ret.world).getParty(partyid); + if (party != null) { + ret.mpc = party.getMemberById(ret.id); + if (ret.mpc != null) { + ret.party = party; + } + } + int messengerid = rs.getInt("messengerid"); + int position = rs.getInt("messengerposition"); + if (messengerid > 0 && position < 4 && position > -1) { + MapleMessenger messenger = Server.getInstance().getWorld(ret.world).getMessenger(messengerid); + if (messenger != null) { + ret.messenger = messenger; + ret.messengerposition = position; + } + } + ret.loggedIn = true; + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT mapid,vip FROM trocklocations WHERE characterid = ? LIMIT 15"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + byte v = 0; + byte r = 0; + while (rs.next()) { + if (rs.getInt("vip") == 1) { + ret.viptrockmaps.add(rs.getInt("mapid")); + v++; + } else { + ret.trockmaps.add(rs.getInt("mapid")); + r++; + } + } + while (v < 10) { + ret.viptrockmaps.add(999999999); + v++; + } + while (r < 5) { + ret.trockmaps.add(999999999); + r++; + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT name FROM accounts WHERE id = ?", Statement.RETURN_GENERATED_KEYS); + ps.setInt(1, ret.accountid); + rs = ps.executeQuery(); + if (rs.next()) { + ret.getClient().setAccountName(rs.getString("name")); + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT `area`,`info` FROM area_info WHERE charid = ?"); + ps.setInt(1, ret.id); + rs = ps.executeQuery(); + while (rs.next()) { + ret.area_info.put(rs.getShort("area"), rs.getString("info")); + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT `name`,`info` FROM eventstats WHERE characterid = ?"); + ps.setInt(1, ret.id); + rs = ps.executeQuery(); + while (rs.next()) { + String name = rs.getString("name"); + if (rs.getString("name").equals("rescueGaga")) { + ret.events.put(name, new RescueGaga(rs.getInt("info"))); + } + //ret.events = new MapleEvents(new RescueGaga(rs.getInt("rescuegaga")), new ArtifactHunt(rs.getInt("artifacthunt"))); + } + rs.close(); + ps.close(); + ret.cashshop = new CashShop(ret.accountid, ret.id, ret.getJobType()); + ret.autoban = new AutobanManager(ret); + ret.marriageRing = null; //for now + ps = con.prepareStatement("SELECT name, level FROM characters WHERE accountid = ? AND id != ? ORDER BY level DESC limit 1"); + ps.setInt(1, ret.accountid); + ps.setInt(2, charid); + rs = ps.executeQuery(); + if (rs.next()) { + ret.linkedName = rs.getString("name"); + ret.linkedLevel = rs.getInt("level"); + } + rs.close(); + ps.close(); + if (channelserver) { + ps = con.prepareStatement("SELECT * FROM queststatus WHERE characterid = ?"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + PreparedStatement psf; + try (PreparedStatement pse = con.prepareStatement("SELECT * FROM questprogress WHERE queststatusid = ?")) { + psf = con.prepareStatement("SELECT mapid FROM medalmaps WHERE queststatusid = ?"); + while (rs.next()) { + MapleQuest q = MapleQuest.getInstance(rs.getShort("quest")); + MapleQuestStatus status = new MapleQuestStatus(q, MapleQuestStatus.Status.getById(rs.getInt("status"))); + long cTime = rs.getLong("time"); + if (cTime > -1) { + status.setCompletionTime(cTime * 1000); + } + status.setForfeited(rs.getInt("forfeited")); + ret.quests.put(q.getId(), status); + pse.setInt(1, rs.getInt("queststatusid")); + try (ResultSet rsProgress = pse.executeQuery()) { + while (rsProgress.next()) { + status.setProgress(rsProgress.getInt("progressid"), rsProgress.getString("progress")); + } + } + psf.setInt(1, rs.getInt("queststatusid")); + try (ResultSet medalmaps = psf.executeQuery()) { + while (medalmaps.next()) { + status.addMedalMap(medalmaps.getInt("mapid")); + } + } + } + rs.close(); + ps.close(); + } + psf.close(); + ps = con.prepareStatement("SELECT skillid,skilllevel,masterlevel,expiration FROM skills WHERE characterid = ?"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + while (rs.next()) { + ret.skills.put(SkillFactory.getSkill(rs.getInt("skillid")), new SkillEntry(rs.getByte("skilllevel"), rs.getInt("masterlevel"), rs.getLong("expiration"))); + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT SkillID,StartTime,length FROM cooldowns WHERE charid = ?"); + ps.setInt(1, ret.getId()); + rs = ps.executeQuery(); + while (rs.next()) { + final int skillid = rs.getInt("SkillID"); + final long length = rs.getLong("length"), startTime = rs.getLong("StartTime"); + if (skillid != 5221999 && (length + startTime < System.currentTimeMillis())) { + continue; + } + ret.giveCoolDowns(skillid, startTime, length); + } + rs.close(); + ps.close(); + ps = con.prepareStatement("DELETE FROM cooldowns WHERE charid = ?"); + ps.setInt(1, ret.getId()); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("SELECT * FROM skillmacros WHERE characterid = ?"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + while (rs.next()) { + int position = rs.getInt("position"); + SkillMacro macro = new SkillMacro(rs.getInt("skill1"), rs.getInt("skill2"), rs.getInt("skill3"), rs.getString("name"), rs.getInt("shout"), position); + ret.skillMacros[position] = macro; + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT `key`,`type`,`action` FROM keymap WHERE characterid = ?"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + while (rs.next()) { + int key = rs.getInt("key"); + int type = rs.getInt("type"); + int action = rs.getInt("action"); + ret.keymap.put(Integer.valueOf(key), new MapleKeyBinding(type, action)); + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT `locationtype`,`map`,`portal` FROM savedlocations WHERE characterid = ?"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + while (rs.next()) { + ret.savedLocations[SavedLocationType.valueOf(rs.getString("locationtype")).ordinal()] = new SavedLocation(rs.getInt("map"), rs.getInt("portal")); + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT `characterid_to`,`when` FROM famelog WHERE characterid = ? AND DATEDIFF(NOW(),`when`) < 30"); + ps.setInt(1, charid); + rs = ps.executeQuery(); + ret.lastfametime = 0; + ret.lastmonthfameids = new ArrayList<>(31); + while (rs.next()) { + ret.lastfametime = Math.max(ret.lastfametime, rs.getTimestamp("when").getTime()); + ret.lastmonthfameids.add(Integer.valueOf(rs.getInt("characterid_to"))); + } + rs.close(); + ps.close(); + ret.buddylist.loadFromDb(charid); + ret.storage = MapleStorage.loadOrCreateFromDB(ret.accountid, ret.world); + ret.recalcLocalStats(); + //ret.resetBattleshipHp(); + ret.silentEnforceMaxHpMp(); + } + int mountid = ret.getJobType() * 10000000 + 1004; + if (ret.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18) != null) { + ret.maplemount = new MapleMount(ret, ret.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18).getItemId(), mountid); + } else { + ret.maplemount = new MapleMount(ret, 0, mountid); + } + ret.maplemount.setExp(mountexp); + ret.maplemount.setLevel(mountlevel); + ret.maplemount.setTiredness(mounttiredness); + ret.maplemount.setActive(false); + + if(ServerConstants.USE_ADD_RATES_BY_LEVEL == true) { + ret.addRates(); + } + ret.setRates(); + + return ret; + } catch (SQLException | RuntimeException e) { + e.printStackTrace(); + } + return null; + } + + public static String makeMapleReadable(String in) { + String i = in.replace('I', 'i'); + i = i.replace('l', 'L'); + i = i.replace("rn", "Rn"); + i = i.replace("vv", "Vv"); + i = i.replace("VV", "Vv"); + return i; + + } + + private static class MapleBuffStatValueHolder { + + public MapleStatEffect effect; + public long startTime; + public int value; + public ScheduledFuture schedule; + + public MapleBuffStatValueHolder(MapleStatEffect effect, long startTime, ScheduledFuture schedule, int value) { + super(); + this.effect = effect; + this.startTime = startTime; + this.schedule = schedule; + this.value = value; + } + } + + public static class MapleCoolDownValueHolder { + + public int skillId; + public long startTime, length; + public ScheduledFuture timer; + + public MapleCoolDownValueHolder(int skillId, long startTime, long length, ScheduledFuture timer) { + super(); + this.skillId = skillId; + this.startTime = startTime; + this.length = length; + this.timer = timer; + } + } + + public void message(String m) { + dropMessage(5, m); + } + + public void yellowMessage(String m) { + announce(MaplePacketCreator.sendYellowTip(m)); + } + + public void mobKilled(int id) { + // It seems nexon uses monsters that don't exist in the WZ (except string) to merge multiple mobs together for these 3 monsters. + // We also want to run mobKilled for both since there are some quest that don't use the updated ID... + if (id == 1110100 || id == 1110130) { + mobKilled(9101000); + } else if (id == 2230101 || id == 2230131) { + mobKilled(9101001); + } else if (id == 1140100 || id == 1140130) { + mobKilled(9101002); + } + int lastQuestProcessed = 0; + try { + for (MapleQuestStatus q : quests.values()) { + lastQuestProcessed = q.getQuest().getId(); + if (q.getStatus() == MapleQuestStatus.Status.COMPLETED || q.getQuest().canComplete(this, null)) { + continue; + } + String progress = q.getProgress(id); + if (!progress.isEmpty() && Integer.parseInt(progress) >= q.getQuest().getMobAmountNeeded(id)) { + continue; + } + if (q.progress(id)) { + client.announce(MaplePacketCreator.updateQuest(q, false)); + } + } + } catch (Exception e) { + FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, e, "MapleCharacter.mobKilled. CID: " + this.id + " last Quest Processed: " + lastQuestProcessed); + } + } + + public void mount(int id, int skillid) { + maplemount = new MapleMount(this, id, skillid); + } + + public void playerNPC(MapleCharacter v, int scriptId) { + int npcId; + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT id FROM playernpcs WHERE ScriptId = ?"); + ps.setInt(1, scriptId); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + rs.close(); + ps = con.prepareStatement("INSERT INTO playernpcs (name, hair, face, skin, x, cy, map, ScriptId, Foothold, rx0, rx1) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS); + ps.setString(1, v.getName()); + ps.setInt(2, v.getHair()); + ps.setInt(3, v.getFace()); + ps.setInt(4, v.getSkinColor().getId()); + ps.setInt(5, getPosition().x); + ps.setInt(6, getPosition().y); + ps.setInt(7, getMapId()); + ps.setInt(8, scriptId); + ps.setInt(9, getMap().getFootholds().findBelow(getPosition()).getId()); + ps.setInt(10, getPosition().x + 50); + ps.setInt(11, getPosition().x - 50); + ps.executeUpdate(); + rs = ps.getGeneratedKeys(); + rs.next(); + npcId = rs.getInt(1); + ps.close(); + ps = con.prepareStatement("INSERT INTO playernpcs_equip (NpcId, equipid, equippos) VALUES (?, ?, ?)"); + ps.setInt(1, npcId); + for (Item equip : getInventory(MapleInventoryType.EQUIPPED)) { + int position = Math.abs(equip.getPosition()); + if ((position < 12 && position > 0) || (position > 100 && position < 112)) { + ps.setInt(2, equip.getItemId()); + ps.setInt(3, equip.getPosition()); + ps.addBatch(); + } + } + ps.executeBatch(); + ps.close(); + rs.close(); + ps = con.prepareStatement("SELECT * FROM playernpcs WHERE ScriptId = ?"); + ps.setInt(1, scriptId); + rs = ps.executeQuery(); + rs.next(); + PlayerNPCs pn = new PlayerNPCs(rs); + for (Channel channel : Server.getInstance().getChannelsFromWorld(world)) { + MapleMap m = channel.getMapFactory().getMap(getMapId()); + m.broadcastMessage(MaplePacketCreator.spawnPlayerNPC(pn)); + m.broadcastMessage(MaplePacketCreator.getPlayerNPC(pn)); + m.addMapObject(pn); + } + } + ps.close(); + rs.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private void playerDead() { + cancelAllBuffs(false); + dispelDebuffs(); + if (getEventInstance() != null) { + getEventInstance().playerKilled(this); + } + int[] charmID = {5130000, 4031283, 4140903}; + int possesed = 0; + int i; + for (i = 0; i < charmID.length; i++) { + int quantity = getItemQuantity(charmID[i], false); + if (possesed == 0 && quantity > 0) { + possesed = quantity; + break; + } + } + if (possesed > 0) { + message("You have used a safety charm, so your EXP points have not been decreased."); + MapleInventoryManipulator.removeById(client, MapleItemInformationProvider.getInstance().getInventoryType(charmID[i]), charmID[i], 1, true, false); + } else if (mapid > 925020000 && mapid < 925030000) { + this.dojoStage = 0; + } else if (mapid > 980000100 && mapid < 980000700) { + getMap().broadcastMessage(this, MaplePacketCreator.CPQDied(this)); + } else if (getJob() != MapleJob.BEGINNER) { //Hmm... + int XPdummy = ExpTable.getExpNeededForLevel(getLevel()); + if (getMap().isTown()) { + XPdummy /= 100; + } + if (XPdummy == ExpTable.getExpNeededForLevel(getLevel())) { + if (getLuk() <= 100 && getLuk() > 8) { + XPdummy *= (200 - getLuk()) / 2000; + } else if (getLuk() < 8) { + XPdummy /= 10; + } else { + XPdummy /= 20; + } + } + if (getExp() > XPdummy) { + gainExp(-XPdummy, false, false); + } else { + gainExp(-getExp(), false, false); + } + } + if (getBuffedValue(MapleBuffStat.MORPH) != null) { + cancelEffectFromBuffStat(MapleBuffStat.MORPH); + } + + if (getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) { + cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); + } + + if (getChair() == -1) { + setChair(0); + client.announce(MaplePacketCreator.cancelChair(-1)); + getMap().broadcastMessage(this, MaplePacketCreator.showChair(getId(), 0), false); + } + client.announce(MaplePacketCreator.enableActions()); + } + + private void prepareDragonBlood(final MapleStatEffect bloodEffect) { + if (dragonBloodSchedule != null) { + dragonBloodSchedule.cancel(false); + } + dragonBloodSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + addHP(-bloodEffect.getX()); + client.announce(MaplePacketCreator.showOwnBuffEffect(bloodEffect.getSourceId(), 5)); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showBuffeffect(getId(), bloodEffect.getSourceId(), 5), false); + checkBerserk(); + } + }, 4000, 4000); + } + + private void recalcLocalStats() { + int oldmaxhp = localmaxhp; + localmaxhp = getMaxHp(); + localmaxmp = getMaxMp(); + localdex = getDex(); + localint_ = getInt(); + localstr = getStr(); + localluk = getLuk(); + int speed = 100, jump = 100; + magic = localint_; + watk = 0; + + for (Item item : getInventory(MapleInventoryType.EQUIPPED)) { + Equip equip = (Equip) item; + localmaxhp += equip.getHp(); + localmaxmp += equip.getMp(); + localdex += equip.getDex(); + localint_ += equip.getInt(); + localstr += equip.getStr(); + localluk += equip.getLuk(); + magic += equip.getMatk() + equip.getInt(); + watk += equip.getWatk(); + speed += equip.getSpeed(); + jump += equip.getJump(); + } + magic = Math.min(magic, 2000); + Integer hbhp = getBuffedValue(MapleBuffStat.HYPERBODYHP); + if (hbhp != null) { + localmaxhp += (hbhp.doubleValue() / 100) * localmaxhp; + } + Integer hbmp = getBuffedValue(MapleBuffStat.HYPERBODYMP); + if (hbmp != null) { + localmaxmp += (hbmp.doubleValue() / 100) * localmaxmp; + } + localmaxhp = Math.min(30000, localmaxhp); + localmaxmp = Math.min(30000, localmaxmp); + Integer watkbuff = getBuffedValue(MapleBuffStat.WATK); + if (watkbuff != null) { + watk += watkbuff.intValue(); + } + MapleStatEffect combo = getBuffEffect(MapleBuffStat.ARAN_COMBO); + if (combo != null) { + watk += combo.getX(); + } + + if (energybar == 15000) { + Skill energycharge = isCygnus() ? SkillFactory.getSkill(ThunderBreaker.ENERGY_CHARGE) : SkillFactory.getSkill(Marauder.ENERGY_CHARGE); + MapleStatEffect ceffect = energycharge.getEffect(getSkillLevel(energycharge)); + watk += ceffect.getWatk(); + } + + Integer mwarr = getBuffedValue(MapleBuffStat.MAPLE_WARRIOR); + if (mwarr != null) { + localstr += getStr() * mwarr / 100; + localdex += getDex() * mwarr / 100; + localint_ += getInt() * mwarr / 100; + localluk += getLuk() * mwarr / 100; + } + if (job.isA(MapleJob.BOWMAN)) { + Skill expert = null; + if (job.isA(MapleJob.MARKSMAN)) { + expert = SkillFactory.getSkill(3220004); + } else if (job.isA(MapleJob.BOWMASTER)) { + expert = SkillFactory.getSkill(3120005); + } + if (expert != null) { + int boostLevel = getSkillLevel(expert); + if (boostLevel > 0) { + watk += expert.getEffect(boostLevel).getX(); + } + } + } + Integer matkbuff = getBuffedValue(MapleBuffStat.MATK); + if (matkbuff != null) { + magic += matkbuff.intValue(); + } + Integer speedbuff = getBuffedValue(MapleBuffStat.SPEED); + if (speedbuff != null) { + speed += speedbuff.intValue(); + } + Integer jumpbuff = getBuffedValue(MapleBuffStat.JUMP); + if (jumpbuff != null) { + jump += jumpbuff.intValue(); + } + + Integer blessing = getSkillLevel(10000000 * getJobType() + 12); + if (blessing > 0) { + watk += blessing; + magic += blessing * 2; + } + + if (job.isA(MapleJob.THIEF) || job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.PIRATE) || job.isA(MapleJob.NIGHTWALKER1) || job.isA(MapleJob.WINDARCHER1)) { + Item weapon_item = getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11); + if (weapon_item != null) { + MapleWeaponType weapon = MapleItemInformationProvider.getInstance().getWeaponType(weapon_item.getItemId()); + boolean bow = weapon == MapleWeaponType.BOW; + boolean crossbow = weapon == MapleWeaponType.CROSSBOW; + boolean claw = weapon == MapleWeaponType.CLAW; + boolean gun = weapon == MapleWeaponType.GUN; + if (bow || crossbow || claw || gun) { + // Also calc stars into this. + MapleInventory inv = getInventory(MapleInventoryType.USE); + for (short i = 1; i <= inv.getSlotLimit(); i++) { + Item item = inv.getItem(i); + if (item != null) { + if ((claw && ItemConstants.isThrowingStar(item.getItemId())) || (gun && ItemConstants.isBullet(item.getItemId())) || (bow && ItemConstants.isArrowForBow(item.getItemId())) || (crossbow && ItemConstants.isArrowForCrossBow(item.getItemId()))) { + if (item.getQuantity() > 0) { + // Finally there! + watk += MapleItemInformationProvider.getInstance().getWatkForProjectile(item.getItemId()); + break; + } + } + } + } + } + } + // Add throwing stars to dmg. + } + + if (oldmaxhp != 0 && oldmaxhp != localmaxhp) { + updatePartyMemberHP(); + } + } + + public void receivePartyMemberHP() { + if (party != null) { + int channel = client.getChannel(); + for (MaplePartyCharacter partychar : party.getMembers()) { + if (partychar.getMapId() == getMapId() && partychar.getChannel() == channel) { + MapleCharacter other = Server.getInstance().getWorld(world).getChannel(channel).getPlayerStorage().getCharacterByName(partychar.getName()); + if (other != null) { + client.announce(MaplePacketCreator.updatePartyMemberHP(other.getId(), other.getHp(), other.getCurrentMaxHp())); + } + } + } + } + } + + public void registerEffect(MapleStatEffect effect, long starttime, ScheduledFuture schedule) { + if (effect.isDragonBlood()) { + prepareDragonBlood(effect); + } else if (effect.isBerserk()) { + checkBerserk(); + } else if (effect.isBeholder()) { + final int beholder = DarkKnight.BEHOLDER; + if (beholderHealingSchedule != null) { + beholderHealingSchedule.cancel(false); + } + if (beholderBuffSchedule != null) { + beholderBuffSchedule.cancel(false); + } + Skill bHealing = SkillFactory.getSkill(DarkKnight.AURA_OF_BEHOLDER); + int bHealingLvl = getSkillLevel(bHealing); + if (bHealingLvl > 0) { + final MapleStatEffect healEffect = bHealing.getEffect(bHealingLvl); + int healInterval = healEffect.getX() * 1000; + beholderHealingSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + addHP(healEffect.getHp()); + client.announce(MaplePacketCreator.showOwnBuffEffect(beholder, 2)); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.summonSkill(getId(), beholder, 5), true); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showOwnBuffEffect(beholder, 2), false); + } + }, healInterval, healInterval); + } + Skill bBuff = SkillFactory.getSkill(DarkKnight.HEX_OF_BEHOLDER); + if (getSkillLevel(bBuff) > 0) { + final MapleStatEffect buffEffect = bBuff.getEffect(getSkillLevel(bBuff)); + int buffInterval = buffEffect.getX() * 1000; + beholderBuffSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + buffEffect.applyTo(MapleCharacter.this); + client.announce(MaplePacketCreator.showOwnBuffEffect(beholder, 2)); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.summonSkill(getId(), beholder, (int) (Math.random() * 3) + 6), true); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showBuffeffect(getId(), beholder, 2), false); + } + }, buffInterval, buffInterval); + } + } else if (effect.isRecovery()) { + final byte heal = (byte) effect.getX(); + recoveryTask = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + addHP(heal); + client.announce(MaplePacketCreator.showOwnRecovery(heal)); + getMap().broadcastMessage(MapleCharacter.this, MaplePacketCreator.showRecovery(id, heal), false); + } + }, 5000, 5000); + } + for (Pair statup : effect.getStatups()) { + effects.put(statup.getLeft(), new MapleBuffStatValueHolder(effect, starttime, schedule, statup.getRight().intValue())); + } + recalcLocalStats(); + } + + public void removeAllCooldownsExcept(int id, boolean packet) { + for (MapleCoolDownValueHolder mcvh : coolDowns.values()) { + if (mcvh.skillId != id) { + coolDowns.remove(mcvh.skillId); + if (packet) { + client.announce(MaplePacketCreator.skillCooldown(mcvh.skillId, 0)); + } + } + } + } + + public static void removeAriantRoom(int room) { + ariantroomleader[room] = ""; + ariantroomslot[room] = 0; + } + + public void removeCooldown(int skillId) { + if (this.coolDowns.containsKey(skillId)) { + this.coolDowns.remove(skillId); + } + } + + public void removePet(MaplePet pet, boolean shift_left) { + int slot = -1; + for (int i = 0; i < 3; i++) { + if (pets[i] != null) { + if (pets[i].getUniqueId() == pet.getUniqueId()) { + pets[i] = null; + slot = i; + break; + } + } + } + if (shift_left) { + if (slot > -1) { + for (int i = slot; i < 3; i++) { + if (i != 2) { + pets[i] = pets[i + 1]; + } else { + pets[i] = null; + } + } + } + } + } + + public void removeVisibleMapObject(MapleMapObject mo) { + visibleMapObjects.remove(mo); + } + + public void resetStats() { + List> statup = new ArrayList<>(5); + int tap = 0, tsp = 1; + int tstr = 4, tdex = 4, tint = 4, tluk = 4; + int levelap = (isCygnus() ? 6 : 5); + switch (job.getId()) { + case 100: + case 1100: + case 2100://? + tstr = 35; + tap = ((getLevel() - 10) * levelap) + 14; + tsp += ((getLevel() - 10) * 3); + break; + case 200: + case 1200: + tint = 20; + tap = ((getLevel() - 8) * levelap) + 29; + tsp += ((getLevel() - 8) * 3); + break; + case 300: + case 1300: + case 400: + case 1400: + tdex = 25; + tap = ((getLevel() - 10) * levelap) + 24; + tsp += ((getLevel() - 10) * 3); + break; + case 500: + case 1500: + tdex = 20; + tap = ((getLevel() - 10) * levelap) + 29; + tsp += ((getLevel() - 10) * 3); + break; + } + this.remainingAp = tap; + this.remainingSp[GameConstants.getSkillBook(job.getId())] = tsp; + this.dex = tdex; + this.int_ = tint; + this.str = tstr; + this.luk = tluk; + statup.add(new Pair<>(MapleStat.AVAILABLEAP, tap)); + statup.add(new Pair<>(MapleStat.AVAILABLESP, tsp)); + statup.add(new Pair<>(MapleStat.STR, tstr)); + statup.add(new Pair<>(MapleStat.DEX, tdex)); + statup.add(new Pair<>(MapleStat.INT, tint)); + statup.add(new Pair<>(MapleStat.LUK, tluk)); + announce(MaplePacketCreator.updatePlayerStats(statup, this)); + } + + public void resetBattleshipHp() { + this.battleshipHp = 4000 * getSkillLevel(SkillFactory.getSkill(Corsair.BATTLE_SHIP)) + ((getLevel() - 120) * 2000); + } + + public void resetEnteredScript() { + if (entered.containsKey(map.getId())) { + entered.remove(map.getId()); + } + } + + public void resetEnteredScript(int mapId) { + if (entered.containsKey(mapId)) { + entered.remove(mapId); + } + } + + public void resetEnteredScript(String script) { + for (int mapId : entered.keySet()) { + if (entered.get(mapId).equals(script)) { + entered.remove(mapId); + } + } + } + + public void resetMGC() { + this.mgc = null; + } + + public synchronized void saveCooldowns() { + if (getAllCooldowns().size() > 0) { + try { + Connection con = DatabaseConnection.getConnection(); + deleteWhereCharacterId(con, "DELETE FROM cooldowns WHERE charid = ?"); + try (PreparedStatement ps = con.prepareStatement("INSERT INTO cooldowns (charid, SkillID, StartTime, length) VALUES (?, ?, ?, ?)")) { + ps.setInt(1, getId()); + for (PlayerCoolDownValueHolder cooling : getAllCooldowns()) { + ps.setInt(2, cooling.skillId); + ps.setLong(3, cooling.startTime); + ps.setLong(4, cooling.length); + ps.addBatch(); + } + ps.executeBatch(); + } + } catch (SQLException se) { + } + } + } + + public void saveGuildStatus() { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET guildid = ?, guildrank = ?, allianceRank = ? WHERE id = ?")) { + ps.setInt(1, guildid); + ps.setInt(2, guildrank); + ps.setInt(3, allianceRank); + ps.setInt(4, id); + ps.execute(); + } + } catch (SQLException se) { + } + } + + public void saveLocation(String type) { + MaplePortal closest = map.findClosestPortal(getPosition()); + savedLocations[SavedLocationType.fromString(type).ordinal()] = new SavedLocation(getMapId(), closest != null ? closest.getId() : 0); + } + + public final boolean insertNewChar() { + final Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + + try { + con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); + con.setAutoCommit(false); + ps = con.prepareStatement("INSERT INTO characters (str, dex, luk, `int`, gm, skincolor, gender, job, hair, face, map, meso, spawnpoint, accountid, name, world) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", DatabaseConnection.RETURN_GENERATED_KEYS); + ps.setInt(1, 12); + ps.setInt(2, 5); + ps.setInt(3, 4); + ps.setInt(4, 4); + ps.setInt(5, gmLevel); + ps.setInt(6, skinColor.getId()); + ps.setInt(7, gender); + ps.setInt(8, getJob().getId()); + ps.setInt(9, hair); + ps.setInt(10, face); + ps.setInt(11, mapid); + ps.setInt(12, Math.abs(meso.get())); + ps.setInt(13, 0); + ps.setInt(14, accountid); + ps.setString(15, name); + ps.setInt(16, world); + + int updateRows = ps.executeUpdate(); + if (updateRows < 1) { + ps.close(); + FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to insert " + name); + return false; + } + ResultSet rs = ps.getGeneratedKeys(); + if (rs.next()) { + this.id = rs.getInt(1); + rs.close(); + ps.close(); + } else { + rs.close(); + ps.close(); + FilePrinter.printError(FilePrinter.INSERT_CHAR, "Inserting char failed " + name); + return false; + } + + ps = con.prepareStatement("INSERT INTO keymap (characterid, `key`, `type`, `action`) VALUES (?, ?, ?, ?)"); + ps.setInt(1, id); + for (int i = 0; i < DEFAULT_KEY.length; i++) { + ps.setInt(2, DEFAULT_KEY[i]); + ps.setInt(3, DEFAULT_TYPE[i]); + ps.setInt(4, DEFAULT_ACTION[i]); + ps.execute(); + } + ps.close(); + + final List> itemsWithType = new ArrayList<>(); + + for (MapleInventory iv : inventory) { + for (Item item : iv.list()) { + itemsWithType.add(new Pair<>(item, iv.getType())); + } + } + + ItemFactory.INVENTORY.saveItems(itemsWithType, id, con); + con.commit(); + return true; + } catch (Throwable t) { + FilePrinter.printError(FilePrinter.INSERT_CHAR, t, "Error creating " + name + " Level: " + level + " Job: " + job.getId()); + try { + con.rollback(); + } catch (SQLException se) { + FilePrinter.printError(FilePrinter.INSERT_CHAR, se, "Error trying to rollback " + name); + } + return false; + } finally { + try { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + con.setAutoCommit(true); + con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); + } catch (SQLException e) { + } + } + } + + // synchronize this call instead of trying to give access all at once (?) + public synchronized void saveToDB() { + Calendar c = Calendar.getInstance(); + FilePrinter.print(FilePrinter.SAVING_CHARACTER, "Attempting to save " + name + " at " + c.getTime().toString()); + Connection con = DatabaseConnection.getConnection(); + try { + con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); + con.setAutoCommit(false); + PreparedStatement ps; + ps = con.prepareStatement("UPDATE characters SET level = ?, fame = ?, str = ?, dex = ?, luk = ?, `int` = ?, exp = ?, gachaexp = ?, hp = ?, mp = ?, maxhp = ?, maxmp = ?, sp = ?, ap = ?, gm = ?, skincolor = ?, gender = ?, job = ?, hair = ?, face = ?, map = ?, meso = ?, hpMpUsed = ?, spawnpoint = ?, party = ?, buddyCapacity = ?, messengerid = ?, messengerposition = ?, mountlevel = ?, mountexp = ?, mounttiredness= ?, equipslots = ?, useslots = ?, setupslots = ?, etcslots = ?, monsterbookcover = ?, vanquisherStage = ?, dojoPoints = ?, lastDojoStage = ?, finishedDojoTutorial = ?, vanquisherKills = ?, matchcardwins = ?, matchcardlosses = ?, matchcardties = ?, omokwins = ?, omoklosses = ?, omokties = ?, dataString = ?, fquest = ? WHERE id = ?", Statement.RETURN_GENERATED_KEYS); + if (gmLevel < 1 && level > 199) { + ps.setInt(1, isCygnus() ? 120 : 200); + } else { + ps.setInt(1, level); + } + ps.setInt(2, fame); + ps.setInt(3, str); + ps.setInt(4, dex); + ps.setInt(5, luk); + ps.setInt(6, int_); + ps.setInt(7, Math.abs(exp.get())); + ps.setInt(8, Math.abs(gachaexp.get())); + ps.setInt(9, hp); + ps.setInt(10, mp); + ps.setInt(11, maxhp); + ps.setInt(12, maxmp); + StringBuilder sps = new StringBuilder(); + for (int i = 0; i < remainingSp.length; i++) { + sps.append(remainingSp[i]); + sps.append(","); + } + String sp = sps.toString(); + ps.setString(13, sp.substring(0, sp.length() - 1)); + ps.setInt(14, remainingAp); + ps.setInt(15, gmLevel); + ps.setInt(16, skinColor.getId()); + ps.setInt(17, gender); + ps.setInt(18, job.getId()); + ps.setInt(19, hair); + ps.setInt(20, face); + if (map == null || (cashshop != null && cashshop.isOpened())) { + ps.setInt(21, mapid); + } else { + if (map.getForcedReturnId() != 999999999) { + ps.setInt(21, map.getForcedReturnId()); + } else { + ps.setInt(21, getHp() < 1 ? map.getReturnMapId() : map.getId()); + } + } + ps.setInt(22, meso.get()); + ps.setInt(23, hpMpApUsed); + if (map == null || map.getId() == 610020000 || map.getId() == 610020001) { + ps.setInt(24, 0); + } else { + MaplePortal closest = map.findClosestSpawnpoint(getPosition()); + if (closest != null) { + ps.setInt(24, closest.getId()); + } else { + ps.setInt(24, 0); + } + } + if (party != null) { + ps.setInt(25, party.getId()); + } else { + ps.setInt(25, -1); + } + ps.setInt(26, buddylist.getCapacity()); + if (messenger != null) { + ps.setInt(27, messenger.getId()); + ps.setInt(28, messengerposition); + } else { + ps.setInt(27, 0); + ps.setInt(28, 4); + } + if (maplemount != null) { + ps.setInt(29, maplemount.getLevel()); + ps.setInt(30, maplemount.getExp()); + ps.setInt(31, maplemount.getTiredness()); + } else { + ps.setInt(29, 1); + ps.setInt(30, 0); + ps.setInt(31, 0); + } + for (int i = 1; i < 5; i++) { + ps.setInt(i + 31, getSlots(i)); + } + + monsterbook.saveCards(getId()); + + ps.setInt(36, bookCover); + ps.setInt(37, vanquisherStage); + ps.setInt(38, dojoPoints); + ps.setInt(39, dojoStage); + ps.setInt(40, finishedDojoTutorial ? 1 : 0); + ps.setInt(41, vanquisherKills); + ps.setInt(42, matchcardwins); + ps.setInt(43, matchcardlosses); + ps.setInt(44, matchcardties); + ps.setInt(45, omokwins); + ps.setInt(46, omoklosses); + ps.setInt(47, omokties); + ps.setString(48, dataString); + ps.setInt(49, quest_fame); + ps.setInt(50, id); + + int updateRows = ps.executeUpdate(); + if (updateRows < 1) { + throw new RuntimeException("Character not in database (" + id + ")"); + } + for (int i = 0; i < 3; i++) { + if (pets[i] != null) { + pets[i].saveToDb(); + } + } + deleteWhereCharacterId(con, "DELETE FROM keymap WHERE characterid = ?"); + ps = con.prepareStatement("INSERT INTO keymap (characterid, `key`, `type`, `action`) VALUES (?, ?, ?, ?)"); + ps.setInt(1, id); + for (Entry keybinding : keymap.entrySet()) { + ps.setInt(2, keybinding.getKey().intValue()); + ps.setInt(3, keybinding.getValue().getType()); + ps.setInt(4, keybinding.getValue().getAction()); + ps.addBatch(); + } + ps.executeBatch(); + deleteWhereCharacterId(con, "DELETE FROM skillmacros WHERE characterid = ?"); + ps = con.prepareStatement("INSERT INTO skillmacros (characterid, skill1, skill2, skill3, name, shout, position) VALUES (?, ?, ?, ?, ?, ?, ?)"); + ps.setInt(1, getId()); + for (int i = 0; i < 5; i++) { + SkillMacro macro = skillMacros[i]; + if (macro != null) { + ps.setInt(2, macro.getSkill1()); + ps.setInt(3, macro.getSkill2()); + ps.setInt(4, macro.getSkill3()); + ps.setString(5, macro.getName()); + ps.setInt(6, macro.getShout()); + ps.setInt(7, i); + ps.addBatch(); + } + } + ps.executeBatch(); + List> itemsWithType = new ArrayList<>(); + + for (MapleInventory iv : inventory) { + for (Item item : iv.list()) { + itemsWithType.add(new Pair<>(item, iv.getType())); + } + } + + ItemFactory.INVENTORY.saveItems(itemsWithType, id, con); + + deleteWhereCharacterId(con, "DELETE FROM skills WHERE characterid = ?"); + ps = con.prepareStatement("INSERT INTO skills (characterid, skillid, skilllevel, masterlevel, expiration) VALUES (?, ?, ?, ?, ?)"); + ps.setInt(1, id); + for (Entry skill : skills.entrySet()) { + ps.setInt(2, skill.getKey().getId()); + ps.setInt(3, skill.getValue().skillevel); + ps.setInt(4, skill.getValue().masterlevel); + ps.setLong(5, skill.getValue().expiration); + ps.addBatch(); + } + ps.executeBatch(); + deleteWhereCharacterId(con, "DELETE FROM savedlocations WHERE characterid = ?"); + ps = con.prepareStatement("INSERT INTO savedlocations (characterid, `locationtype`, `map`, `portal`) VALUES (?, ?, ?, ?)"); + ps.setInt(1, id); + for (SavedLocationType savedLocationType : SavedLocationType.values()) { + if (savedLocations[savedLocationType.ordinal()] != null) { + ps.setString(2, savedLocationType.name()); + ps.setInt(3, savedLocations[savedLocationType.ordinal()].getMapId()); + ps.setInt(4, savedLocations[savedLocationType.ordinal()].getPortal()); + ps.addBatch(); + } + } + ps.executeBatch(); + deleteWhereCharacterId(con, "DELETE FROM trocklocations WHERE characterid = ?"); + ps = con.prepareStatement("INSERT INTO trocklocations(characterid, mapid, vip) VALUES (?, ?, 0)"); + for (int i = 0; i < getTrockSize(); i++) { + if (trockmaps.get(i) != 999999999) { + ps.setInt(1, getId()); + ps.setInt(2, trockmaps.get(i)); + ps.addBatch(); + } + } + ps.executeBatch(); + ps = con.prepareStatement("INSERT INTO trocklocations(characterid, mapid, vip) VALUES (?, ?, 1)"); + for (int i = 0; i < getVipTrockSize(); i++) { + if (viptrockmaps.get(i) != 999999999) { + ps.setInt(1, getId()); + ps.setInt(2, viptrockmaps.get(i)); + ps.addBatch(); + } + } + ps.executeBatch(); + deleteWhereCharacterId(con, "DELETE FROM buddies WHERE characterid = ? AND pending = 0"); + ps = con.prepareStatement("INSERT INTO buddies (characterid, `buddyid`, `pending`, `group`) VALUES (?, ?, 0, ?)"); + ps.setInt(1, id); + for (BuddylistEntry entry : buddylist.getBuddies()) { + if (entry.isVisible()) { + ps.setInt(2, entry.getCharacterId()); + ps.setString(3, entry.getGroup()); + ps.addBatch(); + } + } + ps.executeBatch(); + deleteWhereCharacterId(con, "DELETE FROM area_info WHERE charid = ?"); + ps = con.prepareStatement("INSERT INTO area_info (id, charid, area, info) VALUES (DEFAULT, ?, ?, ?)"); + ps.setInt(1, id); + for (Entry area : area_info.entrySet()) { + ps.setInt(2, area.getKey()); + ps.setString(3, area.getValue()); + ps.addBatch(); + } + ps.executeBatch(); + deleteWhereCharacterId(con, "DELETE FROM eventstats WHERE characterid = ?"); + deleteWhereCharacterId(con, "DELETE FROM queststatus WHERE characterid = ?"); + ps = con.prepareStatement("INSERT INTO queststatus (`queststatusid`, `characterid`, `quest`, `status`, `time`, `forfeited`) VALUES (DEFAULT, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS); + PreparedStatement psf; + try (PreparedStatement pse = con.prepareStatement("INSERT INTO questprogress VALUES (DEFAULT, ?, ?, ?)")) { + psf = con.prepareStatement("INSERT INTO medalmaps VALUES (DEFAULT, ?, ?)"); + ps.setInt(1, id); + for (MapleQuestStatus q : quests.values()) { + ps.setInt(2, q.getQuest().getId()); + ps.setInt(3, q.getStatus().getId()); + ps.setInt(4, (int) (q.getCompletionTime() / 1000)); + ps.setInt(5, q.getForfeited()); + ps.executeUpdate(); + try (ResultSet rs = ps.getGeneratedKeys()) { + rs.next(); + for (int mob : q.getProgress().keySet()) { + pse.setInt(1, rs.getInt(1)); + pse.setInt(2, mob); + pse.setString(3, q.getProgress(mob)); + pse.addBatch(); + } + for (int i = 0; i < q.getMedalMaps().size(); i++) { + psf.setInt(1, rs.getInt(1)); + psf.setInt(2, q.getMedalMaps().get(i)); + psf.addBatch(); + } + pse.executeBatch(); + psf.executeBatch(); + } + } + } + psf.close(); + ps = con.prepareStatement("UPDATE accounts SET gm = ? WHERE id = ?"); + ps.setInt(1, gmLevel); + ps.setInt(2, client.getAccID()); + ps.executeUpdate(); + ps.close(); + + con.commit(); + con.setAutoCommit(true); + + if (cashshop != null) { + cashshop.save(con); + } + if (storage != null) { + storage.saveToDB(con); + } + } catch (SQLException | RuntimeException t) { + FilePrinter.printError(FilePrinter.SAVE_CHAR, t, "Error saving " + name + " Level: " + level + " Job: " + job.getId()); + try { + con.rollback(); + } catch (SQLException se) { + FilePrinter.printError(FilePrinter.SAVE_CHAR, se, "Error trying to rollback " + name); + } + } finally { + try { + con.setAutoCommit(true); + con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ); + } catch (Exception e) { + } + } + } + + public void sendPolice(int greason, String reason, int duration) { + announce(MaplePacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for %s.#k", "Solaxia", reason))); + this.isbanned = true; + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + client.disconnect(false, false); + } + }, duration); + } + + public void sendPolice(String text) { + String message = getName() + " received this - " + text; + if (Server.getInstance().isGmOnline()) { //Alert and log if a GM is online + Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip(message)); + FilePrinter.printError("autobanwarning.txt", message + "\r\n"); + } else { //Auto DC and log if no GM is online + client.disconnect(false, false); + FilePrinter.printError("autobandced.txt", message + "\r\n"); + } + //Server.getInstance().broadcastGMMessage(0, MaplePacketCreator.serverNotice(1, getName() + " received this - " + text)); + //announce(MaplePacketCreator.sendPolice(text)); + //this.isbanned = true; + //TimerManager.getInstance().schedule(new Runnable() { + // @Override + // public void run() { + // client.disconnect(false, false); + // } + //}, 6000); + } + + public void sendKeymap() { + client.announce(MaplePacketCreator.getKeymap(keymap)); + } + + public void sendMacros() { + // Always send the macro packet to fix a client side bug when switching characters. + client.announce(MaplePacketCreator.getMacros(skillMacros)); + } + + public void sendNote(String to, String msg, byte fame) throws SQLException { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO notes (`to`, `from`, `message`, `timestamp`, `fame`) VALUES (?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS)) { + ps.setString(1, to); + ps.setString(2, this.getName()); + ps.setString(3, msg); + ps.setLong(4, System.currentTimeMillis()); + ps.setByte(5, fame); + ps.executeUpdate(); + } + } + + public void setAllianceRank(int rank) { + allianceRank = rank; + if (mgc != null) { + mgc.setAllianceRank(rank); + } + } + + public void setAllowWarpToId(int id) { + this.warpToId = id; + } + + public static void setAriantRoomLeader(int room, String charname) { + ariantroomleader[room] = charname; + } + + public static void setAriantSlotRoom(int room, int slot) { + ariantroomslot[room] = slot; + } + + public void setBattleshipHp(int battleshipHp) { + this.battleshipHp = battleshipHp; + } + + public void setBuddyCapacity(int capacity) { + buddylist.setCapacity(capacity); + client.announce(MaplePacketCreator.updateBuddyCapacity(capacity)); + } + + public void setBuffedValue(MapleBuffStat effect, int value) { + MapleBuffStatValueHolder mbsvh = effects.get(effect); + if (mbsvh == null) { + return; + } + mbsvh.value = value; + } + + public void setChair(int chair) { + this.chair = chair; + } + + public void setChalkboard(String text) { + this.chalktext = text; + } + + public void setDex(int dex) { + this.dex = dex; + recalcLocalStats(); + } + + public void setDojoEnergy(int x) { + this.dojoEnergy = x; + } + + public void setDojoParty(boolean b) { + this.dojoParty = b; + } + + public void setDojoPoints(int x) { + this.dojoPoints = x; + } + + public void setDojoStage(int x) { + this.dojoStage = x; + } + + public void setDojoStart() { + this.dojoMap = map; + int stage = (map.getId() / 100) % 100; + this.dojoFinish = System.currentTimeMillis() + (stage > 36 ? 15 : stage / 6 + 5) * 60000; + } + + public void setEnergyBar(int set) { + energybar = set; + } + + public void setEventInstance(EventInstanceManager eventInstance) { + this.eventInstance = eventInstance; + } + + public void setExp(int amount) { + this.exp.set(amount); + } + + public void setGachaExp(int amount) { + this.gachaexp.set(amount); + } + + public void setFace(int face) { + this.face = face; + } + + public void setFame(int fame) { + this.fame = fame; + } + + public void setFamilyId(int familyId) { + this.familyId = familyId; + } + + public void setFinishedDojoTutorial() { + this.finishedDojoTutorial = true; + } + + public void setGender(int gender) { + this.gender = gender; + } + + public void setGM(int level) { + this.gmLevel = level; + } + + public void setGuildId(int _id) { + guildid = _id; + if (guildid > 0) { + if (mgc == null) { + mgc = new MapleGuildCharacter(this); + } else { + mgc.setGuildId(guildid); + } + } else { + mgc = null; + } + } + + public void setGuildRank(int _rank) { + guildrank = _rank; + if (mgc != null) { + mgc.setGuildRank(_rank); + } + } + + public void setHair(int hair) { + this.hair = hair; + } + + public void setHasMerchant(boolean set) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET HasMerchant = ? WHERE id = ?")) { + ps.setInt(1, set ? 1 : 0); + ps.setInt(2, id); + ps.executeUpdate(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + hasMerchant = set; + } + + public void addMerchantMesos(int add) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET MerchantMesos = ? WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { + ps.setInt(1, merchantmeso + add); + ps.setInt(2, id); + ps.executeUpdate(); + } + } catch (SQLException e) { + return; + } + merchantmeso += add; + } + + public void setMerchantMeso(int set) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET MerchantMesos = ? WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { + ps.setInt(1, set); + ps.setInt(2, id); + ps.executeUpdate(); + } + } catch (SQLException e) { + return; + } + merchantmeso = set; + } + + public void setHiredMerchant(HiredMerchant merchant) { + this.hiredMerchant = merchant; + } + + public void setHp(int newhp) { + setHp(newhp, false); + } + + public void setHp(int newhp, boolean silent) { + int oldHp = hp; + int thp = newhp; + if (thp < 0) { + thp = 0; + } + if (thp > localmaxhp) { + thp = localmaxhp; + } + this.hp = thp; + if (!silent) { + updatePartyMemberHP(); + } + if (oldHp > hp && !isAlive()) { + playerDead(); + } + } + + public void setHpMpApUsed(int mpApUsed) { + this.hpMpApUsed = mpApUsed; + } + + public void setHpMp(int x) { + setHp(x); + setMp(x); + updateSingleStat(MapleStat.HP, hp); + updateSingleStat(MapleStat.MP, mp); + } + + public void setInt(int int_) { + this.int_ = int_; + recalcLocalStats(); + } + + public void setInventory(MapleInventoryType type, MapleInventory inv) { + inventory[type.ordinal()] = inv; + } + + public void setItemEffect(int itemEffect) { + this.itemEffect = itemEffect; + } + + public void setJob(MapleJob job) { + this.job = job; + } + + public void setLastHealed(long time) { + this.lastHealed = time; + } + + public void setLastUsedCashItem(long time) { + this.lastUsedCashItem = time; + } + + public void setLevel(int level) { + this.level = level; + } + + public void setLuk(int luk) { + this.luk = luk; + recalcLocalStats(); + } + + public void setMap(int PmapId) { + this.mapid = PmapId; + } + + public void setMap(MapleMap newmap) { + this.map = newmap; + } + + public void setMarkedMonster(int markedMonster) { + this.markedMonster = markedMonster; + } + + public void setMaxHp(int hp) { + this.maxhp = hp; + recalcLocalStats(); + } + + public void setMaxHp(int hp, boolean ap) { + hp = Math.min(30000, hp); + if (ap) { + setHpMpApUsed(getHpMpApUsed() + 1); + } + this.maxhp = hp; + recalcLocalStats(); + } + + public void setMaxMp(int mp) { + this.maxmp = mp; + recalcLocalStats(); + } + + public void setMaxMp(int mp, boolean ap) { + mp = Math.min(30000, mp); + if (ap) { + setHpMpApUsed(getHpMpApUsed() + 1); + } + this.maxmp = mp; + recalcLocalStats(); + } + + public void setMessenger(MapleMessenger messenger) { + this.messenger = messenger; + } + + public void setMessengerPosition(int position) { + this.messengerposition = position; + } + + public void setMiniGame(MapleMiniGame miniGame) { + this.miniGame = miniGame; + } + + public void setMiniGamePoints(MapleCharacter visitor, int winnerslot, boolean omok) { + if (omok) { + if (winnerslot == 1) { + this.omokwins++; + visitor.omoklosses++; + } else if (winnerslot == 2) { + visitor.omokwins++; + this.omoklosses++; + } else { + this.omokties++; + visitor.omokties++; + } + } else { + if (winnerslot == 1) { + this.matchcardwins++; + visitor.matchcardlosses++; + } else if (winnerslot == 2) { + visitor.matchcardwins++; + this.matchcardlosses++; + } else { + this.matchcardties++; + visitor.matchcardties++; + } + } + } + + public void setMonsterBookCover(int bookCover) { + this.bookCover = bookCover; + } + + public void setMp(int newmp) { + int tmp = newmp; + if (tmp < 0) { + tmp = 0; + } + if (tmp > localmaxmp) { + tmp = localmaxmp; + } + this.mp = tmp; + } + + public void setName(String name) { + this.name = name; + } + + public void changeName(String name) { + this.name = name; + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE `characters` SET `name` = ? WHERE `id` = ?"); + ps.setString(1, name); + ps.setInt(2, id); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public void setParty(MapleParty party) { + if (party == null) { + this.mpc = null; + } + this.party = party; + } + + public void setPlayerShop(MaplePlayerShop playerShop) { + this.playerShop = playerShop; + } + + public void setRemainingAp(int remainingAp) { + this.remainingAp = remainingAp; + } + + public void setRemainingSp(int remainingSp) { + this.remainingSp[GameConstants.getSkillBook(job.getId())] = remainingSp; //default + } + + public void setRemainingSp(int remainingSp, int skillbook) { + this.remainingSp[skillbook] = remainingSp; + } + + public void setSearch(String find) { + search = find; + } + + public void setSkinColor(MapleSkinColor skinColor) { + this.skinColor = skinColor; + } + + public byte getSlots(int type) { + return type == MapleInventoryType.CASH.getType() ? 96 : inventory[type].getSlotLimit(); + } + + public boolean gainSlots(int type, int slots) { + return gainSlots(type, slots, true); + } + + public boolean gainSlots(int type, int slots, boolean update) { + slots += inventory[type].getSlotLimit(); + if (slots <= 96) { + inventory[type].setSlotLimit(slots); + + saveToDB(); + if (update) { + client.announce(MaplePacketCreator.updateInventorySlotLimit(type, slots)); + } + + return true; + } + + return false; + } + + public void setShop(MapleShop shop) { + this.shop = shop; + } + + public void setSlot(int slotid) { + slots = slotid; + } + + public void setStr(int str) { + this.str = str; + recalcLocalStats(); + } + + public void setTrade(MapleTrade trade) { + this.trade = trade; + } + + public void setVanquisherKills(int x) { + this.vanquisherKills = x; + } + + public void setVanquisherStage(int x) { + this.vanquisherStage = x; + } + + public void setWorld(int world) { + this.world = world; + } + + public void shiftPetsRight() { + if (pets[2] == null) { + pets[2] = pets[1]; + pets[1] = pets[0]; + pets[0] = null; + } + } + + public void showDojoClock() { + int stage = (map.getId() / 100) % 100; + long time; + if (stage % 6 == 1) { + time = (stage > 36 ? 15 : stage / 6 + 5) * 60; + } else { + time = (dojoFinish - System.currentTimeMillis()) / 1000; + } + if (stage % 6 > 0) { + client.announce(MaplePacketCreator.getClock((int) time)); + } + boolean rightmap = true; + int clockid = (dojoMap.getId() / 100) % 100; + if (map.getId() > clockid / 6 * 6 + 6 || map.getId() < clockid / 6 * 6) { + rightmap = false; + } + final boolean rightMap = rightmap; // lol + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (rightMap) { + client.getPlayer().changeMap(client.getChannelServer().getMapFactory().getMap(925020000)); + } + } + }, time * 1000 + 3000); // let the TIMES UP display for 3 seconds, then warp + } + + public void showNote() { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM notes WHERE `to`=? AND `deleted` = 0", ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE)) { + ps.setString(1, this.getName()); + try (ResultSet rs = ps.executeQuery()) { + rs.last(); + int count = rs.getRow(); + rs.first(); + client.announce(MaplePacketCreator.showNotes(rs, count)); + } + } + } catch (SQLException e) { + } + } + + private void silentEnforceMaxHpMp() { + setMp(getMp()); + setHp(getHp(), true); + } + + public void silentGiveBuffs(List buffs) { + for (PlayerBuffValueHolder mbsvh : buffs) { + mbsvh.effect.silentApplyBuff(this, mbsvh.startTime); + } + } + + public void silentPartyUpdate() { + if (party != null) { + Server.getInstance().getWorld(world).updateParty(party.getId(), PartyOperation.SILENT_UPDATE, getMPC()); + } + } + + public static class SkillEntry { + + public int masterlevel; + public byte skillevel; + public long expiration; + + public SkillEntry(byte skillevel, int masterlevel, long expiration) { + this.skillevel = skillevel; + this.masterlevel = masterlevel; + this.expiration = expiration; + } + + @Override + public String toString() { + return skillevel + ":" + masterlevel; + } + } + + public boolean skillisCooling(int skillId) { + return coolDowns.containsKey(Integer.valueOf(skillId)); + } + + public void startFullnessSchedule(final int decrease, final MaplePet pet, int petSlot) { + ScheduledFuture schedule; + schedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + int newFullness = pet.getFullness() - decrease; + if (newFullness <= 5) { + pet.setFullness(15); + pet.saveToDb(); + unequipPet(pet, true); + } else { + pet.setFullness(newFullness); + pet.saveToDb(); + Item petz = getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); + if (petz != null) { + forceUpdateItem(petz); + } + } + } + }, 180000, 18000); + fullnessSchedule[petSlot] = schedule; + + } + + public void startMapEffect(String msg, int itemId) { + startMapEffect(msg, itemId, 30000); + } + + public void startMapEffect(String msg, int itemId, int duration) { + final MapleMapEffect mapEffect = new MapleMapEffect(msg, itemId); + getClient().announce(mapEffect.makeStartData()); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + getClient().announce(mapEffect.makeDestroyData()); + } + }, duration); + } + + public void stopControllingMonster(MapleMonster monster) { + controlled.remove(monster); + } + + public void unequipAllPets() { + for (int i = 0; i < 3; i++) { + if (pets[i] != null) { + unequipPet(pets[i], true); + } + } + } + + public void unequipPet(MaplePet pet, boolean shift_left) { + unequipPet(pet, shift_left, false); + } + + public void unequipPet(MaplePet pet, boolean shift_left, boolean hunger) { + if (this.getPet(this.getPetIndex(pet)) != null) { + this.getPet(this.getPetIndex(pet)).setSummoned(false); + this.getPet(this.getPetIndex(pet)).saveToDb(); + } + cancelFullnessSchedule(getPetIndex(pet)); + getMap().broadcastMessage(this, MaplePacketCreator.showPet(this, pet, true, hunger), true); + client.announce(MaplePacketCreator.petStatUpdate(this)); + client.announce(MaplePacketCreator.enableActions()); + removePet(pet, shift_left); + } + + public void updateMacros(int position, SkillMacro updateMacro) { + skillMacros[position] = updateMacro; + } + + public void updatePartyMemberHP() { + if (party != null) { + int channel = client.getChannel(); + for (MaplePartyCharacter partychar : party.getMembers()) { + if (partychar.getMapId() == getMapId() && partychar.getChannel() == channel) { + MapleCharacter other = Server.getInstance().getWorld(world).getChannel(channel).getPlayerStorage().getCharacterByName(partychar.getName()); + if (other != null) { + other.client.announce(MaplePacketCreator.updatePartyMemberHP(getId(), this.hp, maxhp)); + } + } + } + } + } + + public String getQuestInfo(int quest) { + MapleQuestStatus qs = getQuest(MapleQuest.getInstance(quest)); + return qs.getInfo(); + } + + public void updateQuestInfo(int quest, String info) { + MapleQuest q = MapleQuest.getInstance(quest); + MapleQuestStatus qs = getQuest(q); + qs.setInfo(info); + + quests.put(q.getId(), qs); + + announce(MaplePacketCreator.updateQuest(qs, false)); + if (qs.getQuest().getInfoNumber() > 0) { + announce(MaplePacketCreator.updateQuest(qs, true)); + } + announce(MaplePacketCreator.updateQuestInfo((short) qs.getQuest().getId(), qs.getNpc())); + } + + private void fameGainByQuest() { + int delta = quest_fame / ServerConstants.FAME_GAIN_BY_QUEST; + if(delta > 0) { + gainFame(delta); + client.announce(MaplePacketCreator.getShowFameGain(delta)); + } + + quest_fame %= ServerConstants.FAME_GAIN_BY_QUEST; + } + + public void updateQuest(MapleQuestStatus quest) { + quests.put(quest.getQuestID(), quest); + if (quest.getStatus().equals(MapleQuestStatus.Status.STARTED)) { + announce(MaplePacketCreator.updateQuest(quest, false)); + if (quest.getQuest().getInfoNumber() > 0) { + announce(MaplePacketCreator.updateQuest(quest, true)); + } + announce(MaplePacketCreator.updateQuestInfo((short) quest.getQuest().getId(), quest.getNpc())); + } else if (quest.getStatus().equals(MapleQuestStatus.Status.COMPLETED)) { + quest_fame += 1; + if(ServerConstants.FAME_GAIN_BY_QUEST > 0) + fameGainByQuest(); + + announce(MaplePacketCreator.completeQuest((short) quest.getQuest().getId(), quest.getCompletionTime())); + } else if (quest.getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { + announce(MaplePacketCreator.updateQuest(quest, false)); + if (quest.getQuest().getInfoNumber() > 0) { + announce(MaplePacketCreator.updateQuest(quest, true)); + } + } + } + + public void questTimeLimit(final MapleQuest quest, int time) { + ScheduledFuture sf = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + announce(MaplePacketCreator.questExpire(quest.getId())); + MapleQuestStatus newStatus = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); + newStatus.setForfeited(getQuest(quest).getForfeited() + 1); + updateQuest(newStatus); + } + }, time * 60 * 1000); + announce(MaplePacketCreator.addQuestTimeLimit(quest.getId(), time * 60 * 1000)); + timers.add(sf); + } + + public void updateSingleStat(MapleStat stat, int newval) { + updateSingleStat(stat, newval, false); + } + + private void updateSingleStat(MapleStat stat, int newval, boolean itemReaction) { + announce(MaplePacketCreator.updatePlayerStats(Collections.singletonList(new Pair<>(stat, Integer.valueOf(newval))), itemReaction, this)); + } + + public void announce(final byte[] packet) { + client.announce(packet); + } + + @Override + public int getObjectId() { + return getId(); + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.PLAYER; + } + + @Override + public void sendDestroyData(MapleClient client) { + client.announce(MaplePacketCreator.removePlayerFromMap(this.getObjectId())); + } + + @Override + public void sendSpawnData(MapleClient client) { + if (!this.isHidden() || client.getPlayer().gmLevel() > 0) { + client.announce(MaplePacketCreator.spawnPlayerMapobject(this)); + } + + if (this.isHidden()) { + List> dsstat = Collections.singletonList(new Pair<>(MapleBuffStat.DARKSIGHT, 0)); + getMap().broadcastGMMessage(this, MaplePacketCreator.giveForeignBuff(getId(), dsstat), false); + } + } + + @Override + public void setObjectId(int id) { + } + + @Override + public String toString() { + return name; + } + + public int getLinkedLevel() { + return linkedLevel; + } + + public String getLinkedName() { + return linkedName; + } + + public CashShop getCashShop() { + return cashshop; + } + + public void portalDelay(long delay) { + this.portaldelay = System.currentTimeMillis() + delay; + } + + public long portalDelay() { + return portaldelay; + } + + public void blockPortal(String scriptName) { + if (!blockedPortals.contains(scriptName) && scriptName != null) { + blockedPortals.add(scriptName); + client.announce(MaplePacketCreator.enableActions()); + } + } + + public void unblockPortal(String scriptName) { + if (blockedPortals.contains(scriptName) && scriptName != null) { + blockedPortals.remove(scriptName); + } + } + + public List getBlockedPortals() { + return blockedPortals; + } + + public boolean containsAreaInfo(int area, String info) { + Short area_ = Short.valueOf((short) area); + if (area_info.containsKey(area_)) { + return area_info.get(area_).contains(info); + } + return false; + } + + public void updateAreaInfo(int area, String info) { + area_info.put(Short.valueOf((short) area), info); + announce(MaplePacketCreator.updateAreaInfo(area, info)); + } + + public String getAreaInfo(int area) { + return area_info.get(Short.valueOf((short) area)); + } + + public Map getAreaInfos() { + return area_info; + } + + public void autoban(String reason) { + this.ban(reason); + announce(MaplePacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for HACK reason.#k", "Solaxia"))); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + client.disconnect(false, false); + } + }, 5000); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, MapleCharacter.makeMapleReadable(this.name) + " was autobanned for " + reason)); + } + + public void block(int reason, int days, String desc) { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, days); + Timestamp TS = new Timestamp(cal.getTimeInMillis()); + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("UPDATE accounts SET banreason = ?, tempban = ?, greason = ? WHERE id = ?")) { + ps.setString(1, desc); + ps.setTimestamp(2, TS); + ps.setInt(3, reason); + ps.setInt(4, accountid); + ps.executeUpdate(); + } + } catch (SQLException e) { + } + } + + public boolean isBanned() { + return isbanned; + } + + public List getTrockMaps() { + return trockmaps; + } + + public List getVipTrockMaps() { + return viptrockmaps; + } + + public int getTrockSize() { + int ret = trockmaps.indexOf(999999999); + if (ret == -1) { + ret = 5; + } + + return ret; + } + + public void deleteFromTrocks(int map) { + trockmaps.remove(Integer.valueOf(map)); + while (trockmaps.size() < 10) { + trockmaps.add(999999999); + } + } + + public void addTrockMap() { + int index = trockmaps.indexOf(999999999); + if (index != -1) { + trockmaps.set(index, getMapId()); + } + } + + public boolean isTrockMap(int id) { + int index = trockmaps.indexOf(id); + if (index != -1) { + return true; + } + + return false; + } + + public int getVipTrockSize() { + int ret = viptrockmaps.indexOf(999999999); + + if (ret == -1) { + ret = 10; + } + + return ret; + } + + public void deleteFromVipTrocks(int map) { + viptrockmaps.remove(Integer.valueOf(map)); + while (viptrockmaps.size() < 10) { + viptrockmaps.add(999999999); + } + } + + public void addVipTrockMap() { + int index = viptrockmaps.indexOf(999999999); + if (index != -1) { + viptrockmaps.set(index, getMapId()); + } + } + + public boolean isVipTrockMap(int id) { + int index = viptrockmaps.indexOf(id); + if (index != -1) { + return true; + } + + return false; + } + //EVENTS + private byte team = 0; + private MapleFitness fitness; + private MapleOla ola; + private long snowballattack; + + public byte getTeam() { + return team; + } + + public void setTeam(int team) { + this.team = (byte) team; + } + + public MapleOla getOla() { + return ola; + } + + public void setOla(MapleOla ola) { + this.ola = ola; + } + + public MapleFitness getFitness() { + return fitness; + } + + public void setFitness(MapleFitness fit) { + this.fitness = fit; + } + + public long getLastSnowballAttack() { + return snowballattack; + } + + public void setLastSnowballAttack(long time) { + this.snowballattack = time; + } + //Monster Carnival + private int cp = 0; + private int obtainedcp = 0; + private MonsterCarnivalParty carnivalparty; + private MonsterCarnival carnival; + + public MonsterCarnivalParty getCarnivalParty() { + return carnivalparty; + } + + public void setCarnivalParty(MonsterCarnivalParty party) { + this.carnivalparty = party; + } + + public MonsterCarnival getCarnival() { + return carnival; + } + + public void setCarnival(MonsterCarnival car) { + this.carnival = car; + } + + public int getCP() { + return cp; + } + + public int getObtainedCP() { + return obtainedcp; + } + + public void addCP(int cp) { + this.cp += cp; + this.obtainedcp += cp; + } + + public void useCP(int cp) { + this.cp -= cp; + } + + public void setObtainedCP(int cp) { + this.obtainedcp = cp; + } + + public int getAndRemoveCP() { + int rCP = 10; + if (cp < 9) { + rCP = cp; + cp = 0; + } else { + cp -= 10; + } + + return rCP; + } + + public AutobanManager getAutobanManager() { + return autoban; + } + + public void equipPendantOfSpirit() { + if (pendantOfSpirit == null) { + pendantOfSpirit = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + if (pendantExp < 3) { + pendantExp++; + message("Pendant of the Spirit has been equipped for " + pendantExp + " hour(s), you will now receive " + pendantExp + "0% bonus exp."); + } else { + pendantOfSpirit.cancel(false); + } + } + }, 3600000); //1 hour + } + } + + public void unequipPendantOfSpirit() { + if (pendantOfSpirit != null) { + pendantOfSpirit.cancel(false); + pendantOfSpirit = null; + } + pendantExp = 0; + } + + public void increaseEquipExp(int mobexp) { + MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); + for (Item item : getInventory(MapleInventoryType.EQUIPPED).list()) { + Equip nEquip = (Equip) item; + String itemName = mii.getName(nEquip.getItemId()); + if (itemName == null) { + continue; + } + + if ((itemName.contains("Reverse") && nEquip.getItemLevel() < 4) || itemName.contains("Timeless") && nEquip.getItemLevel() < 6) { + nEquip.gainItemExp(client, mobexp, itemName.contains("Timeless")); + } + } + } + + public Map getEvents() { + return events; + } + + public PartyQuest getPartyQuest() { + return partyQuest; + } + + public void setPartyQuest(PartyQuest pq) { + this.partyQuest = pq; + } + + public final void empty(final boolean remove) { + if (dragonBloodSchedule != null) { + dragonBloodSchedule.cancel(false); + } + if (hpDecreaseTask != null) { + hpDecreaseTask.cancel(false); + } + if (beholderHealingSchedule != null) { + beholderHealingSchedule.cancel(false); + } + if (beholderBuffSchedule != null) { + beholderBuffSchedule.cancel(false); + } + if (BerserkSchedule != null) { + BerserkSchedule.cancel(false); + } + if (recoveryTask != null) { + recoveryTask.cancel(false); + } + cancelExpirationTask(); + for (ScheduledFuture sf : timers) { + sf.cancel(false); + } + timers.clear(); + if (maplemount != null) { + maplemount.empty(); + maplemount = null; + } + if (remove) { + partyQuest = null; + events = null; + mpc = null; + mgc = null; + events = null; + party = null; + family = null; + client = null; + map = null; + timers = null; + } + } + + public void logOff() { + this.loggedIn = false; + } + + public boolean isLoggedin() { + return loggedIn; + } + + public void setMapId(int mapid) { + this.mapid = mapid; + } + + public boolean getWhiteChat() { + return !isGM() ? false : whiteChat; + } + + public void toggleWhiteChat() { + whiteChat = !whiteChat; + } + + public boolean canDropMeso() { + if (System.currentTimeMillis() - lastMesoDrop >= 200 || lastMesoDrop == -1) { //About 200 meso drops a minute + lastMesoDrop = System.currentTimeMillis(); + return true; + } + return false; + } + + // These need to be renamed, but I am too lazy right now to go through the scripts and rename them... + public String getPartyQuestItems() { + return dataString; + } + + public boolean gotPartyQuestItem(String partyquestchar) { + return dataString.contains(partyquestchar); + } + + public void removePartyQuestItem(String letter) { + if (gotPartyQuestItem(letter)) { + dataString = dataString.substring(0, dataString.indexOf(letter)) + dataString.substring(dataString.indexOf(letter) + letter.length()); + } + } + + public void setPartyQuestItemObtained(String partyquestchar) { + if (!dataString.contains(partyquestchar)) { + this.dataString += partyquestchar; + } + } + + public void createDragon() { + dragon = new MapleDragon(this); + } + + public MapleDragon getDragon() { + return dragon; + } + + public void setDragon(MapleDragon dragon) { + this.dragon = dragon; + } + + public int getRemainingSpSize() { + int sp = 0; + for (int i = 0; i < remainingSp.length; i++) { + if (remainingSp[i] > 0) { + sp++; + } + } + return sp; + } +} diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java new file mode 100644 index 0000000000..9614e645bd --- /dev/null +++ b/src/client/MapleClient.java @@ -0,0 +1,1260 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package client; + +import java.io.*; +import java.net.InetAddress; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import javax.script.ScriptEngine; + +import net.server.Server; +import net.server.channel.Channel; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.world.MapleMessengerCharacter; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import net.server.world.PartyOperation; +import net.server.world.World; + +import org.apache.mina.core.session.IoSession; + +import client.inventory.MapleInventoryType; +import scripting.npc.NPCConversationManager; +import scripting.npc.NPCScriptManager; +import scripting.quest.QuestActionManager; +import scripting.quest.QuestScriptManager; +import server.MapleMiniGame; +import server.MaplePlayerShop; +import server.MapleTrade; +import server.TimerManager; +import server.maps.*; +import server.quest.MapleQuest; +import tools.LogHelper; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.HexTool; +import tools.MapleAESOFB; +import tools.MaplePacketCreator; + +public class MapleClient { + + public static final int LOGIN_NOTLOGGEDIN = 0; + public static final int LOGIN_SERVER_TRANSITION = 1; + public static final int LOGIN_LOGGEDIN = 2; + public static final String CLIENT_KEY = "CLIENT"; + private MapleAESOFB send; + private MapleAESOFB receive; + private IoSession session; + private MapleCharacter player; + private int channel = 1; + private int accId = 1; + private boolean loggedIn = false; + private boolean serverTransition = false; + private Calendar birthday = null; + private String accountName = null; + private int world; + private long lastPong; + private int gmlevel; + private Set macs = new HashSet<>(); + private Map engines = new HashMap<>(); + private ScheduledFuture idleTask = null; + private byte characterSlots = 3; + private byte loginattempt = 0; + private String pin = null; + private int pinattempt = 0; + private String pic = null; + private String hwid = null; + private int picattempt = 0; + private byte gender = -1; + private boolean disconnecting = false; + private final Lock mutex = new ReentrantLock(true); + private int votePoints; + private int voteTime = -1; + private long lastNpcClick; + private long sessionId; + + public MapleClient(MapleAESOFB send, MapleAESOFB receive, IoSession session) { + this.send = send; + this.receive = receive; + this.session = session; + } + + public synchronized MapleAESOFB getReceiveCrypto() { + return receive; + } + + public synchronized MapleAESOFB getSendCrypto() { + return send; + } + + public synchronized IoSession getSession() { + return session; + } + + public MapleCharacter getPlayer() { + return player; + } + + public void setPlayer(MapleCharacter player) { + this.player = player; + } + + public void sendCharList(int server) { + this.session.write(MaplePacketCreator.getCharList(this, server)); + } + + public List loadCharacters(int serverId) { + List chars = new ArrayList<>(15); + try { + for (CharNameAndId cni : loadCharactersInternal(serverId)) { + chars.add(MapleCharacter.loadCharFromDB(cni.id, this, false)); + } + } catch (Exception e) { + e.printStackTrace(); + } + return chars; + } + + public List loadCharacterNames(int serverId) { + List chars = new ArrayList<>(15); + for (CharNameAndId cni : loadCharactersInternal(serverId)) { + chars.add(cni.name); + } + return chars; + } + + private List loadCharactersInternal(int serverId) { + PreparedStatement ps; + List chars = new ArrayList<>(15); + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT id, name FROM characters WHERE accountid = ? AND world = ?"); + ps.setInt(1, this.getAccID()); + ps.setInt(2, serverId); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + chars.add(new CharNameAndId(rs.getString("name"), rs.getInt("id"))); + } + } + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + return chars; + } + + public boolean isLoggedIn() { + return loggedIn; + } + + public boolean hasBannedIP() { + boolean ret = false; + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT COUNT(*) FROM ipbans WHERE ? LIKE CONCAT(ip, '%')")) { + ps.setString(1, session.getRemoteAddress().toString()); + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + if (rs.getInt(1) > 0) { + ret = true; + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + return ret; + } + + public int getVoteTime(){ + if (voteTime != -1){ + return voteTime; + } + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT date FROM bit_votingrecords WHERE UPPER(account) = UPPER(?)")) { + ps.setString(1, accountName); + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + return -1; + } + voteTime = rs.getInt("date"); + } + } + } catch (SQLException e) { + FilePrinter.printError("hasVotedAlready.txt", e); + return -1; + } + return voteTime; + } + + public void resetVoteTime() { + voteTime = -1; + } + + public boolean hasVotedAlready(){ + Date currentDate = new Date(); + int timeNow = (int) (currentDate.getTime() / 1000); + int difference = (timeNow - getVoteTime()); + return difference < 86400 && difference > 0; + } + + public boolean hasBannedHWID() { + if(hwid == null) + return false; + + boolean ret = false; + PreparedStatement ps = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT COUNT(*) FROM hwidbans WHERE hwid LIKE ?"); + ps.setString(1, hwid); + ResultSet rs = ps.executeQuery(); + if(rs != null && rs.next()) { + if(rs.getInt(1) > 0) + ret = true; + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if(ps != null && !ps.isClosed()) { + ps.close(); + } + } catch (SQLException e){ + e.printStackTrace(); + } + } + + return ret; + } + + public boolean hasBannedMac() { + if (macs.isEmpty()) { + return false; + } + boolean ret = false; + int i; + try { + StringBuilder sql = new StringBuilder("SELECT COUNT(*) FROM macbans WHERE mac IN ("); + for (i = 0; i < macs.size(); i++) { + sql.append("?"); + if (i != macs.size() - 1) { + sql.append(", "); + } + } + sql.append(")"); + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement(sql.toString())) { + i = 0; + for (String mac : macs) { + i++; + ps.setString(i, mac); + } + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + if (rs.getInt(1) > 0) { + ret = true; + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return ret; + } + + private void loadHWIDIfNescessary() throws SQLException { + if(hwid == null) { + try(PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT hwid FROM accounts WHERE id = ?")) { + ps.setInt(1, accId); + try(ResultSet rs = ps.executeQuery()) { + if(rs.next()) { + hwid = rs.getString("hwid"); + } + } + } + } + } + + // TODO: Recode to close statements... + private void loadMacsIfNescessary() throws SQLException { + if (macs.isEmpty()) { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT macs FROM accounts WHERE id = ?")) { + ps.setInt(1, accId); + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + for (String mac : rs.getString("macs").split(", ")) { + if (!mac.equals("")) { + macs.add(mac); + } + } + } + } + } + } + } + + public void banHWID() { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + try { + loadHWIDIfNescessary(); + ps = con.prepareStatement("INSERT INTO hwidbans (hwid) VALUES (?)"); + ps.setString(1, hwid); + ps.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if(ps != null && !ps.isClosed()) + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + public void banMacs() { + Connection con = DatabaseConnection.getConnection(); + try { + loadMacsIfNescessary(); + List filtered = new LinkedList<>(); + try (PreparedStatement ps = con.prepareStatement("SELECT filter FROM macfilters"); ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + filtered.add(rs.getString("filter")); + } + } + try (PreparedStatement ps = con.prepareStatement("INSERT INTO macbans (mac) VALUES (?)")) { + for (String mac : macs) { + boolean matched = false; + for (String filter : filtered) { + if (mac.matches(filter)) { + matched = true; + break; + } + } + if (!matched) { + ps.setString(1, mac); + ps.executeUpdate(); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public int finishLogin() { + synchronized (MapleClient.class) { + if (getLoginState() > LOGIN_NOTLOGGEDIN) { // 0 = LOGIN_NOTLOGGEDIN, 1= LOGIN_SERVER_TRANSITION, 2 = LOGIN_LOGGEDIN + loggedIn = false; + return 7; + } + updateLoginState(LOGIN_LOGGEDIN); + } + return 0; + } + + public void setPin(String pin) { + this.pin = pin; + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET pin = ? WHERE id = ?")) { + ps.setString(1, pin); + ps.setInt(2, accId); + ps.executeUpdate(); + } + } catch (SQLException e) { + } + } + + public String getPin() { + return pin; + } + + public boolean checkPin(String other) { + pinattempt++; + if (pinattempt > 5) { + getSession().close(true); + } + if (pin.equals(other)) { + pinattempt = 0; + return true; + } + return false; + } + + public void setPic(String pic) { + this.pic = pic; + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET pic = ? WHERE id = ?")) { + ps.setString(1, pic); + ps.setInt(2, accId); + ps.executeUpdate(); + } + } catch (SQLException e) { + } + } + + public String getPic() { + return pic; + } + + public boolean checkPic(String other) { + picattempt++; + if (picattempt > 5) { + getSession().close(true); + } + if (pic.equals(other)) { + picattempt = 0; + return true; + } + return false; + } + + public int login(String login, String pwd) { + loginattempt++; + if (loginattempt > 4) { + getSession().close(true); + } + int loginok = 5; + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = con.prepareStatement("SELECT id, password, salt, gender, banned, gm, pin, pic, characterslots, tos FROM accounts WHERE name = ?"); + ps.setString(1, login); + rs = ps.executeQuery(); + if (rs.next()) { + if (rs.getByte("banned") == 1) { + return 3; + } + accId = rs.getInt("id"); + gmlevel = rs.getInt("gm"); + pin = rs.getString("pin"); + pic = rs.getString("pic"); + gender = rs.getByte("gender"); + characterSlots = rs.getByte("characterslots"); + String passhash = rs.getString("password"); + String salt = rs.getString("salt"); + //we do not unban + byte tos = rs.getByte("tos"); + ps.close(); + rs.close(); + if (getLoginState() > LOGIN_NOTLOGGEDIN) { // already loggedin + loggedIn = false; + loginok = 7; + } else if (pwd.equals(passhash) || checkHash(passhash, "SHA-1", pwd) || checkHash(passhash, "SHA-512", pwd + salt)) { + if (tos == 0) { + loginok = 23; + } else { + loginok = 0; + } + } else { + loggedIn = false; + loginok = 4; + } + ps = con.prepareStatement("INSERT INTO iplog (accountid, ip) VALUES (?, ?)"); + ps.setInt(1, accId); + ps.setString(2, session.getRemoteAddress().toString()); + ps.executeUpdate(); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + if (rs != null && !rs.isClosed()) { + rs.close(); + } + } catch (SQLException e) { + } + } + if (loginok == 0) { + loginattempt = 0; + } + return loginok; + } + + public Calendar getTempBanCalendar() { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + ResultSet rs = null; + final Calendar lTempban = Calendar.getInstance(); + try { + ps = con.prepareStatement("SELECT `tempban` FROM accounts WHERE id = ?"); + ps.setInt(1, getAccID()); + rs = ps.executeQuery(); + if (!rs.next()) { + return null; + } + long blubb = rs.getLong("tempban"); + if (blubb == 0) { // basically if timestamp in db is 0000-00-00 + return null; + } + lTempban.setTimeInMillis(rs.getTimestamp("tempban").getTime()); + return lTempban; + } catch (SQLException e) { + } finally { + try { + if (ps != null) { + ps.close(); + } + if (rs != null) { + rs.close(); + } + } catch (SQLException e) { + } + } + return null;//why oh why!?! + } + + public static long dottedQuadToLong(String dottedQuad) throws RuntimeException { + String[] quads = dottedQuad.split("\\."); + if (quads.length != 4) { + throw new RuntimeException("Invalid IP Address format."); + } + long ipAddress = 0; + for (int i = 0; i < 4; i++) { + int quad = Integer.parseInt(quads[i]); + ipAddress += (long) (quad % 256) * (long) Math.pow(256, (double) (4 - i)); + } + return ipAddress; + } + + public void updateHWID(String newHwid) { + String[] split = newHwid.split("_"); + if(split.length > 1 && split[1].length() == 8) { + StringBuilder hwid = new StringBuilder(); + String convert = split[1]; + + int len = convert.length(); + for(int i=len-2; i>=0; i -= 2) { + hwid.append(convert.substring(i, i + 2)); + } + hwid.insert(4, "-"); + + this.hwid = hwid.toString(); + + PreparedStatement ps = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET hwid = ? WHERE id = ?"); + ps.setString(1, this.hwid); + ps.setInt(2, accId); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if(ps != null && !ps.isClosed()) { + ps.close(); + } + } catch (SQLException e) { + } + } + } else { + this.disconnect(false, false); // Invalid HWID... + } + } + + public void updateMacs(String macData) { + macs.addAll(Arrays.asList(macData.split(", "))); + StringBuilder newMacData = new StringBuilder(); + Iterator iter = macs.iterator(); + PreparedStatement ps = null; + while (iter.hasNext()) { + String cur = iter.next(); + newMacData.append(cur); + if (iter.hasNext()) { + newMacData.append(", "); + } + } + try { + ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET macs = ? WHERE id = ?"); + ps.setString(1, newMacData.toString()); + ps.setInt(2, accId); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + } catch (SQLException ex) { + } + } + } + + public void setAccID(int id) { + this.accId = id; + } + + public int getAccID() { + return accId; + } + + public void updateLoginState(int newstate) { + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("UPDATE accounts SET loggedin = ?, lastlogin = CURRENT_TIMESTAMP() WHERE id = ?")) { + ps.setInt(1, newstate); + ps.setInt(2, getAccID()); + ps.executeUpdate(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + if (newstate == LOGIN_NOTLOGGEDIN) { + loggedIn = false; + serverTransition = false; + } else { + serverTransition = (newstate == LOGIN_SERVER_TRANSITION); + loggedIn = !serverTransition; + } + } + + public int getLoginState() { // 0 = LOGIN_NOTLOGGEDIN, 1= LOGIN_SERVER_TRANSITION, 2 = LOGIN_LOGGEDIN + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT loggedin, lastlogin, UNIX_TIMESTAMP(birthday) as birthday FROM accounts WHERE id = ?"); + ps.setInt(1, getAccID()); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + rs.close(); + ps.close(); + throw new RuntimeException("getLoginState - MapleClient"); + } + birthday = Calendar.getInstance(); + long blubb = rs.getLong("birthday"); + if (blubb > 0) { + birthday.setTimeInMillis(blubb * 1000); + } + int state = rs.getInt("loggedin"); + if (state == LOGIN_SERVER_TRANSITION) { + if (rs.getTimestamp("lastlogin").getTime() + 30000 < System.currentTimeMillis()) { + state = LOGIN_NOTLOGGEDIN; + updateLoginState(LOGIN_NOTLOGGEDIN); + } + } else if (state == LOGIN_LOGGEDIN && player == null) { + state = LOGIN_LOGGEDIN; + updateLoginState(LOGIN_LOGGEDIN); + } + rs.close(); + ps.close(); + if (state == LOGIN_LOGGEDIN) { + loggedIn = true; + } else if (state == LOGIN_SERVER_TRANSITION) { + ps = con.prepareStatement("UPDATE accounts SET loggedin = 0 WHERE id = ?"); + ps.setInt(1, getAccID()); + ps.executeUpdate(); + ps.close(); + } else { + loggedIn = false; + } + return state; + } catch (SQLException e) { + loggedIn = false; + e.printStackTrace(); + throw new RuntimeException("login state"); + } + } + + public boolean checkBirthDate(Calendar date) { + return date.get(Calendar.YEAR) == birthday.get(Calendar.YEAR) && date.get(Calendar.MONTH) == birthday.get(Calendar.MONTH) && date.get(Calendar.DAY_OF_MONTH) == birthday.get(Calendar.DAY_OF_MONTH); + } + + private void removePlayer() { + try { + player.cancelAllBuffs(true); + player.cancelAllDebuffs(); + final MaplePlayerShop mps = player.getPlayerShop(); + if (mps != null) { + mps.removeVisitors(); + player.setPlayerShop(null); + } + final HiredMerchant merchant = player.getHiredMerchant(); + if (merchant != null) { + if (merchant.isOwner(player)) { + merchant.setOpen(true); + } else { + merchant.removeVisitor(player); + } + try { + merchant.saveItems(false); + } catch (SQLException ex) { + System.out.println("Error while saving Hired Merchant items."); + } + } + player.setMessenger(null); + final MapleMiniGame game = player.getMiniGame(); + if (game != null) { + player.setMiniGame(null); + if (game.isOwner(player)) { + player.getMap().broadcastMessage(MaplePacketCreator.removeCharBox(player)); + game.broadcastToVisitor(MaplePacketCreator.getMiniGameClose()); + } else { + game.removeVisitor(player); + } + } + NPCScriptManager.getInstance().dispose(this); + QuestScriptManager.getInstance().dispose(this); + if (player.getTrade() != null) { + MapleTrade.cancelTrade(player); + } + if (player.getEventInstance() != null) { + player.getEventInstance().playerDisconnected(player); + } + if (player.getMap() != null) { + player.getMap().removePlayer(player); + } + + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.ACCOUNT_STUCK, t); + } + } + + public final void disconnect(boolean shutdown, boolean cashshop) {//once per MapleClient instance + if (disconnecting) { + return; + } + disconnecting = true; + if (player != null && player.isLoggedin() && player.getClient() != null) { + MapleMap map = player.getMap(); + final MapleParty party = player.getParty(); + final int idz = player.getId(); + final int messengerid = player.getMessenger() == null ? 0 : player.getMessenger().getId(); + //final int fid = player.getFamilyId(); + final BuddyList bl = player.getBuddylist(); + final MaplePartyCharacter chrp = new MaplePartyCharacter(player); + final MapleMessengerCharacter chrm = new MapleMessengerCharacter(player, 0); + final MapleGuildCharacter chrg = player.getMGC(); + final MapleGuild guild = player.getGuild(); + + removePlayer(); + player.saveCooldowns(); + player.saveToDB(); + if (channel == -1 || shutdown) { + player = null; + return; + } + final World worlda = getWorldServer(); + try { + if (!cashshop) { + if (!this.serverTransition) { // meaning not changing channels + if (messengerid > 0) { + worlda.leaveMessenger(messengerid, chrm); + } + /* if (fid > 0) { + final MapleFamily family = worlda.getFamily(fid); + family. + }*/ + for (MapleQuestStatus status : player.getStartedQuests()) { //This is for those quests that you have to stay logged in for a certain amount of time + MapleQuest quest = status.getQuest(); + if (quest.getTimeLimit() > 0) { + MapleQuestStatus newStatus = new MapleQuestStatus(quest, MapleQuestStatus.Status.NOT_STARTED); + newStatus.setForfeited(player.getQuest(quest).getForfeited() + 1); + player.updateQuest(newStatus); + } + } + if (guild != null) { + final Server server = Server.getInstance(); + server.setGuildMemberOnline(chrg, false, player.getClient().getChannel()); + player.getClient().announce(MaplePacketCreator.showGuildInfo(player)); + } + if (party != null) { + chrp.setOnline(false); + worlda.updateParty(party.getId(), PartyOperation.LOG_ONOFF, chrp); + if (map != null && party.getLeader().getId() == idz) { + MaplePartyCharacter lchr = null; + for (MaplePartyCharacter pchr : party.getMembers()) { + if (pchr != null && map.getCharacterById(pchr.getId()) != null && (lchr == null || lchr.getLevel() <= pchr.getLevel())) { + lchr = pchr; + } + } + if (lchr != null) { + worlda.updateParty(party.getId(), PartyOperation.CHANGE_LEADER, lchr); + } + } + } + if (bl != null) { + worlda.loggedOff(player.getName(), player.getId(), channel, player.getBuddylist().getBuddyIds()); + } + } + } else { + if (!this.serverTransition) { // if dc inside of cash shop. + if (party != null) { + chrp.setOnline(false); + worlda.updateParty(party.getId(), PartyOperation.LOG_ONOFF, chrp); + if (map != null && party.getLeader().getId() == idz) { + MaplePartyCharacter lchr = null; + for (MaplePartyCharacter pchr : party.getMembers()) { + if (pchr != null && map.getCharacterById(pchr.getId()) != null && (lchr == null || lchr.getLevel() <= pchr.getLevel())) { + lchr = pchr; + } + } + if (lchr != null) { + worlda.updateParty(party.getId(), PartyOperation.CHANGE_LEADER, lchr); + } + } + } + if (bl != null) { + worlda.loggedOff(player.getName(), player.getId(), channel, player.getBuddylist().getBuddyIds()); + } + } + } + } catch (final Exception e) { + FilePrinter.printError(FilePrinter.ACCOUNT_STUCK, e); + } finally { + getChannelServer().removePlayer(player); + if (!this.serverTransition) { + worlda.removePlayer(player); + if (player != null) {//no idea, occur :( + player.empty(false); + } + player.logOff(); + } + player = null; + } + } + if (!serverTransition && isLoggedIn()) { + updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); + session.removeAttribute(MapleClient.CLIENT_KEY); // prevents double dcing during login + session.close(); + } + engines.clear(); + } + + private void clear() { + this.accountName = null; + this.macs = null; + this.hwid = null; + this.birthday = null; + //this.engines = null; + if (this.idleTask != null) { + this.idleTask.cancel(true); + this.idleTask = null; + } + this.player = null; + this.receive = null; + this.send = null; + //this.session = null; + } + + public int getChannel() { + return channel; + } + + public Channel getChannelServer() { + return Server.getInstance().getChannel(world, channel); + } + + public World getWorldServer() { + return Server.getInstance().getWorld(world); + } + + public Channel getChannelServer(byte channel) { + return Server.getInstance().getChannel(world, channel); + } + + public boolean deleteCharacter(int cid) { + Connection con = DatabaseConnection.getConnection(); + + MapleCharacter player = Server.getInstance().getWorld(0).getPlayerStorage().getCharacterById(cid); + if (player != null){ + player.getClient().disconnect(false, false); + disconnect(false, false); + return false; //DC both and return, fuck that + } + try { + try (PreparedStatement ps = con.prepareStatement("SELECT id, guildid, guildrank, name, allianceRank FROM characters WHERE id = ? AND accountid = ?")) { + ps.setInt(1, cid); + ps.setInt(2, accId); + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + return false; + } + if (rs.getInt("guildid") > 0) { + try { + Server.getInstance().deleteGuildCharacter(new MapleGuildCharacter(cid, 0, rs.getString("name"), (byte) -1, (byte) -1, 0, rs.getInt("guildrank"), rs.getInt("guildid"), false, rs.getInt("allianceRank"))); + } catch (Exception re) { + return false; + } + } + } + } + + try (PreparedStatement ps = con.prepareStatement("DELETE FROM wishlists WHERE charid = ?")) { + ps.setInt(1, cid); + ps.executeUpdate(); + } + try (PreparedStatement ps = con.prepareStatement("DELETE FROM characters WHERE id = ?")) { + ps.setInt(1, cid); + ps.executeUpdate(); + } + String[] toDel = {"famelog", "inventoryitems", "keymap", "queststatus", "savedlocations", "skillmacros", "skills", "eventstats"}; + for (String s : toDel) { + MapleCharacter.deleteWhereCharacterId(con, "DELETE FROM `" + s + "` WHERE characterid = ?", cid); + } + return true; + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + + public String getAccountName() { + return accountName; + } + + public void setAccountName(String a) { + this.accountName = a; + } + + public void setChannel(int channel) { + this.channel = channel; + } + + public int getWorld() { + return world; + } + + public void setWorld(int world) { + this.world = world; + } + + public void pongReceived() { + lastPong = System.currentTimeMillis(); + } + + public void sendPing() { + final long then = System.currentTimeMillis(); + announce(MaplePacketCreator.getPing()); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + try { + if (lastPong < then) { + if (getSession() != null && getSession().isConnected()) { + getSession().close(true); + } + } + } catch (NullPointerException e) { + } + } + }, 15000); + } + + public String getHWID() { + return hwid; + } + + public Set getMacs() { + return Collections.unmodifiableSet(macs); + } + + public int getGMLevel() { + return gmlevel; + } + + public void setScriptEngine(String name, ScriptEngine e) { + engines.put(name, e); + } + + public ScriptEngine getScriptEngine(String name) { + return engines.get(name); + } + + public void removeScriptEngine(String name) { + engines.remove(name); + } + + public ScheduledFuture getIdleTask() { + return idleTask; + } + + public void setIdleTask(ScheduledFuture idleTask) { + this.idleTask = idleTask; + } + + public NPCConversationManager getCM() { + return NPCScriptManager.getInstance().getCM(this); + } + + public QuestActionManager getQM() { + return QuestScriptManager.getInstance().getQM(this); + } + + public boolean acceptToS() { + boolean disconnectForBeingAFaggot = false; + if (accountName == null) { + return true; + } + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT `tos` FROM accounts WHERE id = ?"); + ps.setInt(1, accId); + ResultSet rs = ps.executeQuery(); + + if (rs.next()) { + if (rs.getByte("tos") == 1) { + disconnectForBeingAFaggot = true; + } + } + ps.close(); + rs.close(); + ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET tos = 1 WHERE id = ?"); + ps.setInt(1, accId); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + } + return disconnectForBeingAFaggot; + } + + public int getVotePoints(){ + int points = 0; + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT `votes` FROM accounts WHERE id = ?"); + ps.setInt(1, accId); + ResultSet rs = ps.executeQuery(); + + if (rs.next()) { + points = rs.getInt("votes"); + } + ps.close(); + rs.close(); + + } catch (SQLException e) { + } + votePoints = points; + return votePoints; + } + + public void addVotePoints(int points) { + votePoints += points; + saveVotePoints(); + } + + public void useVotePoints(int points){ + if (points > votePoints){ + //Should not happen, should probably log this + return; + } + votePoints -= points; + saveVotePoints(); + LogHelper.logLeaf(player, false, Integer.toString(points)); + } + + private void saveVotePoints() { + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("UPDATE accounts SET votes = ? WHERE id = ?")) { + ps.setInt(1, votePoints); + ps.setInt(2, accId); + ps.executeUpdate(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public final Lock getLock() { + return mutex; + } + + private static class CharNameAndId { + + public String name; + public int id; + + public CharNameAndId(String name, int id) { + super(); + this.name = name; + this.id = id; + } + } + + private static boolean checkHash(String hash, String type, String password) { + try { + MessageDigest digester = MessageDigest.getInstance(type); + digester.update(password.getBytes("UTF-8"), 0, password.length()); + return HexTool.toString(digester.digest()).replace(" ", "").toLowerCase().equals(hash); + } catch (NoSuchAlgorithmException | UnsupportedEncodingException e) { + throw new RuntimeException("Encoding the string failed", e); + } + } + + public short getCharacterSlots() { + return characterSlots; + } + + public boolean gainCharacterSlot() { + if (characterSlots < 15) { + Connection con = DatabaseConnection.getConnection(); + try { + try (PreparedStatement ps = con.prepareStatement("UPDATE accounts SET characterslots = ? WHERE id = ?")) { + ps.setInt(1, this.characterSlots += 1); + ps.setInt(2, accId); + ps.executeUpdate(); + } + } catch (SQLException e) { + } + return true; + } + return false; + } + + public final byte getGReason() { + final Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = con.prepareStatement("SELECT `greason` FROM `accounts` WHERE id = ?"); + ps.setInt(1, accId); + rs = ps.executeQuery(); + if (rs.next()) { + return rs.getByte("greason"); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if (ps != null) { + ps.close(); + } + if (rs != null) { + rs.close(); + } + } catch (SQLException e) { + } + } + return 0; + } + + public byte getGender() { + return gender; + } + + public void setGender(byte m) { + this.gender = m; + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET gender = ? WHERE id = ?")) { + ps.setByte(1, gender); + ps.setInt(2, accId); + ps.executeUpdate(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public synchronized void announce(final byte[] packet) {//MINA CORE IS A FUCKING BITCH AND I HATE IT <3 + session.write(packet); + } + + + public void changeChannel(int channel) { + Server server = Server.getInstance(); + if (player.isBanned()) { + disconnect(false, false); + return; + } + if (!player.isAlive() || FieldLimit.CHANGECHANNEL.check(player.getMap().getFieldLimit())) { + announce(MaplePacketCreator.enableActions()); + return; + } + String[] socket = Server.getInstance().getIP(getWorld(), channel).split(":"); + if (player.getTrade() != null) { + MapleTrade.cancelTrade(getPlayer()); + } + + HiredMerchant merchant = player.getHiredMerchant(); + if (merchant != null) { + if (merchant.isOwner(getPlayer())) { + merchant.setOpen(true); + } else { + merchant.removeVisitor(getPlayer()); + } + } + server.getPlayerBuffStorage().addBuffsToStorage(player.getId(), player.getAllBuffs()); + player.cancelBuffEffects(); + player.cancelMagicDoor(); + //Canceling mounts? Noty + if (player.getBuffedValue(MapleBuffStat.PUPPET) != null) { + player.cancelEffectFromBuffStat(MapleBuffStat.PUPPET); + } + if (player.getBuffedValue(MapleBuffStat.COMBO) != null) { + player.cancelEffectFromBuffStat(MapleBuffStat.COMBO); + } + player.getInventory(MapleInventoryType.EQUIPPED).checked(false); //test + player.getMap().removePlayer(player); + player.getClient().getChannelServer().removePlayer(player); + player.getClient().updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + try { + announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public long getSessionId() { + return this.sessionId; + } + + public void setSessionId(long sessionId) { + this.sessionId = sessionId; + } + + public boolean canClickNPC(){ + return lastNpcClick + 500 < System.currentTimeMillis(); + } + + public void setClickedNPC(){ + lastNpcClick = System.currentTimeMillis(); + } + + public void removeClickedNPC(){ + lastNpcClick = 0; + } +} diff --git a/src/client/MapleDisease.java b/src/client/MapleDisease.java new file mode 100644 index 0000000000..925ed6111f --- /dev/null +++ b/src/client/MapleDisease.java @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public enum MapleDisease { + NULL(0x0), + SLOW(0x1), + SEDUCE(0x80), + FISHABLE(0x100), + CONFUSE(0x80000), + STUN(0x2000000000000L), + POISON(0x4000000000000L), + SEAL(0x8000000000000L), + DARKNESS(0x10000000000000L), + WEAKEN(0x4000000000000000L), + CURSE(0x8000000000000000L); + + private long i; + private boolean first; + + private MapleDisease(long i) { + this.i = i; + this.first = false; + } + + private MapleDisease(long i, boolean first) { + this.i = i; + this.first = first; + } + + public long getValue() { + return i; + } + + public boolean isFirst() { + return first; + } + +} diff --git a/src/client/MapleFamily.java b/src/client/MapleFamily.java new file mode 100644 index 0000000000..f3ce2a30fe --- /dev/null +++ b/src/client/MapleFamily.java @@ -0,0 +1,88 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package client; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import tools.DatabaseConnection; + +/** + * + * @author Jay Estrella :3 (Mr.Trash) + */ +public class MapleFamily { + private static int id; + private static Map members = new HashMap(); + + public MapleFamily(int cid) { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT familyid FROM family_character WHERE cid = ?"); + ps.setInt(1, cid); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + id = rs.getInt("familyid"); + } + ps.close(); + rs.close(); + getMapleFamily(); + } catch (SQLException ex) { + } + } + + private static void getMapleFamily() { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM family_character WHERE familyid = ?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + MapleFamilyEntry ret = new MapleFamilyEntry(); + ret.setFamilyId(id); + ret.setRank(rs.getInt("rank")); + ret.setReputation(rs.getInt("reputation")); + ret.setTotalJuniors(rs.getInt("totaljuniors")); + ret.setFamilyName(rs.getString("name")); + ret.setJuniors(rs.getInt("juniorsadded")); + ret.setTodaysRep(rs.getInt("todaysrep")); + int cid = rs.getInt("cid"); + ret.setChrId(cid); + members.put(cid, ret); + } + rs.close(); + ps.close(); + } catch (SQLException sqle) { + } + } + + public MapleFamilyEntry getMember(int cid) { + if (members.containsKey(cid)){ + return members.get(cid); + } + return null; + } + + public Map getMembers() { + return members; + } +} diff --git a/src/client/MapleFamilyEntry.java b/src/client/MapleFamilyEntry.java new file mode 100644 index 0000000000..af8ac7e37a --- /dev/null +++ b/src/client/MapleFamilyEntry.java @@ -0,0 +1,105 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public class MapleFamilyEntry { + private int familyId; + private int rank, reputation, totalReputation, todaysRep, totalJuniors, juniors, chrid; + private String familyName; + + public int getId() { + return familyId; + } + + public void setFamilyId(int familyId) { + this.familyId = familyId; + } + + public int getRank() { + return rank; + } + + public void setRank(int rank) { + this.rank = rank; + } + + public int getChrId() { + return chrid; + } + + public void setChrId(int chrid) { + this.chrid = chrid; + } + + public int getReputation() { + return reputation; + } + + public int getTodaysRep() { + return todaysRep; + } + + public void setReputation(int reputation) { + this.reputation = reputation; + } + + public void setTodaysRep(int today) { + this.todaysRep = today; + } + + public void gainReputation(int gain) { + this.reputation += gain; + this.totalReputation += gain; + } + + public int getTotalJuniors() { + return totalJuniors; + } + + public void setTotalJuniors(int totalJuniors) { + this.totalJuniors = totalJuniors; + } + + public int getJuniors() { + return juniors; + } + + public void setJuniors(int juniors) { + this.juniors = juniors; + } + + public void setFamilyName(String familyName) { + this.familyName = familyName; + } + + public String getFamilyName() { + return familyName; + } + + public int getTotalReputation() { + return totalReputation; + } + + public void setTotalReputation(int totalReputation) { + this.totalReputation = totalReputation; + } +} diff --git a/src/client/MapleJob.java b/src/client/MapleJob.java new file mode 100644 index 0000000000..fb202462b4 --- /dev/null +++ b/src/client/MapleJob.java @@ -0,0 +1,121 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public enum MapleJob { + BEGINNER(0), + + WARRIOR(100), + FIGHTER(110), CRUSADER(111), HERO(112), + PAGE(120), WHITEKNIGHT(121), PALADIN(122), + SPEARMAN(130), DRAGONKNIGHT(131), DARKKNIGHT(132), + + MAGICIAN(200), + FP_WIZARD(210), FP_MAGE(211), FP_ARCHMAGE(212), + IL_WIZARD(220), IL_MAGE(221), IL_ARCHMAGE(222), + CLERIC(230), PRIEST(231), BISHOP(232), + + BOWMAN(300), + HUNTER(310), RANGER(311), BOWMASTER(312), + CROSSBOWMAN(320), SNIPER(321), MARKSMAN(322), + + THIEF(400), + ASSASSIN(410), HERMIT(411), NIGHTLORD(412), + BANDIT(420), CHIEFBANDIT(421), SHADOWER(422), + + PIRATE(500), + BRAWLER(510), MARAUDER(511), BUCCANEER(512), + GUNSLINGER(520), OUTLAW(521), CORSAIR(522), + + MAPLELEAF_BRIGADIER(800), + GM(900), SUPERGM(910), + + NOBLESSE(1000), + DAWNWARRIOR1(1100), DAWNWARRIOR2(1110), DAWNWARRIOR3(1111), DAWNWARRIOR4(1112), + BLAZEWIZARD1(1200), BLAZEWIZARD2(1210), BLAZEWIZARD3(1211), BLAZEWIZARD4(1212), + WINDARCHER1(1300), WINDARCHER2(1310), WINDARCHER3(1311), WINDARCHER4(1312), + NIGHTWALKER1(1400), NIGHTWALKER2(1410), NIGHTWALKER3(1411), NIGHTWALKER4(1412), + THUNDERBREAKER1(1500), THUNDERBREAKER2(1510), THUNDERBREAKER3(1511), THUNDERBREAKER4(1512), + + LEGEND(2000), EVAN(2001), + ARAN1(2100),ARAN2(2110), ARAN3(2111), ARAN4(2112), + + EVAN1(2200), EVAN2(2210), EVAN3(2211), EVAN4(2212), EVAN5(2213), EVAN6(2214), + EVAN7(2215), EVAN8(2216), EVAN9(2217), EVAN10(2218); + + final int jobid; + + private MapleJob(int id) { + jobid = id; + } + + public int getId() { + return jobid; + } + + public static MapleJob getById(int id) { + for (MapleJob l : MapleJob.values()) { + if (l.getId() == id) { + return l; + } + } + return null; + } + + public static MapleJob getBy5ByteEncoding(int encoded) { + switch (encoded) { + case 2: + return WARRIOR; + case 4: + return MAGICIAN; + case 8: + return BOWMAN; + case 16: + return THIEF; + case 32: + return PIRATE; + case 1024: + return NOBLESSE; + case 2048: + return DAWNWARRIOR1; + case 4096: + return BLAZEWIZARD1; + case 8192: + return WINDARCHER1; + case 16384: + return NIGHTWALKER1; + case 32768: + return THUNDERBREAKER1; + default: + return BEGINNER; + } + } + + public boolean isBeginner(MapleJob beginners) { + return MAGICIAN == beginners || WARRIOR == beginners || THIEF == beginners || PIRATE == beginners || BOWMAN == beginners || ARAN1 == beginners || THUNDERBREAKER1 == beginners + || DAWNWARRIOR1 == beginners || NIGHTWALKER1 == beginners || BLAZEWIZARD1 == beginners; + } + + public boolean isA(MapleJob basejob) { + return getId() >= basejob.getId() && getId() / 100 == basejob.getId() / 100; + } +} diff --git a/src/client/MapleKeyBinding.java b/src/client/MapleKeyBinding.java new file mode 100644 index 0000000000..77dee48d9d --- /dev/null +++ b/src/client/MapleKeyBinding.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public class MapleKeyBinding { + private int type, action; + + public MapleKeyBinding(int type, int action) { + this.type = type; + this.action = action; + } + + public int getType() { + return type; + } + + public int getAction() { + return action; + } +} diff --git a/src/client/MapleMount.java b/src/client/MapleMount.java new file mode 100644 index 0000000000..d05256974b --- /dev/null +++ b/src/client/MapleMount.java @@ -0,0 +1,154 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import java.util.concurrent.ScheduledFuture; +import server.TimerManager; +import tools.MaplePacketCreator; + +/** + * @author PurpleMadness Patrick :O + */ +public class MapleMount { + private int itemid; + private int skillid; + private int tiredness; + private int exp; + private int level; + private ScheduledFuture tirednessSchedule; + private MapleCharacter owner; + private boolean active; + + public MapleMount(MapleCharacter owner, int id, int skillid) { + this.itemid = id; + this.skillid = skillid; + this.tiredness = 0; + this.level = 1; + this.exp = 0; + this.owner = owner; + active = true; + } + + public int getItemId() { + return itemid; + } + + public int getSkillId() { + return skillid; + } + + /** + * 1902000 - Hog + * 1902001 - Silver Mane + * 1902002 - Red Draco + * 1902005 - Mimiana + * 1902006 - Mimio + * 1902007 - Shinjou + * 1902008 - Frog + * 1902009 - Ostrich + * 1902010 - Frog + * 1902011 - Turtle + * 1902012 - Yeti + * @return the id + */ + public int getId() { + if (this.itemid < 1903000) { + return itemid - 1901999; + } + return 5; + } + + public int getTiredness() { + return tiredness; + } + + public int getExp() { + return exp; + } + + public int getLevel() { + return level; + } + + public void setTiredness(int newtiredness) { + this.tiredness = newtiredness; + if (tiredness < 0) { + tiredness = 0; + } + } + + private void increaseTiredness() { + if(owner != null) { + this.tiredness++; + owner.getMap().broadcastMessage(MaplePacketCreator.updateMount(owner.getId(), this, false)); + if (tiredness > 99) { + this.tiredness = 95; + owner.dispelSkill(owner.getJobType() * 10000000 + 1004); + } + } else { + if(this.tirednessSchedule != null) { + this.tirednessSchedule.cancel(false); + } + } + } + + public void setExp(int newexp) { + this.exp = newexp; + } + + public void setLevel(int newlevel) { + this.level = newlevel; + } + + public void setItemId(int newitemid) { + this.itemid = newitemid; + } + + public void startSchedule() { + this.tirednessSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + increaseTiredness(); + } + }, 60000, 60000); + } + + public void cancelSchedule() { + if (this.tirednessSchedule != null) { + this.tirednessSchedule.cancel(false); + } + } + + public void setActive(boolean set) { + this.active = set; + } + + public boolean isActive() { + return active; + } + + public void empty() { + cancelSchedule(); + this.tirednessSchedule = null; + this.owner = null; + } +} diff --git a/src/client/MapleQuestStatus.java b/src/client/MapleQuestStatus.java new file mode 100644 index 0000000000..20b4007466 --- /dev/null +++ b/src/client/MapleQuestStatus.java @@ -0,0 +1,205 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import server.quest.MapleQuest; +import tools.StringUtil; + +/** + * + * @author Matze + */ +public class MapleQuestStatus { + public enum Status { + UNDEFINED(-1), + NOT_STARTED(0), + STARTED(1), + COMPLETED(2); + final int status; + + private Status(int id) { + status = id; + } + + public int getId() { + return status; + } + + public static Status getById(int id) { + for (Status l : Status.values()) { + if (l.getId() == id) { + return l; + } + } + return null; + } + } + private short questID; + private Status status; + private Map progress = new LinkedHashMap(); + private List medalProgress = new LinkedList(); + private int npc; + private long completionTime; + private int forfeited = 0; + private String customData; + + public MapleQuestStatus(MapleQuest quest, Status status) { + this.questID = quest.getId(); + this.setStatus(status); + this.completionTime = System.currentTimeMillis(); + if (status == Status.STARTED) + registerMobs(); + } + + public MapleQuestStatus(MapleQuest quest, Status status, int npc) { + this.questID = quest.getId(); + this.setStatus(status); + this.setNpc(npc); + this.completionTime = System.currentTimeMillis(); + if (status == Status.STARTED) { + registerMobs(); + } + } + + public MapleQuest getQuest() { + return MapleQuest.getInstance(questID); + } + + public short getQuestID() { + return questID; + } + + public Status getStatus() { + return status; + } + + public final void setStatus(Status status) { + this.status = status; + } + + public int getNpc() { + return npc; + } + + public final void setNpc(int npc) { + this.npc = npc; + } + + private void registerMobs() { + for (int i : MapleQuest.getInstance(questID).getRelevantMobs()) { + progress.put(i, "000"); + } + } + + public boolean addMedalMap(int mapid) { + if (medalProgress.contains(mapid)) return false; + medalProgress.add(mapid); + return true; + } + + public int getMedalProgress() { + return medalProgress.size(); + } + + public List getMedalMaps() { + return medalProgress; + } + + public boolean progress(int id) { + if (progress.get(id) != null) { + int current = Integer.parseInt(progress.get(id)); + String str = StringUtil.getLeftPaddedStr(Integer.toString(current + 1), '0', 3); + progress.put(id, str); + return true; + } + return false; + } + + public void setProgress(int id, String pr) { + progress.put(id, pr); + } + + public boolean madeProgress() { + return progress.size() > 0; + } + + public String getProgress(int id) { + if (progress.get(id) == null) return ""; + return progress.get(id); + } + + public Map getProgress() { + return Collections.unmodifiableMap(progress); + } + + public long getCompletionTime() { + return completionTime; + } + + public void setCompletionTime(long completionTime) { + this.completionTime = completionTime; + } + + public int getForfeited() { + return forfeited; + } + + public String getInfo() { + if(!progress.containsKey(0) && !getMedalMaps().isEmpty()) { + return Integer.toString(getMedalProgress()); + } + return getProgress(0); + } + + public void setInfo(String newInfo) { + progress.put(0, newInfo); + } + + public void setForfeited(int forfeited) { + if (forfeited >= this.forfeited) { + this.forfeited = forfeited; + } else { + throw new IllegalArgumentException("Can't set forfeits to something lower than before."); + } + } + + public final void setCustomData(final String customData) { + this.customData = customData; + } + + public final String getCustomData() { + return customData; + } + + public String getQuestData() { + StringBuilder str = new StringBuilder(); + for (String ps : progress.values()) { + str.append(ps); + } + return str.toString(); + } +} \ No newline at end of file diff --git a/src/client/MapleRing.java b/src/client/MapleRing.java new file mode 100644 index 0000000000..ec180d51d0 --- /dev/null +++ b/src/client/MapleRing.java @@ -0,0 +1,172 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import tools.DatabaseConnection; + +/** + * + * @author Danny + */ +public class MapleRing implements Comparable { + private int ringId; + private int ringId2; + private int partnerId; + private int itemId; + private String partnerName; + private boolean equipped = false; + + public MapleRing(int id, int id2, int partnerId, int itemid, String partnername) { + this.ringId = id; + this.ringId2 = id2; + this.partnerId = partnerId; + this.itemId = itemid; + this.partnerName = partnername; + } + + public static MapleRing loadFromDb(int ringId) { + try { + MapleRing ret = null; + Connection con = DatabaseConnection.getConnection(); // Get a connection to the database + PreparedStatement ps = con.prepareStatement("SELECT * FROM rings WHERE id = ?"); // Get ring details.. + ps.setInt(1, ringId); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + ret = new MapleRing(ringId, rs.getInt("partnerRingId"), rs.getInt("partnerChrId"), rs.getInt("itemid"), rs.getString("partnerName")); + } + rs.close(); + ps.close(); + return ret; + } catch (SQLException ex) { + ex.printStackTrace(); + return null; + } + } + + public static int createRing(int itemid, final MapleCharacter partner1, final MapleCharacter partner2) { + try { + if (partner1 == null) { + return -2; + } else if (partner2 == null) { + return -1; + } + int[] ringID = new int[2]; + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("INSERT INTO rings (itemid, partnerChrId, partnername) VALUES (?, ?, ?)", Statement.RETURN_GENERATED_KEYS); + ps.setInt(1, itemid); + ps.setInt(2, partner2.getId()); + ps.setString(3, partner2.getName()); + ps.executeUpdate(); + ResultSet rs = ps.getGeneratedKeys(); + rs.next(); + ringID[0] = rs.getInt(1); // ID. + rs.close(); + ps.close(); + ps = con.prepareStatement("INSERT INTO rings (itemid, partnerRingId, partnerChrId, partnername) VALUES (?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS); + ps.setInt(1, itemid); + ps.setInt(2, ringID[0]); + ps.setInt(3, partner1.getId()); + ps.setString(4, partner1.getName()); + ps.executeUpdate(); + rs = ps.getGeneratedKeys(); + rs.next(); + ringID[1] = rs.getInt(1); + rs.close(); + ps.close(); + ps = con.prepareStatement("UPDATE rings SET partnerRingId = ? WHERE id = ?"); + ps.setInt(1, ringID[1]); + ps.setInt(2, ringID[0]); + ps.executeUpdate(); + ps.close(); + return ringID[0]; + } catch (SQLException ex) { + ex.printStackTrace(); + return -1; + } + } + + public int getRingId() { + return ringId; + } + + public int getPartnerRingId() { + return ringId2; + } + + public int getPartnerChrId() { + return partnerId; + } + + public int getItemId() { + return itemId; + } + + public String getPartnerName() { + return partnerName; + } + + public boolean equipped() { + return equipped; + } + + public void equip() { + this.equipped = true; + } + + public void unequip() { + this.equipped = false; + } + + @Override + public boolean equals(Object o) { + if (o instanceof MapleRing) { + if (((MapleRing) o).getRingId() == getRingId()) { + return true; + } else { + return false; + } + } + return false; + } + + @Override + public int hashCode() { + int hash = 5; + hash = 53 * hash + this.ringId; + return hash; + } + + @Override + public int compareTo(MapleRing other) { + if (ringId < other.getRingId()) { + return -1; + } else if (ringId == other.getRingId()) { + return 0; + } + return 1; + } +} diff --git a/src/client/MapleSkinColor.java b/src/client/MapleSkinColor.java new file mode 100644 index 0000000000..7014c40bb9 --- /dev/null +++ b/src/client/MapleSkinColor.java @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public enum MapleSkinColor { + NORMAL(0), DARK(1), BLACK(2), PALE(3), BLUE(4), GREEN(5), WHITE(9), PINK(10); + final int id; + + private MapleSkinColor(int id) { + this.id = id; + } + + public int getId() { + return id; + } + + public static MapleSkinColor getById(int id) { + for (MapleSkinColor l : MapleSkinColor.values()) { + if (l.getId() == id) { + return l; + } + } + return null; + } +} diff --git a/src/client/MapleStat.java b/src/client/MapleStat.java new file mode 100644 index 0000000000..dcaea31167 --- /dev/null +++ b/src/client/MapleStat.java @@ -0,0 +1,121 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package client; + +public enum MapleStat { + + SKIN(0x1), + FACE(0x2), + HAIR(0x4), + LEVEL(0x10), + JOB(0x20), + STR(0x40), + DEX(0x80), + INT(0x100), + LUK(0x200), + HP(0x400), + MAXHP(0x800), + MP(0x1000), + MAXMP(0x2000), + AVAILABLEAP(0x4000), + AVAILABLESP(0x8000), + EXP(0x10000), + FAME(0x20000), + MESO(0x40000), + PET(0x180008), + GACHAEXP(0x200000); + private final int i; + + private MapleStat(int i) { + this.i = i; + } + + public int getValue() { + return i; + } + + public static MapleStat getByValue(int value) { + for (MapleStat stat : MapleStat.values()) { + if (stat.getValue() == value) { + return stat; + } + } + return null; + } + + public static MapleStat getBy5ByteEncoding(int encoded) { + switch (encoded) { + case 64: + return STR; + case 128: + return DEX; + case 256: + return INT; + case 512: + return LUK; + } + return null; + } + + public static MapleStat getByString(String type) { + if (type.equals("SKIN")) { + return SKIN; + } else if (type.equals("FACE")) { + return FACE; + } else if (type.equals("HAIR")) { + return HAIR; + } else if (type.equals("LEVEL")) { + return LEVEL; + } else if (type.equals("JOB")) { + return JOB; + } else if (type.equals("STR")) { + return STR; + } else if (type.equals("DEX")) { + return DEX; + } else if (type.equals("INT")) { + return INT; + } else if (type.equals("LUK")) { + return LUK; + } else if (type.equals("HP")) { + return HP; + } else if (type.equals("MAXHP")) { + return MAXHP; + } else if (type.equals("MP")) { + return MP; + } else if (type.equals("MAXMP")) { + return MAXMP; + } else if (type.equals("AVAILABLEAP")) { + return AVAILABLEAP; + } else if (type.equals("AVAILABLESP")) { + return AVAILABLESP; + } else if (type.equals("EXP")) { + return EXP; + } else if (type.equals("FAME")) { + return FAME; + } else if (type.equals("MESO")) { + return MESO; + } else if (type.equals("PET")) { + return PET; + } + return null; + } +} diff --git a/src/client/MonsterBook.java b/src/client/MonsterBook.java new file mode 100644 index 0000000000..176bb29465 --- /dev/null +++ b/src/client/MonsterBook.java @@ -0,0 +1,138 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +public final class MonsterBook { + private int specialCard; + private int normalCard = 0; + private int bookLevel = 1; + private Map cards = new LinkedHashMap<>(); + + public void addCard(final MapleClient c, final int cardid) { + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeginCardEffect(c.getPlayer().getId()), false); + for (Entry all : cards.entrySet()) { + if (all.getKey() == cardid) { + if (all.getValue() > 4) { + c.announce(MaplePacketCreator.addCard(true, cardid, all.getValue())); + } else { + all.setValue(all.getValue() + 1); + c.announce(MaplePacketCreator.addCard(false, cardid, all.getValue())); + c.announce(MaplePacketCreator.showGainCard()); + calculateLevel(); + } + return; + } + } + cards.put(cardid, 1); + c.announce(MaplePacketCreator.addCard(false, cardid, 1)); + c.announce(MaplePacketCreator.showGainCard()); + calculateLevel(); + c.getPlayer().saveToDB(); + } + + private void calculateLevel() { + bookLevel = (int) Math.max(1, Math.sqrt((normalCard + specialCard) / 5)); + } + + public int getBookLevel() { + return bookLevel; + } + + public Map getCards() { + return cards; + } + + public int getTotalCards() { + return specialCard + normalCard; + } + + public int getNormalCard() { + return normalCard; + } + + public int getSpecialCard() { + return specialCard; + } + + public void loadCards(final int charid) throws SQLException { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT cardid, level FROM monsterbook WHERE charid = ? ORDER BY cardid ASC")) { + ps.setInt(1, charid); + try (ResultSet rs = ps.executeQuery()) { + int cardid, level; + while (rs.next()) { + cardid = rs.getInt("cardid"); + level = rs.getInt("level"); + if (cardid / 1000 >= 2388) { + specialCard++; + } else { + normalCard++; + } + cards.put(cardid, level); + } + } + } + calculateLevel(); + } + + public void saveCards(final int charid) { + if (cards.isEmpty()) { + return; + } + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("DELETE FROM monsterbook WHERE charid = ?"); + ps.setInt(1, charid); + ps.execute(); + ps.close(); + boolean first = true; + StringBuilder query = new StringBuilder(); + for (Entry all : cards.entrySet()) { + if (first) { + query.append("INSERT INTO monsterbook VALUES ("); + first = false; + } else { + query.append(",("); + } + query.append(charid); + query.append(", "); + query.append(all.getKey()); + query.append(", "); + query.append(all.getValue()); + query.append(")"); + } + ps = con.prepareStatement(query.toString()); + ps.execute(); + ps.close(); + } catch (SQLException e) { + } + } +} diff --git a/src/client/Skill.java b/src/client/Skill.java new file mode 100644 index 0000000000..bd4fd88c85 --- /dev/null +++ b/src/client/Skill.java @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import java.util.ArrayList; +import java.util.List; +import server.MapleStatEffect; +import server.life.Element; + +public class Skill { + public int id; + public List effects = new ArrayList<>(); + public Element element; + public int animationTime; + public int job; + public boolean action; + + public Skill(int id) { + this.id = id; + this.job = id / 10000; + } + + public int getId() { + return id; + } + + public MapleStatEffect getEffect(int level) { + return effects.get(level - 1); + } + + public int getMaxLevel() { + return effects.size(); + } + + public boolean isFourthJob() { + if (job == 2212) { + return false; + } + if (id == 22170001 || id == 22171003 || id == 22171004 || id == 22181002 || id == 22181003) { + return true; + } + return job % 10 == 2; + } + + public Element getElement() { + return element; + } + + public int getAnimationTime() { + return animationTime; + } + + public boolean isBeginnerSkill() { + return id % 10000000 < 10000; + } + + public boolean getAction() { + return action; + } +} \ No newline at end of file diff --git a/src/client/SkillFactory.java b/src/client/SkillFactory.java new file mode 100644 index 0000000000..2c407f5c4d --- /dev/null +++ b/src/client/SkillFactory.java @@ -0,0 +1,402 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +import constants.skills.Aran; +import constants.skills.Archer; +import constants.skills.Assassin; +import constants.skills.Bandit; +import constants.skills.Beginner; +import constants.skills.Bishop; +import constants.skills.BlazeWizard; +import constants.skills.Bowmaster; +import constants.skills.Buccaneer; +import constants.skills.ChiefBandit; +import constants.skills.Cleric; +import constants.skills.Corsair; +import constants.skills.Crossbowman; +import constants.skills.Crusader; +import constants.skills.DarkKnight; +import constants.skills.DawnWarrior; +import constants.skills.DragonKnight; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.FPMage; +import constants.skills.FPWizard; +import constants.skills.Fighter; +import constants.skills.GM; +import constants.skills.Gunslinger; +import constants.skills.Hermit; +import constants.skills.Hero; +import constants.skills.Hunter; +import constants.skills.ILArchMage; +import constants.skills.ILMage; +import constants.skills.ILWizard; +import constants.skills.Legend; +import constants.skills.Magician; +import constants.skills.Marauder; +import constants.skills.Marksman; +import constants.skills.NightLord; +import constants.skills.NightWalker; +import constants.skills.Noblesse; +import constants.skills.Page; +import constants.skills.Paladin; +import constants.skills.Pirate; +import constants.skills.Priest; +import constants.skills.Ranger; +import constants.skills.Rogue; +import constants.skills.Shadower; +import constants.skills.Sniper; +import constants.skills.Spearman; +import constants.skills.SuperGM; +import constants.skills.Swordsman; +import constants.skills.ThunderBreaker; +import constants.skills.WhiteKnight; +import constants.skills.WindArcher; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataFileEntry; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import server.MapleStatEffect; +import server.life.Element; + +public class SkillFactory { + private static Map skills = new HashMap<>(); + private static MapleDataProvider datasource = MapleDataProviderFactory.getDataProvider(MapleDataProviderFactory.fileInWZPath("Skill.wz")); + + public static Skill getSkill(int id) { + if (!skills.isEmpty()) { + return skills.get(Integer.valueOf(id)); + } + return null; + } + + public static void loadAllSkills() { + final MapleDataDirectoryEntry root = datasource.getRoot(); + int skillid; + for (MapleDataFileEntry topDir : root.getFiles()) { // Loop thru jobs + if (topDir.getName().length() <= 8) { + for (MapleData data : datasource.getData(topDir.getName())) { // Loop thru each jobs + if (data.getName().equals("skill")) { + for (MapleData data2 : data) { // Loop thru each jobs + if (data2 != null) { + skillid = Integer.parseInt(data2.getName()); + skills.put(skillid, loadFromData(skillid, data2)); + } + } + } + } + } + } + } + + private static Skill loadFromData(int id, MapleData data) { + Skill ret = new Skill(id); + boolean isBuff = false; + int skillType = MapleDataTool.getInt("skillType", data, -1); + String elem = MapleDataTool.getString("elemAttr", data, null); + if (elem != null) { + ret.element = Element.getFromChar(elem.charAt(0)); + } else { + ret.element = Element.NEUTRAL; + } + MapleData effect = data.getChildByPath("effect"); + if (skillType != -1) { + if (skillType == 2) { + isBuff = true; + } + } else { + MapleData action_ = data.getChildByPath("action"); + boolean action = false; + if (action_ == null) { + if (data.getChildByPath("prepare/action") != null) { + action = true; + } else { + switch (id) { + case Gunslinger.INVISIBLE_SHOT: + case Corsair.HYPNOTIZE: + action = true; + break; + } + } + } else { + action = true; + } + ret.action = action; + MapleData hit = data.getChildByPath("hit"); + MapleData ball = data.getChildByPath("ball"); + isBuff = effect != null && hit == null && ball == null; + isBuff |= action_ != null && MapleDataTool.getString("0", action_, "").equals("alert2"); + switch (id) { + case Hero.RUSH: + case Paladin.RUSH: + case DarkKnight.RUSH: + case DragonKnight.SACRIFICE: + case FPMage.EXPLOSION: + case FPMage.POISON_MIST: + case Cleric.HEAL: + case Ranger.MORTAL_BLOW: + case Sniper.MORTAL_BLOW: + case Assassin.DRAIN: + case Hermit.SHADOW_WEB: + case Bandit.STEAL: + case Shadower.SMOKE_SCREEN: + case SuperGM.HEAL_PLUS_DISPEL: + case Hero.MONSTER_MAGNET: + case Paladin.MONSTER_MAGNET: + case DarkKnight.MONSTER_MAGNET: + case Evan.ICE_BREATH: + case Evan.FIRE_BREATH: + case Gunslinger.RECOIL_SHOT: + case Marauder.ENERGY_DRAIN: + case BlazeWizard.FLAME_GEAR: + case NightWalker.SHADOW_WEB: + case NightWalker.POISON_BOMB: + case NightWalker.VAMPIRE: + case ChiefBandit.CHAKRA: + case Evan.RECOVERY_AURA: + isBuff = false; + break; + case Beginner.RECOVERY: + case Beginner.NIMBLE_FEET: + case Beginner.MONSTER_RIDER: + case Beginner.ECHO_OF_HERO: + case Swordsman.IRON_BODY: + case Fighter.AXE_BOOSTER: + case Fighter.POWER_GUARD: + case Fighter.RAGE: + case Fighter.SWORD_BOOSTER: + case Crusader.ARMOR_CRASH: + case Crusader.COMBO: + case Hero.ENRAGE: + case Hero.HEROS_WILL: + case Hero.MAPLE_WARRIOR: + case Hero.STANCE: + case Page.BW_BOOSTER: + case Page.POWER_GUARD: + case Page.SWORD_BOOSTER: + case Page.THREATEN: + case WhiteKnight.BW_FIRE_CHARGE: + case WhiteKnight.BW_ICE_CHARGE: + case WhiteKnight.BW_LIT_CHARGE: + case WhiteKnight.MAGIC_CRASH: + case WhiteKnight.SWORD_FIRE_CHARGE: + case WhiteKnight.SWORD_ICE_CHARGE: + case WhiteKnight.SWORD_LIT_CHARGE: + case Paladin.BW_HOLY_CHARGE: + case Paladin.HEROS_WILL: + case Paladin.MAPLE_WARRIOR: + case Paladin.STANCE: + case Paladin.SWORD_HOLY_CHARGE: + case Spearman.HYPER_BODY: + case Spearman.IRON_WILL: + case Spearman.POLEARM_BOOSTER: + case Spearman.SPEAR_BOOSTER: + case DragonKnight.DRAGON_BLOOD: + case DragonKnight.POWER_CRASH: + case DarkKnight.AURA_OF_BEHOLDER: + case DarkKnight.BEHOLDER: + case DarkKnight.HEROS_WILL: + case DarkKnight.HEX_OF_BEHOLDER: + case DarkKnight.MAPLE_WARRIOR: + case DarkKnight.STANCE: + case Magician.MAGIC_GUARD: + case Magician.MAGIC_ARMOR: + case FPWizard.MEDITATION: + case FPWizard.SLOW: + case FPMage.SEAL: + case FPMage.SPELL_BOOSTER: + case FPArchMage.HEROS_WILL: + case FPArchMage.INFINITY: + case FPArchMage.MANA_REFLECTION: + case FPArchMage.MAPLE_WARRIOR: + case ILWizard.MEDITATION: + case ILMage.SEAL: + case ILWizard.SLOW: + case ILMage.SPELL_BOOSTER: + case ILArchMage.HEROS_WILL: + case ILArchMage.INFINITY: + case ILArchMage.MANA_REFLECTION: + case ILArchMage.MAPLE_WARRIOR: + case Cleric.INVINCIBLE: + case Cleric.BLESS: + case Priest.DISPEL: + case Priest.DOOM: + case Priest.HOLY_SYMBOL: + case Priest.MYSTIC_DOOR: + case Bishop.HEROS_WILL: + case Bishop.HOLY_SHIELD: + case Bishop.INFINITY: + case Bishop.MANA_REFLECTION: + case Bishop.MAPLE_WARRIOR: + case Archer.FOCUS: + case Hunter.BOW_BOOSTER: + case Hunter.SOUL_ARROW: + case Ranger.PUPPET: + case Bowmaster.CONCENTRATE: + case Bowmaster.HEROS_WILL: + case Bowmaster.MAPLE_WARRIOR: + case Bowmaster.SHARP_EYES: + case Crossbowman.CROSSBOW_BOOSTER: + case Crossbowman.SOUL_ARROW: + case Sniper.PUPPET: + case Marksman.BLIND: + case Marksman.HEROS_WILL: + case Marksman.MAPLE_WARRIOR: + case Marksman.SHARP_EYES: + case Rogue.DARK_SIGHT: + case Assassin.CLAW_BOOSTER: + case Assassin.HASTE: + case Hermit.MESO_UP: + case Hermit.SHADOW_PARTNER: + case NightLord.HEROS_WILL: + case NightLord.MAPLE_WARRIOR: + case NightLord.NINJA_AMBUSH: + case NightLord.SHADOW_STARS: + case Bandit.DAGGER_BOOSTER: + case Bandit.HASTE: + case ChiefBandit.MESO_GUARD: + case ChiefBandit.PICKPOCKET: + case Shadower.HEROS_WILL: + case Shadower.MAPLE_WARRIOR: + case Shadower.NINJA_AMBUSH: + case Pirate.DASH: + case Marauder.TRANSFORMATION: + case Buccaneer.SUPER_TRANSFORMATION: + case Corsair.BATTLE_SHIP: + case GM.HIDE: + case SuperGM.HASTE: + case SuperGM.HOLY_SYMBOL: + case SuperGM.BLESS: + case SuperGM.HIDE: + case SuperGM.HYPER_BODY: + case Noblesse.BLESSING_OF_THE_FAIRY: + case Noblesse.ECHO_OF_HERO: + case Noblesse.MONSTER_RIDER: + case Noblesse.NIMBLE_FEET: + case Noblesse.RECOVERY: + case DawnWarrior.COMBO: + case DawnWarrior.FINAL_ATTACK: + case DawnWarrior.IRON_BODY: + case DawnWarrior.RAGE: + case DawnWarrior.SOUL: + case DawnWarrior.SOUL_CHARGE: + case DawnWarrior.SWORD_BOOSTER: + case BlazeWizard.ELEMENTAL_RESET: + case BlazeWizard.FLAME: + case BlazeWizard.IFRIT: + case BlazeWizard.MAGIC_ARMOR: + case BlazeWizard.MAGIC_GUARD: + case BlazeWizard.MEDITATION: + case BlazeWizard.SEAL: + case BlazeWizard.SLOW: + case BlazeWizard.SPELL_BOOSTER: + case WindArcher.BOW_BOOSTER: + case WindArcher.EAGLE_EYE: + case WindArcher.FINAL_ATTACK: + case WindArcher.FOCUS: + case WindArcher.PUPPET: + case WindArcher.SOUL_ARROW: + case WindArcher.STORM: + case WindArcher.WIND_WALK: + case NightWalker.CLAW_BOOSTER: + case NightWalker.DARKNESS: + case NightWalker.DARK_SIGHT: + case NightWalker.HASTE: + case NightWalker.SHADOW_PARTNER: + case ThunderBreaker.DASH: + case ThunderBreaker.ENERGY_CHARGE: + case ThunderBreaker.ENERGY_DRAIN: + case ThunderBreaker.KNUCKLER_BOOSTER: + case ThunderBreaker.LIGHTNING: + case ThunderBreaker.SPARK: + case ThunderBreaker.LIGHTNING_CHARGE: + case ThunderBreaker.SPEED_INFUSION: + case ThunderBreaker.TRANSFORMATION: + case Legend.BLESSING_OF_THE_FAIRY: + case Legend.AGILE_BODY: + case Legend.ECHO_OF_HERO: + case Legend.RECOVERY: + case Legend.MONSTER_RIDER: + case Aran.MAPLE_WARRIOR: + case Aran.HEROS_WILL: + case Aran.POLEARM_BOOSTER: + case Aran.COMBO_DRAIN: + case Aran.SNOW_CHARGE: + case Aran.BODY_PRESSURE: + case Aran.SMART_KNOCKBACK: + case Aran.COMBO_BARRIER: + case Aran.COMBO_ABILITY: + case Evan.BLESSING_OF_THE_FAIRY: + case Evan.RECOVERY: + case Evan.NIMBLE_FEET: + case Evan.HEROS_WILL: + case Evan.ECHO_OF_HERO: + case Evan.MAGIC_BOOSTER: + case Evan.MAGIC_GUARD: + case Evan.ELEMENTAL_RESET: + case Evan.MAPLE_WARRIOR: + case Evan.MAGIC_RESISTANCE: + case Evan.MAGIC_SHIELD: + case Evan.SLOW: + isBuff = true; + break; + } + } + + for (MapleData level : data.getChildByPath("level")) { + ret.effects.add(MapleStatEffect.loadSkillEffectFromData(level, id, isBuff)); + } + ret.animationTime = 0; + if (effect != null) { + for (MapleData effectEntry : effect) { + ret.animationTime += MapleDataTool.getIntConvert("delay", effectEntry, 0); + } + } + return ret; + } + + public static String getSkillName(int skillid) { + MapleData data = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img"); + StringBuilder skill = new StringBuilder(); + skill.append(String.valueOf(skillid)); + if (skill.length() == 4) { + skill.delete(0, 4); + skill.append("000").append(String.valueOf(skillid)); + } + if (data.getChildByPath(skill.toString()) != null) { + for (MapleData skilldata : data.getChildByPath(skill.toString()).getChildren()) { + if (skilldata.getName().equals("name")) + return MapleDataTool.getString(skilldata, null); + } + } + + return null; + } +} diff --git a/src/client/SkillMacro.java b/src/client/SkillMacro.java new file mode 100644 index 0000000000..7f4e38c319 --- /dev/null +++ b/src/client/SkillMacro.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client; + +public class SkillMacro { + private int skill1; + private int skill2; + private int skill3; + private String name; + private int shout; + private int position; + + public SkillMacro(int skill1, int skill2, int skill3, String name, int shout, int position) { + this.skill1 = skill1; + this.skill2 = skill2; + this.skill3 = skill3; + this.name = name; + this.shout = shout; + this.position = position; + } + + public int getSkill1() { + return skill1; + } + + public int getSkill2() { + return skill2; + } + + public int getSkill3() { + return skill3; + } + + public String getName() { + return name; + } + + public int getShout() { + return shout; + } + + public int getPosition() { + return position; + } +} diff --git a/src/client/autoban/AutobanFactory.java b/src/client/autoban/AutobanFactory.java new file mode 100644 index 0000000000..66e166a8ff --- /dev/null +++ b/src/client/autoban/AutobanFactory.java @@ -0,0 +1,104 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ + +package client.autoban; + +import client.MapleCharacter; +import constants.ServerConstants; +import net.server.Server; +import tools.FilePrinter; +import tools.MapleLogger; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +public enum AutobanFactory { + MOB_COUNT, + GENERAL, + FIX_DAMAGE, + DAMAGE_HACK(15, 60 * 1000), + DISTANCE_HACK(10, 120 * 1000), + PORTAL_DISTANCE(5, 30000), + PACKET_EDIT, + ACC_HACK, + CREATION_GENERATOR, + HIGH_HP_HEALING, + FAST_HP_HEALING(15), + FAST_MP_HEALING(20, 30000), + GACHA_EXP, + TUBI(20, 15000), + SHORT_ITEM_VAC, + ITEM_VAC, + FAST_ITEM_PICKUP(5, 30000), + FAST_ATTACK(10, 30000), + MPCON(25, 30000); + + private int points; + private long expiretime; + + private AutobanFactory() { + this(1, -1); + } + + private AutobanFactory(int points) { + this.points = points; + this.expiretime = -1; + } + + private AutobanFactory(int points, long expire) { + this.points = points; + this.expiretime = expire; + } + + public int getMaximum() { + return points; + } + + public long getExpire() { + return expiretime; + } + + public void addPoint(AutobanManager ban, String reason) { + if(ServerConstants.USE_AUTOBAN == true) { + ban.addPoint(this, reason); + } + } + + public void alert(MapleCharacter chr, String reason) { + if(ServerConstants.USE_AUTOBAN == true) { + FilePrinter.printError("autobanwarning.txt", (chr != null ? MapleCharacter.makeMapleReadable(chr.getName()) : "") + " caused " + this.name() + " " + reason + "\r\n"); + if (chr != null && MapleLogger.ignored.contains(chr.getName())){ + return; + } + Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip((chr != null ? MapleCharacter.makeMapleReadable(chr.getName()) : "") + " caused " + this.name() + " " + reason)); + } + } + + public void autoban(MapleCharacter chr, String value) { + if(ServerConstants.USE_AUTOBAN == true) { + chr.autoban("Autobanned for (" + this.name() + ": " + value + ")"); + //chr.sendPolice("You will be disconnected for (" + this.name() + ": " + value + ")"); + } + } +} diff --git a/src/client/autoban/AutobanManager.java b/src/client/autoban/AutobanManager.java new file mode 100644 index 0000000000..372d26276f --- /dev/null +++ b/src/client/autoban/AutobanManager.java @@ -0,0 +1,117 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package client.autoban; + +import client.MapleCharacter; +import java.util.HashMap; +import java.util.Map; +import tools.FilePrinter; + +/** + * + * @author kevintjuh93 + */ +public class AutobanManager { + private MapleCharacter chr; + private Map points = new HashMap<>(); + private Map lastTime = new HashMap<>(); + private int misses = 0; + private int lastmisses = 0; + private int samemisscount = 0; + private long spam[] = new long[20]; + private int timestamp[] = new int[20]; + private byte timestampcounter[] = new byte[20]; + + + public AutobanManager(MapleCharacter chr) { + this.chr = chr; + } + + public void addPoint(AutobanFactory fac, String reason) { + if (chr.isGM() || chr.isBanned()){ + return; + } + if (lastTime.containsKey(fac)) { + if (lastTime.get(fac) < (System.currentTimeMillis() - fac.getExpire())) { + points.put(fac, points.get(fac) / 2); //So the points are not completely gone. + } + } + if (fac.getExpire() != -1) + lastTime.put(fac, System.currentTimeMillis()); + + if (points.containsKey(fac)) { + points.put(fac, points.get(fac) + 1); + } else + points.put(fac, 1); + + if (points.get(fac) >= fac.getMaximum()) { + chr.autoban(reason); + //chr.autoban("Autobanned for " + fac.name() + " ;" + reason, 1); + //chr.sendPolice("You have been blocked by #bMooplePolice for the HACK reason#k."); + } + + // Lets log every single point too. + FilePrinter.printError("autobanwarning.txt", MapleCharacter.makeMapleReadable(chr.getName()) + " caused " + fac.name() + " " + reason + "\r\n"); + } + + public void addMiss() { + this.misses++; + } + + public void resetMisses() { + if (lastmisses == misses && misses > 6) { + samemisscount++; + } + if (samemisscount > 4) + chr.sendPolice("You will be disconnected for miss godmode."); + //chr.autoban("Autobanned for : " + misses + " Miss godmode", 1); + else if (samemisscount > 0) + + this.lastmisses = misses; + this.misses = 0; + } + + //Don't use the same type for more than 1 thing + public void spam(int type) { + this.spam[type] = System.currentTimeMillis(); + } + + public void spam(int type, int timestamp) { + this.spam[type] = timestamp; + } + + public long getLastSpam(int type) { + return spam[type]; + } + + /** + * Timestamp checker + * + * type:
+ * 0: HealOverTime
+ * 1: Pet Food
+ * 2: ItemSort
+ * 3: ItemIdSort
+ * 4: SpecialMove
+ * 5: UseCatchItem
+ * 6: Item Drop
+ * 7: Chat
+ * + * @param type type + * @return Timestamp checker + */ + public void setTimestamp(int type, int time, int times) { + if (this.timestamp[type] == time) { + this.timestampcounter[type]++; + if (this.timestampcounter[type] >= times) { + chr.getClient().disconnect(false, false); + //System.out.println("Same timestamp for type: " + type + "; Character: " + chr); + } + return; + } + this.timestamp[type] = time; + } +} diff --git a/src/client/command/Commands.java b/src/client/command/Commands.java new file mode 100644 index 0000000000..838a65eefa --- /dev/null +++ b/src/client/command/Commands.java @@ -0,0 +1,1485 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License.te + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package client.command; + +import java.awt.Point; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.InetAddress; +import java.net.URL; +import java.net.UnknownHostException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Properties; +import java.util.TimeZone; + +import net.MaplePacketHandler; +import net.PacketProcessor; +import net.server.Server; +import net.server.channel.Channel; +import net.server.world.World; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import scripting.npc.NPCScriptManager; +import scripting.portal.PortalScriptManager; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MaplePortal; +import server.MapleShopFactory; +import server.TimerManager; +import server.events.gm.MapleEvent; +import server.expeditions.MapleExpedition; +import server.gachapon.MapleGachapon.Gachapon; +import server.life.MapleLifeFactory; +import server.life.MapleMonster; +import server.life.MapleMonsterInformationProvider; +import server.life.MapleNPC; +import server.life.MonsterDropEntry; +import server.maps.MapleMap; +import server.maps.MapleMapItem; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.quest.MapleQuest; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.HexTool; +import tools.MapleLogger; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; +import tools.data.input.ByteArrayByteStream; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.data.output.MaplePacketLittleEndianWriter; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import constants.GameConstants; +import constants.ItemConstants; +import constants.ServerConstants; +import java.util.ArrayList; +import server.maps.FieldLimit; + +public class Commands { + + private static HashMap gotomaps = new HashMap(); + + private static String[] tips = { + "Please only use @gm in emergencies or to report somebody.", + "To report a bug or make a suggestion, use the forum.", + "Please do not use @gm to ask if a GM is online.", + "Do not ask if you can receive help, just state your issue.", + "Do not say 'I have a bug to report', just state it.", + }; + + private static String[] songs = { + "Jukebox/Congratulation", + "Bgm00/SleepyWood", + "Bgm00/FloralLife", + "Bgm00/GoPicnic", + "Bgm00/Nightmare", + "Bgm00/RestNPeace", + "Bgm01/AncientMove", + "Bgm01/MoonlightShadow", + "Bgm01/WhereTheBarlogFrom", + "Bgm01/CavaBien", + "Bgm01/HighlandStar", + "Bgm01/BadGuys", + "Bgm02/MissingYou", + "Bgm02/WhenTheMorningComes", + "Bgm02/EvilEyes", + "Bgm02/JungleBook", + "Bgm02/AboveTheTreetops", + "Bgm03/Subway", + "Bgm03/Elfwood", + "Bgm03/BlueSky", + "Bgm03/Beachway", + "Bgm03/SnowyVillage", + "Bgm04/PlayWithMe", + "Bgm04/WhiteChristmas", + "Bgm04/UponTheSky", + "Bgm04/ArabPirate", + "Bgm04/Shinin'Harbor", + "Bgm04/WarmRegard", + "Bgm05/WolfWood", + "Bgm05/DownToTheCave", + "Bgm05/AbandonedMine", + "Bgm05/MineQuest", + "Bgm05/HellGate", + "Bgm06/FinalFight", + "Bgm06/WelcomeToTheHell", + "Bgm06/ComeWithMe", + "Bgm06/FlyingInABlueDream", + "Bgm06/FantasticThinking", + "Bgm07/WaltzForWork", + "Bgm07/WhereverYouAre", + "Bgm07/FunnyTimeMaker", + "Bgm07/HighEnough", + "Bgm07/Fantasia", + "Bgm08/LetsMarch", + "Bgm08/ForTheGlory", + "Bgm08/FindingForest", + "Bgm08/LetsHuntAliens", + "Bgm08/PlotOfPixie", + "Bgm09/DarkShadow", + "Bgm09/TheyMenacingYou", + "Bgm09/FairyTale", + "Bgm09/FairyTalediffvers", + "Bgm09/TimeAttack", + "Bgm10/Timeless", + "Bgm10/TimelessB", + "Bgm10/BizarreTales", + "Bgm10/TheWayGrotesque", + "Bgm10/Eregos", + "Bgm11/BlueWorld", + "Bgm11/Aquarium", + "Bgm11/ShiningSea", + "Bgm11/DownTown", + "Bgm11/DarkMountain", + "Bgm12/AquaCave", + "Bgm12/DeepSee", + "Bgm12/WaterWay", + "Bgm12/AcientRemain", + "Bgm12/RuinCastle", + "Bgm12/Dispute", + "Bgm13/CokeTown", + "Bgm13/Leafre", + "Bgm13/Minar'sDream", + "Bgm13/AcientForest", + "Bgm13/TowerOfGoddess", + "Bgm14/DragonLoad", + "Bgm14/HonTale", + "Bgm14/CaveOfHontale", + "Bgm14/DragonNest", + "Bgm14/Ariant", + "Bgm14/HotDesert", + "Bgm15/MureungHill", + "Bgm15/MureungForest", + "Bgm15/WhiteHerb", + "Bgm15/Pirate", + "Bgm15/SunsetDesert", + "Bgm16/Duskofgod", + "Bgm16/FightingPinkBeen", + "Bgm16/Forgetfulness", + "Bgm16/Remembrance", + "Bgm16/Repentance", + "Bgm16/TimeTemple", + "Bgm17/MureungSchool1", + "Bgm17/MureungSchool2", + "Bgm17/MureungSchool3", + "Bgm17/MureungSchool4", + "Bgm18/BlackWing", + "Bgm18/DrillHall", + "Bgm18/QueensGarden", + "Bgm18/RaindropFlower", + "Bgm18/WolfAndSheep", + "Bgm19/BambooGym", + "Bgm19/CrystalCave", + "Bgm19/MushCatle", + "Bgm19/RienVillage", + "Bgm19/SnowDrop", + "Bgm20/GhostShip", + "Bgm20/NetsPiramid", + "Bgm20/UnderSubway", + "Bgm21/2021year", + "Bgm21/2099year", + "Bgm21/2215year", + "Bgm21/2230year", + "Bgm21/2503year", + "Bgm21/KerningSquare", + "Bgm21/KerningSquareField", + "Bgm21/KerningSquareSubway", + "Bgm21/TeraForest", + "BgmEvent/FunnyRabbit", + "BgmEvent/FunnyRabbitFaster", + "BgmEvent/wedding", + "BgmEvent/weddingDance", + "BgmEvent/wichTower", + "BgmGL/amoria", + "BgmGL/Amorianchallenge", + "BgmGL/chapel", + "BgmGL/cathedral", + "BgmGL/Courtyard", + "BgmGL/CrimsonwoodKeep", + "BgmGL/CrimsonwoodKeepInterior", + "BgmGL/GrandmastersGauntlet", + "BgmGL/HauntedHouse", + "BgmGL/NLChunt", + "BgmGL/NLCtown", + "BgmGL/NLCupbeat", + "BgmGL/PartyQuestGL", + "BgmGL/PhantomForest", + "BgmJp/Feeling", + "BgmJp/BizarreForest", + "BgmJp/Hana", + "BgmJp/Yume", + "BgmJp/Bathroom", + "BgmJp/BattleField", + "BgmJp/FirstStepMaster", + "BgmMY/Highland", + "BgmMY/KualaLumpur", + "BgmSG/BoatQuay_field", + "BgmSG/BoatQuay_town", + "BgmSG/CBD_field", + "BgmSG/CBD_town", + "BgmSG/Ghostship", + "BgmUI/ShopBgm", + "BgmUI/Title" + }; + + static { + gotomaps.put("gmmap", 180000000); + gotomaps.put("southperry", 60000); + gotomaps.put("amherst", 1010000); + gotomaps.put("henesys", 100000000); + gotomaps.put("ellinia", 101000000); + gotomaps.put("perion", 102000000); + gotomaps.put("kerning", 103000000); + gotomaps.put("lith", 104000000); + gotomaps.put("sleepywood", 105040300); + gotomaps.put("florina", 110000000); + gotomaps.put("orbis", 200000000); + gotomaps.put("happy", 209000000); + gotomaps.put("elnath", 211000000); + gotomaps.put("ludi", 220000000); + gotomaps.put("aqua", 230000000); + gotomaps.put("leafre", 240000000); + gotomaps.put("mulung", 250000000); + gotomaps.put("herb", 251000000); + gotomaps.put("omega", 221000000); + gotomaps.put("korean", 222000000); + gotomaps.put("nlc", 600000000); + gotomaps.put("excavation", 990000000); + gotomaps.put("pianus", 230040420); + gotomaps.put("horntail", 240060200); + gotomaps.put("mushmom", 100000005); + gotomaps.put("griffey", 240020101); + gotomaps.put("manon", 240020401); + gotomaps.put("horseman", 682000001); + gotomaps.put("balrog", 105090900); + gotomaps.put("zakum", 211042300); + gotomaps.put("papu", 220080001); + gotomaps.put("showa", 801000000); + gotomaps.put("guild", 200000301); + gotomaps.put("shrine", 800000000); + gotomaps.put("skelegon", 240040511); + gotomaps.put("hpq", 100000200); + gotomaps.put("ht", 240050400); + gotomaps.put("fm", 910000000); + } + + public static boolean executePlayerCommand(MapleClient c, String[] sub, char heading) { + MapleCharacter player = c.getPlayer(); + if (heading == '!' && player.gmLevel() == 0) { + player.yellowMessage("You may not use !" + sub[0] + ", please try /" + sub[0]); + return false; + } + switch (sub[0]) { + case "help": + case "commands": + player.yellowMessage("After you vote, talk to Rooney to get a leaf and redeem it for prizes!"); + player.message("@dispose: Fixes your character if it is stuck."); + player.message("@online: Displays a list of all online players."); + player.message("@time: Displays the current server time."); + player.message("@rates: Displays your current DROP, MESO and EXP rates."); + player.message("@points: Tells you how many unused vote points you have and when/if you can vote."); + player.message("@gm : Sends a message to all online GMs in the case of an emergency."); + player.message("@bug : Sends a bug report to all developers."); + player.message("@joinevent: If an event is in progress, use this to warp to the event map."); + player.message("@leaveevent: If an event has ended, use this to warp to your original map."); + player.message("@staff: Lists the staff of Solaxia."); + player.message("@uptime: Shows how long Solaxia has been online."); + player.message("@whatdropsfrom : Displays a list of drops and chances for a specified monster."); + player.message("@whodrops : Displays monsters that drop an item given an item name."); + player.message("@uptime: Shows how long Solaxia has been online."); + player.message("@bosshp: Displays the remaining HP of the bosses on your map."); + break; + case "time": + DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); + dateFormat.setTimeZone(TimeZone.getTimeZone("EST")); + player.yellowMessage("Solaxia Server Time: " + dateFormat.format(new Date())); + break; + case "staff": + player.yellowMessage("MapleSolaxia Staff"); + player.yellowMessage("Aria - Administrator"); + player.yellowMessage("Twdtwd - Administrator"); + player.yellowMessage("Exorcist - Developer"); + player.yellowMessage("SharpAceX - Developer"); + player.yellowMessage("Zygon - Freelance Developer"); + player.yellowMessage("SourMjolk - Game Master"); + player.yellowMessage("Kanade - Game Master"); + player.yellowMessage("Kitsune - Game Master"); + player.yellowMessage("Branch Staff"); + player.yellowMessage("Ronan - Freelance Developer"); + break; + case "lastrestart": + case "uptime": + long milliseconds = System.currentTimeMillis() - Server.uptime; + int seconds = (int) (milliseconds / 1000) % 60 ; + int minutes = (int) ((milliseconds / (1000*60)) % 60); + int hours = (int) ((milliseconds / (1000*60*60)) % 24); + int days = (int) ((milliseconds / (1000*60*60*24))); + player.yellowMessage("Solaxia has been online for " + days + " days " + hours + " hours " + minutes + " minutes and " + seconds + " seconds."); + break; + case "gacha": + if (player.gmLevel() == 0) { // Sigh, need it for now... + player.yellowMessage("Player Command " + heading + sub[0] + " does not exist, see @help for a list of commands."); + return false; + } + Gachapon gacha = null; + String search = joinStringFrom(sub, 1); + String gachaName = ""; + String [] names = {"Henesys", "Ellinia", "Perion", "Kerning City", "Sleepywood", "Mushroom Shrine", "Showa Spa Male", "Showa Spa Female", "New Leaf City", "Nautilus Harbor"}; + int [] ids = {9100100, 9100101, 9100102, 9100103, 9100104, 9100105, 9100106, 9100107, 9100109, 9100117}; + for (int i = 0; i < names.length; i++){ + if (search.equalsIgnoreCase(names[i])){ + gachaName = names[i]; + gacha = Gachapon.getByNpcId(ids[i]); + } + } + if (gacha == null){ + player.yellowMessage("Please use @gacha where name corresponds to one of the below:"); + for (String name : names){ + player.yellowMessage(name); + } + break; + } + String output = "The #b" + gachaName + "#k Gachapon contains the following items.\r\n\r\n"; + for (int i = 0; i < 2; i++){ + for (int id : gacha.getItems(i)){ + output += "-" + MapleItemInformationProvider.getInstance().getName(id) + "\r\n"; + } + } + output += "\r\nPlease keep in mind that there are items that are in all gachapons and are not listed here."; + c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, output, "00 00", (byte) 0)); + break; + case "whatdropsfrom": + if (sub.length < 2) { + player.dropMessage(5, "Please do @whatdropsfrom "); + break; + } + String monsterName = joinStringFrom(sub, 1); + output = ""; + int limit = 3; + Iterator> listIterator = MapleMonsterInformationProvider.getMobsIDsFromName(monsterName).iterator(); + for (int i = 0; i < limit; i++) { + if(listIterator.hasNext()) { + Pair data = listIterator.next(); + int mobId = data.getLeft(); + String mobName = data.getRight(); + output += mobName + " drops the following items:\r\n\r\n"; + for (MonsterDropEntry drop : MapleMonsterInformationProvider.getInstance().retrieveDrop(mobId)){ + try { + String name = MapleItemInformationProvider.getInstance().getName(drop.itemId); + if (name.equals("null") || drop.chance == 0){ + continue; + } + float chance = 1000000 / drop.chance / player.getDropRate(); + output += "- " + name + " (1/" + (int) chance + ")\r\n"; + } catch (Exception ex){ + continue; + } + } + output += "\r\n"; + } + } + c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, output, "00 00", (byte) 0)); + break; + case "whodrops": + if (sub.length < 2) { + player.dropMessage(5, "Please do @whodrops "); + break; + } + String searchString = joinStringFrom(sub, 1); + output = ""; + listIterator = MapleItemInformationProvider.getInstance().getItemDataByName(searchString).iterator(); + if(listIterator.hasNext()) { + int count = 1; + while(listIterator.hasNext() && count <= 3) { + Pair data = listIterator.next(); + output += "#b" + data.getRight() + "#k is dropped by:\r\n"; + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM drop_data WHERE itemid = ? LIMIT 50"); + ps.setInt(1, data.getLeft()); + ResultSet rs = ps.executeQuery(); + while(rs.next()) { + String resultName = MapleMonsterInformationProvider.getMobNameFromID(rs.getInt("dropperid")); + if (resultName != null) { + output += resultName + ", "; + } + } + rs.close(); + ps.close(); + } catch (Exception e) { + player.dropMessage("There was a problem retreiving the required data. Please try again."); + e.printStackTrace(); + return true; + } + output += "\r\n\r\n"; + count++; + } + } else { + player.dropMessage(5, "The item you searched for doesn't exist."); + break; + } + c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, output, "00 00", (byte) 0)); + break; + case "dispose": + NPCScriptManager.getInstance().dispose(c); + c.announce(MaplePacketCreator.enableActions()); + c.removeClickedNPC(); + player.message("You've been disposed."); + break; + case "rates": + c.resetVoteTime(); + player.yellowMessage("DROP RATE"); + player.message(">>Base DROP Rate: " + c.getWorldServer().getDropRate() + "x"); + player.message(">>Your DROP Rate: " + player.getDropRate() / c.getWorldServer().getDropRate() + "x"); + player.message(">>------------------------------------------------"); + player.message(">>Total DROP Rate: " + player.getDropRate() + "x"); + + player.yellowMessage("MESO RATE"); + player.message(">>Base MESO Rate: " + c.getWorldServer().getMesoRate() + "x"); + player.message(">>Your MESO Rate: " + player.getMesoRate() / c.getWorldServer().getMesoRate() + "x"); + player.message(">>------------------------------------------------"); + player.message(">>Total MESO Rate: " + player.getMesoRate() + "x"); + + player.yellowMessage("EXP RATE"); + player.message(">>Base EXP Rate: " + c.getWorldServer().getExpRate() + "x"); + player.message(">>Your EXP Rate: " + player.getExpRate() / c.getWorldServer().getExpRate() + "x"); + player.message(">>------------------------------------------------"); + player.message(">>Total EXP Rate: " + player.getExpRate() + "x"); + /*if(c.getWorldServer().getExpRate() > ServerConstants.EXP_RATE) { + player.message(">>Event EXP bonus: " + (c.getWorldServer().getExpRate() - ServerConstants.EXP_RATE) + "x"); + } + player.message(">>Voted EXP bonus: " + (c.hasVotedAlready() ? "1x" : "0x (If you vote now, you will earn an additional 1x EXP!)")); + + if (player.getLevel() < 10) { + player.message("Players under level 10 always have 1x exp."); + }*/ + break; + case "online": + for (Channel ch : Server.getInstance().getChannelsFromWorld(player.getWorld())) { + player.yellowMessage("Players in Channel " + ch.getId() + ":"); + for (MapleCharacter chr : ch.getPlayerStorage().getAllCharacters()) { + if (!chr.isGM()) { + player.message(" >> " + MapleCharacter.makeMapleReadable(chr.getName()) + " is at " + chr.getMap().getMapName() + "."); + } + } + } + break; + case "gm": + if (sub.length < 3) { // #goodbye 'hi' + player.dropMessage(5, "Your message was too short. Please provide as much detail as possible."); + break; + } + String message = joinStringFrom(sub, 1); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip("[GM MESSAGE]:" + MapleCharacter.makeMapleReadable(player.getName()) + ": " + message)); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(1, message)); + FilePrinter.printError("gm.txt", MapleCharacter.makeMapleReadable(player.getName()) + ": " + message + "\r\n"); + player.dropMessage(5, "Your message '" + message + "' was sent to GMs."); + player.dropMessage(5, tips[Randomizer.nextInt(tips.length)]); + break; + case "bug": + if (sub.length < 2) { + player.dropMessage(5, "Message too short and not sent. Please do @bug "); + break; + } + message = joinStringFrom(sub, 1); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip("[BUG]:" + MapleCharacter.makeMapleReadable(player.getName()) + ": " + message)); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(1, message)); + FilePrinter.printError("bug.txt", MapleCharacter.makeMapleReadable(player.getName()) + ": " + message + "\r\n"); + player.dropMessage(5, "Your bug '" + message + "' was submitted successfully to our developers. Thank you!"); + break; + case "points": + player.dropMessage(5, "You have " + c.getVotePoints() + " vote point(s)."); + if (c.hasVotedAlready()) { + Date currentDate = new Date(); + int time = (int) ((int) 86400 - ((currentDate.getTime() / 1000) - c.getVoteTime())); //ugly as fuck + hours = time / 3600; + minutes = time % 3600 / 60; + seconds = time % 3600 % 60; + player.yellowMessage("You have already voted. You can vote again in " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds."); + } else { + player.yellowMessage("You are free to vote! Make sure to vote to gain a vote point!"); + } + break; + case "joinevent": + case "event": + case "join": + if(!FieldLimit.CHANGECHANNEL.check(player.getMap().getFieldLimit())) { + MapleEvent event = c.getChannelServer().getEvent(); + if(event != null) { + if(event.getMapId() != player.getMapId()) { + if(event.getLimit() > 0) { + player.saveLocation("EVENT"); + + if(event.getMapId() == 109080000 || event.getMapId() == 109060001) + player.setTeam(event.getLimit() % 2); + + event.minusLimit(); + + player.changeMap(event.getMapId()); + } else { + player.dropMessage("The limit of players for the event has already been reached."); + } + } else { + player.dropMessage(5, "You are already in the event."); + } + } else { + player.dropMessage(5, "There is currently no event in progress."); + } + } else { + player.dropMessage(5, "You are currently in a map where you can't join an event."); + } + break; + case "leaveevent": + case "leave": + int returnMap = player.getSavedLocation("EVENT"); + if(returnMap != -1) { + if(player.getOla() != null) { + player.getOla().resetTimes(); + player.setOla(null); + } + if(player.getFitness() != null) { + player.getFitness().resetTimes(); + player.setFitness(null); + } + + player.changeMap(returnMap); + if(c.getChannelServer().getEvent() != null) { + c.getChannelServer().getEvent().addLimit(); + } + } else { + player.dropMessage(5, "You are not currently in an event."); + } + break; + case "bosshp": + for(MapleMonster monster : player.getMap().getMonsters()) { + if(monster != null && monster.isBoss() && monster.getHp() > 0) { + long percent = monster.getHp() * 100L / monster.getMaxHp(); + String bar = "["; + for (int i = 0; i < 100; i++){ + bar += i < percent ? "|" : "."; + } + bar += "]"; + player.yellowMessage(monster.getName() + " has " + percent + "% HP left."); + player.yellowMessage("HP: " + bar); + } + } + break; + case "ranks": + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT `characters`.`name`, `characters`.`level` FROM `characters` LEFT JOIN accounts ON accounts.id = characters.accountid WHERE `characters`.`gm` = '0' AND `accounts`.`banned` = '0' ORDER BY level DESC, exp DESC LIMIT 50"); + rs = ps.executeQuery(); + + player.announce(MaplePacketCreator.showPlayerRanks(9010000, rs)); + ps.close(); + rs.close(); + } catch(SQLException ex) { + ex.printStackTrace(); + } finally { + try { + if(ps != null && !ps.isClosed()) { + ps.close(); + } + if(rs != null && !rs.isClosed()) { + rs.close(); + } + } catch (SQLException e) { + } + } + break; + default: + if (player.gmLevel() == 0) { + player.yellowMessage("Player Command " + heading + sub[0] + " does not exist, see @help for a list of commands."); + } + return false; + } + return true; + } + + public static boolean executeGMCommand(MapleClient c, String[] sub, char heading) { + MapleCharacter player = c.getPlayer(); + Channel cserv = c.getChannelServer(); + Server srv = Server.getInstance(); + if (sub[0].equals("ap")) { + if (sub.length < 3) { + player.setRemainingAp(Integer.parseInt(sub[1])); + player.updateSingleStat(MapleStat.AVAILABLEAP, player.getRemainingAp()); + } else { + MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + victim.setRemainingAp(Integer.parseInt(sub[2])); + victim.updateSingleStat(MapleStat.AVAILABLEAP, victim.getRemainingAp()); + } + } else if (sub[0].equals("buffme")) { + final int[] array = {9001000, 9101002, 9101003, 9101008, 2001002, 1101007, 1005, 2301003, 5121009, 1111002, 4111001, 4111002, 4211003, 4211005, 1321000, 2321004, 3121002}; + for (int i : array) { + SkillFactory.getSkill(i).getEffect(SkillFactory.getSkill(i).getMaxLevel()).applyTo(player); + } + } else if (sub[0].equals("spawn")) { + MapleMonster monster = MapleLifeFactory.getMonster(Integer.parseInt(sub[1])); + if (monster == null) { + return true; + } + if (sub.length > 2) { + for (int i = 0; i < Integer.parseInt(sub[2]); i++) { + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(Integer.parseInt(sub[1])), player.getPosition()); + } + } else { + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(Integer.parseInt(sub[1])), player.getPosition()); + } + } else if (sub[0].equals("bomb")) { + if (sub.length > 1){ + MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]); + victim.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(9300166), victim.getPosition()); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(5, player.getName() + " used !bomb on " + victim.getName())); + } else { + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(9300166), player.getPosition()); + } + } else if (sub[0].equals("mutemap")) { + if(player.getMap().isMuted()) { + player.getMap().setMuted(false); + player.dropMessage(5, "The map you are in has been un-muted."); + } else { + player.getMap().setMuted(true); + player.dropMessage(5, "The map you are in has been muted."); + } + } else if (sub[0].equals("checkdmg")) { + MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]); + int maxBase = victim.calculateMaxBaseDamage(victim.getTotalWatk()); + Integer watkBuff = victim.getBuffedValue(MapleBuffStat.WATK); + Integer matkBuff = victim.getBuffedValue(MapleBuffStat.MATK); + Integer blessing = victim.getSkillLevel(10000000 * player.getJobType() + 12); + if(watkBuff == null) watkBuff = 0; + if(matkBuff == null) matkBuff = 0; + + player.dropMessage(5, "Cur Str: " + victim.getTotalStr() + " Cur Dex: " + victim.getTotalDex() + " Cur Int: " + victim.getTotalInt() + " Cur Luk: " + victim.getTotalLuk()); + player.dropMessage(5, "Cur WATK: " + victim.getTotalWatk() + " Cur MATK: " + victim.getTotalMagic()); + player.dropMessage(5, "Cur WATK Buff: " + watkBuff + " Cur MATK Buff: " + matkBuff + " Cur Blessing Level: " + blessing); + player.dropMessage(5, victim.getName() + "'s maximum base damage (before skills) is " + maxBase); + } else if (sub[0].equals("inmap")) { + String s = ""; + for (MapleCharacter chr : player.getMap().getCharacters()) { + s += chr.getName() + " "; + } + player.message(s); + } else if (sub[0].equals("cleardrops")) { + player.getMap().clearDrops(player); + } else if (sub[0].equals("go")) { + if (gotomaps.containsKey(sub[1])) { + MapleMap target = c.getChannelServer().getMapFactory().getMap(gotomaps.get(sub[1])); + MaplePortal targetPortal = target.getPortal(0); + if (player.getEventInstance() != null) { + player.getEventInstance().removePlayer(player); + } + player.changeMap(target, targetPortal); + } else { + player.dropMessage(5, "That map does not exist."); + } + } else if (sub[0].equals("reloadevents")) { + for (Channel ch : Server.getInstance().getAllChannels()) { + ch.reloadEventScriptManager(); + } + player.dropMessage(5, "Reloaded Events"); + } else if (sub[0].equals("reloaddrops")) { + MapleMonsterInformationProvider.getInstance().clearDrops(); + player.dropMessage(5, "Reloaded Drops"); + } else if (sub[0].equals("reloadportals")) { + PortalScriptManager.getInstance().reloadPortalScripts(); + player.dropMessage(5, "Reloaded Portals"); + } else if (sub[0].equals("whereami")) { //This is so not going to work on the first commit + player.yellowMessage("Map ID: " + player.getMap().getId()); + player.yellowMessage("Players on this map:"); + for (MapleMapObject mmo : player.getMap().getAllPlayer()) { + MapleCharacter chr = (MapleCharacter) mmo; + player.dropMessage(5, ">> " + chr.getName()); + } + player.yellowMessage("NPCs on this map:"); + for (MapleMapObject npcs : player.getMap().getMapObjects()) { + if (npcs instanceof MapleNPC) { + MapleNPC npc = (MapleNPC) npcs; + player.dropMessage(5, ">> " + npc.getName() + " - " + npc.getId()); + } + } + player.yellowMessage("Monsters on this map:"); + for (MapleMapObject mobs : player.getMap().getMapObjects()) { + if (mobs instanceof MapleMonster) { + MapleMonster mob = (MapleMonster) mobs; + if(mob.isAlive()){ + player.dropMessage(5, ">> " + mob.getName() + " - " + mob.getId()); + } + } + } + } else if (sub[0].equals("warp")) { + try { + MapleMap target = c.getChannelServer().getMapFactory().getMap(Integer.parseInt(sub[1])); + if (target == null) { + player.yellowMessage("Map ID " + sub[1] + " is invalid."); + return false; + } + if (player.getEventInstance() != null) { + player.getEventInstance().removePlayer(player); + } + player.changeMap(target, target.getPortal(0)); + } catch (Exception ex) { + player.yellowMessage("Map ID " + sub[1] + " is invalid."); + return false; + } + } else if (sub[0].equals("reloadmap")) { + MapleMap oldMap = c.getPlayer().getMap(); + MapleMap newMap = c.getChannelServer().getMapFactory().getMap(player.getMapId()); + for (MapleCharacter ch : oldMap.getCharacters()) { + ch.changeMap(newMap); + } + oldMap = null; + newMap.respawn(); + } else if (sub[0].equals("music")){ + if (sub.length < 2) { + player.yellowMessage("Syntax: !music "); + for (String s : songs){ + player.yellowMessage(s); + } + return false; + } + String song = joinStringFrom(sub, 1); + for (String s : songs){ + if (s.equals(song)){ + player.getMap().broadcastMessage(MaplePacketCreator.musicChange(s)); + player.yellowMessage("Now playing song " + song + "."); + return true; + } + } + player.yellowMessage("Song not found, please enter a song below."); + for (String s : songs){ + player.yellowMessage(s); + } + } else if (sub[0].equals("monitor")) { + if (sub.length < 1){ + player.yellowMessage("Syntax: !monitor "); + return false; + } + MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]); + if (victim == null){ + player.yellowMessage("Player not found!"); + return false; + } + boolean monitored = MapleLogger.monitored.contains(victim.getName()); + if (monitored){ + MapleLogger.monitored.remove(victim.getName()); + } else { + MapleLogger.monitored.add(victim.getName()); + } + player.yellowMessage(victim.getName() + " is " + (!monitored ? "now being monitored." : "no longer being monitored.")); + String message = player.getName() + (!monitored ? " has started monitoring " : " has stopped monitoring ") + victim.getName() + "."; + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(5, message)); + } else if (sub[0].equals("monitors")) { + for (String ign : MapleLogger.monitored){ + player.yellowMessage(ign + " is being monitored."); + } + } else if (sub[0].equals("ignore")) { + if (sub.length < 1){ + player.yellowMessage("Syntax: !ignore "); + return false; + } + MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]); + if (victim == null){ + player.yellowMessage("Player not found!"); + return false; + } + boolean monitored = MapleLogger.ignored.contains(victim.getName()); + if (monitored){ + MapleLogger.ignored.remove(victim.getName()); + } else { + MapleLogger.ignored.add(victim.getName()); + } + player.yellowMessage(victim.getName() + " is " + (!monitored ? "now being ignored." : "no longer being ignored.")); + String message = player.getName() + (!monitored ? " has started ignoring " : " has stopped ignoring ") + victim.getName() + "."; + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(5, message)); + } else if (sub[0].equals("ignored")) { + for (String ign : MapleLogger.ignored){ + player.yellowMessage(ign + " is being ignored."); + } + } else if (sub[0].equals("pos")) { + float xpos = player.getPosition().x; + float ypos = player.getPosition().y; + float fh = player.getMap().getFootholds().findBelow(player.getPosition()).getId(); + player.dropMessage("Position: (" + xpos + ", " + ypos + ")"); + player.dropMessage("Foothold ID: " + fh); + } else if (sub[0].equals("dc")) { + MapleCharacter victim = c.getWorldServer().getPlayerStorage().getCharacterByName(sub[1]); + if (victim == null) { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + if (victim == null) { + victim = player.getMap().getCharacterByName(sub[1]); + if (victim != null) { + try {//sometimes bugged because the map = null + victim.getClient().disconnect(true, false); + player.getMap().removePlayer(victim); + } catch (Exception e) { + } + } else { + return true; + } + } + } + if (player.gmLevel() < victim.gmLevel()) { + victim = player; + } + victim.getClient().disconnect(false, false); + } else if (sub[0].equals("exprate")) { + c.getWorldServer().setExpRate(Integer.parseInt(sub[1])); + } else if (sub[0].equals("chat")) { + player.toggleWhiteChat(); + player.message("Your chat is now " + (player.getWhiteChat() ? " white" : "normal") + "."); + } else if (sub[0].equals("warpto")) { + MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]); + if (victim == null) {//If victim isn't on current channel or isnt a character try and find him by loop all channels on current world. + for (Channel ch : srv.getChannelsFromWorld(c.getWorld())) { + victim = ch.getPlayerStorage().getCharacterByName(sub[1]); + if (victim != null) { + break;//We found the person, no need to continue the loop. + } + } + } + if (victim != null) {//If target isn't null attempt to warp. + //Remove warper from current event instance. + if (player.getEventInstance() != null) { + player.getEventInstance().unregisterPlayer(player); + } + //Attempt to join the victims warp instance. + if (victim.getEventInstance() != null) { + if (victim.getClient().getChannel() == player.getClient().getChannel()) {//just in case.. you never know... + //victim.getEventInstance().registerPlayer(player); + player.changeMap(victim.getEventInstance().getMapInstance(victim.getMapId()), victim.getMap().findClosestPortal(victim.getPosition())); + } else { + player.dropMessage("Please change to channel " + victim.getClient().getChannel()); + } + } else {//If victim isn't in an event instance, just warp them. + player.changeMap(victim.getMapId(), victim.getMap().findClosestPortal(victim.getPosition())); + } + if (player.getClient().getChannel() != victim.getClient().getChannel()) {//And then change channel if needed. + player.dropMessage("Changing channel, please wait a moment."); + player.getClient().changeChannel(victim.getClient().getChannel()); + } + } else { + player.dropMessage("Unknown player."); + } + } else if (sub[0].equals("warphere")) { + MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]); + if (victim == null) {//If victim isn't on current channel, loop all channels on current world. + for (Channel ch : srv.getChannelsFromWorld(c.getWorld())) { + victim = ch.getPlayerStorage().getCharacterByName(sub[1]); + if (victim != null) { + break;//We found the person, no need to continue the loop. + } + } + } + if (victim != null) { + if (victim.getEventInstance() != null) { + victim.getEventInstance().unregisterPlayer(victim); + } + //Attempt to join the warpers instance. + if (player.getEventInstance() != null) { + if (player.getClient().getChannel() == victim.getClient().getChannel()) {//just in case.. you never know... + player.getEventInstance().registerPlayer(victim); + victim.changeMap(player.getEventInstance().getMapInstance(player.getMapId()), player.getMap().findClosestPortal(player.getPosition())); + } else { + player.dropMessage("Target isn't on your channel, not able to warp into event instance."); + } + } else {//If victim isn't in an event instance, just warp them. + victim.changeMap(player.getMapId(), player.getMap().findClosestPortal(player.getPosition())); + } + if (player.getClient().getChannel() != victim.getClient().getChannel()) {//And then change channel if needed. + victim.dropMessage("Changing channel, please wait a moment."); + victim.getClient().changeChannel(player.getClient().getChannel()); + } + } else { + player.dropMessage("Unknown player."); + } + } else if (sub[0].equals("fame")) { + MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]); + victim.setFame(Integer.parseInt(sub[2])); + victim.updateSingleStat(MapleStat.FAME, victim.getFame()); + } else if (sub[0].equals("giftnx")) { + cserv.getPlayerStorage().getCharacterByName(sub[1]).getCashShop().gainCash(1, Integer.parseInt(sub[2])); + player.message("Done"); + } else if (sub[0].equals("gmshop")) { + MapleShopFactory.getInstance().getShop(1337).sendShop(c); + } else if (sub[0].equals("heal")) { + player.setHpMp(30000); + } else if (sub[0].equals("vp")) { + c.addVotePoints(Integer.parseInt(sub[1])); + } else if (sub[0].equals("id")) { + try { + try (BufferedReader dis = new BufferedReader(new InputStreamReader(new URL("http://www.mapletip.com/search_java.php?search_value=" + sub[1] + "&check=true").openConnection().getInputStream()))) { + String s; + while ((s = dis.readLine()) != null) { + player.dropMessage(s); + } + } + } catch (Exception e) { + } + } else if (sub[0].equals("item") || sub[0].equals("drop")) { + int itemId = Integer.parseInt(sub[1]); + short quantity = 1; + try { + quantity = Short.parseShort(sub[2]); + } catch (Exception e) { + } + if (sub[0].equals("item")) { + int petid = -1; + if (ItemConstants.isPet(itemId)) { + petid = MaplePet.createPet(itemId); + } + MapleInventoryManipulator.addById(c, itemId, quantity, player.getName(), petid, -1); + } else { + Item toDrop; + if (MapleItemInformationProvider.getInstance().getInventoryType(itemId) == MapleInventoryType.EQUIP) { + toDrop = MapleItemInformationProvider.getInstance().getEquipById(itemId); + } else { + toDrop = new Item(itemId, (short) 0, quantity); + } + c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), toDrop, c.getPlayer().getPosition(), true, true); + } + } else if (sub[0].equals("expeds")) { + for (Channel ch : Server.getInstance().getChannelsFromWorld(0)) { + if (ch.getExpeditions().size() == 0) { + player.yellowMessage("No Expeditions in Channel " + ch.getId()); + continue; + } + player.yellowMessage("Expeditions in Channel " + ch.getId()); + int id = 0; + for (MapleExpedition exped : ch.getExpeditions()) { + id++; + player.yellowMessage("> Expedition " + id); + player.yellowMessage(">> Type: " + exped.getType().toString()); + player.yellowMessage(">> Status: " + (exped.isRegistering() ? "REGISTERING" : "UNDERWAY")); + player.yellowMessage(">> Size: " + exped.getMembers().size()); + player.yellowMessage(">> Leader: " + exped.getLeader().getName()); + int memId = 2; + for (MapleCharacter member : exped.getMembers()) { + if (exped.isLeader(member)) { + continue; + } + player.yellowMessage(">>> Member " + memId + ": " + member.getName()); + memId++; + } + } + } + } else if (sub[0].equals("kill")) { + if (sub.length >= 2) { + MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(sub[1]); + victim.setHpMp(0); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(5, player.getName() + " used !kill on " + victim.getName())); + } + } else if (sub[0].equals("seed")) { + if (player.getMapId() != 910010000) { + player.yellowMessage("This command can only be used in HPQ."); + return false; + } + Point pos[] = {new Point(7, -207), new Point(179, -447), new Point(-3, -687), new Point(-357, -687), new Point(-538, -447), new Point(-359, -207)}; + int seed[] = {4001097, 4001096, 4001095, 4001100, 4001099, 4001098}; + for (int i = 0; i < pos.length; i++) { + Item item = new Item(seed[i], (byte) 0, (short) 1); + player.getMap().spawnItemDrop(player, player, item, pos[i], false, true); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } else if (sub[0].equals("killall")) { + List monsters = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER)); + MapleMap map = player.getMap(); + for (MapleMapObject monstermo : monsters) { + MapleMonster monster = (MapleMonster) monstermo; + if (!monster.getStats().isFriendly()) { + map.killMonster(monster, player, true); + monster.giveExpToCharacter(player, monster.getExp() * c.getPlayer().getExpRate(), true, 1); + } + } + player.dropMessage("Killed " + monsters.size() + " monsters."); + } else if (sub[0].equals("monsterdebug")) { + List monsters = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER)); + for (MapleMapObject monstermo : monsters) { + MapleMonster monster = (MapleMonster) monstermo; + player.message("Monster ID: " + monster.getId()); + } + } else if (sub[0].equals("unbug")) { + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.enableActions()); + } else if (sub[0].equals("level")) { + player.setLevel(Integer.parseInt(sub[1]) - 1); + player.gainExp(-player.getExp(), false, false); + player.levelUp(false); + } else if (sub[0].equals("levelpro")) { + while (player.getLevel() < Math.min(255, Integer.parseInt(sub[1]))) { + player.levelUp(false); + } + } else if (sub[0].equals("maxstat")) { + final String[] s = {"setall", String.valueOf(Short.MAX_VALUE)}; + executeGMCommand(c, s, heading); + player.setLevel(255); + player.setFame(13337); + player.setMaxHp(30000); + player.setMaxMp(30000); + player.updateSingleStat(MapleStat.LEVEL, 255); + player.updateSingleStat(MapleStat.FAME, 13337); + player.updateSingleStat(MapleStat.MAXHP, 30000); + player.updateSingleStat(MapleStat.MAXMP, 30000); + } else if (sub[0].equals("maxskills")) { + for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) { + try { + Skill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName())); + if (GameConstants.isInJobTree(skill.getId(), player.getJob().getId())) { + player.changeSkillLevel(skill, (byte) skill.getMaxLevel(), skill.getMaxLevel(), -1); + } + } catch (NumberFormatException nfe) { + break; + } catch (NullPointerException npe) { + continue; + } + } + } else if (sub[0].equals("mesos")) { + player.gainMeso(Integer.parseInt(sub[1]), true); + } else if (sub[0].equals("notice")) { + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(6, "[Notice] " + joinStringFrom(sub, 1))); + } else if (sub[0].equals("rip")) { + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(6, "[RIP]: " + joinStringFrom(sub, 1))); + } else if (sub[0].equals("openportal")) { + player.getMap().getPortal(sub[1]).setPortalState(true); + } else if (sub[0].equals("pe")) { + String packet = ""; + try { + InputStreamReader is = new FileReader("pe.txt"); + Properties packetProps = new Properties(); + packetProps.load(is); + is.close(); + packet = packetProps.getProperty("pe"); + } catch (IOException ex) { + player.yellowMessage("Failed to load pe.txt"); + return false; + } + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.write(HexTool.getByteArrayFromHexString(packet)); + SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(mplew.getPacket())); + short packetId = slea.readShort(); + final MaplePacketHandler packetHandler = PacketProcessor.getProcessor(0, c.getChannel()).getHandler(packetId); + if (packetHandler != null && packetHandler.validateState(c)) { + try { + player.yellowMessage("Recieving: " + packet); + packetHandler.handlePacket(slea, c); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.PACKET_HANDLER + packetHandler.getClass().getName() + ".txt", t, "Error for " + (c.getPlayer() == null ? "" : "player ; " + c.getPlayer() + " on map ; " + c.getPlayer().getMapId() + " - ") + "account ; " + c.getAccountName() + "\r\n" + slea.toString()); + return false; + } + } + } else if (sub[0].equals("closeportal")) { + player.getMap().getPortal(sub[1]).setPortalState(false); + } else if (sub[0].equals("startevent")) { + for (MapleCharacter chr : player.getMap().getCharacters()) { + player.getMap().startEvent(chr); + } + c.getChannelServer().setEvent(null); + } else if (sub[0].equals("scheduleevent")) { + int players = 50; + if(sub.length > 1) + players = Integer.parseInt(sub[1]); + + c.getChannelServer().setEvent(new MapleEvent(player.getMapId(), players)); + player.dropMessage(5, "The event has been set on " + player.getMap().getMapName() + " and will allow " + players + " players to join."); + } else if(sub[0].equals("endevent")) { + c.getChannelServer().setEvent(null); + player.dropMessage(5, "You have ended the event. No more players may join."); + } else if (sub[0].equals("online2")) { + int total = 0; + for (Channel ch : srv.getChannelsFromWorld(player.getWorld())) { + int size = ch.getPlayerStorage().getAllCharacters().size(); + total += size; + String s = "(Channel " + ch.getId() + " Online: " + size + ") : "; + if (ch.getPlayerStorage().getAllCharacters().size() < 50) { + for (MapleCharacter chr : ch.getPlayerStorage().getAllCharacters()) { + s += MapleCharacter.makeMapleReadable(chr.getName()) + ", "; + } + player.dropMessage(s.substring(0, s.length() - 2)); + } + } + player.dropMessage("There are a total of " + total + " players online."); + } else if (sub[0].equals("pap")) { + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8500001), player.getPosition()); + } else if (sub[0].equals("pianus")) { + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8510000), player.getPosition()); + } else if (sub[0].equalsIgnoreCase("search")) { + StringBuilder sb = new StringBuilder(); + if (sub.length > 2) { + String search = joinStringFrom(sub, 2); + long start = System.currentTimeMillis();//for the lulz + MapleData data = null; + MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz")); + if (!sub[1].equalsIgnoreCase("ITEM")) { + if (sub[1].equalsIgnoreCase("NPC")) { + data = dataProvider.getData("Npc.img"); + } else if (sub[1].equalsIgnoreCase("MOB") || sub[1].equalsIgnoreCase("MONSTER")) { + data = dataProvider.getData("Mob.img"); + } else if (sub[1].equalsIgnoreCase("SKILL")) { + data = dataProvider.getData("Skill.img"); + } else if (sub[1].equalsIgnoreCase("MAP")) { + sb.append("#bUse the '/m' command to find a map. If it finds a map with the same name, it will warp you to it."); + } else { + sb.append("#bInvalid search.\r\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL."); + } + if (data != null) { + String name; + for (MapleData searchData : data.getChildren()) { + name = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME"); + if (name.toLowerCase().contains(search.toLowerCase())) { + sb.append("#b").append(Integer.parseInt(searchData.getName())).append("#k - #r").append(name).append("\r\n"); + } + } + } + } else { + for (Pair itemPair : MapleItemInformationProvider.getInstance().getAllItems()) { + if (sb.length() < 32654) {//ohlol + if (itemPair.getRight().toLowerCase().contains(search.toLowerCase())) { + //#v").append(id).append("# #k- + sb.append("#b").append(itemPair.getLeft()).append("#k - #r").append(itemPair.getRight()).append("\r\n"); + } + } else { + sb.append("#bCouldn't load all items, there are too many results.\r\n"); + break; + } + } + } + if (sb.length() == 0) { + sb.append("#bNo ").append(sub[1].toLowerCase()).append("s found.\r\n"); + } + sb.append("\r\n#kLoaded within ").append((double) (System.currentTimeMillis() - start) / 1000).append(" seconds.");//because I can, and it's free + } else { + sb.append("#bInvalid search.\r\nSyntax: '/search [type] [name]', where [type] is NPC, ITEM, MOB, or SKILL."); + } + c.announce(MaplePacketCreator.getNPCTalk(9010000, (byte) 0, sb.toString(), "00 00", (byte) 0)); + } else if (sub[0].equals("servermessage")) { + c.getWorldServer().setServerMessage(joinStringFrom(sub, 1)); + } else if (sub[0].equals("warpsnowball")) { + List chars = new ArrayList<>(player.getMap().getCharacters()); + for (MapleCharacter chr : chars) { + chr.changeMap(109060000, chr.getTeam()); + } + } else if (sub[0].equals("setall")) { + final int x = Short.parseShort(sub[1]); + player.setStr(x); + player.setDex(x); + player.setInt(x); + player.setLuk(x); + player.updateSingleStat(MapleStat.STR, x); + player.updateSingleStat(MapleStat.DEX, x); + player.updateSingleStat(MapleStat.INT, x); + player.updateSingleStat(MapleStat.LUK, x); + } else if (sub[0].equals("unban")) { + try { + try (PreparedStatement p = DatabaseConnection.getConnection().prepareStatement("UPDATE accounts SET banned = -1 WHERE id = " + MapleCharacter.getIdByName(sub[1]))) { + p.executeUpdate(); + } + } catch (Exception e) { + player.message("Failed to unban " + sub[1]); + return true; + } + player.message("Unbanned " + sub[1]); + } else if (sub[0].equals("ban")) { + if (sub.length < 3) { + player.yellowMessage("Syntax: !ban (Please be descriptive)"); + return false; + } + String ign = sub[1]; + String reason = joinStringFrom(sub, 2); + MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(ign); + if (target != null) { + String readableTargetName = MapleCharacter.makeMapleReadable(target.getName()); + String ip = target.getClient().getSession().getRemoteAddress().toString().split(":")[0]; + //Ban ip + PreparedStatement ps = null; + try { + Connection con = DatabaseConnection.getConnection(); + if (ip.matches("/[0-9]{1,3}\\..*")) { + ps = con.prepareStatement("INSERT INTO ipbans VALUES (DEFAULT, ?)"); + ps.setString(1, ip); + ps.executeUpdate(); + ps.close(); + } + } catch (SQLException ex) { + c.getPlayer().message("Error occured while banning IP address"); + c.getPlayer().message(target.getName() + "'s IP was not banned: " + ip); + } + target.getClient().banMacs(); + reason = c.getPlayer().getName() + " banned " + readableTargetName + " for " + reason + " (IP: " + ip + ") " + "(MAC: " + c.getMacs() + ")"; + target.ban(reason); + target.yellowMessage("You have been banned by #b" + c.getPlayer().getName() + " #k."); + target.yellowMessage("Reason: " + reason); + c.announce(MaplePacketCreator.getGMEffect(4, (byte) 0)); + final MapleCharacter rip = target; + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + rip.getClient().disconnect(false, false); + } + }, 5000); //5 Seconds + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(6, "[RIP]: " + ign + " has been banned.")); + } else if (MapleCharacter.ban(ign, reason, false)) { + c.announce(MaplePacketCreator.getGMEffect(4, (byte) 0)); + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(6, "[RIP]: " + ign + " has been banned.")); + } else { + c.announce(MaplePacketCreator.getGMEffect(6, (byte) 1)); + } + } else if (sub[0].equalsIgnoreCase("night")) { + player.getMap().broadcastNightEffect(); + player.yellowMessage("Done."); + } else { + return false; + } + return true; + } + + public static void executeAdminCommand(MapleClient c, String[] sub, char heading) { + MapleCharacter player = c.getPlayer(); + switch (sub[0]) { + case "sp": //Changed to support giving sp /a + if (sub.length == 2) { + player.setRemainingSp(Integer.parseInt(sub[1])); + player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp()); + } else { + MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + victim.setRemainingSp(Integer.parseInt(sub[2])); + victim.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSp()); + } + break; + case "horntail": + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(8810026), player.getPosition()); + break; + case "packet": + player.getMap().broadcastMessage(MaplePacketCreator.customPacket(joinStringFrom(sub, 1))); + break; + case "timerdebug": + TimerManager tMan = TimerManager.getInstance(); + player.dropMessage(6, "Total Task: " + tMan.getTaskCount() + " Current Task: " + tMan.getQueuedTasks() + " Active Task: " + tMan.getActiveCount() + " Completed Task: " + tMan.getCompletedTaskCount()); + break; + case "warpworld": + Server server = Server.getInstance(); + byte worldb = Byte.parseByte(sub[1]); + if (worldb <= (server.getWorlds().size() - 1)) { + try { + String[] socket = server.getIP(worldb, c.getChannel()).split(":"); + c.getWorldServer().removePlayer(player); + player.getMap().removePlayer(player);//LOL FORGOT THIS >< + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + player.setWorld(worldb); + player.saveToDB();//To set the new world :O (true because else 2 player instances are created, one in both worlds) + c.announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); + } catch (UnknownHostException | NumberFormatException ex) { + player.message("Error when trying to change worlds, are you sure the world you are trying to warp to has the same amount of channels?"); + } + + } else { + player.message("Invalid world; highest number available: " + (server.getWorlds().size() - 1)); + } + break; + case "saveall"://fyi this is a stupid command + for (World world : Server.getInstance().getWorlds()) { + for (MapleCharacter chr : world.getPlayerStorage().getAllCharacters()) { + chr.saveToDB(); + } + } + String message = player.getName() + " used !saveall."; + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(5, message)); + player.message("All players saved successfully."); + break; + case "dcall": + for (World world : Server.getInstance().getWorlds()) { + for (MapleCharacter chr : world.getPlayerStorage().getAllCharacters()) { + if (!chr.isGM()) { + chr.getClient().disconnect(false, false); + } + } + } + player.message("All players successfully disconnected."); + break; + case "mapplayers"://fyi this one is even stupider + //Adding HP to it, making it less useless. + String names = ""; + int map = player.getMapId(); + for (World world : Server.getInstance().getWorlds()) { + for (MapleCharacter chr : world.getPlayerStorage().getAllCharacters()) { + int curMap = chr.getMapId(); + String hp = Integer.toString(chr.getHp()); + String maxhp = Integer.toString(chr.getMaxHp()); + String name = chr.getName() + ": " + hp + "/" + maxhp; + if (map == curMap) { + names = names.equals("") ? name : (names + ", " + name); + } + } + } + player.message("These b lurkin: " + names); + break; + case "getacc": + if (sub.length < 1) { + player.message("Please provide an IGN."); + break; + } + MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + player.message(victim.getName() + "'s account name is " + victim.getClient().getAccountName() + "."); + break; + case "npc": + if (sub.length < 1) { + break; + } + MapleNPC npc = MapleLifeFactory.getNPC(Integer.parseInt(sub[1])); + if (npc != null) { + npc.setPosition(player.getPosition()); + npc.setCy(player.getPosition().y); + npc.setRx0(player.getPosition().x + 50); + npc.setRx1(player.getPosition().x - 50); + npc.setFh(player.getMap().getFootholds().findBelow(c.getPlayer().getPosition()).getId()); + player.getMap().addMapObject(npc); + player.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(npc)); + } + break; + case "job": { //Honestly, we should merge this with @job and job yourself if array is 1 long only. I'll do it but gotta run at this point lel + //Alright, doing that. /a + if (sub.length == 2) { + player.changeJob(MapleJob.getById(Integer.parseInt(sub[1]))); + player.equipChanged(); + } else if (sub.length == 3) { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + victim.changeJob(MapleJob.getById(Integer.parseInt(sub[2]))); + player.equipChanged(); + } else { + player.message("!job "); + } + break; + } + case "playernpc": + player.playerNPC(c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]), Integer.parseInt(sub[2])); + break; + case "shutdown": + case "shutdownnow": + int time = 60000; + if (sub[0].equals("shutdownnow")) { + time = 1; + } else if (sub.length > 1) { + time *= Integer.parseInt(sub[1]); + } + TimerManager.getInstance().schedule(Server.getInstance().shutdown(false), time); + break; + case "face": + if (sub.length == 2) { + player.setFace(Integer.parseInt(sub[1])); + player.equipChanged(); + } else { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + player.setFace(Integer.parseInt(sub[2])); + player.equipChanged(); + } + break; + case "hair": + if (sub.length == 2) { + player.setHair(Integer.parseInt(sub[1])); + player.equipChanged(); + } else { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(sub[1]); + player.setHair(Integer.parseInt(sub[2])); + player.equipChanged(); + } + break; + case "itemvac": + List items = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM)); + for (MapleMapObject item : items) { + MapleMapItem mapitem = (MapleMapItem) item; + if (!MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true)) { + continue; + } + mapitem.setPickedUp(true); + player.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 2, player.getId()), mapitem.getPosition()); + player.getMap().removeMapObject(item); + } + break; + case "zakum": + player.getMap().spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(8800000), player.getPosition()); + for (int x = 8800003; x < 8800011; x++) { + player.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(x), player.getPosition()); + } + break; + case "clearquestcache": + MapleQuest.clearCache(); + player.dropMessage(5, "Quest Cache Cleared."); + break; + case "clearquest": + if(sub.length < 1) { + player.dropMessage(5, "Plese include a quest ID."); + return; + } + MapleQuest.clearCache(Integer.parseInt(sub[1])); + player.dropMessage(5, "Quest Cache for quest " + sub[1] + " cleared."); + break; + default: + player.yellowMessage("Command " + heading + sub[0] + " does not exist."); + break; + } + } + + private static String joinStringFrom(String arr[], int start) { + StringBuilder builder = new StringBuilder(); + for (int i = start; i < arr.length; i++) { + builder.append(arr[i]); + if (i != arr.length - 1) { + builder.append(" "); + } + } + return builder.toString(); + } +} + + + + + diff --git a/src/client/inventory/Equip.java b/src/client/inventory/Equip.java new file mode 100644 index 0000000000..179ecb8f57 --- /dev/null +++ b/src/client/inventory/Equip.java @@ -0,0 +1,371 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package client.inventory; + +import client.MapleClient; +import java.util.LinkedList; +import java.util.List; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.Pair; + +public class Equip extends Item { + + public static enum ScrollResult { + + FAIL(0), SUCCESS(1), CURSE(2); + private int value = -1; + + private ScrollResult(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } + private byte upgradeSlots; + private byte level, flag, itemLevel; + private short str, dex, _int, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, vicious; + private float itemExp; + private int ringid = -1; + private boolean wear = false; + + public Equip(int id, short position) { + super(id, position, (short) 1); + this.itemExp = 0; + this.itemLevel = 1; + } + + public Equip(int id, short position, int slots) { + super(id, position, (short) 1); + this.upgradeSlots = (byte) slots; + this.itemExp = 0; + this.itemLevel = 1; + } + + @Override + public Item copy() { + Equip ret = new Equip(getItemId(), getPosition(), getUpgradeSlots()); + ret.str = str; + ret.dex = dex; + ret._int = _int; + ret.luk = luk; + ret.hp = hp; + ret.mp = mp; + ret.matk = matk; + ret.mdef = mdef; + ret.watk = watk; + ret.wdef = wdef; + ret.acc = acc; + ret.avoid = avoid; + ret.hands = hands; + ret.speed = speed; + ret.jump = jump; + ret.flag = flag; + ret.vicious = vicious; + ret.upgradeSlots = upgradeSlots; + ret.itemLevel = itemLevel; + ret.itemExp = itemExp; + ret.level = level; + ret.log = new LinkedList<>(log); + ret.setOwner(getOwner()); + ret.setQuantity(getQuantity()); + ret.setExpiration(getExpiration()); + ret.setGiftFrom(getGiftFrom()); + return ret; + } + + @Override + public byte getFlag() { + return flag; + } + + @Override + public byte getType() { + return 1; + } + + public byte getUpgradeSlots() { + return upgradeSlots; + } + + public short getStr() { + return str; + } + + public short getDex() { + return dex; + } + + public short getInt() { + return _int; + } + + public short getLuk() { + return luk; + } + + public short getHp() { + return hp; + } + + public short getMp() { + return mp; + } + + public short getWatk() { + return watk; + } + + public short getMatk() { + return matk; + } + + public short getWdef() { + return wdef; + } + + public short getMdef() { + return mdef; + } + + public short getAcc() { + return acc; + } + + public short getAvoid() { + return avoid; + } + + public short getHands() { + return hands; + } + + public short getSpeed() { + return speed; + } + + public short getJump() { + return jump; + } + + public short getVicious() { + return vicious; + } + + @Override + public void setFlag(byte flag) { + this.flag = flag; + } + + public void setStr(short str) { + this.str = str; + } + + public void setDex(short dex) { + this.dex = dex; + } + + public void setInt(short _int) { + this._int = _int; + } + + public void setLuk(short luk) { + this.luk = luk; + } + + public void setHp(short hp) { + this.hp = hp; + } + + public void setMp(short mp) { + this.mp = mp; + } + + public void setWatk(short watk) { + this.watk = watk; + } + + public void setMatk(short matk) { + this.matk = matk; + } + + public void setWdef(short wdef) { + this.wdef = wdef; + } + + public void setMdef(short mdef) { + this.mdef = mdef; + } + + public void setAcc(short acc) { + this.acc = acc; + } + + public void setAvoid(short avoid) { + this.avoid = avoid; + } + + public void setHands(short hands) { + this.hands = hands; + } + + public void setSpeed(short speed) { + this.speed = speed; + } + + public void setJump(short jump) { + this.jump = jump; + } + + public void setVicious(short vicious) { + this.vicious = vicious; + } + + public void setUpgradeSlots(byte upgradeSlots) { + this.upgradeSlots = upgradeSlots; + } + + public byte getLevel() { + return level; + } + + public void setLevel(byte level) { + this.level = level; + } + + public void gainLevel(MapleClient c, boolean timeless) { + List> stats = MapleItemInformationProvider.getInstance().getItemLevelupStats(getItemId(), itemLevel, timeless); + for (Pair stat : stats) { + switch (stat.getLeft()) { + case "incDEX": + dex += stat.getRight(); + break; + case "incSTR": + str += stat.getRight(); + break; + case "incINT": + _int += stat.getRight(); + break; + case "incLUK": + luk += stat.getRight(); + break; + case "incMHP": + hp += stat.getRight(); + break; + case "incMMP": + mp += stat.getRight(); + break; + case "incPAD": + watk += stat.getRight(); + break; + case "incMAD": + matk += stat.getRight(); + break; + case "incPDD": + wdef += stat.getRight(); + break; + case "incMDD": + mdef += stat.getRight(); + break; + case "incEVA": + avoid += stat.getRight(); + break; + case "incACC": + acc += stat.getRight(); + break; + case "incSpeed": + speed += stat.getRight(); + break; + case "incJump": + jump += stat.getRight(); + break; + } + } + this.itemLevel++; + c.announce(MaplePacketCreator.showEquipmentLevelUp()); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showForeignEffect(c.getPlayer().getId(), 15)); + c.getPlayer().forceUpdateItem(this); + } + + public int getItemExp() { + return (int) itemExp; + } + + public void gainItemExp(MapleClient c, int gain, boolean timeless) { + int expneeded = timeless ? (10 * itemLevel + 70) : (5 * itemLevel + 65); + float modifier = 364 / expneeded; + float exp = (expneeded / (1000000 * modifier * modifier)) * gain; + itemExp += exp; + if (itemExp >= 364) { + itemExp = (itemExp - 364); + gainLevel(c, timeless); + } else { + c.getPlayer().forceUpdateItem(this); + } + } + + public void setItemExp(int exp) { + this.itemExp = exp; + } + + public void setItemLevel(byte level) { + this.itemLevel = level; + } + + @Override + public void setQuantity(short quantity) { + if (quantity < 0 || quantity > 1) { + throw new RuntimeException("Setting the quantity to " + quantity + " on an equip (itemid: " + getItemId() + ")"); + } + super.setQuantity(quantity); + } + + public void setUpgradeSlots(int i) { + this.upgradeSlots = (byte) i; + } + + public void setVicious(int i) { + this.vicious = (short) i; + } + + public int getRingId() { + return ringid; + } + + public void setRingId(int id) { + this.ringid = id; + } + + public boolean isWearing() { + return wear; + } + + public void wear(boolean yes) { + wear = yes; + } + + public byte getItemLevel() { + return itemLevel; + } +} \ No newline at end of file diff --git a/src/client/inventory/Item.java b/src/client/inventory/Item.java new file mode 100644 index 0000000000..f5398529f2 --- /dev/null +++ b/src/client/inventory/Item.java @@ -0,0 +1,172 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package client.inventory; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.Random; + +public class Item implements Comparable { + + private int id, cashId, sn; + private short position; + private short quantity; + private int petid = -1; + private MaplePet pet = null; + private String owner = ""; + protected List log; + private byte flag; + private long expiration = -1; + private String giftFrom = ""; + + public Item(int id, short position, short quantity) { + this.id = id; + this.position = position; + this.quantity = quantity; + this.log = new LinkedList<>(); + this.flag = 0; + } + + public Item(int id, short position, short quantity, int petid) { + this.id = id; + this.position = position; + this.quantity = quantity; + this.petid = petid; + if (petid > -1) this.pet = MaplePet.loadFromDb(id, position, petid); + this.flag = 0; + this.log = new LinkedList<>(); + } + + public Item copy() { + Item ret = new Item(id, position, quantity, petid); + ret.flag = flag; + ret.owner = owner; + ret.expiration = expiration; + ret.log = new LinkedList<>(log); + return ret; + } + + public void setPosition(short position) { + this.position = position; + } + + public void setQuantity(short quantity) { + this.quantity = quantity; + } + + public int getItemId() { + return id; + } + + public int getCashId() { + if (cashId == 0) { + cashId = new Random().nextInt(Integer.MAX_VALUE) + 1; + } + return cashId; + } + + public short getPosition() { + return position; + } + + public short getQuantity() { + return quantity; + } + + public byte getType() { + if (getPetId() > -1) { + return 3; + } + return 2; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public int getPetId() { + return petid; + } + + public void setPetId(int id) { + this.petid = id; + } + + public int compareTo(Item other) { + if (this.id < other.getItemId()) { + return -1; + } else if (this.id > other.getItemId()) { + return 1; + } + return 0; + } + + @Override + public String toString() { + return "Item: " + id + " quantity: " + quantity; + } + + public List getLog() { + return Collections.unmodifiableList(log); + } + + public byte getFlag() { + return flag; + } + + public void setFlag(byte b) { + this.flag = b; + } + + public long getExpiration() { + return expiration; + } + + public void setExpiration(long expire) { + this.expiration = expire; + } + + public int getSN() { + return sn; + } + + public void setSN(int sn) { + this.sn = sn; + } + + public String getGiftFrom() { + return giftFrom; + } + + public void setGiftFrom(String giftFrom) { + this.giftFrom = giftFrom; + } + + public MaplePet getPet() { + return pet; + } +} diff --git a/src/client/inventory/ItemFactory.java b/src/client/inventory/ItemFactory.java new file mode 100644 index 0000000000..524a8036ac --- /dev/null +++ b/src/client/inventory/ItemFactory.java @@ -0,0 +1,227 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package client.inventory; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.locks.ReentrantLock; +import tools.DatabaseConnection; +import tools.Pair; + +/** + * + * @author Flav + */ +public enum ItemFactory { + + INVENTORY(1, false), + STORAGE(2, true), + CASH_EXPLORER(3, true), + CASH_CYGNUS(4, false), + CASH_ARAN(5, false), + MERCHANT(6, false); + private int value; + private boolean account; + private static ReentrantLock lock = new ReentrantLock(true); + + private ItemFactory(int value, boolean account) { + this.value = value; + this.account = account; + } + + public int getValue() { + return value; + } + + public List> loadItems(int id, boolean login) throws SQLException { + List> items = new ArrayList<>(); + + PreparedStatement ps = null; + ResultSet rs = null; + try { + StringBuilder query = new StringBuilder(); + query.append("SELECT * FROM `inventoryitems` LEFT JOIN `inventoryequipment` USING(`inventoryitemid`) WHERE `type` = ? AND `"); + query.append(account ? "accountid" : "characterid").append("` = ?"); + + if (login) { + query.append(" AND `inventorytype` = ").append(MapleInventoryType.EQUIPPED.getType()); + } + + + ps = DatabaseConnection.getConnection().prepareStatement(query.toString()); + ps.setInt(1, value); + ps.setInt(2, id); + rs = ps.executeQuery(); + + while (rs.next()) { + MapleInventoryType mit = MapleInventoryType.getByType(rs.getByte("inventorytype")); + + if (mit.equals(MapleInventoryType.EQUIP) || mit.equals(MapleInventoryType.EQUIPPED)) { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position")); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) rs.getInt("quantity")); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setFlag((byte) rs.getInt("flag")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getByte("level")); + equip.setItemExp(rs.getInt("itemexp")); + equip.setItemLevel(rs.getByte("itemlevel")); + equip.setExpiration(rs.getLong("expiration")); + equip.setGiftFrom(rs.getString("giftFrom")); + equip.setRingId(rs.getInt("ringid")); + items.add(new Pair(equip, mit)); + } else { + Item item = new Item(rs.getInt("itemid"), (byte) rs.getInt("position"), (short) rs.getInt("quantity"), rs.getInt("petid")); + item.setOwner(rs.getString("owner")); + item.setExpiration(rs.getLong("expiration")); + item.setGiftFrom(rs.getString("giftFrom")); + item.setFlag((byte) rs.getInt("flag")); + items.add(new Pair<>(item, mit)); + } + } + + rs.close(); + ps.close(); + } finally { + if (rs != null) { + rs.close(); + } + if (ps != null) { + ps.close(); + } + } + return items; + } + + public synchronized void saveItems(List> items, int id, Connection con) throws SQLException { + PreparedStatement ps = null; + PreparedStatement pse = null; + ResultSet rs = null; + + lock.lock(); + + try { + StringBuilder query = new StringBuilder(); + query.append("DELETE `inventoryitems`, `inventoryequipment` FROM `inventoryitems` LEFT JOIN `inventoryequipment` USING(`inventoryitemid`) WHERE `type` = ? AND `"); + query.append(account ? "accountid" : "characterid").append("` = ?"); + ps = con.prepareStatement(query.toString()); + ps.setInt(1, value); + ps.setInt(2, id); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("INSERT INTO `inventoryitems` VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS); + + if (!items.isEmpty()) { + for (Pair pair : items) { + Item item = pair.getLeft(); + MapleInventoryType mit = pair.getRight(); + ps.setInt(1, value); + ps.setString(2, account ? null : String.valueOf(id)); + ps.setString(3, account ? String.valueOf(id) : null); + ps.setInt(4, item.getItemId()); + ps.setInt(5, mit.getType()); + ps.setInt(6, item.getPosition()); + ps.setInt(7, item.getQuantity()); + ps.setString(8, item.getOwner()); + ps.setInt(9, item.getPetId()); + ps.setInt(10, item.getFlag()); + ps.setLong(11, item.getExpiration()); + ps.setString(12, item.getGiftFrom()); + ps.executeUpdate(); + + pse = con.prepareStatement("INSERT INTO `inventoryequipment` VALUES (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + + if (mit.equals(MapleInventoryType.EQUIP) || mit.equals(MapleInventoryType.EQUIPPED)) { + rs = ps.getGeneratedKeys(); + + if (!rs.next()) { + throw new RuntimeException("Inserting item failed."); + } + + pse.setInt(1, rs.getInt(1)); + rs.close(); + + Equip equip = (Equip) item; + pse.setInt(2, equip.getUpgradeSlots()); + pse.setInt(3, equip.getLevel()); + pse.setInt(4, equip.getStr()); + pse.setInt(5, equip.getDex()); + pse.setInt(6, equip.getInt()); + pse.setInt(7, equip.getLuk()); + pse.setInt(8, equip.getHp()); + pse.setInt(9, equip.getMp()); + pse.setInt(10, equip.getWatk()); + pse.setInt(11, equip.getMatk()); + pse.setInt(12, equip.getWdef()); + pse.setInt(13, equip.getMdef()); + pse.setInt(14, equip.getAcc()); + pse.setInt(15, equip.getAvoid()); + pse.setInt(16, equip.getHands()); + pse.setInt(17, equip.getSpeed()); + pse.setInt(18, equip.getJump()); + pse.setInt(19, 0); + pse.setInt(20, equip.getVicious()); + pse.setInt(21, equip.getItemLevel()); + pse.setInt(22, equip.getItemExp()); + pse.setInt(23, equip.getRingId()); + pse.executeUpdate(); + } + + pse.close(); + } + } + + ps.close(); + } finally { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + if (pse != null && !pse.isClosed()) { + pse.close(); + } + if(rs != null && !rs.isClosed()) { + rs.close(); + } + + lock.unlock(); + } + } +} \ No newline at end of file diff --git a/src/client/inventory/MapleInventory.java b/src/client/inventory/MapleInventory.java new file mode 100644 index 0000000000..019c00f1b1 --- /dev/null +++ b/src/client/inventory/MapleInventory.java @@ -0,0 +1,281 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import tools.Pair; +import client.MapleCharacter; +import constants.ItemConstants; + +/** + * + * @author Matze + */ +public class MapleInventory implements Iterable { + private Map inventory = new LinkedHashMap<>(); + private byte slotLimit; + private MapleInventoryType type; + private boolean checked = false; + + public MapleInventory(MapleInventoryType type, byte slotLimit) { + this.inventory = new LinkedHashMap<>(); + this.type = type; + this.slotLimit = slotLimit; + } + + public boolean isExtendableInventory() { // not sure about cash, basing this on the previous one. + return !(type.equals(MapleInventoryType.UNDEFINED) || type.equals(MapleInventoryType.EQUIPPED) || type.equals(MapleInventoryType.CASH)); + } + + public boolean isEquipInventory() { + return type.equals(MapleInventoryType.EQUIP) || type.equals(MapleInventoryType.EQUIPPED); + } + + public byte getSlotLimit() { + return slotLimit; + } + + public void setSlotLimit(int newLimit) { + slotLimit = (byte) newLimit; + } + + public Item findById(int itemId) { + for (Item item : inventory.values()) { + if (item.getItemId() == itemId) { + return item; + } + } + return null; + } + + public int countById(int itemId) { + int possesed = 0; + for (Item item : inventory.values()) { + if (item.getItemId() == itemId) { + possesed += item.getQuantity(); + } + } + return possesed; + } + + public List listById(int itemId) { + List ret = new ArrayList<>(); + for (Item item : inventory.values()) { + if (item.getItemId() == itemId) { + ret.add(item); + } + } + if (ret.size() > 1) { + Collections.sort(ret); + } + return ret; + } + + public Collection list() { + return inventory.values(); + } + + public short addItem(Item item) { + short slotId = getNextFreeSlot(); + if (slotId < 0 || item == null) { + return -1; + } + inventory.put(slotId, item); + item.setPosition(slotId); + return slotId; + } + + public void addFromDB(Item item) { + if (item.getPosition() < 0 && !type.equals(MapleInventoryType.EQUIPPED)) { + return; + } + inventory.put(item.getPosition(), item); + } + + public void move(short sSlot, short dSlot, short slotMax) { + Item source = (Item) inventory.get(sSlot); + Item target = (Item) inventory.get(dSlot); + if (source == null) { + return; + } + if (target == null) { + source.setPosition(dSlot); + inventory.put(dSlot, source); + inventory.remove(sSlot); + } else if (target.getItemId() == source.getItemId() && !ItemConstants.isRechargable(source.getItemId())) { + if (type.getType() == MapleInventoryType.EQUIP.getType()) { + swap(target, source); + } + if (source.getQuantity() + target.getQuantity() > slotMax) { + short rest = (short) ((source.getQuantity() + target.getQuantity()) - slotMax); + source.setQuantity(rest); + target.setQuantity(slotMax); + } else { + target.setQuantity((short) (source.getQuantity() + target.getQuantity())); + inventory.remove(sSlot); + } + } else { + swap(target, source); + } + } + + private void swap(Item source, Item target) { + inventory.remove(source.getPosition()); + inventory.remove(target.getPosition()); + short swapPos = source.getPosition(); + source.setPosition(target.getPosition()); + target.setPosition(swapPos); + inventory.put(source.getPosition(), source); + inventory.put(target.getPosition(), target); + } + + public Item getItem(short slot) { + return inventory.get(slot); + } + + public void removeItem(short slot) { + removeItem(slot, (short) 1, false); + } + + public void removeItem(short slot, short quantity, boolean allowZero) { + Item item = inventory.get(slot); + if (item == null) {// TODO is it ok not to throw an exception here? + return; + } + item.setQuantity((short) (item.getQuantity() - quantity)); + if (item.getQuantity() < 0) { + item.setQuantity((short) 0); + } + if (item.getQuantity() == 0 && !allowZero) { + removeSlot(slot); + } + } + + public void removeSlot(short slot) { + inventory.remove(slot); + } + + public boolean isFull() { + return inventory.size() >= slotLimit; + } + + public boolean isFull(int margin) { + return inventory.size() + margin >= slotLimit; + } + + public short getNextFreeSlot() { + if (isFull()) { + return -1; + } + for (short i = 1; i <= slotLimit; i++) { + if (!inventory.keySet().contains(i)) { + return i; + } + } + return -1; + } + + public short getNumFreeSlot() { + if (isFull()) { + return 0; + } + short free = 0; + for (short i = 1; i <= slotLimit; i++) { + if (!inventory.keySet().contains(i)) { + free++; + } + } + return free; + } + + public static boolean checkSpot(MapleCharacter chr, Item item) { + if (chr.getInventory(MapleInventoryType.getByType(item.getType())).isFull()) return false; + return true; + } + + public static boolean checkSpots(MapleCharacter chr, List> items) { + int equipSlot = 0, useSlot = 0, setupSlot = 0, etcSlot = 0, cashSlot = 0; + for (Pair item : items) { + if (item.getRight().getType() == MapleInventoryType.EQUIP.getType()) + equipSlot++; + if (item.getRight().getType() == MapleInventoryType.USE.getType()) + useSlot++; + if (item.getRight().getType() == MapleInventoryType.SETUP.getType()) + setupSlot++; + if (item.getRight().getType() == MapleInventoryType.ETC.getType()) + etcSlot++; + if (item.getRight().getType() == MapleInventoryType.CASH.getType()) + cashSlot++; + } + + if (chr.getInventory(MapleInventoryType.EQUIP).isFull(equipSlot - 1)) return false; + else if (chr.getInventory(MapleInventoryType.USE).isFull(useSlot - 1)) return false; + else if (chr.getInventory(MapleInventoryType.SETUP).isFull(setupSlot - 1)) return false; + else if (chr.getInventory(MapleInventoryType.ETC).isFull(etcSlot - 1)) return false; + else if (chr.getInventory(MapleInventoryType.CASH).isFull(cashSlot - 1)) return false; + return true; + } + + + public MapleInventoryType getType() { + return type; + } + + @Override + public Iterator iterator() { + return Collections.unmodifiableCollection(inventory.values()).iterator(); + } + + public Collection allInventories() { + return Collections.singletonList(this); + } + + public Item findByCashId(int cashId) { + boolean isRing = false; + Equip equip = null; + for (Item item : inventory.values()) { + if (item.getType() == MapleInventoryType.EQUIP.getType()) { + equip = (Equip) item; + isRing = equip.getRingId() > -1; + } + if ((item.getPetId() > -1 ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()) == cashId) + return item; + } + + return null; + } + + public boolean checked() { + return checked; + } + + public void checked(boolean yes) { + checked = yes; + } +} \ No newline at end of file diff --git a/src/client/inventory/MapleInventoryType.java b/src/client/inventory/MapleInventoryType.java new file mode 100644 index 0000000000..b21434eec1 --- /dev/null +++ b/src/client/inventory/MapleInventoryType.java @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +/** + * @author Matze + */ +public enum MapleInventoryType { + UNDEFINED(0), + EQUIP(1), + USE(2), + SETUP(3), + ETC(4), + CASH(5), + EQUIPPED(-1); //Seems nexon screwed something when removing an item T_T + final byte type; + + private MapleInventoryType(int type) { + this.type = (byte) type; + } + + public byte getType() { + return type; + } + + public short getBitfieldEncoding() { + return (short) (2 << type); + } + + public static MapleInventoryType getByType(byte type) { + for (MapleInventoryType l : MapleInventoryType.values()) { + if (l.getType() == type) { + return l; + } + } + return null; + } + + public static MapleInventoryType getByWZName(String name) { + if (name.equals("Install")) { + return SETUP; + } else if (name.equals("Consume")) { + return USE; + } else if (name.equals("Etc")) { + return ETC; + } else if (name.equals("Cash")) { + return CASH; + } else if (name.equals("Pet")) { + return CASH; + } + return UNDEFINED; + } +} diff --git a/src/client/inventory/MaplePet.java b/src/client/inventory/MaplePet.java new file mode 100644 index 0000000000..25e9b011b2 --- /dev/null +++ b/src/client/inventory/MaplePet.java @@ -0,0 +1,229 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +import com.mysql.jdbc.Statement; +import java.awt.Point; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; +import tools.DatabaseConnection; +import server.MapleItemInformationProvider; +import server.movement.AbsoluteLifeMovement; +import server.movement.LifeMovement; +import server.movement.LifeMovementFragment; + +/** + * + * @author Matze + */ +public class MaplePet extends Item { + private String name; + private int uniqueid; + private int closeness = 0; + private byte level = 1; + private int fullness = 100; + private int Fh; + private Point pos; + private int stance; + private boolean summoned; + + private MaplePet(int id, short position, int uniqueid) { + super(id, position, (short) 1); + this.uniqueid = uniqueid; + } + + public static MaplePet loadFromDb(int itemid, short position, int petid) { + try { + MaplePet ret = new MaplePet(itemid, position, petid); + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT name, level, closeness, fullness, summoned FROM pets WHERE petid = ?"); // Get pet details.. + ps.setInt(1, petid); + ResultSet rs = ps.executeQuery(); + rs.next(); + ret.setName(rs.getString("name")); + ret.setCloseness(Math.min(rs.getInt("closeness"), 30000)); + ret.setLevel((byte) Math.min(rs.getByte("level"), 30)); + ret.setFullness(Math.min(rs.getInt("fullness"), 100)); + ret.setSummoned(rs.getInt("summoned") == 1); + rs.close(); + ps.close(); + return ret; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + public void saveToDb() { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE pets SET name = ?, level = ?, closeness = ?, fullness = ?, summoned = ? WHERE petid = ?"); + ps.setString(1, getName()); + ps.setInt(2, getLevel()); + ps.setInt(3, getCloseness()); + ps.setInt(4, getFullness()); + ps.setInt(5, isSummoned() ? 1 : 0); + ps.setInt(6, getUniqueId()); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static int createPet(int itemid) { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO pets (name, level, closeness, fullness, summoned) VALUES (?, 1, 0, 100, 0)", Statement.RETURN_GENERATED_KEYS); + ps.setString(1, MapleItemInformationProvider.getInstance().getName(itemid)); + ps.executeUpdate(); + ResultSet rs = ps.getGeneratedKeys(); + int ret = -1; + if (rs.next()) { + ret = rs.getInt(1); + } + rs.close(); + ps.close(); + return ret; + } catch (SQLException e) { + e.printStackTrace(); + return -1; + } + } + + public static int createPet(int itemid, byte level, int closeness, int fullness) { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO pets (name, level, closeness, fullness, summoned) VALUES (?, ?, ?, ?, 0)", Statement.RETURN_GENERATED_KEYS); + ps.setString(1, MapleItemInformationProvider.getInstance().getName(itemid)); + ps.setByte(2, level); + ps.setInt(3, closeness); + ps.setInt(4, fullness); + ps.executeUpdate(); + ResultSet rs = ps.getGeneratedKeys(); + int ret = -1; + if (rs.next()) { + ret = rs.getInt(1); + rs.close(); + ps.close(); + } + return ret; + } catch (SQLException e) { + e.printStackTrace(); + return -1; + } + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getUniqueId() { + return uniqueid; + } + + public void setUniqueId(int id) { + this.uniqueid = id; + } + + public int getCloseness() { + return closeness; + } + + public void setCloseness(int closeness) { + this.closeness = closeness; + } + + public void gainCloseness(int x) { + this.closeness += x; + } + + public byte getLevel() { + return level; + } + + public void setLevel(byte level) { + this.level = level; + } + + public int getFullness() { + return fullness; + } + + public void setFullness(int fullness) { + this.fullness = fullness; + } + + public int getFh() { + return Fh; + } + + public void setFh(int Fh) { + this.Fh = Fh; + } + + public Point getPos() { + return pos; + } + + public void setPos(Point pos) { + this.pos = pos; + } + + public int getStance() { + return stance; + } + + public void setStance(int stance) { + this.stance = stance; + } + + public boolean isSummoned() { + return summoned; + } + + public void setSummoned(boolean yes) { + this.summoned = yes; + } + + public boolean canConsume(int itemId) { + for (int petId : MapleItemInformationProvider.getInstance().petsCanConsume(itemId)) { + if (petId == this.getItemId()) { + return true; + } + } + return false; + } + + public void updatePosition(List movement) { + for (LifeMovementFragment move : movement) { + if (move instanceof LifeMovement) { + if (move instanceof AbsoluteLifeMovement) { + this.setPos(((LifeMovement) move).getPosition()); + } + this.setStance(((LifeMovement) move).getNewstate()); + } + } + } +} \ No newline at end of file diff --git a/src/client/inventory/MapleWeaponType.java b/src/client/inventory/MapleWeaponType.java new file mode 100644 index 0000000000..38032505fc --- /dev/null +++ b/src/client/inventory/MapleWeaponType.java @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +public enum MapleWeaponType { + NOT_A_WEAPON(0), + GENERAL1H_SWING(4.4), + GENERAL1H_STAB(3.2), + GENERAL2H_SWING(4.8), + GENERAL2H_STAB(3.4), + BOW(3.4), + CLAW(3.6), + CROSSBOW(3.6), + DAGGER_THIEVES(3.6), + DAGGER_OTHER(4), + GUN(3.6), + KNUCKLE(4.8), + POLE_ARM_SWING(5.0), + POLE_ARM_STAB(3.0), + SPEAR_STAB(5.0), + SPEAR_SWING(3.0), + STAFF(3.6), + SWORD1H(4.0), + SWORD2H(4.6), + WAND(3.6); + private double damageMultiplier; + + private MapleWeaponType(double maxDamageMultiplier) { + this.damageMultiplier = maxDamageMultiplier; + } + + public double getMaxDamageMultiplier() { + return damageMultiplier; + } +} diff --git a/src/client/inventory/ModifyInventory.java b/src/client/inventory/ModifyInventory.java new file mode 100644 index 0000000000..5eb4b34958 --- /dev/null +++ b/src/client/inventory/ModifyInventory.java @@ -0,0 +1,53 @@ +package client.inventory; + +import constants.ItemConstants; + +/** + * + * @author kevin + */ +public class ModifyInventory { + + private int mode; + private Item item; + private short oldPos; + + public ModifyInventory(final int mode, final Item item) { + this.mode = mode; + this.item = item.copy(); + } + + public ModifyInventory(final int mode, final Item item, final short oldPos) { + this.mode = mode; + this.item = item.copy(); + this.oldPos = oldPos; + } + + public final int getMode() { + return mode; + } + + public final int getInventoryType() { + return ItemConstants.getInventoryType(item.getItemId()).getType(); + } + + public final short getPosition() { + return item.getPosition(); + } + + public final short getOldPosition() { + return oldPos; + } + + public final short getQuantity() { + return item.getQuantity(); + } + + public final Item getItem() { + return item; + } + + public final void clear() { + this.item = null; + } +} \ No newline at end of file diff --git a/src/client/inventory/PetCommand.java b/src/client/inventory/PetCommand.java new file mode 100644 index 0000000000..c5d1d1b07d --- /dev/null +++ b/src/client/inventory/PetCommand.java @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +/* + * @author Leifde + */ +public class PetCommand { + private int petId, skillId, prob, inc; + + public PetCommand(int petId, int skillId, int prob, int inc) { + this.petId = petId; + this.skillId = skillId; + this.prob = prob; + this.inc = inc; + } + + public int getPetId() { + return petId; + } + + public int getSkillId() { + return skillId; + } + + public int getProbability() { + return prob; + } + + public int getIncrease() { + return inc; + } +} diff --git a/src/client/inventory/PetDataFactory.java b/src/client/inventory/PetDataFactory.java new file mode 100644 index 0000000000..fb80aca432 --- /dev/null +++ b/src/client/inventory/PetDataFactory.java @@ -0,0 +1,76 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.inventory; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; + +/** + * + * @author Danny (Leifde) + */ +public class PetDataFactory { + private static MapleDataProvider dataRoot = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Item.wz")); + private static Map petCommands = new HashMap(); + private static Map petHunger = new HashMap(); + + public static PetCommand getPetCommand(int petId, int skillId) { + PetCommand ret = petCommands.get(Integer.valueOf(petId) + "" + skillId); + if (ret != null) { + return ret; + } + synchronized (petCommands) { + ret = petCommands.get(petId + "" + skillId); + if (ret == null) { + MapleData skillData = dataRoot.getData("Pet/" + petId + ".img"); + int prob = 0; + int inc = 0; + if (skillData != null) { + prob = MapleDataTool.getInt("interact/" + skillId + "/prob", skillData, 0); + inc = MapleDataTool.getInt("interact/" + skillId + "/inc", skillData, 0); + } + ret = new PetCommand(petId, skillId, prob, inc); + petCommands.put(petId + "" + skillId, ret); + } + return ret; + } + } + + public static int getHunger(int petId) { + Integer ret = petHunger.get(Integer.valueOf(petId)); + if (ret != null) { + return ret; + } + synchronized (petHunger) { + ret = petHunger.get(Integer.valueOf(petId)); + if (ret == null) { + ret = Integer.valueOf(MapleDataTool.getInt(dataRoot.getData("Pet/" + petId + ".img").getChildByPath("info/hungry"), 1)); + } + return ret; + } + } +} diff --git a/src/client/status/MonsterStatus.java b/src/client/status/MonsterStatus.java new file mode 100644 index 0000000000..7947ea8a3a --- /dev/null +++ b/src/client/status/MonsterStatus.java @@ -0,0 +1,77 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package client.status; + +public enum MonsterStatus { + WATK(0x1), + WDEF(0x2), + NEUTRALISE(0x2, true), + PHANTOM_IMPRINT(0x4, true), // needs testing + MATK(0x4), + MDEF(0x8), + ACC(0x10), + AVOID(0x20), + SPEED(0x40), + STUN(0x80), + FREEZE(0x100), + POISON(0x200), + SEAL(0x400), + SHOWDOWN(0x800), + WEAPON_ATTACK_UP(0x1000), + WEAPON_DEFENSE_UP(0x2000), + MAGIC_ATTACK_UP(0x4000), + MAGIC_DEFENSE_UP(0x8000), + DOOM(0x10000), + SHADOW_WEB(0x20000), + WEAPON_IMMUNITY(0x40000), + MAGIC_IMMUNITY(0x80000), + HARD_SKIN(0x200000), // just added + NINJA_AMBUSH(0x400000), + ELEMENTAL_ATTRIBUTE(0x800000), // just added + VENOMOUS_WEAPON(0x1000000), + BLIND(0x2000000), // just added + SEAL_SKILL(0x4000000), + INERTMOB(0x10000000), + WEAPON_REFLECT(0x20000000, true), + MAGIC_REFLECT(0x40000000, true); + + private final int i; + private final boolean first; + + private MonsterStatus(int i) { + this.i = i; + this.first = false; + } + + private MonsterStatus(int i, boolean first) { + this.i = i; + this.first = first; + } + + public boolean isFirst() { + return first; + } + + public int getValue() { + return i; + } +} \ No newline at end of file diff --git a/src/client/status/MonsterStatusEffect.java b/src/client/status/MonsterStatusEffect.java new file mode 100644 index 0000000000..473eb04d98 --- /dev/null +++ b/src/client/status/MonsterStatusEffect.java @@ -0,0 +1,94 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package client.status; + +import client.Skill; +import java.util.Map; +import java.util.concurrent.ScheduledFuture; +import server.life.MobSkill; +import tools.ArrayMap; + +public class MonsterStatusEffect { + + private Map stati; + private Skill skill; + private MobSkill mobskill; + private boolean monsterSkill; + private ScheduledFuture cancelTask; + private ScheduledFuture damageSchedule; + + public MonsterStatusEffect(Map stati, Skill skillId, MobSkill mobskill, boolean monsterSkill) { + this.stati = new ArrayMap<>(stati); + this.skill = skillId; + this.monsterSkill = monsterSkill; + this.mobskill = mobskill; + } + + public Map getStati() { + return stati; + } + + public Integer setValue(MonsterStatus status, Integer newVal) { + return stati.put(status, newVal); + } + + public Skill getSkill() { + return skill; + } + + public boolean isMonsterSkill() { + return monsterSkill; + } + + public final void cancelTask() { + if (cancelTask != null) { + cancelTask.cancel(false); + } + cancelTask = null; + } + + public ScheduledFuture getCancelTask() { + return cancelTask; + } + + public void setCancelTask(ScheduledFuture cancelTask) { + this.cancelTask = cancelTask; + } + + public void removeActiveStatus(MonsterStatus stat) { + stati.remove(stat); + } + + public void setDamageSchedule(ScheduledFuture damageSchedule) { + this.damageSchedule = damageSchedule; + } + + public void cancelDamageSchedule() { + if (damageSchedule != null) { + damageSchedule.cancel(false); + } + } + + public MobSkill getMobSkill() { + return mobskill; + } +} diff --git a/src/constants/EquipSlot.java b/src/constants/EquipSlot.java new file mode 100644 index 0000000000..e1fb37c835 --- /dev/null +++ b/src/constants/EquipSlot.java @@ -0,0 +1,74 @@ +package constants; + +/** + * + * @author The Spookster + */ +public enum EquipSlot { + + HAT("Cp", -1), + SPECIAL_HAT("HrCp", -1), + FACE_ACCESSORY("Af", -2), + EYE_ACCESSORY("Ay", -3), + EARRINGS("Ae", -4), + TOP("Ma", -5), + OVERALL("MaPn", -5), + PANTS("Pn", -6), + SHOES("So", -7), + GLOVES("GlGw", -8), + CASH_GLOVES("Gv", -8), + CAPE("Sr", -9), + SHIELD("Si", -10), + WEAPON("Wp", -11), + WEAPON_2("WpSi", -11), + LOW_WEAPON("WpSp", -11), + RING("Ri", -12, -13, -15, -16), + PENDANT("Pe", -17), + TAMED_MOB("Tm", -18), + SADDLE("Sd", -19), + MEDAL("Me", -49), + BELT("Be", -50), + PET_EQUIP; + + private String name; + private int[] allowed; + + private EquipSlot() { + } + + private EquipSlot(String wz, int... in) { + name = wz; + allowed = in; + } + + public String getName() { + return name; + } + + public boolean isAllowed(int slot, boolean cash) { + if (slot < 0) { + if (allowed != null) { + for (Integer allow : allowed) { + int condition = cash ? allow - 100 : allow; + if (slot == condition) { + return true; + } + } + } + } + return cash && slot < 0; + } + + public static EquipSlot getFromTextSlot(String slot) { + if (!slot.isEmpty()) { + for (EquipSlot c : values()) { + if (c.getName() != null) { + if (c.getName().equals(slot)) { + return c; + } + } + } + } + return PET_EQUIP; + } +} diff --git a/src/constants/ExpTable.java b/src/constants/ExpTable.java new file mode 100644 index 0000000000..af2508db5f --- /dev/null +++ b/src/constants/ExpTable.java @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants; + +public final class ExpTable { + private static final int[] exp = {1, 15, 34, 57, 92, 135, 372, 560, 840, 1242, 1144, 1573, 2144, 2800, 3640, 4700, 5893, 7360, 9144, 11120, 13477, 16268, 19320, 22880, 27008, 31477, 36600, 42444, 48720, 55813, 63800, 86784, 98208, 110932, 124432, 139372, 155865, 173280, 192400, 213345, 235372, 259392, 285532, 312928, 342624, 374760, 408336, 445544, 483532, 524160, 567772, 598886, 631704, 666321, 702836, 741351, 781976, 824828, 870028, 917625, 967995, 1021041, 1076994, 1136013, 1198266, 1263930, 1333194, 1406252, 1483314, 1564600, 1650340, 1740778, 1836173, 1936794, 2042930, 2154882, 2272970, 2397528, 2528912, 2667496, 2813674, 2967863, 3130502, 3302053, 3483005, 3673873, 3875201, 4087562, 4311559, 4547832, 4797053, 5059931, 5337215, 5629694, 5938202, 6263614, 6606860, 6968915, 7350811, 7753635, 8178534, 8626718, 9099462, 9598112, 10124088, 10678888, 11264090, 11881362, 12532461, 13219239, 13943653, 14707765, 15513750, 16363902, 17260644, 18206527, 19204245, 20256637, 21366700, 22537594, 23772654, 25075395, 26449526, 27898960, 29427822, 31040466, 32741483, 34535716, 36428273, 38424542, 40530206, 42751262, 45094030, 47565183, 50171755, 52921167, 55821246, 58880250, 62106888, 65510344, 69100311, 72887008, 76881216, 81094306, 85594273, 90225770, 95170142, 100385466, 105886589, 111689174, 117809740, 124265714, 131075474, 138258410, 145834970, 153826726, 162256430, 171148082, 180526997, 190419876, 200854885, 211861732, 223471711, 223471711, 248635353, 262260570, 276632449, 291791906, 307782102, 324648562, 342439302, 361204976, 380999008, 401877754, 423900654, 447130410, 471633156, 497478653, 524740482, 553496261, 583827855, 615821622, 649568646, 685165008, 722712050, 762316670, 804091623, 848155844, 894634784, 943660770, 995373379, 1049919840, 1107455447, 1168144006, 1232158297, 1299680571, 1370903066, 1446028554, 1525246918, 1608855764, 1697021059}; + private static final int[] pet = {1, 1, 3, 6, 14, 31, 60, 108, 181, 287, 434, 632, 891, 1224, 1642, 2161, 2793, 3557, 4467, 5542, 6801, 8263, 9950, 11882, 14084, 16578, 19391, 22547, 26074, 30000, 2147483647}; + private static final int[] mount = {1, 24, 50, 105, 134, 196, 254, 263, 315, 367, 430, 543, 587, 679, 725, 897, 1146, 1394, 1701, 2247, 2543, 2898, 3156, 3313, 3584, 3923, 4150, 4305, 4550}; + + public static int getExpNeededForLevel(int level) { + return level > 200 ? 2000000000 : exp[level]; + } + + public static int getClosenessNeededForLevel(int level) { + return pet[level]; + } + + public static int getMountExpNeededForLevel(int level) { + return mount[level]; + } +} diff --git a/src/constants/GameConstants.java b/src/constants/GameConstants.java new file mode 100644 index 0000000000..ae4ae339cc --- /dev/null +++ b/src/constants/GameConstants.java @@ -0,0 +1,99 @@ +package constants; + +import client.MapleJob; +import constants.skills.Aran; + +/* + * @author kevintjuh93 + */ +public class GameConstants { + + public static int getHiddenSkill(final int skill) { + switch (skill) { + case Aran.HIDDEN_FULL_DOUBLE: + case Aran.HIDDEN_FULL_TRIPLE: + return Aran.FULL_SWING; + case Aran.HIDDEN_OVER_DOUBLE: + case Aran.HIDDEN_OVER_TRIPLE: + return Aran.OVER_SWING; + } + return skill; + } + + public static int getSkillBook(final int job) { + if (job >= 2210 && job <= 2218) { + return job - 2209; + } + return 0; + } + + + public static boolean isAranSkills(final int skill) { + return Aran.FULL_SWING == skill || Aran.OVER_SWING == skill || Aran.COMBO_TEMPEST == skill || Aran.COMBO_PENRIL == skill || Aran.COMBO_DRAIN == skill + || Aran.HIDDEN_FULL_DOUBLE == skill || Aran.HIDDEN_FULL_TRIPLE == skill || Aran.HIDDEN_OVER_DOUBLE == skill || Aran.HIDDEN_OVER_TRIPLE == skill + || Aran.COMBO_SMASH == skill || Aran.DOUBLE_SWING == skill || Aran.TRIPLE_SWING == skill; + } + + public static boolean isHiddenSkills(final int skill) { + return Aran.HIDDEN_FULL_DOUBLE == skill || Aran.HIDDEN_FULL_TRIPLE == skill || Aran.HIDDEN_OVER_DOUBLE == skill || Aran.HIDDEN_OVER_TRIPLE == skill; + } + + public static boolean isAran(final int job) { + return job == 2000 || (job >= 2100 && job <= 2112); + } + + public static boolean isInJobTree(int skillId, int jobId) { + int skill = skillId / 10000; + if ((jobId - skill) + skill == jobId) { + return true; + } + return false; + } + + public static boolean isPqSkill(final int skill) { + return skill >= 20001013 && skill <= 20000018 || skill % 10000000 == 1020 || skill == 10000013 || skill % 10000000 >= 1009 && skill % 10000000 <= 1011; + } + + public static boolean bannedBindSkills(final int skill) { + return isAranSkills(skill) || isPqSkill(skill); + } + + public static boolean isGMSkills(final int skill) { + return skill >= 9001000 && skill <= 9101008 || skill >= 8001000 && skill <= 8001001; + } + + public static boolean isDojo(int mapid) { + return mapid >= 925020100 && mapid <= 925023814; + } + + public static boolean isPyramid(int mapid) { + return mapid >= 926010010 & mapid <= 930010000; + } + + public static boolean isPQSkillMap(int mapid) { + return isDojo(mapid) || isPyramid(mapid); + } + + public static boolean isFinisherSkill(int skillId) { + return skillId > 1111002 && skillId < 1111007 || skillId == 11111002 || skillId == 11111003; + } + + public static boolean hasSPTable(MapleJob job) { + switch (job) { + case EVAN: + case EVAN1: + case EVAN2: + case EVAN3: + case EVAN4: + case EVAN5: + case EVAN6: + case EVAN7: + case EVAN8: + case EVAN9: + case EVAN10: + return true; + default: + return false; + } + } +} diff --git a/src/constants/ItemConstants.java b/src/constants/ItemConstants.java new file mode 100644 index 0000000000..071be70545 --- /dev/null +++ b/src/constants/ItemConstants.java @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants; + +import client.inventory.MapleInventoryType; + +/** + * + * @author Jay Estrella + */ +public final class ItemConstants { + public final static int LOCK = 0x01; + public final static int SPIKES = 0x02; + public final static int COLD = 0x04; + public final static int UNTRADEABLE = 0x08; + public final static int KARMA = 0x10; + public final static int PET_COME = 0x80; + public final static int ACCOUNT_SHARING = 0x100; + public final static float ITEM_ARMOR_EXP = 1 / 350000; + public static final float ITEM_WEAPON_EXP = 1 / 700000; + + public final static boolean EXPIRING_ITEMS = true; + + public static int getFlagByInt(int type) { + if (type == 128) { + return PET_COME; + } else if (type == 256) { + return ACCOUNT_SHARING; + } + return 0; + } + + public static boolean isThrowingStar(int itemId) { + return itemId / 10000 == 207; + } + + public static boolean isBullet(int itemId) { + return itemId / 10000 == 233; + } + + public static boolean isRechargable(int itemId) { + return isThrowingStar(itemId) || isBullet(itemId); + } + + public static boolean isArrowForCrossBow(int itemId) { + return itemId / 1000 == 2061; + } + + public static boolean isArrowForBow(int itemId) { + return itemId / 1000 == 2060; + } + + public static boolean isPet(int itemId) { + return itemId / 1000 == 5000; + } + + public static MapleInventoryType getInventoryType(final int itemId) { + final byte type = (byte) (itemId / 1000000); + if (type < 1 || type > 5) { + return MapleInventoryType.UNDEFINED; + } + return MapleInventoryType.getByType(type); + } +} diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java new file mode 100644 index 0000000000..d222f562e5 --- /dev/null +++ b/src/constants/ServerConstants.java @@ -0,0 +1,81 @@ +package constants; + +import java.io.FileInputStream; +import java.util.Properties; + +public class ServerConstants { + + public static short VERSION = 83; + public static String[] WORLD_NAMES = {"Scania", "Bera", "Broa", "Windia", "Khaini", "Bellocan", "Mardia", "Kradia", "Yellonde", "Demethos", "Galicia", "El Nido", "Zenith", "Arcenia", "Kastia", "Judis", "Plana", "Kalluna", "Stius", "Croa", "Medere"}; + + // Login Configuration + public static final int CHANNEL_LOAD = 100;//Players per channel + public static final long RANKING_INTERVAL = 60 * 60 * 1000;//60 minutes, 3600000 + public static final boolean ENABLE_PIC = false; + //Event Configuration + public static final boolean PERFECT_PITCH = false; //for lvl 30 or above, each lvlup player gains 1 perfect pitch. + // IP Configuration + public static String HOST; + //Database Configuration + public static String DB_URL = ""; + public static String DB_USER = ""; + public static String DB_PASS = ""; + //Other Configuration + public static boolean JAVA_8; + public static boolean SHUTDOWNHOOK; + //Gameplay Configurations + public static final boolean USE_DEBUG = false; + public static final boolean USE_MTS = false; + public static final boolean USE_FAMILY_SYSTEM = false; + public static final boolean USE_DUEY = true; + public static final boolean USE_ITEM_SORT = true; + public static final boolean USE_PARTY_SEARCH = false; + public static final boolean USE_AUTOBAN = false; //commands the server to detect infractors automatically. + public static final boolean USE_ANOTHER_AUTOASSIGN = true; //based on distributing AP accordingly with higher secondary stat on equipments. + + public static final int MAX_AP = 999; + public static final long BLOCK_DUEY_RACE_COND = (long)(0.5 * 1000); + public static final long PET_LOOT_UPON_ATTACK = (long)(0.8 * 1000); //time the pet must wait before trying to pick items up. + //Some Gameplay Enhancing Configurations + public static final boolean USE_PERFECT_SCROLLING = true; //scrolls doesn't use slots upon failure. + public static final boolean USE_ENHANCED_CHSCROLL = true; //equips even more powerful with chaos upgrade + public static final boolean USE_ENHANCED_CRAFTING = true; //applys chaos scroll on every equip crafted. + public static final boolean USE_ULTRA_NIMBLE_FEET = true; //still needs some client editing to work =/ + public static final boolean USE_ULTRA_RECOVERY = true; //huehue another client edit + //public static final boolean USE_ULTRA_THREE_SNAILS = true; + public static final boolean USE_ADD_SLOTS_BY_LEVEL = true; //slots are added each 20 levels. + public static final boolean USE_ADD_RATES_BY_LEVEL = true; //rates are added each 20 levels. + public static final int FAME_GAIN_BY_QUEST = 4; //fame gain each N quest completes, set 0 to disable. + public static final int SCROLL_CHANCE_RATE = 10; //number of tries for success on a scroll, set 0 for default. + //Rates + public static final int EXP_RATE = 10; + public static final int MESO_RATE = 10; + public static final int DROP_RATE = 10; + public static final int BOSS_DROP_RATE = 20; + public static final int PARTY_EXPERIENCE_MOD = 1; // change for event stuff + public static final double PQ_BONUS_EXP_MOD = 0.5; + + public static final long EVENT_END_TIMESTAMP = 1428897600000L; + static { + Properties p = new Properties(); + try { + p.load(new FileInputStream("configuration.ini")); + + //SERVER + ServerConstants.HOST = p.getProperty("HOST"); + + //SQL DATABASE + ServerConstants.DB_URL = p.getProperty("URL"); + ServerConstants.DB_USER = p.getProperty("DB_USER"); + ServerConstants.DB_PASS = p.getProperty("DB_PASS"); + + //OTHER + ServerConstants.JAVA_8 = p.getProperty("JAVA8").equalsIgnoreCase("TRUE"); + ServerConstants.SHUTDOWNHOOK = p.getProperty("SHUTDOWNHOOK").equalsIgnoreCase("true"); + + } catch (Exception e) { + System.out.println("Failed to load configuration.ini."); + System.exit(0); + } + } +} diff --git a/src/constants/skills/Aran.java b/src/constants/skills/Aran.java new file mode 100644 index 0000000000..1aa85f8282 --- /dev/null +++ b/src/constants/skills/Aran.java @@ -0,0 +1,53 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Aran { + public static final int DOUBLE_SWING = 21000002; + public static final int TRIPLE_SWING = 21100001; + public static final int COMBO_ABILITY = 21000000; + public static final int POLEARM_BOOSTER = 21001003; + public static final int MAPLE_WARRIOR = 21121000; + public static final int FREEZE_STANDING = 21121003; + public static final int SNOW_CHARGE = 21111005; + public static final int HEROS_WILL = 21121008; + public static final int BODY_PRESSURE = 21101003; + public static final int COMBO_DRAIN = 21100005; + public static final int COMBO_SMASH = 21100004; + public static final int COMBO_PENRIL = 21110004; + public static final int COMBO_CRITICAL = 21110000; + public static final int FULL_SWING = 21110002; + public static final int ROLLING_SPIN = 21110006; + public static final int HIDDEN_FULL_DOUBLE = 21110007; + public static final int HIDDEN_FULL_TRIPLE = 21110008; + public static final int SMART_KNOCKBACK = 21111001; + public static final int OVER_SWING = 21120002; + public static final int COMBO_TEMPEST = 21120006; + public static final int COMBO_BARRIER = 21120007; + public static final int HIDDEN_OVER_DOUBLE = 21120009; + public static final int HIDDEN_OVER_TRIPLE = 21120010; + public static final int HIGH_MASTERY = 21120001; +} \ No newline at end of file diff --git a/src/constants/skills/Archer.java b/src/constants/skills/Archer.java new file mode 100644 index 0000000000..cb3c37f9ea --- /dev/null +++ b/src/constants/skills/Archer.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Archer { + public static final int CRITICAL_SHOT = 3000001; + public static final int FOCUS = 3001003; +} \ No newline at end of file diff --git a/src/constants/skills/Assassin.java b/src/constants/skills/Assassin.java new file mode 100644 index 0000000000..0cf2cc90db --- /dev/null +++ b/src/constants/skills/Assassin.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Assassin { + public static final int CLAW_MASTERY = 4100000; + public static final int CRITICAL_THROW = 4100001; + public static final int ENDURE = 4100002; + public static final int CLAW_BOOSTER = 4101003; + public static final int HASTE = 4101004; + public static final int DRAIN = 4101005; +} \ No newline at end of file diff --git a/src/constants/skills/Bandit.java b/src/constants/skills/Bandit.java new file mode 100644 index 0000000000..ea149c37b1 --- /dev/null +++ b/src/constants/skills/Bandit.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Bandit { + public static final int DAGGER_MASTERY = 4200000; + public static final int ENDURE = 4200001; + public static final int DAGGER_BOOSTER = 4201002; + public static final int HASTE = 4201003; + public static final int STEAL = 4201004; + public static final int SAVAGE_BLOW = 4201005; +} \ No newline at end of file diff --git a/src/constants/skills/Beginner.java b/src/constants/skills/Beginner.java new file mode 100644 index 0000000000..ab8e1056da --- /dev/null +++ b/src/constants/skills/Beginner.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Beginner { + public static final int BLESSING_OF_THE_FAIRY = 12; + public static final int FOLLOW_THE_LEADER = 8; + public static final int THREE_SNAILS = 1001; + public static final int RECOVERY = 1001; + public static final int NIMBLE_FEET = 1002; + public static final int MONSTER_RIDER = 1004; + public static final int ECHO_OF_HERO = 1005; + public static final int BAMBOO_RAIN = 1009; + public static final int INVINCIBLE_BARRIER = 1010; + public static final int BERSERK_FURY = 1011; + public static final int SPACESHIP = 1013; + public static final int SPACE_DASH = 1014; + public static final int YETI_MOUNT1 = 1017; + public static final int YETI_MOUNT2 = 1018; + public static final int WITCH_BROOMSTICK = 1019; + public static final int BALROG_MOUNT = 1031; +} \ No newline at end of file diff --git a/src/constants/skills/Bishop.java b/src/constants/skills/Bishop.java new file mode 100644 index 0000000000..23cc1e4a5a --- /dev/null +++ b/src/constants/skills/Bishop.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Bishop { + public static final int MAPLE_WARRIOR = 2321000; + public static final int BIG_BANG = 2321001; + public static final int MANA_REFLECTION = 2321002; + public static final int BAHAMUT = 2321003; + public static final int INFINITY = 2321004; + public static final int HOLY_SHIELD = 2321005; + public static final int RESURRECTION = 2321006; + public static final int GENESIS = 2321008; + public static final int HEROS_WILL = 2321009; +} \ No newline at end of file diff --git a/src/constants/skills/BlazeWizard.java b/src/constants/skills/BlazeWizard.java new file mode 100644 index 0000000000..e2e134af99 --- /dev/null +++ b/src/constants/skills/BlazeWizard.java @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class BlazeWizard { + public static final int ELEMENTAL_RESET = 12101005; + public static final int ELEMENT_AMPLIFICATION = 12110001; + public static final int FIRE_STRIKE = 12111006; + public static final int FLAME = 12001004; + public static final int FLAME_GEAR = 12111005; + public static final int IFRIT = 12111004; + public static final int INCREASING_MAX_MP = 12000000; + public static final int MAGIC_ARMOR = 12001002; + public static final int MAGIC_GUARD = 12001001; + public static final int MEDITATION = 12101000; + public static final int SEAL = 12111002; + public static final int SLOW = 12101001; + public static final int SPELL_BOOSTER = 12101004; + public static final int FIRE_PILLAR = 12101006; +} \ No newline at end of file diff --git a/src/constants/skills/Bowmaster.java b/src/constants/skills/Bowmaster.java new file mode 100644 index 0000000000..5114bcf3b0 --- /dev/null +++ b/src/constants/skills/Bowmaster.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Bowmaster { + public static final int MAPLE_WARRIOR = 3121000; + public static final int SHARP_EYES = 3121002; + public static final int HURRICANE = 3121004; + public static final int BOW_EXPERT = 3120005; + public static final int PHOENIX = 3121006; + public static final int HAMSTRING = 3121007; + public static final int CONCENTRATE = 3121008; + public static final int HEROS_WILL = 3121009; +} \ No newline at end of file diff --git a/src/constants/skills/Brawler.java b/src/constants/skills/Brawler.java new file mode 100644 index 0000000000..f5ec4ed5ac --- /dev/null +++ b/src/constants/skills/Brawler.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Brawler { + public static final int IMPROVE_MAX_HP = 5100000; + public static final int KNUCKLER_MASTERY = 5100001; + public static final int BACK_SPIN_BLOW = 5101002; + public static final int DOUBLE_UPPERCUT = 5101003; + public static final int CORKSCREW_BLOW = 5101004; + public static final int MP_RECOVERY = 5101005; + public static final int KNUCKLER_BOOSTER = 5101006; + public static final int OAK_BARREL = 5101007; +} \ No newline at end of file diff --git a/src/constants/skills/Buccaneer.java b/src/constants/skills/Buccaneer.java new file mode 100644 index 0000000000..f028198f2d --- /dev/null +++ b/src/constants/skills/Buccaneer.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Buccaneer { + public static final int MAPLE_WARRIOR = 5121000; + public static final int ENERGY_ORB = 5121002; + public static final int SUPER_TRANSFORMATION = 5121003; + public static final int DEMOLITION = 5121004; + public static final int SNATCH = 5121005; + public static final int BARRAGE = 5121007; + public static final int PIRATES_RAGE = 5121008; + public static final int SPEED_INFUSION = 5121009; + public static final int TIME_LEAP = 5121010; + public static final int DRAGON_STRIKE = 5121001; +} \ No newline at end of file diff --git a/src/constants/skills/ChiefBandit.java b/src/constants/skills/ChiefBandit.java new file mode 100644 index 0000000000..1102727ce0 --- /dev/null +++ b/src/constants/skills/ChiefBandit.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class ChiefBandit { + public static final int CHAKRA = 4211001; + public static final int ASSAULTER = 4211002; + public static final int PICKPOCKET = 4211003; + public static final int BAND_OF_THIEVES = 4211004; + public static final int MESO_GUARD = 4211005; + public static final int MESO_EXPLOSION = 4211006; +} \ No newline at end of file diff --git a/src/constants/skills/Cleric.java b/src/constants/skills/Cleric.java new file mode 100644 index 0000000000..f6e72a5c89 --- /dev/null +++ b/src/constants/skills/Cleric.java @@ -0,0 +1,29 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +public class Cleric { + public static final int MP_EATER = 2300000; + public static final int HEAL = 2301002; + public static final int INVINCIBLE = 2301003; + public static final int BLESS = 2301004; +} \ No newline at end of file diff --git a/src/constants/skills/Corsair.java b/src/constants/skills/Corsair.java new file mode 100644 index 0000000000..8a2f8a20a6 --- /dev/null +++ b/src/constants/skills/Corsair.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Corsair { + public static final int MAPLE_WARRIOR = 5221000; + public static final int ELEMENTAL_BOOST = 5220001; + public static final int WRATH_OF_THE_OCTOPI = 5220002; + public static final int AERIAL_STRIKE = 5221003; + public static final int RAPID_FIRE = 5221004; + public static final int BATTLE_SHIP = 5221006; + public static final int HYPNOTIZE = 5221009; + public static final int SPEED_INFUSION = 5221010; + public static final int BULLSEYE = 5220011; +} \ No newline at end of file diff --git a/src/constants/skills/Crossbowman.java b/src/constants/skills/Crossbowman.java new file mode 100644 index 0000000000..071755a072 --- /dev/null +++ b/src/constants/skills/Crossbowman.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Crossbowman { + public static final int CROSSBOW_MASTERY = 3200000; + public static final int FINAL_ATTACK = 3200001; + public static final int CROSSBOW_BOOSTER = 3201002; + public static final int SOUL_ARROW = 3201004; +} diff --git a/src/constants/skills/Crusader.java b/src/constants/skills/Crusader.java new file mode 100644 index 0000000000..91b65a9551 --- /dev/null +++ b/src/constants/skills/Crusader.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Crusader { + public static final int COMBO = 1111002; + public static final int SWORD_PANIC = 1111003; + public static final int AXE_PANIC = 1111004; + public static final int SWORD_COMA = 1111005; + public static final int AXE_COMA = 1111006; + public static final int ARMOR_CRASH = 1111007; + public static final int SHOUT = 1111008; +} \ No newline at end of file diff --git a/src/constants/skills/DarkKnight.java b/src/constants/skills/DarkKnight.java new file mode 100644 index 0000000000..a9cdc2c75b --- /dev/null +++ b/src/constants/skills/DarkKnight.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class DarkKnight { + public static final int MAPLE_WARRIOR = 1321000; + public static final int MONSTER_MAGNET = 1321001; + public static final int STANCE = 1321002; + public static final int RUSH = 1321003; + public static final int ACHILLES = 1320005; + public static final int BERSERK = 1320006; + public static final int BEHOLDER = 1321007; + public static final int AURA_OF_BEHOLDER = 1320008; + public static final int HEX_OF_BEHOLDER = 1320009; + public static final int HEROS_WILL = 1321010; +} diff --git a/src/constants/skills/DawnWarrior.java b/src/constants/skills/DawnWarrior.java new file mode 100644 index 0000000000..2bc5f6d84c --- /dev/null +++ b/src/constants/skills/DawnWarrior.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class DawnWarrior { + public static final int MAX_HP_INCREASE = 11000000; + public static final int IRON_BODY = 11001001; + public static final int SOUL = 11001004; + public static final int SWORD_MASTERY = 11100000; + public static final int SWORD_BOOSTER = 11101001; + public static final int FINAL_ATTACK = 11101002; + public static final int RAGE = 11101003; + public static final int INCREASED_MP_RECOVERY = 11110000; + public static final int COMBO = 11111001; + public static final int PANIC = 11111002; + public static final int COMA = 11111003; + public static final int ADVANCED_COMBO = 11110005; + public static final int SOUL_CHARGE = 11111007; +} \ No newline at end of file diff --git a/src/constants/skills/DragonKnight.java b/src/constants/skills/DragonKnight.java new file mode 100644 index 0000000000..58881d149b --- /dev/null +++ b/src/constants/skills/DragonKnight.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author David + */ +public class DragonKnight { + public static final int ELEMENTAL_RESISTANCE = 1310000; + public static final int SPEAR_CRUSHER = 1311001; + public static final int POLE_ARM_CRUSHER = 1311002; + public static final int SACRIFICE = 1311005; + public static final int DRAGON_ROAR = 1311006; + public static final int POWER_CRASH = 1311007; + public static final int DRAGON_BLOOD = 1311008; +} \ No newline at end of file diff --git a/src/constants/skills/Evan.java b/src/constants/skills/Evan.java new file mode 100644 index 0000000000..79f9f18591 --- /dev/null +++ b/src/constants/skills/Evan.java @@ -0,0 +1,58 @@ +package constants.skills; + +public class Evan { + // EVAN1 + public static final int BLESSING_OF_THE_FAIRY = 20010012; + public static final int THREE_SNAILS = 20011000; + public static final int RECOVERY = 20011001; + public static final int NIMBLE_FEET = 20011002; + public static final int LEGENDARY_SPIRIT = 20011003; + public static final int MONSTER_RIDER = 20011004; + public static final int JUMP_DOWN = 20011006; + public static final int ECHO_OF_HERO = 20011005; + public static final int MAKER = 20011007; + public static final int BAMBOO_THRUST = 20011009; + public static final int INVINCIBLE_BARRIER = 20011010; + public static final int BERSERK_FURY = 20011011; + // EVAN2 + public static final int DRAGON_SOUL = 22000000; + public static final int MAGIC_MISSILE = 22001001; + // EVAN3 + public static final int FIRE_CIRCLE = 22101000; + public static final int TELEPORT = 22101001; + // EVAN4 + public static final int LIGHTNING_BOLT = 22111000; + public static final int MAGIC_GUARD = 22111001; + // EVAN5 + public static final int ICE_BREATH = 22121000; + public static final int ELEMENTAL_RESET = 22121001; + // EVAN6 + public static final int MAGIC_FLARE = 22131000; + public static final int MAGIC_SHIELD = 22131001; + // EVAN7 + public static final int CRITICAL_MAGIC = 22140000; + public static final int DRAGON_THRUST = 22141001; + public static final int MAGIC_BOOSTER = 22141002; + public static final int SLOW = 22141003; + // EVAN8 + public static final int MAGIC_AMPLIFICATION = 22150000; + public static final int FIRE_BREATH = 22151001; + public static final int KILLER_WINGS = 22151002; + public static final int MAGIC_RESISTANCE = 22151003; + // EVAN9 + public static final int DRAGON_FURY = 22160000; + public static final int EARTHQUAKE = 22161001; + public static final int PHANTOM_IMPRINT = 22161002; + public static final int RECOVERY_AURA = 22161003; + // EVAN10 + public static final int MAGIC_MASTERY = 22170001; + public static final int MAPLE_WARRIOR = 22171000; + public static final int ILLUSION = 22171002; + public static final int FLAME_WHEEL = 22171003; + public static final int HEROS_WILL = 22171004; + // EVAN11 + public static final int BLESSING_OF_THE_ONYX = 22181000; + public static final int BLAZE = 22181001; + public static final int DARK_FOG = 22181002; + public static final int SOUL_STONE = 22181003; +} diff --git a/src/constants/skills/FPArchMage.java b/src/constants/skills/FPArchMage.java new file mode 100644 index 0000000000..754babc9e9 --- /dev/null +++ b/src/constants/skills/FPArchMage.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class FPArchMage { + public static final int MAPLE_WARRIOR = 2121000; + public static final int BIG_BANG = 2121001; + public static final int MANA_REFLECTION = 2121002; + public static final int FIRE_DEMON = 2121003; + public static final int INFINITY = 2121004; + public static final int ELQUINES = 2121005; + public static final int PARALYZE = 2121006; + public static final int METEOR_SHOWER = 2121007; + public static final int HEROS_WILL = 2121008; +} diff --git a/src/constants/skills/FPMage.java b/src/constants/skills/FPMage.java new file mode 100644 index 0000000000..ee5dd506e5 --- /dev/null +++ b/src/constants/skills/FPMage.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class FPMage { + public static final int PARTIAL_RESISTANCE = 2110000; + public static final int ELEMENT_AMPLIFICATION = 2110001; + public static final int EXPLOSION = 2111002; + public static final int POISON_MIST = 2111003; + public static final int SEAL = 2111004; + public static final int SPELL_BOOSTER = 2111005; + public static final int ELEMENT_COMPOSITION = 2111006; +} \ No newline at end of file diff --git a/src/constants/skills/FPWizard.java b/src/constants/skills/FPWizard.java new file mode 100644 index 0000000000..2025c05924 --- /dev/null +++ b/src/constants/skills/FPWizard.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class FPWizard { + public static final int MP_EATER = 2100000; + public static final int MEDITATION = 2101001; + public static final int SLOW = 2101003; + public static final int POISON_BREATH = 2101005; +} diff --git a/src/constants/skills/Fighter.java b/src/constants/skills/Fighter.java new file mode 100644 index 0000000000..f99c1bd06d --- /dev/null +++ b/src/constants/skills/Fighter.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Fighter { + public static final int SWORD_MASTERY = 1100000; + public static final int AXE_MASTERY = 1100001; + public static final int FINAL_ATTACK_SWORD = 1100002; + public static final int FINAL_ATTACK_AXE = 1100003; + public static final int SWORD_BOOSTER = 1101004; + public static final int AXE_BOOSTER = 1101005; + public static final int RAGE = 1101006; + public static final int POWER_GUARD = 1101007; +} \ No newline at end of file diff --git a/src/constants/skills/GM.java b/src/constants/skills/GM.java new file mode 100644 index 0000000000..defa357a62 --- /dev/null +++ b/src/constants/skills/GM.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; +/** + * + * @author BubblesDev + */ +public class GM { + public static final int GM_ROAR1 = 9001001; + public static final int GM_TELEPORT = 9001002; + public static final int HIDE = 9001004; + public static final int RESURRECTION = 9001005; + public static final int GM_ROAR2 = 9001006; + public static final int GM_TELEPORT2 = 9001007; + public static final int HYPER_BODY = 9001008; + public static final int ANTI_MACRO = 9001009; + public static final int HASTE = 9101000; + public static final int BLESS = 9101003; +} diff --git a/src/constants/skills/Gunslinger.java b/src/constants/skills/Gunslinger.java new file mode 100644 index 0000000000..e6228a8859 --- /dev/null +++ b/src/constants/skills/Gunslinger.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Gunslinger { + public static final int GUN_MASTERY = 5200000; + public static final int INVISIBLE_SHOT = 5201001; + public static final int GRENADE = 5201002; + public static final int GUN_BOOSTER = 5201003; + public static final int BLANK_SHOT = 5201004; + public static final int RECOIL_SHOT = 5201006; +} \ No newline at end of file diff --git a/src/constants/skills/Hermit.java b/src/constants/skills/Hermit.java new file mode 100644 index 0000000000..e2eff0ff36 --- /dev/null +++ b/src/constants/skills/Hermit.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Hermit { + public static final int ALCHEMIST = 4110000; + public static final int MESO_UP = 4111001; + public static final int SHADOW_PARTNER = 4111002; + public static final int SHADOW_WEB = 4111003; + public static final int SHADOW_MESO = 4111004; + public static final int AVENGER = 4111005; + public static final int FLASH_JUML = 4111006; +} diff --git a/src/constants/skills/Hero.java b/src/constants/skills/Hero.java new file mode 100644 index 0000000000..1857550d36 --- /dev/null +++ b/src/constants/skills/Hero.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Hero { + public static final int MAPLE_WARRIOR = 1121000; + public static final int MONSTER_MAGNET = 1121001; + public static final int STANCE = 1121002; + public static final int ADVANCED_COMBO = 1120003; + public static final int ACHILLES = 1120004; + public static final int GUARDIAN = 1120005; + public static final int RUSH = 1121006; + public static final int ENRAGE = 1121010; + public static final int HEROS_WILL = 1121011; + public static final int BRANDISH = 1121008; +} \ No newline at end of file diff --git a/src/constants/skills/Hunter.java b/src/constants/skills/Hunter.java new file mode 100644 index 0000000000..c7bc73c321 --- /dev/null +++ b/src/constants/skills/Hunter.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Hunter { + public static final int BOW_MASTERY = 3100000; + public static final int FINAL_ATTACK = 3100001; + public static final int BOW_BOOSTER = 3101002; + public static final int SOUL_ARROW = 3101004; + public static final int ARROW_BOMB = 3101005; +} \ No newline at end of file diff --git a/src/constants/skills/ILArchMage.java b/src/constants/skills/ILArchMage.java new file mode 100644 index 0000000000..fb41656844 --- /dev/null +++ b/src/constants/skills/ILArchMage.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class ILArchMage { + public static final int MAPLE_WARRIOR = 2221000; + public static final int BIG_BANG = 2221001; + public static final int MANA_REFLECTION = 2221002; + public static final int ICE_DEMON = 2221003; + public static final int INFINITY = 2221004; + public static final int IFRIT = 2221005; + public static final int BLIZZARD = 2221007; + public static final int HEROS_WILL = 2221008; + public static final int CHAIN_LIGHTNING = 2221006; +} diff --git a/src/constants/skills/ILMage.java b/src/constants/skills/ILMage.java new file mode 100644 index 0000000000..ba2a43abf1 --- /dev/null +++ b/src/constants/skills/ILMage.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class ILMage { + public static final int PARTIAL_RESISTANCE = 2210000; + public static final int ELEMENT_AMPLIFICATION = 2210001; + public static final int ICE_STRIKE = 2211002; + public static final int SEAL = 2211004; + public static final int SPELL_BOOSTER = 2211005; + public static final int ELEMENT_COMPOSITION = 2211006; +} \ No newline at end of file diff --git a/src/constants/skills/ILWizard.java b/src/constants/skills/ILWizard.java new file mode 100644 index 0000000000..51c3493380 --- /dev/null +++ b/src/constants/skills/ILWizard.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class ILWizard { + public static final int MP_EATER = 2200000; + public static final int MEDITATION = 2201001; + public static final int SLOW = 2201003; + public static final int COLD_BEAM = 2201004; +} diff --git a/src/constants/skills/Legend.java b/src/constants/skills/Legend.java new file mode 100644 index 0000000000..a6f6c45a74 --- /dev/null +++ b/src/constants/skills/Legend.java @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author kevintjuh93 + */ +public class Legend { + public static final int THREE_SNAILS = 20001000; + public static final int RECOVERY = 20001001; + public static final int AGILE_BODY = 20001002; + public static final int LEGENDARY_SPIRIT = 20001003; + public static final int MONSTER_RIDER = 20001004; + public static final int ECHO_OF_HERO = 20001005; + public static final int JUMP_DOWN = 20001006; + public static final int MAKER = 20001007; + public static final int BAMBOO_THRUST = 20001009; + public static final int INVICIBLE_BARRIER = 20001010; + public static final int METEO_SHOWER = 20001011; + public static final int BLESSING_OF_THE_FAIRY = 20000012; + public static final int TUTORIAL_SKILL1 = 20000014; + public static final int TUTORIAL_SKILL2 = 20000015; + public static final int TUTORIAL_SKILL3 = 20000016; + public static final int TUTORIAL_SKILL4 = 20000017; //combo + public static final int TUTORIAL_SKILL5 = 20000018; //critical + public static final int YETI_MOUNT1 = 20001019; + public static final int YETI_MOUNT2 = 20001022; + public static final int WITCH_BROOMSTICK = 20001023; + public static final int BALROG_MOUNT = 20001031; +} \ No newline at end of file diff --git a/src/constants/skills/Magician.java b/src/constants/skills/Magician.java new file mode 100644 index 0000000000..07405d35fa --- /dev/null +++ b/src/constants/skills/Magician.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Magician { + public static final int IMPROVED_MP_RECOVERY = 2000000; + public static final int IMPROVED_MAX_MP_INCREASE = 2000001; + public static final int MAGIC_GUARD = 2001002; + public static final int MAGIC_ARMOR = 2001003; +} diff --git a/src/constants/skills/Marauder.java b/src/constants/skills/Marauder.java new file mode 100644 index 0000000000..f07f679519 --- /dev/null +++ b/src/constants/skills/Marauder.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Marauder { + public static final int STUN_MASTERY = 5110000; + public static final int ENERGY_CHARGE = 5110001; + public static final int ENERGY_DRAIN = 5111004; + public static final int TRANSFORMATION = 5111005; +} diff --git a/src/constants/skills/Marksman.java b/src/constants/skills/Marksman.java new file mode 100644 index 0000000000..82e18014c4 --- /dev/null +++ b/src/constants/skills/Marksman.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Marksman { + public static final int MAPLE_WARRIOR = 3221000; + public static final int PIERCING_ARROW = 3221001; + public static final int SHARP_EYES = 3221002; + public static final int MARKSMAN_BOOST = 3220004; + public static final int FROST_PREY = 3221005; + public static final int BLIND = 3221006; + public static final int SNIPE = 3221007; + public static final int HEROS_WILL = 3221008; +} \ No newline at end of file diff --git a/src/constants/skills/NightLord.java b/src/constants/skills/NightLord.java new file mode 100644 index 0000000000..2a0379f982 --- /dev/null +++ b/src/constants/skills/NightLord.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class NightLord { + public static final int MAPLE_WARRIOR = 4121000; + public static final int SHADOW_SHIFTER = 4120002; + public static final int TAUNT = 4121003; + public static final int NINJA_AMBUSH = 4121004; + public static final int VENOMOUS_STAR = 4120005; + public static final int SHADOW_STARS = 4121006; + public static final int TRIPLE_THROW = 4121007; + public static final int NINJA_STORM = 4121008; + public static final int HEROS_WILL = 4121009; +} \ No newline at end of file diff --git a/src/constants/skills/NightWalker.java b/src/constants/skills/NightWalker.java new file mode 100644 index 0000000000..c65075a213 --- /dev/null +++ b/src/constants/skills/NightWalker.java @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class NightWalker { + public static final int ALCHEMIST = 14110003; + public static final int DISORDER = 14001002; + public static final int DARK_SIGHT = 14001003; + public static final int LUCKY_SEVEN = 14001004; + public static final int DARKNESS = 14001005; + public static final int CLAW_BOOSTER = 14101002; + public static final int CLAW_MASTERY = 14100000; + public static final int CRITICAL_THROW = 14100001; + public static final int HASTE = 14101003; + public static final int POISON_BOMB = 14111006; + public static final int SHADOW_PARTNER = 14111000; + public static final int SHADOW_WEB = 14111001; + public static final int VANISH = 14100005; + public static final int VAMPIRE = 14101006; + public static final int VENOM = 14110004; +} diff --git a/src/constants/skills/Noblesse.java b/src/constants/skills/Noblesse.java new file mode 100644 index 0000000000..dc801d677e --- /dev/null +++ b/src/constants/skills/Noblesse.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Noblesse { + public static final int BLESSING_OF_THE_FAIRY = 10000012; + public static final int THREE_SNAILS = 10001000; + public static final int RECOVERY = 10001001; + public static final int NIMBLE_FEET = 10001002; + public static final int MONSTER_RIDER = 10001004; + public static final int ECHO_OF_HERO = 10001005; + public static final int MAKER = 10001007; + public static final int BAMBOO_RAIN = 10001009; + public static final int INVINCIBLE_BARRIER = 10001010; + public static final int BERSERK_FURY = 10001011; + public static final int SPACESHIP = 1001014; + public static final int SPACE_DASH = 1001015; + public static final int YETI_MOUNT1 = 10001019; + public static final int YETI_MOUNT2 = 10001022; + public static final int WITCH_BROOMSTICK = 10001023; + public static final int BALROG_MOUNT = 10001031; +} \ No newline at end of file diff --git a/src/constants/skills/Outlaw.java b/src/constants/skills/Outlaw.java new file mode 100644 index 0000000000..9a817225ab --- /dev/null +++ b/src/constants/skills/Outlaw.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Outlaw { + public static final int OCTOPUS = 5211001; + public static final int GAVIOTA = 5211002; + public static final int FLAME_THROWER = 5211004; + public static final int HOMING_BEACON = 5211006; + public static final int ICE_SPLITTER = 5211005; +} \ No newline at end of file diff --git a/src/constants/skills/Page.java b/src/constants/skills/Page.java new file mode 100644 index 0000000000..615143ab5c --- /dev/null +++ b/src/constants/skills/Page.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Page { + public static final int SWORD_MASTERY = 1200000; + public static final int BW_MASTERY = 1200001; + public static final int FINAL_ATTACK_SWORD = 1200002; + public static final int FINAL_ATTACK_BW = 1200003; + public static final int SWORD_BOOSTER = 1201004; + public static final int BW_BOOSTER = 1201005; + public static final int THREATEN = 1201006; + public static final int POWER_GUARD = 1201007; +} \ No newline at end of file diff --git a/src/constants/skills/Paladin.java b/src/constants/skills/Paladin.java new file mode 100644 index 0000000000..099ad8f384 --- /dev/null +++ b/src/constants/skills/Paladin.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Paladin { + public static final int MAPLE_WARRIOR = 1221000; + public static final int MONSTER_MAGNET = 1221001; + public static final int STANCE = 1221002; + public static final int SWORD_HOLY_CHARGE = 1221003; + public static final int BW_HOLY_CHARGE = 1221004; + public static final int ACHILLES = 1220005; + public static final int GUARDIAN = 1220006; + public static final int RUSH = 1221007; + public static final int ADVANCED_CHARGE = 1220010; + public static final int HEAVENS_HAMMER = 1221011; + public static final int HEROS_WILL = 1221012; + public static final int BLAST = 1221009; +} \ No newline at end of file diff --git a/src/constants/skills/Pirate.java b/src/constants/skills/Pirate.java new file mode 100644 index 0000000000..41e730d947 --- /dev/null +++ b/src/constants/skills/Pirate.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Pirate { + public static final int DASH = 5001005; +} \ No newline at end of file diff --git a/src/constants/skills/Priest.java b/src/constants/skills/Priest.java new file mode 100644 index 0000000000..5a68536679 --- /dev/null +++ b/src/constants/skills/Priest.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Priest { + public static final int ELEMENTAL_RESISTANCE = 2310000; + public static final int DISPEL = 2311001; + public static final int MYSTIC_DOOR = 2311002; + public static final int HOLY_SYMBOL = 2311003; + public static final int DOOM = 2311005; + public static final int SUMMON_DRAGON = 2311006; +} diff --git a/src/constants/skills/Ranger.java b/src/constants/skills/Ranger.java new file mode 100644 index 0000000000..d7766ac279 --- /dev/null +++ b/src/constants/skills/Ranger.java @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Ranger { + public static final int MORTAL_BLOW = 3110001; + public static final int PUPPET = 3111002; + public static final int SILVER_HAWK = 3111005; +} diff --git a/src/constants/skills/Rogue.java b/src/constants/skills/Rogue.java new file mode 100644 index 0000000000..4816f1524e --- /dev/null +++ b/src/constants/skills/Rogue.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Rogue { + public static final int NIMBLE_BODY = 4001000; + public static final int DARK_SIGHT = 4001003; + public static final int DISORDER = 4001002; + public static final int DOUBLE_STAB = 4001334; + public static final int LUCKY_SEVEN = 4001344; +} diff --git a/src/constants/skills/Shadower.java b/src/constants/skills/Shadower.java new file mode 100644 index 0000000000..9a2782965b --- /dev/null +++ b/src/constants/skills/Shadower.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Shadower { + public static final int MAPLE_WARRIOR = 4221000; + public static final int ASSASSINATE = 4221001; + public static final int SHADOW_SHIFTER = 4220002; + public static final int TAUNT = 4221003; + public static final int NINJA_AMBUSH = 4221004; + public static final int VENOMOUS_STAB = 4220005; + public static final int SMOKE_SCREEN = 4221006; + public static final int BOOMERANG_STEP = 4221007; + public static final int HEROS_WILL = 4221008; +} \ No newline at end of file diff --git a/src/constants/skills/Sniper.java b/src/constants/skills/Sniper.java new file mode 100644 index 0000000000..d806f92e8d --- /dev/null +++ b/src/constants/skills/Sniper.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Sniper { + public static final int MORTAL_BLOW = 3210001; + public static final int PUPPET = 3211002; + public static final int BLIZZARD = 3211003; + public static final int GOLDEN_EAGLE = 3211005; +} diff --git a/src/constants/skills/Spearman.java b/src/constants/skills/Spearman.java new file mode 100644 index 0000000000..07bf8ae9bf --- /dev/null +++ b/src/constants/skills/Spearman.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Spearman { + public static final int SPEAR_MASTERY = 1300000; + public static final int POLEARM_MASTERY = 1300001; + public static final int FINAL_ATTACK_SPEAR = 1300002; + public static final int FINAL_ATTACK_POLEARM = 1300003; + public static final int SPEAR_BOOSTER = 1301004; + public static final int POLEARM_BOOSTER = 1301005; + public static final int IRON_WILL = 1301006; + public static final int HYPER_BODY = 1301007; +} \ No newline at end of file diff --git a/src/constants/skills/SuperGM.java b/src/constants/skills/SuperGM.java new file mode 100644 index 0000000000..17e7ccb77a --- /dev/null +++ b/src/constants/skills/SuperGM.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class SuperGM { + public static final int HEAL_PLUS_DISPEL = 9101000; + public static final int HASTE = 9101001; + public static final int HOLY_SYMBOL = 9101002; + public static final int BLESS = 9101003; + public static final int HIDE = 9101004; + public static final int RESURRECTION = 9101005; + public static final int SUPER_DRAGON_ROAR = 9001001; + public static final int TELEPORT = 9101007; + public static final int HYPER_BODY = 9101008; +} \ No newline at end of file diff --git a/src/constants/skills/Swordsman.java b/src/constants/skills/Swordsman.java new file mode 100644 index 0000000000..979a87696d --- /dev/null +++ b/src/constants/skills/Swordsman.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class Swordsman { + public static final int IMPROVED_MAX_HP_INCREASE = 1000001; + public static final int IRON_BODY = 1000003; +} \ No newline at end of file diff --git a/src/constants/skills/ThunderBreaker.java b/src/constants/skills/ThunderBreaker.java new file mode 100644 index 0000000000..e54d6e8803 --- /dev/null +++ b/src/constants/skills/ThunderBreaker.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class ThunderBreaker { + public static final int DASH = 15001003; + public static final int IMPROVE_MAX_HP = 15100000; + public static final int KNUCKLER_MASTERY = 15100001; + public static final int ENERGY_CHARGE = 15100004; + public static final int KNUCKLER_BOOSTER = 15101002; + public static final int CORKSCREW_BLOW = 15101003; + public static final int LIGHTNING = 15001004; + public static final int LIGHTNING_CHARGE = 15101006; + public static final int ENERGY_DRAIN = 15111001; + public static final int TRANSFORMATION = 15111002; + public static final int SPEED_INFUSION = 15111005; + public static final int SPARK = 15111006; +} diff --git a/src/constants/skills/Warrior.java b/src/constants/skills/Warrior.java new file mode 100644 index 0000000000..da2bcc3624 --- /dev/null +++ b/src/constants/skills/Warrior.java @@ -0,0 +1,13 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package constants.skills; + +/** + * + * @author Tyler + */ +public class Warrior { + public static final int IMPROVED_MAXHP = 1000001; +} diff --git a/src/constants/skills/WhiteKnight.java b/src/constants/skills/WhiteKnight.java new file mode 100644 index 0000000000..ceeb1101ab --- /dev/null +++ b/src/constants/skills/WhiteKnight.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class WhiteKnight { + public static final int IMPROVING_MP_RECOVERY = 1210000; + public static final int CHARGE_BLOW = 1211002; + public static final int SWORD_FIRE_CHARGE = 1211003; + public static final int BW_FIRE_CHARGE = 1211004; + public static final int SWORD_ICE_CHARGE = 1211005; + public static final int BW_ICE_CHARGE = 1211006; + public static final int SWORD_LIT_CHARGE = 1211007; + public static final int BW_LIT_CHARGE = 1211008; + public static final int MAGIC_CRASH = 1211009; +} diff --git a/src/constants/skills/WindArcher.java b/src/constants/skills/WindArcher.java new file mode 100644 index 0000000000..cb3039d9f2 --- /dev/null +++ b/src/constants/skills/WindArcher.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package constants.skills; + +/** + * + * @author BubblesDev + */ +public class WindArcher { + public static final int CRITICAL_SHOT = 13000000; + public static final int FOCUS = 13001002; + public static final int STORM = 13001004; + public static final int BOW_MASTERY = 13100000; + public static final int BOW_BOOSTER = 13101001; + public static final int FINAL_ATTACK = 13101002; + public static final int SOUL_ARROW = 13101003; + public static final int WIND_WALK = 13101006; + public static final int HURRICANE = 13111002; + public static final int PUPPET = 13111004; + public static final int EAGLE_EYE = 13111005; + public static final int WIND_PIERCING = 13111006; + public static final int WIND_SHOT = 13111007; +} \ No newline at end of file diff --git a/src/dropspider/DataTool.java b/src/dropspider/DataTool.java new file mode 100644 index 0000000000..1f908dbffe --- /dev/null +++ b/src/dropspider/DataTool.java @@ -0,0 +1,112 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package dropspider; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.LinkedList; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataFileEntry; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import server.MapleItemInformationProvider; +import tools.Pair; + +/** + * + * @author Simon + */ +public class DataTool { + + private static ArrayList> npc_list = null; + private static LinkedList> mob_pairs = null; + private static MapleDataProvider data = MapleDataProviderFactory.getDataProvider(MapleDataProviderFactory.fileInWZPath("Mob.wz")); + private static HashSet bosses = null; + + public static ArrayList monsterIdsFromName(String name) { + MapleData data = null; + MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")); + ArrayList ret = new ArrayList<>(); + data = dataProvider.getData("Mob.img"); + if (mob_pairs == null) { + mob_pairs = new LinkedList<>(); + for (MapleData mobIdData : data.getChildren()) { + int mobIdFromData = Integer.parseInt(mobIdData.getName()); + String mobNameFromData = MapleDataTool.getString(mobIdData.getChildByPath("name"), "NO-NAME"); + mob_pairs.add(new Pair<>(mobIdFromData, mobNameFromData)); + } + } + for (Pair mobPair : mob_pairs) { + if (mobPair.getRight().toLowerCase().equals(name.toLowerCase())) { + ret.add(mobPair.getLeft()); + } + } + return ret; + } + + private static void populateBossList() { + bosses = new HashSet<>(); + MapleDataDirectoryEntry mob_data = data.getRoot(); + for (MapleDataFileEntry mdfe : mob_data.getFiles()) { + MapleData boss_candidate = data.getData(mdfe.getName()); + MapleData monsterInfoData = boss_candidate.getChildByPath("info"); + int mid = Integer.valueOf(boss_candidate.getName().replaceAll("[^0-9]", "")); + boolean boss = MapleDataTool.getIntConvert("boss", monsterInfoData, 0) > 0 || mid == 8810018 || mid == 9410066; + if (boss) { + bosses.add(mid); + } + } + } + + public static boolean isBoss(int mid) { + if (bosses == null) { + populateBossList(); + } + return bosses.contains(mid); + } + + public static ArrayList itemIdsFromName(String name) { + + ArrayList ret = new ArrayList<>(); + for (Pair itemPair : MapleItemInformationProvider.getInstance().getAllItems()) { + String item_name = itemPair.getRight().toLowerCase().replaceAll("\\"", ""); + item_name = item_name.replaceAll("'", ""); + item_name = item_name.replaceAll("\\'", ""); + + name = name.toLowerCase().replaceAll("\\"", ""); + name = name.replaceAll("'", ""); + name = name.replaceAll("\\'", ""); + + if (item_name.equals(name)) { + ret.add(itemPair.getLeft()); + return ret; + } + } + return ret; + } + + public static ArrayList npcIdsFromName(String name) { + MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")); + ArrayList ret = new ArrayList<>(); + if (npc_list == null) { + ArrayList> searchList = new ArrayList<>(); + for (MapleData searchData : dataProvider.getData("Npc.img").getChildren()) { + int searchFromData = Integer.parseInt(searchData.getName()); + String infoFromData = MapleDataTool.getString(searchData.getChildByPath("name"), "NO-NAME"); + searchList.add(new Pair<>(searchFromData, infoFromData)); + } + npc_list = searchList; + } + for (Pair searched : npc_list) { + if (searched.getRight().toLowerCase().contains(name.toLowerCase())) { + ret.add(searched.getLeft()); + } + } + return ret; + } +} diff --git a/src/dropspider/DropEntry.java b/src/dropspider/DropEntry.java new file mode 100644 index 0000000000..d357d48d08 --- /dev/null +++ b/src/dropspider/DropEntry.java @@ -0,0 +1,177 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package dropspider; + +import client.inventory.MapleInventoryType; +import server.MapleItemInformationProvider; + +/** + * + * @author Simon + */ +public class DropEntry { + private int version; + private int item_id; + private int monster_id; + private int chance; + private int mindrop; + private int maxdrop; + + public DropEntry(int item_id, int monster_id, int version) { + this.item_id = item_id; + this.monster_id = monster_id; + mindrop = 1; + maxdrop = 1; + chance = calculateChance(item_id); + this.version = version; + } + + private int calculateChance(int item_id) { + MapleInventoryType mit = MapleItemInformationProvider.getInstance().getInventoryType(item_id); + boolean boss = DataTool.isBoss(monster_id); + int number = (item_id / 1000) % 1000; + switch (mit) { + case EQUIP: + if (boss) { + return 40000; + } + return 700; + case USE: + if (boss) { + mindrop = 1; + maxdrop = 4; + } + switch (number) { + case 0: // normal potions + mindrop = 1; + if (version > 98) { + maxdrop = 5; + } + return 40000; + case 1: // watermelons, pills, speed potions, etc + case 2: // same thing + return 10000; + case 3: // advanced potions from crafting (should not drop) + case 4: // same thing + case 11: // poison mushroom + case 28: // cool items + case 30: // return scrolls + case 46: // gallant scrolls + return 0; + case 10: // strange potions like apples, eggs + case 12: // drakes blood, sap of ancient tree (rare use) + case 20: // salad, fried chicken, dews + case 22: // air bubbles and stuff. ALSO nependeath honey but oh well + case 50: // antidotes and stuff + return 3000; + case 290: // mastery books + if(boss) + return 40000; + else + return 1000; + case 40: // Scrolls + case 41: // Scrolls + case 43: // Scrolls + case 44: // Scrolls + case 48: // pet scrolls + if(boss) + return 10000; + else + return 750; + case 100: // summon bags + case 101: // summon bags + case 102: // summon bags + case 109: // summon bags + case 120: // pet food + case 211: // cliffs special potion + case 240: // rings + case 270: // pheromone, additional weird stuff + case 310: // teleport rock + case 320: // weird drops + case 390: // weird + case 430: // Scripted items + case 440: // jukebox + case 460: // magnifying glass + case 470: // golden hammer + case 490: // crystanol + case 500: // sp reset + return 0; + case 47: // tablets from dragon rider + return 220000; + case 49: // clean slats, potential scroll, ees + case 70: // throwing stars + case 210: // rare monster piece drops + case 330: // bullets + if(boss) + return 2500; + else + return 400; + case 60: // bow arrows + case 61: // crossbow arrows + mindrop = 10; + maxdrop = 50; + return 10000; + case 213: // boss transfrom + return 100000; + case 280: // skill books + if(boss) + return 20000; + else + return 1000; + case 381: // monster book things + case 382: + case 383: + case 384: + case 385: + case 386: + case 387: + case 388: + return 20000; + case 510: // recipes + case 511: + case 512: + return 10000; + default: + return 0; + + } + case ETC: + switch (number) { + case 0: // monster pieces + return 200000; + case 4: // crystal ores + case 130: // simulators + case 131: // manuals + return 3000; + case 30: // game pieces + return 10000; + case 32: // misc items + return 10000; + default: + return 7000; + } + default: + return 7000; + } + } + + public String getQuerySegment() { + StringBuilder sb = new StringBuilder(); + sb.append("("); + sb.append(monster_id); + sb.append(", "); + sb.append(item_id); + sb.append(", "); + sb.append(mindrop);//min + sb.append(", "); + sb.append(maxdrop);//max + sb.append(", "); + sb.append(0);//quest + sb.append(", "); + sb.append(chance); + sb.append(")"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/dropspider/Errors.java b/src/dropspider/Errors.java new file mode 100644 index 0000000000..a54b8543ab --- /dev/null +++ b/src/dropspider/Errors.java @@ -0,0 +1,19 @@ +package dropspider; + +import java.util.LinkedList; + +public class Errors { + + public String mobName; + public LinkedList wrong = new LinkedList<>(); + + public String createErrorLog() { + StringBuilder sb = new StringBuilder(); + + for (String w : wrong) { + sb.append(mobName).append(" : ").append(w).append("\r\n"); + } + + return sb.toString(); + } +} diff --git a/src/dropspider/Main.java b/src/dropspider/Main.java new file mode 100644 index 0000000000..d217822735 --- /dev/null +++ b/src/dropspider/Main.java @@ -0,0 +1,283 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package dropspider; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Scanner; + +/** + * + * @author Simon + */ +public class Main { + + /** + * @param args the command line arguments + */ + private static ArrayList drop_entries = new ArrayList<>(); + private static HashMap problems = new HashMap<>(); +// private static final String TEST_STRING = "
Ligator Skin, The Magic Rock, Witch Grass Leaves "; + private static final String BASE_URL = "http://bbb.hidden-street.net"; + private static final int VERSION = 83; + private static String[] pages = {"1-10", "11-20", "21-30", "31-40", "41-50", "51-60", "61-70", "71-80", "81-90", "91-100"}; + private static String[] additionalPages88 = {"101-150", "151-200"}; + private static String[] additionalPagesBB = {"101-120,", "121-140", "141-160", "161-180", "181-200"}; + + public static void main(String[] args) { + //parseMonsterSection(TEST_STRING); + for (String s : pages) { + crawlPage("http://bbb.hidden-street.net/monster/" + s); + } + if (VERSION > 92) { // big bang + for (String s : additionalPagesBB) { + crawlPage("http://bbb.hidden-street.net/monster/" + s); + } + crawlPage("http://bbb.hidden-street.net/monster/101-120?page=1"); //page 1's bugged + } else { + for (String s : additionalPages88) { + crawlPage("http://bbb.hidden-street.net/monster/" + s); + } + } + dumpQuery(); + dumpErrors(); + } + + private static void crawlPage(String url) { //recursive method + try { + URL page = new URL(url); + InputStream is = page.openStream(); + Scanner s = new Scanner(is); + String temp_data = ""; + while (s.hasNext()) { + temp_data += s.nextLine() + "\n"; + } + s.close(); + is.close(); + while (temp_data.contains("class=\"monster\">")) { + String monster_section = getStringBetween(temp_data, "class=\"monster\">", ""); + parseMonsterSection(monster_section); + temp_data = trimUntil(temp_data, ""); + } + if (temp_data.contains("Go to next page")) { + String next_url_segment = getStringBetween(temp_data, "
  • ", ""), monster_name); + + //parse useable drop + parseItemSection(getStringBetween(html_data, "Useable drop:", ""), monster_name); + + //parse ore drop + parseItemSection(getStringBetween(html_data, "Ore drop:", ""), monster_name); + + //parse equips + parseItemSection(getStringBetween(html_data, "Common equipment:", ""), monster_name); + parseItemSection(getStringBetween(html_data, "Warrior equipment:", ""), monster_name); + parseItemSection(getStringBetween(html_data, "Magician equipment:", ""), monster_name); + parseItemSection(getStringBetween(html_data, "Bowman equipment:", ""), monster_name); + parseItemSection(getStringBetween(html_data, "Thief equipment:", ""), monster_name); + parseItemSection(getStringBetween(html_data, "Pirate equipment:", ""), monster_name); + + //System.out.println(monster_name); + } + + private static void parseItemSection(String html_data, String monster_name) { + String temp_data = html_data; + while (temp_data.contains(""); + String item_name = getStringBetween(s1, "", ""); + temp_data = trimUntil(temp_data, ""); + + boolean gender_equip = false; + if (item_name.contains("(M)") || item_name.contains("(F)")) { + item_name = item_name.replaceAll("(\\(M\\))|(\\(F\\))", ""); + gender_equip = true; + } + item_name = item_name.replaceAll("Throwing-Star", "Throwing-Stars").trim(); + item_name = item_name.replaceAll("for Magic Attack", "for Magic Att.").trim(); + item_name = item_name.replaceAll("\\(50%\\)", "").trim(); + item_name = item_name.replaceAll("\\(70%\\)", "").trim(); + item_name = item_name.replaceAll("\\'s", "").trim(); + + + monster_name = monster_name.replaceAll("Horntail\\'s Head B", "Horntail"); + // Process scrolls, neoxon doesn't have the % on most of the scrolls. So we need to remove it + // Unfortunately they do for some, so we have to handle that too. + boolean scroll = false; + int scrollType = 0; + + if(item_name.contains("100%")) { + scroll = true; + item_name = item_name.replaceAll("100%", "").trim(); + item_name = item_name.replaceAll("\\(\\)", "").trim(); // Hidden Street has a few scroll %'s with ()s around them.. sigh + } else if(item_name.contains("60%")) { + scroll = true; + scrollType = 1; + item_name = item_name.replaceAll("60%", "").trim(); + item_name = item_name.replaceAll("\\(\\)", "").trim(); + } else if(item_name.contains("10%")) { + scroll = true; + scrollType = 2; + item_name = item_name.replaceAll("10%", "").trim(); + item_name = item_name.replaceAll("\\(\\)", "").trim(); + //f(item_name.contains(" ()")) item_name = item_name.substring(0, item_name.lastIndexOf(" (")); + } else if(item_name.contains("70%")) { + scroll = true; + scrollType = 4; + item_name = item_name.replaceAll("70%", "").trim(); + item_name = item_name.replaceAll("\\(\\)", "").trim(); + } else if(item_name.contains("30%")) { + scroll = true; + scrollType = 5; + item_name = item_name.replaceAll("30%", "").trim(); + item_name = item_name.replaceAll("\\(\\)", "").trim(); + } + + +// System.out.println("Item name: " + item_name); + + //drop entry + ArrayList monster_ids = DataTool.monsterIdsFromName(monster_name); + ArrayList item_ids = DataTool.itemIdsFromName(item_name); + + if(scroll && item_ids.isEmpty()) { + // Try adding on the % again. Thanks nexon... + if(scrollType == 0) item_name += " 100%"; + if(scrollType == 1) item_name += " 60%"; + if(scrollType == 2) item_name += " 10%"; + if(scrollType == 4) item_name += " 70%"; + if(scrollType == 5) item_name += " 30%"; + + item_ids = DataTool.itemIdsFromName(item_name); + } + + if (!monster_ids.isEmpty() && !item_ids.isEmpty()) { + int item_id = item_ids.get(0); + if(scroll) { + item_id += scrollType; + } + int item_id_2 = -1; + for (Integer mob_id : monster_ids) { + System.out.println("Monster ID: " + mob_id + ", Item ID: " + item_id); + drop_entries.add(new DropEntry(item_id, mob_id, VERSION)); + if (gender_equip && item_ids.size() > 1) { + item_id_2 = item_ids.get(1); + drop_entries.add(new DropEntry(item_id_2, mob_id, VERSION)); + + } + } + } else { + System.out.println("Error parsing item " + item_name + " dropped by " + monster_name + "."); + + if (!monster_ids.isEmpty()) { + if (!problems.containsKey(monster_name)) { + Errors e = new Errors(); + e.mobName = monster_name; + + problems.put(monster_name, e); + } + + problems.get(monster_name).wrong.add(item_name); + } +// System.out.println("Monster ids size: " + monster_ids.size() + ", Item IDs size: " + item_ids.size()); + } + + } + } + + /** + * Returns the string lying between the two specified strings. + * + * @param line The string to parse + * @param start The first string + * @param end The last string + * @return The string between the two specified strings + */ + public static String getStringBetween(String line, String start, String end) { + int start_offset = line.indexOf(start) + start.length(); + return line.substring(start_offset, line.substring(start_offset).indexOf(end) + start_offset); + } + + public static String trimUntil(String line, String until) { + int until_pos = line.indexOf(until); + if (until_pos == -1) { + return null; + } else { + return line.substring(until_pos + until.length()); + } + } + + public static void dumpErrors() { + String file = "errors.txt"; + try { + File f = new File(file); + BufferedWriter bw = new BufferedWriter(new FileWriter(f)); + PrintWriter pw = new PrintWriter(bw); + + for (Errors e : problems.values()) { + pw.write(e.createErrorLog()); + } + + pw.flush(); + + pw.close(); + bw.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void dumpQuery() { + String filename = "drops.sql"; + try { + File output = new File(filename); + BufferedWriter bw = new BufferedWriter(new FileWriter(output)); + PrintWriter pw = new PrintWriter(bw); + StringBuilder sb = new StringBuilder(); + pw.write("TRUNCATE TABLE `drop_data`;\r\n"); + pw.write("INSERT INTO `drop_data` (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES "); + for (Iterator i = drop_entries.iterator(); i.hasNext();) { + DropEntry de = i.next(); + pw.write(de.getQuerySegment()); + if (i.hasNext()) { + pw.write(", \r\n"); + } + } + pw.write(sb.toString()); + pw.close(); + bw.close(); + } catch (IOException ioe) { + System.out.println("Error writing to file: " + ioe.getLocalizedMessage()); + } + } +} diff --git a/src/net/AbstractMaplePacketHandler.java b/src/net/AbstractMaplePacketHandler.java new file mode 100644 index 0000000000..e604f6b905 --- /dev/null +++ b/src/net/AbstractMaplePacketHandler.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net; + +import client.MapleClient; + +public abstract class AbstractMaplePacketHandler implements MaplePacketHandler { + @Override + public boolean validateState(MapleClient c) { + return c.isLoggedIn(); + } +} \ No newline at end of file diff --git a/src/net/MaplePacketHandler.java b/src/net/MaplePacketHandler.java new file mode 100644 index 0000000000..6eb720c001 --- /dev/null +++ b/src/net/MaplePacketHandler.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net; + +import client.MapleClient; +import tools.data.input.SeekableLittleEndianAccessor; + +public interface MaplePacketHandler { + void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c); + boolean validateState(MapleClient c); +} diff --git a/src/net/MapleServerHandler.java b/src/net/MapleServerHandler.java new file mode 100644 index 0000000000..81d9039bfd --- /dev/null +++ b/src/net/MapleServerHandler.java @@ -0,0 +1,157 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Random; + +import net.server.Server; + +import org.apache.mina.core.service.IoHandlerAdapter; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.core.session.IoSession; + +import tools.FilePrinter; +import tools.MapleAESOFB; +import tools.MapleLogger; +import tools.MaplePacketCreator; +import tools.data.input.ByteArrayByteStream; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; +import constants.ServerConstants; + +public class MapleServerHandler extends IoHandlerAdapter { + + private PacketProcessor processor; + private int world = -1, channel = -1; + private static final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm"); + + public MapleServerHandler() { + this.processor = PacketProcessor.getProcessor(-1, -1); + } + + public MapleServerHandler(int world, int channel) { + this.processor = PacketProcessor.getProcessor(world, channel); + this.world = world; + this.channel = channel; + } + + @Override + public void exceptionCaught(IoSession session, Throwable cause) throws Exception { + if (cause instanceof IOException || cause instanceof ClassCastException) { + return; + } + MapleClient mc = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); + if (mc != null && mc.getPlayer() != null) { + FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, cause, "Exception caught by: " + mc.getPlayer()); + } + } + + @Override + public void sessionOpened(IoSession session) { + if (!Server.getInstance().isOnline()) { + session.close(true); + return; + } + if (channel > -1 && world > -1) { + if (Server.getInstance().getChannel(world, channel) == null) { + session.close(true); + return; + } + } else { + FilePrinter.print(FilePrinter.SESSION, "IoSession with " + session.getRemoteAddress() + " opened on " + sdf.format(Calendar.getInstance().getTime()), false); + } + + byte key[] = {0x13, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, (byte) 0xB4, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00}; + byte ivRecv[] = {70, 114, 122, 82}; + byte ivSend[] = {82, 48, 120, 115}; + ivRecv[3] = (byte) (Math.random() * 255); + ivSend[3] = (byte) (Math.random() * 255); + MapleAESOFB sendCypher = new MapleAESOFB(key, ivSend, (short) (0xFFFF - ServerConstants.VERSION)); + MapleAESOFB recvCypher = new MapleAESOFB(key, ivRecv, (short) ServerConstants.VERSION); + MapleClient client = new MapleClient(sendCypher, recvCypher, session); + client.setWorld(world); + client.setChannel(channel); + Random r = new Random(); + client.setSessionId(r.nextLong()); // Generates a random session id. + session.write(MaplePacketCreator.getHello(ServerConstants.VERSION, ivSend, ivRecv)); + session.setAttribute(MapleClient.CLIENT_KEY, client); + } + + @Override + public void sessionClosed(IoSession session) throws Exception { + MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); + if (client != null) { + try { + boolean inCashShop = false; + if (client.getPlayer() != null) { + inCashShop = client.getPlayer().getCashShop().isOpened(); + } + client.disconnect(false, inCashShop); + } catch (Throwable t) { + FilePrinter.printError(FilePrinter.ACCOUNT_STUCK, t); + } finally { + session.close(); + session.removeAttribute(MapleClient.CLIENT_KEY); + //client.empty(); + } + } + super.sessionClosed(session); + } + + @Override + public void messageReceived(IoSession session, Object message) { + byte[] content = (byte[]) message; + SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(content)); + short packetId = slea.readShort(); + MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); + final MaplePacketHandler packetHandler = processor.getHandler(packetId); + if (packetHandler != null && packetHandler.validateState(client)) { + try { + MapleLogger.logRecv(client, packetId, message); + packetHandler.handlePacket(slea, client); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.PACKET_HANDLER + packetHandler.getClass().getName() + ".txt", t, "Error for " + (client.getPlayer() == null ? "" : "player ; " + client.getPlayer() + " on map ; " + client.getPlayer().getMapId() + " - ") + "account ; " + client.getAccountName() + "\r\n" + slea.toString()); + //client.announce(MaplePacketCreator.enableActions());//bugs sometimes + } + } + } + + @Override + public void messageSent(IoSession session, Object message) { + byte[] content = (byte[]) message; + SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new ByteArrayByteStream(content)); + slea.readShort(); //packetId + } + + @Override + public void sessionIdle(final IoSession session, final IdleStatus status) throws Exception { + MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); + if (client != null) { + client.sendPing(); + } + super.sessionIdle(session, status); + } +} diff --git a/src/net/PacketProcessor.java b/src/net/PacketProcessor.java new file mode 100644 index 0000000000..ba707e0ed0 --- /dev/null +++ b/src/net/PacketProcessor.java @@ -0,0 +1,251 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net; + +import java.util.LinkedHashMap; +import java.util.Map; + +import net.server.channel.handlers.*; +import net.server.handlers.CustomPacketHandler; +import net.server.handlers.KeepAliveHandler; +import net.server.handlers.LoginRequiringNoOpHandler; +import net.server.handlers.login.AcceptToSHandler; +import net.server.handlers.login.AfterLoginHandler; +import net.server.handlers.login.CharSelectedHandler; +import net.server.handlers.login.CharSelectedWithPicHandler; +import net.server.handlers.login.CharlistRequestHandler; +import net.server.handlers.login.CheckCharNameHandler; +import net.server.handlers.login.CreateCharHandler; +import net.server.handlers.login.DeleteCharHandler; +import net.server.handlers.login.GuestLoginHandler; +import net.server.handlers.login.LoginPasswordHandler; +import net.server.handlers.login.PickCharHandler; +import net.server.handlers.login.RegisterPicHandler; +import net.server.handlers.login.RegisterPinHandler; +import net.server.handlers.login.RelogRequestHandler; +import net.server.handlers.login.ServerStatusRequestHandler; +import net.server.handlers.login.ServerlistRequestHandler; +import net.server.handlers.login.SetGenderHandler; +import net.server.handlers.login.ViewAllCharSelectedWithPicHandler; +import net.server.handlers.login.ViewAllPicRegisterHandler; +import net.server.handlers.login.ViewCharHandler; + +public final class PacketProcessor { + + private final static Map instances = new LinkedHashMap<>(); + private MaplePacketHandler[] handlers; + + private PacketProcessor() { + int maxRecvOp = 0; + for (RecvOpcode op : RecvOpcode.values()) { + if (op.getValue() > maxRecvOp) { + maxRecvOp = op.getValue(); + } + } + handlers = new MaplePacketHandler[maxRecvOp + 1]; + } + + public MaplePacketHandler getHandler(short packetId) { + if (packetId > handlers.length) { + return null; + } + MaplePacketHandler handler = handlers[packetId]; + if (handler != null) { + return handler; + } + return null; + } + + public void registerHandler(RecvOpcode code, MaplePacketHandler handler) { + try { + handlers[code.getValue()] = handler; + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("Error registering handler - " + code.name()); + } + } + + public synchronized static PacketProcessor getProcessor(int world, int channel) { + final String lolpair = world + " " + channel; + PacketProcessor processor = instances.get(lolpair); + if (processor == null) { + processor = new PacketProcessor(); + processor.reset(channel); + instances.put(lolpair, processor); + } + return processor; + } + + public void reset(int channel) { + handlers = new MaplePacketHandler[handlers.length]; + + registerHandler(RecvOpcode.PONG, new KeepAliveHandler()); + registerHandler(RecvOpcode.CUSTOM_PACKET, new CustomPacketHandler()); + if (channel < 0) {//login + registerHandler(RecvOpcode.ACCEPT_TOS, new AcceptToSHandler()); + registerHandler(RecvOpcode.AFTER_LOGIN, new AfterLoginHandler()); + registerHandler(RecvOpcode.SERVERLIST_REREQUEST, new ServerlistRequestHandler()); + registerHandler(RecvOpcode.CHARLIST_REQUEST, new CharlistRequestHandler()); + registerHandler(RecvOpcode.CHAR_SELECT, new CharSelectedHandler()); + registerHandler(RecvOpcode.LOGIN_PASSWORD, new LoginPasswordHandler()); + registerHandler(RecvOpcode.RELOG, new RelogRequestHandler()); + registerHandler(RecvOpcode.SERVERLIST_REQUEST, new ServerlistRequestHandler()); + registerHandler(RecvOpcode.SERVERSTATUS_REQUEST, new ServerStatusRequestHandler()); + registerHandler(RecvOpcode.CHECK_CHAR_NAME, new CheckCharNameHandler()); + registerHandler(RecvOpcode.CREATE_CHAR, new CreateCharHandler()); + registerHandler(RecvOpcode.DELETE_CHAR, new DeleteCharHandler()); + registerHandler(RecvOpcode.VIEW_ALL_CHAR, new ViewCharHandler()); + registerHandler(RecvOpcode.PICK_ALL_CHAR, new PickCharHandler()); + registerHandler(RecvOpcode.REGISTER_PIN, new RegisterPinHandler()); + registerHandler(RecvOpcode.GUEST_LOGIN, new GuestLoginHandler()); + registerHandler(RecvOpcode.REGISTER_PIC, new RegisterPicHandler()); + registerHandler(RecvOpcode.CHAR_SELECT_WITH_PIC, new CharSelectedWithPicHandler()); + registerHandler(RecvOpcode.SET_GENDER, new SetGenderHandler()); + registerHandler(RecvOpcode.VIEW_ALL_WITH_PIC, new ViewAllCharSelectedWithPicHandler()); + registerHandler(RecvOpcode.VIEW_ALL_PIC_REGISTER, new ViewAllPicRegisterHandler()); + } else { + //CHANNEL HANDLERS + registerHandler(RecvOpcode.CHANGE_CHANNEL, new ChangeChannelHandler()); + registerHandler(RecvOpcode.STRANGE_DATA, LoginRequiringNoOpHandler.getInstance()); + registerHandler(RecvOpcode.GENERAL_CHAT, new GeneralChatHandler()); + registerHandler(RecvOpcode.WHISPER, new WhisperHandler()); + registerHandler(RecvOpcode.NPC_TALK, new NPCTalkHandler()); + registerHandler(RecvOpcode.NPC_TALK_MORE, new NPCMoreTalkHandler()); + registerHandler(RecvOpcode.QUEST_ACTION, new QuestActionHandler()); + registerHandler(RecvOpcode.NPC_SHOP, new NPCShopHandler()); + registerHandler(RecvOpcode.ITEM_SORT, new ItemSortHandler()); + registerHandler(RecvOpcode.ITEM_MOVE, new ItemMoveHandler()); + registerHandler(RecvOpcode.MESO_DROP, new MesoDropHandler()); + registerHandler(RecvOpcode.PLAYER_LOGGEDIN, new PlayerLoggedinHandler()); + registerHandler(RecvOpcode.CHANGE_MAP, new ChangeMapHandler()); + registerHandler(RecvOpcode.MOVE_LIFE, new MoveLifeHandler()); + registerHandler(RecvOpcode.CLOSE_RANGE_ATTACK, new CloseRangeDamageHandler()); + registerHandler(RecvOpcode.RANGED_ATTACK, new RangedAttackHandler()); + registerHandler(RecvOpcode.MAGIC_ATTACK, new MagicDamageHandler()); + registerHandler(RecvOpcode.TAKE_DAMAGE, new TakeDamageHandler()); + registerHandler(RecvOpcode.MOVE_PLAYER, new MovePlayerHandler()); + registerHandler(RecvOpcode.USE_CASH_ITEM, new UseCashItemHandler()); + registerHandler(RecvOpcode.USE_ITEM, new UseItemHandler()); + registerHandler(RecvOpcode.USE_RETURN_SCROLL, new UseItemHandler()); + registerHandler(RecvOpcode.USE_UPGRADE_SCROLL, new ScrollHandler()); + registerHandler(RecvOpcode.USE_SUMMON_BAG, new UseSummonBag()); + registerHandler(RecvOpcode.FACE_EXPRESSION, new FaceExpressionHandler()); + registerHandler(RecvOpcode.HEAL_OVER_TIME, new HealOvertimeHandler()); + registerHandler(RecvOpcode.ITEM_PICKUP, new ItemPickupHandler()); + registerHandler(RecvOpcode.CHAR_INFO_REQUEST, new CharInfoRequestHandler()); + registerHandler(RecvOpcode.SPECIAL_MOVE, new SpecialMoveHandler()); + registerHandler(RecvOpcode.USE_INNER_PORTAL, new InnerPortalHandler()); + registerHandler(RecvOpcode.CANCEL_BUFF, new CancelBuffHandler()); + registerHandler(RecvOpcode.CANCEL_ITEM_EFFECT, new CancelItemEffectHandler()); + registerHandler(RecvOpcode.PLAYER_INTERACTION, new PlayerInteractionHandler()); + registerHandler(RecvOpcode.DISTRIBUTE_AP, new DistributeAPHandler()); + registerHandler(RecvOpcode.DISTRIBUTE_SP, new DistributeSPHandler()); + registerHandler(RecvOpcode.CHANGE_KEYMAP, new KeymapChangeHandler()); + registerHandler(RecvOpcode.CHANGE_MAP_SPECIAL, new ChangeMapSpecialHandler()); + registerHandler(RecvOpcode.STORAGE, new StorageHandler()); + registerHandler(RecvOpcode.GIVE_FAME, new GiveFameHandler()); + registerHandler(RecvOpcode.PARTY_OPERATION, new PartyOperationHandler()); + registerHandler(RecvOpcode.DENY_PARTY_REQUEST, new DenyPartyRequestHandler()); + registerHandler(RecvOpcode.PARTYCHAT, new PartyChatHandler()); + registerHandler(RecvOpcode.USE_DOOR, new DoorHandler()); + registerHandler(RecvOpcode.ENTER_MTS, new EnterMTSHandler()); + registerHandler(RecvOpcode.ENTER_CASHSHOP, new EnterCashShopHandler()); + registerHandler(RecvOpcode.DAMAGE_SUMMON, new DamageSummonHandler()); + registerHandler(RecvOpcode.MOVE_SUMMON, new MoveSummonHandler()); + registerHandler(RecvOpcode.SUMMON_ATTACK, new SummonDamageHandler()); + registerHandler(RecvOpcode.BUDDYLIST_MODIFY, new BuddylistModifyHandler()); + registerHandler(RecvOpcode.USE_ITEMEFFECT, new UseItemEffectHandler()); + registerHandler(RecvOpcode.USE_CHAIR, new UseChairHandler()); + registerHandler(RecvOpcode.CANCEL_CHAIR, new CancelChairHandler()); + registerHandler(RecvOpcode.DAMAGE_REACTOR, new ReactorHitHandler()); + registerHandler(RecvOpcode.GUILD_OPERATION, new GuildOperationHandler()); + registerHandler(RecvOpcode.DENY_GUILD_REQUEST, new DenyGuildRequestHandler()); + registerHandler(RecvOpcode.BBS_OPERATION, new BBSOperationHandler()); + registerHandler(RecvOpcode.SKILL_EFFECT, new SkillEffectHandler()); + registerHandler(RecvOpcode.MESSENGER, new MessengerHandler()); + registerHandler(RecvOpcode.NPC_ACTION, new NPCAnimation()); + registerHandler(RecvOpcode.CHECK_CASH, new TouchingCashShopHandler()); + registerHandler(RecvOpcode.CASHSHOP_OPERATION, new CashOperationHandler()); + registerHandler(RecvOpcode.COUPON_CODE, new CouponCodeHandler()); + registerHandler(RecvOpcode.SPAWN_PET, new SpawnPetHandler()); + registerHandler(RecvOpcode.MOVE_PET, new MovePetHandler()); + registerHandler(RecvOpcode.PET_CHAT, new PetChatHandler()); + registerHandler(RecvOpcode.PET_COMMAND, new PetCommandHandler()); + registerHandler(RecvOpcode.PET_FOOD, new PetFoodHandler()); + registerHandler(RecvOpcode.PET_LOOT, new PetLootHandler()); + registerHandler(RecvOpcode.AUTO_AGGRO, new AutoAggroHandler()); + registerHandler(RecvOpcode.MONSTER_BOMB, new MonsterBombHandler()); + registerHandler(RecvOpcode.CANCEL_DEBUFF, new CancelDebuffHandler()); + registerHandler(RecvOpcode.USE_SKILL_BOOK, new SkillBookHandler()); + registerHandler(RecvOpcode.SKILL_MACRO, new SkillMacroHandler()); + registerHandler(RecvOpcode.NOTE_ACTION, new NoteActionHandler()); + registerHandler(RecvOpcode.CLOSE_CHALKBOARD, new CloseChalkboardHandler()); + registerHandler(RecvOpcode.USE_MOUNT_FOOD, new UseMountFoodHandler()); + registerHandler(RecvOpcode.MTS_OPERATION, new MTSHandler()); + registerHandler(RecvOpcode.RING_ACTION, new RingActionHandler()); + registerHandler(RecvOpcode.SPOUSE_CHAT, new SpouseChatHandler()); + registerHandler(RecvOpcode.PET_AUTO_POT, new PetAutoPotHandler()); + registerHandler(RecvOpcode.PET_EXCLUDE_ITEMS, new PetExcludeItemsHandler()); + registerHandler(RecvOpcode.TOUCH_MONSTER_ATTACK, new TouchMonsterDamageHandler()); + registerHandler(RecvOpcode.TROCK_ADD_MAP, new TrockAddMapHandler()); + registerHandler(RecvOpcode.HIRED_MERCHANT_REQUEST, new HiredMerchantRequest()); + registerHandler(RecvOpcode.MOB_DAMAGE_MOB, new MobDamageMobHandler()); + registerHandler(RecvOpcode.REPORT, new ReportHandler()); + registerHandler(RecvOpcode.MONSTER_BOOK_COVER, new MonsterBookCoverHandler()); + registerHandler(RecvOpcode.AUTO_DISTRIBUTE_AP, new AutoAssignHandler()); + registerHandler(RecvOpcode.MAKER_SKILL, new MakerSkillHandler()); + registerHandler(RecvOpcode.ADD_FAMILY, new FamilyAddHandler()); + registerHandler(RecvOpcode.USE_FAMILY, new FamilyUseHandler()); + registerHandler(RecvOpcode.USE_HAMMER, new UseHammerHandler()); + registerHandler(RecvOpcode.SCRIPTED_ITEM, new ScriptedItemHandler()); + registerHandler(RecvOpcode.TOUCHING_REACTOR, new TouchReactorHandler()); + registerHandler(RecvOpcode.BEHOLDER, new BeholderHandler()); + registerHandler(RecvOpcode.ADMIN_COMMAND, new AdminCommandHandler()); + registerHandler(RecvOpcode.ADMIN_LOG, new AdminLogHandler()); + registerHandler(RecvOpcode.ALLIANCE_OPERATION, new AllianceOperationHandler()); + registerHandler(RecvOpcode.USE_SOLOMON_ITEM, new UseSolomonHandler()); + registerHandler(RecvOpcode.USE_GACHA_EXP, new UseGachaExpHandler()); + registerHandler(RecvOpcode.USE_ITEM_REWARD, new ItemRewardHandler()); + registerHandler(RecvOpcode.USE_REMOTE, new RemoteGachaponHandler()); + registerHandler(RecvOpcode.ACCEPT_FAMILY, new AcceptFamilyHandler()); + registerHandler(RecvOpcode.DUEY_ACTION, new DueyHandler()); + registerHandler(RecvOpcode.USE_DEATHITEM, new UseDeathItemHandler()); + //registerHandler(RecvOpcode.PLAYER_UPDATE, new PlayerUpdateHandler());don't use unused stuff + registerHandler(RecvOpcode.USE_MAPLELIFE, new UseMapleLifeHandler()); + registerHandler(RecvOpcode.USE_CATCH_ITEM, new UseCatchItemHandler()); + registerHandler(RecvOpcode.MOB_DAMAGE_MOB_FRIENDLY, new MobDamageMobFriendlyHandler()); + registerHandler(RecvOpcode.PARTY_SEARCH_REGISTER, new PartySearchRegisterHandler()); + registerHandler(RecvOpcode.PARTY_SEARCH_START, new PartySearchStartHandler()); + registerHandler(RecvOpcode.ITEM_SORT2, new ItemIdSortHandler()); + registerHandler(RecvOpcode.LEFT_KNOCKBACK, new LeftKnockbackHandler()); + registerHandler(RecvOpcode.SNOWBALL, new SnowballHandler()); + registerHandler(RecvOpcode.COCONUT, new CoconutHandler()); + registerHandler(RecvOpcode.ARAN_COMBO_COUNTER, new AranComboHandler()); + registerHandler(RecvOpcode.CLICK_GUIDE, new ClickGuideHandler()); + registerHandler(RecvOpcode.FREDRICK_ACTION, new FredrickHandler()); + registerHandler(RecvOpcode.MONSTER_CARNIVAL, new MonsterCarnivalHandler()); + registerHandler(RecvOpcode.REMOTE_STORE, new RemoteStoreHandler()); + registerHandler(RecvOpcode.WEDDING_ACTION, new WeddingHandler()); + registerHandler(RecvOpcode.ADMIN_CHAT, new AdminChatHandler()); + registerHandler(RecvOpcode.MOVE_DRAGON, new MoveDragonHandler()); + } + } +} \ No newline at end of file diff --git a/src/net/RecvOpcode.java b/src/net/RecvOpcode.java new file mode 100644 index 0000000000..bfbb0406ef --- /dev/null +++ b/src/net/RecvOpcode.java @@ -0,0 +1,196 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net; + +public enum RecvOpcode { + CUSTOM_PACKET(0x3713),//13 37 lol + + LOGIN_PASSWORD(0x01), + GUEST_LOGIN(0x02), + SERVERLIST_REREQUEST(0x04), + CHARLIST_REQUEST(0x05), + SERVERSTATUS_REQUEST(0x06), + ACCEPT_TOS(0x07), + SET_GENDER(0x08), + AFTER_LOGIN(0x09), + REGISTER_PIN(0x0A), + SERVERLIST_REQUEST(0x0B), + PLAYER_DC(0x0C), + VIEW_ALL_CHAR(0x0D), + PICK_ALL_CHAR(0x0E), + CHAR_SELECT(0x13), + PLAYER_LOGGEDIN(0x14), + CHECK_CHAR_NAME(0x15), + CREATE_CHAR(0x16), + DELETE_CHAR(0x17), + PONG(0x18), + CLIENT_START_ERROR(0x19), + CLIENT_ERROR(0x1A), + STRANGE_DATA(0x1B), + RELOG(0x1C), + REGISTER_PIC(0x1D), + CHAR_SELECT_WITH_PIC(0x1E), + VIEW_ALL_PIC_REGISTER(0x1F), + VIEW_ALL_WITH_PIC(0x20), + CHANGE_MAP(0x26), + CHANGE_CHANNEL(0x27), + ENTER_CASHSHOP(0x28), + MOVE_PLAYER(0x29), + CANCEL_CHAIR(0x2A), + USE_CHAIR(0x2B), + CLOSE_RANGE_ATTACK(0x2C), + RANGED_ATTACK(0x2D), + MAGIC_ATTACK(0x2E), + TOUCH_MONSTER_ATTACK(0x2F), + TAKE_DAMAGE(0x30), + GENERAL_CHAT(0x31), + CLOSE_CHALKBOARD(0x32), + FACE_EXPRESSION(0x33), + USE_ITEMEFFECT(0x34), + USE_DEATHITEM(0x35), + MONSTER_BOOK_COVER(0x39), + NPC_TALK(0x3A), + REMOTE_STORE(0x3B), + NPC_TALK_MORE(0x3C), + NPC_SHOP(0x3D), + STORAGE(0x3E), + HIRED_MERCHANT_REQUEST(0x3F), + FREDRICK_ACTION(0x40), + DUEY_ACTION(0x41), + ADMIN_SHOP(0x44),//oh lol + ITEM_SORT(0x45), + ITEM_SORT2(0x46), + ITEM_MOVE(0x47), + USE_ITEM(0x48), + CANCEL_ITEM_EFFECT(0x49), + USE_SUMMON_BAG(0x4B), + PET_FOOD(0x4C), + USE_MOUNT_FOOD(0x4D), + SCRIPTED_ITEM(0x4E), + USE_CASH_ITEM(0x4F), + + USE_CATCH_ITEM(0x51), + USE_SKILL_BOOK(0x52), + USE_TELEPORT_ROCK(0x54), + USE_RETURN_SCROLL(0x55), + USE_UPGRADE_SCROLL(0x56), + DISTRIBUTE_AP(0x57), + AUTO_DISTRIBUTE_AP(0x58), + HEAL_OVER_TIME(0x59), + DISTRIBUTE_SP(0x5A), + SPECIAL_MOVE(0x5B), + CANCEL_BUFF(0x5C), + SKILL_EFFECT(0x5D), + MESO_DROP(0x5E), + GIVE_FAME(0x5F), + CHAR_INFO_REQUEST(0x61), + SPAWN_PET(0x62), + CANCEL_DEBUFF(0x63), + CHANGE_MAP_SPECIAL(0x64), + USE_INNER_PORTAL(0x65), + TROCK_ADD_MAP(0x66), + REPORT(0x6A), + QUEST_ACTION(0x6B), + //lolno + SKILL_MACRO(0x6E), + SPOUSE_CHAT(0x6F), + USE_ITEM_REWARD(0x70), + MAKER_SKILL(0x71), + USE_REMOTE(0x74), + ADMIN_CHAT(0x76), + PARTYCHAT(0x77), + WHISPER(0x78), + MESSENGER(0x7A), + PLAYER_INTERACTION(0x7B), + PARTY_OPERATION(0x7C), + DENY_PARTY_REQUEST(0x7D), + GUILD_OPERATION(0x7E), + DENY_GUILD_REQUEST(0x7F), + ADMIN_COMMAND(0x80), + ADMIN_LOG(0x81), + BUDDYLIST_MODIFY(0x82), + NOTE_ACTION(0x83), + USE_DOOR(0x85), + CHANGE_KEYMAP(0x87), + RPS_ACTION(0x88), + RING_ACTION(0x89), + WEDDING_ACTION(0x8A), + OPEN_FAMILY(0x92), + ADD_FAMILY(0x93), + ACCEPT_FAMILY(0x96), + USE_FAMILY(0x97), + ALLIANCE_OPERATION(0x98), + BBS_OPERATION(0x9B), + ENTER_MTS(0x9C), + USE_SOLOMON_ITEM(0x9D), + USE_GACHA_EXP(0x9E), + CLICK_GUIDE(0xA2), + ARAN_COMBO_COUNTER(0xA3), + MOVE_PET(0xA7), + PET_CHAT(0xA8), + PET_COMMAND(0xA9), + PET_LOOT(0xAA), + PET_AUTO_POT(0xAB), + PET_EXCLUDE_ITEMS(0xAC), + MOVE_SUMMON(0xAF), + SUMMON_ATTACK(0xB0), + DAMAGE_SUMMON(0xB1), + BEHOLDER(0xB2), + MOVE_DRAGON(0xB5), + MOVE_LIFE(0xBC), + AUTO_AGGRO(0xBD), + MOB_DAMAGE_MOB_FRIENDLY(0xC0), + MONSTER_BOMB(0xC1), + MOB_DAMAGE_MOB(0xC2), + NPC_ACTION(0xC5), + ITEM_PICKUP(0xCA), + DAMAGE_REACTOR(0xCD), + TOUCHING_REACTOR(0xCE), + TEMP_SKILL(0xCF), + MAPLETV(0xFFFE),//Don't know + SNOWBALL(0xD3), + LEFT_KNOCKBACK(0xD4), + COCONUT(0xD5), + MATCH_TABLE(0xD6),//Would be cool if I ever get it to work :) + MONSTER_CARNIVAL(0xDA), + PARTY_SEARCH_REGISTER(0xDC), + PARTY_SEARCH_START(0xDE), + PLAYER_UPDATE(0xDF), + CHECK_CASH(0xE4), + CASHSHOP_OPERATION(0xE5), + COUPON_CODE(0xE6), + OPEN_ITEMUI(0xEB), + CLOSE_ITEMUI(0xEC), + USE_ITEMUI(0xED), + MTS_OPERATION(0xFD), + USE_MAPLELIFE(0xFE), + USE_HAMMER(0x104); + private int code = -2; + + private RecvOpcode(int code) { + this.code = code; + } + + public int getValue() { + return code; + } +} diff --git a/src/net/SendOpcode.java b/src/net/SendOpcode.java new file mode 100644 index 0000000000..fc3c99f823 --- /dev/null +++ b/src/net/SendOpcode.java @@ -0,0 +1,347 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net; + +public enum SendOpcode { + + LOGIN_STATUS(0x00), + GUEST_ID_LOGIN(0x01), + ACCOUNT_INFO(0x02),//I guess this was in v83 too :) + SERVERSTATUS(0x03),//CHECK_USER_LIMIT_RESULT + GENDER_DONE(0x04),//SET_ACCOUNT_RESULT + CONFIRM_EULA_RESULT(0x05), + CHECK_PINCODE(0x06), + UPDATE_PINCODE(0x07), + + VIEW_ALL_CHAR(0x08), + SELECT_CHARACTER_BY_VAC(0x09), + + SERVERLIST(0x0A), + CHARLIST(0x0B), + SERVER_IP(0x0C), + CHAR_NAME_RESPONSE(0x0D), + ADD_NEW_CHAR_ENTRY(0x0E), + DELETE_CHAR_RESPONSE(0x0F), + CHANGE_CHANNEL(0x10), + PING(0x11), + KOREAN_INTERNET_CAFE_SHIT(0x12),//Useless ignore it. + CHANNEL_SELECTED(0x14), + HACKSHIELD_REQUEST(0x15),//maybe this is RELOG_RESPONSE, can't care less + RELOG_RESPONSE(0x16), + CHECK_CRC_RESULT(0x19), + LAST_CONNECTED_WORLD(0x1A), + RECOMMENDED_WORLD_MESSAGE(0x1B), + CHECK_SPW_RESULT(0x1C), + + /*CWvsContext::OnPacket*/ + INVENTORY_OPERATION(0x1D), + INVENTORY_GROW(0x1E), + STAT_CHANGED(0x1F), + GIVE_BUFF(0x20), + CANCEL_BUFF(0x21), + FORCED_STAT_SET(0x22), + FORCED_STAT_RESET(0x23), + UPDATE_SKILLS(0x24), + SKILL_USE_RESULT(0x25), + FAME_RESPONSE(0x26), + SHOW_STATUS_INFO(0x27), + OPEN_FULL_CLIENT_DOWNLOAD_LINK(0x28), + MEMO_RESULT(0x29), + MAP_TRANSFER_RESULT(0x2A), + ANTI_MACRO_RESULT(0x2B), + CLAIM_RESULT(0x2D), + CLAIM_AVAILABLE_TIME(0x2E), + CLAIM_STATUS_CHANGED(0x2F), + SET_TAMING_MOB_INFO(0x30), + QUEST_CLEAR(0x31), + ENTRUSTED_SHOP_CHECK_RESULT(0x32), + SKILL_LEARN_ITEM_RESULT(0x33), + GATHER_ITEM_RESULT(0x34), + SORT_ITEM_RESULT(0x35), + SUE_CHARACTER_RESULT(0x37), + TRADE_MONEY_LIMIT(0x39), + SET_GENDER(0x3A), + GUILD_BBS_PACKET(0x3B), + CHAR_INFO(0x3D), + PARTY_OPERATION(0x3E), + BUDDYLIST(0x3F), + GUILD_OPERATION(0x41), + ALLIANCE_OPERATION(0x42), + SPAWN_PORTAL(0x43), + SERVERMESSAGE(0x44), + INCUBATOR_RESULT(0x45), + SHOP_SCANNER_RESULT(0x46), + SHOP_LINK_RESULT(0x47), + + MARRIAGE_REQUEST(0x48), + MARRIAGE_RESULT(0x49), + WEDDING_GIFT_RESULT(0x4A), + NOTIFY_MARRIED_PARTNER_MAP_TRANSFER(0x4B), + + CASH_PET_FOOD_RESULT(0x4C), + SET_WEEK_EVENT_MESSAGE(0x4D), + SET_POTION_DISCOUNT_RATE(0x4E), + + BRIDLE_MOB_CATCH_FAIL(0x4F), + IMITATED_NPC_RESULT(0x50), + IMITATED_NPC_DATA(0x51), + LIMITED_NPC_DISABLE_INFO(0x52), + MONSTER_BOOK_SET_CARD(0x53), + MONSTER_BOOK_SET_COVER(0x54), + HOUR_CHANGED(0x55), + MINIMAP_ON_OFF(0x56), + CONSULT_AUTHKEY_UPDATE(0x57), + CLASS_COMPETITION_AUTHKEY_UPDATE(0x58), + WEB_BOARD_AUTHKEY_UPDATE(0x59), + SESSION_VALUE(0x5A), + PARTY_VALUE(0x5B), + FIELD_SET_VARIABLE(0x5C), + BONUS_EXP_CHANGED(0x5D),//pendant of spirit etc (guess, not sure about the opcode in v83) + + FAMILY_CHART_RESULT(0x5E), + FAMILY_INFO_RESULT(0x5F), + FAMILY_RESULT(0x60), + FAMILY_JOIN_REQUEST(0x61), + FAMILY_JOIN_REQUEST_RESULT(0x62), + FAMILY_JOIN_ACCEPTED(0x63), + FAMILY_PRIVILEGE_LIST(0x64), + FAMILY_FAMOUS_POINT_INC_RESULT(0x65), + FAMILY_NOTIFY_LOGIN_OR_LOGOUT(0x66), //? is logged in. LOLWUT + FAMILY_SET_PRIVILEGE(0x67), + FAMILY_SUMMON_REQUEST(0x68), + + NOTIFY_LEVELUP(0x69), + NOTIFY_MARRIAGE(0x6A), + NOTIFY_JOB_CHANGE(0x6B), + //SET_BUY_EQUIP_EXT(0x6C),//lol? + MAPLE_TV_USE_RES(0x6D), //It's not blank, It's a popup nibs + AVATAR_MEGAPHONE_RESULT(0x6E),//bot useless.. + SET_AVATAR_MEGAPHONE(0x6F), + CLEAR_AVATAR_MEGAPHONE(0x70), + CANCEL_NAME_CHANGE_RESULT(0x71), + CANCEL_TRANSFER_WORLD_RESULT(0x72), + DESTROY_SHOP_RESULT(0x73), + FAKE_GM_NOTICE(0x74),//bad asses + SUCCESS_IN_USE_GACHAPON_BOX(0x75), + NEW_YEAR_CARD_RES(0x76), + RANDOM_MORPH_RES(0x77), + CANCEL_NAME_CHANGE_BY_OTHER(0x78), + SET_BUY_EQUIP_EXT(0x79), + SCRIPT_PROGRESS_MESSAGE(0x7A), + DATA_CRC_CHECK_FAILED(0x7B), + MACRO_SYS_DATA_INIT(0x7C), + + /*CStage::OnPacket*/ + SET_FIELD(0x7D), + SET_ITC(0x7E), + SET_CASH_SHOP(0x7F), + + /*CField::OnPacket*/ + SET_BACK_EFFECT(0x80), + SET_MAP_OBJECT_VISIBLE(0x81),//CMapLoadable::OnSetMapObjectVisible O_O + CLEAR_BACK_EFFECT(0x82), + BLOCKED_MAP(0x83),//TransferFieldRequestIgnored + BLOCKED_SERVER(0x84), + FORCED_MAP_EQUIP(0x85),//FIELD_SPECIFIC_DATA + MULTICHAT(0x86), + WHISPER(0x87), + SPOUSE_CHAT(0x88), + SUMMON_ITEM_INAVAILABLE(0x89), //You can't use it in this map + + FIELD_EFFECT(0x8A), + FIELD_OBSTACLE_ONOFF(0x8B), + FIELD_OBSTACLE_ONOFF_STATUS(0x8C), + FIELD_OBSTACLE_ALL_RESET(0x8D), + BLOW_WEATHER(0x8E), + PLAY_JUKEBOX(0x8F), + + ADMIN_RESULT(0x90), + OX_QUIZ(0x91),//QUIZ + GMEVENT_INSTRUCTIONS(0x92),//DESC + CLOCK(0x93), + CONTI_MOVE(0x94), + CONTI_STATE(0x95), + SET_QUEST_CLEAR(0x96), + SET_QUEST_TIME(0x97), + WARN_MESSAGE(0x98), + SET_OBJECT_STATE(0x99), + STOP_CLOCK(0x9A), + ARIANT_ARENA_SHOW_RESULT(0x9B), + PYRAMID_GAUGE(0x9D), + PYRAMID_SCORE(0x9E), + SPAWN_PLAYER(0xA0), + REMOVE_PLAYER_FROM_MAP(0xA1), + CHATTEXT(0xA2), //0 + CHATTEXT1(0xA3), //1 + CHALKBOARD(0xA4), + UPDATE_CHAR_BOX(0xA5), + SHOW_CONSUME_EFFECT(0xA6), + SHOW_SCROLL_EFFECT(0xA7), + + SPAWN_PET(0xA8), + MOVE_PET(0xAA), + PET_CHAT(0xAB), + PET_NAMECHANGE(0xAC), + PET_SHOW(0xAD), + PET_COMMAND(0xAE), + SPAWN_SPECIAL_MAPOBJECT(0xAF), + REMOVE_SPECIAL_MAPOBJECT(0xB0), + MOVE_SUMMON(0xB1), + SUMMON_ATTACK(0xB2), + DAMAGE_SUMMON(0xB3), + SUMMON_SKILL(0xB4), + SPAWN_DRAGON(0xB5), + MOVE_DRAGON(0xB6), + REMOVE_DRAGON(0xB7), + MOVE_PLAYER(0xB9), + CLOSE_RANGE_ATTACK(0xBA), + RANGED_ATTACK(0xBB), + MAGIC_ATTACK(0xBC), + ENERGY_ATTACK(0xBD), + SKILL_EFFECT(0xBE), + CANCEL_SKILL_EFFECT(0xBF), + DAMAGE_PLAYER(0xC0), + FACIAL_EXPRESSION(0xC1), + SHOW_ITEM_EFFECT(0xC2), + SHOW_CHAIR(0xC4), + UPDATE_CHAR_LOOK(0xC5), + SHOW_FOREIGN_EFFECT(0xC6), + GIVE_FOREIGN_BUFF(0xC7), + CANCEL_FOREIGN_BUFF(0xC8), + UPDATE_PARTYMEMBER_HP(0xC9), + CANCEL_CHAIR(0xCD), + SHOW_ITEM_GAIN_INCHAT(0xCE), + DOJO_WARP_UP(0xCF), + LUCKSACK_PASS(0xD0), + LUCKSACK_FAIL(0xD1), + MESO_BAG_MESSAGE(0xD2), + UPDATE_QUEST_INFO(0xD3), + PLAYER_HINT(0xD6), + KOREAN_EVENT(0xDB), + OPEN_UI(0xDC), + LOCK_UI(0xDD), + DISABLE_UI(0xDE), + SPAWN_GUIDE(0xDF), + TALK_GUIDE(0xE0), + SHOW_COMBO(0xE1), + COOLDOWN(0xEA), + SPAWN_MONSTER(0xEC), + KILL_MONSTER(0xED), + SPAWN_MONSTER_CONTROL(0xEE), + MOVE_MONSTER(0xEF), + MOVE_MONSTER_RESPONSE(0xF0), + APPLY_MONSTER_STATUS(0xF2), + CANCEL_MONSTER_STATUS(0xF3), + RESET_MONSTER_ANIMATION(0xF4),//LOL? o.o + //Something with mob, but can't figure out00 + DAMAGE_MONSTER(0xF6), + ARIANT_THING(0xF9), + SHOW_MONSTER_HP(0xFA), + SHOW_DRAGGED(0xFB),//CATCH + CATCH_MONSTER(0xFC), + SHOW_MAGNET(0xFD), + SPAWN_NPC(0x101), + REMOVE_NPC(0x102), + SPAWN_NPC_REQUEST_CONTROLLER(0x103), + NPC_ACTION(0x104), + SPAWN_HIRED_MERCHANT(0x109), + DESTROY_HIRED_MERCHANT(0x10A), + UPDATE_HIRED_MERCHANT(0x10B), + DROP_ITEM_FROM_MAPOBJECT(0x10C), + REMOVE_ITEM_FROM_MAP(0x10D), + KITE_MESSAGE(0x10E), + KITE(0x10F), + SPAWN_MIST(0x111), + REMOVE_MIST(0x112), + SPAWN_DOOR(0x113), + REMOVE_DOOR(0x114), + REACTOR_HIT(0x115), + REACTOR_SPAWN(0x117), + REACTOR_DESTROY(0x118), + SNOWBALL_STATE(0x119), + HIT_SNOWBALL(0x11A), + SNOWBALL_MESSAGE(0x11B), + LEFT_KNOCK_BACK(0x11C), + COCONUT_HIT(0x11D), + COCONUT_SCORE(0x11E), + GUILD_BOSS_HEALER_MOVE(0x11F), + GUILD_BOSS_PULLEY_STATE_CHANGE(0x120), + MONSTER_CARNIVAL_START(0x121), + MONSTER_CARNIVAL_OBTAINED_CP(0x122), + MONSTER_CARNIVAL_PARTY_CP(0x123), + MONSTER_CARNIVAL_SUMMON(0x124), + MONSTER_CARNIVAL_MESSAGE(0x125), + MONSTER_CARNIVAL_DIED(0x126), + MONSTER_CARNIVAL_LEAVE(0x127), + + ARIANT_ARENA_USER_SCORE(0x129), + SHEEP_RANCH_INFO(0x12B), + SHEEP_RANCH_CLOTHES(0x12C), + ARIANT_SCORE(0x12D), + HORNTAIL_CAVE(0x12E), + ZAKUM_SHRINE(0x12F), + NPC_TALK(0x130), + OPEN_NPC_SHOP(0x131), + CONFIRM_SHOP_TRANSACTION(0x132), + ADMIN_SHOP_MESSAGE(0x133),//lame :P + ADMIN_SHOP(0x134), + STORAGE(0x135), + FREDRICK_MESSAGE(0x136), + FREDRICK(0x137), + RPS_GAME(0x138), + MESSENGER(0x139), + PLAYER_INTERACTION(0x13A), + + TOURNAMENT(0x13B), + TOURNAMENT_MATCH_TABLE(0x13C), + TOURNAMENT_SET_PRIZE(0x13D), + TOURNAMENT_UEW(0x13E), + TOURNAMENT_CHARACTERS(0x13F),//they never coded this :| + + WEDDING_PROGRESS(0x140),//byte step, int groomid, int brideid + WEDDING_CEREMONY_END(0x141), + + PARCEL(0x142), + + CHARGE_PARAM_RESULT(0x143), + QUERY_CASH_RESULT(0x144), + CASHSHOP_OPERATION(0x145), + + KEYMAP(0x14F), + AUTO_HP_POT(0x150), + AUTO_MP_POT(0x151), + SEND_TV(0x155), + REMOVE_TV(0x156), + ENABLE_TV(0x157), + MTS_OPERATION2(0x15B), + MTS_OPERATION(0x15C), + VICIOUS_HAMMER(0x162); + private int code = -2; + + private SendOpcode(int code) { + this.code = code; + } + + public int getValue() { + return code; + } +} diff --git a/src/net/mina/MapleCodecFactory.java b/src/net/mina/MapleCodecFactory.java new file mode 100644 index 0000000000..83caca7a02 --- /dev/null +++ b/src/net/mina/MapleCodecFactory.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.mina; + +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.ProtocolCodecFactory; +import org.apache.mina.filter.codec.ProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolEncoder; + +public class MapleCodecFactory implements ProtocolCodecFactory { + private final ProtocolEncoder encoder; + private final ProtocolDecoder decoder; + + public MapleCodecFactory() { + encoder = new MaplePacketEncoder(); + decoder = new MaplePacketDecoder(); + } + + public ProtocolEncoder getEncoder() throws Exception { + return encoder; + } + + public ProtocolDecoder getDecoder() throws Exception { + return decoder; + } + + @Override + public ProtocolEncoder getEncoder(IoSession session) throws Exception { + return encoder; + } + + @Override + public ProtocolDecoder getDecoder(IoSession session) throws Exception { + return decoder; + } +} diff --git a/src/net/mina/MapleCustomEncryption.java b/src/net/mina/MapleCustomEncryption.java new file mode 100644 index 0000000000..6ebc5e671b --- /dev/null +++ b/src/net/mina/MapleCustomEncryption.java @@ -0,0 +1,108 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.mina; + +public class MapleCustomEncryption { + private static byte rollLeft(byte in, int count) { + int tmp = (int) in & 0xFF; + tmp = tmp << (count % 8); + return (byte) ((tmp & 0xFF) | (tmp >> 8)); + } + + private static byte rollRight(byte in, int count) { + int tmp = (int) in & 0xFF; + tmp = (tmp << 8) >>> (count % 8); + + return (byte) ((tmp & 0xFF) | (tmp >>> 8)); + } + + public static byte[] encryptData(byte data[]) { + for (int j = 0; j < 6; j++) { + byte remember = 0; + byte dataLength = (byte) (data.length & 0xFF); + if (j % 2 == 0) { + for (int i = 0; i < data.length; i++) { + byte cur = data[i]; + cur = rollLeft(cur, 3); + cur += dataLength; + cur ^= remember; + remember = cur; + cur = rollRight(cur, (int) dataLength & 0xFF); + cur = ((byte) ((~cur) & 0xFF)); + cur += 0x48; + dataLength--; + data[i] = cur; + } + } else { + for (int i = data.length - 1; i >= 0; i--) { + byte cur = data[i]; + cur = rollLeft(cur, 4); + cur += dataLength; + cur ^= remember; + remember = cur; + cur ^= 0x13; + cur = rollRight(cur, 3); + dataLength--; + data[i] = cur; + } + } + } + return data; + } + + public static byte[] decryptData(byte data[]) { + for (int j = 1; j <= 6; j++) { + byte remember = 0; + byte dataLength = (byte) (data.length & 0xFF); + byte nextRemember; + if (j % 2 == 0) { + for (int i = 0; i < data.length; i++) { + byte cur = data[i]; + cur -= 0x48; + cur = ((byte) ((~cur) & 0xFF)); + cur = rollLeft(cur, (int) dataLength & 0xFF); + nextRemember = cur; + cur ^= remember; + remember = nextRemember; + cur -= dataLength; + cur = rollRight(cur, 3); + data[i] = cur; + dataLength--; + } + } else { + for (int i = data.length - 1; i >= 0; i--) { + byte cur = data[i]; + cur = rollLeft(cur, 3); + cur ^= 0x13; + nextRemember = cur; + cur ^= remember; + remember = nextRemember; + cur -= dataLength; + cur = rollRight(cur, 4); + data[i] = cur; + dataLength--; + } + } + } + return data; + } +} diff --git a/src/net/mina/MaplePacketDecoder.java b/src/net/mina/MaplePacketDecoder.java new file mode 100644 index 0000000000..3f1390f681 --- /dev/null +++ b/src/net/mina/MaplePacketDecoder.java @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.mina; + +import client.MapleClient; +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.CumulativeProtocolDecoder; +import org.apache.mina.filter.codec.ProtocolDecoderOutput; +import tools.MapleAESOFB; + +public class MaplePacketDecoder extends CumulativeProtocolDecoder { + private static final String DECODER_STATE_KEY = MaplePacketDecoder.class.getName() + ".STATE"; + + private static class DecoderState { + public int packetlength = -1; + } + + @Override + protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { + final MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); + DecoderState decoderState = (DecoderState) session.getAttribute(DECODER_STATE_KEY); + if (decoderState == null) { + decoderState = new DecoderState(); + session.setAttribute(DECODER_STATE_KEY, decoderState); + } + if (in.remaining() >= 4 && decoderState.packetlength == -1) { + int packetHeader = in.getInt(); + if (!client.getReceiveCrypto().checkPacket(packetHeader)) { + session.close(true); + return false; + } + decoderState.packetlength = MapleAESOFB.getPacketLength(packetHeader); + } else if (in.remaining() < 4 && decoderState.packetlength == -1) { + return false; + } + if (in.remaining() >= decoderState.packetlength) { + byte decryptedPacket[] = new byte[decoderState.packetlength]; + in.get(decryptedPacket, 0, decoderState.packetlength); + decoderState.packetlength = -1; + client.getReceiveCrypto().crypt(decryptedPacket); + MapleCustomEncryption.decryptData(decryptedPacket); + out.write(decryptedPacket); + return true; + } + return false; + } +} diff --git a/src/net/mina/MaplePacketEncoder.java b/src/net/mina/MaplePacketEncoder.java new file mode 100644 index 0000000000..f9cb0a30be --- /dev/null +++ b/src/net/mina/MaplePacketEncoder.java @@ -0,0 +1,67 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.mina; + +import client.MapleClient; +import java.util.concurrent.locks.Lock; +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.ProtocolEncoder; +import org.apache.mina.filter.codec.ProtocolEncoderOutput; +import tools.MapleAESOFB; + +public class MaplePacketEncoder implements ProtocolEncoder { + + @Override + public void encode(final IoSession session, final Object message, final ProtocolEncoderOutput out) throws Exception { + final MapleClient client = (MapleClient) session.getAttribute(MapleClient.CLIENT_KEY); + + if (client != null) { + final MapleAESOFB send_crypto = client.getSendCrypto(); + final byte[] input = (byte[]) message; + final byte[] unencrypted = new byte[input.length]; + System.arraycopy(input, 0, unencrypted, 0, input.length); + final byte[] ret = new byte[unencrypted.length + 4]; + final byte[] header = send_crypto.getPacketHeader(unencrypted.length); + MapleCustomEncryption.encryptData(unencrypted); + + final Lock mutex = client.getLock(); + mutex.lock(); + try { + send_crypto.crypt(unencrypted); + System.arraycopy(header, 0, ret, 0, 4); + System.arraycopy(unencrypted, 0, ret, 4, unencrypted.length); + out.write(IoBuffer.wrap(ret)); + } finally { + mutex.unlock(); + } +// System.arraycopy(unencrypted, 0, ret, 4, unencrypted.length); +// out.write(ByteBuffer.wrap(ret)); + } else { + out.write(IoBuffer.wrap(((byte[]) message))); + } + } + + @Override + public void dispose(IoSession session) throws Exception { + } +} \ No newline at end of file diff --git a/src/net/server/CreateINI.java b/src/net/server/CreateINI.java new file mode 100644 index 0000000000..a7f39f9db1 --- /dev/null +++ b/src/net/server/CreateINI.java @@ -0,0 +1,127 @@ +package net.server; + +import java.io.Console; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * + * @author kevintjuh93 + */ +public class CreateINI { + + public static void main(String args[]) { + StringBuilder sb = new StringBuilder(); + String nextline = "\r\n";//Because I can, and it's free. + byte worlds; + Console con = System.console(); + + System.out.println("Welcome to MoopleDEV's .ini creator\r\n\r\n"); + + sb.append("#MoopleDEV's INI file. Do NOT modify it if you are an idiot (:\r\n"); + sb.append("#Flag types: 0 = nothing, 1 = event, 2 = new, 3 = hot\r\n\r\n"); + + System.out.println("Flag types: 0 = nothing, 1 = event, 2 = new, 3 = hot\r\n\r\n"); + + worlds = Byte.parseByte(con.readLine("Number of worlds: ")); + sb.append("worlds=").append(worlds).append("\r\n\r\n"); + + System.out.println("\r\n"); + + + for (byte b = 0; b < worlds; b++) { + sb.append("#Properties for world ").append(b).append("\r\n"); + + System.out.println("Properties for world " + b); + if (b > 1) { + System.out.println("Make sure you create a npc folder for this world!"); + } + sb.append("flag").append(b).append("=").append( + Integer.parseInt(con.readLine(" Flag: "))).append("\r\n"); + + sb.append("servermessage").append(b).append("=").append( + con.readLine(" Server message: ")).append("\r\n"); + + sb.append("eventmessage").append(b).append("=").append( + con.readLine(" Event message: ")).append("\r\n"); + + sb.append("whyamirecommended").append(b).append("=").append( + con.readLine(" Recommend message: ")).append("\r\n"); + + sb.append("channels").append(b).append("=").append( + Byte.parseByte(con.readLine(" Number of channels: "))).append("\r\n"); + + sb.append("exprate").append(b).append("=").append( + Integer.parseInt(con.readLine(" Exp rate: "))).append("\r\n"); + + sb.append("droprate").append(b).append("=").append( + Integer.parseInt(con.readLine(" Drop rate: "))).append("\r\n"); + + sb.append("mesorate").append(b).append("=").append( + Integer.parseInt(con.readLine(" Meso rate: "))).append("\r\n"); + + sb.append("bossdroprate").append(b).append("=").append( + Integer.parseInt(con.readLine(" Boss drop rate: "))).append("\r\n"); + + System.out.println(nextline); + sb.append("\r\n"); + } + + sb.append("\r\n").append("gmserver=").append(Boolean.parseBoolean(con.readLine("Do you want a GM Server? (true/false)"))); + FileOutputStream out = null; + try { + out = new FileOutputStream("moople.ini", false); + out.write(sb.toString().getBytes()); + } catch (Exception ex) { + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ex) { + } + } + + sb = new StringBuilder(); + try { + System.out.println("\r\nYou are about to set the Java Heap Size, if you don't know what it is, type '?'."); + String heapsize = con.readLine("Java Heap Size (in MB): "); + while (heapsize.equals("?")) { + System.out.println("\r\n"); + System.out.println("WikiAnswers: Java heap is the heap size allocated to JVM applications which takes care of the new objects being created. If the objects being created exceed the heap size, it will throw an error saying memoryOutof Bound\r\n"); + System.out.println("I recommend using 64 bit with the heap size around 4000, if you have 4 gb RAM."); + heapsize = con.readLine("Java Heap Size (in MB): "); + } + String linux = con.readLine("\r\nAre you using a Linux platform or not? (y/n):"); + while (!linux.equals("y") && !linux.equals("n")) { + System.out.println("Type 'y' if you use linux else type 'n'."); + linux = con.readLine("Are you using a Linux platform or not? (y/n):"); + } + if (linux.equals("n")) { + out = new FileOutputStream("launch_server.bat", false); + sb.append("@echo off").append("\r\n").append("@title MoopleDEV Server v83").append("\r\n"); + sb.append("set CLASSPATH=.;dist\\*\r\n"); + sb.append("java -Xmx").append(heapsize).append("m -Dwzpath=wz\\ net.server.Server\r\n"); + sb.append("pause"); + } else {//test + out = new FileOutputStream("launch_server.sh", false); + sb.append("#!/bin/sh").append("\r\n\r\n"); + sb.append("export CLASSPATH=\".:dist/*\" \r\n\r\n"); + sb.append("java -Dwzpath=wz/ \\\r\n"); + sb.append("-Xmx").append(heapsize).append("m ").append("net.server.Server"); + System.out.println("Use DOS2UNIX command to convert the .sh file once again."); + } + out.write(sb.toString().getBytes()); + } catch (Exception ex) { + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ex) { + } + } + System.out.println("\r\nMake sure that ServerConstants in modified too, and clean+compiled before you start the server."); + System.out.println("If you want other settings; restart this .bat or modify the moople.ini"); + } +} diff --git a/src/net/server/PlayerBuffStorage.java b/src/net/server/PlayerBuffStorage.java new file mode 100644 index 0000000000..cb4dc357b6 --- /dev/null +++ b/src/net/server/PlayerBuffStorage.java @@ -0,0 +1,82 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * + * @author Danny//changed to map :3 + */ +public class PlayerBuffStorage { + private int id = (int) (Math.random() * 100); + private final Lock mutex = new ReentrantLock(); + private Map> buffs = new HashMap>(); + + public void addBuffsToStorage(int chrid, List toStore) { + mutex.lock(); + try { + buffs.put(chrid, toStore);//Old one will be replace if it's in here. + } finally { + mutex.unlock(); + } + } + + public List getBuffsFromStorage(int chrid) { + mutex.lock(); + try { + return buffs.remove(chrid); + } finally { + mutex.unlock(); + } + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final PlayerBuffStorage other = (PlayerBuffStorage) obj; + if (id != other.id) { + return false; + } + return true; + } +} diff --git a/src/net/server/PlayerBuffValueHolder.java b/src/net/server/PlayerBuffValueHolder.java new file mode 100644 index 0000000000..b0892f0a62 --- /dev/null +++ b/src/net/server/PlayerBuffValueHolder.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server; + +import server.MapleStatEffect; + +/** + * + * @author Danny + */ +public class PlayerBuffValueHolder { + public long startTime; + public MapleStatEffect effect; + + public PlayerBuffValueHolder(long startTime, MapleStatEffect effect) { + this.startTime = startTime; + this.effect = effect; + } +} diff --git a/src/net/server/PlayerCoolDownValueHolder.java b/src/net/server/PlayerCoolDownValueHolder.java new file mode 100644 index 0000000000..d68bd2e694 --- /dev/null +++ b/src/net/server/PlayerCoolDownValueHolder.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server; + +/** + * + * @author Danny + */ +public class PlayerCoolDownValueHolder { + public int skillId; + public long startTime; + public long length; + + public PlayerCoolDownValueHolder(int skillId, long startTime, long length) { + this.skillId = skillId; + this.startTime = startTime; + this.length = length; + } +} diff --git a/src/net/server/PlayerDiseaseValueHolder.java b/src/net/server/PlayerDiseaseValueHolder.java new file mode 100644 index 0000000000..8b125825c1 --- /dev/null +++ b/src/net/server/PlayerDiseaseValueHolder.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server; + +import client.MapleDisease; + +public class PlayerDiseaseValueHolder {//Thanks Celino + + public long startTime; + public long length; + public MapleDisease disease; + + public PlayerDiseaseValueHolder(final MapleDisease disease, final long startTime, final long length) { + this.disease = disease; + this.startTime = startTime; + this.length = length; + } +} \ No newline at end of file diff --git a/src/net/server/PlayerStorage.java b/src/net/server/PlayerStorage.java new file mode 100644 index 0000000000..f109ee22ec --- /dev/null +++ b/src/net/server/PlayerStorage.java @@ -0,0 +1,103 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server; + +import client.MapleCharacter; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +public class PlayerStorage { + private final ReentrantReadWriteLock locks = new ReentrantReadWriteLock(); + private final Lock rlock = locks.readLock(); + private final Lock wlock = locks.writeLock(); + private final Map storage = new LinkedHashMap<>(); + + public void addPlayer(MapleCharacter chr) { + wlock.lock(); + try { + storage.put(chr.getId(), chr); + } finally { + wlock.unlock(); + } + } + + public MapleCharacter removePlayer(int chr) { + wlock.lock(); + try { + return storage.remove(chr); + } finally { + wlock.unlock(); + } + } + + public MapleCharacter getCharacterByName(String name) { + rlock.lock(); + try { + for (MapleCharacter chr : storage.values()) { + if (chr.getName().toLowerCase().equals(name.toLowerCase())) + return chr; + } + return null; + } finally { + rlock.unlock(); + } + } + + public MapleCharacter getCharacterById(int id) { + rlock.lock(); + try { + return storage.get(id); + } finally { + rlock.unlock(); + } + } + + public Collection getAllCharacters() { + rlock.lock(); + try { + return storage.values(); + } finally { + rlock.unlock(); + } + } + + public final void disconnectAll() { + wlock.lock(); + try { + final Iterator chrit = storage.values().iterator(); + while (chrit.hasNext()) { + chrit.next().getClient().disconnect(true, false); + chrit.remove(); + } + } finally { + wlock.unlock(); + } + } + + public int getSize(){ + return storage.size(); + } +} \ No newline at end of file diff --git a/src/net/server/RankingWorker.java b/src/net/server/RankingWorker.java new file mode 100644 index 0000000000..e3740b8c1a --- /dev/null +++ b/src/net/server/RankingWorker.java @@ -0,0 +1,90 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import client.MapleJob; +import tools.DatabaseConnection; + +/** + * @author Matze + * @author Quit + */ +public class RankingWorker implements Runnable { + private Connection con; + private long lastUpdate = System.currentTimeMillis(); + + public void run() { + try { + con = DatabaseConnection.getConnection(); + con.setAutoCommit(false); + updateRanking(null); + for (int i = 0; i < 3; i += 2) { + for (int j = 1; j < 6; j++) { + updateRanking(MapleJob.getById(i * 500 + 100 * j)); + } + } + con.commit(); + con.setAutoCommit(true); + lastUpdate = System.currentTimeMillis(); + } catch (SQLException ex) { + try { + con.rollback(); + con.setAutoCommit(true); + } catch (SQLException ex2) { + } + } + } + + private void updateRanking(MapleJob job) throws SQLException { + String sqlCharSelect = "SELECT c.id, " + (job != null ? "c.jobRank, c.jobRankMove" : "c.rank, c.rankMove") + ", a.lastlogin AS lastlogin, a.loggedin FROM characters AS c LEFT JOIN accounts AS a ON c.accountid = a.id WHERE c.gm = 0 "; + if (job != null) { + sqlCharSelect += "AND c.job DIV 100 = ? "; + } + sqlCharSelect += "ORDER BY c.level DESC , c.exp DESC , c.fame DESC , c.meso DESC"; + PreparedStatement charSelect = con.prepareStatement(sqlCharSelect); + if (job != null) { + charSelect.setInt(1, job.getId() / 100); + } + ResultSet rs = charSelect.executeQuery(); + PreparedStatement ps = con.prepareStatement("UPDATE characters SET " + (job != null ? "jobRank = ?, jobRankMove = ? " : "rank = ?, rankMove = ? ") + "WHERE id = ?"); + int rank = 0; + while (rs.next()) { + int rankMove = 0; + rank++; + if (rs.getLong("lastlogin") < lastUpdate || rs.getInt("loggedin") > 0) { + rankMove = rs.getInt((job != null ? "jobRankMove" : "rankMove")); + } + rankMove += rs.getInt((job != null ? "jobRank" : "rank")) - rank; + ps.setInt(1, rank); + ps.setInt(2, rankMove); + ps.setInt(3, rs.getInt("id")); + ps.executeUpdate(); + } + rs.close(); + charSelect.close(); + ps.close(); + } +} diff --git a/src/net/server/Server.java b/src/net/server/Server.java new file mode 100644 index 0000000000..2412917fc6 --- /dev/null +++ b/src/net/server/Server.java @@ -0,0 +1,605 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server; + +import java.io.FileInputStream; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import net.MapleServerHandler; +import net.mina.MapleCodecFactory; +import net.server.channel.Channel; +import net.server.guild.MapleAlliance; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.world.World; + +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.buffer.SimpleBufferAllocator; +import org.apache.mina.core.filterchain.IoFilter; +import org.apache.mina.core.service.IoAcceptor; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.transport.socket.nio.NioSocketAcceptor; + +import server.CashShop.CashItemFactory; +import server.MapleItemInformationProvider; +import server.TimerManager; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.Pair; +import client.MapleCharacter; +import client.SkillFactory; +import constants.ServerConstants; +import server.quest.MapleQuest; + +public class Server implements Runnable { + + private IoAcceptor acceptor; + private List> channels = new LinkedList<>(); + private List worlds = new ArrayList<>(); + private Properties subnetInfo = new Properties(); + private static Server instance = null; + private List> worldRecommendedList = new LinkedList<>(); + private Map guilds = new LinkedHashMap<>(); + private PlayerBuffStorage buffStorage = new PlayerBuffStorage(); + private Map alliances = new LinkedHashMap<>(); + private boolean online = false; + public static long uptime = System.currentTimeMillis(); + + public static Server getInstance() { + if (instance == null) { + instance = new Server(); + } + return instance; + } + + public boolean isOnline() { + return online; + } + + public List> worldRecommendedList() { + return worldRecommendedList; + } + + public void removeChannel(int worldid, int channel) { + channels.remove(channel); + + World world = worlds.get(worldid); + if (world != null) { + world.removeChannel(channel); + } + } + + public Channel getChannel(int world, int channel) { + return worlds.get(world).getChannel(channel); + } + + public List getChannelsFromWorld(int world) { + return worlds.get(world).getChannels(); + } + + public List getAllChannels() { + List channelz = new ArrayList<>(); + for (World world : worlds) { + for (Channel ch : world.getChannels()) { + channelz.add(ch); + } + } + return channelz; + } + + public String getIP(int world, int channel) { + return channels.get(world).get(channel); + } + + @Override + public void run() { + Properties p = new Properties(); + try { + p.load(new FileInputStream("world.ini")); + } catch (Exception e) { + System.out.println("Please start create_server.bat"); + System.exit(0); + } + + System.out.println("MapleSolaxia v" + ServerConstants.VERSION + " starting up.\r\n"); + + + if(ServerConstants.SHUTDOWNHOOK) + Runtime.getRuntime().addShutdownHook(new Thread(shutdown(false))); + + DatabaseConnection.getConnection(); + Connection c = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = c.prepareStatement("UPDATE accounts SET loggedin = 0"); + ps.executeUpdate(); + ps.close(); + ps = c.prepareStatement("UPDATE characters SET HasMerchant = 0"); + ps.executeUpdate(); + ps.close(); + } catch (SQLException sqle) { + } + IoBuffer.setUseDirectBuffer(false); + IoBuffer.setAllocator(new SimpleBufferAllocator()); + acceptor = new NioSocketAcceptor(); + acceptor.getFilterChain().addLast("codec", (IoFilter) new ProtocolCodecFilter(new MapleCodecFactory())); + TimerManager tMan = TimerManager.getInstance(); + tMan.start(); + tMan.register(tMan.purge(), 300000);//Purging ftw... + tMan.register(new RankingWorker(), ServerConstants.RANKING_INTERVAL); + + long timeToTake = System.currentTimeMillis(); + SkillFactory.loadAllSkills(); + System.out.println("Skills loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds"); + + timeToTake = System.currentTimeMillis(); + MapleItemInformationProvider.getInstance().getAllItems(); + + CashItemFactory.getSpecialCashItems(); + System.out.println("Items loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds\r\n"); + + timeToTake = System.currentTimeMillis(); + MapleQuest.loadAllQuest(); + System.out.println("Quest loaded in " + ((System.currentTimeMillis() - timeToTake) / 1000.0) + " seconds\r\n"); + + + try { + for (int i = 0; i < Integer.parseInt(p.getProperty("worlds")); i++) { + System.out.println("Starting world " + i); + World world = new World(i, + Integer.parseInt(p.getProperty("flag" + i)), + p.getProperty("eventmessage" + i), + ServerConstants.EXP_RATE, + ServerConstants.DROP_RATE, + ServerConstants.MESO_RATE, + ServerConstants.BOSS_DROP_RATE); + + worldRecommendedList.add(new Pair<>(i, p.getProperty("whyamirecommended" + i))); + worlds.add(world); + channels.add(new LinkedHashMap()); + for (int j = 0; j < Integer.parseInt(p.getProperty("channels" + i)); j++) { + int channelid = j + 1; + Channel channel = new Channel(i, channelid); + world.addChannel(channel); + channels.get(i).put(channelid, channel.getIP()); + } + world.setServerMessage(p.getProperty("servermessage" + i)); + System.out.println("Finished loading world " + i + "\r\n"); + } + } catch (Exception e) { + System.out.println("Error in moople.ini, start CreateINI.bat to re-make the file."); + e.printStackTrace();//For those who get errors + System.exit(0); + } + + acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 30); + acceptor.setHandler(new MapleServerHandler()); + try { + acceptor.bind(new InetSocketAddress(8484)); + } catch (IOException ex) { + ex.printStackTrace(); + } + + System.out.println("Listening on port 8484\r\n\r\n"); + + System.out.println("Solaxia is now online."); + online = true; + } + + public void shutdown() { + try { + TimerManager.getInstance().stop(); + acceptor.unbind(); + } catch (NullPointerException e) { + FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, e); + } + System.out.println("Server offline."); + System.exit(0);// BOEIEND :D + } + + public static void main(String args[]) { + Server.getInstance().run(); + } + + public Properties getSubnetInfo() { + return subnetInfo; + } + + public MapleAlliance getAlliance(int id) { + synchronized (alliances) { + if (alliances.containsKey(id)) { + return alliances.get(id); + } + return null; + } + } + + public void addAlliance(int id, MapleAlliance alliance) { + synchronized (alliances) { + if (!alliances.containsKey(id)) { + alliances.put(id, alliance); + } + } + } + + public void disbandAlliance(int id) { + synchronized (alliances) { + MapleAlliance alliance = alliances.get(id); + if (alliance != null) { + for (Integer gid : alliance.getGuilds()) { + guilds.get(gid).setAllianceId(0); + } + alliances.remove(id); + } + } + } + + public void allianceMessage(int id, final byte[] packet, int exception, int guildex) { + MapleAlliance alliance = alliances.get(id); + if (alliance != null) { + for (Integer gid : alliance.getGuilds()) { + if (guildex == gid) { + continue; + } + MapleGuild guild = guilds.get(gid); + if (guild != null) { + guild.broadcast(packet, exception); + } + } + } + } + + public boolean addGuildtoAlliance(int aId, int guildId) { + MapleAlliance alliance = alliances.get(aId); + if (alliance != null) { + alliance.addGuild(guildId); + return true; + } + return false; + } + + public boolean removeGuildFromAlliance(int aId, int guildId) { + MapleAlliance alliance = alliances.get(aId); + if (alliance != null) { + alliance.removeGuild(guildId); + return true; + } + return false; + } + + public boolean setAllianceRanks(int aId, String[] ranks) { + MapleAlliance alliance = alliances.get(aId); + if (alliance != null) { + alliance.setRankTitle(ranks); + return true; + } + return false; + } + + public boolean setAllianceNotice(int aId, String notice) { + MapleAlliance alliance = alliances.get(aId); + if (alliance != null) { + alliance.setNotice(notice); + return true; + } + return false; + } + + public boolean increaseAllianceCapacity(int aId, int inc) { + MapleAlliance alliance = alliances.get(aId); + if (alliance != null) { + alliance.increaseCapacity(inc); + return true; + } + return false; + } + + public Set getChannelServer(int world) { + return new HashSet<>(channels.get(world).keySet()); + } + + public byte getHighestChannelId() { + byte highest = 0; + for (Iterator it = channels.get(0).keySet().iterator(); it.hasNext();) { + Integer channel = it.next(); + if (channel != null && channel.intValue() > highest) { + highest = channel.byteValue(); + } + } + return highest; + } + + public int createGuild(int leaderId, String name) { + return MapleGuild.createGuild(leaderId, name); + } + + public MapleGuild getGuild(int id, int world, MapleGuildCharacter mgc) { + synchronized (guilds) { + if (guilds.get(id) != null) { + return guilds.get(id); + } + MapleGuild g = new MapleGuild(id, world); + if (g.getId() == -1) { + return null; + } + if (mgc != null) { + g.setOnline(mgc.getId(), true, mgc.getChannel()); + } + guilds.put(id, g); + return g; + } + } + + public void clearGuilds() {//remake + synchronized (guilds) { + guilds.clear(); + } + //for (List world : worlds.values()) { + //reloadGuildCharacters(); + } + + public void setGuildMemberOnline(MapleGuildCharacter mgc, boolean bOnline, int channel) { + MapleGuild g = getGuild(mgc.getGuildId(), mgc.getWorld(), mgc); + g.setOnline(mgc.getId(), bOnline, channel); + } + + public int addGuildMember(MapleGuildCharacter mgc) { + MapleGuild g = guilds.get(mgc.getGuildId()); + if (g != null) { + return g.addGuildMember(mgc); + } + return 0; + } + + public boolean setGuildAllianceId(int gId, int aId) { + MapleGuild guild = guilds.get(gId); + if (guild != null) { + guild.setAllianceId(aId); + return true; + } + return false; + } + + public void leaveGuild(MapleGuildCharacter mgc) { + MapleGuild g = guilds.get(mgc.getGuildId()); + if (g != null) { + g.leaveGuild(mgc); + } + } + + public void guildChat(int gid, String name, int cid, String msg) { + MapleGuild g = guilds.get(gid); + if (g != null) { + g.guildChat(name, cid, msg); + } + } + + public void changeRank(int gid, int cid, int newRank) { + MapleGuild g = guilds.get(gid); + if (g != null) { + g.changeRank(cid, newRank); + } + } + + public void expelMember(MapleGuildCharacter initiator, String name, int cid) { + MapleGuild g = guilds.get(initiator.getGuildId()); + if (g != null) { + g.expelMember(initiator, name, cid); + } + } + + public void setGuildNotice(int gid, String notice) { + MapleGuild g = guilds.get(gid); + if (g != null) { + g.setGuildNotice(notice); + } + } + + public void memberLevelJobUpdate(MapleGuildCharacter mgc) { + MapleGuild g = guilds.get(mgc.getGuildId()); + if (g != null) { + g.memberLevelJobUpdate(mgc); + } + } + + public void changeRankTitle(int gid, String[] ranks) { + MapleGuild g = guilds.get(gid); + if (g != null) { + g.changeRankTitle(ranks); + } + } + + public void setGuildEmblem(int gid, short bg, byte bgcolor, short logo, byte logocolor) { + MapleGuild g = guilds.get(gid); + if (g != null) { + g.setGuildEmblem(bg, bgcolor, logo, logocolor); + } + } + + public void disbandGuild(int gid) { + synchronized (guilds) { + MapleGuild g = guilds.get(gid); + g.disbandGuild(); + guilds.remove(gid); + } + } + + public boolean increaseGuildCapacity(int gid) { + MapleGuild g = guilds.get(gid); + if (g != null) { + return g.increaseCapacity(); + } + return false; + } + + public void gainGP(int gid, int amount) { + MapleGuild g = guilds.get(gid); + if (g != null) { + g.gainGP(amount); + } + } + + public void guildMessage(int gid, byte[] packet) { + guildMessage(gid, packet, -1); + } + + public void guildMessage(int gid, byte[] packet, int exception) { + MapleGuild g = guilds.get(gid); + if(g != null) { + g.broadcast(packet, exception); + } + } + + public PlayerBuffStorage getPlayerBuffStorage() { + return buffStorage; + } + + public void deleteGuildCharacter(MapleGuildCharacter mgc) { + setGuildMemberOnline(mgc, false, (byte) -1); + if (mgc.getGuildRank() > 1) { + leaveGuild(mgc); + } else { + disbandGuild(mgc.getGuildId()); + } + } + + public void reloadGuildCharacters(int world) { + World worlda = getWorld(world); + for (MapleCharacter mc : worlda.getPlayerStorage().getAllCharacters()) { + if (mc.getGuildId() > 0) { + setGuildMemberOnline(mc.getMGC(), true, worlda.getId()); + memberLevelJobUpdate(mc.getMGC()); + } + } + worlda.reloadGuildSummary(); + } + + public void broadcastMessage(final byte[] packet) { + for (Channel ch : getChannelsFromWorld(0)) { + ch.broadcastPacket(packet); + } + } + + public void broadcastGMMessage(final byte[] packet) { + for (Channel ch : getChannelsFromWorld(0)) { + ch.broadcastGMPacket(packet); + } + } + + public boolean isGmOnline() { + for (Channel ch : getChannelsFromWorld(0)) { + for (MapleCharacter player : ch.getPlayerStorage().getAllCharacters()) { + if (player.isGM()){ + return true; + } + } + } + return false; + } + + public World getWorld(int id) { + return worlds.get(id); + } + + public List getWorlds() { + return worlds; + } + + public final Runnable shutdown(final boolean restart) {//only once :D + return new Runnable() { + @Override + public void run() { + System.out.println((restart ? "Restarting" : "Shutting down") + " the server!\r\n"); + if (getWorlds() == null) return;//already shutdown + for (World w : getWorlds()) { + w.shutdown(); + } + /*for (World w : getWorlds()) { + while (w.getPlayerStorage().getAllCharacters().size() > 0) { + try { + Thread.sleep(1000); + } catch (InterruptedException ie) { + System.err.println("FUCK MY LIFE"); + } + } + } + for (Channel ch : getAllChannels()) { + while (ch.getConnectedClients() > 0) { + try { + Thread.sleep(1000); + } catch (InterruptedException ie) { + System.err.println("FUCK MY LIFE"); + } + } + }*/ + + TimerManager.getInstance().purge(); + TimerManager.getInstance().stop(); + + for (Channel ch : getAllChannels()) { + while (!ch.finishedShutdown()) { + try { + Thread.sleep(1000); + } catch (InterruptedException ie) { + System.err.println("FUCK MY LIFE"); + } + } + } + worlds.clear(); + worlds = null; + channels.clear(); + channels = null; + worldRecommendedList.clear(); + worldRecommendedList = null; + + System.out.println("Worlds + Channels are offline."); + acceptor.unbind(); + acceptor = null; + if (!restart) { + System.exit(0); + } else { + System.out.println("\r\nRestarting the server....\r\n"); + try { + instance.finalize();//FUU I CAN AND IT'S FREE + } catch (Throwable ex) { + } + instance = null; + System.gc(); + getInstance().run();//DID I DO EVERYTHING?! D: + } + } + }; + } +} \ No newline at end of file diff --git a/src/net/server/channel/Channel.java b/src/net/server/channel/Channel.java new file mode 100644 index 0000000000..d7873684b5 --- /dev/null +++ b/src/net/server/channel/Channel.java @@ -0,0 +1,306 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel; + +import java.io.File; +import java.net.InetSocketAddress; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; + +import net.MapleServerHandler; +import net.mina.MapleCodecFactory; +import net.server.PlayerStorage; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; + +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.buffer.SimpleBufferAllocator; +import org.apache.mina.core.filterchain.IoFilter; +import org.apache.mina.core.service.IoAcceptor; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.transport.socket.SocketSessionConfig; +import org.apache.mina.transport.socket.nio.NioSocketAcceptor; + +import provider.MapleDataProviderFactory; +import scripting.event.EventScriptManager; +import server.TimerManager; +import server.events.gm.MapleEvent; +import server.expeditions.MapleExpedition; +import server.expeditions.MapleExpeditionType; +import server.maps.HiredMerchant; +import server.maps.MapleMap; +import server.maps.MapleMapFactory; +import tools.MaplePacketCreator; +import client.MapleCharacter; +import constants.ServerConstants; + +public final class Channel { + + private int port = 7575; + private PlayerStorage players = new PlayerStorage(); + private int world, channel; + private IoAcceptor acceptor; + private String ip, serverMessage; + private MapleMapFactory mapFactory; + private EventScriptManager eventSM; + private Map hiredMerchants = new HashMap<>(); + private final Map storedVars = new HashMap<>(); + private ReentrantReadWriteLock merchant_lock = new ReentrantReadWriteLock(true); + private List expeditions = new ArrayList<>(); + private List expedType = new ArrayList<>(); + private MapleEvent event; + private boolean finishedShutdown = false; + + public Channel(final int world, final int channel) { + this.world = world; + this.channel = channel; + this.mapFactory = new MapleMapFactory(MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Map.wz")), MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/String.wz")), world, channel); + try { + eventSM = new EventScriptManager(this, getEvents()); + port = 7575 + this.channel - 1; + port += (world * 100); + ip = ServerConstants.HOST + ":" + port; + IoBuffer.setUseDirectBuffer(false); + IoBuffer.setAllocator(new SimpleBufferAllocator()); + acceptor = new NioSocketAcceptor(); + TimerManager.getInstance().register(new respawnMaps(), 10000); + acceptor.setHandler(new MapleServerHandler(world, channel)); + acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 30); + acceptor.getFilterChain().addLast("codec", (IoFilter) new ProtocolCodecFilter(new MapleCodecFactory())); + acceptor.bind(new InetSocketAddress(port)); + ((SocketSessionConfig) acceptor.getSessionConfig()).setTcpNoDelay(true); + for (MapleExpeditionType exped : MapleExpeditionType.values()) { + expedType.add(exped); + } + eventSM.init(); + + System.out.println(" Channel " + getId() + ": Listening on port " + port); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void reloadEventScriptManager(){ + eventSM.cancel(); + eventSM = null; + eventSM = new EventScriptManager(this, getEvents()); + eventSM.init(); + } + + public final void shutdown() { + try { + System.out.println("Shutting down Channel " + channel + " on World " + world); + + closeAllMerchants(); + players.disconnectAll(); + acceptor.unbind(); + + finishedShutdown = true; + System.out.println("Successfully shut down Channel " + channel + " on World " + world + "\r\n"); + } catch (Exception e) { + System.err.println("Error while shutting down Channel " + channel + " on World " + world + "\r\n" + e); + } + } + + public void closeAllMerchants() { + WriteLock wlock = merchant_lock.writeLock(); + wlock.lock(); + try { + final Iterator hmit = hiredMerchants.values().iterator(); + while (hmit.hasNext()) { + hmit.next().forceClose(); + hmit.remove(); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + wlock.unlock(); + } + } + + public MapleMapFactory getMapFactory() { + return mapFactory; + } + + public int getWorld() { + return world; + } + + public void addPlayer(MapleCharacter chr) { + players.addPlayer(chr); + chr.announce(MaplePacketCreator.serverMessage(serverMessage)); + } + + public PlayerStorage getPlayerStorage() { + return players; + } + + public void removePlayer(MapleCharacter chr) { + players.removePlayer(chr.getId()); + } + + public int getConnectedClients() { + return players.getAllCharacters().size(); + } + + public void broadcastPacket(final byte[] data) { + for (MapleCharacter chr : players.getAllCharacters()) { + chr.announce(data); + } + } + + public final int getId() { + return channel; + } + + public String getIP() { + return ip; + } + + public MapleEvent getEvent() { + return event; + } + + public void setEvent(MapleEvent event) { + this.event = event; + } + + public EventScriptManager getEventSM() { + return eventSM; + } + + public void broadcastGMPacket(final byte[] data) { + for (MapleCharacter chr : players.getAllCharacters()) { + if (chr.isGM()) { + chr.announce(data); + } + } + } + + public List getPartyMembers(MapleParty party) { + List partym = new ArrayList<>(8); + for (MaplePartyCharacter partychar : party.getMembers()) { + if (partychar.getChannel() == getId()) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(partychar.getName()); + if (chr != null) { + partym.add(chr); + } + } + } + return partym; + } + + public class respawnMaps implements Runnable { + + @Override + public void run() { + for (Entry map : mapFactory.getMaps().entrySet()) { + map.getValue().respawn(); + } + } + } + + public Map getHiredMerchants() { + return hiredMerchants; + } + + public void addHiredMerchant(int chrid, HiredMerchant hm) { + WriteLock wlock = merchant_lock.writeLock(); + wlock.lock(); + try { + hiredMerchants.put(chrid, hm); + } finally { + wlock.unlock(); + } + } + + public void removeHiredMerchant(int chrid) { + WriteLock wlock = merchant_lock.writeLock(); + wlock.lock(); + try { + hiredMerchants.remove(chrid); + } finally { + wlock.unlock(); + } + } + + public int[] multiBuddyFind(int charIdFrom, int[] characterIds) { + List ret = new ArrayList<>(characterIds.length); + PlayerStorage playerStorage = getPlayerStorage(); + for (int characterId : characterIds) { + MapleCharacter chr = playerStorage.getCharacterById(characterId); + if (chr != null) { + if (chr.getBuddylist().containsVisible(charIdFrom)) { + ret.add(characterId); + } + } + } + int[] retArr = new int[ret.size()]; + int pos = 0; + for (Integer i : ret) { + retArr[pos++] = i.intValue(); + } + return retArr; + } + + public List getExpeditions() { + return expeditions; + } + + public boolean isConnected(String name) { + return getPlayerStorage().getCharacterByName(name) != null; + } + + public boolean finishedShutdown() { + return finishedShutdown; + } + + public void setServerMessage(String message) { + this.serverMessage = message; + broadcastPacket(MaplePacketCreator.serverMessage(message)); + } + + private static String [] getEvents(){ + List events = new ArrayList(); + for (File file : new File("scripts/event").listFiles()){ + events.add(file.getName().substring(0, file.getName().length() - 3)); + } + return events.toArray(new String[0]); + } + + public int getStoredVar(int key) { + if(storedVars.containsKey(key)) + return storedVars.get(key); + return 0; + } + + public void setStoredVar(int key, int val) { + this.storedVars.put(key, val); + } +} \ No newline at end of file diff --git a/src/net/server/channel/CharacterIdChannelPair.java b/src/net/server/channel/CharacterIdChannelPair.java new file mode 100644 index 0000000000..9535a81bdf --- /dev/null +++ b/src/net/server/channel/CharacterIdChannelPair.java @@ -0,0 +1,47 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel; + +/** + * + * @author Frz + */ +public class CharacterIdChannelPair { + private int charid; + private int channel; + + public CharacterIdChannelPair() { + } + + public CharacterIdChannelPair(int charid, int channel) { + this.charid = charid; + this.channel = channel; + } + + public int getCharacterId() { + return charid; + } + + public int getChannel() { + return channel; + } +} diff --git a/src/net/server/channel/handlers/AbstractDealDamageHandler.java b/src/net/server/channel/handlers/AbstractDealDamageHandler.java new file mode 100644 index 0000000000..9590afc855 --- /dev/null +++ b/src/net/server/channel/handlers/AbstractDealDamageHandler.java @@ -0,0 +1,793 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.AbstractMaplePacketHandler; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import server.TimerManager; +import server.life.Element; +import server.life.ElementalEffectiveness; +import server.life.MapleMonster; +import server.life.MapleMonsterInformationProvider; +import server.life.MobSkill; +import server.life.MobSkillFactory; +import server.life.MonsterDropEntry; +import server.maps.MapleMap; +import server.maps.MapleMapItem; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.partyquest.Pyramid; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; +import tools.data.input.LittleEndianAccessor; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleJob; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import client.autoban.AutobanFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; +import constants.GameConstants; +import constants.ItemConstants; +import constants.skills.Aran; +import constants.skills.Assassin; +import constants.skills.Bandit; +import constants.skills.Bishop; +import constants.skills.BlazeWizard; +import constants.skills.Bowmaster; +import constants.skills.Brawler; +import constants.skills.Buccaneer; +import constants.skills.ChiefBandit; +import constants.skills.Cleric; +import constants.skills.Corsair; +import constants.skills.Crossbowman; +import constants.skills.Crusader; +import constants.skills.DawnWarrior; +import constants.skills.DragonKnight; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.FPMage; +import constants.skills.FPWizard; +import constants.skills.Fighter; +import constants.skills.Gunslinger; +import constants.skills.Hermit; +import constants.skills.Hero; +import constants.skills.Hunter; +import constants.skills.ILArchMage; +import constants.skills.ILMage; +import constants.skills.Marauder; +import constants.skills.Marksman; +import constants.skills.NightLord; +import constants.skills.NightWalker; +import constants.skills.Outlaw; +import constants.skills.Page; +import constants.skills.Paladin; +import constants.skills.Ranger; +import constants.skills.Rogue; +import constants.skills.Shadower; +import constants.skills.Sniper; +import constants.skills.Spearman; +import constants.skills.SuperGM; +import constants.skills.ThunderBreaker; +import constants.skills.WhiteKnight; +import constants.skills.WindArcher; + +public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandler { + + public static class AttackInfo { + + public int numAttacked, numDamage, numAttackedAndDamage, skill, skilllevel, stance, direction, rangedirection, charge, display; + public Map> allDamage; + public boolean isHH = false, isTempest = false, ranged, magic; + public int speed = 4; + public Point position = new Point(); + public MapleStatEffect getAttackEffect(MapleCharacter chr, Skill theSkill) { + Skill mySkill = theSkill; + if (mySkill == null) { + mySkill = SkillFactory.getSkill(GameConstants.getHiddenSkill(skill)); + } + int skillLevel = chr.getSkillLevel(mySkill); + if (mySkill.getId() % 10000000 == 1020) { + if (chr.getPartyQuest() instanceof Pyramid) { + if (((Pyramid) chr.getPartyQuest()).useSkill()) { + skillLevel = 1; + } + } + } + if (skillLevel == 0) { + return null; + } + if (display > 80) { //Hmm + if (!theSkill.getAction()) { + AutobanFactory.FAST_ATTACK.autoban(chr, "WZ Edit; adding action to a skill: " + display); + return null; + } + } + return mySkill.getEffect(skillLevel); + } + } + + protected synchronized void applyAttack(AttackInfo attack, final MapleCharacter player, int attackCount) { + Skill theSkill = null; + MapleStatEffect attackEffect = null; + final int job = player.getJob().getId(); + try { + if (player.isBanned()) { + return; + } + if (attack.skill != 0) { + theSkill = SkillFactory.getSkill(GameConstants.getHiddenSkill(attack.skill)); //returns back the skill id if its not a hidden skill so we are gucci + attackEffect = attack.getAttackEffect(player, theSkill); + if (attackEffect == null) { + player.getClient().announce(MaplePacketCreator.enableActions()); + return; + } + + if (player.getMp() < attackEffect.getMpCon()) { + AutobanFactory.MPCON.addPoint(player.getAutobanManager(), "Skill: " + attack.skill + "; Player MP: " + player.getMp() + "; MP Needed: " + attackEffect.getMpCon()); + } + + if (attack.skill != Cleric.HEAL) { + if (player.isAlive()) { + if(attack.skill == NightWalker.POISON_BOMB) // Poison Bomb + attackEffect.applyTo(player, new Point(attack.position.x, attack.position.y)); + else + attackEffect.applyTo(player); + } else { + player.getClient().announce(MaplePacketCreator.enableActions()); + } + } + int mobCount = attackEffect.getMobCount(); + if (attack.skill == DawnWarrior.FINAL_ATTACK || attack.skill == Page.FINAL_ATTACK_BW || attack.skill == Page.FINAL_ATTACK_SWORD || attack.skill == Fighter.FINAL_ATTACK_SWORD + || attack.skill == Fighter.FINAL_ATTACK_AXE || attack.skill == Spearman.FINAL_ATTACK_SPEAR || attack.skill == Spearman.FINAL_ATTACK_POLEARM || attack.skill == WindArcher.FINAL_ATTACK + || attack.skill == DawnWarrior.FINAL_ATTACK || attack.skill == Hunter.FINAL_ATTACK || attack.skill == Crossbowman.FINAL_ATTACK) { + mobCount = 15;//:( + } + + if (attack.skill == Aran.HIDDEN_FULL_DOUBLE || attack.skill == Aran.HIDDEN_FULL_TRIPLE || attack.skill == Aran.HIDDEN_OVER_DOUBLE || attack.skill == Aran.HIDDEN_OVER_TRIPLE) { + mobCount = 12; + } + + if (attack.numAttacked > mobCount) { + AutobanFactory.MOB_COUNT.autoban(player, "Skill: " + attack.skill + "; Count: " + attack.numAttacked + " Max: " + attackEffect.getMobCount()); + return; + } + } + if (!player.isAlive()) { + return; + } + + //WTF IS THIS F3,1 + /*if (attackCount != attack.numDamage && attack.skill != ChiefBandit.MESO_EXPLOSION && attack.skill != NightWalker.VAMPIRE && attack.skill != WindArcher.WIND_SHOT && attack.skill != Aran.COMBO_SMASH && attack.skill != Aran.COMBO_PENRIL && attack.skill != Aran.COMBO_TEMPEST && attack.skill != NightLord.NINJA_AMBUSH && attack.skill != Shadower.NINJA_AMBUSH) { + return; + }*/ + + int totDamage = 0; + final MapleMap map = player.getMap(); + + if (attack.skill == ChiefBandit.MESO_EXPLOSION) { + int delay = 0; + for (Integer oned : attack.allDamage.keySet()) { + MapleMapObject mapobject = map.getMapObject(oned.intValue()); + if (mapobject != null && mapobject.getType() == MapleMapObjectType.ITEM) { + final MapleMapItem mapitem = (MapleMapItem) mapobject; + if (mapitem.getMeso() == 0) { //Maybe it is possible some how? + return; + } + synchronized (mapitem) { + if (mapitem.isPickedUp()) { + return; + } + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + map.removeMapObject(mapitem); + map.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 4, 0), mapitem.getPosition()); + mapitem.setPickedUp(true); + } + }, delay); + delay += 100; + } + } else if (mapobject != null && mapobject.getType() != MapleMapObjectType.MONSTER) { + return; + } + } + } + for (Integer oned : attack.allDamage.keySet()) { + final MapleMonster monster = map.getMonsterByOid(oned.intValue()); + if (monster != null) { + double distance = player.getPosition().distanceSq(monster.getPosition()); + double distanceToDetect = 200000.0; + + if(attack.ranged) + distanceToDetect += 400000; + + if(attack.magic) + distanceToDetect += 200000; + + if(player.getJob().isA(MapleJob.ARAN1)) + distanceToDetect += 200000; // Arans have extra range over normal warriors. + + if(attack.skill == Aran.COMBO_SMASH || attack.skill == Aran.BODY_PRESSURE) + distanceToDetect += 40000; + + if(attack.skill == Bishop.GENESIS || attack.skill == ILArchMage.BLIZZARD || attack.skill == FPArchMage.METEOR_SHOWER) + distanceToDetect += 275000; + + if(attack.skill == Hero.BRANDISH || attack.skill == DragonKnight.SPEAR_CRUSHER || attack.skill == DragonKnight.POLE_ARM_CRUSHER); + distanceToDetect += 40000; + + if(attack.skill == DragonKnight.DRAGON_ROAR || attack.skill == SuperGM.SUPER_DRAGON_ROAR) + distanceToDetect += 250000; + + if(attack.skill == Shadower.BOOMERANG_STEP) + distanceToDetect += 60000; + + if(distance > distanceToDetect) { + AutobanFactory.DISTANCE_HACK.alert(player, "Distance Sq to monster: " + distance + " SID: " + attack.skill + " MID: " + monster.getId()); + } + + int totDamageToOneMonster = 0; + List onedList = attack.allDamage.get(oned); + for (Integer eachd : onedList) { + if(eachd < 0) + eachd += Integer.MAX_VALUE; + totDamageToOneMonster += eachd; + } + totDamage += totDamageToOneMonster; + player.checkMonsterAggro(monster); + if (player.getBuffedValue(MapleBuffStat.PICKPOCKET) != null && (attack.skill == 0 || attack.skill == Rogue.DOUBLE_STAB || attack.skill == Bandit.SAVAGE_BLOW || attack.skill == ChiefBandit.ASSAULTER || attack.skill == ChiefBandit.BAND_OF_THIEVES || attack.skill == Shadower.ASSASSINATE || attack.skill == Shadower.TAUNT || attack.skill == Shadower.BOOMERANG_STEP)) { + Skill pickpocket = SkillFactory.getSkill(ChiefBandit.PICKPOCKET); + int delay = 0; + final int maxmeso = player.getBuffedValue(MapleBuffStat.PICKPOCKET).intValue(); + for (Integer eachd : onedList) { + + eachd += Integer.MAX_VALUE; + if (pickpocket.getEffect(player.getSkillLevel(pickpocket)).makeChanceResult()) { + final Integer eachdf; + if(eachd < 0) + eachdf = eachd + Integer.MAX_VALUE; + else + eachdf = eachd; + + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + player.getMap().spawnMesoDrop(Math.min((int) Math.max(((double) eachdf / (double) 20000) * (double) maxmeso, (double) 1), maxmeso), new Point((int) (monster.getPosition().getX() + Randomizer.nextInt(100) - 50), (int) (monster.getPosition().getY())), monster, player, true, (byte) 2); + } + }, delay); + delay += 100; + } + } + } else if (attack.skill == Marauder.ENERGY_DRAIN || attack.skill == ThunderBreaker.ENERGY_DRAIN || attack.skill == NightWalker.VAMPIRE || attack.skill == Assassin.DRAIN) { + player.addHP(Math.min(monster.getMaxHp(), Math.min((int) ((double) totDamage * (double) SkillFactory.getSkill(attack.skill).getEffect(player.getSkillLevel(SkillFactory.getSkill(attack.skill))).getX() / 100.0), player.getMaxHp() / 2))); + } else if (attack.skill == Bandit.STEAL) { + Skill steal = SkillFactory.getSkill(Bandit.STEAL); + if (monster.getStolen().size() < 1) { // One steal per mob <3 + if (Math.random() < 0.3 && steal.getEffect(player.getSkillLevel(steal)).makeChanceResult()) { //Else it drops too many cool stuff :( + List toSteals = MapleMonsterInformationProvider.getInstance().retrieveDrop(monster.getId()); + Collections.shuffle(toSteals); + int toSteal = toSteals.get(rand(0, (toSteals.size() - 1))).itemId; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Item item; + if (ItemConstants.getInventoryType(toSteal).equals(MapleInventoryType.EQUIP)) { + item = ii.randomizeStats((Equip) ii.getEquipById(toSteal)); + } else { + item = new Item(toSteal, (byte) 0, (short) 1, -1); + } + player.getMap().spawnItemDrop(monster, player, item, monster.getPosition(), false, false); + monster.addStolen(toSteal); + } + } + } else if (attack.skill == FPArchMage.FIRE_DEMON) { + monster.setTempEffectiveness(Element.ICE, ElementalEffectiveness.WEAK, SkillFactory.getSkill(FPArchMage.FIRE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(FPArchMage.FIRE_DEMON))).getDuration() * 1000); + } else if (attack.skill == ILArchMage.ICE_DEMON) { + monster.setTempEffectiveness(Element.FIRE, ElementalEffectiveness.WEAK, SkillFactory.getSkill(ILArchMage.ICE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(ILArchMage.ICE_DEMON))).getDuration() * 1000); + } else if (attack.skill == Outlaw.HOMING_BEACON || attack.skill == Corsair.BULLSEYE) { + player.setMarkedMonster(monster.getObjectId()); + player.announce(MaplePacketCreator.giveBuff(1, attack.skill, Collections.singletonList(new Pair<>(MapleBuffStat.HOMING_BEACON, monster.getObjectId())))); + } + + if (job == 2111 || job == 2112) { + if (player.getBuffedValue(MapleBuffStat.WK_CHARGE) != null) { + Skill snowCharge = SkillFactory.getSkill(Aran.SNOW_CHARGE); + if (totDamageToOneMonster > 0) { + MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, snowCharge.getEffect(player.getSkillLevel(snowCharge)).getX()), snowCharge, null, false); + monster.applyStatus(player, monsterStatusEffect, false, snowCharge.getEffect(player.getSkillLevel(snowCharge)).getY() * 1000); + } + } + } + if (player.getBuffedValue(MapleBuffStat.HAMSTRING) != null) { + Skill hamstring = SkillFactory.getSkill(Bowmaster.HAMSTRING); + if (hamstring.getEffect(player.getSkillLevel(hamstring)).makeChanceResult()) { + MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, hamstring.getEffect(player.getSkillLevel(hamstring)).getX()), hamstring, null, false); + monster.applyStatus(player, monsterStatusEffect, false, hamstring.getEffect(player.getSkillLevel(hamstring)).getY() * 1000); + } + } + if (player.getBuffedValue(MapleBuffStat.SLOW) != null) { + Skill slow = SkillFactory.getSkill(Evan.SLOW); + if (slow.getEffect(player.getSkillLevel(slow)).makeChanceResult()) { + MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, slow.getEffect(player.getSkillLevel(slow)).getX()), slow, null, false); + monster.applyStatus(player, monsterStatusEffect, false, slow.getEffect(player.getSkillLevel(slow)).getY() * 60 * 1000); + } + } + if (player.getBuffedValue(MapleBuffStat.BLIND) != null) { + Skill blind = SkillFactory.getSkill(Marksman.BLIND); + if (blind.getEffect(player.getSkillLevel(blind)).makeChanceResult()) { + MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.ACC, blind.getEffect(player.getSkillLevel(blind)).getX()), blind, null, false); + monster.applyStatus(player, monsterStatusEffect, false, blind.getEffect(player.getSkillLevel(blind)).getY() * 1000); + } + } + if (job == 121 || job == 122) { + for (int charge = 1211005; charge < 1211007; charge++) { + Skill chargeSkill = SkillFactory.getSkill(charge); + if (player.isBuffFrom(MapleBuffStat.WK_CHARGE, chargeSkill)) { + if (totDamageToOneMonster > 0) { + if (charge == WhiteKnight.BW_ICE_CHARGE || charge == WhiteKnight.SWORD_ICE_CHARGE) { + monster.setTempEffectiveness(Element.ICE, ElementalEffectiveness.WEAK, chargeSkill.getEffect(player.getSkillLevel(chargeSkill)).getY() * 1000); + break; + } + if (charge == WhiteKnight.BW_FIRE_CHARGE || charge == WhiteKnight.SWORD_FIRE_CHARGE) { + monster.setTempEffectiveness(Element.FIRE, ElementalEffectiveness.WEAK, chargeSkill.getEffect(player.getSkillLevel(chargeSkill)).getY() * 1000); + break; + } + } + } + } + if (job == 122) { + for (int charge = 1221003; charge < 1221004; charge++) { + Skill chargeSkill = SkillFactory.getSkill(charge); + if (player.isBuffFrom(MapleBuffStat.WK_CHARGE, chargeSkill)) { + if (totDamageToOneMonster > 0) { + monster.setTempEffectiveness(Element.HOLY, ElementalEffectiveness.WEAK, chargeSkill.getEffect(player.getSkillLevel(chargeSkill)).getY() * 1000); + break; + } + } + } + } + } else if (player.getBuffedValue(MapleBuffStat.COMBO_DRAIN) != null) { + Skill skill; + if (player.getBuffedValue(MapleBuffStat.COMBO_DRAIN) != null) { + skill = SkillFactory.getSkill(21100005); + player.setHp(player.getHp() + ((totDamage * skill.getEffect(player.getSkillLevel(skill)).getX()) / 100), true); + player.updateSingleStat(MapleStat.HP, player.getHp()); + } + } else if (job == 412 || job == 422 || job == 1411) { + Skill type = SkillFactory.getSkill(player.getJob().getId() == 412 ? 4120005 : (player.getJob().getId() == 1411 ? 14110004 : 4220005)); + if (player.getSkillLevel(type) > 0) { + MapleStatEffect venomEffect = type.getEffect(player.getSkillLevel(type)); + for (int i = 0; i < attackCount; i++) { + if (venomEffect.makeChanceResult()) { + if (monster.getVenomMulti() < 3) { + monster.setVenomMulti((monster.getVenomMulti() + 1)); + MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.POISON, 1), type, null, false); + monster.applyStatus(player, monsterStatusEffect, false, venomEffect.getDuration(), true); + } + } + } + } + } else if (job == 521 || job == 522) { // from what I can gather this is how it should work + if (!monster.isBoss()) { + Skill type = SkillFactory.getSkill(Outlaw.FLAME_THROWER); + if (player.getSkillLevel(type) > 0) { + MapleStatEffect DoT = type.getEffect(player.getSkillLevel(type)); + MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.POISON, 1), type, null, false); + monster.applyStatus(player, monsterStatusEffect, true, DoT.getDuration(), false); + } + } + } else if (job >= 311 && job <= 322) { + if (!monster.isBoss()) { + Skill mortalBlow; + if (job == 311 || job == 312) { + mortalBlow = SkillFactory.getSkill(Ranger.MORTAL_BLOW); + } else { + mortalBlow = SkillFactory.getSkill(Sniper.MORTAL_BLOW); + } + if (player.getSkillLevel(mortalBlow) > 0) { + MapleStatEffect mortal = mortalBlow.getEffect(player.getSkillLevel(mortalBlow)); + if (monster.getHp() <= (monster.getStats().getHp() * mortal.getX()) / 100) { + if (Randomizer.rand(1, 100) <= mortal.getY()) { + monster.getMap().killMonster(monster, player, true); + } + } + } + } + } + if (attack.skill != 0) { + if (attackEffect.getFixDamage() != -1) { + if (totDamageToOneMonster != attackEffect.getFixDamage() && totDamageToOneMonster != 0) { + AutobanFactory.FIX_DAMAGE.autoban(player, String.valueOf(totDamageToOneMonster) + " damage"); + } + } + } + if (totDamageToOneMonster > 0 && attackEffect != null && attackEffect.getMonsterStati().size() > 0) { + if (attackEffect.makeChanceResult()) { + monster.applyStatus(player, new MonsterStatusEffect(attackEffect.getMonsterStati(), theSkill, null, false), attackEffect.isPoison(), attackEffect.getDuration()); + } + } + if (attack.isHH && !monster.isBoss()) { + map.damageMonster(player, monster, monster.getHp() - 1); + } else if (attack.isHH) { + int HHDmg = (player.calculateMaxBaseDamage(player.getTotalWatk()) * (SkillFactory.getSkill(Paladin.HEAVENS_HAMMER).getEffect(player.getSkillLevel(SkillFactory.getSkill(Paladin.HEAVENS_HAMMER))).getDamage() / 100)); + map.damageMonster(player, monster, (int) (Math.floor(Math.random() * (HHDmg / 5) + HHDmg * .8))); + } else if(attack.isTempest && !monster.isBoss()) { + map.damageMonster(player, monster, monster.getHp()); + } else if(attack.isTempest) { + int TmpDmg = (player.calculateMaxBaseDamage(player.getTotalWatk()) * (SkillFactory.getSkill(Aran.COMBO_TEMPEST).getEffect(player.getSkillLevel(SkillFactory.getSkill(Aran.COMBO_TEMPEST))).getDamage() / 100)); + map.damageMonster(player, monster, (int) (Math.floor(Math.random() * (TmpDmg / 5) + TmpDmg * .8))); + } else { + map.damageMonster(player, monster, totDamageToOneMonster); + + } + if (monster.isBuffed(MonsterStatus.WEAPON_REFLECT)) { + for (int i = 0; i < monster.getSkills().size(); i++) { + if (monster.getSkills().get(i).left == 145) { + MobSkill toUse = MobSkillFactory.getMobSkill(monster.getSkills().get(i).left, monster.getSkills().get(i).right); + player.addHP(-toUse.getX()); + map.broadcastMessage(player, MaplePacketCreator.damagePlayer(0, monster.getId(), player.getId(), toUse.getX(), 0, 0, false, 0, true, monster.getObjectId(), 0, 0), true); + } + } + } + if (monster.isBuffed(MonsterStatus.MAGIC_REFLECT)) { + for (int i = 0; i < monster.getSkills().size(); i++) { + if (monster.getSkills().get(i).left == 145) { + MobSkill toUse = MobSkillFactory.getMobSkill(monster.getSkills().get(i).left, monster.getSkills().get(i).right); + player.addMP(-toUse.getY()); + } + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + protected AttackInfo parseDamage(LittleEndianAccessor lea, MapleCharacter chr, boolean ranged, boolean magic) { + //2C 00 00 01 91 A1 12 00 A5 57 62 FC E2 75 99 10 00 47 80 01 04 01 C6 CC 02 DD FF 5F 00 + AttackInfo ret = new AttackInfo(); + lea.readByte(); + ret.numAttackedAndDamage = lea.readByte(); + ret.numAttacked = (ret.numAttackedAndDamage >>> 4) & 0xF; + ret.numDamage = ret.numAttackedAndDamage & 0xF; + ret.allDamage = new HashMap<>(); + ret.skill = lea.readInt(); + ret.ranged = ranged; + ret.magic = magic; + if (ret.skill > 0) { + ret.skilllevel = chr.getSkillLevel(ret.skill); + } + if (ret.skill == Evan.ICE_BREATH || ret.skill == Evan.FIRE_BREATH || ret.skill == FPArchMage.BIG_BANG || ret.skill == ILArchMage.BIG_BANG || ret.skill == Bishop.BIG_BANG || ret.skill == Gunslinger.GRENADE || ret.skill == Brawler.CORKSCREW_BLOW || ret.skill == ThunderBreaker.CORKSCREW_BLOW || ret.skill == NightWalker.POISON_BOMB) { + ret.charge = lea.readInt(); + } else { + ret.charge = 0; + } + if (ret.skill == Paladin.HEAVENS_HAMMER) { + ret.isHH = true; + } else if(ret.skill == Aran.COMBO_TEMPEST) { + ret.isTempest = true; + } + lea.skip(8); + ret.display = lea.readByte(); + ret.direction = lea.readByte(); + ret.stance = lea.readByte(); + if (ret.skill == ChiefBandit.MESO_EXPLOSION) { + if (ret.numAttackedAndDamage == 0) { + lea.skip(10); + int bullets = lea.readByte(); + for (int j = 0; j < bullets; j++) { + int mesoid = lea.readInt(); + lea.skip(1); + ret.allDamage.put(Integer.valueOf(mesoid), null); + } + return ret; + } else { + lea.skip(6); + } + for (int i = 0; i < ret.numAttacked + 1; i++) { + int oid = lea.readInt(); + if (i < ret.numAttacked) { + lea.skip(12); + int bullets = lea.readByte(); + List allDamageNumbers = new ArrayList<>(); + for (int j = 0; j < bullets; j++) { + int damage = lea.readInt(); + allDamageNumbers.add(Integer.valueOf(damage)); + } + ret.allDamage.put(Integer.valueOf(oid), allDamageNumbers); + lea.skip(4); + } else { + int bullets = lea.readByte(); + for (int j = 0; j < bullets; j++) { + int mesoid = lea.readInt(); + lea.skip(1); + ret.allDamage.put(Integer.valueOf(mesoid), null); + } + } + } + return ret; + } + if (ranged) { + lea.readByte(); + ret.speed = lea.readByte(); + lea.readByte(); + ret.rangedirection = lea.readByte(); + lea.skip(7); + if (ret.skill == Bowmaster.HURRICANE || ret.skill == Marksman.PIERCING_ARROW || ret.skill == Corsair.RAPID_FIRE || ret.skill == WindArcher.HURRICANE) { + lea.skip(4); + } + } else { + lea.readByte(); + ret.speed = lea.readByte(); + lea.skip(4); + } + int calcDmgMax = 0; + + // Find the base damage to base futher calculations on. + // Several skills have their own formula in this section. + if(magic && ret.skill != 0) { + calcDmgMax = (chr.getTotalMagic() * chr.getTotalMagic() / 1000 + chr.getTotalMagic()) / 30 + chr.getTotalInt() / 200; + } else if(ret.skill == 4001344 || ret.skill == NightWalker.LUCKY_SEVEN || ret.skill == NightLord.TRIPLE_THROW) { + calcDmgMax = (chr.getTotalLuk() * 5) * chr.getTotalWatk() / 100; + } else if(ret.skill == DragonKnight.DRAGON_ROAR) { + calcDmgMax = (chr.getTotalStr() * 4 + chr.getTotalDex()) * chr.getTotalWatk() / 100; + } else if(ret.skill == NightLord.VENOMOUS_STAR || ret.skill == Shadower.VENOMOUS_STAB) { + calcDmgMax = (int) (18.5 * (chr.getTotalStr() + chr.getTotalLuk()) + chr.getTotalDex() * 2) / 100 * chr.calculateMaxBaseDamage(chr.getTotalWatk()); + } else { + calcDmgMax = chr.calculateMaxBaseDamage(chr.getTotalWatk()); + } + + if(ret.skill != 0) { + Skill skill = SkillFactory.getSkill(ret.skill); + MapleStatEffect effect = skill.getEffect(ret.skilllevel); + + if (magic) { + // Since the skill is magic based, use the magic formula + if(chr.getJob() == MapleJob.IL_ARCHMAGE || chr.getJob() == MapleJob.IL_MAGE) { + int skillLvl = chr.getSkillLevel(ILMage.ELEMENT_AMPLIFICATION); + if(skillLvl > 0) + calcDmgMax = calcDmgMax * SkillFactory.getSkill(ILMage.ELEMENT_AMPLIFICATION).getEffect(skillLvl).getY() / 100; + } else if(chr.getJob() == MapleJob.FP_ARCHMAGE || chr.getJob() == MapleJob.FP_MAGE) { + int skillLvl = chr.getSkillLevel(FPMage.ELEMENT_AMPLIFICATION); + if(skillLvl > 0) + calcDmgMax = calcDmgMax * SkillFactory.getSkill(FPMage.ELEMENT_AMPLIFICATION).getEffect(skillLvl).getY() / 100; + } else if(chr.getJob() == MapleJob.BLAZEWIZARD3 || chr.getJob() == MapleJob.BLAZEWIZARD4) { + int skillLvl = chr.getSkillLevel(BlazeWizard.ELEMENT_AMPLIFICATION); + if(skillLvl > 0) + calcDmgMax = calcDmgMax * SkillFactory.getSkill(BlazeWizard.ELEMENT_AMPLIFICATION).getEffect(skillLvl).getY() / 100; + } else if(chr.getJob() == MapleJob.EVAN7 || chr.getJob() == MapleJob.EVAN8 || chr.getJob() == MapleJob.EVAN9 || chr.getJob() == MapleJob.EVAN10) { + int skillLvl = chr.getSkillLevel(Evan.MAGIC_AMPLIFICATION); + if(skillLvl > 0) + calcDmgMax = calcDmgMax * SkillFactory.getSkill(Evan.MAGIC_AMPLIFICATION).getEffect(skillLvl).getY() / 100; + } + + calcDmgMax *= effect.getMatk(); + if(ret.skill == Cleric.HEAL) { + // This formula is still a bit wonky, but it is fairly accurate. + calcDmgMax = (int) Math.round((chr.getTotalInt() * 4.8 + chr.getTotalLuk() * 4) * chr.getTotalMagic() / 1000); + calcDmgMax = calcDmgMax * effect.getHp() / 100; + } + } else if(ret.skill == Hermit.SHADOW_MESO) { + // Shadow Meso also has its own formula + calcDmgMax = effect.getMoneyCon() * 10; + calcDmgMax = (int) Math.floor(calcDmgMax * 1.5); + } else { + // Normal damage formula for skills + calcDmgMax = calcDmgMax * effect.getDamage() / 100; + } + } + + Integer comboBuff = chr.getBuffedValue(MapleBuffStat.COMBO); + if(comboBuff != null && comboBuff > 0) { + int oid = chr.isCygnus() ? DawnWarrior.COMBO : Crusader.COMBO; + int advcomboid = chr.isCygnus() ? DawnWarrior.ADVANCED_COMBO : Hero.ADVANCED_COMBO; + + if(comboBuff > 6) { + // Advanced Combo + MapleStatEffect ceffect = SkillFactory.getSkill(advcomboid).getEffect(chr.getSkillLevel(advcomboid)); + calcDmgMax = (int) Math.floor(calcDmgMax * (ceffect.getDamage() + 50) / 100 + 0.20 + (comboBuff - 5) * 0.04); + } else { + // Normal Combo + MapleStatEffect ceffect = SkillFactory.getSkill(oid).getEffect(chr.getSkillLevel(oid)); + calcDmgMax = (int) Math.floor(calcDmgMax * (ceffect.getDamage() + 50) / 100 + Math.floor((comboBuff - 1) * (chr.getSkillLevel(oid) / 6)) / 100); + } + + if(GameConstants.isFinisherSkill(ret.skill)) { + // Finisher skills do more damage based on how many orbs the player has. + int orbs = comboBuff - 1; + if(orbs == 2) + calcDmgMax *= 1.2; + else if(orbs == 3) + calcDmgMax *= 1.54; + else if(orbs == 4) + calcDmgMax *= 2; + else if(orbs >= 5) + calcDmgMax *= 2.5; + } + } + + if(chr.getEnergyBar() == 15000) { + int energycharge = chr.isCygnus() ? ThunderBreaker.ENERGY_CHARGE : Marauder.ENERGY_CHARGE; + MapleStatEffect ceffect = SkillFactory.getSkill(energycharge).getEffect(chr.getSkillLevel(energycharge)); + calcDmgMax *= ceffect.getDamage() / 100; + } + + if(chr.getMapId() >= 914000000 && chr.getMapId() <= 914000500) { + calcDmgMax += 80000; // Aran Tutorial. + } + + boolean canCrit = false; + if(chr.getJob().isA((MapleJob.BOWMAN)) || chr.getJob().isA(MapleJob.THIEF) || chr.getJob().isA(MapleJob.NIGHTWALKER1) || chr.getJob().isA(MapleJob.WINDARCHER1) || chr.getJob() == MapleJob.ARAN3 || chr.getJob() == MapleJob.ARAN4 || chr.getJob() == MapleJob.MARAUDER || chr.getJob() == MapleJob.BUCCANEER) { + canCrit = true; + } + if(chr.getBuffEffect(MapleBuffStat.SHARP_EYES) != null) { + // Any class that has sharp eyes can crit. Also, since it stacks with normal crit go ahead + // and calc it in. + canCrit = true; + calcDmgMax *= 1.4; + } + + boolean shadowPartner = false; + if(chr.getBuffEffect(MapleBuffStat.SHADOWPARTNER) != null) + shadowPartner = true; + + + if(ret.skill != 0) { + int fixed = ret.getAttackEffect(chr, SkillFactory.getSkill(ret.skill)).getFixDamage(); + if(fixed > 0) + calcDmgMax = fixed; + } + for (int i = 0; i < ret.numAttacked; i++) { + int oid = lea.readInt(); + lea.skip(14); + List allDamageNumbers = new ArrayList<>(); + MapleMonster monster = chr.getMap().getMonsterByOid(oid); + + if(chr.getBuffEffect(MapleBuffStat.WK_CHARGE) != null) { + // Charge, so now we need to check elemental effectiveness + int sourceID = chr.getBuffSource(MapleBuffStat.WK_CHARGE); + int level = chr.getBuffedValue(MapleBuffStat.WK_CHARGE); + if(monster != null) { + if(sourceID == WhiteKnight.BW_FIRE_CHARGE || sourceID == WhiteKnight.SWORD_FIRE_CHARGE) { + if(monster.getStats().getEffectiveness(Element.FIRE) == ElementalEffectiveness.WEAK) { + calcDmgMax *= 1.05 + level * 0.015; + } + } else if(sourceID == WhiteKnight.BW_ICE_CHARGE || sourceID == WhiteKnight.SWORD_ICE_CHARGE) { + if(monster.getStats().getEffectiveness(Element.ICE) == ElementalEffectiveness.WEAK) { + calcDmgMax *= 1.05 + level * 0.015; + } + } else if(sourceID == WhiteKnight.BW_LIT_CHARGE || sourceID == WhiteKnight.SWORD_LIT_CHARGE) { + if(monster.getStats().getEffectiveness(Element.LIGHTING) == ElementalEffectiveness.WEAK) { + calcDmgMax *= 1.05 + level * 0.015; + } + } else if(sourceID == Paladin.BW_HOLY_CHARGE || sourceID == Paladin.SWORD_HOLY_CHARGE) { + if(monster.getStats().getEffectiveness(Element.HOLY) == ElementalEffectiveness.WEAK) { + calcDmgMax *= 1.2 + level * 0.015; + } + } + } else { + // Since we already know the skill has an elemental attribute, but we dont know if the monster is weak or not, lets + // take the safe approach and just assume they are weak. + calcDmgMax *= 1.5; + } + } + + if(ret.skill != 0) { + Skill skill = SkillFactory.getSkill(ret.skill); + if(skill.getElement() != Element.NEUTRAL && chr.getBuffedValue(MapleBuffStat.ELEMENTAL_RESET) == null) { + // The skill has an element effect, so we need to factor that in. + if(monster != null) { + ElementalEffectiveness eff = monster.getEffectiveness(skill.getElement()); + if(eff == ElementalEffectiveness.WEAK) { + calcDmgMax *= 1.5; + } else if(eff == ElementalEffectiveness.STRONG) { + //calcDmgMax *= 0.5; + } + } else { + // Since we already know the skill has an elemental attribute, but we dont know if the monster is weak or not, lets + // take the safe approach and just assume they are weak. + calcDmgMax *= 1.5; + } + } + if(ret.skill == FPWizard.POISON_BREATH || ret.skill == FPMage.POISON_MIST || ret.skill == FPArchMage.FIRE_DEMON || ret.skill == ILArchMage.ICE_DEMON) { + if(monster != null) { + // Turns out poison is completely server side, so I don't know why I added this. >.< + //calcDmgMax = monster.getHp() / (70 - chr.getSkillLevel(skill)); + } + } else if(ret.skill == Hermit.SHADOW_WEB) { + if(monster != null) { + calcDmgMax = monster.getHp() / (50 - chr.getSkillLevel(skill)); + } + } + } + + for (int j = 0; j < ret.numDamage; j++) { + int damage = lea.readInt(); + int hitDmgMax = calcDmgMax; + if(ret.skill == Buccaneer.BARRAGE) { + if(j > 3) + hitDmgMax *= Math.pow(2, (j - 3)); + } + if(shadowPartner) { + // For shadow partner, the second half of the hits only do 50% damage. So calc that + // in for the crit effects. + if(j >= ret.numDamage / 2) { + hitDmgMax *= 0.5; + } + } + + if(ret.skill == Marksman.SNIPE) { + damage = 195000 + Randomizer.nextInt(5000); + hitDmgMax = 200000; + } + + int maxWithCrit = hitDmgMax; + if(canCrit) // They can crit, so up the max. + maxWithCrit *= 2; + + // Warn if the damage is over 1.5x what we calculated above. + if(damage > maxWithCrit * 1.5) { + AutobanFactory.DAMAGE_HACK.alert(chr, "DMG: " + damage + " MaxDMG: " + maxWithCrit + " SID: " + ret.skill + " MobID: " + (monster != null ? monster.getId() : "null") + " Map: " + chr.getMap().getMapName() + " (" + chr.getMapId() + ")"); + } + + // Add a ab point if its over 5x what we calculated. + if(damage > maxWithCrit * 5) { + AutobanFactory.DAMAGE_HACK.addPoint(chr.getAutobanManager(), "DMG: " + damage + " MaxDMG: " + maxWithCrit + " SID: " + ret.skill + " MobID: " + (monster != null ? monster.getId() : "null") + " Map: " + chr.getMap().getMapName() + " (" + chr.getMapId() + ")"); + } + + if (ret.skill == Marksman.SNIPE || (canCrit && damage > hitDmgMax)) { + // If the skill is a crit, inverse the damage to make it show up on clients. + damage = -Integer.MAX_VALUE + damage - 1; + } + + allDamageNumbers.add(damage); + } + if (ret.skill != Corsair.RAPID_FIRE || ret.skill != Aran.HIDDEN_FULL_DOUBLE || ret.skill != Aran.HIDDEN_FULL_TRIPLE || ret.skill != Aran.HIDDEN_OVER_DOUBLE || ret.skill != Aran.HIDDEN_OVER_TRIPLE) { + lea.skip(4); + } + ret.allDamage.put(Integer.valueOf(oid), allDamageNumbers); + } + if (ret.skill == NightWalker.POISON_BOMB) { // Poison Bomb + lea.skip(4); + ret.position.setLocation(lea.readShort(), lea.readShort()); + } + return ret; + } + + private static int rand(int l, int u) { + return (int) ((Math.random() * (u - l + 1)) + l); + } +} diff --git a/src/net/server/channel/handlers/AbstractMovementPacketHandler.java b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java new file mode 100644 index 0000000000..5b29855302 --- /dev/null +++ b/src/net/server/channel/handlers/AbstractMovementPacketHandler.java @@ -0,0 +1,160 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import server.maps.AnimatedMapleMapObject; +import server.movement.AbsoluteLifeMovement; +import server.movement.ChangeEquip; +import server.movement.JumpDownMovement; +import server.movement.LifeMovement; +import server.movement.LifeMovementFragment; +import server.movement.RelativeLifeMovement; +import server.movement.TeleportMovement; +import tools.data.input.LittleEndianAccessor; + +public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketHandler { + + protected List parseMovement(LittleEndianAccessor lea) { + List res = new ArrayList<>(); + byte numCommands = lea.readByte(); + for (byte i = 0; i < numCommands; i++) { + byte command = lea.readByte(); + switch (command) { + case 0: // normal move + case 5: + case 17: { // Float + short xpos = lea.readShort(); + short ypos = lea.readShort(); + short xwobble = lea.readShort(); + short ywobble = lea.readShort(); + short unk = lea.readShort(); + byte newstate = lea.readByte(); + short duration = lea.readShort(); + AbsoluteLifeMovement alm = new AbsoluteLifeMovement(command, new Point(xpos, ypos), duration, newstate); + alm.setUnk(unk); + alm.setPixelsPerSecond(new Point(xwobble, ywobble)); + res.add(alm); + break; + } + case 1: + case 2: + case 6: // fj + case 12: + case 13: // Shot-jump-back thing + case 16: // Float + case 18: + case 19: // Springs on maps + case 20: // Aran Combat Step + case 22: { + short xpos = lea.readShort(); + short ypos = lea.readShort(); + byte newstate = lea.readByte(); + short duration = lea.readShort(); + RelativeLifeMovement rlm = new RelativeLifeMovement(command, new Point(xpos, ypos), duration, newstate); + res.add(rlm); + break; + } + case 3: + case 4: // tele... -.- + case 7: // assaulter + case 8: // assassinate + case 9: // rush + case 11: //chair + { +// case 14: { + short xpos = lea.readShort(); + short ypos = lea.readShort(); + short xwobble = lea.readShort(); + short ywobble = lea.readShort(); + byte newstate = lea.readByte(); + TeleportMovement tm = new TeleportMovement(command, new Point(xpos, ypos), newstate); + tm.setPixelsPerSecond(new Point(xwobble, ywobble)); + res.add(tm); + break; + } + case 14: + lea.skip(9); // jump down (?) + break; + case 10: // Change Equip + res.add(new ChangeEquip(lea.readByte())); + break; + /*case 11: { // Chair + short xpos = lea.readShort(); + short ypos = lea.readShort(); + short unk = lea.readShort(); + byte newstate = lea.readByte(); + short duration = lea.readShort(); + ChairMovement cm = new ChairMovement(command, new Point(xpos, ypos), duration, newstate); + cm.setUnk(unk); + res.add(cm); + break; + }*/ + case 15: { + short xpos = lea.readShort(); + short ypos = lea.readShort(); + short xwobble = lea.readShort(); + short ywobble = lea.readShort(); + short unk = lea.readShort(); + short fh = lea.readShort(); + byte newstate = lea.readByte(); + short duration = lea.readShort(); + JumpDownMovement jdm = new JumpDownMovement(command, new Point(xpos, ypos), duration, newstate); + jdm.setUnk(unk); + jdm.setPixelsPerSecond(new Point(xwobble, ywobble)); + jdm.setFH(fh); + res.add(jdm); + break; + } + case 21: {//Causes aran to do weird stuff when attacking o.o + /*byte newstate = lea.readByte(); + short unk = lea.readShort(); + AranMovement am = new AranMovement(command, null, unk, newstate); + res.add(am);*/ + lea.skip(3); + break; + } + default: + System.out.println("Unhandled Case:" + command); + return null; + } + } + return res; + } + + protected void updatePosition(List movement, AnimatedMapleMapObject target, int yoffset) { + for (LifeMovementFragment move : movement) { + if (move instanceof LifeMovement) { + if (move instanceof AbsoluteLifeMovement) { + Point position = ((LifeMovement) move).getPosition(); + position.y += yoffset; + target.setPosition(position); + } + target.setStance(((LifeMovement) move).getNewstate()); + } + } + } +} diff --git a/src/net/server/channel/handlers/AcceptFamilyHandler.java b/src/net/server/channel/handlers/AcceptFamilyHandler.java new file mode 100644 index 0000000000..b87b124ad6 --- /dev/null +++ b/src/net/server/channel/handlers/AcceptFamilyHandler.java @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import constants.ServerConstants; +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public final class AcceptFamilyHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!ServerConstants.USE_FAMILY_SYSTEM){ + return; + } + //System.out.println(slea.toString()); + int inviterId = slea.readInt(); + //String inviterName = slea.readMapleAsciiString(); + MapleCharacter inviter = c.getWorldServer().getPlayerStorage().getCharacterById(inviterId); + if (inviter != null) { + inviter.getClient().announce(MaplePacketCreator.sendFamilyJoinResponse(true, c.getPlayer().getName())); + } + c.announce(MaplePacketCreator.sendFamilyMessage(0, 0)); + } +} diff --git a/src/net/server/channel/handlers/AdminChatHandler.java b/src/net/server/channel/handlers/AdminChatHandler.java new file mode 100644 index 0000000000..d27c04127e --- /dev/null +++ b/src/net/server/channel/handlers/AdminChatHandler.java @@ -0,0 +1,35 @@ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public class AdminChatHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().isGM()) {//if ( (signed int)CWvsContext::GetAdminLevel((void *)v294) > 2 ) + return; + } + byte mode = slea.readByte(); + //not saving slides... + byte[] packet = MaplePacketCreator.serverNotice(slea.readByte(), slea.readMapleAsciiString());//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :) + switch (mode) { + case 0:// /alertall, /noticeall, /slideall + c.getWorldServer().broadcastPacket(packet); + break; + case 1:// /alertch, /noticech, /slidech + c.getChannelServer().broadcastPacket(packet); + break; + case 2:// /alertm /alertmap, /noticem /noticemap, /slidem /slidemap + c.getPlayer().getMap().broadcastMessage(packet); + break; + + } + } +} diff --git a/src/net/server/channel/handlers/AdminCommandHandler.java b/src/net/server/channel/handlers/AdminCommandHandler.java new file mode 100644 index 0000000000..637ed106f0 --- /dev/null +++ b/src/net/server/channel/handlers/AdminCommandHandler.java @@ -0,0 +1,185 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.util.Arrays; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.life.MapleLifeFactory; +import server.life.MapleMonster; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.quest.MapleQuest; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; + +public final class AdminCommandHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().isGM()) { + return; + } + byte mode = slea.readByte(); + String victim; + MapleCharacter target; + switch (mode) { + case 0x00: // Level1~Level8 & Package1~Package2 + int[][] toSpawn = MapleItemInformationProvider.getInstance().getSummonMobs(slea.readInt()); + for (int z = 0; z < toSpawn.length; z++) { + int[] toSpawnChild = toSpawn[z]; + if (Randomizer.nextInt(101) <= toSpawnChild[1]) { + c.getPlayer().getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(toSpawnChild[0]), c.getPlayer().getPosition()); + } + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 0x01: { // /d (inv) + byte type = slea.readByte(); + MapleInventory in = c.getPlayer().getInventory(MapleInventoryType.getByType(type)); + for (short i = 1; i <= in.getSlotLimit(); i++) { //TODO What is the point of this loop? + if (in.getItem(i) != null) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.getByType(type), i, in.getItem(i).getQuantity(), false); + } + return; + } + break; + } + case 0x02: // Exp + c.getPlayer().setExp(slea.readInt()); + break; + case 0x03: // /ban + c.getPlayer().yellowMessage("Please use !ban "); + break; + case 0x04: // /block + victim = slea.readMapleAsciiString(); + int type = slea.readByte(); //reason + int duration = slea.readInt(); + String description = slea.readMapleAsciiString(); + String reason = c.getPlayer().getName() + " used /ban to ban"; + target = c.getChannelServer().getPlayerStorage().getCharacterByName(victim); + if (target != null) { + String readableTargetName = MapleCharacter.makeMapleReadable(target.getName()); + String ip = target.getClient().getSession().getRemoteAddress().toString().split(":")[0]; + reason += readableTargetName + " (IP: " + ip + ")"; + if (duration == -1) { + target.ban(description + " " + reason); + } else { + target.block(type, duration, description); + target.sendPolice(duration, reason, 6000); + } + c.announce(MaplePacketCreator.getGMEffect(4, (byte) 0)); + } else if (MapleCharacter.ban(victim, reason, false)) { + c.announce(MaplePacketCreator.getGMEffect(4, (byte) 0)); + } else { + c.announce(MaplePacketCreator.getGMEffect(6, (byte) 1)); + } + break; + case 0x10: // /h, information by vana (and tele mode f1) ... hide ofcourse + c.getPlayer().Hide(slea.readByte() == 1); + break; + case 0x11: // Entering a map + switch (slea.readByte()) { + case 0:// /u + StringBuilder sb = new StringBuilder("USERS ON THIS MAP: "); + for (MapleCharacter mc : c.getPlayer().getMap().getCharacters()) { + sb.append(mc.getName()); + sb.append(" "); + } + c.getPlayer().message(sb.toString()); + break; + case 12:// /uclip and entering a map + break; + } + break; + case 0x12: // Send + victim = slea.readMapleAsciiString(); + int mapId = slea.readInt(); + c.getChannelServer().getPlayerStorage().getCharacterByName(victim).changeMap(c.getChannelServer().getMapFactory().getMap(mapId)); + break; + case 0x15: // Kill + int mobToKill = slea.readInt(); + int amount = slea.readInt(); + List monsterx = c.getPlayer().getMap().getMapObjectsInRange(c.getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER)); + for (int x = 0; x < amount; x++) { + MapleMonster monster = (MapleMonster) monsterx.get(x); + if (monster.getId() == mobToKill) { + c.getPlayer().getMap().killMonster(monster, c.getPlayer(), true); + monster.giveExpToCharacter(c.getPlayer(), monster.getExp(), true, 1); + } + } + break; + case 0x16: // Questreset + MapleQuest.getInstance(slea.readShort()).reset(c.getPlayer()); + break; + case 0x17: // Summon + int mobId = slea.readInt(); + int quantity = slea.readInt(); + for (int i = 0; i < quantity; i++) { + c.getPlayer().getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(mobId), c.getPlayer().getPosition()); + } + break; + case 0x18: // Maple & Mobhp + int mobHp = slea.readInt(); + c.getPlayer().dropMessage("Monsters HP"); + List monsters = c.getPlayer().getMap().getMapObjectsInRange(c.getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER)); + for (MapleMapObject mobs : monsters) { + MapleMonster monster = (MapleMonster) mobs; + if (monster.getId() == mobHp) { + c.getPlayer().dropMessage(monster.getName() + ": " + monster.getHp()); + } + } + break; + case 0x1E: // Warn + victim = slea.readMapleAsciiString(); + String message = slea.readMapleAsciiString(); + target = c.getChannelServer().getPlayerStorage().getCharacterByName(victim); + if (target != null) { + target.getClient().announce(MaplePacketCreator.serverNotice(1, message)); + c.announce(MaplePacketCreator.getGMEffect(0x1E, (byte) 1)); + } else { + c.announce(MaplePacketCreator.getGMEffect(0x1E, (byte) 0)); + } + break; + case 0x24:// /Artifact Ranking + break; + case 0x77: //Testing purpose + if (slea.available() == 4) { + System.out.println(slea.readInt()); + } else if (slea.available() == 2) { + System.out.println(slea.readShort()); + } + break; + default: + System.out.println("New GM packet encountered (MODE : " + mode + ": " + slea.toString()); + break; + } + } +} diff --git a/src/net/server/channel/handlers/AdminLogHandler.java b/src/net/server/channel/handlers/AdminLogHandler.java new file mode 100644 index 0000000000..4ff043db00 --- /dev/null +++ b/src/net/server/channel/handlers/AdminLogHandler.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class AdminLogHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + //harhar + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/AllianceOperationHandler.java b/src/net/server/channel/handlers/AllianceOperationHandler.java new file mode 100644 index 0000000000..95a56d9571 --- /dev/null +++ b/src/net/server/channel/handlers/AllianceOperationHandler.java @@ -0,0 +1,182 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import net.SendOpcode; +import net.server.Server; +import net.server.guild.MapleAlliance; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.data.output.MaplePacketLittleEndianWriter; + +/** + * + * @author XoticStory + */ +public final class AllianceOperationHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleAlliance alliance = null; + if (c.getPlayer().getGuild() != null && c.getPlayer().getGuild().getAllianceId() > 0) { + alliance = Server.getInstance().getAlliance(c.getPlayer().getGuild().getAllianceId()); + } + if (alliance == null) { + c.getPlayer().dropMessage("You are not in an alliance."); + c.announce(MaplePacketCreator.enableActions()); + return; + } else if (c.getPlayer().getMGC().getAllianceRank() > 2 || !alliance.getGuilds().contains(c.getPlayer().getGuildId())) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + switch (slea.readByte()) { + case 0x01: + Server.getInstance().allianceMessage(alliance.getId(), sendShowInfo(c.getPlayer().getGuild().getAllianceId(), c.getPlayer().getId()), -1, -1); + break; + case 0x02: { // Leave Alliance + if (c.getPlayer().getGuild().getAllianceId() == 0 || c.getPlayer().getGuildId() < 1 || c.getPlayer().getGuildRank() != 1) { + return; + } + Server.getInstance().allianceMessage(alliance.getId(), sendChangeGuild(c.getPlayer().getGuildId(), c.getPlayer().getId(), c.getPlayer().getGuildId(), 2), -1, -1); + break; + } + case 0x03: // send alliance invite + String charName = slea.readMapleAsciiString(); + int channel; + channel = c.getWorldServer().find(charName); + if (channel == -1) { + c.getPlayer().dropMessage("The player is not online."); + } else { + MapleCharacter victim = Server.getInstance().getChannel(c.getWorld(), channel).getPlayerStorage().getCharacterByName(charName); + if (victim.getGuildId() == 0) { + c.getPlayer().dropMessage("The person you are trying to invite does not have a guild."); + } else if (victim.getGuildRank() != 1) { + c.getPlayer().dropMessage("The player is not the leader of his/her guild."); + } else { + Server.getInstance().allianceMessage(alliance.getId(), sendInvitation(c.getPlayer().getGuild().getAllianceId(), c.getPlayer().getId(), slea.readMapleAsciiString()), -1, -1); + } + } + break; + case 0x04: { + int guildid = slea.readInt(); +// slea.readMapleAsciiString();//guild name + if (c.getPlayer().getGuild().getAllianceId() != 0 || c.getPlayer().getGuildRank() != 1 || c.getPlayer().getGuildId() < 1) { + return; + } + Server.getInstance().allianceMessage(alliance.getId(), sendChangeGuild(guildid, c.getPlayer().getId(), c.getPlayer().getGuildId(), 0), -1, -1); + break; + } + case 0x06: { // Expel Guild + int guildid = slea.readInt(); + int allianceid = slea.readInt(); + if (c.getPlayer().getGuild().getAllianceId() == 0 || c.getPlayer().getGuild().getAllianceId() != allianceid) { + return; + } + Server.getInstance().allianceMessage(alliance.getId(), sendChangeGuild(allianceid, c.getPlayer().getId(), guildid, 1), -1, -1); + break; + } + case 0x07: { // Change Alliance Leader + if (c.getPlayer().getGuild().getAllianceId() == 0 || c.getPlayer().getGuildId() < 1) { + return; + } + Server.getInstance().allianceMessage(alliance.getId(), sendChangeLeader(c.getPlayer().getGuild().getAllianceId(), c.getPlayer().getId(), slea.readInt()), -1, -1); + break; + } + case 0x08: + String ranks[] = new String[5]; + for (int i = 0; i < 5; i++) { + ranks[i] = slea.readMapleAsciiString(); + } + Server.getInstance().setAllianceRanks(alliance.getId(), ranks); + Server.getInstance().allianceMessage(alliance.getId(), MaplePacketCreator.changeAllianceRankTitle(alliance.getId(), ranks), -1, -1); + break; + case 0x09: { + int int1 = slea.readInt(); + byte byte1 = slea.readByte(); + Server.getInstance().allianceMessage(alliance.getId(), sendChangeRank(c.getPlayer().getGuild().getAllianceId(), c.getPlayer().getId(), int1, byte1), -1, -1); + break; + } + case 0x0A: + String notice = slea.readMapleAsciiString(); + Server.getInstance().setAllianceNotice(alliance.getId(), notice); + Server.getInstance().allianceMessage(alliance.getId(), MaplePacketCreator.allianceNotice(alliance.getId(), notice), -1, -1); + break; + default: + c.getPlayer().dropMessage("Feature not available"); + } + alliance.saveToDB(); + } + + private static byte[] sendShowInfo(int allianceid, int playerid) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x02); + mplew.writeInt(allianceid); + mplew.writeInt(playerid); + return mplew.getPacket(); + } + + private static byte[] sendInvitation(int allianceid, int playerid, final String guildname) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x05); + mplew.writeInt(allianceid); + mplew.writeInt(playerid); + mplew.writeMapleAsciiString(guildname); + return mplew.getPacket(); + } + + private static byte[] sendChangeGuild(int allianceid, int playerid, int guildid, int option) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x07); + mplew.writeInt(allianceid); + mplew.writeInt(guildid); + mplew.writeInt(playerid); + mplew.write(option); + return mplew.getPacket(); + } + + private static byte[] sendChangeLeader(int allianceid, int playerid, int victim) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x08); + mplew.writeInt(allianceid); + mplew.writeInt(playerid); + mplew.writeInt(victim); + return mplew.getPacket(); + } + + private static byte[] sendChangeRank(int allianceid, int playerid, int int1, byte byte1) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x09); + mplew.writeInt(allianceid); + mplew.writeInt(playerid); + mplew.writeInt(int1); + mplew.writeInt(byte1); + return mplew.getPacket(); + } +} diff --git a/src/net/server/channel/handlers/AranComboHandler.java b/src/net/server/channel/handlers/AranComboHandler.java new file mode 100644 index 0000000000..c129be99ae --- /dev/null +++ b/src/net/server/channel/handlers/AranComboHandler.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.SkillFactory; +import constants.GameConstants; +import constants.skills.Aran; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +public class AranComboHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + final MapleCharacter player = c.getPlayer(); + int skillLevel = player.getSkillLevel(SkillFactory.getSkill(Aran.COMBO_ABILITY)); + if (GameConstants.isAran(player.getJob().getId()) && (skillLevel > 0 || player.getJob().getId() == 2000)) { + final long currentTime = System.currentTimeMillis(); + short combo = player.getCombo(); + if ((currentTime - player.getLastCombo()) > 3000 && combo > 0) { + combo = 0; + } + combo++; + switch (combo) { + case 10: + case 20: + case 30: + case 40: + case 50: + case 60: + case 70: + case 80: + case 90: + case 100: + if (player.getJob().getId() != 2000 && (combo / 10) > skillLevel) break; + SkillFactory.getSkill(Aran.COMBO_ABILITY).getEffect(combo / 10).applyComboBuff(player, combo); + break; + } + player.setCombo(combo); + player.setLastCombo(currentTime); + } + } +} diff --git a/src/net/server/channel/handlers/AutoAggroHandler.java b/src/net/server/channel/handlers/AutoAggroHandler.java new file mode 100644 index 0000000000..19d50c193e --- /dev/null +++ b/src/net/server/channel/handlers/AutoAggroHandler.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.life.MapleMonster; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class AutoAggroHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int oid = slea.readInt(); + MapleMonster monster = c.getPlayer().getMap().getMonsterByOid(oid); + + if(c.getPlayer().isHidden()) + return; // Don't auto aggro GM's in hide... + + if (monster != null && monster.getController() != null) { + if (!monster.isControllerHasAggro()) { + if (c.getPlayer().getMap().getCharacterById(monster.getController().getId()) == null) { + monster.switchController(c.getPlayer(), true); + } else { + monster.switchController(monster.getController(), true); + } + } else if (c.getPlayer().getMap().getCharacterById(monster.getController().getId()) == null) { + monster.switchController(c.getPlayer(), true); + } + } else if (monster != null && monster.getController() == null) { + monster.switchController(c.getPlayer(), true); + } + } +} diff --git a/src/net/server/channel/handlers/AutoAssignHandler.java b/src/net/server/channel/handlers/AutoAssignHandler.java new file mode 100644 index 0000000000..76943f2dc1 --- /dev/null +++ b/src/net/server/channel/handlers/AutoAssignHandler.java @@ -0,0 +1,363 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import constants.ServerConstants; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.MapleStat; +import client.autoban.AutobanFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +//import java.util.ArrayList; +import java.util.Collection; +//import java.util.List; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Generic + */ +public class AutoAssignHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + MapleJob stance; + + if(ServerConstants.USE_ANOTHER_AUTOASSIGN == true) { + int eqpStr = 0, eqpDex = 0, eqpLuk = 0; + int str = 0, dex = 0, luk = 0, int_ = 0; + + MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED); + Collection equippedC = iv.list(); + Equip nEquip; + + for (Item item : equippedC) { //selecting the biggest AP value of each stat from each equipped item. + nEquip = (Equip)item; + if(nEquip.getStr() > eqpStr) eqpStr = nEquip.getStr(); + str += nEquip.getStr(); + + if(nEquip.getDex() > eqpDex) eqpDex = nEquip.getDex(); + dex += nEquip.getDex(); + + if(nEquip.getLuk() > eqpLuk) eqpLuk = nEquip.getLuk(); + luk += nEquip.getLuk(); + + //if(nEquip.getInt() > eqpInt) eqpInt = nEquip.getInt(); //not needed... + int_ += nEquip.getInt(); + } + + //c.getPlayer().message("----------------------------------------SDL: " + eqpStr + eqpDex + eqpLuk + " BASE STATS --> STR: " + chr.getStr() + " DEX: " + chr.getDex() + " INT: " + chr.getInt() + " LUK: " + chr.getLuk()); + //c.getPlayer().message("SUM EQUIP STATS -> STR: " + str + " DEX: " + dex + " LUK: " + luk + " INT: " + int_); + + //---------- Ronan Lana's AUTOASSIGN ------------- + //this method excels for possibility to assign APs properly and not blocking the requirements when swapping one guaranteed equipment. + if (chr.getRemainingAp() < 1) { + return; + } + + stance = c.getPlayer().getJobStyle(); + int prStat = 0, scStat = 0, trStat = 0, temp, tempAp = chr.getRemainingAp(), CAP; + + MapleStat primary, secondary, tertiary = MapleStat.INT; + switch(stance) { + case MAGICIAN: + CAP = 165; + scStat = (chr.getLevel() + 3) - (chr.getLuk() + luk - eqpLuk); + if(scStat < 0) scStat = 0; + scStat = Math.min(scStat, tempAp); + + if(tempAp > scStat) tempAp -= scStat; + else tempAp = 0; + + prStat = tempAp; + int_ = prStat; + luk = scStat; + str = 0; dex = 0; + + if(luk + chr.getLuk() > CAP) { + temp = luk + chr.getLuk() - CAP; + luk -= temp; + int_ += temp; + } + + primary = MapleStat.INT; + secondary = MapleStat.LUK; + + break; + + case BOWMAN: + CAP = 125; + scStat = (chr.getLevel() + 5) - (chr.getStr() + str - eqpStr); + if(scStat < 0) scStat = 0; + scStat = Math.min(scStat, tempAp); + + if(tempAp > scStat) tempAp -= scStat; + else tempAp = 0; + + prStat = tempAp; + dex = prStat; + str = scStat; + int_ = 0; luk = 0; + + if(str + chr.getStr() > CAP) { + temp = str + chr.getStr() - CAP; + str -= temp; + dex += temp; + } + + primary = MapleStat.DEX; + secondary = MapleStat.STR; + + break; + + case GUNSLINGER: + case CROSSBOWMAN: + CAP = 120; + scStat = chr.getLevel() - (chr.getStr() + str - eqpStr); + if(scStat < 0) scStat = 0; + scStat = Math.min(scStat, tempAp); + + if(tempAp > scStat) tempAp -= scStat; + else tempAp = 0; + + prStat = tempAp; + dex = prStat; + str = scStat; + int_ = 0; luk = 0; + + if(str + chr.getStr() > CAP) { + temp = str + chr.getStr() - CAP; + str -= temp; + dex += temp; + } + + primary = MapleStat.DEX; + secondary = MapleStat.STR; + + break; + + case THIEF: + CAP = 160; + + scStat = 0; + if(chr.getDex() < 80) { + scStat = (2 * chr.getLevel()) - (chr.getDex() + dex - eqpDex); + if(scStat < 0) scStat = 0; + + scStat = Math.min(80 - chr.getDex(), scStat); + scStat = Math.min(tempAp, scStat); + tempAp -= scStat; + } + + temp = (chr.getLevel() + 40) - Math.max(80, scStat + chr.getDex() + dex - eqpDex); + if(temp < 0) temp = 0; + temp = Math.min(tempAp, temp); + scStat += temp; + tempAp -= temp; + + if(chr.getStr() >= Math.max(13, (int)(0.4 * chr.getLevel()))) { + if(chr.getStr() < 50) { + trStat = (chr.getLevel() - 10) - (chr.getStr() + str - eqpStr); + if(trStat < 0) trStat = 0; + + trStat = Math.min(50 - chr.getStr(), trStat); + trStat = Math.min(tempAp, trStat); + tempAp -= trStat; + tertiary = MapleStat.STR; + } + + temp = (20 + (chr.getLevel() / 2)) - Math.max(50, trStat + chr.getStr() + str - eqpStr); + if(temp < 0) temp = 0; + temp = Math.min(tempAp, temp); + trStat += temp; + tempAp -= temp; + } + + prStat = tempAp; + luk = prStat; + dex = scStat; + str = trStat; + int_ = 0; + + if(dex + chr.getDex() > CAP) { + temp = dex + chr.getDex() - CAP; + dex -= temp; + luk += temp; + } + if(str + chr.getStr() > CAP) { + temp = str + chr.getStr() - CAP; + str -= temp; + luk += temp; + } + + primary = MapleStat.LUK; + secondary = MapleStat.DEX; + + break; + + case BRAWLER: + CAP = 120; + + scStat = chr.getLevel() - (chr.getDex() + dex - eqpDex); + if(scStat < 0) scStat = 0; + scStat = Math.min(scStat, tempAp); + + if(tempAp > scStat) tempAp -= scStat; + else tempAp = 0; + + prStat = tempAp; + str = prStat; + dex = scStat; + int_ = 0; luk = 0; + + if(dex + chr.getDex() > CAP) { + temp = dex + chr.getDex() - CAP; + dex -= temp; + str += temp; + } + + primary = MapleStat.STR; + secondary = MapleStat.DEX; + + break; + + default: //warrior, beginner, ... + CAP = 80; + + scStat = ((2 * chr.getLevel()) / 3) - (chr.getDex() + dex - eqpDex); + if(scStat < 0) scStat = 0; + scStat = Math.min(scStat, tempAp); + + if(tempAp > scStat) tempAp -= scStat; + else tempAp = 0; + + prStat = tempAp; + str = prStat; + dex = scStat; + int_ = 0; luk = 0; + + if(dex + chr.getDex() > CAP) { + temp = dex + chr.getDex() - CAP; + dex -= temp; + str += temp; + } + + primary = MapleStat.STR; + secondary = MapleStat.DEX; + } + + //------------------------------------------------------------------------------------- + int total = 0; + int extras = 0; + + total += trStat; + extras += gainStatByType(chr, tertiary, trStat); + + total += scStat; + extras += gainStatByType(chr, secondary, scStat); + + total += prStat; + extras += gainStatByType(chr, primary, prStat); + + int remainingAp = (chr.getRemainingAp() - total) + extras; + chr.setRemainingAp(remainingAp); + chr.updateSingleStat(MapleStat.AVAILABLEAP, remainingAp); + c.announce(MaplePacketCreator.enableActions()); + //---------------------------------------------------------------------------------------- + + c.announce(MaplePacketCreator.serverNotice(1, "Better AP applications detected:\r\nSTR: +" + str + "\r\nDEX: +" + dex + "\r\nINT: +" + int_ + "\r\nLUK: +" + luk)); + } + else { + slea.skip(8); + if (chr.getRemainingAp() < 1) { + return; + } + int total = 0; + int extras = 0; + if(slea.available() < 16) { + AutobanFactory.PACKET_EDIT.alert(chr, "Didn't send full packet for Auto Assign."); + c.disconnect(false, false); + return; + } + for (int i = 0; i < 2; i++) { + int type = slea.readInt(); + int tempVal = slea.readInt(); + if (tempVal < 0 || tempVal > c.getPlayer().getRemainingAp()) { + return; + } + total += tempVal; + System.out.println(tempVal); + extras += gainStatByType(chr, MapleStat.getBy5ByteEncoding(type), tempVal); + } + int remainingAp = (chr.getRemainingAp() - total) + extras; + chr.setRemainingAp(remainingAp); + chr.updateSingleStat(MapleStat.AVAILABLEAP, remainingAp); + c.announce(MaplePacketCreator.enableActions()); + } + } + + private int gainStatByType(MapleCharacter chr, MapleStat type, int gain) { + int newVal = 0; + if (type.equals(MapleStat.STR)) { + newVal = chr.getStr() + gain; + if (newVal > ServerConstants.MAX_AP) { + chr.setStr(ServerConstants.MAX_AP); + } else { + chr.setStr(newVal); + } + } else if (type.equals(MapleStat.INT)) { + newVal = chr.getInt() + gain; + if (newVal > ServerConstants.MAX_AP) { + chr.setInt(ServerConstants.MAX_AP); + } else { + chr.setInt(newVal); + } + } else if (type.equals(MapleStat.LUK)) { + newVal = chr.getLuk() + gain; + if (newVal > ServerConstants.MAX_AP) { + chr.setLuk(ServerConstants.MAX_AP); + } else { + chr.setLuk(newVal); + } + } else if (type.equals(MapleStat.DEX)) { + newVal = chr.getDex() + gain; + if (newVal > ServerConstants.MAX_AP) { + chr.setDex(ServerConstants.MAX_AP); + } else { + chr.setDex(newVal); + } + } + if (newVal > ServerConstants.MAX_AP) { + chr.updateSingleStat(type, ServerConstants.MAX_AP); + return newVal - ServerConstants.MAX_AP; + } + chr.updateSingleStat(type, newVal); + return 0; + } +} diff --git a/src/net/server/channel/handlers/BBSOperationHandler.java b/src/net/server/channel/handlers/BBSOperationHandler.java new file mode 100644 index 0000000000..18616899f3 --- /dev/null +++ b/src/net/server/channel/handlers/BBSOperationHandler.java @@ -0,0 +1,320 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import net.AbstractMaplePacketHandler; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class BBSOperationHandler extends AbstractMaplePacketHandler { + + private String correctLength(String in, int maxSize) { + return in.length() > maxSize ? in.substring(0, maxSize) : in; + } + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (c.getPlayer().getGuildId() < 1) { + return; + } + byte mode = slea.readByte(); + int localthreadid = 0; + switch (mode) { + case 0: + boolean bEdit = slea.readByte() == 1; + if (bEdit) { + localthreadid = slea.readInt(); + } + boolean bNotice = slea.readByte() == 1; + String title = correctLength(slea.readMapleAsciiString(), 25); + String text = correctLength(slea.readMapleAsciiString(), 600); + int icon = slea.readInt(); + if (icon >= 0x64 && icon <= 0x6a) { + if (c.getPlayer().getItemQuantity(5290000 + icon - 0x64, false) > 0) { + return; + } + } else if (icon < 0 || icon > 3) { + return; + } + if (!bEdit) { + newBBSThread(c, title, text, icon, bNotice); + } else { + editBBSThread(c, title, text, icon, localthreadid); + } + break; + case 1: + localthreadid = slea.readInt(); + deleteBBSThread(c, localthreadid); + break; + case 2: + int start = slea.readInt(); + listBBSThreads(c, start * 10); + break; + case 3: // list thread + reply, followed by id (int) + localthreadid = slea.readInt(); + displayThread(c, localthreadid); + break; + case 4: // reply + localthreadid = slea.readInt(); + text = correctLength(slea.readMapleAsciiString(), 25); + newBBSReply(c, localthreadid, text); + break; + case 5: // delete reply + slea.readInt(); // we don't use this + int replyid = slea.readInt(); + deleteBBSReply(c, replyid); + break; + default: + //System.out.println("Unhandled BBS mode: " + slea.toString()); + } + } + + private static void listBBSThreads(MapleClient c, int start) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM bbs_threads WHERE guildid = ? ORDER BY localthreadid DESC")) { + ps.setInt(1, c.getPlayer().getGuildId()); + try (ResultSet rs = ps.executeQuery()) { + c.announce(MaplePacketCreator.BBSThreadList(rs, start)); + } + } + } catch (SQLException se) { + se.printStackTrace(); + } + } + + private static void newBBSReply(MapleClient c, int localthreadid, String text) { + if (c.getPlayer().getGuildId() <= 0) { + return; + } + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("SELECT threadid FROM bbs_threads WHERE guildid = ? AND localthreadid = ?"); + ps.setInt(1, c.getPlayer().getGuildId()); + ps.setInt(2, localthreadid); + ResultSet threadRS = ps.executeQuery(); + if (!threadRS.next()) { + threadRS.close(); + ps.close(); + return; + } + int threadid = threadRS.getInt("threadid"); + threadRS.close(); + ps.close(); + ps = con.prepareStatement("INSERT INTO bbs_replies " + "(`threadid`, `postercid`, `timestamp`, `content`) VALUES " + "(?, ?, ?, ?)"); + ps.setInt(1, threadid); + ps.setInt(2, c.getPlayer().getId()); + ps.setLong(3, System.currentTimeMillis()); + ps.setString(4, text); + ps.execute(); + ps.close(); + ps = con.prepareStatement("UPDATE bbs_threads SET replycount = replycount + 1 WHERE threadid = ?"); + ps.setInt(1, threadid); + ps.execute(); + ps.close(); + displayThread(c, localthreadid); + } catch (SQLException se) { + se.printStackTrace(); + } + } + + private static void editBBSThread(MapleClient client, String title, String text, int icon, int localthreadid) { + MapleCharacter c = client.getPlayer(); + if (c.getGuildId() < 1) { + return; + } + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE bbs_threads SET `name` = ?, `timestamp` = ?, " + "`icon` = ?, " + "`startpost` = ? WHERE guildid = ? AND localthreadid = ? AND (postercid = ? OR ?)")) { + ps.setString(1, title); + ps.setLong(2, System.currentTimeMillis()); + ps.setInt(3, icon); + ps.setString(4, text); + ps.setInt(5, c.getGuildId()); + ps.setInt(6, localthreadid); + ps.setInt(7, c.getId()); + ps.setBoolean(8, c.getGuildRank() < 3); + ps.execute(); + } + displayThread(client, localthreadid); + } catch (SQLException se) { + se.printStackTrace(); + } + } + + private static void newBBSThread(MapleClient client, String title, String text, int icon, boolean bNotice) { + MapleCharacter c = client.getPlayer(); + if (c.getGuildId() <= 0) { + return; + } + int nextId = 0; + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + if (!bNotice) { + ps = con.prepareStatement("SELECT MAX(localthreadid) AS lastLocalId FROM bbs_threads WHERE guildid = ?"); + ps.setInt(1, c.getGuildId()); + try (ResultSet rs = ps.executeQuery()) { + rs.next(); + nextId = rs.getInt("lastLocalId") + 1; + } + ps.close(); + } + ps = con.prepareStatement("INSERT INTO bbs_threads " + "(`postercid`, `name`, `timestamp`, `icon`, `startpost`, " + "`guildid`, `localthreadid`) " + "VALUES(?, ?, ?, ?, ?, ?, ?)"); + ps.setInt(1, c.getId()); + ps.setString(2, title); + ps.setLong(3, System.currentTimeMillis()); + ps.setInt(4, icon); + ps.setString(5, text); + ps.setInt(6, c.getGuildId()); + ps.setInt(7, nextId); + ps.execute(); + ps.close(); + displayThread(client, nextId); + } catch (SQLException se) { + se.printStackTrace(); + } + + } + + public static void deleteBBSThread(MapleClient client, int localthreadid) { + MapleCharacter mc = client.getPlayer(); + if (mc.getGuildId() <= 0) { + return; + } + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("SELECT threadid, postercid FROM bbs_threads WHERE guildid = ? AND localthreadid = ?"); + ps.setInt(1, mc.getGuildId()); + ps.setInt(2, localthreadid); + ResultSet threadRS = ps.executeQuery(); + if (!threadRS.next()) { + threadRS.close(); + ps.close(); + return; + } + if (mc.getId() != threadRS.getInt("postercid") && mc.getGuildRank() > 2) { + threadRS.close(); + ps.close(); + return; + } + int threadid = threadRS.getInt("threadid"); + ps.close(); + ps = con.prepareStatement("DELETE FROM bbs_replies WHERE threadid = ?"); + ps.setInt(1, threadid); + ps.execute(); + ps.close(); + ps = con.prepareStatement("DELETE FROM bbs_threads WHERE threadid = ?"); + ps.setInt(1, threadid); + ps.execute(); + threadRS.close(); + ps.close(); + } catch (SQLException se) { + se.printStackTrace(); + } + } + + public static void deleteBBSReply(MapleClient client, int replyid) { + MapleCharacter mc = client.getPlayer(); + if (mc.getGuildId() <= 0) { + return; + } + int threadid; + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("SELECT postercid, threadid FROM bbs_replies WHERE replyid = ?"); + ps.setInt(1, replyid); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + rs.close(); + ps.close(); + return; + } + if (mc.getId() != rs.getInt("postercid") && mc.getGuildRank() > 2) { + rs.close(); + ps.close(); + return; + } + threadid = rs.getInt("threadid"); + rs.close(); + ps.close(); + ps = con.prepareStatement("DELETE FROM bbs_replies WHERE replyid = ?"); + ps.setInt(1, replyid); + ps.execute(); + ps.close(); + ps = con.prepareStatement("UPDATE bbs_threads SET replycount = replycount - 1 WHERE threadid = ?"); + ps.setInt(1, threadid); + ps.execute(); + ps.close(); + displayThread(client, threadid, false); + } catch (SQLException se) { + se.printStackTrace(); + } + } + + public static void displayThread(MapleClient client, int threadid) { + displayThread(client, threadid, true); + } + + public static void displayThread(MapleClient client, int threadid, boolean bIsThreadIdLocal) { + MapleCharacter mc = client.getPlayer(); + if (mc.getGuildId() <= 0) { + return; + } + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps2; + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM bbs_threads WHERE guildid = ? AND " + (bIsThreadIdLocal ? "local" : "") + "threadid = ?")) { + ps.setInt(1, mc.getGuildId()); + ps.setInt(2, threadid); + ResultSet threadRS = ps.executeQuery(); + if (!threadRS.next()) { + threadRS.close(); + ps.close(); + return; + } + ResultSet repliesRS = null; + ps2 = null; + if (threadRS.getInt("replycount") >= 0) { + ps2 = con.prepareStatement("SELECT * FROM bbs_replies WHERE threadid = ?"); + ps2.setInt(1, !bIsThreadIdLocal ? threadid : threadRS.getInt("threadid")); + repliesRS = ps2.executeQuery(); + } + client.announce(MaplePacketCreator.showThread(bIsThreadIdLocal ? threadid : threadRS.getInt("localthreadid"), threadRS, repliesRS)); + repliesRS.close(); + } + if (ps2 != null) { + ps2.close(); + } + } catch (SQLException se) { + se.printStackTrace(); + } catch (RuntimeException re) {//btw we get this everytime for some reason, but replies work! + re.printStackTrace(); + System.out.println("The number of reply rows does not match the replycount in thread."); + } + } +} diff --git a/src/net/server/channel/handlers/BeholderHandler.java b/src/net/server/channel/handlers/BeholderHandler.java new file mode 100644 index 0000000000..2ebec954a2 --- /dev/null +++ b/src/net/server/channel/handlers/BeholderHandler.java @@ -0,0 +1,59 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import constants.skills.DarkKnight; +import java.util.Collection; +import net.AbstractMaplePacketHandler; +import server.maps.MapleSummon; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author BubblesDev + */ +public final class BeholderHandler extends AbstractMaplePacketHandler {//Summon Skills noobs + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + //System.out.println(slea.toString()); + Collection summons = c.getPlayer().getSummons().values(); + int oid = slea.readInt(); + MapleSummon summon = null; + for (MapleSummon sum : summons) { + if (sum.getObjectId() == oid) { + summon = sum; + } + } + if (summon != null) { + int skillId = slea.readInt(); + if (skillId == DarkKnight.AURA_OF_BEHOLDER) { + slea.readShort(); //Not sure. + } else if (skillId == DarkKnight.HEX_OF_BEHOLDER) { + slea.readByte(); //Not sure. + } //show to others here + } else { + c.getPlayer().getSummons().clear(); + } + } +} diff --git a/src/net/server/channel/handlers/BuddylistModifyHandler.java b/src/net/server/channel/handlers/BuddylistModifyHandler.java new file mode 100644 index 0000000000..6b1025c771 --- /dev/null +++ b/src/net/server/channel/handlers/BuddylistModifyHandler.java @@ -0,0 +1,208 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.BuddyList; +import client.BuddyList.BuddyAddResult; +import client.BuddyList.BuddyOperation; +import static client.BuddyList.BuddyOperation.ADDED; +import client.BuddylistEntry; +import client.CharacterNameAndId; +import client.MapleCharacter; +import client.MapleClient; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import net.AbstractMaplePacketHandler; +import net.server.world.World; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public class BuddylistModifyHandler extends AbstractMaplePacketHandler { + private static class CharacterIdNameBuddyCapacity extends CharacterNameAndId { + private int buddyCapacity; + + public CharacterIdNameBuddyCapacity(int id, String name, int buddyCapacity) { + super(id, name); + this.buddyCapacity = buddyCapacity; + } + + public int getBuddyCapacity() { + return buddyCapacity; + } + } + + private void nextPendingRequest(MapleClient c) { + CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest(); + if (pendingBuddyRequest != null) { + c.announce(MaplePacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); + } + } + + private CharacterIdNameBuddyCapacity getCharacterIdAndNameFromDatabase(String name) throws SQLException { + Connection con = DatabaseConnection.getConnection(); + CharacterIdNameBuddyCapacity ret; + try (PreparedStatement ps = con.prepareStatement("SELECT id, name, buddyCapacity FROM characters WHERE name LIKE ?")) { + ps.setString(1, name); + try (ResultSet rs = ps.executeQuery()) { + ret = null; + if (rs.next()) { + ret = new CharacterIdNameBuddyCapacity(rs.getInt("id"), rs.getString("name"), rs.getInt("buddyCapacity")); + } + } + } + return ret; + } + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int mode = slea.readByte(); + MapleCharacter player = c.getPlayer(); + BuddyList buddylist = player.getBuddylist(); + if (mode == 1) { // add + String addName = slea.readMapleAsciiString(); + String group = slea.readMapleAsciiString(); + if (group.length() > 16 || addName.length() < 4 || addName.length() > 13) { + return; //hax. + } + BuddylistEntry ble = buddylist.get(addName); + if (ble != null && !ble.isVisible() && group.equals(ble.getGroup())) { + c.announce(MaplePacketCreator.serverNotice(1, "You already have \"" + ble.getName() + "\" on your Buddylist")); + } else if (buddylist.isFull() && ble == null) { + c.announce(MaplePacketCreator.serverNotice(1, "Your buddylist is already full")); + } else if (ble == null) { + try { + World world = c.getWorldServer(); + CharacterIdNameBuddyCapacity charWithId; + int channel; + MapleCharacter otherChar = c.getChannelServer().getPlayerStorage().getCharacterByName(addName); + if (otherChar != null) { + channel = c.getChannel(); + charWithId = new CharacterIdNameBuddyCapacity(otherChar.getId(), otherChar.getName(), otherChar.getBuddylist().getCapacity()); + } else { + channel = world.find(addName); + charWithId = getCharacterIdAndNameFromDatabase(addName); + } + if (charWithId != null) { + BuddyAddResult buddyAddResult = null; + if (channel != -1) { + buddyAddResult = world.requestBuddyAdd(addName, c.getChannel(), player.getId(), player.getName()); + } else { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) as buddyCount FROM buddies WHERE characterid = ? AND pending = 0"); + ps.setInt(1, charWithId.getId()); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + throw new RuntimeException("Result set expected"); + } else if (rs.getInt("buddyCount") >= charWithId.getBuddyCapacity()) { + buddyAddResult = BuddyAddResult.BUDDYLIST_FULL; + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT pending FROM buddies WHERE characterid = ? AND buddyid = ?"); + ps.setInt(1, charWithId.getId()); + ps.setInt(2, player.getId()); + rs = ps.executeQuery(); + if (rs.next()) { + buddyAddResult = BuddyAddResult.ALREADY_ON_LIST; + } + rs.close(); + ps.close(); + } + if (buddyAddResult == BuddyAddResult.BUDDYLIST_FULL) { + c.announce(MaplePacketCreator.serverNotice(1, "\"" + addName + "\"'s Buddylist is full")); + } else { + int displayChannel; + displayChannel = -1; + int otherCid = charWithId.getId(); + if (buddyAddResult == BuddyAddResult.ALREADY_ON_LIST && channel != -1) { + displayChannel = channel; + notifyRemoteChannel(c, channel, otherCid, ADDED); + } else if (buddyAddResult != BuddyAddResult.ALREADY_ON_LIST && channel == -1) { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("INSERT INTO buddies (characterid, `buddyid`, `pending`) VALUES (?, ?, 1)")) { + ps.setInt(1, charWithId.getId()); + ps.setInt(2, player.getId()); + ps.executeUpdate(); + } + } + buddylist.put(new BuddylistEntry(charWithId.getName(), group, otherCid, displayChannel, true)); + c.announce(MaplePacketCreator.updateBuddylist(buddylist.getBuddies())); + } + } else { + c.announce(MaplePacketCreator.serverNotice(1, "A character called \"" + addName + "\" does not exist")); + } + } catch (SQLException e) { + } + } else { + ble.changeGroup(group); + c.announce(MaplePacketCreator.updateBuddylist(buddylist.getBuddies())); + } + } else if (mode == 2) { // accept buddy + int otherCid = slea.readInt(); + if (!buddylist.isFull()) { + try { + int channel = c.getWorldServer().find(otherCid);//worldInterface.find(otherCid); + String otherName = null; + MapleCharacter otherChar = c.getChannelServer().getPlayerStorage().getCharacterById(otherCid); + if (otherChar == null) { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("SELECT name FROM characters WHERE id = ?")) { + ps.setInt(1, otherCid); + try (ResultSet rs = ps.executeQuery()) { + if (rs.next()) { + otherName = rs.getString("name"); + } + } + } + } else { + otherName = otherChar.getName(); + } + if (otherName != null) { + buddylist.put(new BuddylistEntry(otherName, "Default Group", otherCid, channel, true)); + c.announce(MaplePacketCreator.updateBuddylist(buddylist.getBuddies())); + notifyRemoteChannel(c, channel, otherCid, ADDED); + } + } catch (SQLException e) { + } + } + nextPendingRequest(c); + } else if (mode == 3) { // delete + int otherCid = slea.readInt(); + if (buddylist.containsVisible(otherCid)) { + notifyRemoteChannel(c, c.getWorldServer().find(otherCid), otherCid, BuddyOperation.DELETED); + } + buddylist.remove(otherCid); + c.announce(MaplePacketCreator.updateBuddylist(player.getBuddylist().getBuddies())); + nextPendingRequest(c); + } + } + + private void notifyRemoteChannel(MapleClient c, int remoteChannel, int otherCid, BuddyOperation operation) { + MapleCharacter player = c.getPlayer(); + if (remoteChannel != -1) { + c.getWorldServer().buddyChanged(otherCid, player.getId(), player.getName(), c.getChannel(), operation); + } + } +} diff --git a/src/net/server/channel/handlers/CancelBuffHandler.java b/src/net/server/channel/handlers/CancelBuffHandler.java new file mode 100644 index 0000000000..12f071eee4 --- /dev/null +++ b/src/net/server/channel/handlers/CancelBuffHandler.java @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.SkillFactory; +import constants.skills.Bishop; +import constants.skills.Bowmaster; +import constants.skills.Corsair; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.ILArchMage; +import constants.skills.Marksman; +import constants.skills.WindArcher; +import net.AbstractMaplePacketHandler; +import net.MaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CancelBuffHandler extends AbstractMaplePacketHandler implements MaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int sourceid = slea.readInt(); + switch (sourceid) { + case FPArchMage.BIG_BANG: + case ILArchMage.BIG_BANG: + case Bishop.BIG_BANG: + case Bowmaster.HURRICANE: + case Marksman.PIERCING_ARROW: + case Corsair.RAPID_FIRE: + case WindArcher.HURRICANE: + case Evan.FIRE_BREATH: + case Evan.ICE_BREATH: + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.skillCancel(c.getPlayer(), sourceid), false); + break; + default: + c.getPlayer().cancelEffect(SkillFactory.getSkill(sourceid).getEffect(1), false, -1); + break; + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/CancelChairHandler.java b/src/net/server/channel/handlers/CancelChairHandler.java new file mode 100644 index 0000000000..e11256121d --- /dev/null +++ b/src/net/server/channel/handlers/CancelChairHandler.java @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CancelChairHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int id = slea.readShort(); + if (id == -1) { // Cancel Chair + c.getPlayer().setChair(0); + c.announce(MaplePacketCreator.cancelChair(-1)); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showChair(c.getPlayer().getId(), 0), false); + } else { // Use In-Map Chair + c.getPlayer().setChair(id); + c.announce(MaplePacketCreator.cancelChair(id)); + } + } +} diff --git a/src/net/server/channel/handlers/CancelDebuffHandler.java b/src/net/server/channel/handlers/CancelDebuffHandler.java new file mode 100644 index 0000000000..9611245c84 --- /dev/null +++ b/src/net/server/channel/handlers/CancelDebuffHandler.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CancelDebuffHandler extends AbstractMaplePacketHandler {//TIP: BAD STUFF LOL! + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + /*List diseases = c.getPlayer().getDiseases(); + List diseases_ = new ArrayList(); + for (MapleDisease disease : diseases) { + List disease_ = new ArrayList(); + disease_.add(disease); + diseases_.add(disease); + c.announce(MaplePacketCreator.cancelDebuff(disease_)); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.cancelForeignDebuff(c.getPlayer().getId(), disease_), false); + } + for (MapleDisease disease : diseases_) { + c.getPlayer().removeDisease(disease); + }*/ + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/CancelItemEffectHandler.java b/src/net/server/channel/handlers/CancelItemEffectHandler.java new file mode 100644 index 0000000000..65fcfeb7aa --- /dev/null +++ b/src/net/server/channel/handlers/CancelItemEffectHandler.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.MapleItemInformationProvider; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CancelItemEffectHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int itemId = -slea.readInt(); + if (MapleItemInformationProvider.getInstance().noCancelMouse(itemId)) { + return; + } + c.getPlayer().cancelEffect(itemId); + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/CashOperationHandler.java b/src/net/server/channel/handlers/CashOperationHandler.java new file mode 100644 index 0000000000..dac23a5689 --- /dev/null +++ b/src/net/server/channel/handlers/CashOperationHandler.java @@ -0,0 +1,347 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.MapleRing; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import java.sql.SQLException; +import java.util.Calendar; +import java.util.List; +import java.util.Map; +import net.AbstractMaplePacketHandler; +import server.CashShop; +import server.CashShop.CashItem; +import server.CashShop.CashItemFactory; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CashOperationHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + CashShop cs = chr.getCashShop(); + if (!cs.isOpened()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + final int action = slea.readByte(); + if (action == 0x03 || action == 0x1E) { + slea.readByte(); + final int useNX = slea.readInt(); + final int snCS = slea.readInt(); + CashItem cItem = CashItemFactory.getItem(snCS); + if (cItem == null || !cItem.isOnSale() || cs.getCash(useNX) < cItem.getPrice()) { + return; + } + if (action == 0x03) { // Item + Item item = cItem.toItem(); + cs.addToInventory(item); + c.announce(MaplePacketCreator.showBoughtCashItem(item, c.getAccID())); + } else { // Package + List cashPackage = CashItemFactory.getPackage(cItem.getItemId()); + for (Item item : cashPackage) { + cs.addToInventory(item); + } + c.announce(MaplePacketCreator.showBoughtCashPackage(cashPackage, c.getAccID())); + } + cs.gainCash(useNX, -cItem.getPrice()); + c.announce(MaplePacketCreator.showCash(chr)); + } else if (action == 0x04) {//TODO check for gender + int birthday = slea.readInt(); + CashItem cItem = CashItemFactory.getItem(slea.readInt()); + Map recipient = MapleCharacter.getCharacterFromDatabase(slea.readMapleAsciiString()); + String message = slea.readMapleAsciiString(); + if (!canBuy(cItem, cs.getCash(4)) || message.length() < 1 || message.length() > 73) { + return; + } + if (!checkBirthday(c, birthday)) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xC4)); + return; + } else if (recipient == null) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xA9)); + return; + } else if (recipient.get("accountid").equals(String.valueOf(c.getAccID()))) { + c.announce(MaplePacketCreator.showCashShopMessage((byte) 0xA8)); + return; + } + cs.gift(Integer.parseInt(recipient.get("id")), chr.getName(), message, cItem.getSN()); + c.announce(MaplePacketCreator.showGiftSucceed(recipient.get("name"), cItem)); + cs.gainCash(4, -cItem.getPrice()); + c.announce(MaplePacketCreator.showCash(chr)); + try { + chr.sendNote(recipient.get("name"), chr.getName() + " has sent you a gift! Go check out the Cash Shop.", (byte) 0); //fame or not + } catch (SQLException ex) { + } + MapleCharacter receiver = c.getChannelServer().getPlayerStorage().getCharacterByName(recipient.get("name")); + if (receiver != null) receiver.showNote(); + } else if (action == 0x05) { // Modify wish list + cs.clearWishList(); + for (byte i = 0; i < 10; i++) { + int sn = slea.readInt(); + CashItem cItem = CashItemFactory.getItem(sn); + if (cItem != null && cItem.isOnSale() && sn != 0) { + cs.addToWishList(sn); + } + } + c.announce(MaplePacketCreator.showWishList(chr, true)); + } else if (action == 0x06) { // Increase Inventory Slots + slea.skip(1); + int cash = slea.readInt(); + byte mode = slea.readByte(); + if (mode == 0) { + byte type = slea.readByte(); + if (cs.getCash(cash) < 4000) { + return; + } + if (chr.gainSlots(type, 4, false)) { + c.announce(MaplePacketCreator.showBoughtInventorySlots(type, chr.getSlots(type))); + cs.gainCash(cash, -4000); + c.announce(MaplePacketCreator.showCash(chr)); + } + } else { + CashItem cItem = CashItemFactory.getItem(slea.readInt()); + int type = (cItem.getItemId() - 9110000) / 1000; + if (!canBuy(cItem, cs.getCash(cash))) { + return; + } + if (chr.gainSlots(type, 8, false)) { + c.announce(MaplePacketCreator.showBoughtInventorySlots(type, chr.getSlots(type))); + cs.gainCash(cash, -cItem.getPrice()); + c.announce(MaplePacketCreator.showCash(chr)); + } + } + } else if (action == 0x07) { // Increase Storage Slots + slea.skip(1); + int cash = slea.readInt(); + byte mode = slea.readByte(); + if (mode == 0) { + if (cs.getCash(cash) < 4000) { + return; + } + if (chr.getStorage().gainSlots(4)) { + c.announce(MaplePacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots())); + cs.gainCash(cash, -4000); + c.announce(MaplePacketCreator.showCash(chr)); + } + } else { + CashItem cItem = CashItemFactory.getItem(slea.readInt()); + + if (!canBuy(cItem, cs.getCash(cash))) { + return; + } + if (chr.getStorage().gainSlots(8)) { + c.announce(MaplePacketCreator.showBoughtStorageSlots(chr.getStorage().getSlots())); + cs.gainCash(cash, -cItem.getPrice()); + c.announce(MaplePacketCreator.showCash(chr)); + } + } + } else if (action == 0x08) { // Increase Character Slots + slea.skip(1); + int cash = slea.readInt(); + CashItem cItem = CashItemFactory.getItem(slea.readInt()); + + if (!canBuy(cItem, cs.getCash(cash))) + return; + + if (c.gainCharacterSlot()) { + c.announce(MaplePacketCreator.showBoughtCharacterSlot(c.getCharacterSlots())); + cs.gainCash(cash, -cItem.getPrice()); + c.announce(MaplePacketCreator.showCash(chr)); + } + } else if (action == 0x0D) { // Take from Cash Inventory + Item item = cs.findByCashId(slea.readInt()); + if (item == null) { + return; + } + if (chr.getInventory(MapleItemInformationProvider.getInstance().getInventoryType(item.getItemId())).addItem(item) != -1) { + cs.removeFromInventory(item); + c.announce(MaplePacketCreator.takeFromCashInventory(item)); + if(item instanceof Equip) { + Equip equip = (Equip) item; + if(equip.getRingId() >= 0) { + MapleRing ring = MapleRing.loadFromDb(equip.getRingId()); + if (ring.getItemId() > 1112012) { + chr.addFriendshipRing(ring); + } else { + chr.addCrushRing(ring); + } + } + } + } + } else if (action == 0x0E) { // Put into Cash Inventory + int cashId = slea.readInt(); + slea.skip(4); + MapleInventory mi = chr.getInventory(MapleInventoryType.getByType(slea.readByte())); + Item item = mi.findByCashId(cashId); + if (item == null) { + return; + } + cs.addToInventory(item); + mi.removeSlot(item.getPosition()); + c.announce(MaplePacketCreator.putIntoCashInventory(item, c.getAccID())); + } else if (action == 0x1D) { //crush ring (action 28) + slea.readInt();//Birthday + // if (checkBirthday(c, birthday)) { //We're using a default birthday, so why restrict rings to only people who know of it? + int toCharge = slea.readInt(); + int SN = slea.readInt(); + String recipient = slea.readMapleAsciiString(); + String text = slea.readMapleAsciiString(); + CashItem ring = CashItemFactory.getItem(SN); + MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(recipient); + if (partner == null) { + chr.getClient().announce(MaplePacketCreator.serverNotice(1, "The partner you specified cannot be found.\r\nPlease make sure your partner is online and in the same channel.")); + } else { + + /* if (partner.getGender() == chr.getGender()) { + chr.dropMessage("You and your partner are the same gender, please buy a friendship ring."); + return; + }*/ //Gotta let them faggots marry too, hence why this is commented out <3 + + if(ring.toItem() instanceof Equip) { + Equip item = (Equip) ring.toItem(); + int ringid = MapleRing.createRing(ring.getItemId(), chr, partner); + item.setRingId(ringid); + cs.addToInventory(item); + c.announce(MaplePacketCreator.showBoughtCashItem(item, c.getAccID())); + cs.gift(partner.getId(), chr.getName(), text, item.getSN(), (ringid + 1)); + cs.gainCash(toCharge, -ring.getPrice()); + chr.addCrushRing(MapleRing.loadFromDb(ringid)); + try { + chr.sendNote(partner.getName(), text, (byte) 1); + } catch (SQLException ex) { + } + partner.showNote(); + } + } + /* } else { + chr.dropMessage("The birthday you entered was incorrect."); + }*/ + + c.announce(MaplePacketCreator.showCash(c.getPlayer())); + } else if (action == 0x20) { // everything is 1 meso... + int itemId = CashItemFactory.getItem(slea.readInt()).getItemId(); + if (chr.getMeso() > 0) { + if (itemId == 4031180 || itemId == 4031192 || itemId == 4031191) { + chr.gainMeso(-1, false); + MapleInventoryManipulator.addById(c, itemId, (short) 1); + c.announce(MaplePacketCreator.showBoughtQuestItem(itemId)); + } + } + c.announce(MaplePacketCreator.showCash(c.getPlayer())); + } else if (action == 0x23) { //Friendship :3 + slea.readInt(); //Birthday + // if (checkBirthday(c, birthday)) { + int payment = slea.readByte(); + slea.skip(3); //0s + int snID = slea.readInt(); + CashItem ring = CashItemFactory.getItem(snID); + String sentTo = slea.readMapleAsciiString(); + int available = slea.readShort() - 1; + String text = slea.readAsciiString(available); + slea.readByte(); + MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(sentTo); + if (partner == null) { + chr.dropMessage("The partner you specified cannot be found.\r\nPlease make sure your partner is online and in the same channel."); + } else { + // Need to check to make sure its actually an equip and the right SN... + if(ring.toItem() instanceof Equip) { + Equip item = (Equip) ring.toItem(); + int ringid = MapleRing.createRing(ring.getItemId(), chr, partner); + item.setRingId(ringid); + cs.addToInventory(item); + c.announce(MaplePacketCreator.showBoughtCashItem(item, c.getAccID())); + cs.gift(partner.getId(), chr.getName(), text, item.getSN(), (ringid + 1)); + cs.gainCash(payment, -ring.getPrice()); + chr.addFriendshipRing(MapleRing.loadFromDb(ringid)); + try { + chr.sendNote(partner.getName(), text, (byte) 1); + } catch (SQLException ex) { + } + partner.showNote(); + } + } + /* } else { + chr.dropMessage("The birthday you entered was incorrect."); + } */ + + c.announce(MaplePacketCreator.showCash(c.getPlayer())); + } else { + System.out.println(slea); + } + } + + private static boolean checkBirthday(MapleClient c, int idate) { + int year = idate / 10000; + int month = (idate - year * 10000) / 100; + int day = idate - year * 10000 - month * 100; + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(0); + cal.set(year, month - 1, day); + return c.checkBirthDate(cal); + } + + public static boolean canBuy(CashItem item, int cash) { + return item != null && item.isOnSale() && item.getPrice() <= cash && !blocked(item.getItemId()); + } + + public static boolean blocked(int id){ + switch(id){ //All 2x exp cards + case 5211000: + case 5211004: + case 5211005: + case 5211006: + case 5211007: + case 5211008: + case 5211009: + case 5211010: + case 5211011: + case 5211012: + case 5211013: + case 5211014: + case 5211015: + case 5211016: + case 5211017: + case 5211018: + case 5211037: + case 5211038: + case 5211039: + case 5211040: + case 5211041: + case 5211042: + case 5211043: + case 5211044: + case 5211045: + case 5211049: + return true; + default: + return false; + } + } +} diff --git a/src/net/server/channel/handlers/ChangeChannelHandler.java b/src/net/server/channel/handlers/ChangeChannelHandler.java new file mode 100644 index 0000000000..feece8abda --- /dev/null +++ b/src/net/server/channel/handlers/ChangeChannelHandler.java @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; +import client.autoban.AutobanFactory; + +/** + * + * @author Matze + */ +public final class ChangeChannelHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int channel = slea.readByte() + 1; + c.getPlayer().getAutobanManager().setTimestamp(6, slea.readInt(), 2); + if(c.getChannel() == channel) { + AutobanFactory.GENERAL.alert(c.getPlayer(), "CCing to same channel."); + c.disconnect(false, false); + return; + } else if (c.getPlayer().getCashShop().isOpened() || c.getPlayer().getMiniGame() != null || c.getPlayer().getPlayerShop() != null) { + return; + } + c.changeChannel(channel); + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/ChangeMapHandler.java b/src/net/server/channel/handlers/ChangeMapHandler.java new file mode 100644 index 0000000000..80079620b9 --- /dev/null +++ b/src/net/server/channel/handlers/ChangeMapHandler.java @@ -0,0 +1,158 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MaplePortal; +import server.MapleTrade; +import server.maps.MapleMap; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.MapleInventoryType; + +public final class ChangeMapHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + + if (chr.isBanned()) { + return; + } + if (chr.getTrade() != null) { + MapleTrade.cancelTrade(chr); + } + if (slea.available() == 0) { //Cash Shop :) + if(!chr.getCashShop().isOpened()) { + c.disconnect(false, false); + return; + } + String[] socket = c.getChannelServer().getIP().split(":"); + chr.getCashShop().open(false); + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + try { + c.announce(MaplePacketCreator.getChannelChange(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]))); + } catch (UnknownHostException ex) { + ex.printStackTrace(); + } + } else { + if(chr.getCashShop().isOpened()) { + c.disconnect(false, false); + return; + } + try { + slea.readByte(); // 1 = from dying 0 = regular portals + int targetid = slea.readInt(); + String startwp = slea.readMapleAsciiString(); + MaplePortal portal = chr.getMap().getPortal(startwp); + slea.readByte(); + boolean wheel = slea.readShort() > 0; + if (targetid != -1 && !chr.isAlive()) { + boolean executeStandardPath = true; + if (chr.getEventInstance() != null) { + executeStandardPath = chr.getEventInstance().revivePlayer(chr); + } + if (executeStandardPath) { + MapleMap to = chr.getMap(); + if (wheel && chr.getItemQuantity(5510000, false) > 0) { + MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, 5510000, 1, true, false); + chr.announce(MaplePacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false))); + } else { + chr.cancelAllBuffs(false); + to = chr.getMap().getReturnMap(); + chr.setStance(0); + } + chr.setHp(50); + chr.changeMap(to, to.getPortal(0)); + } + } else if (targetid != -1 && chr.isGM()) { + MapleMap to = c.getChannelServer().getMapFactory().getMap(targetid); + chr.changeMap(to, to.getPortal(0)); + } else if (targetid != -1 && !chr.isGM()) {//Thanks celino for saving me some time (: + final int divi = chr.getMapId() / 100; + boolean warp = false; + if (divi == 0) { + if (targetid == 10000) { + warp = true; + } + } else if (divi == 20100) { + if (targetid == 104000000) { + c.announce(MaplePacketCreator.lockUI(false)); + c.announce(MaplePacketCreator.disableUI(false)); + warp = true; + } + } else if (divi == 9130401) { // Only allow warp if player is already in Intro map, or else = hack + if (targetid == 130000000 || targetid / 100 == 9130401) { // Cygnus introduction + warp = true; + } + } else if (divi == 9140900) { // Aran Introduction + if (targetid == 914090011 || targetid == 914090012 || targetid == 914090013 || targetid == 140090000) { + warp = true; + } + } else if (divi / 10 == 1020) { // Adventurer movie clip Intro + if (targetid == 1020000) { + warp = true; + } + } else if(divi / 10 >= 980040 && divi / 10 <= 980045) { + if(targetid == 980040000) { + warp = true; + } + } + if (warp) { + final MapleMap to = c.getChannelServer().getMapFactory().getMap(targetid); + chr.changeMap(to, to.getPortal(0)); + } + } + if (portal != null && !portal.getPortalStatus()) { + c.announce(MaplePacketCreator.blockedMessage(1)); + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (chr.getMapId() == 109040004) { + chr.getFitness().resetTimes(); + } + if (chr.getMapId() == 109030003 || chr.getMapId() == 109030103) { + chr.getOla().resetTimes(); + } + if (portal != null) { + if(portal.getPosition().distanceSq(chr.getPosition()) > 400000) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + + portal.enterPortal(c); + } else { + c.announce(MaplePacketCreator.enableActions()); + } + //chr.setRates(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/net/server/channel/handlers/ChangeMapSpecialHandler.java b/src/net/server/channel/handlers/ChangeMapSpecialHandler.java new file mode 100644 index 0000000000..15f1716255 --- /dev/null +++ b/src/net/server/channel/handlers/ChangeMapSpecialHandler.java @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.MaplePortal; +import server.MapleTrade; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class ChangeMapSpecialHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readByte(); + String startwp = slea.readMapleAsciiString(); + slea.readShort(); + MaplePortal portal = c.getPlayer().getMap().getPortal(startwp); + if (portal == null || c.getPlayer().portalDelay() > System.currentTimeMillis() || c.getPlayer().getBlockedPortals().contains(portal.getScriptName())) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (c.getPlayer().isBanned()) { + return; + } + if (c.getPlayer().getTrade() != null) { + MapleTrade.cancelTrade(c.getPlayer()); + } + portal.enterPortal(c); + } +} diff --git a/src/net/server/channel/handlers/CharInfoRequestHandler.java b/src/net/server/channel/handlers/CharInfoRequestHandler.java new file mode 100644 index 0000000000..6f14c11f02 --- /dev/null +++ b/src/net/server/channel/handlers/CharInfoRequestHandler.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.maps.MapleMapObject; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CharInfoRequestHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readInt(); + int cid = slea.readInt(); + MapleMapObject target = c.getPlayer().getMap().getMapObject(cid); + if (target != null) { + if (target instanceof MapleCharacter) { + c.announce(MaplePacketCreator.charInfo((MapleCharacter) target)); + } + } + } +} diff --git a/src/net/server/channel/handlers/ClickGuideHandler.java b/src/net/server/channel/handlers/ClickGuideHandler.java new file mode 100644 index 0000000000..7e7529b0cf --- /dev/null +++ b/src/net/server/channel/handlers/ClickGuideHandler.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.channel.handlers; + +import client.MapleClient; +import client.MapleJob; +import net.AbstractMaplePacketHandler; +import scripting.npc.NPCScriptManager; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public class ClickGuideHandler extends AbstractMaplePacketHandler { + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (c.getPlayer().getJob().equals(MapleJob.NOBLESSE)) { + NPCScriptManager.getInstance().start(c, 1101008, null); + } else { + NPCScriptManager.getInstance().start(c, 1202000, null); + } + } + +} diff --git a/src/net/server/channel/handlers/CloseChalkboardHandler.java b/src/net/server/channel/handlers/CloseChalkboardHandler.java new file mode 100644 index 0000000000..8489d44316 --- /dev/null +++ b/src/net/server/channel/handlers/CloseChalkboardHandler.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Xterminator + */ +public final class CloseChalkboardHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.getPlayer().setChalkboard(null); + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.useChalkboard(c.getPlayer(), true)); + } +} diff --git a/src/net/server/channel/handlers/CloseRangeDamageHandler.java b/src/net/server/channel/handlers/CloseRangeDamageHandler.java new file mode 100644 index 0000000000..33a4ee3389 --- /dev/null +++ b/src/net/server/channel/handlers/CloseRangeDamageHandler.java @@ -0,0 +1,162 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import server.MapleStatEffect; +import server.TimerManager; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleCharacter.CancelCooldownAction; +import client.MapleClient; +import client.MapleJob; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import constants.GameConstants; +import constants.skills.Crusader; +import constants.skills.DawnWarrior; +import constants.skills.DragonKnight; +import constants.skills.Hero; +import constants.skills.NightWalker; +import constants.skills.Rogue; +import constants.skills.WindArcher; + +public final class CloseRangeDamageHandler extends AbstractDealDamageHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + player.setPetLootCd(System.currentTimeMillis()); + + /*long timeElapsed = System.currentTimeMillis() - player.getAutobanManager().getLastSpam(8); + if(timeElapsed < 300) { + AutobanFactory.FAST_ATTACK.alert(player, "Time: " + timeElapsed); + } + player.getAutobanManager().spam(8);*/ + AttackInfo attack = parseDamage(slea, player, false, false); + if (player.getBuffEffect(MapleBuffStat.MORPH) != null) { + if(player.getBuffEffect(MapleBuffStat.MORPH).isMorphWithoutAttack()) { + // How are they attacking when the client won't let them? + player.getClient().disconnect(false, false); + return; + } + } + + player.getMap().broadcastMessage(player, MaplePacketCreator.closeRangeAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.speed, attack.direction, attack.display), false, true); + int numFinisherOrbs = 0; + Integer comboBuff = player.getBuffedValue(MapleBuffStat.COMBO); + if (GameConstants.isFinisherSkill(attack.skill)) { + if (comboBuff != null) { + numFinisherOrbs = comboBuff.intValue() - 1; + } + player.handleOrbconsume(); + } else if (attack.numAttacked > 0) { + if (attack.skill != 1111008 && comboBuff != null) { + int orbcount = player.getBuffedValue(MapleBuffStat.COMBO); + int oid = player.isCygnus() ? DawnWarrior.COMBO : Crusader.COMBO; + int advcomboid = player.isCygnus() ? DawnWarrior.ADVANCED_COMBO : Hero.ADVANCED_COMBO; + Skill combo = SkillFactory.getSkill(oid); + Skill advcombo = SkillFactory.getSkill(advcomboid); + MapleStatEffect ceffect; + int advComboSkillLevel = player.getSkillLevel(advcombo); + if (advComboSkillLevel > 0) { + ceffect = advcombo.getEffect(advComboSkillLevel); + } else { + ceffect = combo.getEffect(player.getSkillLevel(combo)); + } + if (orbcount < ceffect.getX() + 1) { + int neworbcount = orbcount + 1; + if (advComboSkillLevel > 0 && ceffect.makeChanceResult()) { + if (neworbcount <= ceffect.getX()) { + neworbcount++; + } + } + int duration = combo.getEffect(player.getSkillLevel(oid)).getDuration(); + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.COMBO, neworbcount)); + player.setBuffedValue(MapleBuffStat.COMBO, neworbcount); + duration -= (int) (System.currentTimeMillis() - player.getBuffedStarttime(MapleBuffStat.COMBO)); + c.announce(MaplePacketCreator.giveBuff(oid, duration, stat)); + player.getMap().broadcastMessage(player, MaplePacketCreator.giveForeignBuff(player.getId(), stat), false); + } + } else if (player.getSkillLevel(player.isCygnus() ? SkillFactory.getSkill(15100004) : SkillFactory.getSkill(5110001)) > 0 && (player.getJob().isA(MapleJob.MARAUDER) || player.getJob().isA(MapleJob.THUNDERBREAKER2))) { + for (int i = 0; i < attack.numAttacked; i++) { + player.handleEnergyChargeGain(); + } + } + } + if (attack.numAttacked > 0 && attack.skill == DragonKnight.SACRIFICE) { + int totDamageToOneMonster = 0; // sacrifice attacks only 1 mob with 1 attack + final Iterator> dmgIt = attack.allDamage.values().iterator(); + if (dmgIt.hasNext()) { + totDamageToOneMonster = dmgIt.next().get(0).intValue(); + } + int remainingHP = player.getHp() - totDamageToOneMonster * attack.getAttackEffect(player, null).getX() / 100; + if (remainingHP > 1) { + player.setHp(remainingHP); + } else { + player.setHp(1); + } + player.updateSingleStat(MapleStat.HP, player.getHp()); + player.checkBerserk(); + } + if (attack.numAttacked > 0 && attack.skill == 1211002) { + boolean advcharge_prob = false; + int advcharge_level = player.getSkillLevel(SkillFactory.getSkill(1220010)); + if (advcharge_level > 0) { + advcharge_prob = SkillFactory.getSkill(1220010).getEffect(advcharge_level).makeChanceResult(); + } + if (!advcharge_prob) { + player.cancelEffectFromBuffStat(MapleBuffStat.WK_CHARGE); + } + } + int attackCount = 1; + if (attack.skill != 0) { + attackCount = attack.getAttackEffect(player, null).getAttackCount(); + } + if (numFinisherOrbs == 0 && GameConstants.isFinisherSkill(attack.skill)) { + return; + } + if (attack.skill > 0) { + Skill skill = SkillFactory.getSkill(attack.skill); + MapleStatEffect effect_ = skill.getEffect(player.getSkillLevel(skill)); + if (effect_.getCooldown() > 0) { + if (player.skillisCooling(attack.skill)) { + return; + } else { + c.announce(MaplePacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); + player.addCooldown(attack.skill, System.currentTimeMillis(), effect_.getCooldown() * 1000, TimerManager.getInstance().schedule(new CancelCooldownAction(player, attack.skill), effect_.getCooldown() * 1000)); + } + } + } + if ((player.getSkillLevel(SkillFactory.getSkill(NightWalker.VANISH)) > 0 || player.getSkillLevel(SkillFactory.getSkill(WindArcher.WIND_WALK)) > 0 || player.getSkillLevel(SkillFactory.getSkill(Rogue.DARK_SIGHT)) > 0) && player.getBuffedValue(MapleBuffStat.DARKSIGHT) != null) {// && player.getBuffSource(MapleBuffStat.DARKSIGHT) != 9101004 + player.cancelEffectFromBuffStat(MapleBuffStat.DARKSIGHT); + player.cancelBuffStats(MapleBuffStat.DARKSIGHT); + } + applyAttack(attack, player, attackCount); + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/CoconutHandler.java b/src/net/server/channel/handlers/CoconutHandler.java new file mode 100644 index 0000000000..66fe45525c --- /dev/null +++ b/src/net/server/channel/handlers/CoconutHandler.java @@ -0,0 +1,85 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.events.gm.MapleCoconut; +import server.events.gm.MapleCoconuts; +import server.maps.MapleMap; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public final class CoconutHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + /*CB 00 A6 00 06 01 + * A6 00 = coconut id + * 06 01 = ? + */ + int id = slea.readShort(); + MapleMap map = c.getPlayer().getMap(); + MapleCoconut event = map.getCoconut(); + MapleCoconuts nut = event.getCoconut(id); + if (!nut.isHittable()){ + return; + } + if (event == null){ + return; + } + if (System.currentTimeMillis() < nut.getHitTime()){ + return; + } + if (nut.getHits() > 2 && Math.random() < 0.4) { + if (Math.random() < 0.01 && event.getStopped() > 0) { + nut.setHittable(false); + event.stopCoconut(); + map.broadcastMessage(MaplePacketCreator.hitCoconut(false, id, 1)); + return; + } + nut.setHittable(false); // for sure :) + nut.resetHits(); // For next event (without restarts) + if (Math.random() < 0.05 && event.getBombings() > 0) { + map.broadcastMessage(MaplePacketCreator.hitCoconut(false, id, 2)); + event.bombCoconut(); + } else if (event.getFalling() > 0) { + map.broadcastMessage(MaplePacketCreator.hitCoconut(false, id, 3)); + event.fallCoconut(); + if (c.getPlayer().getTeam() == 0) { + event.addMapleScore(); + map.broadcastMessage(MaplePacketCreator.serverNotice(5, c.getPlayer().getName() + " of Team Maple knocks down a coconut.")); + } else { + event.addStoryScore(); + map.broadcastMessage(MaplePacketCreator.serverNotice(5, c.getPlayer().getName() + " of Team Story knocks down a coconut.")); + } + map.broadcastMessage(MaplePacketCreator.coconutScore(event.getMapleScore(), event.getStoryScore())); + } + } else { + nut.hit(); + map.broadcastMessage(MaplePacketCreator.hitCoconut(false, id, 1)); + } + } +} diff --git a/src/net/server/channel/handlers/CouponCodeHandler.java b/src/net/server/channel/handlers/CouponCodeHandler.java new file mode 100644 index 0000000000..14aaf315d8 --- /dev/null +++ b/src/net/server/channel/handlers/CouponCodeHandler.java @@ -0,0 +1,119 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import java.sql.SQLException; +import client.MapleClient; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Penguins (Acrylic) + */ +public final class CouponCodeHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.skip(2); + String code = slea.readMapleAsciiString(); + boolean validcode = false; + int type = -1; + int item = -1; + validcode = getNXCodeValid(code.toUpperCase(), validcode); + if (validcode) { + type = getNXCode(code, "type"); + item = getNXCode(code, "item"); + if (type != 5) { + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("UPDATE nxcode SET `valid` = 0 WHERE code = " + code); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("UPDATE nxcode SET `user` = ? WHERE code = ?"); + ps.setString(1, c.getPlayer().getName()); + ps.setString(2, code); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + } + } + switch (type) { + case 0: + case 1: + case 2: + c.getPlayer().getCashShop().gainCash(type, item); + break; + case 3: + c.getPlayer().getCashShop().gainCash(0, item); + c.getPlayer().getCashShop().gainCash(2, (item / 5000)); + break; + case 4: + MapleInventoryManipulator.addById(c, item, (short) 1, null, -1, -1); + c.announce(MaplePacketCreator.showCouponRedeemedItem(item)); + break; + case 5: + c.getPlayer().getCashShop().gainCash(0, item); + break; + } + c.announce(MaplePacketCreator.showCash(c.getPlayer())); + } else { + //c.announce(MaplePacketCreator.wrongCouponCode()); + } + c.announce(MaplePacketCreator.enableCSUse()); + } + + private int getNXCode(String code, String type) { + int item = -1; + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT `" + type + "` FROM nxcode WHERE code = ?"); + ps.setString(1, code); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + item = rs.getInt(type); + } + rs.close(); + ps.close(); + } catch (SQLException ex) { + } + return item; + } + + private boolean getNXCodeValid(String code, boolean validcode) { + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT `valid` FROM nxcode WHERE code = ?"); + ps.setString(1, code); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + validcode = rs.getInt("valid") != 0; + } + rs.close(); + ps.close(); + } catch (SQLException ex) { + } + return validcode; + } +} diff --git a/src/net/server/channel/handlers/DamageSummonHandler.java b/src/net/server/channel/handlers/DamageSummonHandler.java new file mode 100644 index 0000000000..a0245b2043 --- /dev/null +++ b/src/net/server/channel/handlers/DamageSummonHandler.java @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleClient; +import client.SkillFactory; +import net.AbstractMaplePacketHandler; +import server.maps.MapleSummon; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class DamageSummonHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int skillid = slea.readInt(); //Bugged? might not be skillid. + int unkByte = slea.readByte(); + int damage = slea.readInt(); + int monsterIdFrom = slea.readInt(); + if (SkillFactory.getSkill(skillid) != null) { + MapleCharacter player = c.getPlayer(); + MapleSummon summon = player.getSummons().get(skillid); + if (summon != null) { + summon.addHP(-damage); + if (summon.getHP() <= 0) { + player.cancelEffectFromBuffStat(MapleBuffStat.PUPPET); + } + } + player.getMap().broadcastMessage(player, MaplePacketCreator.damageSummon(player.getId(), skillid, damage, unkByte, monsterIdFrom), summon.getPosition()); + } + } +} diff --git a/src/net/server/channel/handlers/DenyGuildRequestHandler.java b/src/net/server/channel/handlers/DenyGuildRequestHandler.java new file mode 100644 index 0000000000..f37ad4829e --- /dev/null +++ b/src/net/server/channel/handlers/DenyGuildRequestHandler.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Xterminator + */ +public final class DenyGuildRequestHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readByte(); + MapleCharacter cfrom = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); + if (cfrom != null) { + cfrom.getClient().announce(MaplePacketCreator.denyGuildInvitation(c.getPlayer().getName())); + } + } +} diff --git a/src/net/server/channel/handlers/DenyPartyRequestHandler.java b/src/net/server/channel/handlers/DenyPartyRequestHandler.java new file mode 100644 index 0000000000..b5135c873a --- /dev/null +++ b/src/net/server/channel/handlers/DenyPartyRequestHandler.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class DenyPartyRequestHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readByte(); + MapleCharacter cfrom = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); + if (cfrom != null) { + cfrom.getClient().announce(MaplePacketCreator.partyStatusMessage(23, c.getPlayer().getName())); + } + } +} diff --git a/src/net/server/channel/handlers/DistributeAPHandler.java b/src/net/server/channel/handlers/DistributeAPHandler.java new file mode 100644 index 0000000000..1f6b6ba010 --- /dev/null +++ b/src/net/server/channel/handlers/DistributeAPHandler.java @@ -0,0 +1,166 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import constants.skills.BlazeWizard; +import constants.skills.Brawler; +import constants.skills.DawnWarrior; +import constants.skills.Magician; +import constants.skills.Warrior; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class DistributeAPHandler extends AbstractMaplePacketHandler { + private static final int max = 32767; + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readInt(); + int num = slea.readInt(); + if (c.getPlayer().getRemainingAp() > 0) { + if (addStat(c, num)) { + c.getPlayer().setRemainingAp(c.getPlayer().getRemainingAp() - 1); + c.getPlayer().updateSingleStat(MapleStat.AVAILABLEAP, c.getPlayer().getRemainingAp()); + } + } + c.announce(MaplePacketCreator.enableActions()); + } + + static boolean addStat(MapleClient c, int apTo) { + switch (apTo) { + case 64: // Str + if (c.getPlayer().getStr() >= max) { + return false; + } + c.getPlayer().addStat(1, 1); + break; + case 128: // Dex + if (c.getPlayer().getDex() >= max) { + return false; + } + c.getPlayer().addStat(2, 1); + break; + case 256: // Int + if (c.getPlayer().getInt() >= max) { + return false; + } + c.getPlayer().addStat(3, 1); + break; + case 512: // Luk + if (c.getPlayer().getLuk() >= max) { + return false; + } + c.getPlayer().addStat(4, 1); + break; + case 2048: // HP + addHP(c.getPlayer(), addHP(c)); + break; + case 8192: // MP + addMP(c.getPlayer(), addMP(c)); + break; + default: + c.announce(MaplePacketCreator.updatePlayerStats(MaplePacketCreator.EMPTY_STATUPDATE, true, c.getPlayer())); + return false; + } + return true; + } + + static int addHP(MapleClient c) { + MapleCharacter player = c.getPlayer(); + MapleJob job = player.getJob(); + int MaxHP = player.getMaxHp(); + if (player.getHpMpApUsed() > 9999 || MaxHP >= 30000) { + return MaxHP; + } + if (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.DAWNWARRIOR1) || job.isA(MapleJob.ARAN1)) { + Skill increaseHP = SkillFactory.getSkill(job.isA(MapleJob.DAWNWARRIOR1) ? DawnWarrior.MAX_HP_INCREASE : Warrior.IMPROVED_MAXHP); + int sLvl = player.getSkillLevel(increaseHP); + + if(sLvl > 0) + MaxHP += increaseHP.getEffect(sLvl).getY(); + + MaxHP += 20; + } else if (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.BLAZEWIZARD1)) { + MaxHP += 6; + } else if (job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.WINDARCHER1) || job.isA(MapleJob.THIEF) || job.isA(MapleJob.NIGHTWALKER1)) { + MaxHP += 16; + } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { + Skill increaseHP = SkillFactory.getSkill(Brawler.IMPROVE_MAX_HP); + int sLvl = player.getSkillLevel(increaseHP); + + if(sLvl > 0) + MaxHP += increaseHP.getEffect(sLvl).getY(); + + MaxHP += 18; + } else { + MaxHP += 8; + } + return MaxHP; + } + + static int addMP(MapleClient c) { + MapleCharacter player = c.getPlayer(); + int MaxMP = player.getMaxMp(); + MapleJob job = player.getJob(); + if (player.getHpMpApUsed() > 9999 || player.getMaxMp() >= 30000) { + return MaxMP; + } + if (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.DAWNWARRIOR1) || job.isA(MapleJob.ARAN1)) { + MaxMP += 2; + } else if (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.BLAZEWIZARD1)) { + Skill increaseMP = SkillFactory.getSkill(job.isA(MapleJob.BLAZEWIZARD1) ? BlazeWizard.INCREASING_MAX_MP : Magician.IMPROVED_MAX_MP_INCREASE); + int sLvl = player.getSkillLevel(increaseMP); + + if(sLvl > 0) + MaxMP += increaseMP.getEffect(sLvl).getY(); + + MaxMP += 18; + } else if (job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.WINDARCHER1) || job.isA(MapleJob.THIEF) || job.isA(MapleJob.NIGHTWALKER1)) { + MaxMP += 10; + } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { + MaxMP += 14; + } else { + MaxMP += 6; + } + return MaxMP; + } + + static void addHP(MapleCharacter player, int MaxHP) { + MaxHP = Math.min(30000, MaxHP); + player.setHpMpApUsed(player.getHpMpApUsed() + 1); + player.setMaxHp(MaxHP); + player.updateSingleStat(MapleStat.MAXHP, MaxHP); + } + + static void addMP(MapleCharacter player, int MaxMP) { + MaxMP = Math.min(30000, MaxMP); + player.setHpMpApUsed(player.getHpMpApUsed() + 1); + player.setMaxMp(MaxMP); + player.updateSingleStat(MapleStat.MAXMP, MaxMP); + } +} diff --git a/src/net/server/channel/handlers/DistributeSPHandler.java b/src/net/server/channel/handlers/DistributeSPHandler.java new file mode 100644 index 0000000000..7244e7c7c4 --- /dev/null +++ b/src/net/server/channel/handlers/DistributeSPHandler.java @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import client.autoban.AutobanFactory; +import constants.GameConstants; +import constants.skills.Aran; + +public final class DistributeSPHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readInt(); + int skillid = slea.readInt(); + if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) { + c.getSession().write(MaplePacketCreator.enableActions()); + return; + } + MapleCharacter player = c.getPlayer(); + int remainingSp = player.getRemainingSpBySkill(GameConstants.getSkillBook(skillid/10000)); + boolean isBeginnerSkill = false; + if ((!GameConstants.isPQSkillMap(player.getMapId()) && GameConstants.isPqSkill(skillid)) || (!player.isGM() && GameConstants.isGMSkills(skillid)) || (!GameConstants.isInJobTree(skillid, player.getJob().getId()) && !player.isGM())) { + AutobanFactory.PACKET_EDIT.alert(player, "tried to packet edit in distributing sp."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job.\r\n"); + c.disconnect(true, false); + return; + } + if (skillid % 10000000 > 999 && skillid % 10000000 < 1003) { + int total = 0; + for (int i = 0; i < 3; i++) { + total += player.getSkillLevel(SkillFactory.getSkill(player.getJobType() * 10000000 + 1000 + i)); + } + remainingSp = Math.min((player.getLevel() - 1), 6) - total; + isBeginnerSkill = true; + } + Skill skill = SkillFactory.getSkill(skillid); + int curLevel = player.getSkillLevel(skill); + if ((remainingSp > 0 && curLevel + 1 <= (skill.isFourthJob() ? player.getMasterLevel(skill) : skill.getMaxLevel()))) { + if (!isBeginnerSkill) { + player.setRemainingSp(player.getRemainingSpBySkill(GameConstants.getSkillBook(skillid/10000)) - 1, GameConstants.getSkillBook(skillid/10000)); + } + player.updateSingleStat(MapleStat.AVAILABLESP, player.getRemainingSpBySkill(GameConstants.getSkillBook(skillid/10000))); + if (skill.getId() == Aran.FULL_SWING) { + player.changeSkillLevel(skill, (byte) (curLevel + 1), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + player.changeSkillLevel(SkillFactory.getSkill(Aran.HIDDEN_FULL_DOUBLE), (byte) player.getSkillLevel(skill), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + player.changeSkillLevel(SkillFactory.getSkill(Aran.HIDDEN_FULL_TRIPLE), (byte) player.getSkillLevel(skill), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + } else if (skill.getId() == Aran.OVER_SWING) { + player.changeSkillLevel(skill, (byte) (curLevel + 1), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + player.changeSkillLevel(SkillFactory.getSkill(Aran.HIDDEN_OVER_DOUBLE), (byte) player.getSkillLevel(skill), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + player.changeSkillLevel(SkillFactory.getSkill(Aran.HIDDEN_OVER_TRIPLE), (byte) player.getSkillLevel(skill), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + } else { + player.changeSkillLevel(skill, (byte) (curLevel + 1), player.getMasterLevel(skill), player.getSkillExpiration(skill)); + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/DoorHandler.java b/src/net/server/channel/handlers/DoorHandler.java new file mode 100644 index 0000000000..6b4664900e --- /dev/null +++ b/src/net/server/channel/handlers/DoorHandler.java @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.maps.MapleDoor; +import server.maps.MapleMapObject; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class DoorHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int oid = slea.readInt(); + boolean mode = (slea.readByte() == 0); // specifies if backwarp or not, 1 town to target, 0 target to town + for (MapleMapObject obj : c.getPlayer().getMap().getMapObjects()) { + if (obj instanceof MapleDoor) { + MapleDoor door = (MapleDoor) obj; + if (door.getOwner().getId() == oid) { + door.warp(c.getPlayer(), mode); + return; + } + } + } + } +} diff --git a/src/net/server/channel/handlers/DueyHandler.java b/src/net/server/channel/handlers/DueyHandler.java new file mode 100644 index 0000000000..5dcb0b1a5b --- /dev/null +++ b/src/net/server/channel/handlers/DueyHandler.java @@ -0,0 +1,400 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import constants.ItemConstants; +import constants.ServerConstants; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Calendar; +import java.util.LinkedList; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import net.server.channel.Channel; +import server.DueyPackages; +import server.MapleInventoryManipulator; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class DueyHandler extends AbstractMaplePacketHandler { + private enum Actions { + TOSERVER_SEND_ITEM(0x02), + TOSERVER_CLAIM_PACKAGE(0x04), + TOSERVER_REMOVE_PACKAGE(0x05), + TOSERVER_CLOSE_DUEY(0x07), + TOCLIENT_OPEN_DUEY(0x08), + TOCLIENT_NOT_ENOUGH_MESOS(0x0A), + TOCLIENT_NAME_DOES_NOT_EXIST(0x0C), + TOCLIENT_SAMEACC_ERROR(0x0D), + TOCLIENT_SUCCESSFULLY_SENT(0x12), + TOCLIENT_SUCCESSFUL_MSG(0x17), + TOCLIENT_PACKAGE_MSG(0x1B); // Ending byte; 4 if recieved. 3 if delete. + final byte code; + + private Actions(int code) { + this.code = (byte) code; + } + + public byte getCode() { + return code; + } + } + + private static int getAccIdFromCNAME(String name, boolean accountid) { + try { + PreparedStatement ps; + String text = "SELECT id,accountid FROM characters WHERE name = ?"; + if (accountid) { + text = "SELECT id,accountid FROM characters WHERE name = ?"; + } + ps = DatabaseConnection.getConnection().prepareStatement(text); + ps.setString(1, name); + int id_; + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + rs.close(); + ps.close(); + return -1; + } + id_ = accountid ? rs.getInt("accountid") : rs.getInt("id"); + } + ps.close(); + return id_; + } catch (SQLException e) { + e.printStackTrace(); + } + return -1; + } + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!ServerConstants.USE_DUEY){ + return; + } + + byte operation = slea.readByte(); + if (operation == Actions.TOSERVER_SEND_ITEM.getCode()) { + final int fee = 5000; + byte inventId = slea.readByte(); + short itemPos = slea.readShort(); + short amount = slea.readShort(); + int mesos = slea.readInt(); + String recipient = slea.readMapleAsciiString(); + + System.out.println(mesos + " " + fee + " " + getFee(mesos) + "/" + amount + " " + Integer.MAX_VALUE); + + if (mesos < 0 || (long) mesos > Integer.MAX_VALUE || ((long) mesos + fee + getFee(mesos)) > Integer.MAX_VALUE || (amount < 1 && mesos == 0)) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with duey."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with mesos " + mesos + " and amount " + amount + "\r\n"); + c.disconnect(true, false); + return; + } + int finalcost = mesos + fee + getFee(mesos); + boolean send = false; + if (c.getPlayer().getMeso() >= finalcost) { + int accid = getAccIdFromCNAME(recipient, true); + if (accid != -1) { + if (accid != c.getAccID()) { + c.getPlayer().gainMeso(-finalcost, false); + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_SUCCESSFULLY_SENT.getCode())); + send = true; + } else { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_SAMEACC_ERROR.getCode())); + } + } else { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_NAME_DOES_NOT_EXIST.getCode())); + } + } else { + c.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_NOT_ENOUGH_MESOS.getCode())); + } + boolean recipientOn = false; + MapleClient rClient = null; + int channel = c.getWorldServer().find(recipient); + if (channel > -1) { + recipientOn = true; + Channel rcserv = c.getWorldServer().getChannel(channel); + rClient = rcserv.getPlayerStorage().getCharacterByName(recipient).getClient(); + } + if (send) { + if (inventId > 0) { + MapleInventoryType inv = MapleInventoryType.getByType(inventId); + Item item = c.getPlayer().getInventory(inv).getItem(itemPos); + if (item != null && c.getPlayer().getItemQuantity(item.getItemId(), false) >= amount) { + if (ItemConstants.isRechargable(item.getItemId())) { + MapleInventoryManipulator.removeFromSlot(c, inv, itemPos, item.getQuantity(), true); + } else { + MapleInventoryManipulator.removeFromSlot(c, inv, itemPos, amount, true, false); + } + addItemToDB(item, amount, mesos, c.getPlayer().getName(), getAccIdFromCNAME(recipient, false)); + } else { + if (item != null) c.getPlayer().dropMessage(1, "You must assign up to " + c.getPlayer().getItemQuantity(item.getItemId(), false) + " of that item to send."); + return; + } + } else { + addMesoToDB(mesos, c.getPlayer().getName(), getAccIdFromCNAME(recipient, false)); + } + if (recipientOn && rClient != null) { + rClient.announce(MaplePacketCreator.sendDueyMSG(Actions.TOCLIENT_PACKAGE_MSG.getCode())); + } + } + } else if (operation == Actions.TOSERVER_REMOVE_PACKAGE.getCode()) { + int packageid = slea.readInt(); + removeItemFromDB(packageid); + c.announce(MaplePacketCreator.removeItemFromDuey(true, packageid)); + } else if (operation == Actions.TOSERVER_CLAIM_PACKAGE.getCode()) { + int packageid = slea.readInt(); + List packages = new LinkedList<>(); + DueyPackages dp = null; + Connection con = DatabaseConnection.getConnection(); + try { + DueyPackages dueypack; + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM dueypackages LEFT JOIN dueyitems USING (PackageId) WHERE PackageId = ?")) { + ps.setInt(1, packageid); + try (ResultSet rs = ps.executeQuery()) { + dueypack = null; + if (rs.next()) { + dueypack = getItemByPID(rs); + dueypack.setSender(rs.getString("SenderName")); + dueypack.setMesos(rs.getInt("Mesos")); + dueypack.setSentTime(rs.getString("TimeStamp")); + + packages.add(dueypack); + } + } + } + dp = dueypack; + if(dp == null) { + System.out.println("Error: Null Duey package!"); + return; + } + + if (dp.getItem() != null) { + if (!MapleInventoryManipulator.checkSpace(c, dp.getItem().getItemId(), dp.getItem().getQuantity(), dp.getItem().getOwner())) { + c.getPlayer().dropMessage(1, "Your inventory is full"); + c.announce(MaplePacketCreator.enableActions()); + + return; + } else { + MapleInventoryManipulator.addFromDrop(c, dp.getItem(), false); + } + } + + long gainmesos = 0; + long totalmesos = (long) dp.getMesos() + (long) c.getPlayer().getMeso(); + + if (totalmesos < 0 || dp.getMesos() < 0) gainmesos = 0; + else { + totalmesos = Math.min(totalmesos, Integer.MAX_VALUE); + gainmesos = totalmesos - c.getPlayer().getMeso(); + } + c.getPlayer().gainMeso((int)gainmesos, false); + + removeItemFromDB(packageid); + c.announce(MaplePacketCreator.removeItemFromDuey(false, packageid)); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } + + private void addMesoToDB(int mesos, String sName, int recipientID) { + addItemToDB(null, 1, mesos, sName, recipientID); + } + + private void addItemToDB(Item item, int quantity, int mesos, String sName, int recipientID) { + Connection con = DatabaseConnection.getConnection(); + try { + try (PreparedStatement ps = con.prepareStatement("INSERT INTO dueypackages (RecieverId, SenderName, Mesos, TimeStamp, Checked, Type) VALUES (?, ?, ?, ?, ?, ?)")) { + ps.setInt(1, recipientID); + ps.setString(2, sName); + ps.setInt(3, mesos); + ps.setString(4, getCurrentDate()); + ps.setInt(5, 1); + if (item == null) { + ps.setInt(6, 3); + ps.executeUpdate(); + } else { + ps.setInt(6, item.getType()); + + ps.executeUpdate(); + try (ResultSet rs = ps.getGeneratedKeys()) { + rs.next(); + PreparedStatement ps2; + if (item.getType() == 1) { // equips + ps2 = con.prepareStatement("INSERT INTO dueyitems (PackageId, itemid, quantity, upgradeslots, level, str, dex, `int`, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, owner) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + Equip eq = (Equip) item; + ps2.setInt(2, eq.getItemId()); + ps2.setInt(3, 1); + ps2.setInt(4, eq.getUpgradeSlots()); + ps2.setInt(5, eq.getLevel()); + ps2.setInt(6, eq.getStr()); + ps2.setInt(7, eq.getDex()); + ps2.setInt(8, eq.getInt()); + ps2.setInt(9, eq.getLuk()); + ps2.setInt(10, eq.getHp()); + ps2.setInt(11, eq.getMp()); + ps2.setInt(12, eq.getWatk()); + ps2.setInt(13, eq.getMatk()); + ps2.setInt(14, eq.getWdef()); + ps2.setInt(15, eq.getMdef()); + ps2.setInt(16, eq.getAcc()); + ps2.setInt(17, eq.getAvoid()); + ps2.setInt(18, eq.getHands()); + ps2.setInt(19, eq.getSpeed()); + ps2.setInt(20, eq.getJump()); + ps2.setString(21, eq.getOwner()); + } else { + ps2 = con.prepareStatement("INSERT INTO dueyitems (PackageId, itemid, quantity, owner) VALUES (?, ?, ?, ?)"); + ps2.setInt(2, item.getItemId()); + ps2.setInt(3, quantity); + ps2.setString(4, item.getOwner()); + } + ps2.setInt(1, rs.getInt(1)); + ps2.executeUpdate(); + ps2.close(); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static List loadItems(MapleCharacter chr) { + List packages = new LinkedList<>(); + Connection con = DatabaseConnection.getConnection(); + try { + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM dueypackages dp LEFT JOIN dueyitems di ON dp.PackageId=di.PackageId WHERE RecieverId = ?")) { + ps.setInt(1, chr.getId()); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + DueyPackages dueypack = getItemByPID(rs); + dueypack.setSender(rs.getString("SenderName")); + dueypack.setMesos(rs.getInt("Mesos")); + dueypack.setSentTime(rs.getString("TimeStamp")); + packages.add(dueypack); + } + } + } + + return packages; + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + } + + private String getCurrentDate() { + String date = ""; + Calendar cal = Calendar.getInstance(); + int day = cal.get(Calendar.DATE) - 1; // instant duey ? + int month = cal.get(Calendar.MONTH) + 1; // its an array of months. + int year = cal.get(Calendar.YEAR); + date += day < 9 ? "0" + day + "-" : "" + day + "-"; + date += month < 9 ? "0" + month + "-" : "" + month + "-"; + date += year; + + return date; + } + + private static int getFee(int meso) { + int fee = 0; + if (meso >= 10000000) { + fee = meso / 25; + } else if (meso >= 5000000) { + fee = meso * 3 / 100; + } else if (meso >= 1000000) { + fee = meso / 50; + } else if (meso >= 100000) { + fee = meso / 100; + } else if (meso >= 50000) { + fee = meso / 200; + } + return fee; + } + + private void removeItemFromDB(int packageid) { + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("DELETE FROM dueypackages WHERE PackageId = ?"); + ps.setInt(1, packageid); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("DELETE FROM dueyitems WHERE PackageId = ?"); + ps.setInt(1, packageid); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + private static DueyPackages getItemByPID(ResultSet rs) { + try { + DueyPackages dueypack; + if (rs.getInt("type") == 1) { + Equip eq = new Equip(rs.getInt("itemid"), (byte) 0, -1); + eq.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + eq.setLevel((byte) rs.getInt("level")); + eq.setStr((short) rs.getInt("str")); + eq.setDex((short) rs.getInt("dex")); + eq.setInt((short) rs.getInt("int")); + eq.setLuk((short) rs.getInt("luk")); + eq.setHp((short) rs.getInt("hp")); + eq.setMp((short) rs.getInt("mp")); + eq.setWatk((short) rs.getInt("watk")); + eq.setMatk((short) rs.getInt("matk")); + eq.setWdef((short) rs.getInt("wdef")); + eq.setMdef((short) rs.getInt("mdef")); + eq.setAcc((short) rs.getInt("acc")); + eq.setAvoid((short) rs.getInt("avoid")); + eq.setHands((short) rs.getInt("hands")); + eq.setSpeed((short) rs.getInt("speed")); + eq.setJump((short) rs.getInt("jump")); + eq.setOwner(rs.getString("owner")); + dueypack = new DueyPackages(rs.getInt("PackageId"), eq); + } else if (rs.getInt("type") == 2) { + Item newItem = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + newItem.setOwner(rs.getString("owner")); + dueypack = new DueyPackages(rs.getInt("PackageId"), newItem); + } else { + dueypack = new DueyPackages(rs.getInt("PackageId")); + } + return dueypack; + } catch (SQLException se) { + se.printStackTrace(); + return null; + } + } +} diff --git a/src/net/server/channel/handlers/EnterCashShopHandler.java b/src/net/server/channel/handlers/EnterCashShopHandler.java new file mode 100644 index 0000000000..7e53547ea1 --- /dev/null +++ b/src/net/server/channel/handlers/EnterCashShopHandler.java @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Flav + */ +public class EnterCashShopHandler extends AbstractMaplePacketHandler { + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + try { + MapleCharacter mc = c.getPlayer(); + + if (mc.getCashShop().isOpened()) return; + + Server.getInstance().getPlayerBuffStorage().addBuffsToStorage(mc.getId(), mc.getAllBuffs()); + mc.cancelBuffEffects(); + mc.cancelExpirationTask(); + c.announce(MaplePacketCreator.openCashShop(c, false)); + mc.saveToDB(); + mc.getCashShop().open(true); + mc.getMap().removePlayer(mc); + c.getChannelServer().removePlayer(mc); + + c.announce(MaplePacketCreator.showCashInventory(c)); + c.announce(MaplePacketCreator.showGifts(mc.getCashShop().loadGifts())); + c.announce(MaplePacketCreator.showWishList(mc, false)); + c.announce(MaplePacketCreator.showCash(mc)); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/net/server/channel/handlers/EnterMTSHandler.java b/src/net/server/channel/handlers/EnterMTSHandler.java new file mode 100644 index 0000000000..19f13af922 --- /dev/null +++ b/src/net/server/channel/handlers/EnterMTSHandler.java @@ -0,0 +1,212 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.*; +import client.inventory.Equip; +import client.inventory.Item; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import server.MTSItemInfo; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class EnterMTSHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!ServerConstants.USE_MTS){ + return; + } + MapleCharacter chr = c.getPlayer(); + if (!chr.isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (chr.getLevel() < 10) { + c.announce(MaplePacketCreator.blockedMessage2(5)); + c.announce(MaplePacketCreator.enableActions()); + return; + } + + Server.getInstance().getPlayerBuffStorage().addBuffsToStorage(chr.getId(), chr.getAllBuffs()); + chr.cancelExpirationTask(); + chr.saveToDB(); + chr.getMap().removePlayer(c.getPlayer()); + try { + c.announce(MaplePacketCreator.openCashShop(c, true)); + } catch (Exception ex) { + } + chr.getCashShop().open(true);// xD + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.MTSWantedListingOver(0, 0)); + c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); + List items = new ArrayList<>(); + int pages = 0; + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM mts_items WHERE tab = 1 AND transfer = 0 ORDER BY id DESC LIMIT 16, 16"); + ResultSet rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo(i, rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setFlag((byte) rs.getInt("flag")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + rs.close(); + ps.close(); + ps = DatabaseConnection.getConnection().prepareStatement("SELECT COUNT(*) FROM mts_items"); + rs = ps.executeQuery(); + if (rs.next()) { + pages = (int) Math.ceil(rs.getInt(1) / 16); + } + rs.close(); + ps.close(); + } catch (SQLException e) { + } + c.announce(MaplePacketCreator.sendMTS(items, 1, 0, 0, pages)); + c.announce(MaplePacketCreator.transferInventory(getTransfer(chr.getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(chr.getId()))); + } + + private List getNotYetSold(int cid) { + List items = new ArrayList<>(); + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC")) { + ps.setInt(1, cid); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo((Item) i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + } + } + } catch (SQLException e) { + } + return items; + } + + private List getTransfer(int cid) { + List items = new ArrayList<>(); + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC")) { + ps.setInt(1, cid); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo((Item) i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + } + } + } catch (SQLException e) { + } + return items; + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/FaceExpressionHandler.java b/src/net/server/channel/handlers/FaceExpressionHandler.java new file mode 100644 index 0000000000..f95c74744c --- /dev/null +++ b/src/net/server/channel/handlers/FaceExpressionHandler.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class FaceExpressionHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int emote = slea.readInt(); + if (emote > 7) { + int emoteid = 5159992 + emote; + if (c.getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(emoteid)).findById(emoteid) == null) { + return; + } + } + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.facialExpression(c.getPlayer(), emote), false); + } +} diff --git a/src/net/server/channel/handlers/FamilyAddHandler.java b/src/net/server/channel/handlers/FamilyAddHandler.java new file mode 100644 index 0000000000..ce8e86ee76 --- /dev/null +++ b/src/net/server/channel/handlers/FamilyAddHandler.java @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import constants.ServerConstants; +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public final class FamilyAddHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!ServerConstants.USE_FAMILY_SYSTEM){ + return; + } + System.out.println(slea.toString()); + String toAdd = slea.readMapleAsciiString(); + MapleCharacter addChr = c.getChannelServer().getPlayerStorage().getCharacterByName(toAdd); + if (addChr != null) { + addChr.getClient().announce(MaplePacketCreator.sendFamilyInvite(c.getPlayer().getId(), toAdd)); + c.getPlayer().dropMessage("The invite has been sent."); + } else { + c.getPlayer().dropMessage("The player cannot be found!"); + } + c.announce(MaplePacketCreator.enableActions()); + } +} + diff --git a/src/net/server/channel/handlers/FamilyUseHandler.java b/src/net/server/channel/handlers/FamilyUseHandler.java new file mode 100644 index 0000000000..81d267bb9a --- /dev/null +++ b/src/net/server/channel/handlers/FamilyUseHandler.java @@ -0,0 +1,102 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import constants.ServerConstants; +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import net.SendOpcode; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.data.output.MaplePacketLittleEndianWriter; + +/** + * + * @author Moogra + */ +public final class FamilyUseHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!ServerConstants.USE_FAMILY_SYSTEM){ + return; + } + int[] repCost = {3, 5, 7, 8, 10, 12, 15, 20, 25, 40, 50}; + final int type = slea.readInt(); + MapleCharacter victim; + if (type == 0 || type == 1) { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); + if (victim != null) { + if (type == 0) { + c.getPlayer().changeMap(victim.getMap(), victim.getMap().getPortal(0)); + } else { + victim.changeMap(c.getPlayer().getMap(), c.getPlayer().getMap().getPortal(0)); + } + } else { + return; + } + } else { + int erate = type == 3 ? 150 : (type == 4 || type == 6 || type == 8 || type == 10 ? 200 : 100); + int drate = type == 2 ? 150 : (type == 4 || type == 5 || type == 7 || type == 9 ? 200 : 100); + if (type > 8) { + } else { + c.announce(useRep(drate == 100 ? 2 : (erate == 100 ? 3 : 4), type, erate, drate, ((type > 5 || type == 4) ? 2 : 1) * 15 * 60 * 1000)); + } + } + c.getPlayer().getFamily().getMember(c.getPlayer().getId()).gainReputation(repCost[type]); + } + + /** + * [65 00][02][08 00 00 00][C8 00 00 00][00 00 00 00][00][40 77 1B 00] + */ + private static byte[] useRep(int mode, int type, int erate, int drate, int time) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(0x60);//noty + mplew.write(mode); + mplew.writeInt(type); + if (mode < 4) { + mplew.writeInt(erate); + mplew.writeInt(drate); + } + mplew.write(0); + mplew.writeInt(time); + return mplew.getPacket(); + } + + //20 00 + //00 00 00 00 + //00 00 00 00 00 00 00 00 + //80 01 + //00 00 28 00 + //8C 93 3E 00 + //40 0D + //03 00 14 00 + //8C 93 3E 00 + //40 0D 03 00 00 00 00 00 02 + private static byte[] giveBuff() { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); + mplew.writeInt(0); + mplew.writeLong(0); + + return null; + } +} diff --git a/src/net/server/channel/handlers/FredrickHandler.java b/src/net/server/channel/handlers/FredrickHandler.java new file mode 100644 index 0000000000..f3a2eed7d4 --- /dev/null +++ b/src/net/server/channel/handlers/FredrickHandler.java @@ -0,0 +1,122 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public class FredrickHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + byte operation = slea.readByte(); + + switch (operation) { + case 0x19: //Will never come... + //c.announce(MaplePacketCreator.getFredrick((byte) 0x24)); + break; + case 0x1A: + List> items; + try { + items = ItemFactory.MERCHANT.loadItems(chr.getId(), false); + if (!check(chr, items)) { + c.announce(MaplePacketCreator.fredrickMessage((byte) 0x21)); + return; + } + chr.gainMeso(chr.getMerchantMeso(), false); + chr.setMerchantMeso(0); + if (deleteItems(chr)) { + if(chr.getHiredMerchant() != null) + chr.getHiredMerchant().clearItems(); + + for (int i = 0; i < items.size(); i++) { + Item item = items.get(i).getLeft(); + MapleInventoryManipulator.addFromDrop(c, item, false); + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); + FilePrinter.printError(FilePrinter.FREDRICK + chr.getName() + ".txt", chr.getName() + " gained " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + } + c.announce(MaplePacketCreator.fredrickMessage((byte) 0x1E)); + + } else { + chr.message("An unknown error has occured."); + } + break; + } catch (SQLException ex) { + ex.printStackTrace(); + } + break; + case 0x1C: //Exit + break; + default: + } + } + + private static boolean check(MapleCharacter chr, List> items) { + if (chr.getMeso() + chr.getMerchantMeso() < 0) { + return false; + } + + if (!MapleInventory.checkSpots(chr, items)) { + return false; + } + + return true; + } + + private static boolean deleteItems(MapleCharacter chr) { + try { + Connection con = DatabaseConnection.getConnection(); + try (PreparedStatement ps = con.prepareStatement("DELETE FROM `inventoryitems` WHERE `type` = ? AND `characterid` = ?")) { + ps.setInt(1, ItemFactory.MERCHANT.getValue()); + ps.setInt(2, chr.getId()); + ps.execute(); + } + return true; + } catch (SQLException e) { + return false; + } + + } +} diff --git a/src/net/server/channel/handlers/GeneralChatHandler.java b/src/net/server/channel/handlers/GeneralChatHandler.java new file mode 100644 index 0000000000..673c8d5014 --- /dev/null +++ b/src/net/server/channel/handlers/GeneralChatHandler.java @@ -0,0 +1,78 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import tools.LogHelper; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import client.command.Commands; + +public final class GeneralChatHandler extends net.AbstractMaplePacketHandler { + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + String s = slea.readMapleAsciiString(); + MapleCharacter chr = c.getPlayer(); + if(chr.getAutobanManager().getLastSpam(7) + 200 > System.currentTimeMillis()) { + return; + } + if (s.length() > Byte.MAX_VALUE && !chr.isGM()) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit in General Chat."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + s.length() + "\r\n"); + c.disconnect(true, false); + return; + } + char heading = s.charAt(0); + if (heading == '/' || heading == '!' || heading == '@') { + String[] sp = s.split(" "); + sp[0] = sp[0].toLowerCase().substring(1); + if (!Commands.executePlayerCommand(c, sp, heading)) { + if (chr.isGM()) { + if (!Commands.executeGMCommand(c, sp, heading)) { + Commands.executeAdminCommand(c, sp, heading); + } + String command = ""; + for (String used : sp) { + command += used + " "; + } + FilePrinter.printError("usedCommands.txt", c.getPlayer().getName() + " used: " + heading + command + "\r\n"); + } + } + } else { + int show = slea.readByte(); + if(chr.getMap().isMuted() && !chr.isGM()) { + chr.dropMessage(5, "The map you are in is currently muted. Please try again later."); + return; + } + if (!chr.isHidden()){ + chr.getMap().broadcastMessage(MaplePacketCreator.getChatText(chr.getId(), s, chr.getWhiteChat(), show)); + } else { + chr.getMap().broadcastGMMessage(MaplePacketCreator.getChatText(chr.getId(), s, chr.getWhiteChat(), show)); + } + } + chr.getAutobanManager().spam(7); + } +} + diff --git a/src/net/server/channel/handlers/GiveFameHandler.java b/src/net/server/channel/handlers/GiveFameHandler.java new file mode 100644 index 0000000000..7abe941f42 --- /dev/null +++ b/src/net/server/channel/handlers/GiveFameHandler.java @@ -0,0 +1,63 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleCharacter.FameStatus; +import client.autoban.AutobanFactory; +import client.MapleClient; +import client.MapleStat; +import net.AbstractMaplePacketHandler; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class GiveFameHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter target = (MapleCharacter) c.getPlayer().getMap().getMapObject(slea.readInt()); + int mode = slea.readByte(); + int famechange = 2 * mode - 1; + MapleCharacter player = c.getPlayer(); + if (target == null || target.getId() == player.getId() || player.getLevel() < 15) { + return; + } else if (famechange != 1 && famechange != -1) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit fame."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to fame hack with famechange " + famechange + "\r\n"); + c.disconnect(true, false); + return; + } + FameStatus status = player.canGiveFame(target); + if (status == FameStatus.OK || player.isGM()){ + if (Math.abs(target.getFame() + famechange) < 30001) { + target.addFame(famechange); + target.updateSingleStat(MapleStat.FAME, target.getFame()); + } + if (!player.isGM()) { + player.hasGivenFame(target); + } + c.announce(MaplePacketCreator.giveFameResponse(mode, target.getName(), target.getFame())); + target.getClient().announce(MaplePacketCreator.receiveFame(mode, player.getName())); + } else { + c.announce(MaplePacketCreator.giveFameErrorResponse(status == FameStatus.NOT_TODAY ? 3 : 4)); + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/GuildOperationHandler.java b/src/net/server/channel/handlers/GuildOperationHandler.java new file mode 100644 index 0000000000..d41efd7548 --- /dev/null +++ b/src/net/server/channel/handlers/GuildOperationHandler.java @@ -0,0 +1,266 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.server.guild.MapleGuildResponse; +import net.server.guild.MapleGuild; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; +import java.util.Iterator; +import tools.MaplePacketCreator; +import client.MapleCharacter; +import net.server.Server; + +public final class GuildOperationHandler extends AbstractMaplePacketHandler { + private boolean isGuildNameAcceptable(String name) { + if (name.length() < 3 || name.length() > 12) { + return false; + } + for (int i = 0; i < name.length(); i++) { + if (!Character.isLowerCase(name.charAt(i)) && !Character.isUpperCase(name.charAt(i))) { + return false; + } + } + return true; + } + + private void respawnPlayer(MapleCharacter mc) { + mc.getMap().broadcastMessage(mc, MaplePacketCreator.removePlayerFromMap(mc.getId()), false); + mc.getMap().broadcastMessage(mc, MaplePacketCreator.spawnPlayerMapobject(mc), false); + } + + private class Invited { + public String name; + public int gid; + public long expiration; + + public Invited(String n, int id) { + name = n.toLowerCase(); + gid = id; + expiration = System.currentTimeMillis() + 60 * 60 * 1000; + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof Invited)) { + return false; + } + Invited oth = (Invited) other; + return (gid == oth.gid && name.equals(oth)); + } + + @Override + public int hashCode() { + int hash = 3; + hash = 83 * hash + (this.name != null ? this.name.hashCode() : 0); + hash = 83 * hash + this.gid; + return hash; + } + } + private java.util.List invited = new java.util.LinkedList(); + private long nextPruneTime = System.currentTimeMillis() + 20 * 60 * 1000; + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (System.currentTimeMillis() >= nextPruneTime) { + Iterator itr = invited.iterator(); + Invited inv; + while (itr.hasNext()) { + inv = itr.next(); + if (System.currentTimeMillis() >= inv.expiration) { + itr.remove(); + } + } + nextPruneTime = System.currentTimeMillis() + 20 * 60 * 1000; + } + MapleCharacter mc = c.getPlayer(); + byte type = slea.readByte(); + switch (type) { + case 0x00: + //c.announce(MaplePacketCreator.showGuildInfo(mc)); + break; + case 0x02: + if (mc.getGuildId() > 0 || mc.getMapId() != 200000301) { + c.getPlayer().dropMessage(1, "You cannot create a new Guild while in one."); + return; + } + if (mc.getMeso() < MapleGuild.CREATE_GUILD_COST) { + c.getPlayer().dropMessage(1, "You do not have enough mesos to create a Guild."); + return; + } + String guildName = slea.readMapleAsciiString(); + if (!isGuildNameAcceptable(guildName)) { + c.getPlayer().dropMessage(1, "The Guild name you have chosen is not accepted."); + return; + } + int gid; + + gid = Server.getInstance().createGuild(mc.getId(), guildName); + if (gid == 0) { + c.announce(MaplePacketCreator.genericGuildMessage((byte) 0x1c)); + return; + } + mc.gainMeso(-MapleGuild.CREATE_GUILD_COST, true, false, true); + mc.setGuildId(gid); + mc.setGuildRank(1); + mc.saveGuildStatus(); + c.announce(MaplePacketCreator.showGuildInfo(mc)); + c.getPlayer().dropMessage(1, "You have successfully created a Guild."); + respawnPlayer(mc); + break; + case 0x05: + if (mc.getGuildId() <= 0 || mc.getGuildRank() > 2) { + return; + } + String name = slea.readMapleAsciiString(); + MapleGuildResponse mgr = MapleGuild.sendInvite(c, name); + if (mgr != null) { + c.announce(mgr.getPacket()); + } else { + Invited inv = new Invited(name, mc.getGuildId()); + if (!invited.contains(inv)) { + invited.add(inv); + } + } + break; + case 0x06: + if (mc.getGuildId() > 0) { + System.out.println("[hax] " + mc.getName() + " attempted to join a guild when s/he is already in one."); + return; + } + gid = slea.readInt(); + int cid = slea.readInt(); + if (cid != mc.getId()) { + System.out.println("[hax] " + mc.getName() + " attempted to join a guild with a different character id."); + return; + } + name = mc.getName().toLowerCase(); + Iterator itr = invited.iterator(); + boolean bOnList = false; + while (itr.hasNext()) { + Invited inv = itr.next(); + if (gid == inv.gid && name.equals(inv.name)) { + bOnList = true; + itr.remove(); + break; + } + } + if (!bOnList) { + System.out.println("[hax] " + mc.getName() + " is trying to join a guild that never invited him/her (or that the invitation has expired)"); + return; + } + mc.setGuildId(gid); // joins the guild + mc.setGuildRank(5); // start at lowest rank + int s; + + s = Server.getInstance().addGuildMember(mc.getMGC()); + if (s == 0) { + c.getPlayer().dropMessage(1, "The Guild you are trying to join is already full."); + mc.setGuildId(0); + return; + } + c.announce(MaplePacketCreator.showGuildInfo(mc)); + mc.saveGuildStatus(); // update database + respawnPlayer(mc); + break; + case 0x07: + cid = slea.readInt(); + name = slea.readMapleAsciiString(); + if (cid != mc.getId() || !name.equals(mc.getName()) || mc.getGuildId() <= 0) { + System.out.println("[hax] " + mc.getName() + " tried to quit guild under the name \"" + name + "\" and current guild id of " + mc.getGuildId() + "."); + return; + } + c.announce(MaplePacketCreator.updateGP(mc.getGuildId(), 0)); + Server.getInstance().leaveGuild(mc.getMGC()); + c.announce(MaplePacketCreator.showGuildInfo(null)); + mc.setGuildId(0); + mc.saveGuildStatus(); + respawnPlayer(mc); + break; + case 0x08: + cid = slea.readInt(); + name = slea.readMapleAsciiString(); + if (mc.getGuildRank() > 2 || mc.getGuildId() <= 0) { + System.out.println("[hax] " + mc.getName() + " is trying to expel without rank 1 or 2."); + return; + } + + Server.getInstance().expelMember(mc.getMGC(), name, cid); + break; + case 0x0d: + if (mc.getGuildId() <= 0 || mc.getGuildRank() != 1) { + System.out.println("[hax] " + mc.getName() + " tried to change guild rank titles when s/he does not have permission."); + return; + } + String ranks[] = new String[5]; + for (int i = 0; i < 5; i++) { + ranks[i] = slea.readMapleAsciiString(); + } + + Server.getInstance().changeRankTitle(mc.getGuildId(), ranks); + break; + case 0x0e: + cid = slea.readInt(); + byte newRank = slea.readByte(); + if (mc.getGuildRank() > 2 || (newRank <= 2 && mc.getGuildRank() != 1) || mc.getGuildId() <= 0) { + System.out.println("[hax] " + mc.getName() + " is trying to change rank outside of his/her permissions."); + return; + } + if (newRank <= 1 || newRank > 5) { + return; + } + Server.getInstance().changeRank(mc.getGuildId(), cid, newRank); + break; + case 0x0f: + if (mc.getGuildId() <= 0 || mc.getGuildRank() != 1 || mc.getMapId() != 200000301) { + System.out.println("[hax] " + mc.getName() + " tried to change guild emblem without being the guild leader."); + return; + } + if (mc.getMeso() < MapleGuild.CHANGE_EMBLEM_COST) { + c.announce(MaplePacketCreator.serverNotice(1, "You do not have enough mesos to create a Guild.")); + return; + } + short bg = slea.readShort(); + byte bgcolor = slea.readByte(); + short logo = slea.readShort(); + byte logocolor = slea.readByte(); + Server.getInstance().setGuildEmblem(mc.getGuildId(), bg, bgcolor, logo, logocolor); + mc.gainMeso(-MapleGuild.CHANGE_EMBLEM_COST, true, false, true); + respawnPlayer(mc); + break; + case 0x10: + if (mc.getGuildId() <= 0 || mc.getGuildRank() > 2) { + System.out.println("[hax] " + mc.getName() + " tried to change guild notice while not in a guild."); + return; + } + String notice = slea.readMapleAsciiString(); + if (notice.length() > 100) { + return; + } + Server.getInstance().setGuildNotice(mc.getGuildId(), notice); + break; + default: + System.out.println("Unhandled GUILD_OPERATION packet: \n" + slea.toString()); + } + } +} diff --git a/src/net/server/channel/handlers/HealOvertimeHandler.java b/src/net/server/channel/handlers/HealOvertimeHandler.java new file mode 100644 index 0000000000..28e6e658a7 --- /dev/null +++ b/src/net/server/channel/handlers/HealOvertimeHandler.java @@ -0,0 +1,63 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import client.autoban.AutobanManager; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.MaplePacketCreator; + +public final class HealOvertimeHandler extends AbstractMaplePacketHandler { + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + AutobanManager abm = chr.getAutobanManager(); + int timestamp = slea.readInt(); + abm.setTimestamp(0, timestamp, 3); + slea.skip(4); + short healHP = slea.readShort(); + if (healHP != 0) { + if ((abm.getLastSpam(0) + 1500) > timestamp) AutobanFactory.FAST_HP_HEALING.addPoint(abm, "Fast hp healing"); + + int abHeal = 140; + if(chr.getMapId() == 105040401 || chr.getMapId() == 105040402 || chr.getMapId() == 809000101 || chr.getMapId() == 809000201) abHeal += 40; // Sleepywood sauna and showa spa... + if (healHP > abHeal) { + AutobanFactory.HIGH_HP_HEALING.autoban(chr, "Healing: " + healHP + "; Max is " + abHeal + "."); + return; + } + chr.addHP(healHP); + + chr.getMap().broadcastMessage(chr, MaplePacketCreator.showHpHealed(chr.getId(), healHP), false); + chr.checkBerserk(); + abm.spam(0, timestamp); + } + short healMP = slea.readShort(); + if (healMP != 0 && healMP < 1000) { + if ((abm.getLastSpam(1) + 1500) > timestamp) AutobanFactory.FAST_MP_HEALING.addPoint(abm, "Fast mp healing"); + chr.addMP(healMP); + abm.spam(1, timestamp); + } + } +} diff --git a/src/net/server/channel/handlers/HiredMerchantRequest.java b/src/net/server/channel/handlers/HiredMerchantRequest.java new file mode 100644 index 0000000000..6910dffd43 --- /dev/null +++ b/src/net/server/channel/handlers/HiredMerchantRequest.java @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.inventory.ItemFactory; +import client.MapleCharacter; +import java.sql.SQLException; +import java.util.Arrays; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.maps.MapleMapObjectType; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author XoticStory + */ +public final class HiredMerchantRequest extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + if (chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapleMapObjectType.HIRED_MERCHANT)).isEmpty() && chr.getMapId() > 910000000 && chr.getMapId() < 910000023) { + if (!chr.hasMerchant()) { + try { + if (ItemFactory.MERCHANT.loadItems(chr.getId(), false).isEmpty() && chr.getMerchantMeso() == 0) { + c.announce(MaplePacketCreator.hiredMerchantBox()); + } else { + chr.announce(MaplePacketCreator.retrieveFirstMessage()); + } + } catch (SQLException ex) { + } + } else { + chr.dropMessage(1, "You already have a store open."); + } + } else { + chr.dropMessage(1, "You cannot open your hired merchant here."); + } + } +} diff --git a/src/net/server/channel/handlers/InnerPortalHandler.java b/src/net/server/channel/handlers/InnerPortalHandler.java new file mode 100644 index 0000000000..9dd4a31a4f --- /dev/null +++ b/src/net/server/channel/handlers/InnerPortalHandler.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author BubblesDev + */ +public final class InnerPortalHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/ItemIdSortHandler.java b/src/net/server/channel/handlers/ItemIdSortHandler.java new file mode 100644 index 0000000000..9576f2ea89 --- /dev/null +++ b/src/net/server/channel/handlers/ItemIdSortHandler.java @@ -0,0 +1,90 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.ModifyInventory; + +/** + * + * @author BubblesDev + */ +public final class ItemIdSortHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + chr.getAutobanManager().setTimestamp(4, slea.readInt(), 3); + byte inventoryType = slea.readByte(); + + if(!chr.isGM() || !ServerConstants.USE_ITEM_SORT) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + + if (inventoryType < 1 || inventoryType > 5) { + c.disconnect(false, false); + return; + } + + MapleInventory inventory = chr.getInventory(MapleInventoryType.getByType(inventoryType)); + ArrayList itemarray = new ArrayList<>(); + List mods = new ArrayList<>(); + for (short i = 1; i <= inventory.getSlotLimit(); i++) { + Item item = inventory.getItem(i); + if (item != null) { + itemarray.add((Item) item.copy()); + } + } + + Collections.sort(itemarray); + for (Item item : itemarray) { + inventory.removeItem(item.getPosition()); + } + + for (Item item : itemarray) { + //short position = item.getPosition(); + inventory.addItem(item); + if (inventory.getType().equals(MapleInventoryType.EQUIP)) { + mods.add(new ModifyInventory(3, item)); + mods.add(new ModifyInventory(0, item.copy()));//to prevent crashes + //mods.add(new ModifyInventory(2, item.copy(), position)); + } + } + itemarray.clear(); + c.announce(MaplePacketCreator.modifyInventory(true, mods)); + c.announce(MaplePacketCreator.finishedSort2(inventoryType)); + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/ItemMoveHandler.java b/src/net/server/channel/handlers/ItemMoveHandler.java new file mode 100644 index 0000000000..1c5048775f --- /dev/null +++ b/src/net/server/channel/handlers/ItemMoveHandler.java @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class ItemMoveHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.skip(4); + if(c.getPlayer().getAutobanManager().getLastSpam(6) + 300 > System.currentTimeMillis()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + MapleInventoryType type = MapleInventoryType.getByType(slea.readByte()); + byte src = (byte) slea.readShort(); + byte action = (byte) slea.readShort(); + short quantity = slea.readShort(); + if (src < 0 && action > 0) { + MapleInventoryManipulator.unequip(c, src, action); + } else if (action < 0) { + MapleInventoryManipulator.equip(c, src, action); + } else if (action == 0) { + MapleInventoryManipulator.drop(c, type, src, quantity); + } else { + MapleInventoryManipulator.move(c, type, src, action); + } + c.getPlayer().getAutobanManager().spam(6); + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/ItemPickupHandler.java b/src/net/server/channel/handlers/ItemPickupHandler.java new file mode 100644 index 0000000000..62da1d67d2 --- /dev/null +++ b/src/net/server/channel/handlers/ItemPickupHandler.java @@ -0,0 +1,177 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import net.server.world.MaplePartyCharacter; +import scripting.item.ItemScriptManager; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleItemInformationProvider.scriptedItem; +import server.maps.MapleMapItem; +import server.maps.MapleMapObject; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; + +/** + * + * @author Matze + */ +public final class ItemPickupHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(final SeekableLittleEndianAccessor slea, final MapleClient c) { + slea.readInt(); //Timestamp + slea.readByte(); + slea.readPos(); //cpos + int oid = slea.readInt(); + MapleCharacter chr = c.getPlayer(); + MapleMapObject ob = chr.getMap().getMapObject(oid); + if (ob == null) { + return; + } + + if (ob instanceof MapleMapItem) { + MapleMapItem mapitem = (MapleMapItem) ob; + if(System.currentTimeMillis() - mapitem.getDropTime() < 900) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (mapitem.getItemId() == 4031865 || mapitem.getItemId() == 4031866 || mapitem.getMeso() > 0 || MapleItemInformationProvider.getInstance().isConsumeOnPickup(mapitem.getItemId()) || MapleInventoryManipulator.checkSpace(c, mapitem.getItemId(), mapitem.getItem().getQuantity(), mapitem.getItem().getOwner())) { + if ((chr.getMapId() > 209000000 && chr.getMapId() < 209000016) || (chr.getMapId() >= 990000500 && chr.getMapId() <= 990000502)) {//happyville trees and guild PQ + if (!mapitem.isPlayerDrop() || mapitem.getDropper().getObjectId() == c.getPlayer().getObjectId()) { + if(mapitem.getMeso() > 0) { + chr.gainMeso(mapitem.getMeso(), true, true, false); + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 2, chr.getId()), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + mapitem.setPickedUp(true); + } else if (MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), false)) { + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 2, chr.getId()), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + mapitem.setPickedUp(true); + } else { + c.announce(MaplePacketCreator.enableActions()); + return; + } + } else { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return; + } + c.announce(MaplePacketCreator.enableActions()); + return; + } + + synchronized (mapitem) { + if (mapitem.getQuest() > 0 && !chr.needQuestItem(mapitem.getQuest(), mapitem.getItemId())) { + c.announce(MaplePacketCreator.showItemUnavailable()); + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (mapitem.isPickedUp()) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return; + } + if (mapitem.getMeso() > 0) { + if (chr.getParty() != null) { + int mesosamm = mapitem.getMeso(); + if (mesosamm > 50000 * chr.getMesoRate()) { + return; + } + int partynum = 0; + for (MaplePartyCharacter partymem : chr.getParty().getMembers()) { + if (partymem.isOnline() && partymem.getMapId() == chr.getMap().getId() && partymem.getChannel() == c.getChannel()) { + partynum++; + } + } + for (MaplePartyCharacter partymem : chr.getParty().getMembers()) { + if (partymem.isOnline() && partymem.getMapId() == chr.getMap().getId()) { + MapleCharacter somecharacter = c.getChannelServer().getPlayerStorage().getCharacterById(partymem.getId()); + if (somecharacter != null) { + somecharacter.gainMeso(mesosamm / partynum, true, true, false); + } + } + } + } else { + chr.gainMeso(mapitem.getMeso(), true, true, false); + } + } else if (mapitem.getItem().getItemId() / 10000 == 243) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + scriptedItem info = ii.getScriptedItemInfo(mapitem.getItem().getItemId()); + if (info.runOnPickup()) { + ItemScriptManager ism = ItemScriptManager.getInstance(); + String scriptName = info.getScript(); + if (ism.scriptExists(scriptName)) { + ism.getItemScript(c, scriptName); + } + + } else { + if (!MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true)) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + } else if(mapitem.getItemId() == 4031865 || mapitem.getItemId() == 4031866) { + // Add NX to account, show effect and make item disapear + chr.getCashShop().gainCash(1, mapitem.getItemId() == 4031865 ? 100 : 250); + } else if (useItem(c, mapitem.getItem().getItemId())) { + if (mapitem.getItem().getItemId() / 10000 == 238) { + chr.getMonsterBook().addCard(c, mapitem.getItem().getItemId()); + } + } else if (MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true)) { + } else if (mapitem.getItem().getItemId() == 4031868) { + chr.getMap().broadcastMessage(MaplePacketCreator.updateAriantPQRanking(chr.getName(), chr.getItemQuantity(4031868, false), false)); + } else { + c.announce(MaplePacketCreator.enableActions()); + return; + } + mapitem.setPickedUp(true); + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 2, chr.getId()), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } + } + } + c.announce(MaplePacketCreator.enableActions()); + } + + static boolean useItem(final MapleClient c, final int id) { + if (id / 1000000 == 2) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (ii.isConsumeOnPickup(id)) { + if (id > 2022430 && id < 2022434) { + for (MapleCharacter mc : c.getPlayer().getMap().getCharacters()) { + if (mc.getParty() == c.getPlayer().getParty()) { + ii.getItemEffect(id).applyTo(mc); + } + } + } else { + ii.getItemEffect(id).applyTo(c.getPlayer()); + } + return true; + } + } + return false; + } +} diff --git a/src/net/server/channel/handlers/ItemRewardHandler.java b/src/net/server/channel/handlers/ItemRewardHandler.java new file mode 100644 index 0000000000..eecdd3bbdc --- /dev/null +++ b/src/net/server/channel/handlers/ItemRewardHandler.java @@ -0,0 +1,77 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import constants.ItemConstants; +import java.util.List; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleItemInformationProvider.RewardItem; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @author Jay Estrella/ Modified by kevintjuh93 + */ +public final class ItemRewardHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte slot = (byte) slea.readShort(); + int itemId = slea.readInt(); // will load from xml I don't care. + if (c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot).getItemId() != itemId || c.getPlayer().getInventory(MapleInventoryType.USE).countById(itemId) < 1) return; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Pair> rewards = ii.getItemReward(itemId); + for (RewardItem reward : rewards.getRight()) { + if (!MapleInventoryManipulator.checkSpace(c, reward.itemid, reward.quantity, "")) { + c.announce(MaplePacketCreator.getShowInventoryFull()); + break; + } + if (Randomizer.nextInt(rewards.getLeft()) < reward.prob) {//Is it even possible to get an item with prob 1? + if (ItemConstants.getInventoryType(reward.itemid) == MapleInventoryType.EQUIP) { + final Item item = ii.getEquipById(reward.itemid); + if (reward.period != -1) { + item.setExpiration(System.currentTimeMillis() + (reward.period * 60 * 60 * 10)); + } + MapleInventoryManipulator.addFromDrop(c, item, false); + } else { + MapleInventoryManipulator.addById(c, reward.itemid, reward.quantity); + } + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, false, false); + if (reward.worldmsg != null) { + String msg = reward.worldmsg; + msg.replaceAll("/name", c.getPlayer().getName()); + msg.replaceAll("/item", ii.getName(reward.itemid)); + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(6, msg)); + } + break; + } + } + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/ItemSortHandler.java b/src/net/server/channel/handlers/ItemSortHandler.java new file mode 100644 index 0000000000..843a63834b --- /dev/null +++ b/src/net/server/channel/handlers/ItemSortHandler.java @@ -0,0 +1,75 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; + +public final class ItemSortHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + chr.getAutobanManager().setTimestamp(2, slea.readInt(), 3); + MapleInventoryType inventoryType = MapleInventoryType.getByType(slea.readByte()); + if (inventoryType.equals(MapleInventoryType.UNDEFINED) || c.getPlayer().getInventory(inventoryType).isFull()) { + c.getSession().write(MaplePacketCreator.enableActions()); + return; + } + if(ServerConstants.USE_ITEM_SORT == false) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + + MapleInventory inventory = c.getPlayer().getInventory(inventoryType); + boolean sorted = false; + + while (!sorted) { + short freeSlot = inventory.getNextFreeSlot(); + if (freeSlot != -1) { + short itemSlot = -1; + for (short i = (short) (freeSlot + 1); i <= inventory.getSlotLimit(); i = (short) (i + 1)) { + if (inventory.getItem(i) != null) { + itemSlot = i; + break; + } + } + if (itemSlot > 0) { + MapleInventoryManipulator.move(c, inventoryType, itemSlot, freeSlot); + } else { + sorted = true; + } + } else { + sorted = true; + } + } + c.getSession().write(MaplePacketCreator.finishedSort(inventoryType.getType())); + c.getSession().write(MaplePacketCreator.enableActions()); + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/KeymapChangeHandler.java b/src/net/server/channel/handlers/KeymapChangeHandler.java new file mode 100644 index 0000000000..b0da962abf --- /dev/null +++ b/src/net/server/channel/handlers/KeymapChangeHandler.java @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import constants.GameConstants; +import client.MapleClient; +import client.MapleKeyBinding; +import client.Skill; +import client.SkillFactory; +import client.autoban.AutobanFactory; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import tools.FilePrinter; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class KeymapChangeHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (slea.available() >= 8) { + int mode = slea.readInt(); + if(mode == 0) { + int numChanges = slea.readInt(); + for (int i = 0; i < numChanges; i++) { + int key = slea.readInt(); + int type = slea.readByte(); + int action = slea.readInt(); + Skill skill = SkillFactory.getSkill(action); + boolean isBanndedSkill = false; + if (skill != null) { + isBanndedSkill = GameConstants.bannedBindSkills(skill.getId()); + if (isBanndedSkill || (!c.getPlayer().isGM() && GameConstants.isGMSkills(skill.getId())) || (!GameConstants.isInJobTree(skill.getId(), c.getPlayer().getJob().getId()) && !c.getPlayer().isGM())) { //for those skills are are "technically" in the beginner tab, like bamboo rain in Dojo or skills you find in PYPQ + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit keymapping."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skill.getId() + "\r\n"); + c.disconnect(true, false); + return; + } + if (c.getPlayer().getSkillLevel(skill) < 1) { + continue; + } + } + c.getPlayer().changeKeybinding(key, new MapleKeyBinding(type, action)); + } + } else if(mode == 1) { // Auto HP Potion + int itemID = slea.readInt(); + if(itemID != 0 && c.getPlayer().getInventory(MapleInventoryType.USE).findById(itemID) == null) { + c.disconnect(false, false); // Don't let them send a packet with a use item they dont have. + return; + } + c.getPlayer().changeKeybinding(91, new MapleKeyBinding(7, itemID)); + } else if(mode == 2) { // Auto MP Potion + int itemID = slea.readInt(); + if(itemID != 0 && c.getPlayer().getInventory(MapleInventoryType.USE).findById(itemID) == null) { + c.disconnect(false, false); // Don't let them send a packet with a use item they dont have. + return; + } + c.getPlayer().changeKeybinding(92, new MapleKeyBinding(7, itemID)); + } + } + } +} diff --git a/src/net/server/channel/handlers/LeftKnockbackHandler.java b/src/net/server/channel/handlers/LeftKnockbackHandler.java new file mode 100644 index 0000000000..7a71d85ce5 --- /dev/null +++ b/src/net/server/channel/handlers/LeftKnockbackHandler.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public class LeftKnockbackHandler extends AbstractMaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, final MapleClient c) { + c.announce(MaplePacketCreator.leftKnockBack()); + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/MTSHandler.java b/src/net/server/channel/handlers/MTSHandler.java new file mode 100644 index 0000000000..420f6f69f9 --- /dev/null +++ b/src/net/server/channel/handlers/MTSHandler.java @@ -0,0 +1,834 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import net.server.channel.Channel; +import server.MTSItemInfo; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventoryType; + +public final class MTSHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().getCashShop().isOpened()) { + return; + } + if (slea.available() > 0) { + byte op = slea.readByte(); + if (op == 2) { //put item up for sale + byte itemtype = slea.readByte(); + int itemid = slea.readInt(); + slea.readShort(); + slea.skip(7); + short stars = 1; + if (itemtype == 1) { + slea.skip(32); + } else { + stars = slea.readShort(); + } + slea.readMapleAsciiString(); //another useless thing (owner) + if (itemtype == 1) { + slea.skip(32); + } else { + slea.readShort(); + } + short slot; + short quantity; + if (itemtype != 1) { + if (itemid / 10000 == 207 || itemid / 10000 == 233) { + slea.skip(8); + } + slot = (short) slea.readInt(); + } else { + slot = (short) slea.readInt(); + } + if (itemtype != 1) { + if (itemid / 10000 == 207 || itemid / 10000 == 233) { + quantity = stars; + slea.skip(4); + } else { + quantity = (short) slea.readInt(); + } + } else { + quantity = (byte) slea.readInt(); + } + int price = slea.readInt(); + if (itemtype == 1) { + quantity = 1; + } + if (quantity < 0 || price < 110 || c.getPlayer().getItemQuantity(itemid, false) < quantity) { + return; + } + MapleInventoryType type = MapleItemInformationProvider.getInstance().getInventoryType(itemid); + Item i = c.getPlayer().getInventory(type).getItem(slot).copy(); + if (i != null && c.getPlayer().getMeso() >= 5000) { + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE seller = ?"); + ps.setInt(1, c.getPlayer().getId()); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + if (rs.getInt(1) > 10) { //They have more than 10 items up for sale already! + c.getPlayer().dropMessage(1, "You already have 10 items up for auction!"); + c.announce(getMTS(1, 0, 0)); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + rs.close(); + ps.close(); + return; + } + } + rs.close(); + ps.close(); + Calendar calendar = Calendar.getInstance(); + int year; + int month; + int day; + int oldmax = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + int oldday = calendar.get(Calendar.DAY_OF_MONTH) + 7; + if (oldmax < oldday) { + if (calendar.get(Calendar.MONTH) + 2 > 12) { + year = calendar.get(Calendar.YEAR) + 1; + month = 1; + calendar.set(year, month, 1); + day = oldday - oldmax; + } else { + month = calendar.get(Calendar.MONTH) + 2; + year = calendar.get(Calendar.YEAR); + calendar.set(year, month, 1); + day = oldday - oldmax; + } + } else { + day = calendar.get(Calendar.DAY_OF_MONTH) + 7; + month = calendar.get(Calendar.MONTH); + year = calendar.get(Calendar.YEAR); + } + String date = year + "-"; + if (month < 10) { + date += "0" + month + "-"; + } else { + date += month + "-"; + } + if (day < 10) { + date += "0" + day; + } else { + date += day + ""; + } + if (i.getType() == 2) { + Item item = (Item) i; + ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, seller, price, owner, sellername, sell_ends) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); + ps.setInt(1, 1); + ps.setInt(2, (int) type.getType()); + ps.setInt(3, item.getItemId()); + ps.setInt(4, quantity); + ps.setInt(5, c.getPlayer().getId()); + ps.setInt(6, price); + ps.setString(7, item.getOwner()); + ps.setString(8, c.getPlayer().getName()); + ps.setString(9, date); + } else { + Equip equip = (Equip) i; + ps = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, seller, price, upgradeslots, level, str, dex, `int`, luk, hp, mp, watk, matk, wdef, mdef, acc, avoid, hands, speed, jump, locked, owner, sellername, sell_ends, vicious, flag) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + ps.setInt(1, 1); + ps.setInt(2, (int) type.getType()); + ps.setInt(3, equip.getItemId()); + ps.setInt(4, quantity); + ps.setInt(5, c.getPlayer().getId()); + ps.setInt(6, price); + ps.setInt(7, equip.getUpgradeSlots()); + ps.setInt(8, equip.getLevel()); + ps.setInt(9, equip.getStr()); + ps.setInt(10, equip.getDex()); + ps.setInt(11, equip.getInt()); + ps.setInt(12, equip.getLuk()); + ps.setInt(13, equip.getHp()); + ps.setInt(14, equip.getMp()); + ps.setInt(15, equip.getWatk()); + ps.setInt(16, equip.getMatk()); + ps.setInt(17, equip.getWdef()); + ps.setInt(18, equip.getMdef()); + ps.setInt(19, equip.getAcc()); + ps.setInt(20, equip.getAvoid()); + ps.setInt(21, equip.getHands()); + ps.setInt(22, equip.getSpeed()); + ps.setInt(23, equip.getJump()); + ps.setInt(24, 0); + ps.setString(25, equip.getOwner()); + ps.setString(26, c.getPlayer().getName()); + ps.setString(27, date); + ps.setInt(28, equip.getVicious()); + ps.setInt(29, equip.getFlag()); + } + ps.executeUpdate(); + ps.close(); + MapleInventoryManipulator.removeFromSlot(c, type, slot, quantity, false); + } catch (SQLException e) { + } + c.getPlayer().gainMeso(-5000, false); + c.announce(MaplePacketCreator.MTSConfirmSell()); + c.announce(getMTS(1, 0, 0)); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + } + } else if (op == 3) { //send offer for wanted item + } else if (op == 4) { //list wanted item + slea.readInt(); + slea.readInt(); + slea.readInt(); + slea.readShort(); + slea.readMapleAsciiString(); + } else if (op == 5) { //change page + int tab = slea.readInt(); + int type = slea.readInt(); + int page = slea.readInt(); + c.getPlayer().changePage(page); + if (tab == 4 && type == 0) { + c.announce(getCart(c.getPlayer().getId())); + } else if (tab == c.getPlayer().getCurrentTab() && type == c.getPlayer().getCurrentType() && c.getPlayer().getSearch() != null) { + c.announce(getMTSSearch(tab, type, c.getPlayer().getCurrentCI(), c.getPlayer().getSearch(), page)); + } else { + c.getPlayer().setSearch(null); + c.announce(getMTS(tab, type, page)); + } + c.getPlayer().changeTab(tab); + c.getPlayer().changeType(type); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + } else if (op == 6) { //search + int tab = slea.readInt(); + int type = slea.readInt(); + slea.readInt(); + int ci = slea.readInt(); + String search = slea.readMapleAsciiString(); + c.getPlayer().setSearch(search); + c.getPlayer().changeTab(tab); + c.getPlayer().changeType(type); + c.getPlayer().changeCI(ci); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.enableActions()); + c.announce(getMTSSearch(tab, type, ci, search, c.getPlayer().getCurrentPage())); + c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + } else if (op == 7) { //cancel sale + int id = slea.readInt(); //id of the item + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("UPDATE mts_items SET transfer = 1 WHERE id = ? AND seller = ?"); + ps.setInt(1, id); + ps.setInt(2, c.getPlayer().getId()); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?"); + ps.setInt(1, id); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + } else if (op == 8) { //transfer item from transfer inv. + int id = slea.readInt(); //id of the item + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + try { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 1 AND id= ? ORDER BY id DESC"); + ps.setInt(1, c.getPlayer().getId()); + ps.setInt(2, id); + rs = ps.executeQuery(); + if (rs.next()) { + Item i; + if (rs.getInt("type") != 1) { + Item ii = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + ii.setOwner(rs.getString("owner")); + ii.setPosition(c.getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(rs.getInt("itemid"))).getNextFreeSlot()); + i = ii.copy(); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setVicious((byte) rs.getInt("vicious")); + equip.setFlag((byte) rs.getInt("flag")); + equip.setPosition(c.getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(rs.getInt("itemid"))).getNextFreeSlot()); + i = equip.copy(); + } + try (PreparedStatement pse = con.prepareStatement("DELETE FROM mts_items WHERE id = ? AND seller = ? AND transfer = 1")) { + pse.setInt(1, id); + pse.setInt(2, c.getPlayer().getId()); + pse.executeUpdate(); + } + MapleInventoryManipulator.addFromDrop(c, i, false); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(getCart(c.getPlayer().getId())); + c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.announce(MaplePacketCreator.MTSConfirmTransfer(i.getQuantity(), i.getPosition())); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + } + rs.close(); + ps.close(); + } catch (SQLException e) { + System.out.println("MTS Transfer error: " + e); + } + } else if (op == 9) { //add to cart + int id = slea.readInt(); //id of the item + Connection con = DatabaseConnection.getConnection(); + try { + try (PreparedStatement ps1 = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? AND seller <> ?")) { + ps1.setInt(1, id);//Previene que agregues al cart tus propios items + ps1.setInt(2, c.getPlayer().getId()); + try (ResultSet rs1 = ps1.executeQuery()) { + if (rs1.next()) { + PreparedStatement ps = con.prepareStatement("SELECT * FROM mts_cart WHERE cid = ? AND itemid = ?"); + ps.setInt(1, c.getPlayer().getId()); + ps.setInt(2, id); + try (ResultSet rs = ps.executeQuery()) { + if (!rs.next()) { + try (PreparedStatement pse = con.prepareStatement("INSERT INTO mts_cart (cid, itemid) VALUES (?, ?)")) { + pse.setInt(1, c.getPlayer().getId()); + pse.setInt(2, id); + pse.executeUpdate(); + } + } + } + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.enableActions()); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + } else if (op == 10) { //delete from cart + int id = slea.readInt(); //id of the item + Connection con = DatabaseConnection.getConnection(); + try { + try (PreparedStatement ps = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ? AND cid = ?")) { + ps.setInt(1, id); + ps.setInt(2, c.getPlayer().getId()); + ps.executeUpdate(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + c.announce(getCart(c.getPlayer().getId())); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + } else if (op == 12) { //put item up for auction + } else if (op == 13) { //cancel wanted cart thing + } else if (op == 14) { //buy auction item now + } else if (op == 16) { //buy + int id = slea.readInt(); //id of the item + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + try { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? ORDER BY id DESC"); + ps.setInt(1, id); + rs = ps.executeQuery(); + if (rs.next()) { + int price = rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1); //taxes + if (c.getPlayer().getCashShop().getCash(4) >= price) { //FIX + boolean alwaysnull = true; + for (Channel cserv : Server.getInstance().getAllChannels()) { + MapleCharacter victim = cserv.getPlayerStorage().getCharacterById(rs.getInt("seller")); + if (victim != null) { + victim.getCashShop().gainCash(4, rs.getInt("price")); + alwaysnull = false; + } + } + if (alwaysnull) { + ResultSet rse; + try (PreparedStatement pse = con.prepareStatement("SELECT accountid FROM characters WHERE id = ?")) { + pse.setInt(1, rs.getInt("seller")); + rse = pse.executeQuery(); + if (rse.next()) { + try (PreparedStatement psee = con.prepareStatement("UPDATE accounts SET nxPrepaid = nxPrepaid + ? WHERE id = ?")) { + psee.setInt(1, rs.getInt("price")); + psee.setInt(2, rse.getInt("accountid")); + psee.executeUpdate(); + } + } + } + rse.close(); + } + PreparedStatement pse = con.prepareStatement("UPDATE mts_items SET seller = ?, transfer = 1 WHERE id = ?"); + pse.setInt(1, c.getPlayer().getId()); + pse.setInt(2, id); + pse.executeUpdate(); + pse.close(); + pse = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?"); + pse.setInt(1, id); + pse.executeUpdate(); + pse.close(); + c.getPlayer().getCashShop().gainCash(4, -price); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(getMTS(c.getPlayer().getCurrentTab(), c.getPlayer().getCurrentType(), c.getPlayer().getCurrentPage())); + c.announce(MaplePacketCreator.MTSConfirmBuy()); + c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.enableActions()); + } else { + c.announce(MaplePacketCreator.MTSFailBuy()); + } + } + rs.close(); + ps.close(); + } catch (SQLException e) { + c.announce(MaplePacketCreator.MTSFailBuy()); + } + } else if (op == 17) { //buy from cart + int id = slea.readInt(); //id of the item + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + try { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE id = ? ORDER BY id DESC"); + ps.setInt(1, id); + rs = ps.executeQuery(); + if (rs.next()) { + int price = rs.getInt("price") + 100 + (int) (rs.getInt("price") * 0.1); + if (c.getPlayer().getCashShop().getCash(4) >= price) { + for (Channel cserv : Server.getInstance().getAllChannels()) { + MapleCharacter victim = cserv.getPlayerStorage().getCharacterById(rs.getInt("seller")); + if (victim != null) { + victim.getCashShop().gainCash(4, rs.getInt("price")); + } else { + ResultSet rse; + try (PreparedStatement pse = con.prepareStatement("SELECT accountid FROM characters WHERE id = ?")) { + pse.setInt(1, rs.getInt("seller")); + rse = pse.executeQuery(); + if (rse.next()) { + try (PreparedStatement psee = con.prepareStatement("UPDATE accounts SET nxPrepaid = nxPrepaid + ? WHERE id = ?")) { + psee.setInt(1, rs.getInt("price")); + psee.setInt(2, rse.getInt("accountid")); + psee.executeUpdate(); + } + } + } + rse.close(); + } + } + PreparedStatement pse = con.prepareStatement("UPDATE mts_items SET seller = ?, transfer = 1 WHERE id = ?"); + pse.setInt(1, c.getPlayer().getId()); + pse.setInt(2, id); + pse.executeUpdate(); + pse.close(); + pse = con.prepareStatement("DELETE FROM mts_cart WHERE itemid = ?"); + pse.setInt(1, id); + pse.executeUpdate(); + pse.close(); + c.getPlayer().getCashShop().gainCash(4, -price); + c.announce(getCart(c.getPlayer().getId())); + c.announce(MaplePacketCreator.enableCSUse()); + c.announce(MaplePacketCreator.MTSConfirmBuy()); + c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); + c.announce(MaplePacketCreator.transferInventory(getTransfer(c.getPlayer().getId()))); + c.announce(MaplePacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId()))); + } else { + c.announce(MaplePacketCreator.MTSFailBuy()); + } + } + rs.close(); + ps.close(); + } catch (SQLException e) { + c.announce(MaplePacketCreator.MTSFailBuy()); + } + } else { + System.out.println("Unhandled OP(MTS): " + op + " Packet: " + slea.toString()); + } + } else { + c.announce(MaplePacketCreator.showMTSCash(c.getPlayer())); + } + } + + public List getNotYetSold(int cid) { + List items = new ArrayList<>(); + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + try { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE seller = ? AND transfer = 0 ORDER BY id DESC"); + ps.setInt(1, cid); + rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (byte) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo((Item) i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + rs.close(); + ps.close(); + } catch (SQLException e) { + } + return items; + } + + public byte[] getCart(int cid) { + List items = new ArrayList<>(); + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + int pages = 0; + try { + ps = con.prepareStatement("SELECT * FROM mts_cart WHERE cid = ? ORDER BY id DESC"); + ps.setInt(1, cid); + rs = ps.executeQuery(); + while (rs.next()) { + try (PreparedStatement pse = con.prepareStatement("SELECT * FROM mts_items WHERE id = ?")) { + pse.setInt(1, rs.getInt("itemid")); + ResultSet rse = pse.executeQuery(); + if (rse.next()) { + if (rse.getInt("type") != 1) { + Item i = new Item(rse.getInt("itemid"), (short) 0, (short) rse.getInt("quantity")); + i.setOwner(rse.getString("owner")); + items.add(new MTSItemInfo((Item) i, rse.getInt("price"), rse.getInt("id"), rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); + } else { + Equip equip = new Equip(rse.getInt("itemid"), (byte) rse.getInt("position"), -1); + equip.setOwner(rse.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rse.getInt("acc")); + equip.setAvoid((short) rse.getInt("avoid")); + equip.setDex((short) rse.getInt("dex")); + equip.setHands((short) rse.getInt("hands")); + equip.setHp((short) rse.getInt("hp")); + equip.setInt((short) rse.getInt("int")); + equip.setJump((short) rse.getInt("jump")); + equip.setVicious((short) rse.getInt("vicious")); + equip.setLuk((short) rse.getInt("luk")); + equip.setMatk((short) rse.getInt("matk")); + equip.setMdef((short) rse.getInt("mdef")); + equip.setMp((short) rse.getInt("mp")); + equip.setSpeed((short) rse.getInt("speed")); + equip.setStr((short) rse.getInt("str")); + equip.setWatk((short) rse.getInt("watk")); + equip.setWdef((short) rse.getInt("wdef")); + equip.setUpgradeSlots((byte) rse.getInt("upgradeslots")); + equip.setLevel((byte) rse.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rse.getInt("price"), rse.getInt("id"), rse.getInt("seller"), rse.getString("sellername"), rse.getString("sell_ends"))); + } + } + } + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT COUNT(*) FROM mts_cart WHERE cid = ?"); + ps.setInt(1, cid); + rs = ps.executeQuery(); + if (rs.next()) { + pages = rs.getInt(1) / 16; + if (rs.getInt(1) % 16 > 0) { + pages += 1; + } + } + rs.close(); + ps.close(); + } catch (SQLException e) { + } + return MaplePacketCreator.sendMTS(items, 4, 0, 0, pages); + } + + public List getTransfer(int cid) { + List items = new ArrayList<>(); + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + try { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE transfer = 1 AND seller = ? ORDER BY id DESC"); + ps.setInt(1, cid); + rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo((Item) i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + rs.close(); + ps.close(); + } catch (SQLException e) { + } + return items; + } + + private static byte[] getMTS(int tab, int type, int page) { + List items = new ArrayList<>(); + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + int pages = 0; + try { + if (type != 0) { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? AND type = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + } else { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + } + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + ps.setInt(3, page * 16); + } else { + ps.setInt(2, page * 16); + } + rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo((Item) i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + rs.close(); + ps.close(); + ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + (type != 0 ? "AND type = ?" : "") + "AND transfer = 0"); + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + } + rs = ps.executeQuery(); + if (rs.next()) { + pages = rs.getInt(1) / 16; + if (rs.getInt(1) % 16 > 0) { + pages++; + } + } + rs.close(); + ps.close(); + } catch (SQLException e) { + } + return MaplePacketCreator.sendMTS(items, tab, type, page, pages); // resniff + } + + public byte[] getMTSSearch(int tab, int type, int cOi, String search, int page) { + List items = new ArrayList<>(); + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + String listaitems = ""; + if (cOi != 0) { + List retItems = new ArrayList<>(); + for (Pair itemPair : ii.getAllItems()) { + if (itemPair.getRight().toLowerCase().contains(search.toLowerCase())) { + retItems.add(" itemid=" + itemPair.getLeft() + " OR "); + } + } + listaitems += " AND ("; + if (retItems != null && retItems.size() > 0) { + for (String singleRetItem : retItems) { + listaitems += singleRetItem; + } + listaitems += " itemid=0 )"; + } + } else { + listaitems = " AND sellername LIKE CONCAT('%','" + search + "', '%')"; + } + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + ResultSet rs; + int pages = 0; + try { + if (type != 0) { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? " + listaitems + " AND type = ? AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + } else { + ps = con.prepareStatement("SELECT * FROM mts_items WHERE tab = ? " + listaitems + " AND transfer = 0 ORDER BY id DESC LIMIT ?, 16"); + } + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + ps.setInt(3, page * 16); + } else { + ps.setInt(2, page * 16); + } + rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("type") != 1) { + Item i = new Item(rs.getInt("itemid"), (short) 0, (short) rs.getInt("quantity")); + i.setOwner(rs.getString("owner")); + items.add(new MTSItemInfo((Item) i, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } else { + Equip equip = new Equip(rs.getInt("itemid"), (byte) rs.getInt("position"), -1); + equip.setOwner(rs.getString("owner")); + equip.setQuantity((short) 1); + equip.setAcc((short) rs.getInt("acc")); + equip.setAvoid((short) rs.getInt("avoid")); + equip.setDex((short) rs.getInt("dex")); + equip.setHands((short) rs.getInt("hands")); + equip.setHp((short) rs.getInt("hp")); + equip.setInt((short) rs.getInt("int")); + equip.setJump((short) rs.getInt("jump")); + equip.setVicious((short) rs.getInt("vicious")); + equip.setLuk((short) rs.getInt("luk")); + equip.setMatk((short) rs.getInt("matk")); + equip.setMdef((short) rs.getInt("mdef")); + equip.setMp((short) rs.getInt("mp")); + equip.setSpeed((short) rs.getInt("speed")); + equip.setStr((short) rs.getInt("str")); + equip.setWatk((short) rs.getInt("watk")); + equip.setWdef((short) rs.getInt("wdef")); + equip.setUpgradeSlots((byte) rs.getInt("upgradeslots")); + equip.setLevel((byte) rs.getInt("level")); + equip.setFlag((byte) rs.getInt("flag")); + items.add(new MTSItemInfo((Item) equip, rs.getInt("price"), rs.getInt("id"), rs.getInt("seller"), rs.getString("sellername"), rs.getString("sell_ends"))); + } + } + rs.close(); + ps.close(); + if (type == 0) { + ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + listaitems + " AND transfer = 0"); + ps.setInt(1, tab); + if (type != 0) { + ps.setInt(2, type); + } + rs = ps.executeQuery(); + if (rs.next()) { + pages = rs.getInt(1) / 16; + if (rs.getInt(1) % 16 > 0) { + pages++; + } + } + rs.close(); + ps.close(); + } + } catch (SQLException e) { + } + return MaplePacketCreator.sendMTS(items, tab, type, page, pages); + } +} diff --git a/src/net/server/channel/handlers/MagicDamageHandler.java b/src/net/server/channel/handlers/MagicDamageHandler.java new file mode 100644 index 0000000000..78ec6f0ec5 --- /dev/null +++ b/src/net/server/channel/handlers/MagicDamageHandler.java @@ -0,0 +1,86 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import server.MapleStatEffect; +import server.TimerManager; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleCharacter.CancelCooldownAction; +import client.MapleClient; +import client.Skill; +import client.SkillFactory; +import constants.skills.Bishop; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.ILArchMage; + +public final class MagicDamageHandler extends AbstractDealDamageHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + player.setPetLootCd(System.currentTimeMillis()); + + /*long timeElapsed = System.currentTimeMillis() - player.getAutobanManager().getLastSpam(8); + if(timeElapsed < 300) { + AutobanFactory.FAST_ATTACK.alert(player, "Time: " + timeElapsed); + } + player.getAutobanManager().spam(8);*/ + + AttackInfo attack = parseDamage(slea, player, false, true); + + if (player.getBuffEffect(MapleBuffStat.MORPH) != null) { + if(player.getBuffEffect(MapleBuffStat.MORPH).isMorphWithoutAttack()) { + // How are they attacking when the client won't let them? + player.getClient().disconnect(false, false); + return; + } + } + + byte[] packet = MaplePacketCreator.magicAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, -1, attack.speed, attack.direction, attack.display); + if (attack.skill == Evan.FIRE_BREATH || attack.skill == Evan.ICE_BREATH || attack.skill == FPArchMage.BIG_BANG || attack.skill == ILArchMage.BIG_BANG || attack.skill == Bishop.BIG_BANG) { + packet = MaplePacketCreator.magicAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, attack.allDamage, attack.charge, attack.speed, attack.direction, attack.display); + } + player.getMap().broadcastMessage(player, packet, false, true); + MapleStatEffect effect = attack.getAttackEffect(player, null); + Skill skill = SkillFactory.getSkill(attack.skill); + MapleStatEffect effect_ = skill.getEffect(player.getSkillLevel(skill)); + if (effect_.getCooldown() > 0) { + if (player.skillisCooling(attack.skill)) { + return; + } else { + c.announce(MaplePacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); + player.addCooldown(attack.skill, System.currentTimeMillis(), effect_.getCooldown() * 1000, TimerManager.getInstance().schedule(new CancelCooldownAction(player, attack.skill), effect_.getCooldown() * 1000)); + } + } + applyAttack(attack, player, effect.getAttackCount()); + Skill eaterSkill = SkillFactory.getSkill((player.getJob().getId() - (player.getJob().getId() % 10)) * 10000);// MP Eater, works with right job + int eaterLevel = player.getSkillLevel(eaterSkill); + if (eaterLevel > 0) { + for (Integer singleDamage : attack.allDamage.keySet()) { + eaterSkill.getEffect(eaterLevel).applyPassive(player, player.getMap().getMapObject(singleDamage), 0); + } + } + } +} diff --git a/src/net/server/channel/handlers/MakerSkillHandler.java b/src/net/server/channel/handlers/MakerSkillHandler.java new file mode 100644 index 0000000000..29ee0ad111 --- /dev/null +++ b/src/net/server/channel/handlers/MakerSkillHandler.java @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MakerItemFactory; +import server.MakerItemFactory.MakerItemCreateEntry; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public final class MakerSkillHandler extends AbstractMaplePacketHandler { + private MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readInt(); + int toCreate = slea.readInt(); + MakerItemCreateEntry recipe = MakerItemFactory.getItemCreateEntry(toCreate); + if (canCreate(c, recipe) && !c.getPlayer().getInventory(ii.getInventoryType(toCreate)).isFull()) { + for (Pair p : recipe.getReqItems()) { + int toRemove = p.getLeft(); + MapleInventoryManipulator.removeById(c, ii.getInventoryType(toRemove), toRemove, p.getRight(), false, false); + } + MapleInventoryManipulator.addById(c, toCreate, (short) recipe.getRewardAmount()); + } + } + + private boolean canCreate(MapleClient c, MakerItemCreateEntry recipe) { + return hasItems(c, recipe) && c.getPlayer().getMeso() >= recipe.getCost() && c.getPlayer().getLevel() >= recipe.getReqLevel() && c.getPlayer().getSkillLevel(c.getPlayer().getJob().getId() / 1000 * 1000 + 1007) >= recipe.getReqSkillLevel(); + } + + private boolean hasItems(MapleClient c, MakerItemCreateEntry recipe) { + for (Pair p : recipe.getReqItems()) { + int itemId = p.getLeft(); + if (c.getPlayer().getInventory(ii.getInventoryType(itemId)).countById(itemId) < p.getRight()) { + return false; + } + } + return true; + } +} diff --git a/src/net/server/channel/handlers/MesoDropHandler.java b/src/net/server/channel/handlers/MesoDropHandler.java new file mode 100644 index 0000000000..1e4a7d4052 --- /dev/null +++ b/src/net/server/channel/handlers/MesoDropHandler.java @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; + +/** + * + * @author Matze + */ +public final class MesoDropHandler extends AbstractMaplePacketHandler {//FIX + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + if (!player.isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (!player.canDropMeso()){ + player.announce(MaplePacketCreator.serverNotice(5, "Fast meso drop has been patched, cut that out. ;)")); + return; + } + slea.skip(4); + int meso = slea.readInt(); + if (meso <= player.getMeso() && meso > 9 && meso < 50001) { + player.gainMeso(-meso, false, true, false); + player.getMap().spawnMesoDrop(meso, player.getPosition(), player, player, true, (byte) 2); + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/MessengerHandler.java b/src/net/server/channel/handlers/MessengerHandler.java new file mode 100644 index 0000000000..657266bb6e --- /dev/null +++ b/src/net/server/channel/handlers/MessengerHandler.java @@ -0,0 +1,111 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import net.server.world.MapleMessenger; +import net.server.world.MapleMessengerCharacter; +import net.server.world.World; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class MessengerHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + String input; + byte mode = slea.readByte(); + MapleCharacter player = c.getPlayer(); + World world = c.getWorldServer(); + MapleMessenger messenger = player.getMessenger(); + switch (mode) { + case 0x00: + if (messenger == null) { + int messengerid = slea.readInt(); + if (messengerid == 0) { + MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(player, 0); + messenger = world.createMessenger(messengerplayer); + player.setMessenger(messenger); + player.setMessengerPosition(0); + } else { + messenger = world.getMessenger(messengerid); + int position = messenger.getLowestPosition(); + MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(player, position); + if (messenger.getMembers().size() < 3) { + player.setMessenger(messenger); + player.setMessengerPosition(position); + world.joinMessenger(messenger.getId(), messengerplayer, player.getName(), messengerplayer.getChannel()); + } + } + } + break; + case 0x02: + if (messenger != null) { + MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(player, player.getMessengerPosition()); + world.leaveMessenger(messenger.getId(), messengerplayer); + player.setMessenger(null); + player.setMessengerPosition(4); + } + break; + case 0x03: + if (messenger.getMembers().size() < 3) { + input = slea.readMapleAsciiString(); + MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(input); + if (target != null) { + if (target.getMessenger() == null) { + target.getClient().announce(MaplePacketCreator.messengerInvite(c.getPlayer().getName(), messenger.getId())); + c.announce(MaplePacketCreator.messengerNote(input, 4, 1)); + } else { + c.announce(MaplePacketCreator.messengerChat(player.getName() + " : " + input + " is already using Maple Messenger")); + } + } else { + if (world.find(input) > -1) { + world.messengerInvite(c.getPlayer().getName(), messenger.getId(), input, c.getChannel()); + } else { + c.announce(MaplePacketCreator.messengerNote(input, 4, 0)); + } + } + } else { + c.announce(MaplePacketCreator.messengerChat(player.getName() + " : You cannot have more than 3 people in the Maple Messenger")); + } + break; + case 0x05: + String targeted = slea.readMapleAsciiString(); + MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(targeted); + if (target != null) { + if (target.getMessenger() != null) { + target.getClient().announce(MaplePacketCreator.messengerNote(player.getName(), 5, 0)); + } + } else { + world.declineChat(targeted, player.getName()); + } + break; + case 0x06: + if (messenger != null) { + MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(player, player.getMessengerPosition()); + input = slea.readMapleAsciiString(); + world.messengerChat(messenger, input, messengerplayer.getName()); + } + break; + } + } +} diff --git a/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java b/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java new file mode 100644 index 0000000000..7dbb651c1a --- /dev/null +++ b/src/net/server/channel/handlers/MobDamageMobFriendlyHandler.java @@ -0,0 +1,63 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import server.life.MapleMonster; +import server.maps.MapleMap; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +/** + * + * @author Xotic & BubblesDev + */ + +public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int attacker = slea.readInt(); + slea.readInt(); + int damaged = slea.readInt(); + MapleMonster monster = c.getPlayer().getMap().getMonsterByOid(damaged); + + if (monster == null || c.getPlayer().getMap().getMonsterByOid(attacker) == null) { + return; + } + + int damage = Randomizer.nextInt(((monster.getMaxHp() / 13 + monster.getPADamage() * 10)) * 2 + 500) / 10; //Beng's formula. + // int damage = monster.getStats().getPADamage() + monster.getStats().getPDDamage() - 1; + + if (monster.getId() == 9300061) { + if (monster.getHp() - damage < 1) { + monster.getMap().broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny went home because he was sick.")); + c.getPlayer().getEventInstance().getMapInstance(monster.getMap().getId()).killFriendlies(monster); + } + MapleMap map = c.getPlayer().getEventInstance().getMapInstance(monster.getMap().getId()); + map.addBunnyHit(); + } + + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.MobDamageMobFriendly(monster, damage), monster.getPosition()); + c.announce(MaplePacketCreator.enableActions()); + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/MobDamageMobHandler.java b/src/net/server/channel/handlers/MobDamageMobHandler.java new file mode 100644 index 0000000000..9c6f53713d --- /dev/null +++ b/src/net/server/channel/handlers/MobDamageMobHandler.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.maps.MapleMap; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public final class MobDamageMobHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int from = slea.readInt(); + slea.readInt(); + int to = slea.readInt(); + slea.readByte(); + int dmg = slea.readInt(); + MapleMap map = c.getPlayer().getMap(); + if (map.getMonsterByOid(from) != null && map.getMonsterByOid(to) != null) { + map.damageMonster(c.getPlayer(), map.getMonsterByOid(to), dmg); + } + } +} diff --git a/src/net/server/channel/handlers/MonsterBombHandler.java b/src/net/server/channel/handlers/MonsterBombHandler.java new file mode 100644 index 0000000000..5cfbf079ff --- /dev/null +++ b/src/net/server/channel/handlers/MonsterBombHandler.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.life.MapleMonster; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class MonsterBombHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int oid = slea.readInt(); + MapleMonster monster = c.getPlayer().getMap().getMonsterByOid(oid); + if (!c.getPlayer().isAlive() || monster == null) { + return; + } + if (monster.getId() == 8500003 || monster.getId() == 8500004) { + monster.getMap().broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), 4)); + c.getPlayer().getMap().removeMapObject(oid); + } + } +} diff --git a/src/net/server/channel/handlers/MonsterBookCoverHandler.java b/src/net/server/channel/handlers/MonsterBookCoverHandler.java new file mode 100644 index 0000000000..ebe97ea7d7 --- /dev/null +++ b/src/net/server/channel/handlers/MonsterBookCoverHandler.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.MaplePacketCreator; + +public final class MonsterBookCoverHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int id = slea.readInt(); + if (id == 0 || id / 10000 == 238) { + c.getPlayer().setMonsterBookCover(id); + c.announce(MaplePacketCreator.changeCover(id)); + } + } +} diff --git a/src/net/server/channel/handlers/MonsterCarnivalHandler.java b/src/net/server/channel/handlers/MonsterCarnivalHandler.java new file mode 100644 index 0000000000..ccf29d9a38 --- /dev/null +++ b/src/net/server/channel/handlers/MonsterCarnivalHandler.java @@ -0,0 +1,223 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import java.awt.Point; +import net.AbstractMaplePacketHandler; +import server.partyquest.MonsterCarnival; +import server.life.MapleLifeFactory; +import server.maps.MapleReactor; +import server.maps.MapleReactorFactory; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler{ + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + MonsterCarnival carnival = chr.getCarnival(); + int tab = slea.readByte(); + int number = slea.readShort(); + if (carnival != null) { + if (chr.getCarnivalParty() != carnival.getPartyRed() || chr.getCarnivalParty() != carnival.getPartyBlue()) { + chr.getMap().broadcastMessage(MaplePacketCreator.leaveCPQ(chr)); + chr.changeMap(980000010); + } + if (chr.getCP() > getPrice(tab, number)) { + if (tab == 0) { //SPAWNING + if (chr.getCarnivalParty().canSummon()) { + chr.getMap().spawnCPQMonster(MapleLifeFactory.getMonster(getMonster(number)), new Point(1, 1), carnival.oppositeTeam(chr.getCarnivalParty()).getTeam()); + chr.getCarnivalParty().summon(); + } else + chr.announce(MaplePacketCreator.CPQMessage((byte) 2)); + + } else if (tab == 1) { + + } else if (tab == 2) { + int rid = 9980000 + chr.getTeam(); + MapleReactor reactor = new MapleReactor(MapleReactorFactory.getReactor(rid), rid); + /*switch (number) { + case 0: + reactor.setMonsterStatus(tab, MonsterStatus.WEAPON_ATTACK_UP, MobSkillFactory.getMobSkill(150, 1)); + break; + case 1: + reactor.setMonsterStatus(tab, MonsterStatus.WEAPON_DEFENSE_UP, MobSkillFactory.getMobSkill(151, 1)); + break; + case 2: + reactor.setMonsterStatus(tab, MonsterStatus.MAGIC_ATTACK_UP, MobSkillFactory.getMobSkill(152, 1)); + break; + case 3: + reactor.setMonsterStatus(tab, MonsterStatus.MAGIC_DEFENSE_UP, MobSkillFactory.getMobSkill(153, 1)); + break; + case 4: + reactor.setMonsterStatus(tab, MonsterStatus.ACC, MobSkillFactory.getMobSkill(154, 1)); + break; + case 5: + reactor.setMonsterStatus(tab, MonsterStatus.AVOID, MobSkillFactory.getMobSkill(155, 1)); + break; + case 6: + reactor.setMonsterStatus(tab, MonsterStatus.SPEED, MobSkillFactory.getMobSkill(156, 1)); + break; + case 7: + reactor.setMonsterStatus(tab, MonsterStatus.WEAPON_IMMUNITY, MobSkillFactory.getMobSkill(140, 1)); + break; + case 8: + reactor.setMonsterStatus(tab, MonsterStatus.MAGIC_IMMUNITY, MobSkillFactory.getMobSkill(141, 1)); + break; + } */ + chr.getMap().spawnReactor(reactor); + } + } else { + chr.getMap().broadcastMessage(MaplePacketCreator.CPQMessage((byte) 1)); + } + } else { + chr.announce(MaplePacketCreator.CPQMessage((byte) 5)); + } + chr.announce(MaplePacketCreator.enableActions()); + } + + public int getMonster(int num) { + int mid = 0; + num++; + switch (num) { + case 1: + mid = 9300127; + break; + case 2: + mid = 9300128; + break; + case 3: + mid = 9300129; + break; + case 4: + mid = 9300130; + break; + case 5: + mid = 9300131; + break; + case 6: + mid = 9300132; + break; + case 7: + mid = 9300133; + break; + case 8: + mid = 9300134; + break; + case 9: + mid = 9300135; + break; + case 10: + mid = 9300136; + break; + } + return mid; + } + + public int getPrice(int num, int tab) { + int price = 0; + num++; + + if (tab == 0) { + switch (num) { + case 1: + case 2: + price = 7; + break; + case 3: + case 4: + price = 8; + break; + case 5: + case 6: + price = 9; + break; + case 7: + price = 10; + break; + case 8: + price = 11; + break; + case 9: + price = 12; + break; + case 10: + price = 30; + break; + } + } else if (tab == 1) { + switch (num) { + case 1: + price = 17; + break; + case 2: + case 4: + price = 19; + break; + case 3: + price = 12; + break; + case 5: + price = 16; + break; + case 6: + price = 14; + break; + case 7: + price = 22; + break; + case 8: + price = 18; + break; + } + } else { + switch (num) { + case 1: + case 3: + price = 17; + break; + case 2: + case 4: + case 6: + price = 16; + break; + case 5: + price = 13; + break; + case 7: + price = 12; + break; + case 8: + case 9: + price = 35; + break; + } + } + return price; + } +} diff --git a/src/net/server/channel/handlers/MoveDragonHandler.java b/src/net/server/channel/handlers/MoveDragonHandler.java new file mode 100644 index 0000000000..b8b08bd529 --- /dev/null +++ b/src/net/server/channel/handlers/MoveDragonHandler.java @@ -0,0 +1,51 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import java.awt.Point; +import java.util.List; +import server.maps.MapleDragon; +import server.movement.LifeMovementFragment; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + + +public class MoveDragonHandler extends AbstractMovementPacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + final MapleCharacter chr = c.getPlayer(); + final Point startPos = new Point(slea.readShort(), slea.readShort()); + List res = parseMovement(slea); + final MapleDragon dragon = chr.getDragon(); + if (dragon != null && res != null && res.size() > 0) { + updatePosition(res, dragon, 0); + if (chr.isHidden()) { + chr.getMap().broadcastGMMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, res)); + } else { + chr.getMap().broadcastMessage(chr, MaplePacketCreator.moveDragon(dragon, startPos, res), dragon.getPosition()); + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/MoveLifeHandler.java b/src/net/server/channel/handlers/MoveLifeHandler.java new file mode 100644 index 0000000000..bfaad89a3f --- /dev/null +++ b/src/net/server/channel/handlers/MoveLifeHandler.java @@ -0,0 +1,103 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import java.awt.Point; +import java.util.List; +import server.life.MapleMonster; +import server.life.MobSkill; +import server.life.MobSkillFactory; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.movement.LifeMovementFragment; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class MoveLifeHandler extends AbstractMovementPacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int objectid = slea.readInt(); + short moveid = slea.readShort(); + MapleMapObject mmo = c.getPlayer().getMap().getMapObject(objectid); + if (mmo == null || mmo.getType() != MapleMapObjectType.MONSTER) { + return; + } + MapleMonster monster = (MapleMonster) mmo; + List res; + byte skillByte = slea.readByte(); + byte skill = slea.readByte(); + int skill_1 = slea.readByte() & 0xFF; + byte skill_2 = slea.readByte(); + byte skill_3 = slea.readByte(); + byte skill_4 = slea.readByte(); + slea.read(8); + MobSkill toUse = null; + if (skillByte == 1 && monster.getNoSkills() > 0) { + int random = Randomizer.nextInt(monster.getNoSkills()); + Pair skillToUse = monster.getSkills().get(random); + toUse = MobSkillFactory.getMobSkill(skillToUse.getLeft(), skillToUse.getRight()); + int percHpLeft = (monster.getHp() / monster.getMaxHp()) * 100; + if (toUse.getHP() < percHpLeft || !monster.canUseSkill(toUse)) { + toUse = null; + } + } + if ((skill_1 >= 100 && skill_1 <= 200) && monster.hasSkill(skill_1, skill_2)) { + MobSkill skillData = MobSkillFactory.getMobSkill(skill_1, skill_2); + if (skillData != null && monster.canUseSkill(skillData)) { + skillData.applyEffect(c.getPlayer(), monster, true); + } + } + slea.readByte(); + slea.readInt(); // whatever + short start_x = slea.readShort(); // hmm.. startpos? + short start_y = slea.readShort(); // hmm... + Point startPos = new Point(start_x, start_y); + res = parseMovement(slea); + if (monster.getController() != c.getPlayer()) { + if (monster.isAttackedBy(c.getPlayer())) {// aggro and controller change + monster.switchController(c.getPlayer(), true); + } else { + return; + } + } else if (skill == -1 && monster.isControllerKnowsAboutAggro() && !monster.isMobile() && !monster.isFirstAttack()) { + monster.setControllerHasAggro(false); + monster.setControllerKnowsAboutAggro(false); + } + boolean aggro = monster.isControllerHasAggro(); + if (toUse != null) { + c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, monster.getMp(), aggro, toUse.getSkillId(), toUse.getSkillLevel())); + } else { + c.announce(MaplePacketCreator.moveMonsterResponse(objectid, moveid, monster.getMp(), aggro)); + } + if (aggro) { + monster.setControllerKnowsAboutAggro(true); + } + if (res != null) { + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.moveMonster(skillByte, skill, skill_1, skill_2, skill_3, skill_4, objectid, startPos, res), monster.getPosition()); + updatePosition(res, monster, -1); + c.getPlayer().getMap().moveMonster(monster, monster.getPosition()); + } + } +} diff --git a/src/net/server/channel/handlers/MovePetHandler.java b/src/net/server/channel/handlers/MovePetHandler.java new file mode 100644 index 0000000000..0cf813617d --- /dev/null +++ b/src/net/server/channel/handlers/MovePetHandler.java @@ -0,0 +1,49 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.server.channel.handlers.AbstractMovementPacketHandler; +import java.util.List; +import client.MapleCharacter; +import client.MapleClient; +import server.movement.LifeMovementFragment; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class MovePetHandler extends AbstractMovementPacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int petId = slea.readInt(); + slea.readLong(); +// Point startPos = StreamUtil.readShortPoint(slea); + List res = parseMovement(slea); + if (res.isEmpty()) { + return; + } + MapleCharacter player = c.getPlayer(); + byte slot = player.getPetIndex(petId); + if (slot == -1) { + return; + } + player.getPet(slot).updatePosition(res); + player.getMap().broadcastMessage(player, MaplePacketCreator.movePet(player.getId(), petId, slot, res), false); + } +} diff --git a/src/net/server/channel/handlers/MovePlayerHandler.java b/src/net/server/channel/handlers/MovePlayerHandler.java new file mode 100644 index 0000000000..78a4c758ca --- /dev/null +++ b/src/net/server/channel/handlers/MovePlayerHandler.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import java.util.List; +import net.server.channel.handlers.AbstractMovementPacketHandler; +import server.movement.LifeMovementFragment; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class MovePlayerHandler extends AbstractMovementPacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.skip(9); + final List res = parseMovement(slea); + if (res != null) { + updatePosition(res, c.getPlayer(), 0); + c.getPlayer().getMap().movePlayer(c.getPlayer(), c.getPlayer().getPosition()); + if (c.getPlayer().isHidden()) { + c.getPlayer().getMap().broadcastGMMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), res), false); + } else { + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.movePlayer(c.getPlayer().getId(), res), false); + } + } + } +} diff --git a/src/net/server/channel/handlers/MoveSummonHandler.java b/src/net/server/channel/handlers/MoveSummonHandler.java new file mode 100644 index 0000000000..e7b7198bc4 --- /dev/null +++ b/src/net/server/channel/handlers/MoveSummonHandler.java @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.server.channel.handlers.AbstractMovementPacketHandler; +import java.awt.Point; +import java.util.Collection; +import java.util.List; +import client.MapleCharacter; +import client.MapleClient; +import server.maps.MapleSummon; +import server.movement.LifeMovementFragment; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class MoveSummonHandler extends AbstractMovementPacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int oid = slea.readInt(); + Point startPos = new Point(slea.readShort(), slea.readShort()); + List res = parseMovement(slea); + MapleCharacter player = c.getPlayer(); + Collection summons = player.getSummons().values(); + MapleSummon summon = null; + for (MapleSummon sum : summons) { + if (sum.getObjectId() == oid) { + summon = sum; + break; + } + } + if (summon != null) { + updatePosition(res, summon, 0); + player.getMap().broadcastMessage(player, MaplePacketCreator.moveSummon(player.getId(), oid, startPos, res), summon.getPosition()); + } + } +} diff --git a/src/net/server/channel/handlers/NPCAnimation.java b/src/net/server/channel/handlers/NPCAnimation.java new file mode 100644 index 0000000000..04e4003a3f --- /dev/null +++ b/src/net/server/channel/handlers/NPCAnimation.java @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import net.SendOpcode; +import tools.data.input.SeekableLittleEndianAccessor; +import tools.data.output.MaplePacketLittleEndianWriter; + +public final class NPCAnimation extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + int length = (int) slea.available(); + if (length == 6) { // NPC Talk + mplew.writeShort(SendOpcode.NPC_ACTION.getValue()); + mplew.writeInt(slea.readInt()); + mplew.writeShort(slea.readShort()); + c.announce(mplew.getPacket()); + } else if (length > 6) { // NPC Move + byte[] bytes = slea.read(length - 9); + mplew.writeShort(SendOpcode.NPC_ACTION.getValue()); + mplew.write(bytes); + c.announce(mplew.getPacket()); + } + } +} diff --git a/src/net/server/channel/handlers/NPCMoreTalkHandler.java b/src/net/server/channel/handlers/NPCMoreTalkHandler.java new file mode 100644 index 0000000000..32b6aec707 --- /dev/null +++ b/src/net/server/channel/handlers/NPCMoreTalkHandler.java @@ -0,0 +1,75 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import scripting.npc.NPCScriptManager; +import scripting.quest.QuestScriptManager; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class NPCMoreTalkHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte lastMsg = slea.readByte(); // 00 (last msg type I think) + byte action = slea.readByte(); // 00 = end chat, 01 == follow + if (lastMsg == 2) { + if (action != 0) { + String returnText = slea.readMapleAsciiString(); + if (c.getQM() != null) { + c.getQM().setGetText(returnText); + if (c.getQM().isStart()) { + QuestScriptManager.getInstance().start(c, action, lastMsg, -1); + } else { + QuestScriptManager.getInstance().end(c, action, lastMsg, -1); + } + } else { + c.getCM().setGetText(returnText); + NPCScriptManager.getInstance().action(c, action, lastMsg, -1); + } + } else if (c.getQM() != null) { + c.getQM().dispose(); + } else { + c.getCM().dispose(); + } + } else { + int selection = -1; + if (slea.available() >= 4) { + selection = slea.readInt(); + } else if (slea.available() > 0) { + selection = slea.readByte(); + } + if (c.getQM() != null) { + if (c.getQM().isStart()) { + QuestScriptManager.getInstance().start(c, action, lastMsg, selection); + } else { + QuestScriptManager.getInstance().end(c, action, lastMsg, selection); + } + } else if (c.getCM() != null) { + NPCScriptManager.getInstance().action(c, action, lastMsg, selection); + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/NPCShopHandler.java b/src/net/server/channel/handlers/NPCShopHandler.java new file mode 100644 index 0000000000..3a2510a12a --- /dev/null +++ b/src/net/server/channel/handlers/NPCShopHandler.java @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.autoban.AutobanFactory; +import net.AbstractMaplePacketHandler; +import server.MapleItemInformationProvider; +import tools.FilePrinter; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class NPCShopHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte bmode = slea.readByte(); + if (bmode == 0) { // mode 0 = buy :) + short slot = slea.readShort();// slot + int itemId = slea.readInt(); + short quantity = slea.readShort(); + if (quantity < 1) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit a npc shop."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to buy quantity " + quantity + " of item id " + itemId + "\r\n"); + c.disconnect(true, false); + return; + } + c.getPlayer().getShop().buy(c, slot, itemId, quantity); + } else if (bmode == 1) { // sell ;) + short slot = slea.readShort(); + int itemId = slea.readInt(); + short quantity = slea.readShort(); + c.getPlayer().getShop().sell(c, MapleItemInformationProvider.getInstance().getInventoryType(itemId), slot, quantity); + } else if (bmode == 2) { // recharge ;) + byte slot = (byte) slea.readShort(); + c.getPlayer().getShop().recharge(c, slot); + } else if (bmode == 3) { // leaving :( + c.getPlayer().setShop(null); + } + } +} diff --git a/src/net/server/channel/handlers/NPCTalkHandler.java b/src/net/server/channel/handlers/NPCTalkHandler.java new file mode 100644 index 0000000000..6067b7b235 --- /dev/null +++ b/src/net/server/channel/handlers/NPCTalkHandler.java @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.server.channel.handlers.DueyHandler; +import client.MapleClient; +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import scripting.npc.NPCScriptManager; +import server.life.MapleNPC; +import server.maps.MapleMapObject; +import server.maps.PlayerNPCs; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class NPCTalkHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + int oid = slea.readInt(); + MapleMapObject obj = c.getPlayer().getMap().getMapObject(oid); + if (obj instanceof MapleNPC) { + MapleNPC npc = (MapleNPC) obj; + if (npc.getId() == 9010009) { //is duey + if(System.currentTimeMillis() - c.getPlayer().getDuey() < ServerConstants.BLOCK_DUEY_RACE_COND) + return; + + c.getPlayer().setDuey(System.currentTimeMillis()); + c.announce(MaplePacketCreator.sendDuey((byte) 8, DueyHandler.loadItems(c.getPlayer()))); + } else if (npc.hasShop()) { + if (c.getPlayer().getShop() != null) { + return; + } + npc.sendShop(c); + } else { + if (c.getCM() != null || c.getQM() != null) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if(npc.getId() >= 9100100 && npc.getId() <= 9100200) { + // Custom handling for gachapon scripts to reduce the amount of scripts needed. + NPCScriptManager.getInstance().start(c, npc.getId(), "gachapon", null); + } else { + NPCScriptManager.getInstance().start(c, npc.getId(), null); + } + } + } else if (obj instanceof PlayerNPCs) { + NPCScriptManager.getInstance().start(c, ((PlayerNPCs) obj).getId(), null); + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/NoteActionHandler.java b/src/net/server/channel/handlers/NoteActionHandler.java new file mode 100644 index 0000000000..a5d4f45111 --- /dev/null +++ b/src/net/server/channel/handlers/NoteActionHandler.java @@ -0,0 +1,80 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import net.AbstractMaplePacketHandler; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +public final class NoteActionHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int action = slea.readByte(); + if (action == 0 && c.getPlayer().getCashShop().getAvailableNotes() > 0) { + String charname = slea.readMapleAsciiString(); + String message = slea.readMapleAsciiString(); + try { + if (c.getPlayer().getCashShop().isOpened()) + c.announce(MaplePacketCreator.showCashInventory(c)); + + c.getPlayer().sendNote(charname, message, (byte) 1); + c.getPlayer().getCashShop().decreaseNotes(); + } catch (SQLException e) { + e.printStackTrace(); + } + } else if (action == 1) { + int num = slea.readByte(); + slea.readByte(); + slea.readByte(); + int fame = 0; + for (int i = 0; i < num; i++) { + int id = slea.readInt(); + slea.readByte(); //Fame, but we read it from the database :) + PreparedStatement ps; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT `fame` FROM notes WHERE id=? AND deleted=0"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) + fame += rs.getInt("fame"); + rs.close(); + + ps = DatabaseConnection.getConnection().prepareStatement("UPDATE notes SET `deleted` = 1 WHERE id = ?"); + ps.setInt(1, id); + ps.executeUpdate(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + if (fame > 0) { + c.getPlayer().gainFame(fame); + c.announce(MaplePacketCreator.getShowFameGain(fame)); + } + } + } +} diff --git a/src/net/server/channel/handlers/PartyChatHandler.java b/src/net/server/channel/handlers/PartyChatHandler.java new file mode 100644 index 0000000000..8bf97793e9 --- /dev/null +++ b/src/net/server/channel/handlers/PartyChatHandler.java @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import net.server.world.World; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class PartyChatHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + if(player.getAutobanManager().getLastSpam(7) + 200 > System.currentTimeMillis()) { + return; + } + int type = slea.readByte(); // 0 for buddys, 1 for partys + int numRecipients = slea.readByte(); + int recipients[] = new int[numRecipients]; + for (int i = 0; i < numRecipients; i++) { + recipients[i] = slea.readInt(); + } + String chattext = slea.readMapleAsciiString(); + if (chattext.length() > Byte.MAX_VALUE && !player.isGM()) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit chats."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + chattext.length() + "\r\n"); + c.disconnect(true, false); + return; + } + World world = c.getWorldServer(); + if (type == 0) { + world.buddyChat(recipients, player.getId(), player.getName(), chattext); + } else if (type == 1 && player.getParty() != null) { + world.partyChat(player.getParty(), chattext, player.getName()); + } else if (type == 2 && player.getGuildId() > 0) { + Server.getInstance().guildChat(player.getGuildId(), player.getName(), player.getId(), chattext); + } else if (type == 3 && player.getGuild() != null) { + int allianceId = player.getGuild().getAllianceId(); + if (allianceId > 0) { + Server.getInstance().allianceMessage(allianceId, MaplePacketCreator.multiChat(player.getName(), chattext, 3), player.getId(), -1); + } + } + player.getAutobanManager().spam(7); + } +} diff --git a/src/net/server/channel/handlers/PartyOperationHandler.java b/src/net/server/channel/handlers/PartyOperationHandler.java new file mode 100644 index 0000000000..adcaf7c315 --- /dev/null +++ b/src/net/server/channel/handlers/PartyOperationHandler.java @@ -0,0 +1,151 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import net.server.world.PartyOperation; +import net.server.world.World; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; + +public final class PartyOperationHandler extends AbstractMaplePacketHandler { + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int operation = slea.readByte(); + MapleCharacter player = c.getPlayer(); + World world = c.getWorldServer(); + MapleParty party = player.getParty(); + MaplePartyCharacter partyplayer = player.getMPC(); + switch (operation) { + case 1: { // create + if(player.getLevel() < 10) { + c.announce(MaplePacketCreator.partyStatusMessage(10)); + return; + } + if (player.getParty() == null) { + partyplayer = new MaplePartyCharacter(player); + party = world.createParty(partyplayer); + player.setParty(party); + player.setMPC(partyplayer); + player.silentPartyUpdate(); + c.announce(MaplePacketCreator.partyCreated(partyplayer)); + } else { + c.announce(MaplePacketCreator.serverNotice(5, "You can't create a party as you are already in one.")); + } + break; + } + case 2: { + if (party != null && partyplayer != null) { + if (partyplayer.equals(party.getLeader())) { + world.updateParty(party.getId(), PartyOperation.DISBAND, partyplayer); + if (player.getEventInstance() != null) { + player.getEventInstance().disbandParty(); + } + } else { + world.updateParty(party.getId(), PartyOperation.LEAVE, partyplayer); + if (player.getEventInstance() != null) { + player.getEventInstance().leftParty(player); + } + } + player.setParty(null); + } + break; + } + case 3: {//join + int partyid = slea.readInt(); + if (c.getPlayer().getParty() == null) { + party = world.getParty(partyid); + if (party != null) { + if (party.getMembers().size() < 6) { + partyplayer = new MaplePartyCharacter(player); + world.updateParty(party.getId(), PartyOperation.JOIN, partyplayer); + player.receivePartyMemberHP(); + player.updatePartyMemberHP(); + } else { + c.announce(MaplePacketCreator.partyStatusMessage(17)); + } + } else { + c.announce(MaplePacketCreator.serverNotice(5, "The person you have invited to the party is already in one.")); + } + } else { + c.announce(MaplePacketCreator.serverNotice(5, "You can't join the party as you are already in one.")); + } + break; + } + case 4: {//invite + String name = slea.readMapleAsciiString(); + MapleCharacter invited = world.getPlayerStorage().getCharacterByName(name); + if (invited != null) { + if(invited.getLevel() < 10) { //min requirement is level 10 + c.announce(MaplePacketCreator.serverNotice(5, "The player you have invited does not meet the requirements.")); + return; + } + if (invited.getParty() == null) { + if (player.getParty() == null) { + partyplayer = new MaplePartyCharacter(player); + party = world.createParty(partyplayer); + player.setParty(party); + player.setMPC(partyplayer); + c.announce(MaplePacketCreator.partyCreated(partyplayer)); + } + if (party.getMembers().size() < 6) { + invited.getClient().announce(MaplePacketCreator.partyInvite(player)); + } else { + c.announce(MaplePacketCreator.partyStatusMessage(17)); + } + } else { + c.announce(MaplePacketCreator.partyStatusMessage(16)); + } + } else { + c.announce(MaplePacketCreator.partyStatusMessage(19)); + } + break; + } + case 5: { // expel + int cid = slea.readInt(); + if (partyplayer.equals(party.getLeader())) { + MaplePartyCharacter expelled = party.getMemberById(cid); + if (expelled != null) { + world.updateParty(party.getId(), PartyOperation.EXPEL, expelled); + if (player.getEventInstance() != null) { + if (expelled.isOnline()) { + player.getEventInstance().disbandParty(); + } + } + } + } + break; + } + case 6: { + int newLeader = slea.readInt(); + MaplePartyCharacter newLeadr = party.getMemberById(newLeader); + party.setLeader(newLeadr); + world.updateParty(party.getId(), PartyOperation.CHANGE_LEADER, newLeadr); + break; + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/PartySearchRegisterHandler.java b/src/net/server/channel/handlers/PartySearchRegisterHandler.java new file mode 100644 index 0000000000..905d4cbcdb --- /dev/null +++ b/src/net/server/channel/handlers/PartySearchRegisterHandler.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +/** + * + * @author Quasar + */ +public class PartySearchRegisterHandler extends AbstractMaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + return; //Disabling this for now. +/* MapleCharacter chr = c.getPlayer(); + int min = slea.readInt(); + int max = slea.readInt(); + if (chr.getLevel() < min || chr.getLevel() > max || (max - min) > 30 || min > max) { // Client editing + return; + }*/ + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/PartySearchStartHandler.java b/src/net/server/channel/handlers/PartySearchStartHandler.java new file mode 100644 index 0000000000..c14f8519f6 --- /dev/null +++ b/src/net/server/channel/handlers/PartySearchStartHandler.java @@ -0,0 +1,124 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.util.Collection; + +import net.AbstractMaplePacketHandler; +import net.server.world.MapleParty; +import server.maps.MapleMap; +import server.maps.MapleMapObject; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import constants.ServerConstants; + +/** + * + * @author XoticStory + * @author BubblesDev + */ +public class PartySearchStartHandler extends AbstractMaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if(!ServerConstants.USE_PARTY_SEARCH){ + return; + } + int min = slea.readInt(); + int max = slea.readInt(); + slea.readInt(); // members + int jobs = slea.readInt(); + MapleCharacter chr = c.getPlayer(); + MapleMap map = chr.getMap(); + Collection mapobjs = map.getAllPlayer(); + for (MapleMapObject mapobj : mapobjs) { + if (chr.getParty().getMembers().size() > 5) { + break; + } + if (mapobj instanceof MapleCharacter) { + MapleCharacter tchar = (MapleCharacter) mapobj; + int charlvl = tchar.getLevel(); + if (charlvl >= min && charlvl <= max && isValidJob(tchar.getJob(), jobs)) { + if (c.getPlayer().getParty() == null) { + //WorldChannelInterface wci = c.getChannelServer().getWorldInterface(); + MapleParty party = c.getPlayer().getParty(); + //int partyid = party.getId(); + //party = null;//.getParty(partyid); + if (party != null) { + if (party.getMembers().size() < 6) { + //MaplePartyCharacter partyplayer = tchar.getMPC(); + //wci.updateParty(party.getId(), PartyOperation.JOIN, partyplayer); + c.getPlayer().receivePartyMemberHP(); + c.getPlayer().updatePartyMemberHP(); + } else { + c.announce(MaplePacketCreator.partyStatusMessage(17)); + } + } + } + } + } + } + } + + private static boolean isValidJob(MapleJob thejob, int jobs) { + int jobid = thejob.getId(); + if (jobid == 0) { + return ((jobs & 2) > 0); + } else if (jobid == 100) { + return ((jobs & 4) > 0); + } else if (jobid > 100 && jobid < 113) { + return ((jobs & 8) > 0); + } else if (jobid > 110 && jobid < 123) { + return ((jobs & 16) > 0); + } else if (jobid > 120 && jobid < 133) { + return ((jobs & 32) > 0); + } else if (jobid == 200) { + return ((jobs & 64) > 0); + } else if (jobid > 209 && jobid < 213) { + return ((jobs & 128) > 0); + } else if (jobid > 219 && jobid < 223) { + return ((jobs & 256) > 0); + } else if (jobid > 229 && jobid < 233) { + return ((jobs & 512) > 0); + } else if (jobid == 500) { + return ((jobs & 1024) > 0); + } else if (jobid > 509 && jobid < 513) { + return ((jobs & 2048) > 0); + } else if (jobid > 519 && jobid < 523) { + return ((jobs & 4096) > 0); + } else if (jobid == 400) { + return ((jobs & 8192) > 0); + } else if (jobid > 400 && jobid < 413) { + return ((jobs & 16384) > 0); + } else if (jobid > 419 && jobid < 423) { + return ((jobs & 32768) > 0); + } else if (jobid == 300) { + return ((jobs & 65536) > 0); + } else if (jobid > 300 && jobid < 313) { + return ((jobs & 131072) > 0); + } else if (jobid > 319 && jobid < 323) { + return ((jobs & 262144) > 0); + } + return false; + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/PetAutoPotHandler.java b/src/net/server/channel/handlers/PetAutoPotHandler.java new file mode 100644 index 0000000000..9006f05c1d --- /dev/null +++ b/src/net/server/channel/handlers/PetAutoPotHandler.java @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class PetAutoPotHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + slea.readByte(); + slea.readLong(); + slea.readInt(); + short slot = slea.readShort(); + int itemId = slea.readInt(); + float Ratio = 0.85f; + Item toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); + + if(toUse != null) { + MapleStatEffect stat = MapleItemInformationProvider.getInstance().getItemEffect(toUse.getItemId()); + + if (toUse.getQuantity() <= 0) return; + + do { + if (toUse.getItemId() != itemId) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false); + //stat = MapleItemInformationProvider.getInstance().getItemEffect(toUse.getItemId()); + stat.applyTo(c.getPlayer()); + + } while(((stat.getHp() > 0 && c.getPlayer().getHp() < Ratio * c.getPlayer().getMaxHp()) || (stat.getMp() > 0 && c.getPlayer().getMp() < Ratio * c.getPlayer().getMaxMp())) && toUse.getQuantity() > 0); + } + } +} diff --git a/src/net/server/channel/handlers/PetChatHandler.java b/src/net/server/channel/handlers/PetChatHandler.java new file mode 100644 index 0000000000..d1271cd81b --- /dev/null +++ b/src/net/server/channel/handlers/PetChatHandler.java @@ -0,0 +1,50 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.autoban.AutobanFactory; +import net.AbstractMaplePacketHandler; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class PetChatHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int petId = slea.readInt(); + slea.readInt(); + slea.readByte(); + int act = slea.readByte(); + byte pet = c.getPlayer().getPetIndex(petId); + if ((pet < 0 || pet > 3) || (act < 0 || act > 9)) { + return; + } + String text = slea.readMapleAsciiString(); + if (text.length() > Byte.MAX_VALUE) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with pets."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + text.length() + "\r\n"); + c.disconnect(true, false); + return; + } + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.petChat(c.getPlayer().getId(), pet, act, text), true); + } +} diff --git a/src/net/server/channel/handlers/PetCommandHandler.java b/src/net/server/channel/handlers/PetCommandHandler.java new file mode 100644 index 0000000000..ee7424fab4 --- /dev/null +++ b/src/net/server/channel/handlers/PetCommandHandler.java @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.PetCommand; +import client.inventory.PetDataFactory; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import constants.ExpTable; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class PetCommandHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + int petId = slea.readInt(); + byte petIndex = chr.getPetIndex(petId); + MaplePet pet; + if (petIndex == -1) { + return; + } else { + pet = chr.getPet(petIndex); + } + slea.readInt(); + slea.readByte(); + byte command = slea.readByte(); + PetCommand petCommand = PetDataFactory.getPetCommand(pet.getItemId(), (int) command); + if (petCommand == null) { + return; + } + boolean success = false; + if (Randomizer.nextInt(101) <= petCommand.getProbability()) { + success = true; + if (pet.getCloseness() < 30000) { + int newCloseness = pet.getCloseness() + petCommand.getIncrease(); + if (newCloseness > 30000) { + newCloseness = 30000; + } + pet.setCloseness(newCloseness); + if (newCloseness >= ExpTable.getClosenessNeededForLevel(pet.getLevel())) { + pet.setLevel((byte) (pet.getLevel() + 1)); + c.announce(MaplePacketCreator.showOwnPetLevelUp(chr.getPetIndex(pet))); + chr.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(c.getPlayer(), chr.getPetIndex(pet))); + } + pet.saveToDb(); + Item petz = chr.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); + chr.forceUpdateItem(petz); + } + } + chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.commandResponse(chr.getId(), petIndex, command, success), true); + } +} diff --git a/src/net/server/channel/handlers/PetExcludeItemsHandler.java b/src/net/server/channel/handlers/PetExcludeItemsHandler.java new file mode 100644 index 0000000000..6b73c87461 --- /dev/null +++ b/src/net/server/channel/handlers/PetExcludeItemsHandler.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @author BubblesDev + */ +public final class PetExcludeItemsHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readLong(); + byte amount = slea.readByte(); + for (int i = 0; i < amount; i++) { + c.getPlayer().addExcluded(slea.readInt()); + } + } +} diff --git a/src/net/server/channel/handlers/PetFoodHandler.java b/src/net/server/channel/handlers/PetFoodHandler.java new file mode 100644 index 0000000000..dba3599630 --- /dev/null +++ b/src/net/server/channel/handlers/PetFoodHandler.java @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import constants.ExpTable; +import client.MapleClient; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.autoban.AutobanManager; +import client.inventory.Item; +import tools.Randomizer; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class PetFoodHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + AutobanManager abm = chr.getAutobanManager(); + if (abm.getLastSpam(2) + 500 > System.currentTimeMillis()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + abm.spam(2); + abm.setTimestamp(1, slea.readInt(), 3); + if (chr.getNoPets() == 0) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + int previousFullness = 100; + byte slot = 0; + MaplePet[] pets = chr.getPets(); + for (byte i = 0; i < 3; i++) { + if (pets[i] != null) { + if (pets[i].getFullness() < previousFullness) { + slot = i; + previousFullness = pets[i].getFullness(); + } + } + } + MaplePet pet = chr.getPet(slot); + short pos = slea.readShort(); + int itemId = slea.readInt(); + Item use = chr.getInventory(MapleInventoryType.USE).getItem(pos); + if (use == null || (itemId / 10000) != 212 || use.getItemId() != itemId) { + return; + } + boolean gainCloseness = false; + if (Randomizer.nextInt(101) > 50) { + gainCloseness = true; + } + if (pet.getFullness() < 100) { + int newFullness = pet.getFullness() + 30; + if (newFullness > 100) { + newFullness = 100; + } + pet.setFullness(newFullness); + if (gainCloseness && pet.getCloseness() < 30000) { + int newCloseness = pet.getCloseness() + 1; + if (newCloseness > 30000) { + newCloseness = 30000; + } + pet.setCloseness(newCloseness); + if (newCloseness >= ExpTable.getClosenessNeededForLevel(pet.getLevel())) { + pet.setLevel((byte) (pet.getLevel() + 1)); + c.announce(MaplePacketCreator.showOwnPetLevelUp(chr.getPetIndex(pet))); + chr.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(c.getPlayer(), chr.getPetIndex(pet))); + } + } + chr.getMap().broadcastMessage(MaplePacketCreator.commandResponse(chr.getId(), slot, 0, true)); + } else { + if (gainCloseness) { + int newCloseness = pet.getCloseness() - 1; + if (newCloseness < 0) { + newCloseness = 0; + } + pet.setCloseness(newCloseness); + if (pet.getLevel() > 1 && newCloseness < ExpTable.getClosenessNeededForLevel(pet.getLevel())) { + pet.setLevel((byte) (pet.getLevel() - 1)); + } + } + chr.getMap().broadcastMessage(MaplePacketCreator.commandResponse(chr.getId(), slot, 0, false)); + } + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, pos, (short) 1, false); + + pet.saveToDb(); + + Item petz = chr.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); + if (petz == null){ //Not a real fix but fuck it you know? + return; + } + + chr.forceUpdateItem(petz); + } +} diff --git a/src/net/server/channel/handlers/PetLootHandler.java b/src/net/server/channel/handlers/PetLootHandler.java new file mode 100644 index 0000000000..b7338729a9 --- /dev/null +++ b/src/net/server/channel/handlers/PetLootHandler.java @@ -0,0 +1,157 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.MaplePet; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.maps.MapleMapItem; +import server.maps.MapleMapObject; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.inventory.MapleInventoryType; +import net.server.world.MaplePartyCharacter; +import scripting.item.ItemScriptManager; +import server.MapleItemInformationProvider; +import server.MapleItemInformationProvider.scriptedItem; +import constants.ServerConstants; + +/** + * @author TheRamon + */ +public final class PetLootHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + if(System.currentTimeMillis() - chr.getPetLootCd() < ServerConstants.PET_LOOT_UPON_ATTACK) + return; + + MaplePet pet = chr.getPet(chr.getPetIndex(slea.readInt()));//why would it be an int...? + if (pet == null || !pet.isSummoned()) { + return; + } + + slea.skip(13); + int oid = slea.readInt(); + MapleMapObject ob = chr.getMap().getMapObject(oid); + if (ob == null) { + c.announce(MaplePacketCreator.getInventoryFull()); + return; + } + if (ob instanceof MapleMapItem) { + MapleMapItem mapitem = (MapleMapItem) ob; + synchronized (mapitem) { + if (!chr.needQuestItem(mapitem.getQuest(), mapitem.getItemId())) { + c.announce(MaplePacketCreator.showItemUnavailable()); + c.announce(MaplePacketCreator.enableActions()); + return; + } + if(System.currentTimeMillis() - mapitem.getDropTime() < 900) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (mapitem.isPickedUp()) { + c.announce(MaplePacketCreator.getInventoryFull()); + return; + } + if (mapitem.getDropper() == c.getPlayer()) { + return; + } + if (mapitem.getMeso() > 0) { + if (chr.getParty() != null) { + int mesosamm = mapitem.getMeso(); + if (mesosamm > 50000 * chr.getMesoRate()) return; + int partynum = 0; + for (MaplePartyCharacter partymem : chr.getParty().getMembers()) { + if (partymem.isOnline() && partymem.getMapId() == chr.getMap().getId() && partymem.getChannel() == c.getChannel()) { + partynum++; + } + } + for (MaplePartyCharacter partymem : chr.getParty().getMembers()) { + if (partymem.isOnline() && partymem.getMapId() == chr.getMap().getId()) { + MapleCharacter somecharacter = c.getChannelServer().getPlayerStorage().getCharacterById(partymem.getId()); + if (somecharacter != null) somecharacter.gainMeso(mesosamm / partynum, true, true, false); + } + } + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else if (chr.getInventory(MapleInventoryType.EQUIPPED).findById(1812000) != null) { + chr.gainMeso(mapitem.getMeso(), true, true, false); + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else { + mapitem.setPickedUp(false); + c.announce(MaplePacketCreator.enableActions()); + return; + } + } else if (ItemPickupHandler.useItem(c, mapitem.getItem().getItemId())) { + if (mapitem.getItem().getItemId() / 10000 == 238) { + chr.getMonsterBook().addCard(c, mapitem.getItem().getItemId()); + } + mapitem.setPickedUp(true); + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else if (mapitem.getItem().getItemId() / 100 == 50000) { + if (chr.getInventory(MapleInventoryType.EQUIPPED).findById(1812007) != null) { + for (int i : chr.getExcluded()) { + if (mapitem.getItem().getItemId() == i) { + return; + } + } + } else if (MapleInventoryManipulator.addById(c, mapitem.getItem().getItemId(), mapitem.getItem().getQuantity(), null, -1, mapitem.getItem().getExpiration())) { + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else { + return; + } + } else if (mapitem.getItem().getItemId() / 10000 == 243) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + scriptedItem info = ii.getScriptedItemInfo(mapitem.getItem().getItemId()); + if (info.runOnPickup()) { + ItemScriptManager ism = ItemScriptManager.getInstance(); + String scriptName = info.getScript(); + if (ism.scriptExists(scriptName)) + ism.getItemScript(c, scriptName); + + } else { + MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true); + } + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else if(mapitem.getItemId() == 4031865 || mapitem.getItemId() == 4031866) { + // Add NX to account, show effect and make item disapear + chr.getCashShop().gainCash(1, mapitem.getItemId() == 4031865 ? 100 : 250); + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else if (MapleInventoryManipulator.addFromDrop(c, mapitem.getItem(), true)) { + chr.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 5, chr.getId(), true, chr.getPetIndex(pet)), mapitem.getPosition()); + chr.getMap().removeMapObject(ob); + } else { + return; + } + mapitem.setPickedUp(true); + } + } + //c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/PlayerInteractionHandler.java b/src/net/server/channel/handlers/PlayerInteractionHandler.java new file mode 100644 index 0000000000..cfb7b52547 --- /dev/null +++ b/src/net/server/channel/handlers/PlayerInteractionHandler.java @@ -0,0 +1,596 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import constants.ItemConstants; + +import java.util.Arrays; + +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleMiniGame; +import server.MaplePlayerShop; +import server.MaplePlayerShopItem; +import server.MapleTrade; +import server.maps.FieldLimit; +import server.maps.HiredMerchant; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class PlayerInteractionHandler extends AbstractMaplePacketHandler { + public enum Action { + CREATE(0), + INVITE(2), + DECLINE(3), + VISIT(4), + ROOM(5), + CHAT(6), + CHAT_THING(8), + EXIT(0xA), + OPEN(0xB), + TRADE_BIRTHDAY(0x0E), + SET_ITEMS(0xF), + SET_MESO(0x10), + CONFIRM(0x11), + TRANSACTION(0x14), + ADD_ITEM(0x16), + BUY(0x17), + UPDATE_MERCHANT(0x19), + REMOVE_ITEM(0x1B), + BAN_PLAYER(0x1C), + MERCHANT_THING(0x1D), + OPEN_STORE(0x1E), + PUT_ITEM(0x21), + MERCHANT_BUY(0x22), + TAKE_ITEM_BACK(0x26), + MAINTENANCE_OFF(0x27), + MERCHANT_ORGANIZE(0x28), + CLOSE_MERCHANT(0x29), + REAL_CLOSE_MERCHANT(0x2A), + MERCHANT_MESO(0x2B), + SOMETHING(0x2D), + VIEW_VISITORS(0x2E), + BLACKLIST(0x2F), + REQUEST_TIE(0x32), + ANSWER_TIE(0x33), + GIVE_UP(0x34), + EXIT_AFTER_GAME(0x38), + CANCEL_EXIT(0x39), + READY(0x3A), + UN_READY(0x3B), + START(0x3D), + GET_RESULT(0x3E), + SKIP(0x3F), + MOVE_OMOK(0x40), + SELECT_CARD(0x44); + final byte code; + + private Action(int code) { + this.code = (byte) code; + } + + public byte getCode() { + return code; + } + } + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte mode = slea.readByte(); + MapleCharacter chr = c.getPlayer(); + if (mode == Action.CREATE.getCode()) { + byte createType = slea.readByte(); + if (createType == 3) {// trade + MapleTrade.startTrade(chr); + } else if (createType == 1) { // omok mini game + if (chr.getChalkboard() != null || FieldLimit.CANNOTMINIGAME.check(chr.getMap().getFieldLimit())) { + return; + } + String desc = slea.readMapleAsciiString(); + slea.readByte(); // 20 6E 4E + int type = slea.readByte(); // 20 6E 4E + MapleMiniGame game = new MapleMiniGame(chr, desc); + chr.setMiniGame(game); + game.setPieceType(type); + game.setGameType("omok"); + chr.getMap().addMapObject(game); + chr.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(chr, 1, 0)); + game.sendOmok(c, type); + } else if (createType == 2) { // matchcard + if (chr.getChalkboard() != null) { + return; + } + String desc = slea.readMapleAsciiString(); + slea.readByte(); // 20 6E 4E + int type = slea.readByte(); // 20 6E 4E + MapleMiniGame game = new MapleMiniGame(chr, desc); + game.setPieceType(type); + if (type == 0) { + game.setMatchesToWin(6); + } else if (type == 1) { + game.setMatchesToWin(10); + } else if (type == 2) { + game.setMatchesToWin(15); + } + game.setGameType("matchcard"); + chr.setMiniGame(game); + chr.getMap().addMapObject(game); + chr.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(chr, 1, 0)); + game.sendMatchCard(c, type); + } else if (createType == 4 || createType == 5) { // shop + if (!chr.getMap().getMapObjectsInRange(chr.getPosition(), 23000, Arrays.asList(MapleMapObjectType.SHOP, MapleMapObjectType.HIRED_MERCHANT)).isEmpty()) { + return; + } + String desc = slea.readMapleAsciiString(); + slea.skip(3); + int itemId = slea.readInt(); + if (chr.getInventory(MapleInventoryType.CASH).countById(itemId) < 1) { + return; + } + + if (chr.getMapId() > 910000000 && chr.getMapId() < 910000023 || itemId > 5030000 && itemId < 5030012 || itemId > 5140000 && itemId < 5140006) { + if (createType == 4) { + MaplePlayerShop shop = new MaplePlayerShop(c.getPlayer(), desc); + chr.setPlayerShop(shop); + chr.getMap().addMapObject(shop); + shop.sendShop(c); + c.announce(MaplePacketCreator.getPlayerShopRemoveVisitor(1)); + } else { + HiredMerchant merchant = new HiredMerchant(chr, itemId, desc); + chr.setHiredMerchant(merchant); + chr.getClient().getChannelServer().addHiredMerchant(chr.getId(), merchant); + chr.announce(MaplePacketCreator.getHiredMerchant(chr, merchant, true)); + } + } + } + } else if (mode == Action.INVITE.getCode()) { + int otherPlayer = slea.readInt(); + if (chr.getId() == chr.getMap().getCharacterById(otherPlayer).getId()) { + return; + } + MapleTrade.inviteTrade(chr, chr.getMap().getCharacterById(otherPlayer)); + } else if (mode == Action.DECLINE.getCode()) { + MapleTrade.declineTrade(chr); + } else if (mode == Action.VISIT.getCode()) { + if (chr.getTrade() != null && chr.getTrade().getPartner() != null) { + if (!chr.getTrade().isFullTrade() && !chr.getTrade().getPartner().isFullTrade()) { + MapleTrade.visitTrade(chr, chr.getTrade().getPartner().getChr()); + } else { + c.announce(MaplePacketCreator.enableActions()); //Ill be nice and not dc u + return; + } + } else { + int oid = slea.readInt(); + MapleMapObject ob = chr.getMap().getMapObject(oid); + if (ob instanceof MaplePlayerShop) { + MaplePlayerShop shop = (MaplePlayerShop) ob; + if (shop.isBanned(chr.getName())) { + chr.dropMessage(1, "You have been banned from this store."); + return; + } + if (shop.hasFreeSlot() && !shop.isVisitor(c.getPlayer())) { + shop.addVisitor(c.getPlayer()); + chr.setPlayerShop(shop); + shop.sendShop(c); + } + } else if (ob instanceof MapleMiniGame) { + MapleMiniGame game = (MapleMiniGame) ob; + if (game.hasFreeSlot() && !game.isVisitor(c.getPlayer())) { + game.addVisitor(c.getPlayer()); + chr.setMiniGame(game); + switch (game.getGameType()) { + case "omok": + game.sendOmok(c, game.getPieceType()); + break; + case "matchcard": + game.sendMatchCard(c, game.getPieceType()); + break; + } + } else { + chr.getClient().announce(MaplePacketCreator.getMiniGameFull()); + } + } else if (ob instanceof HiredMerchant && chr.getHiredMerchant() == null) { + HiredMerchant merchant = (HiredMerchant) ob; + if (merchant.isOwner(c.getPlayer())) { + merchant.setOpen(false); + merchant.removeAllVisitors(""); + c.announce(MaplePacketCreator.getHiredMerchant(chr, merchant, false)); + } else if (!merchant.isOpen()) { + chr.dropMessage(1, "This shop is in maintenance, please come by later."); + return; + } else if (merchant.getFreeSlot() == -1) { + chr.dropMessage(1, "This shop has reached it's maximum capacity, please come by later."); + return; + } else { + merchant.addVisitor(c.getPlayer()); + c.announce(MaplePacketCreator.getHiredMerchant(c.getPlayer(), merchant, false)); + } + chr.setHiredMerchant(merchant); + } + } + } else if (mode == Action.CHAT.getCode()) { // chat lol + HiredMerchant merchant = chr.getHiredMerchant(); + if (chr.getTrade() != null) { + chr.getTrade().chat(slea.readMapleAsciiString()); + } else if (chr.getPlayerShop() != null) { //mini game + MaplePlayerShop shop = chr.getPlayerShop(); + if (shop != null) { + shop.chat(c, slea.readMapleAsciiString()); + } + } else if (chr.getMiniGame() != null) { + MapleMiniGame game = chr.getMiniGame(); + if (game != null) { + game.chat(c, slea.readMapleAsciiString()); + } + } else if (merchant != null) { + String message = chr.getName() + " : " + slea.readMapleAsciiString(); + byte slot = (byte) (merchant.getVisitorSlot(c.getPlayer()) + 1); + merchant.getMessages().add(new Pair<>(message, slot)); + merchant.broadcastToVisitors(MaplePacketCreator.hiredMerchantChat(message, slot)); + } + } else if (mode == Action.EXIT.getCode()) { + if (chr.getTrade() != null) { + MapleTrade.cancelTrade(c.getPlayer()); + } else { + MaplePlayerShop shop = chr.getPlayerShop(); + MapleMiniGame game = chr.getMiniGame(); + HiredMerchant merchant = chr.getHiredMerchant(); + if (shop != null) { + if (shop.isOwner(c.getPlayer())) { + for (MaplePlayerShopItem mpsi : shop.getItems()) { + if (mpsi.getBundles() > 2) { + Item iItem = mpsi.getItem().copy(); + iItem.setQuantity((short) (mpsi.getBundles() * iItem.getQuantity())); + MapleInventoryManipulator.addFromDrop(c, iItem, false); + } else if (mpsi.isExist()) { + MapleInventoryManipulator.addFromDrop(c, mpsi.getItem(), true); + } + } + chr.getMap().broadcastMessage(MaplePacketCreator.removeCharBox(c.getPlayer())); + shop.removeVisitors(); + } else { + shop.removeVisitor(c.getPlayer()); + } + chr.setPlayerShop(null); + } else if (game != null) { + chr.setMiniGame(null); + if (game.isOwner(c.getPlayer())) { + chr.getMap().broadcastMessage(MaplePacketCreator.removeCharBox(c.getPlayer())); + game.broadcastToVisitor(MaplePacketCreator.getMiniGameClose()); + } else { + game.removeVisitor(c.getPlayer()); + } + } else if (merchant != null) { + merchant.removeVisitor(c.getPlayer()); + chr.setHiredMerchant(null); + } + } + } else if (mode == Action.OPEN.getCode()) { + MaplePlayerShop shop = chr.getPlayerShop(); + HiredMerchant merchant = chr.getHiredMerchant(); + if (shop != null && shop.isOwner(c.getPlayer())) { + slea.readByte();//01 + chr.getMap().broadcastMessage(MaplePacketCreator.addCharBox(c.getPlayer(), 4)); + } else if (merchant != null && merchant.isOwner(c.getPlayer())) { + chr.setHasMerchant(true); + merchant.setOpen(true); + chr.getMap().addMapObject(merchant); + chr.setHiredMerchant(null); + chr.getMap().broadcastMessage(MaplePacketCreator.spawnHiredMerchant(merchant)); + slea.readByte(); + } + } else if (mode == Action.READY.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + game.broadcast(MaplePacketCreator.getMiniGameReady(game)); + } else if (mode == Action.UN_READY.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + game.broadcast(MaplePacketCreator.getMiniGameUnReady(game)); + } else if (mode == Action.START.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.getGameType().equals("omok")) { + game.broadcast(MaplePacketCreator.getMiniGameStart(game, game.getLoser())); + chr.getMap().broadcastMessage(MaplePacketCreator.addOmokBox(game.getOwner(), 2, 1)); + } + if (game.getGameType().equals("matchcard")) { + game.shuffleList(); + game.broadcast(MaplePacketCreator.getMatchCardStart(game, game.getLoser())); + chr.getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(game.getOwner(), 2, 1)); + } + } else if (mode == Action.GIVE_UP.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.getGameType().equals("omok")) { + if (game.isOwner(c.getPlayer())) { + game.broadcast(MaplePacketCreator.getMiniGameOwnerForfeit(game)); + } else { + game.broadcast(MaplePacketCreator.getMiniGameVisitorForfeit(game)); + } + } + if (game.getGameType().equals("matchcard")) { + if (game.isOwner(c.getPlayer())) { + game.broadcast(MaplePacketCreator.getMatchCardVisitorWin(game)); + } else { + game.broadcast(MaplePacketCreator.getMatchCardOwnerWin(game)); + } + } + } else if (mode == Action.REQUEST_TIE.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.isOwner(c.getPlayer())) { + game.broadcastToVisitor(MaplePacketCreator.getMiniGameRequestTie(game)); + } else { + game.getOwner().getClient().announce(MaplePacketCreator.getMiniGameRequestTie(game)); + } + } else if (mode == Action.ANSWER_TIE.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + slea.readByte(); + if (game.getGameType().equals("omok")) { + game.broadcast(MaplePacketCreator.getMiniGameTie(game)); + } + if (game.getGameType().equals("matchcard")) { + game.broadcast(MaplePacketCreator.getMatchCardTie(game)); + } + } else if (mode == Action.SKIP.getCode()) { + MapleMiniGame game = chr.getMiniGame(); + if (game.isOwner(c.getPlayer())) { + game.broadcast(MaplePacketCreator.getMiniGameSkipOwner(game)); + } else { + game.broadcast(MaplePacketCreator.getMiniGameSkipVisitor(game)); + } + } else if (mode == Action.MOVE_OMOK.getCode()) { + int x = slea.readInt(); // x point + int y = slea.readInt(); // y point + int type = slea.readByte(); // piece ( 1 or 2; Owner has one piece, visitor has another, it switches every game.) + chr.getMiniGame().setPiece(x, y, type, c.getPlayer()); + } else if (mode == Action.SELECT_CARD.getCode()) { + int turn = slea.readByte(); // 1st turn = 1; 2nd turn = 0 + int slot = slea.readByte(); // slot + MapleMiniGame game = chr.getMiniGame(); + int firstslot = game.getFirstSlot(); + if (turn == 1) { + game.setFirstSlot(slot); + if (game.isOwner(c.getPlayer())) { + game.broadcastToVisitor(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); + } else { + game.getOwner().getClient().announce(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, turn)); + } + } else if ((game.getCardId(firstslot + 1)) == (game.getCardId(slot + 1))) { + if (game.isOwner(c.getPlayer())) { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 2)); + game.setOwnerPoints(); + } else { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 3)); + game.setVisitorPoints(); + } + } else if (game.isOwner(c.getPlayer())) { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 0)); + } else { + game.broadcast(MaplePacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 1)); + } + } else if (mode == Action.SET_MESO.getCode()) { + chr.getTrade().setMeso(slea.readInt()); + } else if (mode == Action.SET_ITEMS.getCode()) { + + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte()); + Item item = chr.getInventory(ivType).getItem(slea.readShort()); + short quantity = slea.readShort(); + byte targetSlot = slea.readByte(); + if (quantity < 1 || quantity > item.getQuantity()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (chr.getTrade() != null) { + if ((quantity <= item.getQuantity() && quantity >= 0) || ItemConstants.isRechargable(item.getItemId())) { + if (ii.isDropRestricted(item.getItemId())) { // ensure that undroppable items do not make it to the trade window + if (!((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA || (item.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES)) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + Item tradeItem = item.copy(); + if (ItemConstants.isRechargable(item.getItemId())) { + tradeItem.setQuantity(item.getQuantity()); + MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), item.getQuantity(), true); + } else { + tradeItem.setQuantity(quantity); + MapleInventoryManipulator.removeFromSlot(c, ivType, item.getPosition(), quantity, true); + } + tradeItem.setPosition(targetSlot); + chr.getTrade().addItem(tradeItem); + } + } + } else if (mode == Action.CONFIRM.getCode()) { + MapleTrade.completeTrade(c.getPlayer()); + } else if (mode == Action.ADD_ITEM.getCode() || mode == Action.PUT_ITEM.getCode()) { + MapleInventoryType type = MapleInventoryType.getByType(slea.readByte()); + short slot = slea.readShort(); + short bundles = slea.readShort(); + if (chr.getInventory(type).getItem(slot) == null || chr.getItemQuantity(chr.getInventory(type).getItem(slot).getItemId(), false) < bundles || chr.getInventory(type).getItem(slot).getFlag() == ItemConstants.UNTRADEABLE) { + return; + } + short perBundle = slea.readShort(); + int price = slea.readInt(); + if (perBundle <= 0 || perBundle * bundles > 2000 || bundles <= 0 || price <= 0 || price > Integer.MAX_VALUE) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with hired merchants."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " might of possibly packet edited Hired Merchants\nperBundle: " + perBundle + "\nperBundle * bundles (This multiplied cannot be greater than 2000): " + perBundle * bundles + "\nbundles: " + bundles + "\nprice: " + price); + return; + } + Item ivItem = chr.getInventory(type).getItem(slot); + Item sellItem = ivItem.copy(); + if (chr.getItemQuantity(ivItem.getItemId(), false) < perBundle * bundles) { + return; + } + sellItem.setQuantity(perBundle); + MaplePlayerShopItem item = new MaplePlayerShopItem(sellItem, bundles, price); + MaplePlayerShop shop = chr.getPlayerShop(); + HiredMerchant merchant = chr.getHiredMerchant(); + if (shop != null && shop.isOwner(c.getPlayer())) { + if (ivItem != null && ivItem.getQuantity() >= bundles * perBundle) { + shop.addItem(item); + c.announce(MaplePacketCreator.getPlayerShopItemUpdate(shop)); + } + } else if (merchant != null && merchant.isOwner(c.getPlayer())) { + merchant.addItem(item); + c.announce(MaplePacketCreator.updateHiredMerchant(merchant, c.getPlayer())); + } + if (ItemConstants.isRechargable(ivItem.getItemId())) { + MapleInventoryManipulator.removeFromSlot(c, type, slot, ivItem.getQuantity(), true); + } else { + MapleInventoryManipulator.removeFromSlot(c, type, slot, (short) (bundles * perBundle), true); + } + } else if (mode == Action.REMOVE_ITEM.getCode()) { + MaplePlayerShop shop = chr.getPlayerShop(); + if (shop != null && shop.isOwner(c.getPlayer())) { + int slot = slea.readShort(); + if (slot >= shop.getItems().size() || slot < 0) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with a player shop."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to remove item at slot " + slot + "\r\n"); + c.disconnect(true, false); + return; + } + MaplePlayerShopItem item = shop.getItems().get(slot); + Item ivItem = item.getItem().copy(); + shop.removeItem(slot); + ivItem.setQuantity(item.getBundles()); + MapleInventoryManipulator.addFromDrop(c, ivItem, false); + c.announce(MaplePacketCreator.getPlayerShopItemUpdate(shop)); + } + } else if (mode == Action.MERCHANT_MESO.getCode()) {//Hmmmm + /*if (!chr.getHiredMerchant().isOwner(chr) || chr.getMerchantMeso() < 1) return; + int possible = Integer.MAX_VALUE - chr.getMerchantMeso(); + if (possible > 0) { + if (possible < chr.getMerchantMeso()) { + chr.gainMeso(possible, false); + chr.setMerchantMeso(chr.getMerchantMeso() - possible); + } else { + chr.gainMeso(chr.getMerchantMeso(), false); + chr.setMerchantMeso(0); + } + c.announce(MaplePacketCreator.updateHiredMerchant(chr.getHiredMerchant(), chr)); + }*/ + } else if (mode == Action.MERCHANT_ORGANIZE.getCode()) { + HiredMerchant merchant = chr.getHiredMerchant(); + if (!merchant.isOwner(chr)) return; + + if (chr.getMerchantMeso() > 0) { + int possible = Integer.MAX_VALUE - chr.getMerchantMeso(); + if (possible > 0) { + if (possible < chr.getMerchantMeso()) { + chr.gainMeso(possible, false); + chr.setMerchantMeso(chr.getMerchantMeso() - possible); + } else { + chr.gainMeso(chr.getMerchantMeso(), false); + chr.setMerchantMeso(0); + } + } + } + for (int i = 0; i < merchant.getItems().size(); i++) { + if (!merchant.getItems().get(i).isExist()) merchant.removeFromSlot(i); + } + if (merchant.getItems().isEmpty()) { + c.announce(MaplePacketCreator.hiredMerchantOwnerLeave()); + c.announce(MaplePacketCreator.leaveHiredMerchant(0x00, 0x03)); + merchant.closeShop(c, false); + chr.setHasMerchant(false); + return; + } + c.announce(MaplePacketCreator.updateHiredMerchant(merchant, chr)); + + } else if (mode == Action.BUY.getCode() || mode == Action.MERCHANT_BUY.getCode()) { + int item = slea.readByte(); + short quantity = slea.readShort(); + if (quantity < 1) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with a hired merchant and or player shop."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to buy item " + item + " with quantity " + quantity + "\r\n"); + c.disconnect(true, false); + return; + } + MaplePlayerShop shop = chr.getPlayerShop(); + HiredMerchant merchant = chr.getHiredMerchant(); + if (merchant != null && merchant.getOwner().equals(chr.getName())) { + return; + } + if (shop != null && shop.isVisitor(c.getPlayer())) { + shop.buy(c, item, quantity); + shop.broadcast(MaplePacketCreator.getPlayerShopItemUpdate(shop)); + } else if (merchant != null) { + merchant.buy(c, item, quantity); + merchant.broadcastToVisitors(MaplePacketCreator.updateHiredMerchant(merchant, c.getPlayer())); + } + } else if (mode == Action.TAKE_ITEM_BACK.getCode()) { + HiredMerchant merchant = chr.getHiredMerchant(); + if (merchant != null && merchant.isOwner(c.getPlayer())) { + int slot = slea.readShort(); + MaplePlayerShopItem item = merchant.getItems().get(slot); + if (!MapleInventory.checkSpot(chr, item.getItem())) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (item.getBundles() > 0) { + Item iitem = item.getItem(); + iitem.setQuantity((short) (item.getItem().getQuantity() * item.getBundles())); + MapleInventoryManipulator.addFromDrop(c, iitem, true); + } + merchant.removeFromSlot(slot); + c.announce(MaplePacketCreator.updateHiredMerchant(merchant, c.getPlayer())); + } + } else if (mode == Action.CLOSE_MERCHANT.getCode()) { + HiredMerchant merchant = chr.getHiredMerchant(); + if (merchant != null && merchant.isOwner(c.getPlayer())) { + c.announce(MaplePacketCreator.hiredMerchantOwnerLeave()); + c.announce(MaplePacketCreator.leaveHiredMerchant(0x00, 0x03)); + merchant.closeShop(c, false); + chr.setHasMerchant(false); + } + } else if (mode == Action.MAINTENANCE_OFF.getCode()) { + HiredMerchant merchant = chr.getHiredMerchant(); + if (merchant.getItems().isEmpty() && merchant.isOwner(c.getPlayer())) { + merchant.closeShop(c, false); + chr.setHasMerchant(false); + } + if (merchant != null && merchant.isOwner(c.getPlayer())) { + merchant.getMessages().clear(); + merchant.setOpen(true); + } + chr.setHiredMerchant(null); + c.announce(MaplePacketCreator.enableActions()); + } else if (mode == Action.BAN_PLAYER.getCode()) { + if (chr.getPlayerShop() != null && chr.getPlayerShop().isOwner(c.getPlayer())) { + chr.getPlayerShop().banPlayer(slea.readMapleAsciiString()); + } + } + } +} diff --git a/src/net/server/channel/handlers/PlayerLoggedinHandler.java b/src/net/server/channel/handlers/PlayerLoggedinHandler.java new file mode 100644 index 0000000000..7a923c66cf --- /dev/null +++ b/src/net/server/channel/handlers/PlayerLoggedinHandler.java @@ -0,0 +1,261 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import net.server.PlayerBuffValueHolder; +import net.server.Server; +import net.server.channel.Channel; +import net.server.channel.CharacterIdChannelPair; +import net.server.guild.MapleAlliance; +import net.server.guild.MapleGuild; +import net.server.world.MaplePartyCharacter; +import net.server.world.PartyOperation; +import net.server.world.World; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.BuddylistEntry; +import client.CharacterNameAndId; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleFamily; +import client.SkillFactory; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.inventory.PetDataFactory; +import constants.GameConstants; +import server.TimerManager; + +public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler { + + @Override + public final boolean validateState(MapleClient c) { + return !c.isLoggedIn(); + } + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + final int cid = slea.readInt(); + final Server server = Server.getInstance(); + MapleCharacter player = c.getWorldServer().getPlayerStorage().getCharacterById(cid); + boolean newcomer = false; + if (player == null) { + try { + player = MapleCharacter.loadCharFromDB(cid, c, true); + newcomer = true; + } catch (SQLException e) { + e.printStackTrace(); + } + } else { + player.newClient(c); + } + if (player == null) { //If you are still getting null here then please just uninstall the game >.>, we dont need you fucking with the logs + c.disconnect(true, false); + return; + } + c.setPlayer(player); + c.setAccID(player.getAccountID()); + + int state = c.getLoginState(); + boolean allowLogin = true; + Channel cserv = c.getChannelServer(); + + if (state == MapleClient.LOGIN_SERVER_TRANSITION || state == MapleClient.LOGIN_NOTLOGGEDIN) { + for (String charName : c.loadCharacterNames(c.getWorld())) { + for (Channel ch : c.getWorldServer().getChannels()) { + if (ch.isConnected(charName)) { + allowLogin = false; + } + } + break; + } + } + if (state != MapleClient.LOGIN_SERVER_TRANSITION || !allowLogin) { + c.setPlayer(null); + c.announce(MaplePacketCreator.getAfterLoginError(7)); + return; + } + c.updateLoginState(MapleClient.LOGIN_LOGGEDIN); + + cserv.addPlayer(player); + List buffs = server.getPlayerBuffStorage().getBuffsFromStorage(cid); + if (buffs != null) { + player.silentGiveBuffs(buffs); + } + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + PreparedStatement pss = null; + ResultSet rs = null; + try { + ps = con.prepareStatement("SELECT Mesos FROM dueypackages WHERE RecieverId = ? and Checked = 1"); + ps.setInt(1, player.getId()); + rs = ps.executeQuery(); + if (rs.next()) { + try { + pss = DatabaseConnection.getConnection().prepareStatement("UPDATE dueypackages SET Checked = 0 where RecieverId = ?"); + pss.setInt(1, player.getId()); + pss.executeUpdate(); + pss.close(); + } catch (SQLException e) { + } + c.announce(MaplePacketCreator.sendDueyMSG((byte) 0x1B)); + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + try { + if (rs != null) { + rs.close(); + } + if (pss != null) { + pss.close(); + } + if (ps != null) { + ps.close(); + } + } catch (SQLException ex) { + //ignore + ex.printStackTrace(); + } + } + c.announce(MaplePacketCreator.getCharInfo(player)); + if (!player.isHidden()) { + player.toggleHide(true); + } + player.sendKeymap(); + player.sendMacros(); + + if(player.getKeymap().get(91) != null) + player.announce(MaplePacketCreator.sendAutoHpPot(player.getKeymap().get(91).getAction())); + if(player.getKeymap().get(92) != null) + player.announce(MaplePacketCreator.sendAutoMpPot(player.getKeymap().get(92).getAction())); + + player.getMap().addPlayer(player); + World world = server.getWorld(c.getWorld()); + world.getPlayerStorage().addPlayer(player); + + int buddyIds[] = player.getBuddylist().getBuddyIds(); + world.loggedOn(player.getName(), player.getId(), c.getChannel(), buddyIds); + for (CharacterIdChannelPair onlineBuddy : server.getWorld(c.getWorld()).multiBuddyFind(player.getId(), buddyIds)) { + BuddylistEntry ble = player.getBuddylist().get(onlineBuddy.getCharacterId()); + ble.setChannel(onlineBuddy.getChannel()); + player.getBuddylist().put(ble); + } + c.announce(MaplePacketCreator.updateBuddylist(player.getBuddylist().getBuddies())); + c.announce(MaplePacketCreator.loadFamily(player)); + if (player.getFamilyId() > 0) { + MapleFamily f = world.getFamily(player.getFamilyId()); + if (f == null) { + f = new MapleFamily(player.getId()); + world.addFamily(player.getFamilyId(), f); + } + player.setFamily(f); + c.announce(MaplePacketCreator.getFamilyInfo(f.getMember(player.getId()))); + } + if (player.getGuildId() > 0) { + MapleGuild playerGuild = server.getGuild(player.getGuildId(), player.getWorld(), player.getMGC()); + if (playerGuild == null) { + player.deleteGuild(player.getGuildId()); + player.resetMGC(); + player.setGuildId(0); + } else { + server.setGuildMemberOnline(player.getMGC(), true, c.getChannel()); + c.announce(MaplePacketCreator.showGuildInfo(player)); + int allianceId = player.getGuild().getAllianceId(); + if (allianceId > 0) { + MapleAlliance newAlliance = server.getAlliance(allianceId); + if (newAlliance == null) { + newAlliance = MapleAlliance.loadAlliance(allianceId); + if (newAlliance != null) { + server.addAlliance(allianceId, newAlliance); + } else { + player.getGuild().setAllianceId(0); + } + } + if (newAlliance != null) { + c.announce(MaplePacketCreator.getAllianceInfo(newAlliance)); + c.announce(MaplePacketCreator.getGuildAlliances(newAlliance, c)); + server.allianceMessage(allianceId, MaplePacketCreator.allianceMemberOnline(player, true), player.getId(), -1); + } + } + } + } + player.showNote(); + if (player.getParty() != null) { + MaplePartyCharacter pchar = player.getMPC(); + pchar.setChannel(c.getChannel()); + pchar.setMapId(player.getMapId()); + pchar.setOnline(true); + world.updateParty(player.getParty().getId(), PartyOperation.LOG_ONOFF, pchar); + } + player.updatePartyMemberHP(); + + if (player.getInventory(MapleInventoryType.EQUIPPED).findById(1122017) != null) { + player.equipPendantOfSpirit(); + } + c.announce(MaplePacketCreator.updateBuddylist(player.getBuddylist().getBuddies())); + + CharacterNameAndId pendingBuddyRequest = c.getPlayer().getBuddylist().pollPendingRequest(); + if (pendingBuddyRequest != null) { + c.announce(MaplePacketCreator.requestBuddylistAdd(pendingBuddyRequest.getId(), c.getPlayer().getId(), pendingBuddyRequest.getName())); + } + + if(newcomer) { + for(MaplePet pet : player.getPets()) { + if(pet != null) + player.startFullnessSchedule(PetDataFactory.getHunger(pet.getItemId()), pet, player.getPetIndex(pet)); + } + } + + c.announce(MaplePacketCreator.updateGender(player)); + player.checkMessenger(); + c.announce(MaplePacketCreator.enableReport()); + player.changeSkillLevel(SkillFactory.getSkill(10000000 * player.getJobType() + 12), (byte) (player.getLinkedLevel() / 10), 20, -1); + player.checkBerserk(); + player.expirationTask(); + //player.setRates(); + if (GameConstants.hasSPTable(player.getJob()) && player.getJob().getId() != 2001) { + player.createDragon(); + } + if (newcomer){ + /* + if (!c.hasVotedAlready()){ + player.announce(MaplePacketCreator.earnTitleMessage("You can vote now! Vote and earn a vote point!")); + } + */ + if (player.isGM()){ + Server.getInstance().broadcastGMMessage(MaplePacketCreator.earnTitleMessage("GM " + player.getName() + " has logged in")); + } + + if (player.getMap().getHPDec() > 0) { + player.doHurtHp(); + } + } + } +} diff --git a/src/net/server/channel/handlers/QuestActionHandler.java b/src/net/server/channel/handlers/QuestActionHandler.java new file mode 100644 index 0000000000..cc1b7c2c16 --- /dev/null +++ b/src/net/server/channel/handlers/QuestActionHandler.java @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import scripting.quest.QuestScriptManager; +import server.quest.MapleQuest; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class QuestActionHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte action = slea.readByte(); + short questid = slea.readShort(); + MapleCharacter player = c.getPlayer(); + MapleQuest quest = MapleQuest.getInstance(questid); + if (action == 1) { //Start Quest + int npc = slea.readInt(); + if (slea.available() >= 4) { + slea.readInt(); + } + quest.start(player, npc); + } else if (action == 2) { // Complete Quest + int npc = slea.readInt(); + slea.readInt(); + if (slea.available() >= 2) { + int selection = slea.readShort(); + quest.complete(player, npc, selection); + } else { + quest.complete(player, npc); + } + } else if (action == 3) {// forfeit quest + quest.forfeit(player); + } else if (action == 4) { // scripted start quest + int npc = slea.readInt(); + slea.readInt(); + if(quest.canStart(player, npc)) { + QuestScriptManager.getInstance().start(c, questid, npc); + } + } else if (action == 5) { // scripted end quests + //System.out.println(slea.toString()); + int npc = slea.readInt(); + slea.readInt(); + if(quest.canComplete(player, npc)) { + QuestScriptManager.getInstance().end(c, questid, npc); + } + } + } +} diff --git a/src/net/server/channel/handlers/RangedAttackHandler.java b/src/net/server/channel/handlers/RangedAttackHandler.java new file mode 100644 index 0000000000..925501c5da --- /dev/null +++ b/src/net/server/channel/handlers/RangedAttackHandler.java @@ -0,0 +1,217 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import server.TimerManager; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleCharacter.CancelCooldownAction; +import client.MapleClient; +import client.Skill; +import client.SkillFactory; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.MapleWeaponType; +import constants.ItemConstants; +import constants.skills.Aran; +import constants.skills.Buccaneer; +import constants.skills.NightLord; +import constants.skills.NightWalker; +import constants.skills.Shadower; +import constants.skills.ThunderBreaker; +import constants.skills.WindArcher; + +public final class RangedAttackHandler extends AbstractDealDamageHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + player.setPetLootCd(System.currentTimeMillis()); + + /*long timeElapsed = System.currentTimeMillis() - player.getAutobanManager().getLastSpam(8); + if(timeElapsed < 300) { + AutobanFactory.FAST_ATTACK.alert(player, "Time: " + timeElapsed); + } + player.getAutobanManager().spam(8);*/ + + AttackInfo attack = parseDamage(slea, player, true, false); + + if (player.getBuffEffect(MapleBuffStat.MORPH) != null) { + if(player.getBuffEffect(MapleBuffStat.MORPH).isMorphWithoutAttack()) { + // How are they attacking when the client won't let them? + player.getClient().disconnect(false, false); + return; + } + } + + if (attack.skill == Buccaneer.ENERGY_ORB || attack.skill == ThunderBreaker.SPARK || attack.skill == Shadower.TAUNT || attack.skill == NightLord.TAUNT) { + player.getMap().broadcastMessage(player, MaplePacketCreator.rangedAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, 0, attack.allDamage, attack.speed, attack.direction, attack.display), false); + applyAttack(attack, player, 1); + } else if (attack.skill == Aran.COMBO_SMASH || attack.skill == Aran.COMBO_PENRIL || attack.skill == Aran.COMBO_TEMPEST) { + player.getMap().broadcastMessage(player, MaplePacketCreator.rangedAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, 0, attack.allDamage, attack.speed, attack.direction, attack.display), false); + if (attack.skill == Aran.COMBO_SMASH && player.getCombo() >= 30) { + player.setCombo((short) 0); + applyAttack(attack, player, 1); + } else if (attack.skill == Aran.COMBO_PENRIL && player.getCombo() >= 100) { + player.setCombo((short) 0); + applyAttack(attack, player, 2); + } else if (attack.skill == Aran.COMBO_TEMPEST && player.getCombo() >= 200) { + player.setCombo((short) 0); + applyAttack(attack, player, 4); + } + } else { + Item weapon = player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11); + MapleWeaponType type = MapleItemInformationProvider.getInstance().getWeaponType(weapon.getItemId()); + if (type == MapleWeaponType.NOT_A_WEAPON) { + return; + } + short slot = -1; + int projectile = 0; + byte bulletCount = 1; + MapleStatEffect effect = null; + if (attack.skill != 0) { + effect = attack.getAttackEffect(player, null); + bulletCount = effect.getBulletCount(); + if (effect.getCooldown() > 0) { + c.announce(MaplePacketCreator.skillCooldown(attack.skill, effect.getCooldown())); + } + } + boolean hasShadowPartner = player.getBuffedValue(MapleBuffStat.SHADOWPARTNER) != null; + if (hasShadowPartner) { + bulletCount *= 2; + } + MapleInventory inv = player.getInventory(MapleInventoryType.USE); + for (short i = 1; i <= inv.getSlotLimit(); i++) { + Item item = inv.getItem(i); + if (item != null) { + int id = item.getItemId(); + slot = item.getPosition(); + + boolean bow = ItemConstants.isArrowForBow(id); + boolean cbow = ItemConstants.isArrowForCrossBow(id); + if (item.getQuantity() >= bulletCount) { //Fixes the bug where you can't use your last arrow. + if (type == MapleWeaponType.CLAW && ItemConstants.isThrowingStar(id) && weapon.getItemId() != 1472063) { + if (((id == 2070007 || id == 2070018) && player.getLevel() < 70) || (id == 2070016 && player.getLevel() < 50)) { + } else { + projectile = id; + break; + } + } else if ((type == MapleWeaponType.GUN && ItemConstants.isBullet(id))) { + if (id == 2331000 && id == 2332000) { + if (player.getLevel() > 69) { + projectile = id; + break; + } + } else if (player.getLevel() > (id % 10) * 20 + 9) { + projectile = id; + break; + } + } else if ((type == MapleWeaponType.BOW && bow) || (type == MapleWeaponType.CROSSBOW && cbow) || (weapon.getItemId() == 1472063 && (bow || cbow))) { + projectile = id; + break; + } + } + } + } + boolean soulArrow = player.getBuffedValue(MapleBuffStat.SOULARROW) != null; + boolean shadowClaw = player.getBuffedValue(MapleBuffStat.SHADOW_CLAW) != null; + if (projectile != 0) { + if (!soulArrow && !shadowClaw && attack.skill != 11101004 && attack.skill != 15111007 && attack.skill != 14101006) { + byte bulletConsume = bulletCount; + + if (effect != null && effect.getBulletConsume() != 0) { + bulletConsume = (byte) (effect.getBulletConsume() * (hasShadowPartner ? 2 : 1)); + } + + if(slot < 0) System.out.println(" Projectile to use was unable to be found."); + else MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, bulletConsume, false, true); + } + } + if (projectile != 0 || soulArrow || attack.skill == 11101004 || attack.skill == 15111007 || attack.skill == 14101006) { + int visProjectile = projectile; //visible projectile sent to players + if (ItemConstants.isThrowingStar(projectile)) { + MapleInventory cash = player.getInventory(MapleInventoryType.CASH); + for (int i = 1; i <= cash.getSlotLimit(); i++) { // impose order... + Item item = cash.getItem((short) i); + if (item != null) { + if (item.getItemId() / 1000 == 5021) { + visProjectile = item.getItemId(); + break; + } + } + } + } else //bow, crossbow + if (soulArrow || attack.skill == 3111004 || attack.skill == 3211004 || attack.skill == 11101004 || attack.skill == 15111007 || attack.skill == 14101006) { + visProjectile = 0; + } + byte[] packet; + switch (attack.skill) { + case 3121004: // Hurricane + case 3221001: // Pierce + case 5221004: // Rapid Fire + case 13111002: // KoC Hurricane + packet = MaplePacketCreator.rangedAttack(player, attack.skill, attack.skilllevel, attack.rangedirection, attack.numAttackedAndDamage, visProjectile, attack.allDamage, attack.speed, attack.direction, attack.display); + break; + default: + packet = MaplePacketCreator.rangedAttack(player, attack.skill, attack.skilllevel, attack.stance, attack.numAttackedAndDamage, visProjectile, attack.allDamage, attack.speed, attack.direction, attack.display); + break; + } + player.getMap().broadcastMessage(player, packet, false, true); + if (effect != null) { + int money = effect.getMoneyCon(); + if (money != 0) { + int moneyMod = money / 2; + money += Randomizer.nextInt(moneyMod); + if (money > player.getMeso()) { + money = player.getMeso(); + } + player.gainMeso(-money, false); + } + } + if (attack.skill != 0) { + Skill skill = SkillFactory.getSkill(attack.skill); + MapleStatEffect effect_ = skill.getEffect(player.getSkillLevel(skill)); + if (effect_.getCooldown() > 0) { + if (player.skillisCooling(attack.skill)) { + return; + } else { + c.announce(MaplePacketCreator.skillCooldown(attack.skill, effect_.getCooldown())); + player.addCooldown(attack.skill, System.currentTimeMillis(), effect_.getCooldown() * 1000, TimerManager.getInstance().schedule(new CancelCooldownAction(player, attack.skill), effect_.getCooldown() * 1000)); + } + } + } + if ((player.getSkillLevel(SkillFactory.getSkill(NightWalker.VANISH)) > 0 || player.getSkillLevel(SkillFactory.getSkill(WindArcher.WIND_WALK)) > 0) && player.getBuffedValue(MapleBuffStat.DARKSIGHT) != null && attack.numAttacked > 0 && player.getBuffSource(MapleBuffStat.DARKSIGHT) != 9101004) { + player.cancelEffectFromBuffStat(MapleBuffStat.DARKSIGHT); + player.cancelBuffStats(MapleBuffStat.DARKSIGHT); + } + applyAttack(attack, player, bulletCount); + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/ReactorHitHandler.java b/src/net/server/channel/handlers/ReactorHitHandler.java new file mode 100644 index 0000000000..d8a29b834d --- /dev/null +++ b/src/net/server/channel/handlers/ReactorHitHandler.java @@ -0,0 +1,47 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.maps.MapleReactor; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @author Lerk + */ +public final class ReactorHitHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + //System.out.println(slea); //To see if there are any differences with packets + //CD 00 6B 00 00 00 01 00 00 00 03 00 00 00 20 03 F7 03 00 00 + //[CD 00] [66 00 00 00] [00 00 00 00] [02 00] [00 00 19 01] [00 00 00 00] + int oid = slea.readInt(); + int charPos = slea.readInt(); + short stance = slea.readShort(); + slea.skip(4); + int skillid = slea.readInt(); + MapleReactor reactor = c.getPlayer().getMap().getReactorByOid(oid); + if (reactor != null && reactor.isAlive()) { + reactor.hitReactor(charPos, stance, skillid,c); + } + } +} diff --git a/src/net/server/channel/handlers/RemoteGachaponHandler.java b/src/net/server/channel/handlers/RemoteGachaponHandler.java new file mode 100644 index 0000000000..4251c05294 --- /dev/null +++ b/src/net/server/channel/handlers/RemoteGachaponHandler.java @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import client.autoban.AutobanFactory; +import net.AbstractMaplePacketHandler; +import scripting.npc.NPCScriptManager; +import server.MapleItemInformationProvider; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Generic + */ +public final class RemoteGachaponHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int ticket = slea.readInt(); + int gacha = slea.readInt(); + if (ticket != 5451000){ + AutobanFactory.GENERAL.alert(c.getPlayer(), " Tried to use RemoteGachaponHandler with item id: " + ticket); + c.disconnect(false, false); + return; + } else if(gacha < 0 || gacha > 11) { + AutobanFactory.GENERAL.alert(c.getPlayer(), " Tried to use RemoteGachaponHandler with mode: " + gacha); + c.disconnect(false, false); + return; + } else if (c.getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(ticket)).countById(ticket) < 1) { + AutobanFactory.GENERAL.alert(c.getPlayer(), " Tried to use RemoteGachaponHandler without a ticket."); + c.disconnect(false, false); + return; + } + int npcId = 9100100; + if (gacha != 8 && gacha != 9) { + npcId += gacha; + } else { + npcId = gacha == 8 ? 9100109 : 9100117; + } + NPCScriptManager.getInstance().start(c, npcId, "gachaponRemote", null); + } +} diff --git a/src/net/server/channel/handlers/RemoteStoreHandler.java b/src/net/server/channel/handlers/RemoteStoreHandler.java new file mode 100644 index 0000000000..06ec2f31f9 --- /dev/null +++ b/src/net/server/channel/handlers/RemoteStoreHandler.java @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import net.server.channel.Channel; +import net.server.Server; +import server.maps.HiredMerchant; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 :3 + */ +public class RemoteStoreHandler extends AbstractMaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + HiredMerchant hm = getMerchant(c); + if (chr.hasMerchant() && hm != null) { + if (hm.getChannel() == chr.getClient().getChannel()) { + hm.setOpen(false); + hm.removeAllVisitors(""); + chr.setHiredMerchant(hm); + chr.announce(MaplePacketCreator.getHiredMerchant(chr, hm, false)); + } else { + c.announce(MaplePacketCreator.remoteChannelChange((byte) (hm.getChannel() - 1))); + } + return; + } else { + chr.dropMessage(1, "You don't have a Merchant open"); + } + c.announce(MaplePacketCreator.enableActions()); + } + + public HiredMerchant getMerchant(MapleClient c) { + if (c.getPlayer().hasMerchant()) { + for (Channel cserv : Server.getInstance().getChannelsFromWorld(c.getWorld())) { + if (cserv.getHiredMerchants().get(c.getPlayer().getId()) != null) { + return cserv.getHiredMerchants().get(c.getPlayer().getId()); + } + } + } + return null; + } +} diff --git a/src/net/server/channel/handlers/ReportHandler.java b/src/net/server/channel/handlers/ReportHandler.java new file mode 100644 index 0000000000..fca504e1b3 --- /dev/null +++ b/src/net/server/channel/handlers/ReportHandler.java @@ -0,0 +1,103 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Calendar; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; + +/* + * + * @author BubblesDev + */ +public final class ReportHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int type = slea.readByte(); //01 = Conversation claim 00 = illegal program + String victim = slea.readMapleAsciiString(); + int reason = slea.readByte(); + String description = slea.readMapleAsciiString(); + if (type == 0) { + if (c.getPlayer().getPossibleReports() > 0) { + if (c.getPlayer().getMeso() > 299) { + c.getPlayer().decreaseReports(); + c.getPlayer().gainMeso(-300, true); + } else { + c.announce(MaplePacketCreator.reportResponse((byte) 4)); + return; + } + } else { + c.announce(MaplePacketCreator.reportResponse((byte) 2)); + return; + } + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, victim + " was reported for: " + description)); + addReport(c.getPlayer().getId(), MapleCharacter.getIdByName(victim), 0, description, null); + } else if (type == 1) { + String chatlog = slea.readMapleAsciiString(); + if (chatlog == null) { + return; + } + if (c.getPlayer().getPossibleReports() > 0) { + if (c.getPlayer().getMeso() > 299) { + c.getPlayer().decreaseReports(); + c.getPlayer().gainMeso(-300, true); + } else { + c.announce(MaplePacketCreator.reportResponse((byte) 4)); + return; + } + } + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, victim + " was reported for: " + description)); + addReport(c.getPlayer().getId() ,MapleCharacter.getIdByName(victim), reason, description, chatlog); + } else { + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, c.getPlayer().getName() + " is probably packet editing. Got unknown report type, which is impossible.")); + } + } + + public void addReport(int reporterid, int victimid, int reason, String description, String chatlog) { + Calendar calendar = Calendar.getInstance(); + Timestamp currentTimestamp = new java.sql.Timestamp(calendar.getTime().getTime()); + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("INSERT INTO reports (`reporttime`, `reporterid`, `victimid`, `reason`, `chatlog`, `description`) VALUES (?, ?, ?, ?, ?, ?)"); + ps.setString(1, currentTimestamp.toGMTString().toString()); + ps.setInt(2, reporterid); + ps.setInt(3, victimid); + ps.setInt(4, reason); + ps.setString(5, chatlog); + ps.setString(6, description); + ps.addBatch(); + ps.executeBatch(); + ps.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/net/server/channel/handlers/RingActionHandler.java b/src/net/server/channel/handlers/RingActionHandler.java new file mode 100644 index 0000000000..5c1d2a61a8 --- /dev/null +++ b/src/net/server/channel/handlers/RingActionHandler.java @@ -0,0 +1,108 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +//import java.sql.Connection; +//import java.sql.PreparedStatement; +import client.MapleClient; +import client.MapleCharacter; +//import tools.DatabaseConnection; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; +//import scripting.npc.NPCScriptManager; +import tools.MaplePacketCreator; + +/** + * @author Jvlaple + */ +public final class RingActionHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte mode = slea.readByte(); + MapleCharacter player = c.getPlayer(); + switch (mode) { + case 0: //Send + String partnerName = slea.readMapleAsciiString(); + MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(partnerName); + if (partnerName.equalsIgnoreCase(player.getName())) { + c.getPlayer().dropMessage(1, "You cannot put your own name in it."); + return; + } else if (partner == null) { + c.getPlayer().dropMessage(1, partnerName + " was not found on this channel. If you are both logged in, please make sure you are in the same channel."); + return; + } else if (partner.getGender() == player.getGender()) { + c.getPlayer().dropMessage(1, "Your partner is the same gender as you."); + return; + } //else if (player.isMarried() && partner.isMarried()) + // NPCScriptManager.getInstance().start(partner.getClient(), 9201002, "marriagequestion", player); + break; + case 1: //Cancel send + c.getPlayer().dropMessage(1, "You've cancelled the request."); + boolean accepted = slea.readByte() > 0; + String proposerName = slea.readMapleAsciiString(); + if (accepted) { + c.announce(MaplePacketCreator.sendEngagementRequest(proposerName)); + } + break; + case 2: + slea.readByte(); //type + case 3: //Drop Ring + /* + if (player.getPartner() != null) { + try { + Connection con = DatabaseConnection.getConnection(); + int pid = 0; + if (player.getGender() == 0) + pid = player.getId(); + else + pid = player.getPartner().getId();//we have an engagements SQL? + PreparedStatement ps = con.prepareStatement("DELETE FROM engagements WHERE husbandid = ?"); + ps.setInt(1, pid); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("UPDATE characters SET marriagequest = 0 WHERE id = ?, and WHERE id = ?"); + ps.setInt(1, player.getId()); + ps.setInt(2, player.getPartner().getId()); + ps.executeUpdate(); + ps.close(); + } catch (Exception ex) { + } + c.getPlayer().dropMessage(1, "Your engagement has been broken up."); + break; + }*/ + break; + case 9: // groom's wishlist + int amount = slea.readShort(); + if (amount > 10) { + amount = 10; + } + String[] items = new String[10]; + for (int i = 0; i < amount; i++) { + items[i] = slea.readMapleAsciiString(); + } + c.announce(MaplePacketCreator.sendGroomWishlist()); //WTF< + break; + default: + System.out.println("NEW RING ACTION " + mode); + break; + } + } +} diff --git a/src/net/server/channel/handlers/ScriptedItemHandler.java b/src/net/server/channel/handlers/ScriptedItemHandler.java new file mode 100644 index 0000000000..badb1fb006 --- /dev/null +++ b/src/net/server/channel/handlers/ScriptedItemHandler.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.Item; +import net.AbstractMaplePacketHandler; +import scripting.item.ItemScriptManager; +import server.MapleItemInformationProvider; +import server.MapleItemInformationProvider.scriptedItem; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public final class ScriptedItemHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + slea.readInt(); // trash stamp (thx rmzero) + short itemSlot = slea.readShort(); // item sl0t (thx rmzero) + int itemId = slea.readInt(); // itemId + scriptedItem info = ii.getScriptedItemInfo(itemId); + if (info == null) return; + ItemScriptManager ism = ItemScriptManager.getInstance(); + Item item = c.getPlayer().getInventory(ii.getInventoryType(itemId)).getItem(itemSlot); + if (item == null || item.getItemId() != itemId || item.getQuantity() < 1 || !ism.scriptExists(info.getScript())) { + return; + } + ism.getItemScript(c, info.getScript()); + c.announce(MaplePacketCreator.enableActions()); + //NPCScriptManager.getInstance().start(c, info.getNpc(), null, null); + } +} diff --git a/src/net/server/channel/handlers/ScrollHandler.java b/src/net/server/channel/handlers/ScrollHandler.java new file mode 100644 index 0000000000..83436c626d --- /dev/null +++ b/src/net/server/channel/handlers/ScrollHandler.java @@ -0,0 +1,135 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import client.Skill; +import client.SkillFactory; +import client.inventory.Equip; +import client.inventory.Equip.ScrollResult; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.ModifyInventory; +import java.util.ArrayList; +import java.util.List; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @author Matze + * @author Frz + */ +public final class ScrollHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readInt(); // whatever... + short slot = slea.readShort(); + short dst = slea.readShort(); + byte ws = (byte) slea.readShort(); + boolean whiteScroll = false; // white scroll being used? + boolean legendarySpirit = false; // legendary spirit skill + if ((ws & 2) == 2) { + whiteScroll = true; + } + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Equip toScroll = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(dst); + Skill LegendarySpirit = SkillFactory.getSkill(1003); + if (c.getPlayer().getSkillLevel(LegendarySpirit) > 0 && dst >= 0) { + legendarySpirit = true; + toScroll = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem(dst); + } + byte oldLevel = toScroll.getLevel(); + byte oldSlots = toScroll.getUpgradeSlots(); + MapleInventory useInventory = c.getPlayer().getInventory(MapleInventoryType.USE); + Item scroll = useInventory.getItem(slot); + Item wscroll = null; + if (((Equip) toScroll).getUpgradeSlots() < 1 && !isCleanSlate(scroll.getItemId())) { + c.announce(MaplePacketCreator.getInventoryFull()); + return; + } + List scrollReqs = ii.getScrollReqs(scroll.getItemId()); + if (scrollReqs.size() > 0 && !scrollReqs.contains(toScroll.getItemId())) { + c.announce(MaplePacketCreator.getInventoryFull()); + return; + } + if (whiteScroll) { + wscroll = useInventory.findById(2340000); + if (wscroll == null || wscroll.getItemId() != 2340000) { + whiteScroll = false; + } + } + if (!isChaosScroll(scroll.getItemId()) && !isCleanSlate(scroll.getItemId())) { + if (!canScroll(scroll.getItemId(), toScroll.getItemId())) { + return; + } + } + + if (isCleanSlate(scroll.getItemId()) && !(toScroll.getLevel() + toScroll.getUpgradeSlots() < ii.getEquipStats(toScroll.getItemId()).get("tuc"))) { //upgrade slots can be over because of hammers + return; + } + Equip scrolled = (Equip) ii.scrollEquipWithId(toScroll, scroll.getItemId(), whiteScroll, c.getPlayer().isGM()); + ScrollResult scrollSuccess = Equip.ScrollResult.FAIL; // fail + if (scrolled == null) { + scrollSuccess = Equip.ScrollResult.CURSE; + } else if (scrolled.getLevel() > oldLevel || (isCleanSlate(scroll.getItemId()) && scrolled.getUpgradeSlots() == oldSlots + 1)) { + scrollSuccess = Equip.ScrollResult.SUCCESS; + } + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, scroll.getPosition(), (short) 1, false); + if (whiteScroll && !isCleanSlate(scroll.getItemId())) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, wscroll.getPosition(), (short) 1, false, false); + } + final List mods = new ArrayList<>(); + if (scrollSuccess == Equip.ScrollResult.CURSE) { + mods.add(new ModifyInventory(3, toScroll)); + if (dst < 0) { + c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).removeItem(toScroll.getPosition()); + } else { + c.getPlayer().getInventory(MapleInventoryType.EQUIP).removeItem(toScroll.getPosition()); + } + } else { + mods.add(new ModifyInventory(3, scrolled)); + mods.add(new ModifyInventory(0, scrolled)); + } + c.announce(MaplePacketCreator.modifyInventory(true, mods)); + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.getScrollEffect(c.getPlayer().getId(), scrollSuccess, legendarySpirit)); + if (dst < 0 && (scrollSuccess == Equip.ScrollResult.SUCCESS || scrollSuccess == Equip.ScrollResult.CURSE)) { + c.getPlayer().equipChanged(); + } + } + + private boolean isCleanSlate(int scrollId) { + return scrollId > 2048999 && scrollId < 2049004; + } + + private boolean isChaosScroll(int scrollId) { + return scrollId >= 2049100 && scrollId <= 2049103; + } + + public boolean canScroll(int scrollid, int itemid) { + return (scrollid / 100) % 100 == (itemid / 10000) % 100; + } +} diff --git a/src/net/server/channel/handlers/SkillBookHandler.java b/src/net/server/channel/handlers/SkillBookHandler.java new file mode 100644 index 0000000000..8d82b0691b --- /dev/null +++ b/src/net/server/channel/handlers/SkillBookHandler.java @@ -0,0 +1,82 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.Skill; +import client.SkillFactory; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import java.util.Map; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class SkillBookHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + slea.readInt(); + short slot = (short) slea.readShort(); + int itemId = slea.readInt(); + MapleCharacter player = c.getPlayer(); + Item toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); + if (toUse != null && toUse.getQuantity() == 1) { + if (toUse.getItemId() != itemId) { + return; + } + Map skilldata = MapleItemInformationProvider.getInstance().getSkillStats(toUse.getItemId(), c.getPlayer().getJob().getId()); + boolean canuse; + boolean success = false; + int skill = 0; + int maxlevel = 0; + if (skilldata == null) { + return; + } + Skill skill2 = SkillFactory.getSkill(skilldata.get("skillid")); + if (skilldata.get("skillid") == 0) { + canuse = false; + } else if ((player.getSkillLevel(skill2) >= skilldata.get("reqSkillLevel") || skilldata.get("reqSkillLevel") == 0) && player.getMasterLevel(skill2) < skilldata.get("masterLevel")) { + canuse = true; + if (Randomizer.nextInt(101) < skilldata.get("success") && skilldata.get("success") != 0) { + success = true; + + player.changeSkillLevel(skill2, player.getSkillLevel(skill2), Math.max(skilldata.get("masterLevel"), player.getMasterLevel(skill2)), -1); + } else { + success = false; + //player.dropMessage("The skill book lights up, but the skill winds up as if nothing happened."); + } + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false); + } else { + canuse = false; + } + player.getClient().announce(MaplePacketCreator.skillBookSuccess(player, skill, maxlevel, canuse, success)); + } + } +} diff --git a/src/net/server/channel/handlers/SkillEffectHandler.java b/src/net/server/channel/handlers/SkillEffectHandler.java new file mode 100644 index 0000000000..f2ff99bff3 --- /dev/null +++ b/src/net/server/channel/handlers/SkillEffectHandler.java @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import constants.skills.Bishop; +import constants.skills.Bowmaster; +import constants.skills.Brawler; +import constants.skills.ChiefBandit; +import constants.skills.Corsair; +import constants.skills.DarkKnight; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.FPMage; +import constants.skills.Gunslinger; +import constants.skills.Hero; +import constants.skills.ILArchMage; +import constants.skills.Marksman; +import constants.skills.NightWalker; +import constants.skills.Paladin; +import constants.skills.ThunderBreaker; +import constants.skills.WindArcher; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class SkillEffectHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int skillId = slea.readInt(); + int level = slea.readByte(); + byte flags = slea.readByte(); + int speed = slea.readByte(); + byte aids = slea.readByte();//Mmmk + switch (skillId) { + case FPMage.EXPLOSION: + case FPArchMage.BIG_BANG: + case ILArchMage.BIG_BANG: + case Bishop.BIG_BANG: + case Bowmaster.HURRICANE: + case Marksman.PIERCING_ARROW: + case ChiefBandit.CHAKRA: + case Brawler.CORKSCREW_BLOW: + case Gunslinger.GRENADE: + case Corsair.RAPID_FIRE: + case WindArcher.HURRICANE: + case NightWalker.POISON_BOMB: + case ThunderBreaker.CORKSCREW_BLOW: + case Paladin.MONSTER_MAGNET: + case DarkKnight.MONSTER_MAGNET: + case Hero.MONSTER_MAGNET: + case Evan.FIRE_BREATH: + case Evan.ICE_BREATH: + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.skillEffect(c.getPlayer(), skillId, level, flags, speed, aids), false); + return; + default: + System.out.println(c.getPlayer() + " entered SkillEffectHandler without being handled using " + skillId + "."); + return; + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/SkillMacroHandler.java b/src/net/server/channel/handlers/SkillMacroHandler.java new file mode 100644 index 0000000000..de88635f34 --- /dev/null +++ b/src/net/server/channel/handlers/SkillMacroHandler.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.SkillMacro; +import tools.data.input.SeekableLittleEndianAccessor; +import net.AbstractMaplePacketHandler; + +public final class SkillMacroHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int num = slea.readByte(); + for (int i = 0; i < num; i++) { + String name = slea.readMapleAsciiString(); + int shout = slea.readByte(); + int skill1 = slea.readInt(); + int skill2 = slea.readInt(); + int skill3 = slea.readInt(); + SkillMacro macro = new SkillMacro(skill1, skill2, skill3, name, shout, i); + c.getPlayer().updateMacros(i, macro); + } + } +} diff --git a/src/net/server/channel/handlers/SnowballHandler.java b/src/net/server/channel/handlers/SnowballHandler.java new file mode 100644 index 0000000000..d8abfcd1af --- /dev/null +++ b/src/net/server/channel/handlers/SnowballHandler.java @@ -0,0 +1,65 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ + +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.events.gm.MapleSnowball; +import server.maps.MapleMap; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public final class SnowballHandler extends AbstractMaplePacketHandler{ + + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + //D3 00 02 00 00 A5 01 + MapleCharacter chr = c.getPlayer(); + MapleMap map = chr.getMap(); + final MapleSnowball snowball = map.getSnowball(chr.getTeam()); + final MapleSnowball othersnowball = map.getSnowball(chr.getTeam() == 0 ? (byte) 1 : 0); + int what = slea.readByte(); + //slea.skip(4); + + if (snowball == null || othersnowball == null || snowball.getSnowmanHP() == 0) return; + if ((System.currentTimeMillis() - chr.getLastSnowballAttack()) < 500) return; + if (chr.getTeam() != (what % 2)) return; + + chr.setLastSnowballAttack(System.currentTimeMillis()); + int damage = 0; + if (what < 2 && othersnowball.getSnowmanHP() > 0) + damage = 10; + else if (what == 2 || what == 3) { + if (Math.random() < 0.03) + damage = 45; + else + damage = 15; + } + + if (what >= 0 && what <= 4) + snowball.hit(what, damage); + + } +} diff --git a/src/net/server/channel/handlers/SpawnPetHandler.java b/src/net/server/channel/handlers/SpawnPetHandler.java new file mode 100644 index 0000000000..27590c28b4 --- /dev/null +++ b/src/net/server/channel/handlers/SpawnPetHandler.java @@ -0,0 +1,106 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import java.awt.Point; +import java.io.File; +import java.sql.PreparedStatement; +import client.MapleClient; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.inventory.PetDataFactory; +import client.SkillFactory; +import java.sql.SQLException; +import tools.DatabaseConnection; +import net.AbstractMaplePacketHandler; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import server.MapleInventoryManipulator; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class SpawnPetHandler extends AbstractMaplePacketHandler { + private static MapleDataProvider dataRoot = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Item.wz")); + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + slea.readInt(); + byte slot = slea.readByte(); + slea.readByte(); + boolean lead = slea.readByte() == 1; + MaplePet pet = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getPet(); + if (pet == null) return; + + int petid = pet.getItemId(); + if (petid == 5000028 || petid == 5000047) //Handles Dragon AND Robos + { + if (chr.haveItem(petid + 1)) { + chr.dropMessage(5, "You can't hatch your " + (petid == 5000028 ? "Dragon egg" : "Robo egg") + " if you already have a Baby " + (petid == 5000028 ? "Dragon." : "Robo.")); + c.announce(MaplePacketCreator.enableActions()); + return; + } else { + int evolveid = MapleDataTool.getInt("info/evol1", dataRoot.getData("Pet/" + petid + ".img")); + int petId = MaplePet.createPet(evolveid); + if (petId == -1) { + return; + } + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("DELETE FROM pets WHERE `petid` = ?"); + ps.setInt(1, pet.getUniqueId()); + ps.executeUpdate(); + ps.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + long expiration = chr.getInventory(MapleInventoryType.CASH).getItem(slot).getExpiration(); + MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, petid, (short) 1, false, false); + MapleInventoryManipulator.addById(c, evolveid, (short) 1, null, petId, expiration); + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + if (chr.getPetIndex(pet) != -1) { + chr.unequipPet(pet, true); + } else { + if (chr.getSkillLevel(SkillFactory.getSkill(8)) == 0 && chr.getPet(0) != null) { + chr.unequipPet(chr.getPet(0), false); + } + if (lead) { + chr.shiftPetsRight(); + } + Point pos = chr.getPosition(); + pos.y -= 12; + pet.setPos(pos); + pet.setFh(chr.getMap().getFootholds().findBelow(pet.getPos()).getId()); + pet.setStance(0); + pet.setSummoned(true); + pet.saveToDb(); + chr.addPet(pet); + chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showPet(c.getPlayer(), pet, false, false), true); + c.announce(MaplePacketCreator.petStatUpdate(c.getPlayer())); + c.announce(MaplePacketCreator.enableActions()); + chr.startFullnessSchedule(PetDataFactory.getHunger(pet.getItemId()), pet, chr.getPetIndex(pet)); + } + } +} diff --git a/src/net/server/channel/handlers/SpecialMoveHandler.java b/src/net/server/channel/handlers/SpecialMoveHandler.java new file mode 100644 index 0000000000..fc7b84da67 --- /dev/null +++ b/src/net/server/channel/handlers/SpecialMoveHandler.java @@ -0,0 +1,134 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import java.awt.Point; +import java.util.concurrent.ScheduledFuture; + +import net.AbstractMaplePacketHandler; +import server.MapleStatEffect; +import server.TimerManager; +import server.life.MapleMonster; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleCharacter.CancelCooldownAction; +import client.autoban.AutobanFactory; +import client.MapleClient; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import constants.GameConstants; +import constants.skills.Brawler; +import constants.skills.Corsair; +import constants.skills.DarkKnight; +import constants.skills.Hero; +import constants.skills.Paladin; +import constants.skills.Priest; + + +public final class SpecialMoveHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + chr.getAutobanManager().setTimestamp(4, slea.readInt(), 3); + int skillid = slea.readInt(); + if ((!GameConstants.isPQSkillMap(c.getPlayer().getMapId()) && GameConstants.isPqSkill(skillid)) || (!c.getPlayer().isGM() && GameConstants.isGMSkills(skillid)) || (!GameConstants.isInJobTree(skillid, c.getPlayer().getJob().getId()) && !c.getPlayer().isGM())) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit skills."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job.\r\n"); + c.disconnect(true, false); + return; + } + Point pos = null; + int __skillLevel = slea.readByte(); + Skill skill = SkillFactory.getSkill(skillid); + int skillLevel = chr.getSkillLevel(skill); + if (skillid % 10000000 == 1010 || skillid % 10000000 == 1011) { + skillLevel = 1; + chr.setDojoEnergy(0); + c.announce(MaplePacketCreator.getEnergy("energy", 0)); + } + if (skillLevel == 0 || skillLevel != __skillLevel) return; + + MapleStatEffect effect = skill.getEffect(skillLevel); + if (effect.getCooldown() > 0) { + if (chr.skillisCooling(skillid)) { + return; + } else if (skillid != Corsair.BATTLE_SHIP) { + c.announce(MaplePacketCreator.skillCooldown(skillid, effect.getCooldown())); + ScheduledFuture timer = TimerManager.getInstance().schedule(new CancelCooldownAction(c.getPlayer(), skillid), effect.getCooldown() * 1000); + chr.addCooldown(skillid, System.currentTimeMillis(), effect.getCooldown() * 1000, timer); + } + } + if (skillid == Hero.MONSTER_MAGNET || skillid == Paladin.MONSTER_MAGNET || skillid == DarkKnight.MONSTER_MAGNET) { // Monster Magnet + int num = slea.readInt(); + int mobId; + byte success; + for (int i = 0; i < num; i++) { + mobId = slea.readInt(); + success = slea.readByte(); + chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showMagnet(mobId, success), false); + MapleMonster monster = chr.getMap().getMonsterByOid(mobId); + if (monster != null) { + if (!monster.isBoss()) { + monster.switchController(c.getPlayer(), monster.isControllerHasAggro()); + } + } + } + byte direction = slea.readByte(); + chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showBuffeffect(chr.getId(), skillid, chr.getSkillLevel(skillid), direction), false); + c.announce(MaplePacketCreator.enableActions()); + return; + } else if (skillid == Brawler.MP_RECOVERY) {// MP Recovery + Skill s = SkillFactory.getSkill(skillid); + MapleStatEffect ef = s.getEffect(chr.getSkillLevel(s)); + int lose = chr.getMaxHp() / ef.getX(); + chr.setHp(chr.getHp() - lose); + chr.updateSingleStat(MapleStat.HP, chr.getHp()); + int gain = lose * (ef.getY() / 100); + chr.setMp(chr.getMp() + gain); + chr.updateSingleStat(MapleStat.MP, chr.getMp()); + } else if (skillid % 10000000 == 1004) { + slea.readShort(); + } + + if (slea.available() == 5) { + pos = new Point(slea.readShort(), slea.readShort()); + } + if (skill.getId() == Priest.MYSTIC_DOOR && !chr.isGM()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (chr.isAlive()) { + if (skill.getId() != Priest.MYSTIC_DOOR || chr.canDoor()) { + skill.getEffect(skillLevel).applyTo(c.getPlayer(), pos); + } else { + chr.message("Please wait 5 seconds before casting Mystic Door again"); + c.announce(MaplePacketCreator.enableActions()); + } + } else { + c.announce(MaplePacketCreator.enableActions()); + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/SpouseChatHandler.java b/src/net/server/channel/handlers/SpouseChatHandler.java new file mode 100644 index 0000000000..29fb8e0fdc --- /dev/null +++ b/src/net/server/channel/handlers/SpouseChatHandler.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +//import client.MapleCharacter; +import client.MapleClient; +//import client.command.CommandProcessor; +import net.AbstractMaplePacketHandler; +//import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class SpouseChatHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + System.out.println(slea.toString()); +// slea.readMapleAsciiString();//recipient +// String msg = slea.readMapleAsciiString(); +// if (!CommandProcessor.processCommand(c, msg)) +// if (c.getPlayer().isMarried()) { +// MapleCharacter wife = c.getChannelServer().getPlayerStorage().getCharacterById(c.getPlayer().getPartnerId()); +// if (wife != null) { +// wife.getClient().announce(MaplePacketCreator.sendSpouseChat(c.getPlayer(), msg)); +// c.announce(MaplePacketCreator.sendSpouseChat(c.getPlayer(), msg)); +// } else +// try { +// if (c.getChannelServer().getWorldInterface().isConnected(wife.getName())) { +// c.getChannelServer().getWorldInterface().sendSpouseChat(c.getPlayer().getName(), wife.getName(), msg); +// c.announce(MaplePacketCreator.sendSpouseChat(c.getPlayer(), msg)); +// } else +// c.getPlayer().message("You are either not married or your spouse is currently offline."); +// } catch (Exception e) { +// c.getPlayer().message("You are either not married or your spouse is currently offline."); +// c.getChannelServer().reconnectWorld(); +// } +// } + } +} diff --git a/src/net/server/channel/handlers/StorageHandler.java b/src/net/server/channel/handlers/StorageHandler.java new file mode 100644 index 0000000000..412450ccb6 --- /dev/null +++ b/src/net/server/channel/handlers/StorageHandler.java @@ -0,0 +1,159 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import constants.ItemConstants; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleStorage; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Matze + */ +public final class StorageHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + byte mode = slea.readByte(); + final MapleStorage storage = chr.getStorage(); + + if (chr.getLevel() < 15){ + chr.message("You may only use this storage once you have reached level 15."); + return; + } + if (mode == 4) { // take out + byte type = slea.readByte(); + byte slot = slea.readByte(); + if (slot < 0 || slot > storage.getSlots()) { // removal starts at zero + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to work with storage slot " + slot + "\r\n"); + c.disconnect(true, false); + return; + } + slot = storage.getSlot(MapleInventoryType.getByType(type), slot); + Item item = storage.getItem(slot); + if (item != null) { + if (MapleItemInformationProvider.getInstance().isPickupRestricted(item.getItemId()) && chr.getItemQuantity(item.getItemId(), true) > 0) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0C)); + return; + } + if (chr.getMap().getId() == 910000000) { + if (chr.getMeso() < 1000) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0B)); + return; + } else { + chr.gainMeso(-1000, false); + } + } + if (MapleInventoryManipulator.checkSpace(c, item.getItemId(), item.getQuantity(), item.getOwner())) { + item = storage.takeOut(slot);//actually the same but idc + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); + FilePrinter.printError(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " took out " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + if ((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA) { + item.setFlag((byte) (item.getFlag() ^ ItemConstants.KARMA)); //items with scissors of karma used on them are reset once traded + } else if (item.getType() == 2 && (item.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES){ + item.setFlag((byte) (item.getFlag() ^ ItemConstants.SPIKES)); + } + MapleInventoryManipulator.addFromDrop(c, item, false); + storage.sendTakenOut(c, ii.getInventoryType(item.getItemId())); + } else { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0A)); + } + } + } else if (mode == 5) { // store + short slot = slea.readShort(); + int itemId = slea.readInt(); + short quantity = slea.readShort(); + MapleInventoryType slotType = ii.getInventoryType(itemId); + MapleInventory Inv = chr.getInventory(slotType); + if (slot < 1 || slot > Inv.getSlotLimit()) { //player inv starts at one + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with storage."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to store item at slot " + slot + "\r\n"); + c.disconnect(true, false); + return; + } + if (quantity < 1 || chr.getItemQuantity(itemId, false) < quantity) { + return; + } + if (storage.isFull()) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x11)); + return; + } + short meso = (short) (chr.getMap().getId() == 910000000 ? -500 : -100); + if (chr.getMeso() < meso) { + c.announce(MaplePacketCreator.getStorageError((byte) 0x0B)); + } else { + MapleInventoryType type = ii.getInventoryType(itemId); + Item item = chr.getInventory(type).getItem(slot).copy(); + if (item.getItemId() == itemId && (item.getQuantity() >= quantity || ItemConstants.isRechargable(itemId))) { + if (ItemConstants.isRechargable(itemId)) { + quantity = item.getQuantity(); + } + chr.gainMeso(meso, false, true, false); + MapleInventoryManipulator.removeFromSlot(c, type, slot, quantity, false); + item.setQuantity(quantity); + storage.store(item); + storage.sendStored(c, ii.getInventoryType(itemId)); + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()); + FilePrinter.printError(FilePrinter.STORAGE + c.getAccountName() + ".txt", c.getPlayer().getName() + " stored " + item.getQuantity() + " " + itemName + " (" + item.getItemId() + ")\r\n"); + } + } + } else if (mode == 7) { // meso + int meso = slea.readInt(); + int storageMesos = storage.getMeso(); + int playerMesos = chr.getMeso(); + if ((meso > 0 && storageMesos >= meso) || (meso < 0 && playerMesos >= -meso)) { + if (meso < 0 && (storageMesos - meso) < 0) { + meso = -2147483648 + storageMesos; + if (meso < playerMesos) { + return; + } + } else if (meso > 0 && (playerMesos + meso) < 0) { + meso = 2147483647 - playerMesos; + if (meso > storageMesos) { + return; + } + } + storage.setMeso(storageMesos - meso); + chr.gainMeso(meso, false, true, false); + FilePrinter.printError(FilePrinter.STORAGE + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + (meso > 0 ? " took out " : " stored ") + Math.abs(meso) + " mesos\r\n"); + } else { + return; + } + storage.sendMeso(c); + } else if (mode == 8) {// close + storage.close(); + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/SummonDamageHandler.java b/src/net/server/channel/handlers/SummonDamageHandler.java new file mode 100644 index 0000000000..3d827af481 --- /dev/null +++ b/src/net/server/channel/handlers/SummonDamageHandler.java @@ -0,0 +1,101 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.Skill; +import client.SkillFactory; +import client.status.MonsterStatusEffect; +import java.util.ArrayList; +import java.util.List; +import net.AbstractMaplePacketHandler; +import server.MapleStatEffect; +import server.life.MapleMonster; +import server.maps.MapleSummon; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class SummonDamageHandler extends AbstractMaplePacketHandler { + public final class SummonAttackEntry { + + private int monsterOid; + private int damage; + + public SummonAttackEntry(int monsterOid, int damage) { + this.monsterOid = monsterOid; + this.damage = damage; + } + + public int getMonsterOid() { + return monsterOid; + } + + public int getDamage() { + return damage; + } + } + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int oid = slea.readInt(); + MapleCharacter player = c.getPlayer(); + if (!player.isAlive()) { + return; + } + MapleSummon summon = null; + for (MapleSummon sum : player.getSummons().values()) { + if (sum.getObjectId() == oid) { + summon = sum; + } + } + if (summon == null) { + return; + } + Skill summonSkill = SkillFactory.getSkill(summon.getSkill()); + MapleStatEffect summonEffect = summonSkill.getEffect(summon.getSkillLevel()); + slea.skip(4); + List allDamage = new ArrayList<>(); + byte direction = slea.readByte(); + int numAttacked = slea.readByte(); + slea.skip(8); //Thanks Gerald :D, I failed lol (mob x,y and summon x,y) + for (int x = 0; x < numAttacked; x++) { + int monsterOid = slea.readInt(); // attacked oid + slea.skip(18); + int damage = slea.readInt(); + allDamage.add(new SummonAttackEntry(monsterOid, damage)); + } + player.getMap().broadcastMessage(player, MaplePacketCreator.summonAttack(player.getId(), summon.getSkill(), direction, allDamage), summon.getPosition()); + for (SummonAttackEntry attackEntry : allDamage) { + int damage = attackEntry.getDamage(); + MapleMonster target = player.getMap().getMonsterByOid(attackEntry.getMonsterOid()); + if (target != null) { + if (damage > 0 && summonEffect.getMonsterStati().size() > 0) { + if (summonEffect.makeChanceResult()) { + target.applyStatus(player, new MonsterStatusEffect(summonEffect.getMonsterStati(), summonSkill, null, false), summonEffect.isPoison(), 4000); + } + } + player.getMap().damageMonster(player, target, damage); + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/TakeDamageHandler.java b/src/net/server/channel/handlers/TakeDamageHandler.java new file mode 100644 index 0000000000..0d5f7755b3 --- /dev/null +++ b/src/net/server/channel/handlers/TakeDamageHandler.java @@ -0,0 +1,217 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleClient; +import client.Skill; +import client.SkillFactory; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; +import constants.skills.Aran; +import constants.skills.Corsair; + +import java.awt.Point; +import java.util.Collections; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import server.life.MapleLifeFactory.loseItem; +import server.life.MapleMonster; +import server.life.MobAttackInfo; +import server.life.MobAttackInfoFactory; +import server.life.MobSkill; +import server.life.MobSkillFactory; +import server.maps.MapleMap; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class TakeDamageHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + slea.readInt(); + byte damagefrom = slea.readByte(); + slea.readByte(); //Element + int damage = slea.readInt(); + int oid = 0, monsteridfrom = 0, pgmr = 0, direction = 0; + int pos_x = 0, pos_y = 0, fake = 0; + boolean is_pgmr = false, is_pg = true; + int mpattack = 0; + MapleMonster attacker = null; + final MapleMap map = player.getMap(); + if (damagefrom != -3 && damagefrom != -4) { + monsteridfrom = slea.readInt(); + oid = slea.readInt(); + attacker = (MapleMonster) map.getMapObject(oid); + List loseItems; + if (attacker != null) { + if (attacker.isBuffed(MonsterStatus.NEUTRALISE)) { + return; + } + if (damage > 0) { + loseItems = map.getMonsterById(monsteridfrom).getStats().loseItem(); + if (loseItems != null) { + MapleInventoryType type; + final int playerpos = player.getPosition().x; + byte d = 1; + Point pos = new Point(0, player.getPosition().y); + for (loseItem loseItem : loseItems) { + type = MapleItemInformationProvider.getInstance().getInventoryType(loseItem.getId()); + for (byte b = 0; b < loseItem.getX(); b++) {//LOL? + if (Randomizer.nextInt(101) >= loseItem.getChance()) { + if (player.haveItem(loseItem.getId())) { + pos.x = (int) (playerpos + ((d % 2 == 0) ? (25 * (d + 1) / 2) : -(25 * (d / 2)))); + MapleInventoryManipulator.removeById(c, type, loseItem.getId(), 1, false, false); + map.spawnItemDrop(c.getPlayer(), c.getPlayer(), new Item(loseItem.getId(), (short) 0, (short) 1), map.calcDropPos(pos, player.getPosition()), true, true); + d++; + } else { + break; + } + } + } + } + map.removeMapObject(attacker); + } + } + } else { + return; + } + direction = slea.readByte(); + } + if (damagefrom != -1 && damagefrom != -2 && attacker != null) { + MobAttackInfo attackInfo = MobAttackInfoFactory.getMobAttackInfo(attacker, damagefrom); + if (attackInfo != null) { + if (attackInfo.isDeadlyAttack()) { + mpattack = player.getMp() - 1; + } + mpattack += attackInfo.getMpBurn(); + MobSkill skill = MobSkillFactory.getMobSkill(attackInfo.getDiseaseSkill(), attackInfo.getDiseaseLevel()); + if (skill != null && damage > 0) { + skill.applyEffect(player, attacker, false); + } + if (attacker != null) { + attacker.setMp(attacker.getMp() - attackInfo.getMpCon()); + if (player.getBuffedValue(MapleBuffStat.MANA_REFLECTION) != null && damage > 0 && !attacker.isBoss()) { + int jobid = player.getJob().getId(); + if (jobid == 212 || jobid == 222 || jobid == 232) { + int id = jobid * 10000 + 1002; + Skill manaReflectSkill = SkillFactory.getSkill(id); + if (player.isBuffFrom(MapleBuffStat.MANA_REFLECTION, manaReflectSkill) && player.getSkillLevel(manaReflectSkill) > 0 && manaReflectSkill.getEffect(player.getSkillLevel(manaReflectSkill)).makeChanceResult()) { + int bouncedamage = (damage * manaReflectSkill.getEffect(player.getSkillLevel(manaReflectSkill)).getX() / 100); + if (bouncedamage > attacker.getMaxHp() / 5) { + bouncedamage = attacker.getMaxHp() / 5; + } + map.damageMonster(player, attacker, bouncedamage); + map.broadcastMessage(player, MaplePacketCreator.damageMonster(oid, bouncedamage), true); + player.getClient().announce(MaplePacketCreator.showOwnBuffEffect(id, 5)); + map.broadcastMessage(player, MaplePacketCreator.showBuffeffect(player.getId(), id, 5), false); + } + } + } + } + } + } + if (damage == -1) { + fake = 4020002 + (player.getJob().getId() / 10 - 40) * 100000; + } + if (damage == 0) { + player.getAutobanManager().addMiss(); + } else { + player.getAutobanManager().resetMisses(); + } + if (damage > 0 && !player.isHidden()) { + if (attacker != null && damagefrom == -1 && player.getBuffedValue(MapleBuffStat.POWERGUARD) != null) { // PG works on bosses, but only at half of the rate. + int bouncedamage = (int) (damage * (player.getBuffedValue(MapleBuffStat.POWERGUARD).doubleValue() / (attacker.isBoss() ? 200 : 100))); + bouncedamage = Math.min(bouncedamage, attacker.getMaxHp() / 10); + damage -= bouncedamage; + map.damageMonster(player, attacker, bouncedamage); + map.broadcastMessage(player, MaplePacketCreator.damageMonster(oid, bouncedamage), false, true); + player.checkMonsterAggro(attacker); + } + if (attacker != null && damagefrom == -1 && player.getBuffedValue(MapleBuffStat.BODY_PRESSURE) != null) { + Skill skill = SkillFactory.getSkill(Aran.BODY_PRESSURE); + final MapleStatEffect eff = skill.getEffect(player.getSkillLevel(skill)); + if (!attacker.alreadyBuffedStats().contains(MonsterStatus.NEUTRALISE)) { + if (!attacker.isBoss() && eff.makeChanceResult()) { + attacker.applyStatus(player, new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.NEUTRALISE, 1), skill, null, false), false, (eff.getDuration()/10) * 2, false); + } + } + } + if (damagefrom != -3 && damagefrom != -4) { + int achilles = 0; + Skill achilles1 = null; + int jobid = player.getJob().getId(); + if (jobid < 200 && jobid % 10 == 2) { + achilles1 = SkillFactory.getSkill(jobid * 10000 + (jobid == 112 ? 4 : 5)); + achilles = player.getSkillLevel(achilles1); + } + if (achilles != 0 && achilles1 != null) { + damage *= (achilles1.getEffect(achilles).getX() / 1000.0); + } + } + Integer mesoguard = player.getBuffedValue(MapleBuffStat.MESOGUARD); + if (player.getBuffedValue(MapleBuffStat.MAGIC_GUARD) != null && mpattack == 0) { + int mploss = (int) (damage * (player.getBuffedValue(MapleBuffStat.MAGIC_GUARD).doubleValue() / 100.0)); + int hploss = damage - mploss; + if (mploss > player.getMp()) { + hploss += mploss - player.getMp(); + mploss = player.getMp(); + } + player.addMPHP(-hploss, -mploss); + } else if (mesoguard != null) { + damage = Math.round(damage / 2); + int mesoloss = (int) (damage * (mesoguard.doubleValue() / 100.0)); + if (player.getMeso() < mesoloss) { + player.gainMeso(-player.getMeso(), false); + player.cancelBuffStats(MapleBuffStat.MESOGUARD); + } else { + player.gainMeso(-mesoloss, false); + } + player.addMPHP(-damage, -mpattack); + } else { + if (player.getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) { + if (player.getBuffedValue(MapleBuffStat.MONSTER_RIDING).intValue() == Corsair.BATTLE_SHIP) { + player.decreaseBattleshipHp(damage); + } + } + player.addMPHP(-damage, -mpattack); + } + } + if (!player.isHidden()) { + map.broadcastMessage(player, MaplePacketCreator.damagePlayer(damagefrom, monsteridfrom, player.getId(), damage, fake, direction, is_pgmr, pgmr, is_pg, oid, pos_x, pos_y), false); + player.checkBerserk(); + } + if (map.getId() >= 925020000 && map.getId() < 925030000) { + player.setDojoEnergy(player.isGM() ? 300 : player.getDojoEnergy() < 300 ? player.getDojoEnergy() + 1 : 0); //Fking gm's + player.getClient().announce(MaplePacketCreator.getEnergy("energy", player.getDojoEnergy())); + } + } +} diff --git a/src/net/server/channel/handlers/TouchMonsterDamageHandler.java b/src/net/server/channel/handlers/TouchMonsterDamageHandler.java new file mode 100644 index 0000000000..34f98368c2 --- /dev/null +++ b/src/net/server/channel/handlers/TouchMonsterDamageHandler.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import net.server.channel.handlers.AbstractDealDamageHandler; +import client.MapleBuffStat; +import client.MapleClient; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class TouchMonsterDamageHandler extends AbstractDealDamageHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (c.getPlayer().getEnergyBar() == 15000 || c.getPlayer().getBuffedValue(MapleBuffStat.BODY_PRESSURE) != null) { + applyAttack(parseDamage(slea, c.getPlayer(), false, false), c.getPlayer(), 1); + } + } +} diff --git a/src/net/server/channel/handlers/TouchReactorHandler.java b/src/net/server/channel/handlers/TouchReactorHandler.java new file mode 100644 index 0000000000..5091355fc3 --- /dev/null +++ b/src/net/server/channel/handlers/TouchReactorHandler.java @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import scripting.reactor.ReactorScriptManager; +import server.maps.MapleReactor; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Generic + */ +public final class TouchReactorHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int oid = slea.readInt(); + MapleReactor reactor = c.getPlayer().getMap().getReactorByOid(oid); + if (reactor != null) { + if (slea.readByte() != 0) { + ReactorScriptManager.getInstance().touch(c, reactor); + } else { + ReactorScriptManager.getInstance().untouch(c, reactor); + } + } + } +} diff --git a/src/net/server/channel/handlers/TouchingCashShopHandler.java b/src/net/server/channel/handlers/TouchingCashShopHandler.java new file mode 100644 index 0000000000..900a7a58fa --- /dev/null +++ b/src/net/server/channel/handlers/TouchingCashShopHandler.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Acrylic (Terry Han) + */ +public final class TouchingCashShopHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.announce(MaplePacketCreator.showCash(c.getPlayer())); + } +} diff --git a/src/net/server/channel/handlers/TrockAddMapHandler.java b/src/net/server/channel/handlers/TrockAddMapHandler.java new file mode 100644 index 0000000000..f105ad7c9b --- /dev/null +++ b/src/net/server/channel/handlers/TrockAddMapHandler.java @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.maps.FieldLimit; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public final class TrockAddMapHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + byte type = slea.readByte(); + boolean vip = slea.readByte() == 1; + if (type == 0x00) { + int mapId = slea.readInt(); + if (vip) + chr.deleteFromVipTrocks(mapId); + else + chr.deleteFromTrocks(mapId); + c.announce(MaplePacketCreator.trockRefreshMapList(chr, true, vip)); + } else if (type == 0x01) { + if (!FieldLimit.CANNOTVIPROCK.check(chr.getMap().getFieldLimit())) { + if (vip) + chr.addVipTrockMap(); + else + chr.addTrockMap(); + + c.announce(MaplePacketCreator.trockRefreshMapList(chr, false, vip)); + } else { + chr.message("You may not save this map."); + } + } + } +} diff --git a/src/net/server/channel/handlers/UseCashItemHandler.java b/src/net/server/channel/handlers/UseCashItemHandler.java new file mode 100644 index 0000000000..c42035e2b6 --- /dev/null +++ b/src/net/server/channel/handlers/UseCashItemHandler.java @@ -0,0 +1,555 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import constants.ExpTable; +import constants.ItemConstants; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import scripting.npc.NPCScriptManager; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MapleShop; +import server.MapleShopFactory; +import server.TimerManager; +import server.maps.MapleMap; +import server.maps.MapleTVEffect; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class UseCashItemHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter player = c.getPlayer(); + if (System.currentTimeMillis() - player.getLastUsedCashItem() < 3000) { + return; + } + player.setLastUsedCashItem(System.currentTimeMillis()); + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + slea.readShort(); + int itemId = slea.readInt(); + int itemType = itemId / 10000; + Item toUse = c.getPlayer().getInventory(MapleInventoryType.CASH).getItem(c.getPlayer().getInventory(MapleInventoryType.CASH).findById(itemId).getPosition()); + String medal = ""; + Item medalItem = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem((short) -49); + if (medalItem != null) { + medal = "<" + ii.getName(medalItem.getItemId()) + "> "; + } + if (toUse == null || toUse.getItemId() != itemId || toUse.getQuantity() < 1) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (itemType == 505) { // AP/SP reset + if (itemId > 5050000) { + int SPTo = slea.readInt(); + int SPFrom = slea.readInt(); + Skill skillSPTo = SkillFactory.getSkill(SPTo); + Skill skillSPFrom = SkillFactory.getSkill(SPFrom); + byte curLevel = player.getSkillLevel(skillSPTo); + byte curLevelSPFrom = player.getSkillLevel(skillSPFrom); + if ((curLevel < skillSPTo.getMaxLevel()) && curLevelSPFrom > 0) { + player.changeSkillLevel(skillSPFrom, (byte) (curLevelSPFrom - 1), player.getMasterLevel(skillSPFrom), -1); + player.changeSkillLevel(skillSPTo, (byte) (curLevel + 1), player.getMasterLevel(skillSPTo), -1); + } + } else { + List> statupdate = new ArrayList<>(2); + int APTo = slea.readInt(); + int APFrom = slea.readInt(); + switch (APFrom) { + case 64: // str + if (player.getStr() < 5) { + return; + } + player.addStat(1, -1); + break; + case 128: // dex + if (player.getDex() < 5) { + return; + } + player.addStat(2, -1); + break; + case 256: // int + if (player.getInt() < 5) { + return; + } + player.addStat(3, -1); + break; + case 512: // luk + if (player.getLuk() < 5) { + return; + } + player.addStat(4, -1); + break; + case 2048: // HP + if (APTo != 8192) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + int hplose = 0; + final int jobid = player.getJob().getId(); + if (jobid == 0 || jobid == 1000 || jobid == 2000 || jobid >= 1200 && jobid <= 1211) { // Beginner + hplose -= 12; + } else if (jobid >= 100 && jobid <= 132) { // Warrior + Skill improvinghplose = SkillFactory.getSkill(1000001); + int improvinghploseLevel = c.getPlayer().getSkillLevel(improvinghplose); + hplose -= 24; + if (improvinghploseLevel >= 1) { + hplose -= improvinghplose.getEffect(improvinghploseLevel).getY(); + } + } else if (jobid >= 200 && jobid <= 232) { // Magician + hplose -= 10; + } else if (jobid >= 500 && jobid <= 522) { // Pirate + Skill improvinghplose = SkillFactory.getSkill(5100000); + int improvinghploseLevel = c.getPlayer().getSkillLevel(improvinghplose); + hplose -= 22; + if (improvinghploseLevel > 0) { + hplose -= improvinghplose.getEffect(improvinghploseLevel).getY(); + } + } else if (jobid >= 1100 && jobid <= 1111) { // Soul Master + Skill improvinghplose = SkillFactory.getSkill(11000000); + int improvinghploseLevel = c.getPlayer().getSkillLevel(improvinghplose); + hplose -= 27; + if (improvinghploseLevel >= 1) { + hplose -= improvinghplose.getEffect(improvinghploseLevel).getY(); + } + } else if ((jobid >= 1300 && jobid <= 1311) || (jobid >= 1400 && jobid <= 1411)) { // Wind Breaker and Night Walker + hplose -= 17; + } else if (jobid >= 300 && jobid <= 322 || jobid >= 400 && jobid <= 422 || jobid >= 2000 && jobid <= 2112) { // Aran + hplose -= 20; + } else { // GameMaster + hplose -= 20; + } + player.setHp(player.getHp() + hplose); + player.setMaxHp(player.getMaxHp() + hplose); + statupdate.add(new Pair<>(MapleStat.HP, player.getHp())); + statupdate.add(new Pair<>(MapleStat.MAXHP, player.getMaxHp())); + break; + case 8192: // MP + if (APTo != 2048) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + int mp = player.getMp(); + int level = player.getLevel(); + MapleJob job = player.getJob(); + boolean canWash = true; + if (job.isA(MapleJob.SPEARMAN) && mp < 4 * level + 156) { + canWash = false; + } else if (job.isA(MapleJob.FIGHTER) && mp < 4 * level + 56) { + canWash = false; + } else if (job.isA(MapleJob.THIEF) && job.getId() % 100 > 0 && mp < level * 14 - 4) { + canWash = false; + } else if (mp < level * 14 + 148) { + canWash = false; + } + if (canWash) { + int minmp = 0; + if (job.isA(MapleJob.WARRIOR) || job.isA(MapleJob.DAWNWARRIOR1) || job.isA(MapleJob.ARAN1)) { + minmp += 4; + } else if (job.isA(MapleJob.MAGICIAN) || job.isA(MapleJob.BLAZEWIZARD1)) { + minmp += 36; + } else if (job.isA(MapleJob.BOWMAN) || job.isA(MapleJob.WINDARCHER1) || job.isA(MapleJob.THIEF) || job.isA(MapleJob.NIGHTWALKER1)) { + minmp += 12; + } else if (job.isA(MapleJob.PIRATE) || job.isA(MapleJob.THUNDERBREAKER1)) { + minmp += 16; + } else { + minmp += 8; + } + player.setMp(player.getMp() - minmp); + player.setMaxMp(player.getMaxMp() - minmp); + statupdate.add(new Pair<>(MapleStat.MP, player.getMp())); + statupdate.add(new Pair<>(MapleStat.MAXMP, player.getMaxMp())); + break; + } + default: + c.announce(MaplePacketCreator.updatePlayerStats(MaplePacketCreator.EMPTY_STATUPDATE, true, c.getPlayer())); + return; + } + DistributeAPHandler.addStat(c, APTo); + c.announce(MaplePacketCreator.updatePlayerStats(statupdate, true, c.getPlayer())); + } + remove(c, itemId); + } else if (itemType == 506) { + Item eq = null; + if (itemId == 5060000) { // Item tag. + int equipSlot = slea.readShort(); + if (equipSlot == 0) { + return; + } + eq = player.getInventory(MapleInventoryType.EQUIPPED).getItem((short) equipSlot); + eq.setOwner(player.getName()); + } else if (itemId == 5060001 || itemId == 5061000 || itemId == 5061001 || itemId == 5061002 || itemId == 5061003) { // Sealing lock + MapleInventoryType type = MapleInventoryType.getByType((byte) slea.readInt()); + eq = c.getPlayer().getInventory(type).getItem((short) slea.readInt()); + if (eq == null) { //Check if the type is EQUIPMENT? + return; + } + byte flag = eq.getFlag(); + flag |= ItemConstants.LOCK; + if (eq.getExpiration() > -1) { + return; //No perma items pls + } + eq.setFlag(flag); + + long period = 0; + if (itemId == 5061000) { + period = 7; + } else if (itemId == 5061001) { + period = 30; + } else if (itemId == 5061002) { + period = 90; + } else if (itemId == 5061003) { + period = 365; + } + + if (period > 0) { + eq.setExpiration(System.currentTimeMillis() + (period * 60 * 60 * 24 * 1000)); + } + + remove(c, itemId); + } else if (itemId == 5060002) { // Incubator + byte inventory2 = (byte) slea.readInt(); + short slot2 = (short) slea.readInt(); + Item item2 = c.getPlayer().getInventory(MapleInventoryType.getByType(inventory2)).getItem(slot2); + if (item2 == null) // hacking + { + return; + } + if (getIncubatedItem(c, itemId)) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.getByType(inventory2), slot2, (short) 1, false); + remove(c, itemId); + } + return; + } + slea.readInt(); // time stamp + if (eq != null) { + player.forceUpdateItem(eq); + remove(c, itemId); + } + } else if (itemType == 507) { + boolean whisper; + switch (itemId / 1000 % 10) { + case 1: // Megaphone + if (player.getLevel() > 9) { + player.getClient().getChannelServer().broadcastPacket(MaplePacketCreator.serverNotice(2, medal + player.getName() + " : " + slea.readMapleAsciiString())); + } else { + player.dropMessage(1, "You may not use this until you're level 10."); + } + break; + case 2: // Super megaphone + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(3, c.getChannel(), medal + player.getName() + " : " + slea.readMapleAsciiString(), (slea.readByte() != 0))); + break; + case 5: // Maple TV + int tvType = itemId % 10; + boolean megassenger = false; + boolean ear = false; + MapleCharacter victim = null; + if (tvType != 1) { + if (tvType >= 3) { + megassenger = true; + if (tvType == 3) { + slea.readByte(); + } + ear = 1 == slea.readByte(); + } else if (tvType != 2) { + slea.readByte(); + } + if (tvType != 4) { + victim = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString()); + } + } + List messages = new LinkedList<>(); + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < 5; i++) { + String message = slea.readMapleAsciiString(); + if (megassenger) { + builder.append(" ").append(message); + } + messages.add(message); + } + slea.readInt(); + if (megassenger) { + Server.getInstance().broadcastMessage(MaplePacketCreator.serverNotice(3, c.getChannel(), medal + player.getName() + " : " + builder.toString(), ear)); + } + if (!MapleTVEffect.isActive()) { + new MapleTVEffect(player, victim, messages, tvType); + remove(c, itemId); + } else { + player.dropMessage(1, "MapleTV is already in use."); + return; + } + break; + case 6: //item megaphone + String msg = medal + c.getPlayer().getName() + " : " + slea.readMapleAsciiString(); + whisper = slea.readByte() == 1; + Item item = null; + if (slea.readByte() == 1) { //item + item = c.getPlayer().getInventory(MapleInventoryType.getByType((byte) slea.readInt())).getItem((short) slea.readInt()); + if (item == null) //hack + { + return; + } else if (ii.isDropRestricted(item.getItemId())) { //Lol? + player.dropMessage(1, "You cannot trade this item."); + c.announce(MaplePacketCreator.enableActions()); + return; + } + } + Server.getInstance().broadcastMessage(MaplePacketCreator.itemMegaphone(msg, whisper, c.getChannel(), item)); + break; + case 7: //triple megaphone + int lines = slea.readByte(); + if (lines < 1 || lines > 3) //hack + { + return; + } + String[] msg2 = new String[lines]; + for (int i = 0; i < lines; i++) { + msg2[i] = medal + c.getPlayer().getName() + " : " + slea.readMapleAsciiString(); + } + whisper = slea.readByte() == 1; + Server.getInstance().broadcastMessage(MaplePacketCreator.getMultiMegaphone(msg2, c.getChannel(), whisper)); + break; + } + remove(c, itemId); + } else if (itemType == 508) { //graduation banner + slea.readMapleAsciiString(); // message, sepearated by 0A for lines + c.announce(MaplePacketCreator.enableActions()); + } else if (itemType == 509) { + String sendTo = slea.readMapleAsciiString(); + String msg = slea.readMapleAsciiString(); + try { + player.sendNote(sendTo, msg, (byte) 0); + } catch (SQLException e) { + } + remove(c, itemId); + } else if (itemType == 510) { + player.getMap().broadcastMessage(MaplePacketCreator.musicChange("Jukebox/Congratulation")); + remove(c, itemId); + } else if (itemType == 512) { + if (ii.getStateChangeItem(itemId) != 0) { + for (MapleCharacter mChar : c.getPlayer().getMap().getCharacters()) { + ii.getItemEffect(ii.getStateChangeItem(itemId)).applyTo(mChar); + } + } + player.getMap().startMapEffect(ii.getMsg(itemId).replaceFirst("%s", c.getPlayer().getName()).replaceFirst("%s", slea.readMapleAsciiString()), itemId); + remove(c, itemId); + } else if (itemType == 517) { + MaplePet pet = player.getPet(0); + if (pet == null) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + Item item = player.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); + String newName = slea.readMapleAsciiString(); + pet.setName(newName); + pet.saveToDb(); + player.forceUpdateItem(item); + player.getMap().broadcastMessage(player, MaplePacketCreator.changePetName(player, newName, 1), true); + c.announce(MaplePacketCreator.enableActions()); + remove(c, itemId); + } else if (itemType == 504) { // vip teleport rock + String error1 = "Either the player could not be found or you were trying to teleport to an illegal location."; + boolean vip = slea.readByte() == 1; + remove(c, itemId); + if (!vip) { + int mapId = slea.readInt(); + if (c.getChannelServer().getMapFactory().getMap(mapId).getForcedReturnId() == 999999999) { + player.changeMap(c.getChannelServer().getMapFactory().getMap(mapId)); + } else { + MapleInventoryManipulator.addById(c, itemId, (short) 1); + c.getPlayer().dropMessage(1, error1); + c.announce(MaplePacketCreator.enableActions()); + } + } else { + String name = slea.readMapleAsciiString(); + MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(name); + boolean success = false; + if (victim != null) { + MapleMap target = victim.getMap(); + if (c.getChannelServer().getMapFactory().getMap(victim.getMapId()).getForcedReturnId() == 999999999 || victim.getMapId() < 100000000) { + if (victim.gmLevel() <= player.gmLevel()) { + if (itemId == 5041000 || victim.getMapId() / player.getMapId() == 1) { //viprock & same continent + player.changeMap(target, target.findClosestSpawnpoint(victim.getPosition())); + success = true; + } else { + player.dropMessage(1, "You cannot teleport between continents with this teleport rock."); + } + } else { + player.dropMessage(1, error1); + } + } else { + player.dropMessage(1, "You cannot teleport to this map."); + } + } else { + player.dropMessage(1, "Player could not be found in this channel."); + } + if (!success) { + MapleInventoryManipulator.addById(c, itemId, (short) 1); + c.announce(MaplePacketCreator.enableActions()); + } + } + } else if (itemType == 520) { + player.gainMeso(ii.getMeso(itemId), true, false, true); + remove(c, itemId); + c.announce(MaplePacketCreator.enableActions()); + } else if (itemType == 524) { + for (byte i = 0; i < 3; i++) { + MaplePet pet = player.getPet(i); + if (pet != null) { + if (pet.canConsume(itemId)) { + pet.setFullness(100); + if (pet.getCloseness() + 100 > 30000) { + pet.setCloseness(30000); + } else { + pet.gainCloseness(100); + } + + while (pet.getCloseness() >= ExpTable.getClosenessNeededForLevel(pet.getLevel())) { + pet.setLevel((byte) (pet.getLevel() + 1)); + byte index = player.getPetIndex(pet); + c.announce(MaplePacketCreator.showOwnPetLevelUp(index)); + player.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(c.getPlayer(), index)); + } + Item item = player.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); + player.forceUpdateItem(item); + player.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.commandResponse(player.getId(), i, 1, true), true); + remove(c, itemId); + break; + } + } else { + break; + } + } + c.announce(MaplePacketCreator.enableActions()); + } else if (itemType == 530) { + ii.getItemEffect(itemId).applyTo(player); + remove(c, itemId); + } else if (itemType == 533) { + NPCScriptManager.getInstance().start(c, 9010009, null); + } else if (itemType == 537) { + player.setChalkboard(slea.readMapleAsciiString()); + player.getMap().broadcastMessage(MaplePacketCreator.useChalkboard(player, false)); + player.getClient().announce(MaplePacketCreator.enableActions()); + } else if (itemType == 539) { + List lines = new LinkedList<>(); + for (int i = 0; i < 4; i++) { + lines.add(slea.readMapleAsciiString()); + } + Server.getInstance().broadcastMessage(MaplePacketCreator.getAvatarMega(c.getPlayer(), medal, c.getChannel(), itemId, lines, (slea.readByte() != 0))); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + Server.getInstance().broadcastMessage(MaplePacketCreator.byeAvatarMega()); + } + }, 1000 * 10); + remove(c, itemId); + } else if (itemType == 545) { // MiuMiu's travel store + if (player.getShop() == null) { + MapleShop shop = MapleShopFactory.getInstance().getShop(1338); + if (shop != null) { + shop.sendShop(c); + remove(c, itemId); + } + } else { + c.announce(MaplePacketCreator.enableActions()); + } + } else if (itemType == 550) { //Extend item expiration + c.announce(MaplePacketCreator.enableActions()); + } else if (itemType == 552) { + MapleInventoryType type = MapleInventoryType.getByType((byte) slea.readInt()); + short slot = (short) slea.readInt(); + Item item = c.getPlayer().getInventory(type).getItem(slot); + if (item == null || item.getQuantity() <= 0 || (item.getFlag() & ItemConstants.KARMA) > 0 && ii.isKarmaAble(item.getItemId())) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + if (type.equals(MapleInventoryType.USE)) { + item.setFlag((byte) ItemConstants.SPIKES); + } else { + item.setFlag((byte) ItemConstants.KARMA); + } + + c.getPlayer().forceUpdateItem(item); + remove(c, itemId); + c.announce(MaplePacketCreator.enableActions()); + } else if (itemType == 552) { //DS EGG THING + c.announce(MaplePacketCreator.enableActions()); + } else if (itemType == 557) { + slea.readInt(); + int itemSlot = slea.readInt(); + slea.readInt(); + final Equip equip = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem((short) itemSlot); + if (equip.getVicious() == 2 || c.getPlayer().getInventory(MapleInventoryType.CASH).findById(5570000) == null) { + return; + } + equip.setVicious(equip.getVicious() + 1); + equip.setUpgradeSlots(equip.getUpgradeSlots() + 1); + remove(c, itemId); + c.announce(MaplePacketCreator.enableActions()); + c.announce(MaplePacketCreator.sendHammerData(equip.getVicious())); + player.forceUpdateItem(equip); + } else if (itemType == 561) { //VEGA'S SPELL + c.announce(MaplePacketCreator.enableActions()); + } else { + System.out.println("NEW CASH ITEM: " + itemType + "\n" + slea.toString()); + c.announce(MaplePacketCreator.enableActions()); + } + } + + private static void remove(MapleClient c, int itemId) { + MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, itemId, 1, true, false); + } + + private static boolean getIncubatedItem(MapleClient c, int id) { + final int[] ids = {1012070, 1302049, 1302063, 1322027, 2000004, 2000005, 2020013, 2020015, 2040307, 2040509, 2040519, 2040521, 2040533, 2040715, 2040717, 2040810, 2040811, 2070005, 2070006, 4020009,}; + final int[] quantitys = {1, 1, 1, 1, 240, 200, 200, 200, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}; + int amount = 0; + for (int i = 0; i < ids.length; i++) { + if (i == id) { + amount = quantitys[i]; + } + } + if (c.getPlayer().getInventory(MapleInventoryType.getByType((byte) (id / 1000000))).isFull()) { + return false; + } + MapleInventoryManipulator.addById(c, id, (short) amount); + return true; + } +} diff --git a/src/net/server/channel/handlers/UseCatchItemHandler.java b/src/net/server/channel/handlers/UseCatchItemHandler.java new file mode 100644 index 0000000000..1569573152 --- /dev/null +++ b/src/net/server/channel/handlers/UseCatchItemHandler.java @@ -0,0 +1,184 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.MapleInventoryType; +import client.autoban.AutobanManager; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.life.MapleMonster; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public final class UseCatchItemHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + MapleCharacter chr = c.getPlayer(); + AutobanManager abm = chr.getAutobanManager(); + abm.setTimestamp(5, slea.readInt(), 3); + slea.readShort(); + int itemId = slea.readInt(); + int monsterid = slea.readInt(); + + MapleMonster mob = chr.getMap().getMonsterByOid(monsterid); + if (chr.getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemId)).countById(itemId) <= 0) { + return; + } + if (mob == null) { + return; + } + switch (itemId) { + case 2270000: + if (mob.getId() == 9300101) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 1902000, (short) 1, "", -1); + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 2270001: + if (mob.getId() == 9500197) { + if ((abm.getLastSpam(10) + 1000) < System.currentTimeMillis()) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 4031830, (short) 1, "", -1); + } else { + abm.spam(10); + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + } + break; + case 2270002: + if (mob.getId() == 9300157) { + if ((abm.getLastSpam(10) + 800) < System.currentTimeMillis()) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) { + if (Math.random() < 0.5) { // 50% chance + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 4031868, (short) 1, "", -1); + } else { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 0)); + } + abm.spam(10); + } else { + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + } + break; + case 2270003: + if (mob.getId() == 9500320) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 4031887, (short) 1, "", -1); + } else { + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 2270005: + if (mob.getId() == 9300187) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 3)) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 2109001, (short) 1, "", -1); + } else { + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 2270006: + if (mob.getId() == 9300189) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 3)) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 2109002, (short) 1, "", -1); + } else { + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 2270007: + if (mob.getId() == 9300191) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 3)) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 2109003, (short) 1, "", -1); + } else { + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 2270004: + if (mob.getId() == 9300175) { + if (mob.getHp() < ((mob.getMaxHp() / 10) * 4)) { + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 4001169, (short) 1, "", -1); + } else { + c.announce(MaplePacketCreator.catchMessage(0)); + } + } + c.announce(MaplePacketCreator.enableActions()); + break; + case 2270008: + if (mob.getId() == 9500336) { + if ((abm.getLastSpam(10) + 3000) < System.currentTimeMillis()) { + abm.spam(10); + chr.getMap().broadcastMessage(MaplePacketCreator.catchMonster(monsterid, itemId, (byte) 1)); + mob.getMap().killMonster(mob, null, false); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemId, 1, true, true); + MapleInventoryManipulator.addById(c, 2022323, (short) 1, "", -1); + } else { + chr.message("You cannot use the Fishing Net yet."); + } + c.announce(MaplePacketCreator.enableActions()); + } + break; + default: + // System.out.println("UseCatchItemHandler: \r\n" + slea.toString()); + } + } +} diff --git a/src/net/server/channel/handlers/UseChairHandler.java b/src/net/server/channel/handlers/UseChairHandler.java new file mode 100644 index 0000000000..d224c3208a --- /dev/null +++ b/src/net/server/channel/handlers/UseChairHandler.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class UseChairHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int itemId = slea.readInt(); + if (c.getPlayer().getInventory(MapleInventoryType.SETUP).findById(itemId) == null) { + return; + } + c.getPlayer().setChair(itemId); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showChair(c.getPlayer().getId(), itemId), false); + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/UseDeathItemHandler.java b/src/net/server/channel/handlers/UseDeathItemHandler.java new file mode 100644 index 0000000000..b07ffa91ab --- /dev/null +++ b/src/net/server/channel/handlers/UseDeathItemHandler.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class UseDeathItemHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int itemId = slea.readInt(); + c.getPlayer().setItemEffect(itemId); + c.announce(MaplePacketCreator.itemEffect(c.getPlayer().getId(), itemId)); + } +} diff --git a/src/net/server/channel/handlers/UseGachaExpHandler.java b/src/net/server/channel/handlers/UseGachaExpHandler.java new file mode 100644 index 0000000000..862ceefd19 --- /dev/null +++ b/src/net/server/channel/handlers/UseGachaExpHandler.java @@ -0,0 +1,43 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.channel.handlers; + +import client.MapleClient; +import client.autoban.AutobanFactory; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public class UseGachaExpHandler extends AbstractMaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (c.getPlayer().getGachaExp() == 0) { + AutobanFactory.GACHA_EXP.autoban(c.getPlayer(), "Player tried to redeem GachaEXP, but had none to redeem."); + } + c.getPlayer().gainGachaExp(); + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/UseHammerHandler.java b/src/net/server/channel/handlers/UseHammerHandler.java new file mode 100644 index 0000000000..dc80c8960e --- /dev/null +++ b/src/net/server/channel/handlers/UseHammerHandler.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public final class UseHammerHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.announce(MaplePacketCreator.sendHammerMessage()); + } +} diff --git a/src/net/server/channel/handlers/UseItemEffectHandler.java b/src/net/server/channel/handlers/UseItemEffectHandler.java new file mode 100644 index 0000000000..45efffae3a --- /dev/null +++ b/src/net/server/channel/handlers/UseItemEffectHandler.java @@ -0,0 +1,47 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class UseItemEffectHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + Item toUse; + int itemId = slea.readInt(); + if (itemId == 4290001 || itemId == 4290000) { + toUse = c.getPlayer().getInventory(MapleInventoryType.ETC).findById(itemId); + } else { + toUse = c.getPlayer().getInventory(MapleInventoryType.CASH).findById(itemId); + } + if (toUse == null || toUse.getQuantity() < 1) { + if (itemId != 0) return; + } + c.getPlayer().setItemEffect(itemId); + c.getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.itemEffect(c.getPlayer().getId(), itemId), false); + } +} diff --git a/src/net/server/channel/handlers/UseItemHandler.java b/src/net/server/channel/handlers/UseItemHandler.java new file mode 100644 index 0000000000..bcf52f18d5 --- /dev/null +++ b/src/net/server/channel/handlers/UseItemHandler.java @@ -0,0 +1,90 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.MapleDisease; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @author Matze + */ +public final class UseItemHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (!c.getPlayer().isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + slea.readInt(); + short slot = slea.readShort(); + int itemId = slea.readInt(); + Item toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); + if (toUse != null && toUse.getQuantity() > 0 && toUse.getItemId() == itemId) { + if (itemId == 2022178 || itemId == 2022433 || itemId == 2050004) { + c.getPlayer().dispelDebuffs(); + remove(c, slot); + return; + } + else if (itemId == 2050001) { + c.getPlayer().dispelDebuff(MapleDisease.DARKNESS); + remove(c, slot); + return; + } else if (itemId == 2050002) { + c.getPlayer().dispelDebuff(MapleDisease.WEAKEN); + remove(c, slot); + return; + } else if (itemId == 2050003) { + c.getPlayer().dispelDebuff(MapleDisease.SEAL); + c.getPlayer().dispelDebuff(MapleDisease.CURSE); + remove(c, slot); + return; + } + if (isTownScroll(itemId)) { + if (ii.getItemEffect(toUse.getItemId()).applyTo(c.getPlayer())) { + remove(c, slot); + } + return; + } + remove(c, slot); + + ii.getItemEffect(toUse.getItemId()).applyTo(c.getPlayer()); + c.getPlayer().checkBerserk(); + } + } + + private void remove(MapleClient c, short slot) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false); + c.announce(MaplePacketCreator.enableActions()); + } + + private boolean isTownScroll(int itemId) { + return itemId >= 2030000 && itemId < 2030021; + } +} diff --git a/src/net/server/channel/handlers/UseMapleLifeHandler.java b/src/net/server/channel/handlers/UseMapleLifeHandler.java new file mode 100644 index 0000000000..b28f3aafac --- /dev/null +++ b/src/net/server/channel/handlers/UseMapleLifeHandler.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Jay Estrella + */ +public class UseMapleLifeHandler extends AbstractMaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.announce(MaplePacketCreator.charNameResponse(slea.readMapleAsciiString(), false)); + } +} diff --git a/src/net/server/channel/handlers/UseMountFoodHandler.java b/src/net/server/channel/handlers/UseMountFoodHandler.java new file mode 100644 index 0000000000..f54c8483cb --- /dev/null +++ b/src/net/server/channel/handlers/UseMountFoodHandler.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.MapleInventoryType; +import constants.ExpTable; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * @author PurpleMadness + */ +public final class UseMountFoodHandler extends AbstractMaplePacketHandler { + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.skip(6); + int itemid = slea.readInt(); + if (c.getPlayer().getInventory(MapleInventoryType.USE).findById(itemid) != null) { + if (c.getPlayer().getMount() != null && c.getPlayer().getMount().getTiredness() > 0) { + c.getPlayer().getMount().setTiredness(Math.max(c.getPlayer().getMount().getTiredness() - 30, 0)); + c.getPlayer().getMount().setExp(2 * c.getPlayer().getMount().getLevel() + 6 + c.getPlayer().getMount().getExp()); + int level = c.getPlayer().getMount().getLevel(); + boolean levelup = c.getPlayer().getMount().getExp() >= ExpTable.getMountExpNeededForLevel(level) && level < 31; + if (levelup) { + c.getPlayer().getMount().setLevel(level + 1); + } + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.updateMount(c.getPlayer().getId(), c.getPlayer().getMount(), levelup)); + MapleInventoryManipulator.removeById(c, MapleInventoryType.USE, itemid, 1, true, false); + } + } + } +} \ No newline at end of file diff --git a/src/net/server/channel/handlers/UseSolomonHandler.java b/src/net/server/channel/handlers/UseSolomonHandler.java new file mode 100644 index 0000000000..032ee13efc --- /dev/null +++ b/src/net/server/channel/handlers/UseSolomonHandler.java @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author XoticStory; modified by kevintjuh93 + */ +public final class UseSolomonHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readInt(); + short slot = slea.readShort(); + int itemId = slea.readInt(); + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Item slotItem = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); + int gachaexp = ii.getExpById(itemId); + if (c.getPlayer().getInventory(MapleInventoryType.USE).countById(itemId) <= 0 || slotItem.getItemId() != itemId || c.getPlayer().getLevel() > ii.getMaxLevelById(itemId)) { + return; + } + if ((c.getPlayer().getGachaExp() + gachaexp) > Integer.MAX_VALUE) { + return; + } + c.getPlayer().gainGachaExp(gachaexp); + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false); + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/UseSummonBag.java b/src/net/server/channel/handlers/UseSummonBag.java new file mode 100644 index 0000000000..fe4080e437 --- /dev/null +++ b/src/net/server/channel/handlers/UseSummonBag.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.channel.handlers; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import tools.Randomizer; +import net.AbstractMaplePacketHandler; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.life.MapleLifeFactory; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author AngelSL + */ +public final class UseSummonBag extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + //[4A 00][6C 4C F2 02][02 00][63 0B 20 00] + if (!c.getPlayer().isAlive()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + slea.readInt(); + short slot = slea.readShort(); + int itemId = slea.readInt(); + Item toUse = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); + if (toUse != null && toUse.getQuantity() > 0 && toUse.getItemId() == itemId) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, slot, (short) 1, false); + int[][] toSpawn = MapleItemInformationProvider.getInstance().getSummonMobs(itemId); + for (int z = 0; z < toSpawn.length; z++) { + int[] toSpawnChild = toSpawn[z]; + if (Randomizer.nextInt(101) <= toSpawnChild[1]) { + c.getPlayer().getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(toSpawnChild[0]), c.getPlayer().getPosition()); + } + } + } + c.announce(MaplePacketCreator.enableActions()); + } +} diff --git a/src/net/server/channel/handlers/WeddingHandler.java b/src/net/server/channel/handlers/WeddingHandler.java new file mode 100644 index 0000000000..4d540a8b3c --- /dev/null +++ b/src/net/server/channel/handlers/WeddingHandler.java @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package net.server.channel.handlers; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import net.AbstractMaplePacketHandler; +import server.MapleItemInformationProvider; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author Kevin + */ +public class WeddingHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + //System.out.println("Wedding Packet: " + slea); + MapleCharacter chr = c.getPlayer(); + byte operation = slea.readByte(); + switch (operation) { + case 0x06://Add an item to the Wedding Registry + short slot = slea.readShort(); + int itemid = slea.readInt(); + short quantity = slea.readShort(); + MapleInventoryType type = MapleItemInformationProvider.getInstance().getInventoryType(itemid); + Item item = chr.getInventory(type).getItem(slot); + if (itemid == item.getItemId() && quantity <= item.getQuantity()) { + c.announce(MaplePacketCreator.addItemToWeddingRegistry(chr, item)); + } + } + } +} diff --git a/src/net/server/channel/handlers/WhisperHandler.java b/src/net/server/channel/handlers/WhisperHandler.java new file mode 100644 index 0000000000..5e877cb855 --- /dev/null +++ b/src/net/server/channel/handlers/WhisperHandler.java @@ -0,0 +1,121 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.channel.handlers; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import net.AbstractMaplePacketHandler; +import net.server.world.World; +import tools.LogHelper; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; + +/** + * + * @author Matze + */ +public final class WhisperHandler extends AbstractMaplePacketHandler { + + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte mode = slea.readByte(); + if (mode == 6) { // whisper + String recipient = slea.readMapleAsciiString(); + String text = slea.readMapleAsciiString(); + MapleCharacter player = c.getChannelServer().getPlayerStorage().getCharacterByName(recipient); + if(c.getPlayer().getAutobanManager().getLastSpam(7) + 200 > System.currentTimeMillis()) { + return; + } + if (text.length() > Byte.MAX_VALUE && !player.isGM()) { + AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with whispers."); + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + text.length() + "\r\n"); + c.disconnect(true, false); + return; + } + if (player != null) { + player.getClient().announce(MaplePacketCreator.getWhisper(c.getPlayer().getName(), c.getChannel(), text)); + + if(player.isHidden() && player.gmLevel() > c.getPlayer().gmLevel()) { + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 0)); + } else { + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 1)); + } + } else {// not found + World world = c.getWorldServer(); + if (world.isConnected(recipient)) { + world.whisper(c.getPlayer().getName(), recipient, c.getChannel(), text); + + player = world.getPlayerStorage().getCharacterByName(recipient); + if(player.isHidden() && player.gmLevel() > c.getPlayer().gmLevel()) + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 0)); + else + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 1)); + } else { + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 0)); + } + } + c.getPlayer().getAutobanManager().spam(7); + } else if (mode == 5) { // - /find + String recipient = slea.readMapleAsciiString(); + MapleCharacter victim = c.getChannelServer().getPlayerStorage().getCharacterByName(recipient); + if (victim != null && c.getPlayer().gmLevel() >= victim.gmLevel()) { + if (victim.getCashShop().isOpened()) { + c.announce(MaplePacketCreator.getFindReply(victim.getName(), -1, 2)); + //} else if (victim.inMTS()) { + // c.announce(MaplePacketCreator.getFindReply(victim.getName(), -1, 0)); + } else { + c.announce(MaplePacketCreator.getFindReply(victim.getName(), victim.getMap().getId(), 1)); + } + } else { // not found + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT gm FROM characters WHERE name = ?"); + ps.setString(1, recipient); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + if (rs.getInt("gm") > c.getPlayer().gmLevel()) { + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 0)); + return; + } + } + rs.close(); + ps.close(); + byte channel = (byte) (c.getWorldServer().find(recipient) - 1); + if (channel > -1) { + c.announce(MaplePacketCreator.getFindReply(recipient, channel, 3)); + } else { + c.announce(MaplePacketCreator.getWhisperReply(recipient, (byte) 0)); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + } else if (mode == 0x44) { + //Buddy find? + } + } +} diff --git a/src/net/server/guild/MapleAlliance.java b/src/net/server/guild/MapleAlliance.java new file mode 100644 index 0000000000..e4364da235 --- /dev/null +++ b/src/net/server/guild/MapleAlliance.java @@ -0,0 +1,230 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.guild; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.ResultSet; +import java.util.LinkedList; +import java.util.List; +import tools.DatabaseConnection; + +/** + * + * @author XoticStory. + */ +public class MapleAlliance { + private int[] guilds = new int[5]; + private int allianceId = -1; + private int capacity; + private String name; + private String notice = ""; + private String rankTitles[] = new String[5]; + + public MapleAlliance(String name, int id, int guild1, int guild2) { + this.name = name; + allianceId = id; + int[] guild = {guild1, guild2, -1, -1, -1}; + String[] ranks = {"Master", "Jr.Master", "Member", "Member", "Member"}; + for (int i = 0; i < 5; i++) { + guilds[i] = guild[i]; + rankTitles[i] = ranks[i]; + } + } + + public static MapleAlliance loadAlliance(int id) { + if (id <= 0) { + return null; + } + MapleAlliance alliance = new MapleAlliance(null, -1, -1, -1); + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM alliance WHERE id = ?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + rs.close(); + ps.close(); + return null; + } + alliance.allianceId = id; + alliance.capacity = rs.getInt("capacity"); + alliance.name = rs.getString("name"); + alliance.notice = rs.getString("notice"); + for (int i = 1; i <= 5; i++) { + alliance.rankTitles[i - 1] = rs.getString("rank_title" + i); + } + for (int i = 1; i <= 5; i++) { + alliance.guilds[i - 1] = rs.getInt("guild" + i); + } + ps.close(); + rs.close(); + } catch (SQLException e) { + } + return alliance; + } + + public void saveToDB() { + StringBuilder sb = new StringBuilder(); + sb.append("capacity = ?, "); + sb.append("notice = ?, "); + for (int i = 1; i <= 5; i++) { + sb.append("rank_title").append(i).append(" = ?, "); + } + for (int i = 1; i <= 5; i++) { + sb.append("guild").append(i).append(" = ?, "); + } + try { + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE `alliance` SET " + sb.toString() + " WHERE id = ?"); + ps.setInt(1, this.capacity); + ps.setString(2, this.notice); + for (int i = 0; i < rankTitles.length; i++) { + ps.setString(i + 3, rankTitles[i]); + } + for (int i = 0; i < guilds.length; i++) { + ps.setInt(i + 8, guilds[i]); + } + ps.setInt(13, this.allianceId); + ps.executeQuery(); + ps.close(); + } catch (SQLException e) { + } + } + + public boolean addRemGuildFromDB(int gid, boolean add) { + Connection con = DatabaseConnection.getConnection(); + boolean ret = false; + try { + PreparedStatement ps = con.prepareStatement("SELECT * FROM alliance WHERE id = ?"); + ps.setInt(1, this.allianceId); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + int avail = -1; + for (int i = 1; i <= 5; i++) { + int guildId = rs.getInt("guild" + i); + if (add) { + if (guildId == -1) { + avail = i; + break; + } + } else if (guildId == gid) { + avail = i; + break; + } + } + rs.close(); + if (avail != -1) { // empty slot + ps = con.prepareStatement("UPDATE alliance SET guild" + avail + " = ? WHERE id = ?"); + if (add) { + ps.setInt(1, gid); + } else { + ps.setInt(1, -1); + } + ps.setInt(2, this.allianceId); + ps.executeUpdate(); + ret = true; + } + ps.close(); + } + } catch (SQLException e) { + } + return ret; + } + + public boolean removeGuild(int gid) { + synchronized (guilds) { + int gIndex = getGuildIndex(gid); + if (gIndex != -1) { + guilds[gIndex] = -1; + } + return addRemGuildFromDB(gid, false); + } + } + + public boolean addGuild(int gid) { + synchronized (guilds) { + if (getGuildIndex(gid) == -1) { + int emptyIndex = getGuildIndex(-1); + if (emptyIndex != -1) { + guilds[emptyIndex] = gid; + return addRemGuildFromDB(gid, true); + } + } + } + return false; + } + + private int getGuildIndex(int gid) { + for (int i = 0; i < guilds.length; i++) { + if (guilds[i] == gid) { + return i; + } + } + return -1; + } + + public void setRankTitle(String[] ranks) { + rankTitles = ranks; + } + + public void setNotice(String notice) { + this.notice = notice; + } + + public int getId() { + return allianceId; + } + + public String getName() { + return name; + } + + public String getRankTitle(int rank) { + return rankTitles[rank - 1]; + } + + public String getAllianceNotice() { + return notice; + } + + public List getGuilds() { + List guilds_ = new LinkedList(); + for (int guild : guilds) { + if (guild != -1) { + guilds_.add(guild); + } + } + return guilds_; + } + + public String getNotice() { + return notice; + } + + public void increaseCapacity(int inc) { + capacity += inc; + } + + public int getCapacity() { + return capacity; + } +} diff --git a/src/net/server/guild/MapleGuild.java b/src/net/server/guild/MapleGuild.java new file mode 100644 index 0000000000..7ffc32ce0b --- /dev/null +++ b/src/net/server/guild/MapleGuild.java @@ -0,0 +1,557 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.guild; + +import client.MapleCharacter; +import client.MapleClient; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import net.server.Server; +import net.server.channel.Channel; +import tools.LogHelper; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +public class MapleGuild { + public final static int CREATE_GUILD_COST = 1500000; + public final static int CHANGE_EMBLEM_COST = 5000000; + + private enum BCOp { + NONE, DISBAND, EMBELMCHANGE + } + private List members; + private String rankTitles[] = new String[5]; // 1 = master, 2 = jr, 5 = lowest member + private String name, notice; + private int id, gp, logo, logoColor, leader, capacity, logoBG, logoBGColor, signature, allianceId; + private int world; + private Map> notifications = new LinkedHashMap<>(); + private boolean bDirty = true; + + + + public MapleGuild(int guildid, int world) { + this.world = world; + members = new ArrayList<>(); + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("SELECT * FROM guilds WHERE guildid = " + guildid); + ResultSet rs = ps.executeQuery(); + if (!rs.first()) { + id = -1; + ps.close(); + rs.close(); + return; + } + id = guildid; + name = rs.getString("name"); + gp = rs.getInt("GP"); + logo = rs.getInt("logo"); + logoColor = rs.getInt("logoColor"); + logoBG = rs.getInt("logoBG"); + logoBGColor = rs.getInt("logoBGColor"); + capacity = rs.getInt("capacity"); + for (int i = 1; i <= 5; i++) { + rankTitles[i - 1] = rs.getString("rank" + i + "title"); + } + leader = rs.getInt("leader"); + notice = rs.getString("notice"); + signature = rs.getInt("signature"); + allianceId = rs.getInt("allianceId"); + ps.close(); + rs.close(); + ps = con.prepareStatement("SELECT id, name, level, job, guildrank, allianceRank FROM characters WHERE guildid = ? ORDER BY guildrank ASC, name ASC"); + ps.setInt(1, guildid); + rs = ps.executeQuery(); + if (!rs.first()) { + rs.close(); + ps.close(); + return; + } + do { + members.add(new MapleGuildCharacter(rs.getInt("id"), rs.getInt("level"), rs.getString("name"), (byte) -1, world, rs.getInt("job"), rs.getInt("guildrank"), guildid, false, rs.getInt("allianceRank"))); + } while (rs.next()); + + ps.close(); + rs.close(); + } catch (SQLException se) { + System.out.println("unable to read guild information from sql" + se); + } + } + + public void buildNotifications() { + if (!bDirty) { + return; + } + Set chs = Server.getInstance().getChannelServer(world); + if (notifications.keySet().size() != chs.size()) { + notifications.clear(); + for (Integer ch : chs) { + notifications.put(ch, new LinkedList()); + } + } else { + for (List l : notifications.values()) { + l.clear(); + } + } + synchronized (members) { + for (MapleGuildCharacter mgc : members) { + if (!mgc.isOnline()) { + continue; + } + List ch = notifications.get(mgc.getChannel()); + if (ch != null) ch.add(mgc.getId()); + //Unable to connect to Channel... error was here + } + } + bDirty = false; + } + + public void writeToDB(boolean bDisband) { + try { + Connection con = DatabaseConnection.getConnection(); + if (!bDisband) { + StringBuilder builder = new StringBuilder(); + builder.append("UPDATE guilds SET GP = ?, logo = ?, logoColor = ?, logoBG = ?, logoBGColor = ?, "); + for (int i = 0; i < 5; i++) { + builder.append("rank").append(i + 1).append("title = ?, "); + } + builder.append("capacity = ?, notice = ? WHERE guildid = ?"); + try (PreparedStatement ps = con.prepareStatement(builder.toString())) { + ps.setInt(1, gp); + ps.setInt(2, logo); + ps.setInt(3, logoColor); + ps.setInt(4, logoBG); + ps.setInt(5, logoBGColor); + for (int i = 6; i < 11; i++) { + ps.setString(i, rankTitles[i - 6]); + } + ps.setInt(11, capacity); + ps.setString(12, notice); + ps.setInt(13, this.id); + ps.execute(); + } + } else { + PreparedStatement ps = con.prepareStatement("UPDATE characters SET guildid = 0, guildrank = 5 WHERE guildid = ?"); + ps.setInt(1, this.id); + ps.execute(); + ps.close(); + ps = con.prepareStatement("DELETE FROM guilds WHERE guildid = ?"); + ps.setInt(1, this.id); + ps.execute(); + ps.close(); + this.broadcast(MaplePacketCreator.guildDisband(this.id)); + } + } catch (SQLException se) { + } + } + + public int getId() { + return id; + } + + public int getLeaderId() { + return leader; + } + + public int getGP() { + return gp; + } + + public int getLogo() { + return logo; + } + + public void setLogo(int l) { + logo = l; + } + + public int getLogoColor() { + return logoColor; + } + + public void setLogoColor(int c) { + logoColor = c; + } + + public int getLogoBG() { + return logoBG; + } + + public void setLogoBG(int bg) { + logoBG = bg; + } + + public int getLogoBGColor() { + return logoBGColor; + } + + public void setLogoBGColor(int c) { + logoBGColor = c; + } + + public String getNotice() { + if (notice == null) { + return ""; + } + return notice; + } + + public String getName() { + return name; + } + + public java.util.Collection getMembers() { + return java.util.Collections.unmodifiableCollection(members); + } + + public int getCapacity() { + return capacity; + } + + public int getSignature() { + return signature; + } + + public void broadcast(final byte[] packet) { + broadcast(packet, -1, BCOp.NONE); + } + + public void broadcast(final byte[] packet, int exception) { + broadcast(packet, exception, BCOp.NONE); + } + + public void broadcast(final byte[] packet, int exceptionId, BCOp bcop) { + synchronized (notifications) { + if (bDirty) { + buildNotifications(); + } + try { + for (Integer b : Server.getInstance().getChannelServer(world)) { + if (notifications.get(b).size() > 0) { + if (bcop == BCOp.DISBAND) { + Server.getInstance().getWorld(world).setGuildAndRank(notifications.get(b), 0, 5, exceptionId); + } else if (bcop == BCOp.EMBELMCHANGE) { + Server.getInstance().getWorld(world).changeEmblem(this.id, notifications.get(b), new MapleGuildSummary(this)); + } else { + Server.getInstance().getWorld(world).sendPacket(notifications.get(b), packet, exceptionId); + } + } + } + } catch (Exception re) { + System.out.println("Failed to contact channel(s) for broadcast.");//fu? + } + } + } + + public void guildMessage(final byte[] serverNotice) { + for (MapleGuildCharacter mgc : members) { + for (Channel cs : Server.getInstance().getChannelsFromWorld(world)) { + if (cs.getPlayerStorage().getCharacterById(mgc.getId()) != null) { + cs.getPlayerStorage().getCharacterById(mgc.getId()).getClient().announce(serverNotice); + break; + } + } + } + } + + public final void setOnline(int cid, boolean online, int channel) { + boolean bBroadcast = true; + for (MapleGuildCharacter mgc : members) { + if (mgc.getId() == cid) { + if (mgc.isOnline() && online) { + bBroadcast = false; + } + mgc.setOnline(online); + mgc.setChannel(channel); + break; + } + } + if (bBroadcast) { + this.broadcast(MaplePacketCreator.guildMemberOnline(id, cid, online), cid); + } + bDirty = true; + } + + public void guildChat(String name, int cid, String message) { + this.broadcast(MaplePacketCreator.multiChat(name, message, 2), cid); + } + + public String getRankTitle(int rank) { + return rankTitles[rank - 1]; + } + + public static int createGuild(int leaderId, String name) { + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT guildid FROM guilds WHERE name = ?"); + ps.setString(1, name); + ResultSet rs = ps.executeQuery(); + if (rs.first()) { + ps.close(); + rs.close(); + return 0; + } + ps.close(); + rs.close(); + ps = con.prepareStatement("INSERT INTO guilds (`leader`, `name`, `signature`) VALUES (?, ?, ?)"); + ps.setInt(1, leaderId); + ps.setString(2, name); + ps.setInt(3, (int) System.currentTimeMillis()); + ps.execute(); + ps.close(); + ps = con.prepareStatement("SELECT guildid FROM guilds WHERE leader = ?"); + ps.setInt(1, leaderId); + rs = ps.executeQuery(); + rs.first(); + int guildid = rs.getInt("guildid"); + rs.close(); + ps.close(); + return guildid; + } catch (Exception e) { + return 0; + } + } + + public int addGuildMember(MapleGuildCharacter mgc) { + synchronized (members) { + if (members.size() >= capacity) { + return 0; + } + for (int i = members.size() - 1; i >= 0; i--) { + if (members.get(i).getGuildRank() < 5 || members.get(i).getName().compareTo(mgc.getName()) < 0) { + members.add(i + 1, mgc); + bDirty = true; + break; + } + } + } + this.broadcast(MaplePacketCreator.newGuildMember(mgc)); + return 1; + } + + public void leaveGuild(MapleGuildCharacter mgc) { + this.broadcast(MaplePacketCreator.memberLeft(mgc, false)); + synchronized (members) { + members.remove(mgc); + bDirty = true; + } + } + + public void expelMember(MapleGuildCharacter initiator, String name, int cid) { + synchronized (members) { + java.util.Iterator itr = members.iterator(); + MapleGuildCharacter mgc; + while (itr.hasNext()) { + mgc = itr.next(); + if (mgc.getId() == cid && initiator.getGuildRank() < mgc.getGuildRank()) { + this.broadcast(MaplePacketCreator.memberLeft(mgc, true)); + itr.remove(); + bDirty = true; + try { + if (mgc.isOnline()) { + Server.getInstance().getWorld(mgc.getWorld()).setGuildAndRank(cid, 0, 5); + } else { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO notes (`to`, `from`, `message`, `timestamp`) VALUES (?, ?, ?, ?)")) { + ps.setString(1, mgc.getName()); + ps.setString(2, initiator.getName()); + ps.setString(3, "You have been expelled from the guild."); + ps.setLong(4, System.currentTimeMillis()); + ps.executeUpdate(); + } + } catch (SQLException e) { + System.out.println("expelMember - MapleGuild " + e); + } + Server.getInstance().getWorld(mgc.getWorld()).setOfflineGuildStatus((short) 0, (byte) 5, cid); + } + } catch (Exception re) { + re.printStackTrace(); + return; + } + return; + } + } + System.out.println("Unable to find member with name " + name + " and id " + cid); + } + } + + public void changeRank(int cid, int newRank) { + for (MapleGuildCharacter mgc : members) { + if (cid == mgc.getId()) { + try { + if (mgc.isOnline()) { + Server.getInstance().getWorld(mgc.getWorld()).setGuildAndRank(cid, this.id, newRank); + } else { + Server.getInstance().getWorld(mgc.getWorld()).setOfflineGuildStatus((short) this.id, (byte) newRank, cid); + } + } catch (Exception re) { + re.printStackTrace(); + return; + } + mgc.setGuildRank(newRank); + this.broadcast(MaplePacketCreator.changeRank(mgc)); + return; + } + } + } + + public void setGuildNotice(String notice) { + this.notice = notice; + writeToDB(false); + this.broadcast(MaplePacketCreator.guildNotice(this.id, notice)); + } + + public void memberLevelJobUpdate(MapleGuildCharacter mgc) { + for (MapleGuildCharacter member : members) { + if (mgc.equals(member)) { + member.setJobId(mgc.getJobId()); + member.setLevel(mgc.getLevel()); + this.broadcast(MaplePacketCreator.guildMemberLevelJobUpdate(mgc)); + break; + } + } + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof MapleGuildCharacter)) { + return false; + } + MapleGuildCharacter o = (MapleGuildCharacter) other; + return (o.getId() == id && o.getName().equals(name)); + } + + @Override + public int hashCode() { + int hash = 3; + hash = 89 * hash + (this.name != null ? this.name.hashCode() : 0); + hash = 89 * hash + this.id; + return hash; + } + + public void changeRankTitle(String[] ranks) { + System.arraycopy(ranks, 0, rankTitles, 0, 5); + this.broadcast(MaplePacketCreator.rankTitleChange(this.id, ranks)); + this.writeToDB(false); + } + + public void disbandGuild() { + this.writeToDB(true); + this.broadcast(null, -1, BCOp.DISBAND); + } + + public void setGuildEmblem(short bg, byte bgcolor, short logo, byte logocolor) { + this.logoBG = bg; + this.logoBGColor = bgcolor; + this.logo = logo; + this.logoColor = logocolor; + this.writeToDB(false); + this.broadcast(null, -1, BCOp.EMBELMCHANGE); + } + + public MapleGuildCharacter getMGC(int cid) { + for (MapleGuildCharacter mgc : members) { + if (mgc.getId() == cid) { + return mgc; + } + } + return null; + } + + public boolean increaseCapacity() { + if (capacity > 99) { + return false; + } + capacity += 5; + this.writeToDB(false); + this.broadcast(MaplePacketCreator.guildCapacityChange(this.id, this.capacity)); + return true; + } + + public void gainGP(int amount) { + this.gp += amount; + this.writeToDB(false); + this.guildMessage(MaplePacketCreator.updateGP(this.id, this.gp)); + this.guildMessage(MaplePacketCreator.getGPMessage(amount)); + } + + public void removeGP(int amount){ + this.gp -= amount; + this.writeToDB(false); + this.guildMessage(MaplePacketCreator.updateGP(this.id, this.gp)); + } + + public static MapleGuildResponse sendInvite(MapleClient c, String targetName) { + MapleCharacter mc = c.getChannelServer().getPlayerStorage().getCharacterByName(targetName); + if (mc == null) { + return MapleGuildResponse.NOT_IN_CHANNEL; + } + if (mc.getGuildId() > 0) { + return MapleGuildResponse.ALREADY_IN_GUILD; + } + mc.getClient().announce(MaplePacketCreator.guildInvite(c.getPlayer().getGuildId(), c.getPlayer().getName())); + return null; + } + + public static void displayGuildRanks(MapleClient c, int npcid) { + try { + ResultSet rs; + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT `name`, `GP`, `logoBG`, `logoBGColor`, `logo`, `logoColor` FROM guilds WHERE NOT `guildid` = '1' ORDER BY `GP` DESC LIMIT 50")) { + rs = ps.executeQuery(); + c.announce(MaplePacketCreator.showGuildRanks(npcid, rs)); + } + rs.close(); + } catch (SQLException e) { + System.out.println("failed to display guild ranks. " + e); + } + } + + public int getAllianceId() { + return allianceId; + } + + public void setAllianceId(int aid) { + this.allianceId = aid; + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE guilds SET allianceId = ? WHERE guildid = ?")) { + ps.setInt(1, aid); + ps.setInt(2, id); + ps.executeUpdate(); + } + } catch (SQLException e) { + } + } + + public int getIncreaseGuildCost(int size) { + return 500000 * (size - 6) / 6; + } +} diff --git a/src/net/server/guild/MapleGuildCharacter.java b/src/net/server/guild/MapleGuildCharacter.java new file mode 100644 index 0000000000..eab452e147 --- /dev/null +++ b/src/net/server/guild/MapleGuildCharacter.java @@ -0,0 +1,149 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.guild; + +import client.MapleCharacter; + +public class MapleGuildCharacter { + private int level; + private int id; + private int world, channel; + private int jobid; + private int guildrank; + private int guildid; + private int allianceRank; + private boolean online; + private String name; + + public MapleGuildCharacter(MapleCharacter c) { + this.name = c.getName(); + this.level = c.getLevel(); + this.id = c.getId(); + this.channel = c.getClient().getChannel(); + this.world = c.getWorld(); + this.jobid = c.getJob().getId(); + this.guildrank = c.getGuildRank(); + this.guildid = c.getGuildId(); + this.online = true; + this.allianceRank = c.getAllianceRank(); + } + + public MapleGuildCharacter(int _id, int _lv, String _name, int _channel, int _world, int _job, int _rank, int _gid, boolean _on, int _allianceRank) { + this.level = _lv; + this.id = _id; + this.name = _name; + if (_on) { + this.channel = _channel; + this.world = _world; + } + this.jobid = _job; + this.online = _on; + this.guildrank = _rank; + this.guildid = _gid; + this.allianceRank = _allianceRank; + } + + public int getLevel() { + return level; + } + + public void setLevel(int l) { + level = l; + } + + public int getId() { + return id; + } + + public void setChannel(int ch) { + channel = ch; + } + + public int getChannel() { + return channel; + } + + public int getWorld() { + return world; + } + + public int getJobId() { + return jobid; + } + + public void setJobId(int job) { + jobid = job; + } + + public int getGuildId() { + return guildid; + } + + public void setGuildId(int gid) { + guildid = gid; + } + + public void setGuildRank(int rank) { + guildrank = rank; + } + + public int getGuildRank() { + return guildrank; + } + + public boolean isOnline() { + return online; + } + + public void setOnline(boolean f) { + online = f; + } + + public String getName() { + return name; + } + + public void setAllianceRank(int rank) { + allianceRank = rank; + } + + public int getAllianceRank() { + return allianceRank; + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof MapleGuildCharacter)) { + return false; + } + MapleGuildCharacter o = (MapleGuildCharacter) other; + return (o.getId() == id && o.getName().equals(name)); + } + + @Override + public int hashCode() { + int hash = 3; + hash = 19 * hash + this.id; + hash = 19 * hash + (this.name != null ? this.name.hashCode() : 0); + return hash; + } +} diff --git a/src/net/server/guild/MapleGuildResponse.java b/src/net/server/guild/MapleGuildResponse.java new file mode 100644 index 0000000000..9ed3b6090d --- /dev/null +++ b/src/net/server/guild/MapleGuildResponse.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.guild; + +import tools.MaplePacketCreator; + +public enum MapleGuildResponse { + NOT_IN_CHANNEL(0x2a), + ALREADY_IN_GUILD(0x28), + NOT_IN_GUILD(0x2d); + private int value; + + private MapleGuildResponse(int val) { + value = val; + } + + public final byte[] getPacket() { + return MaplePacketCreator.genericGuildMessage((byte) value); + } +} diff --git a/src/net/server/guild/MapleGuildSummary.java b/src/net/server/guild/MapleGuildSummary.java new file mode 100644 index 0000000000..17b4421c4d --- /dev/null +++ b/src/net/server/guild/MapleGuildSummary.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.guild; + +public class MapleGuildSummary { + private String name; + private short logoBG; + private byte logoBGColor; + private short logo; + private byte logoColor; + private int allianceId; + + public MapleGuildSummary(MapleGuild g) { + this.name = g.getName(); + this.logoBG = (short) g.getLogoBG(); + this.logoBGColor = (byte) g.getLogoBGColor(); + this.logo = (short) g.getLogo(); + this.logoColor = (byte) g.getLogoColor(); + this.allianceId = g.getAllianceId(); + } + + public String getName() { + return name; + } + + public short getLogoBG() { + return logoBG; + } + + public byte getLogoBGColor() { + return logoBGColor; + } + + public short getLogo() { + return logo; + } + + public byte getLogoColor() { + return logoColor; + } + + public int getAllianceId() { + return allianceId; + } +} diff --git a/src/net/server/handlers/CustomPacketHandler.java b/src/net/server/handlers/CustomPacketHandler.java new file mode 100644 index 0000000000..6da4ae94d8 --- /dev/null +++ b/src/net/server/handlers/CustomPacketHandler.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers; + +import client.MapleClient; +import net.MaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public class CustomPacketHandler implements MaplePacketHandler { + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (slea.available() > 0 && c.getGMLevel() == 4) {//w/e + c.announce(MaplePacketCreator.customPacket(slea.read((int) slea.available()))); + } + } + + @Override + public boolean validateState(MapleClient c) { + return true; + } +} diff --git a/src/net/server/handlers/KeepAliveHandler.java b/src/net/server/handlers/KeepAliveHandler.java new file mode 100644 index 0000000000..7286c5e979 --- /dev/null +++ b/src/net/server/handlers/KeepAliveHandler.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers; + +import client.MapleClient; +import net.MaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +public class KeepAliveHandler implements MaplePacketHandler { + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.pongReceived(); + } + + public boolean validateState(MapleClient c) { + return true; + } +} diff --git a/src/net/server/handlers/LoginRequiringNoOpHandler.java b/src/net/server/handlers/LoginRequiringNoOpHandler.java new file mode 100644 index 0000000000..fbb86cb941 --- /dev/null +++ b/src/net/server/handlers/LoginRequiringNoOpHandler.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers; + +import client.MapleClient; +import net.MaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class LoginRequiringNoOpHandler implements MaplePacketHandler { + private static LoginRequiringNoOpHandler instance = new LoginRequiringNoOpHandler(); + + public static LoginRequiringNoOpHandler getInstance() { + return instance; + } + + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + } + + public boolean validateState(MapleClient c) { + return c.isLoggedIn(); + } +} diff --git a/src/net/server/handlers/login/AcceptToSHandler.java b/src/net/server/handlers/login/AcceptToSHandler.java new file mode 100644 index 0000000000..52268c15a1 --- /dev/null +++ b/src/net/server/handlers/login/AcceptToSHandler.java @@ -0,0 +1,31 @@ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public final class AcceptToSHandler extends AbstractMaplePacketHandler { + + @Override + public boolean validateState(MapleClient c) { + return !c.isLoggedIn(); + } + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + if (slea.available() == 0 || slea.readByte() != 1 || c.acceptToS()) { + c.disconnect(false, false);//Client dc's but just because I am cool I do this (: + return; + } + if (c.finishLogin() == 0) { + c.announce(MaplePacketCreator.getAuthSuccess(c)); + } else { + c.announce(MaplePacketCreator.getLoginFailed(9));//shouldn't happen XD + } + } +} diff --git a/src/net/server/handlers/login/AfterLoginHandler.java b/src/net/server/handlers/login/AfterLoginHandler.java new file mode 100644 index 0000000000..f48d8876a6 --- /dev/null +++ b/src/net/server/handlers/login/AfterLoginHandler.java @@ -0,0 +1,62 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class AfterLoginHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte c2 = slea.readByte(); + byte c3 = 5; + if (slea.available() > 0) { + c3 = slea.readByte(); + } + if (c2 == 1 && c3 == 1) { + if (c.getPin() == null) { + c.announce(MaplePacketCreator.registerPin()); + } else { + c.announce(MaplePacketCreator.requestPin()); + } + } else if (c2 == 1 && c3 == 0) { + String pin = slea.readMapleAsciiString(); + if (c.checkPin(pin)) { + c.announce(MaplePacketCreator.pinAccepted()); + } else { + c.announce(MaplePacketCreator.requestPinAfterFailure()); + } + } else if (c2 == 2 && c3 == 0) { + String pin = slea.readMapleAsciiString(); + if (c.checkPin(pin)) { + c.announce(MaplePacketCreator.registerPin()); + } else { + c.announce(MaplePacketCreator.requestPinAfterFailure()); + } + } else if (c2 == 0 && c3 == 5) { + c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); + } + } +} diff --git a/src/net/server/handlers/login/CharSelectedHandler.java b/src/net/server/handlers/login/CharSelectedHandler.java new file mode 100644 index 0000000000..0dff59976f --- /dev/null +++ b/src/net/server/handlers/login/CharSelectedHandler.java @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import java.net.InetAddress; +import java.net.UnknownHostException; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CharSelectedHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int charId = slea.readInt(); + String macs = slea.readMapleAsciiString(); + c.updateMacs(macs); + if (c.hasBannedMac()) { + c.getSession().close(true); + return; + } + + if (c.getIdleTask() != null) { + c.getIdleTask().cancel(true); + } + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + String[] socket = Server.getInstance().getIP(c.getWorld(), c.getChannel()).split(":"); + try { + c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + } catch (UnknownHostException | NumberFormatException e) { + } + } +} \ No newline at end of file diff --git a/src/net/server/handlers/login/CharSelectedWithPicHandler.java b/src/net/server/handlers/login/CharSelectedWithPicHandler.java new file mode 100644 index 0000000000..2b5a616ad3 --- /dev/null +++ b/src/net/server/handlers/login/CharSelectedWithPicHandler.java @@ -0,0 +1,43 @@ +package net.server.handlers.login; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +public class CharSelectedWithPicHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + + String pic = slea.readMapleAsciiString(); + int charId = slea.readInt(); + String macs = slea.readMapleAsciiString(); + String hwid = slea.readMapleAsciiString(); + c.updateMacs(macs); + c.updateHWID(hwid); + + if (c.hasBannedMac() || c.hasBannedHWID()) { + c.getSession().close(true); + return; + } + if (c.checkPic(pic)) { + if (c.getIdleTask() != null) { + c.getIdleTask().cancel(true); + } + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + + String[] socket = Server.getInstance().getIP(c.getWorld(), c.getChannel()).split(":"); + try { + c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + } catch (UnknownHostException | NumberFormatException e) { + } + } else { + c.announce(MaplePacketCreator.wrongPic()); + } + } +} diff --git a/src/net/server/handlers/login/CharlistRequestHandler.java b/src/net/server/handlers/login/CharlistRequestHandler.java new file mode 100644 index 0000000000..18419dfff8 --- /dev/null +++ b/src/net/server/handlers/login/CharlistRequestHandler.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CharlistRequestHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readByte(); + int world = slea.readByte(); + c.setWorld(world); + c.setChannel(slea.readByte() + 1); + c.sendCharList(world); + } +} \ No newline at end of file diff --git a/src/net/server/handlers/login/CheckCharNameHandler.java b/src/net/server/handlers/login/CheckCharNameHandler.java new file mode 100644 index 0000000000..dc27beedb7 --- /dev/null +++ b/src/net/server/handlers/login/CheckCharNameHandler.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleCharacter; +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class CheckCharNameHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + String name = slea.readMapleAsciiString(); + c.announce(MaplePacketCreator.charNameResponse(name, !MapleCharacter.canCreateChar(name))); + } +} diff --git a/src/net/server/handlers/login/CreateCharHandler.java b/src/net/server/handlers/login/CreateCharHandler.java new file mode 100644 index 0000000000..02f846b4e3 --- /dev/null +++ b/src/net/server/handlers/login/CreateCharHandler.java @@ -0,0 +1,136 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import server.MapleItemInformationProvider; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.MapleSkinColor; +import client.autoban.AutobanFactory; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; + +public final class CreateCharHandler extends AbstractMaplePacketHandler { + + private static int[] IDs = { + 1302000, 1312004, 1322005, 1442079,// weapons + 1040002, 1040006, 1040010, 1041002, 1041006, 1041010, 1041011, 1042167,// bottom + 1060002, 1060006, 1061002, 1061008, 1062115, // top + 1072001, 1072005, 1072037, 1072038, 1072383,// shoes + 30000, 30010,30020, 30030, 31000, 31040, 31050,// hair + 20000, 20001, 20002, 21000, 21001, 21002, 21201, 20401, 20402, 21700, 20100 //face + //#NeverTrustStevenCode + }; + + private static boolean isLegal(int toCompare) { + for (int i = 0; i < IDs.length; i++) { + if (IDs[i] == toCompare) { + return true; + } + } + return false; + } + + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + String name = slea.readMapleAsciiString(); + if (!MapleCharacter.canCreateChar(name)) { + return; + } + MapleCharacter newchar = MapleCharacter.getDefault(c); + newchar.setWorld(c.getWorld()); + + int job = slea.readInt(); + int face = slea.readInt(); + + int hair = slea.readInt(); + int hairColor = slea.readInt(); + int skincolor = slea.readInt(); + + newchar.setSkinColor(MapleSkinColor.getById(skincolor)); + int top = slea.readInt(); + int bottom = slea.readInt(); + int shoes = slea.readInt(); + int weapon = slea.readInt(); + newchar.setGender(slea.readByte()); + newchar.setName(name); + newchar.setHair(hair + hairColor); + newchar.setFace(face); + + int [] items = new int [] {weapon, top, bottom, shoes, hair, face}; + for (int i = 0; i < items.length; i++){ + if (!isLegal(items[i])) { + AutobanFactory.PACKET_EDIT.alert(newchar, name + " tried to packet edit in character creation."); + FilePrinter.printError(FilePrinter.EXPLOITS + newchar + ".txt", "Tried to packet edit in char creation."); + c.disconnect(true, false); + return; + } + } + + if (job == 0) { // Knights of Cygnus + newchar.setJob(MapleJob.NOBLESSE); + newchar.setMapId(130030000); + newchar.getInventory(MapleInventoryType.ETC).addItem(new Item(4161047, (short) 0, (short) 1)); + } else if (job == 1) { // Adventurer + newchar.setJob(MapleJob.BEGINNER); + newchar.setMapId(/*specialJobType == 2 ? 3000600 : */10000); + newchar.getInventory(MapleInventoryType.ETC).addItem(new Item(4161001, (short) 0, (short) 1)); + } else if (job == 2) { // Aran + newchar.setJob(MapleJob.LEGEND); + newchar.setMapId(914000000); + newchar.getInventory(MapleInventoryType.ETC).addItem(new Item(4161048, (short) 0, (short) 1)); + } else { + c.announce(MaplePacketCreator.deleteCharResponse(0, 9)); + return; + } + + MapleInventory equipped = newchar.getInventory(MapleInventoryType.EQUIPPED); + + Item eq_top = MapleItemInformationProvider.getInstance().getEquipById(top); + eq_top.setPosition((byte) -5); + equipped.addFromDB(eq_top); + Item eq_bottom = MapleItemInformationProvider.getInstance().getEquipById(bottom); + eq_bottom.setPosition((byte) -6); + equipped.addFromDB(eq_bottom); + Item eq_shoes = MapleItemInformationProvider.getInstance().getEquipById(shoes); + eq_shoes.setPosition((byte) -7); + equipped.addFromDB(eq_shoes); + Item eq_weapon = MapleItemInformationProvider.getInstance().getEquipById(weapon); + eq_weapon.setPosition((byte) -11); + equipped.addFromDB(eq_weapon.copy()); + + if (!newchar.insertNewChar()) { + c.announce(MaplePacketCreator.deleteCharResponse(0, 9)); + return; + } + c.announce(MaplePacketCreator.addNewCharEntry(newchar)); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip("[NEW CHAR]: " + c.getAccountName() + " has created a new character with IGN " + name)); + } +} \ No newline at end of file diff --git a/src/net/server/handlers/login/DeleteCharHandler.java b/src/net/server/handlers/login/DeleteCharHandler.java new file mode 100644 index 0000000000..8e1ecd8d0a --- /dev/null +++ b/src/net/server/handlers/login/DeleteCharHandler.java @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class DeleteCharHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + String pic = slea.readMapleAsciiString(); + int cid = slea.readInt(); + if (c.checkPic(pic)) { + FilePrinter.printError(FilePrinter.DELETED_CHARACTERS + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid + "\r\n"); + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0)); + c.deleteCharacter(cid); + } else { + c.announce(MaplePacketCreator.deleteCharResponse(cid, 0x14)); + } + } +} diff --git a/src/net/server/handlers/login/GuestLoginHandler.java b/src/net/server/handlers/login/GuestLoginHandler.java new file mode 100644 index 0000000000..8ad0f707d7 --- /dev/null +++ b/src/net/server/handlers/login/GuestLoginHandler.java @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/* + * @author David + */ +public final class GuestLoginHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.announce(MaplePacketCreator.sendGuestTOS()); + //System.out.println(slea.toString()); + new LoginPasswordHandler().handlePacket(slea, c); + } +} diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java new file mode 100644 index 0000000000..eeb86dba67 --- /dev/null +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -0,0 +1,84 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import java.util.Calendar; + +import net.MaplePacketHandler; +import server.TimerManager; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +public final class LoginPasswordHandler implements MaplePacketHandler { + + @Override + public boolean validateState(MapleClient c) { + return !c.isLoggedIn(); + } + + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + + String login = slea.readMapleAsciiString(); + String pwd = slea.readMapleAsciiString(); + c.setAccountName(login); + + int loginok = c.login(login, pwd); + + if (c.hasBannedIP() || c.hasBannedMac()) { + c.announce(MaplePacketCreator.getLoginFailed(3)); + return; + } + Calendar tempban = c.getTempBanCalendar(); + if (tempban != null) { + if (tempban.getTimeInMillis() > System.currentTimeMillis()) { + c.announce(MaplePacketCreator.getTempBan(tempban.getTimeInMillis(), c.getGReason())); + return; + } + } + if (loginok == 3) { + c.announce(MaplePacketCreator.getPermBan(c.getGReason()));//crashes but idc :D + return; + } else if (loginok != 0) { + c.announce(MaplePacketCreator.getLoginFailed(loginok)); + return; + } + if (c.finishLogin() == 0) { + login(c); + } else { + c.announce(MaplePacketCreator.getLoginFailed(7)); + } + } + + private static void login(MapleClient c){ + c.announce(MaplePacketCreator.getAuthSuccess(c));//why the fk did I do c.getAccountName()? + final MapleClient client = c; + c.setIdleTask(TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + client.disconnect(false, false); + } + }, 600000)); + } +} diff --git a/src/net/server/handlers/login/PickCharHandler.java b/src/net/server/handlers/login/PickCharHandler.java new file mode 100644 index 0000000000..2b40c22974 --- /dev/null +++ b/src/net/server/handlers/login/PickCharHandler.java @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import java.net.InetAddress; +import java.net.UnknownHostException; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class PickCharHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + int charId = slea.readInt(); + int world = slea.readInt();//Wuuu? ): + c.setWorld(world); + String macs = slea.readMapleAsciiString(); + c.updateMacs(macs); + if (c.hasBannedMac()) { + c.getSession().close(true); + return; + } + try { + c.setChannel(Randomizer.nextInt(Server.getInstance().getWorld(world).getChannels().size())); + } catch (Exception e) { + c.setChannel(1); + } + if (c.getIdleTask() != null) { + c.getIdleTask().cancel(true); + } + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + String[] socket = Server.getInstance().getIP(c.getWorld(), c.getChannel()).split(":"); + try { + c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + } catch (UnknownHostException e) { + } + } +} diff --git a/src/net/server/handlers/login/RegisterPicHandler.java b/src/net/server/handlers/login/RegisterPicHandler.java new file mode 100644 index 0000000000..7a247b2df0 --- /dev/null +++ b/src/net/server/handlers/login/RegisterPicHandler.java @@ -0,0 +1,45 @@ +package net.server.handlers.login; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +public final class RegisterPicHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readByte(); + int charId = slea.readInt(); + String macs = slea.readMapleAsciiString(); + String hwid = slea.readMapleAsciiString(); + + c.updateMacs(macs); + c.updateHWID(hwid); + + if (c.hasBannedMac() || c.hasBannedHWID()) { + c.getSession().close(true); + return; + } + + String pic = slea.readMapleAsciiString(); + if (c.getPic() == null || c.getPic().equals("")) { + c.setPic(pic); + if (c.getIdleTask() != null) { + c.getIdleTask().cancel(true); + } + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + String[] socket = Server.getInstance().getIP(c.getWorld(), c.getChannel()).split(":"); + try { + c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + } catch (UnknownHostException e) { + } + } else { + c.getSession().close(true); + } + } +} \ No newline at end of file diff --git a/src/net/server/handlers/login/RegisterPinHandler.java b/src/net/server/handlers/login/RegisterPinHandler.java new file mode 100644 index 0000000000..4a0335017c --- /dev/null +++ b/src/net/server/handlers/login/RegisterPinHandler.java @@ -0,0 +1,47 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/* + * @author Rob + */ +public final class RegisterPinHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte c2 = slea.readByte(); + if (c2 == 0) { + c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); + } else { + String pin = slea.readMapleAsciiString(); + if (pin != null) { + c.setPin(pin); + c.announce(MaplePacketCreator.pinRegistered()); + c.updateLoginState(MapleClient.LOGIN_NOTLOGGEDIN); + } + } + } +} diff --git a/src/net/server/handlers/login/RelogRequestHandler.java b/src/net/server/handlers/login/RelogRequestHandler.java new file mode 100644 index 0000000000..0e16342a07 --- /dev/null +++ b/src/net/server/handlers/login/RelogRequestHandler.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class RelogRequestHandler extends AbstractMaplePacketHandler { + @Override + public boolean validateState(MapleClient c) { + return !c.isLoggedIn(); + } + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + c.announce(MaplePacketCreator.getRelogResponse()); + } +} diff --git a/src/net/server/handlers/login/ServerStatusRequestHandler.java b/src/net/server/handlers/login/ServerStatusRequestHandler.java new file mode 100644 index 0000000000..707f22f84a --- /dev/null +++ b/src/net/server/handlers/login/ServerStatusRequestHandler.java @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package net.server.handlers.login; + +import client.MapleClient; +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import net.server.channel.Channel; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class ServerStatusRequestHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte world = (byte) slea.readShort();//Wuuu? ): + int status; + int num = 0; + for (Channel ch : Server.getInstance().getWorld(world).getChannels()) { + num += ch.getConnectedClients(); + } + if (num >= ServerConstants.CHANNEL_LOAD) { + status = 2; + } else if (num >= ServerConstants.CHANNEL_LOAD * .8) { // More than 80 percent o___o + status = 1; + } else { + status = 0; + } + c.announce(MaplePacketCreator.getServerStatus(status)); + } +} diff --git a/src/net/server/handlers/login/ServerlistRequestHandler.java b/src/net/server/handlers/login/ServerlistRequestHandler.java new file mode 100644 index 0000000000..da15bd2b27 --- /dev/null +++ b/src/net/server/handlers/login/ServerlistRequestHandler.java @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers.login; + +import client.MapleClient; +import constants.ServerConstants; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import net.server.world.World; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class ServerlistRequestHandler extends AbstractMaplePacketHandler { + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + Server server = Server.getInstance(); + for (World world : server.getWorlds()) { + c.announce(MaplePacketCreator.getServerList(world.getId(), ServerConstants.WORLD_NAMES[world.getId()], world.getFlag(), world.getEventMessage(), world.getChannels())); + } + c.announce(MaplePacketCreator.getEndOfServerList()); + c.announce(MaplePacketCreator.selectWorld(0));//too lazy to make a check lol + c.announce(MaplePacketCreator.sendRecommended(server.worldRecommendedList())); + } +} \ No newline at end of file diff --git a/src/net/server/handlers/login/SetGenderHandler.java b/src/net/server/handlers/login/SetGenderHandler.java new file mode 100644 index 0000000000..2273fd5d3f --- /dev/null +++ b/src/net/server/handlers/login/SetGenderHandler.java @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package net.server.handlers.login; + +import client.MapleClient; +import net.AbstractMaplePacketHandler; +import server.TimerManager; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +/** + * + * @author kevintjuh93 + */ +public class SetGenderHandler extends AbstractMaplePacketHandler { + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + byte type = slea.readByte(); //? + if (type == 0x01 && c.getGender() == 10) { //Packet shouldn't come if Gender isn't 10. + c.setGender(slea.readByte()); + c.announce(MaplePacketCreator.getAuthSuccess(c)); + final MapleClient client = c; + c.setIdleTask(TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + client.getSession().close(true); + } + }, 600000)); + } + } + +} diff --git a/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java b/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java new file mode 100644 index 0000000000..3752df5ca6 --- /dev/null +++ b/src/net/server/handlers/login/ViewAllCharSelectedWithPicHandler.java @@ -0,0 +1,47 @@ +package net.server.handlers.login; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; +import client.MapleClient; + +public class ViewAllCharSelectedWithPicHandler extends AbstractMaplePacketHandler { + + @Override + public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + + String pic = slea.readMapleAsciiString(); + int charId = slea.readInt(); + int world = slea.readInt();//world + c.setWorld(world); + int channel = Randomizer.rand(0, Server.getInstance().getWorld(world).getChannels().size()); + c.setChannel(channel); + String macs = slea.readMapleAsciiString(); + c.updateMacs(macs); + + if (c.hasBannedMac()) { + c.getSession().close(true); + return; + } + if (c.checkPic(pic)) { + if (c.getIdleTask() != null) { + c.getIdleTask().cancel(true); + } + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + + String[] socket = Server.getInstance().getIP(c.getWorld(), c.getChannel()).split(":"); + try { + c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + } catch (UnknownHostException e) { + } + + } else { + c.announce(MaplePacketCreator.wrongPic()); + } + } +} diff --git a/src/net/server/handlers/login/ViewAllPicRegisterHandler.java b/src/net/server/handlers/login/ViewAllPicRegisterHandler.java new file mode 100644 index 0000000000..4c695b319f --- /dev/null +++ b/src/net/server/handlers/login/ViewAllPicRegisterHandler.java @@ -0,0 +1,41 @@ +package net.server.handlers.login; + +import client.MapleClient; +import java.net.InetAddress; +import java.net.UnknownHostException; +import net.AbstractMaplePacketHandler; +import net.server.Server; +import tools.MaplePacketCreator; +import tools.Randomizer; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class ViewAllPicRegisterHandler extends AbstractMaplePacketHandler { //Gey class name lol + + + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + slea.readByte(); + int charId = slea.readInt(); + c.setWorld(slea.readInt()); //world + int channel = Randomizer.rand(0, Server.getInstance().getWorld(c.getWorld()).getChannels().size()); + c.setChannel(channel); + String mac = slea.readMapleAsciiString(); + c.updateMacs(mac); + if (c.hasBannedMac()) { + c.getSession().close(true); + return; + } + slea.readMapleAsciiString(); + String pic = slea.readMapleAsciiString(); + c.setPic(pic); + if (c.getIdleTask() != null) { + c.getIdleTask().cancel(true); + } + c.updateLoginState(MapleClient.LOGIN_SERVER_TRANSITION); + String[] socket = Server.getInstance().getIP(c.getWorld(), channel).split(":"); + try { + c.announce(MaplePacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId)); + } catch (UnknownHostException e) { + } + } +} diff --git a/src/net/server/handlers/login/ViewCharHandler.java b/src/net/server/handlers/login/ViewCharHandler.java new file mode 100644 index 0000000000..acbf4bf13a --- /dev/null +++ b/src/net/server/handlers/login/ViewCharHandler.java @@ -0,0 +1,81 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.handlers.login; + +import client.MapleCharacter; +import client.MapleClient; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.AbstractMaplePacketHandler; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.data.input.SeekableLittleEndianAccessor; + +public final class ViewCharHandler extends AbstractMaplePacketHandler { + @Override + public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { + try { + short charsNum; + List worlds; + List chars; + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT world, id FROM characters WHERE accountid = ?")) { + ps.setInt(1, c.getAccID()); + charsNum = 0; + worlds = new ArrayList<>(); + chars = new ArrayList<>(); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + int cworld = rs.getByte("world"); + boolean inside = false; + for (int w : worlds) { + if (w == cworld) { + inside = true; + } + } + if (!inside) { + worlds.add(cworld); + } + MapleCharacter chr = MapleCharacter.loadCharFromDB(rs.getInt("id"), c, false); + chars.add(chr); + charsNum++; + } + } + } + int unk = charsNum + 3 - charsNum % 3; + c.announce(MaplePacketCreator.showAllCharacter(charsNum, unk)); + for (Iterator it = worlds.iterator(); it.hasNext();) { + int w = it.next(); + List chrsinworld = new ArrayList<>(); + for (MapleCharacter chr : chars) { + if (chr.getWorld() == w) { + chrsinworld.add(chr); + } + } + c.announce(MaplePacketCreator.showAllCharacterInfo(w, chrsinworld)); + } + } catch (Exception e) { + } + } +} diff --git a/src/net/server/world/MapleMessenger.java b/src/net/server/world/MapleMessenger.java new file mode 100644 index 0000000000..ff2eacdc4a --- /dev/null +++ b/src/net/server/world/MapleMessenger.java @@ -0,0 +1,81 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +public final class MapleMessenger { + + private int id; + private List members = new ArrayList(3); + private boolean[] pos = new boolean[3]; + + public MapleMessenger(int id, MapleMessengerCharacter chrfor) { + this.id = id; + for (int i = 0; i < 3; i++){ + pos[i] = false; + } + addMember(chrfor, chrfor.getPosition()); + } + + public int getId() { + return id; + } + + public Collection getMembers() { + return Collections.unmodifiableList(members); + } + + public void addMember(MapleMessengerCharacter member, int position) { + members.add(member); + member.setPosition(position); + pos[position] = true; + } + + public void removeMember(MapleMessengerCharacter member) { + int position = member.getPosition(); + pos[position] = false; + members.remove(member); + } + + public int getLowestPosition() { + for (byte i = 0; i < 3; i++) { + if (!pos[i]) { + return i; + } + } + return -1; + } + + public int getPositionByName(String name) { + for (MapleMessengerCharacter messengerchar : members) { + if (messengerchar.getName().equals(name)) { + return messengerchar.getPosition(); + } + } + return -1; + } +} + diff --git a/src/net/server/world/MapleMessengerCharacter.java b/src/net/server/world/MapleMessengerCharacter.java new file mode 100644 index 0000000000..5dc3fe66d2 --- /dev/null +++ b/src/net/server/world/MapleMessengerCharacter.java @@ -0,0 +1,93 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world; + +import client.MapleCharacter; + +public class MapleMessengerCharacter { + private String name; + private int id, position; + private int channel; + private boolean online; + + public MapleMessengerCharacter(MapleCharacter maplechar, int position) { + this.name = maplechar.getName(); + this.channel = maplechar.getClient().getChannel(); + this.id = maplechar.getId(); + this.online = true; + this.position = position; + } + + public int getId() { + return id; + } + + public int getChannel() { + return channel; + } + + public String getName() { + return name; + } + + public boolean isOnline() { + return online; + } + + public int getPosition() { + return position; + } + + public void setPosition(int position) { + this.position = position; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final MapleMessengerCharacter other = (MapleMessengerCharacter) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; + } +} diff --git a/src/net/server/world/MapleParty.java b/src/net/server/world/MapleParty.java new file mode 100644 index 0000000000..27f90693cc --- /dev/null +++ b/src/net/server/world/MapleParty.java @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world; + +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +public class MapleParty { + private MaplePartyCharacter leader; + private List members = new LinkedList(); + private int id; + + public MapleParty(int id, MaplePartyCharacter chrfor) { + this.leader = chrfor; + this.members.add(this.leader); + this.id = id; + } + + public boolean containsMembers(MaplePartyCharacter member) { + return members.contains(member); + } + + public void addMember(MaplePartyCharacter member) { + members.add(member); + } + + public void removeMember(MaplePartyCharacter member) { + members.remove(member); + } + + public void setLeader(MaplePartyCharacter victim) { + this.leader = victim; + } + + public void updateMember(MaplePartyCharacter member) { + for (int i = 0; i < members.size(); i++) { + if (members.get(i).getId() == member.getId()) { + members.set(i, member); + } + } + } + + public MaplePartyCharacter getMemberById(int id) { + for (MaplePartyCharacter chr : members) { + if (chr.getId() == id) { + return chr; + } + } + return null; + } + + public Collection getMembers() { + return Collections.unmodifiableList(members); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public MaplePartyCharacter getLeader() { + return leader; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final MapleParty other = (MapleParty) obj; + if (id != other.id) { + return false; + } + return true; + } +} diff --git a/src/net/server/world/MaplePartyCharacter.java b/src/net/server/world/MaplePartyCharacter.java new file mode 100644 index 0000000000..dd1b7ebe3a --- /dev/null +++ b/src/net/server/world/MaplePartyCharacter.java @@ -0,0 +1,152 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world; + +import java.util.ArrayList; +import java.util.Collection; + +import server.maps.MapleDoor; +import client.MapleCharacter; +import client.MapleJob; + +public class MaplePartyCharacter { + private String name; + private int id; + private int level; + private int channel, world; + private int jobid; + private int mapid; + private ArrayList door = new ArrayList(); + private boolean online; + private MapleJob job; + private MapleCharacter character; + + public MaplePartyCharacter(MapleCharacter maplechar) { + this.character = maplechar; + this.name = maplechar.getName(); + this.level = maplechar.getLevel(); + this.channel = maplechar.getClient().getChannel(); + this.world = maplechar.getWorld(); + this.id = maplechar.getId(); + this.jobid = maplechar.getJob().getId(); + this.mapid = maplechar.getMapId(); + this.online = true; + this.job = maplechar.getJob(); + for (MapleDoor doors : maplechar.getDoors()) { + this.door.add(doors); + } + } + + public MaplePartyCharacter() { + this.name = ""; + } + + public MapleCharacter getPlayer() { + return character; + } + + public MapleJob getJob() { + return job; + } + + public int getLevel() { + return level; + } + + public int getChannel() { + return channel; + } + + public void setChannel(int channel) { + this.channel = channel; + } + + public boolean isOnline() { + return online; + } + + public void setOnline(boolean online) { + this.online = online; + } + + public int getMapId() { + return mapid; + } + + public void setMapId(int mapid) { + this.mapid = mapid; + } + + public String getName() { + return name; + } + + public int getId() { + return id; + } + + public int getJobId() { + return jobid; + } + + public void updateDoor(MapleDoor door) { + this.door.add(door); + } + + public Collection getDoors() { + return door; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final MaplePartyCharacter other = (MaplePartyCharacter) obj; + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; + } + + public int getWorld() { + return world; + } +} diff --git a/src/net/server/world/PartyOperation.java b/src/net/server/world/PartyOperation.java new file mode 100644 index 0000000000..8a3e81ba16 --- /dev/null +++ b/src/net/server/world/PartyOperation.java @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package net.server.world; + +public enum PartyOperation { + JOIN, LEAVE, EXPEL, DISBAND, SILENT_UPDATE, LOG_ONOFF, CHANGE_LEADER +} diff --git a/src/net/server/world/World.java b/src/net/server/world/World.java new file mode 100644 index 0000000000..5c4304eaeb --- /dev/null +++ b/src/net/server/world/World.java @@ -0,0 +1,636 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package net.server.world; + +import client.BuddyList; +import client.BuddyList.BuddyAddResult; +import client.BuddyList.BuddyOperation; +import client.BuddylistEntry; +import client.MapleCharacter; +import client.MapleFamily; +import constants.ServerConstants; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +import net.server.PlayerStorage; +import net.server.Server; +import net.server.channel.Channel; +import net.server.channel.CharacterIdChannelPair; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.guild.MapleGuildSummary; +import tools.LogHelper; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +public class World { + + private int id, flag, exprate, droprate, mesorate, bossdroprate; + private String eventmsg; + private List channels = new ArrayList<>(); + private Map parties = new HashMap<>(); + private AtomicInteger runningPartyId = new AtomicInteger(); + private Map messengers = new HashMap<>(); + private AtomicInteger runningMessengerId = new AtomicInteger(); + private Map families = new LinkedHashMap<>(); + private Map gsStore = new HashMap<>(); + private PlayerStorage players = new PlayerStorage(); + + public World(int world, int flag, String eventmsg, int exprate, int droprate, int mesorate, int bossdroprate) { + this.id = world; + this.flag = flag; + this.eventmsg = eventmsg; + this.exprate = exprate; + this.droprate = droprate; + this.mesorate = mesorate; + this.bossdroprate = bossdroprate; + runningPartyId.set(1); + runningMessengerId.set(1); + } + + public List getChannels() { + return channels; + } + + public Channel getChannel(int channel) { + return channels.get(channel - 1); + } + + public void addChannel(Channel channel) { + channels.add(channel); + } + + public void removeChannel(int channel) { + channels.remove(channel); + } + + public void setFlag(byte b) { + this.flag = b; + } + + public int getFlag() { + return flag; + } + + public String getEventMessage() { + return eventmsg; + } + + public int getExpRate() { + return exprate; + } + + public void setExpRate(int exp) { + //System.out.println("Setting server EXP Rate to " + exp * ServerConstants.EXP_RATE + "x."); + for(MapleCharacter chr : getPlayerStorage().getAllCharacters()) { + chr.revertRates(false); + } + this.exprate = exp; + for(MapleCharacter chr : getPlayerStorage().getAllCharacters()) { + chr.setRates(); + } + } + + public int getDropRate() { + return droprate; + } + + public void setDropRate(int drop) { + for(MapleCharacter chr : getPlayerStorage().getAllCharacters()) { + chr.revertRates(false); + } + this.droprate = drop; + for(MapleCharacter chr : getPlayerStorage().getAllCharacters()) { + chr.setRates(); + } + } + + public int getMesoRate() { + return mesorate; + } + + public void setMesoRate(int meso) { + for(MapleCharacter chr : getPlayerStorage().getAllCharacters()) { + chr.revertRates(false); + } + this.mesorate = meso; + for(MapleCharacter chr : getPlayerStorage().getAllCharacters()) { + chr.setRates(); + } + } + + public int getBossDropRate() { + return bossdroprate; + } + + public PlayerStorage getPlayerStorage() { + return players; + } + + public void removePlayer(MapleCharacter chr) { + channels.get(chr.getClient().getChannel() - 1).removePlayer(chr); + players.removePlayer(chr.getId()); + } + + public int getId() { + return id; + } + + public void addFamily(int id, MapleFamily f) { + synchronized (families) { + if (!families.containsKey(id)) { + families.put(id, f); + } + } + } + + public MapleFamily getFamily(int id) { + synchronized (families) { + if (families.containsKey(id)) { + return families.get(id); + } + return null; + } + } + + public MapleGuild getGuild(MapleGuildCharacter mgc) { + int gid = mgc.getGuildId(); + MapleGuild g; + g = Server.getInstance().getGuild(gid, mgc.getWorld(), mgc); + if (gsStore.get(gid) == null) { + gsStore.put(gid, new MapleGuildSummary(g)); + } + return g; + } + + public MapleGuildSummary getGuildSummary(int gid, int wid) { + if (gsStore.containsKey(gid)) { + return gsStore.get(gid); + } else { + MapleGuild g = Server.getInstance().getGuild(gid, wid, null); + if (g != null) { + gsStore.put(gid, new MapleGuildSummary(g)); + } + return gsStore.get(gid); + } + } + + public void updateGuildSummary(int gid, MapleGuildSummary mgs) { + gsStore.put(gid, mgs); + } + + public void reloadGuildSummary() { + MapleGuild g; + Server server = Server.getInstance(); + for (int i : gsStore.keySet()) { + g = server.getGuild(i, getId(), null); + if (g != null) { + gsStore.put(i, new MapleGuildSummary(g)); + } else { + gsStore.remove(i); + } + } + } + + public void setGuildAndRank(List cids, int guildid, int rank, int exception) { + for (int cid : cids) { + if (cid != exception) { + setGuildAndRank(cid, guildid, rank); + } + } + } + + public void setOfflineGuildStatus(int guildid, int guildrank, int cid) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET guildid = ?, guildrank = ? WHERE id = ?")) { + ps.setInt(1, guildid); + ps.setInt(2, guildrank); + ps.setInt(3, cid); + ps.execute(); + } + } catch (SQLException se) { + se.printStackTrace(); + } + } + + public void setGuildAndRank(int cid, int guildid, int rank) { + MapleCharacter mc = getPlayerStorage().getCharacterById(cid); + if (mc == null) { + return; + } + boolean bDifferentGuild; + if (guildid == -1 && rank == -1) { + bDifferentGuild = true; + } else { + bDifferentGuild = guildid != mc.getGuildId(); + mc.setGuildId(guildid); + mc.setGuildRank(rank); + mc.saveGuildStatus(); + } + if (bDifferentGuild) { + mc.getMap().broadcastMessage(mc, MaplePacketCreator.removePlayerFromMap(cid), false); + mc.getMap().broadcastMessage(mc, MaplePacketCreator.spawnPlayerMapobject(mc), false); + } + } + + public void changeEmblem(int gid, List affectedPlayers, MapleGuildSummary mgs) { + updateGuildSummary(gid, mgs); + sendPacket(affectedPlayers, MaplePacketCreator.guildEmblemChange(gid, mgs.getLogoBG(), mgs.getLogoBGColor(), mgs.getLogo(), mgs.getLogoColor()), -1); + setGuildAndRank(affectedPlayers, -1, -1, -1); //respawn player + } + + public void sendPacket(List targetIds, final byte[] packet, int exception) { + MapleCharacter c; + for (int i : targetIds) { + if (i == exception) { + continue; + } + c = getPlayerStorage().getCharacterById(i); + if (c != null) { + c.getClient().announce(packet); + } + } + } + + public MapleParty createParty(MaplePartyCharacter chrfor) { + int partyid = runningPartyId.getAndIncrement(); + MapleParty party = new MapleParty(partyid, chrfor); + parties.put(party.getId(), party); + return party; + } + + public MapleParty getParty(int partyid) { + return parties.get(partyid); + } + + public MapleParty disbandParty(int partyid) { + return parties.remove(partyid); + } + + public void updateParty(MapleParty party, PartyOperation operation, MaplePartyCharacter target) { + for (MaplePartyCharacter partychar : party.getMembers()) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(partychar.getName()); + if (chr != null) { + if (operation == PartyOperation.DISBAND) { + chr.setParty(null); + chr.setMPC(null); + } else { + chr.setParty(party); + chr.setMPC(partychar); + } + chr.getClient().announce(MaplePacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); + } + } + switch (operation) { + case LEAVE: + case EXPEL: + MapleCharacter chr = getPlayerStorage().getCharacterByName(target.getName()); + if (chr != null) { + chr.getClient().announce(MaplePacketCreator.updateParty(chr.getClient().getChannel(), party, operation, target)); + chr.setParty(null); + chr.setMPC(null); + } + default: + break; + } + } + + public void updateParty(int partyid, PartyOperation operation, MaplePartyCharacter target) { + MapleParty party = getParty(partyid); + if (party == null) { + throw new IllegalArgumentException("no party with the specified partyid exists"); + } + switch (operation) { + case JOIN: + party.addMember(target); + break; + case EXPEL: + case LEAVE: + party.removeMember(target); + break; + case DISBAND: + disbandParty(partyid); + break; + case SILENT_UPDATE: + case LOG_ONOFF: + party.updateMember(target); + break; + case CHANGE_LEADER: + party.setLeader(target); + break; + default: + System.out.println("Unhandeled updateParty operation " + operation.name()); + } + updateParty(party, operation, target); + } + + public int find(String name) { + int channel = -1; + MapleCharacter chr = getPlayerStorage().getCharacterByName(name); + if (chr != null) { + channel = chr.getClient().getChannel(); + } + return channel; + } + + public int find(int id) { + int channel = -1; + MapleCharacter chr = getPlayerStorage().getCharacterById(id); + if (chr != null) { + channel = chr.getClient().getChannel(); + } + return channel; + } + + public void partyChat(MapleParty party, String chattext, String namefrom) { + for (MaplePartyCharacter partychar : party.getMembers()) { + if (!(partychar.getName().equals(namefrom))) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(partychar.getName()); + if (chr != null) { + chr.getClient().announce(MaplePacketCreator.multiChat(namefrom, chattext, 1)); + } + } + } + } + + public void buddyChat(int[] recipientCharacterIds, int cidFrom, String nameFrom, String chattext) { + PlayerStorage playerStorage = getPlayerStorage(); + for (int characterId : recipientCharacterIds) { + MapleCharacter chr = playerStorage.getCharacterById(characterId); + if (chr != null) { + if (chr.getBuddylist().containsVisible(cidFrom)) { + chr.getClient().announce(MaplePacketCreator.multiChat(nameFrom, chattext, 0)); + } + } + } + } + + public CharacterIdChannelPair[] multiBuddyFind(int charIdFrom, int[] characterIds) { + List foundsChars = new ArrayList<>(characterIds.length); + for (Channel ch : getChannels()) { + for (int charid : ch.multiBuddyFind(charIdFrom, characterIds)) { + foundsChars.add(new CharacterIdChannelPair(charid, ch.getId())); + } + } + return foundsChars.toArray(new CharacterIdChannelPair[foundsChars.size()]); + } + + public MapleMessenger getMessenger(int messengerid) { + return messengers.get(messengerid); + } + + public void leaveMessenger(int messengerid, MapleMessengerCharacter target) { + MapleMessenger messenger = getMessenger(messengerid); + if (messenger == null) { + throw new IllegalArgumentException("No messenger with the specified messengerid exists"); + } + int position = messenger.getPositionByName(target.getName()); + messenger.removeMember(target); + removeMessengerPlayer(messenger, position); + } + + public void messengerInvite(String sender, int messengerid, String target, int fromchannel) { + if (isConnected(target)) { + MapleMessenger messenger = getPlayerStorage().getCharacterByName(target).getMessenger(); + if (messenger == null) { + getPlayerStorage().getCharacterByName(target).getClient().announce(MaplePacketCreator.messengerInvite(sender, messengerid)); + MapleCharacter from = getChannel(fromchannel).getPlayerStorage().getCharacterByName(sender); + from.getClient().announce(MaplePacketCreator.messengerNote(target, 4, 1)); + } else { + MapleCharacter from = getChannel(fromchannel).getPlayerStorage().getCharacterByName(sender); + from.getClient().announce(MaplePacketCreator.messengerChat(sender + " : " + target + " is already using Maple Messenger")); + } + } + } + + public void addMessengerPlayer(MapleMessenger messenger, String namefrom, int fromchannel, int position) { + for (MapleMessengerCharacter messengerchar : messenger.getMembers()) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(messengerchar.getName()); + if(chr == null){ + continue; + } + if (!messengerchar.getName().equals(namefrom)) { + MapleCharacter from = getChannel(fromchannel).getPlayerStorage().getCharacterByName(namefrom); + chr.getClient().announce(MaplePacketCreator.addMessengerPlayer(namefrom, from, position, (byte) (fromchannel - 1))); + from.getClient().announce(MaplePacketCreator.addMessengerPlayer(chr.getName(), chr, messengerchar.getPosition(), (byte) (messengerchar.getChannel() - 1))); + } else { + chr.getClient().announce(MaplePacketCreator.joinMessenger(messengerchar.getPosition())); + } + } + } + + public void removeMessengerPlayer(MapleMessenger messenger, int position) { + for (MapleMessengerCharacter messengerchar : messenger.getMembers()) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(messengerchar.getName()); + if (chr != null) { + chr.getClient().announce(MaplePacketCreator.removeMessengerPlayer(position)); + } + } + } + + public void messengerChat(MapleMessenger messenger, String chattext, String namefrom) { + String from = ""; + String to1 = ""; + String to2 = ""; + for (MapleMessengerCharacter messengerchar : messenger.getMembers()) { + if (!(messengerchar.getName().equals(namefrom))) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(messengerchar.getName()); + if (chr != null) { + chr.getClient().announce(MaplePacketCreator.messengerChat(chattext)); + if (to1.equals("")){ + to1 = messengerchar.getName(); + } else if (to2.equals("")){ + to2 = messengerchar.getName(); + } + } + } else { + from = messengerchar.getName(); + } + } + } + + public void declineChat(String target, String namefrom) { + if (isConnected(target)) { + MapleCharacter chr = getPlayerStorage().getCharacterByName(target); + if (chr != null && chr.getMessenger() != null) { + chr.getClient().announce(MaplePacketCreator.messengerNote(namefrom, 5, 0)); + } + } + } + + public void updateMessenger(int messengerid, String namefrom, int fromchannel) { + MapleMessenger messenger = getMessenger(messengerid); + int position = messenger.getPositionByName(namefrom); + updateMessenger(messenger, namefrom, position, fromchannel); + } + + public void updateMessenger(MapleMessenger messenger, String namefrom, int position, int fromchannel) { + for (MapleMessengerCharacter messengerchar : messenger.getMembers()) { + Channel ch = getChannel(fromchannel); + if (!(messengerchar.getName().equals(namefrom))) { + MapleCharacter chr = ch.getPlayerStorage().getCharacterByName(messengerchar.getName()); + if (chr != null) { + chr.getClient().announce(MaplePacketCreator.updateMessengerPlayer(namefrom, getChannel(fromchannel).getPlayerStorage().getCharacterByName(namefrom), position, (byte) (fromchannel - 1))); + } + } + } + } + + public void silentLeaveMessenger(int messengerid, MapleMessengerCharacter target) { + MapleMessenger messenger = getMessenger(messengerid); + if (messenger == null) { + throw new IllegalArgumentException("No messenger with the specified messengerid exists"); + } + messenger.addMember(target, target.getPosition()); + } + + public void joinMessenger(int messengerid, MapleMessengerCharacter target, String from, int fromchannel) { + MapleMessenger messenger = getMessenger(messengerid); + if (messenger == null) { + throw new IllegalArgumentException("No messenger with the specified messengerid exists"); + } + messenger.addMember(target, target.getPosition()); + addMessengerPlayer(messenger, from, fromchannel, target.getPosition()); + } + + public void silentJoinMessenger(int messengerid, MapleMessengerCharacter target, int position) { + MapleMessenger messenger = getMessenger(messengerid); + if (messenger == null) { + throw new IllegalArgumentException("No messenger with the specified messengerid exists"); + } + messenger.addMember(target, position); + } + + public MapleMessenger createMessenger(MapleMessengerCharacter chrfor) { + int messengerid = runningMessengerId.getAndIncrement(); + MapleMessenger messenger = new MapleMessenger(messengerid, chrfor); + messengers.put(messenger.getId(), messenger); + return messenger; + } + + public boolean isConnected(String charName) { + return getPlayerStorage().getCharacterByName(charName) != null; + } + + public void whisper(String sender, String target, int channel, String message) { + if (isConnected(target)) { + getPlayerStorage().getCharacterByName(target).getClient().announce(MaplePacketCreator.getWhisper(sender, channel, message)); + } + } + + public BuddyAddResult requestBuddyAdd(String addName, int channelFrom, int cidFrom, String nameFrom) { + MapleCharacter addChar = getPlayerStorage().getCharacterByName(addName); + if (addChar != null) { + BuddyList buddylist = addChar.getBuddylist(); + if (buddylist.isFull()) { + return BuddyAddResult.BUDDYLIST_FULL; + } + if (!buddylist.contains(cidFrom)) { + buddylist.addBuddyRequest(addChar.getClient(), cidFrom, nameFrom, channelFrom); + } else if (buddylist.containsVisible(cidFrom)) { + return BuddyAddResult.ALREADY_ON_LIST; + } + } + return BuddyAddResult.OK; + } + + public void buddyChanged(int cid, int cidFrom, String name, int channel, BuddyOperation operation) { + MapleCharacter addChar = getPlayerStorage().getCharacterById(cid); + if (addChar != null) { + BuddyList buddylist = addChar.getBuddylist(); + switch (operation) { + case ADDED: + if (buddylist.contains(cidFrom)) { + buddylist.put(new BuddylistEntry(name, "Default Group", cidFrom, channel, true)); + addChar.getClient().announce(MaplePacketCreator.updateBuddyChannel(cidFrom, (byte) (channel - 1))); + } + break; + case DELETED: + if (buddylist.contains(cidFrom)) { + buddylist.put(new BuddylistEntry(name, "Default Group", cidFrom, (byte) -1, buddylist.get(cidFrom).isVisible())); + addChar.getClient().announce(MaplePacketCreator.updateBuddyChannel(cidFrom, (byte) -1)); + } + break; + } + } + } + + public void loggedOff(String name, int characterId, int channel, int[] buddies) { + updateBuddies(characterId, channel, buddies, true); + } + + public void loggedOn(String name, int characterId, int channel, int buddies[]) { + updateBuddies(characterId, channel, buddies, false); + } + + private void updateBuddies(int characterId, int channel, int[] buddies, boolean offline) { + PlayerStorage playerStorage = getPlayerStorage(); + for (int buddy : buddies) { + MapleCharacter chr = playerStorage.getCharacterById(buddy); + if (chr != null) { + BuddylistEntry ble = chr.getBuddylist().get(characterId); + if (ble != null && ble.isVisible()) { + int mcChannel; + if (offline) { + ble.setChannel((byte) -1); + mcChannel = -1; + } else { + ble.setChannel(channel); + mcChannel = (byte) (channel - 1); + } + chr.getBuddylist().put(ble); + chr.getClient().announce(MaplePacketCreator.updateBuddyChannel(ble.getCharacterId(), mcChannel)); + } + } + } + } + + public void setServerMessage(String msg) { + for (Channel ch : channels) { + ch.setServerMessage(msg); + } + } + + public void broadcastPacket(final byte[] data) { + for (MapleCharacter chr : players.getAllCharacters()) { + chr.announce(data); + } + } + + public final void shutdown() { + for (Channel ch : getChannels()) { + ch.shutdown(); + } + players.disconnectAll(); + } +} diff --git a/src/provider/MapleCanvas.java b/src/provider/MapleCanvas.java new file mode 100644 index 0000000000..10ab682196 --- /dev/null +++ b/src/provider/MapleCanvas.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.awt.image.BufferedImage; + +public interface MapleCanvas { + int getHeight(); + int getWidth(); + BufferedImage getImage(); +} diff --git a/src/provider/MapleData.java b/src/provider/MapleData.java new file mode 100644 index 0000000000..4d90a93804 --- /dev/null +++ b/src/provider/MapleData.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.util.List; +import provider.wz.MapleDataType; + +public interface MapleData extends MapleDataEntity, Iterable { + @Override + public String getName(); + public MapleDataType getType(); + public List getChildren(); + public MapleData getChildByPath(String path); + public Object getData(); +} diff --git a/src/provider/MapleDataDirectoryEntry.java b/src/provider/MapleDataDirectoryEntry.java new file mode 100644 index 0000000000..cb043e0c94 --- /dev/null +++ b/src/provider/MapleDataDirectoryEntry.java @@ -0,0 +1,34 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.util.List; + +/** + * + * @author Matze + */ +public interface MapleDataDirectoryEntry extends MapleDataEntry { + public List getSubdirectories(); + public List getFiles(); + public MapleDataEntry getEntry(String name); +} diff --git a/src/provider/MapleDataEntity.java b/src/provider/MapleDataEntity.java new file mode 100644 index 0000000000..03ff77649c --- /dev/null +++ b/src/provider/MapleDataEntity.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +/** + * + * @author Matze + */ +public interface MapleDataEntity { + public String getName(); + public MapleDataEntity getParent(); +} diff --git a/src/provider/MapleDataEntry.java b/src/provider/MapleDataEntry.java new file mode 100644 index 0000000000..62db6d0abe --- /dev/null +++ b/src/provider/MapleDataEntry.java @@ -0,0 +1,33 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +/** + * + * @author Matze + */ +public interface MapleDataEntry extends MapleDataEntity { + public String getName(); + public int getSize(); + public int getChecksum(); + public int getOffset(); +} diff --git a/src/provider/MapleDataFileEntry.java b/src/provider/MapleDataFileEntry.java new file mode 100644 index 0000000000..902130a612 --- /dev/null +++ b/src/provider/MapleDataFileEntry.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +/** + * + * @author Matze + */ +public interface MapleDataFileEntry extends MapleDataEntry { + public void setOffset(int offset); +} diff --git a/src/provider/MapleDataProvider.java b/src/provider/MapleDataProvider.java new file mode 100644 index 0000000000..5237b7ac37 --- /dev/null +++ b/src/provider/MapleDataProvider.java @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +public interface MapleDataProvider { + MapleData getData(String path); + MapleDataDirectoryEntry getRoot(); +} diff --git a/src/provider/MapleDataProviderFactory.java b/src/provider/MapleDataProviderFactory.java new file mode 100644 index 0000000000..14753d4406 --- /dev/null +++ b/src/provider/MapleDataProviderFactory.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.io.File; +import java.io.IOException; +import provider.wz.WZFile; +import provider.wz.XMLWZFile; + +public class MapleDataProviderFactory { + private final static String wzPath = System.getProperty("wzpath"); + + private static MapleDataProvider getWZ(File in, boolean provideImages) { + if (in.getName().toLowerCase().endsWith("wz") && !in.isDirectory()) { + try { + return new WZFile(in, provideImages); + } catch (IOException e) { + throw new RuntimeException("Loading WZ File failed", e); + } + } else { + return new XMLWZFile(in); + } + } + + public static MapleDataProvider getDataProvider(File in) { + return getWZ(in, false); + } + + public static MapleDataProvider getImageProvidingDataProvider(File in) { + return getWZ(in, true); + } + + public static File fileInWZPath(String filename) { + return new File(wzPath, filename); + } +} \ No newline at end of file diff --git a/src/provider/MapleDataTool.java b/src/provider/MapleDataTool.java new file mode 100644 index 0000000000..8c29eba9bf --- /dev/null +++ b/src/provider/MapleDataTool.java @@ -0,0 +1,144 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider; + +import java.awt.Point; +import java.awt.image.BufferedImage; +import provider.wz.MapleDataType; + +public class MapleDataTool { + public static String getString(MapleData data) { + return ((String) data.getData()); + } + + public static String getString(MapleData data, String def) { + if (data == null || data.getData() == null) { + return def; + } else { + return ((String) data.getData()); + } + } + + public static String getString(String path, MapleData data) { + return getString(data.getChildByPath(path)); + } + + public static String getString(String path, MapleData data, String def) { + return getString(data.getChildByPath(path), def); + } + + public static double getDouble(MapleData data) { + return ((Double) data.getData()).doubleValue(); + } + + public static float getFloat(MapleData data) { + return ((Float) data.getData()).floatValue(); + } + + public static int getInt(MapleData data) { + if (data == null || data.getData() == null) { + return 0;// DEF? + } + return ((Integer) data.getData()).intValue(); + } + + public static int getInt(String path, MapleData data) { + return getInt(data.getChildByPath(path)); + } + + public static int getIntConvert(MapleData data) { + if (data.getType() == MapleDataType.STRING) { + return Integer.parseInt(getString(data)); + } else { + return getInt(data); + } + } + + public static int getIntConvert(String path, MapleData data) { + MapleData d = data.getChildByPath(path); + if (d.getType() == MapleDataType.STRING) { + return Integer.parseInt(getString(d)); + } else { + return getInt(d); + } + } + + public static int getInt(MapleData data, int def) { + if (data == null || data.getData() == null) { + return def; + } else if (data.getType() == MapleDataType.STRING) { + return Integer.parseInt(getString(data)); + } else { + return ((Integer) data.getData()).intValue(); + } + } + + public static int getInt(String path, MapleData data, int def) { + return getInt(data.getChildByPath(path), def); + } + + public static int getIntConvert(String path, MapleData data, int def) { + MapleData d = data.getChildByPath(path); + if (d == null) { + return def; + } + if (d.getType() == MapleDataType.STRING) { + try { + return Integer.parseInt(getString(d)); + } catch (NumberFormatException nfe) { + return def; + } + } else { + return getInt(d, def); + } + } + + public static BufferedImage getImage(MapleData data) { + return ((MapleCanvas) data.getData()).getImage(); + } + + public static Point getPoint(MapleData data) { + return ((Point) data.getData()); + } + + public static Point getPoint(String path, MapleData data) { + return getPoint(data.getChildByPath(path)); + } + + public static Point getPoint(String path, MapleData data, Point def) { + final MapleData pointData = data.getChildByPath(path); + if (pointData == null) { + return def; + } + return getPoint(pointData); + } + + public static String getFullDataPath(MapleData data) { + String path = ""; + MapleDataEntity myData = data; + while (myData != null) { + path = myData.getName() + "/" + path; + myData = myData.getParent(); + } + return path.substring(0, path.length() - 1); + } +} diff --git a/src/provider/wz/FileStoredPngMapleCanvas.java b/src/provider/wz/FileStoredPngMapleCanvas.java new file mode 100644 index 0000000000..21736c2c16 --- /dev/null +++ b/src/provider/wz/FileStoredPngMapleCanvas.java @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import javax.imageio.ImageIO; +import provider.MapleCanvas; + +public class FileStoredPngMapleCanvas implements MapleCanvas { + private File file; + private int width; + private int height; + private BufferedImage image; + + public FileStoredPngMapleCanvas(int width, int height, File fileIn) { + this.width = width; + this.height = height; + this.file = fileIn; + } + + @Override + public int getHeight() { + return height; + } + + @Override + public int getWidth() { + return width; + } + + @Override + public BufferedImage getImage() { + loadImageIfNecessary(); + return image; + } + + private void loadImageIfNecessary() { + if (image == null) { + try { + image = ImageIO.read(file); + // replace the dimensions loaded from the wz by the REAL dimensions from the image - should be equal tho + width = image.getWidth(); + height = image.getHeight(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } +} diff --git a/src/provider/wz/ImgMapleSound.java b/src/provider/wz/ImgMapleSound.java new file mode 100644 index 0000000000..8add2ccb36 --- /dev/null +++ b/src/provider/wz/ImgMapleSound.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +public class ImgMapleSound { + private int dataLength, offset; + + public ImgMapleSound(int dataLength, int offset) { + this.dataLength = dataLength; + this.offset = offset; + } + + public int getDataLength() { + return dataLength; + } + + public int getOffset() { + return offset; + } +} diff --git a/src/provider/wz/ListWZFile.java b/src/provider/wz/ListWZFile.java new file mode 100644 index 0000000000..14ed715992 --- /dev/null +++ b/src/provider/wz/ListWZFile.java @@ -0,0 +1,85 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import provider.MapleDataProviderFactory; +import tools.data.input.GenericLittleEndianAccessor; +import tools.data.input.InputStreamByteStream; +import tools.data.input.LittleEndianAccessor; + +public class ListWZFile { + private LittleEndianAccessor lea; + private List entries = new ArrayList(); + private static Collection modernImgs = new HashSet(); + + public static byte[] xorBytes(byte[] a, byte[] b) { + byte[] wusched = new byte[a.length]; + for (int i = 0; i < a.length; i++) { + wusched[i] = (byte) (a[i] ^ b[i]); + } + return wusched; + } + + public ListWZFile(File listwz) throws FileNotFoundException { + lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(listwz)))); + while (lea.available() > 0) { + int l = lea.readInt() * 2; + byte[] chunk = new byte[l]; + for (int i = 0; i < chunk.length; i++) { + chunk[i] = lea.readByte(); + } + lea.readChar(); + final String value = String.valueOf(WZTool.readListString(chunk)); + entries.add(value); + } + entries = Collections.unmodifiableList(entries); + } + + public List getEntries() { + return entries; + } + + public static void init() { + final String listWz = System.getProperty("listwz"); + if (listWz != null) { + ListWZFile listwz; + try { + listwz = new ListWZFile(MapleDataProviderFactory.fileInWZPath("List.wz")); + modernImgs = new HashSet(listwz.getEntries()); + } catch (FileNotFoundException e) { + } + } + } + + public static boolean isModernImgFile(String path) { + return modernImgs.contains(path); + } +} diff --git a/src/provider/wz/MapleDataType.java b/src/provider/wz/MapleDataType.java new file mode 100644 index 0000000000..e074d57d14 --- /dev/null +++ b/src/provider/wz/MapleDataType.java @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +public enum MapleDataType { + NONE, IMG_0x00, SHORT, INT, FLOAT, DOUBLE, STRING, EXTENDED, PROPERTY, CANVAS, VECTOR, CONVEX, SOUND, UOL, UNKNOWN_TYPE, UNKNOWN_EXTENDED_TYPE; +} \ No newline at end of file diff --git a/src/provider/wz/PNGMapleCanvas.java b/src/provider/wz/PNGMapleCanvas.java new file mode 100644 index 0000000000..97c2303804 --- /dev/null +++ b/src/provider/wz/PNGMapleCanvas.java @@ -0,0 +1,151 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.awt.Point; +import java.awt.image.BufferedImage; +import java.awt.image.DataBuffer; +import java.awt.image.DataBufferByte; +import java.awt.image.PixelInterleavedSampleModel; +import java.awt.image.Raster; +import java.awt.image.SampleModel; +import java.awt.image.WritableRaster; +import java.util.zip.DataFormatException; +import java.util.zip.Inflater; +import provider.MapleCanvas; + +public class PNGMapleCanvas implements MapleCanvas { + private static final int[] ZAHLEN = new int[]{2, 1, 0, 3}; + private int height; + private int width; + private int dataLength; + private int format; + private byte[] data; + + public PNGMapleCanvas(int width, int height, int dataLength, int format, byte[] data) { + super(); + this.height = height; + this.width = width; + this.dataLength = dataLength; + this.format = format; + this.data = data; + } + + public int getHeight() { + return height; + } + + public int getWidth() { + return width; + } + + public int getFormat() { + return format; + } + + private byte[] getData() { + return data; + } + + @Override + public BufferedImage getImage() { + int sizeUncompressed = 0; + int size8888 = 0; + int maxWriteBuf = 2; + int maxHeight = 3; + byte[] writeBuf = new byte[maxWriteBuf]; + @SuppressWarnings ("unused") + byte[] rowPointers = new byte[maxHeight]; + switch (getFormat()) { + case 1: + case 513: + sizeUncompressed = getHeight() * getWidth() * 4; + break; + case 2: + sizeUncompressed = getHeight() * getWidth() * 8; + break; + case 517: + sizeUncompressed = getHeight() * getWidth() / 128; + break; + } + size8888 = getHeight() * getWidth() * 8; + if (size8888 > maxWriteBuf) { + maxWriteBuf = size8888; + writeBuf = new byte[maxWriteBuf]; + } + if (getHeight() > maxHeight) { + maxHeight = getHeight(); + rowPointers = new byte[maxHeight]; + } + Inflater dec = new Inflater(); + dec.setInput(getData(), 0, dataLength); + int declen = 0; + byte[] uc = new byte[sizeUncompressed]; + try { + declen = dec.inflate(uc); + } catch (DataFormatException ex) { + throw new RuntimeException("zlib fucks", ex); + } + dec.end(); + if (getFormat() == 1) { + for (int i = 0; i < sizeUncompressed; i++) { + byte low = (byte) (uc[i] & 0x0F); + byte high = (byte) (uc[i] & 0xF0); + writeBuf[(i << 1)] = (byte) (((low << 4) | low) & 0xFF); + writeBuf[(i << 1) + 1] = (byte) (high | ((high >>> 4) & 0xF)); + } + } else if (getFormat() == 2) { + writeBuf = uc; + } else if (getFormat() == 513) { + for (int i = 0; i < declen; i += 2) { + byte bBits = (byte) ((uc[i] & 0x1F) << 3); + byte gBits = (byte) (((uc[i + 1] & 0x07) << 5) | ((uc[i] & 0xE0) >> 3)); + byte rBits = (byte) (uc[i + 1] & 0xF8); + writeBuf[(i << 1)] = (byte) (bBits | (bBits >> 5)); + writeBuf[(i << 1) + 1] = (byte) (gBits | (gBits >> 6)); + writeBuf[(i << 1) + 2] = (byte) (rBits | (rBits >> 5)); + writeBuf[(i << 1) + 3] = (byte) 0xFF; + } + } else if (getFormat() == 517) { + byte b = 0x00; + int pixelIndex = 0; + for (int i = 0; i < declen; i++) { + for (int j = 0; j < 8; j++) { + b = (byte) (((uc[i] & (0x01 << (7 - j))) >> (7 - j)) * 255); + for (int k = 0; k < 16; k++) { + pixelIndex = (i << 9) + (j << 6) + k * 2; + writeBuf[pixelIndex] = b; + writeBuf[pixelIndex + 1] = b; + writeBuf[pixelIndex + 2] = b; + writeBuf[pixelIndex + 3] = (byte) 0xFF; + } + } + } + } + DataBufferByte imgData = new DataBufferByte(writeBuf, sizeUncompressed); + SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_BYTE, getWidth(), getHeight(), 4, getWidth() * 4, ZAHLEN); + WritableRaster imgRaster = Raster.createWritableRaster(sm, imgData, new Point(0, 0)); + BufferedImage aa = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); + aa.setData(imgRaster); + return aa; + } +} diff --git a/src/provider/wz/WZDirectoryEntry.java b/src/provider/wz/WZDirectoryEntry.java new file mode 100644 index 0000000000..d24b8cb2b9 --- /dev/null +++ b/src/provider/wz/WZDirectoryEntry.java @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataEntity; +import provider.MapleDataEntry; +import provider.MapleDataFileEntry; + +public class WZDirectoryEntry extends WZEntry implements MapleDataDirectoryEntry { + private List subdirs = new ArrayList(); + private List files = new ArrayList(); + private Map entries = new HashMap(); + + public WZDirectoryEntry(String name, int size, int checksum, MapleDataEntity parent) { + super(name, size, checksum, parent); + } + + public WZDirectoryEntry() { + super(null, 0, 0, null); + } + + public void addDirectory(MapleDataDirectoryEntry dir) { + subdirs.add(dir); + entries.put(dir.getName(), dir); + } + + public void addFile(MapleDataFileEntry fileEntry) { + files.add(fileEntry); + entries.put(fileEntry.getName(), fileEntry); + } + + public List getSubdirectories() { + return Collections.unmodifiableList(subdirs); + } + + public List getFiles() { + return Collections.unmodifiableList(files); + } + + public MapleDataEntry getEntry(String name) { + return entries.get(name); + } +} diff --git a/src/provider/wz/WZEntry.java b/src/provider/wz/WZEntry.java new file mode 100644 index 0000000000..1e921b2082 --- /dev/null +++ b/src/provider/wz/WZEntry.java @@ -0,0 +1,61 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import provider.MapleDataEntity; +import provider.MapleDataEntry; + +public class WZEntry implements MapleDataEntry { + private String name; + private int size; + private int checksum; + private int offset; + private MapleDataEntity parent; + + public WZEntry(String name, int size, int checksum, MapleDataEntity parent) { + super(); + this.name = name; + this.size = size; + this.checksum = checksum; + this.parent = parent; + } + + public String getName() { + return name; + } + + public int getSize() { + return size; + } + + public int getChecksum() { + return checksum; + } + + public int getOffset() { + return offset; + } + + public MapleDataEntity getParent() { + return parent; + } +} diff --git a/src/provider/wz/WZFile.java b/src/provider/wz/WZFile.java new file mode 100644 index 0000000000..537e1f445d --- /dev/null +++ b/src/provider/wz/WZFile.java @@ -0,0 +1,153 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.RandomAccessFile; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataFileEntry; +import provider.MapleDataProvider; +import tools.data.input.GenericLittleEndianAccessor; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.InputStreamByteStream; +import tools.data.input.LittleEndianAccessor; +import tools.data.input.RandomAccessByteStream; +import tools.data.input.SeekableLittleEndianAccessor; + +public class WZFile implements MapleDataProvider { + static { + ListWZFile.init(); + } + private File wzfile; + private LittleEndianAccessor lea; + private SeekableLittleEndianAccessor slea; + private int headerSize; + private WZDirectoryEntry root; + private boolean provideImages; + private int cOffset; + + public WZFile(File wzfile, boolean provideImages) throws IOException { + this.wzfile = wzfile; + lea = new GenericLittleEndianAccessor(new InputStreamByteStream(new BufferedInputStream(new FileInputStream(wzfile)))); + RandomAccessFile raf = new RandomAccessFile(wzfile, "r"); + slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf)); + root = new WZDirectoryEntry(wzfile.getName(), 0, 0, null); + this.provideImages = provideImages; + load(); + } + + private void load() throws IOException { + lea.readAsciiString(4); + lea.readInt(); + lea.readInt(); + headerSize = lea.readInt(); + lea.readNullTerminatedAsciiString(); + lea.readShort(); + parseDirectory(root); + cOffset = (int) lea.getBytesRead(); + getOffsets(root); + } + + private void getOffsets(MapleDataDirectoryEntry dir) { + for (MapleDataFileEntry file : dir.getFiles()) { + file.setOffset(cOffset); + cOffset += file.getSize(); + } + for (MapleDataDirectoryEntry sdir : dir.getSubdirectories()) { + getOffsets(sdir); + } + } + + private void parseDirectory(WZDirectoryEntry dir) { + int entries = WZTool.readValue(lea); + for (int i = 0; i < entries; i++) { + byte marker = lea.readByte(); + String name = null; + int size, checksum; + switch (marker) { + case 0x02: + name = WZTool.readDecodedStringAtOffsetAndReset(slea, lea.readInt() + this.headerSize + 1); + size = WZTool.readValue(lea); + checksum = WZTool.readValue(lea); + lea.readInt(); //dummy int + dir.addFile(new WZFileEntry(name, size, checksum, dir)); + break; + case 0x03: + case 0x04: + name = WZTool.readDecodedString(lea); + size = WZTool.readValue(lea); + checksum = WZTool.readValue(lea); + lea.readInt(); //dummy int + if (marker == 3) { + dir.addDirectory(new WZDirectoryEntry(name, size, checksum, dir)); + } else { + dir.addFile(new WZFileEntry(name, size, checksum, dir)); + } + break; + default: + } + } + for (MapleDataDirectoryEntry idir : dir.getSubdirectories()) { + parseDirectory((WZDirectoryEntry) idir); + } + } + + public WZIMGFile getImgFile(String path) throws IOException { + String segments[] = path.split("/"); + WZDirectoryEntry dir = root; + for (int x = 0; x < segments.length - 1; x++) { + dir = (WZDirectoryEntry) dir.getEntry(segments[x]); + if (dir == null) { + return null; + } + } + WZFileEntry entry = (WZFileEntry) dir.getEntry(segments[segments.length - 1]); + if (entry == null) { + return null; + } + String fullPath = wzfile.getName().substring(0, wzfile.getName().length() - 3).toLowerCase() + "/" + path; + return new WZIMGFile(this.wzfile, entry, provideImages, ListWZFile.isModernImgFile(fullPath)); + } + + @Override + public synchronized MapleData getData(String path) { + try { + WZIMGFile imgFile = getImgFile(path); + if (imgFile == null) { + return null; + } + MapleData ret = imgFile.getRoot(); + return ret; + } catch (IOException e) { + } + return null; + } + + @Override + public MapleDataDirectoryEntry getRoot() { + return root; + } +} diff --git a/src/provider/wz/WZFileEntry.java b/src/provider/wz/WZFileEntry.java new file mode 100644 index 0000000000..792371d9cf --- /dev/null +++ b/src/provider/wz/WZFileEntry.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import provider.MapleDataEntity; +import provider.MapleDataFileEntry; + +public class WZFileEntry extends WZEntry implements MapleDataFileEntry { + private int offset; + + public WZFileEntry(String name, int size, int checksum, MapleDataEntity parent) { + super(name, size, checksum, parent); + } + + @Override + public int getOffset() { + return offset; + } + + public void setOffset(int offset) { + this.offset = offset; + } +} diff --git a/src/provider/wz/WZIMGEntry.java b/src/provider/wz/WZIMGEntry.java new file mode 100644 index 0000000000..385d785183 --- /dev/null +++ b/src/provider/wz/WZIMGEntry.java @@ -0,0 +1,118 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import provider.MapleData; +import provider.MapleDataEntity; + +public class WZIMGEntry implements MapleData { + private String name; + private MapleDataType type; + private List children = new ArrayList(10); + private Object data; + private MapleDataEntity parent; + + public WZIMGEntry(MapleDataEntity parent) { + this.parent = parent; + } + + @Override + public String getName() { + return name; + } + + @Override + public MapleDataType getType() { + return type; + } + + @Override + public List getChildren() { + return Collections.unmodifiableList(children); + } + + @Override + public MapleData getChildByPath(String path) { + String segments[] = path.split("/"); + if (segments[0].equals("..")) { + return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1)); + } + MapleData ret = this; + for (int x = 0; x < segments.length; x++) { + boolean foundChild = false; + for (MapleData child : ret.getChildren()) { + if (child.getName().equals(segments[x])) { + ret = child; + foundChild = true; + break; + } + } + if (!foundChild) { + return null; + } + } + return ret; + } + + @Override + public Object getData() { + return data; + } + + public void setName(String name) { + this.name = name; + } + + public void setType(MapleDataType type) { + this.type = type; + } + + public void setData(Object data) { + this.data = data; + } + + public void addChild(WZIMGEntry entry) { + children.add(entry); + } + + @Override + public Iterator iterator() { + return getChildren().iterator(); + } + + @Override + public String toString() { + return getName() + ":" + getData(); + } + + public MapleDataEntity getParent() { + return parent; + } + + public void finish() { + ((ArrayList) children).trimToSize(); + } +} diff --git a/src/provider/wz/WZIMGFile.java b/src/provider/wz/WZIMGFile.java new file mode 100644 index 0000000000..a4dd1b7fe8 --- /dev/null +++ b/src/provider/wz/WZIMGFile.java @@ -0,0 +1,227 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.awt.Point; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.io.RandomAccessFile; +import tools.data.input.GenericSeekableLittleEndianAccessor; +import tools.data.input.RandomAccessByteStream; +import tools.data.input.SeekableLittleEndianAccessor; + +public class WZIMGFile { + private WZFileEntry file; + private WZIMGEntry root; + private boolean provideImages; + @SuppressWarnings ("unused") + private boolean modernImg; + + public WZIMGFile(File wzfile, WZFileEntry file, boolean provideImages, boolean modernImg) throws IOException { + RandomAccessFile raf = new RandomAccessFile(wzfile, "r"); + SeekableLittleEndianAccessor slea = new GenericSeekableLittleEndianAccessor(new RandomAccessByteStream(raf)); + slea.seek(file.getOffset()); + this.file = file; + this.provideImages = provideImages; + root = new WZIMGEntry(file.getParent()); + root.setName(file.getName()); + root.setType(MapleDataType.EXTENDED); + this.modernImg = modernImg; + parseExtended(root, slea, 0); + root.finish(); + raf.close(); + } + + protected void dumpImg(OutputStream out, SeekableLittleEndianAccessor slea) throws IOException { + DataOutputStream os = new DataOutputStream(out); + long oldPos = slea.getPosition(); + slea.seek(file.getOffset()); + for (int x = 0; x < file.getSize(); x++) { + os.write(slea.readByte()); + } + slea.seek(oldPos); + } + + public WZIMGEntry getRoot() { + return root; + } + + private void parse(WZIMGEntry entry, SeekableLittleEndianAccessor slea) { + byte marker = slea.readByte(); + switch (marker) { + case 0: { + String name = WZTool.readDecodedString(slea); + entry.setName(name); + break; + } + case 1: { + String name = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt()); + entry.setName(name); + break; + } + default: + System.out.println("Unknown Image identifier: " + marker + " at offset " + (slea.getPosition() - file.getOffset())); + } + marker = slea.readByte(); + switch (marker) { + case 0: + entry.setType(MapleDataType.IMG_0x00); + break; + case 2: + case 11: //??? no idea, since 0.49 + entry.setType(MapleDataType.SHORT); + entry.setData(Short.valueOf(slea.readShort())); + break; + case 3: + entry.setType(MapleDataType.INT); + entry.setData(Integer.valueOf(WZTool.readValue(slea))); + break; + case 4: + entry.setType(MapleDataType.FLOAT); + entry.setData(Float.valueOf(WZTool.readFloatValue(slea))); + break; + case 5: + entry.setType(MapleDataType.DOUBLE); + entry.setData(Double.valueOf(slea.readDouble())); + break; + case 8: + entry.setType(MapleDataType.STRING); + byte iMarker = slea.readByte(); + if (iMarker == 0) { + entry.setData(WZTool.readDecodedString(slea)); + } else if (iMarker == 1) { + entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, slea.readInt() + file.getOffset())); + } else { + System.out.println("Unknown String type " + iMarker); + } + break; + case 9: + entry.setType(MapleDataType.EXTENDED); + long endOfExtendedBlock = slea.readInt(); + endOfExtendedBlock += slea.getPosition(); + parseExtended(entry, slea, endOfExtendedBlock); + break; + default: + System.out.println("Unknown Image type " + marker); + } + } + + private void parseExtended(WZIMGEntry entry, SeekableLittleEndianAccessor slea, long endOfExtendedBlock) { + byte marker = slea.readByte(); + String type; + switch (marker) { + case 0x73: + type = WZTool.readDecodedString(slea); + break; + case 0x1B: + type = WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt()); + break; + default: + throw new RuntimeException("Unknown extended image identifier: " + marker + " at offset " + + (slea.getPosition() - file.getOffset())); + } + if (type.equals("Property")) { + entry.setType(MapleDataType.PROPERTY); + slea.readByte(); + slea.readByte(); + int children = WZTool.readValue(slea); + for (int i = 0; i < children; i++) { + WZIMGEntry cEntry = new WZIMGEntry(entry); + parse(cEntry, slea); + cEntry.finish(); + entry.addChild(cEntry); + } + } else if (type.equals("Canvas")) { + entry.setType(MapleDataType.CANVAS); + slea.readByte(); + marker = slea.readByte(); + if (marker == 0) { + // do nothing + } else if (marker == 1) { + slea.readByte(); + slea.readByte(); + int children = WZTool.readValue(slea); + for (int i = 0; i < children; i++) { + WZIMGEntry child = new WZIMGEntry(entry); + parse(child, slea); + child.finish(); + entry.addChild(child); + } + } else { + System.out.println("Canvas marker != 1 (" + marker + ")"); + } + int width = WZTool.readValue(slea); + int height = WZTool.readValue(slea); + int format = WZTool.readValue(slea); + int format2 = slea.readByte(); + slea.readInt(); + int dataLength = slea.readInt() - 1; + slea.readByte(); + if (provideImages) { + byte[] pngdata = slea.read(dataLength); + entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, pngdata)); + } else { + entry.setData(new PNGMapleCanvas(width, height, dataLength, format + format2, null)); + slea.skip(dataLength); + } + } else if (type.equals("Shape2D#Vector2D")) { + entry.setType(MapleDataType.VECTOR); + int x = WZTool.readValue(slea); + int y = WZTool.readValue(slea); + entry.setData(new Point(x, y)); + } else if (type.equals("Shape2D#Convex2D")) { + int children = WZTool.readValue(slea); + for (int i = 0; i < children; i++) { + WZIMGEntry cEntry = new WZIMGEntry(entry); + parseExtended(cEntry, slea, 0); + cEntry.finish(); + entry.addChild(cEntry); + } + } else if (type.equals("Sound_DX8")) { + entry.setType(MapleDataType.SOUND); + slea.readByte(); + int dataLength = WZTool.readValue(slea); + WZTool.readValue(slea); // no clue what this is + int offset = (int) slea.getPosition(); + entry.setData(new ImgMapleSound(dataLength, offset - file.getOffset())); + slea.seek(endOfExtendedBlock); + } else if (type.equals("UOL")) { + entry.setType(MapleDataType.UOL); + slea.readByte(); + byte uolmarker = slea.readByte(); + switch (uolmarker) { + case 0: + entry.setData(WZTool.readDecodedString(slea)); + break; + case 1: + entry.setData(WZTool.readDecodedStringAtOffsetAndReset(slea, file.getOffset() + slea.readInt())); + break; + default: + System.out.println("Unknown UOL marker: " + uolmarker + " " + entry.getName()); + } + } else { + throw new RuntimeException("Unhandeled extended type: " + type); + } + } +} diff --git a/src/provider/wz/WZTool.java b/src/provider/wz/WZTool.java new file mode 100644 index 0000000000..e1b13c2048 --- /dev/null +++ b/src/provider/wz/WZTool.java @@ -0,0 +1,184 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.SecretKeySpec; +import tools.data.input.LittleEndianAccessor; +import tools.data.input.SeekableLittleEndianAccessor; + +/* + * Ported Code, see WZFile.java for more info + */ +public class WZTool { + private static byte[] encKey; + + static { + byte[] iv = new byte[]{(byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b, + (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b, + (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b, + (byte) 0x4d, (byte) 0x23, (byte) 0xc7, (byte) 0x2b,}; + byte[] key = new byte[]{(byte) 0x13, 0x00, 0x00, 0x00, + (byte) 0x08, 0x00, 0x00, 0x00, + (byte) 0x06, 0x00, 0x00, 0x00, + (byte) 0xB4, 0x00, 0x00, 0x00, + (byte) 0x1B, 0x00, 0x00, 0x00, + (byte) 0x0F, 0x00, 0x00, 0x00, + (byte) 0x33, 0x00, 0x00, 0x00, + (byte) 0x52, 0x00, 0x00, 0x00 + }; + Cipher cipher = null; + SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); + try { + cipher = Cipher.getInstance("AES"); + } catch (NoSuchAlgorithmException e) { + } catch (NoSuchPaddingException e) { + } + try { + cipher.init(Cipher.ENCRYPT_MODE, skeySpec); + } catch (InvalidKeyException e) { + } + encKey = new byte[0xFFFF]; + for (int i = 0; i < (0xFFFF / 16); i++) { + try { + iv = cipher.doFinal(iv); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } + System.arraycopy(iv, 0, encKey, (i * 16), 16); + } + try { + iv = cipher.doFinal(iv); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } + System.arraycopy(iv, 0, encKey, 65520, 15); + } + + public static byte[] readListString(byte[] str) { + for (int i = 0; i < str.length; i++) { + str[i] = (byte) (str[i] ^ encKey[i]); + } + return str; + } + + public static String readDecodedString(LittleEndianAccessor llea) { + int strLength; + byte b = llea.readByte(); + if (b == 0x00) { + return ""; + } + if (b >= 0) { + if (b == 0x7F) { + strLength = llea.readInt(); + } else { + strLength = (int) b; + } + if (strLength < 0) { + return ""; + } + byte str[] = new byte[strLength * 2]; + for (int i = 0; i < strLength * 2; i++) { + str[i] = llea.readByte(); + } + return DecryptUnicodeStr(str); + } else { + if (b == -128) { + strLength = llea.readInt(); + } else { + strLength = -b; + } + if (strLength < 0) { + return ""; + } + byte str[] = new byte[strLength]; + for (int i = 0; i < strLength; i++) { + str[i] = llea.readByte(); + } + return DecryptAsciiStr(str); + } + } + + public static String DecryptAsciiStr(byte[] str) { + byte xorByte = (byte) 0xAA; + for (int i = 0; i < str.length; i++) { + str[i] = (byte) (str[i] ^ xorByte ^ encKey[i]); + xorByte++; + } + return new String(str); + } + + public static String DecryptUnicodeStr(byte[] str) { + int xorByte = 0xAAAA; + char[] charRet = new char[str.length / 2]; + for (int i = 0; i < str.length; i++) { + str[i] = (byte) (str[i] ^ encKey[i]); + } + for (int i = 0; i < (str.length / 2); i++) { + char toXor = (char) ((str[i] << 8) | str[i + 1]); + charRet[i] = (char) (toXor ^ xorByte); + xorByte++; + } + return String.valueOf(charRet); + } + + public static String readDecodedStringAtOffset(SeekableLittleEndianAccessor slea, int offset) { + slea.seek(offset); + return readDecodedString(slea); + } + + public static String readDecodedStringAtOffsetAndReset(SeekableLittleEndianAccessor slea, int offset) { + long pos = 0; + pos = slea.getPosition(); + slea.seek(offset); + String ret = readDecodedString(slea); + slea.seek(pos); + return ret; + } + + public static int readValue(LittleEndianAccessor lea) { + byte b = lea.readByte(); + if (b == -128) { + return lea.readInt(); + } else { + return ((int) b); + } + } + + public static float readFloatValue(LittleEndianAccessor lea) { + byte b = lea.readByte(); + if (b == -128) { + return lea.readFloat(); + } else { + return 0; + } + } +} \ No newline at end of file diff --git a/src/provider/wz/XMLDomMapleData.java b/src/provider/wz/XMLDomMapleData.java new file mode 100644 index 0000000000..438ba5b6e3 --- /dev/null +++ b/src/provider/wz/XMLDomMapleData.java @@ -0,0 +1,204 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package provider.wz; + +import java.awt.Point; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import provider.MapleData; +import provider.MapleDataEntity; +import org.w3c.dom.Document; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +public class XMLDomMapleData implements MapleData { + private Node node; + private File imageDataDir; + + public XMLDomMapleData(FileInputStream fis, File imageDataDir) { + try { + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + Document document = documentBuilder.parse(fis); + this.node = document.getFirstChild(); + } catch (ParserConfigurationException e) { + throw new RuntimeException(e); + } catch (SAXException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + this.imageDataDir = imageDataDir; + } + + private XMLDomMapleData(Node node) { + this.node = node; + } + + @Override + public MapleData getChildByPath(String path) { + String segments[] = path.split("/"); + if (segments[0].equals("..")) { + return ((MapleData) getParent()).getChildByPath(path.substring(path.indexOf("/") + 1)); + } + + Node myNode = node; + for (int x = 0; x < segments.length; x++) { + NodeList childNodes = myNode.getChildNodes(); + boolean foundChild = false; + for (int i = 0; i < childNodes.getLength(); i++) { + Node childNode = childNodes.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE && childNode.getAttributes().getNamedItem("name").getNodeValue().equals(segments[x])) { + myNode = childNode; + foundChild = true; + break; + } + } + if (!foundChild) { + return null; + } + } + XMLDomMapleData ret = new XMLDomMapleData(myNode); + ret.imageDataDir = new File(imageDataDir, getName() + "/" + path).getParentFile(); + return ret; + } + + @Override + public List getChildren() { + List ret = new ArrayList(); + NodeList childNodes = node.getChildNodes(); + for (int i = 0; i < childNodes.getLength(); i++) { + Node childNode = childNodes.item(i); + if (childNode.getNodeType() == Node.ELEMENT_NODE) { + XMLDomMapleData child = new XMLDomMapleData(childNode); + child.imageDataDir = new File(imageDataDir, getName()); + ret.add(child); + } + } + return ret; + } + + @Override + public Object getData() { + NamedNodeMap attributes = node.getAttributes(); + MapleDataType type = getType(); + switch (type) { + case DOUBLE: + case FLOAT: + case INT: + case SHORT: + case STRING: + case UOL: { + String value = attributes.getNamedItem("value").getNodeValue(); + switch (type) { + case DOUBLE: + return Double.valueOf(Double.parseDouble(value)); + case FLOAT: + return Float.valueOf(Float.parseFloat(value)); + case INT: + return Integer.valueOf(Integer.parseInt(value)); + case SHORT: + return Short.valueOf(Short.parseShort(value)); + case STRING: + case UOL: + return value; + default: + break; + } + } + case VECTOR: { + String x = attributes.getNamedItem("x").getNodeValue(); + String y = attributes.getNamedItem("y").getNodeValue(); + return new Point(Integer.parseInt(x), Integer.parseInt(y)); + } + case CANVAS: { + String width = attributes.getNamedItem("width").getNodeValue(); + String height = attributes.getNamedItem("height").getNodeValue(); + return new FileStoredPngMapleCanvas(Integer.parseInt(width), Integer.parseInt(height), new File( + imageDataDir, getName() + ".png")); + } + default: + return null; + } + } + + @Override + public MapleDataType getType() { + String nodeName = node.getNodeName(); + if (nodeName.equals("imgdir")) { + return MapleDataType.PROPERTY; + } else if (nodeName.equals("canvas")) { + return MapleDataType.CANVAS; + } else if (nodeName.equals("convex")) { + return MapleDataType.CONVEX; + } else if (nodeName.equals("sound")) { + return MapleDataType.SOUND; + } else if (nodeName.equals("uol")) { + return MapleDataType.UOL; + } else if (nodeName.equals("double")) { + return MapleDataType.DOUBLE; + } else if (nodeName.equals("float")) { + return MapleDataType.FLOAT; + } else if (nodeName.equals("int")) { + return MapleDataType.INT; + } else if (nodeName.equals("short")) { + return MapleDataType.SHORT; + } else if (nodeName.equals("string")) { + return MapleDataType.STRING; + } else if (nodeName.equals("vector")) { + return MapleDataType.VECTOR; + } else if (nodeName.equals("null")) { + return MapleDataType.IMG_0x00; + } + return null; + } + + @Override + public MapleDataEntity getParent() { + Node parentNode = node.getParentNode(); + if (parentNode.getNodeType() == Node.DOCUMENT_NODE) { + return null; + } + XMLDomMapleData parentData = new XMLDomMapleData(parentNode); + parentData.imageDataDir = imageDataDir.getParentFile(); + return parentData; + } + + @Override + public String getName() { + return node.getAttributes().getNamedItem("name").getNodeValue(); + } + + @Override + public Iterator iterator() { + return getChildren().iterator(); + } +} diff --git a/src/provider/wz/XMLWZFile.java b/src/provider/wz/XMLWZFile.java new file mode 100644 index 0000000000..2a7694fdc9 --- /dev/null +++ b/src/provider/wz/XMLWZFile.java @@ -0,0 +1,85 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package provider.wz; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataProvider; + +public class XMLWZFile implements MapleDataProvider { + private File root; + private WZDirectoryEntry rootForNavigation; + + public XMLWZFile(File fileIn) { + root = fileIn; + rootForNavigation = new WZDirectoryEntry(fileIn.getName(), 0, 0, null); + fillMapleDataEntitys(root, rootForNavigation); + } + + private void fillMapleDataEntitys(File lroot, WZDirectoryEntry wzdir) { + for (File file : lroot.listFiles()) { + String fileName = file.getName(); + if (file.isDirectory() && !fileName.endsWith(".img")) { + WZDirectoryEntry newDir = new WZDirectoryEntry(fileName, 0, 0, wzdir); + wzdir.addDirectory(newDir); + fillMapleDataEntitys(file, newDir); + } else if (fileName.endsWith(".xml")) { + wzdir.addFile(new WZFileEntry(fileName.substring(0, fileName.length() - 4), 0, 0, wzdir)); + } + } + } + + @Override + public MapleData getData(String path) { + File dataFile = new File(root, path + ".xml"); + File imageDataDir = new File(root, path); + if (!dataFile.exists()) { + return null;//bitches + } + FileInputStream fis; + try { + fis = new FileInputStream(dataFile); + } catch (FileNotFoundException e) { + throw new RuntimeException("Datafile " + path + " does not exist in " + root.getAbsolutePath()); + } + final XMLDomMapleData domMapleData; + try { + domMapleData = new XMLDomMapleData(fis, imageDataDir.getParentFile()); + } finally { + try { + fis.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + return domMapleData; + } + + @Override + public MapleDataDirectoryEntry getRoot() { + return rootForNavigation; + } +} diff --git a/src/scripting/AbstractPlayerInteraction.java b/src/scripting/AbstractPlayerInteraction.java new file mode 100644 index 0000000000..05afa10374 --- /dev/null +++ b/src/scripting/AbstractPlayerInteraction.java @@ -0,0 +1,748 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package scripting; + +import java.sql.Connection; +import java.sql.SQLException; +import java.sql.PreparedStatement; +import tools.DatabaseConnection; + +import java.awt.Point; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +import net.server.Server; +import net.server.channel.Channel; +import net.server.guild.MapleGuild; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import scripting.event.EventManager; +import scripting.npc.NPCScriptManager; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.expeditions.MapleExpedition; +import server.expeditions.MapleExpeditionType; +import server.life.MapleLifeFactory; +import server.life.MapleMonster; +import server.life.MobSkill; +import server.life.MobSkillFactory; +import server.maps.MapleMap; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.partyquest.PartyQuest; +import server.partyquest.Pyramid; +import server.quest.MapleQuest; +import tools.MaplePacketCreator; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleQuestStatus; +import client.SkillFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.inventory.ModifyInventory; +import client.inventory.PetDataFactory; +import constants.ItemConstants; +import constants.ServerConstants; + +public class AbstractPlayerInteraction { + + public MapleClient c; + + public AbstractPlayerInteraction(MapleClient c) { + this.c = c; + } + + public MapleClient getClient() { + return c; + } + + public MapleCharacter getPlayer() { + return c.getPlayer(); + } + + public void warp(int map) { + getPlayer().changeMap(getWarpMap(map), getWarpMap(map).getPortal(0)); + } + + public void warp(int map, int portal) { + getPlayer().changeMap(getWarpMap(map), getWarpMap(map).getPortal(portal)); + } + + public void warp(int map, String portal) { + getPlayer().changeMap(getWarpMap(map), getWarpMap(map).getPortal(portal)); + } + + public void warpMap(int map) { + getPlayer().getMap().warpEveryone(map); + } + + public void warpParty(int id) { + for (MapleCharacter mc : getPartyMembers()) { + if (id == 925020100) { + mc.setDojoParty(true); + } + mc.changeMap(getWarpMap(id)); + } + } + + public List getPartyMembers() { + if (getPlayer().getParty() == null) { + return null; + } + List chars = new LinkedList<>(); + for (Channel channel : Server.getInstance().getChannelsFromWorld(getPlayer().getWorld())) { + for (MapleCharacter chr : channel.getPartyMembers(getPlayer().getParty())) { + if (chr != null) { + chars.add(chr); + } + } + } + return chars; + } + + protected MapleMap getWarpMap(int map) { + MapleMap target; + if (getPlayer().getEventInstance() == null) { + target = c.getChannelServer().getMapFactory().getMap(map); + } else { + target = getPlayer().getEventInstance().getMapInstance(map); + } + return target; + } + + public MapleMap getMap(int map) { + return getWarpMap(map); + } + + public EventManager getEventManager(String event) { + return getClient().getChannelServer().getEventSM().getEventManager(event); + } + + public MapleInventory getInventory(MapleInventoryType type) { + return getPlayer().getInventory(type); + } + + public boolean hasItem(int itemid){ + return haveItem(itemid, 1); + } + + public boolean hasItem(int itemid, int quantity){ + return haveItem(itemid, quantity); + } + + public boolean haveItem(int itemid) { + return haveItem(itemid, 1); + } + + public boolean haveItem(int itemid, int quantity) { + return getPlayer().getItemQuantity(itemid, false) >= quantity; + } + + public boolean canHold(int itemid) { + return canHold(itemid, 1); + } + + public boolean canHold(int itemid, int quantity) { + if(haveItem(itemid)) { + if(getPlayer().getItemQuantity(itemid, false) + quantity <= MapleItemInformationProvider.getInstance().getSlotMax(c, itemid)) + return true; + } + + return getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).getNextFreeSlot() > -1; + } + + //---- \/ \/ \/ \/ \/ \/ \/ NOT TESTED \/ \/ \/ \/ \/ \/ \/ \/ \/ ---- + + public final MapleQuestStatus getQuestRecord(final int id) { + return c.getPlayer().getQuestNAdd(MapleQuest.getInstance(id)); + } + + public final MapleQuestStatus getQuestNoRecord(final int id) { + return c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(id)); + } + + //---- /\ /\ /\ /\ /\ /\ /\ NOT TESTED /\ /\ /\ /\ /\ /\ /\ /\ /\ ---- + + public void openNpc(int npcid) { + openNpc(npcid, null); + } + + public void openNpc(int npcid, String script) { + c.removeClickedNPC(); + NPCScriptManager.getInstance().dispose(c); + NPCScriptManager.getInstance().start(c, npcid, script, null); + } + + public void updateQuest(int questid, String data) { + MapleQuestStatus status = c.getPlayer().getQuest(MapleQuest.getInstance(questid)); + status.setStatus(MapleQuestStatus.Status.STARTED); + status.setProgress(0, data);//override old if exists + c.getPlayer().updateQuest(status); + } + + public MapleQuestStatus.Status getQuestStatus(int id) { + return c.getPlayer().getQuest(MapleQuest.getInstance(id)).getStatus(); + } + + public boolean isQuestCompleted(int quest) { + try { + return getQuestStatus(quest) == MapleQuestStatus.Status.COMPLETED; + } catch (NullPointerException e) { + e.printStackTrace(); + return false; + } + } + + public boolean isQuestActive(int quest) { + return isQuestStarted(quest); + } + + public boolean isQuestStarted(int quest) { + try { + return getQuestStatus(quest) == MapleQuestStatus.Status.STARTED; + } catch (NullPointerException e) { + e.printStackTrace(); + return false; + } + } + + public int getQuestProgress(int qid) { + return Integer.parseInt(getPlayer().getQuest(MapleQuest.getInstance(qid)).getProgress().get(0)); + } + + public Item evolvePet(byte slot, int afterId) { + MaplePet evolved = null; + MaplePet target = null; + Item tmp; + + long period = 90; //refreshes expiration date: 90 days + period *= 24; + period *= 60; + period *= 60; + period *= 1000; + + target = getPlayer().getPet(slot); + if(target == null) { + getPlayer().message("Pet could not be evolved..."); + return(null); + } + + tmp = gainItem(afterId, (short)1, false, true, period, target); + getPlayer().unequipPet(target, true, false); + + /* + evolved = MaplePet.loadFromDb(tmp.getItemId(), tmp.getPosition(), tmp.getPetId()); + + evolved = tmp.getPet(); + if(evolved == null) { + getPlayer().message("Pet structure non-existent for " + tmp.getItemId() + "..."); + return(null); + } + else if(tmp.getPetId() == -1) { + getPlayer().message("Pet id -1"); + return(null); + } + + getPlayer().addPet(evolved); + + getPlayer().getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.showPet(c.getPlayer(), evolved, false, false), true); + c.announce(MaplePacketCreator.petStatUpdate(c.getPlayer())); + c.announce(MaplePacketCreator.enableActions()); + getPlayer().startFullnessSchedule(PetDataFactory.getHunger(evolved.getItemId()), evolved, getPlayer().getPetIndex(evolved)); + */ + + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.CASH, target.getPosition(), (short) 1, false); + + return evolved; + } + + public void gainItem(int id, short quantity) { + gainItem(id, quantity, false, true); + } + + public void gainItem(int id, short quantity, boolean show) {//this will fk randomStats equip :P + gainItem(id, quantity, false, show); + } + + public void gainItem(int id, boolean show) { + gainItem(id, (short) 1, false, show); + } + + public void gainItem(int id) { + gainItem(id, (short) 1, false, true); + } + + public Item gainItem(int id, short quantity, boolean randomStats, boolean showMessage) { + return gainItem(id, quantity, randomStats, showMessage, -1); + } + + public Item gainItem(int id, short quantity, boolean randomStats, boolean showMessage, long expires) { + return gainItem(id, quantity, randomStats, showMessage, expires, null); + } + + public Item gainItem(int id, short quantity, boolean randomStats, boolean showMessage, long expires, MaplePet from) { + Item item = null; + MaplePet evolved = null; + int petId = -1; + if (id >= 5000000 && id <= 5000100) { + petId = MaplePet.createPet(id); + + if(from != null) { + evolved = MaplePet.loadFromDb(id, (short) 0, petId); + + Point pos = getPlayer().getPosition(); + pos.y -= 12; + evolved.setPos(pos); + evolved.setFh(getPlayer().getMap().getFootholds().findBelow(evolved.getPos()).getId()); + evolved.setStance(0); + evolved.setSummoned(true); + + evolved.setName(from.getName()); + evolved.setCloseness(from.getCloseness()); + evolved.setFullness(from.getFullness()); + evolved.setLevel(from.getLevel()); + evolved.saveToDb(); + } + + //MapleInventoryManipulator.addById(c, id, (short) 1, null, petId, expires == -1 ? -1 : System.currentTimeMillis() + expires); + } + if (quantity >= 0) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + + if (ii.getInventoryType(id).equals(MapleInventoryType.EQUIP)) { + item = ii.getEquipById(id); + + if(ServerConstants.USE_ENHANCED_CRAFTING == true && c.getPlayer().getCS() == true) + item = MapleItemInformationProvider.getInstance().scrollEquipWithId(item, 2049100, true, c.getPlayer().isGM()); + } else { + item = new Item(id, (short) 0, quantity, petId); + } + + if(expires >= 0) + item.setExpiration(System.currentTimeMillis() + expires); + + item.setPetId(petId); + + if (!MapleInventoryManipulator.checkSpace(c, id, quantity, "")) { + c.getPlayer().dropMessage(1, "Your inventory is full. Please remove an item from your " + ii.getInventoryType(id).name() + " inventory."); + return null; + } + if (ii.getInventoryType(id).equals(MapleInventoryType.EQUIP) && !ItemConstants.isRechargable(item.getItemId())) { + if (randomStats) { + item = ii.randomizeStats((Equip) item); + MapleInventoryManipulator.addFromDrop(c, ii.randomizeStats((Equip) item), false, petId); + } else { + MapleInventoryManipulator.addFromDrop(c, (Equip) item, false, petId); + } + } else { + MapleInventoryManipulator.addFromDrop(c, item, false, petId); + } + } else { + MapleInventoryManipulator.removeById(c, MapleItemInformationProvider.getInstance().getInventoryType(id), id, -quantity, true, false); + } + if (showMessage) { + c.announce(MaplePacketCreator.getShowItemGain(id, quantity, true)); + } + + return item; + } + + public void gainFame(int delta) { + c.getPlayer().addFame(delta); + c.announce(MaplePacketCreator.getShowFameGain(delta)); + } + + public void changeMusic(String songName) { + getPlayer().getMap().broadcastMessage(MaplePacketCreator.musicChange(songName)); + } + + public void playerMessage(int type, String message) { + c.announce(MaplePacketCreator.serverNotice(type, message)); + } + + public void message(String message) { + getPlayer().message(message); + } + + public void mapMessage(int type, String message) { + getPlayer().getMap().broadcastMessage(MaplePacketCreator.serverNotice(type, message)); + } + + public void mapEffect(String path) { + c.announce(MaplePacketCreator.mapEffect(path)); + } + + public void mapSound(String path) { + c.announce(MaplePacketCreator.mapSound(path)); + } + + public void displayAranIntro() { + String intro = ""; + switch (c.getPlayer().getMapId()) { + case 914090010: + intro = "Effect/Direction1.img/aranTutorial/Scene0"; + break; + case 914090011: + intro = "Effect/Direction1.img/aranTutorial/Scene1" + (c.getPlayer().getGender() == 0 ? "0" : "1"); + break; + case 914090012: + intro = "Effect/Direction1.img/aranTutorial/Scene2" + (c.getPlayer().getGender() == 0 ? "0" : "1"); + break; + case 914090013: + intro = "Effect/Direction1.img/aranTutorial/Scene3"; + break; + case 914090100: + intro = "Effect/Direction1.img/aranTutorial/HandedPoleArm" + (c.getPlayer().getGender() == 0 ? "0" : "1"); + break; + case 914090200: + intro = "Effect/Direction1.img/aranTutorial/Maha"; + break; + } + showIntro(intro); + } + + + + public void showIntro(String path) { + c.announce(MaplePacketCreator.showIntro(path)); + } + + public void showInfo(String path) { + c.announce(MaplePacketCreator.showInfo(path)); + c.announce(MaplePacketCreator.enableActions()); + } + + public void guildMessage(int type, String message) { + if (getGuild() != null) { + getGuild().guildMessage(MaplePacketCreator.serverNotice(type, message)); + } + } + + public MapleGuild getGuild() { + try { + return Server.getInstance().getGuild(getPlayer().getGuildId(), getPlayer().getWorld(), null); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public MapleParty getParty() { + return getPlayer().getParty(); + } + + public boolean isLeader() { + if(getParty() == null) + return false; + + return getParty().getLeader().equals(getPlayer().getMPC()); + } + + public void givePartyItems(int id, short quantity, List party) { + for (MapleCharacter chr : party) { + MapleClient cl = chr.getClient(); + if (quantity >= 0) { + MapleInventoryManipulator.addById(cl, id, quantity); + } else { + MapleInventoryManipulator.removeById(cl, MapleItemInformationProvider.getInstance().getInventoryType(id), id, -quantity, true, false); + } + cl.announce(MaplePacketCreator.getShowItemGain(id, quantity, true)); + } + } + + + public void removeHPQItems() { + int[] items = {4001095, 4001096, 4001097, 4001098, 4001099, 4001100, 4001101}; + for (int i = 0; i < items.length; i ++) { + removePartyItems(items[i]); + } + } + + public void removePartyItems(int id) { + if (getParty() == null) { + removeAll(id); + return; + } + for (MaplePartyCharacter chr : getParty().getMembers()) { + if (chr != null && chr.isOnline() && chr.getPlayer().getClient() != null){ + removeAll(id, chr.getPlayer().getClient()); + } + } + } + + public void givePartyExp(int amount, List party) { + for (MapleCharacter chr : party) { + chr.gainExp((amount * chr.getExpRate()), true, true); + } + } + + + public void givePartyExp(String PQ) { + givePartyExp(PQ, true); + } + + + public void givePartyExp(String PQ, boolean instance) { + //1 player = 0% bonus (100) + //2 players = 0% bonus (100) + //3 players = +0% bonus (100) + //4 players = +10% bonus (110) + //5 players = +20% bonus (120) + //6 players = +30% bonus (130) + MapleParty party = getPlayer().getParty(); + int size = party.getMembers().size(); + + if(instance) { + for(MaplePartyCharacter member: party.getMembers()) { + if(member == null || !member.isOnline() || member.getPlayer().getEventInstance() == null){ + size--; + } + } + } + + int bonus = size < 4 ? 100 : 70 + (size * 10); + for (MaplePartyCharacter member : party.getMembers()) { + if(member == null || !member.isOnline()){ + continue; + } + MapleCharacter player = member.getPlayer(); + if(instance && player.getEventInstance() == null){ + continue; // They aren't in the instance, don't give EXP. + } + int base = PartyQuest.getExp(PQ, player.getLevel()); + int exp = base * player.getExpRate(); + exp = exp * bonus / 100; + player.gainExp(exp, true, true); + if(ServerConstants.PQ_BONUS_EXP_MOD > 0 && System.currentTimeMillis() <= ServerConstants.EVENT_END_TIMESTAMP) { + player.gainExp((int) (exp * ServerConstants.PQ_BONUS_EXP_MOD), true, true); + } + } + } + + public void removeFromParty(int id, List party) { + for (MapleCharacter chr : party) { + MapleInventoryType type = MapleItemInformationProvider.getInstance().getInventoryType(id); + MapleInventory iv = chr.getInventory(type); + int possesed = iv.countById(id); + if (possesed > 0) { + MapleInventoryManipulator.removeById(c, MapleItemInformationProvider.getInstance().getInventoryType(id), id, possesed, true, false); + chr.announce(MaplePacketCreator.getShowItemGain(id, (short) -possesed, true)); + } + } + } + + public void removeAll(int id) { + removeAll(id, c); + } + + public void removeAll(int id, MapleClient cl) { + MapleInventoryType invType = MapleItemInformationProvider.getInstance().getInventoryType(id); + int possessed = cl.getPlayer().getInventory(invType).countById(id); + if (possessed > 0) { + MapleInventoryManipulator.removeById(cl, MapleItemInformationProvider.getInstance().getInventoryType(id), id, possessed, true, false); + cl.announce(MaplePacketCreator.getShowItemGain(id, (short) -possessed, true)); + } + + if(invType == MapleInventoryType.EQUIP) { + if(cl.getPlayer().getInventory(MapleInventoryType.EQUIPPED).countById(id) > 0) { + MapleInventoryManipulator.removeById(cl, MapleInventoryType.EQUIPPED, id, 1, true, false); + cl.announce(MaplePacketCreator.getShowItemGain(id, (short) -1, true)); + } + } + } + + public int getMapId() { + return c.getPlayer().getMap().getId(); + } + + public int getPlayerCount(int mapid) { + return c.getChannelServer().getMapFactory().getMap(mapid).getCharacters().size(); + } + + public void showInstruction(String msg, int width, int height) { + c.announce(MaplePacketCreator.sendHint(msg, width, height)); + c.announce(MaplePacketCreator.enableActions()); + } + + public void disableMinimap() { + c.announce(MaplePacketCreator.disableMinimap()); + } + + public void resetMap(int mapid) { + getMap(mapid).resetReactors(); + getMap(mapid).killAllMonsters(); + for (MapleMapObject i : getMap(mapid).getMapObjectsInRange(c.getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM))) { + getMap(mapid).removeMapObject(i); + getMap(mapid).broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, c.getPlayer().getId())); + } + } + + public void sendClock(MapleClient d, int time) { + d.announce(MaplePacketCreator.getClock((int) (time - System.currentTimeMillis()) / 1000)); + } + + public void useItem(int id) { + MapleItemInformationProvider.getInstance().getItemEffect(id).applyTo(c.getPlayer()); + c.announce(MaplePacketCreator.getItemMessage(id));//Useful shet :3 + } + + public void cancelItem(final int id) { + getPlayer().cancelEffect(MapleItemInformationProvider.getInstance().getItemEffect(id), false, -1); + } + + public void teachSkill(int skillid, byte level, byte masterLevel, long expiration) { + getPlayer().changeSkillLevel(SkillFactory.getSkill(skillid), level, masterLevel, expiration); + } + + public void removeEquipFromSlot(short slot) { + Item tempItem = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(slot); + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.EQUIPPED, slot, tempItem.getQuantity(), false, false); + } + + public void gainAndEquip(int itemid, short slot) { + final Item old = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(slot); + if (old != null) { + MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.EQUIPPED, slot, old.getQuantity(), false, false); + } + final Item newItem = MapleItemInformationProvider.getInstance().getEquipById(itemid); + newItem.setPosition(slot); + c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).addFromDB(newItem); + c.announce(MaplePacketCreator.modifyInventory(false, Collections.singletonList(new ModifyInventory(0, newItem)))); + } + + public void spawnMonster(int id, int x, int y) { + MapleMonster monster = MapleLifeFactory.getMonster(id); + monster.setPosition(new Point(x, y)); + getPlayer().getMap().spawnMonster(monster); + } + + public MapleMonster getMonsterLifeFactory(int mid) { + return MapleLifeFactory.getMonster(mid); + } + + public void spawnGuide() { + c.announce(MaplePacketCreator.spawnGuide(true)); + } + + public void removeGuide() { + c.announce(MaplePacketCreator.spawnGuide(false)); + } + + public void displayGuide(int num) { + c.announce(MaplePacketCreator.showInfo("UI/tutorial.img/" + num)); + } + + public void goDojoUp() { + c.announce(MaplePacketCreator.dojoWarpUp()); + } + + public void enableActions() { + c.announce(MaplePacketCreator.enableActions()); + } + + public void showEffect(String effect){ + c.announce(MaplePacketCreator.showEffect(effect)); + } + + public void dojoEnergy() { + c.announce(MaplePacketCreator.getEnergy("energy", getPlayer().getDojoEnergy())); + } + + public void talkGuide(String message) { + c.announce(MaplePacketCreator.talkGuide(message)); + } + + public void guideHint(int hint) { + c.announce(MaplePacketCreator.guideHint(hint)); + } + + public void updateAreaInfo(Short area, String info) { + c.getPlayer().updateAreaInfo(area, info); + c.announce(MaplePacketCreator.enableActions());//idk, nexon does the same :P + } + + public boolean containsAreaInfo(short area, String info) { + return c.getPlayer().containsAreaInfo(area, info); + } + + public MobSkill getMobSkill(int skill, int level) { + return MobSkillFactory.getMobSkill(skill, level); + } + + public void earnTitle(String msg) { + c.announce(MaplePacketCreator.earnTitleMessage(msg)); + } + + public void showInfoText(String msg) { + c.announce(MaplePacketCreator.showInfoText(msg)); + } + + public void openUI(byte ui) { + c.announce(MaplePacketCreator.openUI(ui)); + } + + public void lockUI() { + c.announce(MaplePacketCreator.disableUI(true)); + c.announce(MaplePacketCreator.lockUI(true)); + } + + public void unlockUI() { + c.announce(MaplePacketCreator.disableUI(false)); + c.announce(MaplePacketCreator.lockUI(false)); + } + + public void playSound(String sound) { + getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(sound, 4)); + } + + public void environmentChange(String env, int mode) { + getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(env, mode)); + } + + public Pyramid getPyramid() { + return (Pyramid) getPlayer().getPartyQuest(); + } + + public void createExpedition(MapleExpeditionType type) { + MapleExpedition exped = new MapleExpedition(getPlayer(), type); + getPlayer().getClient().getChannelServer().getExpeditions().add(exped); + } + + public void endExpedition(MapleExpedition exped) { + exped.dispose(true); + getPlayer().getClient().getChannelServer().getExpeditions().remove(exped); + } + + public MapleExpedition getExpedition(MapleExpeditionType type) { + for (MapleExpedition exped : getPlayer().getClient().getChannelServer().getExpeditions()) { + if (exped.getType().equals(type)) { + return exped; + } + } + return null; + } +} diff --git a/src/scripting/AbstractScriptManager.java b/src/scripting/AbstractScriptManager.java new file mode 100644 index 0000000000..85506a2b46 --- /dev/null +++ b/src/scripting/AbstractScriptManager.java @@ -0,0 +1,83 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting; + +import client.MapleClient; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; + +import constants.ServerConstants; +import tools.FilePrinter; + +/** + * + * @author Matze + */ +public abstract class AbstractScriptManager { + + protected ScriptEngine engine; + private ScriptEngineManager sem; + + protected AbstractScriptManager() { + sem = new ScriptEngineManager(); + } + + protected Invocable getInvocable(String path, MapleClient c) { + path = "scripts/" + path; + engine = null; + if (c != null) { + engine = c.getScriptEngine(path); + } + if (engine == null) { + File scriptFile = new File(path); + if (!scriptFile.exists()) { + return null; + } + engine = sem.getEngineByName("javascript"); + if (c != null) { + c.setScriptEngine(path, engine); + } + try (FileReader fr = new FileReader(scriptFile)) { + if (ServerConstants.JAVA_8){ + engine.eval("load('nashorn:mozilla_compat.js');"); + } + engine.eval(fr); + } catch (final ScriptException | IOException t) { + FilePrinter.printError(FilePrinter.INVOCABLE + path.substring(12, path.length()), t, path); + return null; + } + } + + return (Invocable) engine; + } + + protected void resetContext(String path, MapleClient c) { + c.removeScriptEngine("scripts/" + path); + } +} diff --git a/src/scripting/event/EventInstanceManager.java b/src/scripting/event/EventInstanceManager.java new file mode 100644 index 0000000000..f74e938a17 --- /dev/null +++ b/src/scripting/event/EventInstanceManager.java @@ -0,0 +1,325 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package scripting.event; + +import java.io.File; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import javax.script.ScriptException; + +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import provider.MapleDataProviderFactory; +import server.TimerManager; +import server.expeditions.MapleExpedition; +import server.life.MapleMonster; +import server.maps.MapleMap; +import server.maps.MapleMapFactory; +import tools.DatabaseConnection; +import client.MapleCharacter; + +/** + * + * @author Matze + */ +public class EventInstanceManager { + private List chars = new ArrayList<>(); + private List mobs = new LinkedList<>(); + private Map killCount = new HashMap<>(); + private EventManager em; + private MapleMapFactory mapFactory; + private String name; + private Properties props = new Properties(); + private long timeStarted = 0; + private long eventTime = 0; + private MapleExpedition expedition = null; + + public EventInstanceManager(EventManager em, String name) { + this.em = em; + this.name = name; + mapFactory = new MapleMapFactory(MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Map.wz")), MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/String.wz")), (byte) 0, (byte) 1);//Fk this + mapFactory.setChannel(em.getChannelServer().getId()); + } + + public EventManager getEm() { + return em; + } + + public void registerPlayer(MapleCharacter chr) { + if (chr == null || !chr.isLoggedin()){ + return; + } + try { + chars.add(chr); + chr.setEventInstance(this); + em.getIv().invokeFunction("playerEntry", this, chr); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public void startEventTimer(long time) { + timeStarted = System.currentTimeMillis(); + eventTime = time; + } + + public boolean isTimerStarted() { + return eventTime > 0 && timeStarted > 0; + } + + public long getTimeLeft() { + return eventTime - (System.currentTimeMillis() - timeStarted); + } + + public void registerParty(MapleParty party, MapleMap map) { + for (MaplePartyCharacter pc : party.getMembers()) { + MapleCharacter c = map.getCharacterById(pc.getId()); + registerPlayer(c); + } + } + + public void registerExpedition(MapleExpedition exped) { + expedition = exped; + registerPlayer(exped.getLeader()); + } + + public void unregisterPlayer(MapleCharacter chr) { + chars.remove(chr); + chr.setEventInstance(null); + } + + public int getPlayerCount() { + return chars.size(); + } + + public List getPlayers() { + return new ArrayList<>(chars); + } + + public void registerMonster(MapleMonster mob) { + if (!mob.getStats().isFriendly()) { //We cannot register moon bunny + mobs.add(mob); + mob.setEventInstance(this); + } + } + + public void movePlayer(MapleCharacter chr) { + try { + em.getIv().invokeFunction("moveMap", this, chr); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public void monsterKilled(MapleMonster mob) { + mobs.remove(mob); + if (mobs.isEmpty()) { + try { + em.getIv().invokeFunction("allMonstersDead", this); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + } + + public void playerKilled(MapleCharacter chr) { + try { + em.getIv().invokeFunction("playerDead", this, chr); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public boolean revivePlayer(MapleCharacter chr) { + try { + Object b = em.getIv().invokeFunction("playerRevive", this, chr); + if (b instanceof Boolean) { + return (Boolean) b; + } + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + return true; + } + + public void playerDisconnected(MapleCharacter chr) { + try { + em.getIv().invokeFunction("playerDisconnected", this, chr); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + /** + * + * @param chr + * @param mob + */ + public void monsterKilled(MapleCharacter chr, MapleMonster mob) { + try { + Integer kc = killCount.get(chr); + int inc = ((Double) em.getIv().invokeFunction("monsterValue", this, mob.getId())).intValue(); + if (kc == null) { + kc = inc; + } else { + kc += inc; + } + killCount.put(chr, kc); + if (expedition != null){ + expedition.monsterKilled(chr, mob); + } + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public int getKillCount(MapleCharacter chr) { + Integer kc = killCount.get(chr); + if (kc == null) { + return 0; + } else { + return kc; + } + } + + public void dispose() { + try { + em.getIv().invokeFunction("dispose", this); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + chars.clear(); + mobs.clear(); + killCount.clear(); + mapFactory = null; + if (expedition != null) { + em.getChannelServer().getExpeditions().remove(expedition); + } + em.disposeInstance(name); + em = null; + } + + public MapleMapFactory getMapFactory() { + return mapFactory; + } + + public void schedule(final String methodName, long delay) { + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + try { + em.getIv().invokeFunction(methodName, EventInstanceManager.this); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + }, delay); + } + + public String getName() { + return name; + } + + public void saveWinner(MapleCharacter chr) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO eventstats (event, instance, characterid, channel) VALUES (?, ?, ?, ?)")) { + ps.setString(1, em.getName()); + ps.setString(2, getName()); + ps.setInt(3, chr.getId()); + ps.setInt(4, chr.getClient().getChannel()); + ps.executeUpdate(); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + + public MapleMap getMapInstance(int mapId) { + MapleMap map = mapFactory.getMap(mapId); + + if (!mapFactory.isMapLoaded(mapId)) { + if (em.getProperty("shuffleReactors") != null && em.getProperty("shuffleReactors").equals("true")) { + map.shuffleReactors(); + } + } + return map; + } + + public void setProperty(String key, String value) { + props.setProperty(key, value); + } + + public Object setProperty(String key, String value, boolean prev) { + return props.setProperty(key, value); + } + + public String getProperty(String key) { + return props.getProperty(key); + } + + public Properties getProperties(){ + return props; + } + + public void leftParty(MapleCharacter chr) { + try { + em.getIv().invokeFunction("leftParty", this, chr); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public void disbandParty() { + try { + em.getIv().invokeFunction("disbandParty", this); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public void finishPQ() { + try { + em.getIv().invokeFunction("clearPQ", this); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public void removePlayer(MapleCharacter chr) { + try { + em.getIv().invokeFunction("playerExit", this, chr); + } catch (ScriptException | NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public boolean isLeader(MapleCharacter chr) { + return (chr.getParty().getLeader().getId() == chr.getId()); + } +} diff --git a/src/scripting/event/EventManager.java b/src/scripting/event/EventManager.java new file mode 100644 index 0000000000..671db0b503 --- /dev/null +++ b/src/scripting/event/EventManager.java @@ -0,0 +1,201 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package scripting.event; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.ScheduledFuture; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.script.Invocable; +import javax.script.ScriptException; + +import net.server.channel.Channel; +import net.server.world.MapleParty; +import server.TimerManager; +import server.expeditions.MapleExpedition; +import server.maps.MapleMap; +import client.MapleCharacter; + +/** + * + * @author Matze + */ +public class EventManager { + private Invocable iv; + private Channel cserv; + private Map instances = new HashMap(); + private Properties props = new Properties(); + private String name; + private ScheduledFuture schedule = null; + + public EventManager(Channel cserv, Invocable iv, String name) { + this.iv = iv; + this.cserv = cserv; + this.name = name; + } + + public void cancel() { + try { + iv.invokeFunction("cancelSchedule", (Object) null); + } catch (ScriptException ex) { + ex.printStackTrace(); + } catch (NoSuchMethodException ex) { + ex.printStackTrace(); + } + } + + public void schedule(String methodName, long delay) { + schedule(methodName, null, delay); + } + + public void schedule(final String methodName, final EventInstanceManager eim, long delay) { + schedule = TimerManager.getInstance().schedule(new Runnable() { + public void run() { + try { + iv.invokeFunction(methodName, eim); + } catch (ScriptException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } catch (NoSuchMethodException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } + } + }, delay); + } + + public void cancelSchedule() { + schedule.cancel(true); + } + + public ScheduledFuture scheduleAtTimestamp(final String methodName, long timestamp) { + return TimerManager.getInstance().scheduleAtTimestamp(new Runnable() { + public void run() { + try { + iv.invokeFunction(methodName, (Object) null); + } catch (ScriptException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } catch (NoSuchMethodException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } + } + }, timestamp); + } + + public Channel getChannelServer() { + return cserv; + } + + public EventInstanceManager getInstance(String name) { + return instances.get(name); + } + + public Collection getInstances() { + return Collections.unmodifiableCollection(instances.values()); + } + + public EventInstanceManager newInstance(String name) { + EventInstanceManager ret = new EventInstanceManager(this, name); + instances.put(name, ret); + return ret; + } + + public void disposeInstance(String name) { + instances.remove(name); + } + + public Invocable getIv() { + return iv; + } + + public void setProperty(String key, String value) { + props.setProperty(key, value); + } + + public String getProperty(String key) { + return props.getProperty(key); + } + + public void setProperty(String key, int value) { + props.setProperty(key, value + ""); + } + + public int getIntProperty(String key) { + return Integer.parseInt(props.getProperty(key)); + } + + public String getName() { + return name; + } + + //Expedition method: starts an expedition + public void startInstance(MapleExpedition exped) { + try { + EventInstanceManager eim = (EventInstanceManager) (iv.invokeFunction("setup", (Object) null)); + eim.registerExpedition(exped); + exped.start(); + } catch (ScriptException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } catch (NoSuchMethodException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } + } + + //Regular method: player + public void startInstance(MapleCharacter chr) { + try { + EventInstanceManager eim = (EventInstanceManager) (iv.invokeFunction("setup", (Object) null)); + eim.registerPlayer(chr); + } catch (ScriptException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } catch (NoSuchMethodException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } + } + + //PQ method: starts a PQ + public void startInstance(MapleParty party, MapleMap map) { + try { + EventInstanceManager eim = (EventInstanceManager) (iv.invokeFunction("setup", (Object) null)); + eim.registerParty(party, map); + } catch (ScriptException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } catch (NoSuchMethodException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } + } + + //non-PQ method for starting instance + public void startInstance(EventInstanceManager eim, String leader) { + try { + iv.invokeFunction("setup", eim); + eim.setProperty("leader", leader); + } catch (ScriptException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } catch (NoSuchMethodException ex) { + Logger.getLogger(EventManager.class.getName()).log(Level.SEVERE, null, ex); + } + } +} diff --git a/src/scripting/event/EventScriptManager.java b/src/scripting/event/EventScriptManager.java new file mode 100644 index 0000000000..8cc6d63f96 --- /dev/null +++ b/src/scripting/event/EventScriptManager.java @@ -0,0 +1,90 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package scripting.event; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.script.Invocable; +import javax.script.ScriptEngine; + +import net.server.channel.Channel; +import scripting.AbstractScriptManager; + +/** + * + * @author Matze + */ +public class EventScriptManager extends AbstractScriptManager { + private class EventEntry { + public EventEntry(Invocable iv, EventManager em) { + this.iv = iv; + this.em = em; + } + public Invocable iv; + public EventManager em; + } + private Map events = new LinkedHashMap<>(); + + public EventScriptManager(Channel cserv, String[] scripts) { + super(); + for (String script : scripts) { + if (!script.equals("")) { + Invocable iv = getInvocable("event/" + script + ".js", null); + events.put(script, new EventEntry(iv, new EventManager(cserv, iv, script))); + } + } + } + + public EventManager getEventManager(String event) { + EventEntry entry = events.get(event); + if (entry == null) { + return null; + } + return entry.em; + } + + public void init() { + for (EventEntry entry : events.values()) { + try { + ((ScriptEngine) entry.iv).put("em", entry.em); + entry.iv.invokeFunction("init", (Object) null); + } catch (Exception ex) { + Logger.getLogger(EventScriptManager.class.getName()).log(Level.SEVERE, null, ex); + System.out.println("Error on script: " + entry.em.getName()); + } + } + } + + public void reload(){ + cancel(); + init(); + } + + public void cancel() { + for (EventEntry entry : events.values()) { + entry.em.cancel(); + } + } +} \ No newline at end of file diff --git a/src/scripting/item/ItemScriptManager.java b/src/scripting/item/ItemScriptManager.java new file mode 100644 index 0000000000..e24589814e --- /dev/null +++ b/src/scripting/item/ItemScriptManager.java @@ -0,0 +1,98 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting.item; + +import client.MapleClient; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.UndeclaredThrowableException; +import java.util.HashMap; +import java.util.Map; +import javax.script.Compilable; +import javax.script.CompiledScript; +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineFactory; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import tools.FilePrinter; +import tools.MaplePacketCreator; + +public class ItemScriptManager { + + private static ItemScriptManager instance = new ItemScriptManager(); + private Map scripts = new HashMap<>(); + private ScriptEngineFactory sef; + + private ItemScriptManager() { + ScriptEngineManager sem = new ScriptEngineManager(); + sef = sem.getEngineByName("javascript").getFactory(); + } + + public static ItemScriptManager getInstance() { + return instance; + } + + public boolean scriptExists(String scriptName) { + File scriptFile = new File("scripts/item/" + scriptName + ".js"); + return scriptFile.exists(); + } + + public void getItemScript(MapleClient c, String scriptName) { + if (scripts.containsKey(scriptName)) { + try { + scripts.get(scriptName).invokeFunction("start", new ItemScriptMethods(c)); + } catch (ScriptException | NoSuchMethodException ex) { + FilePrinter.printError(FilePrinter.ITEM + scriptName + ".txt", ex); + } + return; + } + File scriptFile = new File("scripts/item/" + scriptName + ".js"); + if (!scriptFile.exists()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + FileReader fr = null; + ScriptEngine portal = sef.getScriptEngine(); + try { + fr = new FileReader(scriptFile); + CompiledScript compiled = ((Compilable) portal).compile(fr); + compiled.eval(); + + final Invocable script = ((Invocable) portal); + scripts.put(scriptName, script); + script.invokeFunction("start", new ItemScriptMethods(c)); + } catch (final UndeclaredThrowableException | ScriptException ute) { + FilePrinter.printError(FilePrinter.ITEM + scriptName + ".txt", ute); + } catch (final Exception e) { + FilePrinter.printError(FilePrinter.ITEM + scriptName + ".txt", e); + } finally { + if (fr != null) { + try { + fr.close(); + } catch (IOException e) { + } + } + } + } +} \ No newline at end of file diff --git a/src/scripting/item/ItemScriptMethods.java b/src/scripting/item/ItemScriptMethods.java new file mode 100644 index 0000000000..206a7105bc --- /dev/null +++ b/src/scripting/item/ItemScriptMethods.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package scripting.item; + +import client.MapleClient; +import scripting.AbstractPlayerInteraction; + +/** + * + * @author kevintjuh93 + */ +public class ItemScriptMethods extends AbstractPlayerInteraction { + public ItemScriptMethods(MapleClient c) { + super(c); + } +} diff --git a/src/scripting/map/MapScriptManager.java b/src/scripting/map/MapScriptManager.java new file mode 100644 index 0000000000..e5b53b35d8 --- /dev/null +++ b/src/scripting/map/MapScriptManager.java @@ -0,0 +1,100 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting.map; + +import client.MapleClient; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.UndeclaredThrowableException; +import java.util.HashMap; +import java.util.Map; +import javax.script.Compilable; +import javax.script.CompiledScript; +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineFactory; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import tools.FilePrinter; + +public class MapScriptManager { + + private static MapScriptManager instance = new MapScriptManager(); + private Map scripts = new HashMap<>(); + private ScriptEngineFactory sef; + + private MapScriptManager() { + ScriptEngineManager sem = new ScriptEngineManager(); + sef = sem.getEngineByName("javascript").getFactory(); + } + + public static MapScriptManager getInstance() { + return instance; + } + + public void reloadScripts() { + scripts.clear(); + } + + public boolean scriptExists(String scriptName, boolean firstUser) { + File scriptFile = new File("scripts/map/" + (firstUser ? "onFirstUserEnter/" : "onUserEnter/") + scriptName + ".js"); + return scriptFile.exists(); + } + + public void getMapScript(MapleClient c, String scriptName, boolean firstUser) { + if (scripts.containsKey(scriptName)) { + try { + scripts.get(scriptName).invokeFunction("start", new MapScriptMethods(c)); + } catch (final ScriptException | NoSuchMethodException e) { + } + return; + } + String type = firstUser ? "onFirstUserEnter/" : "onUserEnter/"; + + File scriptFile = new File("scripts/map/" + type + scriptName + ".js"); + if (!scriptExists(scriptName, firstUser)) { + return; + } + FileReader fr = null; + ScriptEngine portal = sef.getScriptEngine(); + try { + fr = new FileReader(scriptFile); + CompiledScript compiled = ((Compilable) portal).compile(fr); + compiled.eval(); + final Invocable script = ((Invocable) portal); + scripts.put(scriptName, script); + script.invokeFunction("start", new MapScriptMethods(c)); + } catch (final UndeclaredThrowableException | ScriptException ute) { + FilePrinter.printError(FilePrinter.MAP_SCRIPT + type + scriptName + ".txt", ute); + } catch (final Exception e) { + FilePrinter.printError(FilePrinter.MAP_SCRIPT + type + scriptName + ".txt", e); + } finally { + if (fr != null) { + try { + fr.close(); + } catch (IOException e) { + } + } + } + } +} \ No newline at end of file diff --git a/src/scripting/map/MapScriptMethods.java b/src/scripting/map/MapScriptMethods.java new file mode 100644 index 0000000000..d9faa6cb34 --- /dev/null +++ b/src/scripting/map/MapScriptMethods.java @@ -0,0 +1,140 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting.map; + +import client.MapleClient; +import client.MapleQuestStatus; +import scripting.AbstractPlayerInteraction; +import server.quest.MapleQuest; +import tools.MaplePacketCreator; + +public class MapScriptMethods extends AbstractPlayerInteraction { + + private String rewardstring = " title has been rewarded. Please see NPC Dalair to receive your Medal."; + + public MapScriptMethods(MapleClient c) { + super(c); + } + + public void displayAranIntro() { + switch (c.getPlayer().getMapId()) { + case 914090010: + lockUI(); + c.announce(MaplePacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene0")); + break; + case 914090011: + c.announce(MaplePacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene1" + c.getPlayer().getGender())); + break; + case 914090012: + c.announce(MaplePacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene2" + c.getPlayer().getGender())); + break; + case 914090013: + c.announce(MaplePacketCreator.showIntro("Effect/Direction1.img/aranTutorial/Scene3")); + break; + case 914090100: + lockUI(); + c.announce(MaplePacketCreator.showIntro("Effect/Direction1.img/aranTutorial/HandedPoleArm" + c.getPlayer().getGender())); + break; + } + } + + public void startExplorerExperience() { + if (c.getPlayer().getMapId() == 1020100) //Swordman + { + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/swordman/Scene" + c.getPlayer().getGender())); + } else if (c.getPlayer().getMapId() == 1020200) //Magician + { + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/magician/Scene" + c.getPlayer().getGender())); + } else if (c.getPlayer().getMapId() == 1020300) //Archer + { + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/archer/Scene" + c.getPlayer().getGender())); + } else if (c.getPlayer().getMapId() == 1020400) //Rogue + { + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/rogue/Scene" + c.getPlayer().getGender())); + } else if (c.getPlayer().getMapId() == 1020500) //Pirate + { + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/pirate/Scene" + c.getPlayer().getGender())); + } + } + + public void goAdventure() { + lockUI(); + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/goAdventure/Scene" + c.getPlayer().getGender())); + } + + public void goLith() { + lockUI(); + c.announce(MaplePacketCreator.showIntro("Effect/Direction3.img/goLith/Scene" + c.getPlayer().getGender())); + } + + public void explorerQuest(short questid, String questName) { + MapleQuest quest = MapleQuest.getInstance(questid); + if (!isQuestStarted(questid)) { + if (!quest.forceStart(getPlayer(), 9000066)) { + return; + } + } + MapleQuestStatus q = getPlayer().getQuest(quest); + if (!q.addMedalMap(getPlayer().getMapId())) { + return; + } + String status = Integer.toString(q.getMedalProgress()); + String infoex = quest.getInfoEx(); + getPlayer().announce(MaplePacketCreator.updateQuest(q, true)); + StringBuilder smp = new StringBuilder(); + StringBuilder etm = new StringBuilder(); + if (status.equals(infoex)) { + etm.append("Earned the ").append(questName).append(" title!"); + smp.append("You have earned the <").append(questName).append(">").append(rewardstring); + getPlayer().announce(MaplePacketCreator.getShowQuestCompletion(quest.getId())); + } else { + getPlayer().announce(MaplePacketCreator.earnTitleMessage(status + "/" + infoex + " regions explored.")); + etm.append("Trying for the ").append(questName).append(" title."); + smp.append("You made progress on the ").append(questName).append(" title. ").append(status).append("/").append(infoex); + } + getPlayer().announce(MaplePacketCreator.earnTitleMessage(etm.toString())); + showInfoText(smp.toString()); + } + + public void touchTheSky() { //29004 + MapleQuest quest = MapleQuest.getInstance(29004); + if (!isQuestStarted(29004)) { + if (!quest.forceStart(getPlayer(), 9000066)) { + return; + } + } + MapleQuestStatus q = getPlayer().getQuest(quest); + if (!q.addMedalMap(getPlayer().getMapId())) { + return; + } + String status = Integer.toString(q.getMedalProgress()); + getPlayer().announce(MaplePacketCreator.updateQuest(q, true)); + getPlayer().announce(MaplePacketCreator.earnTitleMessage(status + "/5 Completed")); + getPlayer().announce(MaplePacketCreator.earnTitleMessage("The One Who's Touched the Sky title in progress.")); + if (Integer.toString(q.getMedalProgress()).equals(quest.getInfoEx())) { + showInfoText("The One Who's Touched the Sky" + rewardstring); + getPlayer().announce(MaplePacketCreator.getShowQuestCompletion(quest.getId())); + } else { + showInfoText("The One Who's Touched the Sky title in progress. " + status + "/5 Completed"); + } + } +} diff --git a/src/scripting/npc/NPCConversationManager.java b/src/scripting/npc/NPCConversationManager.java new file mode 100644 index 0000000000..c974f37aa9 --- /dev/null +++ b/src/scripting/npc/NPCConversationManager.java @@ -0,0 +1,520 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting.npc; + +import java.io.File; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import net.server.Server; +import net.server.guild.MapleAlliance; +import net.server.guild.MapleGuild; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import provider.MapleData; +import provider.MapleDataProviderFactory; +import scripting.AbstractPlayerInteraction; +import server.MapleItemInformationProvider; +import server.MapleStatEffect; +import server.events.gm.MapleEvent; +import server.gachapon.MapleGachapon; +import server.gachapon.MapleGachapon.MapleGachaponItem; +import server.maps.MapleMap; +import server.maps.MapleMapFactory; +import server.partyquest.Pyramid; +import server.partyquest.Pyramid.PyramidMode; +import server.quest.MapleQuest; +import tools.LogHelper; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.MapleSkinColor; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import constants.ExpTable; +import constants.ServerConstants; + +/** + * + * @author Matze + */ +public class NPCConversationManager extends AbstractPlayerInteraction { + + private int npc; + private String scriptName; + private String getText; + + public NPCConversationManager(MapleClient c, int npc, String scriptName) { + super(c); + this.npc = npc; + this.scriptName = scriptName; + } + + public int getNpc() { + return npc; + } + + public String getScriptName() { + return scriptName; + } + + public void dispose() { + NPCScriptManager.getInstance().dispose(this); + } + + public void sendNext(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", (byte) 0)); + } + + public void sendPrev(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", (byte) 0)); + } + + public void sendNextPrev(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", (byte) 0)); + } + + public void sendOk(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", (byte) 0)); + } + + public void sendYesNo(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 1, text, "", (byte) 0)); + } + + public void sendAcceptDecline(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", (byte) 0)); + } + + public void sendSimple(String text) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 4, text, "", (byte) 0)); + } + + public void sendNext(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 01", speaker)); + } + + public void sendPrev(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 00", speaker)); + } + + public void sendNextPrev(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "01 01", speaker)); + } + + public void sendOk(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0, text, "00 00", speaker)); + } + + public void sendYesNo(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 1, text, "", speaker)); + } + + public void sendAcceptDecline(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 0x0C, text, "", speaker)); + } + + public void sendSimple(String text, byte speaker) { + getClient().announce(MaplePacketCreator.getNPCTalk(npc, (byte) 4, text, "", speaker)); + } + + public void sendStyle(String text, int styles[]) { + getClient().announce(MaplePacketCreator.getNPCTalkStyle(npc, text, styles)); + } + + public void sendGetNumber(String text, int def, int min, int max) { + getClient().announce(MaplePacketCreator.getNPCTalkNum(npc, text, def, min, max)); + } + + public void sendGetText(String text) { + getClient().announce(MaplePacketCreator.getNPCTalkText(npc, text, "")); + } + + /* + * 0 = ariant colliseum + * 1 = Dojo + * 2 = Carnival 1 + * 3 = Carnival 2 + * 4 = Ghost Ship PQ? + * 5 = Pyramid PQ + * 6 = Kerning Subway + */ + public void sendDimensionalMirror(String text) { + getClient().announce(MaplePacketCreator.getDimensionalMirror(text)); + } + + public void setGetText(String text) { + this.getText = text; + } + + public String getText() { + return this.getText; + } + + public int getJobId() { + return getPlayer().getJob().getId(); + } + + public MapleJob getJob(){ + return getPlayer().getJob(); + } + + public void startQuest(short id) { + try { + MapleQuest.getInstance(id).forceStart(getPlayer(), npc); + } catch (NullPointerException ex) { + } + } + + public void completeQuest(short id) { + try { + MapleQuest.getInstance(id).forceComplete(getPlayer(), npc); + } catch (NullPointerException ex) { + } + } + + public void startQuest(int id) { + try { + MapleQuest.getInstance(id).forceStart(getPlayer(), npc); + } catch (NullPointerException ex) { + } + } + + public void completeQuest(int id) { + try { + MapleQuest.getInstance(id).forceComplete(getPlayer(), npc); + } catch (NullPointerException ex) { + } + } + + public int getMeso() { + return getPlayer().getMeso(); + } + + public void gainMeso(int gain) { + if (gain > 0 && ServerConstants.USE_AUTOBAN == true) { + FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " gained " + gain + " mesos from NPC " + npc + "\r\n"); + } + getPlayer().gainMeso(gain, true, false, true); + } + + public void gainExp(int gain) { + getPlayer().gainExp(gain, true, true); + } + + public int getLevel() { + return getPlayer().getLevel(); + } + + public void showEffect(String effect) { + getPlayer().getMap().broadcastMessage(MaplePacketCreator.environmentChange(effect, 3)); + } + + public void setHair(int hair) { + getPlayer().setHair(hair); + getPlayer().updateSingleStat(MapleStat.HAIR, hair); + getPlayer().equipChanged(); + } + + public void setFace(int face) { + getPlayer().setFace(face); + getPlayer().updateSingleStat(MapleStat.FACE, face); + getPlayer().equipChanged(); + } + + public void setSkin(int color) { + getPlayer().setSkinColor(MapleSkinColor.getById(color)); + getPlayer().updateSingleStat(MapleStat.SKIN, color); + getPlayer().equipChanged(); + } + + public int itemQuantity(int itemid) { + return getPlayer().getInventory(MapleItemInformationProvider.getInstance().getInventoryType(itemid)).countById(itemid); + } + + public void displayGuildRanks() { + MapleGuild.displayGuildRanks(getClient(), npc); + } + + @Override + public MapleParty getParty() { + return getPlayer().getParty(); + } + + @Override + public void resetMap(int mapid) { + getClient().getChannelServer().getMapFactory().getMap(mapid).resetReactors(); + } + + public void gainCloseness(int closeness) { + for (MaplePet pet : getPlayer().getPets()) { + if (pet.getCloseness() > 30000) { + pet.setCloseness(30000); + return; + } + pet.gainCloseness(closeness); + while (pet.getCloseness() > ExpTable.getClosenessNeededForLevel(pet.getLevel())) { + pet.setLevel((byte) (pet.getLevel() + 1)); + byte index = getPlayer().getPetIndex(pet); + getClient().announce(MaplePacketCreator.showOwnPetLevelUp(index)); + getPlayer().getMap().broadcastMessage(getPlayer(), MaplePacketCreator.showPetLevelUp(getPlayer(), index)); + } + Item petz = getPlayer().getInventory(MapleInventoryType.CASH).getItem(pet.getPosition()); + getPlayer().forceUpdateItem(petz); + } + } + + public String getName() { + return getPlayer().getName(); + } + + public int getGender() { + return getPlayer().getGender(); + } + + public void changeJobById(int a) { + getPlayer().changeJob(MapleJob.getById(a)); + } + + public void changeJob(MapleJob job){ + getPlayer().changeJob(job); + } + + public MapleJob getJobName(int id) { + return MapleJob.getById(id); + } + + public MapleStatEffect getItemEffect(int itemId) { + return MapleItemInformationProvider.getInstance().getItemEffect(itemId); + } + + public void resetStats() { + getPlayer().resetStats(); + } + + public void maxMastery() { + for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) { + try { + Skill skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName())); + getPlayer().changeSkillLevel(skill, (byte) 0, skill.getMaxLevel(), -1); + } catch (NumberFormatException nfe) { + break; + } catch (NullPointerException npe) { + continue; + } + } + } + + public void doGachapon() { + int[] maps = {100000000, 101000000, 102000000, 103000000, 105040300, 800000000, 809000101, 809000201, 600000000, 120000000}; + + MapleGachaponItem item = MapleGachapon.getInstance().process(npc); + + Item itemGained = gainItem(item.getId(), (short) (item.getId() / 10000 == 200 ? 100 : 1), true, true); // For normal potions, make it give 100. + + sendNext("You have obtained a #b#t" + item.getId() + "##k."); + + String map = c.getChannelServer().getMapFactory().getMap(maps[(getNpc() != 9100117 && getNpc() != 9100109) ? (getNpc() - 9100100) : getNpc() == 9100109 ? 8 : 9]).getMapName(); + + LogHelper.logGacha(getPlayer(), item.getId(), map); + + if (item.getTier() > 0){ //Uncommon and Rare + Server.getInstance().broadcastMessage(MaplePacketCreator.gachaponMessage(itemGained, map, getPlayer())); + } + } + + public void disbandAlliance(MapleClient c, int allianceId) { + PreparedStatement ps = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("DELETE FROM `alliance` WHERE id = ?"); + ps.setInt(1, allianceId); + ps.executeUpdate(); + ps.close(); + Server.getInstance().allianceMessage(c.getPlayer().getGuild().getAllianceId(), MaplePacketCreator.disbandAlliance(allianceId), -1, -1); + Server.getInstance().disbandAlliance(allianceId); + } catch (SQLException sqle) { + sqle.printStackTrace(); + } finally { + try { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + } catch (SQLException ex) { + } + } + } + + public boolean canBeUsedAllianceName(String name) { + if (name.contains(" ") || name.length() > 12) { + return false; + } + try { + ResultSet rs; + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT name FROM alliance WHERE name = ?")) { + ps.setString(1, name); + rs = ps.executeQuery(); + if (rs.next()) { + ps.close(); + rs.close(); + return false; + } + } + rs.close(); + return true; + } catch (SQLException e) { + e.printStackTrace(); + return false; + } + } + + public static MapleAlliance createAlliance(MapleCharacter chr1, MapleCharacter chr2, String name) { + int id; + int guild1 = chr1.getGuildId(); + int guild2 = chr2.getGuildId(); + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO `alliance` (`name`, `guild1`, `guild2`) VALUES (?, ?, ?)", PreparedStatement.RETURN_GENERATED_KEYS)) { + ps.setString(1, name); + ps.setInt(2, guild1); + ps.setInt(3, guild2); + ps.executeUpdate(); + try (ResultSet rs = ps.getGeneratedKeys()) { + rs.next(); + id = rs.getInt(1); + } + } + } catch (SQLException e) { + e.printStackTrace(); + return null; + } + MapleAlliance alliance = new MapleAlliance(name, id, guild1, guild2); + try { + Server.getInstance().setGuildAllianceId(guild1, id); + Server.getInstance().setGuildAllianceId(guild2, id); + chr1.setAllianceRank(1); + chr1.saveGuildStatus(); + chr2.setAllianceRank(2); + chr2.saveGuildStatus(); + Server.getInstance().addAlliance(id, alliance); + Server.getInstance().allianceMessage(id, MaplePacketCreator.makeNewAlliance(alliance, chr1.getClient()), -1, -1); + } catch (Exception e) { + return null; + } + return alliance; + } + + public boolean hasMerchant() { + return getPlayer().hasMerchant(); + } + + public boolean hasMerchantItems() { + try { + if (!ItemFactory.MERCHANT.loadItems(getPlayer().getId(), false).isEmpty()) { + return true; + } + } catch (SQLException e) { + return false; + } + if (getPlayer().getMerchantMeso() == 0) { + return false; + } else { + return true; + } + } + + public void showFredrick() { + c.announce(MaplePacketCreator.getFredrick(getPlayer())); + } + + public int partyMembersInMap() { + int inMap = 0; + for (MapleCharacter char2 : getPlayer().getMap().getCharacters()) { + if (char2.getParty() == getPlayer().getParty()) { + inMap++; + } + } + return inMap; + } + + public MapleEvent getEvent() { + return c.getChannelServer().getEvent(); + } + + public void divideTeams() { + if (getEvent() != null) { + getPlayer().setTeam(getEvent().getLimit() % 2); //muhaha :D + } + } + + public MapleCharacter getMapleCharacter(String player) { + MapleCharacter target = Server.getInstance().getWorld(c.getWorld()).getChannel(c.getChannel()).getPlayerStorage().getCharacterByName(player); + return target; + } + + public void logLeaf(String prize) { + LogHelper.logLeaf(getPlayer(), true, prize); + } + + public boolean createPyramid(String mode, boolean party) {//lol + PyramidMode mod = PyramidMode.valueOf(mode); + + MapleParty partyz = getPlayer().getParty(); + MapleMapFactory mf = c.getChannelServer().getMapFactory(); + + MapleMap map = null; + int mapid = 926010100; + if (party) { + mapid += 10000; + } + mapid += (mod.getMode() * 1000); + + for (byte b = 0; b < 5; b++) {//They cannot warp to the next map before the timer ends (: + map = mf.getMap(mapid + b); + if (map.getCharacters().size() > 0) { + continue; + } else { + break; + } + } + + if (map == null) { + return false; + } + + if (!party) { + partyz = new MapleParty(-1, new MaplePartyCharacter(getPlayer())); + } + Pyramid py = new Pyramid(partyz, mod, map.getId()); + getPlayer().setPartyQuest(py); + py.warp(mapid); + dispose(); + return true; + } +} diff --git a/src/scripting/npc/NPCScriptManager.java b/src/scripting/npc/NPCScriptManager.java new file mode 100644 index 0000000000..afc37735ab --- /dev/null +++ b/src/scripting/npc/NPCScriptManager.java @@ -0,0 +1,141 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package scripting.npc; + +import client.MapleCharacter; +import client.MapleClient; + +import java.lang.reflect.UndeclaredThrowableException; +import java.util.HashMap; +import java.util.Map; + +import javax.script.Invocable; +import javax.script.ScriptException; + +import scripting.AbstractScriptManager; +import server.life.MapleLifeFactory; +import tools.FilePrinter; +import tools.MaplePacketCreator; + +/** + * + * @author Matze + */ +public class NPCScriptManager extends AbstractScriptManager { + + private Map cms = new HashMap<>(); + private Map scripts = new HashMap<>(); + private static NPCScriptManager instance = new NPCScriptManager(); + + public synchronized static NPCScriptManager getInstance() { + return instance; + } + + public void start(MapleClient c, int npc, MapleCharacter chr) { + start(c, npc, null, chr); + } + + public void start(MapleClient c, int npc, String fileName, MapleCharacter chr) { + try { + NPCConversationManager cm = new NPCConversationManager(c, npc, fileName); + if (cms.containsKey(c)) { + dispose(c); + } + if (c.canClickNPC()) { + cms.put(c, cm); + Invocable iv = null; + if (fileName != null) { + iv = getInvocable("npc/world" + c.getWorld() + "/" + fileName + ".js", c); + } + if (iv == null) { + iv = getInvocable("npc/world" + c.getWorld() + "/" + npc + ".js", c); + } + if (iv == null) { + FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + MapleLifeFactory.getNPC(npc).getName() + "(" + npc + ") is not coded.\r\n"); + } + if (iv == null || NPCScriptManager.getInstance() == null) { + dispose(c); + return; + } + engine.put("cm", cm); + scripts.put(c, iv); + c.setClickedNPC(); + try { + iv.invokeFunction("start"); + } catch (final NoSuchMethodException nsme) { + try { + iv.invokeFunction("start", chr); + } catch (final NoSuchMethodException nsma) { + nsma.printStackTrace(); + } + } + } else { + c.announce(MaplePacketCreator.enableActions()); + } + } catch (final UndeclaredThrowableException | ScriptException ute) { + FilePrinter.printError(FilePrinter.NPC + npc + ".txt", ute); + dispose(c); + } catch (final Exception e) { + FilePrinter.printError(FilePrinter.NPC + npc + ".txt", e); + dispose(c); + } + } + + public void action(MapleClient c, byte mode, byte type, int selection) { + Invocable iv = scripts.get(c); + if (iv != null) { + try { + c.setClickedNPC(); + iv.invokeFunction("action", mode, type, selection); + } catch (ScriptException | NoSuchMethodException t) { + if (getCM(c) != null) { + FilePrinter.printError(FilePrinter.NPC + getCM(c).getNpc() + ".txt", t); + } + dispose(c); + } + } + } + + public void dispose(NPCConversationManager cm) { + MapleClient c = cm.getClient(); + c.getPlayer().setCS(false); + cms.remove(c); + scripts.remove(c); + + if(cm.getScriptName() != null) { + resetContext("npc/world" + c.getWorld() + "/" + cm.getScriptName() + ".js", c); + } else { + resetContext("npc/world" + c.getWorld() + "/" + cm.getNpc() + ".js", c); + } + } + + public void dispose(MapleClient c) { + if (cms.get(c) != null) { + dispose(cms.get(c)); + } + } + + public NPCConversationManager getCM(MapleClient c) { + return cms.get(c); + } + +} diff --git a/src/scripting/portal/PortalPlayerInteraction.java b/src/scripting/portal/PortalPlayerInteraction.java new file mode 100644 index 0000000000..53aa15ee24 --- /dev/null +++ b/src/scripting/portal/PortalPlayerInteraction.java @@ -0,0 +1,87 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package scripting.portal; + +import client.MapleClient; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import scripting.AbstractPlayerInteraction; +import server.MaplePortal; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +public class PortalPlayerInteraction extends AbstractPlayerInteraction { + + private MaplePortal portal; + + public PortalPlayerInteraction(MapleClient c, MaplePortal portal) { + super(c); + this.portal = portal; + } + + public MaplePortal getPortal() { + return portal; + } + + public boolean hasLevel30Character() { + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT `level` FROM `characters` WHERE accountid = ?"); + ps.setInt(1, getPlayer().getAccountID()); + rs = ps.executeQuery(); + while (rs.next()) { + if (rs.getInt("level") >= 30) { + ps.close(); + rs.close(); + return true; + } + } + } catch (SQLException sqle) { + sqle.printStackTrace(); + } finally { + try { + if (ps != null && !ps.isClosed()) { + ps.close(); + } + if (rs != null && !rs.isClosed()) { + rs.close(); + } + } catch (SQLException ex) { + } + } + return false; + } + + public void blockPortal() { + c.getPlayer().blockPortal(getPortal().getScriptName()); + } + + public void unblockPortal() { + c.getPlayer().unblockPortal(getPortal().getScriptName()); + } + + public void playPortalSound() { + c.announce(MaplePacketCreator.playPortalSound()); + } +} \ No newline at end of file diff --git a/src/scripting/portal/PortalScript.java b/src/scripting/portal/PortalScript.java new file mode 100644 index 0000000000..b679ef5eb0 --- /dev/null +++ b/src/scripting/portal/PortalScript.java @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package scripting.portal; + +public interface PortalScript { + public boolean enter(PortalPlayerInteraction ppi); +} \ No newline at end of file diff --git a/src/scripting/portal/PortalScriptManager.java b/src/scripting/portal/PortalScriptManager.java new file mode 100644 index 0000000000..bafabf3537 --- /dev/null +++ b/src/scripting/portal/PortalScriptManager.java @@ -0,0 +1,102 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting.portal; + +import client.MapleClient; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.UndeclaredThrowableException; +import java.util.HashMap; +import java.util.Map; +import javax.script.Compilable; +import javax.script.Invocable; +import javax.script.ScriptEngine; +import javax.script.ScriptEngineFactory; +import javax.script.ScriptEngineManager; +import javax.script.ScriptException; +import server.MaplePortal; +import tools.FilePrinter; + +public class PortalScriptManager { + + private static PortalScriptManager instance = new PortalScriptManager(); + private Map scripts = new HashMap<>(); + private ScriptEngineFactory sef; + + private PortalScriptManager() { + ScriptEngineManager sem = new ScriptEngineManager(); + sef = sem.getEngineByName("javascript").getFactory(); + } + + public static PortalScriptManager getInstance() { + return instance; + } + + private PortalScript getPortalScript(String scriptName) { + if (scripts.containsKey(scriptName)) { + return scripts.get(scriptName); + } + File scriptFile = new File("scripts/portal/" + scriptName + ".js"); + if (!scriptFile.exists()) { + scripts.put(scriptName, null); + return null; + } + FileReader fr = null; + ScriptEngine portal = sef.getScriptEngine(); + try { + fr = new FileReader(scriptFile); + ((Compilable) portal).compile(fr).eval(); + } catch (ScriptException | IOException | UndeclaredThrowableException e) { + FilePrinter.printError(FilePrinter.PORTAL + scriptName + ".txt", e); + } finally { + if (fr != null) { + try { + fr.close(); + } catch (IOException e) { + System.out.println("ERROR CLOSING " + e); + } + } + } + PortalScript script = ((Invocable) portal).getInterface(PortalScript.class); + scripts.put(scriptName, script); + return script; + } + + public boolean executePortalScript(MaplePortal portal, MapleClient c) { + try { + PortalScript script = getPortalScript(portal.getScriptName()); + if (script != null) { + return script.enter(new PortalPlayerInteraction(c, portal)); + } + } catch (UndeclaredThrowableException ute) { + FilePrinter.printError(FilePrinter.PORTAL + portal.getScriptName() + ".txt", ute); + } catch (final Exception e) { + FilePrinter.printError(FilePrinter.PORTAL + portal.getScriptName() + ".txt", e); + } + return false; + } + + public void reloadPortalScripts() { + scripts.clear(); + } +} \ No newline at end of file diff --git a/src/scripting/quest/QuestActionManager.java b/src/scripting/quest/QuestActionManager.java new file mode 100644 index 0000000000..d962f42848 --- /dev/null +++ b/src/scripting/quest/QuestActionManager.java @@ -0,0 +1,80 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package scripting.quest; + +import client.MapleClient; +import scripting.npc.NPCConversationManager; +import server.quest.MapleQuest; + +/** + * + * @author RMZero213 + */ +public class QuestActionManager extends NPCConversationManager { + private boolean start; // this is if the script in question is start or end + private int quest; + + public QuestActionManager(MapleClient c, int quest, int npc, boolean start) { + super(c, npc, null); + this.quest = quest; + this.start = start; + } + + public int getQuest() { + return quest; + } + + public boolean isStart() { + return start; + } + + @Override + public void dispose() { + QuestScriptManager.getInstance().dispose(this, getClient()); + } + + public boolean forceStartQuest() { + return forceStartQuest(quest); + } + + public boolean forceStartQuest(int id) { + return MapleQuest.getInstance(id).forceStart(getPlayer(), getNpc()); + } + + public boolean forceCompleteQuest() { + return forceCompleteQuest(quest); + } + + // For compatability with some older scripts... + public void startQuest() { + forceStartQuest(); + } + + // For compatability with some older scripts... + public void completeQuest() { + forceCompleteQuest(); + } + + public boolean forceCompleteQuest(int id) { + return MapleQuest.getInstance(id).forceComplete(getPlayer(), getNpc()); + } +} diff --git a/src/scripting/quest/QuestScriptManager.java b/src/scripting/quest/QuestScriptManager.java new file mode 100644 index 0000000000..a88faa94f6 --- /dev/null +++ b/src/scripting/quest/QuestScriptManager.java @@ -0,0 +1,164 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package scripting.quest; + +import java.lang.reflect.UndeclaredThrowableException; +import java.util.HashMap; +import java.util.Map; + +import javax.script.Invocable; + +import scripting.AbstractScriptManager; +import server.quest.MapleQuest; +import tools.FilePrinter; +import client.MapleClient; +import client.MapleQuestStatus; + +/** + * + * @author RMZero213 + */ +public class QuestScriptManager extends AbstractScriptManager { + private Map qms = new HashMap<>(); + private Map scripts = new HashMap<>(); + private static QuestScriptManager instance = new QuestScriptManager(); + + public synchronized static QuestScriptManager getInstance() { + return instance; + } + + public void start(MapleClient c, short questid, int npc) { + MapleQuest quest = MapleQuest.getInstance(questid); + if (!c.getPlayer().getQuest(quest).getStatus().equals(MapleQuestStatus.Status.NOT_STARTED)) { + dispose(c); + return; + } + try { + QuestActionManager qm = new QuestActionManager(c, questid, npc, true); + if (qms.containsKey(c)) { + return; + } + if(c.canClickNPC()) { + qms.put(c, qm); + Invocable iv = getInvocable("quest/" + questid + ".js", c); + if (iv == null) { + FilePrinter.printError(FilePrinter.QUEST_UNCODED, "Quest " + questid + " is uncoded.\r\n"); + } + if (iv == null || QuestScriptManager.getInstance() == null) { + qm.dispose(); + return; + } + engine.put("qm", qm); + scripts.put(c, iv); + c.setClickedNPC(); + iv.invokeFunction("start", (byte) 1, (byte) 0, 0); + } + } catch (final UndeclaredThrowableException ute) { + FilePrinter.printError(FilePrinter.QUEST + questid + ".txt", ute); + dispose(c); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t); + dispose(c); + } + } + + public void start(MapleClient c, byte mode, byte type, int selection) { + Invocable iv = scripts.get(c); + if (iv != null) { + try { + c.setClickedNPC(); + iv.invokeFunction("start", mode, type, selection); + } catch (final UndeclaredThrowableException ute) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", ute); + dispose(c); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t); + dispose(c); + } + } + } + + public void end(MapleClient c, short questid, int npc) { + MapleQuest quest = MapleQuest.getInstance(questid); + if (!c.getPlayer().getQuest(quest).getStatus().equals(MapleQuestStatus.Status.STARTED) || !c.getPlayer().getMap().containsNPC(npc)) { + dispose(c); + return; + } + try { + QuestActionManager qm = new QuestActionManager(c, questid, npc, false); + if (qms.containsKey(c)) { + return; + } + if(c.canClickNPC()){ + qms.put(c, qm); + Invocable iv = getInvocable("quest/" + questid + ".js", c); + if (iv == null) { + qm.dispose(); + return; + } + engine.put("qm", qm); + scripts.put(c, iv); + c.setClickedNPC(); + iv.invokeFunction("end", (byte) 1, (byte) 0, 0); + } + } catch (final UndeclaredThrowableException ute) { + FilePrinter.printError(FilePrinter.QUEST + questid + ".txt", ute); + dispose(c); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t); + dispose(c); + } + } + + public void end(MapleClient c, byte mode, byte type, int selection) { + Invocable iv = scripts.get(c); + if (iv != null) { + try { + c.setClickedNPC(); + iv.invokeFunction("end", mode, type, selection); + } catch (final UndeclaredThrowableException ute) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", ute); + dispose(c); + } catch (final Throwable t) { + FilePrinter.printError(FilePrinter.QUEST + getQM(c).getQuest() + ".txt", t); + dispose(c); + } + } + } + + public void dispose(QuestActionManager qm, MapleClient c) { + qms.remove(c); + scripts.remove(c); + resetContext("quest/" + qm.getQuest() + ".js", c); + } + + public void dispose(MapleClient c) { + QuestActionManager qm = qms.get(c); + if (qm != null) { + dispose(qm, c); + } + } + + public QuestActionManager getQM(MapleClient c) { + return qms.get(c); + } +} diff --git a/src/scripting/reactor/ReactorActionManager.java b/src/scripting/reactor/ReactorActionManager.java new file mode 100644 index 0000000000..ff953d13f2 --- /dev/null +++ b/src/scripting/reactor/ReactorActionManager.java @@ -0,0 +1,161 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package scripting.reactor; + +import client.MapleClient; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import java.awt.Point; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import scripting.AbstractPlayerInteraction; +import server.MapleItemInformationProvider; +import server.life.MapleLifeFactory; +import server.life.MapleNPC; +import server.maps.MapMonitor; +import server.maps.MapleReactor; +import server.maps.ReactorDropEntry; +import tools.MaplePacketCreator; + +/** + * @author Lerk + */ +public class ReactorActionManager extends AbstractPlayerInteraction { + private MapleReactor reactor; + private MapleClient client; + + public ReactorActionManager(MapleClient c, MapleReactor reactor) { + super(c); + this.reactor = reactor; + this.client = c; + } + + public void dropItems() { + dropItems(false, 0, 0, 0, 0); + } + + public void dropItems(boolean meso, int mesoChance, int minMeso, int maxMeso) { + dropItems(meso, mesoChance, minMeso, maxMeso, 0); + } + + public void dropItems(boolean meso, int mesoChance, int minMeso, int maxMeso, int minItems) { + List chances = getDropChances(); + List items = new LinkedList<>(); + int numItems = 0; + if (meso && Math.random() < (1 / (double) mesoChance)) { + items.add(new ReactorDropEntry(0, mesoChance, -1)); + } + Iterator iter = chances.iterator(); + while (iter.hasNext()) { + ReactorDropEntry d = iter.next(); + if (Math.random() < (1 / (double) d.chance)) { + numItems++; + items.add(d); + } + } + while (items.size() < minItems) { + items.add(new ReactorDropEntry(0, mesoChance, -1)); + numItems++; + } + java.util.Collections.shuffle(items); + final Point dropPos = reactor.getPosition(); + dropPos.x -= (12 * numItems); + for (ReactorDropEntry d : items) { + if (d.itemId == 0) { + int range = maxMeso - minMeso; + int displayDrop = (int) (Math.random() * range) + minMeso; + int mesoDrop = (displayDrop * client.getWorldServer().getMesoRate()); + reactor.getMap().spawnMesoDrop(mesoDrop, dropPos, reactor, client.getPlayer(), false, (byte) 0); + } else { + Item drop; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (ii.getInventoryType(d.itemId) != MapleInventoryType.EQUIP) { + drop = new Item(d.itemId, (short) 0, (short) 1); + } else { + drop = ii.randomizeStats((Equip) ii.getEquipById(d.itemId)); + } + reactor.getMap().spawnItemDrop(reactor, getPlayer(), drop, dropPos, false, false); + } + dropPos.x += 25; + + } + } + + private List getDropChances() { + return ReactorScriptManager.getInstance().getDrops(reactor.getId()); + } + + public void spawnMonster(int id) { + spawnMonster(id, 1, getPosition()); + } + + public void createMapMonitor(int mapId, String portal) { + new MapMonitor(client.getChannelServer().getMapFactory().getMap(mapId), portal); + } + + public void spawnMonster(int id, int qty) { + spawnMonster(id, qty, getPosition()); + } + + public void spawnMonster(int id, int qty, int x, int y) { + spawnMonster(id, qty, new Point(x, y)); + } + + private void spawnMonster(int id, int qty, Point pos) { + for (int i = 0; i < qty; i++) { + reactor.getMap().spawnMonsterOnGroudBelow(MapleLifeFactory.getMonster(id), pos); + } + } + + public Point getPosition() { + Point pos = reactor.getPosition(); + pos.y -= 10; + return pos; + } + + public void spawnNpc(int npcId) { + spawnNpc(npcId, getPosition()); + } + + public void spawnNpc(int npcId, Point pos) { + MapleNPC npc = MapleLifeFactory.getNPC(npcId); + if (npc != null) { + npc.setPosition(pos); + npc.setCy(pos.y); + npc.setRx0(pos.x + 50); + npc.setRx1(pos.x - 50); + npc.setFh(reactor.getMap().getFootholds().findBelow(pos).getId()); + reactor.getMap().addMapObject(npc); + reactor.getMap().broadcastMessage(MaplePacketCreator.spawnNPC(npc)); + } + } + + public MapleReactor getReactor() { + return reactor; + } + + public void spawnFakeMonster(int id) { + reactor.getMap().spawnFakeMonsterOnGroundBelow(MapleLifeFactory.getMonster(id), getPosition()); + } +} \ No newline at end of file diff --git a/src/scripting/reactor/ReactorScriptManager.java b/src/scripting/reactor/ReactorScriptManager.java new file mode 100644 index 0000000000..9ec40e412c --- /dev/null +++ b/src/scripting/reactor/ReactorScriptManager.java @@ -0,0 +1,115 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package scripting.reactor; + +import client.MapleClient; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import javax.script.Invocable; +import javax.script.ScriptException; +import scripting.AbstractScriptManager; +import server.maps.MapleReactor; +import server.maps.ReactorDropEntry; +import tools.DatabaseConnection; +import tools.FilePrinter; + +/** + * @author Lerk + */ +public class ReactorScriptManager extends AbstractScriptManager { + + private static ReactorScriptManager instance = new ReactorScriptManager(); + private Map> drops = new HashMap<>(); + + public synchronized static ReactorScriptManager getInstance() { + return instance; + } + + public void act(MapleClient c, MapleReactor reactor) { + try { + ReactorActionManager rm = new ReactorActionManager(c, reactor); + Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c); + if (iv == null) { + return; + } + engine.put("rm", rm); + iv.invokeFunction("act"); + } catch (final ScriptException | NoSuchMethodException | NullPointerException e) { + FilePrinter.printError(FilePrinter.REACTOR + reactor.getId() + ".txt", e); + } + } + + public List getDrops(int rid) { + List ret = drops.get(rid); + if (ret == null) { + ret = new LinkedList<>(); + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT itemid, chance, questid FROM reactordrops WHERE reactorid = ? AND chance >= 0")) { + ps.setInt(1, rid); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + ret.add(new ReactorDropEntry(rs.getInt("itemid"), rs.getInt("chance"), rs.getInt("questid"))); + } + } + } + } catch (Throwable e) { + FilePrinter.printError(FilePrinter.REACTOR + rid + ".txt", e); + } + drops.put(rid, ret); + } + return ret; + } + + public void clearDrops() { + drops.clear(); + } + + public void touch(MapleClient c, MapleReactor reactor) { + touching(c, reactor, true); + } + + public void untouch(MapleClient c, MapleReactor reactor) { + touching(c, reactor, false); + } + + public void touching(MapleClient c, MapleReactor reactor, boolean touching) { + try { + ReactorActionManager rm = new ReactorActionManager(c, reactor); + Invocable iv = getInvocable("reactor/" + reactor.getId() + ".js", c); + if (iv == null) { + return; + } + engine.put("rm", rm); + if (touching) { + iv.invokeFunction("touch"); + } else { + iv.invokeFunction("untouch"); + } + } catch (final ScriptException | NoSuchMethodException | NullPointerException ute) { + FilePrinter.printError(FilePrinter.REACTOR + reactor.getId() + ".txt", ute); + } + } +} \ No newline at end of file diff --git a/src/server/CashShop.java b/src/server/CashShop.java new file mode 100644 index 0000000000..d5dfc566e2 --- /dev/null +++ b/src/server/CashShop.java @@ -0,0 +1,465 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package server; + +import java.io.File; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import tools.DatabaseConnection; +import tools.Pair; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import constants.ItemConstants; + +/* + * @author Flav + */ +public class CashShop { + public static class CashItem { + + private int sn, itemId, price; + private long period; + private short count; + private boolean onSale; + + private CashItem(int sn, int itemId, int price, long period, short count, boolean onSale) { + this.sn = sn; + this.itemId = itemId; + this.price = price; + this.period = (period == 0 ? 90 : period); + this.count = count; + this.onSale = onSale; + } + + public int getSN() { + return sn; + } + + public int getItemId() { + return itemId; + } + + public int getPrice() { + return price; + } + + public short getCount() { + return count; + } + + public boolean isOnSale() { + return onSale; + } + + public Item toItem() { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Item item; + + int petid = -1; + + if (ItemConstants.isPet(itemId)) + petid = MaplePet.createPet(itemId); + + if (ii.getInventoryType(itemId).equals(MapleInventoryType.EQUIP)) { + item = ii.getEquipById(itemId); + } else { + item = new Item(itemId, (byte) 0, count, petid); + } + + if (ItemConstants.EXPIRING_ITEMS) + if(itemId == 5211048 || itemId == 5360042) { // 4 Hour 2X coupons, the period is 1, but we don't want them to last a day. + item.setExpiration(System.currentTimeMillis() + (1000 * 60 * 60 * 4)); + } else { + item.setExpiration(System.currentTimeMillis() + (1000 * 60 * 60 * 24 * period)); + } + item.setSN(sn); + return item; + } + } + public static class SpecialCashItem { + private int sn, modifier; + private byte info; //? + + public SpecialCashItem(int sn, int modifier, byte info) { + this.sn = sn; + this.modifier = modifier; + this.info = info; + } + + public int getSN() { + return sn; + } + + public int getModifier() { + return modifier; + } + + public byte getInfo() { + return info; + } + } + + public static class CashItemFactory { + + private static final Map items = new HashMap<>(); + private static final Map> packages = new HashMap<>(); + private static final List specialcashitems = new ArrayList<>(); + + static { + MapleDataProvider etc = MapleDataProviderFactory.getDataProvider(new File("wz/Etc.wz")); + + for (MapleData item : etc.getData("Commodity.img").getChildren()) { + int sn = MapleDataTool.getIntConvert("SN", item); + int itemId = MapleDataTool.getIntConvert("ItemId", item); + int price = MapleDataTool.getIntConvert("Price", item, 0); + long period = MapleDataTool.getIntConvert("Period", item, 1); + short count = (short) MapleDataTool.getIntConvert("Count", item, 1); + boolean onSale = MapleDataTool.getIntConvert("OnSale", item, 0) == 1; + items.put(sn, new CashItem(sn, itemId, price, period, count, onSale)); + } + + for (MapleData cashPackage : etc.getData("CashPackage.img").getChildren()) { + List cPackage = new ArrayList<>(); + + for (MapleData item : cashPackage.getChildByPath("SN").getChildren()) { + cPackage.add(Integer.parseInt(item.getData().toString())); + } + + packages.put(Integer.parseInt(cashPackage.getName()), cPackage); + } + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM specialcashitems"); + rs = ps.executeQuery(); + while (rs.next()) { + specialcashitems.add(new SpecialCashItem(rs.getInt("sn"), rs.getInt("modifier"), rs.getByte("info"))); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + if (rs != null) rs.close(); + if (ps != null) ps.close(); + } catch (SQLException ex) { + } + } + } + + public static CashItem getItem(int sn) { + return items.get(sn); + } + + public static List getPackage(int itemId) { + List cashPackage = new ArrayList<>(); + + for (int sn : packages.get(itemId)) { + cashPackage.add(getItem(sn).toItem()); + } + + return cashPackage; + } + + public static boolean isPackage(int itemId) { + return packages.containsKey(itemId); + } + + public static List getSpecialCashItems() { + return specialcashitems; + } + + public static void reloadSpecialCashItems() {//Yay? + specialcashitems.clear(); + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM specialcashitems"); + rs = ps.executeQuery(); + while (rs.next()) { + specialcashitems.add(new SpecialCashItem(rs.getInt("sn"), rs.getInt("modifier"), rs.getByte("info"))); + } + } catch (SQLException ex) { + ex.printStackTrace(); + } finally { + try { + if (rs != null) rs.close(); + if (ps != null) ps.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + } + } + private int accountId, characterId, nxCredit, maplePoint, nxPrepaid; + private boolean opened; + private ItemFactory factory; + private List inventory = new ArrayList<>(); + private List wishList = new ArrayList<>(); + private int notes = 0; + + public CashShop(int accountId, int characterId, int jobType) throws SQLException { + this.accountId = accountId; + this.characterId = characterId; + + if (jobType == 0) { + factory = ItemFactory.CASH_EXPLORER; + } else if (jobType == 1) { + factory = ItemFactory.CASH_CYGNUS; + } else if (jobType == 2) { + factory = ItemFactory.CASH_ARAN; + } + + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = con.prepareStatement("SELECT `nxCredit`, `maplePoint`, `nxPrepaid` FROM `accounts` WHERE `id` = ?"); + ps.setInt(1, accountId); + rs = ps.executeQuery(); + + if (rs.next()) { + this.nxCredit = rs.getInt("nxCredit"); + this.maplePoint = rs.getInt("maplePoint"); + this.nxPrepaid = rs.getInt("nxPrepaid"); + } + + rs.close(); + ps.close(); + + for (Pair item : factory.loadItems(accountId, false)) { + inventory.add(item.getLeft()); + } + + ps = con.prepareStatement("SELECT `sn` FROM `wishlists` WHERE `charid` = ?"); + ps.setInt(1, characterId); + rs = ps.executeQuery(); + + while (rs.next()) { + wishList.add(rs.getInt("sn")); + } + + rs.close(); + ps.close(); + } finally { + if (ps != null) ps.close(); + if (rs != null) rs.close(); + } + } + + public int getCash(int type) { + switch (type) { + case 1: + return nxCredit; + case 2: + return maplePoint; + case 4: + return nxPrepaid; + } + + return 0; + } + + public void gainCash(int type, int cash) { + switch (type) { + case 1: + nxCredit += cash; + break; + case 2: + maplePoint += cash; + break; + case 4: + nxPrepaid += cash; + break; + } + } + + public boolean isOpened() { + return opened; + } + + public void open(boolean b) { + opened = b; + } + + public List getInventory() { + return inventory; + } + + public Item findByCashId(int cashId) { + boolean isRing = false; + Equip equip = null; + for (Item item : inventory) { + if (item.getType() == 1) { + equip = (Equip) item; + isRing = equip.getRingId() > -1; + } + if ((item.getPetId() > -1 ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()) == cashId) { + return item; + } + } + + return null; + } + + public void addToInventory(Item item) { + inventory.add(item); + } + + public void removeFromInventory(Item item) { + inventory.remove(item); + } + + public List getWishList() { + return wishList; + } + + public void clearWishList() { + wishList.clear(); + } + + public void addToWishList(int sn) { + wishList.add(sn); + } + + public void gift(int recipient, String from, String message, int sn) { + gift(recipient, from, message, sn, -1); + } + + public void gift(int recipient, String from, String message, int sn, int ringid) { + PreparedStatement ps = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO `gifts` VALUES (DEFAULT, ?, ?, ?, ?, ?)"); + ps.setInt(1, recipient); + ps.setString(2, from); + ps.setString(3, message); + ps.setInt(4, sn); + ps.setInt(5, ringid); + ps.executeUpdate(); + } catch (SQLException sqle) { + sqle.printStackTrace(); + } finally { + try { + if (ps != null) ps.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + } + + + public List> loadGifts() { + List> gifts = new ArrayList<>(); + Connection con = DatabaseConnection.getConnection(); + + try { + PreparedStatement ps = con.prepareStatement("SELECT * FROM `gifts` WHERE `to` = ?"); + ps.setInt(1, characterId); + ResultSet rs = ps.executeQuery(); + + while (rs.next()) { + notes++; + CashItem cItem = CashItemFactory.getItem(rs.getInt("sn")); + Item item = cItem.toItem(); + Equip equip = null; + item.setGiftFrom(rs.getString("from")); + if (item.getType() == MapleInventoryType.EQUIP.getType()) { + equip = (Equip) item; + equip.setRingId(rs.getInt("ringid")); + gifts.add(new Pair(equip, rs.getString("message"))); + } else + gifts.add(new Pair<>(item, rs.getString("message"))); + + if (CashItemFactory.isPackage(cItem.getItemId())) { //Packages never contains a ring + for (Item packageItem : CashItemFactory.getPackage(cItem.getItemId())) { + packageItem.setGiftFrom(rs.getString("from")); + addToInventory(packageItem); + } + } else { + addToInventory(equip == null ? item : equip); + } + } + + rs.close(); + ps.close(); + ps = con.prepareStatement("DELETE FROM `gifts` WHERE `to` = ?"); + ps.setInt(1, characterId); + ps.executeUpdate(); + ps.close(); + } catch (SQLException sqle) { + sqle.printStackTrace(); + } + + return gifts; + } + + public int getAvailableNotes() { + return notes; + } + + public void decreaseNotes() { + notes--; + } + + public void save(Connection con) throws SQLException { + PreparedStatement ps = con.prepareStatement("UPDATE `accounts` SET `nxCredit` = ?, `maplePoint` = ?, `nxPrepaid` = ? WHERE `id` = ?"); + ps.setInt(1, nxCredit); + ps.setInt(2, maplePoint); + ps.setInt(3, nxPrepaid); + ps.setInt(4, accountId); + ps.executeUpdate(); + ps.close(); + List> itemsWithType = new ArrayList<>(); + + for (Item item : inventory) { + itemsWithType.add(new Pair<>(item, MapleItemInformationProvider.getInstance().getInventoryType(item.getItemId()))); + } + + factory.saveItems(itemsWithType, accountId, con); + ps = con.prepareStatement("DELETE FROM `wishlists` WHERE `charid` = ?"); + ps.setInt(1, characterId); + ps.executeUpdate(); + ps.close(); + ps = con.prepareStatement("INSERT INTO `wishlists` VALUES (DEFAULT, ?, ?)"); + ps.setInt(1, characterId); + + for (int sn : wishList) { + ps.setInt(2, sn); + ps.executeUpdate(); + } + + ps.close(); + } +} diff --git a/src/server/DueyPackages.java b/src/server/DueyPackages.java new file mode 100644 index 0000000000..868c160eae --- /dev/null +++ b/src/server/DueyPackages.java @@ -0,0 +1,80 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import client.inventory.Item; +import java.util.Calendar; + +public class DueyPackages { + private String sender = null; + private Item item = null; + private int mesos = 0; + private int day; + private int month; + private int year; + private int packageId = 0; + + public DueyPackages(int pId, Item item) { + this.item = item; + packageId = pId; + } + + public DueyPackages(int pId) { // Meso only package. + this.packageId = pId; + } + + public String getSender() { + return sender; + } + + public void setSender(String name) { + sender = name; + } + + public Item getItem() { + return item; + } + + public int getMesos() { + return mesos; + } + + public void setMesos(int set) { + mesos = set; + } + + public int getPackageId() { + return packageId; + } + + public long sentTimeInMilliseconds() { + Calendar cal = Calendar.getInstance(); + cal.set(year, month, day); + return cal.getTimeInMillis(); + } + + public void setSentTime(String sentTime) { + day = Integer.parseInt(sentTime.substring(0, 2)); + month = Integer.parseInt(sentTime.substring(3, 5)); + year = Integer.parseInt(sentTime.substring(6, 10)); + } +} diff --git a/src/server/MTSItemInfo.java b/src/server/MTSItemInfo.java new file mode 100644 index 0000000000..c1f45de483 --- /dev/null +++ b/src/server/MTSItemInfo.java @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import client.inventory.Item; +import java.util.Calendar; + +/** + * + * @author Traitor + */ +public class MTSItemInfo { + private int price; + private Item item; + private String seller; + private int id; + private int year, month, day = 1; + + public MTSItemInfo(Item item, int price, int id, int cid, String seller, String date) { + this.item = item; + this.price = price; + this.seller = seller; + this.id = id; + this.year = Integer.parseInt(date.substring(0, 4)); + this.month = Integer.parseInt(date.substring(5, 7)); + this.day = Integer.parseInt(date.substring(8, 10)); + } + + public Item getItem() { + return item; + } + + public int getPrice() { + return price; + } + + public int getTaxes() { + return 100 + price / 10; + } + + public int getID() { + return id; + } + + public long getEndingDate() { + Calendar now = Calendar.getInstance(); + now.set(year, month - 1, day); + return now.getTimeInMillis(); + } + + public String getSeller() { + return seller; + } +} diff --git a/src/server/MakerItemFactory.java b/src/server/MakerItemFactory.java new file mode 100644 index 0000000000..25bea44061 --- /dev/null +++ b/src/server/MakerItemFactory.java @@ -0,0 +1,116 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import tools.DatabaseConnection; +import tools.Pair; + +/** + * + * @author Jay Estrella + */ +public class MakerItemFactory { + private static Map createCache = new HashMap(); + + public static MakerItemCreateEntry getItemCreateEntry(int toCreate) { + if (createCache.get(toCreate) != null) { + return createCache.get(toCreate); + } else { + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT req_level, req_maker_level, req_meso, quantity FROM makercreatedata WHERE itemid = ?"); + ps.setInt(1, toCreate); + ResultSet rs = ps.executeQuery(); + int reqLevel = 0; + int reqMakerLevel = 0; + int cost = 0; + int toGive = 0; + if (rs.next()) { + reqLevel = rs.getInt("req_level"); + reqMakerLevel = rs.getInt("req_maker_level"); + cost = rs.getInt("req_meso"); + toGive = rs.getInt("quantity"); + } + ps.close(); + rs.close(); + MakerItemCreateEntry ret = new MakerItemCreateEntry(cost, reqLevel, reqMakerLevel, toGive); + ps = con.prepareStatement("SELECT req_item, count FROM makerrecipedata WHERE itemid = ?"); + ps.setInt(1, toCreate); + rs = ps.executeQuery(); + while (rs.next()) { + ret.addReqItem(rs.getInt("req_item"), rs.getInt("count")); + } + rs.close(); + ps.close(); + createCache.put(toCreate, ret); + } catch (SQLException sqle) { + } + } + return createCache.get(toCreate); + } + + public static class MakerItemCreateEntry { + private int reqLevel, reqMakerLevel; + private int cost; + private List> reqItems = new ArrayList>(); // itemId / amount + private int toGive; + + private MakerItemCreateEntry(int cost, int reqLevel, int reqMakerLevel, int toGive) { + this.cost = cost; + this.reqLevel = reqLevel; + this.reqMakerLevel = reqMakerLevel; + this.toGive = toGive; + } + + public int getRewardAmount() { + return toGive; + } + + public List> getReqItems() { + return reqItems; + } + + public int getReqLevel() { + return reqLevel; + } + + public int getReqSkillLevel() { + return reqMakerLevel; + } + + public int getCost() { + return cost; + } + + protected void addReqItem(int itemId, int amount) { + reqItems.add(new Pair(itemId, amount)); + } + } +} diff --git a/src/server/MapleInventoryManipulator.java b/src/server/MapleInventoryManipulator.java new file mode 100644 index 0000000000..6f35bd56f5 --- /dev/null +++ b/src/server/MapleInventoryManipulator.java @@ -0,0 +1,535 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server; + +import client.MapleBuffStat; +import client.MapleClient; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.ModifyInventory; +import constants.ItemConstants; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import tools.MaplePacketCreator; + +/** + * + * @author Matze + */ +public class MapleInventoryManipulator { + + public static boolean addById(MapleClient c, int itemId, short quantity) { + return addById(c, itemId, quantity, null, -1, -1); + } + + public static boolean addById(MapleClient c, int itemId, short quantity, long expiration) { + return addById(c, itemId, quantity, null, -1, (byte) 0, expiration); + } + + public static boolean addById(MapleClient c, int itemId, short quantity, String owner, int petid) { + return addById(c, itemId, quantity, owner, petid, -1); + } + + public static boolean addById(MapleClient c, int itemId, short quantity, String owner, int petid, long expiration) { + return addById(c, itemId, quantity, owner, petid, (byte) 0, expiration); + } + + public static boolean addById(MapleClient c, int itemId, short quantity, String owner, int petid, byte flag, long expiration) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + MapleInventoryType type = ii.getInventoryType(itemId); + if (!type.equals(MapleInventoryType.EQUIP)) { + short slotMax = ii.getSlotMax(c, itemId); + List existing = c.getPlayer().getInventory(type).listById(itemId); + if (!ItemConstants.isRechargable(itemId)) { + if (existing.size() > 0) { // first update all existing slots to slotMax + Iterator i = existing.iterator(); + while (quantity > 0) { + if (i.hasNext()) { + Item eItem = (Item) i.next(); + short oldQ = eItem.getQuantity(); + if (oldQ < slotMax && (eItem.getOwner().equals(owner) || owner == null)) { + short newQ = (short) Math.min(oldQ + quantity, slotMax); + quantity -= (newQ - oldQ); + eItem.setQuantity(newQ); + eItem.setExpiration(expiration); + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, eItem)))); + } + } else { + break; + } + } + } + while (quantity > 0 || ItemConstants.isRechargable(itemId)) { + short newQ = (short) Math.min(quantity, slotMax); + if (newQ != 0) { + quantity -= newQ; + Item nItem = new Item(itemId, (short) 0, newQ, petid); + nItem.setFlag(flag); + nItem.setExpiration(expiration); + short newSlot = c.getPlayer().getInventory(type).addItem(nItem); + if (newSlot == -1) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return false; + } + if (owner != null) { + nItem.setOwner(owner); + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + if ((ItemConstants.isRechargable(itemId)) && quantity == 0) { + break; + } + } else { + c.announce(MaplePacketCreator.enableActions()); + return false; + } + } + } else { + Item nItem = new Item(itemId, (short) 0, quantity, petid); + nItem.setFlag(flag); + nItem.setExpiration(expiration); + short newSlot = c.getPlayer().getInventory(type).addItem(nItem); + if (newSlot == -1) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return false; + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + } + } else if (quantity == 1) { + Item nEquip = ii.getEquipById(itemId); + nEquip.setFlag(flag); + nEquip.setExpiration(expiration); + if (owner != null) { + nEquip.setOwner(owner); + } + short newSlot = c.getPlayer().getInventory(type).addItem(nEquip); + if (newSlot == -1) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return false; + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nEquip)))); + } else { + throw new RuntimeException("Trying to create equip with non-one quantity"); + } + return true; + } + + public static boolean addFromDrop(MapleClient c, Item item, boolean show) { + return addFromDrop(c, item, show, -1); + } + + public static boolean addFromDrop(MapleClient c, Item item, boolean show, int petId) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + MapleInventoryType type = ii.getInventoryType(item.getItemId()); + if (ii.isPickupRestricted(item.getItemId()) && c.getPlayer().getItemQuantity(item.getItemId(), true) > 0) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.showItemUnavailable()); + return false; + } + short quantity = item.getQuantity(); + if (!type.equals(MapleInventoryType.EQUIP)) { + short slotMax = ii.getSlotMax(c, item.getItemId()); + List existing = c.getPlayer().getInventory(type).listById(item.getItemId()); + if (!ItemConstants.isRechargable(item.getItemId())) { + if (existing.size() > 0) { // first update all existing slots to slotMax + Iterator i = existing.iterator(); + while (quantity > 0) { + if (i.hasNext()) { + Item eItem = (Item) i.next(); + short oldQ = eItem.getQuantity(); + if (oldQ < slotMax && item.getOwner().equals(eItem.getOwner())) { + short newQ = (short) Math.min(oldQ + quantity, slotMax); + quantity -= (newQ - oldQ); + eItem.setQuantity(newQ); + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, eItem)))); + } + } else { + break; + } + } + } + while (quantity > 0) { + short newQ = (short) Math.min(quantity, slotMax); + quantity -= newQ; + Item nItem = new Item(item.getItemId(), (short) 0, newQ, petId); + nItem.setExpiration(item.getExpiration()); + nItem.setOwner(item.getOwner()); + nItem.setFlag(item.getFlag()); + short newSlot = c.getPlayer().getInventory(type).addItem(nItem); + if (newSlot == -1) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + item.setQuantity((short) (quantity + newQ)); + return false; + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + } + } else { + Item nItem = new Item(item.getItemId(), (short) 0, quantity, petId); + short newSlot = c.getPlayer().getInventory(type).addItem(nItem); + if (newSlot == -1) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return false; + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, nItem)))); + c.announce(MaplePacketCreator.enableActions()); + } + } else if (quantity == 1) { + short newSlot = c.getPlayer().getInventory(type).addItem(item); + if (newSlot == -1) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return false; + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(0, item)))); + } else { + return false; + } + if (show) { + c.announce(MaplePacketCreator.getShowItemGain(item.getItemId(), item.getQuantity())); + } + return true; + } + + public static boolean checkSpace(MapleClient c, int itemid, int quantity, String owner) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + MapleInventoryType type = ii.getInventoryType(itemid); + if (!type.equals(MapleInventoryType.EQUIP)) { + short slotMax = ii.getSlotMax(c, itemid); + List existing = c.getPlayer().getInventory(type).listById(itemid); + if (!ItemConstants.isRechargable(itemid)) { + if (existing.size() > 0) // first update all existing slots to slotMax + { + for (Item eItem : existing) { + short oldQ = eItem.getQuantity(); + if (oldQ < slotMax && owner.equals(eItem.getOwner())) { + short newQ = (short) Math.min(oldQ + quantity, slotMax); + quantity -= (newQ - oldQ); + } + if (quantity <= 0) { + break; + } + } + } + } + final int numSlotsNeeded; + if (slotMax > 0) { + numSlotsNeeded = (int) (Math.ceil(((double) quantity) / slotMax)); + } else if (ItemConstants.isRechargable(itemid)) { + numSlotsNeeded = 1; + } else { + numSlotsNeeded = 1; + } + return !c.getPlayer().getInventory(type).isFull(numSlotsNeeded - 1); + } else { + return !c.getPlayer().getInventory(type).isFull(); + } + } + + public static void removeFromSlot(MapleClient c, MapleInventoryType type, short slot, short quantity, boolean fromDrop) { + removeFromSlot(c, type, slot, quantity, fromDrop, false); + } + + public static void removeFromSlot(MapleClient c, MapleInventoryType type, short slot, short quantity, boolean fromDrop, boolean consume) { + Item item = c.getPlayer().getInventory(type).getItem(slot); + boolean allowZero = consume && ItemConstants.isRechargable(item.getItemId()); + c.getPlayer().getInventory(type).removeItem(slot, quantity, allowZero); + if (item.getQuantity() == 0 && !allowZero) { + c.announce(MaplePacketCreator.modifyInventory(fromDrop, Collections.singletonList(new ModifyInventory(3, item)))); + } else { + c.announce(MaplePacketCreator.modifyInventory(fromDrop, Collections.singletonList(new ModifyInventory(1, item)))); + } + } + + public static void removeById(MapleClient c, MapleInventoryType type, int itemId, int quantity, boolean fromDrop, boolean consume) { + int removeQuantity = quantity; + MapleInventory inv = c.getPlayer().getInventory(type); + int slotLimit = type == MapleInventoryType.EQUIPPED ? 128 : inv.getSlotLimit(); + + for (short i = 0; i <= slotLimit; i++) { + Item item = inv.getItem((short) (type == MapleInventoryType.EQUIPPED ? -i : i)); + if (item != null) { + if (item.getItemId() == itemId || item.getCashId() == itemId) { + if (removeQuantity <= item.getQuantity()) { + removeFromSlot(c, type, item.getPosition(), (short) removeQuantity, fromDrop, consume); + removeQuantity = 0; + break; + } else { + removeQuantity -= item.getQuantity(); + removeFromSlot(c, type, item.getPosition(), item.getQuantity(), fromDrop, consume); + } + } + } + } + if (removeQuantity > 0) { + throw new RuntimeException("[HACK] Not enough items available of Item:" + itemId + ", Quantity (After Quantity/Over Current Quantity): " + (quantity - removeQuantity) + "/" + quantity); + } +} + + public static void move(MapleClient c, MapleInventoryType type, short src, short dst) { + if (src < 0 || dst < 0) { + return; + } + if(dst > c.getPlayer().getInventory(type).getSlotLimit()) { + return; + } + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Item source = c.getPlayer().getInventory(type).getItem(src); + Item initialTarget = c.getPlayer().getInventory(type).getItem(dst); + if (source == null) { + return; + } + short olddstQ = -1; + if (initialTarget != null) { + olddstQ = initialTarget.getQuantity(); + } + short oldsrcQ = source.getQuantity(); + short slotMax = ii.getSlotMax(c, source.getItemId()); + c.getPlayer().getInventory(type).move(src, dst, slotMax); + final List mods = new ArrayList<>(); + if (!type.equals(MapleInventoryType.EQUIP) && initialTarget != null && initialTarget.getItemId() == source.getItemId() && !ItemConstants.isRechargable(source.getItemId())) { + if ((olddstQ + oldsrcQ) > slotMax) { + mods.add(new ModifyInventory(1, source)); + mods.add(new ModifyInventory(1, initialTarget)); + } else { + mods.add(new ModifyInventory(3, source)); + mods.add(new ModifyInventory(1, initialTarget)); + } + } else { + mods.add(new ModifyInventory(2, source, src)); + } + c.announce(MaplePacketCreator.modifyInventory(true, mods)); + } + + public static void equip(MapleClient c, short src, short dst) { + Equip source = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem(src); + if (source == null || !MapleItemInformationProvider.getInstance().canWearEquipment(c.getPlayer(), source, dst)) { + c.announce(MaplePacketCreator.enableActions()); + return; + } else if ((((source.getItemId() >= 1902000 && source.getItemId() <= 1902002) || source.getItemId() == 1912000) && c.getPlayer().isCygnus()) || ((source.getItemId() >= 1902005 && source.getItemId() <= 1902007) || source.getItemId() == 1912005) && !c.getPlayer().isCygnus()) {// Adventurer taming equipment + return; + } + boolean itemChanged = false; + if (MapleItemInformationProvider.getInstance().isUntradeableOnEquip(source.getItemId())) { + source.setFlag((byte) ItemConstants.UNTRADEABLE); + itemChanged = true; + } + if (source.getRingId() > -1) { + c.getPlayer().getRingById(source.getRingId()).equip(); + } + if (dst == -6) { // unequip the overall + Item top = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem((short) -5); + if (top != null && isOverall(top.getItemId())) { + if (c.getPlayer().getInventory(MapleInventoryType.EQUIP).isFull()) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return; + } + unequip(c, (byte) -5, c.getPlayer().getInventory(MapleInventoryType.EQUIP).getNextFreeSlot()); + } + } else if (dst == -5) { + final Item bottom = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem((short) -6); + if (bottom != null && isOverall(source.getItemId())) { + if (c.getPlayer().getInventory(MapleInventoryType.EQUIP).isFull()) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return; + } + unequip(c, (byte) -6, c.getPlayer().getInventory(MapleInventoryType.EQUIP).getNextFreeSlot()); + } + } else if (dst == -10) {// check if weapon is two-handed + Item weapon = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem((short) -11); + if (weapon != null && MapleItemInformationProvider.getInstance().isTwoHanded(weapon.getItemId())) { + if (c.getPlayer().getInventory(MapleInventoryType.EQUIP).isFull()) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return; + } + unequip(c, (byte) -11, c.getPlayer().getInventory(MapleInventoryType.EQUIP).getNextFreeSlot()); + } + } else if (dst == -11) { + Item shield = c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem((short) -10); + if (shield != null && MapleItemInformationProvider.getInstance().isTwoHanded(source.getItemId())) { + if (c.getPlayer().getInventory(MapleInventoryType.EQUIP).isFull()) { + c.announce(MaplePacketCreator.getInventoryFull()); + c.announce(MaplePacketCreator.getShowInventoryFull()); + return; + } + unequip(c, (byte) -10, c.getPlayer().getInventory(MapleInventoryType.EQUIP).getNextFreeSlot()); + } + } + if (dst == -18) { + if (c.getPlayer().getMount() != null) { + c.getPlayer().getMount().setItemId(source.getItemId()); + } + } + if (source.getItemId() == 1122017) { + c.getPlayer().equipPendantOfSpirit(); + } + //1112413, 1112414, 1112405 (Lilin's Ring) + source = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem(src); + Equip target = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(dst); + c.getPlayer().getInventory(MapleInventoryType.EQUIP).removeSlot(src); + if (target != null) { + c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).removeSlot(dst); + } + + final List mods = new ArrayList<>(); + if (itemChanged) { + mods.add(new ModifyInventory(3, source)); + mods.add(new ModifyInventory(0, source.copy()));//to prevent crashes + } + + source.setPosition(dst); + c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).addFromDB(source); + if (target != null) { + target.setPosition(src); + c.getPlayer().getInventory(MapleInventoryType.EQUIP).addFromDB(target); + } + if (c.getPlayer().getBuffedValue(MapleBuffStat.BOOSTER) != null && isWeapon(source.getItemId())) { + c.getPlayer().cancelBuffStats(MapleBuffStat.BOOSTER); + } + + mods.add(new ModifyInventory(2, source, src)); + c.announce(MaplePacketCreator.modifyInventory(true, mods)); + c.getPlayer().equipChanged(); + } + + public static void unequip(MapleClient c, short src, short dst) { + Equip source = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).getItem(src); + Equip target = (Equip) c.getPlayer().getInventory(MapleInventoryType.EQUIP).getItem(dst); + if (dst < 0) { + return; + } + if (source == null) { + return; + } + if (target != null && src <= 0) { + c.announce(MaplePacketCreator.getInventoryFull()); + return; + } + if (source.getItemId() == 1122017) { + c.getPlayer().unequipPendantOfSpirit(); + } + if (source.getRingId() > -1) { + c.getPlayer().getRingById(source.getRingId()).unequip(); + } + c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).removeSlot(src); + if (target != null) { + c.getPlayer().getInventory(MapleInventoryType.EQUIP).removeSlot(dst); + } + source.setPosition(dst); + c.getPlayer().getInventory(MapleInventoryType.EQUIP).addFromDB(source); + if (target != null) { + target.setPosition(src); + c.getPlayer().getInventory(MapleInventoryType.EQUIPPED).addFromDB(target); + } + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(2, source, src)))); + c.getPlayer().equipChanged(); + } + + public static void drop(MapleClient c, MapleInventoryType type, short src, short quantity) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (src < 0) { + type = MapleInventoryType.EQUIPPED; + } + Item source = c.getPlayer().getInventory(type).getItem(src); + + if (c.getPlayer().getTrade() != null || c.getPlayer().getMiniGame() != null || source == null) { //Only check needed would prob be merchants (to see if the player is in one) + return; + } + int itemId = source.getItemId(); + if (itemId >= 5000000 && itemId <= 5000100) { + return; + } + if (type == MapleInventoryType.EQUIPPED && itemId == 1122017) { + c.getPlayer().unequipPendantOfSpirit(); + } + if (c.getPlayer().getItemEffect() == itemId && source.getQuantity() == 1) { + c.getPlayer().setItemEffect(0); + c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.itemEffect(c.getPlayer().getId(), 0)); + } else if (itemId == 5370000 || itemId == 5370001) { + if (c.getPlayer().getItemQuantity(itemId, false) == 1) { + c.getPlayer().setChalkboard(null); + } + } + if ((!ItemConstants.isRechargable(itemId) && c.getPlayer().getItemQuantity(itemId, true) < quantity) || quantity < 0 || source == null) { + return; + } + Point dropPos = new Point(c.getPlayer().getPosition()); + if (quantity < source.getQuantity() && !ItemConstants.isRechargable(itemId)) { + Item target = source.copy(); + target.setQuantity(quantity); + source.setQuantity((short) (source.getQuantity() - quantity)); + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(1, source)))); + boolean weddingRing = source.getItemId() == 1112803 || source.getItemId() == 1112806 || source.getItemId() == 1112807 || source.getItemId() == 1112809; + if (weddingRing) { + c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos); + } else if (c.getPlayer().getMap().getEverlast()) { + if (ii.isDropRestricted(target.getItemId()) || MapleItemInformationProvider.getInstance().isCash(target.getItemId())) { + c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos); + } else { + c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos, true, false); + } + } else if (ii.isDropRestricted(target.getItemId()) || MapleItemInformationProvider.getInstance().isCash(target.getItemId())) { + c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos); + } else { + c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), target, dropPos, true, true); + } + } else { + c.getPlayer().getInventory(type).removeSlot(src); + c.announce(MaplePacketCreator.modifyInventory(true, Collections.singletonList(new ModifyInventory(3, source)))); + if (src < 0) { + c.getPlayer().equipChanged(); + } + if (c.getPlayer().getMap().getEverlast()) { + if (ii.isDropRestricted(itemId) || ii.isCash(itemId)) { + c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos); + } else { + c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos, true, false); + } + } else if (ii.isDropRestricted(itemId) || ii.isCash(itemId)) { + c.getPlayer().getMap().disappearingItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos); + } else { + c.getPlayer().getMap().spawnItemDrop(c.getPlayer(), c.getPlayer(), source, dropPos, true, true); + } + } + } + + private static boolean isOverall(int itemId) { + return itemId / 10000 == 105; + } + + private static boolean isWeapon(int itemId) { + return itemId >= 1302000 && itemId < 1492024; + } +} diff --git a/src/server/MapleItemInformationProvider.java b/src/server/MapleItemInformationProvider.java new file mode 100644 index 0000000000..ab7a84dadd --- /dev/null +++ b/src/server/MapleItemInformationProvider.java @@ -0,0 +1,1498 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server; + +import java.io.File; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import net.server.Server; +import provider.MapleData; +import provider.MapleDataDirectoryEntry; +import provider.MapleDataFileEntry; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import tools.DatabaseConnection; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.SkillFactory; +import client.autoban.AutobanFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.MapleWeaponType; +import constants.ServerConstants; +import constants.EquipSlot; +import constants.ItemConstants; +import constants.skills.Assassin; +import constants.skills.Gunslinger; +import constants.skills.NightWalker; + +/** + * + * @author Matze + * + */ +public class MapleItemInformationProvider { + + private static MapleItemInformationProvider instance = null; + protected MapleDataProvider itemData; + protected MapleDataProvider equipData; + protected MapleDataProvider stringData; + protected MapleData cashStringData; + protected MapleData consumeStringData; + protected MapleData eqpStringData; + protected MapleData etcStringData; + protected MapleData insStringData; + protected MapleData petStringData; + protected Map slotMaxCache = new HashMap<>(); + protected Map itemEffects = new HashMap<>(); + protected Map> equipStatsCache = new HashMap<>(); + protected Map equipCache = new HashMap<>(); + protected Map priceCache = new HashMap<>(); + protected Map wholePriceCache = new HashMap<>(); + protected Map projectileWatkCache = new HashMap<>(); + protected Map nameCache = new HashMap<>(); + protected Map descCache = new HashMap<>(); + protected Map msgCache = new HashMap<>(); + protected Map dropRestrictionCache = new HashMap<>(); + protected Map pickupRestrictionCache = new HashMap<>(); + protected Map getMesoCache = new HashMap<>(); + protected Map monsterBookID = new HashMap<>(); + protected Map onEquipUntradableCache = new HashMap<>(); + protected Map scriptedItemCache = new HashMap<>(); + protected Map karmaCache = new HashMap<>(); + protected Map triggerItemCache = new HashMap<>(); + protected Map expCache = new HashMap<>(); + protected Map levelCache = new HashMap<>(); + protected Map>> rewardCache = new HashMap<>(); + protected List> itemNameCache = new ArrayList<>(); + protected Map consumeOnPickupCache = new HashMap<>(); + protected Map isQuestItemCache = new HashMap<>(); + protected Map equipmentSlotCache = new HashMap<>(); + + private MapleItemInformationProvider() { + loadCardIdData(); + itemData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Item.wz")); + equipData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Character.wz")); + stringData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/String.wz")); + cashStringData = stringData.getData("Cash.img"); + consumeStringData = stringData.getData("Consume.img"); + eqpStringData = stringData.getData("Eqp.img"); + etcStringData = stringData.getData("Etc.img"); + insStringData = stringData.getData("Ins.img"); + petStringData = stringData.getData("Pet.img"); + } + + public static MapleItemInformationProvider getInstance() { + if (instance == null) { + instance = new MapleItemInformationProvider(); + } + return instance; + } + + public MapleInventoryType getInventoryType(int itemId) { + final byte type = (byte) (itemId / 1000000); + if (type < 1 || type > 5) { + return MapleInventoryType.UNDEFINED; + } + return MapleInventoryType.getByType(type); +// if (inventoryTypeCache.containsKey(itemId)) { +// return inventoryTypeCache.get(itemId); +// } +// MapleInventoryType ret; +// String idStr = "0" + String.valueOf(itemId); +// MapleDataDirectoryEntry root = itemData.getRoot(); +// for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) { +// for (MapleDataFileEntry iFile : topDir.getFiles()) { +// if (iFile.getName().equals(idStr.substring(0, 4) + ".img")) { +// ret = MapleInventoryType.getByWZName(topDir.getName()); +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } else if (iFile.getName().equals(idStr.substring(1) + ".img")) { +// ret = MapleInventoryType.getByWZName(topDir.getName()); +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } +// } +// } +// root = equipData.getRoot(); +// for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) { +// for (MapleDataFileEntry iFile : topDir.getFiles()) { +// if (iFile.getName().equals(idStr + ".img")) { +// ret = MapleInventoryType.EQUIP; +// inventoryTypeCache.put(itemId, ret); +// return ret; +// } +// } +// } +// ret = MapleInventoryType.UNDEFINED; +// inventoryTypeCache.put(itemId, ret); +// return ret; + } + + public List> getAllItems() { + if (!itemNameCache.isEmpty()) { + return itemNameCache; + } + List> itemPairs = new ArrayList<>(); + MapleData itemsData; + itemsData = stringData.getData("Cash.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Consume.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Eqp.img").getChildByPath("Eqp"); + for (MapleData eqpType : itemsData.getChildren()) { + for (MapleData itemFolder : eqpType.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + } + itemsData = stringData.getData("Etc.img").getChildByPath("Etc"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Ins.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + itemsData = stringData.getData("Pet.img"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + return itemPairs; + } + + public List> getAllEtcItems() { + if (!itemNameCache.isEmpty()) { + return itemNameCache; + } + + List> itemPairs = new ArrayList<>(); + MapleData itemsData; + + itemsData = stringData.getData("Etc.img").getChildByPath("Etc"); + for (MapleData itemFolder : itemsData.getChildren()) { + itemPairs.add(new Pair<>(Integer.parseInt(itemFolder.getName()), MapleDataTool.getString("name", itemFolder, "NO-NAME"))); + } + return itemPairs; + } + + private MapleData getStringData(int itemId) { + String cat = "null"; + MapleData theData; + if (itemId >= 5010000) { + theData = cashStringData; + } else if (itemId >= 2000000 && itemId < 3000000) { + theData = consumeStringData; + } else if ((itemId >= 1010000 && itemId < 1040000) || (itemId >= 1122000 && itemId < 1123000) || (itemId >= 1142000 && itemId < 1143000)) { + theData = eqpStringData; + cat = "Eqp/Accessory"; + } else if (itemId >= 1000000 && itemId < 1010000) { + theData = eqpStringData; + cat = "Eqp/Cap"; + } else if (itemId >= 1102000 && itemId < 1103000) { + theData = eqpStringData; + cat = "Eqp/Cape"; + } else if (itemId >= 1040000 && itemId < 1050000) { + theData = eqpStringData; + cat = "Eqp/Coat"; + } else if (itemId >= 20000 && itemId < 22000) { + theData = eqpStringData; + cat = "Eqp/Face"; + } else if (itemId >= 1080000 && itemId < 1090000) { + theData = eqpStringData; + cat = "Eqp/Glove"; + } else if (itemId >= 30000 && itemId < 32000) { + theData = eqpStringData; + cat = "Eqp/Hair"; + } else if (itemId >= 1050000 && itemId < 1060000) { + theData = eqpStringData; + cat = "Eqp/Longcoat"; + } else if (itemId >= 1060000 && itemId < 1070000) { + theData = eqpStringData; + cat = "Eqp/Pants"; + } else if (itemId >= 1802000 && itemId < 1810000) { + theData = eqpStringData; + cat = "Eqp/PetEquip"; + } else if (itemId >= 1112000 && itemId < 1120000) { + theData = eqpStringData; + cat = "Eqp/Ring"; + } else if (itemId >= 1092000 && itemId < 1100000) { + theData = eqpStringData; + cat = "Eqp/Shield"; + } else if (itemId >= 1070000 && itemId < 1080000) { + theData = eqpStringData; + cat = "Eqp/Shoes"; + } else if (itemId >= 1900000 && itemId < 2000000) { + theData = eqpStringData; + cat = "Eqp/Taming"; + } else if (itemId >= 1300000 && itemId < 1800000) { + theData = eqpStringData; + cat = "Eqp/Weapon"; + } else if (itemId >= 4000000 && itemId < 5000000) { + theData = etcStringData; + } else if (itemId >= 3000000 && itemId < 4000000) { + theData = insStringData; + } else if (itemId >= 5000000 && itemId < 5010000) { + theData = petStringData; + } else { + return null; + } + if (cat.equalsIgnoreCase("null")) { + return theData.getChildByPath(String.valueOf(itemId)); + } else { + return theData.getChildByPath(cat + "/" + itemId); + } + } + + public boolean noCancelMouse(int itemId) { + MapleData item = getItemData(itemId); + if (item == null) { + return false; + } + return MapleDataTool.getIntConvert("info/noCancelMouse", item, 0) == 1; + } + + private MapleData getItemData(int itemId) { + MapleData ret = null; + String idStr = "0" + String.valueOf(itemId); + MapleDataDirectoryEntry root = itemData.getRoot(); + for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) { + for (MapleDataFileEntry iFile : topDir.getFiles()) { + if (iFile.getName().equals(idStr.substring(0, 4) + ".img")) { + ret = itemData.getData(topDir.getName() + "/" + iFile.getName()); + if (ret == null) { + return null; + } + ret = ret.getChildByPath(idStr); + return ret; + } else if (iFile.getName().equals(idStr.substring(1) + ".img")) { + return itemData.getData(topDir.getName() + "/" + iFile.getName()); + } + } + } + root = equipData.getRoot(); + for (MapleDataDirectoryEntry topDir : root.getSubdirectories()) { + for (MapleDataFileEntry iFile : topDir.getFiles()) { + if (iFile.getName().equals(idStr + ".img")) { + return equipData.getData(topDir.getName() + "/" + iFile.getName()); + } + } + } + return ret; + } + + public short getSlotMax(MapleClient c, int itemId) { + if (slotMaxCache.containsKey(itemId)) { + return slotMaxCache.get(itemId); + } + short ret = 0; + MapleData item = getItemData(itemId); + if (item != null) { + MapleData smEntry = item.getChildByPath("info/slotMax"); + if (smEntry == null) { + if (ItemConstants.getInventoryType(itemId).getType() == MapleInventoryType.EQUIP.getType()) { + ret = 1; + } else { + ret = 100; + } + } else { + ret = (short) MapleDataTool.getInt(smEntry); + if (ItemConstants.isThrowingStar(itemId)) { + if(c.getPlayer().getJob().isA(MapleJob.NIGHTWALKER1)) { + ret += c.getPlayer().getSkillLevel(SkillFactory.getSkill(NightWalker.CLAW_MASTERY)) * 10; + } else { + ret += c.getPlayer().getSkillLevel(SkillFactory.getSkill(Assassin.CLAW_MASTERY)) * 10; + } + } else { + ret += c.getPlayer().getSkillLevel(SkillFactory.getSkill(Gunslinger.GUN_MASTERY)) * 10; + } + } + } + if (!ItemConstants.isRechargable(itemId)) { + slotMaxCache.put(itemId, ret); + } + return ret; + } + + public int getMeso(int itemId) { + if (getMesoCache.containsKey(itemId)) { + return getMesoCache.get(itemId); + } + MapleData item = getItemData(itemId); + if (item == null) { + return -1; + } + int pEntry; + MapleData pData = item.getChildByPath("info/meso"); + if (pData == null) { + return -1; + } + pEntry = MapleDataTool.getInt(pData); + getMesoCache.put(itemId, pEntry); + return pEntry; + } + + public int getWholePrice(int itemId) { + if (wholePriceCache.containsKey(itemId)) { + return wholePriceCache.get(itemId); + } + MapleData item = getItemData(itemId); + if (item == null) { + return -1; + } + int pEntry; + MapleData pData = item.getChildByPath("info/price"); + if (pData == null) { + return -1; + } + pEntry = MapleDataTool.getInt(pData); + wholePriceCache.put(itemId, pEntry); + return pEntry; + } + + public double getPrice(int itemId) { + if (priceCache.containsKey(itemId)) { + return priceCache.get(itemId); + } + MapleData item = getItemData(itemId); + if (item == null) { + return -1; + } + double pEntry; + MapleData pData = item.getChildByPath("info/unitPrice"); + if (pData != null) { + try { + pEntry = MapleDataTool.getDouble(pData); + } catch (Exception e) { + pEntry = (double) MapleDataTool.getInt(pData); + } + } else { + pData = item.getChildByPath("info/price"); + if (pData == null) { + return -1; + } + pEntry = (double) MapleDataTool.getInt(pData); + } + priceCache.put(itemId, pEntry); + return pEntry; + } + + protected String getEquipmentSlot(int itemId) { + if (equipmentSlotCache.containsKey(itemId)) { + return equipmentSlotCache.get(itemId); + } + + String ret = ""; + + MapleData item = getItemData(itemId); + + if (item == null) { + return null; + } + + MapleData info = item.getChildByPath("info"); + + if (info == null) { + return null; + } + + ret = MapleDataTool.getString("islot", info, ""); + + equipmentSlotCache.put(itemId, ret); + + return ret; + } + + public Map getEquipStats(int itemId) { + if (equipStatsCache.containsKey(itemId)) { + return equipStatsCache.get(itemId); + } + Map ret = new LinkedHashMap<>(); + MapleData item = getItemData(itemId); + if (item == null) { + return null; + } + MapleData info = item.getChildByPath("info"); + if (info == null) { + return null; + } + for (MapleData data : info.getChildren()) { + if (data.getName().startsWith("inc")) { + ret.put(data.getName().substring(3), MapleDataTool.getIntConvert(data)); + } + /*else if (data.getName().startsWith("req")) + ret.put(data.getName(), MapleDataTool.getInt(data.getName(), info, 0));*/ + } + ret.put("reqJob", MapleDataTool.getInt("reqJob", info, 0)); + ret.put("reqLevel", MapleDataTool.getInt("reqLevel", info, 0)); + ret.put("reqDEX", MapleDataTool.getInt("reqDEX", info, 0)); + ret.put("reqSTR", MapleDataTool.getInt("reqSTR", info, 0)); + ret.put("reqINT", MapleDataTool.getInt("reqINT", info, 0)); + ret.put("reqLUK", MapleDataTool.getInt("reqLUK", info, 0)); + ret.put("reqPOP", MapleDataTool.getInt("reqPOP", info, 0)); + ret.put("cash", MapleDataTool.getInt("cash", info, 0)); + ret.put("tuc", MapleDataTool.getInt("tuc", info, 0)); + ret.put("cursed", MapleDataTool.getInt("cursed", info, 0)); + ret.put("success", MapleDataTool.getInt("success", info, 0)); + ret.put("fs", MapleDataTool.getInt("fs", info, 0)); + equipStatsCache.put(itemId, ret); + return ret; + } + + public List getScrollReqs(int itemId) { + List ret = new ArrayList<>(); + MapleData data = getItemData(itemId); + data = data.getChildByPath("req"); + if (data == null) { + return ret; + } + for (MapleData req : data.getChildren()) { + ret.add(MapleDataTool.getInt(req)); + } + return ret; + } + + public MapleWeaponType getWeaponType(int itemId) { + int cat = (itemId / 10000) % 100; + MapleWeaponType[] type = {MapleWeaponType.SWORD1H, MapleWeaponType.GENERAL1H_SWING, MapleWeaponType.GENERAL1H_SWING, MapleWeaponType.DAGGER_OTHER, MapleWeaponType.NOT_A_WEAPON, MapleWeaponType.NOT_A_WEAPON, MapleWeaponType.NOT_A_WEAPON, MapleWeaponType.WAND, MapleWeaponType.STAFF, MapleWeaponType.NOT_A_WEAPON, MapleWeaponType.SWORD2H, MapleWeaponType.GENERAL2H_SWING, MapleWeaponType.GENERAL2H_SWING, MapleWeaponType.SPEAR_STAB, MapleWeaponType.POLE_ARM_SWING, MapleWeaponType.BOW, MapleWeaponType.CROSSBOW, MapleWeaponType.CLAW, MapleWeaponType.KNUCKLE, MapleWeaponType.GUN}; + if (cat < 30 || cat > 49) { + return MapleWeaponType.NOT_A_WEAPON; + } + return type[cat - 30]; + } + + private boolean isCleanSlate(int scrollId) { + return scrollId > 2048999 && scrollId < 2049004; + } + + private double testYourLuck() { + double result = 100.0, rolled; + int i, j = ServerConstants.SCROLL_CHANCE_RATE; + + if(j < 1) j = 1; + for(i = 0; i < j; i++) { + rolled = Math.ceil(Math.random() * 100.0); + if(result > rolled) result = rolled; + } + + return(result); + } + + + public Item scrollEquipWithId(Item equip, int scrollId, boolean usingWhiteScroll, boolean isGM) { + if (equip instanceof Equip) { + Equip nEquip = (Equip) equip; + Map stats = this.getEquipStats(scrollId); + Map eqstats = this.getEquipStats(equip.getItemId()); + if (((nEquip.getUpgradeSlots() > 0 || isCleanSlate(scrollId))) || isGM) { + System.out.println("GM: " + isGM + "\tWS: " + usingWhiteScroll + "\tITEM: " + scrollId); + + if(isGM || testYourLuck() <= stats.get("success")) { + short flag = nEquip.getFlag(); + switch (scrollId) { + case 2040727: + flag |= ItemConstants.SPIKES; + nEquip.setFlag((byte) flag); + return equip; + case 2041058: + flag |= ItemConstants.COLD; + nEquip.setFlag((byte) flag); + return equip; + case 2049000: + case 2049001: + case 2049002: + case 2049003: + if (nEquip.getLevel() + nEquip.getUpgradeSlots() < eqstats.get("tuc")) { + nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() + 1)); + } + break; + case 2049100: + case 2049101: + case 2049102: + int inc, i; + + if(ServerConstants.SCROLL_CHANCE_RATE > 0) { + int temp; + int mdStr = nEquip.getStr(), mdDex = nEquip.getDex(), mdInt = nEquip.getInt(), mdLuk = nEquip.getLuk(), mdWatk = nEquip.getWatk(), mdWdef = nEquip.getWdef(), mdMatk = nEquip.getMatk(), mdMdef = nEquip.getMdef(), mdAcc = nEquip.getAcc(), mdAvoid = nEquip.getAvoid(), mdSpeed = nEquip.getSpeed(), mdJump = nEquip.getJump(), mdHp = nEquip.getHp(), mdMp = nEquip.getMp(); + + for(i = 0; i < ServerConstants.SCROLL_CHANCE_RATE; i++) { + inc = 1; + + if (Randomizer.nextInt(2) == 0) { + inc = -1; + } + if (nEquip.getStr() > 0) { + temp = (nEquip.getStr() + Randomizer.nextInt(6) * inc); + nEquip.setStr((short) Math.max(mdStr, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdStr = nEquip.getStr(); + } + else { + temp = (mdStr + temp) / 2; + if(temp > 0) mdStr = temp; + } + } + if (nEquip.getDex() > 0) { + temp = (nEquip.getDex() + Randomizer.nextInt(6) * inc); + nEquip.setDex((short) Math.max(mdDex, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdDex = nEquip.getDex(); + } + else { + temp = (mdDex + temp) / 2; + if(temp > 0) mdDex = temp; + } + } + if (nEquip.getInt() > 0) { + temp = (nEquip.getInt() + Randomizer.nextInt(6) * inc); + nEquip.setInt((short) Math.max(mdInt, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdInt = nEquip.getInt(); + } + else { + temp = (mdInt + temp) / 2; + if(temp > 0) mdInt = temp; + } + } + if (nEquip.getLuk() > 0) { + temp = (nEquip.getLuk() + Randomizer.nextInt(6) * inc); + nEquip.setLuk((short) Math.max(mdLuk, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdLuk = nEquip.getLuk(); + } + else { + temp = (mdLuk + temp) / 2; + if(temp > 0) mdLuk = temp; + } + } + if (nEquip.getWatk() > 0) { + temp = (nEquip.getWatk() + Randomizer.nextInt(6) * inc); + nEquip.setWatk((short) Math.max(mdWatk, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdWatk = nEquip.getWatk(); + } + else { + temp = (mdWatk + temp) / 2; + if(temp > 0) mdWatk = temp; + } + } + if (nEquip.getWdef() > 0) { + temp = (nEquip.getWdef() + Randomizer.nextInt(6) * inc); + nEquip.setWdef((short) Math.max(mdWdef, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdWdef = nEquip.getWdef(); + } + else { + temp = (mdWdef + temp) / 2; + if(temp > 0) mdWdef = temp; + } + } + if (nEquip.getMatk() > 0) { + temp = (nEquip.getMatk() + Randomizer.nextInt(6) * inc); + nEquip.setMatk((short) Math.max(mdMatk, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdMatk = nEquip.getMatk(); + } + else { + temp = (mdMatk + temp) / 2; + if(temp > 0) mdMatk = temp; + } + } + if (nEquip.getMdef() > 0) { + temp = (nEquip.getMdef() + Randomizer.nextInt(6) * inc); + nEquip.setMdef((short) Math.max(mdMdef, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdMdef = nEquip.getMdef(); + } + else { + temp = (mdMdef + temp) / 2; + if(temp > 0) mdMdef = temp; + } + } + if (nEquip.getAcc() > 0) { + temp = (nEquip.getAcc() + Randomizer.nextInt(6) * inc); + nEquip.setAcc((short) Math.max(mdAcc, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdAcc = nEquip.getAcc(); + } + else { + temp = (mdAcc + temp) / 2; + if(temp > 0) mdAcc = temp; + } + } + if (nEquip.getAvoid() > 0) { + temp = (nEquip.getAvoid() + Randomizer.nextInt(6) * inc); + nEquip.setAvoid((short) Math.max(mdAvoid, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdAvoid = nEquip.getAvoid(); + } + else { + temp = (mdAvoid + temp) / 2; + if(temp > 0) mdAvoid = temp; + } + } + if (nEquip.getSpeed() > 0) { + temp = (nEquip.getSpeed() + Randomizer.nextInt(6) * inc); + nEquip.setSpeed((short) Math.max(mdSpeed, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdSpeed = nEquip.getSpeed(); + } + else { + temp = (mdSpeed + temp) / 2; + if(temp > 0) mdSpeed = temp; + } + } + if (nEquip.getJump() > 0) { + temp = (nEquip.getJump() + Randomizer.nextInt(6) * inc); + nEquip.setJump((short) Math.max(mdJump, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdJump = nEquip.getJump(); + } + else { + temp = (mdJump + temp) / 2; + if(temp > 0) mdJump = temp; + } + } + if (nEquip.getHp() > 0) { + temp = (nEquip.getHp() + Randomizer.nextInt(6) * inc); + nEquip.setHp((short) Math.max(mdHp, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdHp = nEquip.getHp(); + } + else { + temp = (mdHp + temp) / 2; + if(temp > 0) mdHp = temp; + } + } + if (nEquip.getMp() > 0) { + temp = (nEquip.getMp() + Randomizer.nextInt(6) * inc); + nEquip.setMp((short) Math.max(mdMp, temp)); + + if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { + mdMp = nEquip.getMp(); + } + else { + temp = (mdMp + temp) / 2; + if(temp > 0) mdMp = temp; + } + } + } + } + + else { + inc = 1; + + if (Randomizer.nextInt(2) == 0) { + inc = -1; + } + if (nEquip.getStr() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setStr((short) Math.max(nEquip.getStr(), (nEquip.getStr() + Randomizer.nextInt(6) * inc))); + else nEquip.setStr((short) Math.max(0, (nEquip.getStr() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getDex() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setDex((short) Math.max(nEquip.getDex(), (nEquip.getDex() + Randomizer.nextInt(6) * inc))); + else nEquip.setDex((short) Math.max(0, (nEquip.getDex() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getInt() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setInt((short) Math.max(nEquip.getInt(), (nEquip.getInt() + Randomizer.nextInt(6) * inc))); + else nEquip.setInt((short) Math.max(0, (nEquip.getInt() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getLuk() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setLuk((short) Math.max(nEquip.getLuk(), (nEquip.getLuk() + Randomizer.nextInt(6) * inc))); + else nEquip.setLuk((short) Math.max(0, (nEquip.getLuk() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getWatk() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setWatk((short) Math.max(nEquip.getWatk(), (nEquip.getWatk() + Randomizer.nextInt(6) * inc))); + else nEquip.setWatk((short) Math.max(0, (nEquip.getWatk() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getWdef() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setWdef((short) Math.max(nEquip.getWdef(), (nEquip.getWdef() + Randomizer.nextInt(6) * inc))); + else nEquip.setWdef((short) Math.max(0, (nEquip.getWdef() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getMatk() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setMatk((short) Math.max(nEquip.getMatk(), (nEquip.getMatk() + Randomizer.nextInt(6) * inc))); + else nEquip.setMatk((short) Math.max(0, (nEquip.getMatk() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getMdef() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setMdef((short) Math.max(nEquip.getMdef(), (nEquip.getMdef() + Randomizer.nextInt(6) * inc))); + else nEquip.setMdef((short) Math.max(0, (nEquip.getMdef() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getAcc() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setAcc((short) Math.max(nEquip.getAcc(), (nEquip.getAcc() + Randomizer.nextInt(6) * inc))); + else nEquip.setAcc((short) Math.max(0, (nEquip.getAcc() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getAvoid() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setAvoid((short) Math.max(nEquip.getAvoid(), (nEquip.getAvoid() + Randomizer.nextInt(6) * inc))); + else nEquip.setAvoid((short) Math.max(0, (nEquip.getAvoid() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getSpeed() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setSpeed((short) Math.max(nEquip.getSpeed(), (nEquip.getSpeed() + Randomizer.nextInt(6) * inc))); + else nEquip.setSpeed((short) Math.max(0, (nEquip.getSpeed() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getJump() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setJump((short) Math.max(nEquip.getJump(), (nEquip.getJump() + Randomizer.nextInt(6) * inc))); + else nEquip.setJump((short) Math.max(0, (nEquip.getJump() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getHp() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setHp((short) Math.max(nEquip.getHp(), (nEquip.getHp() + Randomizer.nextInt(6) * inc))); + else nEquip.setHp((short) Math.max(0, (nEquip.getHp() + Randomizer.nextInt(6) * inc))); + } + if (nEquip.getMp() > 0) { + if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setMp((short) Math.max(nEquip.getMp(), (nEquip.getMp() + Randomizer.nextInt(6) * inc))); + else nEquip.setMp((short) Math.max(0, (nEquip.getMp() + Randomizer.nextInt(6) * inc))); + } + } + break; + + default: + for (Entry stat : stats.entrySet()) { + switch (stat.getKey()) { + case "STR": + nEquip.setStr((short) (nEquip.getStr() + stat.getValue().intValue())); + break; + case "DEX": + nEquip.setDex((short) (nEquip.getDex() + stat.getValue().intValue())); + break; + case "INT": + nEquip.setInt((short) (nEquip.getInt() + stat.getValue().intValue())); + break; + case "LUK": + nEquip.setLuk((short) (nEquip.getLuk() + stat.getValue().intValue())); + break; + case "PAD": + nEquip.setWatk((short) (nEquip.getWatk() + stat.getValue().intValue())); + break; + case "PDD": + nEquip.setWdef((short) (nEquip.getWdef() + stat.getValue().intValue())); + break; + case "MAD": + nEquip.setMatk((short) (nEquip.getMatk() + stat.getValue().intValue())); + break; + case "MDD": + nEquip.setMdef((short) (nEquip.getMdef() + stat.getValue().intValue())); + break; + case "ACC": + nEquip.setAcc((short) (nEquip.getAcc() + stat.getValue().intValue())); + break; + case "EVA": + nEquip.setAvoid((short) (nEquip.getAvoid() + stat.getValue().intValue())); + break; + case "Speed": + nEquip.setSpeed((short) (nEquip.getSpeed() + stat.getValue().intValue())); + break; + case "Jump": + nEquip.setJump((short) (nEquip.getJump() + stat.getValue().intValue())); + break; + case "MHP": + nEquip.setHp((short) (nEquip.getHp() + stat.getValue().intValue())); + break; + case "MMP": + nEquip.setMp((short) (nEquip.getMp() + stat.getValue().intValue())); + break; + case "afterImage": + break; + } + } + break; + } + if (!isCleanSlate(scrollId)) { + if (ServerConstants.USE_PERFECT_SCROLLING == true && !isGM && !usingWhiteScroll) { + nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1)); + } + nEquip.setLevel((byte) (nEquip.getLevel() + 1)); + } + } + + if (ServerConstants.USE_PERFECT_SCROLLING == false && !isCleanSlate(scrollId)) { + if (!isGM && !usingWhiteScroll) { + nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1)); + } + //nEquip.setLevel((byte) (nEquip.getLevel() + 1)); + } + } else { + if (!usingWhiteScroll && !isCleanSlate(scrollId) && !isGM) { + nEquip.setUpgradeSlots((byte) (nEquip.getUpgradeSlots() - 1)); + } + if (Randomizer.nextInt(101) < stats.get("cursed")) { + return null; + } + } + } + return equip; + } + + public Item getEquipById(int equipId) { + return getEquipById(equipId, -1); + } + + Item getEquipById(int equipId, int ringId) { + Equip nEquip; + nEquip = new Equip(equipId, (byte) 0, ringId); + nEquip.setQuantity((short) 1); + Map stats = this.getEquipStats(equipId); + if (stats != null) { + for (Entry stat : stats.entrySet()) { + if (stat.getKey().equals("STR")) { + nEquip.setStr((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("DEX")) { + nEquip.setDex((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("INT")) { + nEquip.setInt((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("LUK")) { + nEquip.setLuk((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("PAD")) { + nEquip.setWatk((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("PDD")) { + nEquip.setWdef((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("MAD")) { + nEquip.setMatk((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("MDD")) { + nEquip.setMdef((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("ACC")) { + nEquip.setAcc((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("EVA")) { + nEquip.setAvoid((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("Speed")) { + nEquip.setSpeed((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("Jump")) { + nEquip.setJump((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("MHP")) { + nEquip.setHp((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("MMP")) { + nEquip.setMp((short) stat.getValue().intValue()); + } else if (stat.getKey().equals("tuc")) { + nEquip.setUpgradeSlots((byte) stat.getValue().intValue()); + } else if (isDropRestricted(equipId)) { + byte flag = nEquip.getFlag(); + flag |= ItemConstants.UNTRADEABLE; + nEquip.setFlag(flag); + } else if (stats.get("fs") > 0) { + byte flag = nEquip.getFlag(); + flag |= ItemConstants.SPIKES; + nEquip.setFlag(flag); + equipCache.put(equipId, nEquip); + } + } + } + return nEquip.copy(); + } + + private static short getRandStat(short defaultValue, int maxRange) { + if (defaultValue == 0) { + return 0; + } + int lMaxRange = (int) Math.min(Math.ceil(defaultValue * 0.1), maxRange); + return (short) ((defaultValue - lMaxRange) + Math.floor(Randomizer.nextDouble() * (lMaxRange * 2 + 1))); + } + + public Equip randomizeStats(Equip equip) { + equip.setStr(getRandStat(equip.getStr(), 5)); + equip.setDex(getRandStat(equip.getDex(), 5)); + equip.setInt(getRandStat(equip.getInt(), 5)); + equip.setLuk(getRandStat(equip.getLuk(), 5)); + equip.setMatk(getRandStat(equip.getMatk(), 5)); + equip.setWatk(getRandStat(equip.getWatk(), 5)); + equip.setAcc(getRandStat(equip.getAcc(), 5)); + equip.setAvoid(getRandStat(equip.getAvoid(), 5)); + equip.setJump(getRandStat(equip.getJump(), 5)); + equip.setSpeed(getRandStat(equip.getSpeed(), 5)); + equip.setWdef(getRandStat(equip.getWdef(), 10)); + equip.setMdef(getRandStat(equip.getMdef(), 10)); + equip.setHp(getRandStat(equip.getHp(), 10)); + equip.setMp(getRandStat(equip.getMp(), 10)); + return equip; + } + + public MapleStatEffect getItemEffect(int itemId) { + MapleStatEffect ret = itemEffects.get(Integer.valueOf(itemId)); + if (ret == null) { + MapleData item = getItemData(itemId); + if (item == null) { + return null; + } + MapleData spec = item.getChildByPath("spec"); + ret = MapleStatEffect.loadItemEffectFromData(spec, itemId); + itemEffects.put(Integer.valueOf(itemId), ret); + } + return ret; + } + + public int[][] getSummonMobs(int itemId) { + MapleData data = getItemData(itemId); + int theInt = data.getChildByPath("mob").getChildren().size(); + int[][] mobs2spawn = new int[theInt][2]; + for (int x = 0; x < theInt; x++) { + mobs2spawn[x][0] = MapleDataTool.getIntConvert("mob/" + x + "/id", data); + mobs2spawn[x][1] = MapleDataTool.getIntConvert("mob/" + x + "/prob", data); + } + return mobs2spawn; + } + + public int getWatkForProjectile(int itemId) { + Integer atk = projectileWatkCache.get(itemId); + if (atk != null) { + return atk.intValue(); + } + MapleData data = getItemData(itemId); + atk = Integer.valueOf(MapleDataTool.getInt("info/incPAD", data, 0)); + projectileWatkCache.put(itemId, atk); + return atk.intValue(); + } + + public String getName(int itemId) { + if (nameCache.containsKey(itemId)) { + return nameCache.get(itemId); + } + MapleData strings = getStringData(itemId); + if (strings == null) { + return null; + } + String ret = MapleDataTool.getString("name", strings, null); + nameCache.put(itemId, ret); + return ret; + } + + public String getMsg(int itemId) { + if (msgCache.containsKey(itemId)) { + return msgCache.get(itemId); + } + MapleData strings = getStringData(itemId); + if (strings == null) { + return null; + } + String ret = MapleDataTool.getString("msg", strings, null); + msgCache.put(itemId, ret); + return ret; + } + + public boolean isDropRestricted(int itemId) { + if (dropRestrictionCache.containsKey(itemId)) { + return dropRestrictionCache.get(itemId); + } + MapleData data = getItemData(itemId); + boolean bRestricted = MapleDataTool.getIntConvert("info/tradeBlock", data, 0) == 1; + if (!bRestricted) { + bRestricted = MapleDataTool.getIntConvert("info/accountSharable", data, 0) == 1; + } + if (!bRestricted) { + bRestricted = MapleDataTool.getIntConvert("info/quest", data, 0) == 1; + } + dropRestrictionCache.put(itemId, bRestricted); + return bRestricted; + } + + public boolean isPickupRestricted(int itemId) { + if (pickupRestrictionCache.containsKey(itemId)) { + return pickupRestrictionCache.get(itemId); + } + MapleData data = getItemData(itemId); + boolean bRestricted = MapleDataTool.getIntConvert("info/only", data, 0) == 1; + pickupRestrictionCache.put(itemId, bRestricted); + return bRestricted; + } + + public Map getSkillStats(int itemId, double playerJob) { + Map ret = new LinkedHashMap<>(); + MapleData item = getItemData(itemId); + if (item == null) { + return null; + } + MapleData info = item.getChildByPath("info"); + if (info == null) { + return null; + } + for (MapleData data : info.getChildren()) { + if (data.getName().startsWith("inc")) { + ret.put(data.getName().substring(3), MapleDataTool.getIntConvert(data)); + } + } + ret.put("masterLevel", MapleDataTool.getInt("masterLevel", info, 0)); + ret.put("reqSkillLevel", MapleDataTool.getInt("reqSkillLevel", info, 0)); + ret.put("success", MapleDataTool.getInt("success", info, 0)); + MapleData skill = info.getChildByPath("skill"); + int curskill; + for (int i = 0; i < skill.getChildren().size(); i++) { + curskill = MapleDataTool.getInt(Integer.toString(i), skill, 0); + if (curskill == 0) { + break; + } + if (curskill / 10000 == playerJob) { + ret.put("skillid", curskill); + break; + } + } + if (ret.get("skillid") == null) { + ret.put("skillid", 0); + } + return ret; + } + + public List petsCanConsume(int itemId) { + List ret = new ArrayList<>(); + MapleData data = getItemData(itemId); + int curPetId; + for (int i = 0; i < data.getChildren().size(); i++) { + curPetId = MapleDataTool.getInt("spec/" + Integer.toString(i), data, 0); + if (curPetId == 0) { + break; + } + ret.add(Integer.valueOf(curPetId)); + } + return ret; + } + + public boolean isQuestItem(int itemId) { + if (isQuestItemCache.containsKey(itemId)) { + return isQuestItemCache.get(itemId); + } + MapleData data = getItemData(itemId); + System.out.println(data); + boolean questItem = MapleDataTool.getIntConvert("info/quest", data, 0) == 1; + isQuestItemCache.put(itemId, questItem); + return questItem; + } + + public int getQuestIdFromItem(int itemId) { + MapleData data = getItemData(itemId); + int questItem = MapleDataTool.getIntConvert("info/quest", data, 0); + return questItem; + } + + private void loadCardIdData() { + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT cardid, mobid FROM monstercarddata"); + rs = ps.executeQuery(); + while (rs.next()) { + monsterBookID.put(rs.getInt(1), rs.getInt(2)); + } + rs.close(); + ps.close(); + } catch (SQLException e) { + } finally { + try { + if (rs != null) { + rs.close(); + } + if (ps != null) { + ps.close(); + } + } catch (SQLException e) { + } + } + } + + public int getCardMobId(int id) { + return monsterBookID.get(id); + } + + public boolean isUntradeableOnEquip(int itemId) { + if (onEquipUntradableCache.containsKey(itemId)) { + return onEquipUntradableCache.get(itemId); + } + boolean untradableOnEquip = MapleDataTool.getIntConvert("info/equipTradeBlock", getItemData(itemId), 0) > 0; + onEquipUntradableCache.put(itemId, untradableOnEquip); + return untradableOnEquip; + } + + public scriptedItem getScriptedItemInfo(int itemId) { + if (scriptedItemCache.containsKey(itemId)) { + return scriptedItemCache.get(itemId); + } + if ((itemId / 10000) != 243) { + return null; + } + scriptedItem script = new scriptedItem(MapleDataTool.getInt("spec/npc", getItemData(itemId), 0), + MapleDataTool.getString("spec/script", getItemData(itemId), ""), + MapleDataTool.getInt("spec/runOnPickup", getItemData(itemId), 0) == 1); + scriptedItemCache.put(itemId, script); + return scriptedItemCache.get(itemId); + } + + public boolean isKarmaAble(int itemId) { + if (karmaCache.containsKey(itemId)) { + return karmaCache.get(itemId); + } + boolean bRestricted = MapleDataTool.getIntConvert("info/tradeAvailable", getItemData(itemId), 0) > 0; + karmaCache.put(itemId, bRestricted); + return bRestricted; + } + + public int getStateChangeItem(int itemId) { + if (triggerItemCache.containsKey(itemId)) { + return triggerItemCache.get(itemId); + } else { + int triggerItem = MapleDataTool.getIntConvert("info/stateChangeItem", getItemData(itemId), 0); + triggerItemCache.put(itemId, triggerItem); + return triggerItem; + } + } + + public int getExpById(int itemId) { + if (expCache.containsKey(itemId)) { + return expCache.get(itemId); + } else { + int exp = MapleDataTool.getIntConvert("spec/exp", getItemData(itemId), 0); + expCache.put(itemId, exp); + return exp; + } + } + + public int getMaxLevelById(int itemId) { + if (levelCache.containsKey(itemId)) { + return levelCache.get(itemId); + } else { + int level = MapleDataTool.getIntConvert("info/maxLevel", getItemData(itemId), 256); + levelCache.put(itemId, level); + return level; + } + } + + public Pair> getItemReward(int itemId) {//Thanks Celino, used some stuffs :) + if (rewardCache.containsKey(itemId)) { + return rewardCache.get(itemId); + } + int totalprob = 0; + List rewards = new ArrayList(); + for (MapleData child : getItemData(itemId).getChildByPath("reward").getChildren()) { + RewardItem reward = new RewardItem(); + reward.itemid = MapleDataTool.getInt("item", child, 0); + reward.prob = (byte) MapleDataTool.getInt("prob", child, 0); + reward.quantity = (short) MapleDataTool.getInt("count", child, 0); + reward.effect = MapleDataTool.getString("Effect", child, ""); + reward.worldmsg = MapleDataTool.getString("worldMsg", child, null); + reward.period = MapleDataTool.getInt("period", child, -1); + + totalprob += reward.prob; + + rewards.add(reward); + } + Pair> hmm = new Pair>(totalprob, rewards); + rewardCache.put(itemId, hmm); + return hmm; + } + + public boolean isConsumeOnPickup(int itemId) { + if (consumeOnPickupCache.containsKey(itemId)) { + return consumeOnPickupCache.get(itemId); + } + MapleData data = getItemData(itemId); + boolean consume = MapleDataTool.getIntConvert("spec/consumeOnPickup", data, 0) == 1 || MapleDataTool.getIntConvert("specEx/consumeOnPickup", data, 0) == 1; + consumeOnPickupCache.put(itemId, consume); + return consume; + } + + public final boolean isTwoHanded(int itemId) { + switch (getWeaponType(itemId)) { + case GENERAL2H_SWING: + case BOW: + case CLAW: + case CROSSBOW: + case POLE_ARM_SWING: + case SPEAR_STAB: + case SWORD2H: + case GUN: + case KNUCKLE: + return true; + default: + return false; + } + } + + public boolean isCash(int itemId) { + return itemId / 1000000 == 5 || getEquipStats(itemId).get("cash") == 1; + } + + public Collection canWearEquipment(MapleCharacter chr, Collection items) { + MapleInventory inv = chr.getInventory(MapleInventoryType.EQUIPPED); + if (inv.checked()) { + return items; + } + Collection itemz = new LinkedList<>(); + if (chr.getJob() == MapleJob.SUPERGM || chr.getJob() == MapleJob.GM) { + for (Item item : items) { + Equip equip = (Equip) item; + equip.wear(true); + itemz.add(item); + } + return itemz; + } + boolean highfivestamp = false; + /* Removed because players shouldn't even get this, and gm's should just be gm job. + try { + for (Pair ii : ItemFactory.INVENTORY.loadItems(chr.getId(), false)) { + if (ii.getRight() == MapleInventoryType.CASH) { + if (ii.getLeft().getItemId() == 5590000) { + highfivestamp = true; + } + } + } + } catch (SQLException ex) { + }*/ + int tdex = chr.getDex(), tstr = chr.getStr(), tint = chr.getInt(), tluk = chr.getLuk(), fame = chr.getFame(); + if (chr.getJob() != MapleJob.SUPERGM || chr.getJob() != MapleJob.GM) { + for (Item item : inv.list()) { + Equip equip = (Equip) item; + tdex += equip.getDex(); + tstr += equip.getStr(); + tluk += equip.getLuk(); + tint += equip.getInt(); + } + } + for (Item item : items) { + Equip equip = (Equip) item; + int reqLevel = getEquipStats(equip.getItemId()).get("reqLevel"); + if (highfivestamp) { + reqLevel -= 5; + if (reqLevel < 0) { + reqLevel = 0; + } + } + /* + int reqJob = getEquipStats(equip.getItemId()).get("reqJob"); + if (reqJob != 0) { + Really hard check, and not really needed in this one + Gm's should just be GM job, and players cannot change jobs. + }*/ + if (reqLevel > chr.getLevel()) { + continue; + } else if (getEquipStats(equip.getItemId()).get("reqDEX") > tdex) { + continue; + } else if (getEquipStats(equip.getItemId()).get("reqSTR") > tstr) { + continue; + } else if (getEquipStats(equip.getItemId()).get("reqLUK") > tluk) { + continue; + } else if (getEquipStats(equip.getItemId()).get("reqINT") > tint) { + continue; + } + int reqPOP = getEquipStats(equip.getItemId()).get("reqPOP"); + if (reqPOP > 0) { + if (getEquipStats(equip.getItemId()).get("reqPOP") > fame) { + continue; + } + } + equip.wear(true); + itemz.add(equip); + } + inv.checked(true); + return itemz; + } + + public boolean canWearEquipment(MapleCharacter chr, Equip equip, int dst) { + int id = equip.getItemId(); + + String islot = getEquipmentSlot(id); + + if (!EquipSlot.getFromTextSlot(islot).isAllowed(dst, isCash(id))) { + equip.wear(false); + String itemName = MapleItemInformationProvider.getInstance().getName(equip.getItemId()); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.sendYellowTip("[WARNING]: " + chr.getName() + " tried to equip " + itemName + " into slot " + dst + ".")); + AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to forcibly equip an item."); + FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to equip " + itemName + " into " + dst + " slot.\r\n"); + return false; + } + + if (chr.getJob() == MapleJob.SUPERGM || chr.getJob() == MapleJob.GM) { + equip.wear(true); + return true; + } + + + boolean highfivestamp = false; + /* Removed check above for message >< + try { + for (Pair ii : ItemFactory.INVENTORY.loadItems(chr.getId(), false)) { + if (ii.getRight() == MapleInventoryType.CASH) { + if (ii.getLeft().getItemId() == 5590000) { + highfivestamp = true; + } + } + } + } catch (SQLException ex) { + }*/ + + int reqLevel = getEquipStats(equip.getItemId()).get("reqLevel"); + if (highfivestamp) { + reqLevel -= 5; + } + int i = 0; //lol xD + //Removed job check. Shouldn't really be needed. + if (reqLevel > chr.getLevel()) { + i++; + } else if (getEquipStats(equip.getItemId()).get("reqDEX") > chr.getTotalDex()) { + i++; + } else if (getEquipStats(equip.getItemId()).get("reqSTR") > chr.getTotalStr()) { + i++; + } else if (getEquipStats(equip.getItemId()).get("reqLUK") > chr.getTotalLuk()) { + i++; + } else if (getEquipStats(equip.getItemId()).get("reqINT") > chr.getTotalInt()) { + i++; + } + int reqPOP = getEquipStats(equip.getItemId()).get("reqPOP"); + if (reqPOP > 0) { + if (getEquipStats(equip.getItemId()).get("reqPOP") > chr.getFame()) { + i++; + } + } + + if (i > 0) { + equip.wear(false); + return false; + } + equip.wear(true); + return true; + } + + public ArrayList> getItemDataByName(String name) + { + ArrayList> ret = new ArrayList>(); + for (Pair itemPair : MapleItemInformationProvider.getInstance().getAllItems()) { + if (itemPair.getRight().toLowerCase().contains(name.toLowerCase())) { + ret.add(itemPair); + } + } + return ret; + } + + public List> getItemLevelupStats(int itemId, int level, boolean timeless) { + List> list = new LinkedList<>(); + MapleData data = getItemData(itemId); + MapleData data1 = data.getChildByPath("info").getChildByPath("level"); + /*if ((timeless && level == 5) || (!timeless && level == 3)) { + MapleData skilldata = data1.getChildByPath("case").getChildByPath("1").getChildByPath(timeless ? "6" : "4"); + if (skilldata != null) { + List skills = skilldata.getChildByPath("Skill").getChildren(); + for (int i = 0; i < skilldata.getChildByPath("Skill").getChildren().size(); i++) { + System.out.println(MapleDataTool.getInt(skills.get(i).getChildByPath("id"))); + if (Math.random() < 0.1) list.add(new Pair("Skill" + 0, MapleDataTool.getInt(skills.get(i).getChildByPath("id")))); + } + } + }*/ + if (data1 != null) { + MapleData data2 = data1.getChildByPath("info").getChildByPath(Integer.toString(level)); + if (data2 != null) { + for (MapleData da : data2.getChildren()) { + if (Math.random() < 0.9) { + if (da.getName().startsWith("incDEXMin")) { + list.add(new Pair<>("incDEX", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incDEXMax"))))); + } else if (da.getName().startsWith("incSTRMin")) { + list.add(new Pair<>("incSTR", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incSTRMax"))))); + } else if (da.getName().startsWith("incINTMin")) { + list.add(new Pair<>("incINT", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incINTMax"))))); + } else if (da.getName().startsWith("incLUKMin")) { + list.add(new Pair<>("incLUK", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incLUKMax"))))); + } else if (da.getName().startsWith("incMHPMin")) { + list.add(new Pair<>("incMHP", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incMHPMax"))))); + } else if (da.getName().startsWith("incMMPMin")) { + list.add(new Pair<>("incMMP", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incMMPMax"))))); + } else if (da.getName().startsWith("incPADMin")) { + list.add(new Pair<>("incPAD", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incPADMax"))))); + } else if (da.getName().startsWith("incMADMin")) { + list.add(new Pair<>("incMAD", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incMADMax"))))); + } else if (da.getName().startsWith("incPDDMin")) { + list.add(new Pair<>("incPDD", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incPDDMax"))))); + } else if (da.getName().startsWith("incMDDMin")) { + list.add(new Pair<>("incMDD", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incMDDMax"))))); + } else if (da.getName().startsWith("incACCMin")) { + list.add(new Pair<>("incACC", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incACCMax"))))); + } else if (da.getName().startsWith("incEVAMin")) { + list.add(new Pair<>("incEVA", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incEVAMax"))))); + } else if (da.getName().startsWith("incSpeedMin")) { + list.add(new Pair<>("incSpeed", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incSpeedMax"))))); + } else if (da.getName().startsWith("incJumpMin")) { + list.add(new Pair<>("incJump", Randomizer.rand(MapleDataTool.getInt(da), MapleDataTool.getInt(data2.getChildByPath("incJumpMax"))))); + } + } + } + } + } + + return list; + } + + public class scriptedItem { + + private boolean runOnPickup; + private int npc; + private String script; + + public scriptedItem(int npc, String script, boolean rop) { + this.npc = npc; + this.script = script; + this.runOnPickup = rop; + } + + public int getNpc() { + return npc; + } + + public String getScript() { + return script; + } + + public boolean runOnPickup() { + return runOnPickup; + } + } + + public static final class RewardItem { + + public int itemid, period; + public short prob, quantity; + public String effect, worldmsg; + } +} diff --git a/src/server/MapleMiniGame.java b/src/server/MapleMiniGame.java new file mode 100644 index 0000000000..17452ab7cb --- /dev/null +++ b/src/server/MapleMiniGame.java @@ -0,0 +1,341 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import client.MapleCharacter; +import client.MapleClient; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import server.maps.AbstractMapleMapObject; +import server.maps.MapleMapObjectType; +import tools.MaplePacketCreator; + +/** + * + * @author Matze + */ +public class MapleMiniGame extends AbstractMapleMapObject { + private MapleCharacter owner; + private MapleCharacter visitor; + private String GameType = null; + private int[] piece = new int[250]; + private List list4x3 = new ArrayList<>(); + private List list5x4 = new ArrayList<>(); + private List list6x5 = new ArrayList<>(); + private String description; + private int loser = 1; + private int piecetype; + private int firstslot = 0; + private int visitorpoints = 0; + private int ownerpoints = 0; + private int matchestowin = 0; + + public MapleMiniGame(MapleCharacter owner, String description) { + this.owner = owner; + this.description = description; + } + + public boolean hasFreeSlot() { + return visitor == null; + } + + public boolean isOwner(MapleCharacter c) { + return owner.equals(c); + } + + public void addVisitor(MapleCharacter challenger) { + visitor = challenger; + if (GameType.equals("omok")) { + this.getOwner().getClient().announce(MaplePacketCreator.getMiniGameNewVisitor(challenger, 1)); + this.getOwner().getMap().broadcastMessage(MaplePacketCreator.addOmokBox(owner, 2, 0)); + } + if (GameType.equals("matchcard")) { + this.getOwner().getClient().announce(MaplePacketCreator.getMatchCardNewVisitor(challenger, 1)); + this.getOwner().getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(owner, 2, 0)); + } + } + + public void removeVisitor(MapleCharacter challenger) { + if (visitor == challenger) { + visitor = null; + this.getOwner().getClient().announce(MaplePacketCreator.getMiniGameRemoveVisitor()); + if (GameType.equals("omok")) { + this.getOwner().getMap().broadcastMessage(MaplePacketCreator.addOmokBox(owner, 1, 0)); + } + if (GameType.equals("matchcard")) { + this.getOwner().getMap().broadcastMessage(MaplePacketCreator.addMatchCardBox(owner, 1, 0)); + } + } + } + + public boolean isVisitor(MapleCharacter challenger) { + return visitor == challenger; + } + + public void broadcastToVisitor(final byte[] packet) { + if (visitor != null) { + visitor.getClient().announce(packet); + } + } + + public void setFirstSlot(int type) { + firstslot = type; + } + + public int getFirstSlot() { + return firstslot; + } + + public void setOwnerPoints() { + ownerpoints++; + if (ownerpoints + visitorpoints == matchestowin) { + if (ownerpoints == visitorpoints) { + this.broadcast(MaplePacketCreator.getMatchCardTie(this)); + } else if (ownerpoints > visitorpoints) { + this.broadcast(MaplePacketCreator.getMatchCardOwnerWin(this)); + } else { + this.broadcast(MaplePacketCreator.getMatchCardVisitorWin(this)); + } + ownerpoints = 0; + visitorpoints = 0; + } + } + + public void setVisitorPoints() { + visitorpoints++; + if (ownerpoints + visitorpoints == matchestowin) { + if (ownerpoints > visitorpoints) { + this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this)); + } else if (visitorpoints > ownerpoints) { + this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this)); + } else { + this.broadcast(MaplePacketCreator.getMiniGameTie(this)); + } + ownerpoints = 0; + visitorpoints = 0; + } + } + + public void setMatchesToWin(int type) { + matchestowin = type; + } + + public void setPieceType(int type) { + piecetype = type; + } + + public int getPieceType() { + return piecetype; + } + + public void setGameType(String game) { + GameType = game; + if (game.equals("matchcard")) { + if (matchestowin == 6) { + for (int i = 0; i < 6; i++) { + list4x3.add(i); + list4x3.add(i); + } + } else if (matchestowin == 10) { + for (int i = 0; i < 10; i++) { + list5x4.add(i); + list5x4.add(i); + } + } else { + for (int i = 0; i < 15; i++) { + list6x5.add(i); + list6x5.add(i); + } + } + } + } + + public String getGameType() { + return GameType; + } + + public void shuffleList() { + if (matchestowin == 6) { + Collections.shuffle(list4x3); + } else if (matchestowin == 10) { + Collections.shuffle(list5x4); + } else { + Collections.shuffle(list6x5); + } + } + + public int getCardId(int slot) { + int cardid; + if (matchestowin == 6) { + cardid = list4x3.get(slot - 1); + } else if (matchestowin == 10) { + cardid = list5x4.get(slot - 1); + } else { + cardid = list6x5.get(slot - 1); + } + return cardid; + } + + public int getMatchesToWin() { + return matchestowin; + } + + public void setLoser(int type) { + loser = type; + } + + public int getLoser() { + return loser; + } + + public void broadcast(final byte[] packet) { + if (owner.getClient() != null && owner.getClient().getSession() != null) { + owner.getClient().announce(packet); + } + broadcastToVisitor(packet); + } + + public void chat(MapleClient c, String chat) { + broadcast(MaplePacketCreator.getPlayerShopChat(c.getPlayer(), chat, isOwner(c.getPlayer()))); + } + + public void sendOmok(MapleClient c, int type) { + c.announce(MaplePacketCreator.getMiniGame(c, this, isOwner(c.getPlayer()), type)); + } + + public void sendMatchCard(MapleClient c, int type) { + c.announce(MaplePacketCreator.getMatchCard(c, this, isOwner(c.getPlayer()), type)); + } + + public MapleCharacter getOwner() { + return owner; + } + + public MapleCharacter getVisitor() { + return visitor; + } + + public void setPiece(int move1, int move2, int type, MapleCharacter chr) { + int slot = move2 * 15 + move1 + 1; + if (piece[slot] == 0) { + piece[slot] = type; + this.broadcast(MaplePacketCreator.getMiniGameMoveOmok(this, move1, move2, type)); + for (int y = 0; y < 15; y++) { + for (int x = 0; x < 11; x++) { + if (searchCombo(x, y, type)) { + if (this.isOwner(chr)) { + this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this)); + this.setLoser(0); + } else { + this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this)); + this.setLoser(1); + } + for (int y2 = 0; y2 < 15; y2++) { + for (int x2 = 0; x2 < 15; x2++) { + int slot2 = (y2 * 15 + x2 + 1); + piece[slot2] = 0; + } + } + } + } + } + for (int y = 0; y < 15; y++) { + for (int x = 4; x < 15; x++) { + if (searchCombo2(x, y, type)) { + if (this.isOwner(chr)) { + this.broadcast(MaplePacketCreator.getMiniGameOwnerWin(this)); + this.setLoser(0); + } else { + this.broadcast(MaplePacketCreator.getMiniGameVisitorWin(this)); + this.setLoser(1); + } + for (int y2 = 0; y2 < 15; y2++) { + for (int x2 = 0; x2 < 15; x2++) { + int slot2 = (y2 * 15 + x2 + 1); + piece[slot2] = 0; + } + } + } + } + } + } + } + + private boolean searchCombo(int x, int y, int type) { + int slot = y * 15 + x + 1; + for (int i = 0; i < 5; i++) { + if (piece[slot + i] == type) { + if (i == 4) { + return true; + } + } else { + break; + } + } + for (int j = 15; j < 17; j++) { + for (int i = 0; i < 5; i++) { + if (piece[slot + i * j] == type) { + if (i == 4) { + return true; + } + } else { + break; + } + } + } + return false; + } + + private boolean searchCombo2(int x, int y, int type) { + int slot = y * 15 + x + 1; + for (int j = 14; j < 15; j++) { + for (int i = 0; i < 5; i++) { + if (piece[slot + i * j] == type) { + if (i == 4) { + return true; + } + } else { + break; + } + } + } + return false; + } + + public String getDescription() { + return description; + } + + @Override + public void sendDestroyData(MapleClient client) { + } + + @Override + public void sendSpawnData(MapleClient client) { + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.MINI_GAME; + } +} diff --git a/src/server/MaplePlayerShop.java b/src/server/MaplePlayerShop.java new file mode 100644 index 0000000000..ecb2b0984b --- /dev/null +++ b/src/server/MaplePlayerShop.java @@ -0,0 +1,272 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.SendOpcode; +import server.maps.AbstractMapleMapObject; +import server.maps.MapleMapObjectType; +import tools.MaplePacketCreator; +import tools.data.output.MaplePacketLittleEndianWriter; + +/** + * + * @author Matze + */ +public class MaplePlayerShop extends AbstractMapleMapObject { + private MapleCharacter owner; + private MapleCharacter[] visitors = new MapleCharacter[3]; + private List items = new ArrayList<>(); + private MapleCharacter[] slot = {null, null, null}; + private String description; + private int boughtnumber = 0; + private List bannedList = new ArrayList<>(); + + public MaplePlayerShop(MapleCharacter owner, String description) { + this.setPosition(owner.getPosition()); + this.owner = owner; + this.description = description; + } + + public boolean hasFreeSlot() { + return visitors[0] == null || visitors[1] == null || visitors[2] == null; + } + + public boolean isOwner(MapleCharacter c) { + return owner.equals(c); + } + + public void addVisitor(MapleCharacter visitor) { + for (int i = 0; i < 3; i++) { + if (visitors[i] == null) { + visitors[i] = visitor; + if (this.getSlot(0) == null) { + this.setSlot(visitor, 0); + this.broadcast(MaplePacketCreator.getPlayerShopNewVisitor(visitor, 1)); + } else if (this.getSlot(1) == null) { + this.setSlot(visitor, 1); + this.broadcast(MaplePacketCreator.getPlayerShopNewVisitor(visitor, 2)); + } else if (this.getSlot(2) == null) { + this.setSlot(visitor, 2); + this.broadcast(MaplePacketCreator.getPlayerShopNewVisitor(visitor, 3)); + visitor.getMap().broadcastMessage(MaplePacketCreator.addCharBox(this.getOwner(), 1)); + } + break; + } + } + } + + public void removeVisitor(MapleCharacter visitor) { + if (visitor == owner) { + owner.getMap().removeMapObject(this); + owner.setPlayerShop(null); + } + for (int i = 0; i < 3; i++) { + if (visitors[i] != null && visitors[i].getId() == visitor.getId()) { + int slot_ = visitor.getSlot(); + visitors[i] = null; + this.setSlot(null, i); + visitor.setSlot(-1); + this.broadcast(MaplePacketCreator.getPlayerShopRemoveVisitor(slot_ + 1)); + return; + } + } + } + + public boolean isVisitor(MapleCharacter visitor) { + return visitors[0] == visitor || visitors[1] == visitor || visitors[2] == visitor; + } + + public void addItem(MaplePlayerShopItem item) { + items.add(item); + } + + public void removeItem(int item) { + items.remove(item); + } + + /** + * no warnings for now o.op + * @param c + * @param item + * @param quantity + */ + public void buy(MapleClient c, int item, short quantity) { + if (isVisitor(c.getPlayer())) { + MaplePlayerShopItem pItem = items.get(item); + Item newItem = pItem.getItem().copy(); + newItem.setQuantity(newItem.getQuantity()); + if (quantity < 1 || pItem.getBundles() < 1 || newItem.getQuantity() > pItem.getBundles() || !pItem.isExist()) { + return; + } else if (newItem.getType() == 1 && newItem.getQuantity() > 1) { + return; + } + synchronized (c.getPlayer()) { + if (c.getPlayer().getMeso() >= (long) pItem.getPrice() * quantity) { + if (MapleInventoryManipulator.addFromDrop(c, newItem, false)) { + c.getPlayer().gainMeso(-pItem.getPrice() * quantity, true); + owner.gainMeso(pItem.getPrice() * quantity, true); + pItem.setBundles((short) (pItem.getBundles() - quantity)); + if (pItem.getBundles() < 1) { + pItem.setDoesExist(false); + if (++boughtnumber == items.size()) { + owner.setPlayerShop(null); + owner.getMap().broadcastMessage(MaplePacketCreator.removeCharBox(owner)); + this.removeVisitors(); + owner.dropMessage(1, "Your items are sold out, and therefore your shop is closed."); + } + } + } else { + c.getPlayer().dropMessage(1, "Your inventory is full. Please clean a slot before buying this item."); + } + } + } + } + } + + public void broadcastToVisitors(final byte[] packet) { + for (int i = 0; i < 3; i++) { + if (visitors[i] != null) { + visitors[i].getClient().announce(packet); + } + } + } + + public void removeVisitors() { + try { + for (int i = 0; i < 3; i++) { + if (visitors[i] != null) { + visitors[i].getClient().announce(MaplePacketCreator.shopErrorMessage(10, 1)); + removeVisitor(visitors[i]); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + if (owner != null) { + removeVisitor(getOwner()); + } + } + + public static byte[] shopErrorMessage(int error, int type) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(0x0A); + mplew.write(type); + mplew.write(error); + return mplew.getPacket(); + } + + public void broadcast(final byte[] packet) { + if (owner.getClient() != null && owner.getClient().getSession() != null) { + owner.getClient().announce(packet); + } + broadcastToVisitors(packet); + } + + public void chat(MapleClient c, String chat) { + byte s = 0; + for (MapleCharacter mc : getVisitors()) { + s++; + if (mc != null) { + if (mc.getName().equalsIgnoreCase(c.getPlayer().getName())) { + break; + } + } else if (s == 3) { + s = 0; + } + } + broadcast(MaplePacketCreator.getPlayerShopChat(c.getPlayer(), chat, s)); + } + + public void sendShop(MapleClient c) { + c.announce(MaplePacketCreator.getPlayerShop(c, this, isOwner(c.getPlayer()))); + } + + public MapleCharacter getOwner() { + return owner; + } + + public MapleCharacter[] getVisitors() { + return visitors; + } + + public MapleCharacter getSlot(int s) { + return slot[s]; + } + + private void setSlot(MapleCharacter person, int s) { + slot[s] = person; + if (person != null) { + person.setSlot(s); + } + } + + public List getItems() { + return Collections.unmodifiableList(items); + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public void banPlayer(String name) { + if (!bannedList.contains(name)) { + bannedList.add(name); + } + for (int i = 0; i < 3; i++) { + if (visitors[i] != null && visitors[i].getName().equals(name)) { + visitors[i].getClient().announce(MaplePacketCreator.shopErrorMessage(5, 1)); + removeVisitor(visitors[i]); + return; //I'm guessing this was the intended action + } + } + } + + public boolean isBanned(String name) { + return bannedList.contains(name); + } + + @Override + public void sendDestroyData(MapleClient client) { + client.announce(MaplePacketCreator.removeCharBox(this.getOwner())); + } + + @Override + public void sendSpawnData(MapleClient client) { + client.announce(MaplePacketCreator.addCharBox(this.getOwner(), 4)); + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.SHOP; + } +} \ No newline at end of file diff --git a/src/server/MaplePlayerShopItem.java b/src/server/MaplePlayerShopItem.java new file mode 100644 index 0000000000..8fd3be0f34 --- /dev/null +++ b/src/server/MaplePlayerShopItem.java @@ -0,0 +1,66 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import client.inventory.Item; + +/** + * + * @author Matze + */ +public class MaplePlayerShopItem { + private Item item; + private short bundles; + private int price; + private boolean doesExist; + + public MaplePlayerShopItem(Item item, short bundles, int price) { + this.item = item; + this.bundles = bundles; + this.price = price; + this.doesExist = true; + } + + public void setDoesExist(boolean tf) { + this.doesExist = tf; + } + + public boolean isExist() { + return doesExist; + } + + public Item getItem() { + return item; + } + + public short getBundles() { + return bundles; + } + + public int getPrice() { + return price; + } + + public void setBundles(short bundles) { + this.bundles = bundles; + } +} \ No newline at end of file diff --git a/src/server/MaplePortal.java b/src/server/MaplePortal.java new file mode 100644 index 0000000000..3e0c02c096 --- /dev/null +++ b/src/server/MaplePortal.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import java.awt.Point; +import client.MapleClient; + +public interface MaplePortal { + public final int MAP_PORTAL = 2; + public final int DOOR_PORTAL = 6; + public static boolean OPEN = true; + public static boolean CLOSED = false; + int getType(); + int getId(); + Point getPosition(); + String getName(); + String getTarget(); + String getScriptName(); + void setScriptName(String newName); + void setPortalStatus(boolean newStatus); + boolean getPortalStatus(); + int getTargetMapId(); + void enterPortal(MapleClient c); + void setPortalState(boolean state); + boolean getPortalState(); +} diff --git a/src/server/MapleShop.java b/src/server/MapleShop.java new file mode 100644 index 0000000000..fd1a89b7ef --- /dev/null +++ b/src/server/MapleShop.java @@ -0,0 +1,271 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import constants.ItemConstants; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +/** + * + * @author Matze + */ +public class MapleShop { + private static final Set rechargeableItems = new LinkedHashSet<>(); + private int id; + private int npcId; + private List items; + private int tokenvalue = 1000000000; + private int token = 4000313; + + static { + for (int i = 2070000; i < 2070017; i++) { + rechargeableItems.add(i); + } + rechargeableItems.add(2331000);//Blaze Capsule + rechargeableItems.add(2332000);//Glaze Capsule + rechargeableItems.add(2070018); + rechargeableItems.remove(2070014); // doesn't exist + for (int i = 2330000; i <= 2330005; i++) { + rechargeableItems.add(i); + } + } + + private MapleShop(int id, int npcId) { + this.id = id; + this.npcId = npcId; + items = new ArrayList<>(); + } + + private void addItem(MapleShopItem item) { + items.add(item); + } + + public void sendShop(MapleClient c) { + c.getPlayer().setShop(this); + c.announce(MaplePacketCreator.getNPCShop(c, getNpcId(), items)); + } + + public void buy(MapleClient c, short slot, int itemId, short quantity) { + MapleShopItem item = findBySlot(slot); + if (item != null) { + if (item.getItemId() != itemId) { + System.out.println("Wrong slot number in shop " + id); + return; + } + } else { + return; + } + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + if (item != null && item.getPrice() > 0) { + if (c.getPlayer().getMeso() >= (long) item.getPrice() * quantity) { + if (MapleInventoryManipulator.checkSpace(c, itemId, quantity, "")) { + if (!ItemConstants.isRechargable(itemId)) { //Pets can't be bought from shops + MapleInventoryManipulator.addById(c, itemId, quantity); + c.getPlayer().gainMeso(-(item.getPrice() * quantity), false); + } else { + short slotMax = ii.getSlotMax(c, item.getItemId()); + quantity = slotMax; + MapleInventoryManipulator.addById(c, itemId, quantity); + c.getPlayer().gainMeso(-item.getPrice(), false); + } + c.announce(MaplePacketCreator.shopTransaction((byte) 0)); + } else + c.announce(MaplePacketCreator.shopTransaction((byte) 3)); + + } else + c.announce(MaplePacketCreator.shopTransaction((byte) 2)); + + } else if (item != null && item.getPitch() > 0) { + if (c.getPlayer().getInventory(MapleInventoryType.ETC).countById(4310000) >= (long) item.getPitch() * quantity) { + if (MapleInventoryManipulator.checkSpace(c, itemId, quantity, "")) { + if (!ItemConstants.isRechargable(itemId)) { + MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.removeById(c, MapleInventoryType.ETC, 4310000, item.getPitch() * quantity, false, false); + } else { + short slotMax = ii.getSlotMax(c, item.getItemId()); + quantity = slotMax; + MapleInventoryManipulator.addById(c, itemId, quantity); + MapleInventoryManipulator.removeById(c, MapleInventoryType.ETC, 4310000, item.getPitch() * quantity, false, false); + } + c.announce(MaplePacketCreator.shopTransaction((byte) 0)); + } else + c.announce(MaplePacketCreator.shopTransaction((byte) 3)); + } + + } else if (c.getPlayer().getInventory(MapleInventoryType.CASH).countById(token) != 0) { + int amount = c.getPlayer().getInventory(MapleInventoryType.CASH).countById(token); + int value = amount * tokenvalue; + int cost = item.getPrice() * quantity; + if (c.getPlayer().getMeso() + value >= cost) { + int cardreduce = value - cost; + int diff = cardreduce + c.getPlayer().getMeso(); + if (MapleInventoryManipulator.checkSpace(c, itemId, quantity, "")) { + if (itemId >= 5000000 && itemId <= 5000100) { + int petid = MaplePet.createPet(itemId); + MapleInventoryManipulator.addById(c, itemId, quantity, null, petid, -1); + } else { + MapleInventoryManipulator.addById(c, itemId, quantity); + } + c.getPlayer().gainMeso(diff, false); + } else { + c.announce(MaplePacketCreator.shopTransaction((byte) 3)); + } + c.announce(MaplePacketCreator.shopTransaction((byte) 0)); + } else + c.announce(MaplePacketCreator.shopTransaction((byte) 2)); + } + } + + + public void sell(MapleClient c, MapleInventoryType type, short slot, short quantity) { + if (quantity == 0xFFFF || quantity == 0) { + quantity = 1; + } + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Item item = c.getPlayer().getInventory(type).getItem((short) slot); + if (item == null){ //Basic check + return; + } + if (ItemConstants.isRechargable(item.getItemId())) { + quantity = item.getQuantity(); + } + if (quantity < 0) { + return; + } + short iQuant = item.getQuantity(); + if (iQuant == 0xFFFF) { + iQuant = 1; + } + if (quantity <= iQuant && iQuant > 0) { + MapleInventoryManipulator.removeFromSlot(c, type, (byte) slot, quantity, false); + double price; + if (ItemConstants.isRechargable(item.getItemId())) { + price = ii.getWholePrice(item.getItemId()) / (double) ii.getSlotMax(c, item.getItemId()); + } else { + price = ii.getPrice(item.getItemId()); + } + int recvMesos = (int) Math.max(Math.ceil(price * quantity), 0); + if (price != -1 && recvMesos > 0) { + c.getPlayer().gainMeso(recvMesos, false); + } + c.announce(MaplePacketCreator.shopTransaction((byte) 0x8)); + } + } + + public void recharge(MapleClient c, short slot) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Item item = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); + if (item == null || !ItemConstants.isRechargable(item.getItemId())) { + return; + } + short slotMax = ii.getSlotMax(c, item.getItemId()); + if (item.getQuantity() < 0) { + return; + } + if (item.getQuantity() < slotMax) { + int price = (int) Math.round(ii.getPrice(item.getItemId()) * (slotMax - item.getQuantity())); + if (c.getPlayer().getMeso() >= price) { + item.setQuantity(slotMax); + c.getPlayer().forceUpdateItem(item); + c.getPlayer().gainMeso(-price, false, true, false); + c.announce(MaplePacketCreator.shopTransaction((byte) 0x8)); + } else { + c.announce(MaplePacketCreator.serverNotice(1, "You do not have enough mesos.")); + c.announce(MaplePacketCreator.enableActions()); + } + } + } + + private MapleShopItem findBySlot(short slot) { + return items.get(slot); + } + + public static MapleShop createFromDB(int id, boolean isShopId) { + MapleShop ret = null; + int shopId; + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps; + if (isShopId) { + ps = con.prepareStatement("SELECT * FROM shops WHERE shopid = ?"); + } else { + ps = con.prepareStatement("SELECT * FROM shops WHERE npcid = ?"); + } + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + shopId = rs.getInt("shopid"); + ret = new MapleShop(shopId, rs.getInt("npcid")); + rs.close(); + ps.close(); + } else { + rs.close(); + ps.close(); + return null; + } + ps = con.prepareStatement("SELECT * FROM shopitems WHERE shopid = ? ORDER BY position DESC"); + ps.setInt(1, shopId); + rs = ps.executeQuery(); + List recharges = new ArrayList<>(rechargeableItems); + while (rs.next()) { + if (ItemConstants.isRechargable(rs.getInt("itemid"))) { + MapleShopItem starItem = new MapleShopItem((short) 1, rs.getInt("itemid"), rs.getInt("price"), rs.getInt("pitch")); + ret.addItem(starItem); + if (rechargeableItems.contains(starItem.getItemId())) { + recharges.remove(Integer.valueOf(starItem.getItemId())); + } + } else { + ret.addItem(new MapleShopItem((short) 1000, rs.getInt("itemid"), rs.getInt("price"), rs.getInt("pitch"))); + } + } + for (Integer recharge : recharges) { + ret.addItem(new MapleShopItem((short) 1000, recharge.intValue(), 0, 0)); + } + rs.close(); + ps.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + return ret; + } + + public int getNpcId() { + return npcId; + } + + public int getId() { + return id; + } +} diff --git a/src/server/MapleShopFactory.java b/src/server/MapleShopFactory.java new file mode 100644 index 0000000000..d798b415d5 --- /dev/null +++ b/src/server/MapleShopFactory.java @@ -0,0 +1,70 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Matze + */ +public class MapleShopFactory { + private Map shops = new HashMap(); + private Map npcShops = new HashMap(); + private static MapleShopFactory instance = new MapleShopFactory(); + + public static MapleShopFactory getInstance() { + return instance; + } + + public void reloadShops() { + shops.clear(); + } + + private MapleShop loadShop(int id, boolean isShopId) { + MapleShop ret = MapleShop.createFromDB(id, isShopId); + if (ret != null) { + shops.put(ret.getId(), ret); + npcShops.put(ret.getNpcId(), ret); + } else if (isShopId) { + shops.put(id, null); + } else { + npcShops.put(id, null); + } + return ret; + } + + public MapleShop getShop(int shopId) { + if (shops.containsKey(shopId)) { + return shops.get(shopId); + } + return loadShop(shopId, true); + } + + public MapleShop getShopForNPC(int npcId) { + if (npcShops.containsKey(npcId)) { + npcShops.get(npcId); + } + return loadShop(npcId, false); + } +} diff --git a/src/server/MapleShopItem.java b/src/server/MapleShopItem.java new file mode 100644 index 0000000000..608fabf4f5 --- /dev/null +++ b/src/server/MapleShopItem.java @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +/** + * + * @author Matze + */ +public class MapleShopItem { + private short buyable; + private int itemId; + private int price; + private int pitch; + + public MapleShopItem(short buyable, int itemId, int price, int pitch) { + this.buyable = buyable; + this.itemId = itemId; + this.price = price; + this.pitch = pitch; + } + + public short getBuyable() { + return buyable; + } + + public int getItemId() { + return itemId; + } + + public int getPrice() { + return price; + } + + public int getPitch() { + return pitch; + } +} diff --git a/src/server/MapleStatEffect.java b/src/server/MapleStatEffect.java new file mode 100644 index 0000000000..1277ae2d62 --- /dev/null +++ b/src/server/MapleStatEffect.java @@ -0,0 +1,1485 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server; + +import java.awt.Point; +import java.awt.Rectangle; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ScheduledFuture; + +import net.server.world.MaplePartyCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.life.MapleMonster; +import server.maps.FieldLimit; +import server.maps.MapleDoor; +import server.maps.MapleMap; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.maps.MapleMist; +import server.maps.MapleSummon; +import server.maps.SummonMovementType; +import tools.ArrayMap; +import tools.MaplePacketCreator; +import tools.Pair; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleDisease; +import client.MapleJob; +import client.MapleMount; +import client.MapleStat; +import client.Skill; +import client.SkillFactory; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; +import constants.ItemConstants; +import constants.ServerConstants; +import constants.skills.Aran; +import constants.skills.Assassin; +import constants.skills.Bandit; +import constants.skills.Beginner; +import constants.skills.Bishop; +import constants.skills.BlazeWizard; +import constants.skills.Bowmaster; +import constants.skills.Brawler; +import constants.skills.Buccaneer; +import constants.skills.ChiefBandit; +import constants.skills.Cleric; +import constants.skills.Corsair; +import constants.skills.Crossbowman; +import constants.skills.Crusader; +import constants.skills.DarkKnight; +import constants.skills.DawnWarrior; +import constants.skills.DragonKnight; +import constants.skills.Evan; +import constants.skills.FPArchMage; +import constants.skills.FPMage; +import constants.skills.FPWizard; +import constants.skills.Fighter; +import constants.skills.GM; +import constants.skills.Gunslinger; +import constants.skills.Hermit; +import constants.skills.Hero; +import constants.skills.Hunter; +import constants.skills.ILArchMage; +import constants.skills.ILMage; +import constants.skills.ILWizard; +import constants.skills.Legend; +import constants.skills.Magician; +import constants.skills.Marauder; +import constants.skills.Marksman; +import constants.skills.NightLord; +import constants.skills.NightWalker; +import constants.skills.Noblesse; +import constants.skills.Outlaw; +import constants.skills.Page; +import constants.skills.Paladin; +import constants.skills.Pirate; +import constants.skills.Priest; +import constants.skills.Ranger; +import constants.skills.Rogue; +import constants.skills.Shadower; +import constants.skills.Sniper; +import constants.skills.Spearman; +import constants.skills.SuperGM; +import constants.skills.ThunderBreaker; +import constants.skills.WhiteKnight; +import constants.skills.WindArcher; + +/** + * @author Matze + * @author Frz + */ +public class MapleStatEffect { + + private short watk, matk, wdef, mdef, acc, avoid, speed, jump; + private short hp, mp; + private double hpR, mpR; + private short mpCon, hpCon; + private int duration; + private boolean overTime, repeatEffect; + private int sourceid; + private int moveTo; + private boolean skill; + private List> statups; + private Map monsterStatus; + private int x, y, mobCount, moneyCon, cooldown, morphId = 0, ghost, fatigue, berserk, booster; + private double prop; + private int itemCon, itemConNo; + private int damage, attackCount, fixdamage; + private Point lt, rb; + private byte bulletCount, bulletConsume; + private byte mapProtection; + + public static MapleStatEffect loadSkillEffectFromData(MapleData source, int skillid, boolean overtime) { + return loadFromData(source, skillid, true, overtime); + } + + public static MapleStatEffect loadItemEffectFromData(MapleData source, int itemid) { + return loadFromData(source, itemid, false, false); + } + + private static void addBuffStatPairToListIfNotZero(List> list, MapleBuffStat buffstat, Integer val) { + if (val.intValue() != 0) { + list.add(new Pair<>(buffstat, val)); + } + } + + private static byte mapProtection(int sourceid) { + if(sourceid == 2022001 || sourceid == 2022186) { + return 1; //elnath cold + } + + else if(sourceid == 2022040) { + return 2; //aqua road underwater + } + + else return 0; + } + + private static MapleStatEffect loadFromData(MapleData source, int sourceid, boolean skill, boolean overTime) { + MapleStatEffect ret = new MapleStatEffect(); + ret.duration = MapleDataTool.getIntConvert("time", source, -1); + ret.hp = (short) MapleDataTool.getInt("hp", source, 0); + ret.hpR = MapleDataTool.getInt("hpR", source, 0) / 100.0; + ret.mp = (short) MapleDataTool.getInt("mp", source, 0); + ret.mpR = MapleDataTool.getInt("mpR", source, 0) / 100.0; + ret.mpCon = (short) MapleDataTool.getInt("mpCon", source, 0); + ret.hpCon = (short) MapleDataTool.getInt("hpCon", source, 0); + int iprop = MapleDataTool.getInt("prop", source, 100); + ret.prop = iprop / 100.0; + ret.mobCount = MapleDataTool.getInt("mobCount", source, 1); + ret.cooldown = MapleDataTool.getInt("cooltime", source, 0); + ret.morphId = MapleDataTool.getInt("morph", source, 0); + ret.ghost = MapleDataTool.getInt("ghost", source, 0); + ret.fatigue = MapleDataTool.getInt("incFatigue", source, 0); + ret.repeatEffect = MapleDataTool.getInt("repeatEffect", source, 0) > 0; + + ret.sourceid = sourceid; + ret.skill = skill; + if (!ret.skill && ret.duration > -1) { + ret.overTime = true; + } else { + ret.duration *= 1000; // items have their times stored in ms, of course + ret.overTime = overTime; + } + ArrayList> statups = new ArrayList<>(); + ret.watk = (short) MapleDataTool.getInt("pad", source, 0); + ret.wdef = (short) MapleDataTool.getInt("pdd", source, 0); + ret.matk = (short) MapleDataTool.getInt("mad", source, 0); + ret.mdef = (short) MapleDataTool.getInt("mdd", source, 0); + ret.acc = (short) MapleDataTool.getIntConvert("acc", source, 0); + ret.avoid = (short) MapleDataTool.getInt("eva", source, 0); + + ret.speed = (short) MapleDataTool.getInt("speed", source, 0); + ret.jump = (short) MapleDataTool.getInt("jump", source, 0); + + if((sourceid == Beginner.NIMBLE_FEET || sourceid == Noblesse.NIMBLE_FEET || sourceid == Evan.NIMBLE_FEET || sourceid == Legend.AGILE_BODY) && ServerConstants.USE_ULTRA_NIMBLE_FEET == true) { + ret.jump = (short)(ret.speed * 4); + ret.speed *= 15; + } + + ret.berserk = MapleDataTool.getInt("berserk", source, 0); + ret.booster = MapleDataTool.getInt("booster", source, 0); + + ret.mapProtection = mapProtection(sourceid); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.MAP_PROTECTION, Integer.valueOf(ret.mapProtection)); + + if (ret.overTime && ret.getSummonMovementType() == null) { + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.WATK, Integer.valueOf(ret.watk)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.WDEF, Integer.valueOf(ret.wdef)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.MATK, Integer.valueOf(ret.matk)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.MDEF, Integer.valueOf(ret.mdef)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.ACC, Integer.valueOf(ret.acc)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.AVOID, Integer.valueOf(ret.avoid)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.SPEED, Integer.valueOf(ret.speed)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.JUMP, Integer.valueOf(ret.jump)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.PYRAMID_PQ, Integer.valueOf(ret.berserk)); + addBuffStatPairToListIfNotZero(statups, MapleBuffStat.BOOSTER, Integer.valueOf(ret.booster)); + } + MapleData ltd = source.getChildByPath("lt"); + if (ltd != null) { + ret.lt = (Point) ltd.getData(); + ret.rb = (Point) source.getChildByPath("rb").getData(); + } + + int x = MapleDataTool.getInt("x", source, 0); + + if((sourceid == Beginner.RECOVERY || sourceid == Noblesse.RECOVERY || sourceid == Evan.RECOVERY || sourceid == Legend.RECOVERY) && ServerConstants.USE_ULTRA_RECOVERY == true) { + x *= 10; + } + ret.x = x; + ret.y = MapleDataTool.getInt("y", source, 0); + + ret.damage = MapleDataTool.getIntConvert("damage", source, 100); + ret.fixdamage = MapleDataTool.getIntConvert("fixdamage", source, -1); + ret.attackCount = MapleDataTool.getIntConvert("attackCount", source, 1); + ret.bulletCount = (byte) MapleDataTool.getIntConvert("bulletCount", source, 1); + ret.bulletConsume = (byte) MapleDataTool.getIntConvert("bulletConsume", source, 0); + ret.moneyCon = MapleDataTool.getIntConvert("moneyCon", source, 0); + ret.itemCon = MapleDataTool.getInt("itemCon", source, 0); + ret.itemConNo = MapleDataTool.getInt("itemConNo", source, 0); + ret.moveTo = MapleDataTool.getInt("moveTo", source, -1); + Map monsterStatus = new ArrayMap<>(); + if (skill) { + switch (sourceid) { + // BEGINNER + case Beginner.RECOVERY: + case Noblesse.RECOVERY: + case Legend.RECOVERY: + case Evan.RECOVERY: + statups.add(new Pair<>(MapleBuffStat.RECOVERY, Integer.valueOf(x))); + break; + case Beginner.ECHO_OF_HERO: + case Noblesse.ECHO_OF_HERO: + case Legend.ECHO_OF_HERO: + case Evan.ECHO_OF_HERO: + statups.add(new Pair<>(MapleBuffStat.ECHO_OF_HERO, Integer.valueOf(ret.x))); + break; + case Beginner.MONSTER_RIDER: + case Noblesse.MONSTER_RIDER: + case Legend.MONSTER_RIDER: + case Corsair.BATTLE_SHIP: + case Beginner.SPACESHIP: + case Noblesse.SPACESHIP: + case Beginner.YETI_MOUNT1: + case Beginner.YETI_MOUNT2: + case Noblesse.YETI_MOUNT1: + case Noblesse.YETI_MOUNT2: + case Legend.YETI_MOUNT1: + case Legend.YETI_MOUNT2: + case Beginner.WITCH_BROOMSTICK: + case Noblesse.WITCH_BROOMSTICK: + case Legend.WITCH_BROOMSTICK: + case Beginner.BALROG_MOUNT: + case Noblesse.BALROG_MOUNT: + case Legend.BALROG_MOUNT: + statups.add(new Pair<>(MapleBuffStat.MONSTER_RIDING, Integer.valueOf(sourceid))); + break; + case Beginner.BERSERK_FURY: + case Noblesse.BERSERK_FURY: + case Evan.BERSERK_FURY: + statups.add(new Pair<>(MapleBuffStat.BERSERK_FURY, Integer.valueOf(1))); + break; + case Beginner.INVINCIBLE_BARRIER: + case Noblesse.INVINCIBLE_BARRIER: + case Legend.INVICIBLE_BARRIER: + case Evan.INVINCIBLE_BARRIER: + statups.add(new Pair<>(MapleBuffStat.DIVINE_BODY, Integer.valueOf(1))); + break; + case Fighter.POWER_GUARD: + case Page.POWER_GUARD: + statups.add(new Pair<>(MapleBuffStat.POWERGUARD, Integer.valueOf(x))); + break; + case Spearman.HYPER_BODY: + case GM.HYPER_BODY: + case SuperGM.HYPER_BODY: + statups.add(new Pair<>(MapleBuffStat.HYPERBODYHP, Integer.valueOf(x))); + statups.add(new Pair<>(MapleBuffStat.HYPERBODYMP, Integer.valueOf(ret.y))); + break; + case Crusader.COMBO: + case DawnWarrior.COMBO: + statups.add(new Pair<>(MapleBuffStat.COMBO, Integer.valueOf(1))); + break; + case WhiteKnight.BW_FIRE_CHARGE: + case WhiteKnight.BW_ICE_CHARGE: + case WhiteKnight.BW_LIT_CHARGE: + case WhiteKnight.SWORD_FIRE_CHARGE: + case WhiteKnight.SWORD_ICE_CHARGE: + case WhiteKnight.SWORD_LIT_CHARGE: + case Paladin.BW_HOLY_CHARGE: + case Paladin.SWORD_HOLY_CHARGE: + case DawnWarrior.SOUL_CHARGE: + case ThunderBreaker.LIGHTNING_CHARGE: + statups.add(new Pair<>(MapleBuffStat.WK_CHARGE, Integer.valueOf(x))); + break; + case DragonKnight.DRAGON_BLOOD: + statups.add(new Pair<>(MapleBuffStat.DRAGONBLOOD, Integer.valueOf(ret.x))); + break; + case DragonKnight.DRAGON_ROAR: + ret.hpR = -x / 100.0; + break; + case Hero.STANCE: + case Paladin.STANCE: + case DarkKnight.STANCE: + case Aran.FREEZE_STANDING: + statups.add(new Pair<>(MapleBuffStat.STANCE, Integer.valueOf(iprop))); + break; + case DawnWarrior.FINAL_ATTACK: + case WindArcher.FINAL_ATTACK: + statups.add(new Pair<>(MapleBuffStat.FINALATTACK, Integer.valueOf(x))); + break; + // MAGICIAN + case Magician.MAGIC_GUARD: + case BlazeWizard.MAGIC_GUARD: + case Evan.MAGIC_GUARD: + statups.add(new Pair<>(MapleBuffStat.MAGIC_GUARD, Integer.valueOf(x))); + break; + case Cleric.INVINCIBLE: + statups.add(new Pair<>(MapleBuffStat.INVINCIBLE, Integer.valueOf(x))); + break; + case Priest.HOLY_SYMBOL: + case SuperGM.HOLY_SYMBOL: + statups.add(new Pair<>(MapleBuffStat.HOLY_SYMBOL, Integer.valueOf(x))); + break; + case FPArchMage.INFINITY: + case ILArchMage.INFINITY: + case Bishop.INFINITY: + statups.add(new Pair<>(MapleBuffStat.INFINITY, Integer.valueOf(x))); + break; + case FPArchMage.MANA_REFLECTION: + case ILArchMage.MANA_REFLECTION: + case Bishop.MANA_REFLECTION: + statups.add(new Pair<>(MapleBuffStat.MANA_REFLECTION, Integer.valueOf(1))); + break; + case Bishop.HOLY_SHIELD: + statups.add(new Pair<>(MapleBuffStat.HOLY_SHIELD, Integer.valueOf(x))); + break; + case BlazeWizard.ELEMENTAL_RESET: + case Evan.ELEMENTAL_RESET: + statups.add(new Pair<>(MapleBuffStat.MAGIC_SHIELD, Integer.valueOf(x))); + break; + case Evan.MAGIC_SHIELD: + statups.add(new Pair<>(MapleBuffStat.MAGIC_SHIELD, Integer.valueOf(x))); + break; + case Evan.MAGIC_RESISTANCE: + statups.add(new Pair<>(MapleBuffStat.MAGIC_RESISTANCE, Integer.valueOf(x))); + break; + case Evan.SLOW: + statups.add(new Pair<>(MapleBuffStat.SLOW, Integer.valueOf(x))); + // BOWMAN + case Priest.MYSTIC_DOOR: + case Hunter.SOUL_ARROW: + case Crossbowman.SOUL_ARROW: + case WindArcher.SOUL_ARROW: + statups.add(new Pair<>(MapleBuffStat.SOULARROW, Integer.valueOf(x))); + break; + case Ranger.PUPPET: + case Sniper.PUPPET: + case WindArcher.PUPPET: + case Outlaw.OCTOPUS: + case Corsair.WRATH_OF_THE_OCTOPI: + statups.add(new Pair<>(MapleBuffStat.PUPPET, Integer.valueOf(1))); + break; + case Bowmaster.CONCENTRATE: + statups.add(new Pair<>(MapleBuffStat.CONCENTRATE, x)); + break; + case Bowmaster.HAMSTRING: + statups.add(new Pair<>(MapleBuffStat.HAMSTRING, Integer.valueOf(x))); + monsterStatus.put(MonsterStatus.SPEED, x); + break; + case Marksman.BLIND: + statups.add(new Pair<>(MapleBuffStat.BLIND, Integer.valueOf(x))); + monsterStatus.put(MonsterStatus.ACC, x); + break; + case Bowmaster.SHARP_EYES: + case Marksman.SHARP_EYES: + statups.add(new Pair<>(MapleBuffStat.SHARP_EYES, Integer.valueOf(ret.x << 8 | ret.y))); + break; + // THIEF + case Rogue.DARK_SIGHT: + case WindArcher.WIND_WALK: + case NightWalker.DARK_SIGHT: + statups.add(new Pair<>(MapleBuffStat.DARKSIGHT, Integer.valueOf(x))); + break; + case Hermit.MESO_UP: + statups.add(new Pair<>(MapleBuffStat.MESOUP, Integer.valueOf(x))); + break; + case Hermit.SHADOW_PARTNER: + case NightWalker.SHADOW_PARTNER: + statups.add(new Pair<>(MapleBuffStat.SHADOWPARTNER, Integer.valueOf(x))); + break; + case ChiefBandit.MESO_GUARD: + statups.add(new Pair<>(MapleBuffStat.MESOGUARD, Integer.valueOf(x))); + break; + case ChiefBandit.PICKPOCKET: + statups.add(new Pair<>(MapleBuffStat.PICKPOCKET, Integer.valueOf(x))); + break; + case NightLord.SHADOW_STARS: + statups.add(new Pair<>(MapleBuffStat.SHADOW_CLAW, Integer.valueOf(0))); + break; + // PIRATE + case Pirate.DASH: + case ThunderBreaker.DASH: + case Beginner.SPACE_DASH: + case Noblesse.SPACE_DASH: + statups.add(new Pair<>(MapleBuffStat.DASH2, Integer.valueOf(ret.x))); + statups.add(new Pair<>(MapleBuffStat.DASH, Integer.valueOf(ret.y))); + break; + case Corsair.SPEED_INFUSION: + case Buccaneer.SPEED_INFUSION: + case ThunderBreaker.SPEED_INFUSION: + statups.add(new Pair<>(MapleBuffStat.SPEED_INFUSION, Integer.valueOf(x))); + break; + case Outlaw.HOMING_BEACON: + case Corsair.BULLSEYE: + statups.add(new Pair<>(MapleBuffStat.HOMING_BEACON, Integer.valueOf(x))); + break; + case ThunderBreaker.SPARK: + statups.add(new Pair<>(MapleBuffStat.SPARK, Integer.valueOf(x))); + break; + // MULTIPLE + case Aran.POLEARM_BOOSTER: + case Fighter.AXE_BOOSTER: + case Fighter.SWORD_BOOSTER: + case Page.BW_BOOSTER: + case Page.SWORD_BOOSTER: + case Spearman.POLEARM_BOOSTER: + case Spearman.SPEAR_BOOSTER: + case Hunter.BOW_BOOSTER: + case Crossbowman.CROSSBOW_BOOSTER: + case Assassin.CLAW_BOOSTER: + case Bandit.DAGGER_BOOSTER: + case FPMage.SPELL_BOOSTER: + case ILMage.SPELL_BOOSTER: + case Brawler.KNUCKLER_BOOSTER: + case Gunslinger.GUN_BOOSTER: + case DawnWarrior.SWORD_BOOSTER: + case BlazeWizard.SPELL_BOOSTER: + case WindArcher.BOW_BOOSTER: + case NightWalker.CLAW_BOOSTER: + case ThunderBreaker.KNUCKLER_BOOSTER: + case Evan.MAGIC_BOOSTER: + statups.add(new Pair<>(MapleBuffStat.BOOSTER, Integer.valueOf(x))); + break; + case Hero.MAPLE_WARRIOR: + case Paladin.MAPLE_WARRIOR: + case DarkKnight.MAPLE_WARRIOR: + case FPArchMage.MAPLE_WARRIOR: + case ILArchMage.MAPLE_WARRIOR: + case Bishop.MAPLE_WARRIOR: + case Bowmaster.MAPLE_WARRIOR: + case Marksman.MAPLE_WARRIOR: + case NightLord.MAPLE_WARRIOR: + case Shadower.MAPLE_WARRIOR: + case Corsair.MAPLE_WARRIOR: + case Buccaneer.MAPLE_WARRIOR: + case Aran.MAPLE_WARRIOR: + case Evan.MAPLE_WARRIOR: + statups.add(new Pair<>(MapleBuffStat.MAPLE_WARRIOR, Integer.valueOf(ret.x))); + break; + // SUMMON + case Ranger.SILVER_HAWK: + case Sniper.GOLDEN_EAGLE: + statups.add(new Pair<>(MapleBuffStat.SUMMON, Integer.valueOf(1))); + monsterStatus.put(MonsterStatus.STUN, Integer.valueOf(1)); + break; + case FPArchMage.ELQUINES: + case Marksman.FROST_PREY: + statups.add(new Pair<>(MapleBuffStat.SUMMON, Integer.valueOf(1))); + monsterStatus.put(MonsterStatus.FREEZE, Integer.valueOf(1)); + break; + case Priest.SUMMON_DRAGON: + case Bowmaster.PHOENIX: + case ILArchMage.IFRIT: + case Bishop.BAHAMUT: + case DarkKnight.BEHOLDER: + case Outlaw.GAVIOTA: + case DawnWarrior.SOUL: + case BlazeWizard.FLAME: + case WindArcher.STORM: + case NightWalker.DARKNESS: + case ThunderBreaker.LIGHTNING: + case BlazeWizard.IFRIT: + statups.add(new Pair<>(MapleBuffStat.SUMMON, Integer.valueOf(1))); + break; + // ----------------------------- MONSTER STATUS ---------------------------------- // + case Crusader.ARMOR_CRASH: + case DragonKnight.POWER_CRASH: + case WhiteKnight.MAGIC_CRASH: + monsterStatus.put(MonsterStatus.SEAL_SKILL, Integer.valueOf(1)); + break; + case Rogue.DISORDER: + monsterStatus.put(MonsterStatus.WATK, Integer.valueOf(ret.x)); + monsterStatus.put(MonsterStatus.WDEF, Integer.valueOf(ret.y)); + break; + case Corsair.HYPNOTIZE: + monsterStatus.put(MonsterStatus.INERTMOB, 1); + break; + case NightLord.NINJA_AMBUSH: + case Shadower.NINJA_AMBUSH: + monsterStatus.put(MonsterStatus.NINJA_AMBUSH, Integer.valueOf(ret.damage)); + break; + case Page.THREATEN: + monsterStatus.put(MonsterStatus.WATK, Integer.valueOf(ret.x)); + monsterStatus.put(MonsterStatus.WDEF, Integer.valueOf(ret.y)); + break; + case Crusader.AXE_COMA: + case Crusader.SWORD_COMA: + case Crusader.SHOUT: + case WhiteKnight.CHARGE_BLOW: + case Hunter.ARROW_BOMB: + case ChiefBandit.ASSAULTER: + case Shadower.BOOMERANG_STEP: + case Brawler.BACK_SPIN_BLOW: + case Brawler.DOUBLE_UPPERCUT: + case Buccaneer.DEMOLITION: + case Buccaneer.SNATCH: + case Buccaneer.BARRAGE: + case Gunslinger.BLANK_SHOT: + case DawnWarrior.COMA: + case Aran.ROLLING_SPIN: + case Evan.FIRE_BREATH: + case Evan.BLAZE: + monsterStatus.put(MonsterStatus.STUN, Integer.valueOf(1)); + break; + case NightLord.TAUNT: + case Shadower.TAUNT: + monsterStatus.put(MonsterStatus.SHOWDOWN, ret.x); + monsterStatus.put(MonsterStatus.MDEF, ret.x); + monsterStatus.put(MonsterStatus.WDEF, ret.x); + break; + case ILWizard.COLD_BEAM: + case ILMage.ICE_STRIKE: + case ILArchMage.BLIZZARD: + case ILMage.ELEMENT_COMPOSITION: + case Sniper.BLIZZARD: + case Outlaw.ICE_SPLITTER: + case FPArchMage.PARALYZE: + case Aran.COMBO_TEMPEST: + case Evan.ICE_BREATH: + monsterStatus.put(MonsterStatus.FREEZE, Integer.valueOf(1)); + ret.duration *= 2; // freezing skills are a little strange + break; + case FPWizard.SLOW: + case ILWizard.SLOW: + case BlazeWizard.SLOW: + monsterStatus.put(MonsterStatus.SPEED, Integer.valueOf(ret.x)); + break; + case FPWizard.POISON_BREATH: + case FPMage.ELEMENT_COMPOSITION: + monsterStatus.put(MonsterStatus.POISON, Integer.valueOf(1)); + break; + case Priest.DOOM: + monsterStatus.put(MonsterStatus.DOOM, Integer.valueOf(1)); + break; + case ILMage.SEAL: + case FPMage.SEAL: + monsterStatus.put(MonsterStatus.SEAL, Integer.valueOf(1)); + break; + case Hermit.SHADOW_WEB: // shadow web + case NightWalker.SHADOW_WEB: + monsterStatus.put(MonsterStatus.SHADOW_WEB, Integer.valueOf(1)); + break; + case FPArchMage.FIRE_DEMON: + case ILArchMage.ICE_DEMON: + monsterStatus.put(MonsterStatus.POISON, Integer.valueOf(1)); + monsterStatus.put(MonsterStatus.FREEZE, Integer.valueOf(1)); + break; + case Evan.PHANTOM_IMPRINT: + monsterStatus.put(MonsterStatus.PHANTOM_IMPRINT, Integer.valueOf(x)); + //ARAN + case Aran.COMBO_ABILITY: + statups.add(new Pair<>(MapleBuffStat.ARAN_COMBO, Integer.valueOf(100))); + break; + case Aran.COMBO_BARRIER: + statups.add(new Pair<>(MapleBuffStat.COMBO_BARRIER, Integer.valueOf(ret.x))); + break; + case Aran.COMBO_DRAIN: + statups.add(new Pair<>(MapleBuffStat.COMBO_DRAIN, Integer.valueOf(ret.x))); + break; + case Aran.SMART_KNOCKBACK: + statups.add(new Pair<>(MapleBuffStat.SMART_KNOCKBACK, Integer.valueOf(ret.x))); + break; + case Aran.BODY_PRESSURE: + statups.add(new Pair<>(MapleBuffStat.BODY_PRESSURE, Integer.valueOf(ret.x))); + break; + case Aran.SNOW_CHARGE: + statups.add(new Pair<>(MapleBuffStat.WK_CHARGE, Integer.valueOf(ret.duration))); + break; + default: + break; + } + } + if (ret.isMorph()) { + statups.add(new Pair<>(MapleBuffStat.MORPH, Integer.valueOf(ret.getMorph()))); + } + if (ret.ghost > 0 && !skill) { + statups.add(new Pair<>(MapleBuffStat.GHOST_MORPH, Integer.valueOf(ret.ghost))); + } + ret.monsterStatus = monsterStatus; + statups.trimToSize(); + ret.statups = statups; + return ret; + } + + /** + * @param applyto + * @param obj + * @param attack damage done by the skill + */ + public void applyPassive(MapleCharacter applyto, MapleMapObject obj, int attack) { + if (makeChanceResult()) { + switch (sourceid) { // MP eater + case FPWizard.MP_EATER: + case ILWizard.MP_EATER: + case Cleric.MP_EATER: + if (obj == null || obj.getType() != MapleMapObjectType.MONSTER) { + return; + } + MapleMonster mob = (MapleMonster) obj; // x is absorb percentage + if (!mob.isBoss()) { + int absorbMp = Math.min((int) (mob.getMaxMp() * (getX() / 100.0)), mob.getMp()); + if (absorbMp > 0) { + mob.setMp(mob.getMp() - absorbMp); + applyto.addMP(absorbMp); + applyto.getClient().announce(MaplePacketCreator.showOwnBuffEffect(sourceid, 1)); + applyto.getMap().broadcastMessage(applyto, MaplePacketCreator.showBuffeffect(applyto.getId(), sourceid, 1), false); + } + } + break; + } + } + } + + public boolean applyTo(MapleCharacter chr) { + return applyTo(chr, chr, true, null); + } + + public boolean applyTo(MapleCharacter chr, Point pos) { + return applyTo(chr, chr, true, pos); + } + + private boolean applyTo(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary, Point pos) { + if (skill && (sourceid == GM.HIDE || sourceid == SuperGM.HIDE)) { + applyto.toggleHide(false); + return true; + } + int hpchange = calcHPChange(applyfrom, primary); + int mpchange = calcMPChange(applyfrom, primary); + + if (primary) { + if (itemConNo != 0) { + MapleInventoryManipulator.removeById(applyto.getClient(), MapleItemInformationProvider.getInstance().getInventoryType(itemCon), itemCon, itemConNo, false, true); + } + } + List> hpmpupdate = new ArrayList<>(2); + if (!primary && isResurrection()) { + hpchange = applyto.getMaxHp(); + applyto.setStance(0); + applyto.getMap().broadcastMessage(applyto, MaplePacketCreator.removePlayerFromMap(applyto.getId()), false); + applyto.getMap().broadcastMessage(applyto, MaplePacketCreator.spawnPlayerMapobject(applyto), false); + } + if (isDispel() && makeChanceResult()) { + applyto.dispelDebuffs(); + } else if (isHeroWill()) { + applyto.dispelDebuff(MapleDisease.SEDUCE); + } + if (isComboReset()) { + applyto.setCombo((short) 0); + } + /*if (applyfrom.getMp() < getMpCon()) { + AutobanFactory.MPCON.addPoint(applyfrom.getAutobanManager(), "mpCon hack for skill:" + sourceid + "; Player MP: " + applyto.getMp() + " MP Needed: " + getMpCon()); + } */ + if (hpchange != 0) { + if (hpchange < 0 && (-hpchange) > applyto.getHp()) { + return false; + } + int newHp = applyto.getHp() + hpchange; + if (newHp < 1) { + newHp = 1; + } + applyto.setHp(newHp); + hpmpupdate.add(new Pair<>(MapleStat.HP, Integer.valueOf(applyto.getHp()))); + } + int newMp = applyto.getMp() + mpchange; + if (mpchange != 0) { + if (mpchange < 0 && -mpchange > applyto.getMp()) { + return false; + } + + applyto.setMp(newMp); + hpmpupdate.add(new Pair<>(MapleStat.MP, Integer.valueOf(applyto.getMp()))); + } + applyto.getClient().announce(MaplePacketCreator.updatePlayerStats(hpmpupdate, true, applyto)); + if (moveTo != -1) { + if (moveTo != applyto.getMapId()) { + MapleMap target; + if (moveTo == 999999999) { + target = applyto.getMap().getReturnMap(); + } else { + target = applyto.getClient().getWorldServer().getChannel(applyto.getClient().getChannel()).getMapFactory().getMap(moveTo); + int targetid = target.getId() / 10000000; + if (targetid != 60 && applyto.getMapId() / 10000000 != 61 && targetid != applyto.getMapId() / 10000000 && targetid != 21 && targetid != 20 && targetid != 12 && (applyto.getMapId() / 10000000 != 10 && applyto.getMapId() / 10000000 != 12)) { + return false; + } + } + applyto.changeMap(target); + } else { + return false; + } + + } + if (isShadowClaw()) { + int projectile = 0; + MapleInventory use = applyto.getInventory(MapleInventoryType.USE); + for (int i = 1; i <= use.getSlotLimit(); i++) { // impose order... + Item item = use.getItem((short) i); + if (item != null) { + if (ItemConstants.isThrowingStar(item.getItemId()) && item.getQuantity() >= 200) { + projectile = item.getItemId(); + break; + } + } + } + if (projectile == 0) { + return false; + } else { + MapleInventoryManipulator.removeById(applyto.getClient(), MapleInventoryType.USE, projectile, 200, false, true); + } + + } + SummonMovementType summonMovementType = getSummonMovementType(); + if (overTime || isCygnusFA() || summonMovementType != null) { + applyBuffEffect(applyfrom, applyto, primary); + } + + if (primary && (overTime || isHeal())) { + applyBuff(applyfrom); + } + + if (primary && isMonsterBuff()) { + applyMonsterBuff(applyfrom); + } + + if (this.getFatigue() != 0) { + applyto.getMount().setTiredness(applyto.getMount().getTiredness() + this.getFatigue()); + } + + if (summonMovementType != null && pos != null) { + final MapleSummon tosummon = new MapleSummon(applyfrom, sourceid, pos, summonMovementType); + applyfrom.getMap().spawnSummon(tosummon); + applyfrom.addSummon(sourceid, tosummon); + tosummon.addHP(x); + if (isBeholder()) { + tosummon.addHP(1); + } + } + if (isMagicDoor() && !FieldLimit.DOOR.check(applyto.getMap().getFieldLimit())) { // Magic Door + int y = applyto.getFh(); + if (y == 0) { + y = applyto.getPosition().y; + } + Point doorPosition = new Point(applyto.getPosition().x, y); + MapleDoor door = new MapleDoor(applyto, doorPosition); + if (applyto.getParty() != null) {// out of town door + for (MaplePartyCharacter partyMembers : applyto.getParty().getMembers()) { + partyMembers.getPlayer().addDoor(door); + partyMembers.updateDoor(door); + } + applyto.silentPartyUpdate(); + } else { + applyto.addDoor(door); + } + applyto.getMap().spawnDoor(door); + door = new MapleDoor(door); //The town door + if (applyto.getParty() != null) {// update town doors + for (MaplePartyCharacter partyMembers : applyto.getParty().getMembers()) { + partyMembers.getPlayer().addDoor(door); + partyMembers.updateDoor(door); + } + applyto.silentPartyUpdate(); + } else { + applyto.addDoor(door); + } + door.getTown().spawnDoor(door); + applyto.disableDoor(); + } else if (isMist()) { + Rectangle bounds = calculateBoundingBox(sourceid == NightWalker.POISON_BOMB ? pos : applyfrom.getPosition(), applyfrom.isFacingLeft()); + MapleMist mist = new MapleMist(bounds, applyfrom, this); + applyfrom.getMap().spawnMist(mist, getDuration(), mist.isPoisonMist(), false, mist.isRecoveryMist()); + } else if(isTimeLeap()) { + applyto.removeAllCooldownsExcept(Buccaneer.TIME_LEAP, true); + } + return true; + } + + private void applyBuff(MapleCharacter applyfrom) { + if (isPartyBuff() && (applyfrom.getParty() != null || isGmBuff())) { + Rectangle bounds = calculateBoundingBox(applyfrom.getPosition(), applyfrom.isFacingLeft()); + List affecteds = applyfrom.getMap().getMapObjectsInRect(bounds, Arrays.asList(MapleMapObjectType.PLAYER)); + List affectedp = new ArrayList<>(affecteds.size()); + for (MapleMapObject affectedmo : affecteds) { + MapleCharacter affected = (MapleCharacter) affectedmo; + if (affected != applyfrom && (isGmBuff() || applyfrom.getParty().equals(affected.getParty()))) { + if ((isResurrection() && !affected.isAlive()) || (!isResurrection() && affected.isAlive())) { + affectedp.add(affected); + } + } + } + for (MapleCharacter affected : affectedp) { + applyTo(applyfrom, affected, false, null); + affected.getClient().announce(MaplePacketCreator.showOwnBuffEffect(sourceid, 2)); + affected.getMap().broadcastMessage(affected, MaplePacketCreator.showBuffeffect(affected.getId(), sourceid, 2), false); + } + } + } + + private void applyMonsterBuff(MapleCharacter applyfrom) { + Rectangle bounds = calculateBoundingBox(applyfrom.getPosition(), applyfrom.isFacingLeft()); + List affected = applyfrom.getMap().getMapObjectsInRect(bounds, Arrays.asList(MapleMapObjectType.MONSTER)); + Skill skill_ = SkillFactory.getSkill(sourceid); + int i = 0; + for (MapleMapObject mo : affected) { + MapleMonster monster = (MapleMonster) mo; + if (isDispel()) { + monster.debuffMob(skill_.getId()); + } else { + if (makeChanceResult()) { + monster.applyStatus(applyfrom, new MonsterStatusEffect(getMonsterStati(), skill_, null, false), isPoison(), getDuration()); + if (isCrash()) { + monster.debuffMob(skill_.getId()); + } + } + } + i++; + if (i >= mobCount) { + break; + } + } + } + + private Rectangle calculateBoundingBox(Point posFrom, boolean facingLeft) { + Point mylt; + Point myrb; + if (facingLeft) { + mylt = new Point(lt.x + posFrom.x, lt.y + posFrom.y); + myrb = new Point(rb.x + posFrom.x, rb.y + posFrom.y); + } else { + myrb = new Point(-lt.x + posFrom.x, rb.y + posFrom.y); + mylt = new Point(-rb.x + posFrom.x, lt.y + posFrom.y); + } + Rectangle bounds = new Rectangle(mylt.x, mylt.y, myrb.x - mylt.x, myrb.y - mylt.y); + return bounds; + } + + public void silentApplyBuff(MapleCharacter chr, long starttime) { + int localDuration = duration; + localDuration = alchemistModifyVal(chr, localDuration, false); + CancelEffectAction cancelAction = new CancelEffectAction(chr, this, starttime); + ScheduledFuture schedule = TimerManager.getInstance().schedule(cancelAction, ((starttime + localDuration) - System.currentTimeMillis())); + chr.registerEffect(this, starttime, schedule); + SummonMovementType summonMovementType = getSummonMovementType(); + if (summonMovementType != null) { + final MapleSummon tosummon = new MapleSummon(chr, sourceid, chr.getPosition(), summonMovementType); + if (!tosummon.isStationary()) { + chr.addSummon(sourceid, tosummon); + tosummon.addHP(x); + } + } + if (sourceid == Corsair.BATTLE_SHIP) { + chr.announce(MaplePacketCreator.skillCooldown(5221999, chr.getBattleshipHp())); + } + } + + public final void applyComboBuff(final MapleCharacter applyto, int combo) { + final List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.ARAN_COMBO, combo)); + applyto.getClient().announce(MaplePacketCreator.giveBuff(sourceid, 99999, stat)); + + final long starttime = System.currentTimeMillis(); +// final CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, starttime); +// final ScheduledFuture schedule = TimerManager.getInstance().schedule(cancelAction, ((starttime + 99999) - System.currentTimeMillis())); + applyto.registerEffect(this, starttime, null); + } + + private void applyBuffEffect(MapleCharacter applyfrom, MapleCharacter applyto, boolean primary) { + if (!isMonsterRiding()) { + applyto.cancelEffect(this, true, -1); + } + + List> localstatups = statups; + int localDuration = duration; + int localsourceid = sourceid; + int seconds = localDuration / 1000; + MapleMount givemount = null; + if (isMonsterRiding()) { + int ridingLevel = 0; + Item mount = applyfrom.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18); + if (mount != null) { + ridingLevel = mount.getItemId(); + } + if (sourceid == Corsair.BATTLE_SHIP) { + ridingLevel = 1932000; + } else if (sourceid == Beginner.SPACESHIP || sourceid == Noblesse.SPACESHIP) { + ridingLevel = 1932000 + applyto.getSkillLevel(sourceid); + } else if (sourceid == Beginner.YETI_MOUNT1 || sourceid == Noblesse.YETI_MOUNT1 || sourceid == Legend.YETI_MOUNT1) { + ridingLevel = 1932003; + } else if (sourceid == Beginner.YETI_MOUNT2 || sourceid == Noblesse.YETI_MOUNT2 || sourceid == Legend.YETI_MOUNT2) { + ridingLevel = 1932004; + } else if (sourceid == Beginner.WITCH_BROOMSTICK || sourceid == Noblesse.WITCH_BROOMSTICK || sourceid == Legend.WITCH_BROOMSTICK) { + ridingLevel = 1932005; + } else if (sourceid == Beginner.BALROG_MOUNT || sourceid == Noblesse.BALROG_MOUNT || sourceid == Legend.BALROG_MOUNT) { + ridingLevel = 1932010; + } else { + if (applyto.getMount() == null) { + applyto.mount(ridingLevel, sourceid); + } + applyto.getMount().startSchedule(); + } + if (sourceid == Corsair.BATTLE_SHIP) { + givemount = new MapleMount(applyto, 1932000, sourceid); + } else if (sourceid == Beginner.SPACESHIP || sourceid == Noblesse.SPACESHIP) { + givemount = new MapleMount(applyto, 1932000 + applyto.getSkillLevel(sourceid), sourceid); + } else if (sourceid == Beginner.YETI_MOUNT1 || sourceid == Noblesse.YETI_MOUNT1 || sourceid == Legend.YETI_MOUNT1) { + givemount = new MapleMount(applyto, 1932003, sourceid); + } else if (sourceid == Beginner.YETI_MOUNT2 || sourceid == Noblesse.YETI_MOUNT2 || sourceid == Legend.YETI_MOUNT2) { + givemount = new MapleMount(applyto, 1932004, sourceid); + } else if (sourceid == Beginner.WITCH_BROOMSTICK || sourceid == Noblesse.WITCH_BROOMSTICK || sourceid == Legend.WITCH_BROOMSTICK) { + givemount = new MapleMount(applyto, 1932005, sourceid); + } else if (sourceid == Beginner.BALROG_MOUNT || sourceid == Noblesse.BALROG_MOUNT || sourceid == Legend.BALROG_MOUNT) { + givemount = new MapleMount(applyto, 1932010, sourceid); + } else { + givemount = applyto.getMount(); + } + localDuration = sourceid; + localsourceid = ridingLevel; + localstatups = Collections.singletonList(new Pair<>(MapleBuffStat.MONSTER_RIDING, 0)); + } else if (isSkillMorph()) { + localstatups = Collections.singletonList(new Pair<>(MapleBuffStat.MORPH, getMorph(applyto))); + } + if (primary) { + localDuration = alchemistModifyVal(applyfrom, localDuration, false); + applyto.getMap().broadcastMessage(applyto, MaplePacketCreator.showBuffeffect(applyto.getId(), sourceid, 1, (byte) 3), false); + } + if (localstatups.size() > 0) { + byte[] buff = null; + byte[] mbuff = null; + if (getSummonMovementType() == null) { + buff = MaplePacketCreator.giveBuff((skill ? sourceid : -sourceid), localDuration, localstatups); + } + if (isDash()) { + buff = MaplePacketCreator.givePirateBuff(statups, sourceid, seconds); + mbuff = MaplePacketCreator.giveForgeinPirateBuff(applyto.getId(), sourceid, seconds, localstatups); + } else if (isInfusion()) { + buff = MaplePacketCreator.givePirateBuff(localstatups, sourceid, seconds); + mbuff = MaplePacketCreator.giveForgeinPirateBuff(applyto.getId(), sourceid, seconds, localstatups); + } else if (isDs()) { + List> dsstat = Collections.singletonList(new Pair<>(MapleBuffStat.DARKSIGHT, 0)); + mbuff = MaplePacketCreator.giveForeignBuff(applyto.getId(), dsstat); + } else if (isCombo()) { + mbuff = MaplePacketCreator.giveForeignBuff(applyto.getId(), statups); + } else if (isMonsterRiding()) { + buff = MaplePacketCreator.giveBuff(localsourceid, localDuration, localstatups); + mbuff = MaplePacketCreator.showMonsterRiding(applyto.getId(), givemount); + localDuration = duration; + if (sourceid == Corsair.BATTLE_SHIP) {//hp + if (applyto.getBattleshipHp() == 0) { + applyto.resetBattleshipHp(); + } + } + } else if (isShadowPartner()) { + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.SHADOWPARTNER, 0)); + mbuff = MaplePacketCreator.giveForeignBuff(applyto.getId(), stat); + } else if (isSoulArrow()) { + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.SOULARROW, 0)); + mbuff = MaplePacketCreator.giveForeignBuff(applyto.getId(), stat); + } else if (isEnrage()) { + applyto.handleOrbconsume(); + } else if (isMorph()) { + List> stat = Collections.singletonList(new Pair<>(MapleBuffStat.MORPH, Integer.valueOf(getMorph(applyto)))); + mbuff = MaplePacketCreator.giveForeignBuff(applyto.getId(), stat); + } + long starttime = System.currentTimeMillis(); + CancelEffectAction cancelAction = new CancelEffectAction(applyto, this, starttime); + ScheduledFuture schedule = TimerManager.getInstance().schedule(cancelAction, localDuration); + applyto.registerEffect(this, starttime, schedule); + + if (buff != null) { + if (!hasNoIcon()) { //Thanks flav for such a simple release! :) + applyto.getClient().announce(buff); + } + else { + System.out.println(" NO buff icon for id " + sourceid); + } + } + if (mbuff != null) { + applyto.getMap().broadcastMessage(applyto, mbuff, false); + } + if (sourceid == Corsair.BATTLE_SHIP) { + applyto.announce(MaplePacketCreator.skillCooldown(5221999, applyto.getBattleshipHp() / 10)); + } + } + } + + private int calcHPChange(MapleCharacter applyfrom, boolean primary) { + int hpchange = 0; + if (hp != 0) { + if (!skill) { + if (primary) { + hpchange += alchemistModifyVal(applyfrom, hp, true); + } else { + hpchange += hp; + } + } else { + hpchange += makeHealHP(hp / 100.0, applyfrom.getTotalMagic(), 3, 5); + } + } + if (hpR != 0) { + hpchange += (int) (applyfrom.getCurrentMaxHp() * hpR); + applyfrom.checkBerserk(); + } + if (primary) { + if (hpCon != 0) { + hpchange -= hpCon; + } + } + if (isChakra()) { + hpchange += makeHealHP(getY() / 100.0, applyfrom.getTotalLuk(), 2.3, 3.5); + } else if (sourceid == SuperGM.HEAL_PLUS_DISPEL) { + hpchange += (applyfrom.getMaxHp() - applyfrom.getHp()); + } + + return hpchange; + } + + private int makeHealHP(double rate, double stat, double lowerfactor, double upperfactor) { + return (int) ((Math.random() * ((int) (stat * upperfactor * rate) - (int) (stat * lowerfactor * rate) + 1)) + (int) (stat * lowerfactor * rate)); + } + + private int calcMPChange(MapleCharacter applyfrom, boolean primary) { + int mpchange = 0; + if (mp != 0) { + if (primary) { + mpchange += alchemistModifyVal(applyfrom, mp, true); + } else { + mpchange += mp; + } + } + if (mpR != 0) { + mpchange += (int) (applyfrom.getCurrentMaxMp() * mpR); + } + if (primary) { + if (mpCon != 0) { + double mod = 1.0; + boolean isAFpMage = applyfrom.getJob().isA(MapleJob.FP_MAGE); + boolean isCygnus = applyfrom.getJob().isA(MapleJob.BLAZEWIZARD2); + boolean isEvan = applyfrom.getJob().isA(MapleJob.EVAN7); + if (isAFpMage || isCygnus || isEvan || applyfrom.getJob().isA(MapleJob.IL_MAGE)) { + Skill amp = isAFpMage ? SkillFactory.getSkill(FPMage.ELEMENT_AMPLIFICATION) : (isCygnus ? SkillFactory.getSkill(BlazeWizard.ELEMENT_AMPLIFICATION) : (isEvan ? SkillFactory.getSkill(Evan.MAGIC_AMPLIFICATION) : SkillFactory.getSkill(ILMage.ELEMENT_AMPLIFICATION))); + int ampLevel = applyfrom.getSkillLevel(amp); + if (ampLevel > 0) { + mod = amp.getEffect(ampLevel).getX() / 100.0; + } + } + mpchange -= mpCon * mod; + if (applyfrom.getBuffedValue(MapleBuffStat.INFINITY) != null) { + mpchange = 0; + } else if (applyfrom.getBuffedValue(MapleBuffStat.CONCENTRATE) != null) { + mpchange -= (int) (mpchange * (applyfrom.getBuffedValue(MapleBuffStat.CONCENTRATE).doubleValue() / 100)); + } + } + } + if (sourceid == SuperGM.HEAL_PLUS_DISPEL) { + mpchange += (applyfrom.getMaxMp() - applyfrom.getMp()); + } + + return mpchange; + } + + private int alchemistModifyVal(MapleCharacter chr, int val, boolean withX) { + if (!skill && (chr.getJob().isA(MapleJob.HERMIT) || chr.getJob().isA(MapleJob.NIGHTWALKER3))) { + MapleStatEffect alchemistEffect = getAlchemistEffect(chr); + if (alchemistEffect != null) { + return (int) (val * ((withX ? alchemistEffect.getX() : alchemistEffect.getY()) / 100.0)); + } + } + return val; + } + + private MapleStatEffect getAlchemistEffect(MapleCharacter chr) { + int id = Hermit.ALCHEMIST; + if (chr.isCygnus()) { + id = NightWalker.ALCHEMIST; + } + int alchemistLevel = chr.getSkillLevel(SkillFactory.getSkill(id)); + return alchemistLevel == 0 ? null : SkillFactory.getSkill(id).getEffect(alchemistLevel); + } + + private boolean isGmBuff() { + switch (sourceid) { + case Beginner.ECHO_OF_HERO: + case Noblesse.ECHO_OF_HERO: + case Legend.ECHO_OF_HERO: + case Evan.ECHO_OF_HERO: + case SuperGM.HEAL_PLUS_DISPEL: + case SuperGM.HASTE: + case SuperGM.HOLY_SYMBOL: + case SuperGM.BLESS: + case SuperGM.RESURRECTION: + case SuperGM.HYPER_BODY: + return true; + default: + return false; + } + } + + private boolean isMonsterBuff() { + if (!skill) { + return false; + } + switch (sourceid) { + case Page.THREATEN: + case FPWizard.SLOW: + case ILWizard.SLOW: + case FPMage.SEAL: + case ILMage.SEAL: + case Priest.DOOM: + case Hermit.SHADOW_WEB: + case NightLord.NINJA_AMBUSH: + case Shadower.NINJA_AMBUSH: + case BlazeWizard.SLOW: + case BlazeWizard.SEAL: + case NightWalker.SHADOW_WEB: + case Crusader.ARMOR_CRASH: + case DragonKnight.POWER_CRASH: + case WhiteKnight.MAGIC_CRASH: + case Priest.DISPEL: + case SuperGM.HEAL_PLUS_DISPEL: + return true; + } + return false; + } + + private boolean isPartyBuff() { + if (lt == null || rb == null) { + return false; + } + if ((sourceid >= 1211003 && sourceid <= 1211008) || sourceid == Paladin.SWORD_HOLY_CHARGE || sourceid == Paladin.BW_HOLY_CHARGE || sourceid == DawnWarrior.SOUL_CHARGE) {// wk charges have lt and rb set but are neither player nor monster buffs + return false; + } + return true; + } + + private boolean isHeal() { + return sourceid == Cleric.HEAL || sourceid == SuperGM.HEAL_PLUS_DISPEL; + } + + private boolean isResurrection() { + return sourceid == Bishop.RESURRECTION || sourceid == GM.RESURRECTION || sourceid == SuperGM.RESURRECTION; + } + + private boolean isTimeLeap() { + return sourceid == Buccaneer.TIME_LEAP; + } + + public boolean isDragonBlood() { + return skill && sourceid == DragonKnight.DRAGON_BLOOD; + } + + public boolean isBerserk() { + return skill && sourceid == DarkKnight.BERSERK; + } + + public boolean isRecovery() { + return sourceid == Beginner.RECOVERY || sourceid == Noblesse.RECOVERY || sourceid == Legend.RECOVERY || sourceid == Evan.RECOVERY; + } + + private boolean isDs() { + return skill && (sourceid == Rogue.DARK_SIGHT || sourceid == WindArcher.WIND_WALK || sourceid == NightWalker.DARK_SIGHT); + } + + private boolean isCombo() { + return skill && (sourceid == Crusader.COMBO || sourceid == DawnWarrior.COMBO); + } + + private boolean isEnrage() { + return skill && sourceid == Hero.ENRAGE; + } + + public boolean isBeholder() { + return skill && sourceid == DarkKnight.BEHOLDER; + } + + private boolean isShadowPartner() { + return skill && (sourceid == Hermit.SHADOW_PARTNER || sourceid == NightWalker.SHADOW_PARTNER); + } + + private boolean isChakra() { + return skill && sourceid == ChiefBandit.CHAKRA; + } + + public boolean isMonsterRiding() { + return skill && (sourceid % 10000000 == 1004 || sourceid == Corsair.BATTLE_SHIP || sourceid == Beginner.SPACESHIP || sourceid == Noblesse.SPACESHIP + || sourceid == Beginner.YETI_MOUNT1 || sourceid == Beginner.YETI_MOUNT2 || sourceid == Beginner.WITCH_BROOMSTICK || sourceid == Beginner.BALROG_MOUNT + || sourceid == Noblesse.YETI_MOUNT1 || sourceid == Noblesse.YETI_MOUNT2 || sourceid == Noblesse.WITCH_BROOMSTICK || sourceid == Noblesse.BALROG_MOUNT + || sourceid == Legend.YETI_MOUNT1 || sourceid == Legend.YETI_MOUNT2 || sourceid == Legend.WITCH_BROOMSTICK || sourceid == Legend.BALROG_MOUNT); + } + + public boolean isMagicDoor() { + return skill && sourceid == Priest.MYSTIC_DOOR; + } + + public boolean isPoison() { + return skill && (sourceid == FPMage.POISON_MIST || sourceid == FPWizard.POISON_BREATH || sourceid == FPMage.ELEMENT_COMPOSITION || sourceid == NightWalker.POISON_BOMB || sourceid == BlazeWizard.FLAME_GEAR); + } + + public boolean isMorph() { + return morphId > 0; + } + + public boolean isMorphWithoutAttack() { + return morphId > 0 && morphId < 100; // Every morph item I have found has been under 100, pirate skill transforms start at 1000. + } + + private boolean isMist() { + return skill && (sourceid == FPMage.POISON_MIST || sourceid == Shadower.SMOKE_SCREEN || sourceid == BlazeWizard.FLAME_GEAR || sourceid == NightWalker.POISON_BOMB || sourceid == Evan.RECOVERY_AURA); + } + + private boolean isSoulArrow() { + return skill && (sourceid == Hunter.SOUL_ARROW || sourceid == Crossbowman.SOUL_ARROW || sourceid == WindArcher.SOUL_ARROW); + } + + private boolean isShadowClaw() { + return skill && sourceid == NightLord.SHADOW_STARS; + } + + private boolean isCrash() { + return skill && (sourceid == DragonKnight.POWER_CRASH || sourceid == Crusader.ARMOR_CRASH || sourceid == WhiteKnight.MAGIC_CRASH); + } + + private boolean isDispel() { + return skill && (sourceid == Priest.DISPEL || sourceid == SuperGM.HEAL_PLUS_DISPEL); + } + + private boolean isHeroWill() { + if (skill) { + switch (sourceid) { + case Hero.HEROS_WILL: + case Paladin.HEROS_WILL: + case DarkKnight.HEROS_WILL: + case FPArchMage.HEROS_WILL: + case ILArchMage.HEROS_WILL: + case Bishop.HEROS_WILL: + case Bowmaster.HEROS_WILL: + case Marksman.HEROS_WILL: + case NightLord.HEROS_WILL: + case Shadower.HEROS_WILL: + case Buccaneer.PIRATES_RAGE: + case Aran.HEROS_WILL: + return true; + default: + return false; + } + } + return false; + } + + private boolean isDash() { + return skill && (sourceid == Pirate.DASH || sourceid == ThunderBreaker.DASH || sourceid == Beginner.SPACE_DASH || sourceid == Noblesse.SPACE_DASH); + } + + private boolean isSkillMorph() { + return skill && (sourceid == Buccaneer.SUPER_TRANSFORMATION || sourceid == Marauder.TRANSFORMATION || sourceid == WindArcher.EAGLE_EYE || sourceid == ThunderBreaker.TRANSFORMATION); + } + + private boolean isInfusion() { + return skill && (sourceid == Buccaneer.SPEED_INFUSION || sourceid == Corsair.SPEED_INFUSION || sourceid == ThunderBreaker.SPEED_INFUSION); + } + + private boolean isCygnusFA() { + return skill && (sourceid == DawnWarrior.FINAL_ATTACK || sourceid == WindArcher.FINAL_ATTACK); + } + + private boolean isComboReset() { + return sourceid == Aran.COMBO_BARRIER || sourceid == Aran.COMBO_DRAIN; + } + + private int getFatigue() { + return fatigue; + } + + private int getMorph() { + return morphId; + } + + private int getMorph(MapleCharacter chr) { + if (morphId % 10 == 0) { + return morphId + chr.getGender(); + } + return morphId + 100 * chr.getGender(); + } + + private SummonMovementType getSummonMovementType() { + if (!skill) { + return null; + } + switch (sourceid) { + case Ranger.PUPPET: + case Sniper.PUPPET: + case WindArcher.PUPPET: + case Outlaw.OCTOPUS: + case Corsair.WRATH_OF_THE_OCTOPI: + return SummonMovementType.STATIONARY; + case Ranger.SILVER_HAWK: + case Sniper.GOLDEN_EAGLE: + case Priest.SUMMON_DRAGON: + case Marksman.FROST_PREY: + case Bowmaster.PHOENIX: + case Outlaw.GAVIOTA: + return SummonMovementType.CIRCLE_FOLLOW; + case DarkKnight.BEHOLDER: + case FPArchMage.ELQUINES: + case ILArchMage.IFRIT: + case Bishop.BAHAMUT: + case DawnWarrior.SOUL: + case BlazeWizard.FLAME: + case BlazeWizard.IFRIT: + case WindArcher.STORM: + case NightWalker.DARKNESS: + case ThunderBreaker.LIGHTNING: + return SummonMovementType.FOLLOW; + } + return null; + } + + + public boolean hasNoIcon() { + return (sourceid == 3111002 || sourceid == 3211002 || + // puppet, puppet + sourceid == 3211005 || sourceid == 2311002 || + // golden eagle, mystic door + sourceid == 2121005 || sourceid == 2221005 || + // elquines, ifrit + sourceid == 2321003 || sourceid == 3121006 || + // bahamut, phoenix + sourceid == 3221005 || sourceid == 3111005 || + // frostprey, silver hawk + sourceid == 2311006 || sourceid == 5220002 || + // summon dragon, wrath of the octopi + sourceid == 5211001 || sourceid == 5211002); // octopus, gaviota + } + + public boolean isSkill() { + return skill; + } + + public int getSourceId() { + return sourceid; + } + + public boolean makeChanceResult() { + return prop == 1.0 || Math.random() < prop; + } + + private static class CancelEffectAction implements Runnable { + + private MapleStatEffect effect; + private WeakReference target; + private long startTime; + + public CancelEffectAction(MapleCharacter target, MapleStatEffect effect, long startTime) { + this.effect = effect; + this.target = new WeakReference<>(target); + this.startTime = startTime; + } + + @Override + public void run() { + MapleCharacter realTarget = target.get(); + if (realTarget != null) { + realTarget.cancelEffect(effect, false, startTime); + } + } + } + + public short getHp() { + return hp; + } + + public short getMp() { + return mp; + } + + public short getHpCon() { + return hpCon; + } + + public short getMpCon() { + return mpCon; + } + + public short getMatk() { + return matk; + } + + public short getWatk() { + return watk; + } + + public int getDuration() { + return duration; + } + + public List> getStatups() { + return statups; + } + + public boolean sameSource(MapleStatEffect effect) { + return this.sourceid == effect.sourceid && this.skill == effect.skill; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public int getDamage() { + return damage; + } + + public int getAttackCount() { + return attackCount; + } + + public int getMobCount() { + return mobCount; + } + + public int getFixDamage() { + return fixdamage; + } + + public byte getBulletCount() { + return bulletCount; + } + + public byte getBulletConsume() { + return bulletConsume; + } + + public int getMoneyCon() { + return moneyCon; + } + + public int getCooldown() { + return cooldown; + } + + public Map getMonsterStati() { + return monsterStatus; + } +} \ No newline at end of file diff --git a/src/server/MapleStorage.java b/src/server/MapleStorage.java new file mode 100644 index 0000000000..6a00712600 --- /dev/null +++ b/src/server/MapleStorage.java @@ -0,0 +1,234 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server; + +import client.MapleClient; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventoryType; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.Pair; + +/** + * + * @author Matze + */ +public class MapleStorage { + + private int id; + private List items; + private int meso; + private byte slots; + private Map> typeItems = new HashMap<>(); + + private MapleStorage(int id, byte slots, int meso) { + this.id = id; + this.slots = slots; + this.items = new LinkedList<>(); + this.meso = meso; + } + + private static MapleStorage create(int id, int world) { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("INSERT INTO storages (accountid, world, slots, meso) VALUES (?, ?, 4, 0)")) { + ps.setInt(1, id); + ps.setInt(2, world); + ps.executeUpdate(); + } + } catch (Exception e) { + e.printStackTrace(); + } + return loadOrCreateFromDB(id, world); + } + + public static MapleStorage loadOrCreateFromDB(int id, int world) { + MapleStorage ret = null; + int storeId; + try { + Connection con = DatabaseConnection.getConnection(); + PreparedStatement ps = con.prepareStatement("SELECT storageid, slots, meso FROM storages WHERE accountid = ? AND world = ?"); + ps.setInt(1, id); + ps.setInt(2, world); + ResultSet rs = ps.executeQuery(); + if (!rs.next()) { + rs.close(); + ps.close(); + return create(id, world); + } else { + storeId = rs.getInt("storageid"); + ret = new MapleStorage(storeId, (byte) rs.getInt("slots"), rs.getInt("meso")); + rs.close(); + ps.close(); + for (Pair item : ItemFactory.STORAGE.loadItems(ret.id, false)) { + ret.items.add(item.getLeft()); + } + } + } catch (SQLException ex) { + ex.printStackTrace(); + } + return ret; + } + + public byte getSlots() { + return slots; + } + + public boolean gainSlots(int slots) { + slots += this.slots; + + if (slots <= 48) { + this.slots = (byte) slots; + return true; + } + + return false; + } + + public void setSlots(byte set) { + this.slots = set; + } + + public void saveToDB(Connection con) { + try { + try (PreparedStatement ps = con.prepareStatement("UPDATE storages SET slots = ?, meso = ? WHERE storageid = ?")) { + ps.setInt(1, slots); + ps.setInt(2, meso); + ps.setInt(3, id); + ps.executeUpdate(); + } + List> itemsWithType = new ArrayList<>(); + + for (Item item : items) { + itemsWithType.add(new Pair<>(item, MapleItemInformationProvider.getInstance().getInventoryType(item.getItemId()))); + } + + ItemFactory.STORAGE.saveItems(itemsWithType, id, con); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + + public Item getItem(byte slot) { + return items.get(slot); + } + + public Item takeOut(byte slot) { + Item ret = items.remove(slot); + MapleInventoryType type = MapleItemInformationProvider.getInstance().getInventoryType(ret.getItemId()); + typeItems.put(type, new ArrayList<>(filterItems(type))); + return ret; + } + + public void store(Item item) { + items.add(item); + MapleInventoryType type = MapleItemInformationProvider.getInstance().getInventoryType(item.getItemId()); + typeItems.put(type, new ArrayList<>(filterItems(type))); + } + + public List getItems() { + return Collections.unmodifiableList(items); + } + + private List filterItems(MapleInventoryType type) { + List ret = new LinkedList<>(); + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + for (Item item : items) { + if (ii.getInventoryType(item.getItemId()) == type) { + ret.add(item); + } + } + return ret; + } + + public byte getSlot(MapleInventoryType type, byte slot) { + byte ret = 0; + for (Item item : items) { + if (item == typeItems.get(type).get(slot)) { + return ret; + } + ret++; + } + return -1; + } + + public void sendStorage(MapleClient c, int npcId) { + final MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Collections.sort(items, new Comparator() { + @Override + public int compare(Item o1, Item o2) { + if (ii.getInventoryType(o1.getItemId()).getType() < ii.getInventoryType(o2.getItemId()).getType()) { + return -1; + } else if (ii.getInventoryType(o1.getItemId()) == ii.getInventoryType(o2.getItemId())) { + return 0; + } + return 1; + } + }); + for (MapleInventoryType type : MapleInventoryType.values()) { + typeItems.put(type, new ArrayList<>(items)); + } + c.announce(MaplePacketCreator.getStorage(npcId, slots, items, meso)); + } + + public void sendStored(MapleClient c, MapleInventoryType type) { + c.announce(MaplePacketCreator.storeStorage(slots, type, typeItems.get(type))); + } + + public void sendTakenOut(MapleClient c, MapleInventoryType type) { + c.announce(MaplePacketCreator.takeOutStorage(slots, type, typeItems.get(type))); + } + + public int getMeso() { + return meso; + } + + public void setMeso(int meso) { + if (meso < 0) { + throw new RuntimeException(); + } + this.meso = meso; + } + + public void sendMeso(MapleClient c) { + c.announce(MaplePacketCreator.mesoStorage(slots, meso)); + } + + public boolean isFull() { + return items.size() >= slots; + } + + public void close() { + typeItems.clear(); + } +} diff --git a/src/server/MapleTrade.java b/src/server/MapleTrade.java new file mode 100644 index 0000000000..fcb9c8e6b4 --- /dev/null +++ b/src/server/MapleTrade.java @@ -0,0 +1,308 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import tools.LogHelper; +import tools.MaplePacketCreator; +import client.MapleCharacter; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import constants.ItemConstants; + +/** + * + * @author Matze + */ +public class MapleTrade { + private MapleTrade partner = null; + private List items = new ArrayList<>(); + private List exchangeItems; + private int meso = 0; + private int exchangeMeso; + boolean locked = false; + private MapleCharacter chr; + private byte number; + private boolean fullTrade = false; + + public MapleTrade(byte number, MapleCharacter c) { + chr = c; + this.number = number; + } + + private static int getFee(int meso) { + int fee = 0; + if (meso >= 100000000) { + fee = (int) Math.round(0.06 * meso); + } else if (meso >= 25000000) { + fee = meso / 20; + } else if (meso >= 10000000) { + fee = meso / 25; + } else if (meso >= 5000000) { + fee = (int) Math.round(.03 * meso); + } else if (meso >= 1000000) { + fee = (int) Math.round(.018 * meso); + } else if (meso >= 100000) { + fee = meso / 125; + } + return fee; + } + + private void lock() { + locked = true; + partner.getChr().getClient().announce(MaplePacketCreator.getTradeConfirmation()); + } + + private void complete1() { + exchangeItems = partner.getItems(); + exchangeMeso = partner.getMeso(); + } + + private void complete2() { + items.clear(); + meso = 0; + for (Item item : exchangeItems) { + if ((item.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA) + item.setFlag((byte) (item.getFlag() ^ ItemConstants.KARMA)); //items with scissors of karma used on them are reset once traded + else if (item.getType() == 2 && (item.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES) + item.setFlag((byte) (item.getFlag() ^ ItemConstants.SPIKES)); + + MapleInventoryManipulator.addFromDrop(chr.getClient(), item, true); + } + if (exchangeMeso > 0) { + chr.gainMeso(exchangeMeso - getFee(exchangeMeso), true, true, true); + } + exchangeMeso = 0; + if (exchangeItems != null) { + exchangeItems.clear(); + } + chr.getClient().announce(MaplePacketCreator.getTradeCompletion(number)); + } + + private void cancel() { + for (Item item : items) { + MapleInventoryManipulator.addFromDrop(chr.getClient(), item, true); + } + if (meso > 0) { + chr.gainMeso(meso, true, true, true); + } + meso = 0; + if (items != null) { + items.clear(); + } + exchangeMeso = 0; + if (exchangeItems != null) { + exchangeItems.clear(); + } + chr.getClient().announce(MaplePacketCreator.getTradeCancel(number)); + } + + private boolean isLocked() { + return locked; + } + + private int getMeso() { + return meso; + } + + public void setMeso(int meso) { + if (locked) { + throw new RuntimeException("Trade is locked."); + } + if (meso < 0) { + System.out.println("[h4x] " + chr.getName() + " Trying to trade < 0 mesos"); + return; + } + if (chr.getMeso() >= meso) { + chr.gainMeso(-meso, false, true, false); + this.meso += meso; + chr.getClient().announce(MaplePacketCreator.getTradeMesoSet((byte) 0, this.meso)); + if (partner != null) { + partner.getChr().getClient().announce(MaplePacketCreator.getTradeMesoSet((byte) 1, this.meso)); + } + } else { + } + } + + public void addItem(Item item) { + items.add(item); + chr.getClient().announce(MaplePacketCreator.getTradeItemAdd((byte) 0, item)); + if (partner != null) { + partner.getChr().getClient().announce(MaplePacketCreator.getTradeItemAdd((byte) 1, item)); + } + } + + public void chat(String message) { + chr.getClient().announce(MaplePacketCreator.getTradeChat(chr, message, true)); + if (partner != null) { + partner.getChr().getClient().announce(MaplePacketCreator.getTradeChat(chr, message, false)); + } + } + + public MapleTrade getPartner() { + return partner; + } + + public void setPartner(MapleTrade partner) { + if (locked) { + return; + } + this.partner = partner; + } + + public MapleCharacter getChr() { + return chr; + } + + public List getItems() { + return new LinkedList<>(items); + } + + public int getExchangeMesos(){ + return exchangeMeso; + } + + private boolean fitsInInventory() { + MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); + Map neededSlots = new LinkedHashMap<>(); + for (Item item : exchangeItems) { + MapleInventoryType type = mii.getInventoryType(item.getItemId()); + if (neededSlots.get(type) == null) { + neededSlots.put(type, 1); + } else { + neededSlots.put(type, neededSlots.get(type) + 1); + } + } + for (Map.Entry entry : neededSlots.entrySet()) { + if (chr.getInventory(entry.getKey()).isFull(entry.getValue() - 1)) { + return false; + } + } + return true; + } + + public static void completeTrade(MapleCharacter c) { + c.getTrade().lock(); + MapleTrade local = c.getTrade(); + MapleTrade partner = local.getPartner(); + if (partner.isLocked()) { + local.complete1(); + partner.complete1(); + if (!local.fitsInInventory() || !partner.fitsInInventory()) { + cancelTrade(c); + c.message("There is not enough inventory space to complete the trade."); + partner.getChr().message("There is not enough inventory space to complete the trade."); + return; + } + if (local.getChr().getLevel() < 15) { + if (local.getChr().getMesosTraded() + local.exchangeMeso > 1000000) { + cancelTrade(c); + local.getChr().getClient().announce(MaplePacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day.")); + return; + } else { + local.getChr().addMesosTraded(local.exchangeMeso); + } + } else if (c.getTrade().getChr().getLevel() < 15) { + if (c.getMesosTraded() + c.getTrade().exchangeMeso > 1000000) { + cancelTrade(c); + c.getClient().announce(MaplePacketCreator.serverNotice(1, "Characters under level 15 may not trade more than 1 million mesos per day.")); + return; + } else { + c.addMesosTraded(local.exchangeMeso); + } + } + LogHelper.logTrade(local, partner); + local.complete2(); + partner.complete2(); + partner.getChr().setTrade(null); + c.setTrade(null); + } + } + + public static void cancelTrade(MapleCharacter c) { + c.getTrade().cancel(); + if (c.getTrade().getPartner() != null) { + c.getTrade().getPartner().cancel(); + c.getTrade().getPartner().getChr().setTrade(null); + } + c.setTrade(null); + } + + public static void startTrade(MapleCharacter c) { + if (c.getTrade() == null) { + c.setTrade(new MapleTrade((byte) 0, c)); + c.getClient().announce(MaplePacketCreator.getTradeStart(c.getClient(), c.getTrade(), (byte) 0)); + } else { + c.message("You are already in a trade."); + } + } + + public static void inviteTrade(MapleCharacter c1, MapleCharacter c2) { + if (c2.getTrade() == null) { + c2.setTrade(new MapleTrade((byte) 1, c2)); + c2.getTrade().setPartner(c1.getTrade()); + c1.getTrade().setPartner(c2.getTrade()); + c2.getClient().announce(MaplePacketCreator.getTradeInvite(c1)); + } else { + c1.message("The other player is already trading with someone else."); + cancelTrade(c1); + } + } + + public static void visitTrade(MapleCharacter c1, MapleCharacter c2) { + if (c1.getTrade() != null && c1.getTrade().getPartner() == c2.getTrade() && c2.getTrade() != null && c2.getTrade().getPartner() == c1.getTrade()) { + c2.getClient().announce(MaplePacketCreator.getTradePartnerAdd(c1)); + c1.getClient().announce(MaplePacketCreator.getTradeStart(c1.getClient(), c1.getTrade(), (byte) 1)); + c1.getTrade().setFullTrade(true); + c2.getTrade().setFullTrade(true); + } else { + c1.message("The other player has already closed the trade."); + } + } + + public static void declineTrade(MapleCharacter c) { + MapleTrade trade = c.getTrade(); + if (trade != null) { + if (trade.getPartner() != null) { + MapleCharacter other = trade.getPartner().getChr(); + other.getTrade().cancel(); + other.setTrade(null); + other.message(c.getName() + " has declined your trade request."); + } + trade.cancel(); + c.setTrade(null); + } + } + + public boolean isFullTrade() { + return fullTrade; + } + + public void setFullTrade(boolean fullTrade) { + this.fullTrade = fullTrade; + } +} \ No newline at end of file diff --git a/src/server/PortalFactory.java b/src/server/PortalFactory.java new file mode 100644 index 0000000000..fdb59939bd --- /dev/null +++ b/src/server/PortalFactory.java @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import java.awt.Point; + +import provider.MapleData; +import provider.MapleDataTool; +import server.maps.MapleGenericPortal; +import server.maps.MapleMapPortal; + +public class PortalFactory { + private int nextDoorPortal; + + public PortalFactory() { + nextDoorPortal = 0x80; + } + + public MaplePortal makePortal(int type, MapleData portal) { + MapleGenericPortal ret = null; + if (type == MaplePortal.MAP_PORTAL) { + ret = new MapleMapPortal(); + } else { + ret = new MapleGenericPortal(type); + } + loadPortal(ret, portal); + return ret; + } + + private void loadPortal(MapleGenericPortal myPortal, MapleData portal) { + myPortal.setName(MapleDataTool.getString(portal.getChildByPath("pn"))); + myPortal.setTarget(MapleDataTool.getString(portal.getChildByPath("tn"))); + myPortal.setTargetMapId(MapleDataTool.getInt(portal.getChildByPath("tm"))); + int x = MapleDataTool.getInt(portal.getChildByPath("x")); + int y = MapleDataTool.getInt(portal.getChildByPath("y")); + myPortal.setPosition(new Point(x, y)); + String script = MapleDataTool.getString("script", portal, null); + if (script != null && script.equals("")) { + script = null; + } + myPortal.setScriptName(script); + if (myPortal.getType() == MaplePortal.DOOR_PORTAL) { + myPortal.setId(nextDoorPortal); + nextDoorPortal++; + } else { + myPortal.setId(Integer.parseInt(portal.getName())); + } + } +} diff --git a/src/server/TimerManager.java b/src/server/TimerManager.java new file mode 100644 index 0000000000..4f9559fffb --- /dev/null +++ b/src/server/TimerManager.java @@ -0,0 +1,149 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +import java.lang.management.ManagementFactory; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import javax.management.MBeanServer; +import javax.management.ObjectName; +import tools.FilePrinter; + +public class TimerManager implements TimerManagerMBean { + private static TimerManager instance = new TimerManager(); + private ScheduledThreadPoolExecutor ses; + + private TimerManager() { + MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); + try { + mBeanServer.registerMBean(this, new ObjectName("server:type=TimerManger")); + } catch (Exception e) { + } + } + + public static TimerManager getInstance() { + return instance; + } + + public void start() { + if (ses != null && !ses.isShutdown() && !ses.isTerminated()) { + return; + } + ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(4, new ThreadFactory() { + private final AtomicInteger threadNumber = new AtomicInteger(1); + + @Override + public Thread newThread(Runnable r) { + Thread t = new Thread(r); + t.setName("TimerManager-Worker-" + threadNumber.getAndIncrement()); + return t; + } + }); + //this is a no-no, it actually does nothing..then why the fuck are you doing it? + stpe.setContinueExistingPeriodicTasksAfterShutdownPolicy(false); + stpe.setRemoveOnCancelPolicy(true); + + stpe.setKeepAliveTime(5, TimeUnit.MINUTES); + stpe.allowCoreThreadTimeOut(true); + + ses = stpe; + } + + public void stop() { + ses.shutdownNow(); + } + + public Runnable purge() {//Yay? + return new Runnable() { + public void run() { + ses.purge(); + } + }; + } + + public ScheduledFuture register(Runnable r, long repeatTime, long delay) { + return ses.scheduleAtFixedRate(new LoggingSaveRunnable(r), delay, repeatTime, TimeUnit.MILLISECONDS); + } + + public ScheduledFuture register(Runnable r, long repeatTime) { + return ses.scheduleAtFixedRate(new LoggingSaveRunnable(r), 0, repeatTime, TimeUnit.MILLISECONDS); + } + + public ScheduledFuture schedule(Runnable r, long delay) { + return ses.schedule(new LoggingSaveRunnable(r), delay, TimeUnit.MILLISECONDS); + } + + public ScheduledFuture scheduleAtTimestamp(Runnable r, long timestamp) { + return schedule(r, timestamp - System.currentTimeMillis()); + } + + @Override + public long getActiveCount() { + return ses.getActiveCount(); + } + + @Override + public long getCompletedTaskCount() { + return ses.getCompletedTaskCount(); + } + + @Override + public int getQueuedTasks() { + return ses.getQueue().toArray().length; + } + + @Override + public long getTaskCount() { + return ses.getTaskCount(); + } + + @Override + public boolean isShutdown() { + return ses.isShutdown(); + } + + @Override + public boolean isTerminated() { + return ses.isTerminated(); + } + + + private static class LoggingSaveRunnable implements Runnable { + Runnable r; + + public LoggingSaveRunnable(Runnable r) { + this.r = r; + } + + @Override + public void run() { + try { + r.run(); + } catch (Throwable t) { + FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, t); + } + } + } +} diff --git a/src/server/TimerManagerMBean.java b/src/server/TimerManagerMBean.java new file mode 100644 index 0000000000..147b43b159 --- /dev/null +++ b/src/server/TimerManagerMBean.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server; + +public interface TimerManagerMBean { + public boolean isTerminated(); + public boolean isShutdown(); + public long getCompletedTaskCount(); + public long getActiveCount(); + public long getTaskCount(); + public int getQueuedTasks(); +} diff --git a/src/server/events/MapleEvents.java b/src/server/events/MapleEvents.java new file mode 100644 index 0000000000..dd4c262354 --- /dev/null +++ b/src/server/events/MapleEvents.java @@ -0,0 +1,32 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ + +package server.events; + +/** + * @author kevintjuh93 + */ +public class MapleEvents { + public MapleEvents() { + + } +} \ No newline at end of file diff --git a/src/server/events/RescueGaga.java b/src/server/events/RescueGaga.java new file mode 100644 index 0000000000..6c59b202f9 --- /dev/null +++ b/src/server/events/RescueGaga.java @@ -0,0 +1,65 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package server.events; + +import client.MapleCharacter; +import client.SkillFactory; + +/** + * + * @author kevintjuh93 + */ +public class RescueGaga extends MapleEvents { + private byte fallen; + private int completed; + + public RescueGaga(int completed) { + super(); + this.completed = completed; + this.fallen = 0; + } + + public int fallAndGet() { + fallen++; + if (fallen > 3) { + fallen = 0; + return 4; + } + return fallen; + } + + public byte getFallen() { + return fallen; + } + + public int getCompleted() { + return completed; + } + + public void complete() { + completed++; + } + + public void giveSkill(MapleCharacter chr) { + int skillid = 0; + switch (chr.getJobType()) { + case 0: + skillid = 1013; + break; + case 1: + case 2: + skillid = 10001014; + } + long expiration = (System.currentTimeMillis() + (long) (3600 * 24 * 20 * 1000));//20 days + if (completed < 20) { + chr.changeSkillLevel(SkillFactory.getSkill(skillid), (byte) 1, 1, expiration); + chr.changeSkillLevel(SkillFactory.getSkill(skillid + 1), (byte) 1, 1, expiration); + chr.changeSkillLevel(SkillFactory.getSkill(skillid + 2), (byte) 1, 1, expiration); + } else { + chr.changeSkillLevel(SkillFactory.getSkill(skillid), (byte) 2, 2, chr.getSkillExpiration(skillid)); + } + } +} diff --git a/src/server/events/gm/MapleCoconut.java b/src/server/events/gm/MapleCoconut.java new file mode 100644 index 0000000000..e78685226d --- /dev/null +++ b/src/server/events/gm/MapleCoconut.java @@ -0,0 +1,206 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.events.gm; + +import client.MapleCharacter; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import server.TimerManager; +import server.maps.MapleMap; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +//Make them better :) +public class MapleCoconut extends MapleEvent { + private MapleMap map = null; + private int MapleScore = 0; + private int StoryScore = 0; + private int countBombing = 80; + private int countFalling = 401; + private int countStopped = 20; + private List coconuts = new LinkedList(); + + public MapleCoconut(MapleMap map) { + super(1, 50); + this.map = map; + } + + public void startEvent() { + map.startEvent(); + for (int i = 0; i < 506; i++) { + coconuts.add(new MapleCoconuts(i)); + } + map.broadcastMessage(MaplePacketCreator.hitCoconut(true, 0, 0)); + setCoconutsHittable(true); + map.broadcastMessage(MaplePacketCreator.getClock(300)); + + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (map.getId() == 109080000) { + if (getMapleScore() == getStoryScore()) { + bonusTime(); + } else if (getMapleScore() > getStoryScore()) { + for (MapleCharacter chr : map.getCharacters()) { + if (chr.getTeam() == 0) { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory")); + } else { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed")); + } + } + warpOut(); + } else { + for (MapleCharacter chr : map.getCharacters()) { + if (chr.getTeam() == 1) { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory")); + } else { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed")); + } + } + warpOut(); + } + } + } + }, 300000); + } + + public void bonusTime() { + map.broadcastMessage(MaplePacketCreator.getClock(120)); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (getMapleScore() == getStoryScore()) { + for (MapleCharacter chr : map.getCharacters()) { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed")); + } + warpOut(); + } else if (getMapleScore() > getStoryScore()) { + for (MapleCharacter chr : map.getCharacters()) { + if (chr.getTeam() == 0) { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory")); + } else { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed")); + } + } + warpOut(); + } else { + for (MapleCharacter chr : map.getCharacters()) { + if (chr.getTeam() == 1) { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/victory")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Victory")); + } else { + chr.getClient().announce(MaplePacketCreator.showEffect("event/coconut/lose")); + chr.getClient().announce(MaplePacketCreator.playSound("Coconut/Failed")); + } + } + warpOut(); + } + } + }, 120000); + + } + + public void warpOut() { + setCoconutsHittable(false); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + List chars = new ArrayList<>(map.getCharacters()); + + for (MapleCharacter chr : chars) { + if ((getMapleScore() > getStoryScore() && chr.getTeam() == 0) || (getStoryScore() > getMapleScore() && chr.getTeam() == 1)) { + chr.changeMap(109050000); + } else { + chr.changeMap(109050001); + } + } + map.setCoconut(null); + } + }, 12000); + } + + public int getMapleScore() { + return MapleScore; + } + + public int getStoryScore() { + return StoryScore; + } + + public void addMapleScore() { + this.MapleScore += 1; + } + + public void addStoryScore() { + this.StoryScore += 1; + } + + public int getBombings() { + return countBombing; + } + + public void bombCoconut() { + countBombing--; + } + + public int getFalling() { + return countFalling; + } + + public void fallCoconut() { + countFalling--; + } + + public int getStopped() { + return countStopped; + } + + public void stopCoconut() { + countStopped--; + } + + public MapleCoconuts getCoconut(int id) { + return coconuts.get(id); + } + + public List getAllCoconuts() { + return coconuts; + } + + public void setCoconutsHittable(boolean hittable) { + for (MapleCoconuts nut : coconuts) { + nut.setHittable(hittable); + } + } +} \ No newline at end of file diff --git a/src/server/events/gm/MapleCoconuts.java b/src/server/events/gm/MapleCoconuts.java new file mode 100644 index 0000000000..c5e3316254 --- /dev/null +++ b/src/server/events/gm/MapleCoconuts.java @@ -0,0 +1,63 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.events.gm; + +/** + * + * @author kevintjuh93 + */ +public class MapleCoconuts { + + private int id; + private int hits = 0; + private boolean hittable = false; + private long hittime = System.currentTimeMillis(); + + public MapleCoconuts(int id) { + this.id = id; + } + + public void hit() { + this.hittime = System.currentTimeMillis() + 750; + hits++; + } + + public int getHits() { + return hits; + } + + public void resetHits() { + hits = 0; + } + + public boolean isHittable() { + return hittable; + } + + public void setHittable(boolean hittable) { + this.hittable = hittable; + } + + public long getHitTime() { + return hittime; + } +} diff --git a/src/server/events/gm/MapleEvent.java b/src/server/events/gm/MapleEvent.java new file mode 100644 index 0000000000..07686bb2a3 --- /dev/null +++ b/src/server/events/gm/MapleEvent.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.events.gm; + +/** + * + * @author kevintjuh93 + */ +public class MapleEvent { + private int mapid; + private int limit; + + public MapleEvent(int mapid, int limit) { + this.mapid = mapid; + this.limit = limit; + } + + public int getMapId() { + return mapid; + } + + public int getLimit() { + return limit; + } + + public void minusLimit() { + this.limit--; + } + + public void addLimit() { + this.limit++; + } +} \ No newline at end of file diff --git a/src/server/events/gm/MapleFitness.java b/src/server/events/gm/MapleFitness.java new file mode 100644 index 0000000000..1cbebdb4e7 --- /dev/null +++ b/src/server/events/gm/MapleFitness.java @@ -0,0 +1,133 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.events.gm; + +import client.MapleCharacter; +import java.util.concurrent.ScheduledFuture; +import server.TimerManager; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +public class MapleFitness { + private MapleCharacter chr; + private long time = 0; + private long timeStarted = 0; + private ScheduledFuture schedule = null; + private ScheduledFuture schedulemsg = null; + + public MapleFitness(final MapleCharacter chr) { + this.chr = chr; + this.schedule = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (chr.getMapId() >= 109040000 && chr.getMapId() <= 109040004) + chr.changeMap(chr.getMap().getReturnMap()); + } + }, 900000); + } + + public void startFitness() { + chr.getMap().startEvent(); + chr.getClient().announce(MaplePacketCreator.getClock(900)); + this.timeStarted = System.currentTimeMillis(); + this.time = 900000; + checkAndMessage(); + + chr.getMap().getPortal("join00").setPortalStatus(true); + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter.")); + } + + public boolean isTimerStarted() { + return time > 0 && timeStarted > 0; + } + + public long getTime() { + return time; + } + + public void resetTimes() { + this.time = 0; + this.timeStarted = 0; + schedule.cancel(false); + schedulemsg.cancel(false); + } + + public long getTimeLeft() { + return time - (System.currentTimeMillis() - timeStarted); + } + + public void checkAndMessage() { + this.schedulemsg = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + if (chr.getFitness() == null) { + resetTimes(); + } + if (chr.getMap().getId() >= 109040000 && chr.getMap().getId() <= 109040004) { + if (getTimeLeft() > 9000 && getTimeLeft() < 11000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~")); + } else if (getTimeLeft() > 99000 && getTimeLeft() < 101000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Alright, you don't have much time remaining. Please hurry up a little!")); + } else if (getTimeLeft() > 239000 && getTimeLeft() < 241000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top!")); + } else if (getTimeLeft() > 299000 && getTimeLeft() < 301000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up.")); + } else if (getTimeLeft() > 359000 && getTimeLeft() < 361000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags.")); + } else if (getTimeLeft() > 499000 && getTimeLeft() < 501000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on.")); + } else if (getTimeLeft() > 599000 && getTimeLeft() < 601000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this!")); + } else if (getTimeLeft() > 659000 && getTimeLeft() < 661000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing.")); + } else if (getTimeLeft() > 699000 && getTimeLeft() < 701000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on.")); + } else if (getTimeLeft() > 779000 && getTimeLeft() < 781000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages.")); + } else if (getTimeLeft() > 839000 && getTimeLeft() < 841000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag.")); + } else if (getTimeLeft() > 869000 && getTimeLeft() < 871000) { + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "[MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that.")); + } + } else { + resetTimes(); + } + } + }, 5000, 29500); + } + // 14:30 [Notice][MapleStory Physical Fitness Test] consists of 4 stages, and if you happen to die during the game, you'll be eliminated from the game, so please be careful of that. + // 14:00 [Notice]There may be a heavy lag due to many users at stage 1 all at once. It won't be difficult, so please make sure not to fall down because of heavy lag. + // 13:00 [Notice]Everyone that clears [The Maple Physical Fitness Test] on time will be given an item, regardless of the order of finish, so just relax, take your time, and clear the 4 stages. + // 11:40 [Notice]Please remember that if you die during the event, you'll be eliminated from the game. You still have plenty of time left, so either take a potion or recover HP first before moving on. + // 11:00 [Notice]The 2nd stage offers monkeys throwing bananas. Please make sure to avoid them by moving along at just the right timing. + // 10:00 [Notice]The most important thing you'll need to know to avoid the bananas thrown by the monkeys is *Timing* Timing is everything in this! + // 8:20 [Notice]Please remember that if you die during the event, you'll be eliminated from the game. If you're running out of HP, either take a potion or recover HP first before moving on. + // 6:00 [Notice]For those who have heavy lags, please make sure to move slowly to avoid falling all the way down because of lags. + // 5:00 [Notice]The 3rd stage offers traps where you may see them, but you won't be able to step on them. Please be careful of them as you make your way up. + // 4:00 [Notice]The 4th stage is the last one for [The Maple Physical Fitness Test]. Please don't give up at the last minute and try your best. The reward is waiting for you at the very top! + // 1:40 [Notice]Alright, you don't have much time remaining. Please hurry up a little! + // 0:10 [Notice]You have 10 sec left. Those of you unable to beat the game, we hope you beat it next time! Great job everyone!! See you later~ +} diff --git a/src/server/events/gm/MapleOla.java b/src/server/events/gm/MapleOla.java new file mode 100644 index 0000000000..bcc224d35f --- /dev/null +++ b/src/server/events/gm/MapleOla.java @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.events.gm; + +import client.MapleCharacter; +import java.util.concurrent.ScheduledFuture; +import server.TimerManager; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +public class MapleOla { + private MapleCharacter chr; + private long time = 0; + private long timeStarted = 0; + private ScheduledFuture schedule = null; + + public MapleOla(final MapleCharacter chr) { + this.chr = chr; + this.schedule = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (chr.getMapId() >= 109030001 && chr.getMapId() <= 109030303) + chr.changeMap(chr.getMap().getReturnMap()); + resetTimes(); + } + }, 360000); + } + + public void startOla() { // TODO: Messages + chr.getMap().startEvent(); + chr.getClient().announce(MaplePacketCreator.getClock(360)); + this.timeStarted = System.currentTimeMillis(); + this.time = 360000; + + chr.getMap().getPortal("join00").setPortalStatus(true); + chr.getClient().announce(MaplePacketCreator.serverNotice(0, "The portal has now opened. Press the up arrow key at the portal to enter.")); + } + + public boolean isTimerStarted() { + return time > 0 && timeStarted > 0; + } + + public long getTime() { + return time; + } + + public void resetTimes() { + this.time = 0; + this.timeStarted = 0; + schedule.cancel(false); + } + + public long getTimeLeft() { + return time - (System.currentTimeMillis() - timeStarted); + } +} diff --git a/src/server/events/gm/MapleOxQuiz.java b/src/server/events/gm/MapleOxQuiz.java new file mode 100644 index 0000000000..1736935ae7 --- /dev/null +++ b/src/server/events/gm/MapleOxQuiz.java @@ -0,0 +1,111 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.events.gm; + +import client.MapleCharacter; +import tools.Randomizer; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import server.TimerManager; +import server.maps.MapleMap; +import tools.MaplePacketCreator; + +/** + * + * @author FloppyDisk + */ +public final class MapleOxQuiz { + private int round = 1; + private int question = 1; + private MapleMap map = null; + private int expGain = 200; + private static MapleDataProvider stringData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Etc.wz")); + + public MapleOxQuiz(MapleMap map) { + this.map = map; + this.round = Randomizer.nextInt(9); + this.question = 1; + } + + private boolean isCorrectAnswer(MapleCharacter chr, int answer) { + double x = chr.getPosition().getX(); + double y = chr.getPosition().getY(); + if ((x > -234 && y > -26 && answer == 0) || (x < -234 && y > -26 && answer == 1)) { + chr.dropMessage("Correct!"); + return true; + } + return false; + } + + public void sendQuestion() { + int gm = 0; + for (MapleCharacter mc : map.getCharacters()) { + if (mc.gmLevel() > 0) { + gm++; + } + } + final int number = gm; + map.broadcastMessage(MaplePacketCreator.showOXQuiz(round, question, true)); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + map.broadcastMessage(MaplePacketCreator.showOXQuiz(round, question, true)); + List chars = new ArrayList<>(map.getCharacters()); + + for (MapleCharacter chr : chars) { + if (chr != null) // make sure they aren't null... maybe something can happen in 12 seconds. + { + if (!isCorrectAnswer(chr, getOXAnswer(round, question)) && !chr.isGM()) { + chr.changeMap(chr.getMap().getReturnMap()); + } else { + chr.gainExp(expGain, true, true); + } + } + } + //do question + if ((round == 1 && question == 29) || ((round == 2 || round == 3) && question == 17) || ((round == 4 || round == 8) && question == 12) || (round == 5 && question == 26) || (round == 9 && question == 44) || ((round == 6 || round == 7) && question == 16)) { + question = 100; + } else { + question++; + } + //send question + if (map.getCharacters().size() - number <= 2) { + map.broadcastMessage(MaplePacketCreator.serverNotice(6, "The event has ended")); + map.getPortal("join00").setPortalStatus(true); + map.setOx(null); + map.setOxQuiz(false); + //prizes here + return; + } + sendQuestion(); + } + }, 30000); // Time to answer = 30 seconds ( Ox Quiz packet shows a 30 second timer. + } + + private static int getOXAnswer(int imgdir, int id) { + return MapleDataTool.getInt(stringData.getData("OXQuiz.img").getChildByPath("" + imgdir + "").getChildByPath("" + id + "").getChildByPath("a")); + } +} diff --git a/src/server/events/gm/MapleSnowball.java b/src/server/events/gm/MapleSnowball.java new file mode 100644 index 0000000000..a21129c3f2 --- /dev/null +++ b/src/server/events/gm/MapleSnowball.java @@ -0,0 +1,165 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ + +package server.events.gm; + +import client.MapleCharacter; +import java.util.LinkedList; +import java.util.List; +import server.TimerManager; +import server.maps.MapleMap; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +public class MapleSnowball { + private MapleMap map; + private int position = 0; + private int hits = 3; + private int snowmanhp = 1000; + private boolean hittable = false; + private int team; + private boolean winner = false; + List characters = new LinkedList(); + + public MapleSnowball(int team, MapleMap map) { + this.map = map; + this.team = team; + + for (MapleCharacter chr : map.getCharacters()) { + if (chr.getTeam() == team) + characters.add(chr); + } + } + + public void startEvent() { + if (hittable == true) return; + + for (MapleCharacter chr : characters) { + if (chr != null) { + chr.announce(MaplePacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1))); + chr.announce(MaplePacketCreator.getClock(600)); + } + } + hittable = true; + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (map.getSnowball(team).getPosition() > map.getSnowball(team == 0 ? 1 : 0).getPosition()) { + for (MapleCharacter chr : characters) { + if (chr != null) + chr.announce(MaplePacketCreator.rollSnowBall(false, 3, map.getSnowball(0), map.getSnowball(0))); + } + winner = true; + } else if (map.getSnowball(team == 0 ? 1 : 0).getPosition() > map.getSnowball(team).getPosition()) { + for (MapleCharacter chr : characters) { + if (chr != null) + chr.announce(MaplePacketCreator.rollSnowBall(false, 4, map.getSnowball(0), map.getSnowball(0))); + } + winner = true; + } //Else + warpOut(); + } + }, 600000); + + } + + public boolean isHittable() { + return hittable; + } + + public void setHittable(boolean hit) { + this.hittable = hit; + } + + public int getPosition() { + return position; + } + + public int getSnowmanHP() { + return snowmanhp; + } + + public void setSnowmanHP(int hp) { + this.snowmanhp = hp; + } + + public void hit(int what, int damage) { + if (what < 2) + if (damage > 0) + this.hits--; + else { + if (this.snowmanhp - damage < 0) { + this.snowmanhp = 0; + + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + setSnowmanHP(7500); + message(5); + } + }, 10000); + } else + this.snowmanhp -= damage; + map.broadcastMessage(MaplePacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1))); + } + + if (this.hits == 0) { + this.position += 1; + if (this.position == 45) + map.getSnowball(team == 0 ? 1 : 0).message(1); + else if (this.position == 290) + map.getSnowball(team == 0 ? 1 : 0).message(2); + else if (this.position == 560) + map.getSnowball(team == 0 ? 1 : 0).message(3); + + this.hits = 3; + map.broadcastMessage(MaplePacketCreator.rollSnowBall(false, 0, map.getSnowball(0), map.getSnowball(1))); + map.broadcastMessage(MaplePacketCreator.rollSnowBall(false, 1, map.getSnowball(0), map.getSnowball(1))); + } + map.broadcastMessage(MaplePacketCreator.hitSnowBall(what, damage)); + } + + public void message(int message) { + for (MapleCharacter chr : characters) { + if (chr != null) + chr.announce(MaplePacketCreator.snowballMessage(team, message)); + } + } + + public void warpOut() { + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (winner == true) + map.warpOutByTeam(team, 109050000); + else + map.warpOutByTeam(team, 109050001); + + map.setSnowball(team, null); + } + }, 10000); + } +} \ No newline at end of file diff --git a/src/server/expeditions/MapleExpedition.java b/src/server/expeditions/MapleExpedition.java new file mode 100644 index 0000000000..21f41c5f21 --- /dev/null +++ b/src/server/expeditions/MapleExpedition.java @@ -0,0 +1,218 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + +package server.expeditions; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.ScheduledFuture; + +import net.server.Server; +import server.TimerManager; +import server.life.MapleMonster; +import server.maps.MapleMap; +import tools.LogHelper; +import tools.MaplePacketCreator; +import client.MapleCharacter; + +/** + * + * @author SharpAceX(Alan) + */ +public class MapleExpedition { + + private static final int [] EXPEDITION_BOSSES = { + 8800000,// - Zakum's first body + 8800001,// - Zakum's second body + 8800002,// - Zakum's third body + 8800003,// - Zakum's Arm 1 + 8800004,// - Zakum's Arm 2 + 8800005,// - Zakum's Arm 3 + 8800006,// - Zakum's Arm 4 + 8800007,// - Zakum's Arm 5 + 8800008,// - Zakum's Arm 6 + 8800009,// - Zakum's Arm 7 + 8800010,// - Zakum's Arm 8 + 8810000,// - Horntail's Left Head + 8810001,// - Horntail's Right Head + 8810002,// - Horntail's Head A + 8810003,// - Horntail's Head B + 8810004,// - Horntail's Head C + 8810005,// - Horntail's Left Hand + 8810006,// - Horntail's Right Hand + 8810007,// - Horntail's Wings + 8810008,// - Horntail's Legs + 8810009,// - Horntail's Tails + 9420546,// - Scarlion Boss + 9420547,// - Scarlion Boss + 9420548,// - Angry Scarlion Boss + 9420549,// - Furious Scarlion Boss + 9420541,// - Targa + 9420542,// - Targa + 9420543,// - Angry Targa + 9420544,// - Furious Targa + }; + + private MapleCharacter leader; + private MapleExpeditionType type; + private boolean registering; + private MapleMap startMap; + private ArrayList bossLogs; + private ScheduledFuture schedule; + private List members = new ArrayList(); + private List banned = new ArrayList(); + private long startTime; + + public MapleExpedition(MapleCharacter player, MapleExpeditionType met) { + leader = player; + members.add(leader); + startMap = player.getMap(); + type = met; + bossLogs = new ArrayList(); + beginRegistration(); + } + + private void beginRegistration() { + registering = true; + startMap.broadcastMessage(MaplePacketCreator.getClock(type.getRegistrationTime() * 60)); + startMap.broadcastMessage(MaplePacketCreator.serverNotice(6, leader.getName() + " has been declared the expedition captain. Please register for the expedition.")); + scheduleRegistrationEnd(); + } + + private void scheduleRegistrationEnd() { + final MapleExpedition exped = this; + schedule = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (registering){ + leader.getClient().getChannelServer().getExpeditions().remove(exped); + startMap.broadcastMessage(MaplePacketCreator.serverNotice(6, "Time limit has been reached. Expedition has been disbanded.")); + } + dispose(false); + } + }, type.getRegistrationTime() * 60 * 1000); + } + + public void dispose(boolean log){ + if (schedule != null){ + schedule.cancel(false); + } + if (log && !registering){ + LogHelper.logExpedition(this); + } + } + + public void start(){ + registering = false; + startMap.broadcastMessage(MaplePacketCreator.removeClock()); + broadcastExped(MaplePacketCreator.serverNotice(6, "The expedition has started! The expedition leader is waiting inside!")); + startTime = System.currentTimeMillis(); + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, type.toString() + " Expedition started with leader: " + leader.getName())); + } + + public String addMember(MapleCharacter player) { + if (!registering){ + return "Sorry, this expedition is already underway. Registration is closed!"; + } + if (banned.contains(player)){ + return "Sorry, you've been banned from this expedition by #b" + leader.getName() + "#k."; + } + if (members.size() >= type.getMaxSize()){ //Would be a miracle if anybody ever saw this + return "Sorry, this expedition is full!"; + } + if (members.add(player)){ + broadcastExped(MaplePacketCreator.serverNotice(6, player.getName() + " has joined the expedition!")); + return "You have registered for the expedition successfully!"; + } + return "Sorry, something went really wrong. Report this on the forum with a screenshot!"; + } + + private void broadcastExped(byte [] data){ + for (MapleCharacter member : members){ + member.getClient().announce(data); + } + } + + public boolean removeMember(MapleCharacter chr) { + return members.remove(chr); + } + + public MapleExpeditionType getType() { + return type; + } + + public List getMembers() { + return members; + } + + public MapleCharacter getLeader(){ + return leader; + } + + public boolean contains(MapleCharacter player) { + for (MapleCharacter member : members){ + if (member.getId() == player.getId()){ + return true; + } + } + return false; + } + + public boolean isLeader(MapleCharacter player) { + return leader.equals(player); + } + + public boolean isRegistering(){ + return registering; + } + + public boolean isInProgress(){ + return !registering; + } + + public void ban(MapleCharacter player) { + if (!banned.contains(player)) { + banned.add(player); + members.remove(player); + } + } + + public long getStartTime(){ + return startTime; + } + + public ArrayList getBossLogs(){ + return bossLogs; + } + + public void monsterKilled(MapleCharacter chr, MapleMonster mob) { + for (int i = 0; i < EXPEDITION_BOSSES.length; i++){ + if (mob.getId() == EXPEDITION_BOSSES[i]){ //If the monster killed was a boss + String timeStamp = new SimpleDateFormat("HH:mm:ss").format(new Date()); + bossLogs.add(">" + mob.getName() + " was killed after " + LogHelper.getTimeString(startTime) + " - " + timeStamp + "\r\n"); + return; + } + } + } +} diff --git a/src/server/expeditions/MapleExpeditionType.java b/src/server/expeditions/MapleExpeditionType.java new file mode 100644 index 0000000000..bd94f85a58 --- /dev/null +++ b/src/server/expeditions/MapleExpeditionType.java @@ -0,0 +1,75 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.expeditions; + +/** +* +* @author SharpAceX(Alan) +*/ + +public enum MapleExpeditionType { + + BALROG_EASY(3, 30, 50, 255, 5), + BALROG_NORMAL(6, 30, 50, 255, 5), + SCARGA(3, 6, 100, 255, 5), + ZAKUM(6, 30, 50, 255, 5), + HORNTAIL(6, 30, 80, 255,5), + CHAOS_ZAKUM(6, 30, 120, 255, 5), + CHAOS_HORNTAIL(6, 30, 120, 255, 5), + PINKBEAN(6, 30, 120, 255, 5), + CWKPQ(6, 30, 100, 255, 5); + + private int minSize; + private int maxSize; + private int minLevel; + private int maxLevel; + private int registrationTime; + + private MapleExpeditionType(int minSize, int maxSize, int minLevel, int maxLevel, int minutes) { + this.minSize = minSize; + this.maxSize = maxSize; + this.minLevel = minLevel; + this.maxLevel = maxLevel; + this.registrationTime = minutes; + } + + public int getMinSize() { + return minSize; + } + + public int getMaxSize() { + return maxSize; + } + + public int getMinLevel() { + return minLevel; + } + + public int getMaxLevel() { + return maxLevel; + } + + public int getRegistrationTime(){ + return registrationTime; + } +} diff --git a/src/server/gachapon/Ellinia.java b/src/server/gachapon/Ellinia.java new file mode 100644 index 0000000000..4e300b1aa2 --- /dev/null +++ b/src/server/gachapon/Ellinia.java @@ -0,0 +1,104 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class Ellinia extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int[] { + //warriorEquips = { + 1082025, 1060028, 1051011, 1060016, 1051001, + 1422001, 1002025, 1082000, 1302002, 1412012, + //magicianEquips = { + 1002013, 1002016, 1002017, 1002034, 1002035, + 1002036, 1002037, 1002038, 1002064, 1002065, + 1002072, 1002073, 1002074, 1002075, 1002102, + 1002103, 1002104, 1002105, 1002106, 1002141, + 1002142, 1002143, 1002144, 1002145, 1002151, + 1002152, 1002153, 1002154, 1002155, 1002215, + 1002216, 1002217, 1002218, 1002242, 1002243, + 1002244, 1002245, 1002246, 1002252, 1002253, + 1002254, 1002271, 1002272, 1002273, 1002274, + 1002363, 1002364, 1002365, 1002366, 1002398, + 1002399, 1002400, 1002401, 1002579, 1002773, + 1040004, 1040017, 1040018, + 1040019, 1040020, 1041015, 1041016, 1041017, + 1041018, 1041025, 1041026, 1041029, 1041030, + 1041031, 1041041, 1041042, 1041043, 1041051, + 1041052, 1041053, 1050001, 1050002, 1050003, + 1050008, 1050009, 1050010, 1050023, 1050024, + 1050025, 1050026, 1050027, 1050028, 1050029, + 1050030, 1050031, 1050035, 1050036, 1050037, + 1050038, 1050039, 1050045, 1050046, 1050047, + 1050048, 1050049, 1050053, 1050054, 1050055, + 1050056, 1050067, 1050068, 1050069, 1050070, + 1050072, 1050073, 1050074, 1050092, 1050093, + 1050094, 1050095, 1050102, 1050103, 1050104, + 1050105, 1051003, 1051004, 1051005, 1051023, + 1051024, 1051025, 1051026, 1051027, 1051030, + 1051031, 1051032, 1051033, 1051034, 1051044, + 1051045, 1051046, 1051047, 1051052, 1051053, + 1051054, 1051055, 1051056, 1051057, 1051058, + 1051094, 1051095, 1051096, 1051097, 1051101, + 1051102, 1051103, 1051104, 1052076, + 1060012, 1060013, 1060014, 1060015, + 1061010, 1061011, 1061012, 1061013, 1061021, + 1061022, 1061027, 1061028, 1061034, 1061035, + 1061036, 1061047, 1061048, 1061049, 1072006, + 1072019, 1072020, 1072021, 1072023, 1072024, + 1072044, 1072045, 1072072, 1072073, 1072074, + 1072075, 1072076, 1072077, 1072078, 1072089, + 1072090, 1072091, 1072114, 1072115, 1072116, + 1072117, 1072136, 1072137, 1072138, 1072139, + 1072140, 1072141, 1072142, 1072143, 1072157, + 1072158, 1072159, 1072160, 1072169, 1072177, + 1072178, 1072179, 1072206, 1072207, 1072208, + 1072209, 1072223, 1072224, 1072225, 1072226, + 1072268, 1082019, 1082020, + 1082021, 1082022, 1082026, 1082027, 1082028, + 1082051, 1082052, 1082053, 1082054, 1082055, + 1082056, 1082062, 1082063, 1082064, 1082080, + 1082081, 1082082, 1082086, 1082087, 1082088, + 1082098, 1082099, 1082100, 1082121, 1082122, + 1082123, 1082131, 1082132, 1082133, 1082134, + 1082151, 1082152, 1082153, 1082154, 1082164, + 1092021, 1092029, 1092057, + 1372000, 1372001, 1372002, 1372003, 1372004, + 1372007, 1372008, 1372009, 1372010, 1372011, + 1372012, 1372014, 1372015, 1372016, 1372032, + 1382000, 1382001, 1382002, 1382003, 1382004, + 1382005, 1382006, 1382007, 1382008, 1382010, + 1382011, 1382014, 1382015, 1382016, 1382017, + 1382018, 1382019, 1382035, 1382036, 1382037, + 1382041, 1382053, 1382054, 1382055, 1382056, + 1382060, + //bowmanEquips = { + 1040003, 1462005, 1002157, 1002119, 1062002, + 1062004, 1041083, 1061082, 1082017, 1041061, + //thiefEquips = { + 1002174, 1040063, 1072108, 1082044, 1061071, + 1060052, 1072029, 1472002, 1082031, 1060023, + //pirateEquips = { + 1002625, 1002616, 1482005, 1052098, 1482003, + 1482001, 1492004, 1002622, 1492005, 1082195, + }; + } + + @Override + public int[] getUncommonItems() { + return new int [] { 1372035, 1372036, 1372037, 1372038, 1372039, + 1372040, 1372041, 1372042, 1382045, 1382046, + 1382047, 1382048, 1382049, 1382050, 1382051, + 1382052, }; + } + + @Override + public int[] getRareItems() { + return new int [] {1382059, 1382057, 1072362, 1002791, 1052161, 1082240}; + } + +} diff --git a/src/server/gachapon/GachaponItems.java b/src/server/gachapon/GachaponItems.java new file mode 100644 index 0000000000..6970c46dcb --- /dev/null +++ b/src/server/gachapon/GachaponItems.java @@ -0,0 +1,47 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ + +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public abstract class GachaponItems { + + public abstract int [] getCommonItems(); + public abstract int [] getUncommonItems(); + public abstract int [] getRareItems(); + + public int[] getItems(int tier) { + if (tier == 0){ + return getCommonItems(); + } else if (tier == 1){ + return getUncommonItems(); + } else if (tier == 2){ + return getRareItems(); + } + return null; + } +} + diff --git a/src/server/gachapon/Global.java b/src/server/gachapon/Global.java new file mode 100644 index 0000000000..a5df649935 --- /dev/null +++ b/src/server/gachapon/Global.java @@ -0,0 +1,60 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class Global extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int[] { + /* Gloves */ 1082002, 1082147, 1082148, 1082146, 1082145, 1082150, + /* Capes */ 1102040, 1102043, 1102087, 1102079, 1102080, 1102081, 1102082, 1102083, 1102053, 1102054, + 1102055, 1102056, 1102176, 1102177, 1102178, 1102179, 1102000, 1102001, 1102002, 1102003, + 1102004, 1102011, 1102012, 1102013, 1102014, 1102015, 1102016, 1102017, 1102018, 1102021, + 1102022, 1102023, 1102024, 1102026, 1102027, 1102028, + /* Tube Eqp */ 1322026, 1322025, 1322024, 1322022, 1322021, + /* Umbrellas */ 1302026, 1302027, 1302028, 1302017, + /* Snowboards */ 1442017, 1442016, 1442014, 1442012, + /* Skis */ 1432017, 1432016, 1432015, + /* Beginner Eqp */ 1442018, 1422011, + /* Potions */ 2000004, 2000005, 2001002, 2001001, 2020012, 2020013, 2020014, 2020015, 2022182, 2022245, + 2022284, 2022285, 2022439, + /* Other Scrolls */ 2049000, 2049001, 2049002, 2041058, 2040727, + /* 10% Scrolls */ 2041002, 2040402, 2040702, 2040805, 2040026, 2040031, 2040318, 2040323, 2040328, 2040419, + 2040422, 2040427, 2040534, 2040619, 2040622, 2040627, 2040825, 2040925, 2040928, 2040933, + 2040016, + /* 60% Scrolls */ 2040001, 2040321, 2040425, 2040625, 2040931, 2048013, 2040025, 2040326, 2040532, 2040824, + 2048010, 2040029, 2040418, 2040618, 2040924, 2048011, 2040317, 2040421, 2040621, 2040927, + 2048012, + /* 100% Scrolls */ 2040923, 2040027, 2040417, 2040617, 2040000, 2040202, 2040400, 2040512, 2040700, 2040803, + 2041000, 2041012, 2048000, 2040926, 2040316, 2040420, 2040620, 2040003, 2040207, 2040414, + 2040515, 2040703, 2040818, 2041003, 2041015, 2048003, 2040929, 2040319, 2040423, 2040623, + 2040102, 2040300, 2040500, 2040600, 2040706, 2040900, 2041006, 2041018, 2040024, 2040324, + 2040530, 2040823, 2040107, 2040312, 2040503, 2040614, 2040800, 2040918, 2041009, 2041021 + }; + } + + @Override + public int[] getUncommonItems() { + return new int[] { + /* Capes */ 1102180, + /* Potions */ 2022179, 2022273, 2022282, 2022283, + /* Scrolls */ 2049003, + /* Skis */ 1432018 + }; + } + + @Override + public int[] getRareItems() { + return new int[] { + /* Gloves */ 1082149, + /* Capes */ 1102041, 1102042, 1102084, 1102085, + /* Scrolls */ 2049100, 2340000, + /* Chairs */ 3010046, 3010047 + }; + } + +} diff --git a/src/server/gachapon/Henesys.java b/src/server/gachapon/Henesys.java new file mode 100644 index 0000000000..28f794225b --- /dev/null +++ b/src/server/gachapon/Henesys.java @@ -0,0 +1,40 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class Henesys extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int [] { + /* Common Eqps */ 1432009, 1302022, 1322027, 1062000, 1002033, 1092022, 1302021, 1322009, 1002012, 1322012, + /* Warrior Eqps */ 1312007, 1002093, 1051016, 1040030, 1060009, 1060000, 1082025, 1402002, 1092000, 1072041, + /* Mage Equips */ 1051023, 1002035, 1061028, 1040019, 1002152, 1002155, 1041018, 1050031, 1002102, 1082028, + /* Bowman Equips */ 1002010, 1002057, 1002112, 1002113, 1002114, 1002115, 1002116, 1002117, 1002118, 1002119, + 1002120, 1002121, 1002135, 1002136, 1002137, 1002138, 1002139, 1002156, 1002157, 1002158, + 1002159, 1002160, 1002161, 1002162, 1002163, 1002164, 1002165, 1002166, 1002167, 1002168, + 1002169, 1002170, 1002211, 1002212, 1002213, 1002214, 1002267, 1002268, 1002269, 1002270, + 1002275, 1002276, 1002277, 1002278, 1002286, 1002287, 1002288, 1002289, 1002402, 1002403, + 1002404, 1002405, 1002406, 1002407, 1002408, 1002580, 1002749 + }; + } + + @Override + public int[] getUncommonItems() { + return new int[] { + /* 110 Equips */ 1002547 + }; + } + + @Override + public int[] getRareItems() { + return new int[] { + /* Reverse Eqps */ 1002792, + 1462052, 1462053, 1462054, 1462055, + }; + } + +} diff --git a/src/server/gachapon/KerningCity.java b/src/server/gachapon/KerningCity.java new file mode 100644 index 0000000000..74f0e1c8be --- /dev/null +++ b/src/server/gachapon/KerningCity.java @@ -0,0 +1,121 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class KerningCity extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int [] { + //warriorEquips = { + 1002023, 1082001, 1041084, 1060017, 1422008, + 1402018, 1060019, 1072047, 1040009, 1060060, + //magicianEquips = { + 1050029, 1072045, 1050028, 1372001, 1051024, + 1061049, 1072091, 1041030, 1041042, 1002036, + //bowmanEquips = { + 1072103, 1072034, 1072069, 1062004, 1082050, + 1040003, 1061064, 1040074, 1061051, 1040079, + //thiefEquips = { + 1002107, 1002108, 1002109, 1002110, 1002111, + 1002122, 1002123, 1002124, 1002125, 1002126, + 1002127, 1002128, 1002129, 1002130, 1002131, + 1002146, 1002147, 1002148, 1002149, 1002150, + 1002171, 1002172, 1002173, 1002174, 1002175, + 1002176, 1002177, 1002178, 1002179, 1002180, + 1002181, 1002182, 1002183, 1002184, 1002185, + 1002207, 1002208, 1002209, 1002210, 1002247, + 1002248, 1002249, 1002281, 1002282, 1002283, + 1002284, 1002285, 1002323, 1002324, 1002325, + 1002326, 1002327, 1002328, 1002329, 1002330, + 1002380, 1002381, 1002382, 1002383, 1002550, + 1002577, 1002656, 1002750, + 1040031, 1040032, 1040033, 1040034, 1040035, + 1040042, 1040043, 1040044, 1040048, 1040049, + 1040050, 1040057, 1040058, 1040059, 1040060, + 1040061, 1040062, 1040063, 1040082, 1040083, + 1040084, 1040094, 1040095, 1040096, 1040097, + 1040098, 1040099, 1040100, 1040105, 1040106, + 1040107, 1040108, 1040109, 1040110, 1040115, + 1040116, 1040117, 1040118, 1041003, 1041036, + 1041037, 1041038, 1041039, 1041040, 1041044, + 1041045, 1041047, 1041048, 1041049, 1041050, + 1041057, 1041058, 1041059, 1041060, 1041074, + 1041075, 1041076, 1041077, 1041078, 1041079, + 1041080, 1041094, 1041095, 1041096, 1041100, + 1041101, 1041102, 1041103, 1041105, 1041106, + 1041107, 1041115, 1041116, 1041117, 1041118, + 1050096, 1050097, 1050098, 1050099, 1051006, + 1051007, 1051008, 1051009, 1051090, 1051091, + 1051092, 1051093, 1052072, 1052163, + 1060021, 1060022, 1060023, 1060024, 1060025, + 1060031, 1060032, 1060033, 1060037, 1060038, + 1060039, 1060043, 1060044, 1060045, 1060046, + 1060050, 1060051, 1060052, 1060071, 1060072, + 1060073, 1060083, 1060084, 1060085, 1060086, + 1060087, 1060088, 1060089, 1060093, 1060094, + 1060095, 1060097, 1060098, 1060099, 1060104, + 1060105, 1060106, 1060107, 1061003, 1061029, + 1061030, 1061031, 1061032, 1061033, 1061037, + 1061038, 1061040, 1061041, 1061042, 1061043, + 1061044, 1061045, 1061046, 1061053, 1061054, + 1061055, 1061056, 1061069, 1061070, 1061071, + 1061076, 1061077, 1061078, 1061079, 1061093, + 1061094, 1061095, 1061099, 1061100, 1061101, + 1061102, 1061104, 1061105, 1061106, 1061114, + 1061115, 1061116, 1061117, 1072022, 1072028, + 1072029, 1072030, 1072031, 1072032, 1072033, + 1072035, 1072036, 1072065, 1072066, 1072070, + 1072071, 1072084, 1072085, 1072086, 1072087, + 1072104, 1072105, 1072106, 1072107, 1072108, + 1072109, 1072110, 1072128, 1072129, 1072130, + 1072131, 1072150, 1072151, 1072152, 1072161, + 1072162, 1072163, 1072171, 1072172, 1072173, + 1072174, 1072192, 1072193, 1072194, 1072195, + 1072213, 1072214, 1072215, 1072216, 1072272, + 1072346, 1082029, 1082030, + 1082031, 1082032, 1082033, 1082034, 1082037, + 1082038, 1082039, 1082042, 1082043, 1082044, + 1082045, 1082046, 1082047, 1082065, 1082066, + 1082067, 1082074, 1082075, 1082076, 1082092, + 1082093, 1082094, 1082095, 1082096, 1082097, + 1082118, 1082119, 1082120, 1082135, 1082136, + 1082137, 1082138, 1082142, 1082143, 1082144, + 1082167, 1082242, 1092018, 1092019, + 1092020, 1302001, + 1312002, 1332000, 1332001, 1332002, 1332003, + 1332004, 1332011, 1332012, 1332013, 1332014, + 1332015, 1332018, 1332023, 1332024, 1332027, + 1332031, 1332050, 1332052, 1332054, + 1332067, 1332068, 1332069, 1332070, 1332071, + 1332072, 1332077, + 1472000, 1472001, 1472002, + 1472003, 1472004, 1472005, 1472006, 1472007, + 1472008, 1472009, 1472010, 1472011, 1472012, + 1472013, 1472014, 1472015, 1472016, 1472017, + 1472018, 1472019, 1472020, 1472021, 1472022, + 1472023, 1472024, 1472025, 1472026, 1472027, + 1472028, 1472029, 1472031, 1472033, 1472051, + 1472052, + 1472069, 1472072, 1472074, + 1472075, + ///pirateEquips = { + 1082192, 1072288, 1492003, 1052113, 1052104, + 1492002, 1052095, 1492001, 1002613, 1492004, + }; + } + + @Override + public int[] getUncommonItems() { + return new int[] {1472053, 1332064, 1092050, 1472054}; + } + + @Override + public int[] getRareItems() { + return new int[] {1472073, 1092049, 1002793, 1332079, 1072364, 1472062, 1332078, 1332080}; + } + +} diff --git a/src/server/gachapon/MapleGachapon.java b/src/server/gachapon/MapleGachapon.java new file mode 100644 index 0000000000..598866947d --- /dev/null +++ b/src/server/gachapon/MapleGachapon.java @@ -0,0 +1,121 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.gachapon; + +import tools.Randomizer; + +/** + * + * @author SharpAceX(Alan) + */ +public class MapleGachapon { + + private static final MapleGachapon instance = new MapleGachapon(); + + public enum Gachapon { + + GLOBAL(-1, -1, -1, -1, new Global()), + HENESYS(9100100, 90, 8, 2, new Henesys()), + ELLINIA(9100101, 90, 8, 2, new Ellinia()), + PERION(9100102, 90, 8, 2, new Perion()), + KERNING_CITY(9100103, 90, 8, 2, new KerningCity()), + SLEEPYWOOD(9100104, 90, 8, 2, new Sleepywood()), + MUSHROOM_SHRINE(9100105, 90, 8, 2, new MushroomShrine()), + SHOWA_SPA_MALE(9100106, 90, 8, 2, new ShowaSpaMale()), + SHOWA_SPA_FEMALE(9100107, 90, 8, 2, new ShowaSpaFemale()), + NEW_LEAF_CITY(9100109, 90, 8, 2, new NewLeafCity()), + NAUTILUS_HARBOR(9100117, 90, 8, 2, new NautilusHarbor()); + + private GachaponItems gachapon; + private int npcId; + private int common; + private int uncommon; + private int rare; + + private Gachapon(int npcid, int c, int u, int r, GachaponItems g) { + npcId = npcid; + gachapon = g; + common = c; + uncommon = u; + rare = r; + } + + private int getTier() { + int chance = Randomizer.nextInt(common + uncommon + rare) + 1; + if (chance > common + uncommon) { + return 2; //Rare + } else if (chance > common) { + return 1; //Uncommon + } + return 0; //Common + } + + public int [] getItems(int tier){ + return gachapon.getItems(tier); + } + + public int getItem(int tier) { + int[] gacha = getItems(tier); + int[] global = GLOBAL.getItems(tier); + int chance = Randomizer.nextInt(gacha.length + global.length); + return chance < gacha.length ? gacha[chance] : global[chance - gacha.length]; + } + + public static Gachapon getByNpcId(int npcId) { + for (Gachapon gacha : Gachapon.values()) { + if (npcId == gacha.npcId) { + return gacha; + } + } + return null; + } + } + + public static MapleGachapon getInstance() { + return instance; + } + + public MapleGachaponItem process(int npcId) { + Gachapon gacha = Gachapon.getByNpcId(npcId); + int tier = gacha.getTier(); + int item = gacha.getItem(tier); + return new MapleGachaponItem(tier, item); + } + + public class MapleGachaponItem { + private int id; + private int tier; + + public MapleGachaponItem(int t, int i) { + id = i; + tier = t; + } + + public int getTier() { + return tier; + } + + public int getId() { + return id; + } + } +} diff --git a/src/server/gachapon/MushroomShrine.java b/src/server/gachapon/MushroomShrine.java new file mode 100644 index 0000000000..aa5f1d4b72 --- /dev/null +++ b/src/server/gachapon/MushroomShrine.java @@ -0,0 +1,40 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class MushroomShrine extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int []{ + 1382011, 1332024, 1302022, 1302021, 1462006, 1402009, 1402010, 1322012, 1312013, 1472008, + 1432008, 1050100, 1051098, + }; + } + + @Override + public int[] getUncommonItems() { + //All Scrolls + return new int [] { + 2043015, 2043017, 2043019, 2044000, 2044001, 2044002, 2044004, 2044005, 2044010, 2044012, + 2044014, 2043200, 2043201, 2043202, 2043204, 2043205, 2043210, 2043212, 2043214, 2044200, + 2044201, 2044202, 2044204, 2044205, 2044210, 2044212, 2044214, 2044300, 2044301, 2044302, + 2044304, 2044305, 2044310, 2044312, 2044314, 2044400, 2044401, 2044402, 2044404, 2044405, + 2044410, 2044412, 2044414, + 2043800, 2043801, 2043802, 2043804, 2043805, 2043700, 2043701, 2043702, 2043704, 2043705, + 2044605, 2044604, 2044602, 2044601, 2044600, 2044505, 2044504, 2044502, 2044501, 2044500, + 2044700, 2044701, 2044702, 2044704, 2044705, 2043300, 2043301, 2043302, 2043304, 2043305, + 2044800, 2044801, 2044802, 2044803, 2044804, 2044805, 2044807, 2044809, 2044900, 2044901, + 2044902, 2044903, 2044904, + }; + } + + @Override + public int[] getRareItems() { + return new int [] {}; + } + +} diff --git a/src/server/gachapon/NautilusHarbor.java b/src/server/gachapon/NautilusHarbor.java new file mode 100644 index 0000000000..138c54d1ae --- /dev/null +++ b/src/server/gachapon/NautilusHarbor.java @@ -0,0 +1,49 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class NautilusHarbor extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int[] { + /* Warrior Equips*/ 1060017, 1302008, 1002055, 1041064, 1072127, 1072047, 1072002, 1040028, 1072041, 1092000, + /* Mage Equips */ 1050010, 1072006, 1061022, 1051003, 1072074, 1050008, 1082053, 1051026, 1382015, 1002013, + /* Bowman Equips */ 1082048, 1041056, 1002157, 1462048, 1041054, 1061061, 1002161, 1002162, 1002158, 1002120, + /* Thief Equips */ 1040061, 1072031, 1051009, 1072036, 1002182, 1060073, 1472013, 1472009, 1002184, 1061055, + /* Pirate Equips */ 1002610, 1002616, 1002622, 1002628, 1002634, 1002640, 1002646, 1052095, 1052101, 1052107, + 1052113, 1052119, 1052125, 1052131, 1072285, 1072291, 1072297, 1072303, 1072309, 1072315, + 1082180, 1082186, 1082192, 1082198, 1082204, 1082210, 1482001, 1482003, 1482005, 1482007, + 1482009, 1482011, 1492000, 1492002, 1492004, 1492006, 1492008, 1492010, 1492012, 1002613, + 1002619, 1002625, 1002631, 1002637, 1002643, 1052098, 1052104, 1052110, 1052116, 1052122, + 1052128, 1072288, 1072294, 1072300, 1072306, 1072312, 1072318, 1072338, 1082183, 1082189, + 1082195, 1082201, 1082207, 1082213, 1482000, 1482002, 1482004, 1482006, 1482008, 1482010, + 1482012, 1492001, 1492003, 1492005, 1492007, 1492009, 1492011, + /*KnucklerScrolls*/ 2044800, 2044801, 2044802, 2044803, 2044804, 2044805, 2044806, 2044807, 2044808, 2044809, + /* Gun Scrolls */ 2044900, 2044901, 2044902, 2044903, 2044904, + /* Bullets */ 2330005, 2330004 + }; + } + + @Override + public int[] getUncommonItems() { + return new int[] { + /* Pirate Equips */ 1072321, 1082216, 1482013, 1002649, 1052134, 1492013, + /* Mastery Books */ 2290097, 2290098, 2290099, 2290100, 2290101, 2290102, 2290103, 2290104, 2290105, 2290106, + 2290107, 2290108, 2290110, 2290111, 2290111, 2290113, 2290114, 2290115, 2290116, 2290117, + 2290118, 2290119, 2290120, 2290121, 2290122, 2290123, 2290124 + }; + } + + @Override + public int[] getRareItems() { + return new int[] { + /* Pirate Equips */ 1082243, 1482024, 1002794, 1052164, 1072365, + 1482034, 1492025 + }; + } + +} diff --git a/src/server/gachapon/NewLeafCity.java b/src/server/gachapon/NewLeafCity.java new file mode 100644 index 0000000000..642b0d0775 --- /dev/null +++ b/src/server/gachapon/NewLeafCity.java @@ -0,0 +1,66 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class NewLeafCity extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int[] { + /* Warrior Equips*/ 1002338, 1002339, 1002340, 1002377, 1002378, 1002379, 1002528, 1002529, 1002530, 1002531, + 1002532, 1040111, 1040112, 1040113, 1040120, 1040121, 1040122, 1041119, 1041120, 1041121, + 1041122, 1041123, 1041124, 1050080, 1050081, 1050082, 1050083, 1051077, 1051078, 1051079, + 1051080, 1060100, 1060101, 1060102, 1060109, 1060110, 1060111, 1061118, 1061119, 1061120, + 1061121, 1061122, 1061123, 1072196, 1072197, 1072198, 1072210, 1072211, 1072212, 1072220, + 1072221, 1072222, 1082114, 1082115, 1082116, 1082117, 1082128, 1082129, 1082130, 1082139, + 1082140, 1082141, 1092023, 1092024, 1092025, 1092026, 1092027, 1092028, 1092036, 1092037, + 1092038, 1092061, 1302018, 1302023, 1302056, 1312011, 1312015, 1312030, 1322020, 1322028, + 1322029, 1322045, 1402004, 1402005, 1402015, 1402016, 1402035, + 1412009, 1412010, 1412021, 1412040, 1422012, 1422013, 1422027, 1432010, + 1432011, 1432030, 1432056, 1442019, 1442020, 1442044, + /* Mage Equips */ 1002271, 1002272, 1002273, 1002274, 1002363, 1002364, 1002365, 1002366, 1002398, 1002399, + 1002400, 1002401, 1050072, 1050073, 1050074, 1050092, 1050093, 1050094, 1050095, 1050102, + 1050103, 1050104, 1050105, 1051056, 1051057, 1051058, 1051094, 1051095, 1051096, 1051097, + 1051101, 1051102, 1051103, 1051104, 1072177, 1072178, 1072179, 1072206, 1072207, 1072208, + 1072209, 1072223, 1072224, 1072225, 1072226, 1082121, 1082122, 1082123, 1082131, 1082132, + 1082133, 1082134, 1082151, 1082152, 1082153, 1082154, 1372009, 1372010, 1372016, 1382008, + 1382010, 1382016, 1382035, 1382056, 1382060, + /* Bowman Equips */ 1002275, 1002276, 1002277, 1002275, 1002278, 1002402, 1002403, 1002404, 1002405, 1002406, + 1002407, 1002408, 1050075, 1050076, 1050077, 1050078, 1050088, 1050089, 1050090, 1050091, + 1050106, 1050107, 1050108, 1002275, 1051066, 1051067, 1051068, 1051069, 1051082, 1051083, + 1051084, 1051085, 1051105, 1051106, 1051107, 1072182, 1072183, 1072184, 1072185, 1072203, + 1072204, 1072205, 1072227, 1072228, 1072229, 1082109, 1082110, 1082111, 1082112, 1082125, + 1082126, 1082127, 1082158, 1082159, 1082160, 1452012, 1452013, 1452014, 1452015, 1452017, + 1452019, 1452020, 1452021, 1452025, 1452026, 1452060, 1462010, 1452017, 1462011, 1462012, + 1462013, 1462015, 1462016, 1462017, 1462018, 1462021, 1462022, 1462049, + /* Thief Equips */ 1002323, 1002324, 1002325, 1002326, 1002327, 1002328, 1002329, 1002330, 1002380, 1002381, + 1002382, 1002383, 1040108, 1040109, 1040110, 1040115, 1040117, 1040118, 1041105, 1041106, + 1041107, 1041115, 1041116, 1041117, 1041118, 1050096, 1050097, 1050098, 1050099, 1051090, + 1051091, 1051092, 1051093, 1060097, 1060098, 1060099, 1060104, 1060105, 1060106, 1060107, + 1061104, 1061105, 1061106, 1061114, 1061115, 1061116, 1061117, 1072172, 1072173, 1072174, + 1072192, 1072193, 1072194, 1072195, 1072213, 1072214, 1072215, 1072216, 1082118, 1082119, + 1082120, 1082135, 1082136, 1082137, 1082138, 1082143, 1082144, 1092050, 1332023, 1332027, + 1332052, 1332069, 1332072, 1472031, 1472033, 1472053, + /* Pirate Equips */ 1002640, 1002643, 1002646, 1052125, 1052128, 1052131, 1072312, 1072315, 1072318, 1082207, + 1082210, 1082213, 1482010, 1482011, 1002640, 1482012, 1492010, 1492011, 1492012 + }; + } + + @Override + public int[] getUncommonItems() { + return new int[] { + 2022179 + }; + } + + @Override + public int[] getRareItems() { + return new int[] { + 2049100 + }; + } + +} diff --git a/src/server/gachapon/Perion.java b/src/server/gachapon/Perion.java new file mode 100644 index 0000000000..ad02155708 --- /dev/null +++ b/src/server/gachapon/Perion.java @@ -0,0 +1,137 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class Perion extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int [] { + //warriorEquips = { + 1002002, 1002003, 1002004, 1002005, 1002007, + 1002009, 1002011, 1002021, 1002022, 1002023, + 1002024, 1002025, 1002027, 1002028, 1002029, + 1002030, 1002039, 1002040, 1002043, 1002044, + 1002045, 1002046, 1002047, 1002048, 1002049, + 1002050, 1002051, 1002052, 1002055, 1002056, + 1002058, 1002059, 1002084, 1002085, 1002086, + 1002087, 1002088, 1002091, 1002092, 1002093, + 1002094, 1002095, 1002098, 1002099, 1002100, + 1002101, 1002338, 1002339, 1002340, 1002377, + 1002378, 1002379, 1002528, 1002529, 1002530, + 1002531, 1002532, 1002551, 1002578, + 1002790, 1040000, 1040009, 1040012, 1040015, + 1040016, 1040021, 1040026, 1040028, 1040029, + 1040030, 1040037, 1040038, 1040039, 1040040, + 1040041, 1040085, 1040086, 1040087, 1040088, + 1040089, 1040090, 1040091, 1040092, 1040093, + 1040102, 1040103, 1040104, 1040111, 1040112, + 1040113, 1040120, 1040121, 1040122, 1041014, + 1041019, 1041020, 1041021, 1041022, 1041023, + 1041024, 1041064, 1041084, 1041085, 1041086, + 1041087, 1041088, 1041089, 1041091, 1041092, + 1041093, 1041097, 1041098, 1041099, 1041119, + 1041120, 1041121, 1041122, 1041123, 1041124, + 1050000, 1050005, 1050006, 1050007, 1050011, + 1050021, 1050022, 1050080, 1050081, 1050082, + 1050083, 1051000, 1051001, 1051010, 1051011, + 1051012, 1051013, 1051014, 1051015, 1051016, + 1051077, 1051078, 1051079, 1051080, 1052075, + 1052160, 1060000, 1060008, 1060009, + 1060010, 1060011, 1060016, 1060017, 1060018, + 1060019, 1060020, 1060027, 1060028, 1060029, + 1060030, 1060060, 1060074, 1060075, 1060076, + 1060077, 1060078, 1060079, 1060080, 1060081, + 1060082, 1060090, 1060091, 1060092, 1060100, + 1060101, 1060102, 1060109, 1060110, 1060111, + 1061014, 1061015, 1061016, 1061017, 1061018, + 1061019, 1061020, 1061023, 1061083, 1061084, + 1061085, 1061086, 1061087, 1061088, 1061090, + 1061091, 1061092, 1061096, 1061097, 1061098, + 1061118, 1061119, 1061120, 1061121, 1061122, + 1061123, 1072000, 1072002, 1072003, 1072007, + 1072009, 1072011, 1072039, 1072040, 1072041, + 1072046, 1072047, 1072050, 1072051, 1072052, + 1072053, 1072112, 1072113, 1072126, 1072127, + 1072132, 1072133, 1072134, 1072135, 1072147, + 1072148, 1072149, 1072154, 1072155, 1072156, + 1072168, 1072196, 1072197, 1072198, 1072210, + 1072211, 1072212, 1072220, 1072221, 1072222, + 1072273, 1082000, 1082001, + 1082003, 1082004, 1082005, 1082006, 1082007, + 1082008, 1082009, 1082010, 1082011, 1082023, + 1082024, 1082025, 1082035, 1082036, 1082059, + 1082060, 1082061, 1082103, 1082104, 1082105, + 1082114, 1082115, 1082116, 1082117, 1082128, + 1082129, 1082130, 1082139, 1082140, 1082141, + 1082168, 1082218, 1082239, 1092000, + 1092001, 1092002, 1092004, 1092005, 1092006, + 1092007, 1092009, 1092010, 1092011, 1092012, + 1092013, 1092014, 1092015, 1092016, 1092017, + 1092023, 1092024, 1092025, 1092026, 1092027, + 1092028, 1092036, 1092037, 1092038, + 1092060, 1092061, 1302002, 1302004, 1302005, + 1302008, 1302009, 1302010, 1302011, 1302012, + 1302015, 1302018, 1302019, 1302023, 1302037, + 1302056, 1302059, 1302068, 1302079, + 1312001, 1312003, 1312005, + 1312006, 1312007, 1312008, 1312009, 1312010, + 1312011, 1312015, 1312016, 1312030, 1312031, + 1322014, 1322015, + 1322016, 1322017, 1322018, 1322019, 1322020, + 1322028, 1322029, 1322045, 1322052, 1322059, + 1322062, 1402000, + 1402002, 1402003, 1402004, 1402005, 1402006, + 1402007, 1402008, 1402011, 1402012, 1402015, + 1402016, 1402017, 1402018, 1402035, 1402036, + 1412000, 1412002, + 1412003, 1412004, 1412005, 1412006, 1412007, + 1412008, 1412009, 1412010, 1412012, 1412021, + 1412026, 1412032, 1412040, + 1422001, 1422002, 1422003, 1422005, + 1422007, 1422008, 1422009, 1422010, 1422012, + 1422013, 1422027, 1422028, 1422030, 1422031, + 1422038, 1422044, 1432002, 1432003, + 1432004, 1432005, 1432006, 1432007, 1432010, + 1432011, 1432030, 1432038, 1432045, + 1432048, 1432056, 1442001, 1442002, + 1442003, 1442005, 1442006, 1442007, 1442008, + 1442009, 1442010, 1442019, 1442020, 1442044, + 1442045, 1442060, 1442067, + //magicianEquips = { + 1002075, 1050035, 1002151, 1051023, 1072089, + 1072115, 1072076, 1040018, 1382017, 1072072, + //bowmanEquips = { + 1040011, 1041061, 1040076, 1040003, 1072059, + 1082017, 1002114, 1041066, 1060057, 1040007, + //thiefEquips = { + 1072032, 1472011, 1082037, 1040059, 1040084, + 1040043, 1072085, 1040031, 1332031, 1082075, + //pirateEquips = { + 1482001, 1492002, 1052113, 1002616, 1072294, + 1492004, 1482006, 1082192, 1082189, 1082195, + }; + } + + @Override + public int[] getUncommonItems() { + //All Scrolls + return new int [] { + 2043000, 2043001, 2043002, 2043004, 2043005, 2043006, 2043007, 2043008, 2043009, 2043010, + 2043015, 2043017, 2043019, 2044000, 2044001, 2044002, 2044004, 2044005, 2044010, 2044012, + 2044014, 2043200, 2043201, 2043202, 2043204, 2043205, 2043210, 2043212, 2043214, 2044200, + 2044201, 2044202, 2044204, 2044205, 2044210, 2044212, 2044214, 2044300, 2044301, 2044302, + 2044304, 2044305, 2044310, 2044312, 2044314, 2044400, 2044401, 2044402, 2044404, 2044405, + 2044410, 2044412, 2044414, + }; + } + + @Override + public int[] getRareItems() { + return new int [] {1402037, 1402049, 1072361, 1402048, 1402049, 1402050, 1402051}; + } + +} diff --git a/src/server/gachapon/ShowaSpaFemale.java b/src/server/gachapon/ShowaSpaFemale.java new file mode 100644 index 0000000000..ceececd25a --- /dev/null +++ b/src/server/gachapon/ShowaSpaFemale.java @@ -0,0 +1,25 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class ShowaSpaFemale extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int [] {}; + } + + @Override + public int[] getUncommonItems() { + return new int [] {}; + } + + @Override + public int[] getRareItems() { + return new int [] {1022082, 1022060}; + } + +} diff --git a/src/server/gachapon/ShowaSpaMale.java b/src/server/gachapon/ShowaSpaMale.java new file mode 100644 index 0000000000..45efb9bacd --- /dev/null +++ b/src/server/gachapon/ShowaSpaMale.java @@ -0,0 +1,25 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class ShowaSpaMale extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int [] {}; + } + + @Override + public int[] getUncommonItems() { + return new int [] {}; + } + + @Override + public int[] getRareItems() { + return new int [] {1022082, 1022060}; + } + +} diff --git a/src/server/gachapon/Sleepywood.java b/src/server/gachapon/Sleepywood.java new file mode 100644 index 0000000000..8de992a56e --- /dev/null +++ b/src/server/gachapon/Sleepywood.java @@ -0,0 +1,106 @@ +package server.gachapon; + +/** +* +* @author SharpAceX(Alan) +*/ + +public class Sleepywood extends GachaponItems { + + @Override + public int[] getCommonItems() { + return new int [] { + //warriorEquips = { + 1002022, 1002024, 1002028, 1002029, 1002030, + 1002045, 1002046, 1002084, 1002085, 1002086, + 1002091, 1002094, 1002095, 1002100, 1002101, + 1040087, 1040088, 1040089, 1040090, 1040091, + 1040092, 1040093, 1040102, 1040103, 1040104, + 1041087, 1041088, 1041089, 1041091, 1041092, + 1041093, 1041097, 1041098, 1041099, 1060076, + 1060077, 1060078, 1060079, 1060080, 1060081, + 1060082, 1060090, 1060091, 1060092, 1061086, + 1061087, 1061088, 1061090, 1061091, 1061092, + 1061096, 1061097, 1061098, 1072132, 1072133, + 1072134, 1072135, 1072147, 1072148, 1072149, + 1072154, 1072155, 1072156, 1082009, 1082010, + 1082011, 1082059, 1082060, 1082061, 1082103, + 1082104, 1082105, 1082218, 1092004, 1092009, + 1092010, 1092011, 1092015, 1092016, 1092017, + 1302010, 1302011, 1302012, 1302015, 1302019, + 1302037, 1302079, 1312008, 1312009, + 1312010, 1322017, 1322018, 1322019, 1322059, + 1402003, 1402011, 1402012, 1402017, 1412003, + 1412007, 1412008, 1412032, 1422005, 1422009, + 1422010, 1432004, 1432006, 1432007, 1432045, + 1442005, 1442008, 1442010, 1442060, + //magicianEquips = { + 1002215, 1002216, 1002217, 1002218, 1002242, + 1002243, 1002244, 1002245, 1002246, 1002252, + 1002253, 1002254, 1050045, 1050046, 1050047, + 1050048, 1050049, 1050053, 1050054, 1050055, + 1050056, 1050067, 1050068, 1050069, 1050070, + 1051030, 1051031, 1051032, 1051033, 1051034, + 1051044, 1051045, 1051046, 1051047, 1051052, + 1051053, 1051054, 1051055, 1072136, 1072137, + 1072138, 1072139, 1072140, 1072141, 1072142, + 1072143, 1072157, 1072158, 1072159, 1072160, + 1082080, 1082081, 1082082, 1082086, 1082087, + 1082088, 1082098, 1082099, 1082100, 1372007, + 1372008, 1372011, 1372014, 1372015, 1372035, + 1372036, 1372037, 1372038, 1382001, 1382006, + 1382007, 1382011, 1382014, 1382041, + //bowmanEquips = { + 1002211, 1002212, 1002213, 1002214, 1002267, + 1002268, 1002269, 1002270, 1002286, 1002287, + 1002288, 1002289, 1002749, 1050051, 1050052, + 1050058, 1050059, 1050060, 1050061, 1050062, + 1050063, 1050064, 1051037, 1051038, 1051039, + 1051041, 1051042, 1051043, 1051062, 1051063, + 1051064, 1051065, 1072122, 1072123, 1072124, + 1072125, 1072144, 1072145, 1072146, 1072164, + 1072165, 1072166, 1072167, 1072345, 1082083, + 1082084, 1082085, 1082089, 1082090, 1082091, + 1082106, 1082107, 1082108, 1452004, 1452008, + 1452009, 1452010, 1452011, 1452018, 1452023, + 1452052, 1462006, 1462007, 1462008, 1462009, + 1462046, + //thiefEquips = { + 1002207, 1002208, 1002209, 1002210, 1002247, + 1002248, 1002249, 1002281, 1002282, 1002283, + 1002284, 1002285, 1002656, 1002750, 1040094, + 1040095, 1040096, 1040097, 1040098, 1040099, + 1040100, 1040105, 1040106, 1040107, 1041077, + 1041078, 1041079, 1041080, 1041094, 1041095, + 1041096, 1041100, 1041101, 1041102, 1041103, + 1060083, 1060084, 1060085, 1060086, 1060087, + 1060088, 1060089, 1060093, 1060094, 1060095, + 1061076, 1061077, 1061078, 1061079, 1061093, + 1061094, 1061095, 1061099, 1061100, 1061101, + 1061102, 1072128, 1072129, 1072130, 1072131, + 1072150, 1072151, 1072152, 1072161, 1072162, + 1072163, 1072346, 1082065, 1082066, 1082067, + 1082092, 1082093, 1082094, 1082095, 1082096, + 1082097, 1332003, 1332015, 1332018, 1332024, + 1332054, 1332064, 1472018, 1472019, 1472020, + 1472021, 1472022, 1472023, 1472024, 1472025, + 1472026, 1472027, 1472028, 1472029, 1472054, + 1472062, + //pirateEquips = { + 1002631, 1002634, 1002637, 1052116, 1052119, + 1052122, 1072303, 1072306, 1072309, 1082198, + 1082201, 1082204, 1482007, 1482008, 1482009, + }; + } + + @Override + public int[] getUncommonItems() { + return new int [] {}; + } + + @Override + public int[] getRareItems() { + return new int [] {1302068, 2070007, 1022082, 1022058}; + } + +} diff --git a/src/server/life/AbstractLoadedMapleLife.java b/src/server/life/AbstractLoadedMapleLife.java new file mode 100644 index 0000000000..d0964f9bc0 --- /dev/null +++ b/src/server/life/AbstractLoadedMapleLife.java @@ -0,0 +1,106 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +import server.maps.AbstractAnimatedMapleMapObject; + +public abstract class AbstractLoadedMapleLife extends AbstractAnimatedMapleMapObject { + private final int id; + private int f; + private boolean hide; + private int fh; + private int start_fh; + private int cy; + private int rx0; + private int rx1; + + public AbstractLoadedMapleLife(int id) { + this.id = id; + } + + public AbstractLoadedMapleLife(AbstractLoadedMapleLife life) { + this(life.getId()); + this.f = life.f; + this.hide = life.hide; + this.fh = life.fh; + this.start_fh = life.fh; + this.cy = life.cy; + this.rx0 = life.rx0; + this.rx1 = life.rx1; + } + + public int getF() { + return f; + } + + public void setF(int f) { + this.f = f; + } + + public boolean isHidden() { + return hide; + } + + public void setHide(boolean hide) { + this.hide = hide; + } + + public int getFh() { + return fh; + } + + public void setFh(int fh) { + this.fh = fh; + } + + public int getStartFh() { + return start_fh; + } + + public int getCy() { + return cy; + } + + public void setCy(int cy) { + this.cy = cy; + } + + public int getRx0() { + return rx0; + } + + public void setRx0(int rx0) { + this.rx0 = rx0; + } + + public int getRx1() { + return rx1; + } + + public void setRx1(int rx1) { + this.rx1 = rx1; + } + + public int getId() { + return id; + } +} diff --git a/src/server/life/Element.java b/src/server/life/Element.java new file mode 100644 index 0000000000..063447f6ce --- /dev/null +++ b/src/server/life/Element.java @@ -0,0 +1,46 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +public enum Element { + NEUTRAL, FIRE, ICE, LIGHTING, POISON, HOLY, DARK; + + public static Element getFromChar(char c) { + switch (Character.toUpperCase(c)) { + case 'F': + return FIRE; + case 'I': + return ICE; + case 'L': + return LIGHTING; + case 'S': + return POISON; + case 'H': + return HOLY; + case 'D': + return DARK; + case 'P': + return NEUTRAL; + } + throw new IllegalArgumentException("unknown elemnt char " + c); + } +} diff --git a/src/server/life/ElementalEffectiveness.java b/src/server/life/ElementalEffectiveness.java new file mode 100644 index 0000000000..4c5756761f --- /dev/null +++ b/src/server/life/ElementalEffectiveness.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +public enum ElementalEffectiveness { + NORMAL, IMMUNE, STRONG, WEAK, NEUTRAL; + + public static ElementalEffectiveness getByNumber(int num) { + switch (num) { + case 1: + return IMMUNE; + case 2: + return STRONG; + case 3: + return WEAK; + case 4: + return NEUTRAL; + default: + throw new IllegalArgumentException("Unkown effectiveness: " + num); + } + } +} diff --git a/src/server/life/MapleLifeFactory.java b/src/server/life/MapleLifeFactory.java new file mode 100644 index 0000000000..d57700f80f --- /dev/null +++ b/src/server/life/MapleLifeFactory.java @@ -0,0 +1,236 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package server.life; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import provider.wz.MapleDataType; +import tools.Pair; +import tools.StringUtil; + +public class MapleLifeFactory { + + private static MapleDataProvider data = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Mob.wz")); + private final static MapleDataProvider stringDataWZ = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/String.wz")); + private static MapleData mobStringData = stringDataWZ.getData("Mob.img"); + private static MapleData npcStringData = stringDataWZ.getData("Npc.img"); + private static Map monsterStats = new HashMap<>(); + + public static AbstractLoadedMapleLife getLife(int id, String type) { + if (type.equalsIgnoreCase("n")) { + return getNPC(id); + } else if (type.equalsIgnoreCase("m")) { + return getMonster(id); + } else { + System.out.println("Unknown Life type: " + type); + return null; + } + } + + public static MapleMonster getMonster(int mid) { + MapleMonsterStats stats = monsterStats.get(Integer.valueOf(mid)); + if (stats == null) { + MapleData monsterData = data.getData(StringUtil.getLeftPaddedStr(Integer.toString(mid) + ".img", '0', 11)); + if (monsterData == null) { + return null; + } + MapleData monsterInfoData = monsterData.getChildByPath("info"); + stats = new MapleMonsterStats(); + stats.setHp(MapleDataTool.getIntConvert("maxHP", monsterInfoData)); + stats.setFriendly(MapleDataTool.getIntConvert("damagedByMob", monsterInfoData, 0) == 1); + stats.setPADamage(MapleDataTool.getIntConvert("PADamage", monsterInfoData)); + stats.setPDDamage(MapleDataTool.getIntConvert("PDDamage", monsterInfoData)); + stats.setMADamage(MapleDataTool.getIntConvert("MADamage", monsterInfoData)); + stats.setMDDamage(MapleDataTool.getIntConvert("MDDamage", monsterInfoData)); + stats.setMp(MapleDataTool.getIntConvert("maxMP", monsterInfoData, 0)); + stats.setExp(MapleDataTool.getIntConvert("exp", monsterInfoData, 0)); + stats.setLevel(MapleDataTool.getIntConvert("level", monsterInfoData)); + stats.setRemoveAfter(MapleDataTool.getIntConvert("removeAfter", monsterInfoData, 0)); + stats.setBoss(MapleDataTool.getIntConvert("boss", monsterInfoData, 0) > 0); + stats.setExplosiveReward(MapleDataTool.getIntConvert("explosiveReward", monsterInfoData, 0) > 0); + stats.setFfaLoot(MapleDataTool.getIntConvert("publicReward", monsterInfoData, 0) > 0); + stats.setUndead(MapleDataTool.getIntConvert("undead", monsterInfoData, 0) > 0); + stats.setName(MapleDataTool.getString(mid + "/name", mobStringData, "MISSINGNO")); + stats.setBuffToGive(MapleDataTool.getIntConvert("buff", monsterInfoData, -1)); + stats.setCP(MapleDataTool.getIntConvert("getCP", monsterInfoData, 0)); + stats.setRemoveOnMiss(MapleDataTool.getIntConvert("removeOnMiss", monsterInfoData, 0) > 0); + + MapleData special = monsterInfoData.getChildByPath("coolDamage"); + if (special != null) { + int coolDmg = MapleDataTool.getIntConvert("coolDamage", monsterInfoData); + int coolProb = MapleDataTool.getIntConvert("coolDamageProb", monsterInfoData, 0); + stats.setCool(new Pair<>(coolDmg, coolProb)); + } + special = monsterInfoData.getChildByPath("loseItem"); + if (special != null) { + for (MapleData liData : special.getChildren()) { + stats.addLoseItem(new loseItem(MapleDataTool.getInt(liData.getChildByPath("id")), (byte) MapleDataTool.getInt(liData.getChildByPath("prop")), (byte) MapleDataTool.getInt(liData.getChildByPath("x")))); + } + } + special = monsterInfoData.getChildByPath("selfDestruction"); + if (special != null) { + stats.setSelfDestruction(new selfDestruction((byte) MapleDataTool.getInt(special.getChildByPath("action")), MapleDataTool.getIntConvert("removeAfter", special, -1), MapleDataTool.getIntConvert("hp", special, -1))); + } + MapleData firstAttackData = monsterInfoData.getChildByPath("firstAttack"); + int firstAttack = 0; + if (firstAttackData != null) { + if (firstAttackData.getType() == MapleDataType.FLOAT) { + firstAttack = Math.round(MapleDataTool.getFloat(firstAttackData)); + } else { + firstAttack = MapleDataTool.getInt(firstAttackData); + } + } + stats.setFirstAttack(firstAttack > 0); + stats.setDropPeriod(MapleDataTool.getIntConvert("dropItemPeriod", monsterInfoData, 0) * 10000); + + stats.setTagColor(MapleDataTool.getIntConvert("hpTagColor", monsterInfoData, 0)); + stats.setTagBgColor(MapleDataTool.getIntConvert("hpTagBgcolor", monsterInfoData, 0)); + + for (MapleData idata : monsterData) { + if (!idata.getName().equals("info")) { + int delay = 0; + for (MapleData pic : idata.getChildren()) { + delay += MapleDataTool.getIntConvert("delay", pic, 0); + } + stats.setAnimationTime(idata.getName(), delay); + } + } + MapleData reviveInfo = monsterInfoData.getChildByPath("revive"); + if (reviveInfo != null) { + List revives = new LinkedList<>(); + for (MapleData data_ : reviveInfo) { + revives.add(MapleDataTool.getInt(data_)); + } + stats.setRevives(revives); + } + decodeElementalString(stats, MapleDataTool.getString("elemAttr", monsterInfoData, "")); + MapleData monsterSkillData = monsterInfoData.getChildByPath("skill"); + if (monsterSkillData != null) { + int i = 0; + List> skills = new ArrayList<>(); + while (monsterSkillData.getChildByPath(Integer.toString(i)) != null) { + skills.add(new Pair<>(Integer.valueOf(MapleDataTool.getInt(i + "/skill", monsterSkillData, 0)), Integer.valueOf(MapleDataTool.getInt(i + "/level", monsterSkillData, 0)))); + i++; + } + stats.setSkills(skills); + } + MapleData banishData = monsterInfoData.getChildByPath("ban"); + if (banishData != null) { + stats.setBanishInfo(new BanishInfo(MapleDataTool.getString("banMsg", banishData), MapleDataTool.getInt("banMap/0/field", banishData, -1), MapleDataTool.getString("banMap/0/portal", banishData, "sp"))); + } + monsterStats.put(Integer.valueOf(mid), stats); + } + MapleMonster ret = new MapleMonster(mid, stats); + return ret; + } + + private static void decodeElementalString(MapleMonsterStats stats, String elemAttr) { + for (int i = 0; i < elemAttr.length(); i += 2) { + stats.setEffectiveness(Element.getFromChar(elemAttr.charAt(i)), ElementalEffectiveness.getByNumber(Integer.valueOf(String.valueOf(elemAttr.charAt(i + 1))))); + } + } + + public static MapleNPC getNPC(int nid) { + return new MapleNPC(nid, new MapleNPCStats(MapleDataTool.getString(nid + "/name", npcStringData, "MISSINGNO"))); + } + + public static class BanishInfo { + + private int map; + private String portal, msg; + + public BanishInfo(String msg, int map, String portal) { + this.msg = msg; + this.map = map; + this.portal = portal; + } + + public int getMap() { + return map; + } + + public String getPortal() { + return portal; + } + + public String getMsg() { + return msg; + } + } + + public static class loseItem { + + private int id; + private byte chance, x; + + private loseItem(int id, byte chance, byte x) { + this.id = id; + this.chance = chance; + this.x = x; + } + + public int getId() { + return id; + } + + public byte getChance() { + return chance; + } + + public byte getX() { + return x; + } + } + + public static class selfDestruction { + + private byte action; + private int removeAfter; + private int hp; + + private selfDestruction(byte action, int removeAfter, int hp) { + this.action = action; + this.removeAfter = removeAfter; + this.hp = hp; + } + + public int getHp() { + return hp; + } + + public byte getAction() { + return action; + } + + public int removeAfter() { + return removeAfter; + } + } +} diff --git a/src/server/life/MapleMonster.java b/src/server/life/MapleMonster.java new file mode 100644 index 0000000000..f702bf461f --- /dev/null +++ b/src/server/life/MapleMonster.java @@ -0,0 +1,954 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.life; + +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleClient; +import client.MapleJob; +import client.Skill; +import client.SkillFactory; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; +import constants.ServerConstants; +import constants.skills.FPMage; +import constants.skills.Hermit; +import constants.skills.ILMage; +import constants.skills.NightLord; +import constants.skills.NightWalker; +import constants.skills.Shadower; +import constants.skills.SuperGM; +import java.awt.Point; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantLock; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import scripting.event.EventInstanceManager; +import server.TimerManager; +import server.life.MapleLifeFactory.BanishInfo; +import server.maps.MapleMap; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; + +public class MapleMonster extends AbstractLoadedMapleLife { + + private MapleMonsterStats stats; + private int hp, mp; + private WeakReference controller = new WeakReference<>(null); + private boolean controllerHasAggro, controllerKnowsAboutAggro; + private EventInstanceManager eventInstance = null; + private Collection listeners = new LinkedList<>(); + private EnumMap stati = new EnumMap<>(MonsterStatus.class); + private ArrayList alreadyBuffed = new ArrayList(); + private MapleMap map; + private int VenomMultiplier = 0; + private boolean fake = false; + private boolean dropsDisabled = false; + private List> usedSkills = new ArrayList<>(); + private Map, Integer> skillsUsed = new HashMap<>(); + private List stolenItems = new ArrayList<>(); + private int team; + private final HashMap takenDamage = new HashMap<>(); + + public ReentrantLock monsterLock = new ReentrantLock(); + + public MapleMonster(int id, MapleMonsterStats stats) { + super(id); + initWithStats(stats); + } + + public MapleMonster(MapleMonster monster) { + super(monster); + initWithStats(monster.stats); + } + + private void initWithStats(MapleMonsterStats stats) { + setStance(5); + this.stats = stats; + hp = stats.getHp(); + mp = stats.getMp(); + } + + public void disableDrops() { + this.dropsDisabled = true; + } + + public boolean dropsDisabled() { + return dropsDisabled; + } + + public void setMap(MapleMap map) { + this.map = map; + } + + public int getHp() { + return hp; + } + + public void setHp(int hp) { + this.hp = hp; + } + + public int getMaxHp() { + return stats.getHp(); + } + + public int getMp() { + return mp; + } + + public void setMp(int mp) { + if (mp < 0) { + mp = 0; + } + this.mp = mp; + } + + public int getMaxMp() { + return stats.getMp(); + } + + public int getExp() { + return stats.getExp(); + } + + int getLevel() { + return stats.getLevel(); + } + + public int getCP() { + return stats.getCP(); + } + + public int getTeam() { + return team; + } + + public void setTeam(int team) { + this.team = team; + } + + public int getVenomMulti() { + return this.VenomMultiplier; + } + + public void setVenomMulti(int multiplier) { + this.VenomMultiplier = multiplier; + } + + public MapleMonsterStats getStats() { + return stats; + } + + public boolean isBoss() { + return stats.isBoss() || isHT(); + } + + public int getAnimationTime(String name) { + return stats.getAnimationTime(name); + } + + private List getRevives() { + return stats.getRevives(); + } + + private byte getTagColor() { + return stats.getTagColor(); + } + + private byte getTagBgColor() { + return stats.getTagBgColor(); + } + + /** + * + * @param from the player that dealt the damage + * @param damage + */ + public synchronized void damage(MapleCharacter from, int damage) { // may be pointless synchronization + if (!isAlive()) { + return; + } + int trueDamage = Math.min(hp, damage); // since magic happens otherwise B^) + + if(ServerConstants.USE_DEBUG == true && from != null) from.dropMessage(5, "Hitted MOB " + this.getId()); + + hp -= damage; + if (takenDamage.containsKey(from.getId())) { + takenDamage.get(from.getId()).addAndGet(trueDamage); + } else { + takenDamage.put(from.getId(), new AtomicInteger(trueDamage)); + } + + if (hasBossHPBar()) { + from.getMap().broadcastMessage(makeBossHPBarPacket(), getPosition()); + } else if (!isBoss()) { + int remainingHP = (int) Math.max(1, hp * 100f / getMaxHp()); + byte[] packet = MaplePacketCreator.showMonsterHP(getObjectId(), remainingHP); + if (from.getParty() != null) { + for (MaplePartyCharacter mpc : from.getParty().getMembers()) { + MapleCharacter member = from.getMap().getCharacterById(mpc.getId()); // god bless + if (member != null) { + member.announce(packet.clone()); // clone it just in case of crypto + } + } + } else { + from.announce(packet); + } + } + } + + public void heal(int hp, int mp) { + int hp2Heal = getHp() + hp; + int mp2Heal = getMp() + mp; + if (hp2Heal >= getMaxHp()) { + hp2Heal = getMaxHp(); + } + if (mp2Heal >= getMaxMp()) { + mp2Heal = getMaxMp(); + } + setHp(hp2Heal); + setMp(mp2Heal); + getMap().broadcastMessage(MaplePacketCreator.healMonster(getObjectId(), hp)); + } + + public boolean isAttackedBy(MapleCharacter chr) { + return takenDamage.containsKey(chr.getId()); + } + + private void distributeExperienceToParty(int pid, int exp, int killer, Map expDist) { + LinkedList members = new LinkedList<>(); + + map.getCharacterReadLock().lock(); + Collection chrs = map.getCharacters(); + try { + for (MapleCharacter mc : chrs) { + if (mc.getPartyId() == pid) { + members.add(mc); + } + } + } finally { + map.getCharacterReadLock().unlock(); + } + + final int minLevel = getLevel() - 5; + + int partyLevel = 0; + int leechMinLevel = 0; + + for (MapleCharacter mc : members) { + if (mc.getLevel() >= minLevel) { + leechMinLevel = Math.min(mc.getLevel() - 5, minLevel); + } + } + + int leechCount = 0; + for (MapleCharacter mc : members) { + if (mc.getLevel() >= leechMinLevel) { + partyLevel += mc.getLevel(); + leechCount++; + } + } + + final int mostDamageCid = getHighestDamagerId(); + + for (MapleCharacter mc : members) { + int id = mc.getId(); + int level = mc.getLevel(); + if (expDist.containsKey(id) + || level >= leechMinLevel) { + boolean isKiller = killer == id; + boolean mostDamage = mostDamageCid == id; + int xp = (int) (exp * 0.80f * level / partyLevel); + if (mostDamage) { + xp += (exp * 0.20f); + } + giveExpToCharacter(mc, xp, isKiller, leechCount); + } + } + } + + public void distributeExperience(int killerId) { + if (isAlive()) { + return; + } + int exp = getExp(); + int totalHealth = getMaxHp(); + Map expDist = new HashMap<>(); + Map partyExp = new HashMap<>(); + // 80% of pool is split amongst all the damagers + for (Entry damage : takenDamage.entrySet()) { + expDist.put(damage.getKey(), (int) (0.80f * exp * damage.getValue().get() / totalHealth)); + } + map.getCharacterReadLock().lock(); // avoid concurrent mod + Collection chrs = map.getCharacters(); + try { + for (MapleCharacter mc : chrs) { + if (expDist.containsKey(mc.getId())) { + boolean isKiller = mc.getId() == killerId; + int xp = expDist.get(mc.getId()); + if (isKiller) { + xp += exp / 5; + } + MapleParty p = mc.getParty(); + if (p != null) { + int pID = p.getId(); + int pXP = xp + (partyExp.containsKey(pID) ? partyExp.get(pID) : 0); + partyExp.put(pID, pXP); + } else { + giveExpToCharacter(mc, xp, isKiller, 1); + } + } + } + } finally { + map.getCharacterReadLock().unlock(); + } + for (Entry party : partyExp.entrySet()) { + distributeExperienceToParty(party.getKey(), party.getValue(), killerId, expDist); + } + } + + public void giveExpToCharacter(MapleCharacter attacker, int exp, boolean isKiller, int numExpSharers) { + if (isKiller) { + if (eventInstance != null) { + eventInstance.monsterKilled(attacker, this); + } + } + final int partyModifier = numExpSharers > 1 ? (110 + (5 * (numExpSharers - 2))) : 0; + + int partyExp = 0; + + if (attacker.getHp() > 0) { + int personalExp = exp * attacker.getExpRate(); + + if (exp > 0) { + if (partyModifier > 0) { + partyExp = (int) (personalExp * ServerConstants.PARTY_EXPERIENCE_MOD * partyModifier / 1000f); + } + Integer holySymbol = attacker.getBuffedValue(MapleBuffStat.HOLY_SYMBOL); + boolean GMHolySymbol = attacker.getBuffSource(MapleBuffStat.HOLY_SYMBOL) == SuperGM.HOLY_SYMBOL; + if (holySymbol != null) { + if (numExpSharers == 1 && !GMHolySymbol) { + personalExp *= 1.0 + (holySymbol.doubleValue() / 500.0); + } else { + personalExp *= 1.0 + (holySymbol.doubleValue() / 100.0); + } + } + if (stati.containsKey(MonsterStatus.SHOWDOWN)) { + personalExp *= (stati.get(MonsterStatus.SHOWDOWN).getStati().get(MonsterStatus.SHOWDOWN).doubleValue() / 100.0 + 1.0); + } + } + if (exp < 0) {//O.O >< + personalExp = Integer.MAX_VALUE; + } + attacker.gainExp(personalExp, partyExp, true, false, isKiller); + attacker.mobKilled(getId()); + attacker.increaseEquipExp(personalExp);//better place + } + } + + public MapleCharacter killBy(MapleCharacter killer) { + distributeExperience(killer != null ? killer.getId() : 0); + + if (getController() != null) { // this can/should only happen when a hidden gm attacks the monster + getController().getClient().announce(MaplePacketCreator.stopControllingMonster(this.getObjectId())); + getController().stopControllingMonster(this); + } + + final List toSpawn = this.getRevives(); // this doesn't work (?) + if (toSpawn != null) { + final MapleMap reviveMap = killer.getMap(); + if (toSpawn.contains(9300216) && reviveMap.getId() > 925000000 && reviveMap.getId() < 926000000) { + reviveMap.broadcastMessage(MaplePacketCreator.playSound("Dojang/clear")); + reviveMap.broadcastMessage(MaplePacketCreator.showEffect("dojang/end/clear")); + } + Pair timeMob = reviveMap.getTimeMob(); + if (timeMob != null) { + if (toSpawn.contains(timeMob.getLeft())) { + reviveMap.broadcastMessage(MaplePacketCreator.serverNotice(6, timeMob.getRight())); + } + + if (timeMob.getLeft() == 9300338 && (reviveMap.getId() >= 922240100 && reviveMap.getId() <= 922240119)) { + if (!reviveMap.containsNPC(9001108)) { + MapleNPC npc = MapleLifeFactory.getNPC(9001108); + npc.setPosition(new Point(172, 9)); + npc.setCy(9); + npc.setRx0(172 + 50); + npc.setRx1(172 - 50); + npc.setFh(27); + reviveMap.addMapObject(npc); + reviveMap.broadcastMessage(MaplePacketCreator.spawnNPC(npc)); + } else { + reviveMap.toggleHiddenNPC(9001108); + } + } + } + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + for (Integer mid : toSpawn) { + final MapleMonster mob = MapleLifeFactory.getMonster(mid); + mob.setPosition(getPosition()); + if (dropsDisabled()) { + mob.disableDrops(); + } + reviveMap.spawnMonster(mob); + } + } + }, getAnimationTime("die1")); + } + if (eventInstance != null) { + if (!this.getStats().isFriendly()) { + eventInstance.monsterKilled(this); + } + } + // idk V just a troll + for (MonsterListener listener : listeners.toArray(new MonsterListener[listeners.size()])) { + listener.monsterKilled(getAnimationTime("die1")); + } + + MapleCharacter looter = map.getCharacterById(getHighestDamagerId()); + + return looter != null ? looter : killer; + } + + // should only really be used to determine drop owner + private int getHighestDamagerId() { + int curId = 0; + int curDmg = 0; + + for (Entry damage : takenDamage.entrySet()) { + curId = damage.getValue().get() >= curDmg ? damage.getKey() : curId; + curDmg = damage.getKey() == curId ? damage.getValue().get() : curDmg; + } + + return curId; + } + + public boolean isAlive() { + return this.hp > 0; + } + + public MapleCharacter getController() { + return controller.get(); + } + + public void setController(MapleCharacter controller) { + this.controller = new WeakReference<>(controller); + } + + public void switchController(MapleCharacter newController, boolean immediateAggro) { + MapleCharacter controllers = getController(); + if (controllers == newController) { + return; + } + if (controllers != null) { + controllers.stopControllingMonster(this); + controllers.getClient().announce(MaplePacketCreator.stopControllingMonster(getObjectId())); + } + newController.controlMonster(this, immediateAggro); + setController(newController); + if (immediateAggro) { + setControllerHasAggro(true); + } + setControllerKnowsAboutAggro(false); + } + + public void addListener(MonsterListener listener) { + listeners.add(listener); + } + + public boolean isControllerHasAggro() { + return fake ? false : controllerHasAggro; + } + + public void setControllerHasAggro(boolean controllerHasAggro) { + if (fake) { + return; + } + this.controllerHasAggro = controllerHasAggro; + } + + public boolean isControllerKnowsAboutAggro() { + return fake ? false : controllerKnowsAboutAggro; + } + + public void setControllerKnowsAboutAggro(boolean controllerKnowsAboutAggro) { + if (fake) { + return; + } + this.controllerKnowsAboutAggro = controllerKnowsAboutAggro; + } + + public byte[] makeBossHPBarPacket() { + return MaplePacketCreator.showBossHP(getId(), getHp(), getMaxHp(), getTagColor(), getTagBgColor()); + } + + public boolean hasBossHPBar() { + return (isBoss() && getTagColor() > 0) || isHT(); + } + + private boolean isHT() { + return getId() == 8810018; + } + + @Override + public void sendSpawnData(MapleClient c) { + if (!isAlive()) { + return; + } + if (isFake()) { + c.announce(MaplePacketCreator.spawnFakeMonster(this, 0)); + } else { + c.announce(MaplePacketCreator.spawnMonster(this, false)); + } + if (stati.size() > 0) { + for (final MonsterStatusEffect mse : this.stati.values()) { + c.announce(MaplePacketCreator.applyMonsterStatus(getObjectId(), mse, null)); + } + } + if (hasBossHPBar()) { + if (this.getMap().countMonster(8810026) > 0 && this.getMap().getId() == 240060200) { + this.getMap().killAllMonsters(); + return; + } + c.announce(makeBossHPBarPacket()); + } + } + + @Override + public void sendDestroyData(MapleClient client) { + client.announce(MaplePacketCreator.killMonster(getObjectId(), false)); + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.MONSTER; + } + + public void setEventInstance(EventInstanceManager eventInstance) { + this.eventInstance = eventInstance; + } + + public EventInstanceManager getEventInstance() { + return eventInstance; + } + + public boolean isMobile() { + return stats.isMobile(); + } + + public ElementalEffectiveness getEffectiveness(Element e) { + if (stati.size() > 0 && stati.get(MonsterStatus.DOOM) != null) { + return ElementalEffectiveness.NORMAL; // like blue snails + } + return stats.getEffectiveness(e); + } + + public boolean applyStatus(MapleCharacter from, final MonsterStatusEffect status, boolean poison, long duration) { + return applyStatus(from, status, poison, duration, false); + } + + public boolean applyStatus(MapleCharacter from, final MonsterStatusEffect status, boolean poison, long duration, boolean venom) { + switch (stats.getEffectiveness(status.getSkill().getElement())) { + case IMMUNE: + case STRONG: + case NEUTRAL: + return false; + case NORMAL: + case WEAK: + break; + default: { + System.out.println("Unknown elemental effectiveness: " + stats.getEffectiveness(status.getSkill().getElement())); + return false; + } + } + + if (status.getSkill().getId() == FPMage.ELEMENT_COMPOSITION) { // fp compo + ElementalEffectiveness effectiveness = stats.getEffectiveness(Element.POISON); + if (effectiveness == ElementalEffectiveness.IMMUNE || effectiveness == ElementalEffectiveness.STRONG) { + return false; + } + } else if (status.getSkill().getId() == ILMage.ELEMENT_COMPOSITION) { // il compo + ElementalEffectiveness effectiveness = stats.getEffectiveness(Element.ICE); + if (effectiveness == ElementalEffectiveness.IMMUNE || effectiveness == ElementalEffectiveness.STRONG) { + return false; + } + } else if (status.getSkill().getId() == NightLord.VENOMOUS_STAR || status.getSkill().getId() == Shadower.VENOMOUS_STAB || status.getSkill().getId() == NightWalker.VENOM) {// venom + if (stats.getEffectiveness(Element.POISON) == ElementalEffectiveness.WEAK) { + return false; + } + } + if (poison && getHp() <= 1) { + return false; + } + + final Map statis = status.getStati(); + if (stats.isBoss()) { + if (!(statis.containsKey(MonsterStatus.SPEED) + && statis.containsKey(MonsterStatus.NINJA_AMBUSH) + && statis.containsKey(MonsterStatus.WATK))) { + return false; + } + } + + for (MonsterStatus stat : statis.keySet()) { + final MonsterStatusEffect oldEffect = stati.get(stat); + if (oldEffect != null) { + oldEffect.removeActiveStatus(stat); + if (oldEffect.getStati().isEmpty()) { + oldEffect.cancelTask(); + oldEffect.cancelDamageSchedule(); + } + } + } + + TimerManager timerManager = TimerManager.getInstance(); + final Runnable cancelTask = new Runnable() { + + @Override + public void run() { + if (isAlive()) { + byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), status.getStati()); + map.broadcastMessage(packet, getPosition()); + if (getController() != null && !getController().isMapObjectVisible(MapleMonster.this)) { + getController().getClient().announce(packet); + } + } + for (MonsterStatus stat : status.getStati().keySet()) { + stati.remove(stat); + } + setVenomMulti(0); + status.cancelDamageSchedule(); + } + }; + if (poison) { + int poisonLevel = from.getSkillLevel(status.getSkill()); + int poisonDamage = Math.min(Short.MAX_VALUE, (int) (getMaxHp() / (70.0 - poisonLevel) + 0.999)); + status.setValue(MonsterStatus.POISON, Integer.valueOf(poisonDamage)); + status.setDamageSchedule(timerManager.register(new DamageTask(poisonDamage, from, status, cancelTask, 0), 1000, 1000)); + } else if (venom) { + if (from.getJob() == MapleJob.NIGHTLORD || from.getJob() == MapleJob.SHADOWER || from.getJob().isA(MapleJob.NIGHTWALKER3)) { + int poisonLevel, matk, id = from.getJob().getId(); + int skill = (id == 412 ? NightLord.VENOMOUS_STAR : (id == 422 ? Shadower.VENOMOUS_STAB : NightWalker.VENOM)); + poisonLevel = from.getSkillLevel(SkillFactory.getSkill(skill)); + if (poisonLevel <= 0) { + return false; + } + matk = SkillFactory.getSkill(skill).getEffect(poisonLevel).getMatk(); + int luk = from.getLuk(); + int maxDmg = (int) Math.ceil(Math.min(Short.MAX_VALUE, 0.2 * luk * matk)); + int minDmg = (int) Math.ceil(Math.min(Short.MAX_VALUE, 0.1 * luk * matk)); + int gap = maxDmg - minDmg; + if (gap == 0) { + gap = 1; + } + int poisonDamage = 0; + for (int i = 0; i < getVenomMulti(); i++) { + poisonDamage += (Randomizer.nextInt(gap) + minDmg); + } + poisonDamage = Math.min(Short.MAX_VALUE, poisonDamage); + status.setValue(MonsterStatus.VENOMOUS_WEAPON, Integer.valueOf(poisonDamage)); + status.setDamageSchedule(timerManager.register(new DamageTask(poisonDamage, from, status, cancelTask, 0), 1000, 1000)); + } else { + return false; + } + + } else if (status.getSkill().getId() == Hermit.SHADOW_WEB || status.getSkill().getId() == NightWalker.SHADOW_WEB) { //Shadow Web + status.setDamageSchedule(timerManager.schedule(new DamageTask((int) (getMaxHp() / 50.0 + 0.999), from, status, cancelTask, 1), 3500)); + } else if (status.getSkill().getId() == 4121004 || status.getSkill().getId() == 4221004) { // Ninja Ambush + final Skill skill = SkillFactory.getSkill(status.getSkill().getId()); + final byte level = from.getSkillLevel(skill); + final int damage = (int) ((from.getStr() + from.getLuk()) * (1.5 + (level * 0.05)) * skill.getEffect(level).getDamage()); + /*if (getHp() - damage <= 1) { make hp 1 betch + damage = getHp() - (getHp() - 1); + }*/ + + status.setValue(MonsterStatus.NINJA_AMBUSH, Integer.valueOf(damage)); + status.setDamageSchedule(timerManager.register(new DamageTask(damage, from, status, cancelTask, 2), 1000, 1000)); + } + for (MonsterStatus stat : status.getStati().keySet()) { + stati.put(stat, status); + alreadyBuffed.add(stat); + } + int animationTime = status.getSkill().getAnimationTime(); + byte[] packet = MaplePacketCreator.applyMonsterStatus(getObjectId(), status, null); + map.broadcastMessage(packet, getPosition()); + if (getController() != null && !getController().isMapObjectVisible(this)) { + getController().getClient().announce(packet); + } + status.setCancelTask(timerManager.schedule(cancelTask, duration + animationTime)); + return true; + } + + public void applyMonsterBuff(final Map stats, final int x, int skillId, long duration, MobSkill skill, final List reflection) { + TimerManager timerManager = TimerManager.getInstance(); + final Runnable cancelTask = new Runnable() { + + @Override + public void run() { + if (isAlive()) { + byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), stats); + map.broadcastMessage(packet, getPosition()); + if (getController() != null && !getController().isMapObjectVisible(MapleMonster.this)) { + getController().getClient().announce(packet); + } + for (final MonsterStatus stat : stats.keySet()) { + stati.remove(stat); + } + } + } + }; + final MonsterStatusEffect effect = new MonsterStatusEffect(stats, null, skill, true); + byte[] packet = MaplePacketCreator.applyMonsterStatus(getObjectId(), effect, reflection); + map.broadcastMessage(packet, getPosition()); + for (MonsterStatus stat : stats.keySet()) { + stati.put(stat, effect); + alreadyBuffed.add(stat); + } + if (getController() != null && !getController().isMapObjectVisible(this)) { + getController().getClient().announce(packet); + } + effect.setCancelTask(timerManager.schedule(cancelTask, duration)); + } + + public void debuffMob(int skillid) { + //skillid is not going to be used for now until I get warrior debuff working + MonsterStatus[] stats = {MonsterStatus.WEAPON_ATTACK_UP, MonsterStatus.WEAPON_DEFENSE_UP, MonsterStatus.MAGIC_ATTACK_UP, MonsterStatus.MAGIC_DEFENSE_UP}; + for (int i = 0; i < stats.length; i++) { + if (isBuffed(stats[i])) { + final MonsterStatusEffect oldEffect = stati.get(stats[i]); + byte[] packet = MaplePacketCreator.cancelMonsterStatus(getObjectId(), oldEffect.getStati()); + map.broadcastMessage(packet, getPosition()); + if (getController() != null && !getController().isMapObjectVisible(MapleMonster.this)) { + getController().getClient().announce(packet); + } + stati.remove(stats); + } + } + } + + public boolean isBuffed(MonsterStatus status) { + return stati.containsKey(status); + } + + public void setFake(boolean fake) { + this.fake = fake; + } + + public boolean isFake() { + return fake; + } + + public MapleMap getMap() { + return map; + } + + public List> getSkills() { + return stats.getSkills(); + } + + public boolean hasSkill(int skillId, int level) { + return stats.hasSkill(skillId, level); + } + + public boolean canUseSkill(MobSkill toUse) { + if (toUse == null) { + return false; + } + for (Pair skill : usedSkills) { + if (skill.getLeft() == toUse.getSkillId() && skill.getRight() == toUse.getSkillLevel()) { + return false; + } + } + if (toUse.getLimit() > 0) { + if (this.skillsUsed.containsKey(new Pair<>(toUse.getSkillId(), toUse.getSkillLevel()))) { + int times = this.skillsUsed.get(new Pair<>(toUse.getSkillId(), toUse.getSkillLevel())); + if (times >= toUse.getLimit()) { + return false; + } + } + } + if (toUse.getSkillId() == 200) { + Collection mmo = getMap().getMapObjects(); + int i = 0; + for (MapleMapObject mo : mmo) { + if (mo.getType() == MapleMapObjectType.MONSTER) { + i++; + } + } + if (i > 100) { + return false; + } + } + return true; + } + + public void usedSkill(final int skillId, final int level, long cooltime) { + this.usedSkills.add(new Pair<>(skillId, level)); + if (this.skillsUsed.containsKey(new Pair<>(skillId, level))) { + int times = this.skillsUsed.get(new Pair<>(skillId, level)) + 1; + this.skillsUsed.remove(new Pair<>(skillId, level)); + this.skillsUsed.put(new Pair<>(skillId, level), times); + } else { + this.skillsUsed.put(new Pair<>(skillId, level), 1); + } + final MapleMonster mons = this; + TimerManager tMan = TimerManager.getInstance(); + tMan.schedule( + new Runnable() { + + @Override + public void run() { + mons.clearSkill(skillId, level); + } + }, cooltime); + } + + public void clearSkill(int skillId, int level) { + int index = -1; + for (Pair skill : usedSkills) { + if (skill.getLeft() == skillId && skill.getRight() == level) { + index = usedSkills.indexOf(skill); + break; + } + } + if (index != -1) { + usedSkills.remove(index); + } + } + + public int getNoSkills() { + return this.stats.getNoSkills(); + } + + public boolean isFirstAttack() { + return this.stats.isFirstAttack(); + } + + public int getBuffToGive() { + return this.stats.getBuffToGive(); + } + + private final class DamageTask implements Runnable { + + private final int dealDamage; + private final MapleCharacter chr; + private final MonsterStatusEffect status; + private final Runnable cancelTask; + private final int type; + private final MapleMap map; + + private DamageTask(int dealDamage, MapleCharacter chr, MonsterStatusEffect status, Runnable cancelTask, int type) { + this.dealDamage = dealDamage; + this.chr = chr; + this.status = status; + this.cancelTask = cancelTask; + this.type = type; + this.map = chr.getMap(); + } + + @Override + public void run() { + int damage = dealDamage; + if (damage >= hp) { + damage = hp - 1; + if (type == 1 || type == 2) { + map.broadcastMessage(MaplePacketCreator.damageMonster(getObjectId(), damage), getPosition()); + cancelTask.run(); + status.getCancelTask().cancel(false); + } + } + if (hp > 1 && damage > 0) { + damage(chr, damage); + if (type == 1) { + map.broadcastMessage(MaplePacketCreator.damageMonster(getObjectId(), damage), getPosition()); + } + } + } + } + + public String getName() { + return stats.getName(); + } + + public void addStolen(int itemId) { + stolenItems.add(itemId); + } + + public List getStolen() { + return stolenItems; + } + + public void setTempEffectiveness(Element e, ElementalEffectiveness ee, long milli) { + final Element fE = e; + final ElementalEffectiveness fEE = stats.getEffectiveness(e); + if (!stats.getEffectiveness(e).equals(ElementalEffectiveness.WEAK)) { + stats.setEffectiveness(e, ee); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + stats.removeEffectiveness(fE); + stats.setEffectiveness(fE, fEE); + } + }, milli); + } + } + + public Collection alreadyBuffedStats() { + return Collections.unmodifiableCollection(alreadyBuffed); + } + + public BanishInfo getBanish() { + return stats.getBanishInfo(); + } + + public void setBoss(boolean boss) { + this.stats.setBoss(boss); + } + + public int getDropPeriodTime() { + return stats.getDropPeriod(); + } + + public int getPADamage() { + return stats.getPADamage(); + } + + public Map getStati() { + return stati; + } +} diff --git a/src/server/life/MapleMonsterInformationProvider.java b/src/server/life/MapleMonsterInformationProvider.java new file mode 100644 index 0000000000..1c11ebd0b8 --- /dev/null +++ b/src/server/life/MapleMonsterInformationProvider.java @@ -0,0 +1,171 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.life; + +import java.io.File; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import tools.DatabaseConnection; +import tools.Pair; + +public class MapleMonsterInformationProvider { + // Author : LightPepsi + + private static final MapleMonsterInformationProvider instance = new MapleMonsterInformationProvider(); + private final Map> drops = new HashMap<>(); + private final List globaldrops = new ArrayList<>(); + + protected MapleMonsterInformationProvider() { + retrieveGlobal(); + } + + public static MapleMonsterInformationProvider getInstance() { + return instance; + } + + public final List getGlobalDrop() { + return globaldrops; + } + + private void retrieveGlobal() { + PreparedStatement ps = null; + ResultSet rs = null; + + try { + final Connection con = DatabaseConnection.getConnection(); + ps = con.prepareStatement("SELECT * FROM drop_data_global WHERE chance > 0"); + rs = ps.executeQuery(); + + while (rs.next()) { + globaldrops.add( + new MonsterGlobalDropEntry( + rs.getInt("itemid"), + rs.getInt("chance"), + rs.getInt("continent"), + rs.getByte("dropType"), + rs.getInt("minimum_quantity"), + rs.getInt("maximum_quantity"), + rs.getShort("questid"))); + } + rs.close(); + ps.close(); + } catch (SQLException e) { + System.err.println("Error retrieving drop" + e); + } finally { + try { + if (ps != null) { + ps.close(); + } + if (rs != null) { + rs.close(); + } + } catch (SQLException ignore) { + } + } + } + + public final List retrieveDrop(final int monsterId) { + if (drops.containsKey(monsterId)) { + return drops.get(monsterId); + } + final List ret = new LinkedList<>(); + + PreparedStatement ps = null; + ResultSet rs = null; + try { + ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM drop_data WHERE dropperid = ?"); + ps.setInt(1, monsterId); + rs = ps.executeQuery(); + + while (rs.next()) { + ret.add( + new MonsterDropEntry( + rs.getInt("itemid"), + rs.getInt("chance"), + rs.getInt("minimum_quantity"), + rs.getInt("maximum_quantity"), + rs.getShort("questid"))); + } + } catch (SQLException e) { + return ret; + } finally { + try { + if (ps != null) { + ps.close(); + } + if (rs != null) { + rs.close(); + } + } catch (SQLException ignore) { + return ret; + } + } + drops.put(monsterId, ret); + return ret; + } + + public static ArrayList> getMobsIDsFromName(String search) + { + MapleDataProvider dataProvider = MapleDataProviderFactory.getDataProvider(new File("wz/String.wz")); + ArrayList> retMobs = new ArrayList>(); + MapleData data = dataProvider.getData("Mob.img"); + List> mobPairList = new LinkedList>(); + for (MapleData mobIdData : data.getChildren()) { + int mobIdFromData = Integer.parseInt(mobIdData.getName()); + String mobNameFromData = MapleDataTool.getString(mobIdData.getChildByPath("name"), "NO-NAME"); + mobPairList.add(new Pair(mobIdFromData, mobNameFromData)); + } + for (Pair mobPair : mobPairList) { + if (mobPair.getRight().toLowerCase().contains(search.toLowerCase())) { + retMobs.add(mobPair); + } + } + return retMobs; + } + + public static String getMobNameFromID(int id) + { + try + { + return MapleLifeFactory.getMonster(id).getName(); + } catch (Exception e) + { + return null; //nonexistant mob + } + } + + public final void clearDrops() { + drops.clear(); + globaldrops.clear(); + retrieveGlobal(); + } +} \ No newline at end of file diff --git a/src/server/life/MapleMonsterStats.java b/src/server/life/MapleMonsterStats.java new file mode 100644 index 0000000000..65a20703b6 --- /dev/null +++ b/src/server/life/MapleMonsterStats.java @@ -0,0 +1,327 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import server.life.MapleLifeFactory.BanishInfo; +import server.life.MapleLifeFactory.loseItem; +import server.life.MapleLifeFactory.selfDestruction; +import tools.Pair; + +/** + * @author Frz + */ +public class MapleMonsterStats { + private int exp, hp, mp, level, PADamage, PDDamage, MADamage, MDDamage, dropPeriod, cp, buffToGive, removeAfter; + private boolean boss, undead, ffaLoot, isExplosiveReward, firstAttack, removeOnMiss; + private String name; + private Map animationTimes = new HashMap(); + private Map resistance = new HashMap(); + private List revives = Collections.emptyList(); + private byte tagColor, tagBgColor; + private List> skills = new ArrayList>(); + private Pair cool = null; + private BanishInfo banish = null; + private List loseItem = null; + private selfDestruction selfDestruction = null; + private boolean friendly; + + public int getExp() { + return exp; + } + + public void setExp(int exp) { + this.exp = exp; + } + + public int getHp() { + return hp; + } + + public void setHp(int hp) { + this.hp = hp; + } + + public int getMp() { + return mp; + } + + public void setMp(int mp) { + this.mp = mp; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int removeAfter() { + return removeAfter; + } + + public void setRemoveAfter(int removeAfter) { + this.removeAfter = removeAfter; + } + + public int getDropPeriod() { + return dropPeriod; + } + + public void setDropPeriod(int dropPeriod) { + this.dropPeriod = dropPeriod; + } + + public void setBoss(boolean boss) { + this.boss = boss; + } + + public boolean isBoss() { + return boss; + } + + public void setFfaLoot(boolean ffaLoot) { + this.ffaLoot = ffaLoot; + } + + public boolean isFfaLoot() { + return ffaLoot; + } + + public void setAnimationTime(String name, int delay) { + animationTimes.put(name, delay); + } + + public int getAnimationTime(String name) { + Integer ret = animationTimes.get(name); + if (ret == null) { + return 500; + } + return ret.intValue(); + } + + public boolean isMobile() { + return animationTimes.containsKey("move") || animationTimes.containsKey("fly"); + } + + public List getRevives() { + return revives; + } + + public void setRevives(List revives) { + this.revives = revives; + } + + public void setUndead(boolean undead) { + this.undead = undead; + } + + public boolean getUndead() { + return undead; + } + + public void setEffectiveness(Element e, ElementalEffectiveness ee) { + resistance.put(e, ee); + } + + public ElementalEffectiveness getEffectiveness(Element e) { + ElementalEffectiveness elementalEffectiveness = resistance.get(e); + if (elementalEffectiveness == null) { + return ElementalEffectiveness.NORMAL; + } else { + return elementalEffectiveness; + } + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public byte getTagColor() { + return tagColor; + } + + public void setTagColor(int tagColor) { + this.tagColor = (byte) tagColor; + } + + public byte getTagBgColor() { + return tagBgColor; + } + + public void setTagBgColor(int tagBgColor) { + this.tagBgColor = (byte) tagBgColor; + } + + public void setSkills(List> skills) { + for (Pair skill : skills) { + this.skills.add(skill); + } + } + + public List> getSkills() { + return Collections.unmodifiableList(this.skills); + } + + public int getNoSkills() { + return this.skills.size(); + } + + public boolean hasSkill(int skillId, int level) { + for (Pair skill : skills) { + if (skill.getLeft() == skillId && skill.getRight() == level) { + return true; + } + } + return false; + } + + public void setFirstAttack(boolean firstAttack) { + this.firstAttack = firstAttack; + } + + public boolean isFirstAttack() { + return firstAttack; + } + + public void setBuffToGive(int buff) { + this.buffToGive = buff; + } + + public int getBuffToGive() { + return buffToGive; + } + + void removeEffectiveness(Element e) { + resistance.remove(e); + } + + public BanishInfo getBanishInfo() { + return banish; + } + + public void setBanishInfo(BanishInfo banish) { + this.banish = banish; + } + + public int getPADamage() { + return PADamage; + } + + public void setPADamage(int PADamage) { + this.PADamage = PADamage; + } + + public int getCP() { + return cp; + } + + public void setCP(int cp) { + this.cp = cp; + } + + public List loseItem() { + return loseItem; + } + + public void addLoseItem(loseItem li) { + if (loseItem == null) { + loseItem = new LinkedList(); + } + loseItem.add(li); + } + + public selfDestruction selfDestruction() { + return selfDestruction; + } + + public void setSelfDestruction(selfDestruction sd) { + this.selfDestruction = sd; + } + + public void setExplosiveReward(boolean isExplosiveReward) { + this.isExplosiveReward = isExplosiveReward; + } + + public boolean isExplosiveReward() { + return isExplosiveReward; + } + + public void setRemoveOnMiss(boolean removeOnMiss) { + this.removeOnMiss = removeOnMiss; + } + + public boolean removeOnMiss() { + return removeOnMiss; + } + + public void setCool(Pair cool) { + this.cool = cool; + } + + public Pair getCool() { + return cool; + } + + public int getPDDamage() { + return PDDamage; + } + + public int getMADamage() { + return MADamage; + } + + public int getMDDamage() { + return MDDamage; + } + + public boolean isFriendly() { + return friendly; + } + + public void setFriendly(boolean value) { + this.friendly = value; + } + + public void setPDDamage(int PDDamage) { + this.PDDamage = PDDamage; + } + + public void setMADamage(int MADamage) { + this.MADamage = MADamage; + } + + public void setMDDamage(int MDDamage) { + this.MDDamage = MDDamage; + } +} diff --git a/src/server/life/MapleNPC.java b/src/server/life/MapleNPC.java new file mode 100644 index 0000000000..da7f2ed03d --- /dev/null +++ b/src/server/life/MapleNPC.java @@ -0,0 +1,68 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +import client.MapleClient; +import server.MapleShopFactory; +import server.maps.MapleMapObjectType; +import tools.MaplePacketCreator; + +public class MapleNPC extends AbstractLoadedMapleLife { + private MapleNPCStats stats; + + public MapleNPC(int id, MapleNPCStats stats) { + super(id); + this.stats = stats; + } + + public boolean hasShop() { + return MapleShopFactory.getInstance().getShopForNPC(getId()) != null; + } + + public void sendShop(MapleClient c) { + MapleShopFactory.getInstance().getShopForNPC(getId()).sendShop(c); + } + + @Override + public void sendSpawnData(MapleClient client) { + if (this.getId() > 9010010 && this.getId() < 9010014) { + client.announce(MaplePacketCreator.spawnNPCRequestController(this, false)); + } else { + client.announce(MaplePacketCreator.spawnNPC(this)); + client.announce(MaplePacketCreator.spawnNPCRequestController(this, true)); + } + } + + @Override + public void sendDestroyData(MapleClient client) { + client.announce(MaplePacketCreator.removeNPC(getObjectId())); + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.NPC; + } + + public String getName() { + return stats.getName(); + } +} diff --git a/src/server/life/MapleNPCStats.java b/src/server/life/MapleNPCStats.java new file mode 100644 index 0000000000..1b225dde5c --- /dev/null +++ b/src/server/life/MapleNPCStats.java @@ -0,0 +1,42 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +/** + * + * @author Matze + */ +public class MapleNPCStats { + private String name; + + public MapleNPCStats(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/server/life/MobAttackInfo.java b/src/server/life/MobAttackInfo.java new file mode 100644 index 0000000000..59a5a9b679 --- /dev/null +++ b/src/server/life/MobAttackInfo.java @@ -0,0 +1,77 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +/** + * + * @author Danny (Leifde) + */ +public class MobAttackInfo { + private boolean isDeadlyAttack; + private int mpBurn; + private int diseaseSkill; + private int diseaseLevel; + private int mpCon; + + public MobAttackInfo(int mobId, int attackId) { + } + + public void setDeadlyAttack(boolean isDeadlyAttack) { + this.isDeadlyAttack = isDeadlyAttack; + } + + public boolean isDeadlyAttack() { + return isDeadlyAttack; + } + + public void setMpBurn(int mpBurn) { + this.mpBurn = mpBurn; + } + + public int getMpBurn() { + return mpBurn; + } + + public void setDiseaseSkill(int diseaseSkill) { + this.diseaseSkill = diseaseSkill; + } + + public int getDiseaseSkill() { + return diseaseSkill; + } + + public void setDiseaseLevel(int diseaseLevel) { + this.diseaseLevel = diseaseLevel; + } + + public int getDiseaseLevel() { + return diseaseLevel; + } + + public void setMpCon(int mpCon) { + this.mpCon = mpCon; + } + + public int getMpCon() { + return mpCon; + } +} diff --git a/src/server/life/MobAttackInfoFactory.java b/src/server/life/MobAttackInfoFactory.java new file mode 100644 index 0000000000..e80bc44cc6 --- /dev/null +++ b/src/server/life/MobAttackInfoFactory.java @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import tools.StringUtil; + +/** + * + * @author Danny (Leifde) + */ +public class MobAttackInfoFactory { + private static Map mobAttacks = new HashMap(); + private static MapleDataProvider dataSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Mob.wz")); + + public static MobAttackInfo getMobAttackInfo(MapleMonster mob, int attack) { + MobAttackInfo ret = mobAttacks.get(mob.getId() + "" + attack); + if (ret != null) { + return ret; + } + synchronized (mobAttacks) { + ret = mobAttacks.get(mob.getId() + "" + attack); + if (ret == null) { + MapleData mobData = dataSource.getData(StringUtil.getLeftPaddedStr(Integer.toString(mob.getId()) + ".img", '0', 11)); + if (mobData != null) { +// MapleData infoData = mobData.getChildByPath("info"); + String linkedmob = MapleDataTool.getString("link", mobData, ""); + if (!linkedmob.equals("")) { + mobData = dataSource.getData(StringUtil.getLeftPaddedStr(linkedmob + ".img", '0', 11)); + } + MapleData attackData = mobData.getChildByPath("attack" + (attack + 1) + "/info"); + + if (attackData == null) { + return null; + } + + MapleData deadlyAttack = attackData.getChildByPath("deadlyAttack"); + int mpBurn = MapleDataTool.getInt("mpBurn", attackData, 0); + int disease = MapleDataTool.getInt("disease", attackData, 0); + int level = MapleDataTool.getInt("level", attackData, 0); + int mpCon = MapleDataTool.getInt("conMP", attackData, 0); + ret = new MobAttackInfo(mob.getId(), attack); + ret.setDeadlyAttack(deadlyAttack != null); + ret.setMpBurn(mpBurn); + ret.setDiseaseSkill(disease); + ret.setDiseaseLevel(level); + ret.setMpCon(mpCon); + } + mobAttacks.put(mob.getId() + "" + attack, ret); + } + return ret; + } + } +} diff --git a/src/server/life/MobSkill.java b/src/server/life/MobSkill.java new file mode 100644 index 0000000000..2681ade906 --- /dev/null +++ b/src/server/life/MobSkill.java @@ -0,0 +1,386 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +import java.awt.Point; +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import client.MapleCharacter; +import client.MapleDisease; +import client.status.MonsterStatus; +import java.util.LinkedList; +import java.util.Map; +import tools.Randomizer; +import server.maps.MapleMapObject; +import server.maps.MapleMapObjectType; +import server.maps.MapleMist; +import tools.ArrayMap; + +/** + * + * @author Danny (Leifde) + */ +public class MobSkill { + private int skillId, skillLevel, mpCon; + private List toSummon = new ArrayList(); + private int spawnEffect, hp, x, y; + private long duration, cooltime; + private float prop; + private Point lt, rb; + private int limit; + + public MobSkill(int skillId, int level) { + this.skillId = skillId; + this.skillLevel = level; + } + + public void setMpCon(int mpCon) { + this.mpCon = mpCon; + } + + public void addSummons(List toSummon) { + for (Integer summon : toSummon) { + this.toSummon.add(summon); + } + } + + public void setSpawnEffect(int spawnEffect) { + this.spawnEffect = spawnEffect; + } + + public void setHp(int hp) { + this.hp = hp; + } + + public void setX(int x) { + this.x = x; + } + + public void setY(int y) { + this.y = y; + } + + public void setDuration(long duration) { + this.duration = duration; + } + + public void setCoolTime(long cooltime) { + this.cooltime = cooltime; + } + + public void setProp(float prop) { + this.prop = prop; + } + + public void setLtRb(Point lt, Point rb) { + this.lt = lt; + this.rb = rb; + } + + public void setLimit(int limit) { + this.limit = limit; + } + + public void applyEffect(MapleCharacter player, MapleMonster monster, boolean skill) { + MapleDisease disease = null; + Map stats = new ArrayMap(); + List reflection = new LinkedList(); + switch (skillId) { + case 100: + case 110: + case 150: + stats.put(MonsterStatus.WEAPON_ATTACK_UP, Integer.valueOf(x)); + break; + case 101: + case 111: + case 151: + stats.put(MonsterStatus.MAGIC_ATTACK_UP, Integer.valueOf(x)); + break; + case 102: + case 112: + case 152: + stats.put(MonsterStatus.WEAPON_DEFENSE_UP, Integer.valueOf(x)); + break; + case 103: + case 113: + case 153: + stats.put(MonsterStatus.MAGIC_DEFENSE_UP, Integer.valueOf(x)); + break; + case 114: + if (lt != null && rb != null && skill) { + List objects = getObjectsInRange(monster, MapleMapObjectType.MONSTER); + final int hps = (getX() / 1000) * (int) (950 + 1050 * Math.random()); + for (MapleMapObject mons : objects) { + ((MapleMonster) mons).heal(hps, getY()); + } + } else { + monster.heal(getX(), getY()); + } + break; + case 120: + disease = MapleDisease.SEAL; + break; + case 121: + disease = MapleDisease.DARKNESS; + break; + case 122: + disease = MapleDisease.WEAKEN; + break; + case 123: + disease = MapleDisease.STUN; + break; + case 124: + disease = MapleDisease.CURSE; + break; + case 125: + disease = MapleDisease.POISON; + break; + case 126: // Slow + disease = MapleDisease.SLOW; + break; + case 127: + if (lt != null && rb != null && skill) { + for (MapleCharacter character : getPlayersInRange(monster, player)) { + character.dispel(); + } + } else { + player.dispel(); + } + break; + case 128: // Seduce + disease = MapleDisease.SEDUCE; + break; + case 129: // Banish + if (lt != null && rb != null && skill) { + for (MapleCharacter chr : getPlayersInRange(monster, player)) { + chr.changeMapBanish(monster.getBanish().getMap(), monster.getBanish().getPortal(), monster.getBanish().getMsg()); + } + } else { + player.changeMapBanish(monster.getBanish().getMap(), monster.getBanish().getPortal(), monster.getBanish().getMsg()); + } + break; + case 131: // Mist + monster.getMap().spawnMist(new MapleMist(calculateBoundingBox(monster.getPosition(), true), monster, this), x * 10, false, false, false); + break; + case 132: + disease = MapleDisease.CONFUSE; + break; + case 133: // zombify + break; + case 140: + if (makeChanceResult() && !monster.isBuffed(MonsterStatus.MAGIC_IMMUNITY)) { + stats.put(MonsterStatus.WEAPON_IMMUNITY, Integer.valueOf(x)); + } + break; + case 141: + if (makeChanceResult() && !monster.isBuffed(MonsterStatus.WEAPON_IMMUNITY)) { + stats.put(MonsterStatus.MAGIC_IMMUNITY, Integer.valueOf(x)); + } + break; + case 143: // Weapon Reflect + stats.put(MonsterStatus.WEAPON_REFLECT, Integer.valueOf(x)); + stats.put(MonsterStatus.WEAPON_IMMUNITY, Integer.valueOf(x)); + reflection.add(x); + break; + case 144: // Magic Reflect + stats.put(MonsterStatus.MAGIC_REFLECT, Integer.valueOf(x)); + stats.put(MonsterStatus.MAGIC_IMMUNITY, Integer.valueOf(x)); + reflection.add(x); + break; + case 145: // Weapon / Magic reflect + stats.put(MonsterStatus.WEAPON_REFLECT, Integer.valueOf(x)); + stats.put(MonsterStatus.WEAPON_IMMUNITY, Integer.valueOf(x)); + stats.put(MonsterStatus.MAGIC_REFLECT, Integer.valueOf(x)); + stats.put(MonsterStatus.MAGIC_IMMUNITY, Integer.valueOf(x)); + reflection.add(x); + break; + case 154: // accuracy up + case 155: // avoid up + case 156: // speed up + break; + case 200: + if (monster.getMap().getSpawnedMonstersOnMap() < 80) { + for (Integer mobId : getSummons()) { + MapleMonster toSpawn = MapleLifeFactory.getMonster(mobId); + toSpawn.setPosition(monster.getPosition()); + int ypos, xpos; + xpos = (int) monster.getPosition().getX(); + ypos = (int) monster.getPosition().getY(); + switch (mobId) { + case 8500003: // Pap bomb high + toSpawn.setFh((int) Math.ceil(Math.random() * 19.0)); + ypos = -590; + break; + case 8500004: // Pap bomb + xpos = (int) (monster.getPosition().getX() + Randomizer.nextInt(1000) - 500); + if (ypos != -590) { + ypos = (int) monster.getPosition().getY(); + } + break; + case 8510100: //Pianus bomb + if (Math.ceil(Math.random() * 5) == 1) { + ypos = 78; + xpos = (int) Randomizer.nextInt(5) + (Randomizer.nextInt(2) == 1 ? 180 : 0); + } else { + xpos = (int) (monster.getPosition().getX() + Randomizer.nextInt(1000) - 500); + } + break; + } + switch (monster.getMap().getId()) { + case 220080001: //Pap map + if (xpos < -890) { + xpos = (int) (Math.ceil(Math.random() * 150) - 890); + } else if (xpos > 230) { + xpos = (int) (230 - Math.ceil(Math.random() * 150)); + } + break; + case 230040420: // Pianus map + if (xpos < -239) { + xpos = (int) (Math.ceil(Math.random() * 150) - 239); + } else if (xpos > 371) { + xpos = (int) (371 - Math.ceil(Math.random() * 150)); + } + break; + } + toSpawn.setPosition(new Point(xpos, ypos)); + if (toSpawn.getId() == 8500004) { + monster.getMap().spawnFakeMonster(toSpawn); + } else { + monster.getMap().spawnMonsterWithEffect(toSpawn, getSpawnEffect(), toSpawn.getPosition()); + } + + } + } + break; + default: + System.out.println("Unhandeled Mob skill: " + skillId); + break; + } + if (stats.size() > 0) { + if (lt != null && rb != null && skill) { + for (MapleMapObject mons : getObjectsInRange(monster, MapleMapObjectType.MONSTER)) { + ((MapleMonster) mons).applyMonsterBuff(stats, getX(), getSkillId(), getDuration(), this, reflection); + } + } else { + monster.applyMonsterBuff(stats, getX(), getSkillId(), getDuration(), this, reflection); + } + } + if (disease != null) { + if (lt != null && rb != null && skill) { + int i = 0; + for (MapleCharacter character : getPlayersInRange(monster, player)) { + if (!character.isActiveBuffedValue(2321005)) { + if (disease.equals(MapleDisease.SEDUCE)) { + if (i < 10) { + character.giveDebuff(MapleDisease.SEDUCE, this); + i++; + } + } else { + character.giveDebuff(disease, this); + } + } + } + } else { + player.giveDebuff(disease, this); + } + } + monster.usedSkill(skillId, skillLevel, cooltime); + monster.setMp(monster.getMp() - getMpCon()); + } + + private List getPlayersInRange(MapleMonster monster, MapleCharacter player) { + List players = new ArrayList(); + players.add(player); + return monster.getMap().getPlayersInRange(calculateBoundingBox(monster.getPosition(), monster.isFacingLeft()), players); + } + + public int getSkillId() { + return skillId; + } + + public int getSkillLevel() { + return skillLevel; + } + + public int getMpCon() { + return mpCon; + } + + public List getSummons() { + return Collections.unmodifiableList(toSummon); + } + + public int getSpawnEffect() { + return spawnEffect; + } + + public int getHP() { + return hp; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public long getDuration() { + return duration; + } + + public long getCoolTime() { + return cooltime; + } + + public Point getLt() { + return lt; + } + + public Point getRb() { + return rb; + } + + public int getLimit() { + return limit; + } + + public boolean makeChanceResult() { + return prop == 1.0 || Math.random() < prop; + } + + private Rectangle calculateBoundingBox(Point posFrom, boolean facingLeft) { + int multiplier = facingLeft ? 1 : -1; + Point mylt = new Point(lt.x * multiplier + posFrom.x, lt.y + posFrom.y); + Point myrb = new Point(rb.x * multiplier + posFrom.x, rb.y + posFrom.y); + return new Rectangle(mylt.x, mylt.y, myrb.x - mylt.x, myrb.y - mylt.y); + } + + private List getObjectsInRange(MapleMonster monster, MapleMapObjectType objectType) { + List objectTypes = new ArrayList(); + objectTypes.add(objectType); + return monster.getMap().getMapObjectsInBox(calculateBoundingBox(monster.getPosition(), monster.isFacingLeft()), objectTypes); + } +} diff --git a/src/server/life/MobSkillFactory.java b/src/server/life/MobSkillFactory.java new file mode 100644 index 0000000000..4b16b1785d --- /dev/null +++ b/src/server/life/MobSkillFactory.java @@ -0,0 +1,109 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package server.life; + +import java.awt.Point; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; + +/** + * + * @author Danny (Leifde) + */ +public class MobSkillFactory { + + private static Map mobSkills = new HashMap(); + private final static MapleDataProvider dataSource = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Skill.wz")); + private static MapleData skillRoot = dataSource.getData("MobSkill.img"); + private static ReentrantReadWriteLock dataLock = new ReentrantReadWriteLock(); + + public static MobSkill getMobSkill(final int skillId, final int level) { + final String key = skillId + "" + level; + dataLock.readLock().lock(); + try { + MobSkill ret = mobSkills.get(key); + if (ret != null) { + return ret; + } + } finally { + dataLock.readLock().unlock(); + } + dataLock.writeLock().lock(); + try { + MobSkill ret; + ret = mobSkills.get(key); + if (ret == null) { + MapleData skillData = skillRoot.getChildByPath(skillId + "/level/" + level); + if (skillData != null) { + int mpCon = MapleDataTool.getInt(skillData.getChildByPath("mpCon"), 0); + List toSummon = new ArrayList(); + for (int i = 0; i > -1; i++) { + if (skillData.getChildByPath(String.valueOf(i)) == null) { + break; + } + toSummon.add(Integer.valueOf(MapleDataTool.getInt(skillData.getChildByPath(String.valueOf(i)), 0))); + } + int effect = MapleDataTool.getInt("summonEffect", skillData, 0); + int hp = MapleDataTool.getInt("hp", skillData, 100); + int x = MapleDataTool.getInt("x", skillData, 1); + int y = MapleDataTool.getInt("y", skillData, 1); + long duration = MapleDataTool.getInt("time", skillData, 0) * 1000; + long cooltime = MapleDataTool.getInt("interval", skillData, 0) * 1000; + int iprop = MapleDataTool.getInt("prop", skillData, 100); + float prop = iprop / 100; + int limit = MapleDataTool.getInt("limit", skillData, 0); + MapleData ltd = skillData.getChildByPath("lt"); + Point lt = null; + Point rb = null; + if (ltd != null) { + lt = (Point) ltd.getData(); + rb = (Point) skillData.getChildByPath("rb").getData(); + } + ret = new MobSkill(skillId, level); + ret.addSummons(toSummon); + ret.setCoolTime(cooltime); + ret.setDuration(duration); + ret.setHp(hp); + ret.setMpCon(mpCon); + ret.setSpawnEffect(effect); + ret.setX(x); + ret.setY(y); + ret.setProp(prop); + ret.setLimit(limit); + ret.setLtRb(lt, rb); + } + mobSkills.put(skillId + "" + level, ret); + } + return ret; + } finally { + dataLock.writeLock().unlock(); + } + } +} diff --git a/src/server/life/MonsterDropEntry.java b/src/server/life/MonsterDropEntry.java new file mode 100644 index 0000000000..fdba5042d5 --- /dev/null +++ b/src/server/life/MonsterDropEntry.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +/** + * + * @author LightPepsi + */ + +public class MonsterDropEntry { + public MonsterDropEntry(int itemId, int chance, int Minimum, int Maximum, short questid) { + this.itemId = itemId; + this.chance = chance; + this.questid = questid; + this.Minimum = Minimum; + this.Maximum = Maximum; + } + public short questid; + public int itemId, chance, Minimum, Maximum; +} \ No newline at end of file diff --git a/src/server/life/MonsterGlobalDropEntry.java b/src/server/life/MonsterGlobalDropEntry.java new file mode 100644 index 0000000000..1ae3ef3a04 --- /dev/null +++ b/src/server/life/MonsterGlobalDropEntry.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.life; + +/** + * + * @author LightPepsi + */ +public class MonsterGlobalDropEntry { + public MonsterGlobalDropEntry(int itemId, int chance, int continent, byte dropType, int Minimum, int Maximum, short questid) { + this.itemId = itemId; + this.chance = chance; + this.dropType = dropType; + this.questid = questid; + this.Minimum = Minimum; + this.Maximum = Maximum; + } + public byte dropType; + public int itemId, chance, Minimum, Maximum; + public short questid; +} diff --git a/src/server/life/MonsterListener.java b/src/server/life/MonsterListener.java new file mode 100644 index 0000000000..eaf5d78464 --- /dev/null +++ b/src/server/life/MonsterListener.java @@ -0,0 +1,6 @@ +package server.life; + +public interface MonsterListener { + + public void monsterKilled(int aniTime); +} diff --git a/src/server/life/SpawnPoint.java b/src/server/life/SpawnPoint.java new file mode 100644 index 0000000000..b0dec21844 --- /dev/null +++ b/src/server/life/SpawnPoint.java @@ -0,0 +1,101 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.life; + +import client.MapleCharacter; +import java.awt.Point; +import java.util.concurrent.atomic.AtomicInteger; + +public class SpawnPoint { + + private int monster, mobTime, team, fh, f; + private Point pos; + private long nextPossibleSpawn; + private int mobInterval = 5000; + private AtomicInteger spawnedMonsters = new AtomicInteger(0); + private boolean immobile; + + public SpawnPoint(final MapleMonster monster, Point pos, boolean immobile, int mobTime, int mobInterval, int team) { + this.monster = monster.getId(); + this.pos = new Point(pos); + this.mobTime = mobTime; + this.team = team; + this.fh = monster.getFh(); + this.f = monster.getF(); + this.immobile = immobile; + this.mobInterval = mobInterval; + this.nextPossibleSpawn = System.currentTimeMillis(); + } + + public boolean shouldSpawn() { + if (mobTime < 0 || ((mobTime != 0 || immobile) && spawnedMonsters.get() > 0) || spawnedMonsters.get() > 2) {//lol + return false; + } + + return nextPossibleSpawn <= System.currentTimeMillis(); + } + + public boolean shouldForceSpawn() { + if (mobTime < 0 || ((mobTime != 0 || immobile) && spawnedMonsters.get() > 0) || spawnedMonsters.get() > 2) {//lol + return false; + } + + return true; + } + + public MapleMonster getMonster() { + MapleMonster mob = new MapleMonster(MapleLifeFactory.getMonster(monster)); + mob.setPosition(new Point(pos)); + mob.setTeam(team); + mob.setFh(fh); + mob.setF(f); + spawnedMonsters.incrementAndGet(); + mob.addListener(new MonsterListener() { + @Override + public void monsterKilled(int aniTime) { + nextPossibleSpawn = System.currentTimeMillis(); + if (mobTime > 0) { + nextPossibleSpawn += mobTime * 1000; + } else { + nextPossibleSpawn += aniTime; + } + spawnedMonsters.decrementAndGet(); + } + }); + if (mobTime == 0) { + nextPossibleSpawn = System.currentTimeMillis() + mobInterval; + } + return mob; + } + + public Point getPosition() { + return pos; + } + + public final int getF() { + return f; + } + + public final int getFh() { + return fh; + } +} diff --git a/src/server/maps/AbstractAnimatedMapleMapObject.java b/src/server/maps/AbstractAnimatedMapleMapObject.java new file mode 100644 index 0000000000..3235a64b0a --- /dev/null +++ b/src/server/maps/AbstractAnimatedMapleMapObject.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public abstract class AbstractAnimatedMapleMapObject extends AbstractMapleMapObject implements AnimatedMapleMapObject { + private int stance; + + public int getStance() { + return stance; + } + + public void setStance(int stance) { + this.stance = stance; + } + + public boolean isFacingLeft() { + return Math.abs(stance) % 2 == 1; + } +} diff --git a/src/server/maps/AbstractMapleMapObject.java b/src/server/maps/AbstractMapleMapObject.java new file mode 100644 index 0000000000..398c373698 --- /dev/null +++ b/src/server/maps/AbstractMapleMapObject.java @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; + +public abstract class AbstractMapleMapObject implements MapleMapObject { + private Point position = new Point(); + private int objectId; + + @Override + public abstract MapleMapObjectType getType(); + + @Override + public Point getPosition() { + return new Point(position); + } + + @Override + public void setPosition(Point position) { + this.position.x = position.x; + this.position.y = position.y; + } + + @Override + public int getObjectId() { + return objectId; + } + + @Override + public void setObjectId(int id) { + this.objectId = id; + } + + @Override + public void nullifyPosition() { + this.position = null; + } +} diff --git a/src/server/maps/AnimatedMapleMapObject.java b/src/server/maps/AnimatedMapleMapObject.java new file mode 100644 index 0000000000..6c6fad905b --- /dev/null +++ b/src/server/maps/AnimatedMapleMapObject.java @@ -0,0 +1,28 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public interface AnimatedMapleMapObject extends MapleMapObject { + int getStance(); + void setStance(int stance); + boolean isFacingLeft(); +} diff --git a/src/server/maps/FieldLimit.java b/src/server/maps/FieldLimit.java new file mode 100644 index 0000000000..f8074c6e6b --- /dev/null +++ b/src/server/maps/FieldLimit.java @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +/** + * + * @author AngelSL + */ +public enum FieldLimit { + JUMP(0x01), + MOVEMENTSKILLS(0x02), + SUMMON(0x04), + DOOR(0x08), + CHANGECHANNEL(0x10), + //NO_NOTES(0x20), + CANNOTVIPROCK(0x40), + CANNOTMINIGAME(0x80), + //SPECIFIC_PORTAL_SCROLL_LIMIT(0x100), // APQ and a couple quest maps have this + CANNOTUSEMOUNTS(0x200), + //STAT_CHANGE_ITEM_CONSUME_LIMIT(0x400), // Monster carnival? + //PARTY_BOSS_CHANGE_LIMIT(0x800), // Monster carnival? + CANNOTUSEPOTION(0x1000), + //WEDDING_INVITATION_LIMIT(0x2000), // No notes + //CASH_WEATHER_CONSUME_LIMIT(0x4000), + //NO_PET(0x8000), // Ariant colosseum-related? + //ANTI_MACRO_LIMIT(0x10000), // No notes + CANNOTJUMPDOWN(0x20000); + //SUMMON_NPC_LIMIT(0x40000); // Seems to .. disable Rush if 0x2 is set + + //......... EVEN MORE LIMITS ............ + //SUMMON_NPC_LIMIT(0x40000), + //NO_EXP_DECREASE(0x80000), + //NO_DAMAGE_ON_FALLING(0x100000), + //PARCEL_OPEN_LIMIT(0x200000), + //DROP_LIMIT(0x400000), + //ROCKETBOOSTER_LIMIT(0x800000) //lol we don't even have mechanics <3 + + private long i; + + private FieldLimit(long i) { + this.i = i; + } + + public long getValue() { + return i; + } + + public boolean check(int fieldlimit) { + return (fieldlimit & i) == i; + } +} diff --git a/src/server/maps/HiredMerchant.java b/src/server/maps/HiredMerchant.java new file mode 100644 index 0000000000..59fb71aba5 --- /dev/null +++ b/src/server/maps/HiredMerchant.java @@ -0,0 +1,459 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package server.maps; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventoryType; +import com.mysql.jdbc.Statement; +import constants.ItemConstants; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import java.util.concurrent.ScheduledFuture; +import net.server.Server; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.MaplePlayerShopItem; +import server.TimerManager; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; +import tools.Pair; + +/** + * + * @author XoticStory + */ +public class HiredMerchant extends AbstractMapleMapObject { + + private int ownerId, itemId, mesos = 0; + private int channel, world; + private long start; + private String ownerName = ""; + private String description = ""; + private MapleCharacter[] visitors = new MapleCharacter[3]; + private List items = new LinkedList<>(); + private List> messages = new LinkedList<>(); + private List sold = new LinkedList<>(); + private boolean open; + public ScheduledFuture schedule = null; + private MapleMap map; + + public HiredMerchant(final MapleCharacter owner, int itemId, String desc) { + this.setPosition(owner.getPosition()); + this.start = System.currentTimeMillis(); + this.ownerId = owner.getId(); + this.channel = owner.getClient().getChannel(); + this.world = owner.getWorld(); + this.itemId = itemId; + this.ownerName = owner.getName(); + this.description = desc; + this.map = owner.getMap(); + this.schedule = TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + HiredMerchant.this.forceClose(); + Server.getInstance().getChannel(world, channel).removeHiredMerchant(ownerId); + } + }, 1000 * 60 * 60 * 24); + } + + public void broadcastToVisitors(final byte[] packet) { + for (MapleCharacter visitor : visitors) { + if (visitor != null) { + visitor.getClient().announce(packet); + } + } + } + + public void addVisitor(MapleCharacter visitor) { + int i = this.getFreeSlot(); + if (i > -1) { + visitors[i] = visitor; + broadcastToVisitors(MaplePacketCreator.hiredMerchantVisitorAdd(visitor, i + 1)); + } + } + + public void removeVisitor(MapleCharacter visitor) { + int slot = getVisitorSlot(visitor); + if (slot < 0){ //Not found + return; + } + if (visitors[slot] != null && visitors[slot].getId() == visitor.getId()) { + visitors[slot] = null; + if (slot != -1) { + broadcastToVisitors(MaplePacketCreator.hiredMerchantVisitorLeave(slot + 1)); + } + } + } + + public int getVisitorSlot(MapleCharacter visitor) { + for (int i = 0; i < 3; i++) { + if (visitors[i] != null && visitors[i].getId() == visitor.getId()){ + return i; + } + } + return -1; //Actually 0 because of the +1's. + } + + public void removeAllVisitors(String message) { + for (int i = 0; i < 3; i++) { + if (visitors[i] != null) { + visitors[i].setHiredMerchant(null); + visitors[i].getClient().announce(MaplePacketCreator.leaveHiredMerchant(i + 1, 0x11)); + if (message.length() > 0) { + visitors[i].dropMessage(1, message); + } + visitors[i] = null; + } + } + } + + public void buy(MapleClient c, int item, short quantity) { + MaplePlayerShopItem pItem = items.get(item); + synchronized (items) { + Item newItem = pItem.getItem().copy(); + newItem.setQuantity((short) ((pItem.getItem().getQuantity() * quantity))); + if ((newItem.getFlag() & ItemConstants.KARMA) == ItemConstants.KARMA) { + newItem.setFlag((byte) (newItem.getFlag() ^ ItemConstants.KARMA)); + } + if (newItem.getType() == 2 && (newItem.getFlag() & ItemConstants.SPIKES) == ItemConstants.SPIKES) { + newItem.setFlag((byte) (newItem.getFlag() ^ ItemConstants.SPIKES)); + } + if (quantity < 1 || pItem.getBundles() < 1 || !pItem.isExist() || pItem.getBundles() < quantity) { + c.announce(MaplePacketCreator.enableActions()); + return; + } else if (newItem.getType() == 1 && newItem.getQuantity() > 1) { + c.announce(MaplePacketCreator.enableActions()); + return; + } else if (!pItem.isExist()) { + c.announce(MaplePacketCreator.enableActions()); + return; + } + int price = pItem.getPrice() * quantity; + if (c.getPlayer().getMeso() >= price) { + if (MapleInventoryManipulator.addFromDrop(c, newItem, true)) { + c.getPlayer().gainMeso(-price, false); + sold.add(new SoldItem(c.getPlayer().getName(), pItem.getItem().getItemId(), quantity, price)); + pItem.setBundles((short) (pItem.getBundles() - quantity)); + if (pItem.getBundles() < 1) { + pItem.setDoesExist(false); + } + MapleCharacter owner = Server.getInstance().getWorld(world).getPlayerStorage().getCharacterByName(ownerName); + if (owner != null) { + owner.addMerchantMesos(price); + } else { + try { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET MerchantMesos = MerchantMesos + " + price + " WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { + ps.setInt(1, ownerId); + ps.executeUpdate(); + } + } catch (Exception e) { + } + } + } else { + c.getPlayer().dropMessage(1, "Your inventory is full. Please clean a slot before buying this item."); + } + } else { + c.getPlayer().dropMessage(1, "You do not have enough mesos."); + } + try { + this.saveItems(false); + } catch (Exception e) { + } + } + } + + public void forceClose() { + if (schedule != null) { + schedule.cancel(false); + } + try { + saveItems(true); + items.clear(); + } catch (SQLException ex) { + } + //Server.getInstance().getChannel(world, channel).removeHiredMerchant(ownerId); + map.broadcastMessage(MaplePacketCreator.destroyHiredMerchant(getOwnerId())); + + map.removeMapObject(this); + + MapleCharacter player = Server.getInstance().getWorld(world).getPlayerStorage().getCharacterById(ownerId); + if(player != null) { + player.setHasMerchant(false); + } else { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET HasMerchant = 0 WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { + ps.setInt(1, ownerId); + ps.executeUpdate(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } + + map = null; + schedule = null; + } + + public void closeShop(MapleClient c, boolean timeout) { + map.removeMapObject(this); + map.broadcastMessage(MaplePacketCreator.destroyHiredMerchant(ownerId)); + c.getChannelServer().removeHiredMerchant(ownerId); + try { + MapleCharacter player = c.getWorldServer().getPlayerStorage().getCharacterById(ownerId); + if(player != null) { + player.setHasMerchant(false); + } else { + try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("UPDATE characters SET HasMerchant = 0 WHERE id = ?", Statement.RETURN_GENERATED_KEYS)) { + ps.setInt(1, ownerId); + ps.executeUpdate(); + } + } + if (check(c.getPlayer(), getItems()) && !timeout) { + for (MaplePlayerShopItem mpsi : getItems()) { + if (mpsi.isExist() && (mpsi.getItem().getType() == MapleInventoryType.EQUIP.getType())) { + MapleInventoryManipulator.addFromDrop(c, mpsi.getItem(), false); + } else if (mpsi.isExist()) { + MapleInventoryManipulator.addById(c, mpsi.getItem().getItemId(), (short) (mpsi.getBundles() * mpsi.getItem().getQuantity()), null, -1, mpsi.getItem().getFlag(), mpsi.getItem().getExpiration()); + } + } + items.clear(); + } + try { + this.saveItems(timeout); + } catch (Exception e) { + } + items.clear(); + + } catch (Exception e) { + } + schedule.cancel(false); + } + + public String getOwner() { + return ownerName; + } + + public void clearItems() { + items.clear(); + } + + public int getOwnerId() { + return ownerId; + } + + public String getDescription() { + return description; + } + + public MapleCharacter[] getVisitors() { + return visitors; + } + + public List getItems() { + return Collections.unmodifiableList(items); + } + + public void addItem(MaplePlayerShopItem item) { + items.add(item); + try { + this.saveItems(false); + } catch (SQLException ex) { + } + } + + public void removeFromSlot(int slot) { + items.remove(slot); + try { + this.saveItems(false); + } catch (SQLException ex) { + } + } + + + public int getFreeSlot() { + for (int i = 0; i < 3; i++) { + if (visitors[i] == null) { + return i; + } + } + return -1; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isOpen() { + return open; + } + + public void setOpen(boolean set) { + this.open = set; + } + + public int getItemId() { + return itemId; + } + + public boolean isOwner(MapleCharacter chr) { + return chr.getId() == ownerId; + } + + public void saveItems(boolean shutdown) throws SQLException { + List> itemsWithType = new ArrayList<>(); + + for (MaplePlayerShopItem pItems : items) { + Item newItem = pItems.getItem(); + if (shutdown) { + newItem.setQuantity((short) (pItems.getItem().getQuantity() * pItems.getBundles())); + } else { + newItem.setQuantity(pItems.getItem().getQuantity()); + } + if (pItems.getBundles() > 0) { + itemsWithType.add(new Pair<>(newItem, MapleInventoryType.getByType(newItem.getType()))); + } + } + + ItemFactory.MERCHANT.saveItems(itemsWithType, this.ownerId, DatabaseConnection.getConnection()); + } + + private static boolean check(MapleCharacter chr, List items) { + byte eq = 0, use = 0, setup = 0, etc = 0, cash = 0; + List li = new LinkedList<>(); + for (MaplePlayerShopItem item : items) { + final MapleInventoryType invtype = MapleItemInformationProvider.getInstance().getInventoryType(item.getItem().getItemId()); + if (!li.contains(invtype)) { + li.add(invtype); + } + if (invtype == MapleInventoryType.EQUIP) { + eq++; + } else if (invtype == MapleInventoryType.USE) { + use++; + } else if (invtype == MapleInventoryType.SETUP) { + setup++; + } else if (invtype == MapleInventoryType.ETC) { + etc++; + } else if (invtype == MapleInventoryType.CASH) { + cash++; + } + } + for (MapleInventoryType mit : li) { + if (mit == MapleInventoryType.EQUIP) { + if (chr.getInventory(MapleInventoryType.EQUIP).getNumFreeSlot() <= eq) { + return false; + } + } else if (mit == MapleInventoryType.USE) { + if (chr.getInventory(MapleInventoryType.USE).getNumFreeSlot() <= use) { + return false; + } + } else if (mit == MapleInventoryType.SETUP) { + if (chr.getInventory(MapleInventoryType.SETUP).getNumFreeSlot() <= setup) { + return false; + } + } else if (mit == MapleInventoryType.ETC) { + if (chr.getInventory(MapleInventoryType.ETC).getNumFreeSlot() <= etc) { + return false; + } + } else if (mit == MapleInventoryType.CASH) { + if (chr.getInventory(MapleInventoryType.CASH).getNumFreeSlot() <= cash) { + return false; + } + } + } + return true; + } + + public int getChannel() { + return channel; + } + + public int getTimeLeft() { + return (int) ((System.currentTimeMillis() - start) / 1000); + } + + public List> getMessages() { + return messages; + } + + public int getMapId() { + return map.getId(); + } + + public List getSold() { + return sold; + } + + public int getMesos() { + return mesos; + } + + @Override + public void sendDestroyData(MapleClient client) { + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.HIRED_MERCHANT; + } + + @Override + public void sendSpawnData(MapleClient client) { + client.announce(MaplePacketCreator.spawnHiredMerchant(this)); + } + + public class SoldItem { + + int itemid, mesos; + short quantity; + String buyer; + + public SoldItem(String buyer, int itemid, short quantity, int mesos) { + this.buyer = buyer; + this.itemid = itemid; + this.quantity = quantity; + this.mesos = mesos; + } + + public String getBuyer() { + return buyer; + } + + public int getItemId() { + return itemid; + } + + public short getQuantity() { + return quantity; + } + + public int getMesos() { + return mesos; + } + } +} diff --git a/src/server/maps/MapMonitor.java b/src/server/maps/MapMonitor.java new file mode 100644 index 0000000000..72dc94e68d --- /dev/null +++ b/src/server/maps/MapMonitor.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.util.concurrent.ScheduledFuture; +import server.MaplePortal; +import server.TimerManager; + +public class MapMonitor { + private ScheduledFuture monitorSchedule; + private MapleMap map; + private MaplePortal portal; + + public MapMonitor(final MapleMap map, String portal) { + this.map = map; + this.portal = map.getPortal(portal); + this.monitorSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + if (map.getCharacters().size() < 1) { + cancelAction(); + } + } + }, 5000); + } + + private void cancelAction() { + monitorSchedule.cancel(false); + map.killAllMonsters(); + map.clearDrops(); + if (portal != null) { + portal.setPortalStatus(MaplePortal.OPEN); + } + map.resetReactors(); + } +} diff --git a/src/server/maps/MapleDoor.java b/src/server/maps/MapleDoor.java new file mode 100644 index 0000000000..80027160e7 --- /dev/null +++ b/src/server/maps/MapleDoor.java @@ -0,0 +1,157 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import server.MaplePortal; +import tools.MaplePacketCreator; +import client.MapleCharacter; +import client.MapleClient; + +/** + * + * @author Matze + */ +public class MapleDoor extends AbstractMapleMapObject { + private MapleCharacter owner; + private MapleMap town; + private MaplePortal townPortal; + private MapleMap target; + private Point targetPosition; + + public MapleDoor(MapleCharacter owner, Point targetPosition) { + super(); + this.owner = owner; + this.target = owner.getMap(); + this.targetPosition = targetPosition; + setPosition(this.targetPosition); + this.town = this.target.getReturnMap(); + this.townPortal = getFreePortal(); + } + + public MapleDoor(MapleDoor origDoor) { + super(); + this.owner = origDoor.owner; + this.town = origDoor.town; + this.townPortal = origDoor.townPortal; + this.target = origDoor.target; + this.targetPosition = origDoor.targetPosition; + this.townPortal = origDoor.townPortal; + setPosition(this.townPortal.getPosition()); + } + + private MaplePortal getFreePortal() { + List freePortals = new ArrayList(); + for (MaplePortal port : town.getPortals()) { + if (port.getType() == 6) { + freePortals.add(port); + } + } + Collections.sort(freePortals, new Comparator() { + public int compare(MaplePortal o1, MaplePortal o2) { + if (o1.getId() < o2.getId()) { + return -1; + } else if (o1.getId() == o2.getId()) { + return 0; + } else { + return 1; + } + } + }); + for (MapleMapObject obj : town.getMapObjects()) { + if (obj instanceof MapleDoor) { + MapleDoor door = (MapleDoor) obj; + if (door.getOwner().getParty() != null && door.getOwner().getParty().containsMembers(door.getOwner().getMPC())) { + freePortals.remove(door.getTownPortal()); + } + } + } + return freePortals.iterator().next(); + } + + @Override + public void sendSpawnData(MapleClient client) { + if (target.getId() == client.getPlayer().getMapId() || owner == client.getPlayer() && owner.getParty() == null) { + client.announce(MaplePacketCreator.spawnDoor(owner.getId(), town.getId() == client.getPlayer().getMapId() ? townPortal.getPosition() : targetPosition, true)); + if (owner.getParty() != null && (owner == client.getPlayer() || owner.getParty().containsMembers(client.getPlayer().getMPC()))) { + client.announce(MaplePacketCreator.partyPortal(town.getId(), target.getId(), targetPosition)); + } + } + if (owner.getId() != client.getPlayer().getId()) { + client.announce(MaplePacketCreator.spawnPortal(town.getId(), target.getId(), targetPosition)); + } + } + + @Override + public void sendDestroyData(MapleClient client) { + if (target.getId() == client.getPlayer().getMapId() || owner == client.getPlayer() || owner.getParty() != null && owner.getParty().containsMembers(client.getPlayer().getMPC())) { + if (owner.getParty() != null && (owner == client.getPlayer() || owner.getParty().containsMembers(client.getPlayer().getMPC()))) { + client.announce(MaplePacketCreator.partyPortal(999999999, 999999999, new Point(-1, -1))); + } + client.announce(MaplePacketCreator.removeDoor(owner.getId(), false)); + client.announce(MaplePacketCreator.removeDoor(owner.getId(), true)); + } + } + + public void warp(MapleCharacter chr, boolean toTown) { + if (chr == owner || owner.getParty() != null && owner.getParty().containsMembers(chr.getMPC())) { + if (!toTown) { + chr.changeMap(target, targetPosition); + } else { + chr.changeMap(town, townPortal); + } + } else { + chr.getClient().announce(MaplePacketCreator.enableActions()); + } + } + + public MapleCharacter getOwner() { + return owner; + } + + public MapleMap getTown() { + return town; + } + + public MaplePortal getTownPortal() { + return townPortal; + } + + public MapleMap getTarget() { + return target; + } + + public Point getTargetPosition() { + return targetPosition; + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.DOOR; + } + +} diff --git a/src/server/maps/MapleDragon.java b/src/server/maps/MapleDragon.java new file mode 100644 index 0000000000..b889e88833 --- /dev/null +++ b/src/server/maps/MapleDragon.java @@ -0,0 +1,65 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package server.maps; + +import tools.MaplePacketCreator; +import client.MapleCharacter; +import client.MapleClient; + + + +public class MapleDragon extends AbstractAnimatedMapleMapObject { + + private MapleCharacter owner; + + public MapleDragon(MapleCharacter chr) { + super(); + this.owner = chr; + this.setPosition(chr.getPosition()); + this.setStance(chr.getStance()); + sendSpawnData(chr.getClient()); + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.DRAGON; + } + + @Override + public void sendSpawnData(MapleClient c) { + c.announce(MaplePacketCreator.spawnDragon(this)); + } + + @Override + public int getObjectId() { + return owner.getId(); + } + + @Override + public void sendDestroyData(MapleClient c) { + c.announce(MaplePacketCreator.removeDragon(owner.getId())); + } + + public MapleCharacter getOwner() { + return owner; + } +} \ No newline at end of file diff --git a/src/server/maps/MapleFoothold.java b/src/server/maps/MapleFoothold.java new file mode 100644 index 0000000000..7c79275d79 --- /dev/null +++ b/src/server/maps/MapleFoothold.java @@ -0,0 +1,102 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; + +/** + * + * @author Matze + */ +public class MapleFoothold implements Comparable { + private Point p1; + private Point p2; + private int id; + private int next, prev; + + public MapleFoothold(Point p1, Point p2, int id) { + this.p1 = p1; + this.p2 = p2; + this.id = id; + } + + public boolean isWall() { + return p1.x == p2.x; + } + + public int getX1() { + return p1.x; + } + + public int getX2() { + return p2.x; + } + + public int getY1() { + return p1.y; + } + + public int getY2() { + return p2.y; + } + + // XXX may need more precision + public int calculateFooting(int x) { + if (p1.y == p2.y) { + return p2.y; // y at both ends is the same + } + int slope = (p1.y - p2.y) / (p1.x - p2.x); + int intercept = p1.y - (slope * p1.x); + return (slope * x) + intercept; + } + + public int compareTo(MapleFoothold o) { + MapleFoothold other = o; + if (p2.y < other.getY1()) { + return -1; + } else if (p1.y > other.getY2()) { + return 1; + } else { + return 0; + } + } + + public int getId() { + return id; + } + + public int getNext() { + return next; + } + + public void setNext(int next) { + this.next = next; + } + + public int getPrev() { + return prev; + } + + public void setPrev(int prev) { + this.prev = prev; + } +} diff --git a/src/server/maps/MapleFootholdTree.java b/src/server/maps/MapleFootholdTree.java new file mode 100644 index 0000000000..5d897e681d --- /dev/null +++ b/src/server/maps/MapleFootholdTree.java @@ -0,0 +1,220 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + +/** + * + * @author Matze + */ +public class MapleFootholdTree { + private MapleFootholdTree nw = null; + private MapleFootholdTree ne = null; + private MapleFootholdTree sw = null; + private MapleFootholdTree se = null; + private List footholds = new LinkedList(); + private Point p1; + private Point p2; + private Point center; + private int depth = 0; + private static int maxDepth = 8; + private int maxDropX; + private int minDropX; + + public MapleFootholdTree(Point p1, Point p2) { + this.p1 = p1; + this.p2 = p2; + center = new Point((p2.x - p1.x) / 2, (p2.y - p1.y) / 2); + } + + public MapleFootholdTree(Point p1, Point p2, int depth) { + this.p1 = p1; + this.p2 = p2; + this.depth = depth; + center = new Point((p2.x - p1.x) / 2, (p2.y - p1.y) / 2); + } + + public void insert(MapleFoothold f) { + if (depth == 0) { + if (f.getX1() > maxDropX) { + maxDropX = f.getX1(); + } + if (f.getX1() < minDropX) { + minDropX = f.getX1(); + } + if (f.getX2() > maxDropX) { + maxDropX = f.getX2(); + } + if (f.getX2() < minDropX) { + minDropX = f.getX2(); + } + } + if (depth == maxDepth || + (f.getX1() >= p1.x && f.getX2() <= p2.x && + f.getY1() >= p1.y && f.getY2() <= p2.y)) { + footholds.add(f); + } else { + if (nw == null) { + nw = new MapleFootholdTree(p1, center, depth + 1); + ne = new MapleFootholdTree(new Point(center.x, p1.y), new Point(p2.x, center.y), depth + 1); + sw = new MapleFootholdTree(new Point(p1.x, center.y), new Point(center.x, p2.y), depth + 1); + se = new MapleFootholdTree(center, p2, depth + 1); + } + if (f.getX2() <= center.x && f.getY2() <= center.y) { + nw.insert(f); + } else if (f.getX1() > center.x && f.getY2() <= center.y) { + ne.insert(f); + } else if (f.getX2() <= center.x && f.getY1() > center.y) { + sw.insert(f); + } else { + se.insert(f); + } + } + } + + private List getRelevants(Point p) { + return getRelevants(p, new LinkedList()); + } + + private List getRelevants(Point p, List list) { + list.addAll(footholds); + if (nw != null) { + if (p.x <= center.x && p.y <= center.y) { + nw.getRelevants(p, list); + } else if (p.x > center.x && p.y <= center.y) { + ne.getRelevants(p, list); + } else if (p.x <= center.x && p.y > center.y) { + sw.getRelevants(p, list); + } else { + se.getRelevants(p, list); + } + } + return list; + } + + private MapleFoothold findWallR(Point p1, Point p2) { + MapleFoothold ret; + for (MapleFoothold f : footholds) { + if (f.isWall() && f.getX1() >= p1.x && f.getX1() <= p2.x && + f.getY1() >= p1.y && f.getY2() <= p1.y) { + return f; + } + } + if (nw != null) { + if (p1.x <= center.x && p1.y <= center.y) { + ret = nw.findWallR(p1, p2); + if (ret != null) { + return ret; + } + } + if ((p1.x > center.x || p2.x > center.x) && p1.y <= center.y) { + ret = ne.findWallR(p1, p2); + if (ret != null) { + return ret; + } + } + if (p1.x <= center.x && p1.y > center.y) { + ret = sw.findWallR(p1, p2); + if (ret != null) { + return ret; + } + } + if ((p1.x > center.x || p2.x > center.x) && p1.y > center.y) { + ret = se.findWallR(p1, p2); + if (ret != null) { + return ret; + } + } + } + return null; + } + + public MapleFoothold findWall(Point p1, Point p2) { + if (p1.y != p2.y) { + throw new IllegalArgumentException(); + } + return findWallR(p1, p2); + } + + public MapleFoothold findBelow(Point p) { + List relevants = getRelevants(p); + List xMatches = new LinkedList(); + for (MapleFoothold fh : relevants) { + if (fh.getX1() <= p.x && fh.getX2() >= p.x) { + xMatches.add(fh); + } + } + Collections.sort(xMatches); + for (MapleFoothold fh : xMatches) { + if (!fh.isWall() && fh.getY1() != fh.getY2()) { + int calcY; + double s1 = Math.abs(fh.getY2() - fh.getY1()); + double s2 = Math.abs(fh.getX2() - fh.getX1()); + double s4 = Math.abs(p.x - fh.getX1()); + double alpha = Math.atan(s2 / s1); + double beta = Math.atan(s1 / s2); + double s5 = Math.cos(alpha) * (s4 / Math.cos(beta)); + if (fh.getY2() < fh.getY1()) { + calcY = fh.getY1() - (int) s5; + } else { + calcY = fh.getY1() + (int) s5; + } + if (calcY >= p.y) { + return fh; + } + } else if (!fh.isWall()) { + if (fh.getY1() >= p.y) { + return fh; + } + } + } + return null; + } + + public int getX1() { + return p1.x; + } + + public int getX2() { + return p2.x; + } + + public int getY1() { + return p1.y; + } + + public int getY2() { + return p2.y; + } + + public int getMaxDropX() { + return maxDropX; + } + + public int getMinDropX() { + return minDropX; + } +} diff --git a/src/server/maps/MapleGenericPortal.java b/src/server/maps/MapleGenericPortal.java new file mode 100644 index 0000000000..eb5f0f9726 --- /dev/null +++ b/src/server/maps/MapleGenericPortal.java @@ -0,0 +1,144 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation version 3 as published by +the Free Software Foundation. You may not use, modify or distribute +this program under any other version of the GNU Affero General Public +License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package server.maps; + +import client.MapleClient; +import java.awt.Point; +import scripting.portal.PortalScriptManager; +import server.MaplePortal; +import tools.MaplePacketCreator; + +public class MapleGenericPortal implements MaplePortal { + + private String name; + private String target; + private Point position; + private int targetmap; + private int type; + private boolean status = true; + private int id; + private String scriptName; + private boolean portalState; + + public MapleGenericPortal(int type) { + this.type = type; + } + + @Override + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @Override + public String getName() { + return name; + } + + @Override + public Point getPosition() { + return position; + } + + @Override + public String getTarget() { + return target; + } + + @Override + public void setPortalStatus(boolean newStatus) { + this.status = newStatus; + } + + @Override + public boolean getPortalStatus() { + return status; + } + + @Override + public int getTargetMapId() { + return targetmap; + } + + @Override + public int getType() { + return type; + } + + @Override + public String getScriptName() { + return scriptName; + } + + public void setName(String name) { + this.name = name; + } + + public void setPosition(Point position) { + this.position = position; + } + + public void setTarget(String target) { + this.target = target; + } + + public void setTargetMapId(int targetmapid) { + this.targetmap = targetmapid; + } + + @Override + public void setScriptName(String scriptName) { + this.scriptName = scriptName; + } + + @Override + public void enterPortal(MapleClient c) { + boolean changed = false; + if (getScriptName() != null) { + changed = PortalScriptManager.getInstance().executePortalScript(this, c); + } else if (getTargetMapId() != 999999999) { + MapleMap to = c.getPlayer().getEventInstance() == null ? c.getChannelServer().getMapFactory().getMap(getTargetMapId()) : c.getPlayer().getEventInstance().getMapInstance(getTargetMapId()); + MaplePortal pto = to.getPortal(getTarget()); + if (pto == null) {// fallback for missing portals - no real life case anymore - intresting for not implemented areas + pto = to.getPortal(0); + } + c.getPlayer().changeMap(to, pto); //late resolving makes this harder but prevents us from loading the whole world at once + changed = true; + } + if (!changed) { + c.announce(MaplePacketCreator.enableActions()); + } + } + + @Override + public void setPortalState(boolean state) { + this.portalState = state; + } + + @Override + public boolean getPortalState() { + return portalState; + } +} diff --git a/src/server/maps/MapleMap.java b/src/server/maps/MapleMap.java new file mode 100644 index 0000000000..0b39acf55a --- /dev/null +++ b/src/server/maps/MapleMap.java @@ -0,0 +1,2382 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.maps; + +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleClient; +import client.autoban.AutobanFactory; +import client.inventory.Equip; +import client.inventory.Item; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; +import constants.ItemConstants; +import java.awt.Point; +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Random; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; +import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; +import net.server.Server; +import net.server.channel.Channel; +import scripting.map.MapScriptManager; +import server.MapleItemInformationProvider; +import server.MaplePortal; +import server.MapleStatEffect; +import server.TimerManager; +import server.events.gm.MapleCoconut; +import server.events.gm.MapleFitness; +import server.events.gm.MapleOla; +import server.events.gm.MapleOxQuiz; +import server.events.gm.MapleSnowball; +import server.life.MapleLifeFactory; +import server.life.MapleLifeFactory.selfDestruction; +import server.life.MapleMonster; +import server.life.MapleMonsterInformationProvider; +import server.life.MapleNPC; +import server.life.MonsterDropEntry; +import server.life.MonsterGlobalDropEntry; +import server.life.SpawnPoint; +import server.partyquest.MonsterCarnival; +import server.partyquest.MonsterCarnivalParty; +import server.partyquest.Pyramid; +import tools.FilePrinter; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; + +public class MapleMap { + + private static final List rangedMapobjectTypes = Arrays.asList(MapleMapObjectType.SHOP, MapleMapObjectType.ITEM, MapleMapObjectType.NPC, MapleMapObjectType.MONSTER, MapleMapObjectType.DOOR, MapleMapObjectType.SUMMON, MapleMapObjectType.REACTOR); + private Map mapobjects = new LinkedHashMap<>(); + private Collection monsterSpawn = Collections.synchronizedList(new LinkedList()); + private AtomicInteger spawnedMonstersOnMap = new AtomicInteger(0); + private Collection characters = new LinkedHashSet<>(); + private Map portals = new HashMap<>(); + private Map backgroundTypes = new HashMap<>(); + private List areas = new ArrayList<>(); + private MapleFootholdTree footholds = null; + private int mapid; + private AtomicInteger runningOid = new AtomicInteger(100); + private int returnMapId; + private int channel, world; + private byte monsterRate; + private boolean clock; + private boolean boat; + private boolean docked; + private String mapName; + private String streetName; + private MapleMapEffect mapEffect = null; + private boolean everlast = false; + private int forcedReturnMap = 999999999; + private long timeLimit; + private int decHP = 0; + private int protectItem = 0; + private boolean town; + private MapleOxQuiz ox; + private boolean isOxQuiz = false; + private boolean dropsOn = true; + private String onFirstUserEnter; + private String onUserEnter; + private int fieldType; + private int fieldLimit = 0; + private int mobCapacity = -1; + private ScheduledFuture mapMonitor = null; + private Pair timeMob = null; + private short mobInterval = 5000; + private boolean allowSummons = true; // All maps should have this true at the beginning + // HPQ + private int riceCakes = 0; + private int bunnyDamage = 0; + // events + private boolean eventstarted = false, isMuted = false; + private MapleSnowball snowball0 = null; + private MapleSnowball snowball1 = null; + private MapleCoconut coconut; + //locks + private final ReadLock chrRLock; + private final WriteLock chrWLock; + private final ReadLock objectRLock; + private final WriteLock objectWLock; + + public MapleMap(int mapid, int world, int channel, int returnMapId, float monsterRate) { + this.mapid = mapid; + this.channel = channel; + this.world = world; + this.returnMapId = returnMapId; + this.monsterRate = (byte) Math.ceil(monsterRate); + if (this.monsterRate == 0) { + this.monsterRate = 1; + } + final ReentrantReadWriteLock chrLock = new ReentrantReadWriteLock(true); + chrRLock = chrLock.readLock(); + chrWLock = chrLock.writeLock(); + + final ReentrantReadWriteLock objectLock = new ReentrantReadWriteLock(true); + objectRLock = objectLock.readLock(); + objectWLock = objectLock.writeLock(); + } + + public ReadLock getCharacterReadLock() { + return chrRLock; + } + + public WriteLock getCharacterWriteLock() { + return chrWLock; + } + + public void broadcastMessage(MapleCharacter source, final byte[] packet) { + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + if (chr != source) { + chr.getClient().announce(packet); + } + } + } finally { + chrRLock.unlock(); + } + } + + public void broadcastGMMessage(MapleCharacter source, final byte[] packet) { + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + if (chr != source && (chr.gmLevel() > source.gmLevel())) { + chr.getClient().announce(packet); + } + } + } finally { + chrRLock.unlock(); + } + } + + public void toggleDrops() { + this.dropsOn = !dropsOn; + } + + public List getMapObjectsInRect(Rectangle box, List types) { + objectRLock.lock(); + final List ret = new LinkedList<>(); + try { + for (MapleMapObject l : mapobjects.values()) { + if (types.contains(l.getType())) { + if (box.contains(l.getPosition())) { + ret.add(l); + } + } + } + } finally { + objectRLock.unlock(); + } + return ret; + } + + public int getId() { + return mapid; + } + + public MapleMap getReturnMap() { + return Server.getInstance().getWorld(world).getChannel(channel).getMapFactory().getMap(returnMapId); + } + + public int getReturnMapId() { + return returnMapId; + } + + public void setReactorState() { + objectRLock.lock(); + try { + for (MapleMapObject o : mapobjects.values()) { + if (o.getType() == MapleMapObjectType.REACTOR) { + if (((MapleReactor) o).getState() < 1) { + ((MapleReactor) o).setState((byte) 1); + broadcastMessage(MaplePacketCreator.triggerReactor((MapleReactor) o, 1)); + } + } + } + } finally { + objectRLock.unlock(); + } + } + + public int getForcedReturnId() { + return forcedReturnMap; + } + + public MapleMap getForcedReturnMap() { + return Server.getInstance().getWorld(world).getChannel(channel).getMapFactory().getMap(forcedReturnMap); + } + + public void setForcedReturnMap(int map) { + this.forcedReturnMap = map; + } + + public long getTimeLimit() { + return timeLimit; + } + + public void setTimeLimit(int timeLimit) { + this.timeLimit = timeLimit; + } + + public int getTimeLeft() { + return (int) ((timeLimit - System.currentTimeMillis()) / 1000); + } + + public int getCurrentPartyId() { + for (MapleCharacter chr : this.getCharacters()) { + if (chr.getPartyId() != -1) { + return chr.getPartyId(); + } + } + return -1; + } + + public void addMapObject(MapleMapObject mapobject) { + objectWLock.lock(); + try { + int curOID = getUsableOID(); + mapobject.setObjectId(curOID); + this.mapobjects.put(curOID, mapobject); + } finally { + objectWLock.unlock(); + } + } + + private void spawnAndAddRangedMapObject(MapleMapObject mapobject, DelayedPacketCreation packetbakery) { + spawnAndAddRangedMapObject(mapobject, packetbakery, null); + } + + private void spawnAndAddRangedMapObject(MapleMapObject mapobject, DelayedPacketCreation packetbakery, SpawnCondition condition) { + chrRLock.lock(); + objectWLock.lock(); + try { + int curOID = getUsableOID(); + mapobject.setObjectId(curOID); + this.mapobjects.put(curOID, mapobject); + for (MapleCharacter chr : characters) { + if (condition == null || condition.canSpawn(chr)) { + if (chr.getPosition().distanceSq(mapobject.getPosition()) <= 722500) { + packetbakery.sendPackets(chr.getClient()); + chr.addVisibleMapObject(mapobject); + } + } + } + } finally { + chrRLock.unlock(); + objectWLock.unlock(); + } + } + + private int getUsableOID() { + if (runningOid.incrementAndGet() > 2000000000) { + runningOid.set(1000); + } + objectRLock.lock(); + try { + if (mapobjects.containsKey(runningOid.get())) { + while (mapobjects.containsKey(runningOid.incrementAndGet())); + } + } finally { + objectRLock.unlock(); + } + + return runningOid.get(); + } + + public void removeMapObject(int num) { + objectWLock.lock(); + try { + this.mapobjects.remove(Integer.valueOf(num)); + } finally { + objectWLock.unlock(); + } + } + + public void removeMapObject(final MapleMapObject obj) { + removeMapObject(obj.getObjectId()); + } + + private Point calcPointBelow(Point initial) { + MapleFoothold fh = footholds.findBelow(initial); + if (fh == null) { + return null; + } + int dropY = fh.getY1(); + if (!fh.isWall() && fh.getY1() != fh.getY2()) { + double s1 = Math.abs(fh.getY2() - fh.getY1()); + double s2 = Math.abs(fh.getX2() - fh.getX1()); + double s5 = Math.cos(Math.atan(s2 / s1)) * (Math.abs(initial.x - fh.getX1()) / Math.cos(Math.atan(s1 / s2))); + if (fh.getY2() < fh.getY1()) { + dropY = fh.getY1() - (int) s5; + } else { + dropY = fh.getY1() + (int) s5; + } + } + return new Point(initial.x, dropY); + } + + public Point calcDropPos(Point initial, Point fallback) { + Point ret = calcPointBelow(new Point(initial.x, initial.y - 85)); + if (ret == null) { + return fallback; + } + return ret; + } + + private void dropFromMonster(final MapleCharacter chr, final MapleMonster mob) { + if (mob.dropsDisabled() || !dropsOn) { + return; + } + final MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + final byte droptype = (byte) (mob.getStats().isExplosiveReward() ? 3 : mob.getStats().isFfaLoot() ? 2 : chr.getParty() != null ? 1 : 0); + final int mobpos = mob.getPosition().x; + int chServerrate = chr.getDropRate(); + Item idrop; + byte d = 1; + Point pos = new Point(0, mob.getPosition().y); + + Map stati = mob.getStati(); + if (stati.containsKey(MonsterStatus.SHOWDOWN)) { + chServerrate *= (stati.get(MonsterStatus.SHOWDOWN).getStati().get(MonsterStatus.SHOWDOWN).doubleValue() / 100.0 + 1.0); + } + + final MapleMonsterInformationProvider mi = MapleMonsterInformationProvider.getInstance(); + final List dropEntry = new ArrayList<>(mi.retrieveDrop(mob.getId())); + + Collections.shuffle(dropEntry); + for (final MonsterDropEntry de : dropEntry) { + if (Randomizer.nextInt(999999) < de.chance * chServerrate) { + if (droptype == 3) { + pos.x = (int) (mobpos + (d % 2 == 0 ? (40 * (d + 1) / 2) : -(40 * (d / 2)))); + } else { + pos.x = (int) (mobpos + ((d % 2 == 0) ? (25 * (d + 1) / 2) : -(25 * (d / 2)))); + } + if (de.itemId == 0) { // meso + int mesos = Randomizer.nextInt(de.Maximum - de.Minimum) + de.Minimum; + + if (mesos > 0) { + if (chr.getBuffedValue(MapleBuffStat.MESOUP) != null) { + mesos = (int) (mesos * chr.getBuffedValue(MapleBuffStat.MESOUP).doubleValue() / 100.0); + } + spawnMesoDrop(mesos * chr.getMesoRate(), calcDropPos(pos, mob.getPosition()), mob, chr, false, droptype); + } + } else { + if (ItemConstants.getInventoryType(de.itemId) == MapleInventoryType.EQUIP) { + idrop = ii.randomizeStats((Equip) ii.getEquipById(de.itemId)); + } else { + idrop = new Item(de.itemId, (short) 0, (short) (de.Maximum != 1 ? Randomizer.nextInt(de.Maximum - de.Minimum) + de.Minimum : 1)); + } + spawnDrop(idrop, calcDropPos(pos, mob.getPosition()), mob, chr, droptype, de.questid); + } + d++; + } + } + final List globalEntry = mi.getGlobalDrop(); + // Global Drops + for (final MonsterGlobalDropEntry de : globalEntry) { + if (Randomizer.nextInt(999999) < de.chance) { + if (droptype == 3) { + pos.x = (int) (mobpos + (d % 2 == 0 ? (40 * (d + 1) / 2) : -(40 * (d / 2)))); + } else { + pos.x = (int) (mobpos + ((d % 2 == 0) ? (25 * (d + 1) / 2) : -(25 * (d / 2)))); + } + if (de.itemId == 0) { + //chr.getCashShop().gainCash(1, 80); + } else { + if (ItemConstants.getInventoryType(de.itemId) == MapleInventoryType.EQUIP) { + idrop = ii.randomizeStats((Equip) ii.getEquipById(de.itemId)); + } else { + idrop = new Item(de.itemId, (short) 0, (short) (de.Maximum != 1 ? Randomizer.nextInt(de.Maximum - de.Minimum) + de.Minimum : 1)); + } + spawnDrop(idrop, calcDropPos(pos, mob.getPosition()), mob, chr, droptype, de.questid); + d++; + } + } + } + } + + private void spawnDrop(final Item idrop, final Point dropPos, final MapleMonster mob, final MapleCharacter chr, final byte droptype, final short questid) { + final MapleMapItem mdrop = new MapleMapItem(idrop, dropPos, mob, chr, droptype, false, questid); + mdrop.setDropTime(System.currentTimeMillis()); + spawnAndAddRangedMapObject(mdrop, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + if (questid <= 0 || (c.getPlayer().getQuestStatus(questid) == 1 && c.getPlayer().needQuestItem(questid, idrop.getItemId()))) { + c.announce(MaplePacketCreator.dropItemFromMapObject(mdrop, mob.getPosition(), dropPos, (byte) 1)); + } + } + }, null); + + TimerManager.getInstance().schedule(new ExpireMapItemJob(mdrop), 180000); + activateItemReactors(mdrop, chr.getClient()); + } + + public final void spawnMesoDrop(final int meso, final Point position, final MapleMapObject dropper, final MapleCharacter owner, final boolean playerDrop, final byte droptype) { + final Point droppos = calcDropPos(position, position); + final MapleMapItem mdrop = new MapleMapItem(meso, droppos, dropper, owner, droptype, playerDrop); + mdrop.setDropTime(System.currentTimeMillis()); + + spawnAndAddRangedMapObject(mdrop, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(MaplePacketCreator.dropItemFromMapObject(mdrop, dropper.getPosition(), droppos, (byte) 1)); + } + }, null); + + TimerManager.getInstance().schedule(new ExpireMapItemJob(mdrop), 180000); + } + + public final void disappearingItemDrop(final MapleMapObject dropper, final MapleCharacter owner, final Item item, final Point pos) { + final Point droppos = calcDropPos(pos, pos); + final MapleMapItem drop = new MapleMapItem(item, droppos, dropper, owner, (byte) 1, false); + broadcastMessage(MaplePacketCreator.dropItemFromMapObject(drop, dropper.getPosition(), droppos, (byte) 3), drop.getPosition()); + } + + public MapleMonster getMonsterById(int id) { + objectRLock.lock(); + try { + for (MapleMapObject obj : mapobjects.values()) { + if (obj.getType() == MapleMapObjectType.MONSTER) { + if (((MapleMonster) obj).getId() == id) { + return (MapleMonster) obj; + } + } + } + } finally { + objectRLock.unlock(); + } + return null; + } + + public int countMonster(int id) { + int count = 0; + for (MapleMapObject m : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER))) { + MapleMonster mob = (MapleMonster) m; + if (mob.getId() == id) { + count++; + } + } + return count; + } + + public boolean damageMonster(final MapleCharacter chr, final MapleMonster monster, final int damage) { + if (monster.getId() == 8800000) { + for (MapleMapObject object : chr.getMap().getMapObjects()) { + MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId()); + if (mons != null) { + if (mons.getId() >= 8800003 && mons.getId() <= 8800010) { + return true; + } + } + } + } + if (monster.isAlive()) { + boolean killed = false; + monster.monsterLock.lock(); + try { + if (!monster.isAlive()) { + return false; + } + Pair cool = monster.getStats().getCool(); + if (cool != null) { + Pyramid pq = (Pyramid) chr.getPartyQuest(); + if (pq != null) { + if (damage > 0) { + if (damage >= cool.getLeft()) { + if ((Math.random() * 100) < cool.getRight()) { + pq.cool(); + } else { + pq.kill(); + } + } else { + pq.kill(); + } + } else { + pq.miss(); + } + killed = true; + } + } + if (damage > 0) { + monster.damage(chr, damage); + if (!monster.isAlive()) { // monster just died + //killMonster(monster, chr, true); + killed = true; + } + } else if (monster.getId() >= 8810002 && monster.getId() <= 8810009) { + for (MapleMapObject object : chr.getMap().getMapObjects()) { + MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId()); + if (mons != null) { + if (monster.isAlive() && (monster.getId() >= 8810010 && monster.getId() <= 8810017)) { + if (mons.getId() == 8810018) { + killMonster(mons, chr, true); + } + } + } + } + } + } finally { + monster.monsterLock.unlock(); + } + if (monster.getStats().selfDestruction() != null && monster.getStats().selfDestruction().getHp() > -1) {// should work ;p + if (monster.getHp() <= monster.getStats().selfDestruction().getHp()) { + killMonster(monster, chr, true, false, monster.getStats().selfDestruction().getAction()); + return true; + } + } + if (killed) { + killMonster(monster, chr, true); + } + return true; + } + return false; + } + + public List getMonsters() { + List mobs = new ArrayList(); + for (MapleMapObject object : this.getMapObjects()) { + mobs.add(this.getMonsterByOid(object.getObjectId())); + } + return mobs; + } + + public void killMonster(final MapleMonster monster, final MapleCharacter chr, final boolean withDrops) { + killMonster(monster, chr, withDrops, false, 1); + } + + public void killMonster(final MapleMonster monster, final MapleCharacter chr, final boolean withDrops, final boolean secondTime, int animation) { + if (monster.getId() == 8810018 && !secondTime) { + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + killMonster(monster, chr, withDrops, true, 1); + killAllMonsters(); + } + }, 3000); + return; + } + if (chr == null) { + spawnedMonstersOnMap.decrementAndGet(); + monster.setHp(0); + broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), animation), monster.getPosition()); + removeMapObject(monster); + return; + } + if (monster.getStats().getLevel() >= chr.getLevel() + 30 && !chr.isGM()) { + AutobanFactory.GENERAL.alert(chr, " for killing a " + monster.getName() + " which is over 30 levels higher."); + } + /*if (chr.getQuest(MapleQuest.getInstance(29400)).getStatus().equals(MapleQuestStatus.Status.STARTED)) { + if (chr.getLevel() >= 120 && monster.getStats().getLevel() >= 120) { + //FIX MEDAL SHET + } else if (monster.getStats().getLevel() >= chr.getLevel()) { + } + }*/ + int buff = monster.getBuffToGive(); + if (buff > -1) { + MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); + for (MapleMapObject mmo : this.getAllPlayer()) { + MapleCharacter character = (MapleCharacter) mmo; + if (character.isAlive()) { + MapleStatEffect statEffect = mii.getItemEffect(buff); + character.getClient().announce(MaplePacketCreator.showOwnBuffEffect(buff, 1)); + broadcastMessage(character, MaplePacketCreator.showBuffeffect(character.getId(), buff, 1), false); + statEffect.applyTo(character); + } + } + } + if (monster.getId() == 8810018 && chr.getMapId() == 240060200) { + for (Channel cserv : Server.getInstance().getWorld(world).getChannels()) { + for (MapleCharacter player : cserv.getPlayerStorage().getAllCharacters()) { + player.dropMessage("To the crew that have finally conquered Horned Tail after numerous attempts, I salute thee! You are the true heroes of Leafre!!"); + } + } + } + spawnedMonstersOnMap.decrementAndGet(); + monster.setHp(0); + broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), animation), monster.getPosition()); + //if (monster.getStats().selfDestruction() == null) {//FUU BOMBS D: + removeMapObject(monster); + //} + if (monster.getCP() > 0 && chr.getCarnival() != null) { + chr.getCarnivalParty().addCP(chr, monster.getCP()); + chr.announce(MaplePacketCreator.updateCP(chr.getCP(), chr.getObtainedCP())); + broadcastMessage(MaplePacketCreator.updatePartyCP(chr.getCarnivalParty())); + //they drop items too ): + } + if (monster.getId() >= 8800003 && monster.getId() <= 8800010) { + boolean makeZakReal = true; + Collection objects = getMapObjects(); + for (MapleMapObject object : objects) { + MapleMonster mons = getMonsterByOid(object.getObjectId()); + if (mons != null) { + if (mons.getId() >= 8800003 && mons.getId() <= 8800010) { + makeZakReal = false; + break; + } + } + } + if (makeZakReal) { + for (MapleMapObject object : objects) { + MapleMonster mons = chr.getMap().getMonsterByOid(object.getObjectId()); + if (mons != null) { + if (mons.getId() == 8800000) { + makeMonsterReal(mons); + updateMonsterController(mons); + break; + } + } + } + } + } + MapleCharacter dropOwner = monster.killBy(chr); + if (withDrops && !monster.dropsDisabled()) { + if (dropOwner == null) { + dropOwner = chr; + } + dropFromMonster(dropOwner, monster); + } + } + + public void killFriendlies(MapleMonster mob) { + this.killMonster(mob, (MapleCharacter) getAllPlayer().get(0), false); + } + + public void killMonster(int monsId) { + for (MapleMapObject mmo : getMapObjects()) { + if (mmo instanceof MapleMonster) { + if (((MapleMonster) mmo).getId() == monsId) { + this.killMonster((MapleMonster) mmo, (MapleCharacter) getAllPlayer().get(0), false); + } + } + } + } + + public void monsterCloakingDevice() { + for (MapleMapObject monstermo : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER))) { + MapleMonster monster = (MapleMonster) monstermo; + broadcastMessage(MaplePacketCreator.makeMonsterInvisible(monster)); + } + } + + public void softKillAllMonsters() { + for (MapleMapObject monstermo : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER))) { + MapleMonster monster = (MapleMonster) monstermo; + if (monster.getStats().isFriendly()) { + continue; + } + spawnedMonstersOnMap.decrementAndGet(); + monster.setHp(0); + removeMapObject(monster); + } + } + + public void killAllMonstersNotFriendly() { + for (MapleMapObject monstermo : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER))) { + MapleMonster monster = (MapleMonster) monstermo; + if (monster.getStats().isFriendly()) { + continue; + } + spawnedMonstersOnMap.decrementAndGet(); + monster.setHp(0); + broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), true), monster.getPosition()); + removeMapObject(monster); + } + } + + public void killAllMonsters() { + for (MapleMapObject monstermo : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER))) { + MapleMonster monster = (MapleMonster) monstermo; + spawnedMonstersOnMap.decrementAndGet(); + monster.setHp(0); + broadcastMessage(MaplePacketCreator.killMonster(monster.getObjectId(), true), monster.getPosition()); + removeMapObject(monster); + } + } + + public List getAllPlayer() { + return getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.PLAYER)); + } + + public void destroyReactor(int oid) { + final MapleReactor reactor = getReactorByOid(oid); + TimerManager tMan = TimerManager.getInstance(); + broadcastMessage(MaplePacketCreator.destroyReactor(reactor)); + reactor.setAlive(false); + removeMapObject(reactor); + reactor.setTimerActive(false); + if (reactor.getDelay() > 0) { + tMan.schedule(new Runnable() { + @Override + public void run() { + respawnReactor(reactor); + } + }, reactor.getDelay()); + } + } + + public void resetReactors() { + objectRLock.lock(); + try { + for (MapleMapObject o : mapobjects.values()) { + if (o.getType() == MapleMapObjectType.REACTOR) { + final MapleReactor r = ((MapleReactor) o); + r.setState((byte) 0); + r.setTimerActive(false); + broadcastMessage(MaplePacketCreator.triggerReactor(r, 0)); + } + } + } finally { + objectRLock.unlock(); + } + } + + public void shuffleReactors() { + List points = new ArrayList<>(); + objectRLock.lock(); + try { + for (MapleMapObject o : mapobjects.values()) { + if (o.getType() == MapleMapObjectType.REACTOR) { + points.add(((MapleReactor) o).getPosition()); + } + } + Collections.shuffle(points); + for (MapleMapObject o : mapobjects.values()) { + if (o.getType() == MapleMapObjectType.REACTOR) { + ((MapleReactor) o).setPosition(points.remove(points.size() - 1)); + } + } + } finally { + objectRLock.unlock(); + } + } + + public MapleReactor getReactorById(int Id) { + objectRLock.lock(); + try { + for (MapleMapObject obj : mapobjects.values()) { + if (obj.getType() == MapleMapObjectType.REACTOR) { + if (((MapleReactor) obj).getId() == Id) { + return (MapleReactor) obj; + } + } + } + return null; + } finally { + objectRLock.unlock(); + } + } + + /** + * Automagically finds a new controller for the given monster from the chars + * on the map... + * + * @param monster + */ + public void updateMonsterController(MapleMonster monster) { + monster.monsterLock.lock(); + try { + if (!monster.isAlive()) { + return; + } + if (monster.getController() != null) { + if (monster.getController().getMap() != this) { + monster.getController().stopControllingMonster(monster); + } else { + return; + } + } + int mincontrolled = -1; + MapleCharacter newController = null; + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + if (!chr.isHidden() && (chr.getControlledMonsters().size() < mincontrolled || mincontrolled == -1)) { + mincontrolled = chr.getControlledMonsters().size(); + newController = chr; + } + } + } finally { + chrRLock.unlock(); + } + if (newController != null) {// was a new controller found? (if not no one is on the map) + if (monster.isFirstAttack()) { + newController.controlMonster(monster, true); + monster.setControllerHasAggro(true); + monster.setControllerKnowsAboutAggro(true); + } else { + newController.controlMonster(monster, false); + } + } + } finally { + monster.monsterLock.unlock(); + } + } + + public Collection getMapObjects() { + return Collections.unmodifiableCollection(mapobjects.values()); + } + + public boolean containsNPC(int npcid) { + if (npcid == 9000066) { + return true; + } + objectRLock.lock(); + try { + for (MapleMapObject obj : mapobjects.values()) { + if (obj.getType() == MapleMapObjectType.NPC) { + if (((MapleNPC) obj).getId() == npcid) { + return true; + } + } + } + } finally { + objectRLock.unlock(); + } + return false; + } + + public MapleMapObject getMapObject(int oid) { + return mapobjects.get(oid); + } + + /** + * returns a monster with the given oid, if no such monster exists returns + * null + * + * @param oid + * @return + */ + public MapleMonster getMonsterByOid(int oid) { + MapleMapObject mmo = getMapObject(oid); + if (mmo == null) { + return null; + } + if (mmo.getType() == MapleMapObjectType.MONSTER) { + return (MapleMonster) mmo; + } + return null; + } + + public MapleReactor getReactorByOid(int oid) { + MapleMapObject mmo = getMapObject(oid); + if (mmo == null) { + return null; + } + return mmo.getType() == MapleMapObjectType.REACTOR ? (MapleReactor) mmo : null; + } + + public MapleReactor getReactorByName(String name) { + objectRLock.lock(); + try { + for (MapleMapObject obj : mapobjects.values()) { + if (obj.getType() == MapleMapObjectType.REACTOR) { + if (((MapleReactor) obj).getName().equals(name)) { + return (MapleReactor) obj; + } + } + } + } finally { + objectRLock.unlock(); + } + return null; + } + + public void spawnMonsterOnGroudBelow(int id, int x, int y) { + MapleMonster mob = MapleLifeFactory.getMonster(id); + spawnMonsterOnGroundBelow(mob, new Point(x, y)); + } + + public void spawnMonsterOnGroudBelow(MapleMonster mob, Point pos) { + spawnMonsterOnGroundBelow(mob, pos); + } + + public void spawnMonsterOnGroundBelow(MapleMonster mob, Point pos) { + Point spos = new Point(pos.x, pos.y - 1); + spos = calcPointBelow(spos); + spos.y--; + mob.setPosition(spos); + spawnMonster(mob); + } + + public void spawnCPQMonster(MapleMonster mob, Point pos, int team) { + Point spos = new Point(pos.x, pos.y - 1); + spos = calcPointBelow(spos); + spos.y--; + mob.setPosition(spos); + mob.setTeam(team); + spawnMonster(mob); + } + + public void addBunnyHit() { + bunnyDamage++; + if (bunnyDamage > 5) { + broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny is feeling sick. Please protect it so it can make delicious rice cakes.")); + bunnyDamage = 0; + } + } + + private void monsterItemDrop(final MapleMonster m, final Item item, long delay) { + final ScheduledFuture monsterItemDrop = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + if (MapleMap.this.getMonsterById(m.getId()) != null && !MapleMap.this.getAllPlayer().isEmpty()) { + if (item.getItemId() == 4001101) { + MapleMap.this.riceCakes++; + MapleMap.this.broadcastMessage(MaplePacketCreator.serverNotice(6, "The Moon Bunny made rice cake number " + (MapleMap.this.riceCakes))); + } + spawnItemDrop(m, (MapleCharacter) getAllPlayer().get(0), item, m.getPosition(), false, false); + } + } + }, delay, delay); + if (getMonsterById(m.getId()) == null) { + monsterItemDrop.cancel(true); + } + } + + public void spawnFakeMonsterOnGroundBelow(MapleMonster mob, Point pos) { + Point spos = getGroundBelow(pos); + mob.setPosition(spos); + spawnFakeMonster(mob); + } + + public Point getGroundBelow(Point pos) { + Point spos = new Point(pos.x, pos.y - 3); // Using -3 fixes issues with spawning pets causing a lot of issues. + spos = calcPointBelow(spos); + spos.y--;//shouldn't be null! + return spos; + } + + public void spawnRevives(final MapleMonster monster) { + monster.setMap(this); + + spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + + c.announce(MaplePacketCreator.spawnMonster(monster, false)); + } + }); + updateMonsterController(monster); + spawnedMonstersOnMap.incrementAndGet(); + } + + public void spawnMonster(final MapleMonster monster) { + if (mobCapacity != -1 && mobCapacity == spawnedMonstersOnMap.get()) { + return;//PyPQ + } + monster.setMap(this); + if (!monster.getMap().getAllPlayer().isEmpty()) { + MapleCharacter chr = (MapleCharacter) getAllPlayer().get(0); + if (monster.getEventInstance() == null && chr.getEventInstance() != null) { + chr.getEventInstance().registerMonster(monster); + } + } + + spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(MaplePacketCreator.spawnMonster(monster, true)); + } + }, null); + updateMonsterController(monster); + + if (monster.getDropPeriodTime() > 0) { //9300102 - Watchhog, 9300061 - Moon Bunny (HPQ) + if (monster.getId() == 9300102) { + monsterItemDrop(monster, new Item(4031507, (short) 0, (short) 1), monster.getDropPeriodTime()); + } else if (monster.getId() == 9300061) { + monsterItemDrop(monster, new Item(4001101, (short) 0, (short) 1), monster.getDropPeriodTime() / 3); + } else { + FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "UNCODED TIMED MOB DETECTED: " + monster.getId()); + } + } + spawnedMonstersOnMap.incrementAndGet(); + final selfDestruction selfDestruction = monster.getStats().selfDestruction(); + if (monster.getStats().removeAfter() > 0 || selfDestruction != null && selfDestruction.getHp() < 0) { + if (selfDestruction == null) { + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + killMonster(monster, null, false); + } + }, monster.getStats().removeAfter() * 1000); + } else { + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + killMonster(monster, null, false, false, selfDestruction.getAction()); + } + }, selfDestruction.removeAfter() * 1000); + } + } + } + + public void spawnDojoMonster(final MapleMonster monster) { + Point[] pts = {new Point(140, 0), new Point(190, 7), new Point(187, 7)}; + spawnMonsterWithEffect(monster, 15, pts[Randomizer.nextInt(3)]); + } + + public void spawnMonsterWithEffect(final MapleMonster monster, final int effect, Point pos) { + monster.setMap(this); + Point spos = new Point(pos.x, pos.y - 1); + spos = calcPointBelow(spos); + spos.y--; + monster.setPosition(spos); + if (mapid < 925020000 || mapid > 925030000) { + monster.disableDrops(); + } + spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(MaplePacketCreator.spawnMonster(monster, true, effect)); + } + }); + if (monster.hasBossHPBar()) { + broadcastMessage(monster.makeBossHPBarPacket(), monster.getPosition()); + } + updateMonsterController(monster); + + spawnedMonstersOnMap.incrementAndGet(); + } + + public void spawnFakeMonster(final MapleMonster monster) { + monster.setMap(this); + monster.setFake(true); + spawnAndAddRangedMapObject(monster, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(MaplePacketCreator.spawnFakeMonster(monster, 0)); + } + }); + + spawnedMonstersOnMap.incrementAndGet(); + } + + public void makeMonsterReal(final MapleMonster monster) { + monster.setFake(false); + broadcastMessage(MaplePacketCreator.makeMonsterReal(monster)); + updateMonsterController(monster); + } + + public void spawnReactor(final MapleReactor reactor) { + reactor.setMap(this); + spawnAndAddRangedMapObject(reactor, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(reactor.makeSpawnData()); + } + }); + + } + + private void respawnReactor(final MapleReactor reactor) { + reactor.setState((byte) 0); + reactor.setAlive(true); + spawnReactor(reactor); + } + + public void spawnDoor(final MapleDoor door) { + spawnAndAddRangedMapObject(door, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(MaplePacketCreator.spawnDoor(door.getOwner().getId(), door.getTargetPosition(), false)); + if (door.getOwner().getParty() != null && (door.getOwner() == c.getPlayer() || door.getOwner().getParty().containsMembers(c.getPlayer().getMPC()))) { + c.announce(MaplePacketCreator.partyPortal(door.getTown().getId(), door.getTarget().getId(), door.getTargetPosition())); + } + c.announce(MaplePacketCreator.spawnPortal(door.getTown().getId(), door.getTarget().getId(), door.getTargetPosition())); + c.announce(MaplePacketCreator.enableActions()); + } + }, new SpawnCondition() { + @Override + public boolean canSpawn(MapleCharacter chr) { + return chr.getMapId() == door.getTarget().getId() || chr == door.getOwner() && chr.getParty() == null; + } + }); + + } + + public List getPlayersInRange(Rectangle box, List chr) { + List character = new LinkedList<>(); + chrRLock.lock(); + try { + for (MapleCharacter a : characters) { + if (chr.contains(a.getClient().getPlayer())) { + if (box.contains(a.getPosition())) { + character.add(a); + } + } + } + return character; + } finally { + chrRLock.unlock(); + } + } + + public void spawnSummon(final MapleSummon summon) { + spawnAndAddRangedMapObject(summon, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + if (summon != null) { + c.announce(MaplePacketCreator.spawnSummon(summon, true)); + } + } + }, null); + } + + public void spawnMist(final MapleMist mist, final int duration, boolean poison, boolean fake, boolean recovery) { + addMapObject(mist); + broadcastMessage(fake ? mist.makeFakeSpawnData(30) : mist.makeSpawnData()); + TimerManager tMan = TimerManager.getInstance(); + final ScheduledFuture poisonSchedule; + if (poison) { + Runnable poisonTask = new Runnable() { + @Override + public void run() { + List affectedMonsters = getMapObjectsInBox(mist.getBox(), Collections.singletonList(MapleMapObjectType.MONSTER)); + for (MapleMapObject mo : affectedMonsters) { + if (mist.makeChanceResult()) { + MonsterStatusEffect poisonEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.POISON, 1), mist.getSourceSkill(), null, false); + ((MapleMonster) mo).applyStatus(mist.getOwner(), poisonEffect, true, duration); + } + } + } + }; + poisonSchedule = tMan.register(poisonTask, 2000, 2500); + } else if (recovery) { + Runnable poisonTask = new Runnable() { + @Override + public void run() { + List players = getMapObjectsInBox(mist.getBox(), Collections.singletonList(MapleMapObjectType.PLAYER)); + for (MapleMapObject mo : players) { + if (mist.makeChanceResult()) { + MapleCharacter chr = (MapleCharacter) mo; + if (mist.getOwner().getId() == chr.getId() || mist.getOwner().getParty() != null && mist.getOwner().getParty().containsMembers(chr.getMPC())) { + chr.addMP((int) mist.getSourceSkill().getEffect(chr.getSkillLevel(mist.getSourceSkill().getId())).getX() * chr.getMp() / 100); + } + } + } + } + }; + poisonSchedule = tMan.register(poisonTask, 2000, 2500); + } else { + poisonSchedule = null; + } + tMan.schedule(new Runnable() { + @Override + public void run() { + removeMapObject(mist); + if (poisonSchedule != null) { + poisonSchedule.cancel(false); + } + broadcastMessage(mist.makeDestroyData()); + } + }, duration); + } + + public final void spawnItemDrop(final MapleMapObject dropper, final MapleCharacter owner, final Item item, Point pos, final boolean ffaDrop, final boolean playerDrop) { + final Point droppos = calcDropPos(pos, pos); + final MapleMapItem drop = new MapleMapItem(item, droppos, dropper, owner, (byte) (ffaDrop ? 2 : 0), playerDrop); + drop.setDropTime(System.currentTimeMillis()); + + spawnAndAddRangedMapObject(drop, new DelayedPacketCreation() { + @Override + public void sendPackets(MapleClient c) { + c.announce(MaplePacketCreator.dropItemFromMapObject(drop, dropper.getPosition(), droppos, (byte) 1)); + } + }, null); + broadcastMessage(MaplePacketCreator.dropItemFromMapObject(drop, dropper.getPosition(), droppos, (byte) 0)); + + if (!everlast) { + TimerManager.getInstance().schedule(new ExpireMapItemJob(drop), 180000); + activateItemReactors(drop, owner.getClient()); + } + } + + private void activateItemReactors(final MapleMapItem drop, final MapleClient c) { + final Item item = drop.getItem(); + + for (final MapleMapObject o : getAllReactor()) { + final MapleReactor react = (MapleReactor) o; + + if (react.getReactorType() == 100) { + if (react.getReactItem((byte) 0).getLeft() == item.getItemId() && react.getReactItem((byte) 0).getRight() == item.getQuantity()) { + + if (react.getArea().contains(drop.getPosition())) { + if (!react.isTimerActive()) { + TimerManager.getInstance().schedule(new ActivateItemReactor(drop, react, c), 5000); + react.setTimerActive(true); + break; + } + } + } + } + } + } + + public final List getAllReactor() { + return getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.REACTOR)); + } + + public void startMapEffect(String msg, int itemId) { + startMapEffect(msg, itemId, 30000); + } + + public void startMapEffect(String msg, int itemId, long time) { + if (mapEffect != null) { + return; + } + mapEffect = new MapleMapEffect(msg, itemId); + broadcastMessage(mapEffect.makeStartData()); + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + broadcastMessage(mapEffect.makeDestroyData()); + mapEffect = null; + } + }, time); + } + + public void addPlayer(final MapleCharacter chr) { + chrWLock.lock(); + try { + characters.add(chr); + } finally { + chrWLock.unlock(); + } + chr.setMapId(mapid); + if (onFirstUserEnter.length() != 0 && !chr.hasEntered(onFirstUserEnter, mapid) && MapScriptManager.getInstance().scriptExists(onFirstUserEnter, true)) { + if (getAllPlayer().size() <= 1) { + chr.enteredScript(onFirstUserEnter, mapid); + MapScriptManager.getInstance().getMapScript(chr.getClient(), onFirstUserEnter, true); + } + } + if (onUserEnter.length() != 0) { + if (onUserEnter.equals("cygnusTest") && (mapid < 913040000 || mapid > 913040006)) { + chr.saveLocation("INTRO"); + } + MapScriptManager.getInstance().getMapScript(chr.getClient(), onUserEnter, false); + } + if (FieldLimit.CANNOTUSEMOUNTS.check(fieldLimit) && chr.getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null) { + chr.cancelEffectFromBuffStat(MapleBuffStat.MONSTER_RIDING); + chr.cancelBuffStats(MapleBuffStat.MONSTER_RIDING); + } + if (mapid == 923010000 && getMonsterById(9300102) == null) { // Kenta's Mount Quest + spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(9300102), new Point(77, 426)); + } else if (mapid == 910010200) { // Henesys Party Quest Bonus + chr.announce(MaplePacketCreator.getClock(60 * 5)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 910010200) { + chr.changeMap(910010400); + } + } + }, 5 * 60 * 1000); + } else if (mapid == 200090060) { // To Rien + chr.announce(MaplePacketCreator.getClock(60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 200090060) { + chr.changeMap(140020300); + } + } + }, 60 * 1000); + } else if (mapid == 200090070) { // To Lith Harbor + chr.announce(MaplePacketCreator.getClock(60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 200090070) { + chr.changeMap(104000000, 3); + } + } + }, 60 * 1000); + } else if (mapid == 200090030) { // To Ereve (SkyFerry) + chr.getClient().announce(MaplePacketCreator.getClock(60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 200090030) { + chr.changeMap(130000210); + } + } + }, 60 * 1000); + } else if (mapid == 200090031) { // To Victoria Island (SkyFerry) + chr.getClient().announce(MaplePacketCreator.getClock(60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 200090031) { + chr.changeMap(101000400); + } + } + }, 60 * 1000); + } else if (mapid == 200090021) { // To Orbis (SkyFerry) + chr.getClient().announce(MaplePacketCreator.getClock(60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 200090021) { + chr.changeMap(200000161); + } + } + }, 60 * 1000); + } else if (mapid == 200090020) { // To Ereve From Orbis (SkyFerry) + chr.getClient().announce(MaplePacketCreator.getClock(60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (chr.getMapId() == 200090020) { + chr.changeMap(130000210); + } + } + }, 60 * 1000); + } else if (mapid == 103040400) { + if (chr.getEventInstance() != null) { + chr.getEventInstance().movePlayer(chr); + } + } else if (MapleMiniDungeon.isDungeonMap(mapid)) { + final MapleMiniDungeon dungeon = MapleMiniDungeon.getDungeon(mapid); + chr.getClient().announce(MaplePacketCreator.getClock(30 * 60)); + TimerManager.getInstance().schedule(new Runnable() { + + @Override + public void run() { + if (MapleMiniDungeon.isDungeonMap(chr.getMapId())) { + chr.changeMap(dungeon.getBase()); + } + } + }, 30 * 60 * 1000); + } + MaplePet[] pets = chr.getPets(); + for (int i = 0; i < chr.getPets().length; i++) { + if (pets[i] != null) { + pets[i].setPos(getGroundBelow(chr.getPosition())); + chr.announce(MaplePacketCreator.showPet(chr, pets[i], false, false)); + } else { + break; + } + } + if (chr.isHidden()) { + broadcastGMMessage(chr, MaplePacketCreator.spawnPlayerMapobject(chr), false); + chr.announce(MaplePacketCreator.getGMEffect(0x10, (byte) 1)); + + List> dsstat = Collections.singletonList(new Pair(MapleBuffStat.DARKSIGHT, 0)); + broadcastGMMessage(chr, MaplePacketCreator.giveForeignBuff(chr.getId(), dsstat), false); + } else { + broadcastMessage(chr, MaplePacketCreator.spawnPlayerMapobject(chr), false); + } + + sendObjectPlacement(chr.getClient()); + if (isStartingEventMap() && !eventStarted()) { + chr.getMap().getPortal("join00").setPortalStatus(false); + } + if (hasForcedEquip()) { + chr.getClient().announce(MaplePacketCreator.showForcedEquip(-1)); + } + if (specialEquip()) { + chr.getClient().announce(MaplePacketCreator.coconutScore(0, 0)); + chr.getClient().announce(MaplePacketCreator.showForcedEquip(chr.getTeam())); + } + objectWLock.lock(); + try { + this.mapobjects.put(Integer.valueOf(chr.getObjectId()), chr); + } finally { + objectWLock.unlock(); + } + if (chr.getPlayerShop() != null) { + addMapObject(chr.getPlayerShop()); + } + + final MapleDragon dragon = chr.getDragon(); + if (dragon != null) { + dragon.setPosition(chr.getPosition()); + this.addMapObject(dragon); + if (chr.isHidden()) { + this.broadcastGMMessage(chr, MaplePacketCreator.spawnDragon(dragon)); + } else { + this.broadcastMessage(chr, MaplePacketCreator.spawnDragon(dragon)); + } + } + + MapleStatEffect summonStat = chr.getStatForBuff(MapleBuffStat.SUMMON); + if (summonStat != null) { + MapleSummon summon = chr.getSummons().get(summonStat.getSourceId()); + summon.setPosition(chr.getPosition()); + chr.getMap().spawnSummon(summon); + updateMapObjectVisibility(chr, summon); + } + if (mapEffect != null) { + mapEffect.sendStartData(chr.getClient()); + } + chr.getClient().announce(MaplePacketCreator.resetForcedStats()); + if (mapid == 914000200 || mapid == 914000210 || mapid == 914000220) { + chr.getClient().announce(MaplePacketCreator.aranGodlyStats()); + } + if (chr.getEventInstance() != null && chr.getEventInstance().isTimerStarted()) { + chr.getClient().announce(MaplePacketCreator.getClock((int) (chr.getEventInstance().getTimeLeft() / 1000))); + } + if (chr.getFitness() != null && chr.getFitness().isTimerStarted()) { + chr.getClient().announce(MaplePacketCreator.getClock((int) (chr.getFitness().getTimeLeft() / 1000))); + } + + if (chr.getOla() != null && chr.getOla().isTimerStarted()) { + chr.getClient().announce(MaplePacketCreator.getClock((int) (chr.getOla().getTimeLeft() / 1000))); + } + + if (mapid == 109060000) { + chr.announce(MaplePacketCreator.rollSnowBall(true, 0, null, null)); + } + + MonsterCarnival carnival = chr.getCarnival(); + MonsterCarnivalParty cparty = chr.getCarnivalParty(); + if (carnival != null && cparty != null && (mapid == 980000101 || mapid == 980000201 || mapid == 980000301 || mapid == 980000401 || mapid == 980000501 || mapid == 980000601)) { + chr.getClient().announce(MaplePacketCreator.getClock((int) (carnival.getTimeLeft() / 1000))); + chr.getClient().announce(MaplePacketCreator.startCPQ(chr, carnival.oppositeTeam(cparty))); + } + if (hasClock()) { + Calendar cal = Calendar.getInstance(); + chr.getClient().announce((MaplePacketCreator.getClockTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)))); + } + if (hasBoat() == 2) { + chr.getClient().announce((MaplePacketCreator.boatPacket(true))); + } else if (hasBoat() == 1 && (chr.getMapId() != 200090000 || chr.getMapId() != 200090010)) { + chr.getClient().announce(MaplePacketCreator.boatPacket(false)); + } + chr.receivePartyMemberHP(); + } + + public MaplePortal findClosestPortal(Point from) { + MaplePortal closest = null; + double shortestDistance = Double.POSITIVE_INFINITY; + for (MaplePortal portal : portals.values()) { + double distance = portal.getPosition().distanceSq(from); + if (distance < shortestDistance) { + closest = portal; + shortestDistance = distance; + } + } + return closest; + } + + public MaplePortal getRandomSpawnpoint() { + List spawnPoints = new ArrayList<>(); + for (MaplePortal portal : portals.values()) { + if (portal.getType() >= 0 && portal.getType() <= 2) { + spawnPoints.add(portal); + } + } + MaplePortal portal = spawnPoints.get(new Random().nextInt(spawnPoints.size())); + return portal != null ? portal : getPortal(0); + } + + public void removePlayer(MapleCharacter chr) { + chrWLock.lock(); + try { + characters.remove(chr); + } finally { + chrWLock.unlock(); + } + removeMapObject(chr.getObjectId()); + if (!chr.isHidden()) { + broadcastMessage(MaplePacketCreator.removePlayerFromMap(chr.getId())); + } else { + broadcastGMMessage(MaplePacketCreator.removePlayerFromMap(chr.getId())); + } + + for (MapleMonster monster : chr.getControlledMonsters()) { + monster.setController(null); + monster.setControllerHasAggro(false); + monster.setControllerKnowsAboutAggro(false); + updateMonsterController(monster); + } + chr.leaveMap(); + chr.cancelMapTimeLimitTask(); + for (MapleSummon summon : chr.getSummons().values()) { + if (summon.isStationary()) { + chr.cancelBuffStats(MapleBuffStat.PUPPET); + } else { + removeMapObject(summon); + } + } + if (chr.getDragon() != null) { + removeMapObject(chr.getDragon()); + if (chr.isHidden()) { + this.broadcastGMMessage(chr, MaplePacketCreator.removeDragon(chr.getId())); + } else { + this.broadcastMessage(chr, MaplePacketCreator.removeDragon(chr.getId())); + } + } + } + + public void broadcastMessage(final byte[] packet) { + broadcastMessage(null, packet, Double.POSITIVE_INFINITY, null); + } + + public void broadcastGMMessage(final byte[] packet) { + broadcastGMMessage(null, packet, Double.POSITIVE_INFINITY, null); + } + + /** + * Nonranged. Repeat to source according to parameter. + * + * @param source + * @param packet + * @param repeatToSource + */ + public void broadcastMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { + broadcastMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition()); + } + + /** + * Ranged and repeat according to parameters. + * + * @param source + * @param packet + * @param repeatToSource + * @param ranged + */ + public void broadcastMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource, boolean ranged) { + broadcastMessage(repeatToSource ? null : source, packet, ranged ? 722500 : Double.POSITIVE_INFINITY, source.getPosition()); + } + + /** + * Always ranged from Point. + * + * @param packet + * @param rangedFrom + */ + public void broadcastMessage(final byte[] packet, Point rangedFrom) { + broadcastMessage(null, packet, 722500, rangedFrom); + } + + /** + * Always ranged from point. Does not repeat to source. + * + * @param source + * @param packet + * @param rangedFrom + */ + public void broadcastMessage(MapleCharacter source, final byte[] packet, Point rangedFrom) { + broadcastMessage(source, packet, 722500, rangedFrom); + } + + private void broadcastMessage(MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) { + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + if (chr != source) { + if (rangeSq < Double.POSITIVE_INFINITY) { + if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) { + chr.getClient().announce(packet); + } + } else { + chr.getClient().announce(packet); + } + } + } + } finally { + chrRLock.unlock(); + } + } + + private boolean isNonRangedType(MapleMapObjectType type) { + switch (type) { + case NPC: + case PLAYER: + case HIRED_MERCHANT: + case PLAYER_NPC: + case DRAGON: + case MIST: + return true; + default: + return false; + } + } + + private void sendObjectPlacement(MapleClient mapleClient) { + MapleCharacter chr = mapleClient.getPlayer(); + objectRLock.lock(); + try { + for (MapleMapObject o : mapobjects.values()) { + if (o.getType() == MapleMapObjectType.SUMMON) { + MapleSummon summon = (MapleSummon) o; + if (summon.getOwner() == chr) { + if (chr.getSummons().isEmpty() || !chr.getSummons().containsValue(summon)) { + objectWLock.lock(); + try { + mapobjects.remove(o); + } finally { + objectWLock.unlock(); + } + continue; + } + } + } + if (isNonRangedType(o.getType())) { + o.sendSpawnData(mapleClient); + } else if (o.getType() == MapleMapObjectType.MONSTER) { + updateMonsterController((MapleMonster) o); + } + } + } finally { + objectRLock.unlock(); + } + if (chr != null) { + for (MapleMapObject o : getMapObjectsInRange(chr.getPosition(), 722500, rangedMapobjectTypes)) { + if (o.getType() == MapleMapObjectType.REACTOR) { + if (((MapleReactor) o).isAlive()) { + o.sendSpawnData(chr.getClient()); + chr.addVisibleMapObject(o); + } + } else { + o.sendSpawnData(chr.getClient()); + chr.addVisibleMapObject(o); + } + } + } + } + + public List getMapObjectsInRange(Point from, double rangeSq, List types) { + List ret = new LinkedList<>(); + objectRLock.lock(); + try { + for (MapleMapObject l : mapobjects.values()) { + if (types.contains(l.getType())) { + if (from.distanceSq(l.getPosition()) <= rangeSq) { + ret.add(l); + } + } + } + return ret; + } finally { + objectRLock.unlock(); + } + } + + public List getMapObjectsInBox(Rectangle box, List types) { + List ret = new LinkedList<>(); + objectRLock.lock(); + try { + for (MapleMapObject l : mapobjects.values()) { + if (types.contains(l.getType())) { + if (box.contains(l.getPosition())) { + ret.add(l); + } + } + } + return ret; + } finally { + objectRLock.unlock(); + } + } + + public void addPortal(MaplePortal myPortal) { + portals.put(myPortal.getId(), myPortal); + } + + public MaplePortal getPortal(String portalname) { + for (MaplePortal port : portals.values()) { + if (port.getName().equals(portalname)) { + return port; + } + } + return null; + } + + public MaplePortal getPortal(int portalid) { + return portals.get(portalid); + } + + public void addMapleArea(Rectangle rec) { + areas.add(rec); + } + + public List getAreas() { + return new ArrayList<>(areas); + } + + public Rectangle getArea(int index) { + return areas.get(index); + } + + public void setFootholds(MapleFootholdTree footholds) { + this.footholds = footholds; + } + + public MapleFootholdTree getFootholds() { + return footholds; + } + + /** + * it's threadsafe, gtfo :D + * + * @param monster + * @param mobTime + */ + public void addMonsterSpawn(MapleMonster monster, int mobTime, int team) { + Point newpos = calcPointBelow(monster.getPosition()); + newpos.y -= 1; + SpawnPoint sp = new SpawnPoint(monster, newpos, !monster.isMobile(), mobTime, mobInterval, team); + monsterSpawn.add(sp); + if (sp.shouldSpawn() || mobTime == -1) {// -1 does not respawn and should not either but force ONE spawn + spawnMonster(sp.getMonster()); + } + + } + + public Collection getCharacters() { + return Collections.unmodifiableCollection(this.characters); + } + + public MapleCharacter getCharacterById(int id) { + chrRLock.lock(); + try { + for (MapleCharacter c : this.characters) { + if (c.getId() == id) { + return c; + } + } + } finally { + chrRLock.unlock(); + } + return null; + } + + private void updateMapObjectVisibility(MapleCharacter chr, MapleMapObject mo) { + if (!chr.isMapObjectVisible(mo)) { // monster entered view range + if (mo.getType() == MapleMapObjectType.SUMMON || mo.getPosition().distanceSq(chr.getPosition()) <= 722500) { + chr.addVisibleMapObject(mo); + mo.sendSpawnData(chr.getClient()); + } + } else if (mo.getType() != MapleMapObjectType.SUMMON && mo.getPosition().distanceSq(chr.getPosition()) > 722500) { + chr.removeVisibleMapObject(mo); + mo.sendDestroyData(chr.getClient()); + } + } + + public void moveMonster(MapleMonster monster, Point reportedPos) { + monster.setPosition(reportedPos); + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + updateMapObjectVisibility(chr, monster); + } + } finally { + chrRLock.unlock(); + } + } + + public void movePlayer(MapleCharacter player, Point newPosition) { + player.setPosition(newPosition); + Collection visibleObjects = player.getVisibleMapObjects(); + MapleMapObject[] visibleObjectsNow = visibleObjects.toArray(new MapleMapObject[visibleObjects.size()]); + try { + for (MapleMapObject mo : visibleObjectsNow) { + if (mo != null) { + if (mapobjects.get(mo.getObjectId()) == mo) { + updateMapObjectVisibility(player, mo); + } else { + player.removeVisibleMapObject(mo); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + for (MapleMapObject mo : getMapObjectsInRange(player.getPosition(), 722500, rangedMapobjectTypes)) { + if (!player.isMapObjectVisible(mo)) { + mo.sendSpawnData(player.getClient()); + player.addVisibleMapObject(mo); + } + } + } + + public MaplePortal findClosestSpawnpoint(Point from) { + MaplePortal closest = null; + double shortestDistance = Double.POSITIVE_INFINITY; + for (MaplePortal portal : portals.values()) { + double distance = portal.getPosition().distanceSq(from); + if (portal.getType() >= 0 && portal.getType() <= 2 && distance < shortestDistance && portal.getTargetMapId() == 999999999) { + closest = portal; + shortestDistance = distance; + } + } + return closest; + } + + public Collection getPortals() { + return Collections.unmodifiableCollection(portals.values()); + } + + public String getMapName() { + return mapName; + } + + public void setMapName(String mapName) { + this.mapName = mapName; + } + + public String getStreetName() { + return streetName; + } + + public void setClock(boolean hasClock) { + this.clock = hasClock; + } + + public boolean hasClock() { + return clock; + } + + public void setTown(boolean isTown) { + this.town = isTown; + } + + public boolean isTown() { + return town; + } + + public boolean isMuted() { + return isMuted; + } + + public void setMuted(boolean mute) { + isMuted = mute; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + + public void setEverlast(boolean everlast) { + this.everlast = everlast; + } + + public boolean getEverlast() { + return everlast; + } + + public int getSpawnedMonstersOnMap() { + return spawnedMonstersOnMap.get(); + } + + public void setMobCapacity(int capacity) { + this.mobCapacity = capacity; + } + + public void setBackgroundTypes(HashMap backTypes) { + backgroundTypes.putAll(backTypes); + } + + // not really costly to keep generating imo + public void sendNightEffect(MapleCharacter mc) { + for (Entry types : backgroundTypes.entrySet()) { + if (types.getValue() >= 3) { // 3 is a special number + mc.announce(MaplePacketCreator.changeBackgroundEffect(true, types.getKey(), 0)); + } + } + } + + public void broadcastNightEffect() { + chrRLock.lock(); + try { + for (MapleCharacter c : characters) { + sendNightEffect(c); + } + } finally { + chrRLock.unlock(); + } + } + + public MapleCharacter getCharacterByName(String name) { + chrRLock.lock(); + try { + for (MapleCharacter c : this.characters) { + if (c.getName().toLowerCase().equals(name.toLowerCase())) { + return c; + } + } + } finally { + chrRLock.unlock(); + } + return null; + } + + private class ExpireMapItemJob implements Runnable { + + private MapleMapItem mapitem; + + public ExpireMapItemJob(MapleMapItem mapitem) { + this.mapitem = mapitem; + } + + @Override + public void run() { + if (mapitem != null && mapitem == getMapObject(mapitem.getObjectId())) { + mapitem.itemLock.lock(); + try { + if (mapitem.isPickedUp()) { + return; + } + MapleMap.this.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 0, 0), mapitem.getPosition()); + mapitem.setPickedUp(true); + } finally { + mapitem.itemLock.unlock(); + MapleMap.this.removeMapObject(mapitem); + } + } + } + } + + private class ActivateItemReactor implements Runnable { + + private MapleMapItem mapitem; + private MapleReactor reactor; + private MapleClient c; + + public ActivateItemReactor(MapleMapItem mapitem, MapleReactor reactor, MapleClient c) { + this.mapitem = mapitem; + this.reactor = reactor; + this.c = c; + } + + @Override + public void run() { + if (mapitem != null && mapitem == getMapObject(mapitem.getObjectId())) { + mapitem.itemLock.lock(); + try { + TimerManager tMan = TimerManager.getInstance(); + if (mapitem.isPickedUp()) { + return; + } + MapleMap.this.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 0, 0), mapitem.getPosition()); + MapleMap.this.removeMapObject(mapitem); + reactor.hitReactor(c); + reactor.setTimerActive(false); + if (reactor.getDelay() > 0) { + tMan.schedule(new Runnable() { + @Override + public void run() { + reactor.setState((byte) 0); + broadcastMessage(MaplePacketCreator.triggerReactor(reactor, 0)); + } + }, reactor.getDelay()); + } + } finally { + mapitem.itemLock.unlock(); + } + } + } + } + + public void instanceMapRespawn() { + final int numShouldSpawn = (short) ((monsterSpawn.size() - spawnedMonstersOnMap.get()));//Fking lol'd + if (numShouldSpawn > 0) { + List randomSpawn = new ArrayList<>(monsterSpawn); + Collections.shuffle(randomSpawn); + int spawned = 0; + for (SpawnPoint spawnPoint : randomSpawn) { + spawnMonster(spawnPoint.getMonster()); + spawned++; + if (spawned >= numShouldSpawn) { + break; + } + } + } + } + + public void respawn() { + if (characters.isEmpty()) { + return; + } + short numShouldSpawn = (short) ((monsterSpawn.size() - spawnedMonstersOnMap.get()));//Fking lol'd + if (numShouldSpawn > 0) { + List randomSpawn = new ArrayList<>(monsterSpawn); + Collections.shuffle(randomSpawn); + short spawned = 0; + for (SpawnPoint spawnPoint : randomSpawn) { + if (spawnPoint.shouldSpawn()) { + spawnMonster(spawnPoint.getMonster()); + spawned++; + } + if (spawned >= numShouldSpawn) { + break; + } + } + } + } + + private static interface DelayedPacketCreation { + + void sendPackets(MapleClient c); + } + + private static interface SpawnCondition { + + boolean canSpawn(MapleCharacter chr); + } + + public int getHPDec() { + return decHP; + } + + public void setHPDec(int delta) { + decHP = delta; + } + + public int getHPDecProtect() { + return protectItem; + } + + public void setHPDecProtect(int delta) { + this.protectItem = delta; + } + + private int hasBoat() { + return docked ? 2 : (boat ? 1 : 0); + } + + public void setBoat(boolean hasBoat) { + this.boat = hasBoat; + } + + public void setDocked(boolean isDocked) { + this.docked = isDocked; + } + + public void broadcastGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { + broadcastGMMessage(repeatToSource ? null : source, packet, Double.POSITIVE_INFINITY, source.getPosition()); + } + + private void broadcastGMMessage(MapleCharacter source, final byte[] packet, double rangeSq, Point rangedFrom) { + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + if (chr != source && chr.isGM()) { + if (rangeSq < Double.POSITIVE_INFINITY) { + if (rangedFrom.distanceSq(chr.getPosition()) <= rangeSq) { + chr.getClient().announce(packet); + } + } else { + chr.getClient().announce(packet); + } + } + } + } finally { + chrRLock.unlock(); + } + } + + public void broadcastNONGMMessage(MapleCharacter source, final byte[] packet, boolean repeatToSource) { + chrRLock.lock(); + try { + for (MapleCharacter chr : characters) { + if (chr != source && !chr.isGM()) { + chr.getClient().announce(packet); + } + } + } finally { + chrRLock.unlock(); + } + } + + public MapleOxQuiz getOx() { + return ox; + } + + public void setOx(MapleOxQuiz set) { + this.ox = set; + } + + public void setOxQuiz(boolean b) { + this.isOxQuiz = b; + } + + public boolean isOxQuiz() { + return isOxQuiz; + } + + public void setOnUserEnter(String onUserEnter) { + this.onUserEnter = onUserEnter; + } + + public String getOnUserEnter() { + return onUserEnter; + } + + public void setOnFirstUserEnter(String onFirstUserEnter) { + this.onFirstUserEnter = onFirstUserEnter; + } + + public String getOnFirstUserEnter() { + return onFirstUserEnter; + } + + private boolean hasForcedEquip() { + return fieldType == 81 || fieldType == 82; + } + + public void setFieldType(int fieldType) { + this.fieldType = fieldType; + } + + public void clearDrops(MapleCharacter player) { + List items = player.getMap().getMapObjectsInRange(player.getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM)); + for (MapleMapObject i : items) { + player.getMap().removeMapObject(i); + player.getMap().broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, player.getId())); + } + } + + public void clearDrops() { + for (MapleMapObject i : getMapObjectsInRange(new Point(0, 0), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.ITEM))) { + removeMapObject(i); + this.broadcastMessage(MaplePacketCreator.removeItemFromMap(i.getObjectId(), 0, 0)); + } + } + + public void addMapTimer(int time) { + timeLimit = System.currentTimeMillis() + (time * 1000); + broadcastMessage(MaplePacketCreator.getClock(time)); + mapMonitor = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + if (timeLimit != 0 && timeLimit < System.currentTimeMillis()) { + warpEveryone(getForcedReturnId()); + } + if (getCharacters().isEmpty()) { + resetReactors(); + killAllMonsters(); + clearDrops(); + timeLimit = 0; + if (mapid >= 922240100 && mapid <= 922240119) { + toggleHiddenNPC(9001108); + } + mapMonitor.cancel(true); + mapMonitor = null; + } + } + }, 1000); + } + + public void setFieldLimit(int fieldLimit) { + this.fieldLimit = fieldLimit; + } + + public int getFieldLimit() { + return fieldLimit; + } + + public void resetRiceCakes() { + this.riceCakes = 0; + } + + public void allowSummonState(boolean b) { + MapleMap.this.allowSummons = b; + } + + public boolean getSummonState() { + return MapleMap.this.allowSummons; + } + + public void warpEveryone(int to) { + List players; + chrRLock.lock(); + try { + players = new ArrayList<>(getCharacters()); + } finally { + chrRLock.unlock(); + } + + for (MapleCharacter chr : players) { + chr.changeMap(to); + } + } + + // BEGIN EVENTS + public void setSnowball(int team, MapleSnowball ball) { + switch (team) { + case 0: + this.snowball0 = ball; + break; + case 1: + this.snowball1 = ball; + break; + default: + break; + } + } + + public MapleSnowball getSnowball(int team) { + switch (team) { + case 0: + return snowball0; + case 1: + return snowball1; + default: + return null; + } + } + + private boolean specialEquip() {//Maybe I shouldn't use fieldType :\ + return fieldType == 4 || fieldType == 19; + } + + public void setCoconut(MapleCoconut nut) { + this.coconut = nut; + } + + public MapleCoconut getCoconut() { + return coconut; + } + + public void warpOutByTeam(int team, int mapid) { + List chars = new ArrayList<>(getCharacters()); + + for (MapleCharacter chr : chars) { + if (chr != null) { + if (chr.getTeam() == team) { + chr.changeMap(mapid); + } + } + } + } + + public void startEvent(final MapleCharacter chr) { + if (this.mapid == 109080000 && getCoconut() == null) { + setCoconut(new MapleCoconut(this)); + coconut.startEvent(); + } else if (this.mapid == 109040000) { + chr.setFitness(new MapleFitness(chr)); + chr.getFitness().startFitness(); + } else if (this.mapid == 109030101 || this.mapid == 109030201 || this.mapid == 109030301 || this.mapid == 109030401) { + chr.setOla(new MapleOla(chr)); + chr.getOla().startOla(); + } else if (this.mapid == 109020001 && getOx() == null) { + setOx(new MapleOxQuiz(this)); + getOx().sendQuestion(); + setOxQuiz(true); + } else if (this.mapid == 109060000 && getSnowball(chr.getTeam()) == null) { + setSnowball(0, new MapleSnowball(0, this)); + setSnowball(1, new MapleSnowball(1, this)); + getSnowball(chr.getTeam()).startEvent(); + } + } + + public boolean eventStarted() { + return eventstarted; + } + + public void startEvent() { + this.eventstarted = true; + } + + public void setEventStarted(boolean event) { + this.eventstarted = event; + } + + public String getEventNPC() { + StringBuilder sb = new StringBuilder(); + sb.append("Talk to "); + if (mapid == 60000) { + sb.append("Paul!"); + } else if (mapid == 104000000) { + sb.append("Jean!"); + } else if (mapid == 200000000) { + sb.append("Martin!"); + } else if (mapid == 220000000) { + sb.append("Tony!"); + } else { + return null; + } + return sb.toString(); + } + + public boolean hasEventNPC() { + return this.mapid == 60000 || this.mapid == 104000000 || this.mapid == 200000000 || this.mapid == 220000000; + } + + public boolean isStartingEventMap() { + return this.mapid == 109040000 || this.mapid == 109020001 || this.mapid == 109010000 || this.mapid == 109030001 || this.mapid == 109030101; + } + + public boolean isEventMap() { + return this.mapid >= 109010000 && this.mapid < 109050000 || this.mapid > 109050001 && this.mapid <= 109090000; + } + + public void timeMob(int id, String msg) { + timeMob = new Pair<>(id, msg); + } + + public Pair getTimeMob() { + return timeMob; + } + + public void toggleHiddenNPC(int id) { + for (MapleMapObject obj : mapobjects.values()) { + if (obj.getType() == MapleMapObjectType.NPC) { + MapleNPC npc = (MapleNPC) obj; + if (npc.getId() == id) { + npc.setHide(!npc.isHidden()); + if (!npc.isHidden()) //Should only be hidden upon changing maps + { + broadcastMessage(MaplePacketCreator.spawnNPC(npc)); + } + } + } + } + } + + public void setMobInterval(short interval) { + this.mobInterval = interval; + } + + public short getMobInterval() { + return mobInterval; + } +} diff --git a/src/server/maps/MapleMapEffect.java b/src/server/maps/MapleMapEffect.java new file mode 100644 index 0000000000..a1f49891b1 --- /dev/null +++ b/src/server/maps/MapleMapEffect.java @@ -0,0 +1,48 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import client.MapleClient; +import tools.MaplePacketCreator; + +public class MapleMapEffect { + private String msg; + private int itemId; + private boolean active = true; + + public MapleMapEffect(String msg, int itemId) { + this.msg = msg; + this.itemId = itemId; + } + + public final byte[] makeDestroyData() { + return MaplePacketCreator.removeMapEffect(); + } + + public final byte[] makeStartData() { + return MaplePacketCreator.startMapEffect(msg, itemId, active); + } + + public void sendStartData(MapleClient client) { + client.announce(makeStartData()); + } +} diff --git a/src/server/maps/MapleMapFactory.java b/src/server/maps/MapleMapFactory.java new file mode 100644 index 0000000000..6f2ede7901 --- /dev/null +++ b/src/server/maps/MapleMapFactory.java @@ -0,0 +1,301 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.maps; + +import java.awt.Point; +import java.awt.Rectangle; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataTool; +import server.PortalFactory; +import server.life.AbstractLoadedMapleLife; +import server.life.MapleLifeFactory; +import server.life.MapleMonster; +import tools.DatabaseConnection; +import tools.StringUtil; + +public class MapleMapFactory { + + private MapleDataProvider source; + private MapleData nameData; + private Map maps = new HashMap<>(); + private int channel, world; + + public MapleMapFactory(MapleDataProvider source, MapleDataProvider stringSource, int world, int channel) { + this.source = source; + this.nameData = stringSource.getData("Map.img"); + this.world = world; + this.channel = channel; + } + + public MapleMap getMap(int mapid) { + Integer omapid = Integer.valueOf(mapid); + MapleMap map = maps.get(omapid); + if (map == null) { + synchronized (this) { + map = maps.get(omapid); + if (map != null) { + return map; + } + String mapName = getMapName(mapid); + MapleData mapData = source.getData(mapName); + String link = MapleDataTool.getString(mapData.getChildByPath("info/link"), ""); + if (!link.equals("")) { //nexon made hundreds of dojo maps so to reduce the size they added links. + mapName = getMapName(Integer.parseInt(link)); + mapData = source.getData(mapName); + } + float monsterRate = 0; + MapleData mobRate = mapData.getChildByPath("info/mobRate"); + if (mobRate != null) { + monsterRate = ((Float) mobRate.getData()).floatValue(); + } + map = new MapleMap(mapid, world, channel, MapleDataTool.getInt("info/returnMap", mapData), monsterRate); + + String onFirstEnter = MapleDataTool.getString(mapData.getChildByPath("info/onFirstUserEnter"), String.valueOf(mapid)); + map.setOnFirstUserEnter(onFirstEnter.equals("") ? String.valueOf(mapid) : onFirstEnter); + + String onEnter = MapleDataTool.getString(mapData.getChildByPath("info/onUserEnter"), String.valueOf(mapid)); + map.setOnUserEnter(onEnter.equals("") ? String.valueOf(mapid) : onEnter); + + map.setFieldLimit(MapleDataTool.getInt(mapData.getChildByPath("info/fieldLimit"), 0)); + map.setMobInterval((short) MapleDataTool.getInt(mapData.getChildByPath("info/createMobInterval"), 5000)); + PortalFactory portalFactory = new PortalFactory(); + for (MapleData portal : mapData.getChildByPath("portal")) { + map.addPortal(portalFactory.makePortal(MapleDataTool.getInt(portal.getChildByPath("pt")), portal)); + } + MapleData timeMob = mapData.getChildByPath("info/timeMob"); + if (timeMob != null) { + map.timeMob(MapleDataTool.getInt(timeMob.getChildByPath("id")), + MapleDataTool.getString(timeMob.getChildByPath("message"))); + } + + List allFootholds = new LinkedList<>(); + Point lBound = new Point(); + Point uBound = new Point(); + for (MapleData footRoot : mapData.getChildByPath("foothold")) { + for (MapleData footCat : footRoot) { + for (MapleData footHold : footCat) { + int x1 = MapleDataTool.getInt(footHold.getChildByPath("x1")); + int y1 = MapleDataTool.getInt(footHold.getChildByPath("y1")); + int x2 = MapleDataTool.getInt(footHold.getChildByPath("x2")); + int y2 = MapleDataTool.getInt(footHold.getChildByPath("y2")); + MapleFoothold fh = new MapleFoothold(new Point(x1, y1), new Point(x2, y2), Integer.parseInt(footHold.getName())); + fh.setPrev(MapleDataTool.getInt(footHold.getChildByPath("prev"))); + fh.setNext(MapleDataTool.getInt(footHold.getChildByPath("next"))); + if (fh.getX1() < lBound.x) { + lBound.x = fh.getX1(); + } + if (fh.getX2() > uBound.x) { + uBound.x = fh.getX2(); + } + if (fh.getY1() < lBound.y) { + lBound.y = fh.getY1(); + } + if (fh.getY2() > uBound.y) { + uBound.y = fh.getY2(); + } + allFootholds.add(fh); + } + } + } + MapleFootholdTree fTree = new MapleFootholdTree(lBound, uBound); + for (MapleFoothold fh : allFootholds) { + fTree.insert(fh); + } + map.setFootholds(fTree); + if (mapData.getChildByPath("area") != null) { + for (MapleData area : mapData.getChildByPath("area")) { + int x1 = MapleDataTool.getInt(area.getChildByPath("x1")); + int y1 = MapleDataTool.getInt(area.getChildByPath("y1")); + int x2 = MapleDataTool.getInt(area.getChildByPath("x2")); + int y2 = MapleDataTool.getInt(area.getChildByPath("y2")); + map.addMapleArea(new Rectangle(x1, y1, (x2 - x1), (y2 - y1))); + } + } + try { try (PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT * FROM playernpcs WHERE map = ?")) { + ps.setInt(1, omapid); + try (ResultSet rs = ps.executeQuery()) { + while (rs.next()) { + map.addMapObject(new PlayerNPCs(rs)); + } + } + } + } catch (Exception e) { + } + for (MapleData life : mapData.getChildByPath("life")) { + String id = MapleDataTool.getString(life.getChildByPath("id")); + String type = MapleDataTool.getString(life.getChildByPath("type")); + if (id.equals("9001105")) { + id = "9001108";//soz + } + AbstractLoadedMapleLife myLife = loadLife(life, id, type); + if (myLife instanceof MapleMonster) { + MapleMonster monster = (MapleMonster) myLife; + int mobTime = MapleDataTool.getInt("mobTime", life, 0); + int team = MapleDataTool.getInt("team", life, -1); + if (mobTime == -1) { //does not respawn, force spawn once + map.spawnMonster(monster); + } else { + map.addMonsterSpawn(monster, mobTime, team); + } + } else { + map.addMapObject(myLife); + } + } + if (mapData.getChildByPath("reactor") != null) { + for (MapleData reactor : mapData.getChildByPath("reactor")) { + String id = MapleDataTool.getString(reactor.getChildByPath("id")); + if (id != null) { + MapleReactor newReactor = loadReactor(reactor, id); + map.spawnReactor(newReactor); + } + } + } + try { + map.setMapName(MapleDataTool.getString("mapName", nameData.getChildByPath(getMapStringName(omapid)), "")); + map.setStreetName(MapleDataTool.getString("streetName", nameData.getChildByPath(getMapStringName(omapid)), "")); + } catch (Exception e) { + map.setMapName(""); + map.setStreetName(""); + } + + map.setClock(mapData.getChildByPath("clock") != null); + map.setEverlast(mapData.getChildByPath("everlast") != null); + map.setTown(mapData.getChildByPath("info/town") != null); + map.setHPDec(MapleDataTool.getIntConvert("info/decHP", mapData, 0)); + map.setHPDecProtect(MapleDataTool.getIntConvert("info/protectItem", mapData, 0)); + map.setForcedReturnMap(MapleDataTool.getInt(mapData.getChildByPath("info/forcedReturn"), 999999999)); + map.setBoat(mapData.getChildByPath("shipObj") != null); + map.setTimeLimit(MapleDataTool.getIntConvert("timeLimit", mapData.getChildByPath("info"), -1)); + map.setFieldType(MapleDataTool.getIntConvert("info/fieldType", mapData, 0)); + map.setMobCapacity(MapleDataTool.getIntConvert("fixedMobCapacity", mapData.getChildByPath("info"), 500));//Is there a map that contains more than 500 mobs? + + HashMap backTypes = new HashMap<>(); + try { + for (MapleData layer : mapData.getChildByPath("back")) { // yolo + int layerNum = Integer.parseInt(layer.getName()); + int type = MapleDataTool.getInt(layer.getChildByPath("type"), 0); + + backTypes.put(layerNum, type); + } + } catch (Exception e) { + e.printStackTrace(); + // swallow cause I'm cool + } + map.setBackgroundTypes(backTypes); + + maps.put(omapid, map); + } + } + return map; + } + + public boolean isMapLoaded(int mapId) { + return maps.containsKey(mapId); + } + + private AbstractLoadedMapleLife loadLife(MapleData life, String id, String type) { + AbstractLoadedMapleLife myLife = MapleLifeFactory.getLife(Integer.parseInt(id), type); + myLife.setCy(MapleDataTool.getInt(life.getChildByPath("cy"))); + MapleData dF = life.getChildByPath("f"); + if (dF != null) { + myLife.setF(MapleDataTool.getInt(dF)); + } + myLife.setFh(MapleDataTool.getInt(life.getChildByPath("fh"))); + myLife.setRx0(MapleDataTool.getInt(life.getChildByPath("rx0"))); + myLife.setRx1(MapleDataTool.getInt(life.getChildByPath("rx1"))); + int x = MapleDataTool.getInt(life.getChildByPath("x")); + int y = MapleDataTool.getInt(life.getChildByPath("y")); + myLife.setPosition(new Point(x, y)); + int hide = MapleDataTool.getInt("hide", life, 0); + if (hide == 1) { + myLife.setHide(true); + } + return myLife; + } + + private MapleReactor loadReactor(MapleData reactor, String id) { + MapleReactor myReactor = new MapleReactor(MapleReactorFactory.getReactor(Integer.parseInt(id)), Integer.parseInt(id)); + int x = MapleDataTool.getInt(reactor.getChildByPath("x")); + int y = MapleDataTool.getInt(reactor.getChildByPath("y")); + myReactor.setPosition(new Point(x, y)); + myReactor.setDelay(MapleDataTool.getInt(reactor.getChildByPath("reactorTime")) * 1000); + myReactor.setState((byte) 0); + myReactor.setName(MapleDataTool.getString(reactor.getChildByPath("name"), "")); + return myReactor; + } + + private String getMapName(int mapid) { + String mapName = StringUtil.getLeftPaddedStr(Integer.toString(mapid), '0', 9); + StringBuilder builder = new StringBuilder("Map/Map"); + int area = mapid / 100000000; + builder.append(area); + builder.append("/"); + builder.append(mapName); + builder.append(".img"); + mapName = builder.toString(); + return mapName; + } + + private String getMapStringName(int mapid) { + StringBuilder builder = new StringBuilder(); + if (mapid < 100000000) { + builder.append("maple"); + } else if (mapid >= 100000000 && mapid < 200000000) { + builder.append("victoria"); + } else if (mapid >= 200000000 && mapid < 300000000) { + builder.append("ossyria"); + } else if (mapid >= 540000000 && mapid < 551030200) { + builder.append("singapore"); + } else if (mapid >= 600000000 && mapid < 620000000) { + builder.append("MasteriaGL"); + } else if (mapid >= 670000000 && mapid < 682000000) { + builder.append("weddingGL"); + } else if (mapid >= 682000000 && mapid < 683000000) { + builder.append("HalloweenGL"); + } else if (mapid >= 800000000 && mapid < 900000000) { + builder.append("jp"); + } else { + builder.append("etc"); + } + builder.append("/").append(mapid); + return builder.toString(); + } + + public void setChannel(int channel) { + this.channel = channel; + } + + public void setWorld(int world) { + this.channel = world; + } + + public Map getMaps() { + return maps; + } +} diff --git a/src/server/maps/MapleMapItem.java b/src/server/maps/MapleMapItem.java new file mode 100644 index 0000000000..36f435e231 --- /dev/null +++ b/src/server/maps/MapleMapItem.java @@ -0,0 +1,138 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import client.MapleCharacter; +import client.MapleClient; +import client.inventory.Item; +import java.awt.Point; +import java.util.concurrent.locks.ReentrantLock; +import tools.MaplePacketCreator; + +public class MapleMapItem extends AbstractMapleMapObject { + + protected Item item; + protected MapleMapObject dropper; + protected int character_ownerid, meso, questid = -1; + protected byte type; + protected boolean pickedUp = false, playerDrop; + protected long dropTime; + public ReentrantLock itemLock = new ReentrantLock(); + + public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, byte type, boolean playerDrop) { + setPosition(position); + this.item = item; + this.dropper = dropper; + this.character_ownerid = owner.getId(); + this.meso = 0; + this.type = type; + this.playerDrop = playerDrop; + } + + public MapleMapItem(Item item, Point position, MapleMapObject dropper, MapleCharacter owner, byte type, boolean playerDrop, int questid) { + setPosition(position); + this.item = item; + this.dropper = dropper; + this.character_ownerid = owner.getParty() == null ? owner.getId() : owner.getPartyId(); + this.meso = 0; + this.type = type; + this.playerDrop = playerDrop; + this.questid = questid; + } + + public MapleMapItem(int meso, Point position, MapleMapObject dropper, MapleCharacter owner, byte type, boolean playerDrop) { + setPosition(position); + this.item = null; + this.dropper = dropper; + this.character_ownerid = owner.getParty() == null ? owner.getId() : owner.getPartyId(); + this.meso = meso; + this.type = type; + this.playerDrop = playerDrop; + } + + public final Item getItem() { + return item; + } + + public final int getQuest() { + return questid; + } + + public final int getItemId() { + if (getMeso() > 0) { + return meso; + } + return item.getItemId(); + } + + public final MapleMapObject getDropper() { + return dropper; + } + + public final int getOwner() { + return character_ownerid; + } + + public final int getMeso() { + return meso; + } + + public final boolean isPlayerDrop() { + return playerDrop; + } + + public final boolean isPickedUp() { + return pickedUp; + } + + public void setPickedUp(final boolean pickedUp) { + this.pickedUp = pickedUp; + } + + public long getDropTime() { + return dropTime; + } + + public void setDropTime(long time) { + this.dropTime = time; + } + + public byte getDropType() { + return type; + } + + @Override + public final MapleMapObjectType getType() { + return MapleMapObjectType.ITEM; + } + + @Override + public void sendSpawnData(final MapleClient client) { + if (questid <= 0 || (client.getPlayer().getQuestStatus(questid) == 1 && client.getPlayer().needQuestItem(questid, item.getItemId()))) { + client.announce(MaplePacketCreator.dropItemFromMapObject(this, null, getPosition(), (byte) 2)); + } + } + + @Override + public void sendDestroyData(final MapleClient client) { + client.announce(MaplePacketCreator.removeItemFromMap(getObjectId(), 1, 0)); + } +} \ No newline at end of file diff --git a/src/server/maps/MapleMapObject.java b/src/server/maps/MapleMapObject.java new file mode 100644 index 0000000000..70c12b3e2d --- /dev/null +++ b/src/server/maps/MapleMapObject.java @@ -0,0 +1,36 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; +import client.MapleClient; + +public interface MapleMapObject { + public int getObjectId(); + public void setObjectId(int id); + public MapleMapObjectType getType(); + public Point getPosition(); + public void setPosition(Point position); + public void sendSpawnData(MapleClient client); + public void sendDestroyData(MapleClient client); + public void nullifyPosition(); +} \ No newline at end of file diff --git a/src/server/maps/MapleMapObjectType.java b/src/server/maps/MapleMapObjectType.java new file mode 100644 index 0000000000..4d3e1ea3a3 --- /dev/null +++ b/src/server/maps/MapleMapObjectType.java @@ -0,0 +1,26 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public enum MapleMapObjectType { + NPC, MONSTER, ITEM, PLAYER, DOOR, SUMMON, SHOP, MINI_GAME, MIST, REACTOR, HIRED_MERCHANT, PLAYER_NPC, DRAGON; +} diff --git a/src/server/maps/MapleMapPortal.java b/src/server/maps/MapleMapPortal.java new file mode 100644 index 0000000000..5e73f96258 --- /dev/null +++ b/src/server/maps/MapleMapPortal.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import server.MaplePortal; + +public class MapleMapPortal extends MapleGenericPortal { + public MapleMapPortal() { + super(MaplePortal.MAP_PORTAL); + } +} diff --git a/src/server/maps/MapleMiniDungeon.java b/src/server/maps/MapleMiniDungeon.java new file mode 100644 index 0000000000..b702b62ec3 --- /dev/null +++ b/src/server/maps/MapleMiniDungeon.java @@ -0,0 +1,86 @@ +package server.maps; + +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ + + +/** + * + * @author SharpAceX(Alan) + */ + +public enum MapleMiniDungeon { + + //http://bbb.hidden-street.net/search_finder/mini%20dungeon + + CAVE_OF_MUSHROOMS(105050100, 105050101, 30), + GOLEM_CASTLE_RUINS(105040304, 105040320, 34), + HILL_OF_SANDSTORMS(260020600, 260020630, 30), + HENESYS_PIG_FARM(100020000, 100020100, 30), + DRAKES_BLUE_CAVE(105090311, 105090320, 30), + DRUMMER_BUNNYS_LAIR(221023400, 221023401, 30), + THE_ROUND_TABLE_OF_KENTARUS(240020500, 240020512, 30), + THE_RESTORING_MEMORY(240040511, 240040800, 19), + NEWT_SECURED_ZONE(240040520, 240040900, 19), + PILLAGE_OF_TREASURE_ISLAND(251010402, 251010410, 30), + ; + + private int baseId; + private int dungeonId; + private int dungeons; + + private MapleMiniDungeon(int baseId, int dungeonId, int dungeons) { + this.baseId = baseId; + this.dungeonId = dungeonId; + this.dungeons = dungeons; + } + + public int getBase() { + return baseId; + } + + public int getDungeonId() { + return dungeonId; + } + + public int getDungeons() { + return dungeons; + } + + public static boolean isDungeonMap(int map){ + for (MapleMiniDungeon dungeon : MapleMiniDungeon.values()){ + if (map >= dungeon.getDungeonId() && map <= dungeon.getDungeonId() + dungeon.getDungeons()){ + return true; + } + } + return false; + } + + public static MapleMiniDungeon getDungeon(int map){ + for (MapleMiniDungeon dungeon : MapleMiniDungeon.values()){ + if (map >= dungeon.getDungeonId() && map <= dungeon.getDungeonId() + dungeon.getDungeons()){ + return dungeon; + } + } + return null; + } +} diff --git a/src/server/maps/MapleMist.java b/src/server/maps/MapleMist.java new file mode 100644 index 0000000000..407267c29f --- /dev/null +++ b/src/server/maps/MapleMist.java @@ -0,0 +1,166 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import client.MapleCharacter; +import client.MapleClient; +import client.Skill; +import client.SkillFactory; + +import java.awt.Point; +import java.awt.Rectangle; + +import constants.skills.BlazeWizard; +import constants.skills.Evan; +import constants.skills.FPMage; +import constants.skills.NightWalker; +import constants.skills.Shadower; +import server.MapleStatEffect; +import server.life.MapleMonster; +import server.life.MobSkill; +import tools.MaplePacketCreator; + +/** + * + * @author LaiLaiNoob + */ +public class MapleMist extends AbstractMapleMapObject { + private Rectangle mistPosition; + private MapleCharacter owner = null; + private MapleMonster mob = null; + private MapleStatEffect source; + private MobSkill skill; + private boolean isMobMist, isPoisonMist, isRecoveryMist; + private int skillDelay; + + public MapleMist(Rectangle mistPosition, MapleMonster mob, MobSkill skill) { + this.mistPosition = mistPosition; + this.mob = mob; + this.skill = skill; + isMobMist = true; + isPoisonMist = true; + isRecoveryMist = false; + skillDelay = 0; + } + + public MapleMist(Rectangle mistPosition, MapleCharacter owner, MapleStatEffect source) { + this.mistPosition = mistPosition; + this.owner = owner; + this.source = source; + this.skillDelay = 8; + this.isMobMist = false; + this.isRecoveryMist = false; + this.isPoisonMist = false; + switch (source.getSourceId()) { + case Evan.RECOVERY_AURA: + isRecoveryMist = true; + break; + case Shadower.SMOKE_SCREEN: // Smoke Screen + isPoisonMist = false; + break; + case FPMage.POISON_MIST: // FP mist + case BlazeWizard.FLAME_GEAR: // Flame Gear + case NightWalker.POISON_BOMB: // Poison Bomb + isPoisonMist = true; + break; + } + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.MIST; + } + + @Override + public Point getPosition() { + return mistPosition.getLocation(); + } + + public Skill getSourceSkill() { + return SkillFactory.getSkill(source.getSourceId()); + } + + public boolean isMobMist() { + return isMobMist; + } + + public boolean isPoisonMist() { + return isPoisonMist; + } + + public boolean isRecoveryMist() { + return isRecoveryMist; + } + + public int getSkillDelay() { + return skillDelay; + } + + public MapleMonster getMobOwner() { + return mob; + } + + public MapleCharacter getOwner() { + return owner; + } + + public Rectangle getBox() { + return mistPosition; + } + + @Override + public void setPosition(Point position) { + throw new UnsupportedOperationException(); + } + + public final byte[] makeDestroyData() { + return MaplePacketCreator.removeMist(getObjectId()); + } + + public final byte[] makeSpawnData() { + if (owner != null) { + return MaplePacketCreator.spawnMist(getObjectId(), owner.getId(), getSourceSkill().getId(), owner.getSkillLevel(SkillFactory.getSkill(source.getSourceId())), this); + } + return MaplePacketCreator.spawnMist(getObjectId(), mob.getId(), skill.getSkillId(), skill.getSkillLevel(), this); + } + + public final byte[] makeFakeSpawnData(int level) { + if (owner != null) { + return MaplePacketCreator.spawnMist(getObjectId(), owner.getId(), getSourceSkill().getId(), level, this); + } + return MaplePacketCreator.spawnMist(getObjectId(), mob.getId(), skill.getSkillId(), skill.getSkillLevel(), this); + } + + @Override + public void sendSpawnData(MapleClient client) { + client.announce(makeSpawnData()); + } + + @Override + public void sendDestroyData(MapleClient client) { + client.announce(makeDestroyData()); + } + + public boolean makeChanceResult() { + return source.makeChanceResult(); + } +} diff --git a/src/server/maps/MapleReactor.java b/src/server/maps/MapleReactor.java new file mode 100644 index 0000000000..0b4d04d23d --- /dev/null +++ b/src/server/maps/MapleReactor.java @@ -0,0 +1,204 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import client.MapleClient; +import constants.ServerConstants; + +import java.awt.Rectangle; +import java.util.List; + +import scripting.reactor.ReactorScriptManager; +import server.TimerManager; +import tools.MaplePacketCreator; +import tools.Pair; + +/** + * + * @author Lerk + */ +public class MapleReactor extends AbstractMapleMapObject { + private int rid; + private MapleReactorStats stats; + private byte state; + private int delay; + private MapleMap map; + private String name; + private boolean timerActive; + private boolean alive; + + public MapleReactor(MapleReactorStats stats, int rid) { + this.stats = stats; + this.rid = rid; + alive = true; + } + + public void setTimerActive(boolean active) { + this.timerActive = active; + } + + public boolean isTimerActive() { + return timerActive; + } + + public void setState(byte state) { + this.state = state; + } + + public byte getState() { + return state; + } + + public int getId() { + return rid; + } + + public void setDelay(int delay) { + this.delay = delay; + } + + public int getDelay() { + return delay; + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.REACTOR; + } + + public int getReactorType() { + return stats.getType(state); + } + + public void setMap(MapleMap map) { + this.map = map; + } + + public MapleMap getMap() { + return map; + } + + public Pair getReactItem(byte index) { + return stats.getReactItem(state, index); + } + + public boolean isAlive() { + return alive; + } + + public void setAlive(boolean alive) { + this.alive = alive; + } + + @Override + public void sendDestroyData(MapleClient client) { + client.announce(makeDestroyData()); + } + + public final byte[] makeDestroyData() { + return MaplePacketCreator.destroyReactor(this); + } + + @Override + public void sendSpawnData(MapleClient client) { + client.announce(makeSpawnData()); + } + + public final byte[] makeSpawnData() { + return MaplePacketCreator.spawnReactor(this); + } + + public void forceHitReactor(final byte newState) { + setState((byte) newState); + setTimerActive(false); + map.broadcastMessage(MaplePacketCreator.triggerReactor(this, (short) 0)); + } + + public void delayedHitReactor(final MapleClient c, long delay) { + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + hitReactor(c); + } + }, delay); + } + + public void hitReactor(MapleClient c) { + hitReactor(0, (short) 0, 0, c); + } + + public synchronized void hitReactor(int charPos, short stance, int skillid, MapleClient c) { + try { + if(!this.isAlive()) { + return; + } + if(ServerConstants.USE_DEBUG == true) c.getPlayer().dropMessage(5, "Hitted REACTOR " + this.getId()); + if (stats.getType(state) < 999 && stats.getType(state) != -1) {//type 2 = only hit from right (kerning swamp plants), 00 is air left 02 is ground left + if (!(stats.getType(state) == 2 && (charPos == 0 || charPos == 2))) { //get next state + for (byte b = 0; b < stats.getStateSize(state); b++) {//YAY? + List activeSkills = stats.getActiveSkills(state, b); + if (activeSkills != null) { + if (!activeSkills.contains(skillid)) continue; + } + state = stats.getNextState(state, b); + if (stats.getNextState(state, b) == -1) {//end of reactor + if (stats.getType(state) < 100) {//reactor broken + if (delay > 0) { + map.destroyReactor(getObjectId()); + } else {//trigger as normal + map.broadcastMessage(MaplePacketCreator.triggerReactor(this, stance)); + } + } else {//item-triggered on final step + map.broadcastMessage(MaplePacketCreator.triggerReactor(this, stance)); + } + ReactorScriptManager.getInstance().act(c, this); + } else { //reactor not broken yet + map.broadcastMessage(MaplePacketCreator.triggerReactor(this, stance)); + if (state == stats.getNextState(state, b)) {//current state = next state, looping reactor + ReactorScriptManager.getInstance().act(c, this); + } + } + break; + } + } + } else { + state++; + map.broadcastMessage(MaplePacketCreator.triggerReactor(this, stance)); + ReactorScriptManager.getInstance().act(c, this); + } + } catch(Exception e) { + e.printStackTrace(); + } + } + + public Rectangle getArea() { + return new Rectangle(getPosition().x + stats.getTL().x, getPosition().y + stats.getTL().y, stats.getBR().x - stats.getTL().x, stats.getBR().y - stats.getTL().y); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/server/maps/MapleReactorFactory.java b/src/server/maps/MapleReactorFactory.java new file mode 100644 index 0000000000..4231c82006 --- /dev/null +++ b/src/server/maps/MapleReactorFactory.java @@ -0,0 +1,112 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import server.maps.MapleReactorStats.StateData; +import tools.Pair; +import tools.StringUtil; + +public class MapleReactorFactory { + private static MapleDataProvider data = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Reactor.wz")); + private static Map reactorStats = new HashMap(); + + public static MapleReactorStats getReactor(int rid) { + MapleReactorStats stats = reactorStats.get(Integer.valueOf(rid)); + if (stats == null) { + int infoId = rid; + MapleData reactorData = data.getData(StringUtil.getLeftPaddedStr(Integer.toString(infoId) + ".img", '0', 11)); + MapleData link = reactorData.getChildByPath("info/link"); + if (link != null) { + infoId = MapleDataTool.getIntConvert("info/link", reactorData); + stats = reactorStats.get(Integer.valueOf(infoId)); + } + MapleData activateOnTouch = reactorData.getChildByPath("info/activateByTouch"); + boolean loadArea = false; + if (activateOnTouch != null) { + loadArea = MapleDataTool.getInt("info/activateByTouch", reactorData, 0) != 0; + } + if (stats == null) { + reactorData = data.getData(StringUtil.getLeftPaddedStr(Integer.toString(infoId) + ".img", '0', 11)); + MapleData reactorInfoData = reactorData.getChildByPath("0"); + stats = new MapleReactorStats(); + List statedatas = new ArrayList(); + if (reactorInfoData != null) { + boolean areaSet = false; + byte i = 0; + while (reactorInfoData != null) { + MapleData eventData = reactorInfoData.getChildByPath("event"); + if (eventData != null) { + for (MapleData fknexon : eventData.getChildren()) { + if (fknexon.getName().equals("timeOut")) continue; + Pair reactItem = null; + int type = MapleDataTool.getIntConvert("type", fknexon); + if (type == 100) { //reactor waits for item + reactItem = new Pair(MapleDataTool.getIntConvert("0", fknexon), MapleDataTool.getIntConvert("1", fknexon)); + if (!areaSet || loadArea) { //only set area of effect for item-triggered reactors once + stats.setTL(MapleDataTool.getPoint("lt", fknexon)); + stats.setBR(MapleDataTool.getPoint("rb", fknexon)); + areaSet = true; + } + } + MapleData activeSkillID = fknexon.getChildByPath("activeSkillID"); + List skillids = null; + if (activeSkillID != null) { + skillids = new ArrayList(); + for (MapleData skill : activeSkillID.getChildren()) { + skillids.add(MapleDataTool.getInt(skill)); + } + } + byte nextState = (byte) MapleDataTool.getIntConvert("state", fknexon); + statedatas.add(new StateData(type, reactItem, skillids, nextState)); + } + stats.addState(i, statedatas); + } + i++; + reactorInfoData = reactorData.getChildByPath(Byte.toString(i)); + statedatas = new ArrayList(); + } + } else //sit there and look pretty; likely a reactor such as Zakum/Papulatus doors that shows if player can enter + { + statedatas.add(new StateData(999, null, null, (byte) 0)); + stats.addState((byte) 0, statedatas); + } + reactorStats.put(Integer.valueOf(infoId), stats); + if (rid != infoId) { + reactorStats.put(Integer.valueOf(rid), stats); + } + } else // stats exist at infoId but not rid; add to map + { + reactorStats.put(Integer.valueOf(rid), stats); + } + } + return stats; + } +} diff --git a/src/server/maps/MapleReactorStats.java b/src/server/maps/MapleReactorStats.java new file mode 100644 index 0000000000..af0c02e567 --- /dev/null +++ b/src/server/maps/MapleReactorStats.java @@ -0,0 +1,129 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import tools.Pair; + +/** + * @author Lerk + */ +public class MapleReactorStats { + private Point tl; + private Point br; + private Map> stateInfo = new HashMap>(); + + public void setTL(Point tl) { + this.tl = tl; + } + + public void setBR(Point br) { + this.br = br; + } + + public Point getTL() { + return tl; + } + + public Point getBR() { + return br; + } + + public void addState(byte state, List data) { + stateInfo.put(state, data); + } + + public byte getStateSize(byte state) { + return (byte) stateInfo.get(state).size(); + } + + public byte getNextState(byte state, byte index) { + if (stateInfo.get(state) == null || stateInfo.get(state).size() < (index + 1)) return -1; + StateData nextState = stateInfo.get(state).get(index); + if (nextState != null) { + return nextState.getNextState(); + } else { + return -1; + } + } + + public List getActiveSkills(byte state, byte index) { + StateData nextState = stateInfo.get(state).get(index); + if (nextState != null) { + return nextState.getActiveSkills(); + } else { + return null; + } + } + + public int getType(byte state) { + List list = stateInfo.get(state); + if (list != null) { + return list.get(0).getType(); + } else { + return -1; + } + } + + public Pair getReactItem(byte state, byte index) { + StateData nextState = stateInfo.get(state).get(index); + if (nextState != null) { + return nextState.getReactItem(); + } else { + return null; + } + } + + + public static class StateData { + private int type; + private Pair reactItem; + private List activeSkills; + private byte nextState; + + public StateData(int type, Pair reactItem, List activeSkills, byte nextState) { + this.type = type; + this.reactItem = reactItem; + this.activeSkills = activeSkills; + this.nextState = nextState; + } + + private int getType() { + return type; + } + + private byte getNextState() { + return nextState; + } + + private Pair getReactItem() { + return reactItem; + } + + private List getActiveSkills() { + return activeSkills; + } + } +} diff --git a/src/server/maps/MapleSummon.java b/src/server/maps/MapleSummon.java new file mode 100644 index 0000000000..d5d0c6175b --- /dev/null +++ b/src/server/maps/MapleSummon.java @@ -0,0 +1,101 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; +import client.MapleCharacter; +import client.MapleClient; +import client.SkillFactory; +import tools.MaplePacketCreator; + +/** + * + * @author Jan + */ +public class MapleSummon extends AbstractAnimatedMapleMapObject { + private MapleCharacter owner; + private byte skillLevel; + private int skill, hp; + private SummonMovementType movementType; + + public MapleSummon(MapleCharacter owner, int skill, Point pos, SummonMovementType movementType) { + this.owner = owner; + this.skill = skill; + this.skillLevel = owner.getSkillLevel(SkillFactory.getSkill(skill)); + if (skillLevel == 0) throw new RuntimeException(); + + this.movementType = movementType; + setPosition(pos); + } + + public void sendSpawnData(MapleClient client) { + if (this != null) client.announce(MaplePacketCreator.spawnSummon(this, false)); + + } + + public void sendDestroyData(MapleClient client) { + client.announce(MaplePacketCreator.removeSummon(this, true)); + } + + public MapleCharacter getOwner() { + return owner; + } + + public int getSkill() { + return skill; + } + + public int getHP() { + return hp; + } + + public void addHP(int delta) { + this.hp += delta; + } + + public SummonMovementType getMovementType() { + return movementType; + } + + public boolean isStationary() { + return (skill == 3111002 || skill == 3211002 || skill == 5211001 || skill == 13111004); + } + + public byte getSkillLevel() { + return skillLevel; + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.SUMMON; + } + + public final boolean isPuppet() { + switch (skill) { + case 3111002: + case 3211002: + case 13111004: + return true; + } + return false; + } +} diff --git a/src/server/maps/MapleTVEffect.java b/src/server/maps/MapleTVEffect.java new file mode 100644 index 0000000000..6a01fd4277 --- /dev/null +++ b/src/server/maps/MapleTVEffect.java @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.maps; + +import client.MapleCharacter; +import java.util.ArrayList; +import java.util.List; +import net.server.Server; +import server.TimerManager; +import tools.MaplePacketCreator; + +/* + * MapleTVEffect + * @author MrXotic + */ +public class MapleTVEffect { + + private static boolean ACTIVE; + + private List message = new ArrayList<>(5); + private MapleCharacter user; + private int type; + private MapleCharacter partner; + + public MapleTVEffect(MapleCharacter u, MapleCharacter p, List msg, int t) { + this.message = msg; + this.user = u; + this.type = t; + this.partner = p; + broadcastTV(true); + } + + public static boolean isActive(){ + return ACTIVE; + } + + private void broadcastTV(boolean activity) { + Server server = Server.getInstance(); + ACTIVE = activity; + if (ACTIVE) { + server.broadcastMessage(MaplePacketCreator.enableTV()); + server.broadcastMessage(MaplePacketCreator.sendTV(user, message, type <= 2 ? type : type - 3, partner)); + int delay = 15000; + if (type == 4) { + delay = 30000; + } else if (type == 5) { + delay = 60000; + } + TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + broadcastTV(false); + } + }, delay); + } else { + server.broadcastMessage(MaplePacketCreator.removeTV()); + } + } +} diff --git a/src/server/maps/PlayerNPCs.java b/src/server/maps/PlayerNPCs.java new file mode 100644 index 0000000000..7b8037ec43 --- /dev/null +++ b/src/server/maps/PlayerNPCs.java @@ -0,0 +1,124 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +import java.awt.Point; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.HashMap; +import java.util.Map; +import client.MapleClient; +import java.sql.SQLException; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +/** + * + * @author XoticStory + */ +public class PlayerNPCs extends AbstractMapleMapObject { + private Map equips = new HashMap(); + private int npcId, face, hair; + private byte skin; + private String name = ""; + private int FH, RX0, RX1, CY; + + public PlayerNPCs(ResultSet rs) { + try { + CY = rs.getInt("cy"); + name = rs.getString("name"); + hair = rs.getInt("hair"); + face = rs.getInt("face"); + skin = rs.getByte("skin"); + FH = rs.getInt("Foothold"); + RX0 = rs.getInt("rx0"); + RX1 = rs.getInt("rx1"); + npcId = rs.getInt("ScriptId"); + setPosition(new Point(rs.getInt("x"), CY)); + PreparedStatement ps = DatabaseConnection.getConnection().prepareStatement("SELECT equippos, equipid FROM playernpcs_equip WHERE NpcId = ?"); + ps.setInt(1, rs.getInt("id")); + ResultSet rs2 = ps.executeQuery(); + while (rs2.next()) { + equips.put(rs2.getShort("equippos"), rs2.getInt("equipid")); + } + rs2.close(); + ps.close(); + } catch (SQLException e) { + } + } + + public Map getEquips() { + return equips; + } + + public int getId() { + return npcId; + } + + public int getFH() { + return FH; + } + + public int getRX0() { + return RX0; + } + + public int getRX1() { + return RX1; + } + + public int getCY() { + return CY; + } + + public byte getSkin() { + return skin; + } + + public String getName() { + return name; + } + + public int getFace() { + return face; + } + + public int getHair() { + return hair; + } + + @Override + public void sendDestroyData(MapleClient client) { + return; + } + + @Override + public MapleMapObjectType getType() { + return MapleMapObjectType.PLAYER_NPC; + } + + @Override + public void sendSpawnData(MapleClient client) { + client.announce(MaplePacketCreator.spawnPlayerNPC(this)); + client.announce(MaplePacketCreator.getPlayerNPC(this)); + } +} \ No newline at end of file diff --git a/src/server/maps/ReactorDropEntry.java b/src/server/maps/ReactorDropEntry.java new file mode 100644 index 0000000000..99f48ed5fa --- /dev/null +++ b/src/server/maps/ReactorDropEntry.java @@ -0,0 +1,32 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public class ReactorDropEntry { + + public ReactorDropEntry(int itemId, int chance, int questId) { + this.itemId = itemId; + this.chance = chance; + this.questid = questId; + } + public int itemId, chance, questid; + public int assignedRangeStart, assignedRangeLength; +} \ No newline at end of file diff --git a/src/server/maps/SavedLocation.java b/src/server/maps/SavedLocation.java new file mode 100644 index 0000000000..eab1d823a1 --- /dev/null +++ b/src/server/maps/SavedLocation.java @@ -0,0 +1,39 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public class SavedLocation { + private int mapid = 102000000, portal; + + public SavedLocation(int mapid, int portal) { + this.mapid = mapid; + this.portal = portal; + } + + public int getMapId() { + return mapid; + } + + public int getPortal() { + return portal; + } +} diff --git a/src/server/maps/SavedLocationType.java b/src/server/maps/SavedLocationType.java new file mode 100644 index 0000000000..38059c1574 --- /dev/null +++ b/src/server/maps/SavedLocationType.java @@ -0,0 +1,37 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public enum SavedLocationType { + FREE_MARKET, + EVENT, + WORLDTOUR, + FLORINA, + INTRO, + SUNDAY_MARKET, + MIRROR, + DOJO; + + public static SavedLocationType fromString(String Str) { + return valueOf(Str); + } +} \ No newline at end of file diff --git a/src/server/maps/SummonMovementType.java b/src/server/maps/SummonMovementType.java new file mode 100644 index 0000000000..01dabcc218 --- /dev/null +++ b/src/server/maps/SummonMovementType.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.maps; + +public enum SummonMovementType { + STATIONARY(0), FOLLOW(1), CIRCLE_FOLLOW(3); + private final int val; + + private SummonMovementType(int val) { + this.val = val; + } + + public int getValue() { + return val; + } +} diff --git a/src/server/movement/AbsoluteLifeMovement.java b/src/server/movement/AbsoluteLifeMovement.java new file mode 100644 index 0000000000..452ef2435e --- /dev/null +++ b/src/server/movement/AbsoluteLifeMovement.java @@ -0,0 +1,62 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public class AbsoluteLifeMovement extends AbstractLifeMovement { + private Point pixelsPerSecond; + private int unk; + + public AbsoluteLifeMovement(int type, Point position, int duration, int newstate) { + super(type, position, duration, newstate); + } + + public Point getPixelsPerSecond() { + return pixelsPerSecond; + } + + public void setPixelsPerSecond(Point wobble) { + this.pixelsPerSecond = wobble; + } + + public int getUnk() { + return unk; + } + + public void setUnk(int unk) { + this.unk = unk; + } + + @Override + public void serialize(LittleEndianWriter lew) { + lew.write(getType()); + lew.writeShort(getPosition().x); + lew.writeShort(getPosition().y); + lew.writeShort(pixelsPerSecond.x); + lew.writeShort(pixelsPerSecond.y); + lew.writeShort(unk); + lew.write(getNewstate()); + lew.writeShort(getDuration()); + } +} diff --git a/src/server/movement/AbstractLifeMovement.java b/src/server/movement/AbstractLifeMovement.java new file mode 100644 index 0000000000..832915a155 --- /dev/null +++ b/src/server/movement/AbstractLifeMovement.java @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; + +public abstract class AbstractLifeMovement implements LifeMovement { + private Point position; + private int duration; + private int newstate, type; + + public AbstractLifeMovement(int type, Point position, int duration, int newstate) { + super(); + this.type = type; + this.position = position; + this.duration = duration; + this.newstate = newstate; + } + + @Override + public int getType() { + return this.type; + } + + @Override + public int getDuration() { + return duration; + } + + @Override + public int getNewstate() { + return newstate; + } + + @Override + public Point getPosition() { + return position; + } +} diff --git a/src/server/movement/ChairMovement.java b/src/server/movement/ChairMovement.java new file mode 100644 index 0000000000..71f0161c7a --- /dev/null +++ b/src/server/movement/ChairMovement.java @@ -0,0 +1,52 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public class ChairMovement extends AbstractLifeMovement { + private int unk; + + public ChairMovement(int type, Point position, int duration, int newstate) { + super(type, position, duration, newstate); + } + + public int getUnk() { + return unk; + } + + public void setUnk(int unk) { + this.unk = unk; + } + + @Override + public void serialize(LittleEndianWriter lew) { + lew.write(getType()); + lew.writeShort(getPosition().x); + lew.writeShort(getPosition().y); + lew.writeShort(unk); + lew.write(getNewstate()); + lew.writeShort(getDuration()); + } +} + diff --git a/src/server/movement/ChangeEquip.java b/src/server/movement/ChangeEquip.java new file mode 100644 index 0000000000..b9708b7cb9 --- /dev/null +++ b/src/server/movement/ChangeEquip.java @@ -0,0 +1,44 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public class ChangeEquip implements LifeMovementFragment { + private int wui; + + public ChangeEquip(int wui) { + this.wui = wui; + } + + @Override + public void serialize(LittleEndianWriter lew) { + lew.write(10); + lew.write(wui); + } + + @Override + public Point getPosition() { + return new Point(0, 0); + } +} diff --git a/src/server/movement/JumpDownMovement.java b/src/server/movement/JumpDownMovement.java new file mode 100644 index 0000000000..aedfb6b4dd --- /dev/null +++ b/src/server/movement/JumpDownMovement.java @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public class JumpDownMovement extends AbstractLifeMovement { + private Point pixelsPerSecond; + private int unk; + private int fh; + + public JumpDownMovement(int type, Point position, int duration, int newstate) { + super(type, position, duration, newstate); + } + + public Point getPixelsPerSecond() { + return pixelsPerSecond; + } + + public void setPixelsPerSecond(Point wobble) { + this.pixelsPerSecond = wobble; + } + + public int getUnk() { + return unk; + } + + public void setUnk(int unk) { + this.unk = unk; + } + + public int getFH() { + return fh; + } + + public void setFH(int fh) { + this.fh = fh; + } + + @Override + public void serialize(LittleEndianWriter lew) { + lew.write(getType()); + lew.writeShort(getPosition().x); + lew.writeShort(getPosition().y); + lew.writeShort(pixelsPerSecond.x); + lew.writeShort(pixelsPerSecond.y); + lew.writeShort(unk); + lew.writeShort(fh); + lew.write(getNewstate()); + lew.writeShort(getDuration()); + } +} diff --git a/src/server/movement/LifeMovement.java b/src/server/movement/LifeMovement.java new file mode 100644 index 0000000000..49b40f3121 --- /dev/null +++ b/src/server/movement/LifeMovement.java @@ -0,0 +1,31 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; + +public interface LifeMovement extends LifeMovementFragment { + Point getPosition(); + int getNewstate(); + int getDuration(); + int getType(); +} diff --git a/src/server/movement/LifeMovementFragment.java b/src/server/movement/LifeMovementFragment.java new file mode 100644 index 0000000000..cded87b7c8 --- /dev/null +++ b/src/server/movement/LifeMovementFragment.java @@ -0,0 +1,30 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public interface LifeMovementFragment { + void serialize(LittleEndianWriter lew); + Point getPosition(); +} diff --git a/src/server/movement/RelativeLifeMovement.java b/src/server/movement/RelativeLifeMovement.java new file mode 100644 index 0000000000..64283e647f --- /dev/null +++ b/src/server/movement/RelativeLifeMovement.java @@ -0,0 +1,40 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public class RelativeLifeMovement extends AbstractLifeMovement { + public RelativeLifeMovement(int type, Point position, int duration, int newstate) { + super(type, position, duration, newstate); + } + + @Override + public void serialize(LittleEndianWriter lew) { + lew.write(getType()); + lew.writeShort(getPosition().x); + lew.writeShort(getPosition().y); + lew.write(getNewstate()); + lew.writeShort(getDuration()); + } +} diff --git a/src/server/movement/TeleportMovement.java b/src/server/movement/TeleportMovement.java new file mode 100644 index 0000000000..2d70d72cf1 --- /dev/null +++ b/src/server/movement/TeleportMovement.java @@ -0,0 +1,41 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.movement; + +import java.awt.Point; +import tools.data.output.LittleEndianWriter; + +public class TeleportMovement extends AbsoluteLifeMovement { + + public TeleportMovement(int type, Point position, int newstate) { + super(type, position, 0, newstate); + } + + @Override + public void serialize(LittleEndianWriter lew) { + lew.write(getType()); + lew.writeShort(getPosition().x); + lew.writeShort(getPosition().y); + lew.writeShort(getPixelsPerSecond().x); + lew.writeShort(getPixelsPerSecond().y); + lew.write(getNewstate()); + } +} diff --git a/src/server/partyquest/MonsterCarnival.java b/src/server/partyquest/MonsterCarnival.java new file mode 100644 index 0000000000..9527dbeb0d --- /dev/null +++ b/src/server/partyquest/MonsterCarnival.java @@ -0,0 +1,172 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.partyquest; + +import client.MapleCharacter; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.concurrent.ScheduledFuture; +import server.TimerManager; +import server.maps.MapleMap; +import tools.DatabaseConnection; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 - LOST MOTIVATION >=( + */ +public class MonsterCarnival { + private MonsterCarnivalParty red, blue; + private MapleMap map; + private int room; + private long time = 0; + private long timeStarted = 0; + private ScheduledFuture schedule = null; + + public MonsterCarnival(int room, byte channel, MonsterCarnivalParty red1, MonsterCarnivalParty blue1) { + //this.map = Channel.getInstance(channel).getMapFactory().getMap(980000001 + (room * 100)); + this.room = room; + this.red = red1; + this.blue = blue1; + this.timeStarted = System.currentTimeMillis(); + this.time = 600000; + map.broadcastMessage(MaplePacketCreator.getClock((int) (time / 1000))); + + for (MapleCharacter chr : red.getMembers()) + chr.setCarnival(this); + for (MapleCharacter chr : blue.getMembers()) + chr.setCarnival(this); + + this.schedule = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + if (red.getTotalCP() > blue.getTotalCP()) { + red.setWinner(true); + blue.setWinner(false); + red.displayMatchResult(); + blue.displayMatchResult(); + } else if (blue.getTotalCP() > red.getTotalCP()) { + red.setWinner(false); + blue.setWinner(true); + red.displayMatchResult(); + blue.displayMatchResult(); + } else { + red.setWinner(false); + blue.setWinner(false); + red.displayMatchResult(); + blue.displayMatchResult(); + } + saveResults(); + warpOut(); + } + + }, time); + /* if (room == 0) { + MapleData data = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Map.wz")).getData("Map/Map9" + (980000001 + (room * 100)) + ".img").getChildByPath("monsterCarnival"); + if (data != null) { + for (MapleData p : data.getChildByPath("mobGenPos").getChildren()) { + MapleData team = p.getChildByPath("team"); + if (team != null) { + if (team.getData().equals(0)) + redmonsterpoints.add(new Point(MapleDataTool.getInt(p.getChildByPath("x")), MapleDataTool.getInt(p.getChildByPath("y")))); + else + bluemonsterpoints.add(new Point(MapleDataTool.getInt(p.getChildByPath("x")), MapleDataTool.getInt(p.getChildByPath("y")))); + } else + monsterpoints.add(new Point(MapleDataTool.getInt(p.getChildByPath("x")), MapleDataTool.getInt(p.getChildByPath("y")))); + } + for (MapleData p : data.getChildByPath("guardianGenPos").getChildren()) { + MapleData team = p.getChildByPath("team"); + if (team != null) { + if (team.getData().equals(0)) + redreactorpoints.add(new Point(MapleDataTool.getInt(p.getChildByPath("x")), MapleDataTool.getInt(p.getChildByPath("y")))); + else + bluereactorpoints.add(new Point(MapleDataTool.getInt(p.getChildByPath("x")), MapleDataTool.getInt(p.getChildByPath("y")))); + } else + reactorpoints.add(new Point(MapleDataTool.getInt(p.getChildByPath("x")), MapleDataTool.getInt(p.getChildByPath("y")))); + } + } + } */ + } + + public long getTimeLeft() { + return time - (System.currentTimeMillis() - timeStarted); + } + + public MonsterCarnivalParty getPartyRed() { + return red; + } + + public MonsterCarnivalParty getPartyBlue() { + return blue; + } + + public MonsterCarnivalParty oppositeTeam(MonsterCarnivalParty team) { + if (team == red) + return blue; + else + return red; + } + + public void playerLeft(MapleCharacter chr) { + map.broadcastMessage(chr, MaplePacketCreator.leaveCPQ(chr)); + } + + private void warpOut() { + this.schedule = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + red.warpOut(); + blue.warpOut(); + } + }, 12000); + } + + public int getRoom() { + return room; + } + + public void saveResults() { + Connection con = DatabaseConnection.getConnection(); + try { + PreparedStatement ps = con.prepareStatement("INSERT INTO carnivalresults VALUES (?,?,?,?)"); + for (MapleCharacter chr : red.getMembers()) { + ps.setInt(1, chr.getId()); + ps.setInt(2, chr.getCP()); + ps.setInt(3, red.getTotalCP()); + ps.setInt(4, red.isWinner() ? 1 : 0); + ps.execute(); + } + for (MapleCharacter chr : blue.getMembers()) { + ps.setInt(1, chr.getId()); + ps.setInt(2, chr.getCP()); + ps.setInt(3, blue.getTotalCP()); + ps.setInt(4, blue.isWinner() ? 1 : 0); + ps.execute(); + } + ps.close(); + } catch (SQLException ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/server/partyquest/MonsterCarnivalParty.java b/src/server/partyquest/MonsterCarnivalParty.java new file mode 100644 index 0000000000..0f3b8fed2b --- /dev/null +++ b/src/server/partyquest/MonsterCarnivalParty.java @@ -0,0 +1,125 @@ +package server.partyquest; + +import client.MapleCharacter; +import java.util.LinkedList; +import java.util.List; +import server.maps.MapleMap; +import tools.MaplePacketCreator; + +/** + * @author Rob //Thanks :3 - LOST MOTIVATION >=( + */ +public class MonsterCarnivalParty { + + private List members = new LinkedList<>(); + private MapleCharacter leader; + private byte team; + private short availableCP = 0, totalCP = 0; + private int summons = 7; + private boolean winner = false; + + public MonsterCarnivalParty(final MapleCharacter owner, final List members1, final byte team1) { + leader = owner; + members = members1; + team = team1; + + for (final MapleCharacter chr : members) { + chr.setCarnivalParty(this); + chr.setTeam(team); + } + } + + public final MapleCharacter getLeader() { + return leader; + } + + public void addCP(MapleCharacter player, int ammount) { + totalCP += ammount; + availableCP += ammount; + player.addCP(ammount); + } + + public int getTotalCP() { + return totalCP; + } + + public int getAvailableCP() { + return availableCP; + } + + public void useCP(MapleCharacter player, int ammount) { + availableCP -= ammount; + player.useCP(ammount); + } + + public List getMembers() { + return members; + } + + public int getTeam() { + return team; + } + + public void warpOut(final int map) { + for (MapleCharacter chr : members) { + chr.changeMap(map, 0); + chr.setCarnivalParty(null); + chr.setCarnival(null); + } + members.clear(); + } + + public void warp(final MapleMap map, final int portalid) { + for (MapleCharacter chr : members) { + chr.changeMap(map, map.getPortal(portalid)); + } + } + + public void warpOut() { + if (winner == true) + warpOut(980000003 + (leader.getCarnival().getRoom() * 100)); + else + warpOut(980000004 + (leader.getCarnival().getRoom() * 100)); + } + + public boolean allInMap(MapleMap map) { + boolean status = true; + for (MapleCharacter chr : members) { + if (chr.getMap() != map) { + status = false; + } + } + return status; + } + + public void removeMember(MapleCharacter chr) { + members.remove(chr); + chr.changeMap(980000010); + chr.setCarnivalParty(null); + chr.setCarnival(null); + } + + public boolean isWinner() { + return winner; + } + + public void setWinner(boolean status) { + winner = status; + } + + public void displayMatchResult() { + final String effect = winner ? "quest/carnival/win" : "quest/carnival/lose"; + + for (final MapleCharacter chr : members) { + chr.announce(MaplePacketCreator.showEffect(effect)); + } + } + + public void summon() { + this.summons--; + } + + public boolean canSummon() { + return this.summons > 0; + } +} diff --git a/src/server/partyquest/PartyQuest.java b/src/server/partyquest/PartyQuest.java new file mode 100644 index 0000000000..710faca9e0 --- /dev/null +++ b/src/server/partyquest/PartyQuest.java @@ -0,0 +1,113 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.partyquest; + +import client.MapleCharacter; + +import java.util.ArrayList; +import java.util.List; + +import tools.FilePrinter; +import net.server.Server; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; + +/** + * + * @author kevintjuh93 + */ +public class PartyQuest { + int channel, world; + MapleParty party; + List participants = new ArrayList<>(); + + public PartyQuest(MapleParty party) { + this.party = party; + MaplePartyCharacter leader = party.getLeader(); + channel = leader.getChannel(); + world = leader.getWorld(); + int mapid = leader.getMapId(); + for (MaplePartyCharacter pchr : party.getMembers()) { + if (pchr.getChannel() == channel && pchr.getMapId() == mapid) { + MapleCharacter chr = Server.getInstance().getWorld(world).getChannel(channel).getPlayerStorage().getCharacterById(pchr.getId()); + if (chr != null) + this.participants.add(chr); + } + } + } + + public MapleParty getParty() { + return party; + } + + public List getParticipants() { + return participants; + } + + public void removeParticipant(MapleCharacter chr) throws Throwable { + synchronized (participants) { + participants.remove(chr); + chr.setPartyQuest(null); + if (participants.isEmpty()) super.finalize(); + //System.gc(); + } + } + + public static int getExp(String PQ, int level) { + if (PQ.equals("HenesysPQ")){ + return 1250 * level / 5; + } else if(PQ.equals("KerningPQFinal")){ + return 500 * level / 5; + } else if(PQ.equals("KerningPQ4th")){ + return 400 * level / 5; + } else if(PQ.equals("KerningPQ3rd")){ + return 300 * level / 5; + } else if(PQ.equals("KerningPQ2nd")){ + return 200 * level / 5; + } else if(PQ.equals("KerningPQ1st")){ + return 100 * level / 5; + } else if(PQ.equals("LudiMazePQ")){ + return 2000 * level / 5; + } else if(PQ.equals("LudiPQ1st")) { + return 100 * level / 5; + } else if(PQ.equals("LudiPQ2nd")) { + return 250 * level / 5; + } else if(PQ.equals("LudiPQ3rd")) { + return 350 * level / 5; + } else if(PQ.equals("LudiPQ4th")) { + return 350 * level / 5; + } else if(PQ.equals("LudiPQ5th")) { + return 400 * level / 5; + } else if(PQ.equals("LudiPQ6th")) { + return 450 * level / 5; + } else if(PQ.equals("LudiPQ7th")) { + return 500 * level / 5; + } else if(PQ.equals("LudiPQ8th")) { + return 650 * level / 5; + } else if(PQ.equals("LudiPQLast")) { + return 800 * level / 5; + } + FilePrinter.print(FilePrinter.NPC, "Unhandled PartyQuest: " + PQ); + return 0; + } +} diff --git a/src/server/partyquest/Pyramid.java b/src/server/partyquest/Pyramid.java new file mode 100644 index 0000000000..f832000340 --- /dev/null +++ b/src/server/partyquest/Pyramid.java @@ -0,0 +1,242 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package server.partyquest; + +import client.MapleCharacter; +import java.util.concurrent.ScheduledFuture; +import net.server.world.MapleParty; +import server.MapleItemInformationProvider; +import server.TimerManager; +import tools.MaplePacketCreator; + +/** + * + * @author kevintjuh93 + */ +public class Pyramid extends PartyQuest { + public enum PyramidMode { + EASY(0), NORMAL(1), HARD(2), HELL(3); + int mode; + + PyramidMode(int mode) { + this.mode = mode; + } + + public int getMode() { + return mode; + } + } + + int kill = 0, miss = 0, cool = 0, exp = 0, map, count; + byte coolAdd = 5, missSub = 4, decrease = 1;//hmmm + short gauge; + byte rank, skill = 0, stage = 0, buffcount = 0;//buffcount includes buffs + skills + PyramidMode mode; + + ScheduledFuture timer = null; + ScheduledFuture gaugeSchedule = null; + + public Pyramid(MapleParty party, PyramidMode mode, int mapid) { + super(party); + this.mode = mode; + this.map = mapid; + + byte plus = (byte) mode.getMode(); + coolAdd += plus; + missSub += plus; + switch (plus) { + case 0: + decrease = 1; + case 1: + case 2: + decrease = 2; + case 3: + decrease = 3; + } + } + + public void startGaugeSchedule() { + if (gaugeSchedule == null) { + gauge = 100; + count = 0; + gaugeSchedule = TimerManager.getInstance().register(new Runnable() { + @Override + public void run() { + gauge -= decrease; + if (gauge <= 0) warp(926010001); + + } + }, 1000); + } + } + + public void kill() { + kill++; + if (gauge < 100) count++; + gauge++; + broadcastInfo("hit", kill); + if (gauge >= 100) gauge = 100; + checkBuffs(); + } + + public void cool() { + cool++; + int plus = coolAdd; + if ((gauge + coolAdd) > 100) plus -= ((gauge + coolAdd) - 100); + gauge += plus; + count += plus; + if (gauge >= 100) gauge = 100; + broadcastInfo("cool", cool); + checkBuffs(); + + } + + public void miss() { + miss++; + count -= missSub; + gauge -= missSub; + broadcastInfo("miss", miss); + } + + public int timer() { + int value; + if (stage > 0) + value = 180; + else + value = 120; + + timer = TimerManager.getInstance().schedule(new Runnable() { + @Override + public void run() { + stage++; + warp(map + (stage * 100));//Should work :D + } + }, value * 1000);//, 4000 + broadcastInfo("party", getParticipants().size() > 1 ? 1 : 0); + broadcastInfo("hit", kill); + broadcastInfo("miss", miss); + broadcastInfo("cool", cool); + broadcastInfo("skill", skill); + broadcastInfo("laststage", stage); + startGaugeSchedule(); + return value; + } + + public void warp(int mapid) { + for (MapleCharacter chr : getParticipants()) { + chr.changeMap(mapid); + } + if (stage > -1) { + gaugeSchedule.cancel(false); + gaugeSchedule = null; + timer.cancel(false); + timer = null; + } else stage = 0; + } + + public void broadcastInfo(String info, int amount) { + for (MapleCharacter chr : getParticipants()) { + chr.announce(MaplePacketCreator.getEnergy("massacre_" + info, amount)); + chr.announce(MaplePacketCreator.pyramidGauge(count)); + } + } + + public boolean useSkill() { + if (skill < 1) return false; + + skill--; + broadcastInfo("skill", skill); + return true; + } + + public void checkBuffs() { + int total = (kill + cool); + if (buffcount == 0 && total >= 250) { + buffcount++; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + for (MapleCharacter chr : getParticipants()) + ii.getItemEffect(2022585).applyTo(chr); + + } else if (buffcount == 1 && total >= 500) { + buffcount++; + skill++; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + for (MapleCharacter chr : getParticipants()) { + chr.announce(MaplePacketCreator.getEnergy("massacre_skill", skill)); + ii.getItemEffect(2022586).applyTo(chr); + } + } else if (buffcount == 2 && total >= 1000) { + buffcount++; + skill++; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + for (MapleCharacter chr : getParticipants()) { + chr.announce(MaplePacketCreator.getEnergy("massacre_skill", skill)); + ii.getItemEffect(2022587).applyTo(chr); + } + } else if (buffcount == 3 && total >= 1500) { + skill++; + broadcastInfo("skill", skill); + } else if (buffcount == 4 && total >= 2000) { + buffcount++; + skill++; + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + for (MapleCharacter chr : getParticipants()) { + chr.announce(MaplePacketCreator.getEnergy("massacre_skill", skill)); + ii.getItemEffect(2022588).applyTo(chr); + } + } else if (buffcount == 5 && total >= 2500) { + skill++; + broadcastInfo("skill", skill); + } else if (buffcount == 6 && total >= 3000) { + skill++; + broadcastInfo("skill", skill); + } + } + + public void sendScore(MapleCharacter chr) { + if (exp == 0) { + int totalkills = (kill + cool); + if (stage == 5) { + if (totalkills >= 3000) rank = 0; + else if (totalkills >= 2000) rank = 1; + else if (totalkills >= 1500) rank = 2; + else if(totalkills >= 500) rank = 3; + else rank = 4; + } else { + if (totalkills >= 2000) rank = 3; + else rank = 4; + } + + if (rank == 0) exp = (60500 + (5500 * mode.getMode())); + else if(rank == 1) exp = (55000 + (5000 * mode.getMode())); + else if (rank == 2) exp = (46750 + (4250 * mode.getMode())); + else if (rank == 3) exp = (22000 + (2000 * mode.getMode())); + + exp += ((kill * 2) + (cool * 10)); + } + chr.announce(MaplePacketCreator.pyramidScore(rank, exp)); + chr.gainExp(exp, true, true); + } +} + + diff --git a/src/server/quest/MapleQuest.java b/src/server/quest/MapleQuest.java new file mode 100644 index 0000000000..14bc6bc0c6 --- /dev/null +++ b/src/server/quest/MapleQuest.java @@ -0,0 +1,441 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest; + +import java.io.File; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import client.MapleCharacter; +import client.MapleQuestStatus; +import client.MapleQuestStatus.Status; +import java.util.EnumMap; +import provider.MapleData; +import provider.MapleDataProvider; +import provider.MapleDataProviderFactory; +import provider.MapleDataTool; +import server.quest.actions.*; +import server.quest.requirements.*; +import tools.MaplePacketCreator; + +/** + * + * @author Matze + */ +public class MapleQuest { + + private static Map quests = new HashMap<>(); + protected short infoNumber, id; + protected int timeLimit, timeLimit2; + protected String infoex; + protected Map startReqs = new EnumMap<>(MapleQuestRequirementType.class); + protected Map completeReqs = new EnumMap<>(MapleQuestRequirementType.class); + protected Map startActs = new EnumMap<>(MapleQuestActionType.class); + protected Map completeActs = new EnumMap<>(MapleQuestActionType.class); + protected List relevantMobs = new LinkedList<>(); + private boolean autoStart; + private boolean autoPreComplete, autoComplete; + private boolean repeatable = false; + private final static MapleDataProvider questData = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/Quest.wz")); + private static MapleData questInfo; + private static MapleData questAct; + private static MapleData questReq; + + private MapleQuest(int id) { + this.id = (short) id; + + if(questInfo != null) { + timeLimit = MapleDataTool.getInt("timeLimit", questInfo, 0); + timeLimit2 = MapleDataTool.getInt("timeLimit2", questInfo, 0); + autoStart = MapleDataTool.getInt("autoStart", questInfo, 0) == 1; + autoPreComplete = MapleDataTool.getInt("autoPreComplete", questInfo, 0) == 1; + autoComplete = MapleDataTool.getInt("autoComplete", questInfo, 0) == 1; + } + + MapleData reqData = questReq.getChildByPath(String.valueOf(id)); + if (reqData == null) {//most likely infoEx + return; + } + MapleData startReqData = reqData.getChildByPath("0"); + if (startReqData != null) { + for (MapleData startReq : startReqData.getChildren()) { + MapleQuestRequirementType type = MapleQuestRequirementType.getByWZName(startReq.getName()); + if (type.equals(MapleQuestRequirementType.INTERVAL)) { + repeatable = true; + } + + if (type.equals(MapleQuestRequirementType.INFO_NUMBER)) { + infoNumber = (short) MapleDataTool.getInt(startReq, 0); + } + + MapleQuestRequirement req = this.getRequirement(type, startReq); + + if(req == null) + continue; + + if (type.equals(MapleQuestRequirementType.MOB)) { + for (MapleData mob : startReq.getChildren()) { + relevantMobs.add(MapleDataTool.getInt(mob.getChildByPath("id"))); + } + } + startReqs.put(type, req); + } + } + MapleData completeReqData = reqData.getChildByPath("1"); + if (completeReqData != null) { + for (MapleData completeReq : completeReqData.getChildren()) { + MapleQuestRequirementType type = MapleQuestRequirementType.getByWZName(completeReq.getName()); + MapleQuestRequirement req = this.getRequirement(type, completeReq); + if(req == null) + continue; + + if (type.equals(MapleQuestRequirementType.INFO_NUMBER)) { + infoNumber = (short) MapleDataTool.getInt(completeReq, 0); + } + if (type.equals(MapleQuestRequirementType.MOB)) { + for (MapleData mob : completeReq.getChildren()) { + relevantMobs.add(MapleDataTool.getInt(mob.getChildByPath("id"))); + } + } + completeReqs.put(type, req); + } + } + MapleData actData = questAct.getChildByPath(String.valueOf(id)); + if (actData == null) { + return; + } + final MapleData startActData = actData.getChildByPath("0"); + if (startActData != null) { + for (MapleData startAct : startActData.getChildren()) { + MapleQuestActionType questActionType = MapleQuestActionType.getByWZName(startAct.getName()); + MapleQuestAction act = this.getAction(questActionType, startAct); + + if(act == null) + continue; + + startActs.put(questActionType, act); + } + } + MapleData completeActData = actData.getChildByPath("1"); + if (completeActData != null) { + for (MapleData completeAct : completeActData.getChildren()) { + MapleQuestActionType questActionType = MapleQuestActionType.getByWZName(completeAct.getName()); + MapleQuestAction act = this.getAction(questActionType, completeAct); + + if(act == null) + continue; + + completeActs.put(questActionType, act); + } + } + } + + public boolean isAutoComplete() { + return autoPreComplete || autoComplete; + } + + public boolean isAutoStart() { + return autoStart; + } + + public static MapleQuest getInstance(int id) { + MapleQuest ret = quests.get(id); + if (ret == null) { + questInfo = questData.getData("QuestInfo.img"); + questReq = questData.getData("Check.img"); + questAct = questData.getData("Act.img"); + + ret = new MapleQuest(id); + quests.put(id, ret); + } + return ret; + } + + public boolean canStart(MapleCharacter c, int npcid) { + if (c.getQuest(this).getStatus() != Status.NOT_STARTED && !(c.getQuest(this).getStatus() == Status.COMPLETED && repeatable)) { + return false; + } + for (MapleQuestRequirement r : startReqs.values()) { + if (!r.check(c, npcid)) { + return false; + } + } + return true; + } + + public boolean canComplete(MapleCharacter c, Integer npcid) { + if (!c.getQuest(this).getStatus().equals(Status.STARTED)) { + return false; + } + for (MapleQuestRequirement r : completeReqs.values()) { + if (r == null || !r.check(c, npcid)) { + return false; + } + } + return true; + } + + public void start(MapleCharacter c, int npc) { + if (autoStart || canStart(c, npc)) { + for (MapleQuestAction a : startActs.values()) { + if (!a.check(c, null)) { // would null be good ? + return; + } + a.run(c, null); + } + forceStart(c, npc); + } + } + + public void complete(MapleCharacter c, int npc) { + complete(c, npc, null); + } + + public void complete(MapleCharacter c, int npc, Integer selection) { + if (autoPreComplete || canComplete(c, npc)) { + for (MapleQuestAction a : completeActs.values()) { + if (!a.check(c, selection)) { + return; + } + } + forceComplete(c, npc); + for (MapleQuestAction a : completeActs.values()) { + a.run(c, selection); + } + } + } + + public void reset(MapleCharacter c) { + c.updateQuest(new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED)); + } + + public void forfeit(MapleCharacter c) { + if (!c.getQuest(this).getStatus().equals(Status.STARTED)) { + return; + } + if (timeLimit > 0) { + c.announce(MaplePacketCreator.removeQuestTimeLimit(id)); + } + MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.NOT_STARTED); + newStatus.setForfeited(c.getQuest(this).getForfeited() + 1); + c.updateQuest(newStatus); + } + + public boolean forceStart(MapleCharacter c, int npc) { + MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.STARTED, npc); + newStatus.setForfeited(c.getQuest(this).getForfeited()); + + if (timeLimit > 0) { + c.questTimeLimit(this, 30000);//timeLimit * 1000 + } + if (timeLimit2 > 0) {//=\ + + } + c.updateQuest(newStatus); + return true; + } + + public boolean forceComplete(MapleCharacter c, int npc) { + MapleQuestStatus newStatus = new MapleQuestStatus(this, MapleQuestStatus.Status.COMPLETED, npc); + newStatus.setForfeited(c.getQuest(this).getForfeited()); + newStatus.setCompletionTime(System.currentTimeMillis()); + c.updateQuest(newStatus); + return true; + } + + public short getId() { + return id; + } + + public List getRelevantMobs() { + return relevantMobs; + } + + public int getItemAmountNeeded(int itemid) { + MapleQuestRequirement req = completeReqs.get(MapleQuestRequirementType.ITEM); + if(req == null) + return 0; + + ItemRequirement ireq = (ItemRequirement) req; + + return ireq.getItemAmountNeeded(itemid); + } + + public int getMobAmountNeeded(int mid) { + MapleQuestRequirement req = completeReqs.get(MapleQuestRequirementType.MOB); + if(req == null) + return 0; + + MobRequirement mreq = (MobRequirement) req; + + return mreq.getRequiredMobCount(mid); + } + + public short getInfoNumber() { + return infoNumber; + } + + public String getInfoEx() { + MapleQuestRequirement req = startReqs.get(MapleQuestRequirementType.INFO_EX); + String ret = ""; + if(req != null) { + InfoExRequirement ireq = (InfoExRequirement) req; + ret = ireq.getFirstInfo(); + } else { // Check complete requirements. + req = completeReqs.get(MapleQuestRequirementType.INFO_EX); + if(req != null) { + InfoExRequirement ireq = (InfoExRequirement) req; + ret = ireq.getFirstInfo(); + } + } + return ret; + } + + public int getTimeLimit() { + return timeLimit; + } + + public static void clearCache(int quest) { + if(quests.containsKey(quest)){ + quests.remove(quest); + } + } + + public static void clearCache() { + quests.clear(); + } + + private MapleQuestRequirement getRequirement(MapleQuestRequirementType type, MapleData data) { + MapleQuestRequirement ret = null; + switch(type) { + case END_DATE: + ret = new EndDateRequirement(this, data); + break; + case JOB: + ret = new JobRequirement(this, data); + break; + case QUEST: + ret = new QuestRequirement(this, data); + break; + case FIELD_ENTER: + ret = new FieldEnterRequirement(this, data); + break; + case INFO_EX: + ret = new InfoExRequirement(this, data); + break; + case INTERVAL: + ret = new IntervalRequirement(this, data); + break; + case COMPLETED_QUEST: + ret = new CompletedQuestRequirement(this, data); + break; + case ITEM: + ret = new ItemRequirement(this, data); + break; + case MAX_LEVEL: + ret = new MaxLevelRequirement(this, data); + break; + case MIN_LEVEL: + ret = new MinLevelRequirement(this, data); + break; + case MIN_PET_TAMENESS: + ret = new MinTamenessRequirement(this, data); + break; + case MOB: + ret = new MobRequirement(this, data); + break; + case MONSTER_BOOK: + ret = new MonsterBookCountRequirement(this, data); + break; + case NPC: + ret = new NpcRequirement(this, data); + break; + case PET: + ret = new PetRequirement(this, data); + break; + case SCRIPT: + case NORMAL_AUTO_START: + case START: + case END: + case INFO_NUMBER: + break; + default: + //FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Requirement Type: " + type.toString() + " QuestID: " + this.getId()); + break; + } + return ret; + } + + private MapleQuestAction getAction(MapleQuestActionType type, MapleData data) { + MapleQuestAction ret = null; + switch(type) { + case BUFF: + ret = new BuffAction(this, data); + break; + case EXP: + ret = new ExpAction(this, data); + break; + case FAME: + ret = new FameAction(this, data); + break; + case ITEM: + ret = new ItemAction(this, data); + break; + case MESO: + ret = new MesoAction(this, data); + break; + case NEXTQUEST: + ret = new NextQuestAction(this, data); + break; + case PETSKILL: + ret = new PetSkillAction(this, data); + break; + case QUEST: + ret = new QuestAction(this, data); + break; + case SKILL: + ret = new SkillAction(this, data); + break; + default: + //FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Unhandled Action Type: " + type.toString() + " QuestID: " + this.getId()); + break; + } + return ret; + } + + public static void loadAllQuest() { + questInfo = questData.getData("QuestInfo.img"); + questReq = questData.getData("Check.img"); + questAct = questData.getData("Act.img"); + + try { + for(MapleData quest : questInfo.getChildren()) { + int questID = Integer.parseInt(quest.getName()); + + quests.put(questID, new MapleQuest(questID)); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } +} diff --git a/src/server/quest/MapleQuestActionType.java b/src/server/quest/MapleQuestActionType.java new file mode 100644 index 0000000000..684d7e9bac --- /dev/null +++ b/src/server/quest/MapleQuestActionType.java @@ -0,0 +1,69 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.quest; + +/** + * + * @author Matze + */ +public enum MapleQuestActionType { + UNDEFINED(-1), EXP(0), ITEM(1), NEXTQUEST(2), MESO(3), QUEST(4), SKILL(5), FAME(6), BUFF(7), PETSKILL(8), YES(9), NO(10), NPC(11), MIN_LEVEL(12), NORMAL_AUTO_START(13), ZERO(14); + final byte type; + + private MapleQuestActionType(int type) { + this.type = (byte) type; + } + + public static MapleQuestActionType getByWZName(String name) { + if (name.equals("exp")) { + return EXP; + } else if (name.equals("money")) { + return MESO; + } else if (name.equals("item")) { + return ITEM; + } else if (name.equals("skill")) { + return SKILL; + } else if (name.equals("nextQuest")) { + return NEXTQUEST; + } else if (name.equals("pop")) { + return FAME; + } else if (name.equals("buffItemID")) { + return BUFF; + } else if (name.equals("petskill")) { + return PETSKILL; + } else if (name.equals("no")) { + return NO; + } else if (name.equals("yes")) { + return YES; + } else if (name.equals("npc")) { + return NPC; + } else if (name.equals("lvmin")) { + return MIN_LEVEL; + } else if (name.equals("normalAutoStart")) { + return NORMAL_AUTO_START; + } else if (name.equals("0")) { + return ZERO; + } else { + return UNDEFINED; + } + } +} diff --git a/src/server/quest/MapleQuestRequirementType.java b/src/server/quest/MapleQuestRequirementType.java new file mode 100644 index 0000000000..a89d1fce6d --- /dev/null +++ b/src/server/quest/MapleQuestRequirementType.java @@ -0,0 +1,89 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package server.quest; + +/** + * + * @author Matze + */ +public enum MapleQuestRequirementType { + UNDEFINED(-1), JOB(0), ITEM(1), QUEST(2), MIN_LEVEL(3), MAX_LEVEL(4), END_DATE(5), MOB(6), NPC(7), FIELD_ENTER(8), INTERVAL(9), SCRIPT(10), PET(11), MIN_PET_TAMENESS(12), MONSTER_BOOK(13), NORMAL_AUTO_START(14), INFO_NUMBER(15), INFO_EX(16), COMPLETED_QUEST(17), START(18), END(19), DAY_BY_DAY(20); + final byte type; + + private MapleQuestRequirementType(int type) { + this.type = (byte) type; + } + + public byte getType() { + return type; + } + + public static MapleQuestRequirementType getByWZName(String name) { + if (name.equals("job")) { + return JOB; + } else if (name.equals("quest")) { + return QUEST; + } else if (name.equals("item")) { + return ITEM; + } else if (name.equals("lvmin")) { + return MIN_LEVEL; + } else if (name.equals("lvmax")) { + return MAX_LEVEL; + } else if (name.equals("end")) { + return END_DATE; + } else if (name.equals("mob")) { + return MOB; + } else if (name.equals("npc")) { + return NPC; + } else if (name.equals("fieldEnter")) { + return FIELD_ENTER; + } else if (name.equals("interval")) { + return INTERVAL; + } else if (name.equals("startscript")) { + return SCRIPT; + } else if (name.equals("endscript")) { + return SCRIPT; + } else if (name.equals("pet")) { + return PET; + } else if (name.equals("pettamenessmin")) { + return MIN_PET_TAMENESS; + } else if (name.equals("mbmin")) { + return MONSTER_BOOK; + } else if (name.equals("normalAutoStart")) { + return NORMAL_AUTO_START; + } else if (name.equals("infoNumber")) { + return INFO_NUMBER; + } else if (name.equals("infoex")) { + return INFO_EX; + } else if (name.equals("questComplete")) { + return COMPLETED_QUEST; + } else if(name.equals("start")) { + return START; + } else if(name.equals("end")) { + return END; + } else if(name.equals("daybyday")) { + return DAY_BY_DAY; + } else { + return UNDEFINED; + } + } +} diff --git a/src/server/quest/actions/BuffAction.java b/src/server/quest/actions/BuffAction.java new file mode 100644 index 0000000000..860c252d93 --- /dev/null +++ b/src/server/quest/actions/BuffAction.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.MapleItemInformationProvider; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class BuffAction extends MapleQuestAction { + int itemEffect; + + public BuffAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.BUFF, quest); + processData(data); + } + + + @Override + public void processData(MapleData data) { + itemEffect = MapleDataTool.getInt(data); + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + MapleItemInformationProvider.getInstance().getItemEffect(itemEffect).applyTo(chr); + } +} diff --git a/src/server/quest/actions/ExpAction.java b/src/server/quest/actions/ExpAction.java new file mode 100644 index 0000000000..9465b20e98 --- /dev/null +++ b/src/server/quest/actions/ExpAction.java @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class ExpAction extends MapleQuestAction { + int exp; + + public ExpAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.EXP, quest); + processData(data); + } + + + @Override + public void processData(MapleData data) { + exp = MapleDataTool.getInt(data); + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + if (chr.isBeginnerJob()) { + chr.gainExp(exp, true, true); + } else { + chr.gainExp(exp * chr.getExpRate(), true, true); + } + } +} diff --git a/src/server/quest/actions/FameAction.java b/src/server/quest/actions/FameAction.java new file mode 100644 index 0000000000..6d7160a71c --- /dev/null +++ b/src/server/quest/actions/FameAction.java @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleStat; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; +import tools.MaplePacketCreator; + +/** + * + * @author Tyler (Twdtwd) + */ +public class FameAction extends MapleQuestAction { + int fame; + + public FameAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.FAME, quest); + questID = quest.getId(); + processData(data); + } + + + @Override + public void processData(MapleData data) { + fame = MapleDataTool.getInt(data); + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + chr.addFame(fame); + chr.updateSingleStat(MapleStat.FAME, chr.getFame()); + chr.announce(MaplePacketCreator.getShowFameGain(fame)); + } +} diff --git a/src/server/quest/actions/ItemAction.java b/src/server/quest/actions/ItemAction.java new file mode 100644 index 0000000000..5b6b44aa2d --- /dev/null +++ b/src/server/quest/actions/ItemAction.java @@ -0,0 +1,224 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleJob; +import client.inventory.Item; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataTool; +import server.MapleInventoryManipulator; +import server.MapleItemInformationProvider; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; +import tools.MaplePacketCreator; +import tools.Pair; +import tools.Randomizer; + +/** + * + * @author Tyler (Twdtwd) + */ +public class ItemAction extends MapleQuestAction { + Map items = new HashMap<>(); + + public ItemAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.ITEM, quest); + processData(data); + } + + + @Override + public void processData(MapleData data) { + for (MapleData iEntry : data.getChildren()) { + int id = MapleDataTool.getInt(iEntry.getChildByPath("id")); + int count = MapleDataTool.getInt(iEntry.getChildByPath("count"), 1); + + Integer prop = null; + MapleData propData = iEntry.getChildByPath("prop"); + if(propData != null) + prop = MapleDataTool.getInt(propData); + + int gender = 2; + if (iEntry.getChildByPath("gender") != null) + gender = MapleDataTool.getInt(iEntry.getChildByPath("gender")); + + int job = -1; + if (iEntry.getChildByPath("job") != null) + job = MapleDataTool.getInt(iEntry.getChildByPath("job")); + + items.put(id, new ItemData(id, count, prop, job, gender)); + } + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + Map props = new HashMap<>(); + for(ItemData item : items.values()) { + if(item.getProp() != null && item.getProp() != -1 && canGetItem(item, chr)) { + for (int i = 0; i < item.getProp(); i++) { + props.put(props.size(), item.getId()); + } + } + } + int selection = 0; + int extNum = 0; + if (props.size() > 0) { + selection = props.get(Randomizer.nextInt(props.size())); + } + for (ItemData iEntry : items.values()) { + if (!canGetItem(iEntry, chr)) { + continue; + } + if(iEntry.getProp() != null) { + if(iEntry.getProp() == -1) { + if(extSelection != extNum++) + continue; + } else if(iEntry.getId() != selection) + continue; + } + + if(iEntry.getCount() < 0) { // Remove Items + MapleInventoryType type = ii.getInventoryType(iEntry.getId()); + int quantity = iEntry.getCount() * -1; // Invert + if(type.equals(MapleInventoryType.EQUIP)) { + if(chr.getInventory(type).countById(iEntry.getId()) < quantity) { + // Not enough in the equip inventoty, so check Equipped... + if(chr.getInventory(MapleInventoryType.EQUIPPED).countById(iEntry.getId()) > quantity) { + // Found it equipped, so change the type to equipped. + type = MapleInventoryType.EQUIPPED; + } + } + } + MapleInventoryManipulator.removeById(chr.getClient(), type, iEntry.getId(), quantity, true, false); + chr.announce(MaplePacketCreator.getShowItemGain(iEntry.getId(), (short) iEntry.getCount(), true)); + } else { + if (chr.getInventory(MapleItemInformationProvider.getInstance().getInventoryType(iEntry.getId())).getNextFreeSlot() > -1) { + MapleInventoryManipulator.addById(chr.getClient(), iEntry.getId(), (short) iEntry.getCount()); + chr.announce(MaplePacketCreator.getShowItemGain(iEntry.getId(), (short) iEntry.getCount(), true)); + } else { + chr.dropMessage(1, "Inventory Full"); + } + } + } + } + + @Override + public boolean check(MapleCharacter chr, Integer extSelection) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + EnumMap props = new EnumMap<>(MapleInventoryType.class); + List> itemList = new ArrayList<>(); + for(ItemData item : items.values()) { + if (!canGetItem(item, chr)) { + continue; + } + MapleInventoryType type = ii.getInventoryType(item.getId()); + if(item.getProp() != null) { + if(!props.containsKey(type)) { + props.put(type, item.getId()); + } + continue; + } + + if(item.getCount() > 0) { + // Make sure they can hold the item. + Item toItem = new Item(item.getId(), (short) 0, (short) item.getCount()); + itemList.add(new Pair<>(toItem, type)); + } else { + // Make sure they actually have the item. + int quantity = item.getCount() * -1; + if(chr.getInventory(type).countById(item.getId()) < quantity) { + if(type.equals(MapleInventoryType.EQUIP) && chr.getInventory(MapleInventoryType.EQUIPPED).countById(item.getId()) > quantity) + continue; + return false; + } + } + } + for(Integer itemID : props.values()) { + MapleInventoryType type = ii.getInventoryType(itemID); + Item toItem = new Item(itemID, (short) 0, (short) 1); + itemList.add(new Pair<>(toItem, type)); + } + + if (!MapleInventory.checkSpots(chr, itemList)) { + chr.dropMessage(1, "Please check if you have enough space in your inventory."); + return false; + } + return true; + } + + private boolean canGetItem(ItemData item, MapleCharacter chr) { + if (item.getGender() != 2 && item.getGender() != chr.getGender()) { + return false; + } + + if(item.getJob() != -1) { + if (item.getJob() != chr.getJob().getId()) { + return false; + } else if (MapleJob.getBy5ByteEncoding(item.getJob()).getId() / 100 != chr.getJob().getId() / 100) { + return false; + } + } + return true; + } + + private class ItemData { + private final int id, count, job, gender; + private final Integer prop; + + public ItemData(int id, int count, Integer prop, int job, int gender) { + this.id = id; + this.count = count; + this.prop = prop; + this.job = job; + this.gender = gender; + } + + public int getId() { + return id; + } + + public int getCount() { + return count; + } + + public Integer getProp() { + return prop; + } + + public int getJob() { + return job; + } + + public int getGender() { + return gender; + } + } +} diff --git a/src/server/quest/actions/MapleQuestAction.java b/src/server/quest/actions/MapleQuestAction.java new file mode 100644 index 0000000000..b82a139920 --- /dev/null +++ b/src/server/quest/actions/MapleQuestAction.java @@ -0,0 +1,39 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleQuestStatus; +import provider.MapleData; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public abstract class MapleQuestAction { + private final MapleQuestActionType type; + protected int questID; + + public MapleQuestAction(MapleQuestActionType action, MapleQuest quest) { + this.type = action; + this.questID = quest.getId(); + } + + public abstract void run(MapleCharacter chr, Integer extSelection); + public abstract void processData(MapleData data); + + + public boolean check(MapleCharacter chr, Integer extSelection) { + MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); + return !(status.getStatus() == MapleQuestStatus.Status.NOT_STARTED && status.getForfeited() > 0); + } + + public MapleQuestActionType getType() { + return type; + } +} diff --git a/src/server/quest/actions/MesoAction.java b/src/server/quest/actions/MesoAction.java new file mode 100644 index 0000000000..96dddb416f --- /dev/null +++ b/src/server/quest/actions/MesoAction.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class MesoAction extends MapleQuestAction { + int mesos; + + public MesoAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.MESO, quest); + questID = quest.getId(); + processData(data); + } + + + @Override + public void processData(MapleData data) { + mesos = MapleDataTool.getInt(data); + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + chr.gainMeso(mesos < 0 ? mesos : mesos * chr.getMesoRate(), true, false, true); + } +} diff --git a/src/server/quest/actions/NextQuestAction.java b/src/server/quest/actions/NextQuestAction.java new file mode 100644 index 0000000000..234bfc95fd --- /dev/null +++ b/src/server/quest/actions/NextQuestAction.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleQuestStatus; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; +import tools.MaplePacketCreator; + +/** + * + * @author Tyler (Twdtwd) + */ +public class NextQuestAction extends MapleQuestAction { + int nextQuest; + + public NextQuestAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.NEXTQUEST, quest); + processData(data); + } + + + @Override + public void processData(MapleData data) { + nextQuest = MapleDataTool.getInt(data); + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); + chr.announce(MaplePacketCreator.updateQuestFinish((short) questID, status.getNpc(), (short) nextQuest)); + } +} diff --git a/src/server/quest/actions/PetSkillAction.java b/src/server/quest/actions/PetSkillAction.java new file mode 100644 index 0000000000..b99fdb1ea1 --- /dev/null +++ b/src/server/quest/actions/PetSkillAction.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleQuestStatus; +import constants.ItemConstants; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class PetSkillAction extends MapleQuestAction { + int flag; + + public PetSkillAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.PETSKILL, quest); + questID = quest.getId(); + processData(data); + } + + + @Override + public void processData(MapleData data) { + flag = MapleDataTool.getInt("petskill", data); + } + + @Override + public boolean check(MapleCharacter chr, Integer extSelection) { + MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); + if(!(status.getStatus() == MapleQuestStatus.Status.NOT_STARTED && status.getForfeited() > 0)) + return false; + + return chr.getPet(0) != null; + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + chr.getPet(0).setFlag((byte) ItemConstants.getFlagByInt(flag)); + } +} diff --git a/src/server/quest/actions/QuestAction.java b/src/server/quest/actions/QuestAction.java new file mode 100644 index 0000000000..f132b362d4 --- /dev/null +++ b/src/server/quest/actions/QuestAction.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleQuestStatus; +import java.util.HashMap; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class QuestAction extends MapleQuestAction { + int mesos; + Map quests = new HashMap<>(); + + public QuestAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.QUEST, quest); + questID = quest.getId(); + processData(data); + } + + + @Override + public void processData(MapleData data) { + for (MapleData qEntry : data) { + int questid = MapleDataTool.getInt(qEntry.getChildByPath("id")); + int stat = MapleDataTool.getInt(qEntry.getChildByPath("state")); + quests.put(questid, stat); + } + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + for(Integer questID : quests.keySet()) { + int stat = quests.get(questID); + chr.updateQuest(new MapleQuestStatus(MapleQuest.getInstance(questID), MapleQuestStatus.Status.getById(stat))); + } + } +} diff --git a/src/server/quest/actions/SkillAction.java b/src/server/quest/actions/SkillAction.java new file mode 100644 index 0000000000..1cf430fab8 --- /dev/null +++ b/src/server/quest/actions/SkillAction.java @@ -0,0 +1,120 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.actions; + +import client.MapleCharacter; +import client.MapleJob; +import client.Skill; +import client.SkillFactory; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestActionType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class SkillAction extends MapleQuestAction { + int itemEffect; + Map skillData = new HashMap<>(); + + public SkillAction(MapleQuest quest, MapleData data) { + super(MapleQuestActionType.SKILL, quest); + processData(data); + } + + + @Override + public void processData(MapleData data) { + for (MapleData sEntry : data) { + byte skillLevel = 0; + int skillid = MapleDataTool.getInt(sEntry.getChildByPath("id")); + MapleData skillLevelData = sEntry.getChildByPath("skillLevel"); + if(skillLevelData != null) + skillLevel = (byte) MapleDataTool.getInt(skillLevelData); + int masterLevel = MapleDataTool.getInt(sEntry.getChildByPath("masterLevel")); + List jobs = new ArrayList<>(); + + MapleData applicableJobs = sEntry.getChildByPath("job"); + if(applicableJobs != null) { + for (MapleData applicableJob : applicableJobs.getChildren()) { + jobs.add(MapleDataTool.getInt(applicableJob)); + } + } + + skillData.put(skillid, new SkillData(skillid, skillLevel, masterLevel, jobs)); + } + } + + @Override + public void run(MapleCharacter chr, Integer extSelection) { + for(SkillData skill : skillData.values()) { + Skill skillObject = SkillFactory.getSkill(skill.getId()); + boolean shouldLearn = false; + + if(skill.jobsContains(chr.getJob()) || skillObject.isBeginnerSkill()) + shouldLearn = true; + + byte skillLevel = (byte) Math.max(skill.getLevel(), chr.getSkillLevel(skillObject)); + int masterLevel = Math.max(skill.getMasterLevel(), chr.getMasterLevel(skillObject)); + if (shouldLearn) { + chr.changeSkillLevel(skillObject, skillLevel, masterLevel, -1); + } + + } + } + + private class SkillData { + protected int id, level, masterLevel; + List jobs = new ArrayList<>(); + + public SkillData(int id, int level, int masterLevel, List jobs) { + this.id = id; + this.level = level; + this.masterLevel = masterLevel; + this.jobs = jobs; + } + + public int getId() { + return id; + } + + public int getLevel() { + return level; + } + + public int getMasterLevel() { + return masterLevel; + } + + public boolean jobsContains(MapleJob job) { + return jobs.contains(job.getId()); + } + + + } +} \ No newline at end of file diff --git a/src/server/quest/requirements/CompletedQuestRequirement.java b/src/server/quest/requirements/CompletedQuestRequirement.java new file mode 100644 index 0000000000..f62adae6e0 --- /dev/null +++ b/src/server/quest/requirements/CompletedQuestRequirement.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class CompletedQuestRequirement extends MapleQuestRequirement { + private int reqQuest; + + + public CompletedQuestRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.COMPLETED_QUEST); + processData(data); + } + + @Override + public void processData(MapleData data) { + reqQuest = MapleDataTool.getInt(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return chr.getCompletedQuests().size() >= reqQuest; + } +} diff --git a/src/server/quest/requirements/EndDateRequirement.java b/src/server/quest/requirements/EndDateRequirement.java new file mode 100644 index 0000000000..b0b696117b --- /dev/null +++ b/src/server/quest/requirements/EndDateRequirement.java @@ -0,0 +1,60 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import java.util.Calendar; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class EndDateRequirement extends MapleQuestRequirement { + private String timeStr; + + + public EndDateRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.END_DATE); + processData(data); + } + + /** + * + * @param data + */ + @Override + public void processData(MapleData data) { + timeStr = MapleDataTool.getString(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + Calendar cal = Calendar.getInstance(); + cal.set(Integer.parseInt(timeStr.substring(0, 4)), Integer.parseInt(timeStr.substring(4, 6)), Integer.parseInt(timeStr.substring(6, 8)), Integer.parseInt(timeStr.substring(8, 10)), 0); + return cal.getTimeInMillis() >= System.currentTimeMillis(); + } +} diff --git a/src/server/quest/requirements/FieldEnterRequirement.java b/src/server/quest/requirements/FieldEnterRequirement.java new file mode 100644 index 0000000000..d372fd1155 --- /dev/null +++ b/src/server/quest/requirements/FieldEnterRequirement.java @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class FieldEnterRequirement extends MapleQuestRequirement { + private int mapId = -1; + + + public FieldEnterRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.FIELD_ENTER); + processData(data); + } + + @Override + public void processData(MapleData data) { + MapleData zeroField = data.getChildByPath("0"); + if (zeroField != null) { + mapId = MapleDataTool.getInt(zeroField); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return mapId == chr.getMapId(); + } +} diff --git a/src/server/quest/requirements/InfoExRequirement.java b/src/server/quest/requirements/InfoExRequirement.java new file mode 100644 index 0000000000..1740f918b7 --- /dev/null +++ b/src/server/quest/requirements/InfoExRequirement.java @@ -0,0 +1,71 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import client.MapleQuestStatus; +import java.util.ArrayList; +import java.util.List; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class InfoExRequirement extends MapleQuestRequirement { + private List infoExpected = new ArrayList<>(); + private int questID; + + + public InfoExRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.INFO_EX); + processData(data); + questID = quest.getId(); + } + + @Override + public void processData(MapleData data) { + // Because we have to... + for(MapleData infoEx : data.getChildren()) { + MapleData value = infoEx.getChildByPath("value"); + infoExpected.add(MapleDataTool.getString(value, "")); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); + return infoExpected.contains(status.getInfo()); + } + + public List getInfo() { + return infoExpected; + } + + public String getFirstInfo() { + return !infoExpected.isEmpty() ? infoExpected.get(0) : ""; + } +} diff --git a/src/server/quest/requirements/IntervalRequirement.java b/src/server/quest/requirements/IntervalRequirement.java new file mode 100644 index 0000000000..f37037690c --- /dev/null +++ b/src/server/quest/requirements/IntervalRequirement.java @@ -0,0 +1,58 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import client.MapleQuestStatus; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class IntervalRequirement extends MapleQuestRequirement { + private int interval = -1; + private int questID; + + public IntervalRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.INTERVAL); + processData(data); + questID = quest.getId(); + } + + + @Override + public void processData(MapleData data) { + interval = MapleDataTool.getInt(data) * 60 * 1000; + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + boolean check = !chr.getQuest(MapleQuest.getInstance(questID)).getStatus().equals(MapleQuestStatus.Status.COMPLETED); + boolean check2 = chr.getQuest(MapleQuest.getInstance(questID)).getCompletionTime() <= System.currentTimeMillis() - interval; + return check || check2; + } +} diff --git a/src/server/quest/requirements/ItemRequirement.java b/src/server/quest/requirements/ItemRequirement.java new file mode 100644 index 0000000000..e4f7fc4a4c --- /dev/null +++ b/src/server/quest/requirements/ItemRequirement.java @@ -0,0 +1,96 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import java.util.HashMap; +import java.util.Map; + +import provider.MapleData; +import provider.MapleDataTool; +import server.MapleItemInformationProvider; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; +import client.MapleCharacter; +import client.inventory.Item; +import client.inventory.MapleInventoryType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class ItemRequirement extends MapleQuestRequirement { + Map items = new HashMap<>(); + + + public ItemRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.ITEM); + processData(data); + } + + @Override + public void processData(MapleData data) { + for (MapleData itemEntry : data.getChildren()) { + int itemId = MapleDataTool.getInt(itemEntry.getChildByPath("id")); + int count = MapleDataTool.getInt(itemEntry.getChildByPath("count"), 0); + + items.put(itemId, count); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + for(Integer itemId : items.keySet()) { + int countNeeded = items.get(itemId); + int count = 0; + + MapleInventoryType iType = ii.getInventoryType(itemId); + + if (iType.equals(MapleInventoryType.UNDEFINED)) { + return false; + } + for (Item item : chr.getInventory(iType).listById(itemId)) { + count += item.getQuantity(); + } + //Weird stuff, nexon made some quests only available when wearing gm clothes. This enables us to accept it >< + if (iType.equals(MapleInventoryType.EQUIP)) { + for (Item item : chr.getInventory(MapleInventoryType.EQUIPPED).listById(itemId)) { + count += item.getQuantity(); + } + } + + if(count < countNeeded || countNeeded <= 0 && count > 0) { + return false; + } + } + return true; + } + + public int getItemAmountNeeded(int itemid) { + if(items.containsKey(itemid)) { + return items.get(itemid); + } + + return 0; + } +} diff --git a/src/server/quest/requirements/JobRequirement.java b/src/server/quest/requirements/JobRequirement.java new file mode 100644 index 0000000000..6a9af39498 --- /dev/null +++ b/src/server/quest/requirements/JobRequirement.java @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import java.util.ArrayList; +import java.util.List; + +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; +import client.MapleCharacter; +import client.MapleJob; + +/** + * + * @author Tyler (Twdtwd) + */ +public class JobRequirement extends MapleQuestRequirement { + List jobs = new ArrayList<>(); + + public JobRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.JOB); + processData(data); + } + + /** + * + * @param data + */ + @Override + public void processData(MapleData data) { + for (MapleData jobEntry : data.getChildren()) { + jobs.add(MapleDataTool.getInt(jobEntry)); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + for(Integer job : jobs) { + if (chr.getJob().equals(MapleJob.getById(job)) || chr.isGM()) { + return true; + } + } + return false; + } +} diff --git a/src/server/quest/requirements/MapleQuestRequirement.java b/src/server/quest/requirements/MapleQuestRequirement.java new file mode 100644 index 0000000000..1e052498a2 --- /dev/null +++ b/src/server/quest/requirements/MapleQuestRequirement.java @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import provider.MapleData; +import server.quest.MapleQuestRequirementType; +import client.MapleCharacter; + +/** + * Base class for a Quest Requirement. Quest system uses it for all requirements. + * @author Tyler (Twdtwd) + */ +public abstract class MapleQuestRequirement { + private final MapleQuestRequirementType type; + + public MapleQuestRequirement(MapleQuestRequirementType type) { + this.type = type; + } + + /** + * Checks the requirement to see if the player currently meets it. + * @param chr The {@link MapleCharacter} to check on. + * @param npcid The NPC ID it was called from. + * @return boolean If the check was passed or not. + */ + public abstract boolean check(MapleCharacter chr, Integer npcid); + + /** + * Processes the data and stores it in the class for future use. + * @param data The data to process. + */ + public abstract void processData(MapleData data); + + public MapleQuestRequirementType getType() { + return type; + } +} \ No newline at end of file diff --git a/src/server/quest/requirements/MaxLevelRequirement.java b/src/server/quest/requirements/MaxLevelRequirement.java new file mode 100644 index 0000000000..1b31a407a2 --- /dev/null +++ b/src/server/quest/requirements/MaxLevelRequirement.java @@ -0,0 +1,57 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class MaxLevelRequirement extends MapleQuestRequirement { + private int maxLevel; + + + public MaxLevelRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.MAX_LEVEL); + processData(data); + } + + /** + * + * @param data + */ + @Override + public void processData(MapleData data) { + maxLevel = MapleDataTool.getInt(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return maxLevel >= chr.getLevel(); + } +} diff --git a/src/server/quest/requirements/MinLevelRequirement.java b/src/server/quest/requirements/MinLevelRequirement.java new file mode 100644 index 0000000000..2bbca3ad01 --- /dev/null +++ b/src/server/quest/requirements/MinLevelRequirement.java @@ -0,0 +1,54 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class MinLevelRequirement extends MapleQuestRequirement { + private int minLevel; + + + public MinLevelRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.MIN_LEVEL); + processData(data); + } + + + @Override + public void processData(MapleData data) { + minLevel = MapleDataTool.getInt(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return chr.getLevel() >= minLevel; + } +} diff --git a/src/server/quest/requirements/MinTamenessRequirement.java b/src/server/quest/requirements/MinTamenessRequirement.java new file mode 100644 index 0000000000..8da0c7141a --- /dev/null +++ b/src/server/quest/requirements/MinTamenessRequirement.java @@ -0,0 +1,67 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import client.inventory.MaplePet; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class MinTamenessRequirement extends MapleQuestRequirement { + private int minTameness; + + + public MinTamenessRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.MIN_PET_TAMENESS); + processData(data); + } + + /** + * + * @param data + */ + @Override + public void processData(MapleData data) { + minTameness = MapleDataTool.getInt(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + int curCloseness = 0; + + for(MaplePet pet : chr.getPets()) { + if(pet == null) continue; + + if(pet.getCloseness() > curCloseness) + curCloseness = pet.getCloseness(); + } + + return curCloseness >= minTameness; + } +} diff --git a/src/server/quest/requirements/MobRequirement.java b/src/server/quest/requirements/MobRequirement.java new file mode 100644 index 0000000000..5e2a8cd3b8 --- /dev/null +++ b/src/server/quest/requirements/MobRequirement.java @@ -0,0 +1,89 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import java.util.HashMap; +import java.util.Map; + +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; +import tools.FilePrinter; +import client.MapleCharacter; +import client.MapleQuestStatus; + +/** + * + * @author Tyler (Twdtwd) + */ +public class MobRequirement extends MapleQuestRequirement { + Map mobs = new HashMap<>(); + private int questID; + + public MobRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.MOB); + processData(data); + questID = quest.getId(); + } + + /** + * + * @param data + */ + @Override + public void processData(MapleData data) { + for (MapleData questEntry : data.getChildren()) { + int mobID = MapleDataTool.getInt(questEntry.getChildByPath("id")); + int countReq = MapleDataTool.getInt(questEntry.getChildByPath("count")); + mobs.put(mobID, countReq); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + MapleQuestStatus status = chr.getQuest(MapleQuest.getInstance(questID)); + for(Integer mobID : mobs.keySet()) { + int countReq = mobs.get(mobID); + int progress; + + try { + progress = Integer.parseInt(status.getProgress(mobID)); + } catch (NumberFormatException ex) { + FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, ex, "Mob: " + mobID + " Quest: " + questID + "CID: " + chr.getId() + " Progress: " + status.getProgress(mobID)); + return false; + } + + if(progress < countReq) + return false; + } + return true; + } + + public int getRequiredMobCount(int mobid) { + if(mobs.containsKey(mobid)) { + return mobs.get(mobid); + } + return 0; + } +} diff --git a/src/server/quest/requirements/MonsterBookCountRequirement.java b/src/server/quest/requirements/MonsterBookCountRequirement.java new file mode 100644 index 0000000000..17800b79b1 --- /dev/null +++ b/src/server/quest/requirements/MonsterBookCountRequirement.java @@ -0,0 +1,53 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class MonsterBookCountRequirement extends MapleQuestRequirement { + private int reqCards; + + + public MonsterBookCountRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.MONSTER_BOOK); + processData(data); + } + + @Override + public void processData(MapleData data) { + reqCards = MapleDataTool.getInt(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return chr.getMonsterBook().getTotalCards() >= reqCards; + } +} diff --git a/src/server/quest/requirements/NpcRequirement.java b/src/server/quest/requirements/NpcRequirement.java new file mode 100644 index 0000000000..facd0c2b5d --- /dev/null +++ b/src/server/quest/requirements/NpcRequirement.java @@ -0,0 +1,55 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class NpcRequirement extends MapleQuestRequirement { + private int reqNPC; + private final boolean autoComplete, autoStart; + + public NpcRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.NPC); + processData(data); + this.autoComplete = quest.isAutoComplete(); + this.autoStart = quest.isAutoStart(); + } + + @Override + public void processData(MapleData data) { + reqNPC = MapleDataTool.getInt(data); + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + return npcid != null && npcid == reqNPC && (autoComplete || autoStart || chr.getMap().containsNPC(npcid)); + } +} diff --git a/src/server/quest/requirements/PetRequirement.java b/src/server/quest/requirements/PetRequirement.java new file mode 100644 index 0000000000..144b212288 --- /dev/null +++ b/src/server/quest/requirements/PetRequirement.java @@ -0,0 +1,64 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package server.quest.requirements; + +import client.MapleCharacter; +import client.inventory.MaplePet; +import java.util.ArrayList; +import java.util.List; +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; + +/** + * + * @author Tyler (Twdtwd) + */ +public class PetRequirement extends MapleQuestRequirement { + List petIDs = new ArrayList<>(); + + + public PetRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.PET); + processData(data); + } + + + @Override + public void processData(MapleData data) { + for(MapleData petData : data.getChildren()) { + petIDs.add(MapleDataTool.getInt(petData.getChildByPath("id"))); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + for(MaplePet pet : chr.getPets()) { + if(petIDs.contains(pet.getItemId())) + return true; + } + + return false; + } +} diff --git a/src/server/quest/requirements/QuestRequirement.java b/src/server/quest/requirements/QuestRequirement.java new file mode 100644 index 0000000000..e6d697578f --- /dev/null +++ b/src/server/quest/requirements/QuestRequirement.java @@ -0,0 +1,60 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package server.quest.requirements; + +import java.util.HashMap; +import java.util.Map; + +import provider.MapleData; +import provider.MapleDataTool; +import server.quest.MapleQuest; +import server.quest.MapleQuestRequirementType; +import client.MapleCharacter; +import client.MapleQuestStatus; + +/** + * + * @author Tyler (Twdtwd) + */ +public class QuestRequirement extends MapleQuestRequirement { + Map quests = new HashMap<>(); + + public QuestRequirement(MapleQuest quest, MapleData data) { + super(MapleQuestRequirementType.QUEST); + processData(data); + } + + /** + * + * @param data + */ + @Override + public void processData(MapleData data) { + for (MapleData questEntry : data.getChildren()) { + int questID = MapleDataTool.getInt(questEntry.getChildByPath("id")); + int stateReq = MapleDataTool.getInt(questEntry.getChildByPath("state")); + quests.put(questID, stateReq); + } + } + + + @Override + public boolean check(MapleCharacter chr, Integer npcid) { + for(Integer questID : quests.keySet()) { + int stateReq = quests.get(questID); + MapleQuestStatus q = chr.getQuest(MapleQuest.getInstance(questID)); + + if(q == null && MapleQuestStatus.Status.getById(stateReq).equals(MapleQuestStatus.Status.NOT_STARTED)) + continue; + + if(q == null || !q.getStatus().equals(MapleQuestStatus.Status.getById(stateReq))) { + return false; + } + + } + return true; + } +} diff --git a/src/tools/ArrayMap.java b/src/tools/ArrayMap.java new file mode 100644 index 0000000000..c08508f7e3 --- /dev/null +++ b/src/tools/ArrayMap.java @@ -0,0 +1,149 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools; + +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +public class ArrayMap extends AbstractMap { + + static class Entry implements Map.Entry { + protected K key; + protected V value; + + public Entry(K key, V value) { + this.key = key; + this.value = value; + } + + @Override + public K getKey() { + return key; + } + + @Override + public V getValue() { + return value; + } + + @Override + public V setValue(V newValue) { + V oldValue = value; + value = newValue; + return oldValue; + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof Map.Entry)) { + return false; + } + Map.Entry e = (Map.Entry) o; + return (key == null ? e.getKey() == null : key.equals(e.getKey())) && (value == null ? e.getValue() == null : value.equals(e.getValue())); + } + + @Override + public int hashCode() { + int keyHash = (key == null ? 0 : key.hashCode()); + int valueHash = (value == null ? 0 : value.hashCode()); + return keyHash ^ valueHash; + } + + @Override + public String toString() { + return key + "=" + value; + } + } + private Set> entries = null; + private ArrayList> list; + + public ArrayMap() { + list = new ArrayList<>(); + } + + public ArrayMap(Map map) { + list = new ArrayList<>(); + putAll(map); + } + + public ArrayMap(int initialCapacity) { + list = new ArrayList<>(initialCapacity); + } + + @Override + @SuppressWarnings ("unchecked") + public Set> entrySet() { + if (entries == null) { + entries = new AbstractSet>() { + @Override + public void clear() { + throw new UnsupportedOperationException(); + } + + @Override + public Iterator> iterator() { + return list.iterator(); + } + + @Override + public int size() { + return list.size(); + } + }; + } + return (Set>) entries; + } + + @Override + public V put(K key, V value) { + int size = list.size(); + Entry entry = null; + int i; + if (key == null) { + for (i = 0; i < size; i++) { + entry = (list.get(i)); + if (entry.getKey() == null) { + break; + } + } + } else { + for (i = 0; i < size; i++) { + entry = (list.get(i)); + if (key.equals(entry.getKey())) { + break; + } + } + } + V oldValue = null; + if (i < size) { + oldValue = entry.getValue(); + entry.setValue(value); + } else { + list.add(new Entry<>(key, value)); + } + return oldValue; + } +} diff --git a/src/tools/DatabaseConnection.java b/src/tools/DatabaseConnection.java new file mode 100644 index 0000000000..a988477d48 --- /dev/null +++ b/src/tools/DatabaseConnection.java @@ -0,0 +1,50 @@ +package tools; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +import constants.ServerConstants; + +/** + * @author Frz (Big Daddy) + * @author The Real Spookster (some modifications to this beautiful code) + */ +public class DatabaseConnection { + + public static final int RETURN_GENERATED_KEYS = 1; + + private static ThreadLocal con = new ThreadLocalConnection(); + + public static Connection getConnection() { + Connection c = con.get(); + try { + c.getMetaData(); + } catch (SQLException e) { // connection is dead, therefore discard old object 5ever + con.remove(); + c = con.get(); + } + return c; + } + + private static class ThreadLocalConnection extends ThreadLocal { + + @Override + protected Connection initialValue() { + try { + Class.forName("com.mysql.jdbc.Driver"); // touch the mysql driver + } catch (ClassNotFoundException e) { + System.out.println("[SEVERE] SQL Driver Not Found. Consider death by clams."); + e.printStackTrace(); + return null; + } + try { + return DriverManager.getConnection(ServerConstants.DB_URL, ServerConstants.DB_USER, ServerConstants.DB_PASS); + } catch (SQLException e) { + System.out.println("[SEVERE] Unable to make database connection."); + e.printStackTrace(); + return null; + } + } + } +} diff --git a/src/tools/FilePrinter.java b/src/tools/FilePrinter.java new file mode 100644 index 0000000000..b84e719e8d --- /dev/null +++ b/src/tools/FilePrinter.java @@ -0,0 +1,175 @@ +package tools; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +public class FilePrinter { + + public static final String + ACCOUNT_STUCK = "accountStuck.txt", + EXCEPTION_CAUGHT = "exceptionCaught.txt", + CLIENT_START = "clientStartError.txt", + ADD_PLAYER = "addPlayer.txt", + MAPLE_MAP = "mapleMap.txt", + ERROR38 = "error38.txt", + PACKET_LOG = "log.txt", + EXCEPTION = "exceptions.txt", + PACKET_HANDLER = "PacketHandler/", + PORTAL = "portals/", + NPC = "npcs/", + INVOCABLE = "invocable/", + REACTOR = "reactors/", + QUEST = "quests/", + ITEM = "items/", + MOB_MOVEMENT = "mobmovement.txt", + MAP_SCRIPT = "mapscript/", + DIRECTION = "directions/", + SAVE_CHAR = "saveToDB.txt", + INSERT_CHAR = "insertCharacter.txt", + LOAD_CHAR = "loadCharFromDB.txt", + UNHANDLED_EVENT = "doesNotExist.txt", + SESSION = "sessions.txt", + EXPLOITS = "exploits/", + STORAGE = "storage/", + PACKET_LOGS = "packetlogs/", + DELETED_CHARACTERS = "deletedchars/", + FREDRICK = "fredrick/", + NPC_UNCODED = "uncodedNPCs.txt", + QUEST_UNCODED = "uncodedQuests.txt", + SAVING_CHARACTER = "saveChar.txt";//more to come (maps) + private static final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); + private static final String FILE_PATH = "logs/" + sdf.format(Calendar.getInstance().getTime()) + "/";// + sdf.format(Calendar.getInstance().getTime()) + "/" + private static final String ERROR = "error/"; + + public static void printError(final String name, final Throwable t) { + System.out.println("Error thrown: " + name); + System.out.println(getString(t)); + FileOutputStream out = null; + final String file = FILE_PATH + ERROR + name; + try { + File outputFile = new File(file); + if (outputFile.getParentFile() != null) { + outputFile.getParentFile().mkdirs(); + } + out = new FileOutputStream(file, true); + out.write(getString(t).getBytes()); + out.write("\n---------------------------------\r\n".getBytes()); + } catch (IOException ess) { + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ignore) { + } + } + } + + public static void printError(final String name, final Throwable t, final String info) { + System.out.println("Error thrown: " + name); + System.out.println(getString(t)); + FileOutputStream out = null; + final String file = FILE_PATH + ERROR + name; + try { + File outputFile = new File(file); + if (outputFile.getParentFile() != null) { + outputFile.getParentFile().mkdirs(); + } + out = new FileOutputStream(file, true); + out.write((info + "\r\n").getBytes()); + out.write(getString(t).getBytes()); + out.write("\n---------------------------------\r\n".getBytes()); + } catch (IOException ess) { + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ignore) { + } + } + } + + public static void printError(final String name, final String s) { + System.out.println("Error thrown: " + name); + System.out.println(s); + FileOutputStream out = null; + final String file = FILE_PATH + ERROR + name; + try { + File outputFile = new File(file); + if (outputFile.getParentFile() != null) { + outputFile.getParentFile().mkdirs(); + } + out = new FileOutputStream(file, true); + out.write(s.getBytes()); + //out.write("\n---------------------------------\n".getBytes()); + } catch (IOException ess) { + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ignore) { + } + } + } + + public static void print(final String name, final String s) { + print(name, s, true); + } + + public static void print(final String name, final String s, boolean line) { + System.out.println("Error thrown: " + name); + System.out.println(s); + FileOutputStream out = null; + String file = FILE_PATH + name; + try { + File outputFile = new File(file); + if (outputFile.getParentFile() != null) { + outputFile.getParentFile().mkdirs(); + } + out = new FileOutputStream(file, true); + out.write(s.getBytes()); + out.write("\r\n".getBytes()); + if (line) { + out.write("---------------------------------\r\n".getBytes()); + } + } catch (IOException ess) { + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ignore) { + } + } + } + + private static String getString(final Throwable e) { + String retValue = null; + StringWriter sw = null; + PrintWriter pw = null; + try { + sw = new StringWriter(); + pw = new PrintWriter(sw); + e.printStackTrace(pw); + retValue = sw.toString(); + } finally { + try { + if (pw != null) { + pw.close(); + } + if (sw != null) { + sw.close(); + } + } catch (IOException ignore) { + } + } + return retValue; + } +} \ No newline at end of file diff --git a/src/tools/HexTool.java b/src/tools/HexTool.java new file mode 100644 index 0000000000..8cc0c8aa84 --- /dev/null +++ b/src/tools/HexTool.java @@ -0,0 +1,79 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools; + +import java.io.ByteArrayOutputStream; + +public class HexTool { + private static final char[] HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + + private static String toString(byte byteValue) { + int tmp = byteValue << 8; + char[] retstr = new char[]{HEX[(tmp >> 12) & 0x0F], HEX[(tmp >> 8) & 0x0F]}; + return String.valueOf(retstr); + } + + public static String toString(byte[] bytes) { + StringBuilder hexed = new StringBuilder(); + for (int i = 0; i < bytes.length; i++) { + hexed.append(toString(bytes[i])); + hexed.append(' '); + } + return hexed.substring(0, hexed.length() - 1); + } + + public static byte[] getByteArrayFromHexString(String hex) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int nexti = 0; + int nextb = 0; + boolean highoc = true; + outer: + for (;;) { + int number = -1; + while (number == -1) { + if (nexti == hex.length()) { + break outer; + } + char chr = hex.charAt(nexti); + if (chr >= '0' && chr <= '9') { + number = chr - '0'; + } else if (chr >= 'a' && chr <= 'f') { + number = chr - 'a' + 10; + } else if (chr >= 'A' && chr <= 'F') { + number = chr - 'A' + 10; + } else { + number = -1; + } + nexti++; + } + if (highoc) { + nextb = number << 4; + highoc = false; + } else { + nextb |= number; + highoc = true; + baos.write(nextb); + } + } + return baos.toByteArray(); + } +} diff --git a/src/tools/LogHelper.java b/src/tools/LogHelper.java new file mode 100644 index 0000000000..6392eccd72 --- /dev/null +++ b/src/tools/LogHelper.java @@ -0,0 +1,74 @@ +package tools; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import net.server.Server; +import net.server.channel.Channel; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import server.MapleItemInformationProvider; +import server.MapleTrade; +import server.expeditions.MapleExpedition; +import client.MapleCharacter; +import client.inventory.Item; + +public class LogHelper { + + public static void logTrade(MapleTrade trade1, MapleTrade trade2) { + String name1 = trade1.getChr().getName(); + String name2 = trade2.getChr().getName(); + String log = "TRADE BETWEEN " + name1 + " AND " + name2 + "\r\n"; + //Trade 1 to trade 2 + log += trade1.getExchangeMesos() + " mesos from " + name1 + " to " + name2 + " \r\n"; + for (Item item : trade1.getItems()){ + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()) + "(" + item.getItemId() + ")"; + log += item.getQuantity() + " " + itemName + " from " + name1 + " to " + name2 + " \r\n";; + } + //Trade 2 to trade 1 + log += trade2.getExchangeMesos() + " mesos from " + name2 + " to " + name1 + " \r\n"; + for (Item item : trade2.getItems()){ + String itemName = MapleItemInformationProvider.getInstance().getName(item.getItemId()) + "(" + item.getItemId() + ")"; + log += item.getQuantity() + " " + itemName + " from " + name2 + " to " + name1 + " \r\n";; + } + log += "\r\n\r\n"; + FilePrinter.printError("trades.txt", log); + } + + public static void logExpedition(MapleExpedition expedition) { + Server.getInstance().broadcastGMMessage(MaplePacketCreator.serverNotice(6, expedition.getType().toString() + " Expedition with leader " + expedition.getLeader().getName() + " finished after " + getTimeString(expedition.getStartTime()))); + + String log = expedition.getType().toString() + " EXPEDITION\r\n"; + log += getTimeString(expedition.getStartTime()) + "\r\n"; + + for (MapleCharacter member : expedition.getMembers()){ + log += ">>" + member.getName() + "\r\n"; + } + log += "BOSS KILLS\r\n"; + for (String message: expedition.getBossLogs()){ + log += message; + } + log += "\r\n\r\n"; + FilePrinter.printError("expeditions.txt", log); + } + + public static String getTimeString(long then){ + long duration = System.currentTimeMillis() - then; + int seconds = (int) (duration / 1000) % 60 ; + int minutes = (int) ((duration / (1000*60)) % 60); + return minutes + " Minutes and " + seconds + " Seconds"; + } + + public static void logLeaf(MapleCharacter player, boolean gotPrize, String operation) { + String timeStamp = new SimpleDateFormat("dd-M-yyyy hh:mm:ss").format(new Date()); + String log = player.getName() + (gotPrize ? " used a maple leaf to buy " + operation : " redeemed " + operation + " VP for a leaf") + " - " + timeStamp + "\r\n"; + FilePrinter.printError("mapleleaves.txt", log); + } + + public static void logGacha(MapleCharacter player, int itemid, String map) { + String itemName = MapleItemInformationProvider.getInstance().getName(itemid); + String timeStamp = new SimpleDateFormat("dd-M-yyyy hh:mm:ss").format(new Date()); + String log = player.getName() + " got a " + itemName + "(" + itemid + ") from the " + map + " gachapon. - " + timeStamp + "\r\n"; + FilePrinter.printError("gachapon.txt", log); + } +} diff --git a/src/tools/MapleAESOFB.java b/src/tools/MapleAESOFB.java new file mode 100644 index 0000000000..bf7c9b74ec --- /dev/null +++ b/src/tools/MapleAESOFB.java @@ -0,0 +1,194 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.spec.SecretKeySpec; + +public class MapleAESOFB { + private byte iv[]; + private Cipher cipher; + private short mapleVersion; + private static final byte[] funnyBytes = new byte[]{(byte) 0xEC, (byte) 0x3F, (byte) 0x77, (byte) 0xA4, (byte) 0x45, (byte) 0xD0, (byte) 0x71, (byte) 0xBF, (byte) 0xB7, (byte) 0x98, (byte) 0x20, (byte) 0xFC, + (byte) 0x4B, (byte) 0xE9, (byte) 0xB3, (byte) 0xE1, (byte) 0x5C, (byte) 0x22, (byte) 0xF7, (byte) 0x0C, (byte) 0x44, (byte) 0x1B, (byte) 0x81, (byte) 0xBD, (byte) 0x63, (byte) 0x8D, (byte) 0xD4, (byte) 0xC3, + (byte) 0xF2, (byte) 0x10, (byte) 0x19, (byte) 0xE0, (byte) 0xFB, (byte) 0xA1, (byte) 0x6E, (byte) 0x66, (byte) 0xEA, (byte) 0xAE, (byte) 0xD6, (byte) 0xCE, (byte) 0x06, (byte) 0x18, (byte) 0x4E, (byte) 0xEB, + (byte) 0x78, (byte) 0x95, (byte) 0xDB, (byte) 0xBA, (byte) 0xB6, (byte) 0x42, (byte) 0x7A, (byte) 0x2A, (byte) 0x83, (byte) 0x0B, (byte) 0x54, (byte) 0x67, (byte) 0x6D, (byte) 0xE8, (byte) 0x65, (byte) 0xE7, + (byte) 0x2F, (byte) 0x07, (byte) 0xF3, (byte) 0xAA, (byte) 0x27, (byte) 0x7B, (byte) 0x85, (byte) 0xB0, (byte) 0x26, (byte) 0xFD, (byte) 0x8B, (byte) 0xA9, (byte) 0xFA, (byte) 0xBE, (byte) 0xA8, (byte) 0xD7, + (byte) 0xCB, (byte) 0xCC, (byte) 0x92, (byte) 0xDA, (byte) 0xF9, (byte) 0x93, (byte) 0x60, (byte) 0x2D, (byte) 0xDD, (byte) 0xD2, (byte) 0xA2, (byte) 0x9B, (byte) 0x39, (byte) 0x5F, (byte) 0x82, (byte) 0x21, + (byte) 0x4C, (byte) 0x69, (byte) 0xF8, (byte) 0x31, (byte) 0x87, (byte) 0xEE, (byte) 0x8E, (byte) 0xAD, (byte) 0x8C, (byte) 0x6A, (byte) 0xBC, (byte) 0xB5, (byte) 0x6B, (byte) 0x59, (byte) 0x13, (byte) 0xF1, + (byte) 0x04, (byte) 0x00, (byte) 0xF6, (byte) 0x5A, (byte) 0x35, (byte) 0x79, (byte) 0x48, (byte) 0x8F, (byte) 0x15, (byte) 0xCD, (byte) 0x97, (byte) 0x57, (byte) 0x12, (byte) 0x3E, (byte) 0x37, (byte) 0xFF, + (byte) 0x9D, (byte) 0x4F, (byte) 0x51, (byte) 0xF5, (byte) 0xA3, (byte) 0x70, (byte) 0xBB, (byte) 0x14, (byte) 0x75, (byte) 0xC2, (byte) 0xB8, (byte) 0x72, (byte) 0xC0, (byte) 0xED, (byte) 0x7D, (byte) 0x68, + (byte) 0xC9, (byte) 0x2E, (byte) 0x0D, (byte) 0x62, (byte) 0x46, (byte) 0x17, (byte) 0x11, (byte) 0x4D, (byte) 0x6C, (byte) 0xC4, (byte) 0x7E, (byte) 0x53, (byte) 0xC1, (byte) 0x25, (byte) 0xC7, (byte) 0x9A, + (byte) 0x1C, (byte) 0x88, (byte) 0x58, (byte) 0x2C, (byte) 0x89, (byte) 0xDC, (byte) 0x02, (byte) 0x64, (byte) 0x40, (byte) 0x01, (byte) 0x5D, (byte) 0x38, (byte) 0xA5, (byte) 0xE2, (byte) 0xAF, (byte) 0x55, + (byte) 0xD5, (byte) 0xEF, (byte) 0x1A, (byte) 0x7C, (byte) 0xA7, (byte) 0x5B, (byte) 0xA6, (byte) 0x6F, (byte) 0x86, (byte) 0x9F, (byte) 0x73, (byte) 0xE6, (byte) 0x0A, (byte) 0xDE, (byte) 0x2B, (byte) 0x99, + (byte) 0x4A, (byte) 0x47, (byte) 0x9C, (byte) 0xDF, (byte) 0x09, (byte) 0x76, (byte) 0x9E, (byte) 0x30, (byte) 0x0E, (byte) 0xE4, (byte) 0xB2, (byte) 0x94, (byte) 0xA0, (byte) 0x3B, (byte) 0x34, (byte) 0x1D, + (byte) 0x28, (byte) 0x0F, (byte) 0x36, (byte) 0xE3, (byte) 0x23, (byte) 0xB4, (byte) 0x03, (byte) 0xD8, (byte) 0x90, (byte) 0xC8, (byte) 0x3C, (byte) 0xFE, (byte) 0x5E, (byte) 0x32, (byte) 0x24, (byte) 0x50, + (byte) 0x1F, (byte) 0x3A, (byte) 0x43, (byte) 0x8A, (byte) 0x96, (byte) 0x41, (byte) 0x74, (byte) 0xAC, (byte) 0x52, (byte) 0x33, (byte) 0xF0, (byte) 0xD9, (byte) 0x29, (byte) 0x80, (byte) 0xB1, (byte) 0x16, + (byte) 0xD3, (byte) 0xAB, (byte) 0x91, (byte) 0xB9, (byte) 0x84, (byte) 0x7F, (byte) 0x61, (byte) 0x1E, (byte) 0xCF, (byte) 0xC5, (byte) 0xD1, (byte) 0x56, (byte) 0x3D, (byte) 0xCA, (byte) 0xF4, (byte) 0x05, + (byte) 0xC6, (byte) 0xE5, (byte) 0x08, (byte) 0x49}; + + public MapleAESOFB(byte key[], byte iv[], short mapleVersion) { + SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); + try { + cipher = Cipher.getInstance("AES"); + } catch (NoSuchAlgorithmException e) { + System.out.println("ERROR " + e); + } catch (NoSuchPaddingException e) { + System.out.println("ERROR " + e); + } + try { + cipher.init(Cipher.ENCRYPT_MODE, skeySpec); + } catch (InvalidKeyException e) { + } + this.setIv(iv); + this.mapleVersion = (short) (((mapleVersion >> 8) & 0xFF) | ((mapleVersion << 8) & 0xFF00)); + } + + private void setIv(byte[] iv) { + this.iv = iv; + } + + private static byte[] multiplyBytes(byte[] in, int count, int mul) { + byte[] ret = new byte[count * mul]; + for (int x = 0; x < count * mul; x++) { + ret[x] = in[x % count]; + } + return ret; + } + + public synchronized byte[] crypt(byte[] data) { + int remaining = data.length; + int llength = 0x5B0; + int start = 0; + while (remaining > 0) { + byte[] myIv = multiplyBytes(this.iv, 4, 4); + if (remaining < llength) { + llength = remaining; + } + for (int x = start; x < (start + llength); x++) { + if ((x - start) % myIv.length == 0) { + try { + byte[] newIv = cipher.doFinal(myIv); + for (int j = 0; j < myIv.length; j++) { + myIv[j] = newIv[j]; + } + } catch (IllegalBlockSizeException e) { + } catch (BadPaddingException e) { + } + } + data[x] ^= myIv[(x - start) % myIv.length]; + } + start += llength; + remaining -= llength; + llength = 0x5B4; + } + updateIv(); + return data; + } + + private synchronized void updateIv() { + this.iv = getNewIv(this.iv); + } + + public byte[] getPacketHeader(int length) { + int iiv = (iv[3]) & 0xFF; + iiv |= (iv[2] << 8) & 0xFF00; + iiv ^= mapleVersion; + int mlength = ((length << 8) & 0xFF00) | (length >>> 8); + int xoredIv = iiv ^ mlength; + byte[] ret = new byte[4]; + ret[0] = (byte) ((iiv >>> 8) & 0xFF); + ret[1] = (byte) (iiv & 0xFF); + ret[2] = (byte) ((xoredIv >>> 8) & 0xFF); + ret[3] = (byte) (xoredIv & 0xFF); + return ret; + } + + public static int getPacketLength(int packetHeader) { + int packetLength = ((packetHeader >>> 16) ^ (packetHeader & 0xFFFF)); + packetLength = ((packetLength << 8) & 0xFF00) | ((packetLength >>> 8) & 0xFF); + return packetLength; + } + + public boolean checkPacket(byte[] packet) { + return ((((packet[0] ^ iv[2]) & 0xFF) == ((mapleVersion >> 8) & 0xFF)) && (((packet[1] ^ iv[3]) & 0xFF) == (mapleVersion & 0xFF))); + } + + public boolean checkPacket(int packetHeader) { + byte packetHeaderBuf[] = new byte[2]; + packetHeaderBuf[0] = (byte) ((packetHeader >> 24) & 0xFF); + packetHeaderBuf[1] = (byte) ((packetHeader >> 16) & 0xFF); + return checkPacket(packetHeaderBuf); + } + + public static byte[] getNewIv(byte oldIv[]) { + byte[] in = {(byte) 0xf2, 0x53, (byte) 0x50, (byte) 0xc6}; + for (int x = 0; x < 4; x++) { + funnyShit(oldIv[x], in); + } + return in; + } + + @Override + public String toString() { + return "IV: " + HexTool.toString(this.iv); + } + + private static byte[] funnyShit(byte inputByte, byte[] in) { + byte elina = in[1]; + byte anna = inputByte; + byte moritz = funnyBytes[(int) elina & 0xFF]; + moritz -= inputByte; + in[0] += moritz; + moritz = in[2]; + moritz ^= funnyBytes[(int) anna & 0xFF]; + elina -= (int) moritz & 0xFF; + in[1] = elina; + elina = in[3]; + moritz = elina; + elina -= (int) in[0] & 0xFF; + moritz = funnyBytes[(int) moritz & 0xFF]; + moritz += inputByte; + moritz ^= in[2]; + in[2] = moritz; + elina += (int) funnyBytes[(int) anna & 0xFF] & 0xFF; + in[3] = elina; + int merry = ((int) in[0]) & 0xFF; + merry |= (in[1] << 8) & 0xFF00; + merry |= (in[2] << 16) & 0xFF0000; + merry |= (in[3] << 24) & 0xFF000000; + int ret_value = merry; + ret_value = ret_value >>> 0x1d; + merry = merry << 3; + ret_value = ret_value | merry; + in[0] = (byte) (ret_value & 0xFF); + in[1] = (byte) ((ret_value >> 8) & 0xFF); + in[2] = (byte) ((ret_value >> 16) & 0xFF); + in[3] = (byte) ((ret_value >> 24) & 0xFF); + return in; + } +} diff --git a/src/tools/MapleLogger.java b/src/tools/MapleLogger.java new file mode 100644 index 0000000000..d3cb594e92 --- /dev/null +++ b/src/tools/MapleLogger.java @@ -0,0 +1,78 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 ~ 2010 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License version 3 + as published by the Free Software Foundation. You may not use, modify + or distribute this program under any other version of the + GNU Affero General Public License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package tools; + +import java.util.ArrayList; +import java.util.List; + +import net.RecvOpcode; +import client.MapleClient; + +/** + * Logs packets to console and file. + * + * @author SharpAceX (Alan) + */ + +public class MapleLogger { + + public static List monitored = new ArrayList<>(); + public static List ignored = new ArrayList<>(); + + public static void logRecv(MapleClient c, short packetId, Object message) { + if (c.getPlayer() == null){ + return; + } + if (!monitored.contains(c.getPlayer().getName())){ + return; + } + RecvOpcode op = getOpcodeFromValue(packetId); + if (isRecvBlocked(op)){ + return; + } + String packet = op.toString() + "\r\n" + HexTool.toString((byte[]) message); + FilePrinter.printError(FilePrinter.PACKET_LOGS + c.getAccountName() + "-" + c.getPlayer().getName() + ".txt", packet + "\r\n\r\n"); + } + + private static final boolean isRecvBlocked(RecvOpcode op){ + switch(op){ + case MOVE_PLAYER: + case GENERAL_CHAT: + case TAKE_DAMAGE: + case MOVE_PET: + case MOVE_LIFE: + case NPC_ACTION: + case FACE_EXPRESSION: + return true; + default: + return false; + } + } + + private static final RecvOpcode getOpcodeFromValue(int value){ + for (RecvOpcode op : RecvOpcode.values()){ + if (op.getValue() == value){ + return op; + } + } + return null; + } +} diff --git a/src/tools/MaplePacketCreator.java b/src/tools/MaplePacketCreator.java new file mode 100644 index 0000000000..794843fb10 --- /dev/null +++ b/src/tools/MaplePacketCreator.java @@ -0,0 +1,6986 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package tools; + +import java.awt.Point; +import java.net.InetAddress; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import net.SendOpcode; +import net.server.PlayerCoolDownValueHolder; +import net.server.Server; +import net.server.channel.Channel; +import net.server.channel.handlers.PlayerInteractionHandler; +import net.server.channel.handlers.SummonDamageHandler.SummonAttackEntry; +import net.server.guild.MapleAlliance; +import net.server.guild.MapleGuild; +import net.server.guild.MapleGuildCharacter; +import net.server.guild.MapleGuildSummary; +import net.server.world.MapleParty; +import net.server.world.MaplePartyCharacter; +import net.server.world.PartyOperation; +import server.CashShop.CashItem; +import server.CashShop.CashItemFactory; +import server.CashShop.SpecialCashItem; +import server.DueyPackages; +import server.MTSItemInfo; +import server.MapleItemInformationProvider; +import server.MapleMiniGame; +import server.MaplePlayerShop; +import server.MaplePlayerShopItem; +import server.MapleShopItem; +import server.MapleTrade; +import server.events.gm.MapleSnowball; +import server.life.MapleMonster; +import server.life.MapleNPC; +import server.life.MobSkill; +import server.maps.HiredMerchant; +import server.maps.MapleDoor; +import server.maps.MapleDragon; +import server.maps.MapleMap; +import server.maps.MapleMapItem; +import server.maps.MapleMist; +import server.maps.MapleReactor; +import server.maps.MapleSummon; +import server.maps.PlayerNPCs; +import server.movement.LifeMovementFragment; +import server.partyquest.MonsterCarnivalParty; +import tools.data.output.LittleEndianWriter; +import tools.data.output.MaplePacketLittleEndianWriter; +import client.BuddylistEntry; +import client.MapleBuffStat; +import client.MapleCharacter; +import client.MapleCharacter.SkillEntry; +import client.MapleClient; +import client.MapleDisease; +import client.MapleFamilyEntry; +import client.MapleKeyBinding; +import client.MapleMount; +import client.MapleQuestStatus; +import client.MapleRing; +import client.MapleStat; +import client.Skill; +import client.SkillMacro; +import client.inventory.Equip; +import client.inventory.Equip.ScrollResult; +import client.inventory.Item; +import client.inventory.ItemFactory; +import client.inventory.MapleInventory; +import client.inventory.MapleInventoryType; +import client.inventory.MaplePet; +import client.inventory.ModifyInventory; +import client.status.MonsterStatus; +import client.status.MonsterStatusEffect; +import constants.GameConstants; +import constants.ItemConstants; +import constants.ServerConstants; +import constants.skills.Buccaneer; +import constants.skills.Corsair; +import constants.skills.ThunderBreaker; + +/** + * + * @author Frz + */ +public class MaplePacketCreator { + + public static final List> EMPTY_STATUPDATE = Collections.emptyList(); + private final static long FT_UT_OFFSET = 116444592000000000L; // EDT + private final static long DEFAULT_TIME = 150842304000000000L;//00 80 05 BB 46 E6 17 02 + public final static long ZERO_TIME = 94354848000000000L;//00 40 E0 FD 3B 37 4F 01 + private final static long PERMANENT = 150841440000000000L; // 00 C0 9B 90 7D E5 17 02 + + private static long getTime(long realTimestamp) { + if (realTimestamp == -1) { + return DEFAULT_TIME;//high number ll + } else if (realTimestamp == -2) { + return ZERO_TIME; + } else if (realTimestamp == -3) { + return PERMANENT; + } + return realTimestamp * 10000 + FT_UT_OFFSET; + } + + public static byte[] showHpHealed(int cid, int amount) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(cid); + mplew.write(0x0A); //Type + mplew.write(amount); + return mplew.getPacket(); + } + + private static void addCharStats(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeInt(chr.getId()); // character id + mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getName(), '\0', 13)); + mplew.write(chr.getGender()); // gender (0 = male, 1 = female) + mplew.write(chr.getSkinColor().getId()); // skin color + mplew.writeInt(chr.getFace()); // face + mplew.writeInt(chr.getHair()); // hair + + for (int i = 0; i < 3; i++) { + if (chr.getPet(i) != null) //Checked GMS.. and your pets stay when going into the cash shop. + { + mplew.writeLong(chr.getPet(i).getUniqueId()); + } else { + mplew.writeLong(0); + } + } + + mplew.write(chr.getLevel()); // level + mplew.writeShort(chr.getJob().getId()); // job + mplew.writeShort(chr.getStr()); // str + mplew.writeShort(chr.getDex()); // dex + mplew.writeShort(chr.getInt()); // int + mplew.writeShort(chr.getLuk()); // luk + mplew.writeShort(chr.getHp()); // hp (?) + mplew.writeShort(chr.getMaxHp()); // maxhp + mplew.writeShort(chr.getMp()); // mp (?) + mplew.writeShort(chr.getMaxMp()); // maxmp + mplew.writeShort(chr.getRemainingAp()); // remaining ap + if (GameConstants.hasSPTable(chr.getJob())) { + mplew.write(chr.getRemainingSpSize()); + for (int i = 0; i < chr.getRemainingSps().length; i++) { + if (chr.getRemainingSpBySkill(i) > 0) { + mplew.write(i + 1); + mplew.write(chr.getRemainingSpBySkill(i)); + } + } + } else { + mplew.writeShort(chr.getRemainingSp()); // remaining sp + } + mplew.writeInt(chr.getExp()); // current exp + mplew.writeShort(chr.getFame()); // fame + mplew.writeInt(chr.getGachaExp()); //Gacha Exp + mplew.writeInt(chr.getMapId()); // current map id + mplew.write(chr.getInitialSpawnpoint()); // spawnpoint + mplew.writeInt(0); + } + + private static void addCharLook(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr, boolean mega) { + mplew.write(chr.getGender()); + mplew.write(chr.getSkinColor().getId()); // skin color + mplew.writeInt(chr.getFace()); // face + mplew.write(mega ? 0 : 1); + mplew.writeInt(chr.getHair()); // hair + addCharEquips(mplew, chr); + } + + private static void addCharacterInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeLong(-1); + mplew.write(0); + addCharStats(mplew, chr); + mplew.write(chr.getBuddylist().getCapacity()); + + if (chr.getLinkedName() == null) { + mplew.write(0); + } else { + mplew.write(1); + mplew.writeMapleAsciiString(chr.getLinkedName()); + } + + mplew.writeInt(chr.getMeso()); + addInventoryInfo(mplew, chr); + addSkillInfo(mplew, chr); + addQuestInfo(mplew, chr); + addMiniGameInfo(mplew, chr); + addRingInfo(mplew, chr); + addTeleportInfo(mplew, chr); + addMonsterBookInfo(mplew, chr); + addNewYearInfo(mplew, chr);//have fun! + addAreaInfo(mplew, chr);//assuming it stayed here xd + mplew.writeShort(0); + } + + private static void addNewYearInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeShort(0); + /* + *(_DWORD *)this = CInPacket::Decode4(a2); + *((_DWORD *)v2 + 1) = CInPacket::Decode4(a2); + CInPacket::DecodeStr(&v7); + v9 = 0; + (*(void (__stdcall **)(char *, int))((char *)&loc_B1410B + 1))((char *)v2 + 8, v7); + *(_DWORD *)((char *)v2 + 21) = (unsigned __int8)CInPacket::Decode1(a2); + CInPacket::DecodeBuffer((char *)v2 + 25, 8); + *(_DWORD *)((char *)v2 + 33) = CInPacket::Decode4(a2); + CInPacket::DecodeStr(&v6); + LOBYTE(v8) = 1; + (*(void (__stdcall **)(char *, int))((char *)&loc_B1410B + 1))((char *)v2 + 37, v6); + *(_DWORD *)((char *)v2 + 50) = (unsigned __int8)CInPacket::Decode1(a2); + *(_DWORD *)((char *)v2 + 54) = (unsigned __int8)CInPacket::Decode1(a2); + CInPacket::DecodeBuffer((char *)v2 + 58, 8); + CInPacket::DecodeStr(&v9); + */ + } + + private static void addTeleportInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + final List tele = chr.getTrockMaps(); + final List viptele = chr.getVipTrockMaps(); + for (int i = 0; i < 5; i++) { + mplew.writeInt(tele.get(i)); + } + for (int i = 0; i < 10; i++) { + mplew.writeInt(viptele.get(i)); + } + } + + private static void addMiniGameInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeShort(0); + /*for (int m = size; m > 0; m--) {//nexon does this :P + mplew.writeInt(0); + mplew.writeInt(0); + mplew.writeInt(0); + mplew.writeInt(0); + mplew.writeInt(0); + }*/ + } + + private static void addAreaInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + Map areaInfos = chr.getAreaInfos(); + mplew.writeShort(areaInfos.size()); + for (Short area : areaInfos.keySet()) { + mplew.writeShort(area); + mplew.writeMapleAsciiString(areaInfos.get(area)); + } + } + + private static void addCharEquips(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + MapleInventory equip = chr.getInventory(MapleInventoryType.EQUIPPED); + Collection ii = MapleItemInformationProvider.getInstance().canWearEquipment(chr, equip.list()); + Map myEquip = new LinkedHashMap<>(); + Map maskedEquip = new LinkedHashMap<>(); + for (Item item : ii) { + short pos = (byte) (item.getPosition() * -1); + if (pos < 100 && myEquip.get(pos) == null) { + myEquip.put(pos, item.getItemId()); + } else if (pos > 100 && pos != 111) { // don't ask. o.o + pos -= 100; + if (myEquip.get(pos) != null) { + maskedEquip.put(pos, myEquip.get(pos)); + } + myEquip.put(pos, item.getItemId()); + } else if (myEquip.get(pos) != null) { + maskedEquip.put(pos, item.getItemId()); + } + } + for (Entry entry : myEquip.entrySet()) { + mplew.write(entry.getKey()); + mplew.writeInt(entry.getValue()); + } + mplew.write(0xFF); + for (Entry entry : maskedEquip.entrySet()) { + mplew.write(entry.getKey()); + mplew.writeInt(entry.getValue()); + } + mplew.write(0xFF); + Item cWeapon = equip.getItem((short) -111); + mplew.writeInt(cWeapon != null ? cWeapon.getItemId() : 0); + for (int i = 0; i < 3; i++) { + if (chr.getPet(i) != null) { + mplew.writeInt(chr.getPet(i).getItemId()); + } else { + mplew.writeInt(0); + } + } + } + + private static void addCharEntry(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr, boolean viewall) { + addCharStats(mplew, chr); + addCharLook(mplew, chr, false); + if (!viewall) { + mplew.write(0); + } + if (chr.isGM()) { + mplew.write(0); + return; + } + mplew.write(1); // world rank enabled (next 4 ints are not sent if disabled) Short?? + mplew.writeInt(chr.getRank()); // world rank + mplew.writeInt(chr.getRankMove()); // move (negative is downwards) + mplew.writeInt(chr.getJobRank()); // job rank + mplew.writeInt(chr.getJobRankMove()); // move (negative is downwards) + } + + private static void addQuestInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeShort(chr.getStartedQuestsSize()); + for (MapleQuestStatus q : chr.getStartedQuests()) { + mplew.writeShort(q.getQuest().getId()); + mplew.writeMapleAsciiString(q.getQuestData()); + if (q.getQuest().getInfoNumber() > 0) { + mplew.writeShort(q.getQuest().getInfoNumber()); + mplew.writeMapleAsciiString(q.getQuestData()); + } + } + List completed = chr.getCompletedQuests(); + mplew.writeShort(completed.size()); + for (MapleQuestStatus q : completed) { + mplew.writeShort(q.getQuest().getId()); + mplew.writeLong(getTime(q.getCompletionTime())); + } + } + + private static void addItemInfo(final MaplePacketLittleEndianWriter mplew, Item item) { + addItemInfo(mplew, item, false); + } + + private static void addExpirationTime(final MaplePacketLittleEndianWriter mplew, long time) { + mplew.writeLong(getTime(time)); + } + + private static void addItemInfo(final MaplePacketLittleEndianWriter mplew, Item item, boolean zeroPosition) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + boolean isCash = ii.isCash(item.getItemId()); + boolean isPet = item.getPetId() > -1; + boolean isRing = false; + Equip equip = null; + short pos = item.getPosition(); + if (item.getType() == 1) { + equip = (Equip) item; + isRing = equip.getRingId() > -1; + } + if (!zeroPosition) { + if (equip != null) { + if (pos < 0) { + pos *= -1; + } + mplew.writeShort(pos > 100 ? pos - 100 : pos); + } else { + mplew.write(pos); + } + } + mplew.write(item.getType()); + mplew.writeInt(item.getItemId()); + mplew.writeBool(isCash); + if (isCash) { + mplew.writeLong(isPet ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()); + } + addExpirationTime(mplew, item.getExpiration()); + if (isPet) { + MaplePet pet = item.getPet(); + mplew.writeAsciiString(StringUtil.getRightPaddedStr(pet.getName(), '\0', 13)); + mplew.write(pet.getLevel()); + mplew.writeShort(pet.getCloseness()); + mplew.write(pet.getFullness()); + addExpirationTime(mplew, item.getExpiration()); + mplew.writeInt(0); + mplew.write(new byte[]{(byte) 0x50, (byte) 0x46}); //wonder what this is + mplew.writeInt(0); + return; + } + if (equip == null) { + mplew.writeShort(item.getQuantity()); + mplew.writeMapleAsciiString(item.getOwner()); + mplew.writeShort(item.getFlag()); // flag + + if (ItemConstants.isRechargable(item.getItemId())) { + mplew.writeInt(2); + mplew.write(new byte[]{(byte) 0x54, 0, 0, (byte) 0x34}); + } + return; + } + mplew.write(equip.getUpgradeSlots()); // upgrade slots + mplew.write(equip.getLevel()); // level + mplew.writeShort(equip.getStr()); // str + mplew.writeShort(equip.getDex()); // dex + mplew.writeShort(equip.getInt()); // int + mplew.writeShort(equip.getLuk()); // luk + mplew.writeShort(equip.getHp()); // hp + mplew.writeShort(equip.getMp()); // mp + mplew.writeShort(equip.getWatk()); // watk + mplew.writeShort(equip.getMatk()); // matk + mplew.writeShort(equip.getWdef()); // wdef + mplew.writeShort(equip.getMdef()); // mdef + mplew.writeShort(equip.getAcc()); // accuracy + mplew.writeShort(equip.getAvoid()); // avoid + mplew.writeShort(equip.getHands()); // hands + mplew.writeShort(equip.getSpeed()); // speed + mplew.writeShort(equip.getJump()); // jump + mplew.writeMapleAsciiString(equip.getOwner()); // owner name + mplew.writeShort(equip.getFlag()); //Item Flags + + if (isCash) { + for (int i = 0; i < 10; i++) { + mplew.write(0x40); + } + } else { + mplew.write(0); + mplew.write(equip.getItemLevel()); //Item Level + mplew.writeShort(0); + mplew.writeShort(equip.getItemExp()); //Works pretty weird :s + mplew.writeInt(equip.getVicious()); //WTF NEXON ARE YOU SERIOUS? + mplew.writeLong(0); + } + mplew.writeLong(getTime(-2)); + mplew.writeInt(-1); + + } + + private static void addInventoryInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + for (byte i = 1; i <= 5; i++) { + mplew.write(chr.getInventory(MapleInventoryType.getByType(i)).getSlotLimit()); + } + mplew.writeLong(getTime(-2)); + MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED); + Collection equippedC = iv.list(); + List equipped = new ArrayList<>(equippedC.size()); + List equippedCash = new ArrayList<>(equippedC.size()); + for (Item item : equippedC) { + if (item.getPosition() <= -100) { + equippedCash.add((Item) item); + } else { + equipped.add((Item) item); + } + } + Collections.sort(equipped); + for (Item item : equipped) { + addItemInfo(mplew, item); + } + mplew.writeShort(0); // start of equip cash + for (Item item : equippedCash) { + addItemInfo(mplew, item); + } + mplew.writeShort(0); // start of equip inventory + for (Item item : chr.getInventory(MapleInventoryType.EQUIP).list()) { + addItemInfo(mplew, item); + } + mplew.writeInt(0); + for (Item item : chr.getInventory(MapleInventoryType.USE).list()) { + addItemInfo(mplew, item); + } + mplew.write(0); + for (Item item : chr.getInventory(MapleInventoryType.SETUP).list()) { + addItemInfo(mplew, item); + } + mplew.write(0); + for (Item item : chr.getInventory(MapleInventoryType.ETC).list()) { + addItemInfo(mplew, item); + } + mplew.write(0); + for (Item item : chr.getInventory(MapleInventoryType.CASH).list()) { + addItemInfo(mplew, item); + } + } + + private static void addSkillInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.write(0); // start of skills + Map skills = chr.getSkills(); + int skillsSize = skills.size(); + // We don't want to include any hidden skill in this, so subtract them from the size list and ignore them. + for (Iterator> it = skills.entrySet().iterator(); it.hasNext();) { + Entry skill = it.next(); + if (GameConstants.isHiddenSkills(skill.getKey().getId())) { + skillsSize--; + } + } + mplew.writeShort(skillsSize); + for (Iterator> it = skills.entrySet().iterator(); it.hasNext();) { + Entry skill = it.next(); + if (GameConstants.isHiddenSkills(skill.getKey().getId())) { + continue; + } + mplew.writeInt(skill.getKey().getId()); + mplew.writeInt(skill.getValue().skillevel); + addExpirationTime(mplew, skill.getValue().expiration); + if (skill.getKey().isFourthJob()) { + mplew.writeInt(skill.getValue().masterlevel); + } + } + mplew.writeShort(chr.getAllCooldowns().size()); + for (PlayerCoolDownValueHolder cooling : chr.getAllCooldowns()) { + mplew.writeInt(cooling.skillId); + int timeLeft = (int) (cooling.length + cooling.startTime - System.currentTimeMillis()); + mplew.writeShort(timeLeft / 1000); + } + } + + private static void addMonsterBookInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeInt(chr.getMonsterBookCover()); // cover + mplew.write(0); + Map cards = chr.getMonsterBook().getCards(); + mplew.writeShort(cards.size()); + for (Entry all : cards.entrySet()) { + mplew.writeShort(all.getKey() % 10000); // Id + mplew.write(all.getValue()); // Level + } + } + + public static byte[] sendGuestTOS() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUEST_ID_LOGIN.getValue()); + mplew.writeShort(0x100); + mplew.writeInt(Randomizer.nextInt(999999)); + mplew.writeLong(0); + mplew.writeLong(getTime(-2)); + mplew.writeLong(getTime(System.currentTimeMillis())); + mplew.writeInt(0); + mplew.writeMapleAsciiString("http://maplesolaxia.com"); + return mplew.getPacket(); + } + + /** + * Sends a hello packet. + * + * @param mapleVersion The maple client version. + * @param sendIv the IV used by the server for sending + * @param recvIv the IV used by the server for receiving + * @return + */ + public static byte[] getHello(short mapleVersion, byte[] sendIv, byte[] recvIv) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); + mplew.writeShort(0x0E); + mplew.writeShort(mapleVersion); + mplew.writeShort(1); + mplew.write(49); + mplew.write(recvIv); + mplew.write(sendIv); + mplew.write(8); + return mplew.getPacket(); + } + + /** + * Sends a ping packet. + * + * @return The packet. + */ + public static byte[] getPing() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); + mplew.writeShort(SendOpcode.PING.getValue()); + return mplew.getPacket(); + } + + /** + * Gets a login failed packet. + * + * Possible values for reason:
    3: ID deleted or blocked
    + * 4: Incorrect password
    5: Not a registered id
    6: System error
    + * 7: Already logged in
    8: System error
    9: System error
    10: + * Cannot process so many connections
    11: Only users older than 20 can + * use this channel
    13: Unable to log on as master at this ip
    14: + * Wrong gateway or personal info and weird korean button
    15: Processing + * request with that korean button!
    16: Please verify your account + * through email...
    17: Wrong gateway or personal info
    21: Please + * verify your account through email...
    23: License agreement
    25: + * Maple Europe notice =[ FUCK YOU NEXON
    27: Some weird full client + * notice, probably for trial versions
    + * + * @param reason The reason logging in failed. + * @return The login failed packet. + */ + public static byte[] getLoginFailed(int reason) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); + mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); + mplew.write(reason); + mplew.write(0); + mplew.writeInt(0); + return mplew.getPacket(); + } + + /** + * Gets a login failed packet. + * + * Possible values for reason:
    2: ID deleted or blocked
    + * 3: ID deleted or blocked
    4: Incorrect password
    5: Not a + * registered id
    6: Trouble logging into the game?
    7: Already logged + * in
    8: Trouble logging into the game?
    9: Trouble logging into the + * game?
    10: Cannot process so many connections
    11: Only users older + * than 20 can use this channel
    12: Trouble logging into the game?
    + * 13: Unable to log on as master at this ip
    14: Wrong gateway or + * personal info and weird korean button
    15: Processing request with + * that korean button!
    16: Please verify your account through + * email...
    17: Wrong gateway or personal info
    21: Please verify + * your account through email...
    23: Crashes
    25: Maple Europe notice + * =[ FUCK YOU NEXON
    27: Some weird full client notice, probably for + * trial versions
    + * + * @param reason The reason logging in failed. + * @return The login failed packet. + */ + public static byte[] getAfterLoginError(int reason) {//same as above o.o + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); + mplew.writeShort(SendOpcode.SELECT_CHARACTER_BY_VAC.getValue()); + mplew.writeShort(reason);//using other types then stated above = CRASH + return mplew.getPacket(); + } + + public static byte[] sendPolice() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAKE_GM_NOTICE.getValue()); + mplew.write(0);//doesn't even matter what value + return mplew.getPacket(); + } + + public static byte[] sendPolice(String text) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DATA_CRC_CHECK_FAILED.getValue()); + mplew.writeMapleAsciiString(text); + return mplew.getPacket(); + } + + public static byte[] getPermBan(byte reason) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); + mplew.write(2); // Account is banned + mplew.write(0); + mplew.writeInt(0); + mplew.write(0); + mplew.writeLong(getTime(-1)); + + return mplew.getPacket(); + } + + public static byte[] getTempBan(long timestampTill, byte reason) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(17); + mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); + mplew.write(2); + mplew.write(0); + mplew.writeInt(0); + mplew.write(reason); + mplew.writeLong(getTime(timestampTill)); // Tempban date is handled as a 64-bit long, number of 100NS intervals since 1/1/1601. Lulz. + + return mplew.getPacket(); + } + + /** + * Gets a successful authentication and PIN Request packet. + * + * @param c + * @param account The account name. + * @return The PIN request packet. + */ + public static byte[] getAuthSuccess(MapleClient c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.LOGIN_STATUS.getValue()); + mplew.writeInt(0); + mplew.writeShort(0); + mplew.writeInt(c.getAccID()); //user id + mplew.write(c.getGender()); + mplew.writeBool(c.getGMLevel() > 0); //admin byte + short toWrite = (short) (c.getGMLevel() * 64); + //toWrite = toWrite |= 0x100; only in higher versions + mplew.write(toWrite >= 0x80 ? 0x80 : 0);//0x80 is admin, 0x20 and 0x40 = subgm + mplew.writeBool(c.getGMLevel() > 0); + //mplew.writeShort(toWrite > 0x80 ? 0x80 : toWrite); only in higher versions... + mplew.writeMapleAsciiString(c.getAccountName()); + mplew.write(0); + mplew.write(0); //isquietbanned + mplew.writeLong(0);//isquietban time + mplew.writeLong(c.getSessionId()); //creation time + mplew.writeInt(0); + mplew.writeShort(2);//PIN + + return mplew.getPacket(); + } + + /** + * Gets a packet detailing a PIN operation. + * + * Possible values for mode:
    0 - PIN was accepted
    1 - + * Register a new PIN
    2 - Invalid pin / Reenter
    3 - Connection + * failed due to system error
    4 - Enter the pin + * + * @param mode The mode. + * @return + */ + private static byte[] pinOperation(byte mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.CHECK_PINCODE.getValue()); + mplew.write(mode); + return mplew.getPacket(); + } + + public static byte[] pinRegistered() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.UPDATE_PINCODE.getValue()); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] requestPin() { + return pinOperation((byte) 4); + } + + public static byte[] requestPinAfterFailure() { + return pinOperation((byte) 2); + } + + public static byte[] registerPin() { + return pinOperation((byte) 1); + } + + public static byte[] pinAccepted() { + return pinOperation((byte) 0); + } + + public static byte[] wrongPic() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.CHECK_SPW_RESULT.getValue()); + mplew.write(0); + return mplew.getPacket(); + } + + /** + * Gets a packet detailing a server and its channels. + * + * @param serverId + * @param serverName The name of the server. + * @param channelLoad Load of the channel - 1200 seems to be max. + * @return The server info packet. + */ + public static byte[] getServerList(int serverId, String serverName, int flag, String eventmsg, List channelLoad) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SERVERLIST.getValue()); + mplew.write(serverId); + mplew.writeMapleAsciiString(serverName); + mplew.write(flag); + mplew.writeMapleAsciiString(eventmsg); + mplew.write(100); // rate modifier, don't ask O.O! + mplew.write(0); // event xp * 2.6 O.O! + mplew.write(100); // rate modifier, don't ask O.O! + mplew.write(0); // drop rate * 2.6 + mplew.write(0); + mplew.write(channelLoad.size()); + for (Channel ch : channelLoad) { + mplew.writeMapleAsciiString(serverName + "-" + ch.getId()); + mplew.writeInt((ch.getConnectedClients() * 1200) / ServerConstants.CHANNEL_LOAD); + mplew.write(1); + mplew.writeShort(ch.getId() - 1); + } + mplew.writeShort(0); + return mplew.getPacket(); + } + + /** + * Gets a packet saying that the server list is over. + * + * @return The end of server list packet. + */ + public static byte[] getEndOfServerList() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.SERVERLIST.getValue()); + mplew.write(0xFF); + return mplew.getPacket(); + } + + /** + * Gets a packet detailing a server status message. + * + * Possible values for status:
    0 - Normal
    1 - Highly + * populated
    2 - Full + * + * @param status The server status. + * @return The server status packet. + */ + public static byte[] getServerStatus(int status) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.SERVERSTATUS.getValue()); + mplew.writeShort(status); + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client the IP of the channel server. + * + * @param inetAddr The InetAddress of the requested channel server. + * @param port The port the channel is on. + * @param clientId The ID of the client. + * @return The server IP packet. + */ + public static byte[] getServerIP(InetAddress inetAddr, int port, int clientId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SERVER_IP.getValue()); + mplew.writeShort(0); + byte[] addr = inetAddr.getAddress(); + mplew.write(addr); + mplew.writeShort(port); + mplew.writeInt(clientId); + mplew.write(new byte[]{0, 0, 0, 0, 0}); + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client the IP of the new channel. + * + * @param inetAddr The InetAddress of the requested channel server. + * @param port The port the channel is on. + * @return The server IP packet. + */ + public static byte[] getChannelChange(InetAddress inetAddr, int port) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CHANGE_CHANNEL.getValue()); + mplew.write(1); + byte[] addr = inetAddr.getAddress(); + mplew.write(addr); + mplew.writeShort(port); + return mplew.getPacket(); + } + + /** + * Gets a packet with a list of characters. + * + * @param c The MapleClient to load characters of. + * @param serverId The ID of the server requested. + * @return The character list packet. + */ + public static byte[] getCharList(MapleClient c, int serverId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CHARLIST.getValue()); + mplew.write(0); + List chars = c.loadCharacters(serverId); + mplew.write((byte) chars.size()); + for (MapleCharacter chr : chars) { + addCharEntry(mplew, chr, false); + } + if (ServerConstants.ENABLE_PIC) { + mplew.write(c.getPic() == null || c.getPic().length() == 0 ? 0 : 1); + } else { + mplew.write(2); + } + + mplew.writeInt(c.getCharacterSlots()); + return mplew.getPacket(); + } + + public static byte[] enableTV() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.ENABLE_TV.getValue()); + mplew.writeInt(0); + mplew.write(0); + return mplew.getPacket(); + } + + /** + * Removes TV + * + * @return The Remove TV Packet + */ + public static byte[] removeTV() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); + mplew.writeShort(SendOpcode.REMOVE_TV.getValue()); + return mplew.getPacket(); + } + + /** + * Sends MapleTV + * + * @param chr The character shown in TV + * @param messages The message sent with the TV + * @param type The type of TV + * @param partner The partner shown with chr + * @return the SEND_TV packet + */ + public static byte[] sendTV(MapleCharacter chr, List messages, int type, MapleCharacter partner) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SEND_TV.getValue()); + mplew.write(partner != null ? 3 : 1); + mplew.write(type); //Heart = 2 Star = 1 Normal = 0 + addCharLook(mplew, chr, false); + mplew.writeMapleAsciiString(chr.getName()); + if (partner != null) { + mplew.writeMapleAsciiString(partner.getName()); + } else { + mplew.writeShort(0); + } + for (int i = 0; i < messages.size(); i++) { + if (i == 4 && messages.get(4).length() > 15) { + mplew.writeMapleAsciiString(messages.get(4).substring(0, 15)); + } else { + mplew.writeMapleAsciiString(messages.get(i)); + } + } + mplew.writeInt(1337); // time limit shit lol 'Your thing still start in blah blah seconds' + if (partner != null) { + addCharLook(mplew, partner, false); + } + return mplew.getPacket(); + } + + /** + * Gets character info for a character. + * + * @param chr The character to get info about. + * @return The character info packet. + */ + public static byte[] getCharInfo(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SET_FIELD.getValue()); + mplew.writeInt(chr.getClient().getChannel() - 1); + mplew.write(1); + mplew.write(1); + mplew.writeShort(0); + for (int i = 0; i < 3; i++) { + mplew.writeInt(Randomizer.nextInt()); + } + addCharacterInfo(mplew, chr); + mplew.writeLong(getTime(System.currentTimeMillis())); + return mplew.getPacket(); + } + + /** + * Gets an empty stat update. + * + * @return The empy stat update packet. + */ + public static byte[] enableActions() { + return updatePlayerStats(EMPTY_STATUPDATE, true, null); + } + + /** + * Gets an update for specified stats. + * + * @param stats The stats to update. + * @return The stat update packet. + */ + public static byte[] updatePlayerStats(List> stats, MapleCharacter chr) { + return updatePlayerStats(stats, false, chr); + } + + /** + * Gets an update for specified stats. + * + * @param stats The list of stats to update. + * @param itemReaction Result of an item reaction(?) + * @return The stat update packet. + */ + public static byte[] updatePlayerStats(List> stats, boolean itemReaction, MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STAT_CHANGED.getValue()); + mplew.write(itemReaction ? 1 : 0); + int updateMask = 0; + for (Pair statupdate : stats) { + updateMask |= statupdate.getLeft().getValue(); + } + List> mystats = stats; + if (mystats.size() > 1) { + Collections.sort(mystats, new Comparator>() { + @Override + public int compare(Pair o1, Pair o2) { + int val1 = o1.getLeft().getValue(); + int val2 = o2.getLeft().getValue(); + return (val1 < val2 ? -1 : (val1 == val2 ? 0 : 1)); + } + }); + } + mplew.writeInt(updateMask); + for (Pair statupdate : mystats) { + if (statupdate.getLeft().getValue() >= 1) { + if (statupdate.getLeft().getValue() == 0x1) { + mplew.writeShort(statupdate.getRight().shortValue()); + } else if (statupdate.getLeft().getValue() <= 0x4) { + mplew.writeInt(statupdate.getRight()); + } else if (statupdate.getLeft().getValue() < 0x20) { + mplew.write(statupdate.getRight().shortValue()); + } else if (statupdate.getLeft().getValue() == 0x8000) { + if (GameConstants.hasSPTable(chr.getJob())) { + mplew.write(chr.getRemainingSpSize()); + for (int i = 0; i < chr.getRemainingSps().length; i++) { + if (chr.getRemainingSpBySkill(i) > 0) { + mplew.write(i + 1); + mplew.write(chr.getRemainingSpBySkill(i)); + } + } + } else { + mplew.writeShort(statupdate.getRight().shortValue()); + } + } else if (statupdate.getLeft().getValue() < 0xFFFF) { + mplew.writeShort(statupdate.getRight().shortValue()); + } else { + mplew.writeInt(statupdate.getRight().intValue()); + } + } + } + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client to change maps. + * + * @param to The MapleMap to warp to. + * @param spawnPoint The spawn portal number to spawn at. + * @param chr The character warping to to + * @return The map change packet. + */ + public static byte[] getWarpToMap(MapleMap to, int spawnPoint, MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SET_FIELD.getValue()); + mplew.writeInt(chr.getClient().getChannel() - 1); + mplew.writeInt(0);//updated + mplew.write(0);//updated + mplew.writeInt(to.getId()); + mplew.write(spawnPoint); + mplew.writeShort(chr.getHp()); + mplew.write(0); + mplew.writeLong(getTime(System.currentTimeMillis())); + return mplew.getPacket(); + } + + /** + * Gets a packet to spawn a portal. + * + * @param townId The ID of the town the portal goes to. + * @param targetId The ID of the target. + * @param pos Where to put the portal. + * @return The portal spawn packet. + */ + public static byte[] spawnPortal(int townId, int targetId, Point pos) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(14); + mplew.writeShort(SendOpcode.SPAWN_PORTAL.getValue()); + mplew.writeInt(townId); + mplew.writeInt(targetId); + if (pos != null) { + mplew.writePos(pos); + } + return mplew.getPacket(); + } + + /** + * Gets a packet to spawn a door. + * + * @param oid The door's object ID. + * @param pos The position of the door. + * @param town + * @return The remove door packet. + */ + public static byte[] spawnDoor(int oid, Point pos, boolean town) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); + mplew.writeShort(SendOpcode.SPAWN_DOOR.getValue()); + mplew.writeBool(town); + mplew.writeInt(oid); + mplew.writePos(pos); + return mplew.getPacket(); + } + + /** + * Gets a packet to remove a door. + * + * @param oid The door's ID. + * @param town + * @return The remove door packet. + */ + public static byte[] removeDoor(int oid, boolean town) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(10); + if (town) { + mplew.writeShort(SendOpcode.SPAWN_PORTAL.getValue()); + mplew.writeInt(999999999); + mplew.writeInt(999999999); + } else { + mplew.writeShort(SendOpcode.REMOVE_DOOR.getValue()); + mplew.write(0); + mplew.writeInt(oid); + } + return mplew.getPacket(); + } + + /** + * Gets a packet to spawn a special map object. + * + * @param summon + * @param skillLevel The level of the skill used. + * @param animated Animated spawn? + * @return The spawn packet for the map object. + */ + public static byte[] spawnSummon(MapleSummon summon, boolean animated) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(25); + mplew.writeShort(SendOpcode.SPAWN_SPECIAL_MAPOBJECT.getValue()); + mplew.writeInt(summon.getOwner().getId()); + mplew.writeInt(summon.getObjectId()); + mplew.writeInt(summon.getSkill()); + mplew.write(0x0A); //v83 + mplew.write(summon.getSkillLevel()); + mplew.writePos(summon.getPosition()); + mplew.skip(3); + mplew.write(summon.getMovementType().getValue()); // 0 = don't move, 1 = follow (4th mage summons?), 2/4 = only tele follow, 3 = bird follow + mplew.write(summon.isPuppet() ? 0 : 1); // 0 and the summon can't attack - but puppets don't attack with 1 either ^.- + mplew.write(animated ? 0 : 1); + return mplew.getPacket(); + } + + /** + * Gets a packet to remove a special map object. + * + * @param summon + * @param animated Animated removal? + * @return The packet removing the object. + */ + public static byte[] removeSummon(MapleSummon summon, boolean animated) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); + mplew.writeShort(SendOpcode.REMOVE_SPECIAL_MAPOBJECT.getValue()); + mplew.writeInt(summon.getOwner().getId()); + mplew.writeInt(summon.getObjectId()); + mplew.write(animated ? 4 : 1); // ? + return mplew.getPacket(); + } + + /** + * Gets the response to a relog request. + * + * @return The relog response packet. + */ + public static byte[] getRelogResponse() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.RELOG_RESPONSE.getValue()); + mplew.write(1);//1 O.O Must be more types ): + return mplew.getPacket(); + } + + /** + * Gets a server message packet. + * + * @param message The message to convey. + * @return The server message packet. + */ + public static byte[] serverMessage(String message) { + return serverMessage(4, (byte) 0, message, true, false, 0); + } + + /** + * Gets a server notice packet. + * + * Possible values for type:
    0: [Notice]
    1: Popup
    + * 2: Megaphone
    3: Super Megaphone
    4: Scrolling message at top
    + * 5: Pink Text
    6: Lightblue Text + * + * @param type The type of the notice. + * @param message The message to convey. + * @return The server notice packet. + */ + public static byte[] serverNotice(int type, String message) { + return serverMessage(type, (byte) 0, message, false, false, 0); + } + + /** + * Gets a server notice packet. + * + * Possible values for type:
    0: [Notice]
    1: Popup
    + * 2: Megaphone
    3: Super Megaphone
    4: Scrolling message at top
    + * 5: Pink Text
    6: Lightblue Text + * + * @param type The type of the notice. + * @param channel The channel this notice was sent on. + * @param message The message to convey. + * @return The server notice packet. + */ + public static byte[] serverNotice(int type, String message, int npc) { + return serverMessage(type, 0, message, false, false, npc); + } + + public static byte[] serverNotice(int type, int channel, String message) { + return serverMessage(type, channel, message, false, false, 0); + } + + public static byte[] serverNotice(int type, int channel, String message, boolean smegaEar) { + return serverMessage(type, channel, message, false, smegaEar, 0); + } + + /** + * Gets a server message packet. + * + * Possible values for type:
    0: [Notice]
    1: Popup
    + * 2: Megaphone
    3: Super Megaphone
    4: Scrolling message at top
    + * 5: Pink Text
    6: Lightblue Text
    7: BroadCasting NPC + * + * @param type The type of the notice. + * @param channel The channel this notice was sent on. + * @param message The message to convey. + * @param servermessage Is this a scrolling ticker? + * @return The server notice packet. + */ + private static byte[] serverMessage(int type, int channel, String message, boolean servermessage, boolean megaEar, int npc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); + mplew.write(type); + if (servermessage) { + mplew.write(1); + } + mplew.writeMapleAsciiString(message); + if (type == 3) { + mplew.write(channel - 1); // channel + mplew.writeBool(megaEar); + } else if (type == 6) { + mplew.writeInt(0); + } else if (type == 7) { // npc + mplew.writeInt(npc); + } + return mplew.getPacket(); + } + + /** + * Sends a Avatar Super Megaphone packet. + * + * @param chr The character name. + * @param medal The medal text. + * @param channel Which channel. + * @param itemId Which item used. + * @param message The message sent. + * @param ear Whether or not the ear is shown for whisper. + * @return + */ + public static byte[] getAvatarMega(MapleCharacter chr, String medal, int channel, int itemId, List message, boolean ear) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SET_AVATAR_MEGAPHONE.getValue()); + mplew.writeInt(itemId); + mplew.writeMapleAsciiString(medal + chr.getName()); + for (String s : message) { + mplew.writeMapleAsciiString(s); + } + mplew.writeInt(channel - 1); // channel + mplew.writeBool(ear); + addCharLook(mplew, chr, true); + return mplew.getPacket(); + } + + /* + * Sends a packet to remove the tiger megaphone + * @return + */ + public static byte[] byeAvatarMega() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CLEAR_AVATAR_MEGAPHONE.getValue()); + mplew.write(1); + return mplew.getPacket(); + } + + /** + * Sends the Gachapon green message when a user uses a gachapon ticket. + * + * @param item + * @param town + * @param player + * @return + */ + public static byte[] gachaponMessage(Item item, String town, MapleCharacter player) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); + mplew.write(0x0B); + mplew.writeMapleAsciiString(player.getName() + " : got a(n)"); + mplew.writeInt(0); //random? + mplew.writeMapleAsciiString(town); + addItemInfo(mplew, item, true); + return mplew.getPacket(); + } + + public static byte[] spawnNPC(MapleNPC life) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(24); + mplew.writeShort(SendOpcode.SPAWN_NPC.getValue()); + mplew.writeInt(life.getObjectId()); + mplew.writeInt(life.getId()); + mplew.writeShort(life.getPosition().x); + mplew.writeShort(life.getCy()); + if (life.getF() == 1) { + mplew.write(0); + } else { + mplew.write(1); + } + mplew.writeShort(life.getFh()); + mplew.writeShort(life.getRx0()); + mplew.writeShort(life.getRx1()); + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] spawnNPCRequestController(MapleNPC life, boolean MiniMap) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(23); + mplew.writeShort(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER.getValue()); + mplew.write(1); + mplew.writeInt(life.getObjectId()); + mplew.writeInt(life.getId()); + mplew.writeShort(life.getPosition().x); + mplew.writeShort(life.getCy()); + if (life.getF() == 1) { + mplew.write(0); + } else { + mplew.write(1); + } + mplew.writeShort(life.getFh()); + mplew.writeShort(life.getRx0()); + mplew.writeShort(life.getRx1()); + mplew.writeBool(MiniMap); + return mplew.getPacket(); + } + + /** + * Gets a spawn monster packet. + * + * @param life The monster to spawn. + * @param newSpawn Is it a new spawn? + * @return The spawn monster packet. + */ + public static byte[] spawnMonster(MapleMonster life, boolean newSpawn) { + return spawnMonsterInternal(life, false, newSpawn, false, 0, false); + } + + /** + * Gets a spawn monster packet. + * + * @param life The monster to spawn. + * @param newSpawn Is it a new spawn? + * @return The spawn monster packet. + */ + public static byte[] spawnHPQMonster(MapleMonster life, boolean newSpawn) { + return spawnMonsterInternal(life, false, newSpawn, false, 0, false); + } + + /** + * Gets a spawn monster packet. + * + * @param life The monster to spawn. + * @param newSpawn Is it a new spawn? + * @param effect The spawn effect. + * @return The spawn monster packet. + */ + public static byte[] spawnMonster(MapleMonster life, boolean newSpawn, int effect) { + return spawnMonsterInternal(life, false, newSpawn, false, effect, false); + } + + /** + * Gets a control monster packet. + * + * @param life The monster to give control to. + * @param newSpawn Is it a new spawn? + * @param aggro Aggressive monster? + * @return The monster control packet. + */ + public static byte[] controlMonster(MapleMonster life, boolean newSpawn, boolean aggro) { + return spawnMonsterInternal(life, true, newSpawn, aggro, 0, false); + } + + /** + * Removes a monster invisibility. + * + * @param life + * @return + */ + public static byte[] removeMonsterInvisibility(MapleMonster life) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); + mplew.write(1); + mplew.writeInt(life.getObjectId()); + return mplew.getPacket(); + //return spawnMonsterInternal(life, true, false, false, 0, false); + } + + /** + * Makes a monster invisible for Ariant PQ. + * + * @param life + * @return + */ + public static byte[] makeMonsterInvisible(MapleMonster life) { + return spawnMonsterInternal(life, true, false, false, 0, true); + } + + /** + * Internal function to handler monster spawning and controlling. + * + * @param life The mob to perform operations with. + * @param requestController Requesting control of mob? + * @param newSpawn New spawn (fade in?) + * @param aggro Aggressive mob? + * @param effect The spawn effect to use. + * @return The spawn/control packet. + */ + private static byte[] spawnMonsterInternal(MapleMonster life, boolean requestController, boolean newSpawn, boolean aggro, int effect, boolean makeInvis) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + if (makeInvis) { + mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); + mplew.write(0); + mplew.writeInt(life.getObjectId()); + return mplew.getPacket(); + } + if (requestController) { + mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); + mplew.write(aggro ? 2 : 1); + } else { + mplew.writeShort(SendOpcode.SPAWN_MONSTER.getValue()); + } + mplew.writeInt(life.getObjectId()); + mplew.write(life.getController() == null ? 5 : 1); + mplew.writeInt(life.getId()); + mplew.skip(15); + mplew.write(0x88); + mplew.skip(6); + mplew.writePos(life.getPosition()); + mplew.write(life.getStance()); + mplew.writeShort(0); //Origin FH //life.getStartFh() + mplew.writeShort(life.getFh()); + + if (effect > 0) { + mplew.write(effect); + mplew.write(0); + mplew.writeShort(0); + if (effect == 15) { + mplew.write(0); + } + } + mplew.write(newSpawn ? -2 : -1); + mplew.write(life.getTeam()); + mplew.writeInt(0); + return mplew.getPacket(); + } + + /** + * Handles monsters not being targettable, such as Zakum's first body. + * + * @param life The mob to spawn as non-targettable. + * @param effect The effect to show when spawning. + * @return The packet to spawn the mob as non-targettable. + */ + public static byte[] spawnFakeMonster(MapleMonster life, int effect) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); + mplew.write(1); + mplew.writeInt(life.getObjectId()); + mplew.write(5); + mplew.writeInt(life.getId()); + mplew.skip(15); + mplew.write(0x88); + mplew.skip(6); + mplew.writePos(life.getPosition()); + mplew.write(life.getStance()); + mplew.writeShort(0);//life.getStartFh() + mplew.writeShort(life.getFh()); + if (effect > 0) { + mplew.write(effect); + mplew.write(0); + mplew.writeShort(0); + } + mplew.writeShort(-2); + mplew.write(life.getTeam()); + mplew.writeInt(0); + return mplew.getPacket(); + } + + /** + * Makes a monster previously spawned as non-targettable, targettable. + * + * @param life The mob to make targettable. + * @return The packet to make the mob targettable. + */ + public static byte[] makeMonsterReal(MapleMonster life) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_MONSTER.getValue()); + mplew.writeInt(life.getObjectId()); + mplew.write(5); + mplew.writeInt(life.getId()); + mplew.skip(15); + mplew.write(0x88); + mplew.skip(6); + mplew.writePos(life.getPosition()); + mplew.write(life.getStance()); + mplew.writeShort(0);//life.getStartFh() + mplew.writeShort(life.getFh()); + mplew.writeShort(-1); + mplew.writeInt(0); + return mplew.getPacket(); + } + + /** + * Gets a stop control monster packet. + * + * @param oid The ObjectID of the monster to stop controlling. + * @return The stop control monster packet. + */ + public static byte[] stopControllingMonster(int oid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.SPAWN_MONSTER_CONTROL.getValue()); + mplew.write(0); + mplew.writeInt(oid); + return mplew.getPacket(); + } + + /** + * Gets a response to a move monster packet. + * + * @param objectid The ObjectID of the monster being moved. + * @param moveid The movement ID. + * @param currentMp The current MP of the monster. + * @param useSkills Can the monster use skills? + * @return The move response packet. + */ + public static byte[] moveMonsterResponse(int objectid, short moveid, int currentMp, boolean useSkills) { + return moveMonsterResponse(objectid, moveid, currentMp, useSkills, 0, 0); + } + + /** + * Gets a response to a move monster packet. + * + * @param objectid The ObjectID of the monster being moved. + * @param moveid The movement ID. + * @param currentMp The current MP of the monster. + * @param useSkills Can the monster use skills? + * @param skillId The skill ID for the monster to use. + * @param skillLevel The level of the skill to use. + * @return The move response packet. + */ + public static byte[] moveMonsterResponse(int objectid, short moveid, int currentMp, boolean useSkills, int skillId, int skillLevel) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(13); + mplew.writeShort(SendOpcode.MOVE_MONSTER_RESPONSE.getValue()); + mplew.writeInt(objectid); + mplew.writeShort(moveid); + mplew.writeBool(useSkills); + mplew.writeShort(currentMp); + mplew.write(skillId); + mplew.write(skillLevel); + return mplew.getPacket(); + } + + /** + * Gets a general chat packet. + * + * @param cidfrom The character ID who sent the chat. + * @param text The text of the chat. + * @param whiteBG + * @param show + * @return The general chat packet. + */ + public static byte[] getChatText(int cidfrom, String text, boolean gm, int show) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CHATTEXT.getValue()); + mplew.writeInt(cidfrom); + mplew.writeBool(gm); + mplew.writeMapleAsciiString(text); + mplew.write(show); + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client to show an EXP increase. + * + * @param gain The amount of EXP gained. + * @param inChat In the chat box? + * @param white White text or yellow? + * @return The exp gained packet. + */ + public static byte[] getShowExpGain(int gain, int equip, int party, boolean inChat, boolean white) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(3); // 3 = exp, 4 = fame, 5 = mesos, 6 = guildpoints + mplew.writeBool(white); + mplew.writeInt(gain); + mplew.writeBool(inChat); + mplew.writeInt(0); // monster book bonus (Bonus Event Exp) + mplew.write(0); // third monster kill event + mplew.write(0); // RIP byte, this is always a 0 + mplew.writeInt(0); //wedding bonus + if (inChat) { // quest bonus rate stuff + mplew.write(0); + } + + int mod = ServerConstants.PARTY_EXPERIENCE_MOD != 1 ? ServerConstants.PARTY_EXPERIENCE_MOD * 100 : 0; + + mplew.write(mod); //0 = party bonus, 100 = 1x Bonus EXP, 200 = 2x Bonus EXP + mplew.writeInt(party); // party bonus + mplew.writeInt(equip); //equip bonus + mplew.writeInt(0); //Internet Cafe Bonus + mplew.writeInt(0); //Rainbow Week Bonus + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client to show a fame gain. + * + * @param gain How many fame gained. + * @return The meso gain packet. + */ + public static byte[] getShowFameGain(int gain) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(4); + mplew.writeInt(gain); + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client to show a meso gain. + * + * @param gain How many mesos gained. + * @return The meso gain packet. + */ + public static byte[] getShowMesoGain(int gain) { + return getShowMesoGain(gain, false); + } + + /** + * Gets a packet telling the client to show a meso gain. + * + * @param gain How many mesos gained. + * @param inChat Show in the chat window? + * @return The meso gain packet. + */ + public static byte[] getShowMesoGain(int gain, boolean inChat) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + if (!inChat) { + mplew.write(0); + mplew.writeShort(1); //v83 + } else { + mplew.write(5); + } + mplew.writeInt(gain); + mplew.writeShort(0); + return mplew.getPacket(); + } + + /** + * Gets a packet telling the client to show a item gain. + * + * @param itemId The ID of the item gained. + * @param quantity How many items gained. + * @return The item gain packet. + */ + public static byte[] getShowItemGain(int itemId, short quantity) { + return getShowItemGain(itemId, quantity, false); + } + + /** + * Gets a packet telling the client to show an item gain. + * + * @param itemId The ID of the item gained. + * @param quantity The number of items gained. + * @param inChat Show in the chat window? + * @return The item gain packet. + */ + public static byte[] getShowItemGain(int itemId, short quantity, boolean inChat) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + if (inChat) { + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(3); + mplew.write(1); + mplew.writeInt(itemId); + mplew.writeInt(quantity); + } else { + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.writeShort(0); + mplew.writeInt(itemId); + mplew.writeInt(quantity); + mplew.writeInt(0); + mplew.writeInt(0); + } + return mplew.getPacket(); + } + + public static byte[] killMonster(int oid, boolean animation) { + return killMonster(oid, animation ? 1 : 0); + } + + /** + * Gets a packet telling the client that a monster was killed. + * + * @param oid The objectID of the killed monster. + * @param animation 0 = dissapear, 1 = fade out, 2+ = special + * @return The kill monster packet. + */ + public static byte[] killMonster(int oid, int animation) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.KILL_MONSTER.getValue()); + mplew.writeInt(oid); + mplew.write(animation); + mplew.write(animation); + return mplew.getPacket(); + } + + public static byte[] dropItemFromMapObject(MapleMapItem drop, Point dropfrom, Point dropto, byte mod) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DROP_ITEM_FROM_MAPOBJECT.getValue()); + mplew.write(mod); + mplew.writeInt(drop.getObjectId()); + mplew.writeBool(drop.getMeso() > 0); // 1 mesos, 0 item, 2 and above all item meso bag, + mplew.writeInt(drop.getItemId()); // drop object ID + mplew.writeInt(drop.getOwner()); // owner charid/paryid :) + mplew.write(drop.getDropType()); // 0 = timeout for non-owner, 1 = timeout for non-owner's party, 2 = FFA, 3 = explosive/FFA + mplew.writePos(dropto); + mplew.writeInt(drop.getDropType() == 0 ? drop.getOwner() : 0); //test + + if (mod != 2) { + mplew.writePos(dropfrom); + mplew.writeShort(0);//Fh? + } + if (drop.getMeso() == 0) { + addExpirationTime(mplew, drop.getItem().getExpiration()); + } + mplew.write(drop.isPlayerDrop() ? 0 : 1); //pet EQP pickup + return mplew.getPacket(); + } + + /** + * Gets a packet spawning a player as a mapobject to other clients. + * + * @param chr The character to spawn to other clients. + * @return The spawn player packet. + */ + public static byte[] spawnPlayerMapobject(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_PLAYER.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(chr.getLevel()); //v83 + mplew.writeMapleAsciiString(chr.getName()); + if (chr.getGuildId() < 1) { + mplew.writeMapleAsciiString(""); + mplew.write(new byte[6]); + } else { + MapleGuildSummary gs = chr.getClient().getWorldServer().getGuildSummary(chr.getGuildId(), chr.getWorld()); + if (gs != null) { + mplew.writeMapleAsciiString(gs.getName()); + mplew.writeShort(gs.getLogoBG()); + mplew.write(gs.getLogoBGColor()); + mplew.writeShort(gs.getLogo()); + mplew.write(gs.getLogoColor()); + } else { + mplew.writeMapleAsciiString(""); + mplew.write(new byte[6]); + } + } + mplew.writeInt(0); + mplew.writeShort(0); //v83 + mplew.write(0xFC); + mplew.write(1); + if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) { + mplew.writeInt(2); + } else { + mplew.writeInt(0); + } + long buffmask = 0; + Integer buffvalue = null; + if (chr.getBuffedValue(MapleBuffStat.DARKSIGHT) != null && !chr.isHidden()) { + buffmask |= MapleBuffStat.DARKSIGHT.getValue(); + } + if (chr.getBuffedValue(MapleBuffStat.COMBO) != null) { + buffmask |= MapleBuffStat.COMBO.getValue(); + buffvalue = Integer.valueOf(chr.getBuffedValue(MapleBuffStat.COMBO).intValue()); + } + if (chr.getBuffedValue(MapleBuffStat.SHADOWPARTNER) != null) { + buffmask |= MapleBuffStat.SHADOWPARTNER.getValue(); + } + if (chr.getBuffedValue(MapleBuffStat.SOULARROW) != null) { + buffmask |= MapleBuffStat.SOULARROW.getValue(); + } + if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) { + buffvalue = Integer.valueOf(chr.getBuffedValue(MapleBuffStat.MORPH).intValue()); + } + if (chr.getBuffedValue(MapleBuffStat.ENERGY_CHARGE) != null) { + buffmask |= MapleBuffStat.ENERGY_CHARGE.getValue(); + buffvalue = Integer.valueOf(chr.getBuffedValue(MapleBuffStat.ENERGY_CHARGE).intValue()); + }//AREN'T THESE + mplew.writeInt((int) ((buffmask >> 32) & 0xffffffffL)); + if (buffvalue != null) { + if (chr.getBuffedValue(MapleBuffStat.MORPH) != null) { //TEST + mplew.writeShort(buffvalue); + } else { + mplew.write(buffvalue.byteValue()); + } + } + mplew.writeInt((int) (buffmask & 0xffffffffL)); + int CHAR_MAGIC_SPAWN = Randomizer.nextInt(); + mplew.skip(6); + mplew.writeInt(CHAR_MAGIC_SPAWN); + mplew.skip(11); + mplew.writeInt(CHAR_MAGIC_SPAWN);//v74 + mplew.skip(11); + mplew.writeInt(CHAR_MAGIC_SPAWN); + mplew.writeShort(0); + mplew.write(0); + final Item mount = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18); + if (chr.getBuffedValue(MapleBuffStat.MONSTER_RIDING) != null && mount != null) { + mplew.writeInt(mount.getItemId()); + mplew.writeInt(1004); + } else { + mplew.writeLong(0); + } + mplew.writeInt(CHAR_MAGIC_SPAWN); + mplew.skip(9); + mplew.writeInt(CHAR_MAGIC_SPAWN); + mplew.writeShort(0); + mplew.writeInt(0); // actually not 0, why is it 0 then? + mplew.skip(10); + mplew.writeInt(CHAR_MAGIC_SPAWN); + mplew.skip(13); + mplew.writeInt(CHAR_MAGIC_SPAWN); + mplew.writeShort(0); + mplew.write(0); + mplew.writeShort(chr.getJob().getId()); + addCharLook(mplew, chr, false); + mplew.writeInt(chr.getInventory(MapleInventoryType.CASH).countById(5110000)); + mplew.writeInt(chr.getItemEffect()); + mplew.writeInt(ItemConstants.getInventoryType(chr.getChair()) == MapleInventoryType.SETUP ? chr.getChair() : 0); + mplew.writePos(chr.getPosition()); + mplew.write(chr.getStance()); + mplew.writeShort(0);//chr.getFh() + mplew.write(0); + MaplePet[] pet = chr.getPets(); + for (int i = 0; i < 3; i++) { + if (pet[i] != null) { + addPetInfo(mplew, pet[i], false); + } + } + mplew.write(0); //end of pets + if (chr.getMount() == null) { + mplew.writeInt(1); // mob level + mplew.writeLong(0); // mob exp + tiredness + } else { + mplew.writeInt(chr.getMount().getLevel()); + mplew.writeInt(chr.getMount().getExp()); + mplew.writeInt(chr.getMount().getTiredness()); + } + if (chr.getPlayerShop() != null && chr.getPlayerShop().isOwner(chr)) { + if (chr.getPlayerShop().hasFreeSlot()) { + addAnnounceBox(mplew, chr.getPlayerShop(), chr.getPlayerShop().getVisitors().length); + } else { + addAnnounceBox(mplew, chr.getPlayerShop(), 1); + } + } else if (chr.getMiniGame() != null && chr.getMiniGame().isOwner(chr)) { + if (chr.getMiniGame().hasFreeSlot()) { + addAnnounceBox(mplew, chr.getMiniGame(), 1, 0, 1, 0); + } else { + addAnnounceBox(mplew, chr.getMiniGame(), 1, 0, 2, 1); + } + } else { + mplew.write(0); + } + if (chr.getChalkboard() != null) { + mplew.write(1); + mplew.writeMapleAsciiString(chr.getChalkboard()); + } else { + mplew.write(0); + } + addRingLook(mplew, chr, true); + addRingLook(mplew, chr, false); + addMarriageRingLook(mplew, chr); + mplew.skip(3); + mplew.write(chr.getTeam());//only needed in specific fields + return mplew.getPacket(); + } + + private static void addRingLook(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr, boolean crush) { + List rings; + if (crush) { + rings = chr.getCrushRings(); + } else { + rings = chr.getFriendshipRings(); + } + boolean yes = false; + for (MapleRing ring : rings) { + if (ring.equipped()) { + if (yes == false) { + yes = true; + mplew.write(1); + } + mplew.writeInt(ring.getRingId()); + mplew.writeInt(0); + mplew.writeInt(ring.getPartnerRingId()); + mplew.writeInt(0); + mplew.writeInt(ring.getItemId()); + } + } + if (yes == false) { + mplew.write(0); + } + } + + private static void addMarriageRingLook(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + if (chr.getMarriageRing() != null && !chr.getMarriageRing().equipped()) { + mplew.write(0); + return; + } + mplew.writeBool(chr.getMarriageRing() != null); + if (chr.getMarriageRing() != null) { + mplew.writeInt(chr.getId()); + mplew.writeInt(chr.getMarriageRing().getPartnerChrId()); + mplew.writeInt(chr.getMarriageRing().getRingId()); + } + } + + /** + * Adds a announcement box to an existing MaplePacketLittleEndianWriter. + * + * @param mplew The MaplePacketLittleEndianWriter to add an announcement box + * to. + * @param shop The shop to announce. + */ + private static void addAnnounceBox(final MaplePacketLittleEndianWriter mplew, MaplePlayerShop shop, int availability) { + mplew.write(4); + mplew.writeInt(shop.getObjectId()); + mplew.writeMapleAsciiString(shop.getDescription()); + mplew.write(0); + mplew.write(0); + mplew.write(1); + mplew.write(availability); + mplew.write(0); + } + + private static void addAnnounceBox(final MaplePacketLittleEndianWriter mplew, MapleMiniGame game, int gametype, int type, int ammount, int joinable) { + mplew.write(gametype); + mplew.writeInt(game.getObjectId()); // gameid/shopid + mplew.writeMapleAsciiString(game.getDescription()); // desc + mplew.write(0); + mplew.write(type); + mplew.write(ammount); + mplew.write(2); + mplew.write(joinable); + } + + public static byte[] facialExpression(MapleCharacter from, int expression) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(10); + mplew.writeShort(SendOpcode.FACIAL_EXPRESSION.getValue()); + mplew.writeInt(from.getId()); + mplew.writeInt(expression); + return mplew.getPacket(); + } + + private static void serializeMovementList(LittleEndianWriter lew, List moves) { + lew.write(moves.size()); + for (LifeMovementFragment move : moves) { + move.serialize(lew); + } + } + + public static byte[] movePlayer(int cid, List moves) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MOVE_PLAYER.getValue()); + mplew.writeInt(cid); + mplew.writeInt(0); + serializeMovementList(mplew, moves); + return mplew.getPacket(); + } + + public static byte[] moveSummon(int cid, int oid, Point startPos, List moves) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MOVE_SUMMON.getValue()); + mplew.writeInt(cid); + mplew.writeInt(oid); + mplew.writePos(startPos); + serializeMovementList(mplew, moves); + return mplew.getPacket(); + } + + public static byte[] moveMonster(int useskill, int skill, int skill_1, int skill_2, int skill_3, int skill_4, int oid, Point startPos, List moves) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MOVE_MONSTER.getValue()); + mplew.writeInt(oid); + mplew.write(0); + mplew.write(useskill); + mplew.write(skill); + mplew.write(skill_1); + mplew.write(skill_2); + mplew.write(skill_3); + mplew.write(skill_4); + mplew.writePos(startPos); + serializeMovementList(mplew, moves); + return mplew.getPacket(); + } + + public static byte[] summonAttack(int cid, int summonSkillId, byte direction, List allDamage) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + //b2 00 29 f7 00 00 9a a3 04 00 c8 04 01 94 a3 04 00 06 ff 2b 00 + mplew.writeShort(SendOpcode.SUMMON_ATTACK.getValue()); + mplew.writeInt(cid); + mplew.writeInt(summonSkillId); + mplew.write(direction); + mplew.write(4); + mplew.write(allDamage.size()); + for (SummonAttackEntry attackEntry : allDamage) { + mplew.writeInt(attackEntry.getMonsterOid()); // oid + mplew.write(6); // who knows + mplew.writeInt(attackEntry.getDamage()); // damage + } + return mplew.getPacket(); + } + + public static byte[] closeRangeAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, Map> damage, int speed, int direction, int display) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CLOSE_RANGE_ATTACK.getValue()); + addAttackBody(mplew, chr, skill, skilllevel, stance, numAttackedAndDamage, 0, damage, speed, direction, display); + return mplew.getPacket(); + } + + public static byte[] rangedAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, int projectile, Map> damage, int speed, int direction, int display) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.RANGED_ATTACK.getValue()); + addAttackBody(mplew, chr, skill, skilllevel, stance, numAttackedAndDamage, projectile, damage, speed, direction, display); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] magicAttack(MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, Map> damage, int charge, int speed, int direction, int display) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MAGIC_ATTACK.getValue()); + addAttackBody(mplew, chr, skill, skilllevel, stance, numAttackedAndDamage, 0, damage, speed, direction, display); + if (charge != -1) { + mplew.writeInt(charge); + } + return mplew.getPacket(); + } + + private static void addAttackBody(LittleEndianWriter lew, MapleCharacter chr, int skill, int skilllevel, int stance, int numAttackedAndDamage, int projectile, Map> damage, int speed, int direction, int display) { + lew.writeInt(chr.getId()); + lew.write(numAttackedAndDamage); + lew.write(0x5B);//? + lew.write(skilllevel); + if (skilllevel > 0) { + lew.writeInt(skill); + } + lew.write(display); + lew.write(direction); + lew.write(stance); + lew.write(speed); + lew.write(0x0A); + lew.writeInt(projectile); + for (Integer oned : damage.keySet()) { + List onedList = damage.get(oned); + if (onedList != null) { + lew.writeInt(oned.intValue()); + lew.write(0xFF); + if (skill == 4211006) { + lew.write(onedList.size()); + } + for (Integer eachd : onedList) { + lew.writeInt(eachd.intValue()); + } + } + } + } + + private static int doubleToShortBits(double d) { + return (int) (Double.doubleToLongBits(d) >> 48); + } + + public static byte[] getNPCShop(MapleClient c, int sid, List items) { + MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.OPEN_NPC_SHOP.getValue()); + mplew.writeInt(sid); + mplew.writeShort(items.size()); // item count + for (MapleShopItem item : items) { + mplew.writeInt(item.getItemId()); + mplew.writeInt(item.getPrice()); + mplew.writeInt(item.getPrice() == 0 ? item.getPitch() : 0); //Perfect Pitch + mplew.writeInt(0); //Can be used x minutes after purchase + mplew.writeInt(0); //Hmm + if (!ItemConstants.isRechargable(item.getItemId())) { + mplew.writeShort(1); // stacksize o.o + mplew.writeShort(item.getBuyable()); + } else { + mplew.writeShort(0); + mplew.writeInt(0); + mplew.writeShort(doubleToShortBits(ii.getPrice(item.getItemId()))); + mplew.writeShort(ii.getSlotMax(c, item.getItemId())); + } + } + return mplew.getPacket(); + } + + /* 00 = / + * 01 = You don't have enough in stock + * 02 = You do not have enough mesos + * 03 = Please check if your inventory is full or not + * 05 = You don't have enough in stock + * 06 = Due to an error, the trade did not happen + * 07 = Due to an error, the trade did not happen + * 08 = / + * 0D = You need more items + * 0E = CRASH; LENGTH NEEDS TO BE LONGER :O + */ + public static byte[] shopTransaction(byte code) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.CONFIRM_SHOP_TRANSACTION.getValue()); + mplew.write(code); + return mplew.getPacket(); + } + + public static byte[] updateInventorySlotLimit(int type, int newLimit) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.INVENTORY_GROW.getValue()); + mplew.write(type); + mplew.write(newLimit); + return mplew.getPacket(); + } + + public static byte[] modifyInventory(boolean updateTick, final List mods) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.INVENTORY_OPERATION.getValue()); + mplew.writeBool(updateTick); + mplew.write(mods.size()); + //mplew.write(0); v104 :) + int addMovement = -1; + for (ModifyInventory mod : mods) { + mplew.write(mod.getMode()); + mplew.write(mod.getInventoryType()); + mplew.writeShort(mod.getMode() == 2 ? mod.getOldPosition() : mod.getPosition()); + switch (mod.getMode()) { + case 0: {//add item + addItemInfo(mplew, mod.getItem(), true); + break; + } + case 1: {//update quantity + mplew.writeShort(mod.getQuantity()); + break; + } + case 2: {//move + mplew.writeShort(mod.getPosition()); + if (mod.getPosition() < 0 || mod.getOldPosition() < 0) { + addMovement = mod.getOldPosition() < 0 ? 1 : 2; + } + break; + } + case 3: {//remove + if (mod.getPosition() < 0) { + addMovement = 2; + } + break; + } + } + mod.clear(); + } + if (addMovement > -1) { + mplew.write(addMovement); + } + return mplew.getPacket(); + } + + public static byte[] getScrollEffect(int chr, ScrollResult scrollSuccess, boolean legendarySpirit) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_SCROLL_EFFECT.getValue()); + mplew.writeInt(chr); + switch (scrollSuccess) { + case SUCCESS: + mplew.writeShort(1); + mplew.writeShort(legendarySpirit ? 1 : 0); + break; + case FAIL: + mplew.writeShort(0); + mplew.writeShort(legendarySpirit ? 1 : 0); + break; + case CURSE: + mplew.write(0); + mplew.write(1); + mplew.writeShort(legendarySpirit ? 1 : 0); + break; + } + return mplew.getPacket(); + } + + public static byte[] removePlayerFromMap(int cid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.REMOVE_PLAYER_FROM_MAP.getValue()); + mplew.writeInt(cid); + return mplew.getPacket(); + } + + /** + * animation: 0 - expire
    1 - without animation
    2 - pickup
    4 - + * explode
    cid is ignored for 0 and 1 + * + * @param oid + * @param animation + * @param cid + * @return + */ + public static byte[] removeItemFromMap(int oid, int animation, int cid) { + return removeItemFromMap(oid, animation, cid, false, 0); + } + + /** + * animation: 0 - expire
    1 - without animation
    2 - pickup
    4 - + * explode
    cid is ignored for 0 and 1.

    Flagging pet as true + * will make a pet pick up the item. + * + * @param oid + * @param animation + * @param cid + * @param pet + * @param slot + * @return + */ + public static byte[] removeItemFromMap(int oid, int animation, int cid, boolean pet, int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.REMOVE_ITEM_FROM_MAP.getValue()); + mplew.write(animation); // expire + mplew.writeInt(oid); + if (animation >= 2) { + mplew.writeInt(cid); + if (pet) { + mplew.write(slot); + } + } + return mplew.getPacket(); + } + + public static byte[] updateCharLook(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_CHAR_LOOK.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(1); + addCharLook(mplew, chr, false); + addRingLook(mplew, chr, true); + addRingLook(mplew, chr, false); + addMarriageRingLook(mplew, chr); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] damagePlayer(int skill, int monsteridfrom, int cid, int damage, int fake, int direction, boolean pgmr, int pgmr_1, boolean is_pg, int oid, int pos_x, int pos_y) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DAMAGE_PLAYER.getValue()); + mplew.writeInt(cid); + mplew.write(skill); + mplew.writeInt(damage); + mplew.writeInt(monsteridfrom); + mplew.write(direction); + if (pgmr) { + mplew.write(pgmr_1); + mplew.write(is_pg ? 1 : 0); + mplew.writeInt(oid); + mplew.write(6); + mplew.writeShort(pos_x); + mplew.writeShort(pos_y); + mplew.write(0); + } else { + mplew.writeShort(0); + } + mplew.writeInt(damage); + if (fake > 0) { + mplew.writeInt(fake); + } + return mplew.getPacket(); + } + + public static byte[] charNameResponse(String charname, boolean nameUsed) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CHAR_NAME_RESPONSE.getValue()); + mplew.writeMapleAsciiString(charname); + mplew.write(nameUsed ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] addNewCharEntry(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ADD_NEW_CHAR_ENTRY.getValue()); + mplew.write(0); + addCharEntry(mplew, chr, false); + return mplew.getPacket(); + } + + /** + * state 0 = del ok state 12 = invalid bday state 14 = incorrect pic + * + * @param cid + * @param state + * @return + */ + public static byte[] deleteCharResponse(int cid, int state) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DELETE_CHAR_RESPONSE.getValue()); + mplew.writeInt(cid); + mplew.write(state); + return mplew.getPacket(); + } + + public static byte[] selectWorld(int world) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.LAST_CONNECTED_WORLD.getValue()); + mplew.writeInt(world);//According to GMS, it should be the world that contains the most characters (most active) + return mplew.getPacket(); + } + + public static byte[] sendRecommended(List> worlds) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.RECOMMENDED_WORLD_MESSAGE.getValue()); + mplew.write(worlds.size());//size + for (Iterator> it = worlds.iterator(); it.hasNext();) { + Pair world = it.next(); + mplew.writeInt(world.getLeft()); + mplew.writeMapleAsciiString(world.getRight()); + } + return mplew.getPacket(); + } + + /** + * + * @param chr + * @param isSelf + * @return + */ + public static byte[] charInfo(MapleCharacter chr) { + //3D 00 0A 43 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CHAR_INFO.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(chr.getLevel()); + mplew.writeShort(chr.getJob().getId()); + mplew.writeShort(chr.getFame()); + mplew.write(chr.getMarriageRing() != null ? 1 : 0); + String guildName = ""; + String allianceName = ""; + MapleGuildSummary gs = chr.getClient().getWorldServer().getGuildSummary(chr.getGuildId(), chr.getWorld()); + if (chr.getGuildId() > 0 && gs != null) { + guildName = gs.getName(); + MapleAlliance alliance = Server.getInstance().getAlliance(gs.getAllianceId()); + if (alliance != null) { + allianceName = alliance.getName(); + } + } + mplew.writeMapleAsciiString(guildName); + mplew.writeMapleAsciiString(allianceName); + mplew.write(0); + MaplePet[] pets = chr.getPets(); + Item inv = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -114); + for (int i = 0; i < 3; i++) { + if (pets[i] != null) { + mplew.write(pets[i].getUniqueId()); + mplew.writeInt(pets[i].getItemId()); // petid + mplew.writeMapleAsciiString(pets[i].getName()); + mplew.write(pets[i].getLevel()); // pet level + mplew.writeShort(pets[i].getCloseness()); // pet closeness + mplew.write(pets[i].getFullness()); // pet fullness + mplew.writeShort(0); + mplew.writeInt(inv != null ? inv.getItemId() : 0); + } + } + mplew.write(0); //end of pets + if (chr.getMount() != null && chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -18) != null) { + mplew.write(chr.getMount().getId()); //mount + mplew.writeInt(chr.getMount().getLevel()); //level + mplew.writeInt(chr.getMount().getExp()); //exp + mplew.writeInt(chr.getMount().getTiredness()); //tiredness + } else { + mplew.write(0); + } + mplew.write(chr.getCashShop().getWishList().size()); + for (int sn : chr.getCashShop().getWishList()) { + mplew.writeInt(sn); + } + mplew.writeInt(chr.getMonsterBook().getBookLevel()); + mplew.writeInt(chr.getMonsterBook().getNormalCard()); + mplew.writeInt(chr.getMonsterBook().getSpecialCard()); + mplew.writeInt(chr.getMonsterBook().getTotalCards()); + mplew.writeInt(chr.getMonsterBookCover() > 0 ? MapleItemInformationProvider.getInstance().getCardMobId(chr.getMonsterBookCover()) : 0); + Item medal = chr.getInventory(MapleInventoryType.EQUIPPED).getItem((short) -49); + if (medal != null) { + mplew.writeInt(medal.getItemId()); + } else { + mplew.writeInt(0); + } + ArrayList medalQuests = new ArrayList<>(); + List completed = chr.getCompletedQuests(); + for (MapleQuestStatus q : completed) { + if (q.getQuest().getId() >= 29000) { // && q.getQuest().getId() <= 29923 + medalQuests.add(q.getQuest().getId()); + } + } + + Collections.sort(medalQuests); + mplew.writeShort(medalQuests.size()); + for (Short s : medalQuests) { + mplew.writeShort(s); + } + return mplew.getPacket(); + } + + /** + * It is important that statups is in the correct order (see decleration + * order in MapleBuffStat) since this method doesn't do automagical + * reordering. + * + * @param buffid + * @param bufflength + * @param statups + * @return + */ + //1F 00 00 00 00 00 03 00 00 40 00 00 00 E0 00 00 00 00 00 00 00 00 E0 01 8E AA 4F 00 00 C2 EB 0B E0 01 8E AA 4F 00 00 C2 EB 0B 0C 00 8E AA 4F 00 00 C2 EB 0B 44 02 8E AA 4F 00 00 C2 EB 0B 44 02 8E AA 4F 00 00 C2 EB 0B 00 00 E0 7A 1D 00 8E AA 4F 00 00 00 00 00 00 00 00 03 + public static byte[] giveBuff(int buffid, int bufflength, List> statups) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); + boolean special = false; + writeLongMask(mplew, statups); + for (Pair statup : statups) { + if (statup.getLeft().equals(MapleBuffStat.MONSTER_RIDING) || statup.getLeft().equals(MapleBuffStat.HOMING_BEACON)) { + special = true; + } + mplew.writeShort(statup.getRight().shortValue()); + mplew.writeInt(buffid); + mplew.writeInt(bufflength); + } + mplew.writeInt(0); + mplew.write(0); + mplew.writeInt(statups.get(0).getRight()); //Homing beacon ... + + if (special) { + mplew.skip(3); + } + return mplew.getPacket(); + } + + /** + * + * @param cid + * @param statups + * @param mount + * @return + */ + public static byte[] showMonsterRiding(int cid, MapleMount mount) { //Gtfo with this, this is just giveForeignBuff + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); + mplew.writeInt(cid); + mplew.writeLong(MapleBuffStat.MONSTER_RIDING.getValue()); //Thanks? + mplew.writeLong(0); + mplew.writeShort(0); + mplew.writeInt(mount.getItemId()); + mplew.writeInt(mount.getSkillId()); + mplew.writeInt(0); //Server Tick value. + mplew.writeShort(0); + mplew.write(0); //Times you have been buffed + return mplew.getPacket(); + } + /* mplew.writeInt(cid); + writeLongMask(mplew, statups); + for (Pair statup : statups) { + if (morph) { + mplew.writeInt(statup.getRight().intValue()); + } else { + mplew.writeShort(statup.getRight().shortValue()); + } + } + mplew.writeShort(0); + mplew.write(0);*/ + + /** + * + * @param c + * @param quest + * @return + */ + public static byte[] forfeitQuest(short quest) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(1); + mplew.writeShort(quest); + mplew.write(0); + return mplew.getPacket(); + } + + /** + * + * @param c + * @param quest + * @return + */ + public static byte[] completeQuest(short quest, long time) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(1); + mplew.writeShort(quest); + mplew.write(2); + mplew.writeLong(time); + return mplew.getPacket(); + } + + /** + * + * @param c + * @param quest + * @param npc + * @param progress + * @return + */ + public static byte[] updateQuestInfo(short quest, int npc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); + mplew.write(8); //0x0A in v95 + mplew.writeShort(quest); + mplew.writeInt(npc); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] addQuestTimeLimit(final short quest, final int time) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); + mplew.write(6); + mplew.writeShort(1);//Size but meh, when will there be 2 at the same time? And it won't even replace the old one :) + mplew.writeShort(quest); + mplew.writeInt(time); + return mplew.getPacket(); + } + + public static byte[] removeQuestTimeLimit(final short quest) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); + mplew.write(7); + mplew.writeShort(1);//Position + mplew.writeShort(quest); + return mplew.getPacket(); + } + + public static byte[] updateQuest(MapleQuestStatus q, boolean infoUpdate) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(1); + mplew.writeShort(infoUpdate ? q.getQuest().getInfoNumber() : q.getQuest().getId()); + if (infoUpdate) { + mplew.write(1); + } else { + mplew.write(q.getStatus().getId()); + } + + mplew.writeMapleAsciiString(q.getQuestData()); + return mplew.getPacket(); + } + + private static void writeLongMaskD(final MaplePacketLittleEndianWriter mplew, List> statups) { + long firstmask = 0; + long secondmask = 0; + for (Pair statup : statups) { + if (statup.getLeft().isFirst()) { + firstmask |= statup.getLeft().getValue(); + } else { + secondmask |= statup.getLeft().getValue(); + } + } + mplew.writeLong(firstmask); + mplew.writeLong(secondmask); + } + + public static byte[] giveDebuff(List> statups, MobSkill skill) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); + writeLongMaskD(mplew, statups); + for (Pair statup : statups) { + mplew.writeShort(statup.getRight().shortValue()); + mplew.writeShort(skill.getSkillId()); + mplew.writeShort(skill.getSkillLevel()); + mplew.writeInt((int) skill.getDuration()); + } + mplew.writeShort(0); // ??? wk charges have 600 here o.o + mplew.writeShort(900);//Delay + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] giveForeignDebuff(int cid, List> statups, MobSkill skill) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); + mplew.writeInt(cid); + writeLongMaskD(mplew, statups); + for (int i = 0; i < statups.size(); i++) { + mplew.writeShort(skill.getSkillId()); + mplew.writeShort(skill.getSkillLevel()); + } + mplew.writeShort(0); // same as give_buff + mplew.writeShort(900);//Delay + return mplew.getPacket(); + } + + public static byte[] cancelForeignDebuff(int cid, long mask) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); + mplew.writeInt(cid); + mplew.writeLong(0); + mplew.writeLong(mask); + return mplew.getPacket(); + } + + public static byte[] giveForeignBuff(int cid, List> statups) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); + mplew.writeInt(cid); + writeLongMask(mplew, statups); + for (Pair statup : statups) { + mplew.writeShort(statup.getRight().shortValue()); + } + mplew.writeInt(0); + mplew.writeShort(0); + return mplew.getPacket(); + } + + public static byte[] cancelForeignBuff(int cid, List statups) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_FOREIGN_BUFF.getValue()); + mplew.writeInt(cid); + writeLongMaskFromList(mplew, statups); + return mplew.getPacket(); + } + + public static byte[] cancelBuff(List statups) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_BUFF.getValue()); + writeLongMaskFromList(mplew, statups); + mplew.write(1);//? + return mplew.getPacket(); + } + + private static void writeLongMask(final MaplePacketLittleEndianWriter mplew, List> statups) { + long firstmask = 0; + long secondmask = 0; + for (Pair statup : statups) { + if (statup.getLeft().isFirst()) { + firstmask |= statup.getLeft().getValue(); + } else { + secondmask |= statup.getLeft().getValue(); + } + } + mplew.writeLong(firstmask); + mplew.writeLong(secondmask); + } + + private static void writeLongMaskFromList(final MaplePacketLittleEndianWriter mplew, List statups) { + long firstmask = 0; + long secondmask = 0; + for (MapleBuffStat statup : statups) { + if (statup.isFirst()) { + firstmask |= statup.getValue(); + } else { + secondmask |= statup.getValue(); + } + } + mplew.writeLong(firstmask); + mplew.writeLong(secondmask); + } + + public static byte[] cancelDebuff(long mask) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(19); + mplew.writeShort(SendOpcode.CANCEL_BUFF.getValue()); + mplew.writeLong(0); + mplew.writeLong(mask); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] getPlayerShopChat(MapleCharacter c, String chat, boolean owner) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); + mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + mplew.write(owner ? 0 : 1); + mplew.writeMapleAsciiString(c.getName() + " : " + chat); + return mplew.getPacket(); + } + + public static byte[] getPlayerShopNewVisitor(MapleCharacter c, int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); + mplew.write(slot); + addCharLook(mplew, c, false); + mplew.writeMapleAsciiString(c.getName()); + return mplew.getPacket(); + } + + public static byte[] getPlayerShopRemoveVisitor(int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + if (slot > 0) { + mplew.write(slot); + } + return mplew.getPacket(); + } + + public static byte[] getTradePartnerAdd(MapleCharacter c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); + mplew.write(1); + addCharLook(mplew, c, false); + mplew.writeMapleAsciiString(c.getName()); + return mplew.getPacket(); + } + + public static byte[] getTradeInvite(MapleCharacter c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.INVITE.getCode()); + mplew.write(3); + mplew.writeMapleAsciiString(c.getName()); + mplew.write(new byte[]{(byte) 0xB7, (byte) 0x50, 0, 0}); + return mplew.getPacket(); + } + + public static byte[] getTradeMesoSet(byte number, int meso) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.SET_MESO.getCode()); + mplew.write(number); + mplew.writeInt(meso); + return mplew.getPacket(); + } + + public static byte[] getTradeItemAdd(byte number, Item item) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.SET_ITEMS.getCode()); + mplew.write(number); + mplew.write(item.getPosition()); + addItemInfo(mplew, item, true); + return mplew.getPacket(); + } + + public static byte[] getPlayerShopItemUpdate(MaplePlayerShop shop) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode()); + mplew.write(shop.getItems().size()); + for (MaplePlayerShopItem item : shop.getItems()) { + mplew.writeShort(item.getBundles()); + mplew.writeShort(item.getItem().getQuantity()); + mplew.writeInt(item.getPrice()); + addItemInfo(mplew, item.getItem(), true); + } + return mplew.getPacket(); + } + + /** + * + * @param c + * @param shop + * @param owner + * @return + */ + public static byte[] getPlayerShop(MapleClient c, MaplePlayerShop shop, boolean owner) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); + mplew.write(4); + mplew.write(4); + mplew.write(owner ? 0 : 1); + mplew.write(0); + addCharLook(mplew, shop.getOwner(), false); + mplew.writeMapleAsciiString(shop.getOwner().getName()); + mplew.write(1); + addCharLook(mplew, shop.getOwner(), false); + mplew.writeMapleAsciiString(shop.getOwner().getName()); + mplew.write(0xFF); + mplew.writeMapleAsciiString(shop.getDescription()); + List items = shop.getItems(); + mplew.write(0x10); + mplew.write(items.size()); + for (MaplePlayerShopItem item : items) { + mplew.writeShort(item.getBundles()); + mplew.writeShort(item.getItem().getQuantity()); + mplew.writeInt(item.getPrice()); + addItemInfo(mplew, item.getItem(), true); + } + return mplew.getPacket(); + } + + public static byte[] getTradeStart(MapleClient c, MapleTrade trade, byte number) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); + mplew.write(3); + mplew.write(2); + mplew.write(number); + if (number == 1) { + mplew.write(0); + addCharLook(mplew, trade.getPartner().getChr(), false); + mplew.writeMapleAsciiString(trade.getPartner().getChr().getName()); + } + mplew.write(number); + addCharLook(mplew, c.getPlayer(), false); + mplew.writeMapleAsciiString(c.getPlayer().getName()); + mplew.write(0xFF); + return mplew.getPacket(); + } + + public static byte[] getTradeConfirmation() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.CONFIRM.getCode()); + return mplew.getPacket(); + } + + public static byte[] getTradeCompletion(byte number) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + mplew.write(number); + mplew.write(6); + return mplew.getPacket(); + } + + public static byte[] getTradeCancel(byte number) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + mplew.write(number); + mplew.write(2); + return mplew.getPacket(); + } + + public static byte[] addCharBox(MapleCharacter c, int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); + mplew.writeInt(c.getId()); + addAnnounceBox(mplew, c.getPlayerShop(), type); + return mplew.getPacket(); + } + + public static byte[] removeCharBox(MapleCharacter c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); + mplew.writeInt(c.getId()); + mplew.write(0); + return mplew.getPacket(); + } + + /** + * Possible values for speaker:
    0: Npc talking (left)
    + * 1: Npc talking (right)
    2: Player talking (left)
    3: Player talking + * (left)
    + * + * @param npc Npcid + * @param msgType + * @param talk + * @param endBytes + * @param speaker + * @return + */ + public static byte[] getNPCTalk(int npc, byte msgType, String talk, String endBytes, byte speaker) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(4); // ? + mplew.writeInt(npc); + mplew.write(msgType); + mplew.write(speaker); + mplew.writeMapleAsciiString(talk); + mplew.write(HexTool.getByteArrayFromHexString(endBytes)); + return mplew.getPacket(); + } + + public static byte[] getDimensionalMirror(String talk) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(4); // ? + mplew.writeInt(9010022); + mplew.write(0x0E); + mplew.write(0); + mplew.writeInt(0); + mplew.writeMapleAsciiString(talk); + return mplew.getPacket(); + } + + public static byte[] getNPCTalkStyle(int npc, String talk, int styles[]) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(4); // ? + mplew.writeInt(npc); + mplew.write(7); + mplew.write(0); //speaker + mplew.writeMapleAsciiString(talk); + mplew.write(styles.length); + for (int i = 0; i < styles.length; i++) { + mplew.writeInt(styles[i]); + } + return mplew.getPacket(); + } + + public static byte[] getNPCTalkNum(int npc, String talk, int def, int min, int max) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(4); // ? + mplew.writeInt(npc); + mplew.write(3); + mplew.write(0); //speaker + mplew.writeMapleAsciiString(talk); + mplew.writeInt(def); + mplew.writeInt(min); + mplew.writeInt(max); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] getNPCTalkText(int npc, String talk, String def) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NPC_TALK.getValue()); + mplew.write(4); // Doesn't matter + mplew.writeInt(npc); + mplew.write(2); + mplew.write(0); //speaker + mplew.writeMapleAsciiString(talk); + mplew.writeMapleAsciiString(def);//:D + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] showBuffeffect(int cid, int skillid, int effectid) { + return showBuffeffect(cid, skillid, effectid, (byte) 3); + } + + public static byte[] showBuffeffect(int cid, int skillid, int effectid, byte direction) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(cid); + mplew.write(effectid); //buff level + mplew.writeInt(skillid); + mplew.write(direction); + mplew.write(1); + mplew.writeLong(0); + return mplew.getPacket(); + } + + public static byte[] showOwnBuffEffect(int skillid, int effectid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(effectid); + mplew.writeInt(skillid); + mplew.write(0xA9); + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] showOwnBerserk(int skilllevel, boolean Berserk) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(1); + mplew.writeInt(1320006); + mplew.write(0xA9); + mplew.write(skilllevel); + mplew.write(Berserk ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] showBerserk(int cid, int skilllevel, boolean Berserk) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(cid); + mplew.write(1); + mplew.writeInt(1320006); + mplew.write(0xA9); + mplew.write(skilllevel); + mplew.write(Berserk ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] updateSkill(int skillid, int level, int masterlevel, long expiration) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_SKILLS.getValue()); + mplew.write(1); + mplew.writeShort(1); + mplew.writeInt(skillid); + mplew.writeInt(level); + mplew.writeInt(masterlevel); + addExpirationTime(mplew, expiration); + mplew.write(4); + return mplew.getPacket(); + } + + public static byte[] getShowQuestCompletion(int id) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.QUEST_CLEAR.getValue()); + mplew.writeShort(id); + return mplew.getPacket(); + } + + public static byte[] getKeymap(Map keybindings) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.KEYMAP.getValue()); + mplew.write(0); + for (int x = 0; x < 90; x++) { + MapleKeyBinding binding = keybindings.get(Integer.valueOf(x)); + if (binding != null) { + mplew.write(binding.getType()); + mplew.writeInt(binding.getAction()); + } else { + mplew.write(0); + mplew.writeInt(0); + } + } + return mplew.getPacket(); + } + + public static byte[] getWhisper(String sender, int channel, String text) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.WHISPER.getValue()); + mplew.write(0x12); + mplew.writeMapleAsciiString(sender); + mplew.writeShort(channel - 1); // I guess this is the channel + mplew.writeMapleAsciiString(text); + return mplew.getPacket(); + } + + /** + * + * @param target name of the target character + * @param reply error code: 0x0 = cannot find char, 0x1 = success + * @return the MaplePacket + */ + public static byte[] getWhisperReply(String target, byte reply) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.WHISPER.getValue()); + mplew.write(0x0A); // whisper? + mplew.writeMapleAsciiString(target); + mplew.write(reply); + return mplew.getPacket(); + } + + public static byte[] getInventoryFull() { + return modifyInventory(true, Collections.emptyList()); + } + + public static byte[] getShowInventoryFull() { + return getShowInventoryStatus(0xff); + } + + public static byte[] showItemUnavailable() { + return getShowInventoryStatus(0xfe); + } + + public static byte[] getShowInventoryStatus(int mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(0); + mplew.write(mode); + mplew.writeInt(0); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] getStorage(int npcId, byte slots, Collection items, int meso) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STORAGE.getValue()); + mplew.write(0x16); + mplew.writeInt(npcId); + mplew.write(slots); + mplew.writeShort(0x7E); + mplew.writeShort(0); + mplew.writeInt(0); + mplew.writeInt(meso); + mplew.writeShort(0); + mplew.write((byte) items.size()); + for (Item item : items) { + addItemInfo(mplew, item, true); + } + mplew.writeShort(0); + mplew.write(0); + return mplew.getPacket(); + } + + /* + * 0x0A = Inv full + * 0x0B = You do not have enough mesos + * 0x0C = One-Of-A-Kind error + */ + public static byte[] getStorageError(byte i) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STORAGE.getValue()); + mplew.write(i); + return mplew.getPacket(); + } + + public static byte[] mesoStorage(byte slots, int meso) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STORAGE.getValue()); + mplew.write(0x13); + mplew.write(slots); + mplew.writeShort(2); + mplew.writeShort(0); + mplew.writeInt(0); + mplew.writeInt(meso); + return mplew.getPacket(); + } + + public static byte[] storeStorage(byte slots, MapleInventoryType type, Collection items) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STORAGE.getValue()); + mplew.write(0xD); + mplew.write(slots); + mplew.writeShort(type.getBitfieldEncoding()); + mplew.writeShort(0); + mplew.writeInt(0); + mplew.write(items.size()); + for (Item item : items) { + addItemInfo(mplew, item, true); + } + return mplew.getPacket(); + } + + public static byte[] takeOutStorage(byte slots, MapleInventoryType type, Collection items) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STORAGE.getValue()); + mplew.write(0x9); + mplew.write(slots); + mplew.writeShort(type.getBitfieldEncoding()); + mplew.writeShort(0); + mplew.writeInt(0); + mplew.write(items.size()); + for (Item item : items) { + addItemInfo(mplew, item, true); + } + return mplew.getPacket(); + } + + /** + * + * @param oid + * @param remhppercentage + * @return + */ + public static byte[] showMonsterHP(int oid, int remhppercentage) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_MONSTER_HP.getValue()); + mplew.writeInt(oid); + mplew.write(remhppercentage); + return mplew.getPacket(); + } + + public static byte[] showBossHP(int oid, int currHP, int maxHP, byte tagColor, byte tagBgColor) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); + mplew.write(5); + mplew.writeInt(oid); + mplew.writeInt(currHP); + mplew.writeInt(maxHP); + mplew.write(tagColor); + mplew.write(tagBgColor); + return mplew.getPacket(); + } + + public static byte[] giveFameResponse(int mode, String charname, int newfame) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAME_RESPONSE.getValue()); + mplew.write(0); + mplew.writeMapleAsciiString(charname); + mplew.write(mode); + mplew.writeShort(newfame); + mplew.writeShort(0); + return mplew.getPacket(); + } + + /** + * status can be:
    0: ok, use giveFameResponse
    1: the username is + * incorrectly entered
    2: users under level 15 are unable to toggle with + * fame.
    3: can't raise or drop fame anymore today.
    4: can't raise + * or drop fame for this character for this month anymore.
    5: received + * fame, use receiveFame()
    6: level of fame neither has been raised nor + * dropped due to an unexpected error + * + * @param status + * @return + */ + public static byte[] giveFameErrorResponse(int status) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAME_RESPONSE.getValue()); + mplew.write(status); + return mplew.getPacket(); + } + + public static byte[] receiveFame(int mode, String charnameFrom) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAME_RESPONSE.getValue()); + mplew.write(5); + mplew.writeMapleAsciiString(charnameFrom); + mplew.write(mode); + return mplew.getPacket(); + } + + public static byte[] partyCreated(MaplePartyCharacter partychar) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + mplew.write(8); + mplew.writeShort(0x8b); + mplew.writeShort(1); + if (partychar.getDoors().size() > 0) { + for (MapleDoor doors : partychar.getDoors()) { + mplew.writeInt(doors.getTown().getId()); + mplew.writeInt(doors.getTarget().getId()); + mplew.writeInt(doors.getPosition().x); + mplew.writeInt(doors.getPosition().y); + } + } else { + mplew.writeInt(999999999); + mplew.writeInt(999999999); + mplew.writeInt(0); + mplew.writeInt(0); + } + return mplew.getPacket(); + } + + public static byte[] partyInvite(MapleCharacter from) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + mplew.write(4); + mplew.writeInt(from.getParty().getId()); + mplew.writeMapleAsciiString(from.getName()); + mplew.write(0); + return mplew.getPacket(); + } + + /** + * 10: A beginner can't create a party. 1/11/14/19: Your request for a party + * didn't work due to an unexpected error. 13: You have yet to join a party. + * 16: Already have joined a party. 17: The party you're trying to join is + * already in full capacity. 19: Unable to find the requested character in + * this channel. + * + * @param message + * @return + */ + public static byte[] partyStatusMessage(int message) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + mplew.write(message); + return mplew.getPacket(); + } + + /** + * 23: 'Char' have denied request to the party. + * + * @param message + * @param charname + * @return + */ + public static byte[] partyStatusMessage(int message, String charname) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + mplew.write(message); + mplew.writeMapleAsciiString(charname); + return mplew.getPacket(); + } + + private static void addPartyStatus(int forchannel, MapleParty party, LittleEndianWriter lew, boolean leaving) { + List partymembers = new ArrayList<>(party.getMembers()); + while (partymembers.size() < 6) { + partymembers.add(new MaplePartyCharacter()); + } + for (MaplePartyCharacter partychar : partymembers) { + lew.writeInt(partychar.getId()); + } + for (MaplePartyCharacter partychar : partymembers) { + lew.writeAsciiString(getRightPaddedStr(partychar.getName(), '\0', 13)); + } + for (MaplePartyCharacter partychar : partymembers) { + lew.writeInt(partychar.getJobId()); + } + for (MaplePartyCharacter partychar : partymembers) { + lew.writeInt(partychar.getLevel()); + } + for (MaplePartyCharacter partychar : partymembers) { + if (partychar.isOnline()) { + lew.writeInt(partychar.getChannel() - 1); + } else { + lew.writeInt(-2); + } + } + lew.writeInt(party.getLeader().getId()); + for (MaplePartyCharacter partychar : partymembers) { + if (partychar.getChannel() == forchannel) { + lew.writeInt(partychar.getMapId()); + } else { + lew.writeInt(0); + } + } + for (MaplePartyCharacter partychar : partymembers) { + if (partychar.getChannel() == forchannel && !leaving) { + if (partychar.getDoors().size() > 0) { + for (MapleDoor doors : partychar.getDoors()) { + lew.writeInt(doors.getTown().getId()); + lew.writeInt(doors.getTarget().getId()); + lew.writeInt(doors.getPosition().x); + lew.writeInt(doors.getPosition().y); + } + } else { + lew.writeInt(999999999); + lew.writeInt(999999999); + lew.writeInt(0); + lew.writeInt(0); + } + } else { + lew.writeInt(999999999); + lew.writeInt(999999999); + lew.writeInt(0); + lew.writeInt(0); + } + } + } + + public static byte[] updateParty(int forChannel, MapleParty party, PartyOperation op, MaplePartyCharacter target) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + switch (op) { + case DISBAND: + case EXPEL: + case LEAVE: + mplew.write(0x0C); + mplew.writeInt(40546); + mplew.writeInt(target.getId()); + if (op == PartyOperation.DISBAND) { + mplew.write(0); + mplew.writeInt(party.getId()); + } else { + mplew.write(1); + if (op == PartyOperation.EXPEL) { + mplew.write(1); + } else { + mplew.write(0); + } + mplew.writeMapleAsciiString(target.getName()); + addPartyStatus(forChannel, party, mplew, false); + } + break; + case JOIN: + mplew.write(0xF); + mplew.writeInt(40546); + mplew.writeMapleAsciiString(target.getName()); + addPartyStatus(forChannel, party, mplew, false); + break; + case SILENT_UPDATE: + case LOG_ONOFF: + mplew.write(0x7); + mplew.writeInt(party.getId()); + addPartyStatus(forChannel, party, mplew, false); + break; + case CHANGE_LEADER: + mplew.write(0x1B); + mplew.writeInt(target.getId()); + mplew.write(0); + break; + } + return mplew.getPacket(); + } + + public static byte[] partyPortal(int townId, int targetId, Point position) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARTY_OPERATION.getValue()); + mplew.writeShort(0x23); + mplew.writeInt(townId); + mplew.writeInt(targetId); + mplew.writePos(position); + return mplew.getPacket(); + } + + public static byte[] updatePartyMemberHP(int cid, int curhp, int maxhp) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_PARTYMEMBER_HP.getValue()); + mplew.writeInt(cid); + mplew.writeInt(curhp); + mplew.writeInt(maxhp); + return mplew.getPacket(); + } + + /** + * mode: 0 buddychat; 1 partychat; 2 guildchat + * + * @param name + * @param chattext + * @param mode + * @return + */ + public static byte[] multiChat(String name, String chattext, int mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MULTICHAT.getValue()); + mplew.write(mode); + mplew.writeMapleAsciiString(name); + mplew.writeMapleAsciiString(chattext); + return mplew.getPacket(); + } + + private static void writeIntMask(final MaplePacketLittleEndianWriter mplew, Map stats) { + int firstmask = 0; + int secondmask = 0; + for (MonsterStatus stat : stats.keySet()) { + if (stat.isFirst()) { + firstmask |= stat.getValue(); + } else { + secondmask |= stat.getValue(); + } + } + mplew.writeInt(firstmask); + mplew.writeInt(secondmask); + } + + public static byte[] applyMonsterStatus(final int oid, final MonsterStatusEffect mse, final List reflection) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.APPLY_MONSTER_STATUS.getValue()); + mplew.writeInt(oid); + mplew.writeLong(0); + writeIntMask(mplew, mse.getStati()); + for (Map.Entry stat : mse.getStati().entrySet()) { + mplew.writeShort(stat.getValue()); + if (mse.isMonsterSkill()) { + mplew.writeShort(mse.getMobSkill().getSkillId()); + mplew.writeShort(mse.getMobSkill().getSkillLevel()); + } else { + mplew.writeInt(mse.getSkill().getId()); + } + mplew.writeShort(-1); // might actually be the buffTime but it's not displayed anywhere + } + int size = mse.getStati().size(); // size + if (reflection != null) { + for (Integer ref : reflection) { + mplew.writeInt(ref); + } + if (reflection.size() > 0) { + size /= 2; // This gives 2 buffs per reflection but it's really one buff + } + } + mplew.write(size); // size + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] cancelMonsterStatus(int oid, Map stats) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_MONSTER_STATUS.getValue()); + mplew.writeInt(oid); + mplew.writeLong(0); + writeIntMask(mplew, stats); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] getClock(int time) { // time in seconds + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CLOCK.getValue()); + mplew.write(2); // clock type. if you send 3 here you have to send another byte (which does not matter at all) before the timestamp + mplew.writeInt(time); + return mplew.getPacket(); + } + + public static byte[] getClockTime(int hour, int min, int sec) { // Current Time + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CLOCK.getValue()); + mplew.write(1); //Clock-Type + mplew.write(hour); + mplew.write(min); + mplew.write(sec); + return mplew.getPacket(); + } + + public static byte[] removeClock() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STOP_CLOCK.getValue()); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] spawnMist(int oid, int ownerCid, int skill, int level, MapleMist mist) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_MIST.getValue()); + mplew.writeInt(oid); + mplew.writeInt(mist.isMobMist() ? 0 : mist.isPoisonMist() ? 1 : mist.isRecoveryMist() ? 4 : 2); // mob mist = 0, player poison = 1, smokescreen = 2, unknown = 3, recovery = 4 + mplew.writeInt(ownerCid); + mplew.writeInt(skill); + mplew.write(level); + mplew.writeShort(mist.getSkillDelay()); // Skill delay + mplew.writeInt(mist.getBox().x); + mplew.writeInt(mist.getBox().y); + mplew.writeInt(mist.getBox().x + mist.getBox().width); + mplew.writeInt(mist.getBox().y + mist.getBox().height); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] removeMist(int oid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.REMOVE_MIST.getValue()); + mplew.writeInt(oid); + return mplew.getPacket(); + } + + public static byte[] damageSummon(int cid, int summonSkillId, int damage, int unkByte, int monsterIdFrom) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DAMAGE_SUMMON.getValue()); + mplew.writeInt(cid); + mplew.writeInt(summonSkillId); + mplew.write(unkByte); + mplew.writeInt(damage); + mplew.writeInt(monsterIdFrom); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] damageMonster(int oid, int damage) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DAMAGE_MONSTER.getValue()); + mplew.writeInt(oid); + mplew.write(0); + mplew.writeInt(damage); + mplew.write(0); + mplew.write(0); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] healMonster(int oid, int heal) { + return damageMonster(oid, -heal); + } + + public static byte[] updateBuddylist(Collection buddylist) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); + mplew.write(7); + mplew.write(buddylist.size()); + for (BuddylistEntry buddy : buddylist) { + if (buddy.isVisible()) { + mplew.writeInt(buddy.getCharacterId()); // cid + mplew.writeAsciiString(getRightPaddedStr(buddy.getName(), '\0', 13)); + mplew.write(0); // opposite status + mplew.writeInt(buddy.getChannel() - 1); + mplew.writeAsciiString(getRightPaddedStr(buddy.getGroup(), '\0', 13)); + mplew.writeInt(0);//mapid? + } + } + for (int x = 0; x < buddylist.size(); x++) { + mplew.writeInt(0);//mapid? + } + return mplew.getPacket(); + } + + public static byte[] buddylistMessage(byte message) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); + mplew.write(message); + return mplew.getPacket(); + } + + public static byte[] requestBuddylistAdd(int cidFrom, int cid, String nameFrom) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); + mplew.write(9); + mplew.writeInt(cidFrom); + mplew.writeMapleAsciiString(nameFrom); + mplew.writeInt(cidFrom); + mplew.writeAsciiString(getRightPaddedStr(nameFrom, '\0', 11)); + mplew.write(0x09); + mplew.write(0xf0); + mplew.write(0x01); + mplew.writeInt(0x0f); + mplew.writeNullTerminatedAsciiString("Default Group"); + mplew.writeInt(cid); + return mplew.getPacket(); + } + + public static byte[] updateBuddyChannel(int characterid, int channel) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); + mplew.write(0x14); + mplew.writeInt(characterid); + mplew.write(0); + mplew.writeInt(channel); + return mplew.getPacket(); + } + + public static byte[] itemEffect(int characterid, int itemid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_EFFECT.getValue()); + mplew.writeInt(characterid); + mplew.writeInt(itemid); + return mplew.getPacket(); + } + + public static byte[] updateBuddyCapacity(int capacity) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BUDDYLIST.getValue()); + mplew.write(0x15); + mplew.write(capacity); + return mplew.getPacket(); + } + + public static byte[] showChair(int characterid, int itemid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_CHAIR.getValue()); + mplew.writeInt(characterid); + mplew.writeInt(itemid); + return mplew.getPacket(); + } + + public static byte[] cancelChair(int id) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_CHAIR.getValue()); + if (id == -1) { + mplew.write(0); + } else { + mplew.write(1); + mplew.writeShort(id); + } + return mplew.getPacket(); + } + + // is there a way to spawn reactors non-animated? + public static byte[] spawnReactor(MapleReactor reactor) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + Point pos = reactor.getPosition(); + mplew.writeShort(SendOpcode.REACTOR_SPAWN.getValue()); + mplew.writeInt(reactor.getObjectId()); + mplew.writeInt(reactor.getId()); + mplew.write(reactor.getState()); + mplew.writePos(pos); + mplew.writeShort(0); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] triggerReactor(MapleReactor reactor, int stance) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + Point pos = reactor.getPosition(); + mplew.writeShort(SendOpcode.REACTOR_HIT.getValue()); + mplew.writeInt(reactor.getObjectId()); + mplew.write(reactor.getState()); + mplew.writePos(pos); + mplew.writeShort(stance); + mplew.write(0); + mplew.write(5); // frame delay, set to 5 since there doesn't appear to be a fixed formula for it + return mplew.getPacket(); + } + + public static byte[] destroyReactor(MapleReactor reactor) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + Point pos = reactor.getPosition(); + mplew.writeShort(SendOpcode.REACTOR_DESTROY.getValue()); + mplew.writeInt(reactor.getObjectId()); + mplew.write(reactor.getState()); + mplew.writePos(pos); + return mplew.getPacket(); + } + + public static byte[] musicChange(String song) { + return environmentChange(song, 6); + } + + public static byte[] showEffect(String effect) { + return environmentChange(effect, 3); + } + + public static byte[] playSound(String sound) { + return environmentChange(sound, 4); + } + + public static byte[] environmentChange(String env, int mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); + mplew.write(mode); + mplew.writeMapleAsciiString(env); + return mplew.getPacket(); + } + + public static byte[] startMapEffect(String msg, int itemid, boolean active) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BLOW_WEATHER.getValue()); + mplew.write(active ? 0 : 1); + mplew.writeInt(itemid); + if (active) { + mplew.writeMapleAsciiString(msg); + } + return mplew.getPacket(); + } + + public static byte[] removeMapEffect() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BLOW_WEATHER.getValue()); + mplew.write(0); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] mapEffect(String path) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); + mplew.write(3); + mplew.writeMapleAsciiString(path); + return mplew.getPacket(); + } + + public static byte[] mapSound(String path) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); + mplew.write(4); + mplew.writeMapleAsciiString(path); + return mplew.getPacket(); + } + + public static byte[] showGuildInfo(MapleCharacter c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x1A); //signature for showing guild info + if (c == null) { //show empty guild (used for leaving, expelled) + mplew.write(0); + return mplew.getPacket(); + } + MapleGuild g = c.getClient().getWorldServer().getGuild(c.getMGC()); + if (g == null) { //failed to read from DB - don't show a guild + mplew.write(0); + return mplew.getPacket(); + } else { + c.setGuildRank(c.getGuildRank()); + } + mplew.write(1); //bInGuild + mplew.writeInt(g.getId()); + mplew.writeMapleAsciiString(g.getName()); + for (int i = 1; i <= 5; i++) { + mplew.writeMapleAsciiString(g.getRankTitle(i)); + } + Collection members = g.getMembers(); + mplew.write(members.size()); //then it is the size of all the members + for (MapleGuildCharacter mgc : members) {//and each of their character ids o_O + mplew.writeInt(mgc.getId()); + } + for (MapleGuildCharacter mgc : members) { + mplew.writeAsciiString(getRightPaddedStr(mgc.getName(), '\0', 13)); + mplew.writeInt(mgc.getJobId()); + mplew.writeInt(mgc.getLevel()); + mplew.writeInt(mgc.getGuildRank()); + mplew.writeInt(mgc.isOnline() ? 1 : 0); + mplew.writeInt(g.getSignature()); + mplew.writeInt(mgc.getAllianceRank()); + } + mplew.writeInt(g.getCapacity()); + mplew.writeShort(g.getLogoBG()); + mplew.write(g.getLogoBGColor()); + mplew.writeShort(g.getLogo()); + mplew.write(g.getLogoColor()); + mplew.writeMapleAsciiString(g.getNotice()); + mplew.writeInt(g.getGP()); + mplew.writeInt(g.getAllianceId()); + return mplew.getPacket(); + } + + public static byte[] guildMemberOnline(int gid, int cid, boolean bOnline) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x3d); + mplew.writeInt(gid); + mplew.writeInt(cid); + mplew.write(bOnline ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] guildInvite(int gid, String charName) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x05); + mplew.writeInt(gid); + mplew.writeMapleAsciiString(charName); + return mplew.getPacket(); + } + + /** + * 'Char' has denied your guild invitation. + * + * @param charname + * @return + */ + public static byte[] denyGuildInvitation(String charname) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x37); + mplew.writeMapleAsciiString(charname); + return mplew.getPacket(); + } + + public static byte[] genericGuildMessage(byte code) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(code); + return mplew.getPacket(); + } + + public static byte[] newGuildMember(MapleGuildCharacter mgc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x27); + mplew.writeInt(mgc.getGuildId()); + mplew.writeInt(mgc.getId()); + mplew.writeAsciiString(getRightPaddedStr(mgc.getName(), '\0', 13)); + mplew.writeInt(mgc.getJobId()); + mplew.writeInt(mgc.getLevel()); + mplew.writeInt(mgc.getGuildRank()); //should be always 5 but whatevs + mplew.writeInt(mgc.isOnline() ? 1 : 0); //should always be 1 too + mplew.writeInt(1); //? could be guild signature, but doesn't seem to matter + mplew.writeInt(3); + return mplew.getPacket(); + } + + //someone leaving, mode == 0x2c for leaving, 0x2f for expelled + public static byte[] memberLeft(MapleGuildCharacter mgc, boolean bExpelled) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(bExpelled ? 0x2f : 0x2c); + mplew.writeInt(mgc.getGuildId()); + mplew.writeInt(mgc.getId()); + mplew.writeMapleAsciiString(mgc.getName()); + return mplew.getPacket(); + } + + //rank change + public static byte[] changeRank(MapleGuildCharacter mgc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x40); + mplew.writeInt(mgc.getGuildId()); + mplew.writeInt(mgc.getId()); + mplew.write(mgc.getGuildRank()); + return mplew.getPacket(); + } + + public static byte[] guildNotice(int gid, String notice) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x44); + mplew.writeInt(gid); + mplew.writeMapleAsciiString(notice); + return mplew.getPacket(); + } + + public static byte[] guildMemberLevelJobUpdate(MapleGuildCharacter mgc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x3C); + mplew.writeInt(mgc.getGuildId()); + mplew.writeInt(mgc.getId()); + mplew.writeInt(mgc.getLevel()); + mplew.writeInt(mgc.getJobId()); + return mplew.getPacket(); + } + + public static byte[] rankTitleChange(int gid, String[] ranks) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x3E); + mplew.writeInt(gid); + for (int i = 0; i < 5; i++) { + mplew.writeMapleAsciiString(ranks[i]); + } + return mplew.getPacket(); + } + + public static byte[] guildDisband(int gid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x32); + mplew.writeInt(gid); + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] guildQuestWaitingNotice(byte channel, int waitingPos) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x4C); + mplew.write(channel - 1); + mplew.write(waitingPos); + return mplew.getPacket(); + } + + public static byte[] guildEmblemChange(int gid, short bg, byte bgcolor, short logo, byte logocolor) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x42); + mplew.writeInt(gid); + mplew.writeShort(bg); + mplew.write(bgcolor); + mplew.writeShort(logo); + mplew.write(logocolor); + return mplew.getPacket(); + } + + public static byte[] guildCapacityChange(int gid, int capacity) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x3A); + mplew.writeInt(gid); + mplew.write(capacity); + return mplew.getPacket(); + } + + public static void addThread(final MaplePacketLittleEndianWriter mplew, ResultSet rs) throws SQLException { + mplew.writeInt(rs.getInt("localthreadid")); + mplew.writeInt(rs.getInt("postercid")); + mplew.writeMapleAsciiString(rs.getString("name")); + mplew.writeLong(getTime(rs.getLong("timestamp"))); + mplew.writeInt(rs.getInt("icon")); + mplew.writeInt(rs.getInt("replycount")); + } + + public static byte[] BBSThreadList(ResultSet rs, int start) throws SQLException { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_BBS_PACKET.getValue()); + mplew.write(0x06); + if (!rs.last()) { + mplew.write(0); + mplew.writeInt(0); + mplew.writeInt(0); + return mplew.getPacket(); + } + int threadCount = rs.getRow(); + if (rs.getInt("localthreadid") == 0) { //has a notice + mplew.write(1); + addThread(mplew, rs); + threadCount--; //one thread didn't count (because it's a notice) + } else { + mplew.write(0); + } + if (!rs.absolute(start + 1)) { //seek to the thread before where we start + rs.first(); //uh, we're trying to start at a place past possible + start = 0; + } + mplew.writeInt(threadCount); + mplew.writeInt(Math.min(10, threadCount - start)); + for (int i = 0; i < Math.min(10, threadCount - start); i++) { + addThread(mplew, rs); + rs.next(); + } + return mplew.getPacket(); + } + + public static byte[] showThread(int localthreadid, ResultSet threadRS, ResultSet repliesRS) throws SQLException, RuntimeException { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_BBS_PACKET.getValue()); + mplew.write(0x07); + mplew.writeInt(localthreadid); + mplew.writeInt(threadRS.getInt("postercid")); + mplew.writeLong(getTime(threadRS.getLong("timestamp"))); + mplew.writeMapleAsciiString(threadRS.getString("name")); + mplew.writeMapleAsciiString(threadRS.getString("startpost")); + mplew.writeInt(threadRS.getInt("icon")); + if (repliesRS != null) { + int replyCount = threadRS.getInt("replycount"); + mplew.writeInt(replyCount); + int i; + for (i = 0; i < replyCount && repliesRS.next(); i++) { + mplew.writeInt(repliesRS.getInt("replyid")); + mplew.writeInt(repliesRS.getInt("postercid")); + mplew.writeLong(getTime(repliesRS.getLong("timestamp"))); + mplew.writeMapleAsciiString(repliesRS.getString("content")); + } + if (i != replyCount || repliesRS.next()) { + throw new RuntimeException(String.valueOf(threadRS.getInt("threadid"))); + } + } else { + mplew.writeInt(0); + } + return mplew.getPacket(); + } + + public static byte[] showGuildRanks(int npcid, ResultSet rs) throws SQLException { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x49); + mplew.writeInt(npcid); + if (!rs.last()) { //no guilds o.o + mplew.writeInt(0); + return mplew.getPacket(); + } + mplew.writeInt(rs.getRow()); //number of entries + rs.beforeFirst(); + while (rs.next()) { + mplew.writeMapleAsciiString(rs.getString("name")); + mplew.writeInt(rs.getInt("GP")); + mplew.writeInt(rs.getInt("logo")); + mplew.writeInt(rs.getInt("logoColor")); + mplew.writeInt(rs.getInt("logoBG")); + mplew.writeInt(rs.getInt("logoBGColor")); + } + return mplew.getPacket(); + } + + public static byte[] showPlayerRanks(int npcid, ResultSet rs) throws SQLException { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x49); + mplew.writeInt(npcid); + if (!rs.last()) { + mplew.writeInt(0); + return mplew.getPacket(); + } + mplew.writeInt(rs.getRow()); + rs.beforeFirst(); + while (rs.next()) { + mplew.writeMapleAsciiString(rs.getString("name")); + mplew.writeInt(rs.getInt("level")); + mplew.writeInt(0); + mplew.writeInt(0); + mplew.writeInt(0); + mplew.writeInt(0); + } + return mplew.getPacket(); + } + + public static byte[] updateGP(int gid, int GP) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GUILD_OPERATION.getValue()); + mplew.write(0x48); + mplew.writeInt(gid); + mplew.writeInt(GP); + return mplew.getPacket(); + } + + public static byte[] skillEffect(MapleCharacter from, int skillId, int level, byte flags, int speed, byte direction) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SKILL_EFFECT.getValue()); + mplew.writeInt(from.getId()); + mplew.writeInt(skillId); + mplew.write(level); + mplew.write(flags); + mplew.write(speed); + mplew.write(direction); //Mmmk + return mplew.getPacket(); + } + + public static byte[] skillCancel(MapleCharacter from, int skillId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CANCEL_SKILL_EFFECT.getValue()); + mplew.writeInt(from.getId()); + mplew.writeInt(skillId); + return mplew.getPacket(); + } + + public static byte[] showMagnet(int mobid, byte success) { // Monster Magnet + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_MAGNET.getValue()); + mplew.writeInt(mobid); + mplew.write(success); + mplew.skip(10); //Mmmk + return mplew.getPacket(); + } + + /** + * Sends a player hint. + * + * @param hint The hint it's going to send. + * @param width How tall the box is going to be. + * @param height How long the box is going to be. + * @return The player hint packet. + */ + public static byte[] sendHint(String hint, int width, int height) { + if (width < 1) { + width = hint.length() * 10; + if (width < 40) { + width = 40; + } + } + if (height < 5) { + height = 5; + } + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_HINT.getValue()); + mplew.writeMapleAsciiString(hint); + mplew.writeShort(width); + mplew.writeShort(height); + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] messengerInvite(String from, int messengerid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(0x03); + mplew.writeMapleAsciiString(from); + mplew.write(0); + mplew.writeInt(messengerid); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] sendSpouseChat(MapleCharacter wife, String msg) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPOUSE_CHAT.getValue()); + mplew.writeMapleAsciiString(wife.getName()); + mplew.writeMapleAsciiString(msg); + return mplew.getPacket(); + } + + public static byte[] addMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(0x00); + mplew.write(position); + addCharLook(mplew, chr, true); + mplew.writeMapleAsciiString(from); + mplew.write(channel); + mplew.write(0x00); + return mplew.getPacket(); + } + + public static byte[] removeMessengerPlayer(int position) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(0x02); + mplew.write(position); + return mplew.getPacket(); + } + + public static byte[] updateMessengerPlayer(String from, MapleCharacter chr, int position, int channel) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(0x07); + mplew.write(position); + addCharLook(mplew, chr, true); + mplew.writeMapleAsciiString(from); + mplew.write(channel); + mplew.write(0x00); + return mplew.getPacket(); + } + + public static byte[] joinMessenger(int position) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(0x01); + mplew.write(position); + return mplew.getPacket(); + } + + public static byte[] messengerChat(String text) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(0x06); + mplew.writeMapleAsciiString(text); + return mplew.getPacket(); + } + + public static byte[] messengerNote(String text, int mode, int mode2) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MESSENGER.getValue()); + mplew.write(mode); + mplew.writeMapleAsciiString(text); + mplew.write(mode2); + return mplew.getPacket(); + } + + public static void addPetInfo(final MaplePacketLittleEndianWriter mplew, MaplePet pet, boolean showpet) { + mplew.write(1); + if (showpet) { + mplew.write(0); + } + + mplew.writeInt(pet.getItemId()); + mplew.writeMapleAsciiString(pet.getName()); + mplew.writeInt(pet.getUniqueId()); + mplew.writeInt(0); + mplew.writePos(pet.getPos()); + mplew.write(pet.getStance()); + mplew.writeInt(pet.getFh()); + } + + public static byte[] showPet(MapleCharacter chr, MaplePet pet, boolean remove, boolean hunger) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_PET.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(chr.getPetIndex(pet)); + if (remove) { + mplew.write(0); + mplew.write(hunger ? 1 : 0); + } else { + addPetInfo(mplew, pet, true); + } + return mplew.getPacket(); + } + + public static byte[] movePet(int cid, int pid, byte slot, List moves) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MOVE_PET.getValue()); + mplew.writeInt(cid); + mplew.write(slot); + mplew.writeInt(pid); + serializeMovementList(mplew, moves); + return mplew.getPacket(); + } + + public static byte[] petChat(int cid, byte index, int act, String text) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PET_CHAT.getValue()); + mplew.writeInt(cid); + mplew.write(index); + mplew.write(0); + mplew.write(act); + mplew.writeMapleAsciiString(text); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] commandResponse(int cid, byte index, int animation, boolean success) { + //AE 00 01 00 00 00 00 01 00 00 + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PET_COMMAND.getValue()); + mplew.writeInt(cid); + mplew.write(index); + mplew.write((animation == 1 || !success) ? 1 : 0); + mplew.write(animation); + if (animation == 1) { + mplew.write(0); + } else { + mplew.writeShort(success ? 1 : 0); + } + return mplew.getPacket(); + } + + public static byte[] showOwnPetLevelUp(byte index) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(4); + mplew.write(0); + mplew.write(index); // Pet Index + return mplew.getPacket(); + } + + public static byte[] showPetLevelUp(MapleCharacter chr, byte index) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(4); + mplew.write(0); + mplew.write(index); + return mplew.getPacket(); + } + + public static byte[] changePetName(MapleCharacter chr, String newname, int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PET_NAMECHANGE.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(0); + mplew.writeMapleAsciiString(newname); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] petStatUpdate(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.STAT_CHANGED.getValue()); + int mask = 0; + mask |= MapleStat.PET.getValue(); + mplew.write(0); + mplew.writeInt(mask); + MaplePet[] pets = chr.getPets(); + for (int i = 0; i < 3; i++) { + if (pets[i] != null) { + mplew.writeInt(pets[i].getUniqueId()); + mplew.writeInt(0); + } else { + mplew.writeLong(0); + } + } + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] showForcedEquip(int team) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FORCED_MAP_EQUIP.getValue()); + if (team > -1) { + mplew.write(team); // 00 = red, 01 = blue + } + return mplew.getPacket(); + } + + public static byte[] summonSkill(int cid, int summonSkillId, int newStance) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SUMMON_SKILL.getValue()); + mplew.writeInt(cid); + mplew.writeInt(summonSkillId); + mplew.write(newStance); + return mplew.getPacket(); + } + + public static byte[] skillCooldown(int sid, int time) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.COOLDOWN.getValue()); + mplew.writeInt(sid); + mplew.writeShort(time);//Int in v97 + return mplew.getPacket(); + } + + public static byte[] skillBookSuccess(MapleCharacter chr, int skillid, int maxlevel, boolean canuse, boolean success) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SKILL_LEARN_ITEM_RESULT.getValue()); + mplew.writeInt(chr.getId()); + mplew.write(1); + mplew.writeInt(skillid); + mplew.writeInt(maxlevel); + mplew.write(canuse ? 1 : 0); + mplew.write(success ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] getMacros(SkillMacro[] macros) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MACRO_SYS_DATA_INIT.getValue()); + int count = 0; + for (int i = 0; i < 5; i++) { + if (macros[i] != null) { + count++; + } + } + mplew.write(count); + for (int i = 0; i < 5; i++) { + SkillMacro macro = macros[i]; + if (macro != null) { + mplew.writeMapleAsciiString(macro.getName()); + mplew.write(macro.getShout()); + mplew.writeInt(macro.getSkill1()); + mplew.writeInt(macro.getSkill2()); + mplew.writeInt(macro.getSkill3()); + } + } + return mplew.getPacket(); + } + + public static byte[] getPlayerNPC(PlayerNPCs npc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.IMITATED_NPC_DATA.getValue()); + mplew.write(0x01); + mplew.writeInt(npc.getId()); + mplew.writeMapleAsciiString(npc.getName()); + mplew.write(0); // direction + mplew.write(npc.getSkin()); + mplew.writeInt(npc.getFace()); + mplew.write(0); + mplew.writeInt(npc.getHair()); + Map equip = npc.getEquips(); + Map myEquip = new LinkedHashMap<>(); + for (short position : equip.keySet()) { + short pos = (short) (position * -1); + if (pos > 100) { + pos -= 100; + myEquip.put(pos, equip.get(position)); + } else { + if (myEquip.get(pos) == null) { + myEquip.put(pos, equip.get(position)); + } + } + } + for (Entry entry : myEquip.entrySet()) { + mplew.write(entry.getKey()); + mplew.writeInt(entry.getValue()); + } + mplew.writeShort(-1); + Integer cWeapon = equip.get((byte) -111); + if (cWeapon != null) { + mplew.writeInt(cWeapon); + } else { + mplew.writeInt(0); + } + for (int i = 0; i < 12; i++) { + mplew.write(0); + } + return mplew.getPacket(); + } + + public static byte[] updateAriantPQRanking(String name, int score, boolean empty) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ARIANT_SCORE.getValue()); + mplew.write(empty ? 0 : 1); + if (!empty) { + mplew.writeMapleAsciiString(name); + mplew.writeInt(score); + } + return mplew.getPacket(); + } + + public static byte[] catchMonster(int monsobid, int itemid, byte success) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CATCH_MONSTER.getValue()); + mplew.writeInt(monsobid); + mplew.writeInt(itemid); + mplew.write(success); + return mplew.getPacket(); + } + + public static byte[] catchMessage(int message) { // not done, I guess + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BRIDLE_MOB_CATCH_FAIL.getValue()); + mplew.write(message); // 1 = too strong, 2 = Elemental Rock + mplew.writeInt(0);//Maybe itemid? + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] showAllCharacter(int chars, int unk) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); + mplew.writeShort(SendOpcode.VIEW_ALL_CHAR.getValue()); + mplew.write(1); + mplew.writeInt(chars); + mplew.writeInt(unk); + return mplew.getPacket(); + } + + public static byte[] showAllCharacterInfo(int worldid, List chars) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.VIEW_ALL_CHAR.getValue()); + mplew.write(0); + mplew.write(worldid); + mplew.write(chars.size()); + for (MapleCharacter chr : chars) { + addCharEntry(mplew, chr, true); + } + return mplew.getPacket(); + } + + public static byte[] updateMount(int charid, MapleMount mount, boolean levelup) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SET_TAMING_MOB_INFO.getValue()); + mplew.writeInt(charid); + mplew.writeInt(mount.getLevel()); + mplew.writeInt(mount.getExp()); + mplew.writeInt(mount.getTiredness()); + mplew.write(levelup ? (byte) 1 : (byte) 0); + return mplew.getPacket(); + } + + public static byte[] boatPacket(boolean type) {//don't think this is correct.. + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CONTI_STATE.getValue()); + mplew.write(type ? 1 : 2); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] getMiniGame(MapleClient c, MapleMiniGame minigame, boolean owner, int piece) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); + mplew.write(1); + mplew.write(0); + mplew.write(owner ? 0 : 1); + mplew.write(0); + addCharLook(mplew, minigame.getOwner(), false); + mplew.writeMapleAsciiString(minigame.getOwner().getName()); + if (minigame.getVisitor() != null) { + MapleCharacter visitor = minigame.getVisitor(); + mplew.write(1); + addCharLook(mplew, visitor, false); + mplew.writeMapleAsciiString(visitor.getName()); + } + mplew.write(0xFF); + mplew.write(0); + mplew.writeInt(1); + mplew.writeInt(minigame.getOwner().getMiniGamePoints("wins", true)); + mplew.writeInt(minigame.getOwner().getMiniGamePoints("ties", true)); + mplew.writeInt(minigame.getOwner().getMiniGamePoints("losses", true)); + mplew.writeInt(2000); + if (minigame.getVisitor() != null) { + MapleCharacter visitor = minigame.getVisitor(); + mplew.write(1); + mplew.writeInt(1); + mplew.writeInt(visitor.getMiniGamePoints("wins", true)); + mplew.writeInt(visitor.getMiniGamePoints("ties", true)); + mplew.writeInt(visitor.getMiniGamePoints("losses", true)); + mplew.writeInt(2000); + } + mplew.write(0xFF); + mplew.writeMapleAsciiString(minigame.getDescription()); + mplew.write(piece); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] getMiniGameReady(MapleMiniGame game) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.READY.getCode()); + return mplew.getPacket(); + } + + public static byte[] getMiniGameUnReady(MapleMiniGame game) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.UN_READY.getCode()); + return mplew.getPacket(); + } + + public static byte[] getMiniGameStart(MapleMiniGame game, int loser) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.START.getCode()); + mplew.write(loser); + return mplew.getPacket(); + } + + public static byte[] getMiniGameSkipOwner(MapleMiniGame game) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.SKIP.getCode()); + mplew.write(0x01); + return mplew.getPacket(); + } + + public static byte[] getMiniGameRequestTie(MapleMiniGame game) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.REQUEST_TIE.getCode()); + return mplew.getPacket(); + } + + public static byte[] getMiniGameDenyTie(MapleMiniGame game) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ANSWER_TIE.getCode()); + return mplew.getPacket(); + } + + public static byte[] getMiniGameFull() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); + mplew.write(0); + mplew.write(2); + return mplew.getPacket(); + } + + public static byte[] getMiniGameSkipVisitor(MapleMiniGame game) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.writeShort(PlayerInteractionHandler.Action.SKIP.getCode()); + return mplew.getPacket(); + } + + public static byte[] getMiniGameMoveOmok(MapleMiniGame game, int move1, int move2, int move3) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(12); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.MOVE_OMOK.getCode()); + mplew.writeInt(move1); + mplew.writeInt(move2); + mplew.write(move3); + return mplew.getPacket(); + } + + public static byte[] getMiniGameNewVisitor(MapleCharacter c, int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); + mplew.write(slot); + addCharLook(mplew, c, false); + mplew.writeMapleAsciiString(c.getName()); + mplew.writeInt(1); + mplew.writeInt(c.getMiniGamePoints("wins", true)); + mplew.writeInt(c.getMiniGamePoints("ties", true)); + mplew.writeInt(c.getMiniGamePoints("losses", true)); + mplew.writeInt(2000); + return mplew.getPacket(); + } + + public static byte[] getMiniGameRemoveVisitor() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + mplew.write(1); + return mplew.getPacket(); + } + + private static byte[] getMiniGameResult(MapleMiniGame game, int win, int lose, int tie, int result, int forfeit, boolean omok) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.GET_RESULT.getCode()); + if (tie == 0 && forfeit != 1) { + mplew.write(0); + } else if (tie == 1) { + mplew.write(1); + } else if (forfeit == 1) { + mplew.write(2); + } + mplew.write(0); // owner + mplew.writeInt(1); // unknown + mplew.writeInt(game.getOwner().getMiniGamePoints("wins", omok) + win); // wins + mplew.writeInt(game.getOwner().getMiniGamePoints("ties", omok) + tie); // ties + mplew.writeInt(game.getOwner().getMiniGamePoints("losses", omok) + lose); // losses + mplew.writeInt(2000); // points + mplew.writeInt(1); // start of visitor; unknown + mplew.writeInt(game.getVisitor().getMiniGamePoints("wins", omok) + lose); // wins + mplew.writeInt(game.getVisitor().getMiniGamePoints("ties", omok) + tie); // ties + mplew.writeInt(game.getVisitor().getMiniGamePoints("losses", omok) + win); // losses + mplew.writeInt(2000); // points + game.getOwner().setMiniGamePoints(game.getVisitor(), result, omok); + return mplew.getPacket(); + } + + public static byte[] getMiniGameOwnerWin(MapleMiniGame game) { + return getMiniGameResult(game, 0, 1, 0, 1, 0, true); + } + + public static byte[] getMiniGameVisitorWin(MapleMiniGame game) { + return getMiniGameResult(game, 1, 0, 0, 2, 0, true); + } + + public static byte[] getMiniGameTie(MapleMiniGame game) { + return getMiniGameResult(game, 0, 0, 1, 3, 0, true); + } + + public static byte[] getMiniGameOwnerForfeit(MapleMiniGame game) { + return getMiniGameResult(game, 0, 1, 0, 2, 1, true); + } + + public static byte[] getMiniGameVisitorForfeit(MapleMiniGame game) { + return getMiniGameResult(game, 1, 0, 0, 1, 1, true); + } + + public static byte[] getMiniGameClose() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + mplew.write(1); + mplew.write(3); + return mplew.getPacket(); + } + + public static byte[] getMatchCard(MapleClient c, MapleMiniGame minigame, boolean owner, int piece) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); + mplew.write(2); + mplew.write(2); + mplew.write(owner ? 0 : 1); + mplew.write(0); + addCharLook(mplew, minigame.getOwner(), false); + mplew.writeMapleAsciiString(minigame.getOwner().getName()); + if (minigame.getVisitor() != null) { + MapleCharacter visitor = minigame.getVisitor(); + mplew.write(1); + addCharLook(mplew, visitor, false); + mplew.writeMapleAsciiString(visitor.getName()); + } + mplew.write(0xFF); + mplew.write(0); + mplew.writeInt(2); + mplew.writeInt(minigame.getOwner().getMiniGamePoints("wins", false)); + mplew.writeInt(minigame.getOwner().getMiniGamePoints("ties", false)); + mplew.writeInt(minigame.getOwner().getMiniGamePoints("losses", false)); + mplew.writeInt(2000); + if (minigame.getVisitor() != null) { + MapleCharacter visitor = minigame.getVisitor(); + mplew.write(1); + mplew.writeInt(2); + mplew.writeInt(visitor.getMiniGamePoints("wins", false)); + mplew.writeInt(visitor.getMiniGamePoints("ties", false)); + mplew.writeInt(visitor.getMiniGamePoints("losses", false)); + mplew.writeInt(2000); + } + mplew.write(0xFF); + mplew.writeMapleAsciiString(minigame.getDescription()); + mplew.write(piece); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] getMatchCardStart(MapleMiniGame game, int loser) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.START.getCode()); + mplew.write(loser); + mplew.write(0x0C); + int last = 13; + if (game.getMatchesToWin() > 10) { + last = 31; + } else if (game.getMatchesToWin() > 6) { + last = 21; + } + for (int i = 1; i < last; i++) { + mplew.writeInt(game.getCardId(i)); + } + return mplew.getPacket(); + } + + public static byte[] getMatchCardNewVisitor(MapleCharacter c, int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); + mplew.write(slot); + addCharLook(mplew, c, false); + mplew.writeMapleAsciiString(c.getName()); + mplew.writeInt(1); + mplew.writeInt(c.getMiniGamePoints("wins", false)); + mplew.writeInt(c.getMiniGamePoints("ties", false)); + mplew.writeInt(c.getMiniGamePoints("losses", false)); + mplew.writeInt(2000); + return mplew.getPacket(); + } + + public static byte[] getMatchCardSelect(MapleMiniGame game, int turn, int slot, int firstslot, int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.SELECT_CARD.getCode()); + mplew.write(turn); + if (turn == 1) { + mplew.write(slot); + } else if (turn == 0) { + mplew.write(slot); + mplew.write(firstslot); + mplew.write(type); + } + return mplew.getPacket(); + } + + public static byte[] getMatchCardOwnerWin(MapleMiniGame game) { + return getMiniGameResult(game, 1, 0, 0, 1, 0, false); + } + + public static byte[] getMatchCardVisitorWin(MapleMiniGame game) { + return getMiniGameResult(game, 0, 1, 0, 2, 0, false); + } + + public static byte[] getMatchCardTie(MapleMiniGame game) { + return getMiniGameResult(game, 0, 0, 1, 3, 0, false); + } + + public static byte[] fredrickMessage(byte operation) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FREDRICK_MESSAGE.getValue()); + mplew.write(operation); + return mplew.getPacket(); + } + + public static byte[] getFredrick(byte op) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FREDRICK.getValue()); + mplew.write(op); + + switch (op) { + case 0x24: + mplew.skip(8); + break; + default: + mplew.write(0); + break; + } + + return mplew.getPacket(); + } + + public static byte[] getFredrick(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FREDRICK.getValue()); + mplew.write(0x23); + mplew.writeInt(9030000); // Fredrick + mplew.writeInt(32272); //id + mplew.skip(5); + mplew.writeInt(chr.getMerchantMeso()); + mplew.write(0); + try { + List> items = ItemFactory.MERCHANT.loadItems(chr.getId(), false); + mplew.write(items.size()); + + for (int i = 0; i < items.size(); i++) { + addItemInfo(mplew, items.get(i).getLeft(), true); + } + } catch (SQLException e) { + e.printStackTrace(); + } + mplew.skip(3); + return mplew.getPacket(); + } + + public static byte[] addOmokBox(MapleCharacter c, int ammount, int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); + mplew.writeInt(c.getId()); + addAnnounceBox(mplew, c.getMiniGame(), 1, 0, ammount, type); + return mplew.getPacket(); + } + + public static byte[] removeOmokBox(MapleCharacter c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); + mplew.writeInt(c.getId()); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] addMatchCardBox(MapleCharacter c, int ammount, int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); + mplew.writeInt(c.getId()); + addAnnounceBox(mplew, c.getMiniGame(), 2, 0, ammount, type); + return mplew.getPacket(); + } + + public static byte[] removeMatchcardBox(MapleCharacter c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_CHAR_BOX.getValue()); + mplew.writeInt(c.getId()); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] getPlayerShopChat(MapleCharacter c, String chat, byte slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); + mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + mplew.write(slot); + mplew.writeMapleAsciiString(c.getName() + " : " + chat); + return mplew.getPacket(); + } + + public static byte[] getTradeChat(MapleCharacter c, String chat, boolean owner) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); + mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + mplew.write(owner ? 0 : 1); + mplew.writeMapleAsciiString(c.getName() + " : " + chat); + return mplew.getPacket(); + } + + public static byte[] hiredMerchantBox() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT.getValue()); // header. + mplew.write(0x07); + return mplew.getPacket(); + } + + public static byte[] owlOfMinerva(MapleClient c, int itemid, List hms, List items) { //Thanks moongra, you save me some time :) + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOP_SCANNER_RESULT.getValue()); // header. + mplew.write(6); + mplew.writeInt(0); + mplew.writeInt(itemid); + mplew.writeInt(hms.size()); + for (HiredMerchant hm : hms) { + for (MaplePlayerShopItem item : items) { + mplew.writeMapleAsciiString(hm.getOwner()); + mplew.writeInt(hm.getMapId()); + mplew.writeMapleAsciiString(hm.getDescription()); + mplew.writeInt(item.getItem().getQuantity()); + mplew.writeInt(item.getBundles()); + mplew.writeInt(item.getPrice()); + mplew.writeInt(hm.getOwnerId()); + mplew.write(hm.getFreeSlot() == -1 ? 1 : 0); + MapleCharacter chr = c.getChannelServer().getPlayerStorage().getCharacterById(hm.getOwnerId()); + if ((chr != null) && (c.getChannel() == hm.getChannel())) { + mplew.write(1); + } else { + mplew.write(2); + } + + if (item.getItem().getItemId() / 1000000 == 1) { + addItemInfo(mplew, item.getItem(), true); + } + } + } + return mplew.getPacket(); + } + + public static byte[] retrieveFirstMessage() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT.getValue()); // header. + mplew.write(0x09); + return mplew.getPacket(); + } + + public static byte[] remoteChannelChange(byte ch) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ENTRUSTED_SHOP_CHECK_RESULT.getValue()); // header. + mplew.write(0x10); + mplew.writeInt(0);//No idea yet + mplew.write(ch); + return mplew.getPacket(); + } + /* + * Possible things for ENTRUSTED_SHOP_CHECK_RESULT + * 0x0E = 00 = Renaming Failed - Can't find the merchant, 01 = Renaming succesful + * 0x10 = Changes channel to the store (Store is open at Channel 1, do you want to change channels?) + * 0x11 = You cannot sell any items when managing.. blabla + * 0x12 = FKING POPUP LOL + */ + + public static byte[] getHiredMerchant(MapleCharacter chr, HiredMerchant hm, boolean firstTime) {//Thanks Dustin + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.ROOM.getCode()); + mplew.write(0x05); + mplew.write(0x04); + mplew.writeShort(hm.getVisitorSlot(chr) + 1); + mplew.writeInt(hm.getItemId()); + mplew.writeMapleAsciiString("Hired Merchant"); + for (int i = 0; i < 3; i++) { + if (hm.getVisitors()[i] != null) { + mplew.write(i + 1); + addCharLook(mplew, hm.getVisitors()[i], false); + mplew.writeMapleAsciiString(hm.getVisitors()[i].getName()); + } + } + mplew.write(-1); + if (hm.isOwner(chr)) { + mplew.writeShort(hm.getMessages().size()); + for (int i = 0; i < hm.getMessages().size(); i++) { + mplew.writeMapleAsciiString(hm.getMessages().get(i).getLeft()); + mplew.write(hm.getMessages().get(i).getRight()); + } + } else { + mplew.writeShort(0); + } + mplew.writeMapleAsciiString(hm.getOwner()); + if (hm.isOwner(chr)) { + mplew.writeInt(hm.getTimeLeft()); + mplew.write(firstTime ? 1 : 0); + //List sold = hm.getSold(); + mplew.write(0);//sold.size() + /*for (SoldItem s : sold) { fix this + mplew.writeInt(s.getItemId()); + mplew.writeShort(s.getQuantity()); + mplew.writeInt(s.getMesos()); + mplew.writeMapleAsciiString(s.getBuyer()); + }*/ + mplew.writeInt(chr.getMerchantMeso());//:D? + } + mplew.writeMapleAsciiString(hm.getDescription()); + mplew.write(0x10); //TODO SLOTS, which is 16 for most stores...slotMax + mplew.writeInt(chr.getMeso()); + mplew.write(hm.getItems().size()); + if (hm.getItems().isEmpty()) { + mplew.write(0);//Hmm?? + } else { + for (MaplePlayerShopItem item : hm.getItems()) { + mplew.writeShort(item.getBundles()); + mplew.writeShort(item.getItem().getQuantity()); + mplew.writeInt(item.getPrice()); + addItemInfo(mplew, item.getItem(), true); + } + } + return mplew.getPacket(); + } + + public static byte[] updateHiredMerchant(HiredMerchant hm, MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.UPDATE_MERCHANT.getCode()); + mplew.writeInt(chr.getMeso()); + mplew.write(hm.getItems().size()); + for (MaplePlayerShopItem item : hm.getItems()) { + mplew.writeShort(item.getBundles()); + mplew.writeShort(item.getItem().getQuantity()); + mplew.writeInt(item.getPrice()); + addItemInfo(mplew, item.getItem(), true); + } + return mplew.getPacket(); + } + + public static byte[] hiredMerchantChat(String message, byte slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.CHAT.getCode()); + mplew.write(PlayerInteractionHandler.Action.CHAT_THING.getCode()); + mplew.write(slot); + mplew.writeMapleAsciiString(message); + return mplew.getPacket(); + } + + public static byte[] hiredMerchantVisitorLeave(int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + if (slot != 0) { + mplew.write(slot); + } + return mplew.getPacket(); + } + + public static byte[] hiredMerchantOwnerLeave() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.REAL_CLOSE_MERCHANT.getCode()); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] leaveHiredMerchant(int slot, int status2) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.EXIT.getCode()); + mplew.write(slot); + mplew.write(status2); + return mplew.getPacket(); + } + + public static byte[] hiredMerchantVisitorAdd(MapleCharacter chr, int slot) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(PlayerInteractionHandler.Action.VISIT.getCode()); + mplew.write(slot); + addCharLook(mplew, chr, false); + mplew.writeMapleAsciiString(chr.getName()); + return mplew.getPacket(); + } + + public static byte[] spawnHiredMerchant(HiredMerchant hm) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_HIRED_MERCHANT.getValue()); + mplew.writeInt(hm.getOwnerId()); + mplew.writeInt(hm.getItemId()); + mplew.writeShort((short) hm.getPosition().getX()); + mplew.writeShort((short) hm.getPosition().getY()); + mplew.writeShort(0); + mplew.writeMapleAsciiString(hm.getOwner()); + mplew.write(0x05); + mplew.writeInt(hm.getObjectId()); + mplew.writeMapleAsciiString(hm.getDescription()); + mplew.write(hm.getItemId() % 10); + mplew.write(new byte[]{1, 4}); + return mplew.getPacket(); + } + + public static byte[] destroyHiredMerchant(int id) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DESTROY_HIRED_MERCHANT.getValue()); + mplew.writeInt(id); + return mplew.getPacket(); + } + + public static byte[] spawnPlayerNPC(PlayerNPCs npc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER.getValue()); + mplew.write(1); + mplew.writeInt(npc.getObjectId()); + mplew.writeInt(npc.getId()); + mplew.writeShort(npc.getPosition().x); + mplew.writeShort(npc.getCY()); + mplew.write(1); + mplew.writeShort(npc.getFH()); + mplew.writeShort(npc.getRX0()); + mplew.writeShort(npc.getRX1()); + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] sendYellowTip(String tip) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SET_WEEK_EVENT_MESSAGE.getValue()); + mplew.write(0xFF); + mplew.writeMapleAsciiString(tip); + mplew.writeShort(0); + return mplew.getPacket(); + } + + public static byte[] givePirateBuff(List> statups, int buffid, int duration) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + boolean infusion = buffid == Buccaneer.SPEED_INFUSION || buffid == ThunderBreaker.SPEED_INFUSION || buffid == Corsair.SPEED_INFUSION; + mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); + writeLongMask(mplew, statups); + mplew.writeShort(0); + for (Pair stat : statups) { + mplew.writeInt(stat.getRight().shortValue()); + mplew.writeInt(buffid); + mplew.skip(infusion ? 10 : 5); + mplew.writeShort(duration); + } + mplew.skip(3); + return mplew.getPacket(); + } + + public static byte[] giveForgeinPirateBuff(int cid, int buffid, int time, List> statups) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + boolean infusion = buffid == Buccaneer.SPEED_INFUSION || buffid == ThunderBreaker.SPEED_INFUSION || buffid == Corsair.SPEED_INFUSION; + mplew.writeShort(SendOpcode.GIVE_FOREIGN_BUFF.getValue()); + mplew.writeInt(cid); + writeLongMask(mplew, statups); + mplew.writeShort(0); + for (Pair statup : statups) { + mplew.writeInt(statup.getRight().shortValue()); + mplew.writeInt(buffid); + mplew.skip(infusion ? 10 : 5); + mplew.writeShort(time); + } + mplew.writeShort(0); + mplew.write(2); + return mplew.getPacket(); + } + + public static byte[] sendMTS(List items, int tab, int type, int page, int pages) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x15); //operation + mplew.writeInt(pages * 16); //testing, change to 10 if fails + mplew.writeInt(items.size()); //number of items + mplew.writeInt(tab); + mplew.writeInt(type); + mplew.writeInt(page); + mplew.write(1); + mplew.write(1); + for (int i = 0; i < items.size(); i++) { + MTSItemInfo item = items.get(i); + addItemInfo(mplew, item.getItem(), true); + mplew.writeInt(item.getID()); //id + mplew.writeInt(item.getTaxes()); //this + below = price + mplew.writeInt(item.getPrice()); //price + mplew.writeInt(0); + mplew.writeLong(getTime(item.getEndingDate())); + mplew.writeMapleAsciiString(item.getSeller()); //account name (what was nexon thinking?) + mplew.writeMapleAsciiString(item.getSeller()); //char name + for (int j = 0; j < 28; j++) { + mplew.write(0); + } + } + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] noteSendMsg() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.MEMO_RESULT.getValue()); + mplew.write(4); + return mplew.getPacket(); + } + + /* + * 0 = Player online, use whisper + * 1 = Check player's name + * 2 = Receiver inbox full + */ + public static byte[] noteError(byte error) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.MEMO_RESULT.getValue()); + mplew.write(5); + mplew.write(error); + return mplew.getPacket(); + } + + public static byte[] showNotes(ResultSet notes, int count) throws SQLException { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MEMO_RESULT.getValue()); + mplew.write(3); + mplew.write(count); + for (int i = 0; i < count; i++) { + mplew.writeInt(notes.getInt("id")); + mplew.writeMapleAsciiString(notes.getString("from") + " ");//Stupid nexon forgot space lol + mplew.writeMapleAsciiString(notes.getString("message")); + mplew.writeLong(getTime(notes.getLong("timestamp"))); + mplew.write(notes.getByte("fame"));//FAME :D + notes.next(); + } + return mplew.getPacket(); + } + + public static byte[] useChalkboard(MapleCharacter chr, boolean close) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CHALKBOARD.getValue()); + mplew.writeInt(chr.getId()); + if (close) { + mplew.write(0); + } else { + mplew.write(1); + mplew.writeMapleAsciiString(chr.getChalkboard()); + } + return mplew.getPacket(); + } + + public static byte[] trockRefreshMapList(MapleCharacter chr, boolean delete, boolean vip) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MAP_TRANSFER_RESULT.getValue()); + mplew.write(delete ? 2 : 3); + if (vip) { + mplew.write(1); + List map = chr.getVipTrockMaps(); + for (int i = 0; i < 10; i++) { + mplew.writeInt(map.get(i)); + } + } else { + mplew.write(0); + List map = chr.getTrockMaps(); + for (int i = 0; i < 5; i++) { + mplew.writeInt(map.get(i)); + } + } + return mplew.getPacket(); + } + + public static byte[] showMTSCash(MapleCharacter p) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION2.getValue()); + mplew.writeInt(p.getCashShop().getCash(4)); + mplew.writeInt(p.getCashShop().getCash(2)); + return mplew.getPacket(); + } + + public static byte[] MTSWantedListingOver(int nx, int items) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x3D); + mplew.writeInt(nx); + mplew.writeInt(items); + return mplew.getPacket(); + } + + public static byte[] MTSConfirmSell() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x1D); + return mplew.getPacket(); + } + + public static byte[] MTSConfirmBuy() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x33); + return mplew.getPacket(); + } + + public static byte[] MTSFailBuy() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x34); + mplew.write(0x42); + return mplew.getPacket(); + } + + public static byte[] MTSConfirmTransfer(int quantity, int pos) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x27); + mplew.writeInt(quantity); + mplew.writeInt(pos); + return mplew.getPacket(); + } + + public static byte[] notYetSoldInv(List items) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x23); + mplew.writeInt(items.size()); + if (!items.isEmpty()) { + for (MTSItemInfo item : items) { + addItemInfo(mplew, item.getItem(), true); + mplew.writeInt(item.getID()); //id + mplew.writeInt(item.getTaxes()); //this + below = price + mplew.writeInt(item.getPrice()); //price + mplew.writeInt(0); + mplew.writeLong(getTime(item.getEndingDate())); + mplew.writeMapleAsciiString(item.getSeller()); //account name (what was nexon thinking?) + mplew.writeMapleAsciiString(item.getSeller()); //char name + for (int i = 0; i < 28; i++) { + mplew.write(0); + } + } + } else { + mplew.writeInt(0); + } + return mplew.getPacket(); + } + + public static byte[] transferInventory(List items) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MTS_OPERATION.getValue()); + mplew.write(0x21); + mplew.writeInt(items.size()); + if (!items.isEmpty()) { + for (MTSItemInfo item : items) { + addItemInfo(mplew, item.getItem(), true); + mplew.writeInt(item.getID()); //id + mplew.writeInt(item.getTaxes()); //taxes + mplew.writeInt(item.getPrice()); //price + mplew.writeInt(0); + mplew.writeLong(getTime(item.getEndingDate())); + mplew.writeMapleAsciiString(item.getSeller()); //account name (what was nexon thinking?) + mplew.writeMapleAsciiString(item.getSeller()); //char name + for (int i = 0; i < 28; i++) { + mplew.write(0); + } + } + } + mplew.write(0xD0 + items.size()); + mplew.write(new byte[]{-1, -1, -1, 0}); + return mplew.getPacket(); + } + + public static byte[] showCouponRedeemedItem(int itemid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + mplew.writeShort(0x49); //v72 + mplew.writeInt(0); + mplew.writeInt(1); + mplew.writeShort(1); + mplew.writeShort(0x1A); + mplew.writeInt(itemid); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] showCash(MapleCharacter mc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.QUERY_CASH_RESULT.getValue()); + + mplew.writeInt(mc.getCashShop().getCash(1)); + mplew.writeInt(mc.getCashShop().getCash(2)); + mplew.writeInt(mc.getCashShop().getCash(4)); + + return mplew.getPacket(); + } + + public static byte[] enableCSUse() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.write(0x12); + mplew.skip(6); + return mplew.getPacket(); + } + + /** + * + * @param target + * @param mapid + * @param MTSmapCSchannel 0: MTS 1: Map 2: CS 3: Different Channel + * @return + */ + public static byte[] getFindReply(String target, int mapid, int MTSmapCSchannel) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.WHISPER.getValue()); + mplew.write(9); + mplew.writeMapleAsciiString(target); + mplew.write(MTSmapCSchannel); // 0: mts 1: map 2: cs + mplew.writeInt(mapid); // -1 if mts, cs + if (MTSmapCSchannel == 1) { + mplew.write(new byte[8]); + } + return mplew.getPacket(); + } + + public static byte[] sendAutoHpPot(int itemId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.AUTO_HP_POT.getValue()); + mplew.writeInt(itemId); + return mplew.getPacket(); + } + + public static byte[] sendAutoMpPot(int itemId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.AUTO_MP_POT.getValue()); + mplew.writeInt(itemId); + return mplew.getPacket(); + } + + public static byte[] showOXQuiz(int questionSet, int questionId, boolean askQuestion) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.OX_QUIZ.getValue()); + mplew.write(askQuestion ? 1 : 0); + mplew.write(questionSet); + mplew.writeShort(questionId); + return mplew.getPacket(); + } + + public static byte[] updateGender(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.SET_GENDER.getValue()); + mplew.write(chr.getGender()); + return mplew.getPacket(); + } + + public static byte[] enableReport() { // by snow + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.CLAIM_STATUS_CHANGED.getValue()); + mplew.write(1); + return mplew.getPacket(); + } + + public static byte[] giveFinalAttack(int skillid, int time) {//packets found by lailainoob + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GIVE_BUFF.getValue()); + mplew.writeLong(0); + mplew.writeShort(0); + mplew.write(0);//some 80 and 0 bs DIRECTION + mplew.write(0x80);//let's just do 80, then 0 + mplew.writeInt(0); + mplew.writeShort(1); + mplew.writeInt(skillid); + mplew.writeInt(time); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] loadFamily(MapleCharacter player) { + String[] title = {"Family Reunion", "Summon Family", "My Drop Rate 1.5x (15 min)", "My EXP 1.5x (15 min)", "Family Bonding (30 min)", "My Drop Rate 2x (15 min)", "My EXP 2x (15 min)", "My Drop Rate 2x (30 min)", "My EXP 2x (30 min)", "My Party Drop Rate 2x (30 min)", "My Party EXP 2x (30 min)"}; + String[] description = {"[Target] Me\n[Effect] Teleport directly to the Family member of your choice.", "[Target] 1 Family member\n[Effect] Summon a Family member of choice to the map you're in.", "[Target] Me\n[Time] 15 min.\n[Effect] Monster drop rate will be increased #c1.5x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] Me\n[Time] 15 min.\n[Effect] EXP earned from hunting will be increased #c1.5x#.\n* If the EXP event is in progress, this will be nullified.", "[Target] At least 6 Family members online that are below me in the Pedigree\n[Time] 30 min.\n[Effect] Monster drop rate and EXP earned will be increased #c2x#. \n* If the EXP event is in progress, this will be nullified.", "[Target] Me\n[Time] 15 min.\n[Effect] Monster drop rate will be increased #c2x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] Me\n[Time] 15 min.\n[Effect] EXP earned from hunting will be increased #c2x#.\n* If the EXP event is in progress, this will be nullified.", "[Target] Me\n[Time] 30 min.\n[Effect] Monster drop rate will be increased #c2x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] Me\n[Time] 30 min.\n[Effect] EXP earned from hunting will be increased #c2x#. \n* If the EXP event is in progress, this will be nullified.", "[Target] My party\n[Time] 30 min.\n[Effect] Monster drop rate will be increased #c2x#.\n* If the Drop Rate event is in progress, this will be nullified.", "[Target] My party\n[Time] 30 min.\n[Effect] EXP earned from hunting will be increased #c2x#.\n* If the EXP event is in progress, this will be nullified."}; + int[] repCost = {3, 5, 7, 8, 10, 12, 15, 20, 25, 40, 50}; + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_PRIVILEGE_LIST.getValue()); + mplew.writeInt(11); + for (int i = 0; i < 11; i++) { + mplew.write(i > 4 ? (i % 2) + 1 : i); + mplew.writeInt(repCost[i] * 100); + mplew.writeInt(1); + mplew.writeMapleAsciiString(title[i]); + mplew.writeMapleAsciiString(description[i]); + } + return mplew.getPacket(); + } + + /** + * Family Result Message + * + * Possible values for type:
    + * 67: You do not belong to the same family.
    + * 69: The character you wish to add as\r\na Junior must be in the same + * map.
    + * 70: This character is already a Junior of another character.
    + * 71: The Junior you wish to add\r\nmust be at a lower rank.
    + * 72: The gap between you and your\r\njunior must be within 20 levels.
    + * 73: Another character has requested to add this character.\r\nPlease try + * again later.
    + * 74: Another character has requested a summon.\r\nPlease try again + * later.
    + * 75: The summons has failed. Your current location or state does not allow + * a summons.
    + * 76: The family cannot extend more than 1000 generations from above and + * below.
    + * 77: The Junior you wish to add\r\nmust be over Level 10.
    + * 78: You cannot add a Junior \r\nthat has requested to change worlds.
    + * 79: You cannot add a Junior \r\nsince you've requested to change + * worlds.
    + * 80: Separation is not possible due to insufficient Mesos.\r\nYou will + * need %d Mesos to\r\nseparate with a Senior.
    + * 81: Separation is not possible due to insufficient Mesos.\r\nYou will + * need %d Mesos to\r\nseparate with a Junior.
    + * 82: The Entitlement does not apply because your level does not match the + * corresponding area.
    + * + * @param type The type + * @return Family Result packet + */ + public static byte[] sendFamilyMessage(int type, int mesos) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.FAMILY_RESULT.getValue()); + mplew.writeInt(type); + mplew.writeInt(mesos); + return mplew.getPacket(); + } + + public static byte[] getFamilyInfo(MapleFamilyEntry f) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_INFO_RESULT.getValue()); + mplew.writeInt(f.getReputation()); // cur rep left + mplew.writeInt(f.getTotalReputation()); // tot rep left + mplew.writeInt(f.getTodaysRep()); // todays rep + mplew.writeShort(f.getJuniors()); // juniors added + mplew.writeShort(f.getTotalJuniors()); // juniors allowed + mplew.writeShort(0); //Unknown + mplew.writeInt(f.getId()); // id? + mplew.writeMapleAsciiString(f.getFamilyName()); + mplew.writeInt(0); + mplew.writeShort(0); + return mplew.getPacket(); + } + + public static byte[] showPedigree(int chrid, Map members) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_CHART_RESULT.getValue()); + //Hmmm xD + return mplew.getPacket(); + } + + public static byte[] updateAreaInfo(int area, String info) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(0x0A); //0x0B in v95 + mplew.writeShort(area);//infoNumber + mplew.writeMapleAsciiString(info); + return mplew.getPacket(); + } + + public static byte[] getGPMessage(int gpChange) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(6); + mplew.writeInt(gpChange); + return mplew.getPacket(); + } + + public static byte[] getItemMessage(int itemid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(7); + mplew.writeInt(itemid); + return mplew.getPacket(); + } + + public static byte[] addCard(boolean full, int cardid, int level) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); + mplew.writeShort(SendOpcode.MONSTER_BOOK_SET_CARD.getValue()); + mplew.write(full ? 0 : 1); + mplew.writeInt(cardid); + mplew.writeInt(level); + return mplew.getPacket(); + } + + public static byte[] showGainCard() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(0x0D); + return mplew.getPacket(); + } + + public static byte[] showForeginCardEffect(int id) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(id); + mplew.write(0x0D); + return mplew.getPacket(); + } + + public static byte[] changeCover(int cardid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.MONSTER_BOOK_SET_COVER.getValue()); + mplew.writeInt(cardid); + return mplew.getPacket(); + } + + public static byte[] aranGodlyStats() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FORCED_STAT_SET.getValue()); + mplew.write(new byte[]{(byte) 0x1F, (byte) 0x0F, 0, 0, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0xFF, 0, (byte) 0xE7, 3, (byte) 0xE7, 3, (byte) 0x78, (byte) 0x8C}); + return mplew.getPacket(); + } + + public static byte[] showIntro(String path) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(0x12); + mplew.writeMapleAsciiString(path); + return mplew.getPacket(); + } + + public static byte[] showInfo(String path) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(0x17); + mplew.writeMapleAsciiString(path); + mplew.writeInt(1); + return mplew.getPacket(); + } + + /** + * Sends a UI utility. 0x01 - Equipment Inventory. 0x02 - Stat Window. 0x03 + * - Skill Window. 0x05 - Keyboard Settings. 0x06 - Quest window. 0x09 - + * Monsterbook Window. 0x0A - Char Info 0x0B - Guild BBS 0x12 - Monster + * Carnival Window 0x16 - Party Search. 0x17 - Item Creation Window. 0x1A - + * My Ranking O.O 0x1B - Family Window 0x1C - Family Pedigree 0x1D - GM + * Story Board /funny shet 0x1E - Envelop saying you got mail from an admin. + * lmfao 0x1F - Medal Window 0x20 - Maple Event (???) 0x21 - Invalid Pointer + * Crash + * + * @param ui + * @return + */ + public static byte[] openUI(byte ui) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.OPEN_UI.getValue()); + mplew.write(ui); + return mplew.getPacket(); + } + + public static byte[] lockUI(boolean enable) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.LOCK_UI.getValue()); + mplew.write(enable ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] disableUI(boolean enable) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DISABLE_UI.getValue()); + mplew.write(enable ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] itemMegaphone(String msg, boolean whisper, int channel, Item item) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); + mplew.write(8); + mplew.writeMapleAsciiString(msg); + mplew.write(channel - 1); + mplew.write(whisper ? 1 : 0); + if (item == null) { + mplew.write(0); + } else { + mplew.write(item.getPosition()); + addItemInfo(mplew, item, true); + } + return mplew.getPacket(); + } + + public static byte[] removeNPC(int oid) { //Make npc's invisible + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_NPC_REQUEST_CONTROLLER.getValue()); + mplew.write(0); + mplew.writeInt(oid); + return mplew.getPacket(); + } + + /** + * Sends a report response + * + * Possible values for mode:
    0: You have succesfully + * reported the user.
    1: Unable to locate the user.
    2: You may only + * report users 10 times a day.
    3: You have been reported to the GM's by + * a user.
    4: Your request did not go through for unknown reasons. + * Please try again later.
    + * + * @param mode The mode + * @return Report Reponse packet + */ + public static byte[] reportResponse(byte mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SUE_CHARACTER_RESULT.getValue()); + mplew.write(mode); + return mplew.getPacket(); + } + + public static byte[] sendHammerData(int hammerUsed) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.VICIOUS_HAMMER.getValue()); + mplew.write(0x39); + mplew.writeInt(0); + mplew.writeInt(hammerUsed); + return mplew.getPacket(); + } + + public static byte[] sendHammerMessage() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.VICIOUS_HAMMER.getValue()); + mplew.write(0x3D); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] playPortalSound() { + return showSpecialEffect(7); + } + + public static byte[] showMonsterBookPickup() { + return showSpecialEffect(14); + } + + public static byte[] showEquipmentLevelUp() { + return showSpecialEffect(15); + } + + public static byte[] showItemLevelup() { + return showSpecialEffect(15); + } + + /** + * 6 = Exp did not drop (Safety Charms) 7 = Enter portal sound 8 = Job + * change 9 = Quest complete 10 = Recovery 14 = Monster book pickup 15 = + * Equipment levelup 16 = Maker Skill Success 19 = Exp card [500, 200, 50] + * + * @param effect + * @return + */ + public static byte[] showSpecialEffect(int effect) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(effect); + return mplew.getPacket(); + } + + public static byte[] showForeignEffect(int cid, int effect) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(cid); + mplew.write(effect); + return mplew.getPacket(); + } + + public static byte[] showOwnRecovery(byte heal) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(0x0A); + mplew.write(heal); + return mplew.getPacket(); + } + + public static byte[] showRecovery(int cid, byte amount) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_FOREIGN_EFFECT.getValue()); + mplew.writeInt(cid); + mplew.write(0x0A); + mplew.write(amount); + return mplew.getPacket(); + } + + public static byte[] showWheelsLeft(int left) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_ITEM_GAIN_INCHAT.getValue()); + mplew.write(0x15); + mplew.write(left); + return mplew.getPacket(); + } + + public static byte[] updateQuestFinish(short quest, int npc, short nextquest) { //Check + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); //0xF2 in v95 + mplew.write(8);//0x0A in v95 + mplew.writeShort(quest); + mplew.writeInt(npc); + mplew.writeShort(nextquest); + return mplew.getPacket(); + } + + public static byte[] showInfoText(String text) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(9); + mplew.writeMapleAsciiString(text); + return mplew.getPacket(); + } + + public static byte[] questError(short quest) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); + mplew.write(0x0A); + mplew.writeShort(quest); + return mplew.getPacket(); + } + + public static byte[] questFailure(byte type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); + mplew.write(type);//0x0B = No meso, 0x0D = Worn by character, 0x0E = Not having the item ? + return mplew.getPacket(); + } + + public static byte[] questExpire(short quest) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.UPDATE_QUEST_INFO.getValue()); + mplew.write(0x0F); + mplew.writeShort(quest); + return mplew.getPacket(); + } + + public static byte[] getMultiMegaphone(String[] messages, int channel, boolean showEar) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SERVERMESSAGE.getValue()); + mplew.write(0x0A); + if (messages[0] != null) { + mplew.writeMapleAsciiString(messages[0]); + } + mplew.write(messages.length); + for (int i = 1; i < messages.length; i++) { + if (messages[i] != null) { + mplew.writeMapleAsciiString(messages[i]); + } + } + for (int i = 0; i < 10; i++) { + mplew.write(channel - 1); + } + mplew.write(showEar ? 1 : 0); + mplew.write(1); + return mplew.getPacket(); + } + + /** + * Gets a gm effect packet (ie. hide, banned, etc.) + * + * Possible values for type:
    0x04: You have successfully + * blocked access.
    + * 0x05: The unblocking has been successful.
    0x06 with Mode 0: You have + * successfully removed the name from the ranks.
    0x06 with Mode 1: You + * have entered an invalid character name.
    0x10: GM Hide, mode + * determines whether or not it is on.
    0x1E: Mode 0: Failed to send + * warning Mode 1: Sent warning
    0x13 with Mode 0: + mapid 0x13 with Mode + * 1: + ch (FF = Unable to find merchant) + * + * @param type The type + * @param mode The mode + * @return The gm effect packet + */ + public static byte[] getGMEffect(int type, byte mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ADMIN_RESULT.getValue()); + mplew.write(type); + mplew.write(mode); + return mplew.getPacket(); + } + + public static byte[] findMerchantResponse(boolean map, int extra) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ADMIN_RESULT.getValue()); + mplew.write(0x13); + mplew.write(map ? 0 : 1); //00 = mapid, 01 = ch + if (map) { + mplew.writeInt(extra); + } else { + mplew.write(extra); //-1 = unable to find + } + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] disableMinimap() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ADMIN_RESULT.getValue()); + mplew.writeShort(0x1C); + return mplew.getPacket(); + } + + public static byte[] sendFamilyInvite(int playerId, String inviter) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_JOIN_REQUEST.getValue()); + mplew.writeInt(playerId); + mplew.writeMapleAsciiString(inviter); + return mplew.getPacket(); + } + + public static byte[] showBoughtCashPackage(List cashPackage, int accountId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x89); + mplew.write(cashPackage.size()); + + for (Item item : cashPackage) { + addCashItemInformation(mplew, item, accountId); + } + + mplew.writeShort(0); + + return mplew.getPacket(); + } + + public static byte[] showBoughtQuestItem(int itemId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x8D); + mplew.writeInt(1); + mplew.writeShort(1); + mplew.write(0x0B); + mplew.write(0); + mplew.writeInt(itemId); + + return mplew.getPacket(); + } + + private static void getGuildInfo(final MaplePacketLittleEndianWriter mplew, MapleGuild guild) { + mplew.writeInt(guild.getId()); + mplew.writeMapleAsciiString(guild.getName()); + for (int i = 1; i <= 5; i++) { + mplew.writeMapleAsciiString(guild.getRankTitle(i)); + } + Collection members = guild.getMembers(); + mplew.write(members.size()); + for (MapleGuildCharacter mgc : members) { + mplew.writeInt(mgc.getId()); + } + for (MapleGuildCharacter mgc : members) { + mplew.writeAsciiString(getRightPaddedStr(mgc.getName(), '\0', 13)); + mplew.writeInt(mgc.getJobId()); + mplew.writeInt(mgc.getLevel()); + mplew.writeInt(mgc.getGuildRank()); + mplew.writeInt(mgc.isOnline() ? 1 : 0); + mplew.writeInt(guild.getSignature()); + mplew.writeInt(mgc.getAllianceRank()); + } + mplew.writeInt(guild.getCapacity()); + mplew.writeShort(guild.getLogoBG()); + mplew.write(guild.getLogoBGColor()); + mplew.writeShort(guild.getLogo()); + mplew.write(guild.getLogoColor()); + mplew.writeMapleAsciiString(guild.getNotice()); + mplew.writeInt(guild.getGP()); + mplew.writeInt(guild.getAllianceId()); + } + + public static byte[] getAllianceInfo(MapleAlliance alliance) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x0C); + mplew.write(1); + mplew.writeInt(alliance.getId()); + mplew.writeMapleAsciiString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + mplew.writeMapleAsciiString(alliance.getRankTitle(i)); + } + mplew.write(alliance.getGuilds().size()); + mplew.writeInt(2); // probably capacity + for (Integer guild : alliance.getGuilds()) { + mplew.writeInt(guild); + } + mplew.writeMapleAsciiString(alliance.getNotice()); + return mplew.getPacket(); + } + + public static byte[] makeNewAlliance(MapleAlliance alliance, MapleClient c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x0F); + mplew.writeInt(alliance.getId()); + mplew.writeMapleAsciiString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + mplew.writeMapleAsciiString(alliance.getRankTitle(i)); + } + mplew.write(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + mplew.writeInt(guild); + } + mplew.writeInt(2); // probably capacity + mplew.writeShort(0); + for (Integer guildd : alliance.getGuilds()) { + getGuildInfo(mplew, Server.getInstance().getGuild(guildd, c.getWorld(), c.getPlayer().getMGC())); + } + return mplew.getPacket(); + } + + public static byte[] getGuildAlliances(MapleAlliance alliance, MapleClient c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x0D); + mplew.writeInt(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + getGuildInfo(mplew, Server.getInstance().getGuild(guild, c.getWorld(), null)); + } + return mplew.getPacket(); + } + + public static byte[] addGuildToAlliance(MapleAlliance alliance, int newGuild, MapleClient c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x12); + mplew.writeInt(alliance.getId()); + mplew.writeMapleAsciiString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + mplew.writeMapleAsciiString(alliance.getRankTitle(i)); + } + mplew.write(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + mplew.writeInt(guild); + } + mplew.writeInt(2); + mplew.writeMapleAsciiString(alliance.getNotice()); + mplew.writeInt(newGuild); + getGuildInfo(mplew, Server.getInstance().getGuild(newGuild, c.getWorld(), null)); + return mplew.getPacket(); + } + + public static byte[] allianceMemberOnline(MapleCharacter mc, boolean online) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x0E); + mplew.writeInt(mc.getGuild().getAllianceId()); + mplew.writeInt(mc.getGuildId()); + mplew.writeInt(mc.getId()); + mplew.write(online ? 1 : 0); + return mplew.getPacket(); + } + + public static byte[] allianceNotice(int id, String notice) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x1C); + mplew.writeInt(id); + mplew.writeMapleAsciiString(notice); + return mplew.getPacket(); + } + + public static byte[] changeAllianceRankTitle(int alliance, String[] ranks) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x1A); + mplew.writeInt(alliance); + for (int i = 0; i < 5; i++) { + mplew.writeMapleAsciiString(ranks[i]); + } + return mplew.getPacket(); + } + + public static byte[] updateAllianceJobLevel(MapleCharacter mc) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x18); + mplew.writeInt(mc.getGuild().getAllianceId()); + mplew.writeInt(mc.getGuildId()); + mplew.writeInt(mc.getId()); + mplew.writeInt(mc.getLevel()); + mplew.writeInt(mc.getJob().getId()); + return mplew.getPacket(); + } + + public static byte[] removeGuildFromAlliance(MapleAlliance alliance, int expelledGuild, MapleClient c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x10); + mplew.writeInt(alliance.getId()); + mplew.writeMapleAsciiString(alliance.getName()); + for (int i = 1; i <= 5; i++) { + mplew.writeMapleAsciiString(alliance.getRankTitle(i)); + } + mplew.write(alliance.getGuilds().size()); + for (Integer guild : alliance.getGuilds()) { + mplew.writeInt(guild); + } + mplew.writeInt(2); + mplew.writeMapleAsciiString(alliance.getNotice()); + mplew.writeInt(expelledGuild); + getGuildInfo(mplew, Server.getInstance().getGuild(expelledGuild, c.getWorld(), null)); + mplew.write(0x01); + return mplew.getPacket(); + } + + public static byte[] disbandAlliance(int alliance) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.ALLIANCE_OPERATION.getValue()); + mplew.write(0x1D); + mplew.writeInt(alliance); + return mplew.getPacket(); + } + + public static byte[] sendMesoLimit() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.TRADE_MONEY_LIMIT.getValue()); //Players under level 15 can only trade 1m per day + return mplew.getPacket(); + } + + public static byte[] sendEngagementRequest(String name) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MARRIAGE_REQUEST.getValue()); // has requested engagement. Will you accept this proposal? + mplew.write(0); + mplew.writeMapleAsciiString(name); // name + mplew.writeInt(10); // playerid + return mplew.getPacket(); + } + + public static byte[] sendGroomWishlist() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MARRIAGE_REQUEST.getValue()); // has requested engagement. Will you accept this proposal? + mplew.write(9); + return mplew.getPacket(); + } + + public static byte[] sendBrideWishList(List items) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.WEDDING_GIFT_RESULT.getValue()); + mplew.write(0x0A); + mplew.writeLong(-1); // ? + mplew.writeInt(0); // ? + mplew.write(items.size()); + for (Item item : items) { + addItemInfo(mplew, item, true); + } + return mplew.getPacket(); + } + + public static byte[] addItemToWeddingRegistry(MapleCharacter chr, Item item) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.WEDDING_GIFT_RESULT.getValue()); + mplew.write(0x0B); + mplew.writeInt(0); + for (int i = 0; i < 0; i++) // f4 + { + mplew.write(0); + } + + addItemInfo(mplew, item, true); + return mplew.getPacket(); + } + + public static byte[] sendFamilyJoinResponse(boolean accepted, String added) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_JOIN_REQUEST_RESULT.getValue()); + mplew.write(accepted ? 1 : 0); + mplew.writeMapleAsciiString(added); + return mplew.getPacket(); + } + + public static byte[] getSeniorMessage(String name) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_JOIN_ACCEPTED.getValue()); + mplew.writeMapleAsciiString(name); + mplew.writeInt(0); + return mplew.getPacket(); + } + + public static byte[] sendGainRep(int gain, int mode) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FAMILY_FAMOUS_POINT_INC_RESULT.getValue()); + mplew.writeInt(gain); + mplew.writeShort(0); + return mplew.getPacket(); + } + + public static byte[] removeItemFromDuey(boolean remove, int Package) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARCEL.getValue()); + mplew.write(0x17); + mplew.writeInt(Package); + mplew.write(remove ? 3 : 4); + return mplew.getPacket(); + } + + public static byte[] sendDueyMSG(byte operation) { + return sendDuey(operation, null); + } + + public static byte[] sendDuey(byte operation, List packages) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PARCEL.getValue()); + mplew.write(operation); + if (operation == 8) { + mplew.write(0); + mplew.write(packages.size()); + for (DueyPackages dp : packages) { + mplew.writeInt(dp.getPackageId()); + mplew.writeAsciiString(dp.getSender()); + for (int i = dp.getSender().length(); i < 13; i++) { + mplew.write(0); + } + mplew.writeInt(dp.getMesos()); + mplew.writeLong(getTime(dp.sentTimeInMilliseconds())); + mplew.writeLong(0); // Contains message o____o. + for (int i = 0; i < 48; i++) { + mplew.writeInt(Randomizer.nextInt(Integer.MAX_VALUE)); + } + mplew.writeInt(0); + mplew.write(0); + if (dp.getItem() != null) { + mplew.write(1); + addItemInfo(mplew, dp.getItem(), true); + } else { + mplew.write(0); + } + } + mplew.write(0); + } + + return mplew.getPacket(); + } + + public static byte[] sendDojoAnimation(byte firstByte, String animation) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); + mplew.write(firstByte); + mplew.writeMapleAsciiString(animation); + return mplew.getPacket(); + } + + public static byte[] getDojoInfo(String info) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(10); + mplew.write(new byte[]{(byte) 0xB7, 4});//QUEST ID f5 + mplew.writeMapleAsciiString(info); + return mplew.getPacket(); + } + + public static byte[] getDojoInfoMessage(String message) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(9); + mplew.writeMapleAsciiString(message); + return mplew.getPacket(); + } + + /** + * Gets a "block" packet (ie. the cash shop is unavailable, etc) + * + * Possible values for type:
    1: The portal is closed for + * now.
    2: You cannot go to that place.
    3: Unable to approach due to + * the force of the ground.
    4: You cannot teleport to or on this + * map.
    5: Unable to approach due to the force of the ground.
    6: + * This map can only be entered by party members.
    7: The Cash Shop is + * currently not available. Stay tuned...
    + * + * @param type The type + * @return The "block" packet. + */ + public static byte[] blockedMessage(int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BLOCKED_MAP.getValue()); + mplew.write(type); + return mplew.getPacket(); + } + + /** + * Gets a "block" packet (ie. the cash shop is unavailable, etc) + * + * Possible values for type:
    1: You cannot move that + * channel. Please try again later.
    2: You cannot go into the cash shop. + * Please try again later.
    3: The Item-Trading Shop is currently + * unavailable. Please try again later.
    4: You cannot go into the trade + * shop, due to limitation of user count.
    5: You do not meet the minimum + * level requirement to access the Trade Shop.
    + * + * @param type The type + * @return The "block" packet. + */ + public static byte[] blockedMessage2(int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BLOCKED_SERVER.getValue()); + mplew.write(type); + return mplew.getPacket(); + } + + public static byte[] updateDojoStats(MapleCharacter chr, int belt) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(10); + mplew.write(new byte[]{(byte) 0xB7, 4}); //? + mplew.writeMapleAsciiString("pt=" + chr.getDojoPoints() + ";belt=" + belt + ";tuto=" + (chr.getFinishedDojoTutorial() ? "1" : "0")); + return mplew.getPacket(); + } + + /** + * Sends a "levelup" packet to the guild or family. + * + * Possible values for type:
    0: ? has reached Lv. + * ?.
    - The Reps you have received from ? will be reduced in half. 1: + * ? has reached Lv. ?.
    2: ? has reached Lv. ?.
    + * + * @param type The type + * @return The "levelup" packet. + */ + public static byte[] levelUpMessage(int type, int level, String charname) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NOTIFY_LEVELUP.getValue()); + mplew.write(type); + mplew.writeInt(level); + mplew.writeMapleAsciiString(charname); + + return mplew.getPacket(); + } + + /** + * Sends a "married" packet to the guild or family. + * + * Possible values for type:
    0: 1: + * + * @param type The type + * @return The "married" packet. + */ + public static byte[] marriageMessage(int type, String charname) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NOTIFY_MARRIAGE.getValue()); + mplew.write(type); + mplew.writeMapleAsciiString("> " + charname); //To fix the stupid packet lol + + return mplew.getPacket(); + } + + /** + * Sends a "job advance" packet to the guild or family. + * + * Possible values for type:
    0: 1: + * + * @param type The type + * @return The "job advance" packet. + */ + public static byte[] jobMessage(int type, int job, String charname) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.NOTIFY_JOB_CHANGE.getValue()); + mplew.write(type); + mplew.writeInt(job); //Why fking int? + mplew.writeMapleAsciiString("> " + charname); //To fix the stupid packet lol + + return mplew.getPacket(); + } + + /** + * + * @param type - (0:Light&Long 1:Heavy&Short) + * @param delay - seconds + * @return + */ + public static byte[] trembleEffect(int type, int delay) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.FIELD_EFFECT.getValue()); + mplew.write(1); + mplew.write(type); + mplew.writeInt(delay); + return mplew.getPacket(); + } + + public static byte[] getEnergy(String info, int amount) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SESSION_VALUE.getValue()); + mplew.writeMapleAsciiString(info); + mplew.writeMapleAsciiString(Integer.toString(amount)); + return mplew.getPacket(); + } + + public static byte[] dojoWarpUp() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DOJO_WARP_UP.getValue()); + mplew.write(0); + mplew.write(6); + return mplew.getPacket(); + } + + public static byte[] itemExpired(int itemid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(2); + mplew.writeInt(itemid); + return mplew.getPacket(); + } + + private static String getRightPaddedStr(String in, char padchar, int length) { + StringBuilder builder = new StringBuilder(in); + for (int x = in.length(); x < length; x++) { + builder.append(padchar); + } + return builder.toString(); + } + + public static byte[] MobDamageMobFriendly(MapleMonster mob, int damage) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.DAMAGE_MONSTER.getValue()); + mplew.writeInt(mob.getObjectId()); + mplew.write(1); // direction ? + mplew.writeInt(damage); + int remainingHp = mob.getHp() - damage; + if (remainingHp <= 1) { + remainingHp = 0; + mob.getMap().removeMapObject(mob); + } + mob.setHp(remainingHp); + mplew.writeInt(remainingHp); + mplew.writeInt(mob.getMaxHp()); + return mplew.getPacket(); + } + + public static byte[] shopErrorMessage(int error, int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.PLAYER_INTERACTION.getValue()); + mplew.write(0x0A); + mplew.write(type); + mplew.write(error); + return mplew.getPacket(); + } + + private static void addRingInfo(final MaplePacketLittleEndianWriter mplew, MapleCharacter chr) { + mplew.writeShort(chr.getCrushRings().size()); + for (MapleRing ring : chr.getCrushRings()) { + mplew.writeInt(ring.getPartnerChrId()); + mplew.writeAsciiString(getRightPaddedStr(ring.getPartnerName(), '\0', 13)); + mplew.writeInt(ring.getRingId()); + mplew.writeInt(0); + mplew.writeInt(ring.getPartnerRingId()); + mplew.writeInt(0); + } + mplew.writeShort(chr.getFriendshipRings().size()); + for (MapleRing ring : chr.getFriendshipRings()) { + mplew.writeInt(ring.getPartnerChrId()); + mplew.writeAsciiString(getRightPaddedStr(ring.getPartnerName(), '\0', 13)); + mplew.writeInt(ring.getRingId()); + mplew.writeInt(0); + mplew.writeInt(ring.getPartnerRingId()); + mplew.writeInt(0); + mplew.writeInt(ring.getItemId()); + } + mplew.writeShort(chr.getMarriageRing() != null ? 1 : 0); + int marriageId = 30000; + if (chr.getMarriageRing() != null) { + mplew.writeInt(marriageId); + mplew.writeInt(chr.getId()); + mplew.writeInt(chr.getMarriageRing().getPartnerChrId()); + mplew.writeShort(3); + mplew.writeInt(chr.getMarriageRing().getRingId()); + mplew.writeInt(chr.getMarriageRing().getPartnerRingId()); + mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getName() : chr.getMarriageRing().getPartnerName(), '\0', 13)); + mplew.writeAsciiString(StringUtil.getRightPaddedStr(chr.getGender() == 0 ? chr.getMarriageRing().getPartnerName() : chr.getName(), '\0', 13)); + } + } + + public static byte[] finishedSort(int inv) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.GATHER_ITEM_RESULT.getValue()); + mplew.write(0); + mplew.write(inv); + return mplew.getPacket(); + } + + public static byte[] finishedSort2(int inv) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.SORT_ITEM_RESULT.getValue()); + mplew.write(0); + mplew.write(inv); + return mplew.getPacket(); + } + + public static byte[] bunnyPacket() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHOW_STATUS_INFO.getValue()); + mplew.write(9); + mplew.writeAsciiString("Protect the Moon Bunny!!!"); + return mplew.getPacket(); + } + + public static byte[] hpqMessage(String text) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.BLOW_WEATHER.getValue()); // not 100% sure + mplew.write(0); + mplew.writeInt(5120016); + mplew.writeAsciiString(text); + return mplew.getPacket(); + } + + public static byte[] showEventInstructions() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.GMEVENT_INSTRUCTIONS.getValue()); + mplew.write(0); + return mplew.getPacket(); + } + + public static byte[] leftKnockBack() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); + mplew.writeShort(SendOpcode.LEFT_KNOCK_BACK.getValue()); + return mplew.getPacket(); + } + + public static byte[] rollSnowBall(boolean entermap, int state, MapleSnowball ball0, MapleSnowball ball1) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SNOWBALL_STATE.getValue()); + if (entermap) { + mplew.skip(21); + } else { + mplew.write(state);// 0 = move, 1 = roll, 2 is down disappear, 3 is up disappear + mplew.writeInt(ball0.getSnowmanHP() / 75); + mplew.writeInt(ball1.getSnowmanHP() / 75); + mplew.writeShort(ball0.getPosition());//distance snowball down, 84 03 = max + mplew.write(-1); + mplew.writeShort(ball1.getPosition());//distance snowball up, 84 03 = max + mplew.write(-1); + } + return mplew.getPacket(); + } + + public static byte[] hitSnowBall(int what, int damage) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.HIT_SNOWBALL.getValue()); + mplew.write(what); + mplew.writeInt(damage); + return mplew.getPacket(); + } + + /** + * Sends a Snowball Message
    + * + * Possible values for message:
    1: ... Team's snowball has + * passed the stage 1.
    2: ... Team's snowball has passed the stage + * 2.
    3: ... Team's snowball has passed the stage 3.
    4: ... Team is + * attacking the snowman, stopping the progress
    5: ... Team is moving + * again
    + * + * @param message + * + */ + public static byte[] snowballMessage(int team, int message) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.SNOWBALL_MESSAGE.getValue()); + mplew.write(team);// 0 is down, 1 is up + mplew.writeInt(message); + return mplew.getPacket(); + } + + public static byte[] coconutScore(int team1, int team2) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.COCONUT_SCORE.getValue()); + mplew.writeShort(team1); + mplew.writeShort(team2); + return mplew.getPacket(); + } + + public static byte[] hitCoconut(boolean spawn, int id, int type) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.COCONUT_HIT.getValue()); + if (spawn) { + mplew.writeShort(-1); + mplew.writeShort(5000); + mplew.write(0); + } else { + mplew.writeShort(id); + mplew.writeShort(1000);//delay till you can attack again! + mplew.write(type); // What action to do for the coconut. + } + return mplew.getPacket(); + } + + public static byte[] customPacket(String packet) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.write(HexTool.getByteArrayFromHexString(packet)); + return mplew.getPacket(); + } + + public static byte[] customPacket(byte[] packet) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(packet.length); + mplew.write(packet); + return mplew.getPacket(); + } + + public static byte[] spawnGuide(boolean spawn) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.SPAWN_GUIDE.getValue()); + if (spawn) { + mplew.write(1); + } else { + mplew.write(0); + } + return mplew.getPacket(); + } + + public static byte[] talkGuide(String talk) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.TALK_GUIDE.getValue()); + mplew.write(0); + mplew.writeMapleAsciiString(talk); + mplew.write(new byte[]{(byte) 0xC8, 0, 0, 0, (byte) 0xA0, (byte) 0x0F, 0, 0}); + return mplew.getPacket(); + } + + public static byte[] guideHint(int hint) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(11); + mplew.writeShort(SendOpcode.TALK_GUIDE.getValue()); + mplew.write(1); + mplew.writeInt(hint); + mplew.writeInt(7000); + return mplew.getPacket(); + } + + public static void addCashItemInformation(final MaplePacketLittleEndianWriter mplew, Item item, int accountId) { + addCashItemInformation(mplew, item, accountId, null); + } + + public static void addCashItemInformation(final MaplePacketLittleEndianWriter mplew, Item item, int accountId, String giftMessage) { + boolean isGift = giftMessage != null; + boolean isRing = false; + Equip equip = null; + if (item.getType() == 1) { + equip = (Equip) item; + isRing = equip.getRingId() > -1; + } + mplew.writeLong(item.getPetId() > -1 ? item.getPetId() : isRing ? equip.getRingId() : item.getCashId()); + if (!isGift) { + mplew.writeInt(accountId); + mplew.writeInt(0); + } + mplew.writeInt(item.getItemId()); + if (!isGift) { + mplew.writeInt(item.getSN()); + mplew.writeShort(item.getQuantity()); + } + mplew.writeAsciiString(StringUtil.getRightPaddedStr(item.getGiftFrom(), '\0', 13)); + if (isGift) { + mplew.writeAsciiString(StringUtil.getRightPaddedStr(giftMessage, '\0', 73)); + return; + } + addExpirationTime(mplew, item.getExpiration()); + mplew.writeLong(0); + } + + public static byte[] showWishList(MapleCharacter mc, boolean update) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + if (update) { + mplew.write(0x55); + } else { + mplew.write(0x4F); + } + + for (int sn : mc.getCashShop().getWishList()) { + mplew.writeInt(sn); + } + + for (int i = mc.getCashShop().getWishList().size(); i < 10; i++) { + mplew.writeInt(0); + } + + return mplew.getPacket(); + } + + public static byte[] showBoughtCashItem(Item item, int accountId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x57); + addCashItemInformation(mplew, item, accountId); + + return mplew.getPacket(); + } + + /* + * 00 = Due to an unknown error, failed + * A4 = Due to an unknown error, failed + warpout + * A5 = You don't have enough cash. + * A6 = long as shet msg + * A7 = You have exceeded the allotted limit of price for gifts. + * A8 = You cannot send a gift to your own account. Log in on the char and purchase + * A9 = Please confirm whether the character's name is correct. + * AA = Gender restriction! + * //Skipped a few + * B0 = Wrong Coupon Code + * B1 = Disconnect from CS because of 3 wrong coupon codes < lol + * B2 = Expired Coupon + * B3 = Coupon has been used already + * B4 = Nexon internet cafes? lolfk + * + * BB = inv full + * C2 = not enough mesos? Lol not even 1 mesos xD + */ + public static byte[] showCashShopMessage(byte message) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x5C); + mplew.write(message); + + return mplew.getPacket(); + } + + public static byte[] showCashInventory(MapleClient c) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x4B); + mplew.writeShort(c.getPlayer().getCashShop().getInventory().size()); + + for (Item item : c.getPlayer().getCashShop().getInventory()) { + addCashItemInformation(mplew, item, c.getAccID()); + } + + mplew.writeShort(c.getPlayer().getStorage().getSlots()); + mplew.writeShort(c.getCharacterSlots()); + + return mplew.getPacket(); + } + + public static byte[] showGifts(List> gifts) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x4D); + mplew.writeShort(gifts.size()); + + for (Pair gift : gifts) { + addCashItemInformation(mplew, gift.getLeft(), 0, gift.getRight()); + } + + return mplew.getPacket(); + } + + public static byte[] showGiftSucceed(String to, CashItem item) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x5E); //0x5D, Couldn't be sent + mplew.writeMapleAsciiString(to); + mplew.writeInt(item.getItemId()); + mplew.writeShort(item.getCount()); + mplew.writeInt(item.getPrice()); + + return mplew.getPacket(); + } + + public static byte[] showBoughtInventorySlots(int type, short slots) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x60); + mplew.write(type); + mplew.writeShort(slots); + + return mplew.getPacket(); + } + + public static byte[] showBoughtStorageSlots(short slots) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x62); + mplew.writeShort(slots); + + return mplew.getPacket(); + } + + public static byte[] showBoughtCharacterSlot(short slots) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(5); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x64); + mplew.writeShort(slots); + + return mplew.getPacket(); + } + + public static byte[] takeFromCashInventory(Item item) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x68); + mplew.writeShort(item.getPosition()); + addItemInfo(mplew, item, true); + + return mplew.getPacket(); + } + + public static byte[] putIntoCashInventory(Item item, int accountId) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.CASHSHOP_OPERATION.getValue()); + + mplew.write(0x6A); + addCashItemInformation(mplew, item, accountId); + + return mplew.getPacket(); + } + + public static byte[] openCashShop(MapleClient c, boolean mts) throws Exception { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(mts ? SendOpcode.SET_ITC.getValue() : SendOpcode.SET_CASH_SHOP.getValue()); + + addCharacterInfo(mplew, c.getPlayer()); + + if (!mts) { + mplew.write(1); + } + + mplew.writeMapleAsciiString(c.getAccountName()); + if (mts) { + mplew.write(new byte[]{(byte) 0x88, 19, 0, 0, 7, 0, 0, 0, (byte) 0xF4, 1, 0, 0, (byte) 0x18, 0, 0, 0, (byte) 0xA8, 0, 0, 0, (byte) 0x70, (byte) 0xAA, (byte) 0xA7, (byte) 0xC5, (byte) 0x4E, (byte) 0xC1, (byte) 0xCA, 1}); + } else { + mplew.writeInt(0); + List lsci = CashItemFactory.getSpecialCashItems(); + mplew.writeShort(lsci.size());//Guess what + for (SpecialCashItem sci : lsci) { + mplew.writeInt(sci.getSN()); + mplew.writeInt(sci.getModifier()); + mplew.write(sci.getInfo()); + } + mplew.skip(121); + + for (int i = 1; i <= 8; i++) { + for (int j = 0; j < 2; j++) { + mplew.writeInt(i); + mplew.writeInt(j); + mplew.writeInt(50200004); + + mplew.writeInt(i); + mplew.writeInt(j); + mplew.writeInt(50200069); + + mplew.writeInt(i); + mplew.writeInt(j); + mplew.writeInt(50200117); + + mplew.writeInt(i); + mplew.writeInt(j); + mplew.writeInt(50100008); + + mplew.writeInt(i); + mplew.writeInt(j); + mplew.writeInt(50000047); + } + } + + mplew.writeInt(0); + mplew.writeShort(0); + mplew.write(0); + mplew.writeInt(75); + } + return mplew.getPacket(); + } + + public static byte[] resetForcedStats() { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(2); + mplew.writeShort(SendOpcode.FORCED_STAT_RESET.getValue()); + return mplew.getPacket(); + } + + public static byte[] showCombo(int count) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.SHOW_COMBO.getValue()); + mplew.writeInt(count); + return mplew.getPacket(); + } + + public static byte[] earnTitleMessage(String msg) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SCRIPT_PROGRESS_MESSAGE.getValue()); + mplew.writeMapleAsciiString(msg); + return mplew.getPacket(); + } + + public static byte[] startCPQ(MapleCharacter chr, MonsterCarnivalParty enemy) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(25); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_START.getValue()); + mplew.write(chr.getTeam()); //team + mplew.writeShort(chr.getCP()); //Obtained CP - Used CP + mplew.writeShort(chr.getObtainedCP()); //Total Obtained CP + mplew.writeShort(chr.getCarnivalParty().getAvailableCP()); //Obtained CP - Used CP of the team + mplew.writeShort(chr.getCarnivalParty().getTotalCP()); //Total Obtained CP of the team + mplew.writeShort(enemy.getAvailableCP()); //Obtained CP - Used CP of the team + mplew.writeShort(enemy.getTotalCP()); //Total Obtained CP of the team + mplew.writeShort(0); //Probably useless nexon shit + mplew.writeLong(0); //Probably useless nexon shit + return mplew.getPacket(); + } + + public static byte[] updateCP(int cp, int tcp) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_OBTAINED_CP.getValue()); + mplew.writeShort(cp); //Obtained CP - Used CP + mplew.writeShort(tcp); //Total Obtained CP + return mplew.getPacket(); + } + + public static byte[] updatePartyCP(MonsterCarnivalParty party) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_PARTY_CP.getValue()); + mplew.write(party.getTeam()); //Team where the points are given to. + mplew.writeShort(party.getAvailableCP()); //Obtained CP - Used CP + mplew.writeShort(party.getTotalCP()); //Total Obtained CP + return mplew.getPacket(); + } + + public static byte[] CPQSummon(int tab, int number, String name) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_SUMMON.getValue()); + mplew.write(tab); //Tab + mplew.writeShort(number); //Number of summon inside the tab + mplew.writeMapleAsciiString(name); //Name of the player that summons + return mplew.getPacket(); + } + + public static byte[] CPQDied(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_SUMMON.getValue()); + mplew.write(chr.getTeam()); //Team + mplew.writeMapleAsciiString(chr.getName()); //Name of the player that died + mplew.write(chr.getAndRemoveCP()); //Lost CP + return mplew.getPacket(); + } + + /** + * Sends a CPQ Message
    + * + * Possible values for message:
    1: You don't have enough CP + * to continue.
    2: You can no longer summon the Monster.
    3: You can + * no longer summon the being.
    4: This being is already summoned.
    5: + * This request has failed due to an unknown error.
    + * + * @param message Displays a message inside Carnival PQ + * + */ + public static byte[] CPQMessage(byte message) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(3); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_MESSAGE.getValue()); + mplew.write(message); //Message + return mplew.getPacket(); + } + + public static byte[] leaveCPQ(MapleCharacter chr) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MONSTER_CARNIVAL_LEAVE.getValue()); + mplew.write(0); //Something + mplew.write(chr.getTeam()); //Team + mplew.writeMapleAsciiString(chr.getName()); //Player name + return mplew.getPacket(); + } + + public static byte[] sheepRanchInfo(byte wolf, byte sheep) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHEEP_RANCH_INFO.getValue()); + mplew.write(wolf); + mplew.write(sheep); + return mplew.getPacket(); + } + //Know what this is? ?? >=) + + public static byte[] sheepRanchClothes(int id, byte clothes) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SHEEP_RANCH_CLOTHES.getValue()); + mplew.writeInt(id); //Character id + mplew.write(clothes); //0 = sheep, 1 = wolf, 2 = Spectator (wolf without wool) + return mplew.getPacket(); + } + + public static byte[] incubatorResult() {//lol + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(8); + mplew.writeShort(SendOpcode.INCUBATOR_RESULT.getValue()); + mplew.skip(6); + return mplew.getPacket(); + } + + public static byte[] pyramidGauge(int gauge) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(6); + mplew.writeShort(SendOpcode.PYRAMID_GAUGE.getValue()); + mplew.writeInt(gauge); + return mplew.getPacket(); + } + // f2 + + public static byte[] pyramidScore(byte score, int exp) {//Type cannot be higher than 4 (Rank D), otherwise you'll crash + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(7); + mplew.writeShort(SendOpcode.PYRAMID_SCORE.getValue()); + mplew.write(score); + mplew.writeInt(exp); + return mplew.getPacket(); + } + + public static byte[] spawnDragon(MapleDragon dragon) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SPAWN_DRAGON.getValue()); + mplew.writeInt(dragon.getOwner().getId());//objectid = owner id + mplew.writeShort(dragon.getPosition().x); + mplew.writeShort(0); + mplew.writeShort(dragon.getPosition().y); + mplew.writeShort(0); + mplew.write(dragon.getStance()); + mplew.write(0); + mplew.writeShort(dragon.getOwner().getJob().getId()); + return mplew.getPacket(); + } + + public static byte[] moveDragon(MapleDragon dragon, Point startPos, List res) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.MOVE_DRAGON.getValue()); + mplew.writeInt(dragon.getOwner().getId()); + mplew.writePos(startPos); + serializeMovementList(mplew, res); + return mplew.getPacket(); + } + + /** + * Sends a request to remove Mir
    + * + * @param charid - Needs the specific Character ID + * @return The packet + * + */ + public static byte[] removeDragon(int chrid) { + final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.REMOVE_DRAGON.getValue()); + mplew.writeInt(chrid); + return mplew.getPacket(); + } + + /** + * Changes the current background effect to either being rendered or not. + * Data is still missing, so this is pretty binary at the moment in how it + * behaves. + * + * @param remove whether or not the remove or add the specified layer. + * @param layer the targeted layer for removal or addition. + * @param transition the time it takes to transition the effect. + * + * @return a packet to change the background effect of a specified layer. + */ + public static byte[] changeBackgroundEffect(boolean remove, int layer, int transition) { + MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(); + mplew.writeShort(SendOpcode.SET_BACK_EFFECT.getValue()); + mplew.writeBool(remove); + mplew.writeInt(0); // not sure what this int32 does yet + mplew.write(layer); + mplew.writeInt(transition); + return mplew.getPacket(); + } +} diff --git a/src/tools/Pair.java b/src/tools/Pair.java new file mode 100644 index 0000000000..f88718cbe3 --- /dev/null +++ b/src/tools/Pair.java @@ -0,0 +1,121 @@ +/* +This file is part of the OdinMS Maple Story Server +Copyright (C) 2008 ~ 2010 Patrick Huy +Matthias Butz +Jan Christian Meyer + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License version 3 +as published by the Free Software Foundation. You may not use, modify +or distribute this program under any other version of the +GNU Affero General Public License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . + */ +package tools; + +/** + * Represents a pair of values. + * + * @author Frz + * @since Revision 333 + * @version 1.0 + * + * @param The type of the left value. + * @param The type of the right value. + */ +public class Pair { + + public E left; + public F right; + + /** + * Class constructor - pairs two objects together. + * + * @param left The left object. + * @param right The right object. + */ + public Pair(E left, F right) { + this.left = left; + this.right = right; + } + + /** + * Gets the left value. + * + * @return The left value. + */ + public E getLeft() { + return left; + } + + /** + * Gets the right value. + * + * @return The right value. + */ + public F getRight() { + return right; + } + + /** + * Turns the pair into a string. + * + * @return Each value of the pair as a string joined by a colon. + */ + @Override + public String toString() { + return left.toString() + ":" + right.toString(); + } + + /** + * Gets the hash code of this pair. + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((left == null) ? 0 : left.hashCode()); + result = prime * result + ((right == null) ? 0 : right.hashCode()); + return result; + } + + /** + * Checks to see if two pairs are equal. + */ + @SuppressWarnings("unchecked") + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Pair other = (Pair) obj; + if (left == null) { + if (other.left != null) { + return false; + } + } else if (!left.equals(other.left)) { + return false; + } + if (right == null) { + if (other.right != null) { + return false; + } + } else if (!right.equals(other.right)) { + return false; + } + return true; + } +} \ No newline at end of file diff --git a/src/tools/Randomizer.java b/src/tools/Randomizer.java new file mode 100644 index 0000000000..c4c5c88b12 --- /dev/null +++ b/src/tools/Randomizer.java @@ -0,0 +1,40 @@ +package tools; + +import java.util.Random; + +public class Randomizer { + + private final static Random rand = new Random(); + + public static int nextInt() { + return rand.nextInt(); + } + + public static int nextInt(final int arg0) { + return rand.nextInt(arg0); + } + + public static void nextBytes(final byte[] bytes) { + rand.nextBytes(bytes); + } + + public static boolean nextBoolean() { + return rand.nextBoolean(); + } + + public static double nextDouble() { + return rand.nextDouble(); + } + + public static float nextFloat() { + return rand.nextFloat(); + } + + public static long nextLong() { + return rand.nextLong(); + } + + public static int rand(final int lbound, final int ubound) { + return (int) ((rand.nextDouble() * (ubound - lbound + 1)) + lbound); + } +} \ No newline at end of file diff --git a/src/tools/StringUtil.java b/src/tools/StringUtil.java new file mode 100644 index 0000000000..b471e4aef2 --- /dev/null +++ b/src/tools/StringUtil.java @@ -0,0 +1,128 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools; + +public class StringUtil { + /** + * Gets a string padded from the left to length by + * padchar. + * + * @param in The input string to be padded. + * @param padchar The character to pad with. + * @param length The length to pad to. + * @return The padded string. + */ + public static String getLeftPaddedStr(String in, char padchar, int length) { + StringBuilder builder = new StringBuilder(length); + for (int x = in.length(); x < length; x++) { + builder.append(padchar); + } + builder.append(in); + return builder.toString(); + } + + /** + * Gets a string padded from the right to length by + * padchar. + * + * @param in The input string to be padded. + * @param padchar The character to pad with. + * @param length The length to pad to. + * @return The padded string. + */ + public static String getRightPaddedStr(String in, char padchar, int length) { + StringBuilder builder = new StringBuilder(in); + for (int x = in.length(); x < length; x++) { + builder.append(padchar); + } + return builder.toString(); + } + + /** + * Joins an array of strings starting from string start with + * a space. + * + * @param arr The array of strings to join. + * @param start Starting from which string. + * @return The joined strings. + */ + public static String joinStringFrom(String arr[], int start) { + return joinStringFrom(arr, start, " "); + } + + /** + * Joins an array of strings starting from string start with + * sep as a seperator. + * + * @param arr The array of strings to join. + * @param start Starting from which string. + * @return The joined strings. + */ + public static String joinStringFrom(String arr[], int start, String sep) { + StringBuilder builder = new StringBuilder(); + for (int i = start; i < arr.length; i++) { + builder.append(arr[i]); + if (i != arr.length - 1) { + builder.append(sep); + } + } + return builder.toString(); + } + + /** + * Makes an enum name human readable (fixes spaces, capitalization, etc) + * + * @param enumName The name of the enum to neaten up. + * @return The human-readable enum name. + */ + public static String makeEnumHumanReadable(String enumName) { + StringBuilder builder = new StringBuilder(enumName.length() + 1); + String[] words = enumName.split("_"); + for (String word : words) { + if (word.length() <= 2) { + builder.append(word); // assume that it's an abbrevation + } else { + builder.append(word.charAt(0)); + builder.append(word.substring(1).toLowerCase()); + } + builder.append(' '); + } + return builder.substring(0, enumName.length()); + } + + /** + * Counts the number of chr's in str. + * + * @param str The string to check for instances of chr. + * @param chr The character to check for. + * @return The number of times chr occurs in str. + */ + public static int countCharacters(String str, char chr) { + int ret = 0; + for (int i = 0; i < str.length(); i++) { + if (str.charAt(i) == chr) { + ret++; + } + } + return ret; + } +} \ No newline at end of file diff --git a/src/tools/data/input/ByteArrayByteStream.java b/src/tools/data/input/ByteArrayByteStream.java new file mode 100644 index 0000000000..eac7de21ea --- /dev/null +++ b/src/tools/data/input/ByteArrayByteStream.java @@ -0,0 +1,72 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; +import tools.HexTool; + +public class ByteArrayByteStream implements SeekableInputStreamBytestream { + private int pos = 0; + private long bytesRead = 0; + private byte[] arr; + + public ByteArrayByteStream(byte[] arr) { + this.arr = arr; + } + + @Override + public long getPosition() { + return pos; + } + + @Override + public void seek(long offset) throws IOException { + pos = (int) offset; + } + + @Override + public long getBytesRead() { + return bytesRead; + } + + @Override + public int readByte() { + bytesRead++; + return ((int) arr[pos++]) & 0xFF; + } + + @Override + public String toString() { + String nows = "kevintjuh93 pwns";//I lol'd + if (arr.length - pos > 0) { + byte[] now = new byte[arr.length - pos]; + System.arraycopy(arr, pos, now, 0, arr.length - pos); + nows = HexTool.toString(now); + } + return "All: " + HexTool.toString(arr) + "\nNow: " + nows; + } + + @Override + public long available() { + return arr.length - pos; + } +} diff --git a/src/tools/data/input/ByteInputStream.java b/src/tools/data/input/ByteInputStream.java new file mode 100644 index 0000000000..107f71843e --- /dev/null +++ b/src/tools/data/input/ByteInputStream.java @@ -0,0 +1,35 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +/** + * Represents an abstract stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public interface ByteInputStream { + int readByte(); + long getBytesRead(); + long available(); +} diff --git a/src/tools/data/input/GenericLittleEndianAccessor.java b/src/tools/data/input/GenericLittleEndianAccessor.java new file mode 100644 index 0000000000..d08a9b8374 --- /dev/null +++ b/src/tools/data/input/GenericLittleEndianAccessor.java @@ -0,0 +1,239 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.awt.Point; +import java.io.ByteArrayOutputStream; + +/** + * Provides a generic interface to a Little Endian stream of bytes. + * + * @version 1.0 + * @author Frz + * @since Revision 323 + */ +public class GenericLittleEndianAccessor implements LittleEndianAccessor { + private ByteInputStream bs; + + /** + * Class constructor - Wraps the accessor around a stream of bytes. + * + * @param bs The byte stream to wrap the accessor around. + */ + public GenericLittleEndianAccessor(ByteInputStream bs) { + this.bs = bs; + } + + /** + * Read a single byte from the stream. + * + * @return The byte read. + * @see tools.data.input.ByteInputStream#readByte + */ + @Override + public byte readByte() { + return (byte) bs.readByte(); + } + + /** + * Reads an integer from the stream. + * + * @return The integer read. + */ + @Override + public int readInt() { + return bs.readByte() + (bs.readByte() << 8) + (bs.readByte() << 16) + (bs.readByte() << 24); + } + + /** + * Reads a short integer from the stream. + * + * @return The short read. + */ + @Override + public short readShort() { + return (short) (bs.readByte() + (bs.readByte() << 8)); + } + + /** + * Reads a single character from the stream. + * + * @return The character read. + */ + @Override + public char readChar() { + return (char) readShort(); + } + + /** + * Reads a long integer from the stream. + * + * @return The long integer read. + */ + @Override + public long readLong() { + long byte1 = bs.readByte(); + long byte2 = bs.readByte(); + long byte3 = bs.readByte(); + long byte4 = bs.readByte(); + long byte5 = bs.readByte(); + long byte6 = bs.readByte(); + long byte7 = bs.readByte(); + long byte8 = bs.readByte(); + return (byte8 << 56) + (byte7 << 48) + (byte6 << 40) + (byte5 << 32) + (byte4 << 24) + (byte3 << 16) + (byte2 << 8) + byte1; + } + + /** + * Reads a floating point integer from the stream. + * + * @return The float-type integer read. + */ + @Override + public float readFloat() { + return Float.intBitsToFloat(readInt()); + } + + /** + * Reads a double-precision integer from the stream. + * + * @return The double-type integer read. + */ + @Override + public double readDouble() { + return Double.longBitsToDouble(readLong()); + } + + /** + * Reads an ASCII string from the stream with length n. + * + * @param n Number of characters to read. + * @return The string read. + */ + public final String readAsciiString(int n) { + char ret[] = new char[n]; + for (int x = 0; x < n; x++) { + ret[x] = (char) readByte(); + } + return String.valueOf(ret); + } + + /** + * Reads a null-terminated string from the stream. + * + * @return The string read. + */ + public final String readNullTerminatedAsciiString() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte b; + while (true) { + b = readByte(); + if (b == 0) { + break; + } + baos.write(b); + } + byte[] buf = baos.toByteArray(); + char[] chrBuf = new char[buf.length]; + for (int x = 0; x < buf.length; x++) { + chrBuf[x] = (char) buf[x]; + } + return String.valueOf(chrBuf); + } + + /** + * Gets the number of bytes read from the stream so far. + * + * @return A long integer representing the number of bytes read. + * @see tools.data.input.ByteInputStream#getBytesRead() + */ + public long getBytesRead() { + return bs.getBytesRead(); + } + + /** + * Reads a MapleStory convention lengthed ASCII string. + * This consists of a short integer telling the length of the string, + * then the string itself. + * + * @return The string read. + */ + @Override + public String readMapleAsciiString() { + return readAsciiString(readShort()); + } + + /** + * Reads num bytes off the stream. + * + * @param num The number of bytes to read. + * @return An array of bytes with the length of num + */ + @Override + public byte[] read(int num) { + byte[] ret = new byte[num]; + for (int x = 0; x < num; x++) { + ret[x] = readByte(); + } + return ret; + } + + /** + * Reads a MapleStory Position information. + * This consists of 2 short integer. + * + * @return The Position read. + */ + @Override + public final Point readPos() { + final int x = readShort(); + final int y = readShort(); + return new Point(x, y); + } + + /** + * Skips the current position of the stream num bytes ahead. + * + * @param num Number of bytes to skip. + */ + @Override + public void skip(int num) { + for (int x = 0; x < num; x++) { + readByte(); + } + } + + /** + * @see tools.data.input.ByteInputStream#available + */ + @Override + public long available() { + return bs.available(); + } + + /** + * @see java.lang.Object#toString + */ + @Override + public String toString() { + return bs.toString(); + } +} \ No newline at end of file diff --git a/src/tools/data/input/GenericSeekableLittleEndianAccessor.java b/src/tools/data/input/GenericSeekableLittleEndianAccessor.java new file mode 100644 index 0000000000..ab20a02fdf --- /dev/null +++ b/src/tools/data/input/GenericSeekableLittleEndianAccessor.java @@ -0,0 +1,89 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; + +/** + * Provides an abstract accessor to a generic Little Endian byte stream. This + * accessor is seekable. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + * @see tools.data.input.GenericLittleEndianAccessor + */ +public class GenericSeekableLittleEndianAccessor extends GenericLittleEndianAccessor implements SeekableLittleEndianAccessor { + private SeekableInputStreamBytestream bs; + + /** + * Class constructor + * Provide a seekable input stream to wrap this object around. + * + * @param bs The byte stream to wrap this around. + */ + public GenericSeekableLittleEndianAccessor(SeekableInputStreamBytestream bs) { + super(bs); + this.bs = bs; + } + + /** + * Seek the pointer to offset + * + * @param offset The offset to seek to. + * @see tools.data.input.SeekableInputStreamBytestream#seek + */ + @Override + public void seek(long offset) { + try { + bs.seek(offset); + } catch (IOException e) { + System.out.println("Seek failed " + e); + } + } + + /** + * Get the current position of the pointer. + * + * @return The current position of the pointer as a long integer. + * @see tools.data.input.SeekableInputStreamBytestream#getPosition + */ + @Override + public long getPosition() { + try { + return bs.getPosition(); + } catch (IOException e) { + System.out.println("getPosition failed" + e); + return -1; + } + } + + /** + * Skip num number of bytes in the stream. + * + * @param num The number of bytes to skip. + */ + @Override + public void skip(int num) { + seek(getPosition() + num); + } +} diff --git a/src/tools/data/input/InputStreamByteStream.java b/src/tools/data/input/InputStreamByteStream.java new file mode 100644 index 0000000000..001edcc6ca --- /dev/null +++ b/src/tools/data/input/InputStreamByteStream.java @@ -0,0 +1,92 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Provides an abstract wrapper to a stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public class InputStreamByteStream implements ByteInputStream { + private InputStream is; + private long read = 0; + + /** + * Class constructor. + * Provide an input stream to wrap this around. + * + * @param is The input stream to wrap this object around. + */ + public InputStreamByteStream(InputStream is) { + this.is = is; + } + + /** + * Reads the next byte from the stream. + * + * @return Then next byte in the stream. + */ + @Override + public int readByte() { + int temp; + try { + temp = is.read(); + if (temp == -1) { + throw new RuntimeException("EOF"); + } + read++; + return temp; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** + * Gets the number of bytes read from the stream. + * + * @return The number of bytes read as a long integer. + */ + @Override + public long getBytesRead() { + return read; + } + + /** + * Returns the number of bytes left in the stream. + * + * @return The number of bytes available for reading as a long integer. + */ + @Override + public long available() { + try { + return is.available(); + } catch (IOException e) { + System.out.println("ERROR" + e); + return 0; + } + } +} diff --git a/src/tools/data/input/LittleEndianAccessor.java b/src/tools/data/input/LittleEndianAccessor.java new file mode 100644 index 0000000000..f991dbf537 --- /dev/null +++ b/src/tools/data/input/LittleEndianAccessor.java @@ -0,0 +1,45 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.awt.Point; + +/** + * @author Frz + */ +public interface LittleEndianAccessor { + byte readByte(); + char readChar(); + short readShort(); + int readInt(); + Point readPos(); + long readLong(); + void skip(int num); + byte[] read(int num); + float readFloat(); + double readDouble(); + String readAsciiString(int n); + String readNullTerminatedAsciiString(); + String readMapleAsciiString(); + long getBytesRead(); + long available(); +} diff --git a/src/tools/data/input/RandomAccessByteStream.java b/src/tools/data/input/RandomAccessByteStream.java new file mode 100644 index 0000000000..ea96f8734b --- /dev/null +++ b/src/tools/data/input/RandomAccessByteStream.java @@ -0,0 +1,83 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; +import java.io.RandomAccessFile; + +/** + * Provides an abstract layer to a byte stream. This layer can be accessed + * randomly. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public class RandomAccessByteStream implements SeekableInputStreamBytestream { + private RandomAccessFile raf; + private long read = 0; + + public RandomAccessByteStream(RandomAccessFile raf) { + super(); + this.raf = raf; + } + + @Override + public int readByte() { + int temp; + try { + temp = raf.read(); + if (temp == -1) { + throw new RuntimeException("EOF"); + } + read++; + return temp; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void seek(long offset) throws IOException { + raf.seek(offset); + } + + @Override + public long getPosition() throws IOException { + return raf.getFilePointer(); + } + + @Override + public long getBytesRead() { + return read; + } + + @Override + public long available() { + try { + return raf.length() - raf.getFilePointer(); + } catch (IOException e) { + System.out.println("ERROR " + e); + return 0; + } + } +} diff --git a/src/tools/data/input/SeekableInputStreamBytestream.java b/src/tools/data/input/SeekableInputStreamBytestream.java new file mode 100644 index 0000000000..f4922dc876 --- /dev/null +++ b/src/tools/data/input/SeekableInputStreamBytestream.java @@ -0,0 +1,51 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +import java.io.IOException; + +/** + * Provides an abstract interface to a stream of bytes. This stream can be + * seeked. + * + * @author Frz + * @version 1.0 + * @since 299 + */ +public interface SeekableInputStreamBytestream extends ByteInputStream { + /** + * Seeks the stream by the specified offset. + * + * @param offset + * Number of bytes to seek. + * @throws IOException + */ + void seek(long offset) throws IOException; + + /** + * Gets the current position of the stream. + * + * @return The stream position as a long integer. + * @throws IOException + */ + long getPosition() throws IOException; +} diff --git a/src/tools/data/input/SeekableLittleEndianAccessor.java b/src/tools/data/input/SeekableLittleEndianAccessor.java new file mode 100644 index 0000000000..16b2317f7a --- /dev/null +++ b/src/tools/data/input/SeekableLittleEndianAccessor.java @@ -0,0 +1,27 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.input; + +public interface SeekableLittleEndianAccessor extends LittleEndianAccessor { + void seek(long offset); + long getPosition(); +} diff --git a/src/tools/data/output/BAOSByteOutputStream.java b/src/tools/data/output/BAOSByteOutputStream.java new file mode 100644 index 0000000000..80cbc9301e --- /dev/null +++ b/src/tools/data/output/BAOSByteOutputStream.java @@ -0,0 +1,56 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +import java.io.ByteArrayOutputStream; + +/** + * Uses a byte array to output a stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 352 + */ +class BAOSByteOutputStream implements ByteOutputStream { + private ByteArrayOutputStream baos; + + /** + * Class constructor - Wraps the stream around a Java BAOS. + * + * @param baos The ByteArrayOutputStream to wrap this around. + */ + BAOSByteOutputStream(ByteArrayOutputStream baos) { + super(); + this.baos = baos; + } + + /** + * Writes a byte to the stream. + * + * @param b The byte to write to the stream. + * @see tools.data.output.ByteOutputStream#writeByte(byte) + */ + @Override + public void writeByte(byte b) { + baos.write(b); + } +} diff --git a/src/tools/data/output/ByteOutputStream.java b/src/tools/data/output/ByteOutputStream.java new file mode 100644 index 0000000000..0df7ca7753 --- /dev/null +++ b/src/tools/data/output/ByteOutputStream.java @@ -0,0 +1,38 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +/** + * Provides an interface to an output stream of bytes. + * + * @author Frz + * @since Revision 323 + * @version 1.0 + */ +interface ByteOutputStream { + /** + * Writes a byte to the stream. + * + * @param b The byte to write. + */ + void writeByte(byte b); +} diff --git a/src/tools/data/output/GenericLittleEndianWriter.java b/src/tools/data/output/GenericLittleEndianWriter.java new file mode 100644 index 0000000000..e804fd8000 --- /dev/null +++ b/src/tools/data/output/GenericLittleEndianWriter.java @@ -0,0 +1,183 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +import java.awt.Point; +import java.nio.charset.Charset; + +/** + * Provides a generic writer of a little-endian sequence of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public class GenericLittleEndianWriter implements LittleEndianWriter { + private static Charset ASCII = Charset.forName("US-ASCII"); + private ByteOutputStream bos; + + /** + * Class constructor - Protected to prevent instantiation with no arguments. + */ + protected GenericLittleEndianWriter() { + // Blah! + } + + /** + * Sets the byte-output stream for this instance of the object. + * + * @param bos The new output stream to set. + */ + void setByteOutputStream(ByteOutputStream bos) { + this.bos = bos; + } + + /** + * Write an array of bytes to the stream. + * + * @param b The bytes to write. + */ + @Override + public void write(byte[] b) { + for (int x = 0; x < b.length; x++) { + bos.writeByte(b[x]); + } + } + + /** + * Write a byte to the stream. + * + * @param b The byte to write. + */ + @Override + public void write(byte b) { + bos.writeByte(b); + } + + /** + * Write a byte in integer form to the stream. + * + * @param b The byte as an Integer to write. + */ + @Override + public void write(int b) { + bos.writeByte((byte) b); + } + + @Override + public void skip(int b) { + write(new byte[b]); + } + + /** + * Write a short integer to the stream. + * + * @param i The short integer to write. + */ + @Override + public void writeShort(int i) { + bos.writeByte((byte) (i & 0xFF)); + bos.writeByte((byte) ((i >>> 8) & 0xFF)); + } + + /** + * Writes an integer to the stream. + * + * @param i The integer to write. + */ + @Override + public void writeInt(int i) { + bos.writeByte((byte) (i & 0xFF)); + bos.writeByte((byte) ((i >>> 8) & 0xFF)); + bos.writeByte((byte) ((i >>> 16) & 0xFF)); + bos.writeByte((byte) ((i >>> 24) & 0xFF)); + } + + /** + * Writes an ASCII string the the stream. + * + * @param s The ASCII string to write. + */ + @Override + public void writeAsciiString(String s) { + write(s.getBytes(ASCII)); + } + + /** + * Writes a maple-convention ASCII string to the stream. + * + * @param s The ASCII string to use maple-convention to write. + */ + @Override + public void writeMapleAsciiString(String s) { + writeShort((short) s.length()); + writeAsciiString(s); + } + + /** + * Writes a null-terminated ASCII string to the stream. + * + * @param s The ASCII string to write. + */ + @Override + public void writeNullTerminatedAsciiString(String s) { + writeAsciiString(s); + write(0); + } + + /** + * Write a long integer to the stream. + * @param l The long integer to write. + */ + @Override + public void writeLong(long l) { + bos.writeByte((byte) (l & 0xFF)); + bos.writeByte((byte) ((l >>> 8) & 0xFF)); + bos.writeByte((byte) ((l >>> 16) & 0xFF)); + bos.writeByte((byte) ((l >>> 24) & 0xFF)); + bos.writeByte((byte) ((l >>> 32) & 0xFF)); + bos.writeByte((byte) ((l >>> 40) & 0xFF)); + bos.writeByte((byte) ((l >>> 48) & 0xFF)); + bos.writeByte((byte) ((l >>> 56) & 0xFF)); + } + + /** + * Writes a 2D 4 byte position information + * + * @param s The Point position to write. + */ + @Override + public void writePos(Point s) { + writeShort(s.x); + writeShort(s.y); + } + + /** + * Writes a boolean true ? 1 : 0 + * + * @param b The boolean to write. + */ + @Override + public void writeBool(final boolean b) { + write(b ? 1 : 0); + } +} diff --git a/src/tools/data/output/LittleEndianWriter.java b/src/tools/data/output/LittleEndianWriter.java new file mode 100644 index 0000000000..f17bd7c72e --- /dev/null +++ b/src/tools/data/output/LittleEndianWriter.java @@ -0,0 +1,114 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + */ +package tools.data.output; + +import java.awt.Point; + +/** + * Provides an interface to a writer class that writes a little-endian sequence + * of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 323 + */ +public interface LittleEndianWriter { + + /** + * Write an array of bytes to the sequence. + * + * @param b The bytes to write. + */ + public void write(byte b[]); + + /** + * Write a byte to the sequence. + * + * @param b The byte to write. + */ + public void write(byte b); + + /** + * Write a byte in integer form to the sequence. + * + * @param b The byte as an Integer to write. + */ + public void write(int b); + + public void skip(int b); + + /** + * Writes an integer to the sequence. + * + * @param i The integer to write. + */ + public void writeInt(int i); + + /** + * Write a short integer to the sequence. + * + * @param s The short integer to write. + */ + public void writeShort(int s); + + /** + * Write a long integer to the sequence. + * + * @param l The long integer to write. + */ + public void writeLong(long l); + + /** + * Writes an ASCII string the the sequence. + * + * @param s The ASCII string to write. + */ + void writeAsciiString(String s); + + /** + * Writes a null-terminated ASCII string to the sequence. + * + * @param s The ASCII string to write. + */ + void writeNullTerminatedAsciiString(String s); + + /** + * Writes a maple-convention ASCII string to the sequence. + * + * @param s The ASCII string to use maple-convention to write. + */ + void writeMapleAsciiString(String s); + + /** + * Writes a 2D 4 byte position information + * + * @param s The Point position to write. + */ + void writePos(Point s); + + /** + * Writes a boolean true ? 1 : 0 + * + * @param b The boolean to write. + */ + void writeBool(final boolean b); +} diff --git a/src/tools/data/output/MaplePacketLittleEndianWriter.java b/src/tools/data/output/MaplePacketLittleEndianWriter.java new file mode 100644 index 0000000000..b02365ec62 --- /dev/null +++ b/src/tools/data/output/MaplePacketLittleEndianWriter.java @@ -0,0 +1,73 @@ +/* + This file is part of the OdinMS Maple Story Server + Copyright (C) 2008 Patrick Huy + Matthias Butz + Jan Christian Meyer + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ +package tools.data.output; + +import java.io.ByteArrayOutputStream; +import tools.HexTool; + +/** + * Writes a maplestory-packet little-endian stream of bytes. + * + * @author Frz + * @version 1.0 + * @since Revision 352 + */ +public class MaplePacketLittleEndianWriter extends GenericLittleEndianWriter { + private ByteArrayOutputStream baos; + + /** + * Constructor - initializes this stream with a default size. + */ + public MaplePacketLittleEndianWriter() { + this(32); + } + + /** + * Constructor - initializes this stream with size size. + * + * @param size The size of the underlying stream. + */ + public MaplePacketLittleEndianWriter(int size) { + this.baos = new ByteArrayOutputStream(size); + setByteOutputStream(new BAOSByteOutputStream(baos)); + } + + /** + * Gets a MaplePacket instance representing this + * sequence of bytes. + * + * @return A MaplePacket with the bytes in this stream. + */ + public byte[] getPacket() { + return baos.toByteArray(); + } + + /** + * Changes this packet into a human-readable hexadecimal stream of bytes. + * + * @return This packet as hex digits. + */ + @Override + public String toString() { + return HexTool.toString(baos.toByteArray()); + } +}